File: KL8E.LS of Disk: V50/Source/Source-Listing-PAL-1
(Source file text) 


/SUPER TTY HANDLER VERSION V50		  PAL8-V50X 31-MAY-87 PAGE 1

		/SUPER TTY HANDLER VERSION V50
		/
		/
		/
		/
		/
		/
		/
		/
		/
		/COPYRIGHT  (C)  1980   BY DATAPLAN GMBH, LAUDA, BRD
		/		 AND 2015 W. VAN DER MARK
		/
		/
		/
		/
		/
		/
		/
		/
		/
		/
		/THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE
		/AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DATAPLAN GMBH.
		/DATAPLAN GMBH ASSUMES NO RESPONSIBILITY FOR ANY ERRORS THAT MAY APPEAR
		/IN THIS DOCUMENT.
		/
		/THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO THE PURCHASER
		/UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED
		/(WITH INCLUSION OF DATAPLAN'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH
		/SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DATAPLAN.
		/
		/DATAPLAN GMBH ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY
		/OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY DATAPLAN.
		/
		/
		/
		/
		/
		/
		/
		/
		/
		/
		/
		/W.V.D.MARK, DP CONSULTING, ZUERICH.
		/1-JAN-80

/SUPER TTY HANDLER VERSION V50		  PAL8-V50X 31-MAY-87 PAGE 2



	0000		*0

000000  7777		-1
000001  1314		DEVICE KL8E;DEVICE TTY;0;TTY&177+4000;ZBLOCK 2
000002  7005
000003  2424
000004  3100
000005  0000
000006  4176
000007  0000

		/TWO-PAGE TELETYPE HANDLER FOR OS/8 V3.
		/ON INPUT, RECOGNIZES ^Z, ^C, ^U, RUBOUT (RO)
		/^Z	MEANS END OF INPUT, INSERT ^Z IN BUFFER,
		/	PAD WITH ZEROES, AND ECHO "^Z,CRLF"
		/^C	MEANS ABORT JOB, RETURN TO OS/8 VIA LOC 7600 TO SAVE CORE
		/^U	MEANS DELETE THE LAST LINE, ALLOW OPERATOR TO RETYPE
		/	(LINE STARTS AT BEGIN OF BUFFER AND IS TERMINATED BY A CR)
		/	A CR GETS ENTERED INTO BUFFER, CAUSES A LF TO ALSO ECHO
		/	AND GET ENTERED INTO BUFFER, BUFFER IS THEN PADDED WITH NULLS.
		/RO	DELETES LAST CHARACTER FROM BUFFER, IF BEGIN OF BUFFER
		/	REACHED A CRLF (LIKE ^U) IS GIVEN.
		/	SCOPE RO'S CONSIST IN BS/SPACE/BS.
		/	PAPER RO'S CONSIST IN BS/LINEFEED.

		/ON OUTPUT RECOGNIZES ^C, ^O, ^S, ^Q FROM KEYBOARD
		/^C	CAUSES JOB TO ABORT, RETURN TO OS/8 VIA LOCATION 7600
		/	TO SAVE CORE.
		/^O	CAUSES ECHOING BY THE HANDLER TO CEASE
		/	TYPING ANY OTHER CHARACTER RESUMES ECHOING.
		/^S	CAUSES THE HANDLER TO STOP SENDING TO TERMINAL
		/^Q	(OR ANY OTHER CHAR) RESUMES HANDLER SENDING
		/	AND REENABLES PAUSE IF SCOPE-MODE AFTER ^S.
		/	ANY CHAR GIVEN DURING PAUSE DISABLES PAUSE.

		/WHENEVER PRINTING CHARACTERS (EITHER ON OUTPUT OR WHEN ECHOING),
		/SEVERAL OPTIONS CAN BE ACTIVATED OR NOT.
		/	ALWAYS IGNORES NULLS
		/	CONVERTS LC TO UC OR NOT.
		/	HANDLES TABS CORRECTLY (INCLUDING COLUMN COUNTING)
		/	PRINTS ESCAPE AS $, AS ^[ OR AS ESC.
		/	PRINTS CONTROL CHARACTERS AS "^K" OR UNMODIFIED.
		/	DOES AUTOMATIC CR/LF AT END OF LINE WIDTH.
		/	DELAYS AFTER FORM-FEED IF NON-SCOPE MODE.

	0030		TTYVERSION="X&77

/SUPER TTY HANDLER VERSION V50		  PAL8-V50X 31-MAY-87 PAGE 3



	0001		VT78=1		/SET TO 0 TO ALLOW OTHER PARAMETERS
					/SET TO 1 TO FORCE OTHER PARAMETERS TO VT78 COMPATIBLE

	0001		CTRL=1		/SET TO 1 TO ECHO CONTROL CHARS AS ^K
					/SET TO 0 TO ACCEPT CONTROL CHARACTERS AND PUT
					/IN BUFFER, AS WELL AS ECHO THEM.
	0000		RUB=0		/SET TO 0 TO ECHO EACH RUBOUT BY TYPING BS/LF.
					/SET TO 1 TO PERFORM SCOPE TYPE RUBOUTS: BS/SP/BS
	0001		SIMTAB=1	/SET TO 1 TO SIMULATE TABS AS THE CORRECT NUMBER OF SPACES
					/SET TO 0 TO TYPE TABS AS TABS
	0001		ESC=1		/SET TO 1 TO ECHO ESCAPE AS $
					/SET TO 0 TO ECHO ESCAPE AS A CONTROL CHAR (^[)
	0001		CNVLC=1		/SET TO 1 TO CONVERT LOWER CASE CHARS TO UPPER CASE
					/SET TO 0 TO PRINT LOWER CASE CHARS AS THEY ARE
	0000		PAG=0		/NO CONTROL-S FEATURE ON TTY
	0000		PAUS=0		/NO PAUSE ON TTY
	0110		HEIGHT=110	/NUMBER OF LINES ON TTY PAGE
	0110		WIDTH=110	/TTY WIDTH = 72

			IFNZRO VT78 <
	0001		CTRL=1
	0001		RUB=1
	0000		SIMTAB=0
	0001		ESC=1
	0000		CNVLC=0
	0001		PAG=1		/CONTROL-S FEATURE ON SCOPE
	0100		PAUS=100	/PAUSE ENABLED ON SCOPE
	0030		HEIGHT=30	/NUMBER OF LINES PER SCREEN
	0120		WIDTH=120	/SCOPE WIDTH=80
			>

/SUPER TTY HANDLER VERSION V50		  PAL8-V50X 31-MAY-87 PAGE 4



		/CROSS PAGE LINKAGE:

		/THIS CODE MUST BE ABLE TO LOAD INTO ANY TWO PAGES OF CORE
		/THE ENTRY POINT IS AT THE NEXT LOCATION TO THE END OF THE FIRST PAGE
		/AT THE END OF THE FIRST PAGE WE JMS TO PLINK,
		/THIS LEAVES THE ADDRESS OF THE FIRST LOCATION OF THE NEXT PAGE
		/IN LOCATION 'PLINK' .  THIS JUST HAPPENS TO BE THE ADDRESS
		/OF BOTH TTYPCH AND TTYGCH.

		/TTYPCH AND TTYGCH SHARE THE SAME ENTRY POINT.
		/IF IT IS CALLED WITH A 0 AC, IT IS A CALL TO TTYGCH,
		/IF IT IS CALLED WITH A NON-ZERO AC, IT IS A CALL TO TTYPCH.

		/TTYGCH JUST GETS THE CHARACTER FROM THE KEYBOARD AND
		/CHECKS IF IT IS ^C, IF NOT, IT RETURNS THIS CHAR TO
		/PAGE 1, WHERE THE DIFFERENT INPUT OPTIONS ARE DECODED.

		/TTYPCH TAKES RETURN 1 IF IT WANTS THE HANDLER TO GO AWAY,
		/I.E IF IT SAW A ^Z.
		/IT NORMALLY TAKES RETURN 2 
		/AND TAKES RETURN 3 IF THE LINE OVERFLOWED.

		/WHEN ECHOING WE PREVENT THE ^Z RETURN BY TELLING
		/PAGE 2. (LINK=1 MEANS ECHOING)

/SUPER TTY HANDLER VERSION V50		  PAL8-V50X 31-MAY-87 PAGE 5



	0200		*200

000200  3700	L3700,	3700		/*200
000201  0000	PUNCH,	0		/MAKE SURE AC NON-ZERO
000202  4616		JMS I PLINK	/CALL TTYPCH
000203  5271		JMP	TTYRTN	/RETURN ON OUTPUT
000204  5601		JMP I	PUNCH	/DID WE REACH END OF TTY LINE?:NO
000205  4345		JMS CRLF	/YES, PERFORM CR/LF
000206  5601		JMP I PUNCH	/RETURN

000207  6201	TTYCDF,	CDF 0
000210  0000	BUFSIZ,	0
000211  0000	BUFSTRT,0
000212  0070	TTY70,	70		/*212
000213  0000	TTYCA,	0
000214  0000	TTYWC,	0
000215  6203	CIFCDF,	CIF CDF 0	/*215

000216  0000	PLINK,	0		/GETS ADDRESS OF TTYPCH AND TTYGCH (START OF NEXT PAGE)
000217  7330		STL CLA RAR	/4000
000220  1776		TAD I TTY	/RETRIEVE FUNCTION WORD, BUT PUT R/W BIT IN LINK
000221  0200	TTY200,	AND L3700	/EXTRACT NUMBER OF DOUBLE-WORDS TO TRANSFER
000222  7040		CMA		/GET COUNT+1
000223  3210		DCA BUFSIZ	/STORE AWAY
000224  6214		RDF		/FIND OUT THE USER'S DATA FIELD
000225  1215	TTY215,	TAD CIFCDF	/FORM OUR EXIT CIF CDF
000226  3272		DCA TTYXIT	/STORE AWAY FOR EXIT ROUTINE
000227  1776		TAD I TTY	/GET FUNCTION WORD
000230  0212	TTY212,	AND TTY70	/ISOLATE FIELD OF BUFFER
000231  1207		TAD TTYCDF	/FORM CDF TO FIELD OF BUFFER
000232  3240		DCA TTCDBF	/STORE WHERE IT WILL BE USEFUL
					/AT SAME TIME, INITIALIZE TTYEOF
000233  2376		ISZ TTY		/POINT TO BUFFER ADDRESS
000234  1776		TAD I TTY	/AND GET IT
000235  3211		DCA BUFSTRT	/AND SAVE IT
000236  2376		ISZ TTY		/POINT TO BLOCK #
000237  2376		ISZ TTY		/POINT TO ERROR RETURN
		SHIFT,			/OUTPUT SHIFT REGISTER
		TTYEOF,			/0 IF SAW CR OR ^Z AND WISH TO PAD BUFFER WITH 0'S
000240  7402	TTCDBF,	HLT		/*240 : CDF BUFFER FIELD
000241  5265		JMP TTYKLG
000242  7620	TTYLP,	SNL CLA		/LINK=1 MEANS OUTPUT
000243  5275		JMP TTYGET	/INPUT IS FROM TTY:

/SUPER TTY HANDLER VERSION V50		  PAL8-V50X 31-MAY-87 PAGE 6



		/LINK MUST BE SET FIRST TIME THROUGH HERE.
		/IT ACTS AS A GUARD BIT IN THE SHIFT REGISTER
000244  7006	ROTL,	RTL
000245  7006		RTL
000246  7510		SPA		/DO WE HAVE 8 BITS SHIFTED IN?
000247  5263		JMP TELP
000250  3240		DCA SHIFT	/SAVE SHIFT REGISTER
000251  1611		TAD I BUFSTRT
000252  7440		SZA		/PREVENT ZERO KILLER
000253  4201		JMS PUNCH	/PRINT A CHARACTER
000254  1611		TAD I BUFSTRT
000255  2211		ISZ BUFSTRT	/BUMP INPUT POINTER
000256  7400	TT7400,	7400		/PROTECT ISZ
000257  0256		AND TT7400
000260  7104		CLL RAL
000261  1240	TTY240,	TAD SHIFT	/SHIFT HIGH ORDER 4 BITS INTO
000262  5244		JMP ROTL	/SHIFT REGISTER
000263  4201	TELP,	JMS PUNCH	/PRINT 3RD CHARACTER OF DOUBLE-WORD
000264  7120		STL		/*KLUDGE
000265  2210	TTYKLG,	ISZ BUFSIZ	/DONE?
000266  5242		JMP TTYLP	/NOT YET
000267  1240	TTYX,	TAD TTYEOF	/IF INPUT AND WE WERE PADDING WITH 0'S
000270  7640		SZA CLA		/TAKE SOFT ERROR EXIT
000271  2376	TTYRTN,	ISZ TTY		/POINT TO NORMAL RETURN
					/CAN'T GET ERROR OR END-OF-FILE ON OUTPUT
000272  7402	TTYXIT,	HLT		/RETURN TO USER'S FIELD
000273  5776		JMP I TTY	/RETURN TO USER

/SUPER TTY HANDLER VERSION V50		  PAL8-V50X 31-MAY-87 PAGE 7



000274  4345	CTRLU,	JMS CRLF	/PERFORM A CR/LF
000275  1211	TTYGET,	TAD BUFSTRT
000276  3213		DCA TTYCA	/POINT TO START OF BUFFER
000277  1210		TAD BUFSIZ
000300  7104		CLL RAL		/CONVERT DOUBLE-WORDS TO WORDS
000301  3214	DCAWC,	DCA TTYWC	/SET SIZE OF BUFFER
000302  1240	TSTEND,	TAD TTYEOF
000303  7650		SNA CLA
000304  5306		JMP ZERO
000305  4616		JMS I PLINK	/CALL TTYGCH TO GET A CHARACTER
000306  1221	ZERO,	TAD	TTY200	/SET BIT 200 CONVENTION
000307  3613		DCA I TTYCA	/STORE AWAY TEMPORARILY
					/USING USER'S BUFFER AS A TEMP LOCATION
000310  7321		CLA IAC STL	/SET LINK FOR ECHO
000311  1613		TAD I	TTYCA	/GET FOR RO TEST (377+1=400)
000312  1256		TAD	TT7400	/=-400
000313  7650		SNA CLA
000314  5355		JMP	RUBOUT	/WE HAVE A RO
			IFNZRO ECHO <
000315  1613		TAD I TTYCA>	/GET BACK CHARACTER
			IFZERO ECHO <
			SKP>		/*NO ECHO
000316  4201		JMS PUNCH	/ECHO IT
000317  1613		TAD I	TTYCA	/AND AGAIN FOR CTRL Z TEST
000320  1353		TAD	M232
000321  7450		SNA
000322  3240		DCA	TTYEOF	/EOF: SET ZERO FILL
000323  7450		SNA
000324  4345		JMS	CRLF	/AND POLISH PAGING
000325  1350		TAD	TTY5	/^Z-^U
000326  7450		SNA 		/IS IT ^U?
000327  5274		JMP CTRLU	/YES
000330  1333		TAD TTY7
000331  3345		DCA TMP
000332  2213		ISZ TTYCA	/NO
000333  0007	TTY7,	7
000334  2214		ISZ TTYWC	/IS BUFFER FULL?
000335  7410	TTY10,	SKP
000336  5267		JMP TTYX
000337  2345		ISZ	TMP	/WAS LAST CHAR A CR?
000340  5302		JMP TSTEND	/NO
000341  3240		DCA TTYEOF	/YES, SET "PAD WITH 0'S" FLAG
000342  2376		ISZ TTY		/POINT TO NORMAL RETURN
					/CR IS NOT AN ERROR OR END-OF-FILE
000343  1230		TAD TTY212	/IF LAST CHAR INPUT WAS CR, NOW PRETEND LF WAS INPUT
000344  5307		JMP ZERO+1	/REJOIN PROCESSING

/SUPER TTY HANDLER VERSION V50		  PAL8-V50X 31-MAY-87 PAGE 8



		TMP,
000345  0000	CRLF,	0
000346  1225		TAD TTY215
000347  4616		JMS I PLINK	/CALL TTYPCH TO PRINT CR
000350  0005	TTY5,	5		/*EOF AND EOL IMPOSSIBLE
000351  1230		TAD TTY212
000352  4616		JMS I PLINK	/CALL TTYPCH TO PRINT LF
000353  7546	M232,	-232		/*EOF AND EOL IMPOSSIBLE
000354  5745		JMP I CRLF	/RETURN

000355  1213	RUBOUT,	TAD TTYCA
000356  7041		CIA
000357  1211		TAD BUFSTRT
000360  7650		SNA CLA		/ARE WE AT BEGIN OF BUFFER?
000361  5274		JMP CTRLU	/YES
000362  7240		STA
000363  1213		TAD TTYCA	/NO; SET POINTER BACK ONE
000364  3213		DCA TTYCA
000365  1335		TAD	TTY10
000366  4201		JMS	PUNCH
			IFNZRO RUB <	/SCOPE TYPE RUBOUT:
000367  1261		TAD	TTY240>	/BACKSPACE-SPACE-BACKSPACE
			IFZERO RUB <	/PAPER TYPE RUBOUT:
			TAD	TTY212>	/BACKSPACE-LINEFEED
000370  4201		JMS	PUNCH
			IFNZRO RUB <
000371  1335		TAD	TTY10>
			IFZERO RUB <
			SKP>
000372  4201		JMS	PUNCH
000373  7240		STA
000374  1214		TAD TTYWC
000375  5301		JMP DCAWC	/BUMP BACK WC AND GET ANOTHER CHAR

			ZBLOCK 376-.
000376  0030	TTY,	TTYVERSION	/ENTRY POINT TO HANDLER
000377  4216		JMS PLINK	/SET UP CROSS PAGE LINKAGE
			IFNZRO TTY-376 <ENTERR,QQQQ>
	0400		PAGE

/SUPER TTY HANDLER VERSION V50		  PAL8-V50X 31-MAY-87 PAGE 9



		/INTERLUDE:

		/USA STANDARD CODE FOR INFORMATION INTERCHANGE:

		/ XX		XX0	XX1	XX2	XX3	XX4	XX5	XX6	XX7
		/		000	001	010	011	100	101	110	111
		/
		/ 00	0000	NUL	SOH	STX	ETX	EOT	ENQ	ACK	BEL
		/
		/ 01	0001	BS	HT	LF	VT	FF	CR	SO	SI
		/
		/ 02	0010	DLE	DC1	DC2	DC3	DC4	NAK	SYN	ETB
		/
		/ 03	0011	CAN	EM	SUB	ESC	FS	GS	RS	US
		/
		/ 04	0100	SP	!	"	#	$	%	&	'
		/
		/ 05	0101	(	)	*	+	,	-	.	/
		/
		/ 06	0110	0	1	2	3	4	5	6	7
		/
		/ 07	0111	8	9	:	;	<	=	>	?
		/
		/ 10	1000	@	A	B	C	D	E	F	G
		/
		/ 11	1001	H	I	J	K	L	M	N	O
		/
		/ 12	1010	P	Q	R	S	T	U	V	W
		/
		/ 13	1011	X	Y	Z	[	\	]	^	_
		/
		/ 14	1100	`	a	b	c	d	e	f	g
		/
		/ 15	1101	h	i	j	k	l	m	n	o
		/
		/ 16	1110	p	q	r	s	t	u	v	w
		/
		/ 17	1111	x	y	z	{	|	}	~	DEL
		/

/SUPER TTY HANDLER VERSION V50		  PAL8-V50X 31-MAY-87 PAGE 10



		/MUST BE AT TOP OF PAGE
		TTYPCH,			/ENTRY POINT TO TTY PRINT ROUTINE
000400  0000	TTYGCH,	0		/ENTRY POINT TO TTY GET CHAR ROUTINE
000401  7450		SNA
000402  5302		JMP	TGCH	/ZERO AC-MEANT CALL TO TTYGCH
000403  0336	TTYUPA,	AND	TT177	/REDUCE TO 7 BIT (ECHO:L=1)
000404  1377		TAD	(-33
000405  7450		SNA		/IS IT ESC?
			IFNZRO ESC <
000406  1337		TAD	TT11>	/YES CONVERT TO $
			IFZERO ESC <
			NOP>		/*ESC
000407  7001		IAC		/TEST CTRL Z
000410  7430		SZL		/ECHO NOW L=0:DON'T MAKE EOF RETURN
000411  7440		SZA		/IF 0:EOF; RETURN ON EOF,NO ECHO
000412  7410		SKP
000413  5600		JMP I	TTYPCH	/CTRL Z RETURN
000414  1345		TAD	TT32
000415  3275		DCA	TCHAR	/THIS IS OUR CHAR
000416  2200		ISZ	TTYPCH	/SET TO NORMAL RETURN
			IFNZRO PAUS <
000417  1343		TAD	PAUSN
000420  3264		DCA	TTYTLS>	/SET PAUSE DELAY
			IFZERO PAUS <
			SNL		/IF ECHO DON'T KSF
			JMP	ECHO>
000421  1337		TAD	TT11
000422  7140	TTY140,	CMA CLL		/=-12
000423  1275	TTC,	TAD	TCHAR	/GET CHAR BACK FOR PAGE TEST
000424  7650		SNA CLA		/LOOK FOR LF
000425  2301		ISZ LINCNT	/GOT LF. AT END OF PAGE?
000426  1301		TAD	LINCNT	/NOT AT END OR NO LF: AC=C(LINCNT)
000427  6031	PAUSL,	KSF		/3-WAY BRANCH
			IFNZRO PAUS <
000430  5327		JMP	WAIT>	/WAIT IF AC=0.
			IFZERO PAUS <
			JMP	NOPAUS>	/*NO PAUSE
000431  4307		JMS	TTYTST	/GET KEYBOARD CHAR AND CLA
000432  1223		TAD	TTC	/GET 'TAD TCHAR'
000433  3250		DCA	ECHO	/RESTORE *KLUDGE
000434  1264		TAD	TTYTLS	/GET INPUT CHAR
000435  1376		TAD	(-17
000436  7450		SNA		/^O?
000437  3250		DCA	ECHO	/YES, SET *KLUDGE FOR EXIT
000440  1351		TAD	TTM4	/NO (17-23=-4)
000441  7640	M140,	SZA CLA		/^S?
000442  5245		JMP	NOPAUS	/NO, IGNORE CHAR
000443  6031		KSF
			IFNZRO PAG <
000444  5243		JMP	.-1>	/WAIT FOR SOME CHAR
			IFZERO PAG <
			NOP>		/*NO PAUSE
000445  7450	NOPAUS,	SNA		/IF C(LINCNT)=0

/SUPER TTY HANDLER VERSION V50		  PAL8-V50X 31-MAY-87 PAGE 10-1

000446  1300		TAD	PAGSIZ	/RESET FOR NEXT PAGEFUL
000447  3301		DCA	LINCNT
000450  1275	ECHO,	TAD	TCHAR	/*K* OR 0 TO RETURN ON ^O
000451  7450		SNA
000452  5600		JMP I	TTYPCH	/IGNORE NULLS

/SUPER TTY HANDLER VERSION V50		  PAL8-V50X 31-MAY-87 PAGE 11



000453  1376		TAD	(-17	/AT CR+2=SO+1
000454  7100	TTY100,	CLL
000455  1344		TAD	TT7
000456  7420		SNL
000457  7344		CLL STA RAL	/-2 WILL BECOME +2 FOR 'TNORM'
000460  7040		CMA		/CONTROL -, NORMAL +1
000461  7104		CLL RAL		/CONTROL -2*, NORMAL +2
000462  1341		TAD	TTJUMP	/'JMP TTSET'
000463  3264		DCA	TTYTLS	/AND FALL INTO JUMP

000464  0000	TTYTLS,	0
000465  6046		TLS
000466  7600	TT7600,	7600		/CLEAR AC
000467  6041		TSF
000470  5267		JMP .-1
000471  2277		ISZ	TABCTR	/END OF LINE?
000472  5664		JMP I TTYTLS	/NO: NORMAL RETURN
000473  2200		ISZ	TTYPCH	/YES: EOL RETURN
000474  5664		JMP I	TTYTLS

000475  0000	TCHAR,	0
000476  7657	LINSIZ,	-WIDTH-1	/-1 BECAUSE CR WILL INC ONCE
000477  7660	TABCTR,	-WIDTH
000500  7750	PAGSIZ,	-HEIGHT
000501  7750	LINCNT,	-HEIGHT

000502  6031	TGCH,	KSF		/NON-ZERO MEANS TTYGCH WAS CALLED
000503  5302		JMP .-1		/WAIT FOR CHAR TO BE TYPED
000504  4307		JMS TTYTST	/GET CHAR AND CLA
000505  1264		TAD	TTYTLS
000506  5600		JMP I TTYGCH	/TAKE ONLY RETURN

000507  0000	TTYTST,	0		/'KRB' WILL CLEAR AC
000510  6036		KRB		/FLAG IS UP
000511  0336		AND	TT177
000512  3264		DCA	TTYTLS	/KEEP INPUT
000513  7346		CLL STA RTL	/CTRL C?
000514  1264		TAD	TTYTLS
000515  7640		SZA CLA
000516  5707		JMP I	TTYTST	/NO
000517  6203		CIF CDF 0	/BRANCH TO OS/8 MONITOR AT 07600
000520  5666		JMP I	TT7600

/SUPER TTY HANDLER VERSION V50		  PAL8-V50X 31-MAY-87 PAGE 12



000521  1203	TUPA,	TAD TTYUPA	/ECHO 201-237 AS ^X (EXCEPT 210-216)
000522  4264		JMS TTYTLS
000523  1254	TCONV,	TAD TTY100	/ADD X100 TO ^K TO GET K
000524  1275	PRIN,	TAD TCHAR
000525  4264		JMS TTYTLS
000526  5600	TKILL,	JMP I	TTYPCH	/*K* OR ZEROED BY FF

			IFZERO PAUS <	/IF FF FALL INTO HERE FROM PRINT
			TAD	TTJRT	/RESTORE 'JMP I TTYPCH'
			DCA	TKILL
			ISZ	TCHAR	/MAKE 'CR' OUT OF 'FF'
			JMS	TTYTLS	/PRINT NULLS
			ISZ	LINCNT	/TILL PAGE HAS HAD TIME
			JMP	.-2	/TO POSITION
			JMP	NOPAUS>	/RESET LINE AND CR RESET COLUMN

			IFNZRO PAUS <
000527  7440	WAIT,	SZA		/IF AC=0, WAIT
000530  5245		JMP	NOPAUS	/C(LINCNT) IN AC
000531  2301		ISZ	LINCNT
000532  5331		JMP	.-1	/WAIT 18MS
000533  2264		ISZ	TTYTLS	/OUTER LOOP
000534  5227		JMP	PAUSL	/CHECK FLAG
000535  5245		JMP	NOPAUS>	/RESET LINCNT TO PAGE SIZE

/SUPER TTY HANDLER VERSION V50		  PAL8-V50X 31-MAY-87 PAGE 13



000536  0177	TT177,	177		/'SO' ENTRY POINT
000537  0011	TT11,	11		/FALL THRU TO 'CR'
000540  1276	CR,	TAD	LINSIZ	/CR AND SO RESET COLUMN COUNTER
000541  5354	TTJUMP,	JMP	TTSET
			IFNZRO PAUS <	/IGNORE 'FF' ON SCOPE
000542  7410	FF,	SKP
000543  7700	PAUSN,	-PAUS>
			IFZERO PAUS <	/FORCE 'FF' DELAY ON LA36
		FF,	DCA	TKILL	/FALL OUT OF PRINT AFTER FF
		PAUSN,	JMP	TTSET>	/PAGE MAY BE LONGER THAN LINE
000544  0007	TT7,	7		/'VT' ENTRY POINT
000545  0032	TT32,	32		/VT FALL ON LF
000546  7240	LF,	STA		/LF NO MOVE OF 'TABCTR'
000547  5353		JMP	BS+1
000550  5367	TAB,	JMP	TTYTAB
000551  7774	TTM4,	-4
000552  7344	BS,	CLL STA RAL	/-2
000553  1277		TAD TABCTR
000554  3277	TTSET,	DCA	TABCTR
000555  5324		JMP	PRIN
000556  1275	TNORM,	TAD TCHAR	/NORMAL ENTRY: GET BACK CHAR
000557  0222		AND TTY140	/HIGH ORDER BITS IRRELEVANT
000560  7450		SNA
			IFNZRO CTRL <
000561  5321		JMP	TUPA>	/A CONTROL CHARACTER
			IFZERO CTRL <
			JMP	LF>	/*NO ARROW (NO TABCTR MOVE)
000562  1241		TAD	M140	/BUT IS IT LC?
			IFNZRO CNVLC <
			SZA CLA>
			IFZERO CNVLC <
000563  7600		7600>		/*LC
000564  5324		JMP	PRIN	/NO PRINT UC
000565  1241		TAD	M140	/YES, CONVERT TO UC
000566  5323		JMP	TCONV	/-140+100=-40

/SUPER TTY HANDLER VERSION V50		  PAL8-V50X 31-MAY-87 PAGE 14



			IFZERO SIMTAB <
000567  1344	TTYTAB,	TAD	TT7
000570  7040		CMA		/MAKES 7770 MASK
000571  0277		AND	TABCTR	/GO BACK TO THIS TAB STOP
000572  1344		TAD	TT7	/ADD 7 AND...
000573  3277		DCA	TABCTR
000574  5324		JMP	PRIN>	/1 FROM TAB TO NEXT TAB STOP

			IFNZRO SIMTAB <
		TTYTAB,	TAD	M140	/USE AS SPACE
			JMS TTYTLS	/ALWAYS ONE MOVE
			TAD TABCTR
			AND TT7
			SZA CLA		/ARE WE AT NEXT TAB STOP?
			JMP TTYTAB>	/NO, ANOTHER SPACE PLEASE!
000575  5600	TTJRT,	JMP I	TTYPCH	/YES, GET OUT
000576  7761
000577  7745
			$$$

/SUPER TTY HANDLER VERSION V50		  PAL8-V50X 31-MAY-87 PAGE 15

BS     0552      TTYGET 0275      
BUFSIZ 0210      TTYKLG 0265      
BUFSTR 0211      TTYLP  0242      
CIFCDF 0215      TTYPCH 0400      
CNVLC  0000      TTYRTN 0271      
CR     0540      TTYTAB 0567      
CRLF   0345      TTYTLS 0464      
CTRL   0001      TTYTST 0507      
CTRLU  0274      TTYUPA 0403      
DCAWC  0301      TTYVER 0030      
ECHO   0450      TTYWC  0214      
ESC    0001      TTYX   0267      
FF     0542      TTYXIT 0272      
HEIGHT 0030      TTY10  0335      
LF     0546      TTY100 0454      
LINCNT 0501      TTY140 0422      
LINSIZ 0476      TTY200 0221      
L3700  0200      TTY212 0230      
M140   0441      TTY215 0225      
M232   0353      TTY240 0261      
NOPAUS 0445      TTY5   0350      
PAG    0001      TTY7   0333      
PAGSIZ 0500      TTY70  0212      
PAUS   0100      TT11   0537      
PAUSL  0427      TT177  0536      
PAUSN  0543      TT32   0545      
PLINK  0216      TT7    0544      
PRIN   0524      TT7400 0256      
PUNCH  0201      TT7600 0466      
ROTL   0244      TUPA   0521      
RUB    0001      VT78   0001      
RUBOUT 0355      WAIT   0527      
SHIFT  0240      WIDTH  0120      
SIMTAB 0000      ZERO   0306      
TAB    0550      
TABCTR 0477      
TCHAR  0475      
TCONV  0523      
TELP   0263      
TGCH   0502      
TKILL  0526      
TMP    0345      
TNORM  0556      
TSTEND 0302      
TTC    0423      
TTCDBF 0240      
TTJRT  0575      
TTJUMP 0541      
TTM4   0551      
TTSET  0554      
TTY    0376      
TTYCA  0213      
TTYCDF 0207      
TTYEOF 0240      
TTYGCH 0400      



ERRORS DETECTED: 0
LINKS GENERATED: 0