MACROS JSRG4

(George Source)

MACROS JSRG4.txt
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
  • Last modified: 17/01/2024 11:55
  • by 127.0.0.1