home *** CD-ROM | disk | FTP | other *** search
/ Vectronix 2 / VECTRONIX2.iso / FILES_01 / HD_DRIVE.LZH / XAHDI / XHDI.H < prev    next >
C/C++ Source or Header  |  1994-01-27  |  3KB  |  138 lines

  1. /*
  2.     @(#)XHDI/xhdi.h
  3.     
  4.     Julian F. Reschke, 26. Januar 1994
  5.     
  6.      Bindings for the XHDI functions
  7.     --- NOT FULLY TESTED, USE AT YOUR OWN RISK ---
  8.  
  9.     Important:
  10.     
  11.     Do calls only if XHGetVersion() was successful
  12. */
  13.  
  14. #ifndef __XHDI__
  15. #define __XHDI__
  16.  
  17. #ifndef BPB
  18. #include <tos.h>
  19. #endif
  20.  
  21. #ifndef UWORD
  22. #define UWORD unsigned int
  23. #endif
  24.  
  25. #ifndef LONG
  26. #define LONG long
  27. #endif
  28.  
  29. #ifndef ULONG
  30. #define ULONG unsigned long
  31. #endif
  32.  
  33. #define XH_TARGET_STOPPABLE 0x00000001L
  34. #define XH_TARGET_REMOVABLE 0x00000002L
  35. #define XH_TARGET_LOCKABLE  0x00000004L
  36. #define XH_TARGET_EJECTABLE 0x00000008L
  37. #define XH_TARGET_RESERVED  0x80000000L
  38.  
  39. #define XH_MI_SETKERINFO    0
  40. #define XH_MI_GETKERINFO    1
  41.  
  42. #define XH_DL_SECSIZ    0
  43. #define XH_DL_MINFAT    1
  44. #define XH_DL_MAXFAT    2
  45. #define XH_DL_MINSPC    3
  46. #define XH_DL_MAXSPC    4
  47. #define XH_DL_CLUSTS    5
  48. #define XH_DL_MAXSEC    6
  49. #define XH_DL_DRIVES    7
  50.  
  51.  
  52. /* Inquire protocol version number */
  53. UWORD
  54. XHGetVersion (void);
  55.  
  56. /* Inquire informations about one target */
  57. LONG
  58. XHInqTarget (UWORD major, UWORD minor, ULONG *block_size,
  59.              ULONG *device_flags, char *product_name);
  60.  
  61. /* Reserve or release a target */
  62. LONG
  63. XHReserve (UWORD major, UWORD minor, UWORD do_reserve, UWORD key);
  64.  
  65. /* Lock or unlock a target with removable media */
  66. LONG
  67. XHLock (UWORD major, UWORD minor, UWORD do_lock, UWORD key);
  68.  
  69. /* Stop or start target */
  70. LONG
  71. XHStop (UWORD major, UWORD minor, UWORD do_stop, UWORD key);
  72.  
  73. /* Eject medium */
  74. LONG
  75. XHEject (UWORD major, UWORD minor, UWORD do_eject, UWORD key);
  76.  
  77. /* Get bit mask of available XHDI devices */
  78. ULONG
  79. XHDrvMap (void);
  80.  
  81. /* Get major device number (eg. target), minor device number (eg.
  82.    LUN), starting sector and BPB */
  83. LONG
  84. XHInqDev (UWORD bios_device, UWORD *major, UWORD *minor,
  85.           ULONG *start_sector, BPB *bpb);
  86.  
  87. /* Get informations about the driver */
  88. LONG
  89. XHInqDriver (UWORD bios_device, char *name, char *version,
  90.              char *company, UWORD *ahdi_version,
  91.              UWORD *maxIPL);
  92.  
  93. /* Install additional XHDI handler */
  94. LONG
  95. XHNewCookie (void *newcookie);
  96.  
  97. /* Do a physical access */
  98. LONG
  99. XHReadWrite (UWORD major, UWORD minor, UWORD rwflag,
  100.              ULONG recno, UWORD count, void *buf);
  101.  
  102. /* Make printable device name */
  103. void
  104. XHMakeName (UWORD major, UWORD minor, ULONG start_sector, char *name);
  105.  
  106. /* New version of XHInqTarget */
  107. LONG
  108. XHInqTarget2 (UWORD major, UWORD minor, ULONG *block_size,
  109.               ULONG *device_flags, char *product_name,
  110.               UWORD stringlen);
  111.               
  112. /* New version of XHInqDev */
  113. LONG
  114. XHInqDev2 (UWORD bios_device, UWORD *major, UWORD *minor,
  115.            ULONG *start_sector, BPB *bpb, ULONG *blocks, char *partid);
  116.  
  117. /* Special opcode for custom driver extensions */
  118. LONG
  119. XHDriverSpecial (ULONG key1, ULONG key2, UWORD subopcode, void *data);
  120.  
  121. /* Inquire drive capacity */
  122. LONG
  123. XHGetCapacity (UWORD major, UWORD minor, ULONG *blocks, ULONG *bs);
  124.  
  125. /* Inform driver about media change */
  126. LONG
  127. XHMediumChanged (UWORD major, UWORD minor);
  128.  
  129. /* Get/set MiNT kernel information */
  130. LONG
  131. XHMiNTInfo (UWORD opcode, void *data);
  132.  
  133. /* Get/set DOS limits */
  134. LONG
  135. XHDOSLimits (UWORD which, ULONG limit);
  136.  
  137. #endif
  138.