mirror of
https://github.com/SEPPDROID/Digital-Research-Source-Code.git
synced 2025-10-23 00:14:25 +00:00
96 lines
1.3 KiB
ArmAsm
96 lines
1.3 KiB
ArmAsm
.globl _ldivr
|
||
.comm _ldivr,4
|
||
.globl _ldiv
|
||
.globl ldiv
|
||
.text
|
||
_ldiv:
|
||
ldiv:
|
||
~~ldiv:
|
||
~b=R4
|
||
~q=R5
|
||
~l1=R7
|
||
~l2=R6
|
||
~al1=8
|
||
~al2=12
|
||
~sign=R3
|
||
link R14,#-2
|
||
movem.l R2-R7,-(sp)
|
||
clr R3
|
||
clr.l R5
|
||
move.l 8(R14),R7
|
||
move.l 12(R14),R6
|
||
bne L2
|
||
move.l #$80000000,_ldivr
|
||
move.l #$80000000,R0
|
||
divs #0,R0 *<<<<< div by zero trap whf 3/7/84
|
||
bra L1
|
||
L2:
|
||
bge L3
|
||
neg.l R6
|
||
add #1,R3
|
||
L3:
|
||
tst.l R7
|
||
bge L4
|
||
neg.l R7
|
||
add #1,R3
|
||
L4:
|
||
cmp.l R7,R6
|
||
bgt L6
|
||
bne L7
|
||
move.l #1,R5
|
||
clr.l R7
|
||
bra L6
|
||
L7:
|
||
cmp.l #$10000,R7
|
||
bge L9
|
||
divu R6,R7
|
||
move R7,R5
|
||
swap R7
|
||
ext.l R7
|
||
bra L6
|
||
L9:
|
||
move.l #1,R4
|
||
L12:
|
||
cmp.l R6,R7
|
||
blo L11
|
||
asl.l #1,R6
|
||
asl.l #1,R4
|
||
bra L12
|
||
L11:
|
||
tst.l R4
|
||
beq L6
|
||
cmp.l R6,R7
|
||
blo L15
|
||
or.l R4,R5
|
||
sub.l R6,R7
|
||
L15:
|
||
lsr.l #1,R4
|
||
lsr.l #1,R6
|
||
bra L11
|
||
L6:
|
||
cmp #1,R3
|
||
bne L16
|
||
neg.l R7
|
||
move.l R7,_ldivr
|
||
move.l R5,R0
|
||
neg.l R0
|
||
bra L1
|
||
L16:
|
||
move.l R7,_ldivr
|
||
move.l R5,R0
|
||
L1:
|
||
tst.l (sp)+
|
||
movem.l (sp)+,R3-R7
|
||
unlk R14
|
||
rts
|
||
|