 nam rbfdefs
 ttl Random Block File Manager Definitions

**********************
* Modification History
*
* Date     Changes Made                                                 by
* -------- ------------------------------------------------------------ ---
* 82/07/13 PD.Exten added to path descriptor                            rfd
* 82/07/13 PE entries defined                                           rfd
* 82/07/15 V.FileHd inserted in drive static                            rfd
* 82/09/10 Level One/ Level two cond added                              WGP
* 82/09/17 Record Lock cond added                                       WGP
* 82/09/17 PD.SLE renamed to PD.Creat                                   rfd
* 82/09/17 V.DiskID, V.BMapSz, V.MapSct added for
*          smart multi-sector bitmap searching                          rfd
* 82/09/20 reserved areas added in static storage.
* 83/06/07 Added InDriver flag in PD.SMF.                               rfd
* 83/06/13 Added PE.Req tmp save for PE.Lock                            rfd
* 83/08/08 reserved PD.SToff for Japanese                               rfd
* 83/11/19 Added V.ResBit in drive tables.                              rfd
* 83/12/12 Added PE.Prior to save process priority.                     rfd
* 83/12/13 Added BufBusy bit in state flag (PD.SMF)                     rfd
* 84/07/06 Added Bit Definitions for DD.FMT                             MGH
* 87/06/23 Updated with Dev Desc Info                                   KKD

*******************************
* RBF Device Descriptor Offsets
*
 org M$DTyp
 rmb 1 Device type (IT.DTP) (1=RBF)
IT.DRV rmb 1 Drive number
IT.STP rmb 1 Step rate
IT.TYP rmb 1 Disk device type (5" 8" other)
IT.DNS rmb 1 Density capability
IT.CYL rmb 2 Number of cylinders
IT.SID rmb 1 Number of surfaces
IT.VFY rmb 1 0=verify disk writes
IT.SCT rmb 2 Default sectors/track
IT.T0S rmb 2 Default sectors/track tr00,s0
IT.ILV rmb 1 Sector interleave offset
IT.SAS rmb 1 Segment allocation size

*************************************
* Random Block Path Descriptor Format
*
 org PD.FST
PD.SMF rmb 1 State flags
PD.CP rmb 4 Current logical byte position
PD.SIZ rmb 4 File size
PD.SBL rmb 3 Segment beginning lsn
PD.SBP rmb 3 Segment beginning psn
PD.SSZ rmb 3 Segment size
PD.DSK rmb 2 Disk id
PD.DTB rmb 2 Drive table ptr
 org PD.OPT
 rmb 1 Device type
PD.DRV rmb 1 Drive number
PD.STP rmb 1 Step rate
PD.TYP rmb 1 Disk device type (5" 8" other)
PD.DNS rmb 1 Density capability
PD.CYL rmb 2 Number of cylinders
PD.SID rmb 1 Number of surfaces
PD.VFY rmb 1 0=verify disk writes
PD.SCT rmb 2 Default sectors/track
PD.T0S rmb 2 Default sectors/track tr00,s0
PD.ILV rmb 1 Sector interleave offset
PD.SAS rmb 1 Segment allocation size
PD.TFM rmb 1 DMA Transfer Mode
PD.Exten rmb 2 Path Extension (PE) for record locking
PD.SToff rmb 1 Sector/Track offsets (for "foreign" disk formats)
PD.ATT rmb 1 File attributes
PD.FD rmb 3 File descriptor psn
PD.DFD rmb 3 Directory file descriptor psn
PD.DCP rmb 4 File directory entry ptr
PD.DVT rmb 2 User readable dev tbl ptr

* State Flags
BUFMOD equ $01 Buffer modified
SINBUF equ $02 Sector in buffer
FDBUF equ $04 File descriptor in buffer
*EOFSEC equ $08 End of file sector
*EOF equ $10 End of file
InDriver equ $20 Currently in Disk Driver, or queued
BufBusy equ $40 Buffer is currently busy

 ifne LEVEL-1
************************************
* Random Block Path Extension Format
*
 org 0
PE.PE rmb 1 PE path number
PE.PDptr rmb 2 back ptr to this PE's Path Descriptor
PE.NxFil rmb 2 Drive Open-File list ptr
PE.Confl rmb 2 circular File Conflict list
PE.Lock rmb 1 Path lockout status
PE.LoLck rmb 4 Low Locked Logical addr
PE.HiLck rmb 4 High Locked Logical addr
PE.Wait rmb 2 PE ptr to (next) locked-out PE
PE.TmOut rmb 2 Max ticks to wait for locked segment
PE.Owner rmb 1 Process ID of owner of locked segment
PE.Req rmb 1 temp for PE.Lock in GAIN when LockSeg fails
PE.Prior rmb 1 tmp for process priority while in driver
 rmb 32-. reserved
PE.FilNm rmb 32 temp for filename during directory search

* PE.Lock status codes
Unlocked equ 0 no portion of file is locked
RcdLock equ 1 record from LoLck to HiLck locked
FileLock equ 2 entire file locked
EofLock equ 4 End of file is locked
 endc

***********************
* LSN0 Disk Data Format
*
 org 0
DD.TOT rmb 3 Total number of sectors
DD.TKS rmb 1 Track size in sectors
DD.MAP rmb 2 Number of bytes in allocation bit map
DD.BIT rmb 2 Number of sectors/bit
DD.DIR rmb 3 Address of root directory fd
DD.OWN rmb 2 Owner
DD.ATT rmb 1 Attributes
DD.DSK rmb 2 Disk id
DD.FMT rmb 1 Disk format; density/sides
DD.SPT rmb 2 Sectors/track
DD.RES rmb 2 Reserved for future use
DD.SIZ equ . Device descriptor minimum size
DD.BT rmb 3 System bootstrap sector
DD.BSZ rmb 2 Size of system bootstrap
DD.DAT rmb 5 Creation date
DD.NAM rmb 32 Volume name
DD.OPT rmb 32 option area

* DD.FMT Bit Definitions
FMT.SIDE equ %00000001 Single Side=0, Double Side=1
FMT.DNS equ %00000010 Single DNS=0, Double DNS=1
FMT.TDNS equ %00000100 48tpi=0, 96tpi=1
FMT.T0DN equ %00100000 Track 0 DNS, see FMT.DNS

************************
* File Descriptor Format
*
 org 0
FD.ATT rmb 1 Attributes
FD.OWN rmb 2 Owner
FD.DAT rmb 5 Date last modified
FD.LNK rmb 1 Link count
FD.SIZ rmb 4 File size
FD.Creat rmb 3 Segment list extension
FD.SEG equ . Beginning of segment list
* Segment List Entry Format
 org 0
FDSL.A rmb 3 Segment beginning physical sector number
FDSL.B rmb 2 Segment size
FDSL.S equ . Segment list entry size
FD.LS1 equ FD.SEG+((256-FD.SEG)/FDSL.S-1)*FDSL.S
FD.LS2 equ (256/FDSL.S-1)*FDSL.S
MINSEC set 16

************************
* Directory Entry Format
*
 org 0
DIR.NM rmb 29 File name
DIR.FD rmb 3 File descriptor physical sector number
DIR.SZ equ . Directory record size

****************
* Static Storage
*
* Overall Disk Static Storage
*
* Note:  This does not reserve any memory for drive tables.  Each Driver is
*        responsible for reserving sufficient memory for the appropriate
*        number of tables.
*
 org V.USER Reserve required
V.NDRV rmb 1 Number of drives
 rmb 8 reserved
DRVBEG equ . Beginning of drive tables
*
* Global Storage For Disk Drive Tables
* Each Table Contains The First 'DD.Siz' Bytes
* From Sector 0, And The Current Track, Stepping Rate,
* Bit-Map Use Flag, And Disk Type
*
 org 0
 rmb DD.SIZ Device descriptor, sector 0
V.TRAK rmb 2 Current track
V.BMB rmb 1 Bit-map use flag
V.FileHd rmb 2 open file list for this drive
V.DiskID rmb 2 Disk ID
V.BMapSz rmb 1 Bitmap Size
V.MapSct rmb 1 lowest reasonable bitmap sector
V.ResBit rmb 1 reserved bitmap sector (for compaction)
V.ScTkOf rmb 1 Sector/Track byte (Combined from discriptor)
V.ScOfst rmb 1 Sector offset split from byte above
V.TkOfst rmb 1 Track offset split from byte above
 rmb 4 reserved
DRVMEM equ .

