ack/mach/z80/int/dvi4.s

81 lines
902 B
ArmAsm
Raw Normal View History

1987-02-03 13:23:38 +00:00
.define .dvi4
.sect .text
.sect .rom
.sect .data
.sect .bss
.sect .text
1984-06-25 16:22:03 +00:00
.dvi4:
pop hl
ld (retaddr),hl
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),b
ld (ix+6),c
ld (ix+5),d
ld (ix+4),e
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)
or a
jr z,3f
call .negbd
3:
ld (.savebc),bc
ld (.savede),de
ld a,(.flag2)
ld b,a
ld a,(.flag1)
xor b
jr z,4f
call .negst
4:
ld bc,(.savebc)
ld de,(.savede)
ld hl,(retaddr)
jp (hl)
.negbd:
xor a
ld h,a
ld l,a
sbc hl,de
ex de,hl
ld h,a
ld l,a
sbc hl,bc
ld b,h
ld c,l
ret
.negst:
pop iy
pop de
pop bc
call .negbd
push bc
push de
jp (iy)
1987-02-03 13:23:38 +00:00
.sect .data
.flag1: .data1 0
.flag2: .data1 0
retaddr:.data2 0
.savebc: .data2 0
.savede: .data2 0