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