SEGNAMES

(GIN Macro)

Defined in: MACINTLUDES

Used in:

SEGNAMES.mac.txt
 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
  • Last modified: 17/01/2024 11:55
  • by 127.0.0.1