{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: PMCHAP867)}} ====== PMCHAP867 ====== (George Source) **Macros used:** [[george:macro:DUMP|DUMP]], [[george:macro:MASK|MASK]], [[george:macro:PMBSADD|PMBSADD]], [[george:macro:PMCORES|PMCORES]], [[george:macro:PMESSAGE|PMESSAGE]], [[george:macro:PMOVE|PMOVE]], [[george:macro:PMSCFREAD|PMSCFREAD]], [[george:macro:SEGENTRY|SEGENTRY]] 23YG #OPT K0PMCHAP=0 24D6 #LIS K0PMCHAP>K0POST>K0ALLGEO 24XQ # 25CB ...#SEG PMCHAP84 [KAREL KOSKUBA-DIAG 25M8 ...# (C) COPYRIGHT INTERNATIONAL COMPUTERS LTD 1982 25X2 # 26BL # THIS SEGMENT LISTS THE CURRENT CHAPTER,AND ALSO CHAPTER HOLDING 26W= # GEORGE BREAK(IF K0-1 DOESN'T POINT TO CURRENT CHAP. OF FIXED CORE) 27*W # THIS SEGMENT ALSO PRINTS THE ACTIVITY DUMP ASSOCIATED WITH 27TG # NOISY CORE 28*6 # 28SQ 8HPMCHAP 29#B # 29S2 # ENTRY POINT TABLE 2=?L # 2=R= ... SEGENTRY K1PMCHAP,XK1PMCHAP 2?QG # 2#=6 NAMEA 15HCURRENT CHAPTER 2#PQ NAMEB 49HCHAPTER CONTAINING LAST GEORGE INSTRUCTION OBEYED 2*9B #SKI FNOISE 2*P2 ( 2B8L QUERIES 8H???????? 2BN= NHEAD1 28HNOISY CORE SYSTEM RUNNING 2C7W NHEAD2 24HNOISY CORE ACTIVITY DUMP 2CMG NMESS 24HGNCCODE POINTER CORRUPT 2D76 TIDEN 8HACC3 2DLQ 8HACC4 2F6B 8HACC5 2FL2 8HACC6 2G5L 8HACC7 2GK= XALNK 8HALNK1 2H4W 8HAWRK1 2HJG 8HAWRK2 2J46 8HAWRK3 2JHQ 8HAWRK4 2K3B 8HACOM1 2KH2 8HACOM2 2L2L 8HACOM3 2LG= 8HACOM4 2L^W 8HACOM5 2MFG 8HACOM6 2M^6 8HACOM7 2NDQ 8HACOM8 2NYB TEND 8HACOM9 2PD2 ) 2PXL MASK #17777777 2QWW XALEN +ALENFIXCHAP 2R6N ...XTWO +0 2RBG TWELVE +12 2RW6 X45 +45 2S*Q XLEN +0 [SET = LENGTH OF CHAPTEZ TO PRINT 2STB XSTART +0 [SET =START ADDR OF CHAP. TO PRINT 2T*2 XBACK +0 [SET = 1 IF BACKWARD CHAINING 2TSL XBCHAP +BCHAP 2W#= XBACKPR +0 [TO HOLD START ADDR. OF PREVIOUS 2WRW [BLOCK IN CHAIN.USED BY SEARCH ROUTS 2YQB ZLINKA +0 [TO HOLD LINK ADDR. OF PRCHAP ROUT. 2^=2 #SKI FNOISE 2^PL ( 329= ZBSLEN #02260000 32NW ...ZLCHAPTAB +AENDCHAPS-KTAB 338G TADDR +0 [IDENTIFIER ADDR.FOR NOISY CORE 33N6 ) 33T# ...#UNS JPSCF 342G ...SCFCT +0 [TEMPORARY STORE FOR COUNT OVER PMSCFREAD 347Q # 34MB # ROUTINE TO GET ADDRESS OF NEXT BLOCK IN CHAIN WHEN FORWARD 3572 # CHAINING 35LL # ENTRY X2=ADDRESS OF CURRENT BLOCK 366= # EXIT 0 & IF FORWARD AND BACKWARD POINTERS CORRECT 36KW # X2,X3=ADDRESS OF NEXT BLOCK 375G # X0=LINK 37K6 # EXIT 0 0 IF BREAK IN CHAIN DETECTED 384Q # X3=ADDRESS OF NEXT BLOCK 38JB # (SEARCHA:ENTRY POINT FOR FIRST BLOCK ON CHAIN 3942 # 39HL SEARCH 3=3= LDX 3 BPTR(2) [J IF BPTR IN CURRENT 3=GW ... TXU 3 XBACKPR(1) [BLOCK INCORRECT 3?2G BCS S1 3?G6 SEARCHA 3?^Q ... STO 2 XBACKPR(1) [STORE ADD. OF CURRENT BLOCK 3#FB LDX 3 FPTR(2) [GET ADD. OF NEXT BLOCK 3#^2 S2 3*DL PMCORES 3,S1 3*Y= ... TXL 3 X45(1) [J IF ADDR. INVALID 3BCW BCS S1 [BECAUSE TO SMALL 3BXG LDX 2 3 3CC6 EXIT 0 1 3CWQ S1 EXIT 0 0 [BREAK IN CHAIN 3DBB # 3DW2 # ROUTINE TO GET ADDRESS OF NEXT BLOCK IN CHAIN, WHEN BACKWARD 3F*L # CHAINING 3FT= # ENTRY & EXIT AS SEARCH 3G#W # (SEARCHC:ENTRY POINT FOR FIRST BLOCK ON CHAIN 3GSG # 3H#6 SEARCHB 3HRQ LDX 3 FPTR(2) [J IF FPTR IN CURRENT 3J?B ... TXU 3 XBACKPR(1) [BLOCK INCORRECT 3JR2 BCS S1 3K=L SEARCHC 3KQ= ... STO 2 XBACKPR(1) [STORE ADD. OF CURRENT BLOCK 3L9W LDX 3 BPTR(2) [GET ADD. OF NEXT BLOCK 3LPG BRN S2 3M96 # 3MNQ # ROUTINE TO PRINT AN AREA OF CORE 3N8B # ENTRY XLEN=LENGTH TO PRINT 3NN2 # XSTART=START ADDR. OF AREA 3P7L # X7=LINK 3PM= # EXIT XLEN=0 3Q6W # XSTART=START ADDR. OF AREA 3QLG # ALL ACCS UNDEFINED 3R66 # 3RKQ PRCHAP 3S2= ... STO 7 ZLINKA(1) [STORE LINK 3SBQ ... LDX 2 XSTART(1) [LOAD START ADDRESS 3SR= ...PRC CALL 7 (JPRINT1) [PRINT A LINE (FIRST TIME SPACES) 3T7Q ... LDX 7 XLEN(1) 3TMB ... LDX 4 ZLINKA(1) 3W*= ... BZE 7 (4) [J IF AREA PRINTED 3WPQ ... LDN 4 1 3X6= ... SBS 4 XLEN(1) [UPDATE COUNT 3XGQ ADS 4 JPMOD [UPDATE LP MODIFIER 3Y2B ... LDX 5 2 [CONVERT ADDRESS TO 3YG2 ... CALL 7 (JDECN) [DECIMAL 3Y^L ... SBX 5 XSTART(1) [CONVERT RELATIVE 3^F= ... CALL 7 (JDECN) [ADDRESS TO DECIMAL 3^YW ADS 4 JPMOD [UPDATE LP MODIFIER 42DG ... LDX 5 0(2) [GET CONTENTS OF ADDRESS 42Y6 ... ADS 4 2 [UPDATE ADDRESS 437Y ... STO 2 XTWO(1) 43CQ ... CALL 7 (JCON4) [CONVERT CONTENTS FOUR DIFFERENT WA 43MJ ... LDX 2 XTWO(1) 43XB BRN PRC 44C2 #SKI FNOISE 44WL ( 45B= # 45TW # ROUTINE TO OBTAIN AND INSERT CHAPTER NAME 46*G # ENTRY X7=LINK 46T6 # X3=CHAPTER NUMBER 47#Q # JPMOD=OUTPUT MOD. 47SB # EXIT JPMOD=UPDATED OUTPUT MOD. 48#2 # X3,X5,X6=UNDEFINED 48RL # 49?= NAMECHAP 49QW ... STO 7 ZLINKA(1) [STORE LINK 4==G ... TXL 3 ZLCHAPTAB(1) 4=Q6 BCC N3 [J IF CHAPTER NO.ILLEGAL 4?9Q LDXC 3 KTAB(3) [GET CHAPTER ENTRY FROM F.STORE TABLE 4?PB BCS N1 [J IF CHAP. IN CORE 4?SP ...#UNS JPSCF 4?Y4 ...( 4#3C ... SLL 3 10 4#6Q ... LDX 5 3 [-VE IF ON SCF 4#=5 ... SLL 3 1 4#*D ... SRL 3 4 [ADD IN WORDS NOW 4#DR ...) 4#J6 ...#UNS JPSCF 4#MF ...#SKI 4#QS ...( 4#W7 ... SLL 3 11 [CLEAR BITS 0-8 4#^G ... SRL 3 4 [MULTIPLY BY 128 4*4T ...) 4*8= ... TXL 3 ZBSLEN(1) 4*MW BCC N3 [J IF B/S ADDR. ILLEGAL 4B7G LDN 6 2 [LENGTH OF TRANSFER 4B8H ...#UNS JPSCF 4B9J ...( 4B=K ... BPZ 5 NTSCF 4B?L ... STO 6 SCFCT(1) 4B#M ... PMSCFREAD SCFCT(1),ZPMCHAP(1),3 4B*N ... BRN NICF 4BBP ...NTSCF 4BCQ ...) 4BDW ... LDN 5 ZPMCHAP(1) 4BQ= ... PMBSADD GEO,0,6,5,3 4C3L ...NICF LDX 1 FXPM1 4C*2 ... LDN 5 ZPMCHAP(1) 4CLB N2 LDX 6 JPMOD [LOAD OUTPUT ADDR. 4D62 MOVE 5 2 [MOVE CHAP. NAME INTO OUTPUT BUFFER 4DJ4 ... LDX 5 ZLINKA(1) 4F26 ... BRN (5) [EXIT 4F?G ...N1 ANDX 3 MASK(1) 4FJW PMCORES 3,N3 4G4G LDN 5 A1(3) [LOAD CORE ADDR. OF CHAP. NAME 4GJ6 BRN N2 4H3Q ...N3 LDN 5 QUERIES(1) [SET TO PRINT '????????' 4HHB BRN N2 4J32 ) 4JGL # 4K2= XK1PMCHAP 4K4F ...# 4K6N ...# 4K8X ...# LOAD MODIFIER 4K?6 ...# 4K** ... LDX 1 FXPM1 4KCJ ...# 4KFW #SKI FNOISE 4K^G ( 4LF6 # 4LYQ # TEST IF NOISY CORE SYSTEM RUNNING 4MDB # 4MY2 LDX 4 GNCCODE 4NCL BNG 4 NEND [J IF NOT 4NX= ... PMESSAGE NHEAD1(1),7 4PBW ... PMESSAGE NHEAD2(1),6 4PWG ADN 4 1 [OBTAIN [GNCCODE]+1 4QB6 ... TXL 4 ENDFIX [IS [GNCCODE]+1 INSIDE F.C. 4QTQ BCC NC3 [J IF NOT 4R*B ... CALL 7 (JPRINT1) [PRINT BLANK LINE 4RT2 ... LDN 2 TIDEN(1) [LOAD ADDR.OF TABLE OF IDENTIFIERS 4S#L ... STO 2 TADDR(1) [AND STORE 4SS= ...NC1 LDX 2 JLPMOD [LOAD LP BUFFER ADDR. 4T?W ... LDX 5 TADDR(1) [LOAD ADDR.OF FIRST/NEXT IDENTIFIER 4TRG ... LDN 6 1(2) [LOAD OUTPUT ADDR. 4W?6 MOVE 5 2 [STORE FIRST/NEXT IDENTIFIER 4WQQ SMO 4 4X=B LDX 5 0 [LOAD FIRST/NEXT WORD OF DUMP AREA 4XQ2 ... ADN 2 4 [UPDATE BUFFER ADDR. 4Y9L ... STO 2 JPMOD [STORE UPDATED BUFFER ADDR. 4YP= ... LDN 6 XALNK(1) [LOAD ADDR.OF ALNK1 IDEN 4^8W ... TXU 6 TADDR(1) [IS PRESENT IDENT.ADDR. THE SAME 4^NG BCC NALNK [J IF ALNK1 IDEN. 5286 ... CALL 7 (JDECP) [STORE BIN.NO. IN N.N FORMAT 52MQ LDN 7 1 537B ADS 7 JPMOD 53M2 LDCT 7 #600 546L ORS 7 JPMOD [UPDATE TO POINT TO CHAR.3 54L= ... CALL 7 (JOCT) [STORE BIN.NO. IN OCTAL FORMAT 555W ... CALL 7 (JPRINT1) [OUTPUT 55KG ... LDN 5 TEND(1) [LOAD ADDR.OF LAST IDEN. 5656 ... TXU 5 TADDR(1) [IS PRESENT IDEN. THE LAST 56JQ BCC NEND [J IF SO 574B NC2 ADN 4 1 [UPDATE DUMP AREA ADDR. 57J2 LDN 5 2 583L ... ADS 5 TADDR(1) [UPDATE IDENT.TABLE ADDR. 58H= BRN NC1 592W # 59GG # OUTPUT ALNK1 INFORMATION 5=26 # 5=FQ NALNK 5=^B LDCT 7 #400 [POSITION BUFFER ADDR.FOR OUTPUT 5?F2 ORS 7 JPMOD [AND STORE 5?YL ... CALL 7 (JDECDEC) [STORE BIN.NO IN N/N FORMAT 5#D= SRL 5 12 [OBTAIN CHAPTER NO. 5#XW LDX 3 5 [AND STORE 5*CG LDN 6 2 5*X6 ADS 6 JPMOD [UPDATE 5BBQ CALL 7 NAMECHAP [STORE CHAPTER NAME 5BWB ... CALL 7 (JPRINT1) [OUTPUT 5CB2 BRN NC2 5CTL # 5D*= ...NC3 PMESSAGE NMESS(1),6 [[GNCCODE]+1 CORRUPT 5DSW NEND 5F#G ) 5FS6 # 5G?Q ...# READ PMINPRIN ROUTINE INTO CORE 5GRB # 5H?2 ... LDN 6 ZPMCHAP(1) 5HQL ... PMOVE PMINPRIN,6 5J== ... LDX 1 FXPM1 5JPW # 5K9G # TO PRINT CURRENT CHAPTER 5KP6 # 5L8Q LDX 2 FX1 5LNB BZE 2 PC [J IF NO CURRENT CHAPTER 5M82 PMCORES 2,PC 5MML ... STO 2 XSTART(1) [FOR PRCHAP ROUTINE 5N7= SBN 2 A1 [START ADDR. OF BLOCK 5NLW LDX 7 ALOGLEN(2) [LENGTH OF CHAPTER 5P6G ... ANDX 7 MASK(1) 5PL6 BNZ 7 PC4 5Q5Q TXU 2 GFIXCHAP 5QKB BCC PC7 [J IF FIXED CHAPTER 5R52 LDX 7 ASIZE(2) 5RJL ... ANDX 7 MASK(1) 5S4= ... TXL 7 TWELVE(1) 5SHW BCC PC4 [IF CHAPTER BLOCK SIZE<12 5T3G LDN 7 100 [PRINT FIRST 100 WORDS 5TH6 BRN PF 5W2Q PC7 LDX 7 GLENFCHAP [LENGTH OF FIXED CHAPTER 5WGB BRN PF 5X22 ...PC4 TXL 7 XALEN(1) 5XFL BCS PF [J IF CHAPTER LENGTH VALCHAP ROUT 5X^= ... LDX 7 XALEN(1) [MAX LENGTH OF A CHAPTER 5YDW ...PF STO 7 XLEN(1) [LENGTH TO PRINT,FOR PRCHAP ROUT 5YYG ... CALL 7 (JPRINT1) [THROW A LINE 5^D6 ... PMESSAGE NAMEA(1),4 5^XQ CALL 7 PRCHAP [PRINT CHAPTER 62CB # 62X2 # TO TEST IF GEORGE BREAK OCCURED IN ANOTHER CHAPTER 63BL # 63W= ...PC LDX 5 GONRDUMP [GET LAST GEORGE INSTR. OBEYED 64*W ... TXL 5 ENDFIX 64TG ... BCS (JPMSEG) 65*6 ... PMCORES 5,(JPMSEG) 65SQ LDX 2 FX1 66#B BZE 2 PC5 [J IF NO CURRENT CHAPTER 66S2 TXL 5 2 67?L BCS PC5 [J IF BREAK NOT IN CURRENT CHAPTER 67R= SBN 2 A1 68=W ADX 2 ASIZE(2) [LAST WORD OF CURRENT CHAPTER 68QG ... ANDX 2 MASK(1) 69=6 TXL 5 2 69PQ ... BCS (JPMSEG) [J IF BREAK IN CURRENT C APTER 6=9B # 6=P2 # TO SEARCH DOWN CHAPTER CHAIN TO SEE IF GEORGE BROKE IN A CHAPTER 6?8L # 6?N= PC5 LDN 2 BCHAP 6#7W ... LDN 3 SEARCHA(1) [TO GET ADDR. FIRST BLOCK ON CHAIN 6#MG BRN PC1 6*76 ...PC2 LDN 3 SEARCH(1) 6*LQ ... LDX 7 XBACK(1) 6B6B BZE 7 PC1 [J IF FORWARD CHAINING 6BL2 ... LDN 3 SEARCHB(1) 6C5L PC1 CALL 0 (3) [GET ADDR. OF -EX0 BLOCK ON CHAIN 6CK= BRN PC3 [J IF BREAK IN CHAIN 6D4W ... TXU 2 XBCHAP(1) 6DJG ... BCC (JPMSEG) [J IF END OF CHAIN REACHED 6F46 LDX 7 ALOGLEN(2) [LENGTH OF BLOCK 6FHQ ... ANDX 7 MASK(1) 6G3B ... TXL 7 XALEN(1) 6GH2 BCS PC6 [J IF LENGTH VALID 6H2L ... LDX 7 XALEN(1) [SET TO MAX. LENGTH OF A CHAPTER 6HG= PC6 ADX 3 7 6H^W ADN 3 A1 6JFG TXL 5 2 6J^6 BCS PC2 [J IF NOT CHAPTER 6KDQ TXL 5 3 6KYB BCC PC2 [J IF BREAK NOT IN CHAPTER 6LD2 # 6LXL # PRINT CHAPTER GEORGE BROKE IN 6MC= # 6MWW ADN 2 A1 6NBG ... STO 2 XSTART(1) [START ADDR. OF CHAP. FOR PRCHAP 6NW6 ... STO 7 XLEN(1) 6P*Q ... PMESSAGE NAMEB(1),13 6PTB CALL 7 PRCHAP [PRINT CHAPTER 6Q*2 ... BRN (JPMSEG) 6QSL # 6R#= # IF BREAK IN CHAPTER CHAIN ENCOUNTERED 6RRW # 6S?G ...PC3 LDX 0 XBACK(1) 6SR6 ... BNZ 0 (JPMSEG) 6T=Q LDN 0 1 6TQB ... STO 0 XBACK(1) [SET BACKWARD CHAINING INDICATOR 6W=2 LDN 2 BCHAP [SET TO GET FIRST BLOCK ON CHAIN WHEN 6WPL ... LDN 3 SEARCHC(1) [BACKWARD CHAINING 6X9= BRN PC1 6XNW # 6YN6 # 6^7Q ZPMCHAP 6^MB # 7272 #END ^^^^ ...53532256000100000000