ack/mach/z80/libem/cmu4.s
1987-02-02 13:30:20 +00:00

66 lines
637 B
ArmAsm

.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