home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 4 / FreshFish_May-June1994.bin / bbs / cbm / nduk-v39.lha / V39 / include / dos / dos.i < prev    next >
Text File  |  1992-09-24  |  9KB  |  256 lines

  1.     IFND    DOS_DOS_I
  2. DOS_DOS_I SET    1
  3. **    $VER: dos.i 36.27 (05.04.92)
  4. **    Includes Release 39.108
  5. **
  6. **    Standard asm header for AmigaDOS
  7. **
  8. **    (C) Copyright 1985-1992 Commodore-Amiga, Inc.
  9. **        All Rights Reserved
  10. **
  11.  
  12.     IFND    EXEC_TYPES_I
  13.     INCLUDE    "exec/types.i"
  14.     ENDC
  15.  
  16. DOSNAME        MACRO
  17.       DC.B  'dos.library',0
  18.       ENDM
  19.  
  20. * Predefined Amiga DOS global constants
  21.  
  22. DOSTRUE          EQU     -1
  23. DOSFALSE      EQU      0
  24.  
  25. * Mode parameter to Open()
  26. MODE_OLDFILE         EQU   1005      * Open existing file read/write
  27. *                  * positioned at beginning of file.
  28. MODE_NEWFILE         EQU   1006      * Open freshly created file (delete
  29. *                  * old file) read/write
  30. MODE_READWRITE         EQU   1004      * Open old file w/shared lock,
  31. *                  * creates file if doesn't exist.
  32.  
  33. * Relative position to Seek() 
  34. OFFSET_BEGINNING     EQU   -1      * relative to Beginning Of File 
  35. OFFSET_CURRENT         EQU    0      * relative to Current file position 
  36. OFFSET_END         EQU    1      * relative to End Of File    
  37.  
  38. OFFSET_BEGINING        EQU      OFFSET_BEGINNING     * Ancient compatibility
  39.  
  40. BITSPERBYTE         EQU   8
  41. BYTESPERLONG         EQU   4
  42. BITSPERLONG         EQU   32
  43. MAXINT             EQU   $7FFFFFFF
  44. MININT             EQU   $80000000
  45.  
  46. * Passed as type to Lock() 
  47. SHARED_LOCK         EQU   -2    ; File is readable by others 
  48. ACCESS_READ         EQU   -2    ; Synonym
  49. EXCLUSIVE_LOCK         EQU   -1    ; No other access allowed    
  50. ACCESS_WRITE         EQU   -1    ; Synonym
  51.  
  52.  
  53.  STRUCTURE DateStamp,0 
  54.    LONG     ds_Days        ; Number of days since Jan. 1, 1978
  55.    LONG     ds_Minute        ; Number of minutes past midnight 
  56.    LONG     ds_Tick        ; Number of ticks past minute 
  57.    LABEL ds_SIZEOF        ; DateStamp 
  58.  
  59. TICKS_PER_SECOND EQU 50        ; Number of ticks in one second 
  60.  
  61. * Returned by Examine() and ExInfo() 
  62.  STRUCTURE FileInfoBlock,0
  63.    LONG      fib_DiskKey
  64.    LONG      fib_DirEntryType    ; Type of Directory. If < 0, then a plain file.
  65.                 ; If > 0 a directory 
  66.    STRUCT fib_FileName,108    ; Null terminated. Max 30 chars used for now 
  67.    LONG      fib_Protection    ; bit mask of protection, rwxd are 3-0.         
  68.    LONG      fib_EntryType
  69.    LONG      fib_Size        ; Number of bytes in file 
  70.    LONG      fib_NumBlocks        ; Number of blocks in file 
  71.    STRUCT fib_DateStamp,ds_SIZEOF ; Date file last changed.
  72.    STRUCT fib_Comment,80    ; Null terminated. Comment associated with file 
  73.  
  74.    ; Note: the following fields are not supported by all filesystems.
  75.    ; They should be initialized to 0 sending an ACTION_EXAMINE packet.
  76.    ; When Examine() is called, these are set to 0 for you.
  77.    ; AllocDosObject() also initializes them to 0.
  78.    UWORD  fib_OwnerUID        ; owner's UID
  79.    UWORD  fib_OwnerGID        ; owner's GID
  80.  
  81.    STRUCT fib_Reserved,32
  82.    LABEL  fib_SIZEOF        ; FileInfoBlock 
  83.  
  84. * FIB stands for FileInfoBlock 
  85. * FIBB are bit definitions, FIBF are field definitions 
  86. * Regular RWED bits are 0 == allowed.
  87. * NOTE: GRP and OTR RWED permissions are 0 == not allowed!
  88. * Group and Other permissions are not directly handled by the filesystem
  89.    BITDEF   FIB,OTR_READ,15    ; Other: file is readable
  90.    BITDEF   FIB,OTR_WRITE,14    ; Other: file is writable
  91.    BITDEF   FIB,OTR_EXECUTE,13    ; Other: file is executable
  92.    BITDEF   FIB,OTR_DELETE,12    ; Other: prevent file from being deleted
  93.    BITDEF   FIB,GRP_READ,11    ; Group: file is readable
  94.    BITDEF   FIB,GRP_WRITE,10    ; Group: file is writable
  95.    BITDEF   FIB,GRP_EXECUTE,9    ; Group: file is executable
  96.    BITDEF   FIB,GRP_DELETE,8    ; Group: prevent file from being deleted
  97.  
  98.    BITDEF   FIB,SCRIPT,6    ; program is an execute script
  99.    BITDEF   FIB,PURE,5        ; program is reentrant and reexecutable
  100.    BITDEF   FIB,ARCHIVE,4    ; cleared whenever file is changed
  101.    BITDEF   FIB,READ,3        ; ignored by old filesystem
  102.    BITDEF   FIB,WRITE,2        ; ignored by old filesystem
  103.    BITDEF   FIB,EXECUTE,1    ; ignored by system, used by Shell
  104.    BITDEF   FIB,DELETE,0    ; prevent file from being deleted
  105.  
  106. * Standard maximum length for an error string from fault.  However, most
  107. * error strings should be kept under 60 characters if possible.  Don't
  108. * forget space for the header you pass in.
  109. FAULT_MAX    EQU    82
  110.  
  111. * All BCPL data must be long word aligned.  BCPL pointers are the long word
  112. * address (i.e byte address divided by 4 (>>2))
  113.  
  114. * Macro to indicate BCPL pointers
  115. BPTR     MACRO                * Long word pointer
  116.      LONG      \1
  117.      ENDM
  118. BSTR     MACRO                * Long word pointer to BCPL string.
  119.      LONG      \1
  120.      ENDM
  121.  
  122. * #define BADDR( bptr ) (bptr << 2) * Convert BPTR to byte addressed pointer
  123.  
  124. * BCPL strings have a length in the first byte and then the characters.
  125. * For example:    s[0]=3 s[1]=S s[2]=Y s[3]=S
  126.  
  127. * returned by Info()
  128.  STRUCTURE InfoData,0
  129.    LONG id_NumSoftErrors    * number of soft errors on disk
  130.    LONG id_UnitNumber        * Which unit disk is (was) mounted on
  131.    LONG id_DiskState        * See defines below
  132.    LONG id_NumBlocks        * Number of blocks on disk
  133.    LONG id_NumBlocksUsed    * Number of block in use
  134.    LONG id_BytesPerBlock
  135.    LONG id_DiskType        * Disk Type code
  136.    BPTR id_VolumeNode        * BCPL pointer to volume node
  137.    LONG id_InUse        * Flag, zero if not in use
  138.    LABEL id_SIZEOF        * InfoData
  139.  
  140. * ID stands for InfoData
  141. *         Disk states
  142. ID_WRITE_PROTECTED    EQU    80    * Disk is write protected
  143. ID_VALIDATING        EQU    81    * Disk is currently being validated
  144. ID_VALIDATED        EQU    82    * Disk is consistent and writeable
  145.  
  146. *       Disk types
  147. * ID_INTER_* use international case comparison routines for hashing
  148. * Any other new filesystems should also use it, if possible
  149. ID_NO_DISK_PRESENT    EQU -1
  150. ID_UNREADABLE_DISK    EQU  ('B'<<24)!('A'<<16)!('D'<<8)
  151. ID_NOT_REALLY_DOS    EQU  ('N'<<24)!('D'<<16)!('O'<<8)!('S')
  152. ID_DOS_DISK        EQU  ('D'<<24)!('O'<<16)!('S'<<8)
  153. ID_FFS_DISK        EQU  ('D'<<24)!('O'<<16)!('S'<<8)!(1)
  154. ID_INTER_DOS_DISK    EQU  ('D'<<24)!('O'<<16)!('S'<<8)!(2)
  155. ID_INTER_FFS_DISK    EQU  ('D'<<24)!('O'<<16)!('S'<<8)!(3)
  156. ID_FASTDIR_DOS_DISK    EQU  ('D'<<24)!('O'<<16)!('S'<<8)!(4)
  157. ID_FASTDIR_FFS_DISK    EQU  ('D'<<24)!('O'<<16)!('S'<<8)!(5)
  158. ID_KICKSTART_DISK    EQU  ('K'<<24)!('I'<<16)!('C'<<8)!('K')
  159. ID_MSDOS_DISK        EQU  ('M'<<24)!('S'<<16)!('D'<<8)
  160.  
  161. * Errors from IoErr(), etc.
  162. ERROR_NO_FREE_STORE          EQU  103
  163. ERROR_TASK_TABLE_FULL          EQU  105
  164. ERROR_BAD_TEMPLATE          EQU  114
  165. ERROR_BAD_NUMBER          EQU  115
  166. ERROR_REQUIRED_ARG_MISSING      EQU  116
  167. ERROR_KEY_NEEDS_ARG          EQU  117
  168. ERROR_TOO_MANY_ARGS          EQU  118
  169. ERROR_UNMATCHED_QUOTES          EQU  119
  170. ERROR_LINE_TOO_LONG          EQU  120
  171. ERROR_FILE_NOT_OBJECT          EQU  121
  172. ERROR_INVALID_RESIDENT_LIBRARY      EQU  122
  173. ERROR_NO_DEFAULT_DIR          EQU  201
  174. ERROR_OBJECT_IN_USE          EQU  202
  175. ERROR_OBJECT_EXISTS          EQU  203
  176. ERROR_DIR_NOT_FOUND          EQU  204
  177. ERROR_OBJECT_NOT_FOUND          EQU  205
  178. ERROR_BAD_STREAM_NAME          EQU  206
  179. ERROR_OBJECT_TOO_LARGE          EQU  207
  180. ERROR_ACTION_NOT_KNOWN          EQU  209
  181. ERROR_INVALID_COMPONENT_NAME      EQU  210
  182. ERROR_INVALID_LOCK          EQU  211
  183. ERROR_OBJECT_WRONG_TYPE          EQU  212
  184. ERROR_DISK_NOT_VALIDATED      EQU  213
  185. ERROR_DISK_WRITE_PROTECTED      EQU  214
  186. ERROR_RENAME_ACROSS_DEVICES      EQU  215
  187. ERROR_DIRECTORY_NOT_EMPTY      EQU  216
  188. ERROR_TOO_MANY_LEVELS          EQU  217
  189. ERROR_DEVICE_NOT_MOUNTED      EQU  218
  190. ERROR_SEEK_ERROR          EQU  219
  191. ERROR_COMMENT_TOO_BIG          EQU  220
  192. ERROR_DISK_FULL              EQU  221
  193. ERROR_DELETE_PROTECTED          EQU  222
  194. ERROR_WRITE_PROTECTED          EQU  223
  195. ERROR_READ_PROTECTED          EQU  224
  196. ERROR_NOT_A_DOS_DISK          EQU  225
  197. ERROR_NO_DISK              EQU  226
  198. ERROR_NO_MORE_ENTRIES          EQU  232
  199. * added for 1.4
  200. ERROR_IS_SOFT_LINK          EQU  233
  201. ERROR_OBJECT_LINKED          EQU  234
  202. ERROR_BAD_HUNK              EQU  235
  203. ERROR_NOT_IMPLEMENTED          EQU  236
  204. ERROR_RECORD_NOT_LOCKED          EQU  240
  205. ERROR_LOCK_COLLISION          EQU  241
  206. ERROR_LOCK_TIMEOUT          EQU  242
  207. ERROR_UNLOCK_ERROR          EQU  243
  208.  
  209. * error codes 303-305 are defined in dosasl.i
  210.  
  211. * These are the return codes used by convention by AmigaDOS commands
  212. * See FAILAT and IF for relvance to EXECUTE files
  213. RETURN_OK              EQU     0  * No problems, success
  214. RETURN_WARN              EQU     5  * A warning only
  215. RETURN_ERROR              EQU    10  * Something wrong
  216. RETURN_FAIL              EQU    20  * Complete or severe failure
  217.  
  218. * Bit numbers that signal you that a user has issued a break
  219. * for example: if (SetSignal(0,0) & SIGBREAKF_CTRL_C) cleanup_and_exit();
  220.     BITDEF    SIGBREAK,CTRL_C,12
  221.     BITDEF    SIGBREAK,CTRL_D,13
  222.     BITDEF    SIGBREAK,CTRL_E,14
  223.     BITDEF    SIGBREAK,CTRL_F,15
  224.  
  225. * Values returned by SameLock()
  226. LOCK_DIFFERENT        EQU    -1
  227. LOCK_SAME        EQU    0
  228. LOCK_SAME_VOLUME    EQU    1    ; locks are on same volume
  229. LOCK_SAME_HANDLE