ack/mach/z80/libem/cmu4.s

61 lines
572 B
ArmAsm
Raw Normal View History

1985-03-29 21:44:50 +00:00
.define .cmu4
! 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)
.data
savesp: .word 0