(GIN Macro)
Defined in: MACINTLUDES
Used in:
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