view defs/rbfdefs @ 1292:6b8854988113

Fixed case
author boisy
date Sun, 31 Aug 2003 14:39:41 +0000
parents 383d5981c23f
children 7e26b1ec9738
line wrap: on
line source

         IFEQ  RBFDEFS

RBFDEFS  set   1

********************************************************************
* RBFDefs - Random Block File Manager Definitions
*
* $Id$
*
* RBF stands for 'Random Block Filemanager' and is a package of subroutines
* that define the logical structure of a disk and allows access to the files
* in that structure.
*
* The data structures in this file give RBF its 'personality' and are used
* by RBF itself, as well as applications that will require disk I/O.
*
* Edt/Rev  YYYY/MM/DD  Modified by
* Comment
* ------------------------------------------------------------------
*          1982/07/13  Robert F. Doggett
* PD.Exten added to path descriptor and PE Entries defined.
*
*          1982/07/15  Robert F. Doggett
* V.FileHd inserted in driver static storage.
*
*          1982/09/10  WGP
* Level One/Level Two condionals added.
*
*          1982/09/17  WGP
*
*          1982/09/17  Robert F. Doggett
* PD.SLE renamed to PD.Creat.
*
*          1982/09/17  Robert F. Doggett
* V.DiskID, V.BMapSz, V.MapSct added for smart multi-sector bitmap searching.
*
*          1982/09/20  Robert F. Doggett
* Reserved areas added in static storage.

*          1983/06/07  Robert F. Doggett
* Added InDriver flag in PD.SMF.
*
*          1983/06/13  Robert F. Doggett
* Added PE.Req tmp save for PE.Lock.
*
*          1983/08/08  Robert F. Doggett
* Reserved PD.SToff for Japanese.
*
*          1983/11/19  Robert F. Doggett
* Added V.ResBit in drive tables.
*
*          1983/12/12  Robert F. Doggett
* Added PE.Prior to save process priority.
*
*          1983/12/13  Robert F. Doggett
* Added BufBusy bit in state flag (PD.SMF).
*
*          1984/07/06  Mark G. Hawkins
* Added Bit Definitions for DD.FMT.
*
*          1987/06/23  Kevin K. Darling
* Updated with Dev Desc Info
*
*          2003/06/02  Boisy G. Pitre
* Updated comments for clarity.
* Added TYP.256-TYP.2048 definitions for future expansion.

         nam   RBFDefs
         ttl   Random Block File Manager Definitions


         pag
*******************************
* RBF Device Descriptor Offsets
*
* These definitions are for RBF device descriptors.

         org   M$DTyp
         rmb   1          Device type (DT.RBF)
IT.DRV   rmb   1          Drive number
IT.STP   rmb   1          Step rate
IT.TYP   rmb   1          Disk device type information
IT.DNS   rmb   1          Density capability
IT.CYL   rmb   2          Number of cylinders
IT.SID   rmb   1          Number of surfaces
IT.VFY   rmb   1          Verify disk writes (0 = verify, 1 = don't)
IT.SCT   rmb   2          Default sectors/track
IT.T0S   rmb   2          Default sectors/track for track 0 sector 0
IT.ILV   rmb   1          Sector interleave offset
IT.SAS   rmb   1          Segment allocation size

* IT.TYP/IT.DNS/IT.STP bit definitions
*
TYP.256  equ   %00000000	256 byte sector device
TYP.512  equ   %00000010	512 byte sector device
TYP.1024 equ   %00000100	1024 byte sector device
TYP.2048 equ   %00000110	2048 byte sector device
TYP.SSM  equ   %00000110        Sector size mask
TYP.FLP  equ   %00000000	Floppy disk
TYP.HARD equ   %10000000	Hard disk

* The following TYP and DNS bit definitions are applicable
* only if the TYP.FLP bit is clear.
TYP.5    equ   %00000000	5" media
TYP.8    equ   %00000001	8" media
TYP.CCF  equ   %00100000	CoCo format
TYP.NCCF equ   %00000000	Non-CoCo format
TYP.SOF  equ   %00000000	Standard OS-9 format
TYP.NSF  equ   %01000000	Non-standard format

* Density bit definitions
DNS.FM   equ   %00000000        Single-density (FM)
DNS.MFM  equ   %00000001        Double-density (MFM)
DNS.STD  equ   %00000000        Single track density (48 tpi)
DNS.DTD  equ   %00000010        Single track density (96 tpi)

* Floppy disk step rate definitions
         IFEQ  Level-1
STP.30ms equ   3                30ms step rate
STP.20ms equ   2                20ms step rate
STP.12ms equ   1                12ms step rate
STP.6ms  equ   0                6ms step rate
         ELSE
STP.30ms equ   0                30ms step rate
STP.20ms equ   1                20ms step rate
STP.12ms equ   2                12ms step rate
STP.6ms  equ   3                6ms step rate
         ENDC

         pag
*************************************
* Random Block Path Descriptor Format
*
* A path descriptor is created for every new path that is open
* via the I$Open system call (processed by IOMan).  Process
* descriptors track state information of a path.
*
         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
*
* RBF paths under Level Two have additional information that
* is referenced by the path extension area.
*
         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          Temp for process priority while in driver
PE.SigSg rmb   1          Signal code to send
PE.SigID rmb   1          Process ID to send the signal to
         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  


         pag
***********************
* LSN0 Disk Data Format
*
* Logical Sector Number 0 is the first sector on an RBF formatted device
* and contains information about the device's size and 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 - valid only if device is a floppy disk
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


         pag
************************
* File Descriptor Format
*
* The file descriptor is a sector that is present for every file
* on an RBF device.  It contains attributes, modification dates,
* and segment information on a file.
*
         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


         pag
************************
* Directory Entry Format
*
* Directory entries are part of a directory and define the name
* of the file, as well as a pointer to its file descriptor.
*
         org   0
DIR.NM   rmb   29         File name
DIR.FD   rmb   3          File descriptor physical sector number
DIR.SZ   equ   .          Directory record size


         pag
********************
* RBF 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           ($06)
V.NDRV   rmb   1          Number of drives           ($07)
         rmb   8          reserved                   ($08)
DRVBEG   equ   .          Beginning of drive tables  ($10)


         pag
****************
* Global Storage For Disk Drive Tables
*
* Each table contains the first 'DD.SIZ' bytes from
* LSN 0, and the current track, stepping rate,
* bitmap use flag, and disk type.
*
         org   0
         rmb   DD.SIZ     Device descriptor, LSN 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 descriptor)
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   .

         ENDC