annotate 3rdparty/utils/view/view_arith.a @ 3222:c086a5d69b78

Corrected ,pc should have been ,pcr in KRNP3.asm
author David Ladd <drencor-xeen@users.sourceforge.net>
date Wed, 20 Dec 2017 23:28:18 -0600
parents 37fd74e6fad8
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1706
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
1 *
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
2 * Arithmetic routines for VIEW
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
3 *
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
4 *
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
5 ifp1
1912
37fd74e6fad8 Now assembles with rma, uses os9defs.d in c3
boisy
parents: 1777
diff changeset
6 use os9defs.d
1706
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
7 endc
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
8
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
9 psect view_arith_a,0,0,0,0,0
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
10 *
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
11 * Divide A by B, return fixed-point result in A.B, rounded.
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
12 *
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
13 divAB:
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
14 pshs b Put divisor on stack
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
15 ldb #17 17-bit result, with last bit in C.
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
16 pshs b
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
17 clrb
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
18 pshs b
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
19 divABloop
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
20 rol ,s
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
21 rola
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
22 rolb Shift into B.
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
23 cmpb 2,s
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
24 blo divAB1
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
25 subb 2,s
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
26 orcc #Carry
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
27 bra divAB2
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
28 divAB1
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
29 andcc #^Carry
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
30 divAB2
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
31 dec 1,s
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
32 bne divABloop
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
33 puls b Get fraction part into B
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
34 adcb #0 Round by adding in extra decimal place.
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
35 adca #0
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
36 leas 2,s Clear up stack.
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
37 rts
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
38
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
39 * Divide 16-bit value in X by 8-bit value in A, return 16-bit result in D.
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
40 *
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
41 div168:
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
42 pshs x The division we want is (XH * 256 + XL) / A
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
43 pshs d
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
44 lda 3,s First, calculate XL / A
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
45 ldb ,s
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
46 bsr divAB
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
47 sta 1,s Save it.
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
48 lda 2,s Now do (XH/A) *256
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
49 ldb ,s
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
50 clr ,s
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
51 bsr divAB
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
52 addd ,s Add them to get answer.
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
53 std ,s
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
54 puls d
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
55 puls x,pc
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
56
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
57 endsect