trp.s 499 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. .define .trp
  2. .sect .text
  3. .sect .rom
  4. .sect .data
  5. .sect .bss
  6. .sect .text
  7. .trp:
  8. move.l d0,-(sp)
  9. cmp.l #16,8(sp)
  10. bcc 1f
  11. move.l 8(sp),d0
  12. btst d0,.trpim
  13. bne 3f
  14. 1:
  15. move.l a0,-(sp)
  16. move.l .trppc,a0
  17. move.l a0,d0
  18. beq 9f
  19. clr.l .trppc
  20. move.l 12(sp),-(sp)
  21. jsr (a0)
  22. add.l #4,sp
  23. move.l (sp)+,a0
  24. 3:
  25. move.l (sp)+,d0
  26. move.l (sp)+,(sp)
  27. rts
  28. 9:
  29. move.l (sp)+,a0
  30. move.l (sp)+,d0
  31. move.l 4(sp),-(sp)
  32. pea fmt
  33. jsr .diagnos
  34. add #4,sp
  35. jmp EXIT
  36. .sect .data
  37. fmt: .asciz "EM trap %d called\n"
  38. .align 2