1 /17 SUPER TTY HANDLER FOR OS/8
11 /COPYRIGHT (C) 1974,1975,1977 BY DIGITAL EQUIPMENT CORPORATION
22 /THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE
23 /AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
24 /CORPORATION. DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY
25 /FOR ANY ERRORS THAT MAY APPEAR IN THIS DOCUMENT.
27 /THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO THE PURCHASER
28 /UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED
29 /(WITH INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH
30 /SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DIGITAL.
32 /DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE
33 /OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY
46 /S.W.,S.R.,H.J.,R.L.,S.R.
51 DEVICE KL8E;DEVICE TTY;0;TTY&177+4000;ZBLOCK 2
53 /TWO-PAGE TELETYPE HANDLER FOR OS/8 V3.
54 /ON INPUT, RECOGNIZES ^Z, ^C, ^U, RUBOUT
55 /^Z MEANS END OF INPUT, INSERT ^Z IN BUFFER,
56 / PAD WITH ZEROES, AND ECHO "^Z"
57 /^C MEANS ABORT JOB, RETURN TO OS/8 VIA LOC 7600 TO SAVE CORE AND PRINT "^C"
58 /^U MEANS DELETE THE LAST LINE, ALLOW OPERATOR TO RETYPE
59 / (LINE STARTS AT BEGIN OF BUFFER AND IS TERMINATED BY A CR)
60 / A CR GETS ENTERED INTO BUFFER, CAUSES A LF TO ALSO ECHO
61 / AND GET ENTERED INTO BUFFER, BUFFER IS THEN PADDED WITH NULLS.
64 /ON OUTPUT RECOGNIZES ^C, ^O, ^S, ^Q FROM KEYBOARD
65 /^C CAUSES JOB TO ABORT, RETURN TO OS/8 VIA LOCATION 7600
66 / TO SAVE CORE AND PRINT "^C"
67 /^O CAUSES ECHOING BY THE HANDLER TO CEASE
68 / TYPING ANY OTHER CHARACTER RESUMES ECHOING.
69 /^S CAUSES THE HANDLER TO STOP SENDING TO TERMINAL
70 /^Q RESUMES HANDLER SENDING
71 / ^S AND ^Q ARE IGNORED IN OTHER CASES
73 /WHENEVER PRINTING CHARACTERS (EITHER ON OUTPUT OR WHEN ECHOING),
75 / FLAGS LC WITH AN APOSTROPHE
76 / HANDLES TABS CORRECTLY (SEVERAL WAYS)
78 / DELAYS 16 MS AFTER LINEFEEDS
79 / PRINTS CONTROL CHARACTERS AS "^K"
81 /DOES AUTOMATIC CR/LF AT END OF LINE WIDTH.
83 /MAINTENANCE RELEASE CHANGES:
85 /1. ADDED KCC FOR NON-CONSOLE TELETYPES
87 /V3D CHANGES: (VERSION E)
89 /1. ADDED DELAY OPTION FOR VT78
90 /2. ADDED SCOPE RUBOUTS
91 /3. CHANGED VT78 DEFAULTS
92 /4. REARRANGED CODE FOR SET TTY ESC AND ARROW
106 \f/BUILD YOUR OWN TELETYPE HANDLER:
108 /THIS SOURCE HAS MUMBLE LOCATIONS LEFT.
110 /THE FOLLOWING CONDITIONALS ALLOW YOU TO INCLUDE OPTIONAL FEATURES.
111 /YOU MAY INCLUDE AS MANY OR AS FEW AS YOU DESIRE PROVIDED THERE
114 /CONDITIONAL LOCATIONS LOCATIONS INCLUDED
115 /VARIABLE PAGE 1 PAGE 2 FEATURES
117 / DELAY 0 7 DELAY AFTER GIVEN CHAR
118 / CTRL 0 3 PRINT CONTROL CHARS AS ^K
119 / RUB 0 0 PRINT CHAR RUBBED OUT ON RUBOUTS
120 / SIMTAB 0 10 SIMULATE TABS AS SPACES
121 / SLOTAB 0 6 PUT OUT 2 RUBOUTS AFTER A TAB
122 / ESC 0 10 PRINT ESCAPE AS $
123 / FLAGLC 0 12 FLAG LOWER CASE CHARS ON OUTPUT
124 / CNVLC 0 7 CONVERT LOWER CASE ON INPUT TO UPPER CASE
125 / ALTMOD 0 11 CONVERT ALTMODES (175,176) TO ESCAPE (33)
126 / PAUS 0 20 PAUSE BETWEEN PAGES
129 VT78=1 /SET TO 0 TO ALLOW OTHER PARAMETERS
130 /SET TO 1 TO FORCE OTHER PARAMETERS TO VT78 COMPATIBLE
132 DELAY=0 /SET NON-ZERO TO ALLOW DELAY AFTER ANY CHAR (12=CR)
133 /TYPICALLY AFTER LF FOR HIGH SPEED VT05
134 /SET VALUE OF DELAY = 7-BIT CHAR TO DELAY AFTER
136 CTRL=1 /SET TO 1 TO ECHO CONTROL CHARS AS ^K
137 /SET TO 0 TO ACCEPT CONTROL CHARACTERS AND PUT
138 /IN BUFFER, BUT NOT ECHO THEM (EXCEPT THE USUAL)
139 RUB=1 /SET TO 0 TO ECHO EACH RUBOUT BY TYPING A BACK SLASH
140 /SET TO 1 TO ECHO CHARS RUBBED OUT UPON RUB-OUT
141 /SET TO 4000 TO PERFORM SCOPE TYPE RUBOUTS
142 SIMTAB=1 /SET TO 1 TO SIMULATE TABS AS THE CORRECT NUMBER OF SPACES
143 /SET TO 0 TO TYPE TABS AS TABS
144 SLOTAB=0 /SET TO 1 TO TYPE 2 RUBOUTS AFTER A TAB
145 /ONLY IS APPLICABLE IF SIMTAB=0
146 ALTMOD=0 /SET TO 1 TO CONVERT 175,176 TO 33
147 /(UPPER CASE TERMINALS ONLY)
148 ESC=1 /SET TO 1 TO ECHO ESCAPE AS $
149 /SET TO 0 TO ECHO ESCAPE AS A CONTROL CHAR (^[)
150 FLAGLC=1 /SET TO 1 TO FLAG LOWER CASE CHARS ON OUTPUT
151 /THIS IS FOR PEOPLE NOT PRIVELIDGED ENOUGH TO
152 /OWN A LOWER CASE TERMINAL
153 /SET TO 0 TO PRINT LOWER CASE CHARS AS IS
154 CNVLC=0 /SET TO 1 TO CONVERT LOWER CASE CHARS ON INPUT TO UPPER CASE
155 /SET TO 0 TO ACCEPT INPUTTED LOWER CASE CHARS AS IS
156 /THIS IS FOR PEOPLE WHO ARE HANDICAPPED BY A LOWER CASE
157 /TERMINAL AND ONLY WANT UPPER CASE
158 PAUS=200 /NON-0 PAUSES BETWEEN SCOPE PAGES
159 HEIGHT=30 /NUMBER OF LINES PER SCREEN
161 /SOME OF THE ABOVE OPTIONS SHOULD ACTUALLY BE IMPLEMENTED
162 /IN SUCH A MANNER THAT THE USER CAN CHANGE THEM VIA AN ALTER
163 /RATHER THAN HAVE TO REASSEMBLE.
175 IFNZRO INDVC-3 <CTRL=0>
177 \f/CROSS PAGE LINKAGE:
179 /THIS CODE MUST BE ABLE TO LOAD INTO ANY TWO PAGES OF CORE
180 /THE ENTRY POINT IS AT THE NEXT LOCATION TO THE END OF THE FIRST PAGE
181 /AT THE END OF THE FIRST PAGE WE JMS TO PLINK,
182 /THIS LEAVES THE ADDRESS OF THE FIRST LOCATION OF THE NEXT PAGE
183 /IN LOCATION 'PLINK' . THIS JUST HAPPENS TO BE THE ADDRESS
184 /OF BOTH TTYPCH AND TTYGCH.
186 /TTYPCH AND TTYGCH SHARE THE SAME ENTRY POINT.
187 /IF IT IS CALLED WITH A 0 AC, IT IS A CALL TO TTYGCH,
188 /IF IT IS CALLED WITH A NON-ZERO AC, IT IS A CALL TO TTYPCH.
190 /RETURN 1 MEANS GOT RUBOUT
191 /TTYGCH TAKES RETURN 2 IF IT GOT A ^Z.
192 /OTHERWISE IT TAKES RETURN 3 WITH CHARACTER GOTTEN IN AC.
194 /TTYPCH TAKES RETURN 1 IF IT WANTS THE HANDLER TO GO AWAY,
196 /AC IS NORMALLY NON-ZERO UPON RETURN
197 /AC IS POSITIVE MEANS DO A CRLF
199 /WHEN ECHOING WE WANT TO CALL TTYPRT
200 /BUT OTHERWISE WE WANT TO CALL TTYPCH (WHICH DOES ADDITIONAL
201 /STUFF LIKE CHECK ^O, ^Q, ETC.
202 /WE TELL BY WHETHER OR NOT TTYGCH HAD BEEN PREVIOUSLY CALLED.
205 PLINK, 0 /GETS ADDRESS OF TTYPCH AND TTYGCH (START OF NEXT PAGE)
207 TAD I TTY /RETRIEVE FUNCTION WORD, BUT PUT R/W BIT IN LINK
208 AND L3700 /EXTRACT NUMBER OF DOUBLE-WORDS TO TRANSFER
210 DCA BUFSIZ /STORE AWAY
211 RDF /FIND OUT THE USER'S DATA FIELD
212 TAD CIFCDF /FORM OUR EXIT CIF CDF
213 DCA TTYXIT /STORE AWAY FOR EXIT ROUTINE
214 TAD TTY70 /GET FUNCTION WORD
215 L776, AND I TTY /ISOLATE FIELD OF BUFFER
216 TAD TTYCDF /FORM CDF TO FIELD OF BUFFER
217 DCA TTCDBF /STORE WHERE IT WILL BE USEFUL
218 /AT SAME TIME, INITIALIZE TTYEOF
219 ISZ TTY /POINT TO BUFFER ADDRESS
220 TAD I TTY /AND GET IT
221 DCA BUFSTRT /AND SAVE IT
222 ISZ TTY /POINT TO BLOCK #
223 TTY376, ISZ TTY /POINT TO ERROR RETURN
224 SHIFT, /OUTPUT SHIFT REGISTER
225 TTYEOF, /0 IF SAW CR OR ^Z AND WISH TO PAD BUFFER WITH 0'S
226 TTCDBF, HLT /CDF BUFFER FIELD
228 TTYLP, SNL CLA /LINK=1 MEANS OUTPUT
229 JMP TTYGET /INPUT IS FROM TTY:
230 \f/LINK MUST BE SET FIRST TIME THROUGH HERE.
231 /IT ACTS AS A GUARD BIT IN THE SHIFT REGISTER
234 SPA /DO WE HAVE 8 BITS SHIFTED IN?
236 DCA SHIFT /SAVE SHIFT REGISTER
239 JMS PUNCH /PRINT A CHARACTER
241 ISZ BUFSTRT /BUMP INPUT POINTER
242 TT7400, 7400 /PROTECT ISZ
245 TAD SHIFT /SHIFT HIGH ORDER 4 BITS INTO
246 JMP ROTL /SHIFT REGISTER
247 TELP, JMS PUNCH /PRINT 3RD CHARACTER OF DOUBLE-WORD
249 TTYKLG, ISZ BUFSIZ /DONE?
251 TTYX, TAD TTYEOF /IF INPUT AND WE WERE PADDING WITH 0'S
252 SZA CLA /TAKE SOFT ERROR EXIT
253 TTYRTN, ISZ TTY /POINT TO NORMAL RETURN
254 /CAN'T GET ERROR OR END-OF-FILE ON OUTPUT
255 TTYXIT, HLT /RETURN TO USER'S FIELD
256 JMP I TTY /RETURN TO USER
263 PUNCH, 0 /NEVER CALL TTYPCH WITH ZERO AC
264 JMS I PLINK /CALL TTYPCH
265 JMP TTYRTN /GO AWAY, WE SAW A ^Z
266 L7700, SMA CLA /DID WE REACH END OF TTY LINE?
267 JMS CRLF /YES, PERFORM CR/LF
273 JMS I PLINK /CALL TTYPCH TO PRINT CR
274 L215, 215 /CAN'T RETURN HERE
277 JMS I PLINK /CALL TTYPCH TO PRINT LF
278 L212, 212 /CAN'T RETURN HERE
281 \fCTRLU, JMS CRLF /PERFORM A CR/LF
283 DCA TTYCA /POINT TO START OF BUFFER
285 CLL RAL /CONVERT DOUBLE-WORDS TO WORDS
286 DCAWC, DCA TTYWC /SET SIZE OF BUFFER
290 JMS I PLINK /CALL TTYGCH TO GET A CHARACTER
291 JMP RUBOUT /RETURN 1 MEANS SAW RUBOUT
292 ZERO, DCA I TTYCA /RETURN 2 MEANS GOT CHARACTER
293 /STORE AWAY TEMPORARILY
294 /USING USER'S BUFFER AS A TEMP LOCATION
295 TAD I TTYCA /GET BACK CHARACTER
296 IFNZRO .-320 <_ERROR>
299 TAD I TTYCA /GET IT AGAIN
310 ISZ TTYWC /IS BUFFER FULL?
313 ISZ TMP /WAS LAST CHAR A CR?
315 DCA TTYEOF /YES, SET "PAD WITH 0'S" FLAG
316 ISZ TTY /POINT TO NORMAL RETURN
317 /CR IS NOT AN ERROR OR END-OF-FILE
318 TAD L212 /IF LAST CHAR INPUT WAS CR, NOW PRETEND LF WAS INPUT
319 JMP ZERO /REJOIN PROCESSING
331 /TTYEOF IS ZERO MEANS PAD BUFFER WITH ZEROES
333 /RUBOUT, AND TTYWC /177 IN AC
337 RUBOUT, KCC /TTYGCH DOESN'T CLEAR RO FROM BUFFER
341 SNA CLA /ARE WE AT BEGIN OF BUFFER?
348 TAD LSLASH /PRINT A BACK SLASH FOR EACH RUBBED OUT CHAR
350 IFNZRO RUB&4000+RUB <TAD I TTYCA> /PRINT CHAR JUST DELETED
351 IFNZRO RUB&4000 <TAD TT10> /BACKSPACE-SPACE-BACKSPACE
355 JMP DCAWC /BUMP BACK WC AND GET ANOTHER CHAR
358 TTY, TTYVERSION /ENTRY POINT TO HANDLER
359 JMS PLINK /SET UP CROSS PAGE LINKAGE
360 IFNZRO TTY-376 <ENTERR,QQQQ>
364 /USA STANDARD CODE FOR INFORMATION INTERCHANGE:
366 / 000 001 010 011 100 101 110 111
368 / 0000 NUL DLE SP 0 @ P ' 'P
370 / 0001 SOH DC1 ! 1 A Q 'A 'Q
372 / 0010 STX DC2 " 2 B R 'B 'R
374 / 0011 ETX DC3 # 3 C S 'C 'S
376 / 0100 EOT DC4 $ 4 D T 'D 'T
378 / 0101 ENQ NAK % 5 E U 'E 'U
380 / 0110 ACK SYN & 6 F V 'F 'V
382 / 0111 BEL ETB ' 7 G W 'G 'W
384 / 1000 BS CAN ( 8 H X 'H 'X
386 / 1001 HT EM ) 9 I Y 'I 'Y
388 / 1010 LF SUB * : J Z 'J 'Z
390 / 1011 VT ESC + ; K [ 'K '[
392 / 1100 FF FS , < L \ 'L '\
394 / 1101 CR GS - = M ] 'M ']
396 / 1110 SO RS . > N ^ 'N '^
398 / 1111 SI US / ? O _ 'O '_
400 \f/TTYGCH: GETS A CHAR FROM KBD
401 / IF GOT ^Z, IT SETS TTYEOF FLAG
402 / LEAVES IT IN AC IN 7-BIT
404 /TTYPRT: PRINTS CHAR IN AC ON TTY
406 / PRINTS ^X ON CONTROL CHARS (EXCEPT CR, LF, FF, VT, TAB)
407 / PRINTS 'X ON LOWER CASE
409 /HANDLES TABS CORRECTLY
410 / AND AUTOMATICALLY PRINTS CR/LF AT EOL
413 /TTYTLS: USED TO ACTUALLY PRINT CHAR
414 / IT HANDLES TABS AUTOMATICALLY
415 / AND CR/LF'S AT END OF LINE
417 /TTYPCH: IT USES TTYPRT TO PRINT CHAR BUT ALSO RESPONDS TO
419 / IF ^Z IS BEING PRINTED, IT THEN STOPS FURTHER PRINTING
420 \f/MUST BE AT TOP OF PAGE
421 TTYPCH, /ENTRY POINT TO TTY PUNCH ROUTINE
422 /OR TTY PRINT ROUTINE
423 TTYGCH, 0 /ENTRY POINT TO TTY GET CHAR ROUTINE
425 JMS TGCH /ZERO AC-MEANT CALL TO TTYGCH
426 PCH, AND (177 /FORCE TO 7-BIT
429 M140, SZA CLA /ARE WE ECHOING?
430 JMP ECHO /YES, IGNORE ^S AND STUFF
431 K5, 5 /MUST BE AT REL 10
443 ISZ LINCNT /AT END OF PAGE?
444 JMP NOPAUS /NOT AT CR, OR AT CR BUT NOT AT END OF PAGE
445 L15, 15 /MUST BE HERE FOR SET
447 DCA TTYTLS /SET COUNT FOR OUTER LOOP
458 DCA TCHAR /YES, SET TO NULL SO IT WILL BE IGNORED
461 JMP ECHO /NO, IGNORE CHAR
463 TAD (203-221 /NO, NOTHING ELSE MATTERS UNTIL ^Q
465 JMP TTCTLQ /NO, SUSPEND OUTPUTTING
466 TTY32, KCC /YES, REMOVE ^Q FROM BUFFER
483 JMP TTYCTO /IGNORE NULLS
500 TTY7, 7 /HERE FOR NO SPECIAL REASON
515 IFZERO SIMTAB+SLOTAB <JMP PRIN>
517 /BUG: IF HARDWARE TABS, DON'T COUNT COLUMNS CORRECTLY
520 RUBO, TAD TTY10 /OUTPUT BACKSPACE-RUBOUT-BACKSPACE
529 JMP SPCHR /DON'T UPARROW CHARS LF,CR,TAB,VT,FF
538 JMS TTYTLS /PRINT QUOTE
540 JMP PRIN /PRINT UPPER CASE OF CHAR
542 NOLC, TAD TCHAR /NO, GET BACK CHAR
543 AND TTY140 /HIGH ORDER BITS IRRELEVANT
545 M40, SMA SZA CLA /CAN'T BE NEGATIVE
546 JMP PRIN /NOT A CONTROL CHARACTER
547 TAD TTYUPA /ECHO 201-237 AS ^X (EXCEPT 211-215)
549 TAD TTY100 /ADD X100 TO ^K TO GET K
552 SNA CLA /IS CHAR A CONTROL CHAR?
553 JMP TTYCTO /YES, DON'T ECHO CONTROL CHARACTERS EXCEPT FOR 211-215
557 TTYCTO, TAD TABCTR /RETURN TABCNT IN AC
567 PREPRN, DCA TABCTR /THESE CHARS RESET COLUMN COUNTER
569 \fTGCH, 0 /NON-ZERO MEANS TTYGCH WAS CALLED
571 JMP .-1 /WAIT FOR CHAR TO BE TYPED
573 /WILD: (DON'T PUT IN) SZA CLA /FALL THRU AND RETURN R.O.
576 SNA CLA /TAKE RETURN 1 ON RUB OUT
577 JMP I TTYGCH /"CLUMSY" - R.L. (9/18/73)
580 TTYAND, AND (177 /MUST RETURN CHAR IN 7-BIT
591 TAD (-175 /IS IT 175 OR 176?
593 JMP CONV /YES, CONVERT ALTMODE TO ESCAPE
594 TAD (175 /NO, RESTORE CHAR
596 JMP I TTYGCH /TAKE RETURN 3
598 /SHOULDN'T TABCTR BE INITIALIZED TO C(LINSIZ) UPON ENTRY?
613 SZA /19.66 MS IS G.T. 1/60 SEC
636 TAD TTY32 /DEVICE DEPENDENT
642 /TTYTST: READS KEYBOARD STATICALLY AND RESPONDS TO ^C
643 / OTHERWISE RETURNS CHAR (8-BIT) MINUS 203 IN AC.
644 / IF FLAG IS NOT UP, IT RETURNS A 1.
647 TAD TT7600 /OR CHAR IN
649 TAD (-7603 /-7603=175
651 CLA IAC /STUFF IN BUFFER IS UNRELIABLE IF FLAG ISN'T UP
655 CIF CDF 0 /BRANCH TO OS/8 MONITOR AT 07600
656 JMP I TT7600 /IT WILL PRINT "^C" FOR CHAR IN BUFFER
658 \f/ DYNAMICALLY MODIFYING THE KL8E HANDLER
660 / *** I M P O R T A N T ***
662 / THIS HANDLER CAN BE DYNAMICALLY CHANGED VIA SET COMMANDS.
663 / CONSEQUENTLY, IT IS EXTREMELY IMPORTANT THAT PEOPLE
664 / WHO MODIFY THIS SOURCE DO NOT AFFECT THE ALGORITHMS
665 / NECESSARY TO PERFORM SUCH MODIFICATIONS.
667 / THIS ALGORITHM IS EXPLAINED BELOW.
671 / SEARCH LOCATIONS 200-377 FOR A 7600. CALL ITS ADDRESS X.
672 / LET Y BE THE INSTRUCTION AT LOCATION X+1.
673 / FORM THE (RELATIVE) ADDRESS T=Y&177+200-1.
674 / THEN LOCATIONS T AND X+2 CONTAIN MINUS THE TTY WIDTH.
675 / THE WIDTH MUST BE A MULTIPLE OF 10 AND MUST NOT BE 200.
676 / (BECAUSE -200 IS THE MAGIC 7600)
680 / SEARCH ENTIRE HANDLER FOR INSTRUCTIONS OF THE FORM 6XXY
681 / WHERE XX IS NOT 20 OR 21,
682 / AND FURTHERMORE DON'T INCLUDE A 6031 IF 2 LOCATIONS
683 / FOLLOWING IS A 7650
684 / AND DON'T INCLUDE A 6034 IF 4 LOCATIONS FOLLOWING IS A 7650.
689 / THE WORD INVOLVED IS AT (RELATIVE) LOCATION 120.
690 / SET TO 7440 TO ECHO.
691 / SET TO 7610 TO SUPPRESS ECHOING.
696 / SEARCH LOCATIONS 200-377 FOR A 377. CALL ITS ADDRESS X.
697 / LOOK AT LOCATION X+5.
698 / IF THIS LOCATION IS NOT A 7650, THEN LC TO UC CONVERSION
699 / WAS NOT ENABLED AT ASSEMBLY TIME.
700 / IF THE FEATURE IS ENABLED, CHANGE LOCATION X+5 TO A 7610
701 / TO PREVENT THE CONVERSION. TO ALLOW CONVERSION, SET
702 / LOCATION X+5 BACK TO 7650.
706 / SEARCH LOCATIONS 215-300 FOR A 7450. CALL ITS ADDRESS X.
707 / SET X+3 TO 7640 TO ENABLE ^S, ^Q.
708 / SET X+3 TO 7200 TO DISABLE ^S, ^Q.
711 / SEARCH LOCATIONS 200-300 FOR A 7.
712 / IF NOT FOUND, SIMULATED TABS WAS NOT ENABLED AT ASSEMBLY TIME.
713 / IF FOUND, CALL ITS ADDRESS X.
714 / TO PATCH OUT SIMULATED TABS:
715 / MOVE C(X-12) TO LOCATION X-2
716 / CHANGE LOCATION X+3 TO A 7610
717 / TO RESTORE SIMULATED TABS:
718 / SET LOCATION X-2 TO X-4&77+1200
719 / CHANGE LOCATION X+3 TO A 7640
723 / THE LITERAL 177 MUST REMAIN AT THE END OF PAGE 2
724 / SEARCH LOCATIONS 200-300 FOR A 1377.
725 / IF NOT FOUND, THEN FILL CHARACTERS WERE NOT ENABLED AT ASSEMBLY
726 / TIME. IF FOUND, CALL ITS ADDRESS X.
727 / TO PATCH OUT FILL CHARACTERS, MOVE C(X+3) TO LOCATION X-1.
728 / TO RESTORE FILL CHARACTERS, MOVE C(X+1) TO LOCATION X-1.
732 / SEARCH LOCATIONS 200-377 FOR A 247.
733 / IF NOT FOUND, LOWER CASE FLAGGING WAS NOT ENABLED AT ASSEMBLY TIME.
734 / IF FOUND, CALL ITS ADDRESS X.
735 / TO DISABLE FLAGGING, SET LOCATION X-2 TO A 7200.
736 / TO RE-ENABLE FLAGGING, SET LOCATION X-2 TO A 7640.
740 / SEARCH LOCATIONS 200-300 FOR A 15.
741 / IF NOT FOUND, PAUSING WAS NOT ENABLED AT ASSEMBLY TIME.
742 / IF FOUND, CALL ITS ADDRESS X.
743 / TO DISABLE PAUSING AFTER A FULL SCREEN,
744 / SET LOCATION X-3 TO A 7610.
745 / TO RE-ENABLE PAUSING, SET LOCATION X-3 TO A 7650.
746 / TO SET PAUSE DURATION, SEARCH LOCATIONS 300-377 FOR A 7600,
747 / CALLING ITS ADDRESS X. THEN (MINUS THE) PAUSE DURATION IS AT
752 / THIS IS ONLY APPLICABLE IF SET TTY PAUSE HAS BEEN ASSEMBLED IN
753 / (A 15 CAN BE FOUND ON SECOND PAGE).
754 / NEGATIVE OF HEIGHT MUST BE SET IN BOTH LOCATIONS X+3 AND X+4
755 / WHERE X IS THE ADDRESS OF A 7600 AS IN ABOVE.
758 / SEARCH LOCATIONS 200-377 FOR A 44.
759 / IF NOT FOUND, THEN $ WAS NOT ASSEMBLED INTO TTY HANDLER.
760 / IF FOUND, CALL ITS ADDRESS X.
761 / TO DISABLE PRINTING ESCAPE AS $, SET LOCATION X-4 TO A 'CLA'.
762 / TO CAUSE ESCAPE TO PRINT AS AN ESCAPE, SET LOCATION X-4 TO SZA CLA.
766 / SEARCH LOCATIONS 200-377 FOR 7740.
768 / IF NOT FOUND, USING OLD HANDLER.
769 / CALL ITS ADDRESS X.
770 / IF LOCATION X+1 IS MORE THAN 7000,
771 / THEN UPARROW MODE WAS NOT ASSEMBLED INTO KL8E.
772 / OTHERWISE, TO ALLOW ARROWS, SET LOCATION X+3 TO THE
773 / CONTENTS OF LOCATION X+6.
774 / TO CAUSE CONTROL CHARACTERS TO ECHO AS IS, SET
775 / LOCATION X+3 TO 'SKP CLA'.
776 / NOTE THAT THIS IS A DIFFERENT OPTION THAN ASSEMBLING CTRL=0.
780 /TEST ROUTINE FOR KL8E HANDLER
782 GO, JMS I (TTY /CALL HANDLER
784 1000 /BUFFER AT 01000
787 JMS I (TTY /CALL HANDLER AGAIN
788 4600 /OUTPUT SIX PAGES