{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: PMACT867)}}
====== PMACT867 ======
(George Source)
**Macros used:** [[george:macro:AND|AND]], [[george:macro:CHAIN|CHAIN]], [[george:macro:FIXTRA|FIXTRA]], [[george:macro:FSHCODE|FSHCODE]], [[george:macro:MASK|MASK]], [[george:macro:PMBSADD|PMBSADD]], [[george:macro:PMCORES|PMCORES]], [[george:macro:PMDLGET|PMDLGET]], [[george:macro:PMOVE|PMOVE]], [[george:macro:PMSCFREAD|PMSCFREAD]], [[george:macro:PMSUBSREAD|PMSUBSREAD]], [[george:macro:R|R]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:SIX|SIX]], [[george:macro:SKIP|SKIP]], [[george:macro:T|T]], [[george:macro:TAB|TAB]]
23YG #OPT K0PMACT=0
24D6 #LIS K0PMACT>K0POST>K0ALLGEO
24XQ #
25CB ...#SEG PMACT84 [KAREL KOSKUBA-DIAG
25M8 ...# (C) COPYRIGHT INTERNATIONAL COMPUTERS LTD 1982
25X2 #
26BL # THIS SEGMENT GIVES LISTINGS OF THE CONTENTS OF THE ACTIVITY CHAIN
26W= #
27*W 8HPMACT
27TG #
28*6 # ENTRY POINT TABLE
28SQ #
29#B ... SEGENTRY K1PMACT,XK1PMACT
29S2 ... SEGENTRY K2PMACT,XK2PMACT
2?=W #
2?QG FIXTRA JPMABLOX [USED BY PMBLOX MACRO
2#2# ...#ALT JPMADENT=0 [INITIALISE POINTER FOR PMBLOX
2#=6 ZPMABLOX
2*9B #GAP JPMNOFTYPES+2 [ FOR #MEN VIA PMBLOX
2*P2 #
2B8L #OPT JACT=150
2CMG FIXTRA JMACT
2D76 ZJACT +JACT [OPTIONAL LENGTH OF BLOCKS
2HJG NAMEA 16HCURRENT ACTIVITY
2J46 NAMEB 22H AND ASSOCIATED BLOCKS
2JHQ NAMEC 15H BREAK IN CHAIN
2L2L NAMEE 25HACTIVITY CHAIN (FROM FX2)
2LG= NAMEF 26HACTIVITY CHAIN (FROM BACT)
2L^W NAMEG 17HBACKWARD CHAINING
2MFG NAMEH 11HFX2 INVALID
2M^6 NAMEI 16H MINI POSTMORTEM
2PD2 NAMEL 4HACTC
2PXL ROWCNT +0
2T*2 QUERIES 8H????????
2TSL XBASEPR +0 [SET NEG. IF CHAINING FROM BACT
2W#= [SET POS. IF CHAINING FROM FX2 AND
2WRW [ BACT PRINTED
2X?G XBACT +BACT
2Y=Q XIND +0 [SET=0 WHEN FORWARD CHAINING
2YQB [ =1 WHEN BACKWARD CHAINING
2^=2 [ =2 WHEN'BACKWARD CHAINING'
2^PL [ HEADING TO BE PRINTED
329= [ =-1 WHEN END OF CHAIN
32NW XACT #60
338G XBLINK +BLINK/#100
34MB XBLCOUNT +0 [COUNT OF BLOCKS IN ROW TO BE PRINTED
3572 [IN ROUTINE PRINT
35LL XBACKPR +0 [TO HOLD START ADDR. OF PREVIOUS
366= [BLOCK IN CHAIN.USED BY SEARCH ROUT.
3942 XA1 +A1
39HL X512 +512
3=3= X45 +45
3=GW START +0 [SET=START ADDR. OF CHAINING
3?^Q UNE +0 [ BLOCK COUNT STORAGE
3#FB STYPE +0
3*DL SIX +6
3*Y= MASK #17777777 [TO MASK OUT CHAR. BITS
3BCW THREE +3
3BXG SKIP +0 [HEADING OR NO HEADING
3CC6 PRINTING +0 [USE BY PRINT ROUTINE TO INDICATE
3CWQ [STILL PRINTING BLOCKS
3DBB UPARROW 4H^^^^
3DW2 NOTLISTED 16H0NOT LISTED 0000
3F*L ...PMACTEND +ZPMACT+1 [END OF SEG+1
3FT= PMACTENDA +0 [SET=END OF SEG+IDENT TABLES
3G#W ...ZLPMT +0
3GSG ...JMAXCHAP [#MEND BY NEWFIXED ETC
3H#6 ...ZLCHAPTAB +AENDCHAPS-KTAB
3JR2 ZBSLEN #02260000
3K=L PMOD +0 [LP MODIFIER STORAGE WORD
3KQ= ZLINKA +0 [TO HOLD LINK ADDRS. OF ROUTINES
3L9W ZLINKC +0 [
3LC4 ...SAVE1 +0 [ ACC 1 STORAGE
3LJ= ...SAVE4 +0 [ ACC 4 STORAGE
3LL2 ...#UNS JPSCF
3LMQ ...SCFCT +0 [TEMPORARY COUNT OVER PMSCFREAD
3LPG #
3M96 # TABLE OF JUMPS TO CONVERSION ROUTINES
3MNQ #
3N8B RTNS BRN ROCT
3NN2 BRN RCHA
3P7L BRN RDECS
3PM= BRN RDECP
3Q6W BRN RDECDEC
3QLG #
3R66 # TABLE OF REDTAPE MNEMONICS AND PRINT FORMAT INDICATORS
3RKQ #
3S5B # NOW AT END OF SEGMENT BECAUSE OF PMLIST EXPANSION
3SK2 #
3T4L #
3TJ= #
3W3W # TABLE OF START ADDRESSES OF BLOCKS
3WHG #
3X36 TAB
3XGQ #REP 6
3Y2B +0
3YG2 #
3Y^L # TABLE GIVING LENGTHS TO BE PRINTED FROM BLOCKS IN TAB
3^F= #
3^YW TABL
42DG #REP 6
42Y6 +0
43CQ #
43XB # TABLE GIVING POSITION OF NEXT WORD TO PRINT FROM BLOCKS IN TAB
44C2 #
44WL TABC
45B= #REP 6
45TW +0
46*G #
46T6 # TABLE CONTAINING IDENTITY BLOCK TABLE POINTERS FOR EACH BLK IN TAB
47#Q #
47SB TABI
48#2 #REP 6
48RL +0
49?= #
49QW # TABLE CONTAINING LINK ELEMENT COUNT FOR WHEN PRINTING BLINK BLOCKS
4==G # ALSO TO HOLD IND. OF WHEN TO PRINT CHAP.NAME IN ACT. BLOCK
4=Q6 #
4?9Q TABBL
4?PB #REP 6
4#92 +8
4#NL #
4*8= # ROUTINE TO GET ADDRESS OF NEXT BLOCK IN CHAIN WHEN FORWARD
4*MW # CHAINING
4B7G # ENTRY X2=ADDRESS OF CURRENT BLOCK
4BM6 # EXIT 0 & IF FORWARD AND BACKWARD POINTERS CORRECT
4C6Q # X2,X3=ADDRESS OF NEXT BLOCK
4CLB # X0=LINK
4D62 # EXIT 0 0 IF BREAK IN CHAIN DETECTED
4DKL # X3=ADDRESS OF NEXT BLOCK
4F5= # (SEARCHA:ENTRY POINT FOR FIRST BLOCK ON CHAIN
4FJW #
4G4G SEARCH
4GJ6 LDX 3 BPTR(2) [J IF BPTR IN CURRENT
4H3Q ... TXU 3 XBACKPR(1) [BLOCK INCORRECT
4HHB BCS S1
4J32 SEARCHA
4JGL LDX 3 FPTR(2) [GET ADD. OF NEXT BLOCK
4K2= ...S2 STO 2 XBACKPR(1) [STORE ADDR. OF CURRENT BLOCK
4KFW PMCORES 3,S1
4K^G ... TXL 3 ENDFIX [J IF ADDR. INVALID
4LF6 BCC S12
4LYQ ... TXU 3 XBACT(1)
4MDB BCS S1 [BECAUSE TO SMALL
4MY2 S12 LDX 2 3
4NCL EXIT 0 1
4NX= S1 EXIT 0 0 [BREAK IN CHAIN
4PBW #
4PWG # ROUTINE TO GET ADDRESS OF NEXT BLOCK IN CHAIN, WHEN BACKWARD
4QB6 # CHAINING
4QTQ # ENTRY & EXIT AS SEARCH
4R*B # (SEARCHC:ENTRY POINT FOR FIRST BLOCK ON CHAIN
4RT2 #
4S#L SEARCHB
4SS= LDX 3 FPTR(2) [J IF FPTR IN CURRENT
4T?W ... TXU 3 XBACKPR(1) [BLOCK INCORRECT
4TRG BCS S1
4W?6 SEARCHC
4WQQ LDX 3 BPTR(2) [GET ADD. OF NEXT BLOCK
4X=B BRN S2
4XQ2 #
4Y9L # ROUTINE TO PRINT A ROW OF BLOCKS
4YP= # ENTRY XBLCOUNT=NO. OF BLOCKS IN ROW
4^8W # TAB TABLE=HOLDS START ADDR OF BLOCKS
4^NG # X7=LINK
5286 # EXIT ALL ACCS UNDEFINED
52MQ #
537B ...PRINT STO 7 ZLINKC(1) [STORE LINK
53M2 ... CALL 7 (JPRINT1) [THROW A LINE
546L #
54L= #
555W # SET UP NO. OF WORDS IN EACH BLOCK TO BE PRINTED
55KG #
5656 ... LDX 1 FXPM1 [ MODIFIER+BLOCK COUNT
56JQ PR1 LDX 3 TAB(1) [GET ADDR. OF NEXT BLOCK
574B LDCH 6 ATYPE(3) [ PICK UP TOP CH = BLOCK TYPE
57J2 ... SMO FXPM1
58H= STO 1 UNE [ PRESERVE BLOCK COUNT
592W ... LDX 1 FXPM1 [ NEED A ZERO MODIFIER FOR LDCH
59GG RP2 [ LOOP RE ENTRY
5=26 LDX 7 ZPMABLOX(1) [ PICK UP COMPLETE WORD FROM LIST
5=FQ BZE 7 RP5 [ IF ZERO, NO (MORE)0TYPES TO CHECK
5=^B LDCH 7 ZPMABLOX(1) [ PICK UP A TYPE FROM LIST
5?F2 SBX 7 6 [LISTED TYPE=BLOCK TYPE
5?YL BZE 7 RP3 [ JUMP IF TYPES MATCH
5#D= BUX 1 RP2 [ ELSE LOOK FOR ANOTHER
5#XW RP3 [ FIND OUT IF A SUB TYPE HAS BEEN SPD
5*7N ... SMO FXPM1
5*CG LDX 7 ZPMABLOX+1+JPMNOFTYPES [ LOAD LAST WORD OF GAP AREA
5*M# ... SBX 1 FXPM1
5*X6 SLL 7 0(1) [ MOVE APT BIT INTO TEST SPOT
5B6Y ... ADX 1 FXPM1
5BBQ BNG 7 RP4 [ JUMP IF NO NEED TO CHECK SUBTYPE
5BWB LDCT 2 #200 [ = STOZ 2, BCHX 2 £
5CB2 SMO 3
5CTL LDCH 7 ATYPE(2) [ PICK UP 2ND CHARACTER, = SUBTYPE
5D5D ... SMO FXPM1
5D*= STO 7 STYPE
5DSW SMO 1
5F#G LDCH 7 ZPMABLOX(2)
5FJ# ... SMO FXPM1
5FS6 SBX 7 STYPE [ COMPARE SUBTYPES
5G?Q BZE 7 RP4 [ JUMP IF THEY MATCH
5GRB BUX 1 RP2 [ ELSE LOOK FOR NEXT MAIN TYPE
5H?2 RP4
5HQL LDX 7 ZPMABLOX(1)
5J== ANDN 7 #7777
5JPW ADN 7 A1
5J^N ... SMO FXPM1
5K9G LDX 1 UNE [ RESTORE BLOCK COUNT
5KP6 BRN PR2
5L8Q RP5
5LDJ ... SMO FXPM1
5LNB LDX 1 UNE [ RESTORE BLOCK COUNT
5MML LDN 7 512+A1
5MXD ... SMO FXPM1
5N7= SBX 6 XBLINK
5NLW BZE 6 PR2 [ IF BLINK BLOCK LEAVE LEN = 512
5NWN ... SMO FXPM1
5P6G LDX 7 ZJACT [ ELSE SET LEN = MAX
5PL6 PR2
5Q5Q LDX 6 ASIZE(3) [ GET LENGTH
5Q*J ... SMO FXPM1
5QKB ANDX 6 MASK [ KO CH PTR
5R52 TXL 7 6 [ COMPARE WITH REQUEST
5RJL BCS PR3 [ CHOOSE THE LESS
5S4= LDX 7 6
5SHW PR3
5SRN ... SMO FXPM1
5T3G TXL 7 XA1 [ COMPARE WITH RED TAPE
5TH6 BCC PR4 [ CHOOSE THE GREATER
5W2Q LDN 7 A1
5WGB PR4
5X22 STO 7 TABL(1) [ STO NO OF WORES TO PRINT
5XFL ADX 7 TAB(1)
5X^= PMCORES 7,,PR5
5YDW LDX 7 CORES [LENGTH TO MAXIMUM NO. OF WORDS
5YYG SBX 7 TAB(1) [POSSIBLE
5^D6 STO 7 TABL(1)
5^XQ PR5 ADN 1 1
6262 ... LDX 5 1
62#= ... SBX 5 FXPM1
62GG ... SMO FXPM1
62NQ ... TXU 5 XBLCOUNT [J IF STILL MORE
62X2 BCS PR1 [BLOCKS TO PRINT
63BL #
63W= # CODING TO PRINT BLOCKS
64*W #
64TG ...PP3 LDX 1 FXPM1 [ MODIFIER+BLOCK COUNT
65*6 PP2 LDX 5 TABC(1) [WORD POINTER
65SQ TXL 5 TABL(1) [NO. OF WORDS TO PRINT
66#B BCS PP [J IF BLOCK PRINT STILL CONTINUING
66S2 LDX 3 TAB(1)
67?L LDCH 7 ATYPE(3)
67R= ...PP18 CALL 7 (JUP)
6=P2 +20
6?8L BRN PP11
6?N= ...PP CALL 7 (JUP) [UPDATE PRINT BUFFER MOD.
6#7W +2
6#MG LDN 7 1
6#X# ... SMO FXPM1
6*76 STO 7 PRINTING ['STILL PRINTING' IND.
6*LQ BNZ 5 PP4 [J IF NOT FPTR
6B6B #
6BL2 # CODING TO PRINT ACTUAL ADDR. OF FORWARD POINTER
6C5L #
6CK= LDX 2 TAB(1) [GET ADDR. OF BLOCK
6D4W LDX 5 TAB(1)
6DJG ... CALL 7 (JDECN) [CONVERT TO DECIMAL
6F46 LDN 3 3 [CONVERSION ROUT. IND.
6FHQ #
6G3B # TO CONVERT CONTENTS OF A WORD IN SPECIFIED FORMAT
6GH2 #
6H2L PP1 LDX 5 0(2) [GET CONTENTS OF ADDR.
6HG= SMO 3
6H^W CALL 7 RTNS [J TO APPROPRIATE CONVERSION ROUTINE
6JFG #
6J^6 # TO UPDATE COUNTS,PRINT A LINE ETC.
6KDQ #
6KYB PP11 LDN 7 1
6LD2 ADS 7 TABC(1) [UPDATE WORD COUNT
6LXL PP17 ADN 1 1 [UPDATE BLOCK COUNT
6M5W ... LDX 7 1
6M#6 ... SBX 7 FXPM1
6MGB ... SMO FXPM1
6MNL ... TXU 7 XBLCOUNT
6MWW BCS PP2 [J IF STILL BLOCKS IN ROW
6NBG ... SMO FXPM1
6P*Q LDX 7 PRINTING
6PTB BZE 7 PRINTFIN
6Q*2 ... CALL 7 (JPRINT1) [PRINT A LINE
6QSL BRN PP12
6R#= PRINTFIN
6RJ4 ... LDX 1 FXPM1
6RRW LDX 7 JOZ [ RESET JPMOD
6S?G STO 7 JPMOD
6SR6 ... STOZ TABL(1)
6T=Q ... LDN 6 TABL(1)
6TQB ... LDN 7 TABL+1(1)
7272 MOVE 6 17 [ZEROISE TABLES
72LL LDN 6 8
736= ... STO 6 TABBL(1)
73KW ... LDN 6 TABBL(1)
745G ... LDN 7 TABBL+1(1) [RESET TABLE FOR BLINK BLOCKS
74K6 MOVE 6 5
74WG ... LDX 0 ZLINKC(1) [ EXIT
757W ... EXIT 0 0
75F= ...PP12 SMO FXPM1
75QL ... STOZ PRINTING
7642 LDN 7 ATYPE+1
76HL TXU 7 TABC-1(1)
773= BCS PP3 [J IF LAST WORD NOT = ATYPE
77GW BRN T
782G #
78G6 # IF NOT PRINT FPTR
78^Q #
79#7 ...PP4 SMO FXPM1
79LJ ... TXL 5 XA1
79^2 BCC PP5 [J IF NOT RED TAPE WORD
7=DL #
7=Y= # TO SET UP TO PRINT IN REDTAPE WORD FORMAT
7?CW #
7?XG ADX 5 TABC(1)
7#C6 ADN 5 REDTAPE [X5=POINTER TO REDTAPE TABLE
7#LY ... ADX 5 FXPM1
7#WQ #
7*BB # TO ANALYSE NEXT WORD IN IDENT. TABLE
7*W2 #
7B*L PP7 SMO 5
7BT= LDX 7 0 [GET MNEMONIC FROM TABLE
7C#W BZE 7 PP15 [J IF NO MNEMONIC
7CJN ... SMO FXPM1
7CSG TXU 7 UPARROW
7D#6 BCC PP8 [J IF END OF TABLE REACHED
7DRQ LDCH 6 7
7F?B SRL 7 18
7FR2 SBN 7 #72
7G=L BNZ 7 PP14 [J IF NOT RECURSIVE TABLE
7GQ= #
7H9W # TO BACKSPACE IDENT. TABLE POINTER WHEN END OF RECURSIVE TABLE
7HPG #
7J96 PP10 SBN 5 2
7JNQ SMO 5
7K8B STOZ 0 [CLEAR MNEMONIC ENTRY
7KN2 SBN 6 2
7L7L BNZ 6 PP10 [J IF NOT AT START OF RECURSION
7LM= ADN 5 2
7M6W STO 5 TABI(1) [RESET IDENT. TABLE POINTER
7MLG #
7N66 # TO PRINT REOATIVE ADR. BEFORE PRINT CONTENTS IN SPECIFIED FORMAT
7NKQ #
7P5B PP15 LDX 5 TABC(1)
7PK2 ... CALL 7 (JDECN) [CONVERT RELATIVE ADR. TO DECIMAL
7Q4L LDX 5 TABI(1)
7QJ= SBN 5 1 [GET POINTER TO PRINT FORMAT
7R3W BRN PP16
7RHG #
7S36 # TO PRINT ADDR. AND CONTENTS TO FORMAT SPECIFIED IN AN IDENT /OR
7SGQ # REDTAPE) TABLE
7T2B #
7TG2 ...PP14 CALL 7 (JUP)
7T^L +2
7WF= MVCH 5 5 [MOVE IDENT MNEMONICS INTO BUFFER
7WYW STO 6 JPMOD
7XDG PP16 SMO 5
7XY6 LDCH 3 0
7YCQ PP9 LDX 2 TAB(1)
7YXB ADX 2 TABC(1) [X2=ADDR. OF WORD TO BE CONVERTED
7^C2 BRN PP1
7^WL #
82B= # IF NOT A RED TAPE WORD
82TW #
83*G PP5 LDX 3 TAB(1) [START ADDR. OF BLOCK
83T6 LDCH 7 ATYPE(3) [GET TYPE
844Y ... SMO FXPM1
84#Q TXU 7 XBLINK
84SB BCC PBL [J IF BLINK BLOCK
85#2 ... SMO FXPM1
87Q6 TXL 7 XACT
889Q BCC PAC [J IF ACTIVITY BLOCK
88?N ... FSHCODE AORB
88*L ...(
88CJ ... LDX 7 ATYPE(3)
88FG ... SRL 7 12
88HD ... SBN 7 FSH+FSHREQ
88KB ... BZE 7 PFRQ [J IF FSH/FSHREQ BLOCK
88M# ...)
88PB PP13 LDX 5 TABI(1)
8992 BZE 5 PP8 [J IF NO IDENT. LIST
89NL LDN 7 2
8=8= ADS 7 TABI(1) [UPDATE IDENT. TABLE POINTER
8=MW BRN PP7
8?7G #
8?M6 # IF NO SPECIFIED PRINT FORMAT FOR WORD
8#6Q #
8#LB PP8 STOZ TABI(1) [STOZ WHEN BRN FROM PP7
8*62 PP6 LDX 5 TABC(1) [GET ADDR. RELATIVE TO START OF BLOCK
8*KL ... CALL 7 (JDECN) [CONVERT ADDR. TO DEC(N)
8B5= STOZ 3 [CONVERT CONTENTS TO OCTAL
8BJW BRN PP9
8C4G #
8CJ6 # CODING TO CONVERT CONTENTS OF ADDR. IN VARIOUS FORMATS
8D3Q #
8DHB # OCTAL
8F32 #
8FGL ...ROCT LDX 3 JOCT
8G2= ...RN CALL 7 (JUP)
8GFW +2
8G^G CALL 7 (3)
8HF6 BRN PP11
8HYQ #
8JDB # CHARACTERS
8JY2 #
8KCL ...RCHA CALL 7 (JUP)
8KX= +7
8LBW ... CALL 7 (JCHA)
8LWG BRN PP11
8MB6 #
8MTQ # DECIMAL(+N)
8N*B #
8NT2 ...RDECS CALL 7 (JUP)
8P#L +3
8PS= ... CALL 7 (JDECS)
8Q?W BRN PP11
8QRG #
8R?6 # DECIMAL(N.N)
8RQQ #
8S=B ...RDECP LDX 3 JDECP
8SQ2 BRN RN
8T9L #
8TP= # DECIMAL(N/N)
8W8W #
8WNG RDECDEC
8X86 ... CALL 7 (JUP)
8XMQ +4
8Y7B ... CALL 7 (JDECDEC)
8YM2 BRN PP11
8^6L #
8^L= # IF PRINTING BLINK BLOCK
925W #
99D= PBL LDX 7 TABBL(1)
99XW BZE 7 PBL1
9=CG SBN 7 1
9?BQ STO 7 TABBL(1) [SUBTRACT FROM LINK ELEMENT COUNT
9?WB BRN PP13
9#B2 PBL1 LDN 7 ALINK
9#TL STO 7 TABBL(1) [RE-SET LINK ELEMENT COUNT
9**= PBL2 ADX 5 TAB(1)
9*SW SBN 5 1
9B#G SMO 5 [GET CONTENTS OF LAST WORD,I.E.
9BS6 LDX 3 0 [ALINK1 OF LINK ELEMENT
9CRB SRL 3 12
9D?2 BZE 3 PP13
9DQL CALL 7 NAMECHAP [GET CHAPTER NAME
9F== BRN PP17
9F?M ... FSHCODE AORB
9F*4 ...(
9FBF ...PFRQ LDX 7 TABBL(1)
9FCW ... BZE 7 PP13
9FF? ... LDN 7 FSHOFFSET+1
9FGN ... TXU 7 TABC(1)
9FJ5 ... BCS PP13
9FKG ... STOZ TABBL(1) [SET UP CHAP NAME PRINTED INDICATOR
9FLX ... BRN PBL2 [ & GO TO PRINT CHAPTER NAME
9FN# ...)
9FPW #
9G9G # IF PRINTING ACTIVITY BLOCK
9GP6 #
=3S2 PAC LDX 7 TABBL(1)
=4?L BZE 7 PP13 [J IF CHAPTER NAME PRINTED
=4R= LDN 7 ALINK1+1
=5=W TXU 7 TABC(1)
=5QG BCS PP13 [J IF LAST WORD NOT =ALINK1
=6=6 STOZ TABBL(1) [SET CHAPTER NAME PRINTED INDICATOR
=6PQ BRN PBL2
?WC2 #
?WWL #
?XB= # CODING TO GET AND INSERT TYPE AND SUBTYPE MNEMONICS IN LISTING AND
?XTW # SET UP TABLES OF BLOCK IDENTIFIERS
?Y*G #
?YT6 T
?^#Q #
?^SB # READ DOWN TYPE AND SUBTYPE TABLES
#2#2 #
#2MP ... LDX 1 FXPM1
#33D ... PMOVE PMTYPES,PMACTEND(1)
#3C7 ... LDX 1 FXPM1
#3QW #
#4=G # MOVE TYPE MNEMONICS INTO PRINT BUFFER & SET UP POINTER TO SUBTYPE
#4Q6 #
#59Q ...T1 CALL 7 (JUP)
#5PB +6
#692 LDX 3 TAB(1)
#6NL LDCH 2 ATYPE(3) [GET BLOCK TYPE
#6YD ... SMO FXPM1
#78= MPY 2 THREE
#7D4 ... SMO FXPM1
#7MW ADX 3 PMACTEND [ADDR. OF TYPE MNEMONIC
#87G LDX 4 JPMOD
#8M6 MVCH 3 8 [MOVE TYPE MNEMONIC INTO PR. BUFFER
#96Q LDX 7 0(3)
#9LB STO 7 TABI(1) [STORE SUBTYPE REFERENCE
#=62 ... CALL 7 (JUP)
#=KL +14
#?5= ADN 1 1
#??G ... LDX 7 1
#?FQ ... SBX 7 FXPM1
#?N2 ... SMO FXPM1
#?W= ... TXU 7 XBLCOUNT [J IF MORE BLOCKS IN ROW
##4G BCS T1
##J6 ... CALL 7 (JPRINT1) [PRINT A LINE
#*3Q #
#*HB # TO GET SUBTYPE MNEMONIC & B/S ADDR. OF IDENT TABLES
#B32 #
#BCG ... LDX 1 FXPM1
#BS2 ... PMSUBSREAD PMACTEND(1)
#C8G ... LDX 1 FXPM1
#CK2 ... CALL 7 (JUP)
#C^G +2
#DF6 T6 LDX 2 TAB(1)
#DYQ BCHX 2 £
#FDB LDCH 7 ATYPE(2) [GET SUBTYPE OF BLOCK
#FY2 LDXC 4 TABI(1)
#GCL BCS T3 [J IF NO SUBTYPE BUT IDENT. TABLE
#GX= BZE 4 T3 [J IF NEITHER
#HBW STOZ 3
#HWG SRC 34 12 [X4=LENGTH OF S/F ENTRIES
#JB6 SRL 3 12 [X3=ADDR. RELATIVE TO PMTYPES
#JKY ... SMO FXPM1
#JX3 ... ADX 3 PMACTEND [X3 POINTS TO START OF SUBTYPE TABLE
#K87 ... SMO FXPM1
#KGJ ... SBX 3 ZLPMT
#KT2 T5 LDCH 6 0(3) [GET SUBTYPE FROM TABLE ENTRY
#L#L TXU 6 7
#LS= BCC T4 [J IF REQUIRED ENTRY
#M?W ... ADN 3 3
#MRG ... SBN 4 3 [SEARCH DOWN TABLE
#N?6 BNZ 4 T5
#N*P ...#
#ND# ...# TO MOVE 'NOT LISTED ' INTO THE BUFFER
#NGX ...#
#NKH ...T7 SMO FXPM1
#NXY ... LDN 3 NOTLISTED [IF ENTRY NOT FOUND
#P#^ ... BCHX 3 £ [X3 POINTS TO THE 1ST CHAR OF 'NOT L
#PQ2 ... CALL 7 (JUP)
#Q9L ... +4 [4 SPACES BEFORE TYPE OR SUBTYPE
#QP= LDX 4 JPMOD
#R8W ... MVCH 3 11 [MOVE NOT LISTED INTO BUFFER
#RNG LDX 4 0(3)
#S86 ... CALL 7 (JUP)
#SMQ ... +16
#T7B BRN T2
#T8J ...#
#T9Q ...# TO MOVE SUBTYPE MNEMONIC INTO THE BUFFER
#T=Y ...#
#T#6 ...T4 BCHX 3 £ [X3 POINTS TO THE 1ST CHAR OF SUBTYP
#T*# ... CALL 7 (JUP)
#TBG ... +4
#TCN ... LDX 4 JPMOD
#TDW ... MVCH 3 7 [MOVE SUBTYPE MNEMONIC INTO BUFFER
#TG4 ... LDX 4 0(3)
#TH= ... CALL 7 (JUP)
#TJD ... +16
#TKL ... BRN T2
#TM2 T3 BNZ 7 T7 [J IF SUBTYPE VALUE NOT #00
#W6L ... CALL 7 (JUP) [UPDATE PRINT BUFFER MOD. IF NO
#WL= +20 [SUBTYPE
#X5W T2 STO 4 TABI(1) [STORE IDENT. TABLE REFERENCE
#XKG ADN 1 1
#XRQ ... LDX 7 1
#Y22 ... SBX 7 FXPM1
#Y8= ... SMO FXPM1
#YBG ... TXU 7 XBLCOUNT
#YJQ BCS T6 [J IF STILL BLOCKS IN ROW
#^4B ... CALL 7 (JPRINT1) [PRINT A LINE
#^J2 #
*23L # CODING TO READ DOWN IDENT. TABLES
*2H= #
*32W ... LDX 1 FXPM1 [ BLOCK COUNT+MODIFIER
*3GG ... LDX 4 PMACTEND(1) [START ADDR. IN CORE
*426 T11 LDX 6 TABI(1) [B/S ADDR. OF TABLE
*4FQ BZE 6 T10 [J IF NO TABLE
*4^B LDN 0 JREP2+1 [LENGTH
*54T ... SMO FXPM1
*58# ... STO 1 SAVE1
*5?R ... LDX 1 FXPM1
*5C= ... STO 4 SAVE4(1)
*5GP ... PMBSADD GEO,0,0,4,6
*5L8 ... LDX 1 FXPM1
*5PM ... LDX 4 SAVE4(1)
*5T6 ... LDX 1 SAVE1(1)
*6#Q ... STO 4 TABI(1) [IDENT. TABLE ADDRESS IN CORE
*6SB ... ADN 4 JREP2+1 [CORE ADDRESS OF NEXT TRANSFER
*7CG T10 ADN 1 1
*7KQ ... LDX 6 1
*7S2 ... SBX 6 FXPM1
*82= ... SMO FXPM1
*88G ... TXU 6 XBLCOUNT
*8BQ BCS T11 [J IF STILL BLOCKS IN ROW
*8P7 ... SMO FXPM1
*93J ... STO 4 PMACTENDA [CORE ADDR. FOLLOWING IDENT. TABLES
*9B2 BRN PP3
*9TL #
*=*= # ROUTINE TO GET AND INSERT CHAPTER NAME AFTER ALINK1 WORD
*=SW # ENTRY X7=LINK
*?#G # X3=CONTENTS OF ALINK1 WORD
*?S6 # JPMOD=OUTPUT MOD.
*#?Q # EXIT JPMOD=UPDATED OUTPUT MOD.
*#RB # X3X5,X6,X7=UNDEFINED
**?2 #
**QL NAMECHAP
*B2D ... SMO FXPM1
*B== ... STO 1 SAVE1
*BG4 ... LDX 1 FXPM1
*BPW ... STO 7 ZLINKA(1) [STORE LINK
*B^N ... TXL 3 ZLCHAPTAB(1)
*C9G BCC NC3 [J IF CHAPTER NO. ILLEGAL
*CP6 LDXC 3 KTAB(3) [GET CHAPTER ENTRY FROM F.STORE TABLE
*D8Q BCS NC1 [J IF CHAP. IN CORE
*DDJ ...#UNS JPSCF
*DNB ...(
*DY8 ... SLL 3 10
*F82 ... LDX 5 3
*FCS ... SLL 3 1
*FML ... SRL 3 4
*FXD ...)
*G7= ...#UNS JPSCF
*GC4 ...#SKI
*GLW ...(
*GWN ... SLL 3 11 [ CLEAR BITS 0-8
*H6G ... SRL 3 4 [ H MULTIPLY BY 128
*HB# ...)
*HL6 ... TXL 3 ZBSLEN(1)
*JKB BCC NC3 [J IF B/S ADDR. ILLEGAL
*K52 LDN 6 2 [LENGTH OF TRANSFER
*K6B ...#UNS JPSCF
*K7Q ...(
*K96 ... BPZ 5 NOTSF
*K=G ... STO 6 SCFCT(1)
*K?W ... PMSCFREAD SCFCT(1),PMACTENDA(1),3
*K*= ... BRN NICF
*KBL ...NOTSF
*KD2 ...)
*KFG ... PMBSADD GEO,0,6,PMACTENDA(1),3
*KW2 ...NICF LDX 1 FXPM1
*L=G ... LDX 5 PMACTENDA(1) [CORE ADDR. OF TRANSFER
*LM2 ...NC2 CALL 7 (JUP)
*M3G +6
*MH6 MVCH 5 8 [MOVE CHAP. NAME INTO PRINT BUFFER
*N2Q ... CALL 7 (JUP)
*NGB +12
*NRQ ... LDX 7 ZLINKA(1)
*P56 ... LDX 1 SAVE1(1)
*PBG ... EXIT 7 0
*PMW ...NC1 ANDX 3 MASK(1)
*P^= PMCORES 3,NC3
*QDW LDN 5 A1(3)
*QYG BRN NC2
*RD6 ...NC3 LDN 5 QUERIES(1) [SET TO PRINT '????????'
*RXQ BRN NC2
*SCB #
*SX2 # ENTRY POINT TO PRINT OUT THE CURRENT ACTIVITY AND
*TBL # ITS ASSOCIATED BLOCKS IN MINI-PM
*TW= #
*W*W XK1PMACT
*WTG #
*X*6 # CODING TO DECIDE IF CURRENT ACTIVITY IS TO BE PRINTED,AND IF SO TO
*XSQ # STORE START ADDR. OF BLOCK
*Y#B #
*YB^ ... LDX 1 FXPM1
*YFJ ... ADS 1 PMACTEND(1)
*YJ7 ... ADS 1 PMACTENDA(1)
*YLQ ... PMDLGET PMTYPES,,2
*YP* ... STO 2 ZLPMT(1) [STO LPMTYPES
*YS2 LDX 2 FX2 [GET ADDR. OF CURRENT ACTIVITY
*^?L ... ANDX 2 MASK(1)
*^R= ... PMCORES 2,(JPMSEG)
B2=W ... TXL 2 X45(1)
B2QG ... BCS (JPMSEG)
B3=6 LDCH 5 ATYPE(2) [GET TYPE OF CURRENT ACT.
B3PQ ... TXL 5 XACT(1)
B49B ... BCS (JPMSEG) [J IF FX2 DOESN'T POINT AT ACTIVITY
B4P2 SBN 5 BAT/#100
B58L ... BZE 5 (JPMSEG) [J IF FX2 POINTS AT BLANKET
B5N= ... STO 2 TAB(1) [STORE ADDR. OF 1ST BLOCK TO PRINT
B67W #
B6MG # SET UP HEADING AND PREPARE TO SEARCH FOR BLOCKS
B776 # ASSOCIATED WITH THE CURRENT ACTIVITY
B7LQ #
B86B ... CALL 7 (JUP)
B95L +4
B9K= ... LDN 5 NAMEA(1) [MOVE 'CURRENT ACTIVITY'
B=4W MVCH 5 16 [INTO LP BUFFER
B=JG STO 6 JPMOD
B?46 LDX 4 BPTR(2)
B?BH ... STO 4 XBACKPR(1)
B?NY ... LDN 6 1
B#3B #
B#H2 # SEARCH FOR BLOCKS ASSOCIATED WITH CURRENT ACTIVITY. BRANCH TO
B*2L # PRINT OUT BLOCKS WHEN NEXT ACTIVITY BLOCK IS FOUND
B*G= #
B*SM ...MP4 STO 6 XBLCOUNT(1)
BB74 ... CALL 0 SEARCH
BBFG BRN MP1 [BRANCH IF BREAK IN CHAIN
BB^6 LDCH 4 ATYPE(2)
BCDQ ... TXL 4 XACT(1) [BRANCH OUT TO PRINT BLOCKS
BCYB BCC MP2 [IF NEXT IS AN ACTIVITY BLOCK
BD88 ... SMO 6
BDD2 STO 2 TAB(1) [STORE ADDRESS OF BLOCK
BDXL ... ADN 6 1
BFC= ... LDX 7 SKIP(1)
BFWW BNZ 7 MP3
BGBG LDN 4 2
BGW6 ... TXU 6 4 [TEST IF HEADING
BH*Q BCS MP3 [NEEDS SETTING UP
BHTB ... LDN 4 NAMEB(1)
BJ*2 ... LDX 5 JPMOD [SET UP HEADING
BJSL ... MVCH 4 22 ['AND ASSOCIATED BLOCKS'
BK#= ... STO 5 JPMOD [IN LP BUFFER
BKRW BRN MP5
BL?G MP3 LDN 4 4
BLR6 BZE 7 MP6
BM=Q SBN 4 2
BMQB ...MP6 TXL 6 4
BN=2 BCS MP5
BNPL LDN 4 5 [UPDATE LP MODIFIER FOR
BP9= ADS 4 JPMOD ['BREAK IN CHAIN' MESSAGE
BPNW ...MP5 TXU 6 SIX(1) [IF ROW NOT FINISHED
BQ8G BCS MP4 [BRANCH BACK TO GET NEXT BLOCK
BQN6 #
BR7Q # ROW OF BLOCKS FINISHED SO PRINT OUT BLOCKS
BRMB #
BS72 ... STO 6 XBLCOUNT(1) [STORE BLOCK COUNT
BSLL ... STO 6 SKIP(1) [SKIP NOW NONZERO
BT6= ... CALL 7 (JPRINT2) [PRINT HEADING IF ANY
BTKW CALL 7 PRINT
BW5G ... SMO XBLCOUNT(1)
BWK6 ... LDX 2 TAB-1(1) [GET ADDRESS OF
BX4Q ... LDN 6 0 [LAST BLOCK PRINTED
BXJB BRN MP4
BY42 #
BYHL # PRINT OUT BLOCKS AS NEXT ACTIVITY BLOCK OR
B^3= # BREAK IN CHAIN ENCOUNTERED
B^GW #
C22G ...MP1 CALL 7 (JUP)
C2G6 +2
C2^Q ... LDN 5 NAMEC(1) [SET UP IN LP BUFFER
C3FB MVCH 5 15 ['BREAK IN CHAIN' MESSAGE
C3^2 ...MP2 CALL 7 (JPRINT2)
C4DL ... LDX 3 XBLCOUNT(1)
C4Y= ... BZE 3 (JPMSEG) [ J IF NO BLOCKS TO PRINT
C5CW CALL 7 PRINT [PRINT OUT BLOCKS
C5XG ... BRN (JPMSEG)
C6C6 #
C6WQ # ENTRY POINT TO PRINT WHOLE OF ACTIVITY CHAIN IN FULL PM LISTING
C7BB #
C7W2 XK2PMACT
C8*L #
C8T= # PRINT HEADING
C9#W #
C9HJ ... LDX 1 FXPM1
C9Q= ... ADS 1 PMACTEND(1)
C9YY ... ADS 1 PMACTENDA(1)
C=7L ... PMDLGET PMTYPES,,2
C=B# ... STO 2 ZLPMT(1) [STO LPMTYPES
C=K2 ... LDN 6 NAMEE(1)
C=RQ LDX 7 JLPMOD
CB96 MVCH 6 25 [SET UP AND
CBNQ ... CALL 7 (JPRINT2) [PRINT HEADING
CC8B #
CCN2 # GET START ADDR. OF FIRST BLOCK TO BE PRINTED
CD7L #
CDM= LDX 2 FX2
CF6W ... STO 2 START(1) [END OF CHAIN
CG66 PMCORES 2,RB2
CGKQ ... TXL 2 X45(1)
CH5B BCS RB2
CHK2 LDX 3 BPTR(2) [STORE BACKWARD POINTER FOR
CJ4L ... STO 3 XBACKPR(1) [WHEN SEARCH ROUTINES ENTERED
CJJ= BRN R2
CK3W #
CKHG # GET START ADDRS OF BLOCKS TO BE PRINTED AND STORE IN TAB TABLE
CL36 #
CLGQ ...R LDN 3 SEARCH(1)
CM2B ... LDX 7 XIND(1)
CMG2 BZE 7 R1 [J IF FORWARD CHAINING
CM^L ... LDN 3 SEARCHB(1)
CNF= R1 CALL 0 (3) [GET ADDR. OF NEXT BLOCK
CNYW BRN RB [J IF BREAK IN CHAIN
CPDG ... TXU 2 START(1)
CPY6 BCC REND [J IF END OF CHAIN REACHED
CQCQ R2
CQXB ... TXU 2 XBACT(1) [TEST AND FAIL THROUGH
CRC2 BCS R3 [IF ADDR.=BACT
CRNQ ... STO 2 XBASEPR(1) [SET BACT PRINTED IND.
CS2G ...R3 SMO XBLCOUNT(1)
CS#= ... STO 2 TAB(1) [STORE START ADDR. OF BLOCK
CSL2 ... LDX 3 XBLCOUNT(1) [UPDATE BLOCK COUNT
CSXQ ... ADN 3 1
CT9G ... STO 3 XBLCOUNT(1)
CTH= ... TXU 3 SIX(1) [TEST AND FULL THROUGH IF SIX BLOCKS
CTT6 BCS R [SET UP FOR PRINTING
CW#Q #
CWSB # PRINT BLOCKS
CX#2 #
CXRL ...R9 LDX 3 XBLCOUNT(1) [J IF NOTHING TO PRINT
CY?= ... BZE 3 R4
C^Q6 # CODE TO SET UP ROW HEADINGS
D29Q #
D2PB #
D392 ... CALL 7 (JUP)
D3NL +3
D48= ... LDX 5 ROWCNT(1)
D4MW ADN 5 1
D57G ... STO 5 ROWCNT(1)
D5M6 ... CALL 7 (JDECN)
D66Q ... CALL 7 (JUP)
D6LB -8
D762 ... LDN 6 NAMEL(1)
D7KL LDX 7 JPMOD
D85= MVCH 6 4
D8JW ... CALL 7 (JPRINT2)
D9J6 CALL 7 PRINT [PRINT BLOCKS
D=3Q ...R4 LDXC 7 XIND(1)
D=HB BCS R5 [J IF END OF CHAIN
D?32 #
D?GL # PREPARE TO PRINT NEXT ROW
D#2= #
D#FW BZE 7 R7 [J IF FORWARD CHAINING
D#^G SBN 7 1
D*F6 BZE 7 R7 [J IF 'BACKWARD CHAINING' HEADING
D*YQ [PRINTED
DBDB ... STO 7 XIND(1)
DBY2 ... LDN 6 NAMEG(1)
DCCL LDX 7 JOZ
DCX= ADN 7 1
DDBW MVCH 6 17 [SET UP AND
DDWG ... CALL 7 (JPRINT2) [PRINT 'BACKWARD CHAINING'
DFB6 ... STOZ XBLCOUNT(1)
DFTQ ... LDN 3 SEARCHC(1)
DG*B LDX 2 FX2
DGT2 ... LDXC 7 XBASEPR(1)
DH#L BCC R1 [J IF BACK CHAINING FROM FX2
DHS= LDN 2 BACT
DJ?W BRN R1 [J IF BACK CHAINING FROM BACT
DJRG ...R7 SMO XBLCOUNT(1)
DK?6 ... LDX 2 TAB-1(1) [ADDR. OF LAST BLOCK PRINTED
DKQQ ... STOZ XBLCOUNT(1) [BLOCK COUNT
DL=B BRN R
DLQ2 #
DM9L # END OF CHAIN REACHED
DMP= #
DN8W ...R5 LDX 7 XBASEPR(1)
DNNG ... BNZ 7 (JPMSEG) [EXIT IF BACT PRINTED
DP86 #
DPMQ # SET TO PRINT CHAIN FROM BACT
DQ7B #
DQM2 ... CALL 7 (JPRINT2) [THROW A
DR6L ... CALL 7 (JPRINT2) [FEW LINES
DRL= ... LDN 6 NAMEF(1)
DS5W LDX 7 JOZ
DSKG ADN 7 1
DT56 MVCH 6 26 [SET UP AND
DTJQ ... CALL 7 (JPRINT2) [PRINT HEADING
DW4B LDN 2 BACT
DWJ2 ... STO 2 START(1) [END OF CHAIN
DX3L LDCT 7 256
DXH= ... STO 7 XBASEPR(1) [INDICATE PRINTING FROM BASE
DY2W ... STOZ XIND(1)
DYGG ... STOZ XBLCOUNT(1)
D^26 ... LDN 3 SEARCHA(1)
D^FQ BRN R1
D^^B #
F2F2 # IF BREAK IN CHAIN
F2YL #
F3D= ...RB LDX 7 XIND(1)
F3XW BNZ 7 REND [J IF A BREAK HAS ALREADY OCCURED
F4CG LDN 7 2 [SET TO BACKWARD CHAIN AND
F4X6 ...RB1 STO 7 XIND(1) [ALSO PRINT 'BACKWARD CHAINING' HEAD.
F5BQ BRN R9
F5WB #
F6B2 # IF FX2 ILLEGAL
F6TL #
F7*= RB2 LDX 7 JOZ
F7SW ADN 7 1
F8#G ... LDN 6 NAMEH(1)
F8S6 MVCH 6 11
F9?Q ... CALL 7 (JPRINT2) [PRINT 'FX2 INVALID'
F9RB #
F=?2 # TO SET END OF CHAIN IND.
F=QL #
F?== REND LDCT 7 256
F?PW BRN RB1
F#9G #
F#P6 REDTAPE
F#^L ... 8H00000000
F*=6 ... 8HBPTR 3
F*GL ... 8HASIZE 3
F*R6 ... 8HAFLAG 0
FB3L ... 8HATYPE 0
FB#6 ... 8HBACK1 3
FBJL ... 8HBACK2 0
FBT6 ... 8HALOGL 3
FC5L ... 8HARGNO 0
FCB6 ... 4H^^^^
FCLW #
FDL6 #
FF5Q ...ZPMACT
FFKB #
FG52 #END
^^^^ ...14623273000100000000