CAFSINFO866

(George Source)

Macros used: BXE, BXU, DCA, GPERI, HUNT2J, JNCAFSDV, JNCFENBU, LADDP, LGEOG, MFREEW, MHUNTW, SEG, SEGENTRY, UP

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
  • Last modified: 17/01/2024 11:55
  • by 127.0.0.1