service.h 4.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. #ifndef _WONX_SYS_SERVICE_H_
  2. #define _WONX_SYS_SERVICE_H_
  3. #include "types.h"
  4. #define MK_WORD(high,low) (((unsigned short int)(high) << 8) | ((unsigned short int)(low)))
  5. #define MK_DWORD(high,low) (((unsigned long int)(high) << 16) | ((unsigned long int)(low)))
  6. #define MK_FP(seg,off) ((void *)MK_DWORD(seg,off))
  7. #if 0
  8. #define FP_OFF(p) ((unsigned short int)((unsigned long int)(p) & 0xffff))
  9. #define FP_SEG(p) ((unsigned short int)((unsigned long int)(p) >> 16))
  10. #else
  11. #define FP_OFF(p) (p)
  12. #define FP_SEG(p) (0)
  13. #endif
  14. int _asm_inline(char * code);
  15. int _asm_int(char * code, int ax);
  16. int _asm_intb(char * code, int ax, unsigned char bl);
  17. int _asm_intbb(char * code, int ax, unsigned char bl, unsigned char cl);
  18. int _asm_intw(char * code, int ax, int bx);
  19. int _asm_intww(char * code, int ax, int bx, int cx);
  20. int _asm_intwww(char * code, int ax, int bx, int cx, int dx);
  21. int _asm_intwwww(char * code, int ax, int bx, int cx, int dx, int si);
  22. int _asm_intwp(char * code, int ax, int bx, int (*dummy)(void), void * dx);
  23. int _asm_intwwp(char * code, int ax, int bx, int cx, void * dx);
  24. int _asm_intwwwp(char * code, int ax, int bx, int cx, int dx, void * si);
  25. int _asm_intwfp(char * code, int ax, int bx, void * dsdx);
  26. int _asm_intfp(char * code, int ax, void * bxdx);
  27. long int _asm_intl(char * code, int ax);
  28. long int _asm_intlw(char * code, int ax, int bx);
  29. long int _asm_intlww(char * code, int ax, int bx, int cx);
  30. long int _asm_intlwww(char * code, int ax, int bx, int cx, int dx);
  31. long int _asm_intlwwww(char * code, int ax, int bx, int cx, int dx, int si);
  32. long int _asm_intlwp(char * code, int ax, int bx, int (*dummy)(void), void * dx);
  33. long int _asm_intlwwp(char * code, int ax, int bx, int cx, void * dx);
  34. long int _asm_intlwwwp(char * code, int ax, int bx, int cx, int dx, void * si);
  35. long int _asm_intlwfp(char * code, int ax, int bx, void * dsdx);
  36. #define service(vec, ah) _asm_int(NULL,0)
  37. #define serviceb(vec, ah, bl) _asm_intb(NULL,0,0)
  38. #define servicebb(vec, ah, bl, cl) _asm_intbb(NULL,0,0,0)
  39. #define servicew(vec, ah, bx) _asm_intw(NULL,0,0)
  40. #define serviceww(vec, ah, bx, cx) _asm_intww(NULL,0,0,0)
  41. #define servicewww(vec, ah, bx, cx, dx) _asm_intwww(NULL,0,0,0,0)
  42. #define servicew_w(vec, ah, bx, dx) _asm_intwww(NULL,0,0,0,0)
  43. #define servicewwww(vec, ah, bx, cx, dx, si) _asm_intwwww(NULL,0,0,0,0,0)
  44. #define servicewp(vec, ah, bx, dx) _asm_intwp(NULL,0,0,0,0)
  45. #define servicewwp(vec, ah, bx, cx, dx) _asm_intwwp(NULL,0,0,0,0)
  46. #define servicewwwp(vec, ah, bx, cx, dx, si) _asm_intwwwp(NULL,0,0,0,0,0)
  47. #define servicewfp(vec, ah, bx, dsdx) _asm_intwfp(NULL,0,0,0)
  48. #define servicewwfp(vec, ah, bx, cx, dsdx) _asm_intwfp(NULL,0,0,0)
  49. #define servicefp(vec, ah, bxdx) _asm_intwfp(NULL,0,0,0)
  50. #define servicex(vec, ah, al) _asm_int(NULL,0)
  51. #define servicexw(vec, ah, al, bx) _asm_intw(NULL,0,0)
  52. #define servicexww(vec, ah, al, bx, cx) _asm_intww(NULL,0,0,0)
  53. #define servicexwww(vec, ah, al, bx, cx, dx) _asm_intwww(NULL,0,0,0,0)
  54. #define servicexwwww(vec, ah, al, bx, cx, dx, si) _asm_intwwww(NULL,0,0,0,0,0)
  55. #define servicexwp(vec, ah, al, bx, dx) _asm_intwp(NULL,0,0,0,0)
  56. #define servicexwwp(vec, ah, al, bx, cx, dx) _asm_intwwp(NULL,0,0,0,0)
  57. #define servicexwfp(vec, ah, al, bx, dsdx) _asm_intwfp(NULL,0,0,0)
  58. #define servicel(vec, ah) _asm_intl(NULL,0)
  59. #define servicelw(vec, ah, bx) _asm_intlw(NULL,0,0)
  60. #define servicelww(vec, ah, bx, cx) _asm_intlww(NULL,0,0,0)
  61. #define servicelwww(vec, ah, bx, cx, dx) _asm_intlwww(NULL,0,0,0,0)
  62. #define servicelwp(vec, ah, bx, dx) _asm_intlwp(NULL,0,0,0,0)
  63. #define servicelwfp(vec, ah, bx, dsdx) _asm_intlwfp(NULL,0,0,0)
  64. #define servicelx(vec, ah, al) _asm_intl(NULL ,0)
  65. #define servicelxw(vec, ah, al, bx) _asm_intlw(NULL,0,0)
  66. #define servicelxww(vec, ah, al, bx, cx) _asm_intlww(NULL,0,0,0)
  67. #define servicelxwww(vec, ah, al, bx, cx, dx) _asm_intlwww(NULL,0,0,0,0)
  68. #define servicelxwp(vec, ah, al, bx, dx) _asm_intlwp(NULL,0,0,0,0)
  69. #define servicelxwfp(vec, ah, al, bx, dsdx) _asm_intlwfp(NULL,0,0,0)
  70. void bios_exit();
  71. #endif