1 / TXIO.PA SERIAL INPUT-OUTPUT ROUTINES
8 / TCI CONTROL INPUT 13-MAR-86 REV 0.7
9 / TFI FLOATING INPUT 03-FEB-85 REV 0.3
10 / TFR FLOATING INPUT TERM=RT 15-OCT-84 REV 0.0
11 / TRI READ INPUT 03-FEB-85 REV 0.2
12 / TTI TEXT INPUT 23-JUL-84 REV 0.2
13 / TIDC CHANGE INPUT DEVICE CODE 03-FEB-85 REV 0.1
16 / TDO DECIMAL INTEGER OUTPUT 19-OCT-84 REV 3.0
17 / TOO OCTAL INTEGER OUTPUT 19-0CT-84 REV 0.2
18 / THO HEXADECIMAL INTEGER OUTPUT 19-OCT-84 REV 0.0
19 / TCO CHARACTER OUTPUT 18-OCT-84 REV 0.2
20 / TCR CARRIAGE RETURN 10-APR-84 REV 0.0
21 / TNL NEW LINE 10-APR-84 REV 0.0
22 / TSO STRING OUTPUT 10-APR-84 REV 0.0
23 / TFO FLOATING OUTPUT 03-FEB-85 REV 0.2
24 / TTO TEXT OUTPUT 13-JAN-86 REV 2.6
25 / TODC CHANGE OUTPUT DEVICE CODE 18-OCT-84 REV 0.0
28 / TLC LOAD CURSOR 03-FEB-85 REV 0.5
29 / TCS CLEAR SCREEN 11-APR-84 REV 0.1
30 / TEL ERASE LINE 17-MAR-86 REV 0.2
33 \f/*************************************************************
37 VT100=1 / TERMINAL: VT100 OR ADM3A
39 TFIELD=0 / CURRENT FIELD
41 / FPP27B=1 / FLOATING POINT PACKAGE LOADED
43 / EXTMAC=1 / MACRO-LIST SUPPLIED BY USER PROGRAMM
45 /*************************************************************
54 *2200 / START WITH 27BFPP.BN
60 *2400 / DTO. EXT MACRO LIST
69 *5200 / START WITHOUT 27BFPP.BN
74 *5400 / DT0. EXT MACRO LIST
79 /*************************************************************
88 \f / THIS MACRO LIST MAY BE SUPPLIED BY USER PROGRAMM
92 / TTO TEXT OUTPUT MACRO LIST, 3 WORDS PER MACRO
94 / COMMON MACRO TO DEFINE PARAMETER
95 TTOMAC, "C-270^2+"O-270^2+"M-270^2+"M-270^2+"O-270^2+"N
97 TTOMCO, 0 / ALSO DUMMY TEXT BUFFER
99 / *** USER MACRO POINTER ARE STORED HERE ***
101 / *** END OF USER MACROS ***
103 TTOMER, 0 / GETS CALCULATED NUMBER AND
104 TTOMEM / TERMINATES SEARCH WITH ERROR
107 TTOMEM, TEXT /&04$%^%$TXIO MACRO UNDEF.$JM$&00/;0
114 / TYPE TEXT FROM 6-BIT ASCII BUFFER CREATED WITH
115 / PAL8 TEXT PSEUDO-OP.
117 / ENTRY: AC = POINTER TO TEXT-BUFFER
122 / THIS OPTION IS USED TO TYPE CHARACTERS WITH SPECIAL
124 / EXAMPLE: TEXT /1.25!$/ --> 1.25$
127 / CHARACTERS BETWEEN TWO $-CHARACTERS ARE CONVERTED
128 / TO CONTROL CHARACTERS.
129 / EXAMPLE: TEXT /$MJ$/ --> CR/LF
132 / CHARACTERS BETWEEN TWO %-CHARACTERS ARE CONVERTED
133 / TO LOWER CASE CHARACTER. MAY BE COMBINED WITH
137 / MULTIPLE OUTPUT OF SAME CHARACTER. THE FIRST CHARACTER
138 / AFTER # IS TREATED AS NUMBER ( LOWER 6 BITS, ANY CHARACTER )
139 / AND THE SECOND CHARACTER IS PRINTED UP TO 63 TIMES.
140 / EXAMPLE: TEXT /AB#DC/ --> ABCCCC
143 / THIS OPTION CHANGES THE OUTPUT DEVICE CODE.
144 / IF THE TWO NUMBERS FOLLOWING ARE ZERO, THE PREVIOUES
145 / OUTPUT DEVICE IS RESTORED.
146 / EXAMPLE: TEXT /&04/ CONSOLE OUTPUT
149 / THIS OPTION IS USED TO CALL A MACRO ( A NORMAL TEXT STRING )
150 / WITHIN A TEXT STRING. THE NAME MAY BE UP TO 6 CHARACTERS
151 / AND MUST BE TERMINATED BY A ] OR BY A { IF PARAMETERS
152 / ( TEXT STRINGS ) ARE PART OF THE MACRO CALL.
155 / THE PARAMETERS DEFINED BY A MACRO CALL ARE TYPED BY
156 / THIS OPTION. THE PARAMETERS ARE NAMED FROM 1-8.
158 / EXAMPLE: TEXT /GIVE "WHO[10] MORE/
161 / ENTRIES IN MACRO LIST:
164 / "W-260^2+"H-260^2+"O
170 / WHO, TEXT /ME '1 HOURS/
172 / ---->> GIVE ME 10 HOURS MORE
175 / 06-APR-84 REV 0.0 KJ.S.
176 / 09-APR-84 REV 0.1 KJ.S. LOCATIONS RENAMED
177 / 11-APR-84 REV 0.2 KJ.S. OUTPUT CODE CHANGED
178 / 09-FEB-85 REV 0.3 KJ.S. #-OPTION ADDED
179 / 13-FEB-85 REV 0.4 KJ.S. %-OPTION ADDED
180 / 04-MAR-85 REV 0.5 KJ.S. &-OPTION
181 / 11-APR-85 REV 1.0 KJ.S. SOME CHANGES FOR GRV.PA
182 / 04-JUN-85 REV 2.0 KJ.S. MACRO WITH PARAMETER CALL
183 / 05-JUN-85 REV 2.1 KJ.S. & END OPTION DELETED
184 / 06-JUN-85 REV 2.2 KJ.S. & OPTION CHANGE OUTPUT DEVICE
185 / 11-JUN-85 REV 2.3 KJ.S. BUG IN FIELD HANDLING
186 / 12-JUN-85 REV 2.4 KJ.S. MACRO TERMINATOR CHANGED
187 / 18-JUN-85 REV 2.5 KJ.S. MACRO NAME CODE CHANGED
188 / 13-JAN-86 REV 2.6 KJ.S. EXPLANATION UPDATED
192 DCA TTOPNT / SAVE BUFFER POINTER
193 DCA TTOBFL / START WITH FIRST BYTE
195 TAD (TTOPPB+2 / SET POINTER TO TABLE OF
196 DCA TTOPPB / TEXT POINTERS FOR MACRO CALLS
198 TTOA, JMS TTOB / PROCEED
200 JMP TTOAM / NO: MACRO CALL
201 CLA CMA / YES: END OF BUFFER
202 TAD TTOPPB / DECREMENT POINTER
205 SNA / POINTER FROM LIST = 0 ?
206 JMP I TTO / YES: WE ARE IN LEVEL 0, ALL DONE
207 DCA TTOPNT / NO: REENTER LOWER LEVEL, SET TEXT POINTER
211 TAD I TTOPPB / GET BYTE FLAG AND FIELD OF TEXT BUFFER
220 TTOAM, TAD TTOFLD / SAVE POINTERS IN TABLE
223 DCA I TTOPPB / FIRST FLAGS
226 DCA I TTOPPB / THAN TEXT POINTER
229 TAD TTOCPT / SET NEW PARAMETERS FOR TTOB
230 DCA TTOPNT / CALCULATED FROM MACRO CALL
237 TTOPPB, TTOPPB+2 / LIST OF TEXT POINTERS
238 0 / MUST BE ZERO TO FLAG LEVEL 0 EXIT
239 ZBLOCK 20 / 8 LEVELS, FIRST FIELD AND BYTE FLAG
240 / FOLLOWED BY TEXT POINTER
244 / # OPTION: MULTIPLE CHARACTER OUTPUT
246 TTOC3, CLA CMA / SET FLAG = -1
249 TTOC3A, TAD TTOSV / CHARACTER IS NUMBER
255 / $ OPTION: PRINT CONTROL CHARACTERS
257 TTOC4, TAD TTOCFL / TOGGLE CONTROL FLAG
264 / % OPTION: LOWER CASE CHARACTERS
266 TTOC5, TAD TTOLFL / TOGGLE LOWER CASE FLAG
273 / & OPTION:CHANGE OUTPUT DEVICE CODE
275 TTOC6, CLA CLL CMA RAL
276 DCA TTODFL / SET DEVICE FLAG = -2
277 DCA TTODVN / CLEAR NEW INPUT
278 JMP TTOB2 / GET TWO CHARACTERS FOR DEVICE
285 DCA TTODVN / MAKE 0NN0
287 JMP TTOB2 / NO: NEXT CHARACTER
289 SZA CLA / NEW DEVICE ZERO ?
291 TAD TTODVO / YES: RESTORE OLD DEVICE
294 DCA TTODVO / SAVE CURRENT DEVICE
296 TTOC6C, DCA TTODEV / IS CURRENT DEVICE
298 JMS TODC / CHANGE OUTPUT CODE
301 TTODEV, 40 / CONSOLE IS DEFAULT
308 / ! OPTION: PRINT CONTROL CHARACTERS
311 DCA TTOAFL / SET FLAG
313 \f / SUBROUTINE TO TYPE DATA FROM TEXT BUFFER
319 RAR / BYTE FLAG TO LINK
322 TAD I TTOPNT / GET WORD FROM TEXT BUFFER
325 SNL / LINK = FLAG = 0 ?
329 SNL / LINK = FLAG = 1 ?
330 ISZ TTOPNT / NO: INCREMENT POINTER
332 DCA TTOBFL / SAVE BYTE FLAG
336 JMP TTOBX / YES: END OF BUFFER
338 AND (77 / MAKE 6 BIT BYTE
341 TAD TTOEFL / YES: CHECK END FLAG
342 SNA CLA / END FLAG = 1 ?
344 JMP TTOB0 / YES: IGNORE ZERO BYTE
347 TAD TTOTFL / CHECK FOR SPECIAL TERMINATOR
353 JMP TTOBX / YES: EXIT
356 JMP TTOBX / YES: EXIT
358 TTOB4, ISZ TTONFL / NUMBER FLAG = -1 ?
360 JMP TTOC3A / YES: PARAMETER IS MULTIPLIER
363 SNA CLA / ALL CHARACTER FLAG = 1 ?
365 DCA TTOAFL / YES: CLEAR FLAG
369 SZA CLA / PARAMETER FLAG = 1 ?
370 JMP TTOC7A / YES: CHARACTER IS PARAMETER NUMBER
372 TAD TTODFL / CHECK DEVICE FLAG
374 JMP TTOC6A / NO: DEVICE CODE
376 TAD TTOSV / SCAN FOR CONTROL CHARACTERS
381 SPA SNA / CHAR.GE.41 ?
383 TAD (TTOCL / YES: AC = 1...7
384 DCA TTOCL / ADD TABLE START
385 TAD I TTOCL / START ADRR. FROM TABLE
401 SPA / MAKE 8 BIT ASCII
402 TAD (100 / 01-37 TO 301-337
403 TAD (240 / 40-77 TO 240-277
404 TAD TTOCFL / SET CONTROL BIT
405 TAD TTOLFL / SET LOWER CASE BIT
409 JMS I TTOOUT / OUTPUT
410 ISZ TTONFL / MULTIPLE CHARACTERS ?
412 TTOB2, CLA CLL CMA RAL / NO: DONE
413 DCA TTONFL / RESET NUMBER FLAG
414 JMP TTOB0 / AND CONTINUE
416 TTOB3, CLA CMA / PRESERVE NUMBER FLAG
421 TTOBEX, CLA CLL CMA RAL / MACRO CALL EXIT
422 DCA TTONFL / RESET NUMBER FLAG
423 IAC / EXIT WITH AC.NE.0
427 DCA TTOTFL / CLEAR TERMINATOR FLAG
430 TTOOUT, TCO / POINTER TO OUTPUT ROUTINE
432 TTOSV, 0 / TEMP STORAGE FOR CHARACTER
433 TTOPNT, 0 / POINTER TO TEXT BUFFER
434 TTOBFL, 0 / BYTE FLAG: 0 LEFT, 1 RIGHT BYTE
436 TTOAFL, 0 / IF SET, CHAR. IS PRINT CHARACTER
437 TTOCFL, 0 / IF SET, MAKE CONTROL CHARACTER
438 TTOLFL, 0 / IF SET, MAKE LOWER CASE CHARACTER
439 TTOPFL, 0 / IF SET, CHAR. IS PARAMETER NUMBER
440 TTODFL, 0 / IF NONZERO, CHARACTER IS DEVICE CODE
441 TTOTFL, 0 / IF SET, BUFFER IS ALSO TERM. BY , AND ;
442 / NUMBER FLAG, ASSAMBLED TO -2
443 / IF -1, CHAR. IS MULTIPLIER
444 TTONFL, TEXT /?>/ / NORMAL -2, IF -1 CHAR. IS MULTIPLIER
445 TTOEFL=TTONFL+1 / END FLAG:
446 / NORMAL ZERO, TERMINATOR IS ZERO BYTE
447 / OR WORD. WITH PAL8 /F-OPTION, FLAG IS
448 / NONZERO AND BUFFER MUST BE TERMINATED
453 \f / " OPTION: MACRO CALL WITH PARAMETER
455 TTOC2, TAD TTOOUT / CHANGE OUTPUT ROUTINE
461 DCA TTOMFE / FLAG FIRST ENTRY
464 TTOM, 0 / PROCEED MACRO CALL
465 DCA TTOMSV / SAVE CHAR.
466 ISZ TTOMFE / FIRST ENTRY ?
467 TTOM1, HLT / NO: GETS A JMP
478 JMP TTOM3 / YES: END OF MACRO CALL
481 TAD TTOMPT / CALCULATE SUM = 2*SUM+(CHAR-270)
490 TTOM3, ISZ TTOMEF / MACRO DEFINED, NO PARAMETER
491 TTOM4, CLA / MACRO WITH PARAMETER
493 DCA TTOMER / STORE IN LIST FOR TERMINATION
494 TAD (TTOMAC / GET START OF MACRO LIST
495 DCA TTOMSV / USED AS POINTER
500 TTOM5, TAD I TTOMSV / GET MACRO NAME FROM LIST
501 TAD TTOMPT / ADD MINUS SUM
502 SNA CLA / MATCH FOUND ?
504 CLA CLL CML IAC RAL / NO: INCREMENT POINTER BY 3
509 TTOM6, ISZ TTOMSV / MACRO FOUND
511 DCA TTOCPT / GET POINTER
516 DCA TTOCFD / GET FIELD
517 DCA TTOCBF / BYTE FLAG ZERO
520 SZA CLA / PARAMETER DEFINED ?
523 TAD (JMP TTOM7 / YES: READ PARAMETER
524 DCA TTOM1 / SET NEW ENTRY
526 DCA TTOMPT / PARAMETER LIST POINTER
527 JMP TTOM10 / SAVE FIRST PARAMETER
532 JMP TTOM10 / YES: END OF PARAMETER
535 JMP TTOMX / YES: END OF MACRO CALL
536 JMP I TTOM / CONTINUE
538 TTOM10, TAD TTOFLD / SAVE PARAMETER POINTER
546 JMP I TTOM / CONTINUE
549 TTOMX, TAD TTOMOS / RESET OUTPUT ROUTINE
551 DCA TTOMEF / CLEAR END FLAG
555 TTOMPT, 0 / POINTER AND CHARACTER SUM
556 TTOMOS, 0 / SAVE OUTPUT POINTER
557 TTOMFE, 0 / FIRST ENTRY FLAG
558 TTOMEF, 0 / END FLAG, SET IF ; IS FOUND
560 TTOPLS, 0 / PARAMETER LIST
566 / ' OPTION: PARAMETER CALL
568 TTOC7, CLA IAC / SET FLAG
572 TTOC7A, CLA CMA / DECREMENT NUMBER
573 TAD TTOSV / CALCULATE POINTER TO PARAMETER
581 DCA TTOCBF / BYTE FLAG
589 DCA TTOPFL / CLEAR PARAMETER FLAG
590 ISZ TTOTFL / SET TERMINATOR FLAG
591 JMP TTOBEX / EXIT SUBR. TTOB
595 TTOCPT, 0 / PARAMETER MACRO POINTER
596 TTOCBF, 0 / PARAMETER MACRO BYTE FLAG
597 TTOCFD, 0 / PARAMETER MACRO FIELD
602 / SCANS CHARACTERS FROM TABLE TO FIND MATCH WITH
603 / INPUT CHARACTERS FROM TTY. IF A MATCH IS FOUND,
604 / EXIT WITH POINTER TO SUBROUTINE IN AC.
605 / MAY BE USED FOR COMMANDS WITH MORE THAN ONE
606 / CHARACTER, IN THIS CASE ALL INPUT COMBINATIONS
607 / MUST BE FOUND IN TABLE AND THE FOLLOWING POINTER
608 / TO SUBROUTINE MUST BE ZERO TO PREVENT EXIT
609 / BEFORE ALL NEEDED CHARACTERS ARE READ. THE LAST
610 / ZERO LOCATION TERMINATES THE TABLE.
612 / EXAMPLE: COMMAND 'ABC' CALLS ROUTINE 'SUBR'
614 / TCITAB, "A / TABLE START
615 / 0 / NO EXIT, CONTINUE
616 / "A+"A+"B / PREV.CHAR. * 2
618 / "A+"A+"A+"A+"B+"B+"C
619 / SUBR / COMMAND COMPLETE
622 / ENTRY: AC = POINTER TO TABLE
623 / EXIT: AC = START OF SUBROUTINE FROM TABLE
627 / 05-APR-84 REV 0.0 KJ.S.
628 / 06-APR-84 REV 0.1 KJ.S. SUBROUTINE
629 / 07-APR-84 REV 0.2 KJ.S. ECHO PRINT-CHAR. ONLY
630 / 09-APR-84 REV 0.3 KJ.S. LOCATIONS RENAMED
631 / 02-MAY-84 REV 0.4 KJ.S. CHAR. IN/OUT CHANGED
632 / 13-FEB-85 REV 0.5 KJ.S. ERROR HANDLING CHANGED
633 / 04-FEB-86 REV 0.6 KJ.S. ERASE INPUT LINE AFTER ERROR
634 / 13-FEB-86 REV 0.7 KJ.S. ERASE CHARCTERS ONLY
639 DCA TCITAB / SAVE TABLE-POINTER
640 TCIA, DCA TCICS / CLEAR SUM OF CHARACTERS
641 DCA TCICN / CLEAR INPUT COUNT
642 TCIB, CLA CLL / NEW CHARACTER
643 JMS TRI / GET NEXT CHARACTER
644 DCA TCICI / SAVE CHAR
652 DCA TCICSM / COMPLEMENT OF SUM
654 TAD TCITAB / GET POINTER
656 TCIC, TAD I TCIPNT / GET CHAR FROM TABLE
658 JMP TCIER / YES: END OF TABLE, INPUT ERROR
660 ISZ TCIPNT / POINTS TO SUBROUTINE
661 SNA CLA / CHARACTER MATCH ?
663 ISZ TCIPNT / NO: NEXT CHAR
669 JMP TCIE / NO: NO ECHO
672 JMP TCIE / NO: NO ECHO
676 ISZ TCICN / COUNT OUTPUT
678 TAD I TCIPNT / GET SUBROUTINE START
679 SNA / SUBROUTINE DEFINED ?
680 JMP TCIB / NO: READ NEXT CHAR
681 JMP I TCI / YES: EXIT
683 TCIER, CLA / INPUT ERROR
686 TAD TCICN / ERASE INPUT
699 JMP TCIA / YES: NEW INPUT
702 TCICI, 0 / INPUT CHARACTER
703 TCICS, 0 / SUM OF CHARACTERS
704 TCICSM, 0 / MINUS SUM OF CHARACTERS
705 TCITAB, 0 / POINTER TO TABLE
706 TCICN, 0 / INPUT COUNT
711 / READS FLOATING NUMBER FROM TELETYPE
713 / ENTRY: AC = POINTER TO FLOATING INPUT NUMBER
714 / EXIT: AC = INPUT TERMINATOR
718 / 09-APR-84 REV 0.0 KJ.S.
719 / 10-APR-84 REV 0.1 KJ.S.
720 / 02-MAY-84 REV 0.2 KJ.S. COSMETIC
721 / 03-FEB-85 REV 0.3 KJ.S. FFP INSTRUCTIONS DEFINED
725 DCA TFIPT / SAVE POINTER
727 DCA 54 / LF AFTER RETURN
728 JMS I 7 / ENTER 27BFPP
730 TFPUT I TFIPT / STORE
739 / TTY FLOATING INPUT TERMINATED WITH 'RETURN'
741 / READS FLOATING NUMBER FROM TELETYPE
743 / ENTRY: AC = POINTER TO FLOATING NUMBER
744 / EXIT: ERROR, WRONG TERMINATOR
749 / 15-OCT-84 REV 0.0 KJ.S.
755 SNA CLA / TERMINATOR RT=215 ?
756 ISZ TFR / YES: NORMAL EXIT
757 JMP I TFR / NO: ERROR EXIT
764 / READS CHARACTER FROM TTY
766 / ENTRY: AC = NO CARE
767 / EXIT: AC = CHARACTER
771 / 02-MAY-84 REV 0.0 KJ.S.
772 / 18-OCT-84 REV 0.1 KJ.S. HARDWARE INDEPENDENT
773 / 03-FEB-85 REV 0.2 KJ.S. BUG REMOVED
786 / CHANGE SERIAL INPUT DEVICE CODE
788 / ENTRY: AC = XNNX NN = DEV.CODE
791 / SUBR: LOCATINONS IN TRI ARE CHANGED
793 / 18-OCT-84 REV 0.0 KJ.S.
794 / 03-FEB-85 REV 0.1 KJ.S. BUG REMOVED
811 / TELETYPE TEXT INPUT
813 / READS INPUT FROM TTY AND STORES 2 CHARACTERS/WORD
814 / INTO TEXT BUFFER. ACCEPTS ONLY PRINTABLE CHARACTERS.
815 / ALL OTHER INPUT AND CHARACTERS AFTER BUFFER-OVERFLOW
816 / IS ECHED AS 'BELL'. THE INPUT TERMINATOR IS NOT
819 / ENTRY: AC = TERMINATOR, 0 = CR
820 / ARG1 POINTER TO TEXT BUFFER
821 / ARG2 LENGTH OF TEXT BUFFER (WORDS)
826 / 16-JUL-84 REV 0.0 KJ.S.
827 / 22-JUL-84 REV 0.1 KJ.S. SOME BUGS REMOVED
828 / 23-JUL-84 REV 0.2 KJ.S. BUG AFTER 'DEL' REM.
832 SNA / AC = TERMINATOR
833 TAD (215 / AC = 0 TERMINATOR = CR
837 TAD I TTI / GET ARG1 = BUFFER POINTER
841 TAD I TTI / GET ARG2 = BUFFER LENGTH
845 DCA TTIBLN / = - BUFFER LENGTH * 2 + 1
847 DCA TTICNT / CLEAR CHARACTER COUNTER
848 DCA TTIXF / CLEAR EXIT FLAG
850 TTI1, JMS TRI / READ INPUT
855 SZA CLA / TERMINATOR ?
857 ISZ TTIXF / YES: SET EXIT FLAG
858 DCA TTICH / PUT 'ZERO' INTO BUFFER
861 TTI2, TAD TTICH / CHECK INPUT
864 JMP TTI10 / NO: CONTROL CHAR
866 SMA CLA / CHAR.LT.340 ?
867 JMP TTI10 / N0: CONTROL CHAR
869 TAD TTICNT / CHECK FOR BUFFER OVERFLOW
871 SMA CLA / COUNTER.LT.BUFFER*2 ?
872 JMP TTI10 / NO: BUFFER OVERFLOW
876 TAD TTICH / MAKE 6-BIT-ASCII
881 TAD TTICNT / CALCULATE BUFFER POINTER
886 SZL / LINK=MSB OF TTICNT.EQ.0 ?
887 JMP TTI4 / N0: 2. BYTE OF WORD
888 TAD TTICH / YES: 1. BYTE
891 TTI4, TAD I TTIPNT / ADD 1.BYTE
894 TTI5, DCA I TTIPNT / STORE IN BUFFER
895 ISZ TTICNT / INCREMENT COUNTER
899 JMP TTI1 / NO: GET NEXT CHARACTER
902 TTI10, CLA CLL / INPUT IS A CONTROL CHARACTER
905 SNA CLA / CHAR.EQ.DEL ?
907 TTI11, TAD (207 / NO: ILLEGAL INPUT
914 TAD (-1 / NO: DECREMENT
925 TTITM, 0 / MINUS INPUT TERMINATOR
926 TTIBPT, 0 / BUFFER START POINTER
927 TTIBLN, 0 / MINUS LENGTH OF BUFFER
928 TTIPNT, 0 / CURRENT BUFFER POINTER
929 TTICNT, 0 / CURRENT LENGTH COUNTER
930 TTISWD, 0 / INPUT CONTROL FLAG
931 TTICH, 0 / LAST INPUT CHAR
937 / TYPES DECIMAL INTEGERS WITH DIFFERENT FORMATS
939 / ENTRY: AC = NUMBER TO BE TYPED
940 / ARG1 BIT 0 IF SET, TYPE SIGNED OUTPUT
941 / BIT 1 IF SET, FILL FORMAT WITH ZEROS
942 / UNSIGNED OUTPUT ONLY, BIT 0 IGNORED
943 / BIT 6-11 OUTPUT FIELD WIDTH. IF ZERO,
944 / NO LEADING ZEROS OR SPACES
950 / 19-OCT-84 REV 0.0 KJ.S.
954 DCA TION0 / SAVE NUMBER
957 DCA TIOFL / SAVE FLAG
958 TAD TDOTST / POINTER TO HEXADECIMAL TABLE
962 TDOTST, .+1 / TABLE OF DECIMAL VALUES
976 / TYPES OCTAL INTEGERS WITH DIFFERENT FORMATS
978 / ENTRY: AC = NUMBER TO BE TYPED
979 / ARG1 BIT 0 IF SET, TYPE SIGNED OUTPUT
980 / BIT 1 IF SET, FILL FORMAT WITH ZEROS
981 / UNSIGNED OUTPUT ONLY, BIT 0 IGNORED
982 / BIT 6-11 OUTPUT FIELD WIDTH. IF ZERO,
983 / NO LEADING ZEROS OR SPACES
989 / 18-OCT-84 REV 0.0 KJ.S.
990 / 18-OCT-84 REV 0.1 KJ.S. SOME BUGS REMOVED
991 / 19-OCT-84 REV 1.0 KJ.S. USING SUBR. TIO
995 DCA TION0 / SAVE NUMBER
998 DCA TIOFL / SAVE FLAG
999 TAD TOOTST / POINTER TO OCTAL TABLE
1003 TOOTST, .+1 / TABLE OF OCTAL VALUES
1017 / TYPES HEXADECIMAL INTEGERS WITH DIFFERENT FORMATS
1019 / ENTRY: AC = NUMBER TO BE TYPED
1020 / ARG1 BIT 0 IF SET, TYPE SIGNED OUTPUT
1021 / BIT 1 IF SET, FILL FORMAT WITH ZEROS
1022 / UNSIGNED OUTPUT ONLY, BIT 0 IGNORED
1023 / BIT 6-11 OUTPUT FIELD WIDTH. IF ZERO,
1024 / NO LEADING ZEROS OR SPACES
1030 / 19-OCT-84 REV 0.0 KJ.S.
1034 DCA TION0 / SAVE NUMBER
1037 DCA TIOFL / SAVE FLAG
1038 TAD THOTST / POINTER TO DECIMAL TABLE
1042 THOTST, .+1 / TABLE OF HEXADECIMAL VALUES
1054 \f/ TCR CARRIAGE RETURN
1056 / MOVES CURSOR TO THE BEGINNING OF THE
1059 / ENTRY: AC = NO CARE
1062 / 10-APR-84 REV 0.0 KJ.S.
1074 / POSITIONS CURSOR TO BEGINNING
1077 / ENTRY: AC = NO CARE
1080 / 10-APR-84 REV 0.0 KJ.S.
1089 TIOF, 0 / SUBROUTINE TO CHECK OUTPUT
1090 AND (17 / FORMAT AND TYPE
1092 ISZ TIOCT / INCREMENT DIGIT COUNTER
1095 SZA CLA / ZERO FLAG = 0 ?
1096 JMP TIOF2 / NO: TYPE DIGIT
1098 SZA CLA / DIGIT = 0 ?
1101 SNA CLA / FIELD WIDTH = 0 ?
1102 JMP I TIOF / YES: EXIT
1105 SPA CLA / FILL CHAR WITHIN FIELD ?
1106 JMP I TIOF / NO: EXIT
1107 TAD TIOFC / YES: TYPE FILL CHARACTER
1111 SNA / FIELD WIDTH = 0 ?
1112 JMP TIOF2 / YES: NO FIXED FIELD WIDTH
1114 SPA CLA / DIGIT WITHIN FIELD ?
1115 JMP TIOER / NO: FIELD WIDTH TOO SMALL
1116 TIOF2, ISZ TIOZF / SET ZERO FLAG
1118 SNA CLA / SIGN NEEDED ?
1120 DCA TIOSG / CLEAR SIGN FLAG
1121 TAD ("- / YES: TYPE IT
1123 TIOF3, TAD TIOPT / TYPE DIGIT
1126 TAD (7 / YES: MAKE A LETTER
1127 TAD (272 / NO: MAKE NUMBER
1132 \f / SUBROUTINE FOR TDO,TOO,THO
1133 / TION0 AND TIOFL MUST BE SET
1136 DCA TIOPT / AC = TABLE POINTER
1137 DCA TIOSG / CLEAR SIGN FLAG
1139 DCA TIOFC / FILL CHAR = SPACE
1142 SNA CLA / FILL CHAR = ZERO ?
1146 JMP TIOB / NO SIGN OPTION
1149 SMA CLA / SIGNED OUTPUT ?
1151 TAD TION0 / YES: COMPLEMENT NEGATIV NUMBER
1152 SMA / NEGATIV NUMBER ?
1154 CIA / YES: COMPLEMENT
1156 ISZ TIOSG / SET SIGN FLAG
1160 AND (77 / GET FIELD WIDTH
1161 DCA TIOFL / CLEAR UNUSED BITS
1163 SNA / FIELD WIDTH ZERO ?
1165 CIA / NO: COMPLEMENT
1166 TAD TIOSG / TAKE SIGN INTO ACCOUNT
1167 TAD (4 / MAX 4 DIGIT
1168 SMA / FILL CHARACTER NEEDED ?
1170 DCA TIOCT / YES: -# OF SPACE TO FILL FORMAT
1172 TIOC, TAD TIOFC / TYPE
1178 TAD (-13 / # OF SUBTRACTIONS
1179 DCA TIOCT / TO COUNTER
1182 TIOE, CLA CLL / SUCCESSIV SUBTRACTIONS OF
1183 TAD TION0 / DECIMAL VALUES FROM TABLE
1184 TAD I TIOPT / SUBTRACTION
1186 DCA TION0 / YES, NEW VALUE
1188 TAD TION1 / RESULT IN LINK
1190 DCA TION1 / SHIFTED INTO TION1
1191 ISZ TIOPT / INCREMENT POINTER
1193 JMP TIOE / NO, CONTINUE
1195 DCA TIOZF / CLEAR LEADING ZERO FLAG
1200 DCA TIOCT / SET DIGIT COUNTER, 4 DIGITS + SIGN
1202 TAD TION1 / 1. DIGIT
1207 TAD TION1 / 2. DIGIT
1212 TAD TION1 / 3. DIGIT
1215 ISZ TIOZF / 4. DIGIT ALWAYS TYPED
1221 TIOER, TAD TIOFL / ERROR, FILL FORMAT WITH ****
1225 JMS TCO / TYPE CHARACTER
1229 JMP I TDOHO / EXIT MAIN SUBROUTINE
1232 TION1, 0 / GETS 3 MSD
1236 TIOSG, 0 / SIGN FLAG
1237 TIOZF, 0 / ZERO SUPPRESS FLAG
1238 TIOFC, 0 / FILL CHARACTER
1239 \f/ TSO STRING OUTPUT
1241 / TYPES A STRING OF ASCII - CHARACTERS
1242 / BUFFER CONTAINS ONE CHARACTER PER
1243 / WORD AND MUST BE TERMINATED BY 0
1245 / ENTRY: AC = POINTER TO BUFFER
1248 / 10-APR-84 REV 0.0 KJ.S.
1252 DCA TSOPT / BUFFER POINTER
1253 TSOA, TAD I TSOPT / GET CHARACTER
1254 SNA / CHARACTER.EQ.0 ?
1255 JMP I TSO / YES: EXIT
1262 \f/ FPP ERROR OUTPUT
1264 / ENTER THIS SUBROUTINE VIA 'JMS I 7'
1265 / IF NO FPP IS LOADED AND EXIT TO OS/8
1269 / 03-FEB-85 REV 0.0 KJ.S.
1278 TFPPET, TEXT /NO FPP !/;0
1281 \f/ TCO CHARACTER OUTPUT
1283 / TYPES ONE ASCII-CHARACTER CALLING
1284 / CP-ROUTINE, RESPONS TO CTRL/S - CTRL/Q
1286 / ENTRY: AC = CHARACTER
1287 / EXIT: AC = 0 LINK UNCHANGED
1289 / 10-APR-84 REV 0.0 KJ.S.
1290 / 18-OCT-84 REV 0.1 KJ.S. HARDWARE INDEPENDENT
1291 / 18-OCT-84 REV 0.2 KJ.S. LINK PRESERVED
1295 DCA TCOSV / SAVE CHAR
1296 JMS TOKSF / CHECK XON/XOFF
1303 TCO1, CLA / YES: WAITING FOR CTRL/Q
1311 TCO2, TAD TCOSV / YES: TYPE CHARACTER
1320 / SUBROUTINES WITH I/O INSTRUCTIONS
1321 / DEVICE-CODE CAN BE SET BY TODC
1341 / CHANGE SERIAL OUTPUT DEVICE AND THE CORRESPONDING
1342 / INPUT DEVICE FOR XON/XOFF PROTOCOL
1344 / ENTRY: AC = XNNX NN = OUTPUT, NN-1 = INPUT DEVICE
1347 / 18-OCT-84 REV 0.0 KJ.S.
1359 TAD (-10 / CHANGE INPUT
1371 \f/ TFO FLOATING OUTPUT
1373 / TYPES FLOATING NUMBER IN E- AND F-FORMAT
1375 / ENTRY: AC = POINTER TO FLOATING NUMBER
1376 / ARG1: BIT 0 SET IF CR/LF AFTER OUTPUT
1377 / BIT 3-5 NUMBER OF DIGITS TO THE
1378 / RIGHT OF THE DECIMAL POINT
1379 / BIT 6-11 TOTAL FIELD WIDTH
1380 / BIT 3-11=0 E14.7 - FORMAT
1382 / 09-APR-84 REV 0.0 KJ.S.
1383 / 19-OCT-84 REV 0.1 KJ.S. CR/LF OPTION ADDED
1384 / 03-FEB-85 REV 0.2 KJ.S. FPP CODE DEFINED
1388 DCA TFOPT / SAVE POINTER
1391 DCA 55 / SET CR/LF - OPTION
1395 DCA 56 / OUTPUT FORMAT
1400 DCA 57 / SET FIELD WIDTH
1404 DCA 60 / # OF DIGITS
1413 TFOPT, 0 / POINTER TO FLOATING NUMBER
1416 / ERASE A LINE AND POSITIONS CURSOR
1417 / TO BEGINNING OF THIS LINE
1419 / ENTRY: AC BIT 8-11 LINE NUMBER 0 - 27
1420 / EXIT: AC = 0 NORMAL
1421 / AC.NE.0 ERROR: LINE NUMBER.GT.27
1425 / 11-APR-84 REV 0.0 KJ.S.
1426 / 04-OCT-84 REV 0.1 KJ.S. VT100 CODE CHANGED
1427 / 17-MAR-86 REV 0.2 KJ.S. 70 SPACES, NO MARGIN BELL
1432 DCA TELSV / SAVE LINE NUMBER
1434 JMS TLC / LOAD CURSOR TO LINE
1436 JMP I TEL / ERROR: LINE#.GT.27
1441 TELA, TAD (240 / SEND 106Q SPACES
1445 TAD TELSV / CURSOR TO START OF LINE
1447 JMP I TEL / NORMAL AND ERROR EXIT
1449 TELCNT, 0 / COUNT SPACES
1464 TELSV, 0 / SAVE ARGUMENT
1469 / NONDESTRUCTIV MOVE OF CURSOR
1471 / ENTRY: AC BIT 0-6 X 0-117
1473 / EXIT: AC = 0 NORMAL
1474 / AC.NE.0 ERROR EXIT, COORDINATES OUT OF RANGE
1476 / 09-APR-84 REV 0.0 KJ.S.
1477 / 10-APR-84 REV 0.1 KJ.S. VT100 COMPATIBLE
1478 / 11-APR-84 REV 0.2 KJ.S. BUG IN VT100-CODE REMOVED
1479 / 04-OCT-84 REV 0.3 KJ.S. ADM3A CODE CHANGED
1480 / 15-OCT-84 REV 0.4 KJ.S. HEADER BUG
1481 / 03-FEB-85 REV 0.5 KJ.S. UPDATE
1485 DCA TLCSV / SAVE ARGUMENT
1487 AND (37 / = Y-KOORDINATE FIRST
1490 JMP TLCER / YES: ERROR
1491 TAD (330 / NO: OUTPUT IS 300 TO 327
1497 AND (177 / = X-KOORDINATE
1500 JMP TLCER / YES: ERROR
1501 TAD (360 / NO: OUTPUT IS 240 TO 357
1506 JMS TSO / OUTPUT STRING FOR ADM3A
1512 JMS TSO / FIRST PART OF VT100 SEQUENCE
1515 JMS TDO / LINE ADDRESS IN DECIMAL DIGITS
1538 TLCER, CLA IAC / ERROR, NO CURSOR MOVE
1539 JMP I TLC / EXIT WITH AC.GT.0
1541 TLCSV, 0 / SAVE ARGUMENT
1543 \f/ TCS CLEAR SCREEN
1545 / CLEARS SCREEN AND POSITIONS CURSOR
1546 / TO UPPER LEFT CORNER
1548 / ENTRY: AC = NO CARE
1551 / 10-APR-84 REV 0.0 KJ.S.
1559 JMS TCO / SEND CTRL/Z TO ADM3A
1560 JMP I TCS / CURSOR IS HOME
1565 JMS TSO / = ESC [ 2 J
1566 JMS TLC / AC = 0 HOME
1577 / TFPPER / ERROR PRINTOUT IF NO FPP LOADED