Mercurial > hg > Members > kono > nitros9-code
view 3rdparty/fmgrs/msf/msfdefs @ 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 | 3020c1c93860 |
children | b3d423ebd111 |
line wrap: on
line source
********************************************************************* * Defs for the MSDos file manager * system direct page for MSF file manager D.MSF equ $7c pointer to linked list of MSF paths * path table (static storage) offsets *** rev 2.2 V.DNS equ $1F disk density 8=Hi-density, 4=96tpi, 0=48tpi V.BPB equ $20 pointer to disk information (64 bytes) *** V.FLG equ $22 FAT must be read if NE V.CNT equ $23 number of paths open to this device V.FAT equ $24 point to FAT (in reserved section of device table) *** rev 2.1 V.FS equ V.FLG FAT size/256 (V.FLG no longer used) *** DRVBEG2 set $0e offset from beg. of device static storage to 1st drive table modmem equ 0 type set FlMgr+Objct revs set Reent+1 SS.DREAD set $80 direct sector read/write SS.SREAD equ $84 direct sector read/write in system space *SS.ATTR equ $85 get/set file attribute SS.RENAM equ $86 rename file SS.ALLOW equ $87 allow writing to disk or directory E$BadFAT equ 255 EOL equ 13 CR equ EOL SPC equ 32 SP equ SPC MSDEOF equ $1A end of line character for MSDOS text files ******************************************************** * MSDOS directory entry offsets * msd.name equ 0 offset to file name msd.ext equ 8 offset to file extension msd.attr equ 11 offset to file attribute msd.res equ 12 offset to reserved bytes msd.time equ 22 offset to time msd.date equ 24 offset to date msd.strt equ 26 offset to starting cluster number msd.size equ 28 offset to file size MSDSIZE equ 32 size of directory entry SECSIZE equ 512 size of an MSDOS sector DIRSIZE equ 64 size of directory entry in memory * name is 8 bytes * extention is 3 bytes * attribute: attr.RO equ 1 - read only attr.HD equ 2 - hidden file (excluded from search) attr.SY equ 4 - system file (excluded from search) attr.VL equ 8 - volume label attr.DR equ $10 - subdirectory attr.AR equ $20 - archive bit (set if file has been written and closed) * * time: * H H H H H M M M M M M S S S S S * 7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8 * * date: * Y Y Y Y Y Y Y M M M M D D D D D * 7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8 * * starting cluster: * two bytes, LSB first * * file size: * 4 bytes (byte 0, 1, 2, 3) ****************************************************** ****************************************************** * FAT ID byte: * bit 3-7 set * bit 2 - clear if 80 tracks * bit 1 - set if media has 8 sectors/track (1 sector/FAT) * bit 0 - set if media has two heads (112 directory entries) ****************************************************** ****************************************************** * File manager path descriptor offsets * org 0 msp.path rmb 1 equ PD.PD path number msp.mod rmb 1 equ PD.MOD file access mode msp.cnt rmb 1 equ PD.CNT dupe path count msp.dev rmb 2 equ PD.DEV address of device table msp.proc rmb 1 equ PD.CPR process ID to which this path belongs msp.rgs rmb 2 equ PD.RGS passed registers msp.buf rmb 2 equ PD.BUF address of buffer msp.sest rmb 1 equ PD.SMF current sector status msp.pos rmb 3 current logical file position msp.lolk rmb 3 start of lock (logical sector) msp.lksz rmb 3 size of lock msp.dtb rmb 2 address of drive table msp.wrt rmb 1 NE-don't allow writing to path msp.ncpr rmb 1 value to store in V.BUSY after using driver msp.end rmb 2 number of last logical sector+1 of root or entire disk rmb 6 space left til option table org $30 msp.next rmb 2 address of next MSDOS path descriptor msp.prev rmb 2 address of prev MSDOS path descriptor for SAME file msp.dir rmb 2 address of directory entry in memory msp.dnxt rmb 2 next path to same file msp.dprv rmb 2 previous path to same file msp.cls rmb 2 current cluster number msp.sec rmb 2 current logical sector number msp.clss rmb 1 current cluster sector number (0 or 1) ******************************************************* * sector status (msp.sest) codes SECGOOD equ 1 sector contains next data to be read SECREAD equ 2 sector has been completely read * (next sector needs to be read before next READ) SECUPD equ 4 sector has been written to SECBUF equ 8 sector msp.sec is in the buffer (PD.BUF) SECEXP equ $10 sector does not need to be read ******************************************************* * memory record for the directory entry * 1 byte reserved for memory management use dir.stat equ 1 status (0=needs update) dir.chg equ 2 NE - directory entry needs update dir.last equ 3 address of last MSDOS path descriptor for this file dir.loc equ 5 logical location of directory entry on disk dir.pos equ 7 offset from beginning of sector to directory entry dir.drv equ 9 drive number dir.esec equ 10 first directory sector with unused entry dir.eoff equ 12 offset to first unused entry in above sector dir.prnt equ 14 first cluster of parent directory dir.msd equ 16 directory entry ******************************************************** * type byte bit for MSDOS disk type MSDOS. set %00001000 bit in PD.TYP to indicate MSDOS format ******************************************************** * revision 2.2 offsets in the boot sector of an MSDOS disk ID.ver equ 0 E9xxxx DOS 2, EBxx90 DOS 3 ID.OEM equ 3 8 byte OEM name * these are the important ones ID.skip equ 11 number of bytes to skip ID.BPS equ 1 11 word, bytes/sector ID.SPA equ 3 13 byte, sectors/cluster ID.res equ 4 14 word, reserved sectors ID.FATs equ 6 16 byte, number of FATs ID.RDE equ 7 17 word, root directory entries ID.secs equ 9 19 word, total number of sectors ID.ID equ 11 21 byte, media ID byte ID.spf equ 12 22 word, sectors/FAT ID.spt equ 14 24 word, sectors/track ID.hds equ 16 26 word, number of heads/sides ID.hidn equ 18 28 word, number of hidden sectors IDsize equ 19 number of bytes of disk info ID.clus equ 20 number of usable clusters