.define .csa .sect .text .sect .rom .sect .data .sect .bss .sect .text .csa: move.l (sp)+,a0 ! case descriptor move.l (sp)+,d0 ! index move.l (a0)+,a1 ! default address sub.l (a0)+,d0 ! index - lower bound blt 1f cmp.l (a0)+,d0 ! rel. index <-> upper - lower bound bgt 1f asl.l #2,d0 add.l d0,a0 move.l (a0),d0 ! test jump address beq 1f move.l d0,-(sp) bra 3f 1: move.l a1,d0 ! test default jump address beq 2f move.l a1,-(sp) ! jump address 3: rts ! not a real rts 2: move.w #ECASE,-(sp) jmp .fatal .align 2