ack/mach/m68k4/libem/dvi.s

45 lines
493 B
ArmAsm

.define .dvi
.sect .text
.sect .rom
.sect .data
.sect .bss
! signed long divide
.sect .text
.dvi:
move.l 4(sp),d0
move.l 8(sp),d1
move.l d4,-(sp)
clr.l d4
tst.l d0 ! divisor
bpl 1f
neg.l d0
not d4
1:
tst.l d1 ! dividend
bpl 2f
neg.l d1
not d4
swap d4
not d4
swap d4
2:
move.l d1,-(sp)
move.l d0,-(sp)
jsr .dvu
tst d4
beq 5f
neg.l d1 ! quotient
5:
tst.l d4
bpl 6f
neg.l d2 ! remainder
6:
move.l (sp)+,d4
move.l (sp)+,a0
add.l #8,sp
move.l a0,-(sp)
rts
.align 2