{{htmlmetatags>metatag-description:(ICL George 3 and George 4 GIN macro: SCANPT)}}
====== SCANPT ======
(GIN Macro)
**Defined in:** [[george:source:MACROS_JSRG4|MACROS JSRG4]]
**Used in:** [[george:source:LOADX60|LOADX60]], [[george:source:QUOTA850|QUOTA850]], [[george:source:SAVEDA70|SAVEDA70]]
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