22^= # RUTH PORTER 23DW ...[??? CAPCAX SECT CENT FGN 7 DOC 2BN= # 2C7W # CAPCAX MACRO IS IDENTICAL TO CAPCA IN GEORGE 3 2CMG # IN GEORGE 4 IT IS SIMILAR BUT INSTEAD OF CLEARING THE LOCKDOWN 2D76 # LIST IT MARKS THE ENTRIES AS PASSIVE SO THEY WILL BE RESTORED 2DLQ # BY PCACA. A ROUTINE MUST CLEAR THE PASSIVE 2F6B # ENTRIES BEFORE RESTARTING THE PROG OR REENTERING THE COM.PROC 2FL2 # CURRENTLY THIS IS A PRIVATE FACILITY TO AVOID REWRITING LPMOP ETC 2G5L #SKIP G4 2GK= ( 2H4W #MAC CAPCAX 2HJG #STR %A 2J46 #SKI 2JHQ DOWN CAPCA,4 2K3B #STR %A 2KH2 ( 2L2L LDN 0 %B+%A 2LG= #STR %C 2L^W ( 2MFG SLL 0 12 2M^6 ORN 0 %D+%C 2NDQ ) 2NYB SMO FX2 2PD2 STO 0 ACOMMUNE1 2PXL DOWN CAPCA,3 2QC= ) 2QWW #NOR 2R9? ...) 2RHN ...[??? CLEARPE SECT CENT FGN 7 DOC 2RW6 # CLEARPE MACRO IS PROVIDED TO BE USED IN CONJUNCTION WITH THE 2S*Q # CAPCAX FACILITY:IT CLEARS THE PASSIVE ENTRIES WHICH CAPCAX LEAVES 2STB # IN THE LOCKDOWN LIST. 2T*2 # IT MUST BE OBEYED FROM THE CPA. 2WJ4 ...#SKI G4 2WM^ ...( 2WRW #MACRO CLEARPE 2X?G STO 2 JWSP2 2XR6 FPCACA 2,FX2 2Y=Q CLEAR 2,2,,2,HLOCKN 2YQB LDX 2 JWSP2 2^=2 #NORMAL 2^PL ...) 329= ...[??? XCLEAR SECT CENT FGN 7 DOC 4Y^4 ...#SKI G4 4^4^ ...( 4^8W #MACRO XCLEAR 4^NG #SKIP %A-2 5286 CALL 0 (CLEAR) 52MQ #SKIP %A&1<1$1 537B STOZ 0(3) 53M2 #SKIP %A-3<1$1 546L SETBIT 0,0(3) 54L= #SKIP %B-1 555W ( 55KG ADN 3 HLOCKLEN 5656 XCLEAR %A,%B-1 56JQ ) 574B #NORMAL 57J2 ...) 583L ...[??? INMOVEZ SECT CENT FGN 7 DOC 5X^= # INMOVEZ MACRO IS USED TO WRITE INMOVE,INMVCH,OUTMOVE,OUTMVCH 5YDW # FOR GEORGE 4. 5YYG # ANYTHING UNDERE #STRING IN,... IS INCLUDED IN AN 'IN'MACRO ETC 5^8# ...#SKI G4 5^#9 ...( 5^D6 #MAC INMOVEZ [J.S.RAYNER GEORGE 4 ONLY 5^XQ STO 1 JWSP1 [SAVE X1,X2 62CB STO 2 JWSP2 62X2 LDX 0 %C [GEORGE ADDRESS 63BL STO 0 JWSP4 63W= LDX 0 %D [LENGTH OF MOVE 64*W STO 0 JWSP5 64TG STOZ JWSP6 65*6 LDX 0 %B [OBJ PROG ADDR 65SQ LDX 1 %A [PCA ADDR 66#B LDX 2 0 66S2 #STR MOVE,%F 67?L ANDN 0 #1777 67R= #STR MVCH,%F 68=W ANDX 0 BN2T13 68QG STO 0 JWSP3 69=6 #STR MVCH,%F 69PQ SLC 0 2 6=9B ADX 0 JWSP5 6=P2 #STR MOVE,%F 6?8L SBN 0 1024 6?N= #STR MVCH,%F 6#7W SBX 0 BIT11 6#MG BNG 0 MINMOVEZ1 6*76 SBS 0 JWSP5 [LENGTH OF FIRST MOVE 6*LQ STO 0 JWSP6 [LENGTH OF SECOND MOVE 6B6B MINMOVEZ1 6BL2 CALL 0 (HFIRST1) 6C5L ORX 0 JWSP3 [SET UP X0,1 FOR MOVE 6CK= #STR IN,%E 6D4W ( 6DJG LDX 1 0 6F46 LDX 0 JWSP4 6FHQ ) 6G3B #STR OUT,%E 6GH2 LDX 1 JWSP4 6H2L SMO JWSP5 6HG= #STR MOVE,%F 6H^W MOVE 0 0 6JFG #STR MVCH,%F 6J^6 ( 6KDQ MVCH 0 0 6KYB #STR IN,%E 6LD2 STO 0 JWSP4 6LXL #STR OUT,%E 6MC= STO 1 JWSP4 6MWW ) 6NBG LDX 0 JWSP6 6NW6 BZE 0 MINMOVEZ2 6P*Q CALL 0 (HNEXT) 6PTB #STR IN,%E 6Q*2 ( 6QSL LDX 1 0 6R#= LDX 0 JWSP4 6RRW #STR MOVE,%F 6S?G ADX 0 JWSP5 6SR6 ) 6T=Q #STR OUT,%E 6TQB ( 6W=2 LDX 1 JWSP4 6WPL #STR MOVE,%F 6X9= ADX 1 JWSP5 6XNW ) 6Y8G SMO JWSP6 6YN6 #STR MOVE,%F 6^7Q MOVE 0 0 6^MB #STR MVCH,%F 7272 MVCH 0 0 72LL MINMOVEZ2 736= LDX 1 JWSP1 73KW LDX 2 JWSP2 745G #NOR 74K6 ...) 754Q ...[??? FINMOVEZ SECT CENT FGN 7 DOC 75JB ...# FINMOVEZ MACRO IS USED TO WRITE FINMOVE,FOUTMVCH ETC IN GEORGE 4 7642 ...#SKI G4 76HL ...( 773= ...#MAC FINMOVEZ [J.S.RAYNER GEORGE 4 ONLY 77GW ... OPTMOD %H,FX2,SBX %B %E+1 782G ...#STR %I 78G6 ...( 78^Q ... LDX 0 %B 79FB ... SLC 0 2 79^2 ... TXL 0 BIT11 7=DL ... BCS MFINMOVEZ5 [J IF SOME OF AREA IN FIRST PAGE 7=Y= ... SBN %B 1024 7?CW ... OPTMOD %H,FX2,ADX %B %E+3 7?XG ... LDX 0 %D 7#C6 ... BRN MFINMOVEZ4 7#WQ ...) 7*BB ...MFINMOVEZ5 7*W2 ... OPTMOD %H,FX2,ADX %B %E+2 7B*L ...#STR MOVE,%G 7BT= ...( 7C#W ... NGX 0 %B 7CSG ... ANDN 0 #1777 7D#6 ... BNZ 0 MFINMOVEZ1 7DRQ ... LDN 0 1024 [NO OF WORDS IN FIRST PAGE 7F?B ...MFINMOVEZ1 7FR2 ...) 7G=L ...#STR MVCH,%G 7GQ= ...( 7H9W ...#STR %I 7HPG ...#SKIP 7J96 ...( 7JNQ ... LDX 0 %B 7K8B ... SLC 0 2 7KN2 ...) 7L7L ... ANDN 0 #7777 7LM= ... SBX 0 BIT11 7M6W ... NGX 0 0 [NO OF CHARS IN FIRST PAGE 7MLG ...) 7N66 ... TXL 0 %D [NO OF WORDS/CHARS IN FIRST MOVE 7NKQ ... BCS MFINMOVEZ2 7P5B ... LDX 0 %D 7PK2 ...MFINMOVEZ2 7Q4L ...#STR %J 7QJ= ...( 7R3W ...#STR MVCH,%G 7RHG ... REMOVE %B,%C,0,MVCH 7S36 ...#STR MOVE,%G 7SGQ ... REMOVE %B,%C,0,,,N,N 7T2B ... SBX 0 %D 7TG2 ... BZE 0 MFINMOVEZ3 7T^L ... NGX 0 0 [WORDS/CHARS LEFT TO MOVE 7WF= ... OPTMOD %H,FX2,LDX %B %E+3 7WYW ...MFINMOVEZ4 7XDG ...#STR MVCH,%G 7XY6 ... REMOVE %B,%C,0,MVCH 7YCQ ...#STR MOVE,%G 7YXB ... REMOVE %B,%C,0 7^C2 ...MFINMOVEZ3 7^WL ...#EXI [FINISHED IF %J PRESENT 82B= ...) 82TW ... SMO 0 83*G ...#STR MOVE,%G 83T6 ...( 84#Q ...#STR IN,%F 84SB ... MOVE %C 0 85#2 ...#STR OUT,%F 85RL ... MOVE %B 0 86?= ... ADX %C 0 86QW ...) 87=G ...#STR MVCH,%G 87Q6 ...( 889Q ...#STR IN,%F 88PB ... MVCH %C 0 8992 ...#STR OUT,%F 89NL ... MVCH %B 0 8=8= ...) 8=MW ... SBX 0 %D 8?7G ... BZE 0 MFINMOVEZ3 8?M6 ... NGX 0 0 [WORDS/CHARS LEFT TO MOVE 8#6Q ... OPTMOD %H,FX2,LDX %B %E+3 8#LB ...MFINMOVEZ4 8*62 ... SMO 0 8*KL ...#STR MOVE,%G 8B5= ...( 8BJW ...#STR IN,%F 8C4G ... MOVE %C 0 8CJ6 ...#STR OUT,%F 8D3Q ... MOVE %B 0 8DHB ...) 8F32 ...#STR MVCH,%G 8FGL ...( 8G2= ...#STR IN,%F 8GFW ... MVCH %C 0 8G^G ...#STR OUT,%F 8HF6 ... MVCH %B 0 8HYQ ...) 8JDB ...MFINMOVEZ3 8JY2 ...#NOR 8KCL ...) 8N*B ...[??? LMASK SECT CENT FGN 7 DOC =X72 # =XLL # LMASK OBTAINS A MASK WHICH IS THE LENGTH OF A TABLE LESS 1 =XWD ...#SKI G4 =Y2* ...( =Y6= #MAC LMASK =YKW LDCT %A #600 =^5G ANDX %A %B =^K6 LDCH %A BTABLENS(%A) [=#00173777 ?24Q #NOR ?29Y ...) ?6#6 ...[??? FDESC SECT CENT FGN 7 DOC ?6FB # ?6^2 # FDESC GIVEN THE ADDRESS OF A PAGE/SEGMENT TABLE ENTRY OBTAINS ?7DL # THE DESCRIPTOR WORD ASSOC.WITH A SECTION OF THE TABLE ?7ND ...#SKI G4 ?7S* ...( ?7Y= #MAC FDESC [J.S.RAYNER.G4 ONLY ?8CW LDX 0 %A ?8XG SRL 0 4 ?9C6 ANDX %A B0T13 ?9WQ DCH 0 %A ?=BB #NOR ?=HJ ...) ?WPB ...[??? INITSCAN SECT CENT FGN 7 DOC ?WWL # INITSCAN THIS MACRO IS USED BEFORE PT SCAN TO ADJUST THE LENGTH ?XB= # OF THE AREA TO BE SCANNED SO THAT IT LIES WITHIN THE ?XTW # AREA COVERED BY THE SEGMENT TABLE ?Y*G # %A-ADDRESS %B-LENGTH ?YT6 # %C-PCA %D-EXIT LABEL ?^#Q # ?^JJ ...#SKI G4 ?^NF ...( ?^SB #MAC INITSCAN [J.S.RAYNER.G4 ONLY #2#2 LDCT 1 #600 #2RL MOD ANDX 1 ASEGTAB,%C #3?= LDCH 1 BTABLENS(1) #3QW ADN 1 1 #4=G SRC 1 8 #4Q6 SBX 1 %A #59Q BNG 1 %D #5PB BZE 1 %D #692 SBX 1 %B #6NL BPZ 1 MINITSCAN #78= ADS 1 %B #7MW MINITSCAN #87G #NOR #8#N ...) #8FW ...[??? PTSCAN SECT CENT FGN 7 DOC #8M6 # PTSCAN GIVEN A VIRTUAL ADDRESS AND A LENGTH THIS MACRO OBTAINS #96Q # A PTR TO THE FIRST PAGE TABLE ENTRY & THE NO OF ENTRIES #9LB # IN THE AREA THAT LIE WITHIN THE SAME PAGE TABLE #=62 # %A-QUOTA/EXISTS %B-SEG/PAGE #=KL # %C-VIRTUAL ADDRESS %D-LENGTH #?5= # %E-PCA %F-EXIT LABEL #?JW # %G-COOR LABEL %H-ADDRESS OF ENTRY ##4G # %I-NO.OF ENTRIES %J-LENGTH OF TABLE ##J6 # %K-PAGE NO.OF ENTRY %L-FDESC/LOCK #*3Q # %M-SEG TABLE ENTRY %N-LABEL IF GAP IN TABLES #*HB # #*R8 ...#SKI G4 #*X5 ...( #B32 #MAC PTSCAN [J.S.RAYNER.G4 ONLY #BGL MPTSCAN1 #C2= BZE %D %F #CFW #STR P,%B #C^G #SKI #DF6 ( #DYQ LDCT 1 #600 #FDB MOD ANDX 1 ASEGTAB,%E #FY2 LDCH 0 BLENCH(1) #GCL ) #GX= LDX 1 %C #HBW SLC 1 8 #HWG #STR P,%B #JB6 #SKI #JTQ ( #K*B ANDX 0 1 #KT2 BNZ 0 MPTSCAN1A [OUT OF RANGE OF SEG TAB #L#L ) #LS= ANDN 1 #77 #M?W MOD ADX 1 ASEGTAB,%E #MRG #STR %M #N?6 STO 1 %M #NQQ #STR Q,%A #P=B #SKIP #PQ2 ( #Q9L LDX 0 0(1) #QP= SRC 0 1 #R8W BPZ 0 MPTSCAN2 #RNG ) #S86 #STR E,%A #SMQ #SKIP #T7B ( #TM2 LDX 0 0(1) #W6L SRC 0 2 #WL= BPZ 0 MPTSCAN2 #X5W ) #XKG MPTSCAN1A #Y56 #STR S,%B #YJQ #SKIP #^4B ( #^J2 LDCT 0 2 *23L ) *2H= #STR P,%B *32W #SKIP *3GG ( *426 LDX 0 %C *4FQ ANDX 0 B8T13 *4^B SBX 0 BIT7 *5F2 NGX 0 0 *5YL ) *6D= ADS 0 %C *6XW SBS 0 %D *7CG #STR %N *7X6 ( *8BQ BPZ %D MPTSCAN2A *8WB ADX 0 %D *9B2 LDN %D 0 *9TL MPTSCAN2A *=*= SRL 0 10 *=SW STO 0 %I *?#G BRN %N *?S6 ) *#?Q #STR %N *#RB #SKIP **?2 ( **QL BNG %D %F *B== BRN MPTSCAN1 *BPW ) *C9G MPTSCAN2 *CP6 LDX 1 0(1) *D8Q ANDX 1 B0T19 *DNB STO 1 %H *F82 ANDX 1 B0T1 *FML #STR P,%B *G7= #SKIP *GLW ( *H6G LDCH 0 BLENCH(1) *HL6 SLL 0 10 *J5Q ANDX 0 %C *JKB BNZ 0 MPTSCAN1A [J IF OUT OF RANGE OF PAGE TABLE *K52 ) *KJL LDCH 1 BTABLENS(1) *L4= ADN 1 1 *LHW STO 1 %I *M3G #STR %J *MH6 STO 1 %J *N2Q #STR S,%B *NGB #SKIP *P22 ( *PFL LDCT 0 2 *P^= ADS 0 %C *QDW SBS 0 %D *QYG ) *RD6 #STR P,%B *RXQ #SKIP *SCB ( *SX2 LDX 0 %C *TBL ANDX 0 B8T13 *TW= SLL 1 10 [LENGTH FROM START OF AREA TO *W*W SBX 0 1 [END OF PAGE TABLE - NEGATED ! *WTG SBS 0 %C [UPDATE VIRT ADDR & LENGTH *X*6 ADS 0 %D *XSQ ADX 0 1 *Y#B SRL 0 10 *YS2 #STR %K *^?L STO 0 %K [PAGE NO OF START OF AREA *^R= ADS 0 %H [ADJUST PAGE TABLE PTR B2=W SBS 0 %I [& COUNT OF ENTRIES B2QG ) B3=6 BPZ %D MPTSCAN3 B3PQ #STR S,%B B49B #SKIP B4P2 ( B58L ADX %D BIT7 B5N= SLL 1 10 B67W SBX %D 1 B6MG BPZ %D MPTSCAN4 B776 ) B7LQ SRA %D 10 B86B ADS %D %I B8L2 MPTSCAN4 B95L LDN %D 0 B9K= MPTSCAN3 B=4W #STR %L B=JG LDX 1 %H B?46 #STR %L B?HQ ( B#3B FDESC 1 B#H2 #STR L,%L B*2L #SKIP B*G= COUNTUP 1 B*^W ) BBFG #NOR BB^6 ...) BCDQ ...[??? FFSTDESC SECT CENT FGN 7 DOC C^Q6 # D29Q # FFSTDESC GIVEN AN ACCUMULATOR CONTAINING THE ADDR OF A PAGE/SEG D2PB # TABLE ENTRY THE MACRO OVERWRITES IT WITH THE ADDR OF D392 # THE FIRST DESCRIPTOR ASSOC.WITH THE TABLE D3NL # D3YD ...#SKI G4 D44* ...( D48= #MAC FFSTDESC [J.S.RAYNER.G4 ONLY D4MW FDESC %A [ADDR OF ONE OF THE TABLES DESC WORDS D57G MOD LDX 0 0,%A D5M6 SLC 0 7 D66Q ANDN 0 15 [EXTRACT LENGTH OF TABLE D6LB NGX 0 0 D762 ANDX %A 0 [ADDR OF FIRST DESC WORK D7KL #NOR D7QS ...) D7Y2 ...[??? FSUD SECT CENT FGN 7 DOC D85= # D8JW # FSUD LOCATES THE SUD WITH SPECIFIED NUMBER D94G # D9## ...#SKI G4 D9D9 ...( D9J6 #MAC FSUD D=3Q LDN %A BSUD D=HB MFSUD LDX %A FPTR(%A) D?32 TXL %A BIT11 D?GL BCS %C D#2= TXU %B HSUDNO(%A) D#FW BCS MFSUD D#^G #NOR D*6N ...) D*?W ...[??? SCANINIT SECT CENT FGN 7 DOC D*F6 # D*YQ # SCANINIT DBDB # GIVEN THE VIRTUAL ADDRESS & LENGTH OF AN AREA,IN PAGE NUMBERS, DBY2 # THIS MACRO CHECKS WHETHER THE AREA INVOLVED IS COVERED BY DCCL # A SEGMENT TABLE & IF NOT REDUCES THE LENGTH OF THE AREA SO THAT DCX= # IT IS. THE MACRO IS INTENDED FOR USE BEFORE SCANPT SO THAT THERE DDBW # IS NO NEED FOR SCANPT TO CHECK THE LENGTH OF THE SEGMENT TABLE DDWG # %A LABEL-JUMPED TO IF AREA COMPLETELY OUT OF RANGE OF ST DFB6 # %B SEG TABLE ADDRESS(LENGTH IN TOP TWO BITS) DFTQ # %C VIRTUAL ADDRESS(PAGE NO.)OF START OF AREA DG*B # %D LENGTH(NO.OF PAGES IN/THE AREA:MAYBE ZERO ON EXIT DGK8 ...#SKI G4 DGP5 ...( DGT2 #MAC SCANINIT DH#L LDCT 1 #600 [EXTRACT LENGTH OF SEG TABLE DHS= ANDX 1 %B DJ?W LDCH 1 BTABLENS(1) DJRG ADN 1 1 DK?6 SLL 1 6 [RANGE OF PAGE NOS COVERED BY SEG TAB DKQQ SBX 1 %C DL=B BNG 1 %A [JUMP IF AREA COMPLETELY OUT OF RANGE DLQ2 SBX 1 %D DM9L BPZ 1 MSCANINIT DMP= ADS 1 %D [REDUCE LENGTH OF AREA SO IT LIES IN RANGE OF ST DN8W MSCANINIT DNNG #NOR DNTN ...) DP2W ...[??? SCANPT SECT CENT FGN 7 DOC DP86 # %A TYPE OF SCAN: B21=0/1 SEG OR PAGE DPMQ # B22=0/1 QUOTA OR EXISTS DQ7B # B23=0/1 NO CHECK ON ST LENGTH/ DQM2 # %B EXIT LABEL DR6L # %C COORDINATION LABEL DRL= # %D LABEL TO JUMP TO IN THE CASE OF A GAP (B21 OF %A=1) DS5W # %E ADDR OF SEG TABLE DSKG # %F VIRTUAL ADDRESS AS A PAGE NO. DT56 # %G (ACC)LENGTH OF AREA AS A NO OF PAGES DTJQ # %H ADDR OF PAGE TABLE ENTRY DW4B # %I NO OF ENTRIES DWJ2 # %J LENGTH OF TABLE DX3L # %K ADDR OF SEGMENT TABLE ENTRY DXH= # DY2W # SCANPT GIVEN A VIRTUAL ADDRESS AND A LENGTH THIS MACRO OBTAINS DYGG # A PTR TO THE PAGE TABLE ENTRY FOR THE FIRST PAGE IN THE D^26 # AREA & THE NO. OF ENTRIES WITHIN THIS PAGE TABLE THAT D^FQ # CORRESPOND TO PAGES IN THE AREA. D^^B # F298 ...#SKI G4 F2*5 ...( F2F2 #MAC SCANPT [J.S.RAYNER.G4 ONLY. F2YL MSCANPT1 F3D= BZE %G %B [EXIT AT END OF AREA F3XW #SKIP %A&1 F4CG ( F4X6 LDCT 1 #600 [CHECK LENGTH OF SEG TABLE F5BQ ANDX 1 %E F5WB LDCH 0 BLENCH(1) F6B2 ) F6TL LDX 1 %F F7*= SRL 1 6 [SEG NO. F7SW #SKIP %A&1 F8#G ( F8S6 ANDX 0 1 F9?Q #STR %D F9RB BNZ 0 MSCANPT2 [JUMP IF ST TOO SHORT - TO REPORT GAP F=?2 #STR %D F=QL #SKIP F?== BNZ 0 %B [EXIT IF ST TOO SHORT F?PW ) F#9G ADX 1 %E [ADDR OF SEG TABLE ENTRY F#P6 #STR %K F*8Q STO 1 %K F*NB LDX 0 0(1) FB82 #SKIP %A&2 FBML SRC 0 2 [SCAN ALL PAGE TABLES FC7= #SKIP %A&2$2 FCLW SRC 0 1 [SCAN PAGE TABLES IN QUOTA FD6G BPZ 0 MSCANPT3 [JUMP IF TABLE TO BE SCANNED FDL6 LDX 1 %F FF5Q MSCANPT2 FFKB #SKIP %A&4$4 [INC IF SCANNING SEGMENTS FG52 ( FGJL LDN 0 64 FH4= SBN %G 64 [REDUCE LENGTH OF AREA BY 64 FHHW #STR %D [INC IF GAPS ARE NOT BEING REPORTED FJ3G #SKIP FJH6 ( FK2Q ADS 0 %F [SET VIRT ADDR TO START OF NEXT SEG FKGB BPZ %G MSCANPT1 [JUMP IF NOT AT END OF AREA FL22 BRN %B FLFL ) FL^= #STR %D [INC IF THERE IS A GAP LABEL FMDW ( FMYG STO 0 %I [LENGTH OF GAP-PROBABLY UNNECESSARY FND6 BPZ %G %D [JUMP TO REPORT GAP FNXQ ADS %G %I [AGAIN THIS IS PROBABLY UNNECESSARY FPCB LDN %G 0 [INDICATE END OF AREA-EXIT NEXT TIME FPX2 BRN %D [REPORT GAP FQBL ) FQW= ) FR*W #SKIP %A&4 [INC IF SCANNING PAGES FRTG ( FS*6 LDX 0 %F FSSQ ANDN 0 #77 [CALCULATE NO.OF PAGES TO THE START FT#B SBN 0 64 [OF THE NEXT SEG:X0 CONTAINS MINUS IT FTS2 #STR %D [INC IF GAPS ARE NOT BEING REPORTED FW?L #SKIP FWR= ( FX=W SBS 0 %F [STEP VIRTUAL ADDR TO START NEXT SEG FXQG ADS 0 %G FY=6 BPZ %G MSCANPT1 [JUMP IF NOT END OF AREA FYPQ BRN %B [EXIT AT END OF AREA F^9B ) F^P2 #STR %D [INC IF GAPS ARE BEING REPORTED G28L ( G2N= NGS 0 %I [STORE LENGTH OF GAP G37W ADS 0 %G G3MG BPZ %G %D [REPORT GAP IF NOT END OF AREA G476 ADS %G %I [ADJUST LENGTH OF GAP-PROB.UNNECESS G4LQ LDN %G 0 [END OF AREA MARK FOF EXIT NEXT TIME G56B BRN %D G5L2 ) G65L ) G6K= MSCANPT3 G74W LDX 1 0(1) G7JG ANDX 1 B0T19 [ADDR OF PAGE TABLE G846 STO 1 %H G8HQ ANDX 1 B0T1 G93B #SKIP %A&4 [INCLUDE IF SCANNING PAGES G9H2 ( G=2L LDCH 0 BLENCH(1) [TEST IF ADDRESS OUT OF RANGE OF G=G= ANDX 0 %F G=^W BNZ 0 MSCANPT2 [PAGE TABLE & IF SO REPORT GAP G?FG ) G?^6 LDCH 0 BTABLENS(1) [LENGTH OF PAGE TABLE G#DQ ADN 0 1 G#YB #STR %J G*D2 STO 0 %J G*XL #SKIP %A&4 [INC IF SCANNING PAGES GBC= ( GBWW LDX 1 %F GCBG ANDN 1 #77 [PAGE NO.OF START OF AREA GCW6 ADS 1 %H [ADDR OF PAGE TABLE ENTRY GD*Q SBX 0 1 [NO OF ENTRIES IN THIS PAGE TABLE GDTB ) GF*2 STO 0 %I [STORE NO OF ENTRIES IN THIS PT GFSL #SKIP %A&4$4 [INC IF SCANNING SEGS GG#= ( GGRW SBN %G 64 GH?G BPZ %G MSCANPT5 [JUMP IF AREA EXTENDS BEYOND THIS SEG GHR6 ADN %G 64 GJ=Q ) GJQB SBX %G %I GK=2 #SKIP %A&4$4 [INC IF SCANNING SEGS GKPL BPZ %G MSCANPT4 [JUMP IF AREA EXTENDS BEYOND THIS PT GL9= #SKIP %A&4 [INC IF SCANNING PAGES GLNW BPZ %G MSCANPT5 [JUMP IF AREA EXTENDS BEYOND THIS PT GM8G ADS %G %I [ADJUST NO.OF PT ENTRIES TO SCAN GMN6 MSCANPT4 GN7Q LDN %G 0 GNMB MSCANPT5 GP72 #NOR GP#8 ...) GPFB ...[??? CHECKPTE SECT CENT FGN 7 DOC GPLL # CHECKPTE GQ6= # THIS MACRO CHECKS THAT A PAGE OF AN OBJ.PROG.MAY BE ACCESSED IN GQKW # A SPECIFIED WAY & IF SO OBTAINS THE ADDR OF THE PAGE TABLE ENTRY GR5G # FOR THE PAGE GRK6 # %A WORD IN WHICH PAGE TABLE ENTRY ADDRESS IS TO BE STORED GS4Q # %B VIRTUAL ADDRESS OF PAGE - A PAGE NO. GSJB # %C LABEL IF RES VIOL GT42 # %D PCA GTHL # %E PERMISSION GW3= # %F LABEL IF COORD GWGW # GWQN ...#SKI G4 GWWK ...( GX2G #MAC CHECKPTE [JSRAYNER G4 ONLY GXG6 LDCT 1 #600 GX^Q MOD ANDX 1 ASEGTAB,%D GYFB LDCH 0 BLENCH(1) GY^2 LDX 1 %B G^DL SRL 1 6 G^Y= ANDX 0 1 H2CW BNZ 0 MCHECKPTE3 [J IF SEG TABLE TOO SHORT H2XG MOD ADX 1 ASEGTAB,%D [ADDR OF SEG TABLE ENTRY H3C6 LDCT 0 #600 H3WQ ANDX 0 0(1) H4BB BNZ 0 MCHECKPTE1 [J UNLESS REPLACEMENT H4W2 LDX 1 0(1) H5*L MCHECKPTE1 H5T= LDX 0 0(1) H6#W SRC 0 1 H6SG BNG 0 MCHECKPTE3 [J IF NULL SEG TABLE ENTRY H7#6 SLC 0 1 H7RQ LDCT 1 #600 H8?B ANDX 1 0 H8R2 LDCH 1 BLENCH(1) H9=L ANDX 1 %B H9Q= BNZ 1 MCHECKPTE3 H=9W LDX 1 %B H=PG ANDN 1 #77 H?96 ADX 1 0 [ADDR OF PAGE TABLE ENTRY H?NQ LDX 0 0(1) H#8B BNG 0 MCHECKPTE2 [J UNLESS REPLACEMENT H#N2 SMO 0 H*7L LDX 0 0 H*M= ERN 0 #100 [IF THER IS A REPLACEMENT ADDRESS WE HB6W BRN MCHECKPTE6 [CHECK WHETHER IT IS SHARED HBLG MCHECKPTE2 HC66 ORN 0 #100 [IF THERE IS NO REPLACEMENT THE PAGE HCKQ MCHECKPTE6 [CANNOT BE SHARED HD5B ANDX 0 %E [CHECK PERMISSION & WHETHER PAGE HDK2 ERX 0 %E [EXISTS HF4L ANDN 0 #1700 HFJ= BNZ 0 MCHECKPTE3 [J IF PERM VIOLATION HG3W STO 1 %A HGHG ANDX 1 B0T1 HH36 LDCH 1 BTABLENS(1) HHGQ LDCT 0 #100 HJ2B SMO %A HJG2 ANDX 0 1(1) HJ^L BNZ 0 MCHECKPTE3 [J IF PAGE NOT ACCESSED HKF= BRN MCHECKPTE5 [FINISHED HKYW MCHECKPTE3 HLDG LDX 0 %B HLY6 SLL 0 10 [PICK UP PARAMS & STORE THEM IN HMCQ ORX 0 %E [ACOMMUNE WORDS HMXB LDX 1 %D HNC2 LDX 2 FX2 HNWL STO 0 ACOMMUNE1(2) HPB= STO 1 ACOMMUNE2(2) HPTW DOWN SETUPPTS,2 [ENTER SETUPPTS HQ*G BRN MCHECKPTE4 HQT6 LDX 0 ACOMMUNE1(2) HR#Q STO 0 %A [SET REPLY & REPORT RES VIOL HRSB BRN %C HS#2 MCHECKPTE4 HSRL LDX 0 ACOMMUNE1(2) HT?= STO 0 %A HTQW BRN %F HW=G MCHECKPTE5 HWQ6 #NOR HWX# ...) HX4G ...[??? FDPTE SECT CENT FGN 7 DOC HX9Q # HXPB # FDPTE HY92 # THIS MACRO OBTAINS A PTR TO AN EXISTING PAGE TABLE ENTRY HYNL # %A PAGE TABLE ENTRY H^8= # %B VIRTUAL ADDR PAGE NO H^MW # %C PCA J27G # %D (OPT)ADDR TO JUMP TO IF OUT OF RANGE OF TABLES J2M6 # IF OMITTED NO CHECK MADE J36Q # J3BJ ...#SKI G4 J3GF ...( J3LB #MAC FDPTE [JSRAYNER G4 ONLY J462 LDX 0 %B J4KL SRL 0 6 J55= MOD ADX 0 ASEGTAB,%C J5JW #STR %D J64G ( J6J6 LDCT 1 #600 [CHECK THAT SEG TABLE LONG ENOUGH J73Q ANDX 1 0 J7HB LDCH 1 BLENCH(1) J832 SLL 1 6 J8GL ANDX 1 %B J92= BNZ 1 %D [J IF NOT J9FW ) J9^G MFDPTE J=F6 SMO 0 J=YQ LDX 0 0 J?DB LDCT 1 #600 J?Y2 ANDX 1 0 J#CL BZE 1 MFDPTE [J IF REPLACEMENT J#X= #STR %D J*BW ( J*WG SRC 0 1 JBB6 BNG 0 %D [NULL SEG TABLE ENTRY JBTQ SLC 0 1 JC*B LDCH 1 BLENCH(1) [CHECK THAT PAGE TABLE IS LONG ENOUGH JCT2 ANDX 1 %B JD#L BNZ 1 %D JDS= ) JF?W LDX 1 %B JFRG ANDN 1 #77 JG?6 ADX 0 1 [ADDR OF PTE JGQQ STO 0 %A JH=B #NOR JHCJ ...) JHJQ ...[??? PUCST SECT CENT FGN 7 DOC JHQ2 # JJ9L # PUCST JJP= # THIS MACRO ENSURES THAT A PUCS SEG TABLE IS SET UP CORRECTLY JK8W # JKNG # %A PCA JL86 # %B(OPT) SEG.NO.OF START OF PUC ONLY REQN IF NO PUC.ST SETUP YET JLCY ...#SKI G4 JLHT ...( JLMQ #MAC PUCST [JSRAYNER G4 ONLY JM7B #STR %B JMM2 LDX 0 %B JN6L LDX 1 %A JNL= LDX 2 FX2 JP5W #STR %B JPKG STO 0 ACOMMUNE2(2) JQ56 #STR %B JQJQ #SKIP JR4B STOZ ACOMMUNE2(2) JRJ2 STO 1 ACOMMUNE1(2) JS3L #SKI CAMK7>4-4 JSH= ( JT2W LDN 0 #10 JTGG ANDX 0 AFLAG(1) [CHECK THAT PCA IS LOCKED JW26 SRC 0 5 [SET B1 OF ACOMMUNE2 TO INDICATE JWFQ ) JW^B #SKI CAMK7<5-5 JXF2 ( JXYL LDCT 0 #200 [CHECK THAT PCA IS LOCKED JYD= ANDX 0 ASIZE(1) [SET B1 OF ACOMMUNE TO INDICATE JYXW ) J^CG ORS 0 ACOMMUNE2(2) [WHETHER PCA HAD TO BE LOCKED OR NOT J^X6 BNZ 0 MPUCST [J IF ALREADY LOCKED K2BQ LOCK 1 [AND LOCK IT K2WB MPUCST K3B2 DOWN SETUPPTS,3 K3TL #NOR K42S ...) K482 ...[??? BOOKSS SECT CENT FGN 7 DOC K4*= # BOOKSS THIS MACRO BOOKS SWAP SPACE FOR AN OBJ PROG K4SW # %A AMOUNT OF SWAPPING SPACE IN PAGES K5#G # %B LABEL TO JUMP TO IF NOT SUFFICIENT SWAP SPACE AVAILABLE K5S6 # K63Y ...#SKI G4 K67T ...( K6?Q #MAC BOOKSS [JSRAYNER G4 ONLY K6RB MBOOKSS1 K7?2 LDX 0 %A K7QL ADX 0 EBSWAPSP K8== TXL 0 EFSWAPSP K8PW BCS MBOOKSS2 K99G BSON G4SUDBIT,%B [EXIT IF NO SUD TO DELETE K9P6 DOWN PROGDEL,5 [OTHERWISE FREE SUD & TRY AGAIN K=8Q BRN MBOOKSS1 K=NB MBOOKSS2 K?82 STO 0 EBSWAPSP K?ML #NOR K?SS ...) K#22 ...[??? AWAITSS SECT CENT FGN 7 DOC K#7= # AWAITSS THIS MACRO WAITS FOR SWAPPING SPACE TO BECOME AVAILABLE K#LW # %A BREAKIN LABEL K*6G # AVOID COORD BETWEEN BOOKSS & AWAITSS K*L6 # K*TY ...#SKI G4 K*^T ...( KB5Q #MAC AWAITSS [JSRAYNER G4ONLY KBKB ON G4SWAIT KC52 LONGWAIT %A,HSWAPSPWT KCJL #NOR KCPS ...) KCX2 ...[??? FREESS SECT CENT FGN 7 DOC KD4= # FREESS THIS MACRO FREES SWAPPING SPACE & WAKES UP ANYONE WAITING KDHW # %A NO OF PAGES OF SWAPSPACE TO FREE KF3G # KF?# ...#SKI G4 KFC9 ...( KFH6 #MAC FREESS [JSRAYNER G4 ONLY KG2Q LDX 0 %A KGGB SBS 0 EBSWAPSP KH22 BSOFF G4SWAIT,MFREESS KHFL FON HSWAPSPWT KH^= OFF G4SWAIT KJDW MFREESS KJYG #NOR KK5N ...) KK=W ...[??? ERASESUD SECT CENT FGN 7 DOC KKD6 # THIS MACRO SEARCHES THE SUD CHAIN FOR AN ENTRY REFERING KKXQ # TO THE TOP LEVEL FILE OPEN TO THE CURRENT ACTIVITY & MARKS KLCB # IT AS ERASED.IF THE USER COUNT IS ZERO IT DE-ETES IT KLX2 # KM6S ...#SKI G4 KM=P ...( KMBL #MAC ERASESUD KMW= #STR %A KN*W #SKIP KNTG TOPFCB 2 KP*6 #STR %A KPSQ ( KQ#B #STR %A,2 KQS2 LDX 2 %A KR?L #STR %B KRR= ( KS=W #SKIP %B>FUSER1-%B KSQG SBN 2 FUSER1-%B KT=6 #SKIP %B>FUSER1-FUSER1 KTPQ ADN 2 %B-FUSER1 KW9B ) KWP2 ) KX8L STO 2 JWSP1 KXN= LDN 2 BSUD KY7W MERASESUD1 KYMG LDX 2 FPTR(2) K^76 TXU 2 CXSU K^LQ BCC MERASESUD3 L26B LDX 0 HSUDNAME+3(2) [COMPARE FIRST FOUR CHARS OF L2L2 SMO JWSP1 [LOCAL NAME L35L TXU 0 FLOC1 L3K= BCS MERASESUD1 L44W LDN 1 9 [COMPARE FULL NAME L4JG MERASESUD2 L546 SMO 1 L5HQ LDX 0 HSUDNAME-1(2) L63B SMO JWSP1 L6H2 TXU 0 FUSER1-1(1) L72L BCS MERASESUD1 L7G= BCT 1 MERASESUD2 L7^W STOZ HSUDNAME+3(2) L8FG LDX 0 HUSERS(2) L8^6 BNZ 0 MERASESUD3 L9DQ LDX 0 HSUDNO(2) L9YB SMO FX2 L=D2 STO 0 ACOMMUNE1 L=XL DOWN PROGDEL,4 L?C= #STR %C L?WW BRN %C L#BG MERASESUD3 L#W6 LDX 1 FX1 L**Q LDX 2 FX2 L*TB #NOR LB*2 ) ^^^^ ...14757674001000000000