view defs/rbf.d @ 2898:28ed72477814 lwtools-port

Dummy merge of default branch into lwtools hg -y merge --tool=internal:fail default hg revert --all --no-backup --rev . hg resolve -a -m This dummy merge discards any changes from the default branch so that the result is the same as what lwtools already had. When merging back to default branch later, the discarded changes will be discarded there also, so the result will be that the default branch will contain what the lwtools branch had before these merges. Only scripts/burst was "rescued" from default branch.
author Tormod Volden <debian.tormod@gmail.com>
date Sat, 11 Jan 2014 18:40:44 +0100 (2014-01-11)
parents bfe3de781ddf ebf319736e9c
children
line wrap: on
line source
               IFNE      RBF.D-1

RBF.D          SET       1

********************************************************************
* rbf.d - 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.
*
*          2004/04/14  Boisy G. Pitre
* Added new entries to device descriptor as per OS-9 Level One V2.00.00
* addendum.  Pointed out by Rodney Hamilton.
*
*	       2005/05/31  P.Harvey-Smith.
* Added defines for bit 2 of IT.DNS, which the format command uses to 
* determine if a drive should have it's track 0 as single or double density
*
*          2005/11/23  Robert Gault
* Added IT.MPI giving it duplicate location with IT.TFM. This will not be
* transferred to the path descriptor, thus the  equ *  rahter than  rmb 1.
*
*          2005/12/11  Boisy G. Pitre
* Added IT.SOFF1-ITSOFF3 and IT.LLDRV for SuperDrivers.

               NAM       rbf.d
               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
* The following fields are from the OS-9 Level One V2.00.00 Addendum
IT.TFM         RMB       1                   DMA Transfer Mode
IT.Exten       RMB       2                   Path Extension (PE) for record locking
IT.SToff       RMB       1                   Sector/Track offsets (for "foreign" disk formats)
* The following fields are not copied to the path descriptor
IT.WPC         RMB       1                   Write precomp cyl/4 (HD)
IT.OFS         RMB       2                   Starting cylinder offset (HD)
IT.RWC         RMB       2                   Reduced write current cylinder (HD)
* These fields have been added because of SuperDriver.  They probably
* can be used in other drivers
               ORG       IT.WPC
IT.SOFF1       RMB       1
IT.SOFF2       RMB       1
IT.SOFF3       RMB       1
IT.LLDRV       RMB       2
IT.MPI         RMB       1


* IT.TYP Definitions
*
TYP.HARD       EQU       %10000000           Hard disk
TYP.FLP        EQU       %00000000           Floppy disk
TYP.NSF        EQU       %01000000           Non-standard format
TYP.SOF        EQU       %00000000           Standard NitrOS-9 format

* IT.TYP bit definitions if bit 7 of IT.TYP is set (hard disk)
TYPH.256       EQU       %00000000           256 byte sector media
TYPH.512       EQU       %00000001           512 byte sector media
TYPH.1024      EQU       %00000010           1024 byte sector media
TYPH.2048      EQU       %00000011           2048 byte sector media
TYPH.SSM       EQU       %00000011           Sector size mask
TYPH.DRSV      EQU       %00001100           Driver-reserved bits
TYPH.DSQ       EQU       %00010000           Drive size query flag

* IT.TYP bit definitions if bit 7 of IT.TYP is clear (floppy disk)
TYP.5          EQU       %00000000           5" media
TYP.3          EQU       %00000001           3.5" media
TYP.SBO        EQU       %00000010           Sector base offset (clear = 0; sect = 1)
TYP.256        EQU       %00000000           256 byte sector media
TYP.512        EQU       %00000100           512 byte sector media
TYP.CCF        EQU       %00100000           CoCo format
TYP.NCCF       EQU       %00000000           Non-CoCo format

* IT.DNS Definitions
*

* If bit 7 of IT.TYP is set, IT.DNS is driver-dependent

* IT.DNS bit definitions if bit 7 of IT.TYP is clear (floppy disk)
DNS.FM         EQU       %00000000           Single-density (FM)
DNS.MFM        EQU       %00000001           Double-density (MFM)
DNS.STD        EQU       %00000000           Single track distance (48/135 tpi)
DNS.DTD        EQU       %00000010           Double track distance (96 tpi)

* Added PHS,2005-05-31, as format seems to use these
DNS.FM0        EQU       %00000000           Single density track 0
DNS.MFM0       EQU       %00000100           Double density track 0

* Floppy disk step rate definitions
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

               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

*************************
* 2012/11/09 Gene Heskett - Some additions for bootlink etc use.
		ORG	$60			More options from device descriptor
VD.STP		RMB	1	This is for the /sh and /ih virtual disks in HDBDOS
VD.OFS		RMB	3	This is DT.WPC and DT.OSF combined, might be more 

* DD.FMT Bit Definitions - valid only if device is a floppy disk
FMT.SIDE       EQU       %00000001           Single Sided=0, Double Sided=1
FMT.DNS        EQU       %00000010           Single Density=0, Double Density=1
FMT.TDNS       EQU       %00000100           Track Density: 48/135 TPI=0, 96 TPI=1
FMT.T0DN       EQU       %00100000           Track 0 Density, 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                   File creation date (YY/MM/DD)
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