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