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