1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- .define .cmu4
- .sect .text
- .sect .rom
- .sect .data
- .sect .bss
- .sect .text
- ! 4 byte cmu and cmi routine
- ! parameters:
- ! a: 0 for cmu, 1 for cmi
- ! stack: operands
- ! de: result (out)
- .cmu4:
- pop ix
- ld de,4
- ld b,d
- ld c,e
- ld hl,0
- add hl,sp
- add hl,bc
- dec hl
- ld d,h
- ld e,l
- add hl,bc
- ld (savesp),hl ! save new sp-1
- or a
- jr z,1f
- ld a,(de)
- cp (hl)
- dec hl
- dec de
- dec bc
- jr z,1f
- jp p,4f
- jr 6f
- 1:
- ld a,(de)
- cp (hl)
- dec de
- dec hl
- dec bc
- jr nz,2f
- ld a,b
- or c
- jr nz,1b
- ld d,a
- ld e,a
- jr 3f
- 2:
- jr nc,4f
- 6:
- ld de,1
- jr 3f
- 4:
- ld de,-1
- 3:
- ld hl,(savesp)
- inc hl
- ld sp,hl
- jp (ix)
- .sect .data
- savesp: .data2 0
|