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: CAFSINFO866)}} ====== CAFSINFO866 ====== (George Source) **Macros used:** [[george:macro:BXE|BXE]], [[george:macro:BXU|BXU]], [[george:macro:DCA|DCA]], [[george:macro:GPERI|GPERI]], [[george:macro:HUNT2J|HUNT2J]], [[george:macro:JNCAFSDV|JNCAFSDV]], [[george:macro:JNCFENBU|JNCFENBU]], [[george:macro:LADDP|LADDP]], [[george:macro:LGEOG|LGEOG]], [[george:macro:MFREEW|MFREEW]], [[george:macro:MHUNTW|MHUNTW]], [[george:macro:SEG|SEG]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:UP|UP]] <code - CAFSINFO866.txt>22FL ... SEG CAFSINFO,865,D. A. BELL 22^= ...# 23DW ...# 23YG ...# THIS SEGMENT IS THE MAIN INTERFACE BETWEEN STANDARD GEORGE 24D6 ...# ROUTINES AND THE CAFS SUBSYSTEM. IT IS ENTERED BY THE CAFSINFORM 24XQ ...# MACRO TO DEAL WITH EVENTS NOTICED BY GEORGE THAT ARE OF INTEREST 25CB ...# TO THE CAFS ROUTINES. 25X2 ...# 26BL ...# ON ENTRY TO THE SEGMENT THERE IS AN EVENT IDENTIFIER IN ACOMMUNE1 26W= ...# OF THE ACTIVITY THAT INDICATES WHY CAFSINFORM WAS CALLED. THE 27*W ...# CURRENT LIST OF THESE IDENTIFIERS AND THEIR MEANINGS FOLLOWS: 27TG ...# 28*6 ...# 28SQ ...# 1. DISC DRIVE HAS BEEN ENGAGED ) ACOMMUNE2 HOLDS THE RELEVANT 29#B ...# ) DEVICE LIST ADDRESS 29S2 ...# 2. DISC DRIVE HAS BEEN DISENGAGED ) 2=?L ...# 2=R= ...# 3. UDAS FILE HAS BEEN OPENED FOR WRITING ) ACOMMUNE2 HOLDS THE 2?=W ...# ) RELEVANT EXOFILE 2?QG ...# 4. UDAS FILE HAS BEEN CLOSED AFTER WRITING ) NUMBER 2#=6 ...# 2#PQ ...# 5. CAFS BIT MAPS NOW FREE - ACOMMUNE2 INDICATES WHICH BIT MAPS 2*9B ...# 2*P2 ...# 2B8L ...# 2BN= ...# 2C7W ...# 2CMG ... SEGENTRY K1CAFSINFO,XK1 [THE ONLY ENTRY POINT 2D76 ...# 2DLQ ...# 2F6B ...# THE FORMALITY OF A LOCAL ENTRY POINT LABEL IS REALLY UNNECESSARY 2FL2 ...# AS WE GO STRAIGHT INTO THE CODE. HOWEVER, THERE MAY BE A TIME... 2G5L ...# 2GK= ...XK1 2H4W ...# 2HJG ...# FIRST WE SPLIT UP THE FUNCTIONS FROM THE IDENTIFIER IS ACOMMUNE1 2J46 ...# 2JHQ ... SMO ACOMMUNE1(2) 2K3B ... BRN £ 2KH2 ...# 2L2L ... BRN (GEOERR) [THERE IS NO EVENT TYPE 0 2LG= ... BRN XENGORDIS [ENGAGE EVENT 2L^W ... BRN XENGORDIS [DISENGAGE EVENT 2MFG ... BRN OPENORCLOSE [OPEN FILE EVENT 2M^6 ... BRN OPENORCLOSE [CLOSE FILE EVENT 2NDQ ... BRN TFREEBMAPS [FREE BIT MAPS EVENT 2NYB ...# 2PD2 ...# 2PXL ...XENGORDIS 2QC= ...# 2QWW ...# 2RBG ...# HERE WE DEAL WITH THE ENGAGEMENT/DISENGAGEMENT OF A DISC 2RW6 ...# 2S*Q ...# WE ARE ONLY INTERESTED IN DRIVES WHICH ARE CONNECTED THROUGH 2STB ...# CAFS AND THUS IGNORE THE EVENT ON OTHER DRIVES 2T*2 ...# 2TSL ... LDX 3 ACOMMUNE2(2) 2W#= ... JNCAFSDV 3,UP [JIF NOT A CAFS DRIVE 2WRW ...# 2X?G ...# THE CAFS SUBSYSTEM MAY NOT HAVE BEEN SET UP IF WE ARE STILL 2XR6 ...# IN EMS 2Y=Q ...# 2YQB ... LDX 1 CAFSPTR [CHECK IF CAFS SUSBSYSTEM IS THERE 2^=2 ... BZE 1 SDECRCOUNT [JIF NO CAFS ACTIVITY YET 2^PL ...# 329= ...# WHEN A CAFS DISC IS ENGAGED, WE RECORD THE CSN IN THE CENTRAL 32NW ...# TABLE OF CAFS CSN'S AND REMOVE THE RELEVANT READ VALIDATION BIT 338G ...# FROM ALL ACTIVE CAFS CHANNELS. WE ALSO MARK THEIR OLPA'S 33N6 ...# LOCAL CSN TABLE ENTRY FOR THE DRIVE TO FORCE REVALIDATION OF 347Q ...# RIGHTS OF ACCESS & NOTIFICATION OF THE DISC'S AVAILABILITY 34MB ...# 3572 ...# FOR DISENGAGEMENT OF A DISC THE ACTION IS SIMILIAR, BUT THE 35LL ...# CENTRAL TABLE ENTRY IS MUTILATED TO INHIBIT ANY FURTHER COMPARISON 366= ...# UNTIL THE DRIVE IS RE-ENGAGED & THE LOCAL TABLE ENTRY IS CLEARED 3K=L ...# 3KQ= ...# 3K^6 ...# NOW THE ACTION DEPENDS ON THE TYPE OF EVENT 3L82 ...# 3LBW ... LGEOG 3,5 [GET GEOG UNIT NUMBER OF DRIVE 3LKQ ... LDX 6 CFRDBITMASK(3) [& READ VALIDATION BIT MASK 3LSL ... LDX 7 CFRDBITMASK+1(3) 3M3G ... ANDX 6 BSB18 [REMOVE UNWANTED BITS FROM MASK 3M=B ... SBX 5 CFLOWGEOG(1) [CONVERT GEOG UNIT NUMBER TO USE 3MF= ...# [AS TABLE MODIFIER LATER 3MN6 ...# 3MX2 ... LDCT 0 #400 [FIRST MUTILATE THE TABLE ENTRY 3N5W ... SMO 5 [(N.B. USING '#40000000' INHIBITS 3N#Q ... STO 0 CFDRVTAB(1) [EQUALITY COMPARISON WITH LOCAL TABLE 3NHL ...# [ENTRIES WHICH ARE ZEROISED) 3NQG ...# 3N^B ... LDN 4 0 [SET INITIAL 'LOCAL' TABLE ENTRY 3P8= ...# 3PC6 ... LDX 0 ACOMMUNE1(2) 3PL2 ... SBN 0 CFDISENGAGE [JIF THIS IS A DISENGAGE EVENT 3PSW ... BZE 0 SDISENGAGE 3Q3Q ...# 3Q=L ...# FOR ENGAGE EVENTS WE CAN NOW ENTER THE NEW CSN INTO THE CENTRAL 3QFG ...# TABLE OF CSN'S 3QNB ...# 3QX= ... LADDP ACOMMUNE2(2),3 [GET ADDRESS OF APIA FOR DRIVE 3R66 ... LDCT 0 #20 [CHECK IF THE DRIVE IS STILL 3R*2 ... ANDX 0 BSUNIT(3) [ONLINE - IT MAY HAVE GONE DOWN AGAIN 3RHW ... BZE 0 SDISENGAGE [SAME AS DISENGAGE IF DRIVE IS DOWN 3RQQ ...# 3R^L ... LDX 4 BSUNIT5(3) [ELSE STORE NEW CSN INTO CAFS TABLE 3S8G ... SMO 5 3SCB ... STO 4 CFDRVTAB(1) 3SL= ... ORX 4 CTMXS2 [SET APPROPRIATE 'CAFS EVENT' BITS 3ST6 ... ORX 6 GSIGN [& ENSURE THAT EXEC REFERS NEXT T'FER 3T42 ...# 3T=W ...SDISENGAGE 3TFQ ...# 3TNL ...# WE NOW PREPARE TO SEARCH ROUND THE CAFS RING TO DEAL WITH ALL 3TXG ...# THE ACTIVE CAFS CHANNELS 3W6B ...# 3W*= ... LDN 2 CFRING(1) [GET END ADDRESS FOR SEARCH 3WJ6 ...# 3WR2 ...TOCLEARACTS 3W^W ... LDX 1 CFRING(1) [GET ADDRESS OF NEXT CAFS OLPA 3X8Q ... BXE 1 2,SDECRCOUNT [JIF DEALT WITH THEM ALL 3XCL ...# 3XLG ... SBN 1 CFRING [FIND START OF OLPA 3XTB ... ORS 6 CFRDBITS(1) [CLEAR APPROPRIATE READ VALIDATION 3Y4= ... ORS 7 CFRDBITS+1(1) [BITS IN OLPA 3Y?6 ... ERS 6 CFRDBITS(1) 3YG2 ... ERS 7 CFRDBITS+1(1) 3YNW ...# 3YXQ ...# THE LOCAL CSN ENTRY FOR THIS DRIVE IS IN THE /CFCSNTABLE BLOCK 3^6L ...# IN FRONT OF THE OLPA 3^*G ...# 3^JB ... HUNT2J 3,CAFS,CFCSNTABLE,1,(GEOERR) 3^R= ... SMO 5 4226 ... STO 4 CFTDRVTAB(3) [RESET TABLE ENTRY AS NECESSARY 4292 ... BRN TOCLEARACTS [& GO FOR NEXT ACTIVITY ON RING 42DG ...# 42Y6 ...SDECRCOUNT 43CQ ...# 43XB ...# EXEC KEEPS A COUNT OF THE NUMBER OF EVENTS THAT IT HAS SENT FOR 44C2 ...# CAFS DRIVES. WE HAVE TO DECREMENT THAT COUNT WHEN WE PROCESS THE 44WL ...# EVENT. 45B= ...# 45L4 ... LDX 2 FX2 45TW ... LDX 3 ACOMMUNE2(2) [GET ADDR OF ENTRY IN DEVICE LIST 46*G ... JNCFENBU 3,UP [JIF NO COUNT TO DECREMENT 46T6 ...# [(PROBABLY BECAUSE OF 'HO' COMMAND) 47#Q ...# 47SB ... LDCT 0 #100 [COUNT IN B1-2 OF CFRDBITMASK (K202) 48#2 ... SBS 0 CFRDBITMASK(3) [OF THE DEVICE LIST ENTRY 48RL ... BRN UP [ALL DONE, SO EXIT 49?= ...# 49QW ...# 4==G ...OPENORCLOSE 4=Q6 ...# 4?9Q ...# WHEN OPENING/CLOSING FILES FOR WRITING WE CHECK ALL THE FILE 4?PB ...# AREAS OF THE FILE AND IF THEY ARE ON CARTRIDGES THAT ARE KNOWN 4#92 ...# TO THE CAFS SYSTEM, WE REMOVE THE CORRESPONDING READ VALIDATION 4#NL ...# BITS FROM ALL THE ACTIVE OLPA'S 4*8= ...# 4*MW ... LDX 1 CAFSPTR [CHECK IF CAFS SUBSYSTEM IS THERE 4B7G ... BZE 1 UP [JIF NO CAFS ACTIVITY YET 4B8* ...# 4B98 ...# WHEN A FILE IS OPENED/CLOSED FOR WRITING, WE SET A 'CAFS EVENT' 4B=3 ...# BIT IN THE LOCAL CSN TABLE FOR EACH OLPA THAT IS AFFECTED BY THE 4B=W ...# ACTION. WHILE WE ARE COLLECTING DETAILS OF THE CHANGES THAT ARE 4B?P ...# REQUIRED, WE SET THE APPROPRIATE EVENT BITS IN A TEMPORARY BLOCK. 4B#J ...# 4B*C ... LDX 3 CFDRVTABLEN(1) [GET LENGTH REQUIRED FOR DATA BLOCK 4BB= ... SETUPCOR 3,1,ADATA,CSTORE [& GET BLOCK OF THAT LENGTH 4BC5 ...# 4BCY ...# THE BLOCK IS ZEROISED BY WAY OF INITIALISATION 4BDR ...# 4BFL ... STOZ A1(1) 4BGF ... LDN 4 A1(1) 4BH# ... LDN 5 A1+1(1) [X3 HOLDS LENGTH OF BLOCK STILL!! 4BJ7 ... MOVE 4 -1(3) 4BK2 ...# 4BKT ... LDX 1 CAFSPTR [ADDRESS OF CENTRAL CAFS ACTIVITY 4BM6 ...# 4C6Q ... STOZ AWORK1(2) [PREPARE AN AREA IN WHICH TO 4CLB ... STOZ AWORK2(2) [ACCUMULATE READ VALIDATION BITS 4D62 ...# 4DKL ... MFINDEXO 3,ACOMMUNE2(2) [LOCATE THE FILE'S EWDAS/EXOF BLOCK 4F5= ...# 4FJW ... LDX 7 FIP+5(3) [OBTAIN NUMBER OF FILE AREA CELLS 4G4G ... ANDX 7 BSP16 4GJ6 ... BZE 7 UPFREE [JIF FILE HAS NO AREAS 4H3Q ... ADN 3 FDCELLS [ADDRESS OF CELLS AREA 4HHB ...# 4J32 ... NGN 6 1 [INITIALISE MARKERS ETC 4JGL ...# 4K2= ...NEXTAREA 4KFW ... BXE 6 0(3),TRYNEXT [JIF AREA ON SAME CARTRIDGE AS LAST 4K^G ... LDX 6 0(3) [ELSE REMEMBER THE NEW CSN 4LF6 ...# 4LYQ ... LDN 5 0 [SET CAFS CSN TABLE POINTER 4MDB ...# 4MY2 ...NEXTDRVTAB 4NCL ... SMO 5 [SEE IF FILE AREA CSN IS IN CAFS LIST 4NX= ... BXE 6 CFDRVTAB(1),SMATCHCSN [JIF MATCHED CSN'S 4PBW ... ADN 5 1 [ELSE TRY NEXT TABLE ENTRY 4PWG ... BXU 5 CFDRVTABLEN(1),NEXTDRVTAB 4QB6 ...# 4QTQ ...TRYNEXT 4R*B ... ADN 3 6 [STEP POINTERS TO NEXT FILE AREA CELL 4RT2 ... BCT 7 NEXTAREA [JIF STILL MORE CELLS TO CHECK 4S#L ...# 4SS= ...# 4T?W ...# BY NOW WE HAVE CONSTRUCTED A MASK IN AWORK1/2 FOR ALL THE READ 4TRG ...# VALIDATION BITS THAT MUST BE REMOVED FROM ACTIVE CAFS CHANNELS 4W?6 ...# 4WQQ ... LDX 0 AWORK1(2) [LOOK AT ALL THE VALID BITS IN THE 4X=B ... ANDX 0 BSB18 [MASK WE HAVE CREATED AND JIF THERE 4XQ2 ... ORX 0 AWORK2(2) [WERE NONE THAT WERE RELEVANT 4Y9L ... BZE 0 UPFREE 4YP= ...# 4^8W ...# THERE ARE BITS SET, SO WE MUST GO ROUND THE CAFS RING A DEAL 4^NG ...# WITH ALL THE OLPA'S 5286 ...# 52MQ ... SMO CAFSPTR 537B ... LDN 1 CFRING [FIND START OF CAFS RING 53M2 ... LDX 6 AWORK1(2) [SET THE FULL MASK TO APPLY TO EACH 53^C ... ANDX 6 BSB18 [OLPA & BY CLEARING CAFS-INITIALISED 54?S ... ORX 6 GSIGN [BIT ENSURE EXEC WILL REFER NEXT PERI 54L= ... LDX 7 AWORK2(2) 555W ... LDX 4 1 [REMEMBER START ADDR OF CAFS RING 55*N ... MHUNTW 2,ADATA,CSTORE [LOCATE TEMPORARY DATA BLOCK 55KG ...# 5656 ...NEXTACT 56JQ ... LDX 1 0(1) [LOOK AT NEXT ELEMENT ON RING 574B ... BXE 1 4,UPFREE [JIF REACHED END OF RING 57J2 ...# 583L ... ORS 6 CFRDBITS-CFRING(1) [CLEAR READ VALIDATION BITS AS REQD 58H= ... ORS 7 CFRDBITS+1-CFRING(1) 592W ... ERS 6 CFRDBITS-CFRING(1) 59GG ... ERS 7 CFRDBITS+1-CFRING(1) 59H7 ...# 59HS ...# NOW WE UPDATE THE LOCAL CSN TABLE ENTRIES FOR THIS OLPA 59JF ...# 59K6 ... LDX 3 1 59KR ... SBN 3 CFRING 59LD ... HUNT2J 3,CAFS,CFCSNTABLE,,(GEOERR) 59M5 ...# 59MQ ... LDX 5 ALOGLEN(3) [GET NUMBER OF POSSIBLE CSN ENTRIES 59NC ...# 59P4 ...SETEVENTS 59PP ... SMO 5 59QB ... LDX 0 CFTDRVTAB-1(3) [GET CURRENT ENTRY VALUE & IGNORE THE 59R3 ... BZE 0 SNOTWANTED [EVENT IF DRIVE IS NOT IN USE BY OLPA 59RN ...# 59S* ... SMO 5 59T2 ... ORX 0 A1-1(2) [ADD ANY EVENT BITS AND THEN RESTORE 59TM ... SMO 5 [THE TABLE ENTRY 59W# ... STO 0 CFTDRVTAB-1(3) 59W^ ...# 59XL ...SNOTWANTED 59Y? ... BCT 5 SETEVENTS [DEAL WITH WHOLE TABLE 59YY ...# 5=26 ... BRN NEXTACT [AND GO FOR NEXT OLPA ON RING 5=FQ ...# 5=^B ...# 5?F2 ...SMATCHCSN 5?YL ...# 5#D= ...# HERE WHEN WE GET A MATCH ON CSN'S 5#XW ...# 5*CG ... ADX 5 CFLOWGEOG(1) [RESTORE GEOG UNIT NUMBER AND LOCATE 5*X6 ... FINDPERE 1,APGEOG,5 [THE DRIVE'S DEVICE LIST ENTRY 5BBQ ...# 5BWB ... LDX 0 CFRDBITMASK(1) 5CB2 ... ORS 0 AWORK1(2) [MERGE THE READ VALIDATION BIT INTO 5CTL ... LDX 0 CFRDBITMASK+1(1) [THE CUMULATIVE MASK 5D*= ... ORS 0 AWORK2(2) 5DSW ...# 5F#G ... LDX 0 ACOMMUNE1(2) [THE NEXT BIT ONLY APPLIES WHEN FILES 5FS6 ... SBN 0 CFCLOSEFILE [ARE BEING OPENED FOR WRITING 5G?Q ... BZE 0 SCLOSEFILE [JIF THIS IS A 'CLOSEFILE' EVENT 5GRB ...# 5H?2 ...# WE MUST NOW ENSURE THAT EXECUTIVE DOES NOT LET THIS CHANNEL DO 5HQL ...# ANY WRITES UNTIL ALL THE EXTANT CAFS ORDERS ON THE DRIVE HAVE 5J== ...# COMPLETED. THIS ENSURES THE DATA IS NOT SCANNED BY A TASK THAT IS 5JPW ...# NOT AWARE OF THE PRESENCE OF WRITERS (I.E. IT IS A FORM OF 5K9G ...# INTEGRITY CHECKING) 5KP6 ...# 5L8Q ...# EXECUTIVE IS TOLD OF OUR REQUIREMENTS BY A MODE #10 TRANSFER ON 5LNB ...# THE CAFS DEVICE 5M82 ...# 5MML ... LDX 0 1 [REMEMBER DEVICE LIST ADDRESS 5N7= ... SMO CAFSPTR 5NLW ... LDX 1 CPPTR [GET ADDRESS OF CAFS DEVICE LIST 5P6G ...# 5PL6 ... DCA 1,STO,0,CTSA [ADDR OF DRIVE TO 'DE-PIPELINE' 5Q5Q ... LDN 0 #10 5QKB ... DCA 1,DLA,0,MODE [SET MODE OF TRANSFER 5R52 ... GPERI 1,2,NC [ISSUE ORDER TO EXEC 5RJL ...# 5S4= ...SCLOSEFILE 5S5^ ... SMO CAFSPTR [RESTORE RELATIVE POINTER TO CSN 5S7N ... SBX 5 CFLOWGEOG [TABLE 5S9C ...# 5S?6 ... MHUNTW 1,ADATA,CSTORE [SET EVENT BIT IN THE APPROPRIATE 5S#T ... LDCT 0 #400 [ENTRY IN THE TEMPORARY DATA BLOCK 5SBJ ... SMO 5 5SD? ... ORS 0 A1(1) 5SG2 ...# 5SHW ... LDX 1 CAFSPTR [RESTORE POINTER TO BSA/CAFSACT 5TH6 ... BRN TRYNEXT [AND GO FOR NEXT FILE AREA 5W2Q ...# 5WGB ...# 5X22 ...# 5XFL ...TFREEBMAPS 5X^= ...# 5YDW ...# 5YYG ...# THE FREEING OF BIT MAPS IS DONE BY SENDING A MODE #1 - #7 ORDER 5^D6 ...# ON THE CAFS DEVICE. THE MODE IS INTERPRETTED BY EXECUTIVE AS 5^XQ ...# A 3-BIT PATTERN INDICATING WHICH BIT MAPS ARE TO BE RELEASED 62CB ...# 62X2 ...# THE REQUIRED BIT PATTERN IS SUPPLIED AS A PARAMETER TO CAFSINFORM 63BL ...# AND IS THEREFORE AVAILABLE IN ACOMMUNE2 63W= ...# 64*W ... SMO CAFSPTR [GET THE ADDRESS OF THE CAFS DEVICE 64TG ... LDX 1 CPPTR [LIST ENTRY 65*6 ... LDX 0 ACOMMUNE2(2) [SET UP THE TRANSFER MODE 65SQ ... DCA 1,DLA,0,MODE 66#B ... GPERI 1,2,NC [PASS THE ORDER TO EXECUTIVE 66S2 ...# 67?L ...# THAT'S ALL THERE IS TO IT!!! 67R= ...# 68=W ...UP UP 68B2 ...# 68F6 ...UPFREE 68J= ... MFREEW ADATA,CSTORE [TEMPORARY BLOCK IS NO LONGER NEEDED! 68MB ... UP 68QG ...# 69=6 ...# 69PQ ...#END ^^^^ ...12476614000100000000 </code> Last modified: 17/01/2024 11:55by 127.0.0.1 Log In