home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 8 / FreshFishVol8-CD1.bin / gnu / os-include / inline / lowlevel.h < prev    next >
C/C++ Source or Header  |  1994-09-22  |  6KB  |  229 lines

  1. #ifndef _INLINE_LOWLEVEL_H
  2. #define _INLINE_LOWLEVEL_H
  3.  
  4. #include <sys/cdefs.h>
  5. #include <inline/stubs.h>
  6.  
  7. __BEGIN_DECLS
  8.  
  9. #ifndef BASE_EXT_DECL
  10. #define BASE_EXT_DECL
  11. #define BASE_EXT_DECL0 extern struct Library * LowLevelBase;
  12. #endif
  13. #ifndef BASE_PAR_DECL
  14. #define BASE_PAR_DECL
  15. #define BASE_PAR_DECL0 void
  16. #endif
  17. #ifndef BASE_NAME
  18. #define BASE_NAME LowLevelBase
  19. #endif
  20.  
  21. BASE_EXT_DECL0
  22.  
  23. extern __inline APTR 
  24. AddKBInt (BASE_PAR_DECL APTR intRoutine,APTR intData)
  25. {
  26.   BASE_EXT_DECL
  27.   register APTR  _res  __asm("d0");
  28.   register struct Library *a6 __asm("a6") = BASE_NAME;
  29.   register APTR a0 __asm("a0") = intRoutine;
  30.   register APTR a1 __asm("a1") = intData;
  31.   __asm __volatile ("jsr a6@(-0x3c)"
  32.   : "=r" (_res)
  33.   : "r" (a6), "r" (a0), "r" (a1)
  34.   : "a0","a1","d0","d1", "memory");
  35.   return _res;
  36. }
  37. extern __inline APTR 
  38. AddTimerInt (BASE_PAR_DECL APTR intRoutine,APTR intData)
  39. {
  40.   BASE_EXT_DECL
  41.   register APTR  _res  __asm("d0");
  42.   register struct Library *a6 __asm("a6") = BASE_NAME;
  43.   register APTR a0 __asm("a0") = intRoutine;
  44.   register APTR a1 __asm("a1") = intData;
  45.   __asm __volatile ("jsr a6@(-0x4e)"
  46.   : "=r" (_res)
  47.   : "r" (a6), "r" (a0), "r" (a1)
  48.   : "a0","a1","d0","d1", "memory");
  49.   return _res;
  50. }
  51. extern __inline APTR 
  52. AddVBlankInt (BASE_PAR_DECL APTR intRoutine,APTR intData)
  53. {
  54.   BASE_EXT_DECL
  55.   register APTR  _res  __asm("d0");
  56.   register struct Library *a6 __asm("a6") = BASE_NAME;
  57.   register APTR a0 __asm("a0") = intRoutine;
  58.   register APTR a1 __asm("a1") = intData;
  59.   __asm __volatile ("jsr a6@(-0x6c)"
  60.   : "=r" (_res)
  61.   : "r" (a6), "r" (a0), "r" (a1)
  62.   : "a0","a1","d0","d1", "memory");
  63.   return _res;
  64. }
  65. extern __inline ULONG 
  66. ElapsedTime (BASE_PAR_DECL struct EClockVal *context)
  67. {
  68.   BASE_EXT_DECL
  69.   register ULONG  _res  __asm("d0");
  70.   register struct Library *a6 __asm("a6") = BASE_NAME;
  71.   register struct EClockVal *a0 __asm("a0") = context;
  72.   __asm __volatile ("jsr a6@(-0x66)"
  73.   : "=r" (_res)
  74.   : "r" (a6), "r" (a0)
  75.   : "a0","a1","d0","d1", "memory");
  76.   return _res;
  77. }
  78. extern __inline ULONG 
  79. GetKey (BASE_PAR_DECL0)
  80. {
  81.   BASE_EXT_DECL
  82.   register ULONG  _res  __asm("d0");
  83.   register struct Library *a6 __asm("a6") = BASE_NAME;
  84.   __asm __volatile ("jsr a6@(-0x30)"
  85.   : "=r" (_res)
  86.   : "r" (a6)
  87.   : "a0","a1","d0","d1", "memory");
  88.   return _res;
  89. }
  90. extern __inline UBYTE 
  91. GetLanguageSelection (BASE_PAR_DECL0)
  92. {
  93.   BASE_EXT_DECL
  94.   register UBYTE  _res  __asm("d0");
  95.   register struct Library *a6 __asm("a6") = BASE_NAME;
  96.   __asm __volatile ("jsr a6@(-0x24)"
  97.   : "=r" (_res)
  98.   : "r" (a6)
  99.   : "a0","a1","d0","d1", "memory");
  100.   return _res;
  101. }
  102. extern __inline void 
  103. QueryKeys (BASE_PAR_DECL struct KeyQuery *queryArray,unsigned long arraySize)
  104. {
  105.   BASE_EXT_DECL
  106.   register struct Library *a6 __asm("a6") = BASE_NAME;
  107.   register struct KeyQuery *a0 __asm("a0") = queryArray;
  108.   register unsigned long d1 __asm("d1") = arraySize;
  109.   __asm __volatile ("jsr a6@(-0x36)"
  110.   : /* no output */
  111.   : "r" (a6), "r" (a0), "r" (d1)
  112.   : "a0","a1","d0","d1", "memory");
  113. }
  114. extern __inline ULONG 
  115. ReadJoyPort (BASE_PAR_DECL unsigned long port)
  116. {
  117.   BASE_EXT_DECL
  118.   register ULONG  _res  __asm("d0");
  119.   register struct Library *a6 __asm("a6") = BASE_NAME;
  120.   register unsigned long d0 __asm("d0") = port;
  121.   __asm __volatile ("jsr a6@(-0x1e)"
  122.   : "=r" (_res)
  123.   : "r" (a6), "r" (d0)
  124.   : "a0","a1","d0","d1", "memory");
  125.   return _res;
  126. }
  127. extern __inline void 
  128. RemKBInt (BASE_PAR_DECL APTR intHandle)
  129. {
  130.   BASE_EXT_DECL
  131.   register struct Library *a6 __asm("a6") = BASE_NAME;
  132.   register APTR a1 __asm("a1") = intHandle;
  133.   __asm __volatile ("jsr a6@(-0x42)"
  134.   : /* no output */
  135.   : "r" (a6), "r" (a1)
  136.   : "a0","a1","d0","d1", "memory");
  137. }
  138. extern __inline void 
  139. RemTimerInt (BASE_PAR_DECL APTR intHandle)
  140. {
  141.   BASE_EXT_DECL
  142.   register struct Library *a6 __asm("a6") = BASE_NAME;
  143.   register APTR a1 __asm("a1") = intHandle;
  144.   __asm __volatile ("jsr a6@(-0x54)"
  145.   : /* no output */
  146.   : "r" (a6), "r" (a1)
  147.   : "a0","a1","d0","d1", "memory");
  148. }
  149. extern __inline void 
  150. RemVBlankInt (BASE_PAR_DECL APTR intHandle)
  151. {
  152.   BASE_EXT_DECL
  153.   register struct Library *a6 __asm("a6") = BASE_NAME;
  154.   register APTR a1 __asm("a1") = intHandle;
  155.   __asm __volatile ("jsr a6@(-0x72)"
  156.   : /* no output */
  157.   : "r" (a6), "r" (a1)
  158.   : "a0","a1","d0","d1", "memory");
  159. }
  160. extern __inline BOOL 
  161. SetJoyPortAttrsA (BASE_PAR_DECL unsigned long portNumber,struct TagItem *tagList)
  162. {
  163.   BASE_EXT_DECL
  164.   register BOOL  _res  __asm("d0");
  165.   register struct Library *a6 __asm("a6") = BASE_NAME;
  166.   register unsigned long d0 __asm("d0") = portNumber;
  167.   register struct TagItem *a1 __asm("a1") = tagList;
  168.   __asm __volatile ("jsr a6@(-0x84)"
  169.   : "=r" (_res)
  170.   : "r" (a6), "r" (d0), "r" (a1)
  171.   : "a0","a1","d0","d1", "memory");
  172.   return _res;
  173. }
  174. #ifndef NO_INLINE_STDARG
  175. #define SetJoyPortAttrs(a0, tags...) \
  176.   ({ struct TagItem _tags[] = { tags }; SetJoyPortAttrsA ((a0), _tags); })
  177. #endif /* not NO_INLINE_STDARG */
  178. extern __inline void 
  179. StartTimerInt (BASE_PAR_DECL APTR intHandle,unsigned long timeInterval,long continuous)
  180. {
  181.   BASE_EXT_DECL
  182.   register struct Library *a6 __asm("a6") = BASE_NAME;
  183.   register APTR a1 __asm("a1") = intHandle;
  184.   register unsigned long d0 __asm("d0") = timeInterval;
  185.   register long d1 __asm("d1") = continuous;
  186.   __asm __volatile ("jsr a6@(-0x60)"
  187.   : /* no output */
  188.   : "r" (a6), "r" (a1), "r" (d0), "r" (d1)
  189.   : "a0","a1","d0","d1", "memory");
  190. }
  191. extern __inline void 
  192. StopTimerInt (BASE_PAR_DECL APTR intHandle)
  193. {
  194.   BASE_EXT_DECL
  195.   register struct Library *a6 __asm("a6") = BASE_NAME;
  196.   register APTR a1 __asm("a1") = intHandle;
  197.   __asm __volatile ("jsr a6@(-0x5a)"
  198.   : /* no output */
  199.   : "r" (a6), "r" (a1)
  200.   : "a0","a1","d0","d1", "memory");
  201. }
  202. extern __inline ULONG 
  203. SystemControlA (BASE_PAR_DECL struct TagItem *tagList)
  204. {
  205.   BASE_EXT_DECL
  206.   register ULONG  _res  __asm("d0");
  207.   register struct Library *a6 __asm("a6") = BASE_NAME;
  208.   register struct TagItem *a1 __asm("a1") = tagList;
  209.   __asm __volatile ("jsr a6@(-0x48)"
  210.   : "=r" (_res)
  211.   : "r" (a6), "r" (a1)
  212.   : "a0","a1","d0","d1", "memory");
  213.   return _res;
  214. }
  215. #ifndef NO_INLINE_STDARG
  216. #define SystemControl(tags...) \
  217.   ({ struct TagItem _tags[] = { tags }; SystemControlA (_tags); })
  218. #endif /* not NO_INLINE_STDARG */
  219.  
  220. #undef BASE_EXT_DECL
  221. #undef BASE_EXT_DECL0
  222. #undef BASE_PAR_DECL
  223. #undef BASE_PAR_DECL0
  224. #undef BASE_NAME
  225.  
  226. __END_DECLS
  227.  
  228. #endif /* _INLINE_LOWLEVEL_H */
  229.