MACINTLUDES
(George Source)
- MACINTLUDES.txt
22FL [ 22^= [ 23DW ...[ THIS MACROS SUBFILE IS OWNED BY MARK DRUKKER 23YG [ 24D6 [ 24XQ [??? RESET SECT DIAG FGN 9 DOC 25CB #SKI 77?>513$513 [GIN 514 AND LATER VERSIONS ONLY 25X2 ( 26BL #MAC RESET [M.C.D. MANN AND J.T. WIFFEN 26W= [ 27*W [ 27TG [ *********** 28*6 [ * RESET * 28SQ [ *********** 29#B [ 29S2 [ 2=?L #ALT %A=%B 2=R= #NOR 2?=W ) 2?QG #SKI 77?<514$514 [GIN 513 AND EARLIER VERSIONS 2#=6 ( 2#PQ #MAC RESET [M.C.D. MANN AND J.T. WIFFEN 2*9B [ 2*P2 [ 2B8L [ *********** 2BN= [ * RESET * 2C7W [ *********** 2CMG [ 2D76 [ 2DLQ [ RESET - THIS MACRO RESETS THE VALUE OF %A TO %B. 2F6B [ 2FL2 [ THIS MACRO CAN ONLY BE USED WITH GIN 513 ONWARDS. 2G5L [ 2GK= [ THIS MACRO WILL SET %A IF IT WAS PREVIOUSLY UNSET, BUT MAY LEAD TO 2H4W [ CURIOUS (THOUGH PREDICTABLE) RESULTS IF %A IS PARTLY SET. 2HJG [ 2J46 [ %A IS THE UNIVERSAL IDENTIFIER TO BE RESET. 2JHQ [ %B IS THE NEW VALUE WHICH %A IS TO ASSUME. IT CAN BE ANY FULLY SET 2K3B [ GIN EXPRESSION. IF %B CONTAINS A FORWARD REFERENCE THE MACRO WILL 2KH2 [ GIVE A [C" ERROR AND %A WILL BE UNCHANGED. 2L2L [ %C CAN BE EITHER PRESENT OR NULL. IF IT IS THERE NO CHECK IS MADE AS 2LG= [ TO WHETHER %A IS ALREADY PARTIALLY SET. IF %C IS MISSING THE MACRO 2L^W [ WILL GIVE A "C" ERROR AND %A WILL REMAIN AS IT WAS. 2MFG [ %D SETS THE INTERNAL LISTING LEVEL OF THE MACRO. IT IS 0 BY DEFAULT. 2M^6 [ 2NDQ #STR %A 2NYB ( 2PD2 #STR %B 2PXL ( 2QC= #DEF 19?+1=1? [SAVE CURRENT LISTING LEVEL. 2QWW #STR %D [SET LISTING LEVEL AS REQUIRED. 2RBG #LIS %D 2RW6 #STR %D 2S*Q #SKI 2STB #LIS 0 2T*2 #STR L,%A [DON'T #OPT L-IDENTIFIER 2TSL ( 2W#= #STR D,%A [NOR D-IDENTIFIER 2WRW #OPT %A=%B [SET IF NOT ALREADY SET. 2X?G ) 2XR6 #DEF 19?+2=33? [CURRENT ERROR COUNT. 2Y=Q #DEF 19?+3=%B [PICK UP VALUE 2YQB #STR %C 2^=2 #SKI 2^PL #DEF 19?+0=%A [CHECK %A FULLY SET 329= #SKI 19?+2]-33? [SKIP IF ERROR COUNT INCREASED. 32NW #SKI 338G ( 33N6 #SKI %B-%A 347Q ( 34MB #DEF 19?+0=3? [SAVE COMPILATION MODE. 3572 #FRL 35LL #ORD 366= #INT 36KW NAME 12H%A 375G SPACE 4H 37K6 X 19?+3] 384Q NTRY STO 0 19?+2 [SAVE THE INTERLUDE LINK. 38JB LDN 6 3 3942 LDN 2 0 39HL NEXT LDX 7 NAME(2) [FIND NO. OF WHOLE WORDS 3=3= BXE 7 SPACE,SPFD [FOR COMPARISON BY "FINDIT". 3=GW ADN 2 1 3?2G '066 6 NEXT [BCT NOT IN #ORD MODE IN GIN503 3?G6 SPFD ANDN 2 #77 3?^Q STO 2 18?+1]+56 3#FB LDN 1 0 3#^2 DCH 2 18?+1]+55(1) [SAVE IN B0-B5 3*DL LDN 0 2 3*Y= STO 0 18?+1]+57 [INDICATES UNIVERSAL FOR SEARCH ROUTI 3BCW #SKI 19?+1]>2$2 [INCLUDE UNLESS OUTSIDE LIST LEVEL<3. 3BXG ( 3CC6 STOZ 18?+1]+25 [SET TO PRINT NEW VALUE. 3CWQ STOZ 18?+1]+26 3DBB STOZ 18?+1]+27 3DW2 ) 3F*L STO 0 18?+1]+32 [LINE DOES NOT GENERATE STORED WORD. 3FT= LDN 0 NAME [SET UP IDENTIFIER NAME WORDS. 3G#W LDN 1 18?+1]+7 3GSG MOVE 0 3 3H#6 CALL 0 18?+2]+1] ["FINDIT" ROUTINE. 3HRQ NULL 3J?B LDX 3 18?+0]+28 [IDENTIFIER'S WORKING SPACE ADDRESS. 3JR2 CALL 0 18?+2]+7] ["FINDW" ROUTINE. 3K=L LDX 7 X [SET NEW VALUE. 3KQ= STO 7 1(3) 3L9W STO 7 18?+1]+59 [SET VALUE FOR CONVERSION ROUTINE. 3LPG CALL 0 18?+2]+16] [PRINT ROUTINE. 3M96 LDX 0 19?+2 3MNQ EXIT 0 0 3N8B #JUM NTRY 3NN2 #SKI 19?+0] [RESET COMPILATION MODE. 3P7L #SKI 3PM= #EXT 3Q6W ) 3QLG ) 3R66 #LIS 19?+1] [RESET LISTING LEVEL. 3RKQ ) 3S5B ) 3SK2 #NOR 3T4L ) 3T4P ...[??? CHECKUNI SECT DIAG FGN 11 DOC 3T4S ...#MAC CHECKUNI [M. DRUKKER 3T4X ...[ 3T52 ...[ 3T55 ...[ ************** 3T58 ...[ * CHECKUNI * 3T5? ...[ ************** 3T5B ...[ 3T5F ...[ 3T5J ...[ CHECKUNI - THIS MACRO CHECKS THE EXISTENCE, SETTING, 3T5M ...[ AND VALUE OF EACH (UNIVERSAL) PARAMETER 3T5Q ...[ 3T5T ...[ THIS MACRO CAN ONLY BE USED WITH GIN 513 ONWARDS. 3T5Y ...[ 3T63 ...[ THIS MACRO WILL NOT CHANGE %A, ETC. 3T66 ...[ NO ERRORS WILL BE MARKED OR LOGGED HOWEVER THE PARAMETERS ARE WRITTEN 3T69 ...[ PARAMETERS ARE TERMINATED BY , OR [ 3T6# ...[ THE MACRO CHECKS WHETHER %A IS (A) UNIVERSAL 3T6C ...[ (B) EXISTS 3T6G ...[ (C) FULLY SET 3T6K ...[ THE FOLLOWING ACTIONS ARE TAKEN: 3T6N ...[ IDENTIFIER = DISPLAY 93? 94? 3T6R ...[ ====================================================================== 3T6W ...[ INCORRECT NAME = INVALID FORMAT 1 1 3T6^ ...[ DOESN'T EXIST = NOT EXISTING 1 2 3T74 ...[ TOTALLY UNSET = UNSET TOTALLY 1 3 3T77 ...[ PARTIALLY SET = PARTIALLY SET 1 4 3T7= ...[ FULLY SET = VALUE IN DECIMAL 0 VALUE IN BINARY 3T7* ...[ ====================================================================== 3T7D ...[ 3T7H ...[ %A,%B,...,%V ARE THE UNIVERSAL IDENTIFIERS TO BE CHECKED. 3T7L ...[ 3T7P ...#DEF 19?+1=1?>19?+1 [SAVE CURRENT OR OUTSIDE LISTNG LEVEL 3T7S ...#LIS 0 3T7X ...#DEF 19?+0=3? [SAVE COMPILATION MODE 3T82 ...#FRL 3T85 ...#ORD 3T88 ...#INT 3T8? ...NAME 16H%A [LEGAL MAX 11 CHARS 3T8B ...SPACE 20H 3T8F ...NUNI 4H: 3T8J ... 16HINVALID FORMAT 3T8M ...NFND 4H: 3T8Q ... 16HNOT EXISTING 3T8T ...UNST 4H: 3T8Y ... 16HPARTIALLY SET 3T93 ...TTUN 4H: 3T96 ... 16HUNSET TOTALLY 3T99 ...VALU 20H= 3T9# ...N12 #12 [: 3T9C ...N20 #20 [SP 3T9G ...N41 #41 [A 3T9K ...N55 #55 [M 3T9N ...N73 #73 [[ 3T9R ...MASK #777777 [B6-23 3T9W ...NTRY STO 0 19?+2 [SAVE THE INTERLUDE LINK 3T9^ ...[ TEST FOR UNIVERSAL 3T=4 ... LDN 5 12 3T=7 ... LDN 3 0 3T== ... LDCH 7 NAME(3) 3T=* ... BXL 7 N41,NTUN [NOT ALPHA START 3T=D ... BXGE 7 N55,NTUN [LOCAL 3T=H ...NXT LDCH 7 NAME(3) 3T=L ... BXL 7 N12,NUMB [NUMBER 3T=P ... BXGE 7 N73,NTUN [NOT ALPHA 3T=S ... BXGE 7 N41,NUMB [ALPHA 3T=X ... BXU 7 N20,NTUN [NOT ALPHA/SPACE 3T?2 ... BRN SPC2 [SPACE TEST 3T?5 ...NUMB BCHX 3 £ [NEXT CHAR 3T?8 ... '066 5 NXT [BCT 3T?? ...[ TEST FOR LENGTH 3T?B ...[ X7 SHLD ALREADY CONTAIN 12TH CHAR 3T?F ... BXU 7 N20,NTUN [TOO LONG 3T?J ... BRN TEXI [NEXT TEST 3T?M ...[ CHECK NO INTERMEDIATE SPACES 3T?Q ...SPC1 LDCH 7 NAME(3) 3T?T ... BXU 7 N20,NTUN [NOT SPACES TO END 3T?Y ...SPC2 BCHX 3 £ [NEXT CHAR 3T#3 ... '066 5 SPC1 [BCT 3T#6 ...[ TEST FOR EXISTENCE 3T#9 ...TEXI LDN 6 3 3T## ... LDN 2 0 3T#C ...NEXT LDX 7 NAME(2) [FIND NO. OF WHOLE WORDS 3T#G ... BXE 7 SPACE,SPFD [FOR COMPARISON BY "FINDIT" 3T#K ... ADN 2 1 3T#N ... '066 6 NEXT [BCT NOT IN #ORD MODE IN GIN503 3T#R ...SPFD ANDN 2 #77 3T#W ... STO 2 18?+1]+56 [:IDENLEN: 3T#^ ... LDN 1 0 3T*4 ... DCH 2 18?+1]+55(1) [:ALENGTH: SAVE IN B0-B5 3T*7 ... LDN 0 2 3T*= ... STO 0 18?+1]+57 [:AUN2: SHOWS UNIVERSAL FOR SEARCH 3T** ... STO 0 18?+1]+32 [:AWORDTYPE: LINE NOT GNRTE STRD WD 3T*D ... LDN 0 NAME [SET UP IDENTIFIER NAME WORDS 3T*H ... LDN 1 18?+1]+7 [:ANAME: 3T*L ... MOVE 0 3 3T*P ... CALL 0 18?+2]+1] [:FINDIT: 3T*S ... BRN NTFD [EXIT 0 => NOT FOUND 3T*X ...[ TEST FOR UNSET [EXIT 1 => FOUND 3TB2 ... LDX 3 18?+0]+28 [:IDENTWSADDR: 3TB5 ... CALL 0 18?+2]+7] [:FINDW: FROM BS 3TB8 ... LDX 4 2(3) [LOOK AT BLOCK 3TB? ... BNG 4 NTSE [TOTALLY UNSET (NOT DEFINED) 3TBB ...[ TEST FOR PARTIALLY SET 3TBF ... LDX 4 3(3) 3TBJ ... ANDX 4 MASK 3TBM ... BNZ 4 NTST [DEFINED WRT UNSETS 3TBQ ...[ WORK OUT VALUE 3TBT ... LDX 5 1(3) [VALUE 3TBY ... STO 5 18?+3]+94 [STORE BINARY IN 94? 3TC3 ... STOZ 18?+3]+93 [SHOW VALUE IN 93? 3TC6 ... LDN 1 VALU+1 3TC9 ... CALL 2 18?+2]+9] [:AL48: CONVERT TO DECIMAL 3TC# ... LDN 5 VALU 3TCC ... BRN PRINT 3TCG ...NTUN LDN 5 NUNI [NOT UNIVERSAL 3TCK ... LDN 7 1 3TCN ... BRN PRNT 3TCR ...NTFD LDN 5 NFND [DOES NOT EXIST 3TCW ... LDN 7 2 3TC^ ... BRN PRNT 3TD4 ...NTSE LDN 5 TTUN [TOTALLY UNSET 3TD7 ... LDN 7 3 3TD= ... BRN PRNT 3TD* ...NTST LDN 5 UNST [NOT FULLY SET 3TDD ... LDN 7 4 3TDH ...[ NOW PRINT REPLY 3TDL ...PRNT LDN 6 1 3TDP ... STO 6 18?+3]+93 [SET 93? FOR ERROR 3TDS ... STO 7 18?+3]+94 [SET 94? BITS 3TDX ...PRINT LDN 6 SPACE 3TF2 ... LDX 7 SPACE 3TF5 ... MOVE 5 5 3TF8 ... CALL 5 18?+2]+20] [:BUFLPSW: 3TF? ... LDX 3 18?+1]+62 [:CURPRIBUF: 3TFB ... LDN 4 1(3) 3TFF ... STO 7 0(3) 3TFJ ... MOVE 3 29 [SPACEFILL BUFFER 3TFM ... LDN 2 NAME 3TFQ ... MOVE 2 9 3TFT ... CALL 3 18?+2]+19] [:APLINE: PRINT MESSAGE 3TFY ... LDX 0 19?+2 3TG3 ... EXIT 0 0 3TG6 ...#JUM NTRY 3TGC ...#SKI 19?+0] [RESET COMPILATION MODE. 3TGG ...#SKI 3TGK ...#EXT 3TGN ...#LIS 19?+1] [RESET LISTING LEVEL. 3TGP ...#STR %B%C%D%E%F%G%H%I%J%K%L%M%N%O%P%Q%R%S%T%U%V 3TGQ ... CHECKUNI %B,%C,%D,%E,%F,%G,%H,%I,%J,%K,%L,%M,%N,%O,%P,%Q,%R,%S,%T,%U,%V 3TGR ...#NOR 3TJ= [??? PRINTSEG SECT DIAG FGN 9 DOC 3W3W #MAC PRINTSEG [M.C.D. MANN AND J.T. WIFFEN 3WHG [ 3X36 [ 3XGQ [ ************** 3Y2B [ * PRINTSEG * 3YG2 [ ************** 3Y^L [ 3^F= [ 3^YW [ THE PARAMETERS OF THE MACRO PRINTSEG ARE - 42DG [ 42Y6 [ %A - THE SEGMENT NAME 43CQ [ 43XB [ %B - THE SEGMENT VERSION NO. - OPTIONAL 44C2 [ 44WL [ %C - THE LISTING LEVEL FOR THE INTERLUDE COMPILATION 45B= [ 45TW [ DEPENDENCIES - THE COMPILER VARIABLES - COMPILER SUBROUTINES 46*G [ AND CERTAIN GEORGE UNIVERSALS WHEN PRINTING GEORGE 46T6 [ SEGMENTS 47#Q [ 47SB #DEF 19?+7=1? 48#2 #STR %C 48RL #LIS %C 49?= #STR %C 49QW #STR 4==G #LIS 0 4=Q6 #DEF 19?+0=18?+1]+20] 4?9Q #DEF 19?+1=18?+1]+21] 4?PB #DEF 19?+4=37? 4#92 #DEF 19?+6=18?+1]+2] 4#NL #DEF 19?+8=3? 4*8= #FRL 4*MW #DEF MINBUFF=18?+1]+33] [INBUFF ADDRESS IS 18?+1]+33] 4B7G #ORD 4BM6 #INT 4C6Q [ MOVE INTERLUDE 640 WORDS DOWN 4CLB START CALL 2 SKIPDATA 4D62 SKIPDATA 4DKL STO 0 X0SAVE 4F5= LDN 3 639(2) 4FJW SBN 2 1 4G4G MOVE 2 0 4GJ6 BRN NEXT+640 [ENTER MAIN CODE 4H3Q [ GENERAL DATA CONSTANTS 4HHB PRINTHDR 8HSEGMENT 4J32 PRNAME 8H%A 4JGL 4H%B 4K2= 8H D.ADDR 4KFW 8H 4K^G 8H LENGTH 4LF6 4H 4LYQ PRINTGEORGE 12HG3MARK [MUST EXIST AS IDENTIFIER IF GEORGE 4MDB X0SAVE +0 4MY2 PRADSAVE +D%A 4NCL PRLGSAVE +L%A 4NX= SEGMAX +513 [CAN'T DO MORE THAN HALF AT A TIME 4PBW SEGBUF +0 [ADDRESS OF SEGMENT BUFFER 4PWG SEGCUR +0 [CURRENT POSITION IN SEGMENT 4QB6 SPACES #20202020 4QTQ PRINTGSW +0 [SWITCH FOR CHECKING GEORGE MNEMONICS 4R*B SAVREL +0 [SAVED RELATIVISOR 4RT2 STRUCTTYPE +0 [INSTRUCTION TYPE 4S#L SAVFUNCT +0 [FOR SAVING THE FUNCTION NO. 4SS= SAVACCU +0 [SAVE ACCUMULATOR IN CASE BRANCH 4T?W SAVEX +0 [CHARACTER MODIFIER SAVE 4TRG REPLADDR +0 [FOR SAVING MASKED CALL ADDRESS 4W?6 POSSDATA 12HPOSS. DATA [LDXC TYPE ORDERS, OR FLOATING POINT 4WQQ SPECBRNCH #03601200 4X=B SUGGESTD #00000046 [F IN FUNCTION IS POSS. DATA 4XQ2 #00000043 [C AT END IS POSS. DATA 4Y9L REPLMASK #00017777 [FOR MASKING REPLACE CALLS 4YP= NEGFORCE #77740000 4^8W STRISK 4H *+ 4^NG NORMI 4HNORM 5286 MODIFS 4H (0) 52MQ TIXE #35 537B [ VARIOUS MNEMONICS 53M2 RANCHDATA 546L 4HBRN 54L= 4HBVS 555W 4HBVSR 55KG 4HBVC 5656 4HBVCR 56JQ 4HBCS 574B 4HBCC 57J2 4HBVCI 583L THEGEO 4HGEO 58H= THISBY 4HISBY 592W THEGERR 4HGERR 59GG #177 5=26 #153 5=FQ #150 5=^B STRUCTS 5?F2 4HLDX 5?YL 4HADX 5#D= 4HNGX 5#XW 4HSBX 5*CG 4HLDXC 5*X6 4HADXC 5BBQ 4HNGXC 5BWB 4HSBXC 5CB2 4HSTO 5CTL 4HADS 5D*= 4HNGS 5DSW 4HSBS 5F#G 4HSTOC 5FS6 4HADSC 5G?Q 4HNGSC 5GRB 4HSBSC 5H?2 4HANDX 5HQL 4HORX 5J== 4HERX 5JPW 4HOBEY 5K9G 4HLDCH 5KP6 4HLDEX 5L8Q 4HTXU 5LNB 4HTXL 5M82 4HANDS 5MML 4HORS 5N7= 4HERS 5NLW 4HSTOZ 5P6G 4HDCH 5PL6 4HDEX 5Q5Q 4HDSA 5QKB 4HDLA 5R52 4HMPY 5RJL 4HMPR 5S4= 4HMPA 5SHW 4HCDB 5T3G 4HDVD 5TH6 4HDVR 5W2Q 4HDVS 5WGB 4HCBD 5X22 4HBZE 5XFL 4HRRRR 5X^= 4HBNZ 5YDW 4HRRRR 5YYG 4HBPZ 5^D6 4HRRRR 5^XQ 4HBNG 62CB 4HRRRR 62X2 4HBUX 63BL 4HRRRR 63W= 4HBDX 64*W 4HRRRR 64TG 4HBCHX 65*6 4HRRRR 65SQ 4HBCT 66#B 4HRRRR 66S2 4HCALL 67?L 4HRRRR 67R= 4HEXIT 68=W 4HRRRR 68QG +RANCHES 69=6 4HRRRR 69PQ 4HBFP 6=9B 4HRRRR 6=P2 4HLDN 6?8L 4HADN 6?N= 4HNGN 6#7W 4HSBN 6#MG 4HLDNC 6*76 4HADNC 6*LQ 4HNGNC 6B6B 4HSBNC 6BL2 +SHIFTS 6C5L +SHIFTS 6CK= +SHIFTS 6D4W +SHIFTS 6DJG +NORM 6F46 +NORM 6FHQ 4HMVCH 6G3B 4HSMO 6GH2 4HANDN 6H2L 4HORN 6HG= 4HERN 6H^W 4HNULL 6JFG 4HLDCT 6J^6 4HMODE 6KDQ 4HMOVE 6KYB 4HSUM 6LD2 4HFLOA 6LXL 4HFIX 6MC= 4HFAD 6MWW 4HFSB 6NBG 4HFMPY 6NW6 4HFDVD 6P*Q 4HLFP 6PTB 4HSFP 6Q*2 4H???? 6QSL 4H???? 6R#= 4H???? 6RRW 4H???? 6S?G 4H???? 6SR6 4H???? 6T=Q 4H???? 6TQB 4H???? 6W=2 4HSUSB 6WPL 4HREL 6X9= 4HDIS 6XNW 4H???? 6Y8G 4HCONT 6YN6 4HSUSD 6^7Q 4HALLO 6^MB 4HPERI 7272 +SUSTYS 72LL +SUSWTS 736= 4HSUSM 73KW 4HAUTO 745G 4HSUSA 74K6 4HGIVE 754Q 4HRRQ 75JB 4H???? 7642 4H???? 76HL 4H???? 773= 4H???? 77GW 4H???? 782G 4H???? 78G6 4H???? 78^Q 4H???? 79FB 4H???? 79^2 [ END OF MAIN INSTRUCTION TABLE 7=DL SHIFTY [SHIFT INSTRUCTIONS 7=Y= 4HSLC 7?CW 4HSLL 7?XG 4HSLA 7#C6 4HSLA 7#WQ 4HSRC 7*BB 4HSRL 7*W2 4HSRA 7B*L 4HSRAV 7BT= SUST 7C#W 4HSUST 7CSG 4HDIST 7D#6 4HDELT 7DRQ SUSW 7F?B 4HSUSW 7FR2 4HDISP 7G=L 4HDEL 7GQ= RJUMPSGEO 7H9W +CHAPK [ACROSS OR ACCROSSVAR 7HPG +CHAPDOWNK [DOWN 7J96 +GCORE [CORE OF SOME KIND 7JNQ +JTRACE [TRACE 7K8B +0 7KN2 MNEMGEO 7L7L 4HACRO 7LM= 4HDOWN 7M6W 4HCORE 7MLG 4HTRAC 7N66 #DEF POUND=MNEMGEO-RJUMPSGEO 7NKQ #DEF TRUESAVE=MINBUFF+3-640 7P5B #DEF QUESTMK=STRUCTS+#140 7PK2 #DEF RRRR=STRUCTS+#71 7Q4L #DEF ORGCALL=RRRR-1 7QJ= #DEF RIGHTJUST=STRUCTS 7R3W [ SPECIAL GEORGE MACROS OR EXTRACODES 7RHG QSPECIAL 7S36 LDX 4 TRUESAVE+640 [INSERT PROPER INST 7SGQ TXU 4 ORGCALL+640 7T2B BCC PRAPSCALL+640 7TG2 LDN 7 3 7T^L LDN 3 THEGEO+640 7WF= POOL LDX 4 0(3) 7WYW LDX 6 3(3) 7XDG TXU 6 SAVFUNCT+640 7XY6 BCC RESET+640 7YCQ ADN 3 1 7YXB '066 7 POOL+640 [[BCT NOT IN #ORD MODE IN GIN503 7^C2 BRN NOTGEORGE+640 7^WL PRAPSCALL 82B= LDN 6 #071 [CHECK REPGACED CALL 82TW TXU 6 SAVFUNCT+640 83*G BCS NOTGEORGE+640 83T6 LDX 4 18?+1]+54 [CHECK GEORGE CALLS 84#Q ANDX 4 REPLMASK+640 84SB STO 4 REPLADDR+640 85#2 LDN 3 RJUMPSGEO+640 85RL TRYNXTGEO 86?= LDX 4 0(3) 86QW BZE 4 NOTGEORGE+640 87=G TXU 4 REPLADDR+640 87Q6 BCC REPMAC+640 889Q ADN 3 1 88PB BRN TRYNXTGEO+640 8992 REPMAC 89NL ADN 3 POUND 8=8= LDX 4 0(3) 8=MW RESET 8?7G STO 4 TRUESAVE+640 8?M6 BRN MOVEON+640 8#6Q [ HANDLE SHIFT INSTRUCTIONS 8#LB SHIFTS 8*62 LDX 4 SAVFUNCT+640 8*KL ANDN 4 #1 8B5= BZE 4 NOTDOUBLE+640 8BJW LDX 4 SAVACCU+640 8C4G LDX 3 SAVEX+640 8CJ6 BCHX 3 XHCB1+640 8D3Q XHCB1 8DHB ADN 4 1 8F32 ANDN 4 #7 8FGL DCH 4 4(3) 8G2= NOTDOUBLE 8GFW LDX 4 SAVFUNCT+640 8G^G ANDN 4 2 8HF6 SLL 4 1 8HYQ ADN 4 SHIFTY+640 8JDB LDX 3 18?+1]+54 [GET STORED WORD 8JY2 SRL 3 10 8KCL ANDN 3 #3 8KX= ADX 3 4 8LBW LDX 4 0(3) 8LWG BRN RESET+640 8MB6 [ HANDLE NORM INSTRUCTIONS 8MTQ NORM 8N*B LDX 4 SAVFUNCT+640 8NT2 ANDN 4 #1 8P#L BZE 4 NORM2+640 8PS= LDX 4 SAVACCU+640 8Q?W ADN 4 1 8QRG ANDN 4 #7 8R?6 LDX 3 SAVEX+640 8RQQ BCHX 3 XHCB1A+640 8S=B XHCB1A 8SQ2 DCH 4 4(3) 8T9L NORM2 8TP= LDX 4 NORMI+640 8W8W STO 4 TRUESAVE+640 8WNG BRN POSSD+640 8X86 [ SUSTY, DISTY,DELTY 8XMQ SUSTYS 8Y7B LDX 3 SAVACCU+640 8YM2 ADN 3 SUST+640 8^6L LDX 4 0(3) 8^L= BRN RESET+640 925W [ SUSWT, DISP, DEL 92KG SUSWTS 9356 LDX 3 SAVACCU+640 93JQ ADN 3 SUSW+640 944B LDX 4 0(3) 94J2 BRN RESET+640 953L [ FOR MARKING POSSIBLE DATA - FLOATING POINT, NORMALISE, LDXC ETC. 95H= [ ALSO LDX AND SUBPROGRAMMING INSTRUCTIONS 962W POSSD 96GG LDN 2 POSSDATA+640 [SHOW INST. AS POSSIBLE DATA 9726 LDN 3 MINBUFF 97FQ MOVE 2 3 97^B BRN MOVEON+640 [BACK INTO REGULAR CODE 98F2 [ GENERATES IDENTIFIER LENGTH FOR FINDIT ROUTINE 98YL Z0X LDN 5 12 99D= LDN 3 0 99XW Z0Y LDCH 7 18?+1]+7(3) 9=CG SBN 7 #20 9=X6 BZE 7 Z0Z+640 9?BQ BCHX 3 Z0RSD+640 9?WB Z0RSD '066 5 Z0Y+640 9#B2 Z0Z SLC 3 3 9#TL ADN 3 #6 9**= ANDN 3 #30 9*SW LDCT 6 0(3) 9B#G STO 6 18?+1]+55 [SAVE ROUNDED LENGTH IN B0-B5 9BS6 SRL 3 3 9C?Q STO 3 18?+1]+56 [SAVE ROUNDED LENGTH IN B0-B23 9CRB EXIT 4 0 9D?2 [ HANDLES BRANCH INSTRUCTIONS 9DQL RANCHES 9F== LDN 4 #20 9FPW LDX 3 SAVEX+640 9G9G DCH 4 4(3) 9GP6 LDN 2 RANCHDATA+640 9H8Q ADX 2 SAVACCU+640 9HNB LDX 4 0(2) 9J82 BRN RESET+640 9JML [ ENTRY POINT AFTER MOVING INTERLUDE DOWN 9K7= NEXT 9KLW [ RESET MODE 9L6G LDX 3 19?+8 [RESTORE REMEMBERED DEVICE TYPE 9LL6 STO 3 18?+3]+3 9M5Q LDN 3 3 [SIMULATE CARD READER IMAGE 9MKB STO 3 18?+1]+2 9N52 NGN 4 1 9NJL STO 4 18?+1]+20 9P4= STOZ 18?+1]+21 9PHW [ SET SEGMENT NAME UP FOR SEARCH 9Q3G LDN 2 PRNAME+640 9QH6 LDN 3 18?+1]+4 9R2Q MOVE 2 3 9RGB [ SET UP SEGMENT NAME IN THE HEADER LINE AND VERSION NO. 9S22 LDN 3 18?+3]+64 [ADDRESS OF SEGMENT NAME 9SFL MOVE 2 3 9S^= [ SEARCH SEGMENT CHAIN 9TDW LDN 1 0 9TYG CALL 0 18?+2]+0] 9WD6 BRN NOTFOUND+640 9WXQ [ SAVE RELATIVISOR 9XCB LDX 4 4(2) 9XX2 STO 4 SAVREL+640 9YBL LDN 2 PRINTGEORGE+640 [LOOK FOR GEORGE SIGN 9YW= LDN 3 18?+1]+7 [ADDRESS OF NAME FOR IDENTIFIER SEARCH 9^*W MOVE 2 3 9^TG STO 3 18?+1]+57 [INDICATE UNIVERSAL =2*6 CALL 4 Z0X+640 =2SQ LDN 5 0 [ASSUME GEORGE =3#B CALL 0 18?+2]+1] [FINDIT SUBROUTINE =3S2 LDN 5 1 [NOT FOUND SO NOT GEORGE =4?L LDX 4 2(3) =4R= ANDX 4 18?+4]+23 =5=W BZE 4 OKGEORGE+640 =5QG LDN 5 1 [POSS. 2 PRINTS FROM NON-GEORGE PROGRAM =6=6 OKGEORGE =6PQ STO 5 PRINTGSW+640 [SAVE FOR LATER CHECK =79B CALL 3 18?+2]+5] =7P2 LDN 1 PRINTHDR+647 [SET UP HEADER LINE =88L LDX 5 PRADSAVE+640 =8N= CALL 2 18?+2]+9] =97W LDN 1 PRINTHDR+651 =9MG LDX 5 PRLGSAVE+640 ==76 CALL 2 18?+2]+9] ==LQ CALL 5 18?+2]+20] =?6B LDN 2 PRINTHDR+640 =?L2 LDX 3 18?+1]+62 =#5L MOVE 2 12 =#K= CALL 3 18?+2]+19] =*4W CALL 3 18?+2]+10] [PRINT BLANKLINE =*JG [ CHECK ZERO LENGTH =B46 LDX 2 PRLGSAVE+640 =BHQ BZE 2 ZEROLEN+640 =C3B [ RESET 0? =CH2 LDN 5 1 =D2L DLA 5 18?+3]+0 [KEEP BIT 0 =DG= [ INITIALISE FOR READ =D^W SECONDPASS =FFG LDN 5 34? =F^6 STO 5 SEGBUF+640 =GDQ LDX 6 PRADSAVE+640 =GYB [ CHECK LENGTH =HD2 LDX 2 PRLGSAVE+640 [GET LENGTH =HXL TXL 2 SEGMAX+640 =JC= BCS Z2A+640 =JWW LDN 2 512 [MUST DO IT IN 2 HALVES =KBG Z2A =KW6 STO 2 SEGCUR+640 [SAVE FIRST PASS LENGTH =L*Q SBS 2 PRLGSAVE+640 [DECREMENT LENGTH TO GO =LTB ADS 2 PRADSAVE+640 [INCREMENT DRUM ADDRESS =M*2 CALL 0 18?+2]+2] =MSL BRN Z1A+640 =N#= [ ROUND AS NECESSARY =NRW LDN 7 127 =P?G ANDX 7 6 =PR6 BZE 7 Z1A+640 =Q=Q ADS 7 SEGBUF+640 =QQB LDX 0 18?+3]+11 [IF 5? DIFFERS FROM 11? THE COMP IS =R=2 TXU 0 18?+3]+5 [ON DRUM SIMULATING DA =RPL BCC PRIN1+640 [IF REAL DA INCREASE READ LENDGTH =S9= ADX 5 7 [IF SIMULATED INCREASE CORE ADDRESS =SNW BRN Z1A+640 =T8G PRIN1 =TN6 ADX 2 7 =W7Q Z1A =WMB [ READ SEGMENT DOWN OR PART OF IT =X72 CALL 0 18?+2]+3] =XLL LDX 5 SAVREL+640 =Y6= [ RESET RELATIVISOR =YKW STO 5 18?+3]+37 =^5G [ RESET WORD TYPE =^K6 STOZ 18?+1]+32 ?24Q [ FETCH FIRST WRD ?2JB Z1 LDX 3 SEGBUF+640 ?342 LDX 3 0(3) ?3HL [ AND SAVE IT ?43= STO 3 18?+1]+54 ?4GW CALL 6 18?+2]+8] [FIND FUNCTION TYPE ?52G [ ZERO IF NORMAL. NEGATIVE IF SHIFT. PSITIVE NON-ZERO IF BRANCH ?5G6 [ SAVE FUNCTION TYPE ?5^Q STO 7 STRUCTTYPE+640 ?6FB [ SET IMAGE SIZE ?6^2 LDN 4 18 ?7DL STO 4 18?+1]+25 ?7Y= [ AND CLEAR CARD LINE ?8CW LDX 6 SPACES+640 ?8XG STO 6 MINBUFF [SPACEFILL ?9C6 LDN 2 MINBUFF ?9WQ LDN 3 MINBUFF+1 ?=BB MOVE 2 17 ?=W2 [ DUMP ACCUMULATOR IN LINE ??*L LDCT 3 256 ??T= ORN 3 MINBUFF ?##W LDN 2 STRUCTS+640 ?#SG LDX 5 18?+1]+54 ?*#6 LDN 4 0 ?*RQ SLL 45 3 ?B?B DCH 4 4(3) ?BR2 STO 4 SAVACCU+640 [SAVE ACCUMULATOR ?C=L STO 3 SAVEX+640 [SAVE IN CASE OF DOUBLE SHIFT ?CQ= SRL 5 17 ?D9W STO 5 SAVFUNCT+640 [SAVE OCTAL FUNOTFON ?DPG ADX 2 5 ?F96 LDX 4 0(2) ?FNQ STO 4 TRUESAVE+640 ?G8B RETEST ?GN2 BNG 4 NOTSPECIAL+640 ?H7L TXU 4 QUESTMK+640 ?HM= BCC TRUEMNEM+640 ?J6W ADN 4 #1200 ?JLG DLA 4 SPECBRNCH+640 ?K66 BRN SPECBRNCH+640 [GO AND DEAL WITH IT ?KKQ NOTSPECIAL ?L5B TXU 4 RRRR+640 [IS IT A REPLACER ?LK2 BCS TRUEMNEM+640 [WE HAVE TRUE MNEMONIC ?M4L SBN 2 1 [BACK OFF ONE ?MJ= LDX 4 0(2) ?N3W BRN RETEST+640 ?NHG TRUEMNEM ?P36 STO 4 TRUESAVE+640 [SAVE FINAL OUTPUT MNEMONIC ?PGQ LDX 4 PRINTGSW+640 [CHECK IF COMP IS GEORGE ?Q2B [ COMPILATION IS GEORGE IF G3MARK IS AN IDENTIFIER ?QG2 BZE 4 QSPECIAL+640 ?Q^L NOTGEORGE ?RF= LDN 3 0 [CLEAR MODIFIER ?RYW LDCH 6 TRUESAVE+640(3) ?SDG TXU 6 SUGGESTD+640 ?SY6 BCC POSSD+640 ?TCQ SBN 6 #17 ?TXB BZE 6 POSSD+640 ?WC2 BCHX 3 XHCB2+640 ?WWL XHCB2 ?XB= LDCH 6 TRUESAVE+640(3) ?XTW TXU 6 SUGGESTD+640 ?Y*G BCC POSSD+640 ?YT6 BCHX 3 XHCB3+640 ?^#Q XHCB3 ?^SB BCHX 3 XHCB4+640 #2#2 XHCB4 #2RL LDCH 6 TRUESAVE+640(3) #3?= TXU 6 SUGGESTD+641 #3QW BCC POSSD+640 #4=G LDX 6 TRUESAVE+640 #4Q6 TXU 6 RIGHTJUST+640 #59Q BCC POSSD+640 #5PB LDX 6 SAVFUNCT+640 #692 SBN 6 #162 #6NL BNG 6 MOVEON+640 #78= SBN 6 #3 #7MW BNG 6 POSSD+640 #87G [ FINISH LINE #8M6 MOVEON #96Q LDN 1 MINBUFF+6 #9LB LDX 7 STRUCTTYPE+640 #=62 LDX 5 18?+1]+54 [GET STORED WORD #=KL BZE 7 PRI16+640 [NON-BRANCH #?5= BNG 7 PRI16A+640 [IT'S A SHIFT #?JW SLL 5 3 [RID OF X ##4G LDN 4 0 ##J6 SLL 45 6 #*3Q TXU 4 TIXE+640 [IS IT AN EXIT #*HB BCC PRI17+640 #B32 LDX 6 18?+3]+3 [FIND CURRENT MODE #BGL BNZ 6 PRI17+640 #C2= [ EXTENDED MODE AND MAY BE GEORGE #CFW BNG 5 PRI18+640 #C^G [ NOT A REPLACED JUMP #DF6 SLL 5 1 #DYQ LDX 6 STRISK+640 #FDB STO 6 MINBUFF+5 #FY2 BPZ 5 PRI19+640 #GCL [ NEGATIVE RELATIVE #GX= SRL 5 10 #HBW ORX 5 NEGFORCE+640 #HWG NGX 5 5 #JB6 LDN 6 #200 [CHANGE + TO - #JTQ ADS 6 MINBUFF+5 #K*B BRN PRI20+640 #KT2 PRI19 #L#L SRL 5 10 #LS= BRN PRI20+640 #M?W PRI16 #MRG ANDN 5 #7777 #N?6 BRN PRI16B+640 #NQQ PRI16A #P=B ANDN 5 #1777 #PQ2 PRI16B #Q9L [ GET MODIFIER #QP= LDX 6 18?+1]+54 #R8W SRL 6 12 #RNG ANDN 6 #3 #S86 BZE 6 PRI20+640 #SMQ SLL 6 6 #T7B ORX 6 MODIFS+640 #TM2 STO 6 MINBUFF+8 #W6L BRN PRI20+640 #WL= PRI17 #X5W SRL 5 9 #XKG BRN PRI20+640 #Y56 PRI18 #YJQ ADN 1 2 #^4B SLL 5 1 #^J2 SRL 5 10 *23L LDX 6 SPACES+640 *2H= ADN 6 #10 *32W STO 6 MINBUFF+7 *3GG ADN 6 #1 *426 SRC 6 12 *4FQ STO 6 MINBUFF+9 *4^B PRI20 *5F2 CALL 2 18?+2]+9] *5YL STOZ 18?+1]+26 [FORCE PRINT *6D= STOZ 18?+1]+27 *6XW [ FORCE PRINT *7CG CALL 4 18?+2]+4] *7X6 [ UPDATE POSITION *8BQ LDN 3 1 *8WB ADS 3 18?+3]+0 *9B2 ADS 3 SEGBUF+640 *9TL ADS 3 18?+1]+21 [INCREMENT LINE NUMBER *=*= SBS 3 SEGCUR+640 *=SW LDX 3 SEGCUR+640 *?#G BNZ 3 Z1+640 *?S6 LDX 2 PRLGSAVE+640 [GET LENGTH TO GO *#?Q BNZ 2 SECONDPASS+640 [GO ROUND ONCE MORE TO COMPLETE *#RB ZEROLEN **?2 NOTFOUND **QL LDN 3 19?+0 [RESET LINE NUMBERS AS BEFORE *B== LDN 4 18?+1]+20 *BPW MOVE 3 2 *C9G [ RESET INPUT TYPE *CP6 LDX 3 19?+6 *D8Q STO 3 18?+1]+2 *DNB [ RESET 0? *F82 LDX 0 X0SAVE+640 *FML EXIT 0 0 *G7= #SKI 77?>512$512 [SKIP IF BEFORE GIN513 *GLW #DEF 18?+1]+31=1 [LIST AS IF NOT MACRO *H6G #JUM START *HL6 #SKI 77?>512$512 [SKIP IF BEFORE GIN513 *J5Q #DEF 18?+1]+31=0 [LIST AS MACRO *JKB #FRL *K52 #DEF 0?=0 *KJL #DEF 37?=19?+4] *L4= #DEF 3?=19?+8] *LHW #SKI 19?+8]-2 *M3G ( *MH6 #SKI 19?+8]-1 *N2Q #EXT *NGB #SKI 19?+8] *P22 #COM *PFL ) *P^= #LIS 19?+7] *QDW #NOR *QYG [??? NEWSEG SECT DIAG FGN 9 DOC *RD6 #MAC NEWSEG [M.C.D. MANN AND J.T. WIFFEN *RXQ [ *SCB [ *SX2 [ ************ *TBL [ * NEWSEG * *TW= [ ************ *W*W [ *WTG [ *X*6 #STR %A [NULL IF %A MISSING *XSQ #NEW %A%B *Y#B #NOR *YS2 [??? LOSEMACR SECT DIAG FGN 9 DOC *^?L #MAC LOSEMACRO [M.C.D. MANN AND J.T. WIFFEN *^R= [ B2=W [ B2QG [ *************** B3=6 [ * LOSEMACRO * B3PQ [ *************** B49B [ B4P2 [ B58L [ LOSEMACRO - THIS MACRO CAUSES GIN TO FORGET THE EXISTENCE OF THE MACRO B5N= [ CALLED %A, SO THAT ANOTHER MACRO OF THE SAME NAME MAY BE COMPILED IN B67W [ ITS STEAD. B6MG [ %A MACRO NAME B776 [ %B LISTING LEVEL (OPTIONAL) B7LQ [ B86B #STR %A B8L2 ( B95L #DEF 19?+1=1? B9K= #STR %B B=4W #LIS %B B=JG #STR %B B?46 #SKI B?HQ #LIS 0 B#3B #FRL B#H2 #INT B*2L #ORD B*G= NAME 12H%A [NAME OF MACRO B*^W SAVE +0 [LINS OF INTERLMDE BBFG PREVIOUS +0 [WORKFILE ADDRESS OF PRECEDING MACRO BB^6 NTRY LDX 5 NAME BCDQ LDX 6 NAME+1 BCYB STO 0 SAVE [SAVE LINK BDD2 STO 5 4 BDXL ERS 6 4 [RANDOMISE BFC= LDX 3 18?+4]+0 [NUMBER OF CHAINS BFWW DVS 3 3 BGBG ADX 3 18?+4]+16 [GET CHAIN BASE BGW6 STO 3 NAME [SAVE IN CASE WE WANT FIRST MACRO BH*Q LDX 3 0(3) BHTB BZE 3 TIXE BJ*2 SERCH STO 3 NAME+1 BJSL CALL 0 18?+2]+6] [LOOK UP MACRO ENTRY BK#= TXU 5 2(3) [COMPARE MACRO NAMES BKRW TXU 6 3(3) BL?G BCC YES [FOUND IT BLR6 LDX 0 NAME+1 [KEEP WORKFILE ADDRESS OF PREV MACRO BM=Q STO 0 PREVIOUS BMQB LDX 3 1(3) [GET OFRWARD POINTER BN=2 BNZ 3 SERCH [TRY NEXT IF ANY BNPL TIXE LDX 0 SAVE [EXIT BP9= EXIT 0 0 BPNW YES LDX 5 1(3) [FORWARD POINTER FROM THIS MACRO BQ8G LDX 3 PREVIOUS [WORKFILE ADDRESS OF THE ONE IN FRONT BQN6 BZE 3 NOPRV [J IF FIRST ON CHAIN BR7Q CALL 0 18?+2]+7] [LOOK UP PREVIOUS BRMB STO 5 1(3) [FORGET MACRO BS72 BRN TIXE BSLL NOPRV LDX 3 NAME BT6= STO 5 0(3) [STORE IN CHAIN BASE BTKW BRN TIXE BW5G #JUM NTRY BWK6 #EXT BX4Q #LIS 19?+1] BXJB ) BY42 #NOR BYHL [??? PRINTMAC SECT DIAG FGN 9 DOC B^3= #MAC PRINTMAC [M.C.D. MANN AND J.T. WIFFEN B^GW [ C22G [ C2G6 [ ************** C2^Q [ * PRINTMAC * C3FB [ ************** C3^2 [ C4DL [ C4Y= [ PRINTMAC - PRINT THE SOURCE OF A MACRO AS KNOWN TO GIN. C5CW [ %A MACRO NAME C5XG [ %B LISTING LEVEL (OPTIONAL) C6C6 [ C6WQ #DEF 20?=1? C7BB #STR %B C7W2 #LIS %B C8*L #STR %B C8T= #SKI C9#W #LIS 0 C9SG #INT C=#6 #ORD C=RQ ZLINC +0 C??B WORK +0 C?R2 SQ #73 C#=L NAME 8H%A C#Q= SPACE #20202020,20HNO SUCH MACRO KNOWN C*9W START STO 0 ZLINC C*PG LDX 3 18?+4] [2165: AMACCHAIN CB96 LDX 5 NAME CBNQ LDX 6 NAME+1 CC8B CALL 2 18?+2]+11] CCN2 BRN PMC4 [EXIT 0 IF NOT FOUND CD7L PMC6 LDX 3 0(3) CDM= BZE 3 PMC7 [J IF END OF MACRO CF6W CALL 0 18?+2]+6] [FIND CFLG STO 3 WORK CG66 CALL 5 18?+2]+20] [BUFLPSW CGKQ LDX 6 SPACE CH5B LDX 3 18?+1]+62 [CURPRIBUF - ADDRESS OF O/P BUFFER CHK2 STO 6 0(3) CJ4L LDN 4 1(3) CJJ= MOVE 3 29 CK3W LDX 2 WORK CKHG ADX 2 35?+6 [ENTMACIMG CL36 PMC8 LDCH 0 0(2) CLGQ TXU 0 SQ [END OF LINE? CM2B BCC PMC9 CMG2 DCH 0 0(3) [ TRANSFER MACROS LINE TO BUFFER CM^L BCHX 2 £ CNF= BCHX 3 £ [WRITTEN THIS WAY RO WORK IN ANY MODE CNYW BRN PMC8 CPDG PMC9 CALL 3 18?+2]+19] [APLINE: PRINTS LINE CPY6 LDX 3 WORK CQCQ BRN PMC6 CQXB PMC7 CALL 3 18?+2]+10] [BLINE PRINTS BLANK LINE CRC2 PMC1 LDX 0 ZLINC CRWL EXIT 0 0 CSB= PMC4 CALL 5 18?+2]+20] CSTW LDX 6 SPACE CT*G LDX 3 18?+1]+62 [ADDRESS OF OUTPUT BUFFER CTT6 LDN 4 1(3) CW#Q STO 6 0(3) CWSB MOVE 3 29 CX#2 LDN 2 SPACE CXRL MOVE 2 6 CY?= CALL 3 18?+2]+19] [PRINT 'NO SUCH MACRO' MESSAGE CYQW BRN PMC1 C^=G #EXT C^Q6 #JUM START D29Q #LIS 20? D2PB #NOR D392 [??? SEGINDEX SECT DIAG FGN 9 DOC D3NL #SKI 35?+0]>5$5 D48= ( D4MW #MAC SEGINDEX [M.C.D. MANN AND J.T. WIFFEN D57G [ D5M6 [ D66Q [ ************** D6LB [ * SEGINDEX * D762 [ ************** D7KL [ D85= [ D8JW [ SEGINDEX D94G [ D9J6 [ WILL PRODUCE AN INDEX OF SEGMENTS IN ALPHABETICAL ORDER WITH THEIR D=3Q [ PAGE NUMBERS IN THE LISTING, PROVIDED THAT D=HB [ 1 35?+0] IS AT LEAST 6 (THIS IS %A OF #ITEM) D?32 [ 2 GIN VERSION IS 510 OR LATER D?GL [ D#2= #DEF 20?=1? D#FW #STR %A [LISTING LEVEL D#^G #STR D*F6 #LIS 0 D*YQ #STR %A DBDB #LIS %A DBY2 #FRL DCCL #INT DCX= #ORD DDBW TITLE 28HSEGMENT PAGE NUMBER INDEX DDWG NOTENUF1 52HINSUFFICIENT CORESTORE FOR FULL SORT: PARTIAL INDEX DFB6 8HFOLLOWS DFTQ NOTENUF2 20HEND OF PARTIAL INDEX DG*B MISSING 8HMISSING DGT2 SPACE 4H DH#L X0 +0 DHS= X3 +0 DJ?W X6 +0 DJRG M22 #17777777 DK?6 SEGCT +0 DKQQ SEGCT1 +0 DL=B XINITIAL +0 DLQ2 POSITION +0 DM9L NULIN CALL 5 18?+2]+20] DMP= LDX 1 18?+1]+62 DN8W LDN 2 1(1) DNNG LDX 5 SPACE DP86 STO 5 0(1) DPMQ MOVE 1 29 DQ7B EXIT 0 0 DQM2 NTRY STO 0 X0 [SAVE INTERLUDE LINK DR6L CALL 3 18?+2]+5] [START NEW PAGE DRL= CALL 0 NULIN [GET BUFFER DS5W LDN 0 TITLE [INSERT HEADING DSKG MOVE 0 7 DT56 CALL 3 18?+2]+19] [PRINT HEADING DTJQ CALL 3 18?+2]+10] [AND A BLANK LINE DW4B CALL 3 18?+2]+10] [AND ANOTHER DWJ2 LDX 1 18?+3]+70 [GET START OF AVAILABLE STORAGE DX3L LDN 7 0 [SEGMENT COUNT DXH= LDN 6 18?+4]+29] [NUMBER OF SEGMENT CHAINS DY2W NCHAN LDX 3 18?+4]+30 [BASE OF SEGMENT CHAIN AREA DYGG SBN 3 1 [ADJUST FOR BCT D^26 ADX 3 6 D^FQ LDX 3 0(3) [PICK UP POINTER D^^B BZE 3 NUCHN [J IF CHAIN EMPTY F2F2 NXENT LDN 0 4(1) [CHECK WE'VE NOT RUN OUT OF CORE F2YL TXL 0 18?+3]+69 F3D= BCC NOLOC [WE'VE RUN OUT SO PRINT WHAT WE HAVE F3XW SERCH CALL 0 18?+2]+6] [FIND F4CG LDX 2 0(3) F4X6 LDCT 4 128 F5BQ ANDX 4 2 F5WB BZE 4 MISS1 [J IF NOT VET COMPILED F6B2 LDX 4 5(3) [PICK UP PAGE NUMBER F6TL STPGN STO 4 3(1) [STORE F7*= LDN 0 1(3) [COPY NAME AND VERSION F7SW MOVE 0 3 F8#G ADN 1 4 [UPDATE CORE POINTER F8S6 ADN 7 1 [COUNT SEGMENTS F9?Q LDX 3 2 F9RB ANDX 3 M22 F=?2 BNZ 3 NXENT [J IF MORE ON CHAIN F=QL NUCHN BCT 6 NCHAN [J UNLESS ALL GOT F?== STOZ X3 [SET FINISHED MARKER F?PW SORT STO 7 SEGCT [SAVE COUNT OF SEGMENTS F#9G SLL 7 2 [MULTIPLY BY 4 F#P6 STO 7 18?+7]+7 [SAVE SORT PARAMETERS: LENGTH F*8Q LDX 7 18?+3]+70 F*NB STO 7 18?+7]+10 [START OF AREA FB82 ADX 7 18?+7]+7 FBML STO 7 18?+7]+11 [END OF AREA FC7= LDN 7 4 FCLW STO 7 18?+7]+8 [ITEM LENGTH FD6G STOZ 18?+7]+9 [KEY POSITION FDL6 CALL 0 18?+2]+14] [SORT THE ENTRIES FF5Q LDX 4 SEGCT [GET COUNT OF SEGMENTS FFKB LDX 1 18?+3]+70 FG52 NLINE STO 1 POSITION FGJL STO 4 SEGCT1 FH4= LDCH 0 0(1) [PICK UP FIRST LETTER OF SEGMENT NAME FHHW TXU 0 XINITIAL [SAME AS LAST? FJ3G BCC SAME [J IF SO FJH6 STO 0 XINITIAL FK2Q CALL 3 18?+2]+10] [PRINT BLANK LINE FKGB SAME CALL 0 NULIN [GET BUFFER FL22 ADN 2 2 [X2 WORD 3 OF LINE FLFL LDX 1 POSITION FL^= MOVE 1 3 [INSERT NAME AND VERSION FMDW LDX 5 3(1) [PICK UP PAGE NUMBER FMYG LDN 1 5(2) [X1 WORD 8 OF LINE FND6 BNG 5 MISS2 [J IF SEGMENT NOT COMPILED FNXQ CALL 2 18?+2]+9] [CONVERT TO DECIMAL FPCB PRINT CALL 3 18?+2]+19] [PRINT LINE FPX2 LDN 1 4 [STEP POINTER TO POSITION IN WS FQBL ADX 1 POSITION FQW= LDX 4 SEGCT1 FR*W BCT 4 NLINE [GET NEXT LINE FRTG LDX 3 X3 [DID WE SORT THEM ALL? FS*6 BNZ 3 RSTRT [J IF NOT FINISHED FSSQ CALL 3 18?+2]+5] [THROW PAPER FT#B LDX 0 X0 FTS2 EXIT 0 0 [EXIT: ALL DONE FW?L RSTRT CALL 3 18?+2]+10] [BLANK LINE FWR= CALL 0 NULIN [PRINT COMMENT FX=W LDN 0 NOTENUF2 FXQG MOVE 0 5 FY=6 CALL 3 18?+2]+19] FYPQ CALL 3 18?+2]+10] F^9B LDX 3 X3 [RESTORE POINTERS FOR COLLECTION F^P2 LDX 6 X6 G28L LDN 7 0 G2N= LDX 1 18?+3]+70 G37W BRN SERCH [GET NEXT SEGMENT ENTRY G3MG MISS2 LDX 0 MISSING [INSERT COMMENT FOR MISSING SEGMENT G476 STO 0 0(1) G4LQ LDX 0 MISSING+1 G56B STO 0 1(1) G5L2 BRN PRINT G65L MISS1 NGN 4 1 [NEGATIVE PAGE NO. FOR UNCOMPILED SEG G6K= BRN STPGN G74W NOLOC STO 3 X3 [SAVE X3: WE'VE NO SPACE LEFT SO MUST G7JG STO 6 X6 [DO PARTIAL PRINT G846 CALL 0 NULIN G8HQ LDN 0 NOTENUF1 G93B MOVE 0 15 G9H2 CALL 3 18?+2]+19] G=2L CALL 3 18?+2]+10] G=G= BRN SORT G=^W #EXT G?FG #DEF 21?=NTRY G?^6 #FRL [GET MAXIMUM SPACE G#DQ #JUM 21? G#YB #LIS 20? G*D2 #NOR G*XL ) GBC= [??? ABSMENDS SECT DIAG FGN 9 DOC GBWW #MAC ABSMENDS [M.C.D. MANN AND J.T. WIFFEN GCBG [ GCW6 [ GD*Q [ ************** GDTB [ * ABSMENDS * GF*2 [ ************** GFSL [ GG#= [ GGRW [ IN GIN511 ON, PRINTS A LIST OF MENDS NOT COMPILED WHOSE STATUS GH?G [ WOULD ALLOW THEM TO BE COMPILED. GHR6 [ %A LISTING LEVEL GJ=Q [ GJQB #DEF 20?=1? GK=2 #STR %A GKPL #LIS %A GL9= #STR %A GLNW #STR GM8G #LIS 0 GMN6 #FRL GN7Q #ORD GNMB #INT GP72 X0 0 [LINK TO INTERLUDE GPLL NUM 0,2,0,0,0 [PARAMETERS FOR SORT 18?+7]+(7 TO 11) GQ6= MHD 40HTHE FOLLOWING MENDS ARE ABSENT: NUMBER GQKW 8HSTATUS GR5G NAB 20HNO MENDS ARE MISSING GRK6 SP 4H GS4Q PB CALL 5 18?+2]+20] [GET SPACEFILLED BUFFER ROUTINE GSJB LDX 1 18?+1]+62 [CALL BUFLPSW; GET ADDRESS GT42 LDX 5 SP GTHL STO 5 0(1) [SPACEFILL GW3= LDN 2 1(1) GWGW MOVE 1 29 GX2G EXIT 0 0 [EXIT GXG6 NTRY STO 0 X0 [**START HERE** SAVE LINK GX^Q LDX 0 18?+3]+70 [GET 70?=ANAVL=BASE OF SCRATCH AREA GYFB STO 0 NUM+3 [STORE AS SORT PARAM GY^2 LDX 7 18?+4]+38 [X7=CHNMENDCT=NO. OF CHAINS G^DL LDX 5 18?+4]+39 [X5=CHNMEND=ADDRESS OF 1ST CHAINBASE G^Y= SBN 5 1 H2CW ADX 5 7 [X5 POINTS AT LAST CHAIN H2XG NXCHN SMO 5 H3C6 LDX 3 0 [PICK UP CHAINBASE CONTENTS H3WQ BZE 3 NULLM [J IF NONE ON THIS CHAIN H4BB NXMND CALL 0 18?+2]+6] [CALL FIND: LOOK UP ENTRY H4W2 LDX 0 18?+3]+75 [GET 75?=TESTING LEVEL H5*L SBX 0 2(3) [SUBTRACT MEND STATUS H5T= BVSR NO [V SET IF STATUS LARGE & NEGATIVE H6#W BPZ 0 NO [+VE IF NOT TO BE COMPILED H6SG LDX 1 3 [KEEP ENTRY POINTER H7#6 LDN 3 2 [SIZE OF ENTRY H7RQ ADS 3 NUM [KEEP COUNT OF WORDS USED H8?B CALL 0 18?+2]+13] [GETLOC H8R2 LDN 2 1(1) H9=L MOVE 2 2 [COPY NUMBER AND STATUS H9Q= LDX 3 1 [PICK UP ENTRY POINTER H=9W NO LDX 3 0(3) [GET FPTR H=PG BNZ 3 NXMND [J UNLESS END OF CHAIN H?96 NULLM SBN 5 1 [PRIVIOUS CHAIN H?NQ BCT 7 NXCHN [J UNLESS ALL DONE H#8B LDX 0 NUM [WERE THERE ANY? H#N2 BZE 0 NONE [J IF NONE H*7L CALL 3 18?+2]+10] [BLANK LINE ON OUTPUT LISTING H*M= CALL 0 PB [GET BUFFER HB6W LDN 0 MHD [GET HEADING HBLG MOVE 0 NAB-MHD [PUT IN BUFFER HC66 CALL 3 18?+2]+19] [PRINT HCKQ LDX 0 NUM+3 [GET BASE OF SORT AREA HD5B STO 0 18?+3]+70 [RETURN AREA USED HDK2 ADX 0 NUM [ADD SIZE HF4L STO 0 NUM+4 [STORE END OF AREA HFJ= LDN 0 NUM [COPY INTO SORT PARAMETER AREA HG3W LDN 1 18?+7]+7 HGHG MOVE 0 5 HH36 CALL 0 18?+2]+14] [SORT INTO NUMERICAL ORDER HHGQ NX CALL 0 PB [GET BUFFER HJ2B ADN 1 8 [MEND NUMBER IN COL. 32 HJG2 LDX 3 NUM+3 [GET ADDRESS IN BUFFER HJ^L LDX 5 0(3) [PICK UP MEND NUMBER HKF= CALL 2 18?+2]+9] [AL48: CONVERT BINARY TO DECIMAL HKYW LDX 1 18?+1]+62 [BUFFER ADDRESS HLDG ADN 1 10 [STATUS IN COL. 12 HLY6 LDX 5 1(3) [PICK UP STATUS HMCQ CALL 2 18?+2]+9] [DECIMALISE HMXB CALL 3 18?+2]+19] [PRINT THE LINE HNC2 LDN 0 2 HNWL SBS 0 NUM [DECREASE COUNT HPB= ADS 0 NUM+3 HPTW LDX 0 NUM HQ*G BNZ 0 NX [J UNLESS FINISHED HQT6 CALL 3 18?+2]+10] [PRINT BLANK LINE HR#Q XIT LDX 0 X0 [ALL DONE HRSB EXIT 0 0 HS#2 NONE CALL 0 PB [NO MENDS MISSING: HSRL LDN 0 NAB [GET BUFFER HT?= MOVE 0 SP-NAB [MESSAGE HTQW CALL 3 18?+2]+19] [PRINT HW=G BRN XIT [END HWQ6 #JUM NTRY HX9Q #EXT HXPB #FRL HY92 #LIS 20? HYNL #NOR H^8= [??? SEGNAMES SECT DIAG FGN 9 DOC H^MW #MAC SEGNAMES [M.C.D. MANN AND J.T. WIFFEN J27G [ J2M6 [ J36Q [ ************** J3LB [ * SEGNAMES * J462 [ ************** J4KL [ J55= [ J5JW [ WILL OUTPUT TO PRINTER AND/OR TAPE PUNCH A LIST OF SEGMENTS WITH J64G [ THE CORRESPONDING VALUES OF KSEGMENT. J6J6 [ PRINTER FORMAT DISPLACED 6 CHARS RIGHT: J73Q [ 1 ABANDON 2 ALAS 3 ALASB 4 AM J7HB [ 7 ANALYSEB ETC. J832 [ TAPE PUNCH FORMAT: J8GL [ 0001ABANDON ^*^ ^ ^ 0002ALAS ^*^ ^ ^ 0003ALASB ^*^ ^ ^ 0004AM J92= [ %A=LP MEANS PRINT ONLY; %A=TP MEANS PUNCH ONLY. J9FW [ J9^G #STR %B J=F6 #STR J=YQ #LIS 0 J?DB #STR %B J?Y2 #LIS %B J#CL #FRL J#X= #INT J*BW #ORD J*WG #STR TP,%A JBB6 ( JBTQ TITLE 40HLIST OF SEGMENT NUMBERS (K IDENTIFIERS) JC*B POS +0 [POSITION REACHED IN PRINT LINE JCT2 ) JD#L #STR LP,%A JDS= ( JF?W NL 8H^*^ ^ ^ [NEWLINE NULL NULL NULL JFRG STOP 4H^4^ JG?6 TERM 4H**** JGQQ SNUM +0 JH=B SNAME 0,0 JHQ2 PUNCH 1:8,0,12,+SNUM JJ9L PNEWL 1:0,0,8,+NL JJP= PSTOP 1:0,0,2,+STOP JK8W RUN 1:16,0,128,0 JKNG ) JL86 M22 #17777777 JLMQ SEGCT 0 JM7B SP1 16 JMM2 SPACE 4H JN6L WORK0 0 JNL= WORK1 0 JP5W X0 0 JPKG X3 0 JQ56 X6 0 JQJQ [ END OF VARIABLES JR4B [ JRJ2 #STR TP,%A JS3L ( JSH= NULIN CALL 5 18?+2]+20] [BUFLPSW: GET A PRINT BUFFER JT2W LDX 1 18?+1]+62 [PICK UP ITS ADDRESS JTGG LDN 2 1(1) [AND SECOND WORD JW26 LDX 5 SPACE [SPACEFILL PRINT BUFFER JWFQ STO 5 0(1) JW^B MOVE 1 29 JXF2 EXIT 0 0 JXYL ) JYD= [ HERE IS THE ENTRY POINT JYXW NTRY STO 0 X0 J^CG #STR TP,%A J^X6 ( K2BQ CALL 3 18?+2]+5] [THROW PAPER K2WB CALL 0 NULIN K3B2 LDN 0 TITLE [MOVE IN TITLE LINE K3TL MOVE 0 10 K4*= CALL 3 18?+2]+19] [PRINT TITLE K4SW CALL 3 18?+2]+10] [AND BLANK LINE K5#G CALL 3 18?+2]+10] [TWICE K5S6 ) K6?Q #STR LP,%A K6RB ( K7?2 TPTRY ALLO 0 1 [ASK FOR *TP0 K7QL LDX 0 9 K8== BPZ 0 OKTP K8PW 4H74TP [SUSWT: 2HTP K99G BRN TPTRY K9P6 OKTP PERI 0 RUN [32 CM OF BLANKS K=8Q PERI 0 PNEWL [NEWLINE K=NB ) K?82 LDN 6 18?+4]+29] [GET COUNT OF SEGMENT ENTRY CHAINS K?ML LDN 7 0 [ZEROISE COUNT OF SEGMENTS K#7= LDX 1 18?+3]+70 [GET POSITION OF FIRST FREE WORD K#LW NCHAN LDX 3 18?+4]+30 [GET POINTER TO FIRST SEGMENT CHAIN K*6G SBN 3 1 [ADJUST FOR BCT K*L6 ADX 3 6 [GET NEXT CHAIN KB5Q LDX 3 0(3) [GET FIRST WORKFILE ADDRESS KBKB BZE 3 NUCHN [J IF CHAIN EMPTY FOR NEXT KC52 NXENT LDN 0 4(1) [GET MORE CORE KCJL TXL 0 18?+3]+69 [CHECK WE HAVEN'T RUN OUT KD4= BCC NOLOC [J IF WE HAVE KDHW SERCH CALL 0 18?+2]+6] ["FIND" - LOOK UP SEGMENT ENTRY KF3G LDX 0 4(3) [PICK UP SEGMENT DATUM - ZERO FOR KFH6 BNZ 0 NCHAP [CHAPTERS - IGNORE IF NOT KG2Q LDX 0 1(3) [PICK UP SEGMENT NAME, ONE WORD AT A KGGB STO 0 2(1) [TIME, AND TRANSFER IT TO THE ENTRY KH22 LDX 0 2(3) [IN THE SORTING BUFFER IN LOCAL KHFL STO 0 3(1) [WORKING STORAGE. CLEAR THE REST OF KH^= STOZ 0(1) [THE ENTRY: WORD 0 HOLDS THE VALUE, KJDW STOZ 1(1) [WORD 1 IS IGNORED EXCEPT WHILE SORT KJYG ADN 1 4 [IS IN PROGRESS. KEEP COUNT OF CORE KKD6 ADN 7 1 [USED AND SEGMENTS NOTED. PICK UP KKXQ NCHAP LDX 3 0(3) [THE FORWARD POINTER, IGNORE THE KLCB ANDX 3 M22 ["SEGMENT COMPILED" BIT, AND JUMP KLX2 BNZ 3 NXENT [BACK UNLESS WE'VE REACHED ENDOFCHAIN KMBL NUCHN BCT 6 NCHAN [J UNLESS ALL SEGMENTS COLLECTED KMW= STOZ X3 [SET "LAST BATCH" SWITCH KN*W [ NOW WE MUST LOOK UP THE VALUE OF KSEGMENT FOR EACH SEGT. KNTG [ WHICH WE HAVE FOUND TO EXIST KP*6 VALUE STO 7 SEGCT [STORE COUNT OF SEGMENTS KPSQ NXK SBN 1 4 [ADJUST CORE POINTER KQ#B STO 1 WORK0 [AND SAVE IT KQS2 LDN 6 8 [SET COUNT OF CHARACTERS KR?L LDX 0 SPACE [SPACEFILL IDENTIFIER STORAGE AREA KRR= STO 0 18?+1]+7 KS=W STO 0 18?+1]+8 KSQG STO 0 18?+1]+9 KT=6 LDN 2 18?+1]+7 [PICK UP DESTINATION ADDRESS KTPQ LDN 0 #53 [PICK UP LETTER K KW9B STO 0 18?+1]+57 KWP2 DCH 0 0(2) [PUT IN THE NAME OF THE IDENTIFIER KX8L NXCH BCHX 2 £ [STEP OUTMOD KXN= LDCH 0 2(1) [PICK UP CHARACTER FROM SEGMENT NAME KY7W TXU 0 SP1 [IS IT SPACE - TERMINATES THE NAME KYMG BCC NDNAM [J IF IT IS K^76 DCH 0 0(2) [TRANSFER ONE CHARACTER K^LQ BCHX 1 £ [STEP INMOD L26B BCT 6 NXCH [JUMP BACK L2L2 NDNAM LDN 5 12 [CALCULATE LENGTH OF NAME IN WORDS L35L SBX 5 6 [CHARACTERS+3 L3K= SRL 5 2 [SHIFT TO WORDS L44W STO 5 18?+1]+56 [SAVE SIZE OF NAME L4JG SRC 5 6 [PUT IN TOP 6 BITS L546 STO 5 18?+1]+55 [AND SAVE AGAIN L5HQ CALL 0 18?+2]+1] [CALL "FINDIT" AND L63B BRN NSUCH [J IF NO SUCH IDENTIFIER L6H2 LDX 1 WORK0 [PICK UP CORE ADDRESS REACHED L72L LDX 0 1(3) [PICK UP VALUE OF IDENTIFIER L7G= STO 0 0(1) [AND STORE AS KEY FOR SORT L7^W NS1 TXU 1 18?+3]+70 [HAVE WE GOT BACK TO THE BEGINNING? L8FG BCS NXK [J IF NOT L8^6 [ HERE WE SORT THE RECORDS IN ORDER OF INCREASING K-NUMBER. L9DQ LDX 7 SEGCT [NUMBER OF SEGMENTS L9YB SLL 7 2 [SHIFT TO GIVE SIZE OF AREA L=D2 STO 7 18?+7]+7 [STORE SIZE L=XL LDX 7 18?+3]+70 [PICK UP START OF AREA L?C= STO 7 18?+7]+10 L?WW ADX 7 18?+7]+7 [ADD ITS LENGTH L#BG STO 7 18?+7]+11 [STORE END ADDRESS L#W6 LDN 7 4 [PICK UP ENTRY SIZE L**Q STO 7 18?+7]+8 L*TB STOZ 18?+7]+9 [RELATIVE POSITION OF KEY LB*2 CALL 0 18?+2]+14] [SORT ROUTINE LBSL #STR TP,%A LC#= ( LCRW LDN 5 0 [START PRINTER ON NEW LINE LD?G STO 5 POS LDR6 ) LF=Q LDX 4 SEGCT [GET COUNT OF SEGMENTS LFQB LDX 2 18?+3]+70 [GET START OF AREA LG=2 STO 2 WORK0 LGPL NLINE STO 4 WORK1 LH9= LDX 0 0(2) [PICK UP K-VALUE LHNW BZE 0 ZERO [J IF ZERO - IRRELEVANT LJ8G #STR TP,%A LJN6 ( LK7Q LDX 5 POS LKMB BNZ 5 NOTFL [J IF PRINTER LINE NOT FULL LL72 CALL 0 NULIN [NEW LINE LLLL LDN 5 6 [6 ENTRIES PER LINE LM6= NOTFL SBN 5 1 [DECREASE LMKW STO 5 POS LN5G LDX 2 WORK0 LNK6 LDX 5 0(2) [PICK UP VALUE LP4Q CALL 2 18?+2]+9] [DECIMALISE IT LPJB LDN 1 1(1) [INCREASE X1 LQ42 LDX 2 WORK0 [PICK UP CORE ADDRESS AGAIN LQHL LDN 0 2(2) LR3= MOVE 0 2 LRGW ADN 1 4 [UPDATE BUFFER POSITION LS2G LDX 5 POS [PICK UP NUMBER DONE LSG6 BNZ 5 NPT [J IF LINE NOT FULL LS^Q CALL 3 18?+2]+19] LTFB LDX 2 WORK0 LT^2 NPT LWDL ) LWY= #STR LP,%A LXCW ( LXXG PERI 0 PNEWL [PUNCH NEWLINE LYC6 LDX 0 0(2) [PICK UP NUMBER LYWQ STO 0 SNUM L^BB LDX 0 2(2) [AND NAME L^W2 STO 0 SNAME M2*L LDX 0 3(2) M2T= STO 0 SNAME+1 M3#W PERI 0 PUNCH [PUNCH A BLOCK M3SG ) M4#6 ZERO ADN 2 4 [UPDATE POSITION IN PICK-UP BUFFER M4RQ STO 2 WORK0 M5?B LDX 4 WORK1 [HAVE WE FINISHED? M5R2 BCT 4 NLINE M6=L #STR TP,%A M6Q= ( M79W LDX 5 POS M7PG BZE 5 PTD [J IF LAST LINE ALREADY PRINTED M896 CALL 3 18?+2]+19] [IF NOT, PRINT IT M8NQ PTD M98B ) M9N2 LDX 3 X3 [DID WE GET RID OF ALL OF THEM? M=7L BNZ 3 RSTRT [J IF NOT TO GET SOME MORE M=M= #STR TP,%A M?6W CALL 3 18?+2]+5] [THROW PAPER M?LG #STR LP,%A M#66 ( M#KQ PERI 0 PNEWL [PUNCH NEWLINE M*5B LDX 0 TERM [PICK UP TERMINATOR M*K2 STO 0 SNUM [STORE IN BUFFER MB4L LDN 0 4 [PUT LENGTH IN CONTROL AREA MBJ= STO 0 PUNCH+2 MC3W PERI 0 PUNCH [PUNCH TERMINATOR MCHG PERI 0 PNEWL [PUNCH NEWLINE MD36 PERI 0 PNEWL MDGQ PERI 0 RUN [RUN OUT MF2B PERI 0 PSTOP [STOP CHARACTER MFG2 PERI 0 RUN [RUNOUT MF^L SUSB 0 1 [WAIT TILL FINISHED MGF= REL 0 1 [RELEASE *TP0 MGYW ) MHDG LDX 0 X0 [PICK UP LINK MHY6 EXIT 0 0 [RETURN CONTROL TO GIN MJCQ [ MJXB NOLOC STO 3 X3 [IF LOCALSTORAGE RUNS OUT, SAVE WHERE MKC2 STO 6 X6 [WE'VE GOT TO MKWL BRN VALUE [AND GET VALUES SO FAR MLB= [ MLTW RSTRT [RESTART EXTRACTION AFTER PARTIAL LISTING MM*G #STR TP,%A MMT6 CALL 3 18?+2]+10] [PRINT BLANK LINE MN#Q LDX 3 X3 [RESTORES POINTERS MNSB LDX 6 X6 MP#2 LDN 7 0 MPRL LDX 1 18?+3]+70 MQ?= BRN SERCH MQQW [ MR=G NSUCH LDX 1 WORK0 MRQ6 BRN NS1 MS9Q #EXT MSPB #DEF 21?=NTRY [REMEMBER ENTRY POINT MT92 #FRL [ALLOW USE OF ALL WORKING STORAGE MTNL #JUM 21? MW8= #LIS 20? MWMW #NOR MX7G ...[??? FORWARD SECT DIAG FGN 200 DOC MXM6 ...#MAC FORWARD [J.T.WIFFEN MY6Q ...[ MYLB ...[ M^62 ...[ ********** M^KL ...[ * FORWARD* N25= ...[ ********** N2JW ...[ N34G ...[ N3J6 ...#SKI 77?>521$521 N43Q ...( N4HB ...#SKI 84?+0]<1$1 N532 ...( N5GL ...#CON NO PROGRAM FILE FORWARD REFERENCES N62= ...# !! NO PROGRAM FILE FORWARD REFERENCES N6FW ...#EXIT N6^G ...) N7F6 ...#FRL N7YQ ...#DEF MLIST=1? N8DB ...#LIS 0 [SHOULD BE 0 AFTER TESTING N8Y2 ...#ORD N9CL ...#INT N9X= ...XLINK +0 N=BW ...XDA 0 N=WG ...X1024 1024 N?B6 ...VFRPTR 0 N?TQ ...WAR 4H!!!! N#*B ...WFFRPTR 0 N#T2 ...XDATUM 0 [DATUM OF CURRENT SEGMENT N*#L ...SPACE 4H N*S= ...ONESP #20 NB?W ...XAT 4H AT NBRG ...XIN 4H IN NC?6 ...MASK #17777777 NCQQ ...NFR 0 ND=B ...NTRY STO 0 XLINK [SAVE LINK BACK TO GIN NDQ2 ... LDX 3 84? NF9L ... BZE 3 NONE [SHOULD NOT HAVE GOT THIS FAR NFP= ...X3 STO 3 WFFRPTR NG8W ... CALL 0 18?+2]+6] [ :FIND: NGNG ... LDX 0 0(3) [ FPTR NH86 ... ANDX 0 MASK NHMQ ... STO 0 NFR [SAVE FOR LATTER NJ7B ... LDX 0 1(3) [GET PROG. FILE FILL IN ADD. NJM2 ... ANDX 0 MASK NK6L ... STO 0 XDA [ D ADDRESS OF FR NKL= ... LDX 0 2(3) NL5W ... ANDX 0 MASK NLKG ... STO 0 VFRPTR [PTR TO VALUE OF U/V NM56 ... LDX 3 4(3) [PTR TO INC RECORD NMJQ ... ANDX 3 MASK NN4B ... CALL 0 18?+2]+6] [ GET INC RECORD :FIND NNJ2 ... CALL 5 18?+2]+20] [GET PRINT BUFFER NP3L ... LDX 1 18?+1]+62 NPH= ... LDN 2 1(1) NQ2W ... LDX 0 SPACE NQGG ... STO 0 0(1) [ SPACE FILL BUFFER NR26 ... MOVE 1 29 NRFQ ... LDN 5 11(1) NR^B ... LDN 4 1(3) NSF2 ... MOVE 4 2 [MOVE SEG NAME TO LP BUFF NSYL ...[ NOW WE SET UP D'SEG NAME' NTD= ... LDN 3 1(3) NTXW ... LDN 2 18?+1]+7 NWCG ... STO 0 0(2) [SPACE FILL ANAME NWX6 ... STO 0 1(2) NXBQ ... STO 0 2(2) NXWB ... LDN 7 #44 [ APPEND SEGNAME TO 'D' NYB2 ... DCH 7 0(2) NYTL ... BCHX 2 £ N^*= ... LDN 6 8 N^SW ...X4 LDCH 7 0(3) P2#G ... TXU 7 ONESP P2S6 ... BCC XCEND [END OF SEG NAME P3?Q ... DCH 7 0(2) P3RB ... BCHX 3 £ P4?2 ... BCHX 2 £ P4QL ... BCT 6 X4 P5== ...XCEND P5PW ... LDN 0 9 P69G ... SBX 0 6 [LENGTH OF IDENTIFIER P6P6 ... ADN 0 3 P78Q ... SRL 0 2 [ GET WORD COUNT P7NB ... STO 0 18?+1]+56 P882 ... SRC 0 6 P8ML ... STO 0 18?+1]+55 P97= ... STO 0 18?+1]+57 [ MARK AS UNIVERSAL P9LW ... CALL 0 18?+2]+1] [ FINDIT P=6G ... BRN 24 [PM ENTRY ;THIS SHOULD NEVER HAPPEN P=L6 ... LDX 0 1(3) [GET SEGS DATUM P?5Q ... STO 0 XDATUM P?KB ... LDX 3 VFRPTR P#52 ... SBN 3 1 [ POINT TO START OF UNI RECORD P#JL ... CALL 0 18?+2]+6] [ :FIND: P*4= ... LDX 1 18?+1]+62 P*HW ... LDCH 2 3(3) [LENGTH OF UNI PB3G ... SMO 35?+2 PBH6 ... LDN 6 0(3) PC2Q ... LDN 7 3(1) PCGB ... MOVE 6 0(2) [MOVE NAME OF UNI PD22 ... LDX 7 XAT PDFL ... STO 7 6(1) PD^= ... LDX 7 XIN PFDW ... STO 7 9(1) PFYG ... LDX 5 XDA PGD6 ... SBX 5 XDATUM [RELATIVE TO SEGS D PGXQ ... TXL 5 X1024 PHCB ... BCS XOK [ IN RANGE PHX2 ... ADX 5 XDATUM [GET PROGRAM FILE ADD PJBL ... LDX 7 WAR PJW= ... STO 7 14(1) PK*W ... STO 7 1(1) PKTG ...XOK LDN 1 7(1) PL*6 ... CALL 2 18?+2]+9] [ :AL48: PLSQ ... CALL 3 18?+2]+19] [ :APLINE: PM#B ... LDX 3 WFFRPTR PMS2 ... TXU 3 84?-1 PN?L ... BCC NONE [ FINISH IF WE PROCESSED LAST RECORD PNR= ... LDX 3 NFR [ POINTER TO NEXT PP=W ... BRN X3 [ CARRY ON PPQG ...NONE PQ=6 ... LDX 0 XLINK PQPQ ... EXIT 0 0 [ BACK TO GOOD OLD GIN PR9B ...# PRP2 ...# PS8L ...#JUMP NTRY PSN= ...#EXT PT7W ...#LIS MLIST PTMG ...#FRL PW76 ...) PWLQ ...#SKI 77?<522$522 PX6B ...! GIN OF THE WRONG VINTAGE FOR FORWARD PXL2 ...#NOR PY5L ...# ^^^^ ...157434040078