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+ | ; | ||||||||