{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: PMCHECK867)}}
====== PMCHECK867 ======
(George Source)
**Macros used:** [[george:macro:AND|AND]], [[george:macro:JBC|JBC]], [[george:macro:ON|ON]], [[george:macro:PMBSADD|PMBSADD]], [[george:macro:PMCORES|PMCORES]], [[george:macro:PMDLGET|PMDLGET]], [[george:macro:PMESSAGE|PMESSAGE]], [[george:macro:PMOVE|PMOVE]], [[george:macro:PMSCFREAD|PMSCFREAD]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:UPDATE|UPDATE]]
22^= #OPT K0PMCHECK=0
23DW #LIS K0PMCHECK>K0POST>K0ALLGEO
24D6 #
24XQ ...#SEG PMCHECK84 [KAREL KOSKUBA-DIAG
257J ...# (C) COPYRIGHT INTERNATIONAL COMPUTERS LTD 1982
25CB [
25X2 [ THIS SEGMENT CONTAINS A ROUTINE FOR CHECKSUMMING
26BL ...[ THE FIXED CORE SEGMENTS AND ALL CHAPTERS ON THE
26W= [ CHAPTER CHAIN
27*W [ ONLY DISCREPANT LOCATIONS WILL BE PRINTED UNLESS
27TG [ A B/S VERSION IS UNOBTAINABLE IN WHICH CASE 1024
28*6 [ WORDS OF THE CORE VERSION WILL BE PRINTED.
28SQ [ THIS SEGMENT ALSO OUTPUTS A LIST OF NOISY CHAPTERS
29#B [ IN CORE
29S2 [
2=?L 8HPMCHECK
2=R= #
2?=W # ENTRY POINT TABLE
2?QG #
2#=6 ... SEGENTRY K1PMCHECK,XK1PMCHECK
2#PQ ...JPMCHECKREL [UPDATED BY NEWFIXED
2*9B ...REL +AENDCHAPS-DDATUM
2G5L ...PMCHECKEND +ZPMCHECK [END OF SEG
2GK= ...PMINPRINEND +0
2TSL XBCHAP +BCHAP [ BASE OF CHAPTER CHAIN
2W#= X45 +45
2WRW X512 +512
2X?G X1025 +1025
2XR6 ...XDSPARE +0
2Y=Q ...WORKSPACE +0
2YQB XLINK7 +0 [LINK FOR XJCON4
2^=2 XLINK7A +0 [LINK FOR SEGCHECK
2^PL XLINK0 +0
329= XLEN +0 [LENGTH TO BE SEGCHECKED
32NW POINT5 +0 [POINTER TO CORE
338G POINT4 +0 [POINTER TO B/S
33N6 XCAS +0 [CONSECUTIVE ADDRESS SWITCH
347Q XCOUNT +0 [COUNT
34MB RELSWITCH +0 [REL ADDRESS SWITCH
3572 X4WORD +0 [CORE VERSION
35LL X5WORD +0 [B/S VERSION
366= XCORAD +0 [CORE ADDRESS METOPHORICALLY
36KW XSEGEND +0 [END OF SEGMENT CORE VERSION
375G XFPTR +0
37K6 XBACK +0 [SET=1 IF BACKWARD CHAINING
384Q XLINKCP +0 [CORE PRINT LINK
38JB XDSEG +0 [B/S ADDRESS OF SEGMENT
3942 XLSEG +0 [LENGTH OF SEGMENT
39HL XADSP +0 [ADDRESS ON DRUM
3=3= PARTSUM +0
3=GW SPCORE +0 [XCESS CORE
3?2G REMAINDER +0 [XCESS SEGMENT
3?G6 XLBSR +0
3?^Q XMOD +0
3#FB NODISLOCSW +0 [SET -VE IF DISCREPANT LOCATION FOUND
3#K? ...SPLIT +0 [SET=0 IF WHOLE SEGMENT SET=1 IF
3#P8 ... [SPLIT FIXED CORE SEGMENT SET -VE IF
3#T5 ... [DISCREPANT LOCATION FOUND
3#^2 #SKI FNOISE
3*DL (
3*Y= XHPRIN +0 [NOISY CORE HEADING INDICATOR
3BCW XOUTM +0 [NOISY CORE OUTPUT MODIFIER
3BXG X27 +27
3L9W XNOISY 16HNOISY CHAPTERS
3L=^ ...)
3L?N ...X10QUERY #02260000 [RANGE FOR PROGRAM FILE
3L#C ...MEEPBSVOL #03000000 [EMULATING PROGRAM FILE RANGE
3L*7 ...MASK1 #37777777
3LB= ...MASK2 #17777777
3LC* ...MASK3 #40000000
3LDD ...XHEAD1 16H CORRUPT
3LFH ...XHEAD2 40H DISCREPANT LOCATION CORE VERSION
3LGL ... 40H BACKI
3LHP ... 16HNG STORE VERSION
3LJS ...REDTAPE 40HREDTAPE INVALID CHAPTER POSSIBL
3LKX ... 16HY OVERWRITTEN
3LM2 ...XFX1MESS 28H SEE CURRENT CHAPTER LISTING
3LN5 ...XMESS 32HNO DISCREPANT LOCATIONS FOUND
3LPG XFCMESS 24HSEE FIXED CORE LISTING
3LRD ...#UNS JPSCF
3LTB ...(
3LX# ...XSCFH2 40HCOMPARISON OF CHAPTER IN CORE AND ON SCF
3L^= ...XSCFH3 40HCOMPARISON OF CHAPTER IN CORE AND ON ICF
3M38 ...XMAXCHAP +AENDCHAPS-KTAB
3M56 ...XCHAPTAB +DCHTABLE
3M74 ...)
3M96 #
3MNQ #
3N8B # ROUTINE FOR CONVERTING A BINARY NUMBER INTO FOUR FORMATS
3NN2 # DECIMAL(N.N),CHARACTERS,OCTAL,AND INSTRUCTION
3P7L # ENTRY X7=LINK
3PM= # X5=BINARY NUMBER
3Q6W # JPMOD=LP MODIFIER
3QLG # EXIT X5=BINARY NUMBER
3R66 # OTHER ACCUMULATORS ARE UNDEFINED
3RKQ # JPMOD=LP MODIFIER
3S5B #
3SK2 XJCON4
3T4L ... STO 7 XLINK7(1) [PRESERVE LINK
3TJ= ... CALL 7 (JDECP) [CONVERT TO DECIMAL
3W3W ... CALL 7 (JUP) [UPDATE LP MODIFIER
3WHG +2
3X36 ... CALL 7 (JCHA) [CONVERT TO CHAS
3XGQ ... CALL 7 (JUP)
3Y2B +2
3YG2 ... CALL 7 (JOCT) [CONVERT TO OCTAL
3Y^L ... CALL 7 (JUP)
3^F= +2
3^YW LDX 4 JPMOD
42DG ... LDN 6 K1PMINPRIN
42Y6 ... LDX 1 FXINPRIN
43CQ ... SMO FXINPRIN
43XB CALL 0 (6)
4464 ... LDX 1 FXPM1
44#Q ... LDX 7 XLINK7(1)
44HD ... EXIT 7 0
44Q6 ...#
44YS ...#
457G ...#
45B= # ROUTINE TO COMPARE TWO AREAS OF CORE PRINTING
45TW # DISCREPANT LOCATIONS
46*G #
46T6 # ENTRY X7=LINK
47#Q # X4 POINTS TO CORE VERSION,B0 SET INDICATES
47SB # RELATIVE ADDRESS REQUIRED
48#2 # X5 POINTS TO BACKING STORE VERSION
48RL # IF ZERO A CONTIGUOUS AREA OF CORE IS PRINTED
49?= # X6 LENGTH OF AREA TO PRINT OR COMPARE
49QW #
4==G # EXIT ALL ACCUMULATORS UNDEFINED
4=Q6 #
4?9Q SEGCHECK
4?PB ... STO 7 XLINK7A(1) [
4#92 ... STO 6 XLEN(1) [ PRESERVE LINK LENGTH
4#NL ... STO 5 POINT5(1) [ AND POINTERS
4*8= ... STOZ XCAS(1) [ SET UP CONSECUTIVE ADDRESS SWITCH
4*MW ... STOZ XCOUNT(1) [ COUNT
4B7G ... STOZ NODISLOCSW(1) [NO DISCREPANT LOCATIONS
4C6Q ... STO 4 RELSWITCH(1) [RELATIVE ADDRESS NECESSARY
4CLB ... ANDX 4 MASK1(1)
4D62 ... STO 4 POINT4(1) [
4DKL NEXTWORD
4F5= ... LDX 4 POINT4(1) [LOAD FIRST/NEXT WORD OF CORE
4FJW SMO 4
4G4G LDX 4 0
4GJ6 ... STO 4 X4WORD(1) [PRESERVE IT
4H3Q ... LDX 5 POINT5(1) [SEE IF BACKING STORE VERSION
4HHB BZE 5 PRINTCORE [IS ACCESSIBLE J IF NOT
4J32 SMO 5
4JGL LDX 5 0
4K2= ... STO 5 X5WORD(1) [AND PRESERVE IT
4KFW LDN 0 1 [UPDATE POINTER TO
4K^G ... ADS 0 POINT5(1) [BS VERSION
4LF6 TXU 4 5 [TEST CORE VERSION AGAINST BS
4LYQ BCC UPDATE [J IF NOT CORRUPT
4MDB ... CALL 7 (JUP) [ SPACE
4MY2 +74
4NCL CALL 7 XJCON4 [ AND CONVERT
4NX= ... CALL 7 (JUP) [
4PBW -102
4PWG PRINTCORE
4QB6 ... CALL 7 (JUP)
4QTQ +6
4R*B ... LDX 5 MASK3(1)
4RT2 ... STO 5 NODISLOCSW(1) [SET AS DISCREPANT LOCATION FOUND
4S4S ... STO 5 SPLIT(1)
4S#L ... LDX 5 XCORAD(1) [SET UP
4SS= ... CALL 7 (JDECN)
4T?W ... CALL 7 (JUP) [CORE ADDRESS
4TRG +1
4W?6 ... LDX 5 RELSWITCH(1)
4WQQ BPZ 5 NORELAD [J IF REL ADDRESS UNNECESSARY
4X=B ... LDX 5 XCOUNT(1)
4XQ2 ... CALL 7 (JDECN)
4Y9L BRN SC1
4YP= NORELAD
4^8W ... CALL 7 (JUP) [SPACE AS IF RELADD
4^NG +7
5286 ...SC1 CALL 7 (JUP)
52MQ +4
537B ... LDX 5 X4WORD(1) [SET UP CORE VERSION
53M2 CALL 7 XJCON4 [IN FOUR FORMATS
546L ... LDX 0 XCOUNT(1) [TEST IF CONSECUTIVE
54L= ... TXU 0 XCAS(1) [ADDRESS TO THAT PRINTED
555W BCC SC2 [J IF IT IS
55KG ... CALL 7 (JPRINT2) [THROW A LINE AND PRINT
5656 BRN SC3
56JQ ...SC2 CALL 7 (JPRINT1) [PRINT
574B #
57J2 # A LINE HAS BEEN PRINTED SET THE CONSECUTIVE ADDRESS SWITCH
583L # TO BE EQUAL TO THE NEXT LINE COUNT
58H= #
592W ...SC3 LDX 0 XCOUNT(1)
59GG ADN 0 1
5=26 ... STO 0 XCAS(1)
5=FQ UPDATE
5=^B LDN 0 1 [UPDATE THE
5?F2 ... ADS 0 XCOUNT(1) [COUNT
5?YL ... ADS 0 XCORAD(1) [CORE ADDRESS (CALCULATED)
5#D= ... ADS 0 POINT4(1) [CORE POINTER (WHERE READ DOWN)
5#XW ... LDX 0 XCOUNT(1) [ FINISHED ?
5*CG ... TXU 0 XLEN(1) [TEST COUNT AGAINST LENGTH TO CHECK
5*X6 BCS NEXTWORD [NO SUCH LUCK
5*^P ... LDX 0 RELSWITCH(1)
5B4# ... BNG 0 QNODL [J IF CHAPTER
5B6X ... LDX 0 REMAINDER(1)
5B9G ... BNZ 0 XEXIT [J IF ONLY PART OF FIXED CORE SEGMENT
5B#5 ...QNODL
5BBQ ... LDX 0 NODISLOCSW(1)
5BWB ... BNZ 0 XEXIT [J IF DISCREPANT LOCATIONS FOUND
5C3J ... LDX 0 SPLIT(1) [WERE DISCREPANT LOCATIONS FOUND
5C8Q ... BNG 0 XEXIT [PREVIOUSLY ON SPLIT SEGMENT J IF YES
5CB2 ... PMESSAGE XMESS(1),8 [NO DISCREPANT LOCATIONS FOUND
5CTL ... CALL 7 (JPRINT1) [LEAVE A LINE
5D*= ... LDX 4 RELSWITCH(1)
5DSW BNG 4 SC4 [J IF NOT FIXED CORE SEGMENT
5F8K ... SMO FXPMDR
5FJ# ... TXL 4 JPMLEV [J IF SEGMENT NOT PRINTED ALREDY
5FY3 ... BCC SC5 [DURING FIXED CORE LISTING
5G?Q ... PMESSAGE XFCMESS(1),6 [OUTPUT F.C. CHAPTER MESS
5GMF ...XEXIT LDX 7 XLINK7A(1)
5H38 ... EXIT 7 0
5HBX ...SC4 ANDX 4 MASK1(1)
5HQL TXU 4 FX1 [J IF NOT CURRENT CHAPTER
5J== BCS SC5
5JPW ... PMESSAGE XFX1MESS(1),7 [OUTPUT CURRENT CHAPTER MESS
5K9G ... BRN XEXIT
5KD8 ...SC5 LDX 4 SPLIT(1)
5KLW ... BZE 4 SC6 [J IF WHOLE SEGMENT BEING CHECKED
5KTJ ... LDX 4 PMINPRINEND(1) [LOAD ADDR START SEGMENT WHEN SPLIT
5L4= ... BRN SC7
5L=Y ...SC6 LDX 4 RELSWITCH(1)
5LFL ...SC7 LDX 6 XLSEG(1) [RELOAD LENGTH
5LNB ... SBS 6 XCORAD(1) [RELOAD CORE ADDRESS
5M82 STOZ 5 [SET TO OUTPUT CONTIGUOUS AREA
5MML ... LDX 7 XLINK7A(1) [RELOAD LINK
5N7= BRN SEGCHECK [J TO OUTPUT CORRUPT CHAPTER
5NLW #
5P6G # ROUTINE TO SEARCH ALONG CHAPTER CHAIN
5PL6 # AND TO CHECK RED TAPE WORDS EXCEPT FOR BACK2
5Q5Q #
5QKB # ENTRY X2 & XFPTR = ADDRESS OF CURRENT BLOCK
5R52 # X0 = LINK ADDR.
5RJL #SKI FNOISE<1$1
5S4= (
5SHW # EXIT 0 1 IF REDTAPE REASONABLE WITH X2 & XFPTR UPDATED
5T3G # TO POINT TO NEXT BLOCK
5TH6 #
5W2Q # EXIT 0 0 IF ALOGL INVALID.GIVING CORE PRINT AND MESSAGE
5WGB # OUTPUT.
5X22 # ALL ACCUMULATORS UNDEFINED
5XFL #
5X^= ...# EXIT TO (JPMSEG) WHEN END OF CHAIN OR TWO CHAIN BREAKS
5YDW )
5YYG #SKI FNOISE
5^D6 (
5^XQ # EXIT 0 2 IF REDTAPE REASONABLE WITH X2 & XFPTR UPDATED
62CB # TO POINT TO NEXT BLOCK
62X2 #
63BL # EXIT 0 1 IF ALOGL INVALID
63W= #
64*W # EXIT 0 0 WHEN END OF CHAIN OR TWO CHAIN BREAKS
64TG )
65*6 SEARCH
65SQ LDX 2 FPTR(2) [LOAD ADDR.OF NEXT BLOCK
66#B LDX 3 BPTR(2) [J IF BPTR IN THIS
66S2 ... TXU 3 XFPTR(1) [BLOCK INCORRECT
67?L BCS S1
67R= ... TXU 2 XBCHAP(1) [J IF THIS BLOCK IS BCHAP
68=W #SKI FNOISE<1$1
68QG ... BCC (JPMSEG)
69=6 #SKI FNOISE
69PQ BCC (0) [EXIT 0 0
6=9B LDX 3 FPTR(2) [LOAD ADDR.OF NEXT BLOCK
6=P2 ...S2 STO 2 XFPTR(1) [STORE CURRENT BLOCK ADDR.
6?8L PMCORES 3,S1 [J IF NEXT BLOCK ADDR. ILLEGAL
6?N= LDX 7 ALOGL(2)
6#7W BZE 7 S1A
6#MG ... ANDX 7 MASK2(1)
6*76 ... TXL 7 X1025(1)
6*LQ BCC S1A [J IF ALOGL ILLEGAL
6B6B #SKIP FNOISE
6BL2 EXIT 0 2
6C5L #SKI FNOISE<1$1
6CK= EXIT 0 1
6D4W SEARCHB
6DJG LDX 2 BPTR(2) [LOAD ADDR.OF NEXT BLOCK
6F46 LDX 3 FPTR(2) [J IF FPTR IN THIS
6FHQ ... TXU 3 XFPTR(1) [BLOCK INCORRECT
6G3B BCS S1
6GH2 LDX 3 BPTR(2) [LOAD ADDR.OF NEXT BLOCK
6H2L BRN S2
6HG= ...S1 LDX 2 XBACK(1) [J IF ALREADY BACK CHAINING
6H^W #SKI FNOISE<1$1
6JFG ... BNZ 2 (JPMSEG)
6J^6 #SKI FNOISE
6KDQ ... BNZ 2 (0)
6KYB ... LDN 2 1
6LD2 ... STO 2 XBACK(1) [SET SWITCH IF NOT
6LXL LDN 2 BCHAP [SET FOR BACKWARD CHAINING
6MC= LDX 3 BPTR(2)
6MWW ... STO 2 XFPTR(1)
6NBG PMCORES 3,S1 [CHECK FIRST CHAPTER BLOCK ADDR.LEGAL
6NW6 BRN SEARCHB
6P*Q S1A
6PTB #SKI FNOISE<1$1
6Q*2 (
6QJS ... STO 0 XLINK0(1)
6QSL ... CALL 0 XCOREPRINT
6R4D ... LDX 0 XLINK0(1)
6R#= EXIT 0 0
6RRW )
6S?G #SKI FNOISE
6SR6 EXIT 0 1
6T=Q #
6TQB # ROUTINE TO OUTPUT A CONTIGUOUS AREA OF
6W=2 # CORE
6WPL # ALL ACCUMULATORS UNDEFINED ON EXIT
6X9= #
6XNW XCOREPRINT
6Y8G ... STO 0 XLINKCP(1) [ PRESERVE X0
6YN6 ... LDX 2 XFPTR(1)
6^MB LDN 4 A1(2)
7272 ... LDN 5 REDTAPE+6(1)
72LL MOVE 4 2
736= ... PMESSAGE REDTAPE(1),14 [ CORRUPT
73KW TXU 2 FX1 [ AVOID DUPLICATE
745G BCS NOTCCH [
74K6 ... PMESSAGE XFX1MESS(1),7 [ PRINTING OF THE
754Q ... EXIT 0 0 [ CURRENT CHAPTER
75JB NOTCCH
7642 ... PMESSAGE XHEAD2(1),10
76HL ... CALL 7 (JPRINT1)
773= ... LDX 4 XFPTR(1)
77GW ADN 4 A1 [RELATE ADDRESS TO CHAP. START
782G ... STO 4 XCORAD(1)
78G6 ... ORX 4 MASK3(1) [ SET UP SEGCHECK
78^Q LDN 5 0 [
79FB LDN 6 1024
79^2 CALL 7 SEGCHECK [
7=DL ... LDX 0 XLINKCP(1)
7=Y= ... EXIT 0 0
7?CW #
7?XG # ROUTINE TO CHECKSUM A CONTIGUOUS AREA OF CORE
7#C6 # ENTRY
7#WQ # X4 LINK
7*BB # X6 START ADDRESS
7*W2 # X7 LENGTHOF BLOCK
7B*L # EXIT
7BT= # X5 RESULT OF SUM
7C#W #
7CSG SUMCHECK
7D#6 ... STOZ PARTSUM(1)
7DRQ ... TXL 7 X512(1)
7F?B BCS YXC
7FR2 SUM 5 0
7G=L ... SBX 7 X512(1)
7GQ= BZE 7 YXF
7H9W ... STO 5 PARTSUM(1)
7HPG ... ADX 6 X512(1)
7J96 ... TXU 7 X512(1)
7JNQ BCC YXE
7K8B YXC SMO 7
7KN2 YXE SUM 5 0
7L7L ... ADX 5 PARTSUM(1)
7LM= YXF EXIT 4 0
7LN5 ...XK1PMCHECK
7LNY ...#
7LPR ...# LOAD SEGMENT'S MODIFIER INTO X1
7LQL ...#
7LRF ... LDX 1 FXPM1
7LS# ...#
7LT7 ...#
7LW2 ...# READ DOWN THE TABLE OF FIXED-CORE SEGMENTS -- FIXINT
7LWT ...#
7LXN ...# AND THE INSTRUCTION CONVERSION ROUTINE -- PMINPRIN
7LYH ...#
7L^B ...# INTO CORE FOLLOWING PMCHECK.
7M29 ...#
7M34 ...# DYNAMICALLY CALCULATE REMAINING SPACE .
7M3X ...#
7M4Q ...#
7M5K ... ADS 1 PMCHECKEND(1) [ DATUMIZE
7M6D ... LDX 2 PMCHECKEND(1)
7M6K ... JBC NOEMU,,CPEMU [J IF NOT EMULATING
7M6Q ... LDX 0 MEEPBSVOL(1)
7M6X ... STO 0 X10QUERY(1) [RESET PROGRAM FILE RANGE
7M74 ...NOEMU
7M7? ... PMOVE FIXINT,2 [ READ DOWN FIXINT
7M86 ... LDX 1 FXPM1
7M8^ ... PMDLGET FIXINT,,2
7M9S ... ADX 2 PMCHECKEND(1) [ END OF FIXINT IN CORE
7M=M ... PMOVE PMINPRIN,2 [ READ DOWN PMINPRIN
7M?G ... LDX 1 FXPM1
7M#* ... PMDLGET PMINPRIN,,2
7M*8 ... ADX 2 FXINPRIN [ END OF PMINPRIN IN CORE
7MB3 ... STO 2 PMINPRINEND(1)
7MBW ... LDX 3 ENDFIX [ END OF PM'S WORKING SPACE
7MCP ... SBX 3 2
7MDJ ... STO 3 WORKSPACE(1) [ STORE AVAILABLE WORKING SPACE
7MFC ... PMDLGET SPARE,3
7MG= ... STO 3 XDSPARE(1) [ STORE B/S ADDRESS OF SPARE
7MH5 ...#
7MHY ...#
7MJR ...#
7MKL ...
7MLG #SKI FNOISE
7N66 (
7NKQ # OUTPUT A LIST OF NOISY CHAPTERS ON THE CHAPTER CHAIN
7P5B #
7PK2 LDN 2 BCHAP [SET UP CHAINING
7Q4L ... STO 2 XFPTR(1) [FROM CHAPTER CHAIN BASE
7QJ= LDX 3 FPTR(2)
7R3W PMCORES 3,S1 [CHECK FIRST CHAPTER BLOCK ADDR.LEGAL
7RHG ...NC1 LDX 2 XFPTR(1) [LOAD CURRENT CHAP.BLOCK ADDR.
7S36 ... LDN 3 SEARCH(1) [CONTINUE FORWARD
7SGQ ... LDX 7 XBACK(1) [OR
7T2B BZE 7 NC2 [BACKWARD
7TG2 ... LDN 3 SEARCHB(1) [CHAINING
7T^L NC2 CALL 0 (3)
7WF= BRN NC5 [END OF CHAIN OR TWO BREAKS
7WYW BRN £
7XDG ... LDX 2 XFPTR(1) [LOAD BACK2 WORD OF CURRENT
7XY6 LDX 6 BACK2(2) [CHAPTER BLOCK
7YCQ SLL 6 CXSELECT
7YXB BPZ 6 NC1 [J IF BIT CXSELECT OF BACK2 NOT SET
7^C2 ... LDX 7 XHPRIN(1)
7^WL BNZ 7 NC3 [J IF NOISY HEADING ALREADY OUTPUT
82B= LDN 7 1
82TW ... STO 7 XHPRIN(1) [SET HEADING PRINTED SWITCH
83*G ... PMESSAGE XNOISY(1),4 [OUTPUT NOISY HEADING
83T6 ... CALL 7 (JPRINT1) [OUTPUT BLANK LINE
84#Q ...NC3 LDX 4 XOUTM(1)
84SB ... TXL 4 X27(1) [J IF ROOM FOR ANOTHER
85#2 ... BCS NC4 [4 WORDS IN LP BUFFER
85RL ... CALL 7 (JPRINT1) [OUTPUT FULL BUFFER OF CHAPTER NAME
86?= ... STOZ XOUTM(1) [RESET NO.OF WORDS USED IN BUFFER
86QW NC4 LDN 4 2
87=G ... ADS 4 XOUTM(1) [STEP LP BUFFER MOD.BY 2
87Q6 ... SMO XFPTR(1)
889Q LDN 5 A1 [LOAD ADDR.OF CHAPTER NAME
88PB LDX 6 JPMOD
8992 ... ADX 6 XOUTM(1) [LOAD OUTPUT ADDR.
89NL MOVE 5 2 [STORE CHAPTER NAME
8=8= ... ADS 4 XOUTM(1) [STEP LP BUFFER MOD.BY 2
8=MW BRN NC1
8?7G #
8?M6 ...NC5 CALL 7 (JPRINT1) [OUTPUT REMAINING NOISY CHAPTER NAM
8#6Q )
8*62 #
8B5= #
8BJW START
8C4G ... LDX 2 PMCHECKEND(1) [LOAD THE ADDRESS OF THE FIRST/NEXT
8CJ6 LDX 4 0(2) [FOUR WORD ENTRY IN THE SEG.TABLE
8D3Q BZE 4 SG1 [J IF END OF TABLE
8DHB BNG 4 SG2 [J IF IT CAN WRITE TO ITSELF
8F32 ... STO 4 XDSEG(1) [STORE B/S ADDRESS OF SEGMENT
8FGL LDX 5 1(2) [LOAD AND STORE
8G2= ... STO 5 XLSEG(1) [LENGTH OF SEGMENT
8GFW ... ADX 4 REL(1) [CALCULATE AND STORE ADDRESS
8G^G ... STO 4 XCORAD(1) [WHEN GEORGE RUNNING
8HF6 ... ADX 4 XDSPARE(1)
8HYQ ... STO 4 XADSP(1) [OF CORE VERSION
8JDB ...# READ CORE VERSION DOWN INTO PMCORE AFTER PMINPRIN
8JY2 ... PMBSADD GEO,0,XLSEG(1),PMINPRINEND(1),XADSP(1)
8KCL ... LDX 1 FXPM1
8KX= ... STOZ PARTSUM(1)
8LBW ... LDX 6 PMINPRINEND(1)
8LWG ... LDX 7 XLSEG(1)
8MB6 CALL 4 SUMCHECK
8MTQ # SKIP IF THIS VERSION OF GIN IS PRIOR TO 514
8N*B #SKI 77?>513$513
8NT2 ... SBX 5 XDSEG(1) [SUBTRACT B/S ADDR FROM CHECKSUM
8P#L BZE 5 SG2
8PS= # THE SEGMENT IS CORRUPT SET UP HEADLINE AND
8Q?W # CHECK CORE VERSION AGAINST BACKING STORE
8QHN ... LDX 2 PMCHECKEND(1)
8QRG LDN 4 2(2) [SEGMENT
8R?6 ... LDN 5 XHEAD1(1) [NAME IN
8RQQ MOVE 4 2
8S=B ... CALL 7 (JPRINT1) [LEAVE A LINE
8SQ2 ... PMESSAGE XHEAD1(1),4
8T9L ... PMESSAGE XHEAD2(1),24
8TP= ... CALL 7 (JPRINT1) [LEAVE A LINE
8W8W #
8WNG ... LDX 3 XLSEG(1) [DETERMINE AND PRESERVE
8X86 ... ADX 3 PMINPRINEND(1) [THE END OF THE
8XMQ ... STO 3 XSEGEND(1) [CORE VERSION
8Y7B ... LDX 3 XLSEG(1) [[LOAD CORE AMOUNT STILL NEEDED
8YM2 ... LDX 5 WORKSPACE(1) [DETERMINE AND PRESERVE
8^6L SBX 5 3 [THE REMAINING
8^L= ... STO 5 SPCORE(1) [CORE SPACE
925W ... STOZ XMOD(1)
92*N ... STOZ SPLIT(1)
92KG ...# TEST IF ENOUGH CORE TO READ DOWN THE REST/WHOLE
9356 # OF THE CHAPTER
93JQ ...SG7 TXL 3 SPCORE(1)
944B BCC SG6 [ J IF NOT SUFFICIENT CORE
94J2 ... STOZ REMAINDER(1)
953L BRN SG9
95FS ...SG6 SBX 3 SPCORE(1)
95K* ... LDX 5 XDSEG(1)
95NW ... ANDN 5 #177 [GET DISPLACEMENT WITHIN BUCKET
95SC ... ADX 3 5 [ADD DISPLACEMENT TO REMAIBDER
95Y2 ... STO 3 REMAINDER(1) [REMAINING TO BE READ
964P ... LDN 3 1
969D ... STO 3 SPLIT(1) [SET SPLIT TO INDICATE SPLIT SEGMENT
96B8 ... LDX 3 SPCORE(1)
96K? ... SBX 3 5 [TRANSFER COUNT - DISPLACEMENT
96SB ...SG9 STO 3 XLBSR(1)
97=J ... PMBSADD GEO,0,XLBSR(1),XSEGEND(1),XDSEG(1)
97NQ ... LDX 1 FXPM1
986Y ... LDX 6 XLBSR(1)
98K6 ... LDX 5 XSEGEND(1)
993# ... LDX 4 PMINPRINEND(1)
99FG ... ADX 4 XMOD(1)
99XW CALL 7 SEGCHECK
9=CG ... LDX 3 REMAINDER(1)
9=X6 BZE 3 SG2
9?BQ ... LDX 4 XLBSR(1) [ UPDATE POINTERS
9?WB ... ADS 4 XMOD(1)
9#B2 ... ADS 4 XDSEG(1) [ UPDATE B/S ADDRESS
9#TL BRN SG7
9**= #
9*SW SG2 LDN 4 4 [UPDATE THE SEGMENT
9B#G ... ADS 4 PMCHECKEND(1) [TABLE POINTER
9BS6 BRN START
9C?Q #
9CRB #
9D?2 # ROUTINES FOR CHECKING CHAPTERS
9DQL #
9F== #
9FPW ...SG1 STOZ XBACK(1) [RESET BACKWARD CHAINING IND.
9G9G ... LDN 2 BCHAP [SET UP CHAINING
9GP6 ... STO 2 XFPTR(1) [FROM CHAPTER CHAIN BASE
9H8Q LDX 3 FPTR(2)
9HNB PMCORES 3,S1 [CHECK FIRST CHAPTER BLOCK ADDR.LEGAL
9J82 ...PC2 LDX 2 XFPTR(1)
9JML ... LDN 3 SEARCH(1)
9K7= ... LDX 7 XBACK(1)
9KLW BZE 7 PC1
9L6G ... LDN 3 SEARCHB(1)
9LL6 PC1 CALL 0 (3) [CALL CHAPTER SEARCH ROUTINE
9M5Q #SKI FNOISE
9MKB (
9N52 ... BRN (JPMSEG)
9NJL BRN PC3
9P4= BRN PC4
9PHW ...PC3 CALL 0 XCOREPRINT
9Q3G )
9QH6 BRN PC2
9R2Q ...PC4 LDX 2 XFPTR(1) [LOAD CURRENT BLOCK ADDR.
9RGB [ARE PRINTED
9S22 # REDTAPE FPTR BPTR AND ALOGL ARE REASONABLE
9SFL LDN 6 A1(2)
9S^= LDX 7 ALOGL(2)
9TDW CALL 4 SUMCHECK
9XCB ... LDX 4 BACK2(2)
9XJJ ... SLL 4 10 [CLEAR BITS 0-8 &
9XPQ ...#UNS JPSCF
9XWY ... LDX 7 4
9Y46 ... SLL 4 1
9Y9# ... SRL 4 4 [MULTIPLY BY 128
9YBG ... STO 4 X4WORD(1)
9YHS ...# SKIP IF THIS VERSION OF GIN IS PRIOR TO 514
9YP2 ...#SKI 77?>513$513
9YW= ... SBX 5 4 [SUBTRACT B/S ADDR FROM CHECKSUM
=3#B BZE 5 PC2
=3S2 #
=4?L # THE CHAPTER IS CORRUPT
=4R= # CHECK THAT THE B/S ADDRESS IS AVAILABLE
=5=W #
=5QG ... TXL 4 X10QUERY(1)
=97W BCS XCHAPCHCK
=9MG #
==76 # B/S ADDRESS IS NOT AVAILABLE SO PRINT 1024 WORDS OF CORE
==LQ #
==WJ ...XALLPRIN
=?6B ... CALL 0 XCOREPRINT
=?L2 BRN PC2
=#5L XCHAPCHCK
=#8B ...#UNS JPSCF
=#?6 ... BNG 7 XSCF [J IF CHAP ON SCF
=#G4 ... PMBSADD GEO,0,ALOGL(2),PMINPRINEND(1),4
=#P3 ...XHAPCONT
=#RS ...XCHAPCONT
=#WL ... LDX 1 FXPM1
=*4W ... LDX 2 XFPTR(1)
=*B= ... LDX 4 PMINPRINEND(1)
=*ML ... LDN 5 XHEAD1(1)
=B46 MOVE 4 2
=B?Y ...XPRINCOM
=BHQ ... PMESSAGE XHEAD1(1),4
=C3B ... PMESSAGE XHEAD2(1),24
=CH2 ... CALL 7 (JPRINT1)
=D2L ... LDX 4 XFPTR(1)
=DG= ADN 4 A1 [ RELATIVISE ADDRESS TO START OF CHAP
=D^W ... STO 4 XCORAD(1)
=FFG ... ORX 4 MASK3(1)
=F^6 ... LDX 5 PMINPRINEND(1)
=GDQ LDX 6 ALOGL(2)
=GNJ ... STO 6 XLSEG(1)
=GSF ... STOZ SPLIT(1) [UNSET SPLIT SEGMENT INDICATOR
=GYB CALL 7 SEGCHECK
=HD2 BRN PC2
=HDP ...#SKI JPSCF
=HFD ...(
=HG7 ...XSCF PMSCFREAD ALOGL(2),PMINPRINEND(1),X4WORD(1)
=HGW ... LDX 1 FXPM1
=HHC ... LDX 6 PMINPRINEND(1) [ADDRESS OF THE DATA READ IN
=HHY ... LDX 2 XFPTR(1)
=HJ# ... LDX 7 ALOGL(2) [LENGTH OF THE CHAPTER
=HK3 ... CALL 4 SUMCHECK [SUMCHECK THE CHAPTER JUST READ IN
=HKQ ... SBX 5 X4WORD(1) [REMOVE BS ADDRESS FROM SUMCHECK
=HLF ... BZE 5 XCHAPCONT [CORRUPT IN CORE NOT ON SCF
=HM8 ... LDX 4 PMINPRINEND(1) [ADDRESS OF THE CHAPTER READ IN
=HMX ... LDN 5 XHEAD1(1) [ADDRESS OF CORRUPT MESSAGE
=HNL ... MOVE 4 2 [MOVE CHAPTER NAME INTO MESSAGE
=HP* ... PMESSAGE XHEAD1(1),4 [OUTPUT CORRUPT MESSAGE
=HQ4 ... PMESSAGE XSCFH2(1),10 [OUTPUT COMPARING CORE TO SCF
=HQR ... PMESSAGE XHEAD2(1),24 [TITLE FOR PRINT
=HRG ... CALL 7 (JPRINT1) [THROW BLANK LINE
=HS9 ... LDX 4 XFPTR(1) [ADDRESS OF CHAPTER IN CHAIN
=HSY ... ADN 4 A1 [MOVE PAST RED TAPE
=HTM ... STO 4 XCORAD(1) [SAVE ABSOLUTE ADDRESS
=HWB ... ORX 4 MASK3(1) [MARK AS RELATIVE PRINTING
=HX5 ... LDX 5 PMINPRINEND(1) [ADDRESS OF CHAPTER FROM SCF
=HXS ... LDX 6 ALOGL(2) [LENGTH TO COMPARE
=HY7 ... STO 6 XLSEG(1)
=HY* ... STOZ SPLIT(1) [UNSET SPLIT SEGMENT INDICATOR
=HYH ... CALL 7 SEGCHECK [PRINT DIFFERENCES
=H^= ... LDX 2 XFPTR(1) [RESTORE POINTER
=H^^ ... LDX 4 BACK1(2) [CHAPTER NUMBER
=J2N ... TXL 4 XMAXCHAP(1) [SEE IF VALID CHAPTER NUMBER
=J3C ... BCC XALLPRIN [INVALID SO PRINT ALL CHAP IN CHAIN
=J46 ... ADX 4 XCHAPTAB(1) [ADD BS ADDRESS OF KTAB
=J4T ... LDN 5 1 [SIZE OF TRANSFER
=J5J ... PMBSADD GEO,0,5,PMINPRINEND(1),4 [READ IN BS VALUE OF KTAB
=J6? ... LDX 1 FXPM1
=J6L ... LDX 2 XFPTR(1)
=J77 ... SMO PMINPRINEND(1) [ADDRESS OF THE DATA READ IN
=J7P ... LDX 4 0 [ORIGINAL KTAB ENTRY FOR CHAP
=J8D ... SLL 4 11 [CLEAR BITS 0-10
=J97 ... SRL 4 4 [MULT BY 128 WORDS
=J9W ... TXL 4 X10QUERY(1) [SEE IN BS ADDRESS OK
=J=K ... BCC XALLPRIN [ORIGINAL KTAB WORNG SO PRINT ALL
=J?# ... PMBSADD GEO,0,ALOGL(2),PMINPRINEND(1),4
=J#3 ... LDX 1 FXPM1
=J#B ... LDX 2 XFPTR(1)
=J#Q ... PMESSAGE XSCFH3(1),10 [COMPARING CORE AND ICF CHAP
=J*F ... BRN XPRINCOM [PRINT ALL AND CONTINUE
=JB8 ...)
=JC= #
=JWW ZPMCHECK
=KBG #
=KW6 #END
^^^^ ...42105571000100000000