Mercurial > hg > Members > kono > nitros9-code
view lib/rbfdefs.a @ 2329:a894bfdef5b3
Updated
author | boisy |
---|---|
date | Wed, 13 Jan 2010 05:22:08 +0000 |
parents | |
children | 76c3c37f3a38 |
line wrap: on
line source
IFNE RBFDEFS-1 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. * * 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 RBFDefs TTL Random Block File Manager Definitions PAG ******************************* * RBF Device Descriptor Offsets * * These definitions are for RBF device descriptors. csect RMB 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 endsect * 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. * csect RMB 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 RMB 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 endsect * 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. * csect 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 endsect * 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. * csect 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 endsect * 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. * csect 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 endsect * Segment List Entry Format csect FDSL.A: RMB 3 Segment beginning physical sector number FDSL.B: RMB 2 Segment size endsect 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. * csect DIR.NM: RMB 29 File name DIR.FD: RMB 3 File descriptor physical sector number DIR.SZ: EQU * Directory record size endsect 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. * csect RMB V.USER Reserve required ($06) V.NDRV: RMB 1 Number of drives ($07) RMB 8 reserved ($08) DRVBEG: EQU * Beginning of drive tables ($10) endsect 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. * csect 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 * endsect ENDC