|
|
1.1 root 1: 1 00000000 LL0:
2: 2 00000000 .data
3: 3 00000234 * .set SBR,0
4: 4 00000234 * .set SLR,1
5: 5 00000234 * .set P0BR,2
6: 6 00000234 * .set P0LR,3
7: 7 00000234 * .set P1BR,4
8: 8 00000234 * .set P1LR,5
9: 9 00000234 * .set P2BR,6
10: 10 00000234 * .set P2LR,7
11: 11 00000234 * .set IPL,8
12: 12 00000234 * .set MAPEN,9
13: 13 00000234 * .set MME,9
14: 14 00000234 * .set TBIA,10
15: 15 00000234 * .set TBIS,11
16: 16 00000234 * .set DCK,12
17: 17 00000234 * .set CCK,13
18: 18 00000234 * .set PCBB,14
19: 19 00000234 * .set KSP,19
20: 20 00000234 * .set USP,20
21: 21 00000234 * .set CPMDCB,21
22: 22 00000234 * .set PADC,25
23: 23 00000234 * .set DCR,27
24: 24 00000234 * .set DC_ON,1
25: 25 00000234 * .set DC_OFF,2
26: 26 00000234 * .text
27: 27 00000000 .align 1
28: 28 00000000 .globl _writec
29: 29 00000000 _writec:
30: 30 0000BA54 0000 .word L12
31: 31 0000BA56 #
32: 32 0000BA56 #
33: 33 0000BA56 # #include "definitions"
34: 34 0000BA56 #
35: 35 0000BA56 # /* I/O ROUTINES TO CPU2 CONSOLE */
36: 36 0000BA56 #
37: 37 0000BA56 # writec(c)
38: 38 0000BA56 # char c;
39: 39 0000BA56 # {
40: 40 0000BA56 11 0b jbr L14
41: 41 0000BA58 L15:
42: 42 0000BA58 # putchar(c);
43: 43 0000BA58 d9 ad07 pushb 7(fp)
44: 44 0000BA5B fe 08 effffffff2 callf $8,_putchar
45: 45 0000BA62 # }
46: 46 0000BA62 40 ret#2
47: 47 0000BA63 .set L12,0x0
48: 48 0000BA63 L14:
49: 49 0000BA63 11 f3 jbr L15
50: 50 0000BA65 .data
51: 51 00000234 * .text
52: 52 0000BA65 00 .align 1
53: 53 0000BA66 .globl _writes
54: 54 0000BA66 _writes:
55: 55 0000BA66 0000 .word L18
56: 56 0000BA68 #
57: 57 0000BA68 #
58: 58 0000BA68 # writes(s)
59: 59 0000BA68 # char *s;
60: 60 0000BA68 # {
61: 61 0000BA68 11 0b jbr L20
62: 62 0000BA6A L21:
63: 63 0000BA6A # putstr(s);
64: 64 0000BA6A dd ad04 pushl 4(fp)
65: 65 0000BA6D fe 08 efffffffe0 callf $8,_putstr
66: 66 0000BA74 # }
67: 67 0000BA74 40 ret#2
68: 68 0000BA75 .set L18,0x0
69: 69 0000BA75 L20:
70: 70 0000BA75 11 f3 jbr L21
71: 71 0000BA77 .data
72: 72 00000234 * .text
73: 73 0000BA77 00 .align 1
74: 74 0000BA78 .globl _writeh
75: 75 0000BA78 _writeh:
76: 76 0000BA78 1c00 .word L24
77: 77 0000BA7A #
78: 78 0000BA7A #
79: 79 0000BA7A # writeh(ix) /* 32 bits HEX */
80: 80 0000BA7A # long ix;
81: 81 0000BA7A # { register long count, mask, indx;
82: 82 0000BA7A 13 00a3 jbr L26
83: 83 0000BA7D L27:
84: 84 0000BA7D # char c, str[9];
85: 85 0000BA7D #
86: 86 0000BA7D # if (ix==0) { writec('0'); return; }
87: 87 0000BA7D 5d ad04 tstl 4(fp)
88: 88 0000BA80 21 0a jneq L28
89: 89 0000BA82 dd 30 pushl $48
90: 90 0000BA84 fe 08 efffffffc9 callf $8,_writec
91: 91 0000BA8B 40 ret#2
92: 92 0000BA8C # indx = 0; count = 28;
93: 93 0000BA8C L28:
94: 94 0000BA8C 4d 5a clrl r10
95: 95 0000BA8E 0d 1c 5c movl $28,r12
96: 96 0000BA91 # mask = 0xf0000000;
97: 97 0000BA91 0d 8ff0000000 5b movl $-268435456,r11
98: 98 0000BA98 # str[8]='\0';
99: 99 0000BA98 49 adc4 clrb -60(fp)
100: 100 0000BA9B # while (mask) {
101: 101 0000BA9B L29:
102: 102 0000BA9B 5d 5b tstl r11
103: 103 0000BA9D 31 54 jeql L30
104: 104 0000BA9F # c = ( (ix&mask) >> count )&0xf;
105: 105 0000BA9F bc 5b ad04 50 andl3 r11,4(fp),r0
106: 106 0000BAA4 5e 5c 50 50 shar r12,r0,r0
107: 107 0000BAA8 ac 0f 50 andl2 $15,r0
108: 108 0000BAAB 6f 50 adc8 cvtlb r0,-56(fp)
109: 109 0000BAAF # count -= 4;
110: 110 0000BAAF 2c 04 5c subl2 $4,r12
111: 111 0000BAB2 # if (indx==0) mask = 0xf000000;
112: 112 0000BAB2 5d 5a tstl r10
113: 113 0000BAB4 21 09 jneq L31
114: 114 0000BAB6 0d 8f0f000000 5b movl $251658240,r11
115: 115 0000BABD # else mask = mask >> 4;
116: 116 0000BABD 11 07 jbr L32
117: 117 0000BABF L31:
118: 118 0000BABF 5e 04 5b 50 shar $4,r11,r0
119: 119 0000BAC3 0d 50 5b movl r0,r11
120: 120 0000BAC6 L32:
121: 121 0000BAC6 # if ((c>=0)&&(c<=9)) c=c+'0';
122: 122 0000BAC6 59 adc8 tstb -56(fp)
123: 123 0000BAC9 91 13 jlss L33
124: 124 0000BACB 19 adc8 09 cmpb -56(fp),$9
125: 125 0000BACF 41 0d jgtr L33
126: 126 0000BAD1 89 adc8 50 cvtbl -56(fp),r0
127: 127 0000BAD5 0c 30 50 addl2 $48,r0
128: 128 0000BAD8 6f 50 adc8 cvtlb r0,-56(fp)
129: 129 0000BADC # else c=c+'7';
130: 130 0000BADC 11 0b jbr L34
131: 131 0000BADE L33:
132: 132 0000BADE 89 adc8 50 cvtbl -56(fp),r0
133: 133 0000BAE2 0c 37 50 addl2 $55,r0
134: 134 0000BAE5 6f 50 adc8 cvtlb r0,-56(fp)
135: 135 0000BAE9 L34:
136: 136 0000BAE9 # str[indx++] = c;
137: 137 0000BAE9 09 adc8 4aadbc movb -56(fp),-68(fp)[r10]
138: 138 0000BAEF 6d 5a incl r10
139: 139 0000BAF1 # }
140: 140 0000BAF1 11 a8 jbr L29
141: 141 0000BAF3 L30:
142: 142 0000BAF3 # indx = 0;
143: 143 0000BAF3 4d 5a clrl r10
144: 144 0000BAF5 # /* replace leading 0 with space */
145: 145 0000BAF5 # for (indx=0; indx<8; indx++) {
146: 146 0000BAF5 4d 5a clrl r10
147: 147 0000BAF7 L37:
148: 148 0000BAF7 1d 5a 08 cmpl r10,$8
149: 149 0000BAFA 81 12 jgeq L36
150: 150 0000BAFC # if (str[indx]!='0') break;
151: 151 0000BAFC 19 4aadbc 30 cmpb -68(fp)[r10],$48
152: 152 0000BB01 31 02 jeql L38
153: 153 0000BB03 11 09 jbr L36
154: 154 0000BB05 # else str[indx]=' ';
155: 155 0000BB05 L38:
156: 156 0000BB05 6f 20 4aadbc cvtlb $32,-68(fp)[r10]
157: 157 0000BB0A # }
158: 158 0000BB0A L35:
159: 159 0000BB0A 6d 5a incl r10
160: 160 0000BB0C 11 e9 jbr L37
161: 161 0000BB0E L36:
162: 162 0000BB0E # writes(&str[indx]);
163: 163 0000BB0E 3c 8844 5d 50 subl3 $68,fp,r0
164: 164 0000BB13 0c 5a 50 addl2 r10,r0
165: 165 0000BB16 dd 50 pushl r0
166: 166 0000BB18 fe 08 efffffff47 callf $8,_writes
167: 167 0000BB1F # }
168: 168 0000BB1F 40 ret#2
169: 169 0000BB20 .set L24,0x1C00
170: 170 0000BB20 L26:
171: 171 0000BB20 3c 8844 5d 5e subl3 $68,fp,sp
172: 172 0000BB25 13 ff55 jbr L27
173: 173 0000BB28 .data
174: 174 00000234 * .text
175: 175 0000BB28 .align 1
176: 176 0000BB28 .globl _write32h
177: 177 0000BB28 _write32h:
178: 178 0000BB28 1c00 .word L40
179: 179 0000BB2A #
180: 180 0000BB2A #
181: 181 0000BB2A # write32h(ix) /* 32 bits HEX - print leading 0's */
182: 182 0000BB2A # long ix;
183: 183 0000BB2A # { register long count, mask, indx;
184: 184 0000BB2A 11 76 jbr L42
185: 185 0000BB2C L43:
186: 186 0000BB2C # char c, str[9];
187: 187 0000BB2C #
188: 188 0000BB2C # indx = 0; count = 28;
189: 189 0000BB2C 4d 5a clrl r10
190: 190 0000BB2E 0d 1c 5c movl $28,r12
191: 191 0000BB31 # mask = 0xf0000000;
192: 192 0000BB31 0d 8ff0000000 5b movl $-268435456,r11
193: 193 0000BB38 # str[8]='\0';
194: 194 0000BB38 49 adc4 clrb -60(fp)
195: 195 0000BB3B # while (mask) {
196: 196 0000BB3B L44:
197: 197 0000BB3B 5d 5b tstl r11
198: 198 0000BB3D 31 54 jeql L45
199: 199 0000BB3F # c = ( (ix&mask) >> count )&0xf;
200: 200 0000BB3F bc 5b ad04 50 andl3 r11,4(fp),r0
201: 201 0000BB44 5e 5c 50 50 shar r12,r0,r0
202: 202 0000BB48 ac 0f 50 andl2 $15,r0
203: 203 0000BB4B 6f 50 adc8 cvtlb r0,-56(fp)
204: 204 0000BB4F # count -= 4;
205: 205 0000BB4F 2c 04 5c subl2 $4,r12
206: 206 0000BB52 # if (indx==0) mask = 0xf000000;
207: 207 0000BB52 5d 5a tstl r10
208: 208 0000BB54 21 09 jneq L46
209: 209 0000BB56 0d 8f0f000000 5b movl $251658240,r11
210: 210 0000BB5D # else mask = mask >> 4;
211: 211 0000BB5D 11 07 jbr L47
212: 212 0000BB5F L46:
213: 213 0000BB5F 5e 04 5b 50 shar $4,r11,r0
214: 214 0000BB63 0d 50 5b movl r0,r11
215: 215 0000BB66 L47:
216: 216 0000BB66 # if ((c>=0)&&(c<=9)) c=c+'0';
217: 217 0000BB66 59 adc8 tstb -56(fp)
218: 218 0000BB69 91 13 jlss L48
219: 219 0000BB6B 19 adc8 09 cmpb -56(fp),$9
220: 220 0000BB6F 41 0d jgtr L48
221: 221 0000BB71 89 adc8 50 cvtbl -56(fp),r0
222: 222 0000BB75 0c 30 50 addl2 $48,r0
223: 223 0000BB78 6f 50 adc8 cvtlb r0,-56(fp)
224: 224 0000BB7C # else c=c+'7';
225: 225 0000BB7C 11 0b jbr L49
226: 226 0000BB7E L48:
227: 227 0000BB7E 89 adc8 50 cvtbl -56(fp),r0
228: 228 0000BB82 0c 37 50 addl2 $55,r0
229: 229 0000BB85 6f 50 adc8 cvtlb r0,-56(fp)
230: 230 0000BB89 L49:
231: 231 0000BB89 # str[indx++] = c;
232: 232 0000BB89 09 adc8 4aadbc movb -56(fp),-68(fp)[r10]
233: 233 0000BB8F 6d 5a incl r10
234: 234 0000BB91 # }
235: 235 0000BB91 11 a8 jbr L44
236: 236 0000BB93 L45:
237: 237 0000BB93 #
238: 238 0000BB93 # writes( str );
239: 239 0000BB93 3c 8844 5d 50 subl3 $68,fp,r0
240: 240 0000BB98 dd 50 pushl r0
241: 241 0000BB9A fe 08 effffffec5 callf $8,_writes
242: 242 0000BBA1 # }
243: 243 0000BBA1 40 ret#2
244: 244 0000BBA2 .set L40,0x1C00
245: 245 0000BBA2 L42:
246: 246 0000BBA2 3c 8844 5d 5e subl3 $68,fp,sp
247: 247 0000BBA7 11 83 jbr L43
248: 248 0000BBA9 .data
249: 249 00000234 * .text
250: 250 0000BBA9 00 .align 1
251: 251 0000BBAA .globl _writed
252: 252 0000BBAA _writed:
253: 253 0000BBAA 180c .word L51
254: 254 0000BBAC #
255: 255 0000BBAC #
256: 256 0000BBAC # /* Function to write a 32_bit decimal to Console
257: 257 0000BBAC # */
258: 258 0000BBAC # writed(ix)
259: 259 0000BBAC # long ix;
260: 260 0000BBAC # { char c;
261: 261 0000BBAC 11 7d jbr L53
262: 262 0000BBAE L54:
263: 263 0000BBAE # register long div, lead0;
264: 264 0000BBAE #
265: 265 0000BBAE # if (ix==0) { writec('0'); return; }
266: 266 0000BBAE 5d ad04 tstl 4(fp)
267: 267 0000BBB1 21 0a jneq L55
268: 268 0000BBB3 dd 30 pushl $48
269: 269 0000BBB5 fe 08 effffffe98 callf $8,_writec
270: 270 0000BBBC 40 ret#2
271: 271 0000BBBD # if (ix<0) { writec('-'); ix = (~ix)+1; }
272: 272 0000BBBD L55:
273: 273 0000BBBD 5d ad04 tstl 4(fp)
274: 274 0000BBC0 81 13 jgeq L56
275: 275 0000BBC2 dd 2d pushl $45
276: 276 0000BBC4 fe 08 effffffe89 callf $8,_writec
277: 277 0000BBCB 2d ad04 50 mcoml 4(fp),r0
278: 278 0000BBCF 6d 50 incl r0
279: 279 0000BBD1 0d 50 ad04 movl r0,4(fp)
280: 280 0000BBD5 # lead0 = 1;
281: 281 0000BBD5 L56:
282: 282 0000BBD5 0d 01 5b movl $1,r11
283: 283 0000BBD8 # div = 1000000000;
284: 284 0000BBD8 0d 8f3b9aca00 5c movl $1000000000,r12
285: 285 0000BBDF # while (div) {
286: 286 0000BBDF L57:
287: 287 0000BBDF 5d 5c tstl r12
288: 288 0000BBE1 31 47 jeql L58
289: 289 0000BBE3 # c = (ix/div)+'0';
290: 290 0000BBE3 7c 5c ad04 50 divl3 r12,4(fp),r0
291: 291 0000BBE8 0c 30 50 addl2 $48,r0
292: 292 0000BBEB 6f 50 adc8 cvtlb r0,-56(fp)
293: 293 0000BBEF # ix = ix%div; /* Mod */
294: 294 0000BBEF 4d 50 clrl r0
295: 295 0000BBF1 0d ad04 51 movl 4(fp),r1
296: 296 0000BBF5 81 03 jgeq L9999
297: 297 0000BBF7 ec 01 50 mnegl $1,r0
298: 298 0000BBFA L9999:
299: 299 0000BBFA 3e 5c 50 52 53 ediv r12,r0,r2,r3
300: 300 0000BBFF 0d 53 ad04 movl r3,4(fp)
301: 301 0000BC03 # div /= 10;
302: 302 0000BC03 6c 0a 5c divl2 $10,r12
303: 303 0000BC06 # if ((c=='0')&&(lead0)) c=' ';
304: 304 0000BC06 19 adc8 30 cmpb -56(fp),$48
305: 305 0000BC0A 21 0a jneq L59
306: 306 0000BC0C 5d 5b tstl r11
307: 307 0000BC0E 31 06 jeql L59
308: 308 0000BC10 6f 20 adc8 cvtlb $32,-56(fp)
309: 309 0000BC14 # else lead0 = 0;
310: 310 0000BC14 11 02 jbr L60
311: 311 0000BC16 L59:
312: 312 0000BC16 4d 5b clrl r11
313: 313 0000BC18 L60:
314: 314 0000BC18 # if (c != ' ') writec(c);
315: 315 0000BC18 19 adc8 20 cmpb -56(fp),$32
316: 316 0000BC1C 31 0a jeql L61
317: 317 0000BC1E d9 adc8 pushb -56(fp)
318: 318 0000BC21 fe 08 effffffe2c callf $8,_writec
319: 319 0000BC28 # }
320: 320 0000BC28 L61:
321: 321 0000BC28 11 b5 jbr L57
322: 322 0000BC2A L58:
323: 323 0000BC2A # }
324: 324 0000BC2A 40 ret#2
325: 325 0000BC2B .set L51,0x180C
326: 326 0000BC2B L53:
327: 327 0000BC2B 3c 38 5d 5e subl3 $56,fp,sp
328: 328 0000BC2F 13 ff7c jbr L54
329: 329 0000BC32 .data
330: 330 00000234 * .text
331: 331 0000BC32 .align 1
332: 332 0000BC32 .globl _readc
333: 333 0000BC32 _readc:
334: 334 0000BC32 0000 .word L63
335: 335 0000BC34 #
336: 336 0000BC34 # /* Function read 1 char from Console
337: 337 0000BC34 # */
338: 338 0000BC34 # char readc()
339: 339 0000BC34 # { char c, rdchar();
340: 340 0000BC34 11 1a jbr L65
341: 341 0000BC36 L66:
342: 342 0000BC36 #
343: 343 0000BC36 # writec(c=rdchar());
344: 344 0000BC36 fe 04 effffffe17 callf $4,_rdchar
345: 345 0000BC3D 6f 50 adc8 cvtlb r0,-56(fp)
346: 346 0000BC41 dd 50 pushl r0
347: 347 0000BC43 fe 08 effffffe0a callf $8,_writec
348: 348 0000BC4A # return(c);
349: 349 0000BC4A 89 adc8 50 cvtbl -56(fp),r0
350: 350 0000BC4E 40 ret#1
351: 351 0000BC4F # }
352: 352 0000BC4F 40 ret#1
353: 353 0000BC50 .set L63,0x0
354: 354 0000BC50 L65:
355: 355 0000BC50 3c 38 5d 5e subl3 $56,fp,sp
356: 356 0000BC54 11 e0 jbr L66
357: 357 0000BC56 .data
358: 358 00000234 * .text
359: 359 0000BC56 .align 1
360: 360 0000BC56 .globl _reads
361: 361 0000BC56 _reads:
362: 362 0000BC56 1000 .word L69
363: 363 0000BC58 #
364: 364 0000BC58 # /* This function read a string of characters.
365: 365 0000BC58 # calling sequence : nochar = reads(s);
366: 366 0000BC58 # input argument : char *s;
367: 367 0000BC58 # return value : no. of char read; excluding NULL or CR.
368: 368 0000BC58 # */
369: 369 0000BC58 # reads(s)
370: 370 0000BC58 # char *s;
371: 371 0000BC58 # { register long ix;
372: 372 0000BC58 11 29 jbr L71
373: 373 0000BC5A L72:
374: 374 0000BC5A #
375: 375 0000BC5A # for(ix=0;;ix++) {
376: 376 0000BC5A 4d 5c clrl r12
377: 377 0000BC5C L75:
378: 378 0000BC5C # *s = readc();
379: 379 0000BC5C fe 04 efffffffcf callf $4,_readc
380: 380 0000BC63 6f 50 bd04 cvtlb r0,*4(fp)
381: 381 0000BC67 # if ((*s==NULL)||(*s==CR))
382: 382 0000BC67 59 bd04 tstb *4(fp)
383: 383 0000BC6A 31 06 jeql L9998
384: 384 0000BC6C 19 bd04 0a cmpb *4(fp),$10
385: 385 0000BC70 21 05 jneq L76
386: 386 0000BC72 L9998:
387: 387 0000BC72 # { *s = NULL; break; }
388: 388 0000BC72 49 bd04 clrb *4(fp)
389: 389 0000BC75 11 07 jbr L74
390: 390 0000BC77 # else s++;
391: 391 0000BC77 L76:
392: 392 0000BC77 6d ad04 incl 4(fp)
393: 393 0000BC7A # }
394: 394 0000BC7A L73:
395: 395 0000BC7A 6d 5c incl r12
396: 396 0000BC7C 11 de jbr L75
397: 397 0000BC7E L74:
398: 398 0000BC7E # return(ix);
399: 399 0000BC7E 0d 5c 50 movl r12,r0
400: 400 0000BC81 40 ret#1
401: 401 0000BC82 # }
402: 402 0000BC82 40 ret#1
403: 403 0000BC83 .set L69,0x1000
404: 404 0000BC83 L71:
405: 405 0000BC83 11 d5 jbr L72
406: 406 0000BC85 .data
407: 407 00000234 * #
408: 408 00000234 * #
409: 409 00000234 * # /* This function read a string of HEX digit and
410: 410 00000234 * # convert it to integer value.
411: 411 00000234 * # calling sequence : stat = readh(ix);
412: 412 00000234 * # input parameter : long *ix;
413: 413 00000234 * # return value : (stat < 0) if error else (stat = 0);
414: 414 00000234 * # */
415: 415 00000234 * #
416: 416 00000234 * # /*
417: 417 00000234 * # readh(ix)
418: 418 00000234 * # long *ix;
419: 419 00000234 * # { char line[ALINE], *getnum(), *del;
420: 420 00000234 * # int nochar;
421: 421 00000234 * #
422: 422 00000234 * # if ( (nochar = reads(line)) > 8 ) return(-1);
423: 423 00000234 * # if ( (del = getnum(line,ix,del,HEX)) < 0 ) return(-1);
424: 424 00000234 * # else return(0);
425: 425 00000234 * # }
426: 426 00000234 * #
427: 427 00000234 * # */
428: 428 00000234 * #
429: 429 00000234 * #
430: 430 00000234 * #
431: 431 00000234 * #
432: 432 00000234 * # /* This function read a string of DEC digit and
433: 433 00000234 * # convert it to integer value.
434: 434 00000234 * # calling sequence : stat = readd(ix);
435: 435 00000234 * # input parameter : long *ix;
436: 436 00000234 * # return value : (stat < 0) if error else (stat = 0);
437: 437 00000234 * # */
438: 438 00000234 * #
439: 439 00000234 * # /*
440: 440 00000234 * # readd(ix)
441: 441 00000234 * # long *ix;
442: 442 00000234 * # { char line[ALINE], *getnum(), *del;
443: 443 00000234 * # int nochar;
444: 444 00000234 * #
445: 445 00000234 * # if ( (nochar = reads(line)) > 11 ) return(-1);
446: 446 00000234 * # if ( (del = getnum(line,ix,del,DEC)) < 0 ) return(-1);
447: 447 00000234 * # else return(0);
448: 448 00000234 * # }
449: 449 00000234 * # */
450: 450 00000234 * #
451: 450 00000234 * #
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.