{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: MACINTLUDES)}}
====== MACINTLUDES ======
(George Source)
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