477
|
1 * Did mods as per Chris Dekker's RUNB
|
|
2 L4234 comb Default to divide by 0 error
|
|
3 ldb #$2D
|
|
4 tst 2,y Is number to divide by 0?
|
|
5 beq L4233 Yes, return with error
|
|
6 tst 8,y Is dividend=0?
|
|
7 lbeq L40DD Yes, answer=0, return from there
|
|
8 lda 7,y Get exponent of # to dividend
|
|
9 suba 1,y Subtract exponent of divisor
|
|
10 lbvs L40EF
|
|
11 sta 7,y
|
|
12 lda #$21 ??? (count for exponent shifts?)
|
|
13 ldb 5,y Get sign byte of dividend
|
|
14 eorb $B,y Calculate which sign result will be
|
|
15 andb #1 Just keep sign bit
|
|
16 std ,y Save ??? & resulting sign
|
|
17 ldq 2,y Divide whole divisor mantissa by 2
|
|
18 lsrd /
|
|
19 rorw < these both eat sign bit and make mantissa a
|
|
20 stq 2,y \ 31 bit number
|
|
21 ldq 8,y Divide whole dividend by 2
|
|
22 lsrd
|
|
23 rorw
|
|
24 clr $B,y Clear last byte of dividend mantissa
|
|
25 L426F subw 4,y Subtract divisor from dividend
|
|
26 sbcd 2,y
|
|
27 beq L42AB
|
|
28 bmi L42A7
|
|
29 L427E orcc #1
|
|
30 L4280 dec ,y
|
|
31 beq L42F8
|
|
32 rol $B,y
|
|
33 rol $A,y
|
|
34 rol 9,y
|
|
35 rol 8,y
|
|
36 andcc #$fe
|
|
37 rolw
|
|
38 rold
|
|
39 bcc L426F
|
|
40 addw 4,y
|
|
41 adcd 2,y
|
|
42 beq L42AB
|
|
43 bpl L427E
|
|
44 L42A7 andcc #$FE
|
|
45 bra L4280
|
|
46
|
|
47 L42AB tstw
|
|
48 bne L427E
|
|
49 ldb ,y
|
|
50 decb
|
|
51 subb #$10
|
|
52 blt L42CD
|
|
53 subb #$08
|
|
54 blt L42C2
|
|
55 stb ,y
|
|
56 lda $B,y
|
|
57 ldb #$80
|
|
58 andcc #$fe
|
|
59 bra L42EB
|
|
60
|
|
61 L42C2 addb #$08
|
|
62 stb ,y
|
|
63 ldw #$8000
|
|
64 ldd $A,y
|
|
65 andcc #$fe
|
|
66 bra L42EB
|
|
67
|
|
68 L42CD addb #$08
|
|
69 blt L42DB
|
|
70 stb ,y
|
|
71 ldq 9,y
|
|
72 ldf #$80
|
|
73 andcc #$fe
|
|
74 bra L42EB
|
|
75
|
|
76 L42DB addb #$07
|
|
77 stb ,y
|
|
78 ldq 8,y
|
|
79 orcc #$01
|
|
80 L42E5 rolw
|
|
81 rold
|
|
82 L42EB dec ,y
|
|
83 bpl L42E5
|
|
84 tsta
|
|
85 bra L42FC
|
|
86
|
|
87 L42F8 ldq 8,y
|
|
88 L42FC bmi L430C
|
|
89 rolw
|
|
90 rold
|
|
91 dec 7,y
|
|
92 lbvs L40DD
|
|
93 L430C addw #1
|
|
94 adcd #0
|
|
95 bcc L4321
|
|
96 rora
|
|
97 inc 7,y
|
|
98 lbvs L40DD
|
|
99 L4321 std 8,y
|
|
100 tfr w,d
|
|
101 lsrb Shift out sign bit
|
|
102 lslb
|
|
103 orb 1,y Merge in result's sign
|
|
104 std $A,y
|
|
105 inc 7,y
|
|
106 lbvs L40EF
|
|
107 L4331 leay 6,y Eat temp var
|
|
108 rts & return
|
|
109
|