home *** CD-ROM | disk | FTP | other *** search
/ GEMini Atari / GEMini_Atari_CD-ROM_Walnut_Creek_December_1993.iso / files / diskutil / tapebios / tapebind.h < prev    next >
C/C++ Source or Header  |  1993-08-06  |  2KB  |  72 lines

  1. #ifndef _TAPEBIND_H
  2. #define _TAPEBIND_H
  3.  
  4. #ifdef __GNUC__
  5.  
  6. #define trap_10_wwll(n, a, b, c)                    \
  7. ({                                    \
  8.     register long retvalue __asm__("d0");                \
  9.     short _a = (short)(a);                        \
  10.     long  _b = (long) (b);                        \
  11.     long  _c = (long) (c);                        \
  12.                                     \
  13.     __asm__ volatile                        \
  14.     ("\
  15.         movl    %4,sp@-; \
  16.         movl    %3,sp@-; \
  17.         movw    %2,sp@-; \
  18.         movw    %1,sp@-; \
  19.         trap    #10;    \
  20.         addw    #12,sp "                    \
  21.     : "=r"(retvalue)            /* outputs */        \
  22.     : "g"(n), "r"(_a), "r"(_b), "r"(_c)    /* inputs  */        \
  23.     : "d0", "d1", "d2", "a0", "a1", "a2"    /* clobbered regs */    \
  24.     );                                \
  25.     retvalue;                            \
  26. })
  27.  
  28. #else 
  29. #ifdef __MSHORT__
  30.  
  31. extern int tapebios();
  32.  
  33. #define trap_10_wwlw(n,a,b,c)    tapebios(n,a,(long)b,(long)c)
  34.  
  35. #endif
  36. #endif 
  37.  
  38.  
  39. /* DEFINITIONS FOR TAPE I/O FUNCTIONS */
  40.  
  41. #define Tfunc    0x0ACE    /* Tape BIOS Call for Tape function */
  42.  
  43. #define Ready    0    /* Tape Ready */
  44. #define Read    1    /* Tape Read */
  45. #define Write    2    /* Tape Write */
  46. #define Rewind    3    /* Tape Rewind */
  47. #define Load    4    /* Tape Load */
  48. #define Unload    5    /* Tape Unload */
  49. #define WrtFM    6    /* Write FileMark */
  50. #define ReqSen    7    /* Request Sense */
  51. #define ModSel    8    /* Mode Select */
  52. #define ModSen    9    /* Mode Sense */
  53. #define Space    10    /* Tape Space */
  54. #define Erase    11    /* Tape Erase */
  55. #define Inquire 12    /* Tape Inquiry */
  56.  
  57. #define Tready()    trap_10_wwll(Tfunc, Ready, 0L, 0L)
  58. #define Tread(a, b)    trap_10_wwll(Tfunc, Read, a, b)
  59. #define Twrite(a, b)    trap_10_wwll(Tfunc, Write, a, b)
  60. #define Trewind()    trap_10_wwll(Tfunc, Rewind, 0L, 0L)
  61. #define Tload(a)    trap_10_wwll(Tfunc, Load, 0L, a)
  62. #define Tunload(a)    trap_10_wwll(Tfunc, Unload, 0L, a)
  63. #define Tfmark(a)    trap_10_wwll(Tfunc, WrtFM, 0L, a)
  64. #define Trsense(a, b)    trap_10_wwll(Tfunc, ReqSen, a, b)
  65. #define Tmselect(a, b)    trap_10_wwll(Tfunc, ModSel, a, b)
  66. #define Tmsense(a, b)    trap_10_wwll(Tfunc, ModSen, a, b)
  67. #define Tspace(a)    trap_10_wwll(Tfunc, Space, 0L, a)
  68. #define Terase()    trap_10_wwll(Tfunc, Erase, 0L, 0L)
  69. #define Tinquire(a, b)    trap_10_wwll(Tfunc, Inquire, a, b)
  70.  
  71. #endif /* end of _TAPEBIND_H */
  72.