csb.s 417 B

1234567891011121314151617181920212223242526272829303132
  1. .define .csb4
  2. .define .csb
  3. .sect .text
  4. .sect .rom
  5. .sect .data
  6. .sect .bss
  7. ECASE=20
  8. .sect .text
  9. .csb4:
  10. .csb:
  11. ! case descriptor in a0
  12. ! index in d0
  13. move.l (a0)+, a1 ! default jump address
  14. move.l (a0)+, d1 ! # entries
  15. beq 3f
  16. sub.l #1, d1
  17. 1:
  18. cmp.l (a0,d1.w*8), d0
  19. dbeq d1, 1b
  20. bne 3f
  21. move.l (4,a0,d1.w*8), a1 ! jump address
  22. 3:
  23. move.l a1, d0
  24. beq 4f
  25. jmp (a1)
  26. 4:
  27. move.l #ECASE, -(sp)
  28. jmp (.fatal)
  29. .align 2