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