error.s 523 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. .sect .text; .sect .rom; .sect .data; .sect .bss
  2. .define .error
  3. .define .Xtrp
  4. ! ax is trap number
  5. ! all registers must be saved
  6. ! because return is possible
  7. ! May only be called with error no's <16
  8. .sect .text
  9. .error:
  10. push bp
  11. push si
  12. push di
  13. push dx
  14. push cx
  15. push bx
  16. push ax
  17. mov cx,ax
  18. mov bx,1
  19. sal bx,cl
  20. .extern .ignmask
  21. .extern .trp
  22. test bx,(.ignmask)
  23. jne 2f
  24. call .trp
  25. 2:
  26. pop ax
  27. pop bx
  28. pop cx
  29. pop dx
  30. pop di
  31. pop si
  32. pop bp
  33. ret
  34. .Xtrp:
  35. cmp ax,16
  36. jge 1f
  37. call .error
  38. ret
  39. 1:
  40. jmp .trp