FDOS.EQU
上传用户:xiaogehua
上传日期:2007-01-08
资源大小:1183k
文件大小:9k
源码类别:

操作系统开发

开发平台:

Asm

  1. ;    File              : $FDOS.EQU$
  2. ;
  3. ;    Description       :
  4. ;
  5. ;    Original Author   : DIGITAL RESEARCH
  6. ;
  7. ;    Last Edited By    : $CALDERA$
  8. ;
  9. ;-----------------------------------------------------------------------;
  10. ;    Copyright Work of Caldera, Inc. All Rights Reserved.
  11. ;      
  12. ;    THIS WORK IS A COPYRIGHT WORK AND CONTAINS CONFIDENTIAL,
  13. ;    PROPRIETARY AND TRADE SECRET INFORMATION OF CALDERA, INC.
  14. ;    ACCESS TO THIS WORK IS RESTRICTED TO (I) CALDERA, INC. EMPLOYEES
  15. ;    WHO HAVE A NEED TO KNOW TO PERFORM TASKS WITHIN THE SCOPE OF
  16. ;    THEIR ASSIGNMENTS AND (II) ENTITIES OTHER THAN CALDERA, INC. WHO
  17. ;    HAVE ACCEPTED THE CALDERA OPENDOS SOURCE LICENSE OR OTHER CALDERA LICENSE
  18. ;    AGREEMENTS. EXCEPT UNDER THE EXPRESS TERMS OF THE CALDERA LICENSE
  19. ;    AGREEMENT NO PART OF THIS WORK MAY BE USED, PRACTICED, PERFORMED,
  20. ;    COPIED, DISTRIBUTED, REVISED, MODIFIED, TRANSLATED, ABRIDGED,
  21. ;    CONDENSED, EXPANDED, COLLECTED, COMPILED, LINKED, RECAST,
  22. ;    TRANSFORMED OR ADAPTED WITHOUT THE PRIOR WRITTEN CONSENT OF
  23. ;    CALDERA, INC. ANY USE OR EXPLOITATION OF THIS WORK WITHOUT
  24. ;    AUTHORIZATION COULD SUBJECT THE PERPETRATOR TO CRIMINAL AND
  25. ;    CIVIL LIABILITY.
  26. ;-----------------------------------------------------------------------;
  27. ;
  28. ;    *** Current Edit History ***
  29. ;    *** End of Current Edit History ***
  30. ;
  31. ;    $Log$
  32. ;
  33. ;    ENDLOG
  34. ;
  35. ;    Structure of Buffer Control Blocks
  36. ;    ----------------------------------
  37. ; These BCBs immediately preceed the data buffers. BCBs are
  38. ; always  shared  for all drives and therefore  must be big
  39. ; enough for the largest drive.
  40. ;
  41. BCB_NEXT equ word ptr  00h ; link to next buffer
  42. BCB_PREV equ word ptr  02h ; link to previous buffer
  43. BCB_DRV equ byte ptr  04h ; drive of this buffer or 0FFh
  44. BCB_FLAGS equ byte ptr  05h ; buffer flags
  45. BCB_REC equ word ptr  06h ; low 16 bits of sector address
  46. BCB_REC2 equ byte ptr  08h ; top 8 bits of record address
  47. BCB_COPIES equ byte ptr  0Ah ; number of copies to write
  48. BCB_SEPARATION equ word ptr  0Bh ; # sectors copies are apart
  49. BCB_DDSC equ dword ptr 0Dh ; DWORD ptr to DDSC_
  50. BCB_REMOTE equ word ptr  11h ; remote in-use count
  51. BCB_DATA equ byte ptr  14h ; buffer data
  52. BF_ISFAT equ 0002h ; buffer marked as FAT sector
  53. BF_ISDIR equ 0004h ; buffer marked as Directory sector
  54. BF_ISDAT equ 0008h ; buffer marked as Data sector
  55. BF_DIRTY equ 0040h ; buffer marked as modified
  56. BF_REMOTE equ 0080h ; buffer is remote
  57. MAX12 equ 0FF6h ; max. disk size w/ 12-bit media
  58. ;      Structure of Hash Control Block
  59. ;      -------------------------------
  60. ; Each hash control  block refers  to the hash codes of one
  61. ; disrectory cluster or a root directory.
  62. HCB_LINK equ word ptr 0 ; link to next control block
  63. HCB_DRV equ byte ptr 2 ; drive for this entry or 0FFh
  64. HCB_CLU equ word ptr 4 ; cluster number or 0000 if root
  65. HCB_CNT equ word ptr 6 ; number of hashed entries
  66. HCB_DATA equ word ptr 8 ; hash buffer data
  67. ;       Structure of DOS FCB
  68. ;       --------------------
  69. ; This is hopefully  consistent  with what DOS stores in an
  70. ; open file control block for DOS 1.x functions
  71. MSF_EXTFLG equ byte ptr 0 ; if this is 0xFF, skip 1st 7 byte
  72. MSF_ATTRIB equ byte ptr 6 ; file attributes if MSF_EXTFLG
  73. MSF_DRIVE equ byte ptr 0 ; 1st byte normally drive code
  74. MSF_NAME equ byte ptr 1 ; 8-bit ASCII file name, 11 characters
  75. MSF_BLOCK equ word ptr 12 ; current block number
  76. MSF_RECSIZE equ word ptr 14 ; current logical record size
  77. MSF_SIZE equ word ptr 16 ; 32-bit file size
  78. MSF_DATE equ word ptr 20 ; last date stamp
  79. MSF_TIME equ word ptr 22 ; last time stamp
  80. MSF_IFN equ byte ptr 24 ;; internal file number
  81. MSF_IOCTL equ byte ptr 25 ;; file status
  82. MSF_BLOCK1 equ word ptr 26 ;; 1st block of file
  83. MSF_DBLK equ word ptr 28 ;; directory block
  84. MSF_DEVPTR equ dword ptr 28 ;; address of device driver
  85. MSF_DCNT equ word ptr 30 ;; directory count
  86. MSF_CR equ byte ptr 32 ; current sequential record
  87. MSF_RR equ word ptr 33 ; random record address (3 or 4 byte)
  88. MSF_RR2 equ byte ptr 35 ; random record overflow
  89. ;       Structure of DOS DPB
  90. ;       --------------------
  91. ; The  layout  of  this  structure  is  a  guess  based  on
  92. ; examples.  It is returned by PC MODE on functions 1Fh and
  93. ; 32h  and is required  by various  disk-related  utilities
  94. ; like disk editors and CHKDSK.
  95. DDSC_UNIT equ byte ptr 0 ; absolute drive number
  96. DDSC_RUNIT equ byte ptr 1 ; relative unit number
  97. DDSC_SECSIZE equ word ptr 2 ; sector size in bytes
  98. DDSC_CLMSK equ byte ptr 4 ; sectors/cluster - 1
  99. DDSC_CLSHF equ byte ptr 5 ; log2 (sectors/cluster)
  100. DDSC_FATADDR equ word ptr 6 ; sector address of FAT
  101. DDSC_NFATS equ byte ptr 8 ; # of FAT copies
  102. DDSC_DIRENT equ word ptr 9 ; size of root directory
  103. DDSC_DATADDR equ word ptr 11 ; sector address of cluster #2
  104. DDSC_NCLSTRS equ word ptr 13 ; # of clusters on disk
  105. DDSC_NFATRECS equ word ptr 15 ; # of sectors per FAT
  106. DDSC_DIRADDR equ word ptr 17 ; sector address of root dir
  107. DDSC_DEVHEAD equ dword ptr 19 ; device driver header
  108. DDSC_DEVOFF equ word ptr 19
  109. DDSC_DEVSEG equ word ptr 21
  110. DDSC_MEDIA equ byte ptr 23 ; current media byte
  111. DDSC_FIRST equ byte ptr 24 ; "drive never accessed" flag
  112. DDSC_LINK equ dword ptr 25 ; next drive's DDSC
  113. DDSC_BLOCK equ word ptr 29 ; next block to allocate
  114. DDSC_FREE equ word ptr 31 ; total free clusters on drive
  115. DDSC_LEN equ 33
  116. ; DELWATCH hooks called by OS
  117. DELW_RDMASK equ 0 ; delete dir search mask
  118. DELW_DELETE equ 2 ; delete this dir entry
  119. DELW_FREECLU equ 3 ; free some clusters
  120. DELW_FREERD equ 4 ; free root dir entry
  121. DELW_SPACE equ 5 ; add "deletes" to free space
  122. DELW_NEWDISK equ 7 ; new disk logged in
  123. DELW_PURGE equ 14 ; perge pd file
  124. DELW_UNDEL equ 15 ; undelete pd file
  125. ;  SuperStore hook called by OS
  126. SSTOR_SPACE equ 10h ; enquire # physical free space
  127. ; Password hooks called by OS
  128. PASSWD_CREAT equ 20h ; initialise an entry
  129. PASSWD_CHMOD equ 21h ; change an entry
  130. PASSWD_CHECK equ 22h ; check an entry
  131. ; Share hooks in PCMODE data segment
  132. ;
  133. ; These point to a stub which does a "STC, RETF"
  134. ;
  135. NUM_SHARE_STUB_ENTRIES equ 15
  136. S_LOCKS equ DWORD*0 ; share lock/unlock region
  137. S_UPDATE equ DWORD*1 ; update DHNDL from share
  138. S_RECORD equ DWORD*2 ; update share from DHNDL
  139. S_FDOSRW equ DWORD*3 ; validate proposed operation
  140. S_DISCARD equ DWORD*4 ; discard all files on drive
  141. S_OPEN equ DWORD*5 ; files is opening, remember it
  142. S_CLOSE equ DWORD*6 ; files is closing, forget it
  143. S_OM_COMPAT equ DWORD*7 ; check open mode compatible
  144. S_CLOSE_IF_OPEN equ DWORD*8 ; close if compat open, else deny
  145. S_DENY_IF_OPEN equ DWORD*9 ; deny if open shared/by others
  146. S_GET_LIST_ENTRY equ DWORD*10 ; get open file list entry
  147. S_CLOSE_FILES equ DWORD*11 ; close all files for given PSP/UID
  148. ; struct dirfcb
  149. DNAME equ byte ptr 0 ;file name & type
  150. DATTS       equ byte ptr 11 
  151.   DA_RO equ 01h ; 0x01 - read/only
  152.   DA_HIDDEN equ 02h ; 0x02 - hidden
  153.   DA_SYSTEM equ 04h ; 0x04 - system
  154.   DA_VOLUME equ 08h ; 0x08 - volume label
  155.   DA_DIR equ 10h ; 0x10 - sub-directory
  156.   DA_ARCHIVE equ 20h ; 0x20 - archive
  157.   DA_CLUSTER equ 80h ; 0x80 - return starting cluster from search (API extention)
  158.   DA_DELWATCH equ 80h ; 0x88 - return pending delete files
  159.   DA_FIXED equ 11011000b ; can't CHMOD label, dir, unused bits
  160.   DA_CHANGE equ not DA_FIXED ; all others are changeable
  161. ;DATTS2 equ 12 ;CP/M attributes
  162. ; ; 0x80 - f1' modify default open rules
  163. ; ; 0x40 - f2' partial close default
  164. ; ; 0x20 - f3' ignore close checksum errors
  165. ; ; 0x10 - f4' disable checksums
  166. ; ; 0x08 - (reserved)
  167. ; ; 0x04 - DELETE password
  168. ; ; 0x02 - WRITE password
  169. ; ; 0x01 - READ password
  170. DUNDEL equ 13 ;1st letter of deleted file
  171. DPWD equ word ptr 14 ;16-bit password hash code
  172. DMODTIME     equ word ptr 16 ;delwatch time (hhhhhmmmmmmsssss)
  173. DMODDATE     equ word ptr 18 ;delwatch date (yyyyyyymmmmddddd)
  174. ;DRECSIZE equ 16 ;FlexOS record size
  175. ;DUSER equ 18 ;FlexOS user ID of creator
  176. ;DGROUP equ 19 ;FlexOS group ID of creator
  177. DPWM equ word ptr 20 ;FlexOS access rights
  178. DTIME equ 22 ;time (hhhhhmmmmmmsssss)
  179. DDATE equ 24 ;date (yyyyyyymmmmddddd)
  180. DBLOCK1 equ 26 ;first block in file
  181. DSIZE equ 28 ;current file size
  182. ;  DOS Media Password Definitions
  183. ;  ------------------------------
  184. PWM_OWNER equ 000Fh ; PWD Owner mask
  185. PWM_GROUP equ 00F0h ; PWD Group mask
  186. PWM_WORLD equ 0F00h ; PWD World mask
  187. PWM_R equ 0888h ; PWD required for reading
  188. PWM_W equ 0444h ; PWD required for writing
  189. PWM_E equ 0222h ; PWD req'd for executing
  190. PWM_D equ 0111h ; PWD required for deleting
  191. PWM_ANY equ PWM_R+PWM_W+PWM_D ; PWD required for anything
  192. ; literal constants
  193. FAT12 equ 00fffh ; 12 bit fat
  194. FAT16 equ 0ffffh ; 16 bit fat
  195. ENDDIR equ 0ffffh ;end of directory