GETBACK865

(George Source)

Macros used: ACROSS, BACKREAD, BACKWRITE, BSOFF, BSON, COOR3, FON, FREECORE, FSHCODE, FSHSKIP, GEOERR, GETBSLIS, JAMQUERY, LOSBSBIT, MHUNT, MHUNTW, SEGENTRY, TRACE, TRANSBEG, UP, UPPLUS, WAITPRIV

GETBACK865.txt
22FL ...#OPT  K0GETBACK=0   
22^= ...#LIS  K0GETBACK>K0ALLGEO
23DW ...#SEG  GETBACK865
23YG ...               8HGETBACK
24D6 ...#   
24XQ ...#              THIS SEGMENT DEALS WITH THE GETTING AND FREEING  
25CB ...#              OF ONLY ONE BLOCK OF BACKING STORE   
25X2 ...#   
26BL ...#              K1GETBACK IS ENTERED FROM THE GETBACK MACRO  
26W= ...#              K2GETBACK IS ENTERED FROM THE FREEBACK MACRO 
27*W ...#   
27TG ...      SEGENTRY K1GETBACK,P1 
28*6 ...      SEGENTRY K2GETBACK,P3 
2=R=    #   
2=S3 ...#   SUBROUTINE TO CHECK IF ACTIVITY IS PRIVILEGED   
2=SS ...#   
2=TK ...SWAITPRIV   
2=WB ...      STO   0  GEN1                [ SAVE THE LINK  
2=X7 ...      WAITPRIV NOTPRACT            [ SEE IF PRIVILEGED  
2=XY ...      LDX   0  GEN1                [ RECOVER LINK   
2=YP ...      EXIT  0  1                   [ IF PRIVILEGED  
2=^G ...NOTPRACT
2?2? ...      LDX   0  GEN1                [ RECOVER LINK   
2?34 ...      EXIT  0  0                   [ IF NOT 
2?3T ...#   
2?4L ...#   
2?5C ...#  SUBROUTINE TO REMOVE ENTRY FROM FAILED BLOCKS LIST   
2?68 ...#  EXPECTS BLOCK NO. IN GEN0 AND RES. NO. IN GEN1   
2?6^ ...#   
2?7Q ...SLOSBSBIT   
2?8H ...      LOSBSBIT GEN0,GEN1           [ REMOVE BIT REQUIRED
2?9# ...      EXIT  7  0
2?=5 ...#   
2?=W    #   
96GG    #   
9726    # THIS ROUTINE ALLOCATES ONE BLOCK OF FREE BACKING STORE
97FQ    # ENTRY WITH X7=HARDLUMP   EXIT WITH X7=BLK.NO  
97^B    S9    COOR3    3
98F2          BRN      P1   
98YL    T50   BNZ   5  X14B 
99D=          LDXC  0  A1+4(2)  
99XW          BCS      T50A 
9=CG          COOR3    2                   [WAITING FOR BLOCKS  
9=X6          BRN      P1B  
9?BQ    T50A  COOR3    #14  
9?WB          BRN      P1B  
9#B2    P1    LDX   7  ACOMMUNE7(2)        [L.F.N   
9#TL          LDX   5  ACOMMUNE9(2)        [MARKER  
9**=    P1B   GETBSLIS  
9*SW          LDX   1  A1(2)               [POINTER 
9B#G    #SKI  K6DRUMALL>449-449 
9BS6          TRACE 1,GLISTPTR  
9BT3 ...      FSHCODE  B,NOTGET1INB        [ OMIT IF NOT IN MACHINE 'B' 
9BTY ...(   
9BWT ...      LDXC  0  A1+4(2)  
9BXQ ...      BCS      NOTGET1INB          [ OR IF FOR SWAPFILE 
9BYM ...      BNG   1  WAITCHK             [ IF NEED TO WAIT OR IF NO BLOCKS
9B^J ...      BZE   1  WAITCHK             [ LEFT J. TO SEE IF PRIV'D   
9C2F ...      BRN      X11                 [ ELSE J. TO ALLOCATE A BLOCK
9C3B ...WAITCHK 
9C4? ...      CALL  0  SWAITPRIV           [ CHECK IF PRIVILEGED
9C58 ...      BRN      NUFFLEFT            [ J. IF NOT PRIV'D   
9C65 ...      TRANSBEG FSHBSID,FSHBSAL,5,NOBLOCKS,,ACOMMUNE3     [ ELSE 
9C72 ...      UP                           [ GET A BLOCK FROM M/C "A"   
9C7X ...NUFFLEFT                           [ NOT PRIV'D SO CARRY ON 
9C8S ...      LDX   1  A1(2)               [ RESET /BSLIST POINTER + JOIN NORMAL
9C9P ...NOTGET1INB                         [ PATH   
9C=L ...)   
9C?Q          BNG   1  S9                  [MAKE WAIT IF TRANSFER IN PROGRESS   
9CRB          LDX   0  A1+1(2)  
9D?2          BPZ   0  ZOK                 [OK IF SOME BLOCKS LEFT  
9DQL          LDX   0  A1+4(2)  
9F==          BPZ   0  P1A                 [JUMP IF NOT A SWAP FILE 
9FPW          LDCT  0  #200 
9G9G          SMO      FX2  
9GP6          ANDX  0  CLONG1   
9H8Q          BZE   0  T50                 [JUMP TO WAIT IF NOT PRIVELEGED  
9HNB          BRN      ZOK  
9J2R ...P1A   CALL  0  SWAITPRIV           [ CHECK IF PRIVILEGED FOR F/S FILES  
9J*8 ...      BRN      T50                 [ J. IF NOT  
9JML          LDX   1  A1(2)               [RESET X1
9K7=    ZOK   BNZ   1  X11                 [J IF SOME FREE BLOCKS CEFT  
9K8S ...      FSHCODE  B,NOTINB2           [ OMIT IF NOT IN MACHINE 'B' 
9K=B ...(   
9K?Y ...      LDXC  0  A1+4(2)             [
9K*G ...      BCS      NOTINB2             [ OR IF SWAPFILE 
9KC4 ...      CALL  1  XGET64BLKS          [ ELSE GET 'FSHBSBLOCKS' BLOCKS FROM 
9KDL ...      LDN   1  FSHBSBLOCKS         [ RESET BSLIST POINTER   
9KG8 ...      BRN      X11                 [ AND J. TO ALLOCATE NEXT BLOCK  
9KHQ ...NOTINB2 
9KK# ...)   
9KLW          LDX   1  BACK2(2) 
9L6G          BZE   1  X16  
9LL6          BPZ   1  X12                 [J IF NEXT BLOCKLET  
9M5Q    X16   LDX   1  BSRLEN(2)
9MKB          BPZ   1  X13                 [J IF STILL MORE BS  
9N52          LDCT  0  #200 
9NJL          SMO      FX2  
9P4=          ANDX  0  CLONG1              [TEST FOR A PRIVILEGED ACTIVITY  
9PHW          BZE   0  T50                 [WAIT IF IT ISNT 
9Q3G          BSON     EMSBIT,T53   
9QH6          GEOERR   1,NO STORE          [HOPELESS JAM IF IT IS   
9R2Q    X12   SBN   1  1
9RGB    X13   STO   1  BACK2(2)            [NEW BLOCKLET NO 
9S22          NGN   1  1
9SFL          STO   1  A1(2)               [SET PTR -VE TO LOCK OUT EVERYTHING  
9S^=          LDN   1  BSRLEN(2)           [CTA 
9TDW          LDX   7  BACK1(2)            [RESTORE HARDLUMP
9TYG          BACKREAD BSET,BSBS4,ST60,BACK1(2),BACK2(2),1  
9WD6          FON      3                   [WAKE UP ANYBODY WAITING FOR THIS LIS
9WXQ          GETBSLIS                     [FIND LIST BLOCK 
9XCB          LDX   1  BSBS4               [SET PTR 
9XX2    X11   SMO      1
9YBL          LDX   7  BSRLEN-1(2)         [GET FREE BLK NUMBER 
9YW=    #SKI  K6DRUMALL>449-449 
9^*W          TRACE 7,GBLK.NO.  
9^TG          SBN   1  1                   [DECREASE PTR
=2*6          STO   1  A1(2)               [AND STORE   
=2G# ...      FSHSKIP   
=2MG ...(   
=2SQ          BSOFF    BSBITS,X11A  
=3#B          STO   1  BSP4 
=3S2          LDX   1  7                   [BLOCK NO.   
=4?L          CALL  0  Q1   
=4BQ ...)   
=4FW ...X11A
=4K2 ...      FSHCODE  B,NOCHECKA          [ OMIT IF IN MACHINE 'A' 
=4N6 ...(   
=4R= ...      LDXC  0  A1+4(2)             [ CHECK IF SWAPFILE  
=4WB ...      BCC      NOREDUCTINB         [ IF NOT DONT ALTER BSFREE   
=4^G ...NOCHECKA
=54L ...)   
=57Q ...      LDN   0  1
=5=W          SBS   0  A1+1(2)             [UPDATE NUMBER OF FREE BLOCKS
=5GN ...NOREDUCTINB 
=5QG          TXU   7  BACK2(2) 
=6=6          BCS      X14                 [JIF NOT FREEING THIS BLOCK  
=6PQ          STOZ     A1(2)
=79B          NGS   0  BACK2(2) 
=7P2    X14   LDXC  0  A1+4(2)  
=88L          BCC      X14A                [JUMP IF NOT SWAP FILE   
=8N=          LDCT  0  #200 
=97W          LDX   2  FX2  
=9MG          ANDX  0  CLONG1(2)
==76          BZE   0  X14D 
==LQ          ERS   0  CLONG1(2)
=?6B          BRN      X14D 
=?L2    X14A  SMO      FX2  
=#5L          STO   5  AWORK1              [SAVE MARKER 
=#K=          JAMQUERY                     [IN A JAM ?  
=*4W          LDX   2  FX2  
=*JG          LDX   5  AWORK1(2)           [RESTORE MARKER  
=B46    X14D  STO   7  ACOMMUNE7(2)        [BLOCK NUMBER
=BHQ          BZE   5  X14E 
=C3B          UPPLUS   1
=CH2    X14E  UP
=D2L    X14B
=DG=          LDN   5  0
=D^W          BRN      X14  
=F5R ...#   
=F9N ...T53   GEOERR   1,FSRESFUL   
=F*K ...#   
=FFG    #  THIS ROUTINE FREES THE BLK (NO IN X2) OF BACKING STORE (TYPE IN  
=F^6    #  X1) AND WAKES UP ACTIVITIES WAITING FOR B.S. 
=GDQ    P4             +0   
=GYB    P5             +0   
=HD2    P6             +0   
=HXL    X9    COOR3    3
=JC=          BRN      P3A  
=JWW    P3    LDX   7  ACOMMUNE7(2)        [L F N   
=KBG          LDX   6  ACOMMUNE8(2)        [BLOCK NO.   
=KW6    P3A   GETBSLIS  
=KXT ...      FSHCODE  B,NOTFBKINB         [ OMIT IF NOT IN MACHINE 'B' 
=K^J ...(   
=L3? ...      LDXC  0  A1+4(2)             [ CHECK IF SWAPFILE  
=L52 ...      BCS      NOTFBKINB           [ OMIT IF IT IS  
=L6P ...      TRANSBEG FSHBSID,FSHBSAL,8,NOBLOCKS,,ACOMMUNE3   [ ELSE   
=L8D ...      UP                           [ DO FREEBACK IN M/C "A" 
=L=7 ...NOTFBKINB   
=L?W ...)   
=L*Q          LDX   1  A1(2)               [POINTER 
=LTB    #SKI  K6DRUMALL>449-449 
=M*2          TRACE 1,FLISTPTR  
=MSL          BNG   1  X9                  [J TO SUSPEND IF AWAITING EOT
=N#=          BZE   1  T23                 [LIST EMPTY  
=NRW          ADN   1  1                   [INCREASE PTR
=P?G          TXU   1  BSBS41   
=PR6          BCS      T21                 [JIF NOT FULL
=Q=Q          NGN   1  1
=QQB          STO   1  A1(2)               [AND SET PTR -VE 
=R=2          LDN   1  BSRLEN(2)
=RPL          LDX   7  BACK1(2)            [RESTORE HARDLUMP
=S9=          SMO      FX2  
=SNW          LDX   5  ACOMMUNE9
=T8G          BACKWRITE BSET,BSBS4,ST50,BACK1(2),,1 
=TN6          FON      3,0                 [WAKE UP ANYONE WAITING FOR THIS LIST
=W7Q          STO   5  ACOMMUNE9(2) 
=WMB          GETBSLIS                     [FIND LIST BLOCK 
=X72          LDX   0  BACK2(2) 
=XLL          STO   0  BSRLEN(2)
=Y6=          ADN   0  1
=YKW          STO   0  BACK2(2)            [INCREASE TO NEXT BLOCKLET   
=^5G          LDN   1  1
=^K6          LDX   5  0
?24Q          LDX   4  BSSS                [WORDS/SHEET 
?2JB          LDXC  0  A1+4(2)  
?342          BCS      S2                  [JUMP IF SWAP FILE   
?3HL          LDX   4  BSBS                [WORDS/BLOCK 
?43=    S2    SRL   4  7                   [RLOCKLETS/SHEET OR BLOCK
?4GW          DVS   4  4
?52G          BNZ   4  T22                 [JUMP IF NOT RUNNING INTO NEXT BLOCK/
?5G6    T24 
?5^Q          STO   6  BACK2(2) 
?6FB          ADN   1  1                   [MOVE PTR
?6^2          BRN      T22  
?7DL    T23 
?7Y=          LDN   1  1
?8CW          LDX   0  BACK2(2) 
?8XG          BNG   0  T24                 [NEW HOME
?9C6          BRN      T22                 [SAME LIST   
?9WQ    T21 
?=BB    T22   TXL   6  A1+3(2)  
?=W2          BCS      T20  
??*L    #SKI                               [WAIT FOR PROPER FILE SYSTEM 
??T=          GEOERR   1,BIGBLKNO   
?##W    T20   SMO      1
?#SG          STO   6  BSRLEN-1(2)  
?#XL ...      LDX   0  6                   [X0 => BLOCK NUMBER  
?*2Q ...      BNG   0  (GEOERR)            [GEOERR IF BLOCK NUMBER NEGATIVE 
?*5W ...      ANDN  0  3                   [
?*92 ...      BNZ   0  (GEOERR)            [BLOCKNUMBER MUST BE A MULTIPLE OF 4 
?*#6    #SKI  K6DRUMALL>449-449 
?*RQ          TRACE 6,FBLK.NO.  
?B?B          STO   1  A1(2)               [STORE PTR   
?BR2          BSOFF    BSBITS,T20A  
?C=L          STO   1  BSP4 
?CQ=          LDX   1  6                   [X6 CONTAINS BLOCK NUMBER
?D9W          SLC   1  1                   [TEST BIT 1  
?DPG          BPZ   1  T40AB               [B1= MARKS BLOCK AS FAILED ....  
?F96          SMO      FX2                 [... SO DONT JUMP ROUND MACRO
?FNQ          LDX   1  ACOMMUNE7           [X1 CONTAINS LOGICAL FILE NUMBER 
?G8B          STO   2  BSP5                [SAVE X2 
?GD8 ...      STO   6  GEN0                [ SAVE BLOCK NO. FOR S/ROUTINE   
?GN2 ...      STO   1  GEN1                [ SAVE RES. NO. FOR S/ROUTINE
?GXS ...      CALL  7  SLOSBSBIT           [ TO REMOVE ENTRY FROM BSTB/BFAIL
?H7L          LDX   2  BSP5                [RESTORE X2  
?HM=    T40AB   
?J6W          LDX   1  6
?JLG          ORX   1  GSIGN               [SET B0 TO MARK FREE 
?JW# ...      FSHSKIP   
?K66          CALL  0  Q1   
?KKQ    T20A  LDN   0  1
?L5B          ADS   0  A1+1(2)             [UPDATE NUMBER OF FREE BLOCKS
?LK2          LDXC  0  A1+4(2)  
?M4L          BCS      T30  
?MJ=          FON      2
?N3W          BRN      TEND 
?NHG    T30   FON      #14  
?P36    TEND  UP
?P8# ...      FSHSKIP   
?P*G ...(   
?PGQ    #     THIS ROUTINE IS A TESTING AID FOR THE BS ALLOCATION SYSTEM WHICH  
?Q2B    #     WILL SET A BIT IF A BLOCK IS FREED, CHECKING THAT IT IS NOT   
?QG2    #     ALREADY SET, AND UNSETTING IT IF A BLOCK IS GIVEN AWAY, SIMILARLY 
?Q^L    #     CHECKING THAT IT IS NOT ALREADY UNSET. THE BITS CONCERNED WILL
?RF=    #     BE SITUATED IN THE WORDS FOLLOWING THE LIST OF FREE BLOCK NOS.
?RYW    #     THERE WILL BE ONE BIT FOR EACH GEORGE BLOCK WITHIN EACH LOGICAL   
?SDG    #     FILE, THE BITS REFERRING TO THE BLOCK NO. CORRESPONDING TO THE
?SY6    #     POSITION OF THE BIT RELATIVE TO THE BEGINNING OF THIS AREA.   
?TCQ    #     E.G.  BLOCK NO. 50 WILL BE REPRESENTED BY B2 OF WORD 2 OF THE AREA
?TXB    Q1    STO   2  BSP5            [BSLIST PTR  
?WC2          STO   3  BSP6 
?WWL          LDX   3  1               [X1=BLOCK NO.
?XB=          BPZ   3  Q2   
?XTW          ERX   3  GSIGN               [DROP SIGN BIT   
?Y*G    Q2    LDX   2  A1+4(2)  
?YT6          BPZ   2  Q2A                 [JUMP IF NOT A SWAP FILE 
?^#Q          LDX   2  BSSS 
?^SB          BRN      Q2B  
#2#2    Q2A   LDX   2  BSBS 
#2RL    Q2B   SRL   2  7
#3?=          DVS   2  2                   [X3 CONTAINS ACTUAL BLOCK/SHIFT NO.  
#3QW          SMO      BSP5 
#4=G          TXL   3  A1+3                [TEST IF VALID BLOCK NUMBER  
#4Q6          BCS      Q4   
#59Q          GEOERR   1,BLKTOB1G   
#5PB    Q4    LDN   2  24   
#692          DVS   2  2                   [CONVERT TO WORD/BIT MODIFIER
#6NL          STO   1  BSL1 
#78=          LDX   1  GSIGN               [B0 ONLY 
#7MW          SRL   1  0(2)                [SET BIT IN CORRECT POSITION 
#87G          STO   2  BSL2 
#8M6          LDX   2  BSL1 
#96Q          BNG   2  Q3                  [ J IF BIT IS TO BE SET  
#9LB          NGN   2  1
#=62          ERX   1  2                   [INVERT BIT PATTERN TO UNSET BIT 
#=KL    #     NOW X1=111...11011...11  IE ONLY ONE BIT IS UNSET 
#?5=          SMO      BSP5 
#?JW          LDX   2  BSCHLEN(3)   
##4G          SMO      BSL2 
##J6          SLL   2  0
#*3Q          BNG   2  Q5                  [J IF BLOCK IS FREE IE ALLOCATABLE   
#*HB          GEOERR   1,GIVEGIVE          [ATTEMPT TO GIVE BLOCK TWICE 
#B32    Q5    SMO      BSP5 
#BGL          ANDS  1  BSCHLEN(3)          [UNSET BIT TO MARK BLOCK ISED
#C2=          BRN      Q7   
#CFW    Q3    SMO      BSP5 
#C^G          LDX   2  BSCHLEN(3)   
#DF6          SMO      BSL2 
#DYQ          SLL   2  0
#FDB          BPZ   2  Q6                  [J IF BLOCK NOT FREE ALREADY 
#FY2          GEOERR   1,FREEFREE          [ATTEMPT TO FREE AN ALREADY FREED BLK
#GCL    Q6    SMO      BSP5 
#GX=          ORS   1  BSCHLEN(3)          [SET BIT TO MARK BLOCK FREE  
#HBW    Q7    LDX   1  BSP4 
#HWG          LDX   2  BSP5 
#JB6          LDX   3  BSP6 
#JTQ          EXIT  0  0
#JW6 ...)   
#JWG ...      FSHCODE  AORB 
#JWW ...(   
#JX= ...[   
#JXL ...[  SUBROUTINE TO GET 'FSHBSBLOCKS' BLOCKS FROM MACHINE 'A'  
#JY2 ...[   
#JYB ...XGET64BLKS  
#JYQ ...      SBX   1  FX1                 [ RELATIVISE LINK
#J^6 ...      SMO      FX2  
#J^G ...      STO   1  AWORK2              [ PRESERVE LINK  
#J^W ...      SMO      FX2  
#K2= ...      STO   6  AWORK3              [ PRESERVE X6 (PTR. DOWN EMPTYB) 
#K2L ...      LDX   4  BACK1(2)            [ GET RESIDENCE NO.  
#K32 ...      NGS   2  A1(2)                   [ SET 'BSPOI' -VE TO LOCK OUT OTH
#K3B ...      LDX   2  FX2                 [ STORE RES. NO. FOR USE IN "A"  
#K3Q ...      STO   4  ACOMMUNE8(2)        [ AND GET 'FSHBSBLOCKS' BLOCKS FROM A
#K46 ...      TRANSBEG FSHBSID,FSHBSAL,4,NOBLOCKS,,ACOMMUNE3
#K4G ...      GETBSLIS                     [ BLOCKS FROM MACHIONE 'A'   
#K4W ...      MHUNT    3,BSTB,FULLB        [ FIND LIST OF BLOCKS OBTAINED   
#K5= ...      LDN   7  FSHBSBLOCKS         [ NO OF NUMBERS TO BE 'MOVED'
#K5L ...PUTNXTIN
#K62 ...      LDX   0  A1+2(3)             [ NXT BLOCK NO FROM /FULLB   
#K6B ...      SMO      7
#K6Q ...      STO   0  BSRLEN-1(2)         [ STORE BLOCK NO IN /BSLIST  
#K76 ...      ADN   3  1                   [ INCREMENT /FULLB POINTER   
#K7G ...      BCT   7  PUTNXTIN            [ DECR. /BSLIST POINTER  
#K7W ...      MHUNTW   3,BSTB,FULLB        [ RE-LOCATE /FULLB   
#K8= ...      LDX   7  A1+1(3)             [ GET RES. NO. FOR 'GETBSLIS'
#K8L ...      FREECORE 3                   [ FREE /FULLB OBTAINED FROM 'A'  
#K92 ...      FON      3                   [ WAKE UP WAITERS
#K9B ...      LDX   6  AWORK3(2)           [ RECOVER POINTER DOWN /EMPTYB   
#K9Q ...      GETBSLIS                     [ RECOVER POINTER TO /BSLIST BLOCK   
#K=6 ...      SMO      FX2  
#K=G ...      LDX   1  AWORK2              [ RECOVER LINK   
#K=W ...      ADX   1  FX1  
#K?= ...      EXIT  1  0
#K?L ...)   
#K#2 ...[   
#K#B ...
#K*B    ST60  STO   7  ACOMMUNE1(2) 
#KT2          STO   5  ACOMMUNE2(2) 
#L#L          STOZ     ACOMMUNE3(2) 
#LS=          ACROSS   BSALFAIL,1   
#M?W    ST50
#MRG          STO   7  ACOMMUNE1(2) 
#N?6          STO   6  ACOMMUNE2(2) 
#NQQ          STOZ     ACOMMUNE3(2) 
#P=B          ACROSS   BSALFAIL,2   
#Q9L    #   
#QP=    #END
^^^^ ...723142360002
  • Last modified: 17/01/2024 11:55
  • by 127.0.0.1