SCANPT

(GIN Macro)

Defined in: MACROS JSRG4

Used in: LOADX60, QUOTA850, SAVEDA70

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