-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpicalc16.asm
More file actions
152 lines (152 loc) · 1.62 KB
/
Copy pathpicalc16.asm
File metadata and controls
152 lines (152 loc) · 1.62 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
#PI Calculator (Using Leibniz Infinite Series)
#Made by Lucas Lux
#MM
#00: OUT INT
#01: OUT FARAC
#02: CALC DENOM
#03: CALC MODE
#04: CALC REMAIN
#05: CALC FRAC REMAIN
#06: CALC FRAC RES
LDA 01 ;One (Int part of out)
MAP 00
LDA 03 ;Denominator (3 is first in series)
MAP 02
divlop:
INC 00 ;Mode (add or sub)
sublop:
#No division required due to gauranteed remainder.
CLR 02
CLR 01
LDA 08 ;the 8 bits
MVR 03 ;Counter for shifts
LDA 01
MAP 04
#Fractional loop
fraclop:
MPA 04
SAL 01 ;Shift right
MVR 02
DEC 03
MPA 02
DIV 02 ;Divide and add
MVA 02
MAP 04
MVA 06
MAP 05
MVA 03
MVR 02
JZO endslop
JPL sarlop
sallop:
MPA 04 ;
SAL 01
MAP 04
DEC 02
MVA 02
JZO endslop
JUP sallop
sarlop:
MPA 04 ;
SAR 01
MAP 04
INC 02
MVA 02
JPL sarlop
endslop:
MPA 04 ;
ADD 01
MPA 05
JZO endflop
MAP 04
MVA 03
MVR 02
LDA 08
ADD 02
MVA 02
JZO endflop
JUP fraclop
endflop:
#end remain div
#MVA 01 ;Frac ans
#MAP 06
MPA 02
MVR 02
INC 02
INC 02 ;Next number
MVA 02
MAP 02
#New Regmap:
#02: Int part
#03: Frac part
MPA 00
MVR 02
MPA 01
MVR 03
#End regmap
MVA 00
JZO endsublop
MVA 01
SUB 03 ;Add to result
MVA 04
SAL 07
SAR 07
JPG skipdec
DEC 02
skipdec:
DEC 00
#Save result
MVA 02
MAP 00
MVA 03
MAP 01
JUP sublop
endsublop:
MVA 01
ADD 03 ;Add to result
MVA 04
SAL 07
SAR 07
ADD 02
#Save result
MVA 02
MAP 00
MVA 03
MAP 01
#Check
MPA 02
MVR 02
LDA 03 ;0B for check (de)
SUB 02
MVA 02 ;Check if denom lower than zero for carry
JPG divlop
endall:
MPA 01
SAR 06
#Start intout
MVR 01
#Only need one
LDA 30
ADD 01
MVA 01
OUT 01
#End Intout
MPA 01
SAL 02
#Start fixedout
MVR 01
LDA 2E
OUT 01
fixedlop:
LDA 0A
MLT 01
MVA 07
MVR 02
LDA 30
ADD 02
MVA 02
OUT 01
MVA 01
JNZ fixedlop
#End fixedout
HLT