include "hdr1.html"; ?>
Line | Address | Object Code | Label | F1 | N1 | B | F2 | N2 | Comments | Check |
---|---|---|---|---|---|---|---|---|---|---|
1 | 0 | ; tape2/print.t2 | ||||||||
2 | 0 | ;--------------- | ||||||||
3 | 0 | ; | ||||||||
4 | 0 | Print:: | ; | |||||||
5 | 0 | ; | ||||||||
6 | 0 | ; local variables: overlay on Scratch area. This space is used | ||||||||
7 | 0 | ; by other routines in independent ways | ||||||||
8 | 0 | ; | ||||||||
9 | 0 | =7241 | ||||||||
10 | 7241 | .digits1: | ; | |||||||
11 | 7241 | 0000000000000 | +0 | ; | @7241 | |||||
12 | 7242 | .digits2: | ; | |||||||
13 | 7242 | 0000000000000 | +0 | ; | @7242 | |||||
14 | 7243 | 0000000000000 | .wk1: | +0 | ; | @7243 | ||||
15 | 7244 | 0000000000000 | .wk2: | +0 | ; | @7244 | ||||
16 | 7245 | 0000000000000 | .wk3: | +0 | ; | @7245 | ||||
17 | 7246 | 0000000000000 | .wk4: | +0 | ; | @7246 | ||||
18 | 7247 | 0000000000000 | .wk5: | +0 | ; | @7247 | ||||
19 | 7248 | 0000000000000 | .wk6: | +0 | ; | @7248 | ||||
20 | 7249 | .powlnk: | ; | |||||||
21 | 7249 | 0000000000000 | +0 | ; | @7249 | |||||
22 | 7250 | 0000000000000 | +0 | ; | @7250 | |||||
23 | 7251 | 0000000000000 | .wk7: | +0 | ; | @7251 | ||||
24 | 7252 | 0000000000000 | .wk8: | +0 | ; | @7252 | ||||
25 | 7253 | 0000000000000 | +0 | ; | @7253 | |||||
26 | 7254 | 0000000000000 | +0 | ; | @7254 | |||||
27 | 7255 | 0000000000000 | .wk9: | +0 | ; | @7255 | ||||
28 | 7256 | 0000000000000 | .Pbuff: | +0 | ; | @7256 | ||||
29 | 7257 | 0000000000000 | +0 | ; | @7257 | |||||
30 | 7258 | 0000000000000 | +0 | ; | @7258 | |||||
31 | 7259 | 0000000000000 | +0 | ; | @7259 | |||||
32 | 7260 | 0000000000000 | +0 | ; | @7260 | |||||
33 | 7261 | 0000000000000 | +0 | ; | @7261 | |||||
34 | 7262 | 0000000000000 | +0 | ; | @7262 | |||||
35 | 7263 | 0000000000000 | +0 | ; | @7263 | |||||
36 | 7264 | 0000000000000 | +0 | ; | @7264 | |||||
37 | 7265 | 0000000000000 | +0 | ; | @7265 | |||||
38 | 7266 | 0000000000000 | +0 | ; | @7266 | |||||
39 | 7267 | 0000000000000 | +0 | ; | @7267 | |||||
40 | 7268 | 0000000000000 | +0 | ; | @7268 | |||||
41 | 7269 | 0000000000000 | +0 | ; | @7269 | |||||
42 | 7270 | 0000000000000 | +0 | ; | @7270 | |||||
43 | 7271 | ;-------------------------------------------------------------------- | ||||||||
44 | 7271 | ; print a real number (in Acc) | ||||||||
45 | 7271 | ; | ||||||||
46 | 7271 | =7853 | ||||||||
47 | 7853 | .real: | ; | |||||||
48 | 7853 | 0556114 | cls | .wk2 | ;indicate real | @7853 | ||||
49 | 7853+ | 1117274 | jmp | .r0 | ; | |||||
50 | 7854 | =7868+ | ||||||||
51 | 7868+ | .r0: | ; | |||||||
52 | 7868+ | 0556124 | cls | .wk8 | ; | |||||
53 | 7869 | 1157301 | jz | .r1 | ;value == 0? | @7869 | ||||
54 | 7869+ | 1117264 | jmp | .r3 | ; | |||||
55 | 7870 | =7873+ | ||||||||
56 | 7873+ | .r1: | ; | |||||||
57 | 7873+ | 0600074 | lod | Rfmt | ; | |||||
58 | 7874 | 0076545 | and | W7525 | ;=01000000000000 | @7874 | ||||
59 | 7874+ | 1157264 | jz | .r3 | ; | |||||
60 | 7875 | 0615132 | lod | FP0.5 | ; | @7875 | ||||
61 | 7875+ | 0135150 | sub | K32a | ;=32 | |||||
62 | 7876 | 1117264 | jmp | .r3 | ;--> | @7876 | ||||
63 | 7876+ | ; | ||||||||
64 | 7876+ | pad | ; | |||||||
64+1 | 7876+ | 0000000 | 00 | 0 | ||||||
65 | 7877 | =7860+ | ||||||||
66 | 7860+ | .r3: | ; | |||||||
67 | 7860+ | 0556115 | cls | .wk3 | ; | |||||
68 | 7861 | 0556130 | cls | .Pbuff | ; | @7861 | ||||
69 | 7861+ | 1137267 | jn | .r4 | ; | |||||
70 | 7862 | 0456130 | inc | .Pbuff | ; | @7862 | ||||
71 | 7862+ | 0456130 | inc | .Pbuff | ;indicate '-' sign not needed | |||||
72 | 7863 | 1017270 | jmp | .r5 | ; | @7863 | ||||
73 | 7863+ | ; | ||||||||
74 | 7863+ | .r4: | ; | |||||||
75 | 7863+ | 1440000 | fna | 0 | ;make number positive | |||||
76 | 7864 | .r5: | ; | |||||||
77 | 7864 | 0416116 | sto | .wk4 | ;save actual number | @7864 | ||||
78 | 7864+ | 0600074 | lod | Rfmt | ;get real format info | |||||
79 | 7865 | 0416113 | sto | .wk1 | ;save it | @7865 | ||||
80 | 7865+ | 1200024 | sra | 20 | ;get total digits | |||||
81 | 7866 | 0076202 | and | K8191 | ;=N1 bits, mask off top bits | @7866 | ||||
82 | 7866+ | 0356111 | stc | .digits1 | ;save it | |||||
83 | 7867 | 1300024 | sla | 20 | ;get digits after | @7867 | ||||
84 | 7867+ | 0356112 | stc | .digits2 | ;save that too | |||||
85 | 7868 | 1014661 | jmp | .r6 | ;-->> | @7868 | ||||
86 | 7868+ | =6577 | ||||||||
87 | 6577 | .r6: | ; | |||||||
88 | 6577 | 0616113 | lod | .wk1 | ;reload format info | @6577 | ||||
89 | 6577+ | 0116113 | add | .wk1 | ;double it | |||||
90 | 6578 | 1134663 | jn | .r8 | ;test bit 38 - aligned | @6578 | ||||
91 | 6578+ | .r7: | ; | |||||||
92 | 6578+ | 0140000 | cla | 0 | ; | |||||
93 | 6579 | 1017305 | jmp | .c1 | ;join with printint | @6579 | ||||
94 | 6579+ | ; | ||||||||
95 | 6579+ | ; set up for aligned output | ||||||||
96 | 6579+ | ; | ||||||||
97 | 6579+ | .r8: | ; | |||||||
98 | 6579+ | 0616111 | lod | .digits1 | ;digits before point | |||||
99 | 6580 | 0136112 | sub | .digits2 | ;total digits | @6580 | ||||
100 | 6580+ | nop | ; | |||||||
100+1 | 6580+ | 1014665 | jmp | .1 | ||||||
100+2 | 6581 | .1: | ; | |||||||
101 | 6581 | calln | , | ;get 10**(-digits after point) | @6581 | |||||
101+1 | 6581 | 7370505017177 | lnk | Print.powlnk | : | jmp | Pow10 | |||
102 | 6582 | 0116210 | add | N1 | ;=-1 crafty / 2.0 | @6582 | ||||
103 | 6582+ | 1456116 | fna | .wk4 | ;subtract from num | |||||
104 | 6583 | 1034670 | jn | .r9 | ;num less than epsilon | @6583 | ||||
105 | 6583+ | 1114662 | jmp | .r7 | ;ok | |||||
106 | 6584 | ; number less than minimum representable, use zero instead | ||||||||
107 | 6584 | ; | ||||||||
108 | 6584 | .r9: | ; | |||||||
109 | 6584 | 0556116 | cls | .wk4 | ;set num = 0 | @6584 | ||||
110 | 6584+ | 1114662 | jmp | .r7 | ;and join with other formats | |||||
111 | 6585 | ;-------------------------------------------------------------------- | ||||||||
112 | 6585 | ; | ||||||||
113 | 6585 | ; print integer value | ||||||||
114 | 6585 | ; value in Acc | ||||||||
115 | 6585 | ; | ||||||||
116 | 6585 | =7854 | ||||||||
117 | 7854 | ; | ||||||||
118 | 7854 | .int: | ; | |||||||
119 | 7854 | 1015756 | jmp | .i1 | ; | @7854 | ||||
120 | 7854+ | =7150 | ||||||||
121 | 7150 | .i1: | ; | |||||||
122 | 7150 | 0556114 | cls | .wk2 | ; | @7150 | ||||
123 | 7150+ | 0556130 | cls | .Pbuff | ;sign=0 (-) | |||||
124 | 7151 | 1137256 | jn | .i2 | ;-> | @7151 | ||||
125 | 7151+ | 0456130 | inc | .Pbuff | ;value is positive | |||||
126 | 7152 | 0456130 | inc | .Pbuff | ;sign=2 (+) | @7152 | ||||
127 | 7152+ | 1117256 | jmp | .i2 | ;-->> | |||||
128 | 7153 | =7854+ | ||||||||
129 | 7854+ | .i2: | ; | |||||||
130 | 7854+ | 0456114 | inc | .wk2 | ;indicate integer | |||||
131 | 7855 | 0416115 | sto | .wk3 | ;store number | @7855 | ||||
132 | 7855+ | 0556117 | cls | .wk5 | ; | |||||
133 | 7856 | 0600075 | lod | Ndigits | ;number of digits to print | @7856 | ||||
134 | 7856+ | 0076220 | and | K15a | ;=15 | |||||
135 | 7857 | 0416111 | sto | .digits1 | ; | @7857 | ||||
136 | 7857+ | 0416112 | sto | .digits2 | ; | |||||
137 | 7858 | 0116213 | add | N8 | ;=-8 | @7858 | ||||
138 | 7858+ | 0136223 | sub | K4 | ;=4 | |||||
139 | 7859 | 0356120 | stc | .wk6 | ; | @7859 | ||||
140 | 7859+ | 0556113 | cls | .wk1 | ; | |||||
141 | 7860 | 1017305 | jmp | .c1 | ; | @7860 | ||||
142 | 7860+ | ; | ||||||||
143 | 7860+ | ; in common with printreal, Acc always 0 at this point?? | ||||||||
144 | 7860+ | ; | ||||||||
145 | 7860+ | =7877 | ||||||||
146 | 7877 | .c1: | ; | |||||||
147 | 7877 | 0136130 | sub | .Pbuff | ;0/-2 | @7877 | ||||
148 | 7877+ | 1137312 | jn | .c3 | ;'+' | |||||
149 | 7878 | 0600076 | lod | prtfmt | ;load format info | @7878 | ||||
150 | 7878+ | 1137307 | jn | .c2 | ;special(1)? -> | |||||
151 | 7879 | 1117312 | jmp | .c3 | ;not special(1) | @7879 | ||||
152 | 7879+ | ; | ||||||||
153 | 7879+ | ; setup for special(1) - suppress leading blank | ||||||||
154 | 7879+ | ; | ||||||||
155 | 7879+ | .c2: | ; | |||||||
156 | 7879+ | 0616210 | lod | N1 | ;=-1 | |||||
157 | 7880 | 0516112 | ads | .digits2 | ;decrement total digit | @7880 | ||||
158 | 7880+ | 0616111 | lod | .digits1 | ;see if digits before | |||||
159 | 7881 | 1157312 | jz | .c3 | ; is = 0 -> | @7881 | ||||
160 | 7881+ | 0616210 | lod | N1 | ;=-1 no, decrement digits before | |||||
161 | 7882 | 0516111 | ads | .digits1 | ; | @7882 | ||||
162 | 7882+ | .c3: | ; | |||||||
163 | 7882+ | 0236114 | o11 | .wk2 | ;load real/integer flag, wk2 = -2 | |||||
164 | 7883 | ; if sign = '-', -1 if digits before >0, | ||||||||
165 | 7883 | ; or 0 if digits before was zero ??? | ||||||||
166 | 7883 | 1037400 | jn | .g2 | ;->integer | @7883 | ||||
167 | 7883+ | .c4: | ; | |||||||
168 | 7883+ | 0556117 | cls | .wk5 | ; | |||||
169 | 7884 | 0616116 | lod | .wk4 | ;get number to be printed | @7884 | ||||
170 | 7884+ | 1157366 | jz | .f4 | ;easy case-> | |||||
171 | 7885 | 0076203 | and | K511 | ;extract exponent | @7885 | ||||
172 | 7885+ | 0556124 | cls | .wk8 | ; | |||||
173 | 7886 | 1017317 | jmp | .c5 | ;-->> | @7886 | ||||
174 | 7886+ | pad | ; | |||||||
174+1 | 7886+ | 0000000 | 00 | 0 | ||||||
175 | 7887 | ;-------------------------------------------------------------------- | ||||||||
176 | 7887 | .c5: | ; | |||||||
177 | 7887 | 0136204 | sub | K256 | ;=256 convert to signed form | @7887 | ||||
178 | 7887+ | 1256205 | mul | W7301 | ;=0.3 (fixed pt frac) | |||||
179 | 7888 | 0416120 | sto | .wk6 | ;approx decimal exponent | @7888 | ||||
180 | 7888+ | 1137321 | jn | .c6 | ;skip if < 0 | |||||
181 | 7889 | 0020000 | neg | 0 | ;negate value | @7889 | ||||
182 | 7889+ | .c6: | ; | |||||||
183 | 7889+ | 0136217 | sub | N76 | ;=-76 limit | |||||
184 | 7890 | 1037356 | jn | .c9 | ;too big/small | @7890 | ||||
185 | 7890+ | .c7: | ; | |||||||
186 | 7890+ | 0236120 | o11 | .wk6 | ;exchange&negate | |||||
187 | 7891 | .c8: | ; | |||||||
188 | 7891 | 0576115 | o27 | .wk3 | ;subtract from wk3 (real:0/int:num) | @7891 | ||||
189 | 7891+ | 1017352 | jmp | .d1 | ;re-scale number to 0.1-1.0 | |||||
190 | 7892 | =7918 | ||||||||
191 | 7918 | ; | ||||||||
192 | 7918 | .c9: | ; | |||||||
193 | 7918 | 0616217 | lod | N76 | ;=-76 | @7918 | ||||
194 | 7918+ | 0216120 | exa | .wk6 | ;use -76/reload scaled exponent | |||||
195 | 7919 | 1137322 | jn | .c7 | ; | @7919 | ||||
196 | 7919+ | 0616217 | lod | N76 | ;=-76 use -76 as exponentn | |||||
197 | 7920 | 1017323 | jmp | .c8 | ; | @7920 | ||||
198 | 7920+ | pad | ; | |||||||
198+1 | 7920+ | 0000000 | 00 | 0 | ||||||
199 | 7921 | ; rescale number to range 0.1-1.0, try approx exponent first, then | ||||||||
200 | 7921 | ; adjust by +/- 1 until it's right | ||||||||
201 | 7921 | ; | ||||||||
202 | 7921 | =7914 | ||||||||
203 | 7914 | .d1: | ; | |||||||
204 | 7914 | calln | , | ;convert to power of 10 | @7914 | |||||
204+1 | 7914 | 7370505017177 | lnk | Print.powlnk | : | jmp | Pow10 | |||
205 | 7915 | 1476116 | fmu | .wk4 | ;scale argument | @7915 | ||||
206 | 7915+ | 0416116 | sto | .wk4 | ;and save it | |||||
207 | 7916 | 1456207 | fna | Point1 | ;=0.1 | @7916 | ||||
208 | 7916+ | 1036022 | jn | .d2 | ;>=0.1, OK so far | |||||
209 | 7917 | 0040000 | o02 | 0 | ;<0.1, scale up by 10 | @7917 | ||||
210 | 7917+ | 1017323 | jmp | .c8 | ;back to try again | |||||
211 | 7918 | ; | ||||||||
212 | 7918 | =7186 | ||||||||
213 | 7186 | .d2: | ; | |||||||
214 | 7186 | 0616116 | lod | .wk4 | ;load argument | @7186 | ||||
215 | 7186+ | 1436206 | fsb | FP1 | ;=1.0 | |||||
216 | 7187 | 1037324 | jn | .d3 | ;<1.0 in range | @7187 | ||||
217 | 7187+ | 1117342 | jmp | .d9 | ;scale down by 10 | |||||
218 | 7188 | ;.d9: lod N1 ;=-1 copy of code below | ||||||||
219 | 7188 | ; jmp .c9 ;loop back | ||||||||
220 | 7188 | ; | ||||||||
221 | 7188 | =7892 | ||||||||
222 | 7892 | ; gets to here with argument (.wk4) in range 0.1 - 1.0 | ||||||||
223 | 7892 | ; check to see if there are sufficient spaces before point for | ||||||||
224 | 7892 | ; digits needed. | ||||||||
225 | 7892 | .d3: | ; | |||||||
226 | 7892 | 0616113 | lod | .wk1 | ;load format info | @7892 | ||||
227 | 7892+ | 1037336 | jn | .d8 | ;scaled format-> | |||||
228 | 7893 | 0616111 | lod | .digits1 | ;freepoint/aligned, space before | @7893 | ||||
229 | 7893+ | 0136115 | sub | .wk3 | ;less actual digits before point | |||||
230 | 7894 | 1037406 | jn | .h4 | ;won't fit, change fmt | @7894 | ||||
231 | 7894+ | 0040000 | o02 | 0 | ;=1 | |||||
232 | 7895 | 0776117 | o37 | .wk5 | ;load .wk5, sub 1 from .wk5 | @7895 | ||||
233 | 7895+ | 1137343 | jn | .e1 | ;prev value < 0 | |||||
234 | 7896 | 0616113 | lod | .wk1 | ;reload fmt info | @7896 | ||||
235 | 7896+ | 0116113 | add | .wk1 | ;double to test Bit38 | |||||
236 | 7897 | 1037333 | jn | .d4 | ;->aligned format | @7897 | ||||
237 | 7897+ | 0616115 | lod | .wk3 | ;actual digits before point | |||||
238 | 7898 | 1037334 | jn | .d7 | ;<0 pure fraction | @7898 | ||||
239 | 7898+ | 1017336 | jmp | .d8 | ;-> | |||||
240 | 7899 | ; | ||||||||
241 | 7899 | .d4: | ; | |||||||
242 | 7899 | 0616115 | lod | .wk3 | ;actual digits before point | @7899 | ||||
243 | 7899+ | 1016012 | jmp | .d5 | ;-->> | |||||
244 | 7900 | ; | ||||||||
245 | 7900 | =7178 | ||||||||
246 | 7178 | .d5: | ; | |||||||
247 | 7178 | 0136111 | sub | .digits1 | ;space before point | @7178 | ||||
248 | 7178+ | 0400004 | sto | 4 | ;number of leading zeros | |||||
249 | 7179 | nop | ; | @7179 | ||||||
249+1 | 7179 | 1116013 | jmp | .1 | ||||||
249+2 | 7179+ | .1: | ; | |||||||
250 | 7179+ | .d6: | ; | |||||||
251 | 7179+ | 0640004 | lis | 4 | ;count zeros | |||||
252 | 7180 | 1057336 | jz | .d8 | ;done | @7180 | ||||
253 | 7180+ | 0056220 | o02 | K15a | ;=15+1=>16 [0] | |||||
254 | 7181 | 2270522416130 | inc | .wk8 | / | sto | .Pbuff | ;store zero in print buffer | @7181 | |
255 | 7182 | 1116013 | jmp | .d6 | ;and repeat | @7182 | ||||
256 | 7182+ | ; | ||||||||
257 | 7182+ | =7900 | ||||||||
258 | 7900 | .d7: | ; | |||||||
259 | 7900 | calln | , | ; | @7900 | |||||
259+1 | 7900 | 7370505017177 | lnk | Print.powlnk | : | jmp | Pow10 | |||
260 | 7901 | 1476116 | fmu | .wk4 | ; | @7901 | ||||
261 | 7901+ | 0416116 | sto | .wk4 | ; | |||||
262 | 7902 | .d8: | ; | |||||||
263 | 7902 | 0616112 | lod | .digits2 | ;total digits space | @7902 | ||||
264 | 7902+ | 0176124 | bus | .wk8 | ;less spaces filled with zeros | |||||
265 | 7903 | calln | , | ;get least sig digit | @7903 | |||||
265+1 | 7903 | 7370505017177 | lnk | Print.powlnk | : | jmp | Pow10 | |||
266 | 7904 | 0116210 | add | N1 | ;=-1 halve it | @7904 | ||||
267 | 7904+ | 1416116 | fad | .wk4 | ;add to number (rounding) | |||||
268 | 7905 | 0416116 | sto | .wk4 | ;store rounded number | @7905 | ||||
269 | 7905+ | 1436206 | fsb | FP1 | ;=1.0 | |||||
270 | 7906 | 1137343 | jn | .e1 | ;not rounded up over limit | @7906 | ||||
271 | 7906+ | .d9: | ; | |||||||
272 | 7906+ | 0616210 | lod | N1 | ;=-1 scale down by another 10.0 | |||||
273 | 7907 | 1017323 | jmp | .c8 | ;and do it all again | @7907 | ||||
274 | 7907+ | ; | ||||||||
275 | 7907+ | .e1: | ; | |||||||
276 | 7907+ | 0616113 | lod | .wk1 | ;reload format info | |||||
277 | 7908 | 1137350 | jn | .e4 | ;->scaled | @7908 | ||||
278 | 7908+ | 0116113 | add | .wk1 | ;double to check bit38 | |||||
279 | 7909 | 1036020 | jn | .e2 | ;->aligned | @7909 | ||||
280 | 7909+ | 0616115 | lod | .wk3 | ;load scale factor (freepoint) | |||||
281 | 7910 | 1137347 | jn | .e3 | ; | @7910 | ||||
282 | 7910+ | 0416111 | sto | .digits1 | ; | |||||
283 | 7911 | 1017361 | jmp | .f1 | ; | @7911 | ||||
284 | 7911+ | ; | ||||||||
285 | 7911+ | =7184 | ||||||||
286 | 7184 | .e2: | ; | |||||||
287 | 7184 | 0616115 | lod | .wk3 | ; | @7184 | ||||
288 | 7184+ | 0176111 | bus | .digits1 | ; | |||||
289 | 7185 | 0416124 | sto | .wk8 | ; | @7185 | ||||
290 | 7185+ | 1017361 | jmp | .f1 | ; | |||||
291 | 7186 | ; | ||||||||
292 | 7186 | =7911+ | ||||||||
293 | 7911+ | .e3: | ; | |||||||
294 | 7911+ | 0556111 | cls | .digits1 | ; | |||||
295 | 7912 | 1017361 | jmp | .f1 | ; | @7912 | ||||
296 | 7912+ | ; | ||||||||
297 | 7912+ | .e4: | ; | |||||||
298 | 7912+ | 0616111 | lod | .digits1 | ; | |||||
299 | 7913 | 0576115 | o27 | .wk3 | ; | @7913 | ||||
300 | 7913+ | 1017361 | jmp | .f1 | ; | |||||
301 | 7914 | ; | ||||||||
302 | 7914 | =7921 | ||||||||
303 | 7921 | ;-------------------------------------------------------------------- | ||||||||
304 | 7921 | .f1: | ; | |||||||
305 | 7921 | 0616116 | lod | .wk4 | ;load number | @7921 | ||||
306 | 7921+ | 0076203 | and | K511 | ;=0777 mask exponent | |||||
307 | 7922 | 0136204 | sub | K256 | ;=256 convert to zero-base | @7922 | ||||
308 | 7922+ | 0116212 | add | K63 | ;=63 | |||||
309 | 7923 | 1137365 | jn | .f2 | ;insignificant | @7923 | ||||
310 | 7923+ | 0020000 | neg | 0 | ;make shift factor negative | |||||
311 | 7924 | 1070473200077 | exa | .wk4 | / | sra | 63 | ;shift mantissa into AR | @7924 | |
312 | 7925 | 1017366 | jmp | .f3 | ; | @7925 | ||||
313 | 7925+ | ; | ||||||||
314 | 7925+ | .f2: | ; | |||||||
315 | 7925+ | 0140000 | cla | 0 | ; | |||||
316 | 7926 | .f3: | ; | |||||||
317 | 7926 | 0356116 | stc | .wk4 | ;store what's left | @7926 | ||||
318 | 7926+ | .f4: | ; | |||||||
319 | 7926+ | 0616124 | lod | .wk8 | ; | |||||
320 | 7927 | 0416117 | sto | .wk5 | ; | @7927 | ||||
321 | 7927+ | 1116016 | jmp | .f5 | ;-->> | |||||
322 | 7928 | ; | ||||||||
323 | 7928 | =7182+ | ||||||||
324 | 7182+ | .f5: | ; | |||||||
325 | 7182+ | 0136112 | sub | .digits2 | ;number of digits needed | |||||
326 | 7183 | 0216116 | exa | .wk4 | ;swap with number | @7183 | ||||
327 | 7183+ | 1017370 | jmp | .f6 | ;-->> | |||||
328 | 7184 | ; | ||||||||
329 | 7184 | =7928 | ||||||||
330 | 7928 | .f6: | ; | |||||||
331 | 7928 | 1200046 | sra | 38 | ;shift bits into AR | @7928 | ||||
332 | 7928+ | 1017374 | jmp | .f8 | ;jump into loop | |||||
333 | 7929 | ; | ||||||||
334 | 7929 | ; loop, extracting digits | ||||||||
335 | 7929 | ; | ||||||||
336 | 7929 | .f7: | ; | |||||||
337 | 7929 | 1360000 | ara | 0 | ;get bits from AR | @7929 | ||||
338 | 7929+ | 1256211 | mul | K10a | ;=10 multiply by 10 | |||||
339 | 7930 | 2070516617550 | sto | .wk7 | / | lod | digits | ;convert 0..9 to digit char | @7930 | |
340 | 7931 | 2270476416130 | inc | .wk5 | / | sto | .Pbuff | ;bump index, store char | @7931 | |
341 | 7932 | .f8: | ; | |||||||
342 | 7932 | 0656116 | lis | .wk4 | ;load&increment digit count | @7932 | ||||
343 | 7932+ | 1037371 | jn | .f7 | ;still negative, do more digits | |||||
344 | 7933 | 0616113 | lod | .wk1 | ;reload format info | @7933 | ||||
345 | 7933+ | 1137376 | jn | .g1 | ;scaled format-> | |||||
346 | 7934 | 1017454 | jmp | .l1 | ;others-> | @7934 | ||||
347 | 7934+ | ; | ||||||||
348 | 7934+ | ; scaled format | ||||||||
349 | 7934+ | ; | ||||||||
350 | 7934+ | .g1: | ; | |||||||
351 | 7934+ | 0456117 | inc | .wk5 | ; | |||||
352 | 7935 | 0616211 | lod | K10a | ;=10 | @7935 | ||||
353 | 7935+ | 0436120 | stn | .wk6 | ; | |||||
354 | 7936 | .g2: | ; | |||||||
355 | 7936 | 0617464 | lod | .W7988 | ;=.p6 | @7936 | ||||
356 | 7936+ | 0416121 | sto | .powlnk | ; | |||||
357 | 7937 | 0616115 | lod | .wk3 | ;get value | @7937 | ||||
358 | 7937+ | 1017421 | jmp | .g3 | ; | |||||
359 | 7938 | ;-------------------------------------------------------------------- | ||||||||
360 | 7938 | =7953 | ||||||||
361 | 7953 | .g3: | ; | |||||||
362 | 7953 | 2270476556127 | inc | .wk5 | / | cls | .wk9 | ; | @7953 | |
363 | 7954 | 1037425 | jn | .g4 | ; | @7954 | ||||
364 | 7954+ | 0020000 | neg | 0 | ; | |||||
365 | 7955 | 0070476456127 | o00 | .wk5 | / | inc | .wk9 | ; | @7955 | |
366 | 7956 | 0070476456127 | o00 | .wk5 | / | inc | .wk9 | ; | @7956 | |
367 | 7957 | .g4: | ; | |||||||
368 | 7957 | 1256216 | mul | W7310 | ; | @7957 | ||||
369 | 7957+ | 1200044 | sra | 36 | ; | |||||
370 | 7958 | 0416116 | sto | .wk4 | ; | @7958 | ||||
371 | 7958+ | 0056211 | o02 | K10a | ;=10+1=>11 | |||||
372 | 7959 | 0020000 | neg | 0 | ; | @7959 | ||||
373 | 7959+ | 0216116 | exa | .wk4 | ; | |||||
374 | 7960 | 1017432 | jmp | .g6 | ;jump into loop | @7960 | ||||
375 | 7960+ | ; | ||||||||
376 | 7960+ | .g5: | ; | |||||||
377 | 7960+ | 1360000 | ara | 0 | ; | |||||
378 | 7961 | 0136210 | sub | N1 | ;=-1 | @7961 | ||||
379 | 7961+ | 1256211 | mul | K10a | ;=10 | |||||
380 | 7962 | .g6: | ; | |||||||
381 | 7962 | 2070516617550 | sto | .wk7 | / | lod | digits | ;convert to printable form | @7962 | |
382 | 7963 | 0070476416130 | o00 | .wk5 | / | sto | .Pbuff | ;store in buffer | @7963 | |
383 | 7964 | 0076220 | and | K15a | ;=15 | @7964 | ||||
384 | 7964+ | 1057436 | jz | .g7 | ;zero? | |||||
385 | 7965 | 0616120 | lod | .wk6 | ; | @7965 | ||||
386 | 7965+ | 1037402 | jn | .h1 | ;out of room | |||||
387 | 7966 | .g7: | ; | |||||||
388 | 7966 | 0656120 | lis | .wk6 | ; | @7966 | ||||
389 | 7966+ | 1137437 | jn | .g8 | ; | |||||
390 | 7967 | 0456117 | inc | .wk5 | ; | @7967 | ||||
391 | 7967+ | .g8: | ; | |||||||
392 | 7967+ | 0656116 | lis | .wk4 | ; | |||||
393 | 7968 | 1137430 | jn | .g5 | ; | @7968 | ||||
394 | 7968+ | 0456117 | inc | .wk5 | ; | |||||
395 | 7969 | 0070507000001 | o00 | .powlnk | / | jmp | 1 | ; | @7969 | |
396 | 7970 | ;-------------------------------------------------------------------- | ||||||||
397 | 7970 | =7938 | ||||||||
398 | 7938 | ; recovery when insufficient space to print number | ||||||||
399 | 7938 | ; | ||||||||
400 | 7938 | .h1: | ; | |||||||
401 | 7938 | 0040000 | o02 | 0 | ;decrement digits2 | @7938 | ||||
402 | 7938+ | 0576112 | o27 | .digits2 | ; | |||||
403 | 7939 | 0756115 | lzs | .wk3 | ;reload value | @7939 | ||||
404 | 7939+ | 1540000 | flt | 4096 | ;convert to float | |||||
405 | 7940 | 1037405 | jn | .h2 | ;check sign, negative-> | @7940 | ||||
406 | 7940+ | 1117405 | jmp | .h3 | ;positive-> | |||||
407 | 7941 | ; | ||||||||
408 | 7941 | .h2: | ; | |||||||
409 | 7941 | 1440000 | fna | 0 | ;make it positive | @7941 | ||||
410 | 7941+ | .h3: | ; | |||||||
411 | 7941+ | 0416116 | sto | .wk4 | ;save value | |||||
412 | 7942 | .h4: | ; | |||||||
413 | 7942 | 0056223 | o02 | K4 | ;=4+1=>5 space needed for exp | @7942 | ||||
414 | 7942+ | 0176112 | bus | .digits2 | ;deduct from digits2 | |||||
415 | 7943 | 1037413 | jn | .h5 | ;<0, isn't room even for scaled | @7943 | ||||
416 | 7943+ | 0416112 | sto | .digits2 | ;store reduced digits | |||||
417 | 7944 | 0616213 | lod | N8 | ;=-8 | @7944 | ||||
418 | 7944+ | 0416113 | sto | .wk1 | ;reset count to -8 | |||||
419 | 7945 | 0556111 | cls | .digits1 | ;clear digits1 for scaled | @7945 | ||||
420 | 7945+ | 0456112 | inc | .digits2 | ;add one to digits2 | |||||
421 | 7946 | 0456111 | inc | .digits1 | ;and also to digits1 | @7946 | ||||
422 | 7946+ | 1117313 | jmp | .c4 | ;restart conversion using scaled format | |||||
423 | 7947 | ; | ||||||||
424 | 7947 | ; number won't fit in space allowed, print ' $' error indicator | ||||||||
425 | 7947 | .h5: | ; | |||||||
426 | 7947 | 0556113 | cls | .wk1 | ; | @7947 | ||||
427 | 7947+ | 0056215 | o02 | K27 | ;=27 | |||||
428 | 7948 | 0416131 | sto | .Pbuff+1 | ; | @7948 | ||||
429 | 7948+ | 0416132 | sto | .Pbuff+2 | ; | |||||
430 | 7949 | 0416133 | sto | .Pbuff+3 | ; | @7949 | ||||
431 | 7949+ | 0416134 | sto | .Pbuff+4 | ; | |||||
432 | 7950 | 0056227 | o02 | Signbit | ;=04000000000001 | @7950 | ||||
433 | 7950+ | 0116223 | add | K4 | ;=4=>04000000000005 '$' | |||||
434 | 7951 | 0070452416131 | o00 | .digits2 | / | sto | .Pbuff+1 | ; | @7951 | |
435 | 7952 | 0556112 | cls | .digits2 | ; | @7952 | ||||
436 | 7952+ | 1017454 | jmp | .l1 | ;-->> | |||||
437 | 7953 | ;-------------------------------------------------------------------- | ||||||||
438 | 7953 | ; basic digits assembled, apply formatting | ||||||||
439 | 7953 | ; first sort out prefix string | ||||||||
440 | 7953 | ; | ||||||||
441 | 7953 | =7980 | ||||||||
442 | 7980 | .l1: | ; | |||||||
443 | 7980 | 0600001 | lod | T2Link | ; | @7980 | ||||
444 | 7980+ | 0416120 | sto | .wk6 | ;save return address | |||||
445 | 7981 | 0600076 | lod | prtfmt | ;get format info | @7981 | ||||
446 | 7981+ | 0416114 | sto | .wk2 | ;save it | |||||
447 | 7982 | 1220024 | srl | 20 | ;shift N1 down | @7982 | ||||
448 | 7982+ | 0076202 | and | K8191 | ;mask N1 bits | |||||
449 | 7983 | 1057460 | jz | .l2 | ;no prefix, use CRLF | @7983 | ||||
450 | 7983+ | 1117460 | jmp | .l3 | ;use specified string | |||||
451 | 7984 | ; | ||||||||
452 | 7984 | .l2: | ; | |||||||
453 | 7984 | 0617472 | lod | .PCRLF | ;=SCRLF | @7984 | ||||
454 | 7984+ | .l3: | ; | |||||||
455 | 7984+ | clo | ;make sure overflow clear | |||||||
455+1 | 7984+ | 1077461 | jo | .1 | ||||||
455+2 | 7985 | .1: | ; | |||||||
456 | 7985 | calln | , | ;output prefix string | @7985 | |||||
456+1 | 7985 | 7300005100012 | lnk | T2Link | : | jmp | OutStr | |||
457 | 7986 | 0616120 | lod | .wk6 | ; | @7986 | ||||
458 | 7986+ | 0400001 | sto | T2Link | ;restore return address | |||||
459 | 7987 | ; | ||||||||
460 | 7987 | 0616113 | lod | .wk1 | ;reload format info | @7987 | ||||
461 | 7987+ | 1137466 | jn | .l4 | ;scaled format-> | |||||
462 | 7988 | 0616227 | .W7988: | lod | Signbit | ;=04000000000000 | @7988 | |||
463 | 7988+ | 0017453 | o00 | .p6 | ; | |||||
464 | 7989 | 0070452516130 | o00 | .digits2 | / | ads | .Pbuff | ; | @7989 | |
465 | 7990 | 1017474 | jmp | .l5 | ; | @7990 | ||||
466 | 7990+ | ; | ||||||||
467 | 7990+ | .l4: | ; | |||||||
468 | 7990+ | 0616214 | lod | K13 | ;=13 '-' | |||||
469 | 7991 | 0070452136131 | o00 | .digits2 | / | sub | .Pbuff+1 | ; | @7991 | |
470 | 7992 | 1320006 | sll | 6 | ; | @7992 | ||||
471 | 7992+ | 0116224 | add | K24 | ;=24 '@' | |||||
472 | 7993 | 0070452416131 | o00 | .digits2 | / | sto | .Pbuff+1 | ; | @7993 | |
473 | 7994 | 0616227 | .PCRLF: | lod | Signbit | ;=04000000000000 | @7994 | |||
474 | 7994+ | 0000116 | o00 | SCRLF | ;in-line constant | |||||
475 | 7995 | 0070452516133 | o00 | .digits2 | / | ads | .Pbuff+3 | ; | @7995 | |
476 | 7996 | .l5: | ; | |||||||
477 | 7996 | 0616130 | lod | .Pbuff | ;sign marker | @7996 | ||||
478 | 7996+ | 1057500 | jz | .l6 | ;negative sign needed | |||||
479 | 7997 | 0616114 | lod | .wk2 | ; | @7997 | ||||
480 | 7997+ | 1137501 | jn | .l7 | ; | |||||
481 | 7998 | 0116114 | add | .wk2 | ; | @7998 | ||||
482 | 7998+ | 1037500 | jn | .l6 | ; | |||||
483 | 7999 | 0056215 | o02 | K27 | ;=27+1=>28 [SP] | @7999 | ||||
484 | 7999+ | 1017502 | jmp | .l8 | ;sign=' ' | |||||
485 | 8000 | ; | ||||||||
486 | 8000 | .l6: | ; | |||||||
487 | 8000 | 0616214 | lod | K13 | ;=13 [-] | @8000 | ||||
488 | 8000+ | 0536130 | sbs | .Pbuff | ; | |||||
489 | 8001 | 1017503 | jmp | .l9 | ; | @8001 | ||||
490 | 8001+ | ; | ||||||||
491 | 8001+ | .l7: | ; | |||||||
492 | 8001+ | 0140000 | cla | 0 | ; | |||||
493 | 8002 | .l8: | ; | |||||||
494 | 8002 | 0416130 | sto | .Pbuff | ;store sign here | @8002 | ||||
495 | 8002+ | 0000000 | o00 | 0 | ; | |||||
496 | 8003 | .l9: | ; | |||||||
497 | 8003 | 0616113 | lod | .wk1 | ;reload format info | @8003 | ||||
498 | 8003+ | 1057513 | jz | .m4 | ;->no format? | |||||
499 | 8004 | 0616111 | lod | .digits1 | ; | @8004 | ||||
500 | 8004+ | 0136112 | sub | .digits2 | ;less frac digits | |||||
501 | 8005 | 1057510 | jz | .m1 | ;no int digits | @8005 | ||||
502 | 8005+ | 0616114 | lod | .wk2 | ; | |||||
503 | 8006 | 1320003 | sll | 3 | ;*8 | @8006 | ||||
504 | 8006+ | 1037511 | jn | .m2 | ;test bit 36-> | |||||
505 | 8007 | 0056214 | o02 | K13 | ;=13+1=14 [.] | @8007 | ||||
506 | 8007+ | 1117511 | jmp | .m3 | ;-> | |||||
507 | 8008 | .m1: | ; | |||||||
508 | 8008 | 0056215 | o02 | K27 | ;=27+1=>28 [SP] | @8008 | ||||
509 | 8008+ | 1117511 | jmp | .m3 | ;-> | |||||
510 | 8009 | ; | ||||||||
511 | 8009 | .m2: | ; | |||||||
512 | 8009 | 0616211 | lod | K10a | ;=10 | @8009 | ||||
513 | 8009+ | .m3: | ; | |||||||
514 | 8009+ | 1320006 | sll | 6 | ;shift decimal pt (or space) | |||||
515 | 8010 | 0070446516130 | o00 | .digits1 | / | ads | .Pbuff | ;add to last int digit | @8010 | |
516 | 8011 | .m4: | ; | |||||||
517 | 8011 | 0616114 | lod | .wk2 | ;load format info | @8011 | ||||
518 | 8011+ | 0076212 | and | K63 | ;=077, mask out leadzero char | |||||
519 | 8012 | 1115763 | jmp | .m5 | ;-->> | @8012 | ||||
520 | 8012+ | =7155+ | ||||||||
521 | 7155+ | .m5: | ; | |||||||
522 | 7155+ | 0556121 | cls | .powlnk | ; | |||||
523 | 7156 | 1157523 | jz | .n5 | ;leadzero char=null, use space | @7156 | ||||
524 | 7156+ | 0416115 | sto | .wk3 | ;save leadzero char | |||||
525 | 7157 | 0076225 | and | K32 | ;=32, letter shift mask | @7157 | ||||
526 | 7157+ | 0456121 | inc | .powlnk | ;bump flag | |||||
527 | 7158 | 1057515 | jz | .n2 | ;not letters | @7158 | ||||
528 | 7158+ | 0436121 | stn | .powlnk | ;set flag=-32 | |||||
529 | 7159 | 0176115 | bus | .wk3 | ;subtract from char | @7159 | ||||
530 | 7159+ | 1320006 | sll | 6 | ;shift left | |||||
531 | 7160 | 0115771 | add | W7161 | ;and add letter shift | @7160 | ||||
532 | 7160+ | 1117514 | jmp | .n1 | ;join loop | |||||
533 | 7161 | ; | ||||||||
534 | 7161 | 0000000000037 | W7161: | +31 | ; | @7161 | ||||
535 | 7162 | ; | ||||||||
536 | 7162 | =8012+ | ||||||||
537 | 8012+ | ; | ||||||||
538 | 8012+ | .n1: | ; | |||||||
539 | 8012+ | 0416115 | sto | .wk3 | ;save leadzero character | |||||
540 | 8013 | .n2: | ; | |||||||
541 | 8013 | 0556116 | cls | .wk4 | ;set index=0 | @8013 | ||||
542 | 8013+ | .n3: | ; | |||||||
543 | 8013+ | 0616220 | lod | K15a | ;=15, digit mask | |||||
544 | 8014 | 2270472076130 | inc | .wk4 | / | and | .Pbuff | ;get next digit | @8014 | |
545 | 8015 | 1057520 | jz | .n4 | ;leading zero? -> | @8015 | ||||
546 | 8015+ | 1117524 | jmp | .n6 | ;non-zero-> | |||||
547 | 8016 | ; | ||||||||
548 | 8016 | .n4: | ; | |||||||
549 | 8016 | 0056116 | o02 | .wk4 | ; | @8016 | ||||
550 | 8016+ | 0176111 | bus | .digits1 | ; | |||||
551 | 8017 | 1137524 | jn | .n6 | ; | @8017 | ||||
552 | 8017+ | 0616115 | lod | .wk3 | ;replacement character | |||||
553 | 8018 | 0070472416130 | o00 | .wk4 | / | sto | .Pbuff | ;store over zero | @8018 | |
554 | 8019 | 1117515 | jmp | .n3 | ;and repeat for next | @8019 | ||||
555 | 8019+ | ; | ||||||||
556 | 8019+ | .n5: | ; | |||||||
557 | 8019+ | 0056215 | o02 | K27 | ;=FS+1=>SP, default leadzero char | |||||
558 | 8020 | 1117514 | jmp | .n1 | ;back to remove leading zero | @8020 | ||||
559 | 8020+ | ; | ||||||||
560 | 8020+ | .n6: | ; | |||||||
561 | 8020+ | 1015772 | jmp | .n7 | ;-->> | |||||
562 | 8021 | =7162 | ||||||||
563 | 7162 | .n7: | ; | |||||||
564 | 7162 | 0236121 | o11 | .powlnk | ;check flag | @7162 | ||||
565 | 7162+ | 1155775 | jz | .n8 | ; | |||||
566 | 7163 | 1037530 | jn | .o2 | ; | @7163 | ||||
567 | 7163+ | 0615163 | lod | W6771 | ;=02000000000000 | |||||
568 | 7164 | 0070472516127 | o00 | .wk4 | / | ads | .wk9 | ;set marker for FS needed | @7164 | |
569 | 7165 | 1017442 | jmp | .p1 | ;output digits etc. | @7165 | ||||
570 | 7165+ | ; | ||||||||
571 | 7165+ | .n8: | ; | |||||||
572 | 7165+ | 0616114 | lod | .wk2 | ; | |||||
573 | 7166 | 1017525 | jmp | .o1 | ;-->> | @7166 | ||||
574 | 7166+ | ; | ||||||||
575 | 7166+ | =8021 | ||||||||
576 | 8021 | .o1: | ; | |||||||
577 | 8021 | 1320002 | sll | 2 | ; | @8021 | ||||
578 | 8021+ | 1037530 | jn | .o2 | ;-> | |||||
579 | 8022 | 0616115 | lod | .wk3 | ;leadzero char | @8022 | ||||
580 | 8022+ | 0216130 | exa | .Pbuff | ;swap with sign | |||||
581 | 8023 | 0070472416127 | o00 | .wk4 | / | sto | .wk9 | ;put sign into place | @8023 | |
582 | 8024 | .o2: | ; | |||||||
583 | 8024 | 0616114 | lod | .wk2 | ; | @8024 | ||||
584 | 8024+ | 1220015 | srl | 13 | ; | |||||
585 | 8025 | 0076212 | and | K63 | ;=077 | @8025 | ||||
586 | 8025+ | 1057442 | jz | .p1 | ;output digits etc. | |||||
587 | 8026 | 0416114 | sto | .wk2 | ; | @8026 | ||||
588 | 8026+ | 0176111 | bus | .digits1 | ; | |||||
589 | 8027 | .o3: | ; | |||||||
590 | 8027 | 0416115 | sto | .wk3 | ; | @8027 | ||||
591 | 8027+ | 0116210 | add | N1 | ;=-1 | |||||
592 | 8028 | 1137537 | jn | .o4 | ; | @8028 | ||||
593 | 8028+ | 0616226 | lod | SP.00 | ;=03400 | |||||
594 | 8029 | 0070466516130 | o00 | .wk3 | / | ads | .Pbuff | ; | @8029 | |
595 | 8030 | 0616115 | lod | .wk3 | ; | @8030 | ||||
596 | 8030+ | 0136114 | sub | .wk2 | ; | |||||
597 | 8031 | 1017533 | jmp | .o3 | ; | @8031 | ||||
598 | 8031+ | ; | ||||||||
599 | 8031+ | .o4: | ; | |||||||
600 | 8031+ | 0616111 | lod | .digits1 | ; | |||||
601 | 8032 | .o5: | ; | |||||||
602 | 8032 | 0116114 | add | .wk2 | ; | @8032 | ||||
603 | 8032+ | 0416115 | sto | .wk3 | ; | |||||
604 | 8033 | 0176112 | bus | .digits2 | ; | @8033 | ||||
605 | 8033+ | 1037442 | jn | .p1 | ;output digits etc. | |||||
606 | 8034 | 1057442 | jz | .p1 | ;ditto. | @8034 | ||||
607 | 8034+ | 0616226 | lod | SP.00 | ;=03400 | |||||
608 | 8035 | 0070466516130 | o00 | .wk3 | / | ads | .Pbuff | ; | @8035 | |
609 | 8036 | 0616115 | lod | .wk3 | ; | @8036 | ||||
610 | 8036+ | 1017540 | jmp | .o5 | ; | |||||
611 | 8037 | ;-------------------------------------------------------------------- | ||||||||
612 | 8037 | ; | ||||||||
613 | 8037 | ; output the formatted sign,digits,exponent, etc. | ||||||||
614 | 8037 | ; | ||||||||
615 | 8037 | =7970 | ||||||||
616 | 7970 | .p1: | ; | |||||||
617 | 7970 | 0600377700033 | cla | outdev | / | otp | FS | ;clear acc, o/p fig shift | @7970 | |
618 | 7971 | .p2: | ; | |||||||
619 | 7971 | 2070476616130 | sto | .wk5 | / | lod | .Pbuff | ; | @7971 | |
620 | 7972 | 0416116 | sto | .wk4 | ; | @7972 | ||||
621 | 7972+ | 0100077 | add | outdev | ; | |||||
622 | 7973 | 1070473700000 | exa | .wk4 | / | otp | 0 | ; | @7973 | |
623 | 7974 | 1200006 | sra | 6 | ; | @7974 | ||||
624 | 7974+ | 0076212 | and | K63 | ;=077 | |||||
625 | 7975 | 1057451 | jz | .p3 | ; | @7975 | ||||
626 | 7975+ | 0100077 | add | outdev | ; | |||||
627 | 7976 | 2070473700000 | sto | .wk4 | / | otp | 0 | ; | @7976 | |
628 | 7977 | .p3: | ; | |||||||
629 | 7977 | 2270476616127 | inc | .wk5 | / | lod | .wk9 | ; | @7977 | |
630 | 7978 | 0400004 | sto | 4 | ; | @7978 | ||||
631 | 7978+ | 1115776 | jmp | .p4 | ;-->> | |||||
632 | 7979 | ; | ||||||||
633 | 7979 | =7166+ | ||||||||
634 | 7166+ | .p4: | ; | |||||||
635 | 7166+ | 0075163 | and | W6771 | ;=02000000000000 | |||||
636 | 7167 | 1056001 | jz | .p5 | ;not set, skip FS | @7167 | ||||
637 | 7167+ | nop | ||||||||
637+1 | 7167+ | 1016000 | jmp | .1 | ||||||
637+2 | 7168 | .1: | ; | |||||||
638 | 7168 | 0000377700033 | o00 | outdev | / | otp | FS | ;output figure shift | @7168 | |
639 | 7169 | .p5: | ; | |||||||
640 | 7169 | 0600004 | lod | 4 | ; | @7169 | ||||
641 | 7169+ | 1020000 | jn | Return | ; | |||||
642 | 7170 | 1017453 | jmp | .p6 | ;-->> | @7170 | ||||
643 | 7170+ | ; | ||||||||
644 | 7170+ | =7979 | ||||||||
645 | 7979 | ; | ||||||||
646 | 7979 | .p6: | ; | |||||||
647 | 7979 | 0616117 | lod | .wk5 | ; | @7979 | ||||
648 | 7979+ | 1017443 | jmp | .p2 | ; repeat until add done | |||||
649 | 7980 | ;-------------------------------------------------------------------- | ||||||||
650 | 7980 | =8037 | ||||||||
651 | 8037 | .nr3: | ; | |||||||
652 | 8037 | 0600001 | lod | T2Link | ; | @8037 | ||||
653 | 8037+ | 0400015 | sto | Link1 | ; | |||||
654 | 8038 | 0616576 | lod | Msg17 | ;'PRINT ERROR' | @8038 | ||||
655 | 8038+ | 1016165 | jmp | outerror0 | ; | |||||
656 | 8039 | ; no refs | ||||||||
657 | 8039 | .nr4: | ; | |||||||
658 | 8039 | 1000000 | jmp | Return | ; | @8039 | ||||
659 | 8039+ | ; | ||||||||
660 | 8039+ | 0000000 | o00 | 0 | ; | |||||
661 | 8040 | digits: | ; | |||||||
662 | 8040 | 0000000000004 | '0','1','2','3','4' | ;digits reverse lookup | @8040 | |||||
663 | 8045 | 0000000000031 | '5','6','7','8','9' | |||||||
664 | 8050 | 0400001000010 | W8050: | +00400001000010 | ; | @8050 | ||||
665 | 8051 | ; | ||||||||
666 | 8051 | =7870 | ||||||||
667 | 7870 | ; | ||||||||
668 | 7870 | ; no refs | ||||||||
669 | 7870 | .nr1: | ; | |||||||
670 | 7870 | clo | ; | @7870 | ||||||
670+1 | 7870 | 1177276 | jo | .1 | ||||||
670+2 | 7870+ | .1: | ; | |||||||
671 | 7870+ | 1320001 | sll | 1 | ; | |||||
672 | 7871 | 1077300 | jo | .nr2 | ; | @7871 | ||||
673 | 7871+ | 1017545 | jmp | .nr3 | ; | |||||
674 | 7872 | ; | ||||||||
675 | 7872 | .nr2: | ; | |||||||
676 | 7872 | 0600004 | lod | 4 | ; | @7872 | ||||
677 | 7872+ | 1117264 | jmp | .r3 | ; | |||||
678 | 7873 | ; no refs | ||||||||
679 | 7873 | 1117264 | jmp | .r3 | ; | @7873 | ||||
680 | 7873+ | ; | ||||||||
681 | 7873+ | ; |