*COMDECK       COMSHSP
          LIST   -L 
 HSPDF    IFNE   IP.819,0 
          LIST   *
          SPACE  4,10 
          COMMENT COPYRIGHT CONTROL DATA SYSTEMS, INC. 1994.
 COMSHSP  SPACE  4,8
***       COMSHSP - 819 CM AND LCM TABLE DEFINITIONS (TBT). 
*         J.D. BRANHAM       75/11/24.
          SPACE  4,8
**        BUFFER TABLE ADDRESS DEFINITIONS (TBT). 
  
**
**T BQL   18/UNIT QUEUE,21/LAST TBT,21/NEXT TBT 
**T BFLG    21/FLAGS,6/TBT,21/RECALL,12/PRU COUNT 
**T BDSK    12/IH FLAGS,12/NO.SEC.,12/CUR. PB,12/CUR. CY.,12/CUR. HEAD
**T BNXT    12/FNT,12/LAST PB,12/NEXT PB,12/NEXT CY.,12/NEXT HEAD 
**T BTHR    54/ ,6/IO THRESHOLD 
**T BLIM    1/0,53/ ,6/LIMIT
**T BIN     54/ ,6/IN 
**T BINW    51/ ,9/INW
**T BOUT    54/ ,6/OUT
**T BOTW    51/ ,9/OUTW 
**T BSPM    24/SPM INFORMATION,18/ ,18/PRU PER PB 
**T BSR1    60/1ST WORD OF STACK REQUEST
**T BSR2    60/2ND WORD OF STACK REQUEST
**T BSR3    60/3RD WORD OF STACK REQUEST
**T BBUF    12/BUFFER FLAGS,12/BEGIN PRU,12/PB,3/ ,21/LCM ADD.
**T BHDR    12/PP CM.,3/UNIT,9/CY.,6/HEAD,6/SEC.,12/PRU FLAGS,12/CK SUM 
  
****
*         FLAG DEFINITIONS. 
  
*         BQL.
*         BIT 42 0 = TBT NOT ON DISK QUEUE, 1 = TBT ON DISK QUEUE.
  
*         BFLG. 
*         BIT 59 0 = READ, 1 = WRITE, 
*         BIT 58 STACK REQUEST COMPLETE,
*         BIT 57 STOP,
*         BIT 56 POSITIONING FORWARD, 
*         BIT 55 FLUSH, 
*         BIT 54 PPIO REQUEST,
*         BIT 53 PREREAD, 
*         BIT 52 POST READ
*         BIT 51 POSITIONING REVERSED,
*         BIT 50 XP BIT,
*         BIT 49 UNRECOVERED ERROR, 
*         BIT 48 EVICT REQUEST, 
*         BIT 47 SWITCH TO NEXT PB, 
*         BIT 46 SKIP 1ST 3 CM WORDS OF READ REQUEST. 
*         BIT 45 WRITE IN PLACE REQUEST.
*         BIT 44 SKIP BACKWARD OVER PB. 
*         BIT 43 SCB NOT AVAILABLE. 
*         BIT 42 CHECKWORD ERROR. 
*         BIT 41 CEM CALLED.
*         BIT 40 CEM COMPLETE.
  
*         BDSK. 
*         BIT 59 WAIT ON DISK.
*         BIT 58 FULL/EMPTY BIT.
*         BIT 57 UNRECOVERED CHECKWORD. 
  
****
 BBT      EQU    0           TBT POINTER
 BQL      EQU    BBT         DISK QUEUE 
 BFLG     EQU    BQL+1       FLAG WORD
 BDSK     EQU    BFLG+1      DISK POSITION WORD 
 BNXT     EQU    BDSK+1      NEXT PB
 BTHR     EQU    BNXT+1      THRESHOLD VALUE
 BLIM     EQU    BTHR+1      LIMIT BUFFER NUMBER
 BIN      EQU    BLIM+1      IN BUFFER NUMBER 
 BINW     EQU    BIN+1       IN WORDS 
 BOUT     EQU    BINW+1      OUT BUFFER NUMBER
 BOTW     EQU    BOUT+1      OUT WORDS
 BSPM     EQU    BOTW+1      SPM SAVED INFORMATION
 BSR1     EQU    BSPM+1      FIRST WORD OF STACK ENTRY
 BSR2     EQU    BSR1+1      SECOND WORD OF STACK ENTRY 
 BSR3     EQU    BSR2+1      THIRD WORD OF STACK ENTRY
 BBUF     EQU    BSR3+1      BUFFER POINTER 
 BHDR     EQU    BBUF+1      SECTOR HEADER
 BBTL     EQU    77B         LENGTH OF TBT
          SPACE  4,8
**        CHANNEL TABLE - CHT.
  
**
**T CHT    12/FLAGS,12/ ,6/MASTER,18/OUTPUT INTERRUPT,6/UNIT NO.,6/MODE 
**T,      12/,12/,6/CH.,18/EXHCANGE PACKAGE,6/,6/ 
**T CHT+1  6/MASTER,6/SLAVE,24/MASTER SLAVE,6/,18/UQT POINTER 
**T,      6/PPU CH,6/PPU CH,24/CH DEF.,6/,18/ 
**T CHT+2  60/POINTER TO CURRENT UQT ENTRY
**T CHT+3  60/ADDRESS OF CURRENT TBT
**T CHT+4  24/ ,18/NO. SECTORS ,18/COUNT TRANSFERS
**T CHT+5  60/LAST DATA WORD OF SECTOR (OUTPUT) 
**T,      60/ OR PP COMMAND WORD (INPUT)
**T CHT+6  60/NUMBER OF ACTIVE REQUEST ON CHANNEL 
**T CHT+7  60/PRU NUMBER
  
****
*         FLAG DEFINITIONS. 
  
*         CBB.
*         BIT 59 CHANNEL BUSY,
*         BIT 58 CHANNEL DOWN,
*         BIT 57 PROCESS OF SENDING A REQUEST TO THE PPU, 
*         BIT 56 TERMINATION FLAG - 1 MORE SECTOR TO TRANSFER,
*         BIT 55 BEGIN PB, THE NEXT SECTOR IS END OF PB,
*         BIT 54 SWITCH TO A DIFFERENT TBT, 
*         BIT 53 TBT SWITCH COMPLETED,
*         BIT 52
*         BIT 51 INITIALIZE DATA TRANSFER,
*         BIT 50 EOT - TERMINATES DATA TRANSFER,
*         BIT 49 ACTIVE FLAG FOR DEADSTART TO LOAD FLPPS, 
*         BITS 5 - 0  MODE OF CHANNEL 
*                     0 = CHANNEL NOT AVAILABLE 
*                     1 = IDLE
*                     3 = DATA TRANSFER 
****
  
**        CUQT CH.  MASTER AND SLAVE PP CHANNEL DEFINITIONS.
  
**
**T DEF    3/A,3/B,3/C,3/D,3/A,3/B,3/C,3/D
*         WHERE - 
*         A = BITS 47 - 45, 35 - 33  DISK DATA CHANNEL
*         B = BITS 44 - 42, 32 - 30  DISK CONTROL CHANNEL 
*         C = BITS 41 - 39, 29 - 27  CPU CHANNEL
*         D = BITS 38 - 36, 26 - 24  PARTNER PP CHANNEL 
  
 CBB      EQU    0           FLAG WORD
 CUQT     EQU    CBB+1       POINTER TO UQT 
 CUQE     EQU    CUQT+1      POINTER TO CURRENT UQT ENTRY 
 CTBT     EQU    CUQE+1      ADDRESS OF CURRENT TBT 
 CSC      EQU    CTBT+1      COUNT OF SECTORS TRANSFERRED 
 CNS      EQU    CSC+1       LAST DATA WORD (OUTPUT), PP COMMAND WORD 
                             (INPUT). 
 CRCT     EQU    CNS+1       NUMBER OF ACTIVE REQUESTS ON CHANNEL 
 CPRU     EQU    CRCT+1      PRU NUMBER 
 CHTL     EQU    10B         LENGTH OF CHT ENTRY
          SPACE  4,8
**        UNIT QUEUE TABLE - UQT. 
  
**
**T UQT    16/UQT ENTRY,2/,6/NO.,18/PRIMARY,18/SECONDARY
**T,      16/ADDRESS,2/,6/ENTRY,18/CHANNEL,18/CHANNEL 
**T UQT+1  6/FLAGS,33/ ,21/FINISHED TBT ADDRESS 
**T UQT+2  6/FLAGS,9/LAST TBT,9/FIRST TBT,12/EST,18/CHT,6/UNIT
**T,      6/,9/COUNT,9/COUNT,12/ADDRESS,18/ASSIGNED,6/NO. 
**T UQT+3  18/QUEUE SIZE,21/CURRENT TBT,21/1ST TBT
**T UQT+4  6/FUNC.1/C,5/UNIT,12/CYLINDER,24/,6/HEAD,6/SECTOR
**T,      6/CODE,1/K,5/,12/,24/,6/,6/ 
  
 UHDR     EQU    0           HEADER 
 UHD2     EQU    UHDR+1      TBT ADDRESS
 UHDL     EQU    2           UQT HEADER LENGTH
 UNT      EQU    0           CHANNEL AND EST INFORMATION
 UTBT     EQU    UNT+1       QUEUE SIZE AND TBT CHAIN POINTER 
 UDRQ     EQU    UTBT+1      DISK POSITION INFORMATION
 USC      EQU    UDRQ+1      TOTAL SECTORS TRANSFERRRED 
 UQTL     EQU    4           LENGTH OF UQT ENTRY
          SPACE  4,8
*         JUMP INDEXES. 
  
 JHSP     EQU    0           HSP - 819 EXECUTIVE - WAITING ON DISK
 JHSM     EQU    JHSP+3      HSF - EVICT RETURN 
 JHDRQ    EQU    JHSM+3      HDRQ 819 DISK REQUEST PROCESSOR
 JHDC     EQU    JHDRQ+3     HDC 819 DISK REQUEST COMPLETION
 MACR     TITLE  819 MACROES. 
**        IXI    IJ/XK,BN - INTERGER DIVISION 
* 
*         ENTRY  IXI     XJ/XK,BN 
*                WERE BN IS ANY B REGISTER. 
* 
*         EXIT   DIVIDE XJ BY XK TO XI, 
*                DESTROYS XJ, XK, AND BN. 
  
          PURGMAC IXX/X,B 
 IXX/X,B  OPDEF  I,J,K,N
   PX.J  X.J
   NX.J  X.J
   PX.K  X.K
   NX.K  X.K
   FX.I  X.J/X.K
   UX.I  B.N,X.I
   LX.I  B.N,X.I
   ENDM 
LCM       SPACE  4,8
**        LCM    TABLE. 
* 
*         ENTRY  LCM    TABLE,BN
*                WHERE TABLE IS EQUAL TO THE RELATIVE POSTION IN A TABLE
*                TO BE ADDED TO X2. 
* 
*                THIS MACRO MAY ALLOW THE CONVERSION
*                OF THE 819 CODE TO A STANDARD BUFFER 
*                SCHEME.
* 
*         EXIT   X1 = ABSOLUTE LCM ADDRESS. 
  
          PURGMAC LCM 
 LCM      MACRO  TABLE,BN 
BB        IFC    EQ,*B7*BN* 
   ERRNG TABLE
   SX0  X0+B7 
   IX1  X0+X2 
BB        ELSE
BQL       IFC    EQ,*BQL*TABLE* 
   BX1  X2
   ERRNG TABLE
BQL       ELSE
 BLANK    IFC    EQ,**BN* 
   SX0  TABLE 
   IX1  X0+X2 
 BLANK    ELSE
   SX0  BN+TABLE
   IX1  X0+X2 
 BLANK    ENDIF 
 BQL      ENDIF 
 BB       ENDIF 
          ENDM
 SUBJ     SPACE  4,8
**  LABEL SUBJ. 
* 
*         ENTRY  LABEL SUBJ 
*                WHERE LABEL IS THE ENTRANCE TO THE SUBROUTINE, 
*                LABELX IS THE EXIT LOCATION. 
  
          PURGMAC SUBJ
          MACRO  SUBJ,SUBRTN
 SUBRTN   PS     0           ENTRY/EXIT 
 SUBRTN_X EQU    *           EXIT 
          ENDM
 CONS     TITLE  819 CONSTANTS. 
****
**        819 CONSTANTS.
* 
  
 NSPP     EQU    8           NUMBER OF PRUS PER SECTOR
 PRUL     EQU    100B        LENGTH OF A CM PRU 
 SECL     EQU    1000B       LENGTH OF LCM SECTOR LENGTH
 SPPB     EQU    160D        PRUS PER PB
 PPLB     EQU    5           PPIO LCM BUFFER DEFAULT
 THRS     EQU    3           NUMBER OF FILES BEFORE MINM TAKES AFFECT 
 MINM     EQU    5           DEFAULT NUMBER OF BUFFERS/TBT
 CONS     SPACE  4,8
**        SPM CONSTANTS.
* 
  
  
 FERR     EQU    2           FATAL ERROR CODE 
 FURR     EQU    4           UNRECOVERED ERROR
 FEOC     EQU    22B         OWNCODE ERROR CODE 
 FNTY     EQU    0302B       FNT SUPPLIMENT TYPE
 ACCM     EQU    7000B       MAXIMUM PRUS/ACCOUNTING MESSAGE
 CONS     SPACE  4,8
**        SYSTEM CIRCULAR BUFFER DEFINITIONS FOR PPIO.
* 
  
  
 SCBEOR   EQU    5           O.WRPR FUNCTION FLAG 
 SCBTBT   EQU    SCBEOR+1    TBT ADDRESS
 SCBSR2   EQU    SCBTBT+1    STACK REQUEST WORD 2 
****
  
 HSPDF    ELSE
          LIST   *
 HSPDF    ENDIF 
