ack/mach/z80/libem/hulp.s
1985-03-29 21:44:50 +00:00

63 lines
644 B
ArmAsm

loop = 100
dvi4:
xor a
ld (.flag1),a
ld (.flag2),a
ld ix,0
add ix,sp
ld b,(ix+7) ! dividend
bit 7,b
jr z,1f
ld c,(ix+6)
ld d,(ix+5)
ld e,(ix+4)
call .negbd
ld (ix+7),d
ld (ix+6),e
ld (ix+5),h
ld (ix+4),l
ld a,1
ld (.flag1),a
1:
ld b,(ix+3)
bit 7,b
jr z,2f
call .negst
ld a,1
ld (.flag2),a
2:
call .dvu4
ld a,(.flag1)
jr z,3f
call .negbd
3:
ld a,(.flag2)
ld b,a
ld a,(.flag1)
xor b
jr z,4f
call .negst
4:
jr loop
.negbd:
xor a
ld h,a
ld l,a
sbc hl,de
ex de,hl
ld h,a
ld l,a
sbc hl,bc
ret
.negst:
pop iy
pop de
pop bc
call .negbd
push hl
push de
jp (iy)
.data
.flag1: .byte 0
.flag2: .byte 0