123456789101112131415161718192021222324252627282930313233343536 |
- .define .set
- .sect .text
- .sect .rom
- .sect .data
- .sect .bss
- .sect .text
- ESET=2
- .set: ! d0 bitnumber
- ! d1 setsize in bytes
- ! a1 saved d2
- ! a0 return address
- move.l (sp)+, a0
- move.l d2, a1
- move.l d1, d2
- asr.l #2, d2
- 1:
- clr.l -(sp)
- sub.l #1, d2
- bne 1b
- move.l d0, d2
- asr.l #3, d2 ! offset from sp in bytes
- eor.l #3, d2 ! longs are stored in high-to-low order
- cmp.l d1, d2
- blt 2f
- move.l #ESET, -(sp) ! bitnumber too large
- move.l a1, d2
- move.l a0, -(sp)
- jmp (.trp)
- 2:
- bset d0, (sp, d2.l)
- move.l a1, d2
- jmp (a0) ! return
- .align 2
|