Show pageBacklinksBack to top This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. {{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: GETBACK865)}} ====== GETBACK865 ====== (George Source) **Macros used:** [[george:macro:ACROSS|ACROSS]], [[george:macro:BACKREAD|BACKREAD]], [[george:macro:BACKWRITE|BACKWRITE]], [[george:macro:BSOFF|BSOFF]], [[george:macro:BSON|BSON]], [[george:macro:COOR3|COOR3]], [[george:macro:FON|FON]], [[george:macro:FREECORE|FREECORE]], [[george:macro:FSHCODE|FSHCODE]], [[george:macro:FSHSKIP|FSHSKIP]], [[george:macro:GEOERR|GEOERR]], [[george:macro:GETBSLIS|GETBSLIS]], [[george:macro:JAMQUERY|JAMQUERY]], [[george:macro:LOSBSBIT|LOSBSBIT]], [[george:macro:MHUNT|MHUNT]], [[george:macro:MHUNTW|MHUNTW]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:TRACE|TRACE]], [[george:macro:TRANSBEG|TRANSBEG]], [[george:macro:UP|UP]], [[george:macro:UPPLUS|UPPLUS]], [[george:macro:WAITPRIV|WAITPRIV]] <code - 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 </code> Last modified: 17/01/2024 11:55by 127.0.0.1 Log In