.TITLE SLTBL Memory Disk Data Base .IDENT /Y01.05/ ; In-house version .ENABL LC ; Enable lower case .NLIST CND ; Don't list unsatisfied conditionals .SBTTL Introduction ; ; SLDAT - M/M+ Memory Resident Disk Driver Data Base File ; RX01 Emulator Version ; ; Companion source file to SLPRE.MAC and SLDRV.MAC ; Authors: ; Bruce R. Mitchell ; Michael J. Lynch ; ; Patterned from the DKDRV Cartridge Disk driver distributed by ; Digital Equipment Corporation on RSX-11M-Plus V1.0 Autopatch E ; Source Site: ; Engineering Systems and Technology Laboratory ; 3M Company, 3M Center, St. Paul, Minnesnota 55144 ; Source Hardware and Operating System: ; DEC PDP-11/70 under RSX-11M-Plus V1.0 Autopatch E ; Target Site: ; Same ; Target Hardware and Operating System: ; Same ; Revision History: ; 17-Dec-81 First version coded ; 16-Mar-82 Conditionalized for RSX-11M and M-Plus .PAGE .SBTTL Macro Calls and Definitions ; ; Macro calls from [1,1]EXEMC.MAC ; .MCALL HWDDF$ ; Define hardware offsets .MCALL SCBDF$ ; Define Status Control Block offsets .MCALL UCBDF$ ; Define Unit Control Block offsets HWDDF$ SCBDF$ UCBDF$ .PAGE .SBTTL Variable Assignments and Definitions UMD = 0 ; User mode diagnostics aren't defined ERL = 0 ; Errlogging is not supported MXD = 0 ; Assume mixed MASSBUS not supported .PAGE .SBTTL .SBTTL Driver Data Base .SBTTL .SBTTL Device Control Block $DXDAT:: ; Flag beginning of data base ; ; DX: Device Control Block for M/M-Plus ; $DXDCB::.WORD 0 ; Link to next DCB, filled by ...LOA .WORD .DX0 ; Pointer to first UCB .ASCII /DX/ ; ASCII mnemonic for this device .BYTE 0 ; Lowest unit number on this DCB .BYTE 0 ; Highest unit number on this DCB .WORD DXND - DXST ; Length of UCB in bytes .WORD $DXTBL ; Pointer to driver dispatch table .WORD 177077 ; Legal function mask, codes 0 - 15 ; 0 - IO.KIL - Cancel I/O ; 1 - IO.WLB - Write Logical Block ; 2 - IO.RLB - Read Logical Block ; 3 - IO.ATT - Attach Device ; 4 - IO.DET - Detach Device ; 5 - - General Device Control ; 9 - IO.FNA - Find File in Directory ; 10 - IO.ULK - Unlock Block ; 11 - IO.RNA - Remove File from Direct ; 12 - IO.ENA - Enter File in Directory ; 13 - IO.ACR - Access File for Read ; 14 - IO.ACW - Access File for R/W ; 15 - IO.ACE - Access File for R/W/E .WORD 000070 ; Control function mask, codes 0 - 15 ; 3 - IO.ATT - Attach Device ; 4 - IO.DET - Detach Device ; 5 - - General Device Control .WORD 000000 ; No-op function mask, codes 0 - 15 .WORD 177200 ; ACP function mask, codes 0 - 15 ; 7 - - General Device Control ; 9 - IO.FNA - Find File in Directory ; 10 - IO.ULK - Unlock Block ; 11 - IO.RNA - Remove File from Direct ; 12 - IO.ENA - Enter File in Directory ; 13 - IO.ACR - Access File for Read ; 14 - IO.ACW - Access File for R/W ; 15 - IO.ACE - Access File for R/W/E .WORD 000377 ; Legal function mask, codes 16 - 31 ; 16 - IO.DAC - Deaccess File ; 17 - IO.RVB - Read Virtual Block ; 18 - IO.WVB - Write Virtual Block ; 19 - IO.EXT - Extend File ; 20 - IO.CRE - Create File ; 21 - IO.DEL - Mark File for Delete ; 22 - IO.RAT - Read File Attributes ; 23 - IO.WAT - Write File Attributes .WORD 000000 ; Control function mask, codes 16 - 31 .WORD 000000 ; No-op function mask, codes 16 - 31 .WORD 000377 ; ACP function mask, codes 16 - 31 ; 16 - IO.DAC - Deaccess File ; 17 - IO.RVB - Read Virtual Block ; 18 - IO.WVB - Write Virtual Block ; 19 - IO.EXT - Extend File ; 20 - IO.CRE - Create File ; 21 - IO.DEL - Mark File for Delete ; 22 - IO.RAT - Read File Attributes ; 23 - IO.WAT - Write File Attributes .WORD 0 ; Address of partition control block ; Filled in by ...LOA .PAGE .SBTTL Unit Control Block ; ; DX: Unit Control Block (UCB) for M/M-Plus ; DXST = . ; Start of DX0: Unit Control Block .IF DF M$$MUP ; If multiuser protection supported .WORD 0 ; Owning terminal UCB address .ENDC ; DF M$$MUP .DX0:: .WORD $DXDCB ; U.DCB Backward pointer to DX: DCB .WORD .DX0 ; U.RED Pointer to redirect unit UCB .BYTE UC.ALG!1 ; U.CTL Unit control byte ; Word aligned buffers ; Buffer size: word modulus .BYTE US.MNT ; U.STS Unit status byte ; Device is not mounted .BYTE 0 ; U.UNIT Physical unit number .BYTE US.OFL ; U.ST2 Device status extension ; Unit is offline .WORD DV.DIR!DV.F11!DV.MNT ; U.CW1 Device characteristics word 1 ; Device is directory structured ; Mountable as a Files-11 device ; Device is mountable .WORD 0 ; U.CW2 Upper 8 bits of # blocks .WORD 512. ; U.CW3 Lower 16 bits of # blocks .WORD 512. ; U.CW4 Default buffer size in bytes .WORD $DX0 ; U.SCB Pointer to DX: SCB .WORD 0 ; U.ATT TCB address of attaching task .WORD 0 ; U.BUF .WORD 0 ; .WORD 0 ; U.CNT Byte count of buffer in U.BUF .WORD 0 ; U.PRM .WORD 0 ; .WORD 0 ; .BYTE 0. ; U.PRM+6 Number sectors per track .BYTE 0. ; U.PRM+7 Number tracks per cylinder .WORD 0. ; U.PRM+8. Number of cylinders per disk DXND = . ; End of DX0: Unit Control Block .IF DF R$$MPL ; If this is an RSX-11M-Plus system .PAGE .SBTTL Controller Request Block ; ; DX: Controller Request Block (KRB) for M-Plus ; .BYTE PR5 ; K.PRI Interrupt priority .BYTE DXHVEC / 4 ; K.VCT Interrupt vector / 4 .BYTE 0 * 2 ; K.CON Controller number * 2 .BYTE 0 ; K.IOC Controller I/O count .WORD KS.OFL ; K.STS Controller status ; KS.OFL Initially offline $DXA:: .WORD DXHCSR ; K.CSR Control Status Register addr .WORD 0 ; K.OFF Offset from K.CSR to UCB .BYTE 0 ; K.HPU Highest physical unit number .BYTE 0 ; Unused .WORD 0 ; K.OWN Currently active unit .ENDC ; DF R$$MPL .PAGE .SBTTL Status Control Block .IF DF R$$MPL ; If this is an RSX-11M-Plus system ; ; Status Control Block (SCB) for RSX-11M-Plus ; $DX0:: .WORD 0 ; S.LHD Device I/O queue listhead .WORD $DX0 ; I/O queue list termination .WORD 0 ; S.FRK Fork link word .WORD 0 ; Fork PC .WORD 0 ; Fork R5 .WORD 0 ; Fork R4 .WORD 0 ; S.KS5 Driver/Fork KISAR5 .WORD 0 ; S.PKT Address of current I/O packet .BYTE 0 ; S.CTM Current timeout count .BYTE 0 ; S.ITM Initial timeout count .BYTE 0 ; S.STS Status .BYTE 0 ; S.ST3 Status extension .WORD S2.CON ; S.ST2 Status extension ; S2.CON Contiguous KRB/SCB .WORD $DXA ; S.KRB Pointer to current KRB .IFF ; If this is an RSX-11M system ; ; Status Control Block (SCB) for RSX-11M ; $DX0:: .WORD 0 ; S.LHD Device I/O queue listhead .WORD $DX0 ; I/O queue list termination .BYTE PR5 ; S.PRI Device interrupt priority .BYTE DXHVEC / 4 ; S.VCT Device interrupt vector / 4 .BYTE 0 ; S.CTM Current timeout count .BYTE 0 ; S.ITM Initial timeout count .BYTE 0 * 2 ; S.CON Controller number * 2 .BYTE 0 ; S.STS Status .WORD DXHCSR ; S.CSR Control Status Register addr .WORD 0 ; S.PKT Address of current I/O packet .WORD 0 ; S.FRK Fork link word .WORD 0 ; Fork PC .WORD 0 ; Fork R5 .WORD 0 ; Fork R4 .WORD 0 ; Relocation base of driver par .ENDC ; DF R$$MPL .IF DF R$$MPL ; If this is an RSX-11M-Plus system .PAGE .SBTTL Controller Table Block ; ; Controller Table Block (CTB) for M-Plus ; .WORD 0 ; L.ICB Link to first ICB .WORD 0 ; L.LNK Link to next CTB .ASCII /DX/ ; L.NAM ASCII controller mnemonic .WORD $DXDCB ; L.DCB Pointer to DCB .BYTE 1 ; L.NUM Number of KRB addresses .BYTE 0 ; L.STS Controller status $DXCTB:: .WORD $DXA ; L.KRB Pointer to start of KRB .ENDC ; DF R$$MPL $DXEND:: ; Flag end of data base .END