{{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