A large commit.
[pdp8.git] / sw / rescue / lab8e_goettingen / disk1_im6100 / rkb / paroff / txio.pa
CommitLineData
81e70d48
PH
1/ TXIO.PA SERIAL INPUT-OUTPUT ROUTINES\r
2/\r
3/\r
4/\r
5/ UPDATE #33 18-JUN-86\r
6/\r
7/\r
8/ TCI CONTROL INPUT 13-MAR-86 REV 0.7\r
9/ TFI FLOATING INPUT 03-FEB-85 REV 0.3\r
10/ TFR FLOATING INPUT TERM=RT 15-OCT-84 REV 0.0\r
11/ TRI READ INPUT 03-FEB-85 REV 0.2\r
12/ TTI TEXT INPUT 23-JUL-84 REV 0.2\r
13/ TIDC CHANGE INPUT DEVICE CODE 03-FEB-85 REV 0.1\r
14/\r
15/\r
16/ TDO DECIMAL INTEGER OUTPUT 19-OCT-84 REV 3.0\r
17/ TOO OCTAL INTEGER OUTPUT 19-0CT-84 REV 0.2\r
18/ THO HEXADECIMAL INTEGER OUTPUT 19-OCT-84 REV 0.0\r
19/ TCO CHARACTER OUTPUT 18-OCT-84 REV 0.2\r
20/ TCR CARRIAGE RETURN 10-APR-84 REV 0.0\r
21/ TNL NEW LINE 10-APR-84 REV 0.0\r
22/ TSO STRING OUTPUT 10-APR-84 REV 0.0\r
23/ TFO FLOATING OUTPUT 03-FEB-85 REV 0.2\r
24/ TTO TEXT OUTPUT 13-JAN-86 REV 2.6\r
25/ TODC CHANGE OUTPUT DEVICE CODE 18-OCT-84 REV 0.0\r
26/\r
27/\r
28/ TLC LOAD CURSOR 03-FEB-85 REV 0.5\r
29/ TCS CLEAR SCREEN 11-APR-84 REV 0.1\r
30/ TEL ERASE LINE 17-MAR-86 REV 0.2\r
31/\r
32/\r
33\f/*************************************************************\r
34/\r
35/ ASSEMBLER FLAGS\r
36/\r
37 VT100=1 / TERMINAL: VT100 OR ADM3A\r
38/\r
39 TFIELD=0 / CURRENT FIELD\r
40/\r
41/ FPP27B=1 / FLOATING POINT PACKAGE LOADED\r
42/\r
43/ EXTMAC=1 / MACRO-LIST SUPPLIED BY USER PROGRAMM\r
44/\r
45/*************************************************************\r
46/\r
47/ START LOCATIONS\r
48/\r
49 FIELD 0\r
50/\r
51 IFDEF FPP27B <\r
52 IFNDEF EXTMAC <\r
53\r
54 *2200 / START WITH 27BFPP.BN\r
55\r
56 >\r
57\r
58 IFDEF EXTMAC <\r
59\r
60 *2400 / DTO. EXT MACRO LIST\r
61\r
62 >\r
63 >\r
64/\r
65/\r
66 IFNDEF FPP27B <\r
67 IFNDEF EXTMAC <\r
68\r
69 *5200 / START WITHOUT 27BFPP.BN\r
70\r
71 >\r
72 IFDEF EXTMAC <\r
73\r
74 *5400 / DT0. EXT MACRO LIST\r
75\r
76 >\r
77 >\r
78/\r
79/*************************************************************\r
80/\r
81/ FPP - INSTRUCTIONS\r
82/\r
83 FIXMRI TFGET=5000\r
84 FIXMRI TFPUT=6000\r
85 TFEXT=0\r
86 TFIN=11\r
87 TFOUT=12\r
88\f / THIS MACRO LIST MAY BE SUPPLIED BY USER PROGRAMM\r
89\r
90 IFNDEF EXTMAC <\r
91\r
92 / TTO TEXT OUTPUT MACRO LIST, 3 WORDS PER MACRO\r
93\r
94 / COMMON MACRO TO DEFINE PARAMETER\r
95TTOMAC, "C-270^2+"O-270^2+"M-270^2+"M-270^2+"O-270^2+"N\r
96 TTOMCO\r
97TTOMCO, 0 / ALSO DUMMY TEXT BUFFER\r
98\r
99 / *** USER MACRO POINTER ARE STORED HERE ***\r
100\r
101 / *** END OF USER MACROS ***\r
102\r
103TTOMER, 0 / GETS CALCULATED NUMBER AND\r
104 TTOMEM / TERMINATES SEARCH WITH ERROR\r
105 0 / MASSAGE\r
106\r
107TTOMEM, TEXT /&04$%^%$TXIO MACRO UNDEF.$JM$&00/;0\r
108\r
109 PAGE\r
110\r
111 >\r
112\f/ TTO TEXT OUTPUT\r
113/\r
114/ TYPE TEXT FROM 6-BIT ASCII BUFFER CREATED WITH\r
115/ PAL8 TEXT PSEUDO-OP.\r
116/\r
117/ ENTRY: AC = POINTER TO TEXT-BUFFER\r
118/ EXIT: AC = 0\r
119/\r
120/\r
121/ ! OPTION\r
122/ THIS OPTION IS USED TO TYPE CHARACTERS WITH SPECIAL\r
123/ FUNCTION.\r
124/ EXAMPLE: TEXT /1.25!$/ --> 1.25$\r
125/\r
126/ $ - OPTION:\r
127/ CHARACTERS BETWEEN TWO $-CHARACTERS ARE CONVERTED\r
128/ TO CONTROL CHARACTERS.\r
129/ EXAMPLE: TEXT /$MJ$/ --> CR/LF\r
130/\r
131/ % - OPTION\r
132/ CHARACTERS BETWEEN TWO %-CHARACTERS ARE CONVERTED\r
133/ TO LOWER CASE CHARACTER. MAY BE COMBINED WITH\r
134/ OTHER OPTIONS\r
135/\r
136/ # - OPTION:\r
137/ MULTIPLE OUTPUT OF SAME CHARACTER. THE FIRST CHARACTER\r
138/ AFTER # IS TREATED AS NUMBER ( LOWER 6 BITS, ANY CHARACTER )\r
139/ AND THE SECOND CHARACTER IS PRINTED UP TO 63 TIMES.\r
140/ EXAMPLE: TEXT /AB#DC/ --> ABCCCC\r
141/\r
142/ & - OPTION\r
143/ THIS OPTION CHANGES THE OUTPUT DEVICE CODE.\r
144/ IF THE TWO NUMBERS FOLLOWING ARE ZERO, THE PREVIOUES\r
145/ OUTPUT DEVICE IS RESTORED.\r
146/ EXAMPLE: TEXT /&04/ CONSOLE OUTPUT\r
147/\r
148/ " OPTION\r
149/ THIS OPTION IS USED TO CALL A MACRO ( A NORMAL TEXT STRING )\r
150/ WITHIN A TEXT STRING. THE NAME MAY BE UP TO 6 CHARACTERS\r
151/ AND MUST BE TERMINATED BY A ] OR BY A { IF PARAMETERS\r
152/ ( TEXT STRINGS ) ARE PART OF THE MACRO CALL.\r
153/\r
154/ ' OPTION\r
155/ THE PARAMETERS DEFINED BY A MACRO CALL ARE TYPED BY\r
156/ THIS OPTION. THE PARAMETERS ARE NAMED FROM 1-8.\r
157/\r
158/ EXAMPLE: TEXT /GIVE "WHO[10] MORE/\r
159/ ========\r
160/\r
161/ ENTRIES IN MACRO LIST:\r
162/ TTOMAC, .\r
163/ .\r
164/ "W-260^2+"H-260^2+"O\r
165/ WHO / MACRO NAME\r
166/ 0 / FIELD\r
167/ .\r
168/\r
169/ MACRO IN FIELD 0 :\r
170/ WHO, TEXT /ME '1 HOURS/\r
171/\r
172/ ---->> GIVE ME 10 HOURS MORE\r
173/\r
174/\r
175/ 06-APR-84 REV 0.0 KJ.S.\r
176/ 09-APR-84 REV 0.1 KJ.S. LOCATIONS RENAMED\r
177/ 11-APR-84 REV 0.2 KJ.S. OUTPUT CODE CHANGED\r
178/ 09-FEB-85 REV 0.3 KJ.S. #-OPTION ADDED\r
179/ 13-FEB-85 REV 0.4 KJ.S. %-OPTION ADDED\r
180/ 04-MAR-85 REV 0.5 KJ.S. &-OPTION\r
181/ 11-APR-85 REV 1.0 KJ.S. SOME CHANGES FOR GRV.PA\r
182/ 04-JUN-85 REV 2.0 KJ.S. MACRO WITH PARAMETER CALL\r
183/ 05-JUN-85 REV 2.1 KJ.S. & END OPTION DELETED\r
184/ 06-JUN-85 REV 2.2 KJ.S. & OPTION CHANGE OUTPUT DEVICE\r
185/ 11-JUN-85 REV 2.3 KJ.S. BUG IN FIELD HANDLING\r
186/ 12-JUN-85 REV 2.4 KJ.S. MACRO TERMINATOR CHANGED\r
187/ 18-JUN-85 REV 2.5 KJ.S. MACRO NAME CODE CHANGED\r
188/ 13-JAN-86 REV 2.6 KJ.S. EXPLANATION UPDATED\r
189/\r
190\f\r
191TTO, 0\r
192 DCA TTOPNT / SAVE BUFFER POINTER\r
193 DCA TTOBFL / START WITH FIRST BYTE\r
194\r
195 TAD (TTOPPB+2 / SET POINTER TO TABLE OF\r
196 DCA TTOPPB / TEXT POINTERS FOR MACRO CALLS\r
197\r
198TTOA, JMS TTOB / PROCEED\r
199 SZA CLA / AC = 0 ?\r
200 JMP TTOAM / NO: MACRO CALL\r
201 CLA CMA / YES: END OF BUFFER\r
202 TAD TTOPPB / DECREMENT POINTER\r
203 DCA TTOPPB\r
204 TAD I TTOPPB\r
205 SNA / POINTER FROM LIST = 0 ?\r
206 JMP I TTO / YES: WE ARE IN LEVEL 0, ALL DONE\r
207 DCA TTOPNT / NO: REENTER LOWER LEVEL, SET TEXT POINTER\r
208 CLA CMA\r
209 TAD TTOPPB\r
210 DCA TTOPPB\r
211 TAD I TTOPPB / GET BYTE FLAG AND FIELD OF TEXT BUFFER\r
212 AND (1\r
213 DCA TTOBFL\r
214 TAD I TTOPPB\r
215 AND (70\r
216 TAD (6201\r
217 DCA TTOFLD\r
218 JMP TTOA / CONTINUE\r
219\r
220TTOAM, TAD TTOFLD / SAVE POINTERS IN TABLE\r
221 AND (70\r
222 TAD TTOBFL\r
223 DCA I TTOPPB / FIRST FLAGS\r
224 ISZ TTOPPB\r
225 TAD TTOPNT\r
226 DCA I TTOPPB / THAN TEXT POINTER\r
227 ISZ TTOPPB\r
228\r
229 TAD TTOCPT / SET NEW PARAMETERS FOR TTOB\r
230 DCA TTOPNT / CALCULATED FROM MACRO CALL\r
231 TAD TTOCBF\r
232 DCA TTOBFL\r
233 TAD TTOCFD\r
234 DCA TTOFLD\r
235 JMP TTOA\r
236\r
237TTOPPB, TTOPPB+2 / LIST OF TEXT POINTERS\r
238 0 / MUST BE ZERO TO FLAG LEVEL 0 EXIT\r
239 ZBLOCK 20 / 8 LEVELS, FIRST FIELD AND BYTE FLAG\r
240 / FOLLOWED BY TEXT POINTER\r
241\f / OPTIONS\r
242 / =======\r
243\r
244 / # OPTION: MULTIPLE CHARACTER OUTPUT\r
245\r
246TTOC3, CLA CMA / SET FLAG = -1\r
247 JMP TTOC3B\r
248\r
249TTOC3A, TAD TTOSV / CHARACTER IS NUMBER\r
250 CMA / = -N-1\r
251TTOC3B, DCA TTONFL\r
252 JMP TTOB0\r
253\r
254\r
255 / $ OPTION: PRINT CONTROL CHARACTERS\r
256\r
257TTOC4, TAD TTOCFL / TOGGLE CONTROL FLAG\r
258 SNA CLA\r
259 TAD (-100\r
260 DCA TTOCFL\r
261 JMP TTOB3\r
262\r
263\r
264 / % OPTION: LOWER CASE CHARACTERS\r
265\r
266TTOC5, TAD TTOLFL / TOGGLE LOWER CASE FLAG\r
267 SNA CLA\r
268 TAD (40\r
269 DCA TTOLFL\r
270 JMP TTOB3\r
271\r
272\r
273 / & OPTION:CHANGE OUTPUT DEVICE CODE\r
274\r
275TTOC6, CLA CLL CMA RAL\r
276 DCA TTODFL / SET DEVICE FLAG = -2\r
277 DCA TTODVN / CLEAR NEW INPUT\r
278 JMP TTOB2 / GET TWO CHARACTERS FOR DEVICE\r
279\r
280TTOC6A, TAD TTOSV\r
281 AND (7\r
282 TAD TTODVN\r
283 RTL\r
284 RAL\r
285 DCA TTODVN / MAKE 0NN0\r
286 ISZ TTODFL / DONE ?\r
287 JMP TTOB2 / NO: NEXT CHARACTER\r
288 TAD TTODVN / YES:\r
289 SZA CLA / NEW DEVICE ZERO ?\r
290 JMP TTOC6B / NO:\r
291 TAD TTODVO / YES: RESTORE OLD DEVICE\r
292 JMP TTOC6C\r
293TTOC6B, TAD TTODEV\r
294 DCA TTODVO / SAVE CURRENT DEVICE\r
295 TAD TTODVN\r
296TTOC6C, DCA TTODEV / IS CURRENT DEVICE\r
297 TAD TTODEV\r
298 JMS TODC / CHANGE OUTPUT CODE\r
299 JMP TTOB2 / CONTINUE\r
300\r
301TTODEV, 40 / CONSOLE IS DEFAULT\r
302TTODVO, 40\r
303TTODVN, 0\r
304 \r
305 PAGE\r
306\r
307\r
308 / ! OPTION: PRINT CONTROL CHARACTERS\r
309\r
310TTOC1, CLA IAC\r
311 DCA TTOAFL / SET FLAG\r
312 JMP TTOB3\r
313\f / SUBROUTINE TO TYPE DATA FROM TEXT BUFFER\r
314\r
315TTOB, 0\r
316\r
317TTOB0, CLA CLL\r
318 TAD TTOBFL\r
319 RAR / BYTE FLAG TO LINK\r
320\r
321TTOFLD, CDF TFIELD\r
322 TAD I TTOPNT / GET WORD FROM TEXT BUFFER\r
323 CDF TFIELD\r
324\r
325 SNL / LINK = FLAG = 0 ?\r
326 BSW / YES: LEFT BYTE\r
327 DCA TTOSV / SAVE\r
328 CML\r
329 SNL / LINK = FLAG = 1 ?\r
330 ISZ TTOPNT / NO: INCREMENT POINTER\r
331 RAL\r
332 DCA TTOBFL / SAVE BYTE FLAG\r
333\r
334 TAD TTOSV\r
335 SNA / WORD ZERO ?\r
336 JMP TTOBX / YES: END OF BUFFER\r
337\r
338 AND (77 / MAKE 6 BIT BYTE\r
339 SZA / = 0 ?\r
340 JMP .+5 / NO:\r
341 TAD TTOEFL / YES: CHECK END FLAG\r
342 SNA CLA / END FLAG = 1 ?\r
343 JMP TTOBX / NO: EXIT\r
344 JMP TTOB0 / YES: IGNORE ZERO BYTE\r
345 DCA TTOSV\r
346\r
347 TAD TTOTFL / CHECK FOR SPECIAL TERMINATOR\r
348 SNA CLA / FLAG SET ?\r
349 JMP TTOB4 / NO:\r
350 TAD TTOSV / YES:\r
351 TAD (-33\r
352 SNA / CHAR = [ ?\r
353 JMP TTOBX / YES: EXIT\r
354 TAD (-2\r
355 SNA CLA / CHAR = ] ?\r
356 JMP TTOBX / YES: EXIT\r
357\r
358TTOB4, ISZ TTONFL / NUMBER FLAG = -1 ?\r
359 SKP / NO:\r
360 JMP TTOC3A / YES: PARAMETER IS MULTIPLIER\r
361\r
362 TAD TTOAFL\r
363 SNA CLA / ALL CHARACTER FLAG = 1 ?\r
364 JMP .+3 / NO:\r
365 DCA TTOAFL / YES: CLEAR FLAG\r
366 JMP TTOB1 / OUTPUT\r
367\r
368 TAD TTOPFL\r
369 SZA CLA / PARAMETER FLAG = 1 ?\r
370 JMP TTOC7A / YES: CHARACTER IS PARAMETER NUMBER\r
371\r
372 TAD TTODFL / CHECK DEVICE FLAG\r
373 SZA CLA / ZERO ?\r
374 JMP TTOC6A / NO: DEVICE CODE\r
375\r
376 TAD TTOSV / SCAN FOR CONTROL CHARACTERS\r
377 TAD (-50\r
378 SMA / CHAR.LT.50 ?\r
379 JMP TTOB1 / NO:\r
380 TAD (10 / YES:\r
381 SPA SNA / CHAR.GE.41 ?\r
382 JMP TTOB1 / NO:\r
383 TAD (TTOCL / YES: AC = 1...7\r
384 DCA TTOCL / ADD TABLE START\r
385 TAD I TTOCL / START ADRR. FROM TABLE\r
386 DCA TTOCL\r
387 JMP I TTOCL\r
388\r
389TTOCL, 0\r
390 TTOC1 / !\r
391 TTOC2 / "\r
392 TTOC3 / #\r
393 TTOC4 / $\r
394 TTOC5 / %\r
395 TTOC6 / &\r
396 TTOC7 / '\r
397\r
398TTOB1, CLA\r
399 TAD TTOSV\r
400 TAD (-40\r
401 SPA / MAKE 8 BIT ASCII\r
402 TAD (100 / 01-37 TO 301-337\r
403 TAD (240 / 40-77 TO 240-277\r
404 TAD TTOCFL / SET CONTROL BIT\r
405 TAD TTOLFL / SET LOWER CASE BIT\r
406 DCA TTOSV\r
407\r
408 TAD TTOSV\r
409 JMS I TTOOUT / OUTPUT\r
410 ISZ TTONFL / MULTIPLE CHARACTERS ?\r
411 JMP .-3 / YES:\r
412TTOB2, CLA CLL CMA RAL / NO: DONE\r
413 DCA TTONFL / RESET NUMBER FLAG\r
414 JMP TTOB0 / AND CONTINUE\r
415\r
416TTOB3, CLA CMA / PRESERVE NUMBER FLAG\r
417 TAD TTONFL\r
418 DCA TTONFL\r
419 JMP TTOB0\r
420\r
421TTOBEX, CLA CLL CMA RAL / MACRO CALL EXIT\r
422 DCA TTONFL / RESET NUMBER FLAG\r
423 IAC / EXIT WITH AC.NE.0\r
424 JMP I TTOB\r
425\r
426TTOBX, CLA\r
427 DCA TTOTFL / CLEAR TERMINATOR FLAG\r
428 JMP I TTOB / EXIT\r
429\r
430TTOOUT, TCO / POINTER TO OUTPUT ROUTINE\r
431\r
432TTOSV, 0 / TEMP STORAGE FOR CHARACTER\r
433TTOPNT, 0 / POINTER TO TEXT BUFFER\r
434TTOBFL, 0 / BYTE FLAG: 0 LEFT, 1 RIGHT BYTE\r
435\r
436TTOAFL, 0 / IF SET, CHAR. IS PRINT CHARACTER\r
437TTOCFL, 0 / IF SET, MAKE CONTROL CHARACTER\r
438TTOLFL, 0 / IF SET, MAKE LOWER CASE CHARACTER\r
439TTOPFL, 0 / IF SET, CHAR. IS PARAMETER NUMBER\r
440TTODFL, 0 / IF NONZERO, CHARACTER IS DEVICE CODE\r
441TTOTFL, 0 / IF SET, BUFFER IS ALSO TERM. BY , AND ;\r
442 / NUMBER FLAG, ASSAMBLED TO -2\r
443 / IF -1, CHAR. IS MULTIPLIER\r
444TTONFL, TEXT /?>/ / NORMAL -2, IF -1 CHAR. IS MULTIPLIER\r
445TTOEFL=TTONFL+1 / END FLAG:\r
446 / NORMAL ZERO, TERMINATOR IS ZERO BYTE\r
447 / OR WORD. WITH PAL8 /F-OPTION, FLAG IS\r
448 / NONZERO AND BUFFER MUST BE TERMINATED\r
449/ / WITH ZERO WORD\r
450 TEXT /A/\r
451\r
452 PAGE\r
453\f / " OPTION: MACRO CALL WITH PARAMETER\r
454\r
455TTOC2, TAD TTOOUT / CHANGE OUTPUT ROUTINE\r
456 DCA TTOMOS\r
457 TAD (TTOM\r
458 DCA TTOOUT\r
459\r
460 CLA CMA\r
461 DCA TTOMFE / FLAG FIRST ENTRY\r
462 JMP TTOB2\r
463\r
464TTOM, 0 / PROCEED MACRO CALL\r
465 DCA TTOMSV / SAVE CHAR.\r
466 ISZ TTOMFE / FIRST ENTRY ?\r
467TTOM1, HLT / NO: GETS A JMP\r
468 DCA TTOMPT\r
469 TAD (JMP TTOM2\r
470 DCA TTOM1 / SET JMP\r
471\r
472TTOM2, TAD TTOMSV\r
473 TAD (-333\r
474 SNA / CHAR = [ ?\r
475 JMP TTOM4 / YES:\r
476 TAD (-2\r
477 SNA / CHAR = ] ?\r
478 JMP TTOM3 / YES: END OF MACRO CALL\r
479\r
480 CLA CLL\r
481 TAD TTOMPT / CALCULATE SUM = 2*SUM+(CHAR-270)\r
482 SZA\r
483 TAD (-270\r
484 CLL\r
485 RAL\r
486 TAD TTOMSV\r
487 DCA TTOMPT\r
488 JMP I TTOM\r
489\r
490TTOM3, ISZ TTOMEF / MACRO DEFINED, NO PARAMETER\r
491TTOM4, CLA / MACRO WITH PARAMETER\r
492 TAD TTOMPT\r
493 DCA TTOMER / STORE IN LIST FOR TERMINATION\r
494 TAD (TTOMAC / GET START OF MACRO LIST\r
495 DCA TTOMSV / USED AS POINTER\r
496 TAD TTOMPT\r
497 CIA\r
498 DCA TTOMPT\r
499\r
500TTOM5, TAD I TTOMSV / GET MACRO NAME FROM LIST\r
501 TAD TTOMPT / ADD MINUS SUM\r
502 SNA CLA / MATCH FOUND ?\r
503 JMP TTOM6 / YES:\r
504 CLA CLL CML IAC RAL / NO: INCREMENT POINTER BY 3\r
505 TAD TTOMSV\r
506 DCA TTOMSV\r
507 JMP TTOM5\r
508\r
509TTOM6, ISZ TTOMSV / MACRO FOUND\r
510 TAD I TTOMSV\r
511 DCA TTOCPT / GET POINTER\r
512 ISZ TTOMSV\r
513 TAD I TTOMSV\r
514 AND (70\r
515 TAD (6201\r
516 DCA TTOCFD / GET FIELD\r
517 DCA TTOCBF / BYTE FLAG ZERO\r
518\r
519 TAD TTOMEF\r
520 SZA CLA / PARAMETER DEFINED ?\r
521 JMP TTOMX / NO: EXIT\r
522\r
523 TAD (JMP TTOM7 / YES: READ PARAMETER\r
524 DCA TTOM1 / SET NEW ENTRY\r
525 TAD (TTOPLS\r
526 DCA TTOMPT / PARAMETER LIST POINTER\r
527 JMP TTOM10 / SAVE FIRST PARAMETER\r
528\r
529TTOM7, TAD TTOMSV\r
530 TAD (-333\r
531 SNA / CHAR = [ ?\r
532 JMP TTOM10 / YES: END OF PARAMETER\r
533 TAD (-2\r
534 SNA CLA / CHAR = ] ?\r
535 JMP TTOMX / YES: END OF MACRO CALL\r
536 JMP I TTOM / CONTINUE\r
537\r
538TTOM10, TAD TTOFLD / SAVE PARAMETER POINTER\r
539 AND (70\r
540 TAD TTOBFL\r
541 DCA I TTOMPT\r
542 ISZ TTOMPT\r
543 TAD TTOPNT\r
544 DCA I TTOMPT\r
545 ISZ TTOMPT\r
546 JMP I TTOM / CONTINUE\r
547\r
548\r
549TTOMX, TAD TTOMOS / RESET OUTPUT ROUTINE\r
550 DCA TTOOUT\r
551 DCA TTOMEF / CLEAR END FLAG\r
552 JMP TTOBEX / EXIT\r
553\r
554TTOMSV, 0\r
555TTOMPT, 0 / POINTER AND CHARACTER SUM\r
556TTOMOS, 0 / SAVE OUTPUT POINTER\r
557TTOMFE, 0 / FIRST ENTRY FLAG\r
558TTOMEF, 0 / END FLAG, SET IF ; IS FOUND\r
559\r
560TTOPLS, 0 / PARAMETER LIST\r
561 .+1\r
562 ZBLOCK 20\r
563\r
564 PAGE\r
565\f\r
566 / ' OPTION: PARAMETER CALL\r
567\r
568TTOC7, CLA IAC / SET FLAG\r
569 DCA TTOPFL\r
570 JMP TTOB2\r
571\r
572TTOC7A, CLA CMA / DECREMENT NUMBER\r
573 TAD TTOSV / CALCULATE POINTER TO PARAMETER\r
574 CLL\r
575 RAL\r
576 AND (17\r
577 TAD (TTOPLS\r
578 DCA TTOC7P\r
579 TAD I TTOC7P\r
580 AND (1\r
581 DCA TTOCBF / BYTE FLAG\r
582 TAD I TTOC7P\r
583 AND (70\r
584 TAD (6201\r
585 DCA TTOCFD / FIELD\r
586 ISZ TTOC7P\r
587 TAD I TTOC7P\r
588 DCA TTOCPT / POINTER\r
589 DCA TTOPFL / CLEAR PARAMETER FLAG\r
590 ISZ TTOTFL / SET TERMINATOR FLAG\r
591 JMP TTOBEX / EXIT SUBR. TTOB\r
592\r
593TTOC7P, 0 / POINTER\r
594\r
595TTOCPT, 0 / PARAMETER MACRO POINTER\r
596TTOCBF, 0 / PARAMETER MACRO BYTE FLAG\r
597TTOCFD, 0 / PARAMETER MACRO FIELD\r
598\f/ TCI.PA\r
599/\r
600/ TTY CONTROL INPUT\r
601/\r
602/ SCANS CHARACTERS FROM TABLE TO FIND MATCH WITH\r
603/ INPUT CHARACTERS FROM TTY. IF A MATCH IS FOUND,\r
604/ EXIT WITH POINTER TO SUBROUTINE IN AC.\r
605/ MAY BE USED FOR COMMANDS WITH MORE THAN ONE\r
606/ CHARACTER, IN THIS CASE ALL INPUT COMBINATIONS\r
607/ MUST BE FOUND IN TABLE AND THE FOLLOWING POINTER\r
608/ TO SUBROUTINE MUST BE ZERO TO PREVENT EXIT\r
609/ BEFORE ALL NEEDED CHARACTERS ARE READ. THE LAST\r
610/ ZERO LOCATION TERMINATES THE TABLE.\r
611/\r
612/ EXAMPLE: COMMAND 'ABC' CALLS ROUTINE 'SUBR'\r
613/\r
614/ TCITAB, "A / TABLE START\r
615/ 0 / NO EXIT, CONTINUE\r
616/ "A+"A+"B / PREV.CHAR. * 2\r
617/ 0\r
618/ "A+"A+"A+"A+"B+"B+"C\r
619/ SUBR / COMMAND COMPLETE\r
620/ 0 / TERMINATOR\r
621/\r
622/ ENTRY: AC = POINTER TO TABLE\r
623/ EXIT: AC = START OF SUBROUTINE FROM TABLE\r
624/\r
625/ SUBRS: TRI,TCO\r
626/\r
627/ 05-APR-84 REV 0.0 KJ.S.\r
628/ 06-APR-84 REV 0.1 KJ.S. SUBROUTINE\r
629/ 07-APR-84 REV 0.2 KJ.S. ECHO PRINT-CHAR. ONLY\r
630/ 09-APR-84 REV 0.3 KJ.S. LOCATIONS RENAMED\r
631/ 02-MAY-84 REV 0.4 KJ.S. CHAR. IN/OUT CHANGED\r
632/ 13-FEB-85 REV 0.5 KJ.S. ERROR HANDLING CHANGED\r
633/ 04-FEB-86 REV 0.6 KJ.S. ERASE INPUT LINE AFTER ERROR\r
634/ 13-FEB-86 REV 0.7 KJ.S. ERASE CHARCTERS ONLY\r
635/\r
636\r
637\r
638TCI, 0\r
639 DCA TCITAB / SAVE TABLE-POINTER\r
640TCIA, DCA TCICS / CLEAR SUM OF CHARACTERS\r
641 DCA TCICN / CLEAR INPUT COUNT\r
642TCIB, CLA CLL / NEW CHARACTER\r
643 JMS TRI / GET NEXT CHARACTER\r
644 DCA TCICI / SAVE CHAR\r
645 CLA CLL\r
646 TAD TCICS\r
647 RAL / SUM *2\r
648 TAD TCICI / ADD CHAR\r
649 DCA TCICS\r
650 TAD TCICS\r
651 CIA\r
652 DCA TCICSM / COMPLEMENT OF SUM\r
653\r
654 TAD TCITAB / GET POINTER\r
655 DCA TCIPNT\r
656TCIC, TAD I TCIPNT / GET CHAR FROM TABLE\r
657 SNA / ZERO ?\r
658 JMP TCIER / YES: END OF TABLE, INPUT ERROR\r
659 TAD TCICSM\r
660 ISZ TCIPNT / POINTS TO SUBROUTINE\r
661 SNA CLA / CHARACTER MATCH ?\r
662 JMP TCID / YES:\r
663 ISZ TCIPNT / NO: NEXT CHAR\r
664 JMP TCIC\r
665\r
666TCID, TAD TCICI\r
667 TAD (-240\r
668 SPA / CHAR.GE.240 ?\r
669 JMP TCIE / NO: NO ECHO\r
670 TAD (-100\r
671 SMA / CHAR.LT.340 ?\r
672 JMP TCIE / NO: NO ECHO\r
673 CLA / YES: ECHO CHAR\r
674 TAD TCICI\r
675 JMS TCO / ECHO\r
676 ISZ TCICN / COUNT OUTPUT\r
677TCIE, CLA\r
678 TAD I TCIPNT / GET SUBROUTINE START\r
679 SNA / SUBROUTINE DEFINED ?\r
680 JMP TCIB / NO: READ NEXT CHAR\r
681 JMP I TCI / YES: EXIT\r
682\r
683TCIER, CLA / INPUT ERROR\r
684 TAD (207\r
685 JMS TCO\r
686 TAD TCICN / ERASE INPUT\r
687 SNA / ANY OUTPUT ?\r
688 JMP TCIA / NO:\r
689 CIA / YES: ERASE\r
690 DCA TCICN\r
691 TAD (210 / BACKSPACE\r
692 JMS TCO\r
693 TAD (240 / SPACE\r
694 JMS TCO\r
695 TAD (210 / BACKSPACE\r
696 JMS TCO\r
697 ISZ TCICN / DONE\r
698 JMP .-7 / NO:\r
699 JMP TCIA / YES: NEW INPUT\r
700\r
701TCIPNT, 0\r
702TCICI, 0 / INPUT CHARACTER\r
703TCICS, 0 / SUM OF CHARACTERS\r
704TCICSM, 0 / MINUS SUM OF CHARACTERS\r
705TCITAB, 0 / POINTER TO TABLE\r
706TCICN, 0 / INPUT COUNT\r
707\f/ TFI.PA\r
708/\r
709/ TTY FLOATING INPUT\r
710/\r
711/ READS FLOATING NUMBER FROM TELETYPE\r
712/\r
713/ ENTRY: AC = POINTER TO FLOATING INPUT NUMBER\r
714/ EXIT: AC = INPUT TERMINATOR\r
715/\r
716/ SUBR: 27BFPP.BN\r
717/\r
718/ 09-APR-84 REV 0.0 KJ.S.\r
719/ 10-APR-84 REV 0.1 KJ.S.\r
720/ 02-MAY-84 REV 0.2 KJ.S. COSMETIC\r
721/ 03-FEB-85 REV 0.3 KJ.S. FFP INSTRUCTIONS DEFINED\r
722/\r
723\r
724TFI, 0\r
725 DCA TFIPT / SAVE POINTER\r
726 CLA CMA\r
727 DCA 54 / LF AFTER RETURN\r
728 JMS I 7 / ENTER 27BFPP\r
729 TFIN\r
730 TFPUT I TFIPT / STORE\r
731 TFEXT\r
732 CLA\r
733 TAD 53\r
734 JMP I TFI\r
735\r
736TFIPT, 0\r
737\f/ TFR.PA\r
738/\r
739/ TTY FLOATING INPUT TERMINATED WITH 'RETURN'\r
740/\r
741/ READS FLOATING NUMBER FROM TELETYPE\r
742/\r
743/ ENTRY: AC = POINTER TO FLOATING NUMBER\r
744/ EXIT: ERROR, WRONG TERMINATOR\r
745/ EXIT+1: AC=0\r
746/\r
747/ SUBR: TFI,27BFPP\r
748/\r
749/ 15-OCT-84 REV 0.0 KJ.S.\r
750/\r
751\r
752TFR, 0\r
753 JMS TFI / GET NUMBER\r
754 TAD (-215\r
755 SNA CLA / TERMINATOR RT=215 ?\r
756 ISZ TFR / YES: NORMAL EXIT\r
757 JMP I TFR / NO: ERROR EXIT\r
758\r
759 PAGE\r
760\f/ TRI.PA\r
761/\r
762/ TTY READ INPUT\r
763/\r
764/ READS CHARACTER FROM TTY\r
765/\r
766/ ENTRY: AC = NO CARE\r
767/ EXIT: AC = CHARACTER\r
768/\r
769/ SUBRS: NONE\r
770/\r
771/ 02-MAY-84 REV 0.0 KJ.S.\r
772/ 18-OCT-84 REV 0.1 KJ.S. HARDWARE INDEPENDENT\r
773/ 03-FEB-85 REV 0.2 KJ.S. BUG REMOVED\r
774/\r
775\r
776TRI, 0\r
777 CLA\r
778TIKSF, KSF\r
779 JMP .-1\r
780TIKRB, KRB\r
781 AND (177\r
782 TAD (200\r
783 JMP I TRI\r
784\f/ TIDC.PA\r
785/\r
786/ CHANGE SERIAL INPUT DEVICE CODE\r
787/\r
788/ ENTRY: AC = XNNX NN = DEV.CODE\r
789/ EXIT: AC = 0\r
790/\r
791/ SUBR: LOCATINONS IN TRI ARE CHANGED\r
792/\r
793/ 18-OCT-84 REV 0.0 KJ.S.\r
794/ 03-FEB-85 REV 0.1 KJ.S. BUG REMOVED\r
795/\r
796\r
797TIDC, 0\r
798 AND (770\r
799 DCA TIDCSV\r
800 TAD (6001\r
801 TAD TIDCSV\r
802 DCA TIKSF\r
803 TAD (6006\r
804 TAD TIDCSV\r
805 DCA TIKRB\r
806 JMP I TIDC\r
807\r
808TIDCSV, 0\r
809\f/ TTI.PA\r
810/\r
811/ TELETYPE TEXT INPUT\r
812/\r
813/ READS INPUT FROM TTY AND STORES 2 CHARACTERS/WORD\r
814/ INTO TEXT BUFFER. ACCEPTS ONLY PRINTABLE CHARACTERS.\r
815/ ALL OTHER INPUT AND CHARACTERS AFTER BUFFER-OVERFLOW\r
816/ IS ECHED AS 'BELL'. THE INPUT TERMINATOR IS NOT\r
817/ ECHOED.\r
818/\r
819/ ENTRY: AC = TERMINATOR, 0 = CR\r
820/ ARG1 POINTER TO TEXT BUFFER\r
821/ ARG2 LENGTH OF TEXT BUFFER (WORDS)\r
822/ EXIT: AC = 0\r
823/\r
824/ SUBR TRI,TCO\r
825/\r
826/ 16-JUL-84 REV 0.0 KJ.S.\r
827/ 22-JUL-84 REV 0.1 KJ.S. SOME BUGS REMOVED\r
828/ 23-JUL-84 REV 0.2 KJ.S. BUG AFTER 'DEL' REM.\r
829/\r
830\r
831TTI, 0\r
832 SNA / AC = TERMINATOR\r
833 TAD (215 / AC = 0 TERMINATOR = CR\r
834 AND (377\r
835 CIA\r
836 DCA TTITM / SAVE\r
837 TAD I TTI / GET ARG1 = BUFFER POINTER\r
838 DCA TTIBPT\r
839 ISZ TTI\r
840 CLA CLL\r
841 TAD I TTI / GET ARG2 = BUFFER LENGTH\r
842 RAL\r
843 CIA\r
844 IAC\r
845 DCA TTIBLN / = - BUFFER LENGTH * 2 + 1\r
846 ISZ TTI\r
847 DCA TTICNT / CLEAR CHARACTER COUNTER\r
848 DCA TTIXF / CLEAR EXIT FLAG\r
849\r
850TTI1, JMS TRI / READ INPUT\r
851 DCA TTICH\r
852\r
853 TAD TTICH\r
854 TAD TTITM\r
855 SZA CLA / TERMINATOR ?\r
856 JMP TTI2 / NO:\r
857 ISZ TTIXF / YES: SET EXIT FLAG\r
858 DCA TTICH / PUT 'ZERO' INTO BUFFER\r
859 JMP TTI3\r
860\r
861TTI2, TAD TTICH / CHECK INPUT\r
862 TAD (-240\r
863 SPA / CHAR.GE.240 ?\r
864 JMP TTI10 / NO: CONTROL CHAR\r
865 TAD (-100\r
866 SMA CLA / CHAR.LT.340 ?\r
867 JMP TTI10 / N0: CONTROL CHAR\r
868\r
869 TAD TTICNT / CHECK FOR BUFFER OVERFLOW\r
870 TAD TTIBLN\r
871 SMA CLA / COUNTER.LT.BUFFER*2 ?\r
872 JMP TTI10 / NO: BUFFER OVERFLOW\r
873\r
874 TAD TTICH / ECHO\r
875 JMS TCO\r
876 TAD TTICH / MAKE 6-BIT-ASCII\r
877 AND (77\r
878 DCA TTICH\r
879\r
880TTI3, CLA CLL\r
881 TAD TTICNT / CALCULATE BUFFER POINTER\r
882 RAR\r
883 TAD TTIBPT\r
884 DCA TTIPNT\r
885\r
886 SZL / LINK=MSB OF TTICNT.EQ.0 ?\r
887 JMP TTI4 / N0: 2. BYTE OF WORD\r
888 TAD TTICH / YES: 1. BYTE\r
889 BSW\r
890 JMP TTI5\r
891TTI4, TAD I TTIPNT / ADD 1.BYTE\r
892 AND (7700\r
893 TAD TTICH\r
894TTI5, DCA I TTIPNT / STORE IN BUFFER\r
895 ISZ TTICNT / INCREMENT COUNTER\r
896\r
897 TAD TTIXF\r
898 SNA CLA / EXIT ?\r
899 JMP TTI1 / NO: GET NEXT CHARACTER\r
900 JMP I TTI / YES:\r
901\r
902TTI10, CLA CLL / INPUT IS A CONTROL CHARACTER\r
903 TAD TTICH\r
904 TAD (-377\r
905 SNA CLA / CHAR.EQ.DEL ?\r
906 JMP TTI12 / YES:\r
907TTI11, TAD (207 / NO: ILLEGAL INPUT\r
908 JMS TCO / ECHO BELL\r
909 JMP TTI1 / CONTINUE\r
910\r
911TTI12, TAD TTICNT\r
912 SNA / BUFFER EMPTY ?\r
913 JMP TTI11 / YES:\r
914 TAD (-1 / NO: DECREMENT\r
915 DCA TTICNT\r
916 TAD (210 / BACKSPACE\r
917 JMS TCO\r
918 TAD (240\r
919 JMS TCO\r
920 TAD (210\r
921 JMS TCO\r
922 JMP TTI1\r
923\r
924\r
925TTITM, 0 / MINUS INPUT TERMINATOR\r
926TTIBPT, 0 / BUFFER START POINTER\r
927TTIBLN, 0 / MINUS LENGTH OF BUFFER\r
928TTIPNT, 0 / CURRENT BUFFER POINTER\r
929TTICNT, 0 / CURRENT LENGTH COUNTER\r
930TTISWD, 0 / INPUT CONTROL FLAG\r
931TTICH, 0 / LAST INPUT CHAR\r
932TTIXF, 0 / EXIT FLAG\r
933\r
934 PAGE\r
935\f/ TDO.PA\r
936/\r
937/ TYPES DECIMAL INTEGERS WITH DIFFERENT FORMATS\r
938/\r
939/ ENTRY: AC = NUMBER TO BE TYPED\r
940/ ARG1 BIT 0 IF SET, TYPE SIGNED OUTPUT\r
941/ BIT 1 IF SET, FILL FORMAT WITH ZEROS\r
942/ UNSIGNED OUTPUT ONLY, BIT 0 IGNORED\r
943/ BIT 6-11 OUTPUT FIELD WIDTH. IF ZERO,\r
944/ NO LEADING ZEROS OR SPACES\r
945/ EXIT: AC = 0\r
946/\r
947/ SUBR: TIO,TCO\r
948/\r
949/\r
950/ 19-OCT-84 REV 0.0 KJ.S.\r
951/\r
952\r
953TDO, 0\r
954 DCA TION0 / SAVE NUMBER\r
955 TAD I TDO\r
956 ISZ TDO\r
957 DCA TIOFL / SAVE FLAG\r
958 TAD TDOTST / POINTER TO HEXADECIMAL TABLE\r
959 JMS TDOHO / PROCEED\r
960 JMP I TDO\r
961\r
962TDOTST, .+1 / TABLE OF DECIMAL VALUES\r
963 140 / -4000\r
964 4060 / -2000\r
965 6030 / -1000\r
966 6340 / -800\r
967 7160 / -400\r
968 7470 / -200\r
969 7634 / -100\r
970 7660 / -80\r
971 7730 / -40\r
972 7754 / -20\r
973 7766 / -10\r
974\f/ TOO.PA\r
975/\r
976/ TYPES OCTAL INTEGERS WITH DIFFERENT FORMATS\r
977/\r
978/ ENTRY: AC = NUMBER TO BE TYPED\r
979/ ARG1 BIT 0 IF SET, TYPE SIGNED OUTPUT\r
980/ BIT 1 IF SET, FILL FORMAT WITH ZEROS\r
981/ UNSIGNED OUTPUT ONLY, BIT 0 IGNORED\r
982/ BIT 6-11 OUTPUT FIELD WIDTH. IF ZERO,\r
983/ NO LEADING ZEROS OR SPACES\r
984/ EXIT: AC = 0\r
985/\r
986/ SUBR: TIO,TCO\r
987/\r
988/\r
989/ 18-OCT-84 REV 0.0 KJ.S.\r
990/ 18-OCT-84 REV 0.1 KJ.S. SOME BUGS REMOVED\r
991/ 19-OCT-84 REV 1.0 KJ.S. USING SUBR. TIO\r
992/\r
993\r
994TOO, 0\r
995 DCA TION0 / SAVE NUMBER\r
996 TAD I TOO\r
997 ISZ TOO\r
998 DCA TIOFL / SAVE FLAG\r
999 TAD TOOTST / POINTER TO OCTAL TABLE\r
1000 JMS TDOHO / PROCEED\r
1001 JMP I TOO\r
1002\r
1003TOOTST, .+1 / TABLE OF OCTAL VALUES\r
1004 4000\r
1005 6000\r
1006 7000\r
1007 0000\r
1008 7400\r
1009 7600\r
1010 7700\r
1011 0000\r
1012 7740\r
1013 7760\r
1014 7770\r
1015\f/ THO.PA\r
1016/\r
1017/ TYPES HEXADECIMAL INTEGERS WITH DIFFERENT FORMATS\r
1018/\r
1019/ ENTRY: AC = NUMBER TO BE TYPED\r
1020/ ARG1 BIT 0 IF SET, TYPE SIGNED OUTPUT\r
1021/ BIT 1 IF SET, FILL FORMAT WITH ZEROS\r
1022/ UNSIGNED OUTPUT ONLY, BIT 0 IGNORED\r
1023/ BIT 6-11 OUTPUT FIELD WIDTH. IF ZERO,\r
1024/ NO LEADING ZEROS OR SPACES\r
1025/ EXIT: AC = 0\r
1026/\r
1027/ SUBR: TIO,TCO\r
1028/\r
1029/\r
1030/ 19-OCT-84 REV 0.0 KJ.S.\r
1031/\r
1032\r
1033THO, 0\r
1034 DCA TION0 / SAVE NUMBER\r
1035 TAD I THO\r
1036 ISZ THO\r
1037 DCA TIOFL / SAVE FLAG\r
1038 TAD THOTST / POINTER TO DECIMAL TABLE\r
1039 JMS TDOHO / PROCEED\r
1040 JMP I THO\r
1041\r
1042THOTST, .+1 / TABLE OF HEXADECIMAL VALUES\r
1043 0000\r
1044 0000\r
1045 0000\r
1046 4000\r
1047 6000\r
1048 7000\r
1049 7400\r
1050 7600\r
1051 7700\r
1052 7740\r
1053 7760\r
1054\f/ TCR CARRIAGE RETURN\r
1055/\r
1056/ MOVES CURSOR TO THE BEGINNING OF THE\r
1057/ PRESENT LINE\r
1058/\r
1059/ ENTRY: AC = NO CARE\r
1060/ EXIT: AC = 0\r
1061/\r
1062/ 10-APR-84 REV 0.0 KJ.S.\r
1063/\r
1064\r
1065TCR, 0\r
1066 CLA\r
1067 TAD (215\r
1068 JMS TCO / OUTPUT\r
1069 CLA\r
1070 JMP I TCR\r
1071\r
1072\f/ TNL NEW LINE\r
1073/\r
1074/ POSITIONS CURSOR TO BEGINNING\r
1075/ OF NEXT LINE\r
1076/\r
1077/ ENTRY: AC = NO CARE\r
1078/ EXIT: AC = 0\r
1079/\r
1080/ 10-APR-84 REV 0.0 KJ.S.\r
1081/\r
1082\r
1083TNL, 0\r
1084 JMS TCR\r
1085 TAD (212\r
1086 JMS TCO / LF\r
1087 JMP I TNL\r
1088\f\r
1089TIOF, 0 / SUBROUTINE TO CHECK OUTPUT\r
1090 AND (17 / FORMAT AND TYPE\r
1091 DCA TIOPT / STORE\r
1092 ISZ TIOCT / INCREMENT DIGIT COUNTER\r
1093\r
1094 TAD TIOZF\r
1095 SZA CLA / ZERO FLAG = 0 ?\r
1096 JMP TIOF2 / NO: TYPE DIGIT\r
1097 TAD TIOPT / YES:\r
1098 SZA CLA / DIGIT = 0 ?\r
1099 JMP TIOF1 / NO:\r
1100 TAD TIOFL / YES:\r
1101 SNA CLA / FIELD WIDTH = 0 ?\r
1102 JMP I TIOF / YES: EXIT\r
1103 TAD TIOFL\r
1104 TAD TIOCT\r
1105 SPA CLA / FILL CHAR WITHIN FIELD ?\r
1106 JMP I TIOF / NO: EXIT\r
1107 TAD TIOFC / YES: TYPE FILL CHARACTER\r
1108 JMP TIOF4\r
1109\r
1110TIOF1, TAD TIOFL\r
1111 SNA / FIELD WIDTH = 0 ?\r
1112 JMP TIOF2 / YES: NO FIXED FIELD WIDTH\r
1113 TAD TIOCT / NO:\r
1114 SPA CLA / DIGIT WITHIN FIELD ?\r
1115 JMP TIOER / NO: FIELD WIDTH TOO SMALL\r
1116TIOF2, ISZ TIOZF / SET ZERO FLAG\r
1117 TAD TIOSG\r
1118 SNA CLA / SIGN NEEDED ?\r
1119 JMP TIOF3 / NO:\r
1120 DCA TIOSG / CLEAR SIGN FLAG\r
1121 TAD ("- / YES: TYPE IT\r
1122 JMS TCO\r
1123TIOF3, TAD TIOPT / TYPE DIGIT\r
1124 TAD (-12\r
1125 SMA / HEX - CHAR. ?\r
1126 TAD (7 / YES: MAKE A LETTER\r
1127 TAD (272 / NO: MAKE NUMBER\r
1128TIOF4, JMS TCO\r
1129 JMP I TIOF / EXIT\r
1130\r
1131 PAGE\r
1132\f / SUBROUTINE FOR TDO,TOO,THO\r
1133 / TION0 AND TIOFL MUST BE SET\r
1134\r
1135TDOHO, 0\r
1136 DCA TIOPT / AC = TABLE POINTER\r
1137 DCA TIOSG / CLEAR SIGN FLAG\r
1138 TAD (240\r
1139 DCA TIOFC / FILL CHAR = SPACE\r
1140 TAD TIOFL\r
1141 AND (2000\r
1142 SNA CLA / FILL CHAR = ZERO ?\r
1143 JMP TIOA / NO:\r
1144 TAD (260 / YES:\r
1145 DCA TIOFC\r
1146 JMP TIOB / NO SIGN OPTION\r
1147\r
1148TIOA, TAD TIOFL\r
1149 SMA CLA / SIGNED OUTPUT ?\r
1150 JMP TIOB / NO:\r
1151 TAD TION0 / YES: COMPLEMENT NEGATIV NUMBER\r
1152 SMA / NEGATIV NUMBER ?\r
1153 JMP TIOB / NO:\r
1154 CIA / YES: COMPLEMENT\r
1155 DCA TION0\r
1156 ISZ TIOSG / SET SIGN FLAG\r
1157\r
1158TIOB, CLA\r
1159 TAD TIOFL\r
1160 AND (77 / GET FIELD WIDTH\r
1161 DCA TIOFL / CLEAR UNUSED BITS\r
1162 TAD TIOFL\r
1163 SNA / FIELD WIDTH ZERO ?\r
1164 JMP TIOD / YES:\r
1165 CIA / NO: COMPLEMENT\r
1166 TAD TIOSG / TAKE SIGN INTO ACCOUNT\r
1167 TAD (4 / MAX 4 DIGIT\r
1168 SMA / FILL CHARACTER NEEDED ?\r
1169 JMP TIOD / NO:\r
1170 DCA TIOCT / YES: -# OF SPACE TO FILL FORMAT\r
1171\r
1172TIOC, TAD TIOFC / TYPE\r
1173 JMS TCO\r
1174 ISZ TIOCT\r
1175 JMP TIOC\r
1176\r
1177TIOD, CLA\r
1178 TAD (-13 / # OF SUBTRACTIONS\r
1179 DCA TIOCT / TO COUNTER\r
1180 DCA TION1\r
1181\r
1182TIOE, CLA CLL / SUCCESSIV SUBTRACTIONS OF\r
1183 TAD TION0 / DECIMAL VALUES FROM TABLE\r
1184 TAD I TIOPT / SUBTRACTION\r
1185 SZL / CARRY ?\r
1186 DCA TION0 / YES, NEW VALUE\r
1187 CLA\r
1188 TAD TION1 / RESULT IN LINK\r
1189 RAL\r
1190 DCA TION1 / SHIFTED INTO TION1\r
1191 ISZ TIOPT / INCREMENT POINTER\r
1192 ISZ TIOCT / DONE ?\r
1193 JMP TIOE / NO, CONTINUE\r
1194\r
1195 DCA TIOZF / CLEAR LEADING ZERO FLAG\r
1196\r
1197 TAD TIOSG\r
1198 CIA\r
1199 TAD (-5\r
1200 DCA TIOCT / SET DIGIT COUNTER, 4 DIGITS + SIGN\r
1201\r
1202 TAD TION1 / 1. DIGIT\r
1203 BSW\r
1204 RTR\r
1205 JMS TIOF\r
1206\r
1207 TAD TION1 / 2. DIGIT\r
1208 RTR\r
1209 RTR\r
1210 JMS TIOF\r
1211\r
1212 TAD TION1 / 3. DIGIT\r
1213 JMS TIOF\r
1214\r
1215 ISZ TIOZF / 4. DIGIT ALWAYS TYPED\r
1216 TAD TION0 \r
1217 JMS TIOF\r
1218\r
1219 JMP I TDOHO\r
1220\r
1221TIOER, TAD TIOFL / ERROR, FILL FORMAT WITH ****\r
1222 CIA\r
1223 DCA TIOCT\r
1224 TAD ("*\r
1225 JMS TCO / TYPE CHARACTER\r
1226 ISZ TIOCT\r
1227 JMP .-4\r
1228 CLA\r
1229 JMP I TDOHO / EXIT MAIN SUBROUTINE\r
1230\r
1231TION0, 0 / GETS LSD\r
1232TION1, 0 / GETS 3 MSD\r
1233TIOPT, 0 / POINTER\r
1234TIOCT, 0 / COUNTER\r
1235TIOFL, 0 / FLAGS\r
1236TIOSG, 0 / SIGN FLAG\r
1237TIOZF, 0 / ZERO SUPPRESS FLAG\r
1238TIOFC, 0 / FILL CHARACTER\r
1239\f/ TSO STRING OUTPUT\r
1240/\r
1241/ TYPES A STRING OF ASCII - CHARACTERS\r
1242/ BUFFER CONTAINS ONE CHARACTER PER\r
1243/ WORD AND MUST BE TERMINATED BY 0\r
1244/\r
1245/ ENTRY: AC = POINTER TO BUFFER\r
1246/ EXIT: AC = 0\r
1247/\r
1248/ 10-APR-84 REV 0.0 KJ.S.\r
1249/\r
1250\r
1251TSO, 0\r
1252 DCA TSOPT / BUFFER POINTER\r
1253TSOA, TAD I TSOPT / GET CHARACTER\r
1254 SNA / CHARACTER.EQ.0 ?\r
1255 JMP I TSO / YES: EXIT\r
1256 JMS TCO / NO: PRINT\r
1257 ISZ TSOPT\r
1258 JMP TSOA\r
1259 JMP TSOA\r
1260\r
1261TSOPT, 0\r
1262\f/ FPP ERROR OUTPUT\r
1263/\r
1264/ ENTER THIS SUBROUTINE VIA 'JMS I 7'\r
1265/ IF NO FPP IS LOADED AND EXIT TO OS/8\r
1266/\r
1267/ SUBR: TTO\r
1268/\r
1269/ 03-FEB-85 REV 0.0 KJ.S.\r
1270/\r
1271\r
1272TFPPER, 0\r
1273 CLA\r
1274 TAD (TFPPET\r
1275 JMS TTO\r
1276 JMP I (7600\r
1277\r
1278TFPPET, TEXT /NO FPP !/;0\r
1279\r
1280 PAGE\r
1281\f/ TCO CHARACTER OUTPUT\r
1282/\r
1283/ TYPES ONE ASCII-CHARACTER CALLING\r
1284/ CP-ROUTINE, RESPONS TO CTRL/S - CTRL/Q\r
1285/\r
1286/ ENTRY: AC = CHARACTER\r
1287/ EXIT: AC = 0 LINK UNCHANGED\r
1288/\r
1289/ 10-APR-84 REV 0.0 KJ.S.\r
1290/ 18-OCT-84 REV 0.1 KJ.S. HARDWARE INDEPENDENT\r
1291/ 18-OCT-84 REV 0.2 KJ.S. LINK PRESERVED\r
1292/\r
1293\r
1294TCO, 0\r
1295 DCA TCOSV / SAVE CHAR\r
1296 JMS TOKSF / CHECK XON/XOFF\r
1297 JMP TCO2\r
1298 JMS TOKRB\r
1299 AND (177\r
1300 TAD (7755\r
1301 SZA CLA / CTRL/S ?\r
1302 JMP TCO2 / NO:\r
1303TCO1, CLA / YES: WAITING FOR CTRL/Q\r
1304 JMS TOKSF\r
1305 JMP .-1\r
1306 JMS TOKRB\r
1307 AND (177\r
1308 TAD (7757\r
1309 SZA CLA / CTRL/Q ?\r
1310 JMP TCO1 / NO: WAIT\r
1311TCO2, TAD TCOSV / YES: TYPE CHARACTER\r
1312 JMS TOTLS\r
1313 JMS TOTSF\r
1314 JMP .-1\r
1315 CLA\r
1316 JMP I TCO\r
1317\r
1318TCOSV, 0\r
1319\r
1320/ SUBROUTINES WITH I/O INSTRUCTIONS\r
1321/ DEVICE-CODE CAN BE SET BY TODC\r
1322\r
1323TOKSF, 0\r
1324 KSF\r
1325 SKP\r
1326 ISZ TOKSF\r
1327 JMP I TOKSF\r
1328TOKRB, 0\r
1329 KRB\r
1330 JMP I TOKRB\r
1331TOTSF, 0\r
1332 TSF\r
1333 SKP\r
1334 ISZ TOTSF\r
1335 JMP I TOTSF\r
1336TOTLS, 0\r
1337 TLS\r
1338 JMP I TOTLS\r
1339\f/ TODC.PA\r
1340/\r
1341/ CHANGE SERIAL OUTPUT DEVICE AND THE CORRESPONDING\r
1342/ INPUT DEVICE FOR XON/XOFF PROTOCOL\r
1343/\r
1344/ ENTRY: AC = XNNX NN = OUTPUT, NN-1 = INPUT DEVICE\r
1345/ EXIT: AC = 0\r
1346/\r
1347/ 18-OCT-84 REV 0.0 KJ.S.\r
1348/\r
1349\r
1350TODC, 0\r
1351 AND (770\r
1352 DCA TODCSV\r
1353 TAD (6001\r
1354 TAD TODCSV\r
1355 DCA TOTSF+1\r
1356 TAD (6006\r
1357 TAD TODCSV\r
1358 DCA TOTLS+1\r
1359 TAD (-10 / CHANGE INPUT\r
1360 TAD TODCSV\r
1361 DCA TODCSV\r
1362 TAD (6001\r
1363 TAD TODCSV\r
1364 DCA TOKSF+1\r
1365 TAD (6006\r
1366 TAD TODCSV\r
1367 DCA TOKRB+1\r
1368 JMP I TODC\r
1369\r
1370TODCSV, 0\r
1371\f/ TFO FLOATING OUTPUT\r
1372/\r
1373/ TYPES FLOATING NUMBER IN E- AND F-FORMAT\r
1374/\r
1375/ ENTRY: AC = POINTER TO FLOATING NUMBER\r
1376/ ARG1: BIT 0 SET IF CR/LF AFTER OUTPUT\r
1377/ BIT 3-5 NUMBER OF DIGITS TO THE\r
1378/ RIGHT OF THE DECIMAL POINT\r
1379/ BIT 6-11 TOTAL FIELD WIDTH\r
1380/ BIT 3-11=0 E14.7 - FORMAT\r
1381/\r
1382/ 09-APR-84 REV 0.0 KJ.S.\r
1383/ 19-OCT-84 REV 0.1 KJ.S. CR/LF OPTION ADDED\r
1384/ 03-FEB-85 REV 0.2 KJ.S. FPP CODE DEFINED\r
1385/\r
1386\r
1387TFO, 0\r
1388 DCA TFOPT / SAVE POINTER\r
1389 TAD I TFO\r
1390 AND (4000\r
1391 DCA 55 / SET CR/LF - OPTION\r
1392 TAD I TFO\r
1393 ISZ TFO\r
1394 AND (377\r
1395 DCA 56 / OUTPUT FORMAT\r
1396 TAD 56\r
1397 SNA\r
1398 JMP TFOA / E-FORMAT\r
1399 AND (77 / F-FORMAT\r
1400 DCA 57 / SET FIELD WIDTH\r
1401 TAD 56\r
1402 BSW\r
1403 AND (7\r
1404 DCA 60 / # OF DIGITS\r
1405\r
1406TFOA, JMS I 7\r
1407 TFGET I TFOPT\r
1408 TFOUT\r
1409 TFEXT\r
1410 CLA\r
1411 JMP I TFO\r
1412\r
1413TFOPT, 0 / POINTER TO FLOATING NUMBER\r
1414\f/ TEL ERASE LINE\r
1415/\r
1416/ ERASE A LINE AND POSITIONS CURSOR\r
1417/ TO BEGINNING OF THIS LINE\r
1418/\r
1419/ ENTRY: AC BIT 8-11 LINE NUMBER 0 - 27\r
1420/ EXIT: AC = 0 NORMAL\r
1421/ AC.NE.0 ERROR: LINE NUMBER.GT.27\r
1422/\r
1423/ SUBR: TLC,TCO,TSO\r
1424\r
1425/ 11-APR-84 REV 0.0 KJ.S.\r
1426/ 04-OCT-84 REV 0.1 KJ.S. VT100 CODE CHANGED\r
1427/ 17-MAR-86 REV 0.2 KJ.S. 70 SPACES, NO MARGIN BELL\r
1428/\r
1429\r
1430TEL, 0\r
1431 AND (37\r
1432 DCA TELSV / SAVE LINE NUMBER\r
1433 TAD TELSV\r
1434 JMS TLC / LOAD CURSOR TO LINE\r
1435 SZA\r
1436 JMP I TEL / ERROR: LINE#.GT.27\r
1437\r
1438 IFNDEF VT100 <\r
1439 TAD (-106\r
1440 DCA TELCNT\r
1441TELA, TAD (240 / SEND 106Q SPACES\r
1442 JMS TCO\r
1443 ISZ TELCNT\r
1444 JMP TELA\r
1445 TAD TELSV / CURSOR TO START OF LINE\r
1446 JMS TLC\r
1447 JMP I TEL / NORMAL AND ERROR EXIT\r
1448\r
1449TELCNT, 0 / COUNT SPACES\r
1450 >\r
1451\r
1452 IFDEF VT100 <\r
1453 TAD (TELVT\r
1454 JMS TSO / ESC [ 2 K\r
1455 JMP I TEL\r
1456\r
1457TELVT, 033 / ESC\r
1458 133 / [\r
1459 062 / 2\r
1460 113 / K\r
1461 0\r
1462 >\r
1463\r
1464TELSV, 0 / SAVE ARGUMENT\r
1465\r
1466 PAGE\r
1467\f/ TLC LOAD CURSOR\r
1468/\r
1469/ NONDESTRUCTIV MOVE OF CURSOR\r
1470/\r
1471/ ENTRY: AC BIT 0-6 X 0-117\r
1472/ BIT 7-11 Y 0-27\r
1473/ EXIT: AC = 0 NORMAL\r
1474/ AC.NE.0 ERROR EXIT, COORDINATES OUT OF RANGE\r
1475/\r
1476/ 09-APR-84 REV 0.0 KJ.S.\r
1477/ 10-APR-84 REV 0.1 KJ.S. VT100 COMPATIBLE\r
1478/ 11-APR-84 REV 0.2 KJ.S. BUG IN VT100-CODE REMOVED\r
1479/ 04-OCT-84 REV 0.3 KJ.S. ADM3A CODE CHANGED\r
1480/ 15-OCT-84 REV 0.4 KJ.S. HEADER BUG\r
1481/ 03-FEB-85 REV 0.5 KJ.S. UPDATE\r
1482/\r
1483\r
1484TLC, 0\r
1485 DCA TLCSV / SAVE ARGUMENT\r
1486 TAD TLCSV\r
1487 AND (37 / = Y-KOORDINATE FIRST\r
1488 TAD (-30\r
1489 SMA / Y.GT.27 ?\r
1490 JMP TLCER / YES: ERROR\r
1491 TAD (330 / NO: OUTPUT IS 300 TO 327\r
1492 DCA TLCY\r
1493 TAD TLCSV\r
1494 RTR\r
1495 RTR\r
1496 RAR\r
1497 AND (177 / = X-KOORDINATE\r
1498 TAD (-120\r
1499 SMA / X.GT.117 ?\r
1500 JMP TLCER / YES: ERROR\r
1501 TAD (360 / NO: OUTPUT IS 240 TO 357\r
1502 DCA TLCX\r
1503\r
1504 IFNDEF VT100 <\r
1505 TAD (TLCADS\r
1506 JMS TSO / OUTPUT STRING FOR ADM3A\r
1507 JMP I TLC\r
1508 >\r
1509\r
1510 IFDEF VT100 <\r
1511 TAD (TLCVTS\r
1512 JMS TSO / FIRST PART OF VT100 SEQUENCE\r
1513 TAD TLCY\r
1514 TAD (-277\r
1515 JMS TDO / LINE ADDRESS IN DECIMAL DIGITS\r
1516 0 / DIGITS ONLY\r
1517 TAD (";\r
1518 JMS TCO\r
1519 TAD TLCX\r
1520 TAD (-237\r
1521 JMS TDO\r
1522 0\r
1523 TAD ("H\r
1524 JMS TCO / DONE\r
1525 JMP I TLC\r
1526\r
1527TLCVTS, 0033 / ESC\r
1528 0133 / [\r
1529 0\r
1530 >\r
1531\r
1532TLCADS, 33 / ESC\r
1533 75 / =\r
1534TLCY, 0\r
1535TLCX, 0\r
1536 0\r
1537\r
1538TLCER, CLA IAC / ERROR, NO CURSOR MOVE\r
1539 JMP I TLC / EXIT WITH AC.GT.0\r
1540\r
1541TLCSV, 0 / SAVE ARGUMENT\r
1542\r
1543\f/ TCS CLEAR SCREEN\r
1544/\r
1545/ CLEARS SCREEN AND POSITIONS CURSOR\r
1546/ TO UPPER LEFT CORNER\r
1547/\r
1548/ ENTRY: AC = NO CARE\r
1549/ EXIT: AC = 0\r
1550/\r
1551/ 10-APR-84 REV 0.0 KJ.S.\r
1552/\r
1553\r
1554TCS, 0\r
1555 CLA\r
1556\r
1557 IFNDEF VT100 <\r
1558 TAD (32\r
1559 JMS TCO / SEND CTRL/Z TO ADM3A\r
1560 JMP I TCS / CURSOR IS HOME\r
1561 >\r
1562\r
1563 IFDEF VT100 <\r
1564 TAD (TCSVT\r
1565 JMS TSO / = ESC [ 2 J\r
1566 JMS TLC / AC = 0 HOME\r
1567 JMP I TCS\r
1568\r
1569TCSVT, 0033 / ESC\r
1570 0133 / [\r
1571 0062 / 2\r
1572 0112 / J\r
1573 0\r
1574 >\r
1575\r
1576/ *7\r
1577/ TFPPER / ERROR PRINTOUT IF NO FPP LOADED\r
1578\r
1579\r
1580/ 27BFPP.BN OVERLAY\r
1581\r
1582 IFDEF FPP27B <\r
1583 *6146\r
1584\r
1585 SKP\r
1586 TCO\r
1587 JMS I .-1\r
1588 >\r
1589\r
1590\r
1591\f\1a\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0