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