Mercurial > hg > Members > kono > nitros9-code
diff defs/rbf.d @ 2624:b8c7b7fbf3c9
Major changes:
o os9defs, rbfdefs, scfdefs now os9.d, rbf.d, and scf.d
o vtiodefs now broken into cocovtio.d (for coco and dragon) and atarivtio.d
o systype now broken into coco.d, dragon.d and atari.d
o all references to the above in other files have changed
author | Boisy Pitre <boisy.pitre@nuance.com> |
---|---|
date | Fri, 24 Feb 2012 08:51:08 -0600 |
parents | |
children | 6bd6e348665d bfe3de781ddf |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/defs/rbf.d Fri Feb 24 08:51:08 2012 -0600 @@ -0,0 +1,362 @@ + 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 + +* 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 +