{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: MACROS JSR)}}
====== MACROS JSR ======
(George Source)
22^= # RUTH PORTER, 7OPAW
23DW ...[??? DATUMSMO SECT CENT FGN 9 DOC
2JHQ #
2K3B # THE MACROS ARE FOR ACCESSING SWAPPED IN OBJECT PROGRAMS.
2KH2 # THEY USE FIXED STORE LOCATIONS(IN CBWCORE):JWSP1,JWSP2,JWSP3,JWCON1
2L2L #MAC DATUMSMO [WORKING MACRO
2LG= OPTMOD %A,%B,%C
2L^W #NOR
2M9N ...[??? OPTMOD SECT CENT FGN 9 DOC
2MFG #
2M^6 #MACRO OPTMOD
2NDQ #STRING %A
2NYB MOD %C,%A
2PD2 #STRING %A
2PXL #SKIP
2QC= MOD %C,%B
2QWW #NORMAL
2R6N ...[??? DATUMA SECT CENT FGN 9 DOC
2RBG #MAC DATUMA [FINDS DATUM OF A PLUGGED IN OBJ PROG
2RW6 #STR %B
2S*Q LDX 0 %B
2STB #STR %B
2T*2 #SKI
2TSL LDX 0 FX2
2W#= STO 0 %A
2WRW #NOR
2X3N ...[??? DATUMB SECT CENT FGN 9 DOC
2X?G #MAC DATUMB [FINDS DATUM OF AN UNPLUGGED PROG
2XR6 DATUMA %A,%B
2Y=Q #NOR
2YGJ ...[??? CHECKA SECT CENT FGN 9 DOC
2YQB #MAC CHECKA [CHECK THAT AN OBJ PROGRAM AREA IS WITHIN RESERVATIONS
2^=2 CHECKB %A,%B,%C,%D,%E,%F,%G,%H,%I,%J
2^PL #NOR
2^^D ...[??? CHECKBX SECT CENT FGN 9 DOC
329= #MAC CHECKBX [CHECK RESERVATIONS-NO COORDS-PRIVATE USED BY ILLPERI ETC
32NW LDX 0 %A
338G ANDX 0 JWCON1
33N6 DATUMSMO %D,FX2,TXL 0 ALIMIT
347Q BCC %C
34MB #STR %B
3572 (
35LL ADX 0 %B
366= BZE 0 M2
36KW SBN 0 1
375G DATUMSMO %D,FX2,TXL 0 ALIMIT
37K6 BCC %C
384Q M2
38JB )
3942 #NOR
39?S ...[??? CHECKB SECT CENT FGN 9 DOC
39HL #SKIP G3
3=3= (
3=GW #MAC CHECKB [CHECK RESERVATIONS FOR AN UNPLUGGED PROG
3?2G CHECKBX %A,%B,%C,%D
3?8Q ...#NOR
3?8X ...)
3?94 ...#SKI G4
3?99 ...(
3?9B ...#MAC CHECKB [J.S.RAYNER GEORGE 4 VERSION
3?9H ... STO 1 JWSP3 [STORE X1,2
3?9N ... STO 2 JWSP4
3?9T ...#STR %B
3?=2 ... LDX 0 %B [LENGTH
3?=7 ...#STR %B
3?=# ...#SKIP
3?=F ... LDN 0 1
3?=L ... STO 0 JWSP2
3?=R ... LDX 0 %A [PROG ADDR
3?=Y ... ANDX 0 JWCON1
3??5 ... STO 0 JWSP1
3??= ...#STR %E [PERMISSION
3??C ...#SKIP
3??J ... LDN 0 CHREAD
3??P ...#STR %E
3??W ...(
3?#3 ...#STR %E,W
3?#8 ...#SKIP
3?#* ... LDN 0 CHREAD+CHWRITE
3?#G ...#STR %E,W
3?#M ... LDX 0 %E [ANY OTHER
3?#S ...)
3?#^ ... STO 0 JWSP6 [STORE PERM
3?*6 ...#STR %H
3?*? ...(
3?*D ... LDX 0 %H
3?*K ... ANDX 0 BITS22LS
3?*Q ...)
3?*X ...#STR %H
3?B4 ...#SKI
3?B9 ... LDCT 0 #400
3?BB ... STO 0 JWSP5 [ BLOCK POINTER.
3?BH ... OPTMOD %D,FX2,LDN 1 0
3?BN ... CALL 0 (CHECK4)
3?BT ... LDCT 5 #000 [ RESTART OPTIONS.
3?C2 ...#STR %I
3?C7 ...(
3?C# ...#FID 15 15 1
3?CF ...#STR %J
3?CL ...#FID 16 16 1
3?CR ...)
3?CY ...#STR %G
3?D5 ...(
3?D= ... LDN 3 %G
3?DC ... CALL 2 (CHECK5)
3?DJ ...)
3?DP ...#STR %G
3?DW ...#SKI
3?F3 ... CALL 2 (CHECK1)
3?F8 ... DOWN PAGETURN,1
3?F* ...#STR %I
3?FG ... BRN %I [ RESTART JUMP.
3?FM ...#STR %I
3?FS ...#SKI
3?F^ ... BRN (GEOERR)
3?G6 ... DOWN SETUPPTS,1 [ENTER ROUTINE TO SET UP PAGE TABLES
3?G? ... CALL 0 (CHECK3) [RES VIOL
3?GD ... CALL 0 (CHECK2)
3?GK ... BRN %C [JUMP IF RESVIOL
3?GQ ...#STR %F [EXIT IF COORDINATION
3?GX ...#SKIP
3?H4 ... BRN £
3?H9 ...#STR %F
3?HB ... BRN %F
3?HH ...#NOR
3?HN ...)
3?HT ...[??? CHECKEXT SECT CENT FGN 9 DOC
3?K= ...#SKIP G3
3?RG ...(
3?^Q #MAC CHECKEXT [EXTEND AREA-PART OF WHICH IS ALREADY CHECKED
3#FB CHECKB %A,%B,%C,%D,%E,%F,%G
3#ML ...#NOR
3#N7 ...)
3#NN ...#SKI G4
3#P9 ...(
3#PQ ...#MAC CHECKEXT
3#Q? ...#STR %G
3#QS ...#SKIP
3#R* ...! ERROR IN CHECKEXT NO 7TH PARAM
3#RW ... LDX 0 %A [IF THE SPECIFIED AREA DOES NOT
3#SC ... ANDN 0 #1777 [CROSS A PAGE BOUNDARY THEN THE
3#SY ... ADX 0 %B [WHOLE AREA MUST BE CHECKED ALREADY
3#TF ... SBN 0 1025 [THIS TEST SHOULD IMPROVE THE PERF.
3#W2 ... BNG 0 MCHECKEXT [OF THE OFFLINE PERI ROUTINES.
3#WH ...#STR %D
3#X4 ...#SKIP
3#XK ... CLEAR FX2,0,%G,%H
3#Y6 ...#STR %D
3#YM ... CLEAR %D,0,%G,%H
3#^8 ... CHECKB %A,%B,%C,%D,%E,%F,%G,%H,%I,%J
3#^P ...MCHECKEXT
3*2= ...#NOR
3*2R ...)
3*3# ...[??? ADDRESS SECT CENT FGN 9 DOC
3*46 ...#SKIP G3
3*=B ...(
3*DL #MAC ADDRESS [CONVERT AN OBJECT PROGRAM ADDRESS TO A GEORGE ADDRESS
3*Y= SMO %A
3BCW LDX 0 ADATUM
3BXG ADX 0 %B
3CC6 STO 0 %C
3CKB ...#NOR
3CL2 ...)
3CLL ...#SKI G4
3CM= ...(
3CMW ...#MAC ADDRESS [J.S.RAYNER GEORGE 4 VERSION
3CNG ... STO 1 JWSP1
3CP6 ... STO 2 JWSP2
3CPQ ... LDX 0 %B [VIRT ADDR
3CQB ... LDX 1 %A [PCA
3CR2 ... LDX 2 0
3CRL ... ANDX 0 BN2T13 [STORE'IN-PAGE'ADDRESS
3CS= ... STO 0 JWSP3
3CSW ... CALL 0 (HFIRST1)
3CTG ... ORX 0 JWSP3
3CW6 ... LDX 1 JWSP1
3CWQ ... LDX 2 JWSP2
3CXB ... STO 0 %C
3CY2 ...#NOR
3CYL ...)
3C^= ...[??? OUTMOVE SECT CENT FGN 9 DOC
3C^W ...#SKIP G3
3D86 ...(
3DBB #MAC OUTMOVE [MOVE OBJ PROG AREA TO GEORGE AREA
3DW2 STO 1 JWSP1
3F*L LDX 0 %D
3FT= STO 0 JWSP2
3G#W SMO %A
3GSG LDX 0 ADATUM
3H#6 ADX 0 %B
3HRQ LDX 1 %C
3J?B SMO JWSP2
3JR2 MOVE 0 0
3K=L LDX 1 JWSP1
3KDW ...#NOR
3KG= ...)
3KHL ...#SKI G4
3KK2 ...(
3KLB ...#MAC OUTMOVE [J.S.RAYNER GEORGE 4 VERSION
3KMQ ... INMOVEZ %A,%B,%C,%D,IN,MVCH
3KP6 ...#NOR
3KQG ...)
3KRW ...[??? INMOVE SECT CENT FGN 9 DOC
3KTB ...#SKIP G3
3L3L ...(
3L9W #MAC INMOVE [MOVE GEORGE AREA TO OBJ PROG AREA
3LPG LDX 0 %D
3M96 STO 0 JWSP2
3MNQ STO 1 JWSP1
3N8B LDX 0 %B
3NN2 STO 0 JWSP3
3P7L LDX 0 %C
3PM= SMO %A
3Q6W LDX 1 ADATUM
3QLG ADX 1 JWSP3
3R66 SMO JWSP2
3RKQ MOVE 0 0
3S5B LDX 1 JWSP1
3S?L ...#NOR
3S#W ...)
3SB6 ...# NOTE THAT IN THE EXPANSIONS OF INMOVE ETC WE MUST GIVE FUNNY PARAM
3SCB ...#SKI G4
3SDL ...(
3SFW ...#MAC INMOVE [J.S.RAYNER GEORGE 4 VERSION
3SH6 ... INMOVEZ %A,%B,%C,%D,OUT,MVCH
3SJB ...#NOR
3SKL ...)
4=72 ...[??? PMODES SECT CENT FGN 9 DOC
4==G # THIS MACRO OBTAINS THE BRANCHING & STORE MODES OF A PROG. MEMBER
4=Q6 # %A-MODIFIER CONTAINING MEMBER.NO.%B-PTR TO PCA
4?9Q #MAC PMODES
4?PB OPND SMO,%B,FX2
4#92 LDCH %A ALMT
4#NL #NOR
4#YD ...[??? MACCS SECT CENT FGN 9 DOC
4*8= # THIS MACRO LEAVES THE ADDRESS OF X0 OF THE MEMBER (IN %A) IN X0
4*MW # & %C (IF SPECIFIED).%B PTR TO PROG
4B7G #MAC MACCS [JSRAYNER.FIND ADDRESS OF MEMBERS X0
4BM6 MOD LDX 0 ADATUM,%B
4C6Q #STR %C
4CLB STO 0 %C
4D62 #NOR
4D*S ...[??? ONR SECT CENT FGN 9 DOC
4DKL # THIS MACRO OBTAINS THE ONR OF A MEMBER.%A-ADDRESS OF X0
4F5= #MAC ONR [JSRAYNER.GET ORDER NO.REGISTER (1907)
4FJW LDX 0 JWCON1
4G4G SMO %A
4GJ6 ANDX 0 8
4H3Q #SKIP %B
4HHB STO 0 %B
4J32 #NOR
4J=S ...[??? VETC SECT CENT FGN 9 DOC
4JGL # THIS MACRO OBTAINS THE V,C,SMO,ZSM BITS IN STANDARD FORM
4K2= #MAC VETC [JSRAYNER.M V,C,SMO,ZSM.(1907)
4KFW LDCT 0 #600
4K^G SMO %A
4LF6 ANDX 0 8
4LYQ STO 0 JWSP1
4MDB LDCT 0 #140
4MY2 SMO %A
4NCL ANDX 0 9
4NX= ORX 0 JWSP1
4PBW #SKIP %B
4PWG STO 0 %B
4QB6 #NOR
4QKY ...[??? NBREAKIN SECT CENT FGN 9 DOC
4QL4 ...#UNS ENBREAKIN
4QL8 ...(
4QL# ...#MAC NBREAKIN
4QLD ...[
4QLJ ...[ IF %B IS 5,9 OR 16,UP=REJECTED,UPPLUS 1,OK
4QLN ...[ IF %B IS 3,4,8,UP IS OK,UPPLUS 1 REJECTED
4QLS ...[
4QLY ...#STR %A,1
4QM4 ... LDX 1 %A
4QM8 ... LDX 2 FX2
4QM# ... ACCSTO JOBNO(1),ACOMMUNE1,2
4QMD ... ACCSTO ACTNUM(1),ACOMMUNE2,2
4QMJ ... LDN 0 K%BPROCONTX
4QMN ... STO 0 ACOMMUNE3(2)
4QMS ... DOWN PROCONTX,17
4QMY ...#SKI %B-5 [OMIT IF %B IS 5
4QN4 ...(
4QN8 ...#SKI %B-9 [OMIT IF %B IS 9
4QN# ...(
4QND ...#SKI %B-16 [OMIT IF %B IS 16
4QNJ ...(
4QNN ...#STR %D [OMIT IF NO %D
4QNS ... BRN %D
4QNY ...#STR %D
4QP4 ...#SKI
4QP8 ... BRN MNBREAKIN3
4QP# ...#STR %C [OMIT IF NO %C
4QPD ... BRN %C
4QPJ ...#STR %C
4QPN ...#SKI
4QPS ... BRN MNBREAKIN3
4QPY ...)
4QQ4 ...)
4QQ8 ...)
4QQ# ...#SKI %B-8
4QQD ...(
4QQJ ...#SKI %B-4
4QQN ...(
4QQS ...#SKI %B-3
4QQY ...(
4QR4 ...#STR %C [OMIT IF NO %C
4QR8 ... BRN %C
4QR# ...#STR %C
4QRD ...#SKI
4QRJ ... BRN MNBREAKIN3
4QRN ...#STR %D [OMIT IF NO %D
4QRS ... BRN %D
4QRY ...#STR %D
4QS4 ...#SKI
4QS8 ... BRN MNBREAKIN3
4QS# ...)
4QSD ...)
4QSJ ...)
4QSN ...MNBREAKIN3
4QSS ...#NOR
4QSY ...)
4QT4 ...#UNS ENBREAKIN
4QT8 ...#SKI
4QT# ...(
4QTQ #SKI ANOUSER
4R*B (
4RT2 #
4S#L # THIS MACRO INITIATES BREAKIN ON A JOB
4SS= #
4T9K ...#MAC NBREAKIN
4TLY ...#STR %A,2
4W4? ... LDX 2 %A
4WFL ... LDCH 0 ATYPE(2)
4WW^ ... SBN 0 CPAT/64
4X## ... BZE 0 MS
4XPM ... GEOERR 1,NOT CPA
4Y72 ...MS BRUSEN M1,2
4YJ* ... LDX 0 JOBNO(2)
4Y^N ... SMO FX2
4^C3 ... STO 0 ACOMMUNE1
4^SB ... LDN 0 K%BPROCONTX
529P ... SMO FX2
52M4 ... STO 0 ACOMMUNE2
534C ... DOWN PROCONTX,17
53FQ ... BRN M20A
53X5 ... BRN M21
54#D ...M1
54PR ...#STR %B,3
5576 ...(
55JF ... LDX 0 JOBEVENTS(2)
55^S ...#STR %B,5
56C7 ...#SKI
56SG ... BNG 0 M20
579T ...#STR %B,5
57M8 ... BNG 0 M21
584H ... SLL 0 3
58FW ...#STR %B,5
58X9 ...#SKI
59#J ... BNG 0 M20
59PX ...#STR %B,5
5=7= ... BNG 0 M21
5=JK ... LDCT 0 #500
5=^Y ... ORS 0 JOBEVENTS(2)
5?C? ...)
5?SL ... LDX 0 ATYPE(2)
5#9^ ... ANDN 0 #2000
5#M# ...#STR %B,5
5*4M ...#SKI
5*G2 ... BZE 0 M21
5*X* ...#STR %B,5
5B#N ... BZE 0 M20
5BQ3 ... SMO FX2
5C7B ... STO 2 ACC7
5CJP ... UNQUEUE
5D24 ... FPUT
5DCC ... LDX 2 ACC7(2)
5DSQ ...#STR %A,1
5F=5 ...#SKI
5FMD ... LDX %A 2
5G4R ...#STR %B,5
5GG6 ...#SKI
5GXF ... BRN M21
5H#S ...#STR %B,5
5HQ7 ... BRN M20
5J7G ...M20A
5JJT ...#STR 16,%B
5K28 ...#SKI
5KCH ... BRN M21
5KSW ...M20
5L=9 ...#STR %B,3
5LMJ ...#SKI
5M4X ...(
5MG= ... LDN 1 1
5MXK ... BRN MF
5N#Y ...)
5NQ? ...#STR %B,3
5P7L ...(
5PJ^ ...#STR 16,%B
5Q2# ...#SKI
5QCM ...(
5QT2 ... LDCT 0 1
5R=* ... ORS 0 JOBEVENTS(2)
5RMN ...)
5S53 ...#STR 9,%B
5SGB ...#SKI
5SXP ...(
5T*4 ... LDN 0 4
5TQC ... ORS 0 JOBEVENTS(2)
5W7Q ... LDN 1 1
5WK5 ...)
5X2D ...#STR 9,%B
5XCR ... LDN 1 0
5XT6 ... BRN MF
5Y=F ...)
5YMS ...M21
5^57 ...#STR %B,3
5^GG ...#SKI
5^XT ... GEOERR 1,NSTOPMOP
62*8 ...#STR %B,3
62QH ...(
637W ...#STR %B,5
63K9 ...#SKI
642J ...(
64CX ... LDCT 0 #20
64T= ... ORS 0 JOBEVENTS(2)
65=K ... TESTOUT
65MY ...)
665? ...#STR 16,%B
66GL ...#SKI
66X^ ... LDN 1 0
67*# ...#STR 16,%B
67QM ...(
6882 ...#STR 9,%B
68K* ...#SKI
692N ... LDN 1 0
69D3 ...#STR 9,%B
69TB ... LDN 1 1
6==P ...)
6=N4 ...)
6?5C ...MF CALL 0 £
6?GQ ... ADN 0 5
6?Y5 ... ADX 0 1
6#*D ... LDX 1 FX1
6#QR ... LDX 2 FX2
6*86 ... EXIT 0 0
6*KF ...#NOR
6*Y# ...)
6B5P ...)
6B?7 ...[??? FLIPS SECT CENT FGN 9 DOC
6BL2 #
6C5L # THIS MACRO UNSETS AND/OR SETS A BIT IN A SPECIFIED WORD
6CK= #
6D4W #MAC FLIPS
6DJG #STR %B
6F46 (
6FHQ #STR %C
6G3B #SKI %B-%C
6GH2 (
6H2L LDBIT %B,0
6HG= ANDX 0 %A
6H^W ERS 0 %A
6JFG )
6J^6 )
6KDQ #STR %C
6KYB (
6LD2 #STR %B
6LXL #SKI %B-%C
6MC= (
6MWW LDBIT %C,0
6NBG ORS 0 %A
6NW6 )
6P*Q )
6PTB #NOR
6Q58 ...[??? FLIPX SECT CENT FGN 9 DOC
6Q*2 #
6QSL # THIS MACRO UNSETS AND/OR SETS MASKS OF BITS IN A SPECIFIED WORD
6R#= #MAC FLIPX
6RRW #STR %B
6S?G (
6SR6 #STR %C
6T=Q #SKI %B-%C
6TQB (
6W=2 #STR %B,0
6WPL LDX 0 %B
6X9= ANDX 0 %A
6XNW ERS 0 %A
6Y8G )
6YN6 )
6^7Q #STR %C
6^MB (
7272 #STR %B
72LL #SKI %B-%C
736= (
73KW #STR %C,0
745G LDX 0 %C
74K6 ORS 0 %A
754Q )
75JB )
7642 #NOR
76?S ...[??? FLIPW SECT CENT FGN 9 DOC
76HL # THIS MACRO SWITCHES A MASK IN A SPECIFIED WORD
773= #MAC FLIPW
77GW #ACC %B
782G (
78G6 LDX 0 %B
78^Q ERS 0 %A
79FB )
79^2 #ACC %B
7=DL #SKI
7=Y= ERS %B %A
7?CW #NOR
7?MN ...[??? LDBIT SECT CENT FGN 9 DOC
7?XG #
7#C6 # THIS MACRO LOADS BIT %A INTO WORD %B
7#WQ #
7*BB #MAC LDBIT
7*W2 #SKIP %A>23-23
7B*L ! %A EXCEEDS 23 OR IS UNDEFINED
7BT= #ACC %B
7C#W (
7CSG LDBITZ %A,0
7D#6 STO 0 %B
7DRQ )
7F?B #ACC %B
7FR2 #SKIP
7G=L LDBITZ %A,%B
7GQ= #NOR
7H24 ...[??? LDBITZ SECT CENT FGN 9 DOC
7H9W #
7HPG # THIS MACRO SETS BIT %A OF ACCUMULATOR %B
7J96 #
7JNQ #MAC LDBITZ
7K8B #SKI %A<9-9
7KN2 (
7L7L LDCT %B 0
7LM= #FID 15+%A 15+%A 1
7M6W )
7MLG #SKI %A>11-11
7N66 (
7NKQ LDN %B 0
7P5B #FID %A %A 1
7PK2 )
7Q4L #SKIP %A$9
7QJ= #SKIP
7R3W LDX %B BIT9
7RHG #SKIP %A$10
7S36 #SKIP
7SGQ LDX %B BIT10
7T2B #SKIP %A$11
7TG2 #SKIP
7T^L LDX %B BIT11
7WF= #NOR
7WP4 ...[??? LDNBIT SECT CENT FGN 9 DOC
7WYW #
7XDG # THIS MACRO SETS ALL BITS EXCEPT BIT %A OF WORD %B
7XY6 #
7YCQ #MAC LDNBIT
7YXB #SKIP %A>23-23
7^C2 ! %A EXCEEDS 23 OR IS UNDEFINED
7^WL #ACC %B
82B= (
82TW LDNBITZ %A,0
83*G STO 0 %B
83T6 )
84#Q #ACC %B
84SB #SKIP
85#2 LDNBITZ %A,%B
85RL #NOR
863D ...[??? LDNBITZ SECT CENT FGN 9 DOC
86?= #
86QW # THIS MACRO SETS ALL BITS EXCEPT BIT %A OF ACCUMULATOR %B
87=G #
87Q6 #MAC LDNBITZ
889Q #SKIP %A>11-11
88PB (
8992 NGN %B 1
89NL #FID 0 %A 1
8=8= )
8=MW #SKIP %A<12-12
8?7G (
8?M6 NGN %B 2
8#6Q SRC %B %A+1
8#LB )
8*62 #NOR
8**S ...[??? BITMASK SECT CENT FGN 9 DOC
8*KL #
8B5= # THIS MACRO SETS UP A MASK OF THE SPECIFIED BITS
8BJW #
8C4G #MAC BITMASK
8CJ6 +0
8D3Q BITMASKZ %A,%B,%C,%D,%E,%F,%G,%H,%I,%J,%K,%L,%M
8DHB #STR %N
8F32 BITMASKZ %N,%O,%P,%Q,%R,%S,%T,%U,%V,%W,%X
8FGL #NOR
8FQD ...[??? NBITMASK SECT CENT FGN 9 DOC
8G2= #
8GFW # THIS MACRO SETS UP A MASK OF ALL BITS EXCEPT THE SPECIFIED BITS
8G^G #
8HF6 #MAC NBITMASK
8HYQ -1
8JDB BITMASKZ %A,%B,%C,%D,%E,%F,%G,%H,%I,%J,%K,%L,%M
8JY2 #STR %N
8KCL BITMASKZ %N,%O,%P,%Q,%R,%S,%T,%U,%V,%W,%V,%W,%X
8KX= #NOR
8L74 ...[??? BITMASKZ SECT CENT FGN 9 DOC
8LBW #
8LWG # THIS IS AN ITERATIVE MACRO ONLY USED IN DEFINING BITMASK/NBITMASK
8MB6 #
8MTQ #MAC BITMASKZ
8N*B #STR %A
8NT2 (
8P#L #SKIP %A>23-23
8PS= ! %A EXCEEDS 23 OR IS UNDEFINED
8Q?W #FID %A %A 1
8QRG BITMASKZ %B,%C,%D,%E,%F,%G,%H,%I,%J,%K,%L,%M
8R?6 #STR %N
8RQQ BITMASKZ %N,%O,%P,%Q,%R,%S,%T,%U,%V,%W,%X
8S=B )
8SQ2 #NOR
8S^S ...[??? SETBIT SECT CENT FGN 9 DOC
8T9L #
8TP= # THIS MACRO SETS BIT %A OF WORD %B
8W8W #
8WNG #MAC SETBIT
8X86 FLIPS %B,,%A
8XMQ #NOR
8XXJ ...[??? UNSETBIT SECT CENT FGN 9 DOC
8Y7B #
8YM2 # THIS MACRO UNSETS BIT %A OF WORD %B
8^6L #
8^L= #MAC UNSETBIT
925W FLIPS %B,%A
92KG #NOR
92T# ...[??? TBS SECT CENT FGN 9 DOC
9356 #
93JQ # THIS MACRO PICKS UP BIT %A OF WORD %B IN BIT %A OF ACC %C
944B #
94J2 #MAC TBS
953L LDBIT %A,%C
95H= ANDX %C %B
962W #NOR
96=N ...[??? BBS SECT CENT FGN 9 DOC
96GG #
9726 # THIS MACRO BRANCHES TO %C IF BIT %A OF WORD %B IS SET
97FQ #
97^B #MAC BBS
98F2 TBS %A,%B,0
98YL BNZ 0 %C
99D= #NOR
99N4 ...[??? BBUS SECT CENT FGN 9 DOC
99XW #
9=CG # THIS MACRO BRANCHES TO %C IF BIT %A OF WORD %B IS UNSET
9=X6 #
9?BQ #MAC BBUS
9?WB TBS %A,%B,0
9#B2 BZE 0 %C
9#TL #NOR
9**= ...[??? STEPBAC SECT CENT FGN 9 DOC
CWSB # THIS MACRO STEPS BACK THE ONR OF A PROG MEMBER.%A-ADDRESS OF X0
CXRL # MARK 4 ONWARDS VERSION OF STEPBAC
CY?= #MAC STEPBAC
CYQW LDX 0 %A
C^=G STO 0 JWSP1
C^Q6 MOD LDX 0 9,%A
D29Q SLC 0 3
D2PB ANDN 0 1
D392 ADN 0 1
D3NL SMO JWSP1
D48= SBS 0 8
D4MW #NOR
D4XN ...[??? STEPBAC1 SECT CENT FGN 9 DOC
D57G # THIS MACRO IS A MORE CONVENIENT FORM OF STEPBAC
D5M6 #MAC STEPBAC1 [JSRAYNER.STEPBACK ONR
D66Q MACCS %A,%B
D6LB STEPBAC 0
D762 #NOR
D7*S ...[??? STEPBACK SECT CENT FGN 9 DOC
D7KL # THIS MACRO STEPS BACK WORD 8 OF AN OBJ PROG.FROM THE CPA
D85= #MAC STEPBACK [JSRAYNER.STEPBACK WORD 8 FROM OBJ.PROG
D8JW DOWN STEPBACK,1
D94G #NOR
D9## ...[??? LOOPW SECT CENT FGN 9 DOC
D9J6 #
D=3Q # THIS GROUP OF MACROS ENABLE A ROUTINE TO ACCESS A NUMBER OF WORDS
D=HB # OR CHARS WITHIN AN OBJ.PROG.AREA WITHOUT DOING A SEPERATE ADDRESS
D?32 # CONVERSION FOR EACH WORD.
D?GL #
D#2= # LOOPW,NEXTW,NEXTWX ENABLE WORDS TO BE ACCESSED IN ORDER
D#FW # OF ASCENDING ADDRESS.
D#^G #
D*F6 #SKIP G3
D*YQ (
DBDB #MAC LOOPW [DATUM,MOD,ACC
DBY2 ADDRESS %A,%B,%B
DC6= ...#NOR
DC6W ...)
DC7G ...#SKI G4
DC86 ...(
DC8Q ...#MAC LOOPW [DATUM,MOD,ACC
DC9B ... STOZ JWSP11
DC=2 ... LDN 0 #2000(%B)
DC=L ... ANDX 0 B2T13
DC?= ... STO 0 JWSP10
DC?W ... SBN 0 0(%B) [
DC#G ... SBX 0 %C
DC*6 ... BPZ 0 MLOOPW1 [JUMP IF ALL IN ONE PAGE
DC*Q ... NGS 0 JWSP11
DCBB ... ADX %C 0 [WORDS IN FIRST PAGE
DCC2 ... ADDRESS %A,JWSP10,JWSP10
DCCL ...MLOOPW1
DCD= ... ADDRESS %A,%B,%B
DCDW ...#NOR
DCFG ...)
DCG6 ...[??? NEXTW SECT CENT FGN 9 DOC
DCGQ ...#SKI G3
DCP2 ...(
DCX= #MAC NEXTW [MOD,ACC,LABEL
DDBW ADN %A 1
DDWG BCT %B %C
DF4Q ...#NOR
DF5H ...)
DF6# ...#SKI G4
DF75 ...(
DF7W ...#MAC NEXTW [MOD,ACC,LABEL
DF8M ... ADN %A 1
DF9D ... BCT %B %C
DF=9 ... LDX %B JWSP11
DF?2 ... BZE %B MNEXTW1
DF?R ... STOZ JWSP11
DF#J ... LDX %A JWSP10
DF** ... BRN %C
DFB6 ...MNEXTW1
DFBX ...#NOR
DFCN ...)
DFDF ...[??? NEXTWX SECT CENT FGN 9 DOC
DFF= ...#SKIP G3
DFMG ...(
DFTQ #MAC NEXTWX [MOD,ACC,LABEL,NUMBER
DG*B ADX %A %D
DGT2 SBX %B %D
DH#L BZE %B MNEXTWX1
DHS= BPZ %B %C
DJ?W MNEXTWX1
DJG6 ...#NOR
DJGQ ...)
DJHB ...#SKI G4
DJJ2 ...(
DJJL ...#MAC NEXTWX [MOD,ACC,LABEL,NUMBER
DJK= ... ADX %A %D
DJKW ... SBX %B %D
DJLG ... BZE %B MNEXTWX1
DJM6 ... BPZ %B %C
DJMQ ...MNEXTWX1
DJNB ... LDX %A JWSP10
DJP2 ... SBX %A %B
DJPL ... ADX %B JWSP11
DJQ= ... STOZ JWSP11
DJQW ... BZE %B MNEXTWX2
DJRG ... BPZ %B %C
DJS6 ...MNEXTWX2
DJSQ ...#NOR
DJTB ...)
DJW2 ...[??? LOOPD SECT CENT FGN 9 DOC
DJWL ...#SKIP G3
DK4W ...(
DK?6 # LOOPD,NEXTD ALLOW ACCESS TO THE WORDS OF AN OBJ. PROG AREA
DKQQ # IN DESCENDING ORDER OF ADDRESS
DL=B #
DLQ2 #MAC LOOPD [DATUM,MOD,ACC
DM9L ADX %B %C [ADDRESS OF LAST WORD+1
DMP= SBN %B 1
DN8W ADDRESS %A,%B,%B
DNC6 ...#NOR
DNCK ...)
DND4 ...# LOOPD,NEXTD ALLOW ACCESS TO THE WORDS OF AN OBJ. PROG AREA
DNDH ...# IN DESCENDING ORDER OF ADDRESS
DNF2 ...#
DNFF ...#SKI G4
DNFY ...(
DNGC ...#MAC LOOPD [DATUM,MOD,ACC
DNGW ... ADX %B %C [ADDRESS OF LAST WORD+1
DNH* ... SBN %B 1
DNHS ... STOZ JWSP11
DNJ? ... LDN 0 0(%B)
DNJQ ... ANDN 0 #1777
DNK9 ... ADN 0 1
DNKN ... STO %B JWSP10
DNL7 ... SBS 0 JWSP10
DNLL ... SBX 0 %C
DNM5 ... BPZ 0 MLOOPD1
DNMJ ... NGS 0 JWSP11
DNN3 ... ADX %C 0
DNNG ... ADDRESS %A,JWSP10,JWSP10
DNN^ ...MLOOPD1
DNPD ... ADDRESS %A,%B,%B
DNPX ...#NOR
DNQB ...)
DNQT ...[??? NEXTD SECT CENT FGN 9 DOC
DNRL ...#SKIP G3
DN^W ...(
DP86 #MAC NEXTD [MOD,ACC,LABEL
DPMQ SBN %A 1
DQ7B BCT %B %C
DQ*L ...#NOR
DQBC ...)
DQC8 ...#SKI G4
DQC^ ...(
DQDQ ...#MAC NEXTD [MOD,ACC,LABEL
DQFH ... SBN %A 1
DQG# ... BCT %B %C
DQH5 ... LDX %B JWSP11
DQHW ... BZE %B MNEXTD1
DQJM ... STOZ JWSP11
DQKD ... LDX %A JWSP10
DQL9 ... BRN %C
DQM2 ...MNEXTD1
DQMR ...#NOR
DQNJ ...)
DQP* ...[??? LOOPCH SECT CENT FGN 9 DOC
DQQ6 ...#SKIP G3
DQYB ...(
DR6L #
DRL= # LOOPCH,NEXTCH ALLOW EACH CHAR OF AN OBJ PROG AREA TO BE ACCESSED
DS5W # IN ASCENDING ORDER OF ADDRESS
DSKG #
DT56 #MAC LOOPCH [DATUM,MOD,ACC
DTJQ ADDRESS %A,%B,%B
DTM6 ...#NOR
DTN2 ...)
DTNW ...#
DTPQ ...# LOOPCH,NEXTCH ALLOW EACH CHAR OF AN OBJ PROG AREA TO BE ACCESSED
DTQL ...# IN ASCENDING ORDER OF ADDRESS
DTRG ...#
DTSB ...#SKI G4
DTT= ...(
DTW6 ...#MAC LOOPCH [DATUM,MOD,ACC
DTX2 ... STOZ JWSP11
DTXW ... LDN 0 #2000(%B) [ADDRESS OF NEXT PAGE
DTYQ ... ANDX 0 B2T13
DT^L ... STO 0 JWSP10
DW2G ... SLC %B 2 [NO OF CHARS IN THIS PAGE
DW3B ... SLC 0 2
DW4= ... SBX 0 %B
DW56 ... SRC %B 2
DW62 ... SBX 0 %C
DW6W ... BPZ 0 MLOOPCH1 [JUMP IF ALL IN THIS PAGE
DW7Q ... NGS 0 JWSP11
DW8L ... ADX %C 0 [NO OF CHARS IN THIS PAGE
DW9G ... ADDRESS %A,JWSP10,JWSP10
DW=B ...MLOOPCH1
DW?= ... ADDRESS %A,%B,%B
DW#6 ...#NOR
DW*2 ...)
DW*W ...[??? NEXTCH SECT CENT FGN 9 DOC
DWBW ...#SKIP G3
DWF= ...(
DWJ2 #MAC NEXTCH [MOD,ACC,LABEL
DX3L BCHX %A £
DXH= BCT %B %C
DXPG ...#NOR
DXQN ...)
DXRW ...#SKI G4
DXT4 ...(
DXW= ...#MAC NEXTCH [MOD,ACC,LABEL
DXXD ... BCHX %A £
DXYL ... BCT %B %C
DX^S ... LDX %B JWSP11
DY32 ... BZE %B MNEXTCH1
DY48 ... STOZ JWSP11
DY5B ... LDX %A JWSP10
DY6J ... BRN %C
DY7Q ...MNEXTCH1
DY8Y ...#NOR
DY=6 ...)
DY?# ...[??? REM SECT CENT FGN 9 DOC
DY#G ...#SKIP G3
DY*N ...(
DYBW ...# REM OBTAINS THE NUMBER OF WORDS OR CHARS LEFT IN THE AREA
DYD4 ...# DEFINED BY THE LAST LOOPW,D,CH MACRO
DYF= ...#MAC REM [ACC
DYGD ...#NOR
DYHL ...)
DYJS ...# REM OBTAINS THE NUMBER OF WORDS OR CHARS LEFT IN THE AREA
DYL2 ...# DEFINED BY THE LAST LOOPW,D,CH MACRO
DYM8 ...#SKI G4
DYNB ...(
DYPJ ...#MAC REM [ACC
DYQQ ... ADX %A JWSP11
DYRY ...#NOR
DYT6 ...)
DYW# ...[??? CLEAR SECT CENT FGN 9 DOC
DYXG ...#SKIP G3
DYYN ...(
DY^W ...#MAC CLEAR
D^34 ...#NOR
D^4= ...)
D^5D ...#
D^6L ...# CLEARS LOCKS.
D^7S ...#
D^92 ...#SKI G4
D^=8 ...(
D^?B ...#MACRO CLEAR
D^#J ...#SKIP %B>3-3
D^*Q ...(
D^BY ...! %B IS INVALID PARAMETER TO CLEAR.
D^D6 ...#GAP 10
D^F# ...#EXIT
D^GG ...)
D^HN ...#SKIP %B-2
D^JW ...(
D^L4 ... CALL 0 (CLEAR1) [ DUMP ACCS.
D^M= ...#ACC %A
D^ND ...(
D^PL ... LDX 0 %A
D^QS ... STO 0 JWSP9 [ PCA ADDR.
D^S2 ...)
D^T8 ...#ACC %A
D^WB ...#SKIP
D^XJ ... STO %A JWSP9
D^YQ ...)
D^^Y ...#SKIP %B-2
F236 ...#SKIP
F24# ... STO 3 JWSP3
F25G ...#STRING %C
F26N ...#SKIP
F27W ... OPTMOD %D,FX2,LDN 3 HLOCK1
F294 ...#STRING %C
F2== ... OPTMOD %D,FX2,LDN 3 %C
F2?D ...#STRING %E
F2#L ...#SKIP
F2*S ...(
F2C2 ...#STRING %C%D
F2D8 ... XCLEAR %B,1
F2FB ...#STRING %C%D
F2GJ ...#SKIP
F2HQ ... XCLEAR %B,HLOCKN
F2JY ...)
F2L6 ...#STRING %E
F2M# ... XCLEAR %B,%E
F2NG ...#SKIP %B-2
F2PN ... CALL 0 (CLEAR2)
F2QW ...#SKIP %B-2
F2S4 ...#SKIP
F2T= ... LDX 3 JWSP3
F2WD ...#NORMAL
F2XL ...)
F2YS ...[??? CLEARALL SECT CENT FGN 9 DOC
F322 ...#SKIP G3
F338 ...(
F34B ...#SKI JSKI21
F35J ...(
F36Q ...#MAC CLEARALL
F37Y ...#NOR
F396 ...)
F3=# ...)
F3?G ...#SKI JSKI21
F3#N ...(
F3*W ...#SKI G4
F3C4 ...(
F3D= ...#MACRO CLEARALL
F3FD ...#SKIP %B>3-3
F3GL ...(
F3HS ...! %B IS INVALID PARAMETER TO CLEAR.
F3K2 ...#GAP 10
F3L8 ...#EXIT
F3MB ...)
F3NJ ...#SKIP %B-2
F3PQ ...(
F3QY ... CALL 0 (CLEAR1) [ DUMP ACCS.
F3S6 ...#ACC %A
F3T# ...(
F3WG ... LDX 0 %A
F3XN ... STO 0 JWSP9 [ PCA ADDR.
F3YW ...)
F424 ...#ACC %A
F43= ...#SKIP
F44D ... STO %A JWSP9
F45L ...)
F46S ...#SKIP %B-2
F482 ...#SKIP
F498 ... STO 3 JWSP3
F4=B ... STO 5 JWSP10 [STORE X5
F4?J ... MOD LDX 5 HLOCKBN,%C
F4#Q ... MOD LDN 3 HLOCKB1,%C
F4*Y ...MALL XCLEAR %B,1
F4C6 ... ADN 3 HLOCKLEN
F4D# ... BCT 5 MALL
F4FG ... LDX 5 JWSP10 [RESTORE X5
F4GN ...#SKIP %B-2
F4HW ... CALL 0 (CLEAR2)
F4K4 ...#SKIP %B-2
F4L= ...#SKIP
F4MD ... LDX 3 JWSP3
F4NL ...#NORMAL
F4PS ...)
F4R2 ...)
F4S8 ...[??? FINMOVE SECT CENT FGN 9 DOC
F4TB ...#SKIP G3
F4WJ ...(
F4XQ ...#MAC FINMOVE [J.S.RAYNER GEORGE 3 VERSION
F4YY ... MOD ADX %B ADATUM,%A
F526 ... SMO %D
F53# ... MOVE %C 0
F54G ...#NOR
F55N ...)
F56W ...#SKI G4
F584 ...(
F59= ...#MAC FINMOVE [J.S.RAYNER GEORGE 4 VERSION
F5=D ... FINMOVEZ %A,%B,%C,%D,%E,OUT,MVCH,%F,%G
F5?L ...#NOR
F5#S ...)
F5B2 ...[??? FINMVCH SECT CENT FGN 9 DOC
F5FW ...#SKIP G3
F5N6 ...(
F5WB #MAC FINMVCH [J.S.RAYNER GEORGE 3 VERSION
F6B2 MOD ADX %B ADATUM,%A
F6TL SMO %D
F7*= MVCH %C 0
F7HG ...#NOR
F7JW ...)
F7L= ...#SKI G4
F7ML ...(
F7P2 ...#MAC FINMVCH [J.S.RAYNER GEORGE 4 VERSION
F7QB ... FINMOVEZ %A,%B,%C,%D,%E,OUT,MOVE,%F,%G
F7RQ ...#NOR
F7T6 ...)
F7WG ...[??? FOUTMOVE SECT CENT FGN 9 DOC
F7Y2 ...#SKIP G3
F86= ...(
F8#G #MAC FOUTMOVE [J.S.RAYNER GEORGE 3 VERSION
F8S6 MOD ADX %B ADATUM,%A
F9?Q SMO %D
F9RB MOVE %B 0
F9^L ...#NOR
F=32 ...)
F=4B ...#SKI G4
F=5Q ...(
F=76 ...#MAC FOUTMOVE [J.S.RAYNER GEORGE 4 VERSION
F=8G ... FINMOVEZ %A,%B,%C,%D,%E,IN,MVCH,%F,%G
F=9W ...#NOR
F=?= ...)
F=#L ...[??? FOUTMVCH SECT CENT FGN 9 DOC
F=B6 ...#SKIP G3
F=JB ...(
F=QL #MAC FOUTMVCH [J.S.RAYNER GEORGE 3 VERSION
F?== MOD ADX %B ADATUM,%A
F?PW SMO %D
F#9G MVCH %B 0
F#CQ ...#NOR
F#F6 ...)
F#GG ...#SKI G4
F#HW ...(
F#K= ...#MAC FOUTMVCH [J.S.RAYNER GEORGE 4 VERSION
F#LL ... FINMOVEZ %A,%B,%C,%D,%E,IN,MOVE,%F,%G
F#N2 ...#NOR
F#PB ...)
F#PC ...[??? WORDSIN SECT CENT FGN 11 DOC
F#PD ...#SKI
F#PF ...[ AS FINMOVE BUT DOES UP TO 1024 WORDS
F#PG ...#MAC WORDSIN
F#PH ...#SKI G4
F#PJ ... FINMOVEZ %A,%B,%C,%D,%E,OUT,MVCH,%F,%G,MORE
F#PK ...#SKI G3
F#PL ...(
F#PM ... FADDRESS %A,%B
F#PN ... LDX 0 %D
F#PP ... REMOVE %B,%C,0
F#PQ ...)
F#PR ...#NOR
F#PS ...[??? WORDSOUT SECT CENT FGN 11 DOC
F#PT ...#SKI
F#PW ...[ AS FOUTMOVE BUT DOES UP TO 1024 WORDS
F#PX ...#MAC WORDSOUT
F#PY ...#SKI G4
F#P^ ... FINMOVEZ %A,%B,%C,%D,%E,IN,MVCH,%F,%G,MORE
F#Q2 ...#SKI G3
F#Q3 ...(
F#Q4 ... FADDRESS %A,%B
F#Q5 ... LDX 0 %D
F#Q6 ... REMOVE %B,%C,0
F#Q7 ...)
F#Q8 ...#NOR
F#Q9 ...[??? REMOVE SECT CENT FGN 11 DOC
F#Q= ...#SKI
F#Q? ...[ TO MOVE (OR MVCH) UP TO 1024 WORDS (OR CHARS)
F#Q# ...#MAC REMOVE
F#Q* ...#SKI %A<%B$%A
F#QB ...(
F#QC ...[ REVERSE ACCS IF A>B
F#QD ... REMOVE %B,%A,%C,%D,%F,%E,%G
F#QF ...#EXI
F#QG ...)
F#QH ...#STR MVCH,%D
F#QJ ...#SKI
F#QK ...(
F#QL ... TXL %C B513
F#QM ... BCS MREMOVE1 [J IF <513 TO MOVE
F#QN ... MVCH %A 0
F#QP ...MREMOVE1
F#QQ ... MOD MVCH %A 0,%C
F#QR ...#EXI
F#QS ...)
F#QT ...#STR %E%F
F#QW ...(
F#QX ... MOD MOVE %A 0,%C
F#QY ... SBN %C 512
F#Q^ ... ADX %A %C
F#R2 ... ADX %B %C [READY FOR NEXT MOVE IF ANY
F#R3 ... BNG %C MREMOVE2
F#R4 ... BZE %C MREMOVE2 [J IF ALL MOVED
F#R5 ... MOVE %A 0 [MOVE THE REST
F#R6 ...MREMOVE2 [NOW UPDATE ACCS AS REQUIRED
F#R7 ...#STR %E,S
F#R8 ... ADN %A 512
F#R9 ...#STR %E,N
F#R= ... SBX %A %C
F#R? ...#STR %F,S
F#R# ... ADN %B 512
F#R* ...#STR %F,N
F#RB ... SBX %B %C
F#RC ...#STR %G
F#RD ... ADN %C 512
F#RF ...#EXI
F#RG ...)
F#RH ... TXL %C B513
F#RJ ... BCS MREMOVE3 [ IF CAN BE DONE IN ONE MOVE
F#RK ... MOVE %A 0
F#RL ... ADN %A 512
F#RM ... ADN %B 512
F#RN ...MREMOVE3
F#RP ... MOD MOVE %A 0,%C
F#RQ ...#NOR
F#RR ...[??? FADDRESS SECT CENT FGN 9 DOC
F#S= ...#SKIP G3
F*2G ...(
F*8Q #MAC FADDRESS [J.S.RAYNER GEORGE 3 VERSION
F*NB MOD ADX %B ADATUM,%A
F*WL ...#NOR
F*X? ...)
F*XY ...#SKI G4
F*YK ...(
F*^= ...#MAC FADDRESS [J.S.RAYNER GEORGE 4 VERSION
F*^X ... OPTMOD %D,FX2,SBX %B %C+1
FB2J ... LDX 0 %B
FB39 ... SLC 0 2
FB3W ... TXL 0 BIT11
FB4H ... BCS MFADDRESS1
FB58 ... SBN %B 1024
FB5T ... OPTMOD %D,FX2,ADX %B %C+3
FB6G ... BRN MFADDRESS2
FB77 ...MFADDRESS1
FB7S ... OPTMOD %D,FX2,ADX %B %C+2
FB8F ...MFADDRESS2
FB96 ...#NOR
FB9R ...)
FB=D ...[??? LOCKCA SECT CENT FGN 9 DOC
FB?6 ...#SKIP G3
FBFB ...(
FBML #MAC LOCKCA [J S.RAYNER GEORGE 3 VERSION
FC7= #STR %C
FCLW (
FD6G LDX %C %B
FDL6 MOD ADX %C ADATUM,%A
FF5Q )
FF#2 ...#NOR
FF#9 ...)
FF#D ...#SKI G4
FF#M ...(
FF#W ...#MACRO LOCKCA
FF*5 ...#STR 1,%C
FF*# ... STO 1 JWSP1
FF*H ...#STR 2,%D
FF*Q ...(
FF*^ ...#STR 2,%C
FFB8 ... STO 2 JWSP2
FFBC ... OPTMOD %D,FX2,LDN 2 0
FFBL ...)
FFBT ... LDX 0 HLOCK1(2)
FFC4 ... BNZ 0 (GEOERR)
FFC? ... LDN 0 1024+CHREAD+CHWRITE
FFCG ... STO 0 HLOCK1(2)
FFCP ... LDX 0 %B
FFCY ... ANDX 0 B2T13
FFD7 ... STO 0 HLOCK1+1(2)
FFDB ... LDX 1 EVENT5(2)
FFDK ... ANDX 1 B2T13
FFDS ... STO 1 HLOCK1+2(2)
FFF3 ...MLOCKCA1
FFF= ... SRC 1 11
FFFF ... LDN 0 #0010
FFFN ... BNG 1 MLOCKCA2
FFFX ... LDCT 0 #001
FFG6 ...MLOCKCA2
FFG* ... SMO BGLOT
FFGJ ... ADS 0 0(1)
FFGR ... BNG 2 MLOCKCA3
FFH2 ... LDX 1 EVENT6(2)
FFH9 ... BZE 1 MLOCKCA4
FFHD ... STO 1 HLOCK1+3(2)
FFHM ... ORX 2 GSIGN
FFHW ... LDN 0 1024
FFJ5 ... ADS 0 HLOCK1(2)
FFJ# ... BRN MLOCKCA1
FFJH ...MLOCKCA3
FFJQ ...#STR 2,%D
FFJ^ ...#SKIP
FFK8 ... ERX 2 GSIGN
FFKC ...MLOCKCA4
FFKL ...#STR 1,%C
FFKT ... LDX 1 JWSP1
FFL4 ...#STR 2,%D
FFL? ...(
FFLG ...#STR 2,%C
FFLP ... LDX 2 JWSP2
FFLY ...)
FFM7 ...#STRING %C
FFMB ... OPTMOD %D,FX2,LDX %C EVENT5
FFMK ...#NORMAL
FFMS ...)
FFN3 ...[??? FSUM SECT CENT FGN 9 DOC
FFNG ...#SKIP G3
FFWQ ...(
FG52 # FSUM THIS MACRO'SUMS'AN AREA OF AN OBJ PROG USING 127 INSTR
FGJL #MAC FSUM [J.S.RAYNER GEORGE 3 VERSION
FH4= MOD ADX %C ADATUM,%A
FHHW SMO %D
FJ3G SUM %B 0
FJ9Q ...#NOR
FJ=6 ...)
FJ=G ...# FSUM THIS MACRO'SUMS'AN AREA OF A OBJ PROG USING 127 INSTR
FJ=W ...#SKI G4
FJ?= ...(
FJ?L ...#MAC FSUM [J.S.RAYNER GEORGE 4 VERSION
FJ#2 ... NGX 0 %C [CALL NO OF WORDS OF AREA THAT
FJ#B ... ANDN 0 #1777 [ARE WITHIN THE FIRST PAGE
FJ#Q ... BNZ 0 MFSUM1
FJ*6 ... LDN 0 1024
FJ*G ...MFSUM1
FJ*W ... TXL 0 %D [CALC NO OF WORDS TO BE INCLUDED
FJB= ... BCS MFSUM2 [IN FIRST SUM
FJBL ... LDX 0 %D
FJC2 ...MFSUM2
FJCB ... OPTMOD %F,FX2,SBX %C %E+1
FJCQ ... OPTMOD %F,FX2,ADX %C %E+2
FJD6 ... SMO 0
FJDG ... SUM %B 0 [SUM AREA IN FIRST PAGE
FJDW ... SBX 0 %D [MINUS NO OF WORD LEFT
FJF= ... BZE 0 MFSUM3 [JUMP IF NONE
FJFL ... NGX 0 0
FJG2 ... STO %B JWSP1 [PRESERVE SUM SO FAR
FJGB ... OPTMOD %F,FX2,LDX %C %E+3
FJGQ ... SMO 0
FJH6 ... SUM %B 0 [SUM AREA IN SECOND PAGE
FJHG ... ADX %B JWSP1 [TOTAL SUM
FJHW ... BVSR £ [CLEAR V - PROBABLY UNNECESSARY
FJJ= ...MFSUM3
FJJL ...#NOR
FJK2 ...)
FJKB ...[??? FILL SECT CENT FGN 9 DOC
FJL= ...#SKIP G3
FJSG ...(
FK2Q #MAC FILL [J.S.RAYNER GEORGE 3 VERSION
FKGB MOD ADX %B ADATUM,%A
FL22 SMO %B
FLFL STO %C 0
FL^= LDX 0 %D
FMDW BCT 0 MFILL1
FMYG BRN MFILL2
FND6 MFILL1
FNXQ SMO %B
FPCB LDN %C 1
FPX2 SMO 0
FQBL MOVE %B 0
FQW= MFILL2
FR4G ...#NOR
FR4R ...)
FR54 ...#SKI G4
FR5* ...(
FR5L ...#MAC FILL [J.S.RAYNER GEORGE 4 VERSION
FR5X ... STO %C JWSP2
FR68 ... LDX 0 JWSP2
FR6F ... LDX %C %D
FR6Q ... STO %C JWSP1
FR73 ... OPTMOD %F,FX2,SBX %B %E+1
FR7# ... ANDN %B #7777
FR7K ... SBN %B 1024
FR7W ... BPZ %B MFILL4 [JUMP ALL IN SECOND PAGE
FR87 ... NGX 0 %B [WORDS IN FIRST PAGE
FR8D ... TXL 0 %C
FR8P ... BCC MFILL1
FR92 ... LDX %C 0 [WORDS TO FILL IN FIRST PAGE
FR9? ...MFILL1
FR9J ... ADN %B 1024
FR9T ... OPTMOD %F,FX2,ADX %B %E+2
FR=6 ...MFILL5
FR=C ... LDX 0 JWSP2
FR=N ... SMO %B
FR=^ ... STO 0 0
FR?= ... SBS %C JWSP1
FR?H ... BCT %C MFILL2
FR?S ... BRN MFILL6 [ONLY ONE WORD TO FILL
FR#5 ...MFILL2
FR#B ... LDX 0 %C
FR#M ... SMO %B
FR#Y ... LDN %C 1
FR*9 ... SMO 0
FR*G ... MOVE %B 0
FR*R ...MFILL6
FRB4 ... LDX %C JWSP1
FRB* ... BZE %C MFILL3
FRBL ... LDN %B 0
FRBX ...MFILL4
FRC8 ... OPTMOD %F,FX2,ADX %B %E+3
FRCF ... BRN MFILL5
FRCQ ...MFILL3
FRD3 ...#NOR
FRD# ...)
FRDK ...[??? FPROGMOV SECT CENT FGN 9 DOC
FRF2 ...#SKIP G3
FRM= ...(
FRTG #MAC FPROGMOVE[J.S.RAYNER GEORGE 3 VERSION
FS*6 MOD ADX %B ADATUM,%A
FSSQ MOD ADX %F ADATUM,%E
FT#B MOD MOVE %B 0,%I
FTS2 #NOR
FTS= ...)
FTSG ...#
FTSQ ...#
FTT2 ...#SKI G4
FTT= ...(
FTTG ...#MACRO FPROGMOVE
FTTQ ...#SKIP %F-%B-1
FTW2 ...! WRONG PARAMETERS
FTW= ... STO 1 JWSP1
FTWG ... STO 2 JWSP2 [ DUMP ACCS.
FTWQ ... OPTMOD %D,FX2,LDN 0 %C
FTX2 ... STO 0 JWSP3 [ -> OUT LOCKDOWN LIST.
FTX= ... OPTMOD %H,FX2,LDN 1 %G
FTXG ... STO 1 JWSP4 [ -> IN LOCKDOWN LIST
FTXQ ... SBX %F 1(1)
FTY2 ... ADX %F 2(1) [ ABSOLUTE IN ACC
FTY= ... NGX 0 %F
FTYG ... ANDN 0 #1777
FTYQ ... BZE 0 MFP1
FT^2 ... LDN 0 1024
FT^= ...MFP1 BXL 0 %I,MFP2
FT^G ... LDX 0 %I
FT^Q ...MFP2 STO 0 JWSP6 [ = MIN(LENGTH,END OF PAGE) IN.
FW22 ... LDX 1 JWSP3
FW2= ... SBX %B 1(1)
FW2G ... ADX %B 2(1) [ ABSOLUTE OUT ACC.
FW2Q ... NGX 1 %B
FW32 ... ANDN 1 #1777
FW3= ... BZE 1 MFP3
FW3G ... LDN 1 1024
FW3Q ...MFP3 BXL 1 %I,MFP4
FW42 ... STO 1 JWSP5 [ MIN(LENGTH,END OF PAGE) OUT.
FW4= ...MFP4
FW4G ... LDN 2 0
FW4Q ... BXL 1 0,MFP5
FW52 ... LDN 2 1
FW5= ... LDX 1 0 [ X1 = MIN
FW5G ...MFP5
FW5Q ... ACCSTO %I,JWSP5(2)
FW62 ... MOVE %B 0(1) [ MOVE TO FIRST PAGE BOUNDARY
FW6= ... BXE 1 %I,MFP7 [ NOT NECESSARY
FW6G ...MFP6 SBS 1 JWSP5
FW6Q ... SBS 1 JWSP6
FW72 ... SMO JWSP3(2)
FW7= ... LDX 0 3
FW7G ... STO 0 %B(2) [ UPDATE FIRST ACC
FW7Q ... ERN 2 1
FW82 ... ADS 1 %B(2) [ UPDATE SECOND ACC.
FW8= ... LDX 1 JWSP5(2)
FW8G ... BZE 1 MFP7A
FW8Q ... MOVE %B 0(1)
FW92 ...MFP7A
FW9= ... BNG 2 MFP7
FW9G ... ORX 2 GSIGN
FW9Q ... BRN MFP6
FW=2 ...MFP7
FW== ... LDX 1 JWSP1
FW=G ... LDX 2 JWSP2
FW=Q ...#NORMAL
FW?2 ...)
FW?= ...[??? PROGMOVE SECT CENT FGN 9 DOC
FW#* ...#SKI G3
FW*4 ...(
FW*R ...#MAC PROGMOVE [ONJ(:CENT) G3 VERSION
FWBG ...[
FWC9 ... TRACE %E,PROGMV3
FWCY ...[
FWDM ... LDX 0 %E [LOAD NO. OF WORDS TO BE MOVED
FWFB ... MOD ADX %B ADATUM,%A
FWG5 ... MOD ADX %D ADATUM,%C [SO WE NOW HAVE REAL ADDR
FWGS ... SBN 0 513
FWHH ... BNG 0 MOV513 [J. IF LESS THAN 513 WORDS TO BE MVD
FWJ= ... MOVE %B 0 [DO A MOVE OF 512 WORDS
FWJ^ ... ADN %B 512 [UPDATE READ POINTER
FWKN ... ADN %D 512 [UPDATE WRITE PPOINTER
FWLC ...MOV513
FWM6 ... MOD MOVE %B 0,%E [NOW MOVE REMAINING WORDS
FWMT ... LDX 1 FX1
FWNJ ... LDX 2 FX2 [RESET X1 + X2
FWP? ...#NOR
FWPC ...)
FWPH ...#SKI G4
FWPM ...(
FWPR ...#MAC PROGMOVE [OWEN N JOHN :CENT
FWPX ...[
FWQ3 ...[ THIS MACRO ENABLES AN AREA OF A PROGRAM TO BE COPIED TO AN AREA
FWQ7 ...[ OF ANOTHER PROGRAM - NO CHECKS ARE CARRIED CONCERNING THE AREAS
FWQ? ...[ INVOLVED AND IT IS ASSUMED THAT THE AREAS
FWQC ...[ HAVE BEEN CHECKB'ED
FWQH ...[
FWQM ...[ PARAMETERS - %A = PCA ADDRESS CONCERNING AREA TO BE READ
FWQR ...[
FWQX ...[ %B = VIRTUAL - - - - - -
FWR3 ...[ (CONTENTS)
FWR7 ...[ %C = PCA - - - - - WRITE
FWR? ...[
FWRC ...[[ %D = VIRUAL - - - - - -
FWRH ...[
FWRM ...[ %E = NO. OF WORDS TO BE MOVED
FWRR ...[
FWRX ...[ %B+%D MUST NOT BE X0,X1,X2 + MUST BE CONSELUTIVE ACCUMULATOR
FWS3 ...[
FWS7 ...[
FWS? ... TRACE %E,PROGMV
FWSC ...[
FWSH ... ACCSTO %E,JWSP5 [STORE NO. OF WORDS TO BE MOVED
FWSM ...[
FWSR ... ACCSTO %A,JWSP1
FWSX ... ACCSTO %C,JWSP2 [STORE BOTH PCA'S
FWT3 ...[
FWT7 ... LDX 0 GSIGN
FWT? ... ORS 0 JWSP1
FWTC ... ORS 0 JWSP2 [SET B0 OF PCA'S SO PAGES NOT BRGHT
FWTH ...[
FWTM ... STO %B JWSP3
FWTR ... STO %D JWSP4
FWTX ...[ REL POSITIONS STORED
FWW3 ... LDN %B 0
FWW7 ... LDN %D 0 [SET ACCS=0 TO FORCE SEARCH FOR PAGE
FWW? ...[
FWWC ...[ THERE COME THE GUTS OF IT ALL !!
FWWH ...[
FWWM ...MAGAN
FWWR ... BNZ %B MNTLOCA [JUMP IF HAVE PAGE ADDR
FWWX ...[
FWX3 ... LDX 1 JWSP1
FWX7 ... LDX 2 JWSP3 [SET UP ENTRY FOR PAGE
FWX? ...[
FWXC ... CALL 0 (HFIRST1) [SEARCH
FWXH ...[
FWXM ... LDX %B 0 [PUT PAGE ADDR IN %B
FWXR ...[
FWXX ...MNTLOCA
FWY3 ... BNZ %D MNTLOCB [JUMP IF PAGE ADDR OKAY
FWY7 ...[
FWY? ... LDX 1 JWSP2
FWYC ... LDX 2 JWSP4 [SET UP FOR SEARCH
FWYH ...[
FWYM ... CALL 0 (HFIRST1) [SEARCH
FWYR ...[
FWYX ... LDX %D 0 [RESET CORRECT PAGE ADDR
FW^3 ...[
FW^7 ...MNTLOCB
FW^? ... LDX 1 JWSP3
FW^C ... ANDN 1 #1777 [FIND REL ADDR IN PAGE (READ)
FW^H ...[
FW^M ... ANDX %B B2T13 [FIRST TAKE OUT PAGE DISPLACEMENT
FW^R ... ADX %B 1 [RELATIVIZE FOR START OF READ
FW^X ...[
FX23 ... LDX 2 JWSP4
FX27 ... ANDN 2 #1777 [FIND REL ADDR IN PAGE (WRITE)
FX2? ...[
FX2C ... ANDX %D B2T13 [REMOVE PAGE DISLACEMENT
FX2H ... ADX %D 2 [RELITIVIZE FOR START OF WRITE
FX2M ...[
FX2R ... BXL 1 2,MBGTR
FX2X ... LDX 2 1
FX33 ...[ [FIND THE LARGER REL ADDR
FX37 ...MBGTR
FX3? ... LDN 1 1024
FX3C ... SBX 1 2 [X1=MAX MOVE ALLOWED TO BOUNDARY
FX3H ...[
FX3M ... BXL 1 JWSP5,MTOMV
FX3R ... LDX 1 JWSP5 [TEST AREA WE CAN MOVE63-63
F^P2 !JSR CHARS1
G28L )
G2N= #STR %B
G37W (
G3MG #FID 6 11 %B
G476 #SKIP %B>63-63
G4LQ !JSR CHARS2
G56B )
G5L2 #STR %C
G65L (
G6K= #FID 12 17 %C
G74W #SKIP %C>63-63
G7JG !JSR CHARS3
G846 )
G8HQ #STR %D
G93B (
G9H2 #FID 18 23 %D
G=2L #SKIP %D>63-63
G=G= !JSQ CHARS4
G=^W )
G?FG #NOR
G?P# ...[??? TRUSTED SECT CENT FGN 9 DOC
G?^6 # THIS MACRO TESTS WHETHER A PROGRAM IS ALLOWED TO USE ANY OF THE
G#DQ # TRUSTED FACILITIES AVAILABLE.
G#YB # %A=POINTER TO PCA OF PROGRAM
G*D2 # %B=LABEL TO JUMP TO IF THE FACILITY IS NOT AVAILABLE
G*XL # %C=Q,%D=R,%E=S,%F=T-THESE ARE OPTIONAL AND SPECIFY THE STATUSES
GBC= # BEING TESTED FOR.
GBWW #
GCBG #MAC TRUSTED
GCW6 #DEF MTRU=0
GD*Q #DEF MTRUQ=#100
GDTB #DEF MTRUR=#40
GF*2 #DEF MTRUS=#20
GFSL #DEF MTRUT=#10
GG#= LDCT 0 MTRU%C+MTRU%D+MTRU%E+MTRU%F
GGRW MOD ORX 0 ATRUST,%A
GH?G MOD SBX 0 ATRUST,%A
GHR6 BNZ 0 %B
GJ=Q #FRE MTRU,MTRUQ,MTRUR,MTRUS,MTRUT
GJQB #NOR
^^^^ ...14502610001300000000