intr.pchsource 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. #var AUTO_INT_COUNT D((LAST_AUTO_INT-FIRST_AUTO_INT+1))
  2. #var FIRST_AUTO_INT D(1)
  3. #var FIRST_TRAP D(0)
  4. #var LAST_AUTO_INT D(7)
  5. #var LAST_TRAP D(15)
  6. #var TRAP_COUNT D((LAST_TRAP-FIRST_TRAP+1))
  7. #var AutoInts D(IntVecs)
  8. #var FALSE D(0)
  9. #var TRUE D(1)
  10. #var _DEREF_INT_HANDLER typedef struct{short foo;}_DEREF_INT_HANDLER;
  11. #var INT_HANDLER typedef _DEREF_INT_HANDLER *INT_HANDLER;
  12. #var AUTO_INT_1 D(100)
  13. #var AUTO_INT_2 D(104)
  14. #var AUTO_INT_3 D(108)
  15. #var AUTO_INT_4 D(112)
  16. #var AUTO_INT_5 D(116)
  17. #var AUTO_INT_6 D(120)
  18. #var AUTO_INT_7 D(124)
  19. #var TRAP_0 D(128)
  20. #var TRAP_1 D(132)
  21. #var TRAP_2 D(136)
  22. #var TRAP_3 D(140)
  23. #var TRAP_4 D(144)
  24. #var TRAP_5 D(148)
  25. #var TRAP_6 D(152)
  26. #var TRAP_7 D(156)
  27. #var TRAP_8 D(160)
  28. #var TRAP_9 D(164)
  29. #var TRAP_10 D(168)
  30. #var TRAP_11 D(172)
  31. #var TRAP_12 D(176)
  32. #var TRAP_13 D(180)
  33. #var TRAP_14 D(184)
  34. #var TRAP_15 D(188)
  35. #var INT_VEC_RESET D(4)
  36. #var INT_VEC_BUS_ERROR D(8)
  37. #var INT_VEC_ADDRESS_ERROR D(12)
  38. #var INT_VEC_ILLEGAL_INSTRUCTION D(16)
  39. #var INT_VEC_ZERO_DIVIDE D(20)
  40. #var INT_VEC_CHK_INS D(24)
  41. #var INT_VEC_TRAPV_INS D(28)
  42. #var INT_VEC_PRIVILEGE_VIOLATION D(32)
  43. #var INT_VEC_TRACE D(36)
  44. #var INT_VEC_LINE_1010 D(40)
  45. #var INT_VEC_LINE_1111 D(44)
  46. #var INT_VEC_UNINITIALIZED_INT D(60)
  47. #var INT_VEC_SPURIOUS_INT D(96)
  48. #var INT_VEC_KEY_PRESS D(104)
  49. #var INT_VEC_LINK D(112)
  50. #var INT_VEC_ON_KEY_PRESS D(120)
  51. #var INT_VEC_STACK_OVERFLOW D(124)
  52. #var INT_VEC_INT_MASK D(132)
  53. #var INT_VEC_MANUAL_RESET D(136)
  54. #var INT_VEC_OFF D(144)
  55. #var INT_VEC_SELF_TEST D(168)
  56. #var INT_VEC_ARCHIVE D(172)
  57. #var INT_VEC_ER_THROW D(188)
  58. #var AUTO_INT(IntNo) D(((long)(IntNo)*4+0x60))
  59. #var DisableAutoInt3() D((pokeIO_bclr(0x600015,2)))
  60. #var DUMMY_HANDLER D(((INT_HANDLER)(__dummy_handler__)))
  61. #var __dummy_handler__ void __dummy_handler__();
  62. #var EnableAutoInt3() D((pokeIO_bset(0x600015,2)))
  63. #var ExecuteHandler void _(INT_HANDLER h)__ATTR_TIOS__;asm{ExecuteHandler:move.l 4(a7),a0;move.w sr,-(a7);jmp (a0)};
  64. #var GetIntVec(i) D((*(INT_HANDLER*)(i)))
  65. #var SetIntVec(i,h) D(((void)(pokeIO_bclr(0x600001,2),*(INT_HANDLER*)(i)=(h),pokeIO_bset(0x600001,2))))
  66. #var TRAP(TrapNo) D(((long)(TrapNo)*4+0x80))
  67. #var DEFINE_INT_HANDLER(name) D(extern _DEREF_INT_HANDLER name[]; asm{name: move.w #0x2700,sr;movem.l d0-d7/a0-a6,-(sp);move.l 0xC8,a5;jsr __##name##_body__;movem.l (sp)+,d0-d7/a0-a6;rte}; void __##name##_body__(void))