Show pageBacklinksBack to top This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. {{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]] <code - PMACT867.txt>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 </code> Last modified: 17/01/2024 11:55by 127.0.0.1 Log In