File: TECOVT.LS of Disk: V50/Source/Source-Listing-MAC-2
(Source file text) 

/6G VT52 Support for OS/8 TECO V  MACREL-V2C  FRI 07-DEC-90  PAGE 1
                                                 FILE # 1

   1			/6G VT52 Support for OS/8 TECO V50
   2			
   3			/MEMORY NOTES: (only applies if scope is VT52 or VT100)
   4			
   5			/MEMORY		'MEMSIZ'	big	res	vt	BATCH
   6			
   7			/  8K		0		no	no	no	?
   8			/ 12K		1		yes	no	no	no	no	no
   9			/ 16K		2		yes	no	yes	yes	no	no
  10			/ 20K		3		yes	yes	yes	yes	no	yes
  11			/ 24K		4		yes	yes	yes	yes	yes	yes
  12			
  13			/Notes:
  14			
  15			/	big	means text buffer and Q-register space get bigger
  16			/	res	means overlays are resident and get extended error msgs
  17			/	vt	means get VT support
/6G VT52 Support for OS/8 TECO V  MACREL-V2C  FRI 07-DEC-90  PAGE 2
                                                 FILE # 1

  18			
  19				/JR 2-Oct-78	for Mario
  20				/JR 4-Oct-78	Put in type-ahead feature
  21				/JR 23-Nov-78	Convert to MACREL
  22				/JR 25-Dec-78	Fix ^S, ^C trapping, fix scope classification
  23				/SR 06-JAN-79	Added CIF4B, CIF4C, removed CDF4D, CDF4E
  24				/SR 02-Mar-79	read with no wait plus miscellaneous
  25				/SR 09-Mar-79	Fixed 16K bug
  26				/SR 08-Apr-79	Made 'update factor' default to 1 not 4
  27			
  28				.EXTERN	P,ZZ,N,NFLG,CTLWR,OUTDNE,ERR34
  29				.EXTERN	CHKCTR,TYIRET,GETQX,VPATCH,VT52D,VT52KL
  30				.GLOBAL	SWATCH,VTCHKC,VTYI,VTGETQ,VTCCB
  31				.GLOBAL	CUR
  32				.EXTERN	TPUTX,CHKCTC,NCOM
  33			
  34		0030  		CUR=	30	/Define field of VT52 routine
  35			
  36		0030  		VSIZE=	30	/Number of lines on screen
  37		0120  		HSIZE=	120	/Number of characters per line on screen
  38			
  39		3000  		TTYBEG=	3000	/Start of type ahead buffer for Teco
  40		3600  		TTYEND=	3600	/End of type ahead buffer
  41			
  42		3600  		CHKBUF=	TTYEND	/Define match buffer for screen alignment
  43			
  44		4000  		MAPST=	4000		/Start of phantom screen
  45		3600  		MAPSZ=	VSIZE^HSIZE	/Size of phantom screen
  46		7600  		MAPND=	MAPST+MAPSZ	/End of phantom screen
/6G VT52 Support for OS/8 TECO V  MACREL-V2C  FRI 07-DEC-90  PAGE 3
                                                 FILE # 1

  47			
  48		0200  		.ASECT	VWATCH
  49			
  50		0001  		FIELD	1	/Set the field now
  51			
  52		0010  		*10
  53	 10010	0000  	BXR,	0
  54	 10011	0000  	CXR,	0
  55			
  56		0020  		*20
  57	 10020	0000  	MAPCOL,	0		/Current logical column in phantom screen
  58	 10021	0000  	MAPPTR,	0		/Absolute pointer to current char pos in phantom screen
  59	 10022	0000  	CURLIN,	0		/Video line where cursor goes
  60	 10023	0000  	CURCOL,	0		/Video column where cursor goes
  61	 10024	0000  	CURPTR,	0		/Absolute ptr to char pos under cursor in phantom screen
  62	 10025	0000  	VIDLIN,	0		/Physical cursor position on terminal
  63	 10026	0000  	VIDCOL,	0		/Physical cursor colunm on terminal
  64	 10027	0000  	TXTPTR,	0		/Pointer to Teco's text buffer during text expansion
  65	 10030	0000  	CHRCNT,	0		/One's complement count of chars to do in text buffer
  66	 10031	0000  	PTRTXT,	0		/Text buffer pointer
  67	 10032	0000  	LINBAS,	0		/Absolute addr of start of current line in map
  68	 10033	0000  	LINPTR,	0
  69	 10034	0000  	UNDERC,	0		/-addr of P for flagging saving of cursor parameters
  70	 10035	0000  	CRSLIN,	0		/Line we are currently putting cursor at
  71	 10036	0000  	LINCNT,	0		/Logical line being processed
  72	 10037	0000  	RTMOST,	0		/Saves rightmost col used in current line
  73	 10040	0000  	CHKLIN,	0		/Line current being used for screen alignment matching
  74	 10041	0000  	CHKFLG,	0		/Flag set -1 if a line has been saved
  75	 10042	0000  	ZZSAV,	0
  76	 10043	0000  	PSAV,	0
  77	 10044	0000  	CHKPTR,	0
  78	 10045	0000  	OUTCHR,	0		/Points to current output routine during text expansion
  79	 10046	0000  	OUTBLN,	0		/Points to current line blanking routine
  80	 10047	0020  	NWATCH,	20		/User selected cursor line number
  81	 10050	0000  	INITFL,	0		/Set -1 if state of screen is known
  82	 10051	0000  	CNT,	0
  83	 10052	0000  	PTR,	0
  84	 10053	0000  	OFFSET,	0		/Char offset of current screen alignment attempt
  85	 10054	0000  	LOFFST,	0		/Line offset of current screen alignment attempt
  86			
  87			/REGISTERS FOR VT ROUTINES
  88	 10055	0000  	TYIFLG,	0		/Keyboard wait flag
  89	 10056	0000  	KCHAR,	0		/Temp input character
  90	 10057	3000  	TTYINP,	TTYBEG		/TA Input pointer
  91	 10060	3000  	TTYOUP,	TTYBEG		/TA Output pointer
  92	 10061	0000  	QSAVE,	0		/GETQ Address temp
  93	 10062	0244  	DPOLL,	KBDCHK		/Indirect for POLL
  94	 10063	0000  	TIMOUT,	0
  95			
  96	 10064	0000  	POLL,	0		/Check keyboard (specially XOF)
  97	 10065	3063  		DCA	TIMOUT	/Reset timout
  98	 10066	3055  		DCA	TYIFLG	/Enable ^O and ^S check
  99	 10067	4462  	LPOLL,	JMS I	DPOLL
 100	 10070	1100  		TAD	VTM20	/Was it XOF-3?
 101	 10071	7640  		SZA CLA
/6G VT52 Support for OS/8 TECO V  MACREL-V2C  FRI 07-DEC-90  PAGE 3-1
                                                 FILE # 1

 102	 10072	5464  		JMP I	POLL	/No, go back to update screen
 103	 10073	2063  		ISZ	TIMOUT	/We hope to get a XON
 104	 10074	5067  		JMP	LPOLL	/Not yet! Approx. 400msec timout
 105	 10075	5464  		JMP I	POLL
 106			
 107			/SOME CONSTANTS
 108	 10076	0177  	VT177,	177
 109	 10077	0077  	VT77,	77
 110	 10100	7760  	VTM20,	-20
 111	 10101	0040  	VT40,	40
 112	 10102	7775  	VTM3,	-3
 113	 10103	0007  	VT7,	7
 114	 10104	0004  	VT4,	4
/6G VT52 Support for OS/8 TECO V  MACREL-V2C  FRI 07-DEC-90  PAGE 4
                                                 FILE # 1

 115			
 116				/Type ahead routines for Teco
 117			
 118		0200  		*200
 119			
 120	 10200	4244  	VTCHKC,	JMS	KBDCHK	/See if key hit
 121	 10201	6203  		CIF CDF		/Nothing special, just exit
 122	 10202	5777  		JMP I	(CHKCTR	/*K* AC set to 14 if ^O hit
 123			
 124	 10203	7001  	VTYILP,	IAC		/Set keyboard wait flag
 125	 10204	3055  	VTYI,	DCA	TYIFLG	/Clear flag first time through
 126	 10205	4232  		JMS	TAHCHK	/Check if input pending
 127	 10206	5221  		JMP	3$	/Type-ahead buffer is empty
 128	 10207	3055  		DCA	TYIFLG	/Clear flag again
 129	 10210	1060  		TAD	TTYOUP	/Bump output pointer now
 130	 10211	1376  		TAD	(-TTYEND+1 /Mod size of buffer
 131	 10212	7450  		SNA
 132	 10213	1375  		TAD	(TTYBEG-TTYEND
 133	 10214	1374  		TAD	(TTYEND
 134	 10215	3060  		DCA	TTYOUP
 135	 10216	1460  		TAD I	TTYOUP	/Pick up char
 136	 10217	6203  	2$:	CIF CDF		/Exit with it
 137	 10220	5773  		JMP I	(TYIRET
 138			
 139	 10221	6201  	3$:	CDF	0
 140	 10222	1772  		TAD I	(ETFLAG	/Check if want read with no wait
 141	 10223	6231  		CDF	30
 142	 10224	0101  		AND	VT40
 143	 10225	7650  		SNA CLA
 144	 10226	5203  		JMP	VTYILP	/No, loop
 145	 10227	3055  		DCA	TYIFLG	/Yes
 146	 10230	7240  		STA		/Should really check that echo is off ***
 147	 10231	5217  		JMP	2$
 148			
 149	 10232	0000  	TAHCHK,	0		/Check for input
 150	 10233	4244  		JMS	KBDCHK	/Sample keyboard flag
 151	 10234	7200  		CLA		/Clear ^O if any
 152	 10235	1057  		TAD	TTYINP	/See if anything in buffer
 153	 10236	7041  		CIA
 154	 10237	1060  		TAD	TTYOUP
 155	 10240	7100  		CLL
 156	 10241	7640  		SZA CLA
 157	 10242	2232  		ISZ	TAHCHK	/Skp if yes
 158	 10243	5632  		JMP I	TAHCHK	/First return if no (Link cleared)
/6G VT52 Support for OS/8 TECO V  MACREL-V2C  FRI 07-DEC-90  PAGE 5
                                                 FILE # 1

 159			
 160				/Catch type ahead chars
 161			
 162	 10244	0000  	KBDCHK,	0
 163	 10245	6031  		KSF		/*M8 CHANGED TO 'CLA'
 164	 10246	5644  		JMP I	KBDCHK	/Just exit if no flag	
 165	 10247	4315  		JMS	CTCTST	/Test for ^C hit
 166	 10250	7200  		CLA
 167	 10251	1055  		TAD	TYIFLG	/Test if called during keyboard wait
 168	 10252	7640  		SZA CLA		/Skp if no
 169	 10253	5266  		JMP	NOTOUT	/Else handle normally
 170	 10254	4315  		JMS	CTCTST	/Test keyboard
 171	 10255	1371  		TAD	(3-17	/Test if ^O
 172	 10256	7440  		SZA
 173	 10257	1370  		TAD	(17-23	/Test if ^s
 174	 10260	7640  		SZA CLA		/Skp if either
 175	 10261	5266  		JMP	NOTOUT
 176	 10262	1057  	KBDCTO,	TAD	TTYINP	/Clear type ahead buffer if ^O
 177	 10263	3060  		DCA	TTYOUP
 178	 10264	4315  		JMS	CTCTST	/Re test keyboard
 179	 10265	5644  		JMP I	KBDCHK	/Return
 180			
 181	 10266	6036  	NOTOUT,	KRB		/Reload char
 182	 10267	0076  		AND	VT177
 183	 10270	3056  		DCA	KCHAR
 184	 10271	1057  		TAD	TTYINP	/Bump pointer first, see if room
 185	 10272	1376  		TAD	(-TTYEND+1
 186	 10273	7450  		SNA
 187	 10274	1375  		TAD	(TTYBEG-TTYEND
 188	 10275	1374  		TAD	(TTYEND
 189	 10276	7041  		CIA
 190	 10277	1060  		TAD	TTYOUP
 191	 10300	7450  		SNA
 192	 10301	5310  		JMP	NOROOM	/No room, sound bell to warn him
 193	 10302	7041  		CIA
 194	 10303	1060  		TAD	TTYOUP	/Fix ptr
 195	 10304	3057  		DCA	TTYINP	/And update it
 196	 10305	1056  		TAD	KCHAR	/Now store char
 197	 10306	3457  		DCA I	TTYINP
 198	 10307	5245  		JMP	KBDCHK+1 /Check keyboard again and exit
 199	 10310	1103  	NOROOM,	TAD	VT7	/Send ^G
 200	 10311	6041  		TSF
 201	 10312	5311  		JMP	.-1
 202	 10313	6046  		TLS
 203	 10314	5644  		JMP I	KBDCHK	/Return AC=7 So what
/6G VT52 Support for OS/8 TECO V  MACREL-V2C  FRI 07-DEC-90  PAGE 6
                                                 FILE # 1

 204			
 205	 10315	0000  	CTCTST,	0
 206	 10316	6034  		KRS		/Sample keyboard
 207	 10317	0076  		AND	VT177
 208	 10320	1102  		TAD	VTM3	/Test if ^C
 209	 10321	7440  		SZA
 210	 10322	5715  		JMP I	CTCTST	/Return if no with remainder in AC
 211	 10323	6201  	KBDCTC,	CDF		/Test if ET flagging ^C intercept
 212	 10324	7330  		CLA STL RAR
 213	 10325	1772  		TAD I	(ETFLAG
 214	 10326	7510  		SPA		/Skp if was set
 215	 10327	5333  		JMP	CCTRAP	/Else trap normally
 216	 10330	3772  		DCA I	(ETFLAG
 217	 10331	6231  		CDF	CUR
 218	 10332	5266  		JMP	NOTOUT	/Buffer the ^C char
 219	 10333	7200  	CCTRAP,	CLA
 220	 10334	1057  		TAD	TTYINP	/Clear buffer if ^C abort
 221	 10335	3060  		DCA	TTYOUP
 222	 10336	6203  		CIF CDF		/Branch out to Teco's ^C trap
 223	 10337	5767  		JMP I	(ERR34
/6G VT52 Support for OS/8 TECO V  MACREL-V2C  FRI 07-DEC-90  PAGE 7
                                                 FILE # 1

 224			
 225	 10340	0000  	VTCCB,	0		/Check if input pending (^] command)
 226	 10341	3055  		DCA	TYIFLG	/We want to service XON/XOF
 227	 10342	4232  		JMS	TAHCHK	/Is typahead buffer filled?
 228	 10343	7360  		STL STA		/No give back -1
 229	 10344	6203  		CIF CDF 0	/Yes give back 0
 230	 10345	5766  		JMP I	(NCOM	/As numeric argument
 231			
 232	 10346	3061  	VTGETQ,	DCA	QSAVE	/Save addr passed in AC
 233	 10347	6031  		KSF
 234	 10350	5357  		JMP	OKGETQ	/Jmp if no interrupt
 235	 10351	6034  		KRS		/Fudge, don't allow ^C trap since it may not be safe
 236	 10352	0076  		AND	VT177
 237	 10353	1102  		TAD	VTM3
 238	 10354	7640  		SZA CLA		/Skp to pretend we didn't really see it
 239	 10355	4244  		JMS	KBDCHK	/Ok, buffer the character
 240	 10356	7200  		CLA
 241	 10357	6221  	OKGETQ,	CDF	20
 242	 10360	1461  		TAD I	QSAVE	/Now get word from q reg space
 243	 10361	6203  		CIF CDF		/Ready to exit now
 244	 10362	5765  		JMP I	(GETQX+4/Done
 245			
	------
	 10365	0004 *
	 10366	0000 *
	 10367	0000 *
	 10370	7774  
	 10371	7764  
	 10372	0000 *
	 10373	0000 *
	 10374	3600  
	 10375	7200  
	 10376	4201  
	 10377	0000 *
 246		0400  		PAGE
/6G VT52 Support for OS/8 TECO V  MACREL-V2C  FRI 07-DEC-90  PAGE 8
                                                 FILE # 1

 247			
 248			/change these to -4 (or any other value) to cause VT support
 249			/to delay this many characters if there is type-ahead
 250			
 251	 10400	7777  	FUDKNT,	-1		/ORIGINAL VALUE
 252	 10401	7777  	FUDCNT,	-1		/COUNTER
 253			
 254				/VT52 scope "WATCH" processor proper
 255			
 256	 10402	7300  	SWATCH,	CLA CLL
 257	 10403	6201  		CDF		/Make copies of buffer info
 258	 10404	1777  		TAD I	(P
 259	 10405	3043  		DCA	PSAV
 260	 10406	1776  		TAD I	(ZZ
 261	 10407	3042  		DCA	ZZSAV
 262	 10410	2775  		ISZ I	(NFLG	/Skp if numeric arg passed
 263	 10411	5214  		JMP	2$	/Jmp if no, use old arg
 264	 10412	1774  		TAD I	(N	/Pick up arg
 265	 10413	7410  		SKP
 266	 10414	1047  	2$:	TAD	NWATCH	/Pick up old arg
 267	 10415	7510  		SPA		/Skp if just setting number of lines to watch
 268	 10416	5222  		JMP	DOSTUF	/Go do real work
 269	 10417	3047  		DCA	NWATCH	/Save the arg
 270	 10420	6203  	VTEXIT,	CIF CDF
 271	 10421	5773  		JMP I	(CTLWR	/And exit
 272	 10422	7140  	DOSTUF,	CLL CMA
 273	 10423	7450  		SNA		/Skp if should erase top N lines of screen
 274	 10424	5252  		JMP	2$	/Else just update screen
 275	 10425	6231  		CDF	CUR	/Reset df now
 276	 10426	1372  		TAD	(-VSIZE	/Force in range [1,VSIZE]
 277	 10427	7430  		SZL
 278	 10430	7200  		CLA
 279	 10431	1371  		TAD	(VSIZE
 280	 10432	7041  		CIA
 281	 10433	3333  		DCA	VCNT	/Set line counter
 282	 10434	1370  		TAD	(MAPST-1 /Set auto XR to phantom screen
 283	 10435	3010  		DCA	BXR
 284	 10436	1367  	L$:	TAD	(-HSIZE	/Reset col count
 285	 10437	3334  		DCA	HCNT
 286	 10440	3410  	1$:	DCA I	BXR	/Forget the location in the map
 287	 10441	2334  		ISZ	HCNT
 288	 10442	5240  		JMP	1$
 289	 10443	2333  		ISZ	VCNT	/For all lines requested
 290	 10444	5236  		JMP	L$
 291	 10445	7240  		STA		/Forget last cursor position
 292	 10446	3025  		DCA	VIDLIN
 293	 10447	6203  		CIF CDF		/Get ready to exit
 294	 10450	3766  		DCA I	(OUTDNE	/Fake out: pretend we didn't see Teco's output
 295	 10451	5773  		JMP I	(CTLWR	/Now exit
 296	 10452	1766  	2$:	TAD I	(OUTDNE	/Clear init flag if any output done
 297	 10453	7640  		SZA CLA
 298	 10454	3050  		DCA	INITFL
 299	 10455	6231  		CDF	CUR
 300	 10456	4765  		JMS I	(TAHCHK	/See if anything in type ahead buffer
 301	 10457	5264  		JMP	3$
/6G VT52 Support for OS/8 TECO V  MACREL-V2C  FRI 07-DEC-90  PAGE 8-1
                                                 FILE # 1

 302	 10460	2201  		ISZ	FUDCNT
 303	 10461	5220  		JMP	VTEXIT	/Don't update if count not zero
 304	 10462	1200  		TAD	FUDKNT
 305	 10463	3201  		DCA	FUDCNT	/Reset count
 306	 10464	1043  	3$:	TAD	PSAV	/Set ptr to text
 307	 10465	3031  		DCA	PTRTXT
 308	 10466	1043  		TAD	PSAV	/Save for comparison during text expansion
 309	 10467	7041  		CIA		/(anything for a machine cycle)
 310	 10470	3034  		DCA	UNDERC
 311	 10471	4764  		JMS I	(BAKUPL	/Do a 0L
 312	 10472	1042  		TAD	ZZSAV	/Calculate ones complement of size to end of buffer
 313	 10473	7040  		CMA
 314	 10474	1031  		TAD	PTRTXT
 315	 10475	3030  		DCA	CHRCNT	/Save count for text expansion routine
 316	 10476	1031  		TAD	PTRTXT	/Set pointer for expansion routine
 317	 10477	3027  		DCA	TXTPTR
 318	 10500	1363  		TAD	(FCHAR	/Setup dummy routines for counting lines only
 319	 10501	3045  		DCA	OUTCHR
 320	 10502	1362  		TAD	(FBLNK
 321	 10503	3046  		DCA	OUTBLN
 322	 10504	3036  		DCA	LINCNT	/Clear line counter
 323	 10505	3020  		DCA	MAPCOL	/Clear current map column
 324	 10506	1361  		TAD	(MAPST	/Set base addr of line in map
 325	 10507	3032  		DCA	LINBAS
 326	 10510	3037  		DCA	RTMOST	/Clear rightmost col to be safe **
 327	 10511	4760  		JMS I	(DOTEXT	/Go expand the text now
 328	 10512	1047  		TAD	NWATCH	/Get specified cursor line number
 329	 10513	7450  		SNA
 330	 10514	1357  		TAD	(20	/If zero, assume 16.
 331	 10515	1372  		TAD	(-VSIZE	/Force in range [1,VSIZE]
 332	 10516	7500  		SMA
 333	 10517	7200  		CLA
 334	 10520	1371  		TAD	(VSIZE
 335	 10521	3047  		DCA	NWATCH	/Update it
 336	 10522	1372  		TAD	(-VSIZE	/See if cursor will fit towards bottom of screen
 337	 10523	1036  		TAD	LINCNT
 338	 10524	1047  		TAD	NWATCH
 339	 10525	7500  		SMA
 340	 10526	7200  		CLA
 341	 10527	7041  		CIA
 342	 10530	1047  		TAD	NWATCH	/Take MAX(NWATCH,calculated NWATCH)
 343	 10531	3035  		DCA	CRSLIN	/Save it away
 344	 10532	5756  		JMP I	(DOLCNT	/Jmp to do line counting now
 345	 10533	0000  	VCNT,	0
 346	 10534	0000  	HCNT,	0
	------
	 10556	0600  
	 10557	0020  
	 10560	1600  
	 10561	4000  
	 10562	2420  
	 10563	2414  
	 10564	1302  
	 10565	0232  
	 10566	0000 *
	 10567	7660  
/6G VT52 Support for OS/8 TECO V  MACREL-V2C  FRI 07-DEC-90  PAGE 8-2
                                                 FILE # 1

	 10570	3777  
	 10571	0030  
	 10572	7750  
	 10573	0000 *
	 10574	0000 *
	 10575	0000 *
	 10576	0000 *
	 10577	0000 *
 347		0600  		PAGE
/6G VT52 Support for OS/8 TECO V  MACREL-V2C  FRI 07-DEC-90  PAGE 9
                                                 FILE # 1

 348			
 349				/Count lines to top of screen and save one for screen alignment
 350			
 351	 10600	3041  	DOLCNT,	DCA	CHKFLG	/Init flag to buffer unknown
 352	 10601	3036  		DCA	LINCNT	/Clear line counter
 353	 10602	3037  		DCA	RTMOST	/Clear rightmost col count for first line
 354	 10603	1377  	LINES,	TAD	(FCHAR	/Reset output routine to flush chars
 355	 10604	3045  		DCA	OUTCHR
 356	 10605	1031  		TAD	PTRTXT	/Make copy of current line in buffer
 357	 10606	3033  		DCA	LINPTR
 358	 10607	1033  		TAD	LINPTR	/See if beginning of buffer
 359	 10610	7650  		SNA CLA
 360	 10611	5776  		JMP I	(TRYMOV	/Jmp if yes, no more lines to count
 361	 10612	7001  		IAC		/Do a -1L
 362	 10613	4775  		JMS I	(BAKUPL
 363	 10614	1033  		TAD	LINPTR	/Calc ones complement of line size just got
 364	 10615	7040  		CMA
 365	 10616	1031  		TAD	PTRTXT
 366	 10617	3030  		DCA	CHRCNT
 367	 10620	1030  		TAD	CHRCNT	/See if line is large enough to warrent saving
 368	 10621	1374  		TAD	(17
 369	 10622	7740  		SMA SZA CLA
 370	 10623	5244  		JMP	DONTSV	/Jmp if too small
 371	 10624	1373  		TAD	(CHKBUF	/Else set ptr to match buffer
 372	 10625	3044  		DCA	CHKPTR
 373	 10626	1041  		TAD	CHKFLG	/See if match buffer is already used
 374	 10627	7640  		SZA CLA
 375	 10630	5244  		JMP	DONTSV	/Jmp if yes
 376	 10631	2041  		ISZ	CHKFLG	/Else flag it just being used now
 377	 10632	1372  		TAD	(CCHAR	/Set output routine to save the line in buffer
 378	 10633	3045  		DCA	OUTCHR
 379	 10634	1371  		TAD	(-HSIZE	/Set count to clear buffer
 380	 10635	3051  		DCA	CNT
 381	 10636	1370  		TAD	(CHKBUF-1
 382	 10637	3010  		DCA	BXR	/Set ptr to blank buffer
 383	 10640	1101  		TAD	VT40
 384	 10641	3410  		DCA I	BXR	/Blank whole buffer
 385	 10642	2051  		ISZ	CNT
 386	 10643	5240  		JMP	.-3
 387	 10644	1031  	DONTSV,	TAD	PTRTXT	/Setup pointer to the line to do
 388	 10645	3027  		DCA	TXTPTR
 389	 10646	1036  		TAD	LINCNT	/Save current line count incase multi line overflow
 390	 10647	3270  		DCA	SAVCNT
 391	 10650	4767  		JMS I	(DOTEXT	/Expand the text in one line
 392	 10651	1041  		TAD	CHKFLG
 393	 10652	7750  		SPA SNA CLA	/Skp if we just filled the buffer
 394	 10653	5260  		JMP	NOCSAV	/Else dont save its line count
 395	 10654	1036  		TAD	LINCNT	/Save check line number for screen alignment later
 396	 10655	3040  		DCA	CHKLIN
 397	 10656	7240  		STA		/Flag buffer is used now
 398	 10657	3041  		DCA	CHKFLG
 399	 10660	1035  	NOCSAV,	TAD	CRSLIN	/See if passed top of screen yet
 400	 10661	7041  		CIA
 401	 10662	1036  		TAD	LINCNT
 402	 10663	7710  		SPA CLA
/6G VT52 Support for OS/8 TECO V  MACREL-V2C  FRI 07-DEC-90  PAGE 9-1
                                                 FILE # 1

 403	 10664	5203  		JMP	LINES	/Loop if no
 404	 10665	1270  		TAD	SAVCNT	/Restore line just before overflow
 405	 10666	3036  		DCA	LINCNT
 406	 10667	5776  		JMP I	(TRYMOV	/Now attempt to align the screen and map
 407	 10670	0000  	SAVCNT,	0
/6G VT52 Support for OS/8 TECO V  MACREL-V2C  FRI 07-DEC-90  PAGE 10
                                                 FILE # 1

 408			
 409	 10671	0000  	DPATCH,	0
 410	 10672	6211  		CDF	10
 411	 10673	1366  		TAD	(CIF CDF CUR
 412	 10674	3765  		DCA I	(VT52D+1
 413	 10675	1302  		TAD	XXXJMP
 414	 10676	3764  		DCA I	(VT52D+2
 415	 10677	1363  		TAD	(VTGETQ
 416	 10700	3762  		DCA I	(VT52D+3
 417	 10701	5671  		JMP I	DPATCH
 418	 10702	**** *	XXXJMP,	GETQX+3&177+5600	/JMP I .+1
	------
	 10762	0003 *
	 10763	0346  
	 10764	0002 *
	 10765	0001 *
	 10766	6233  
	 10767	1600  
	 10770	3577  
	 10771	7660  
	 10772	2400  
	 10773	3600  
	 10774	0017  
	 10775	1302  
	 10776	1000  
	 10777	2414  
 419		1000  		PAGE
/6G VT52 Support for OS/8 TECO V  MACREL-V2C  FRI 07-DEC-90  PAGE 11
                                                 FILE # 1

 420			
 421				/Now try to align the buffered line with the map
 422				/to get an accurate move offset for up/down scrolling
 423			
 424	 11000	1050  	TRYMOV,	TAD	INITFL	/See if screen known 
 425	 11001	7710  		SPA CLA		/Skp if no, no point trying to align it
 426	 11002	1041  		TAD	CHKFLG	/See if anything was saved in match buffer
 427	 11003	7700  		SMA CLA		/Skp if yes
 428	 11004	5777  		JMP I	(OUTPUT	/Else just do output
 429	 11005	1040  		TAD	CHKLIN	/Calculate line number of saved line
 430	 11006	7041  		CIA
 431	 11007	1036  		TAD	LINCNT
 432	 11010	3040  		DCA	CHKLIN
 433	 11011	1040  		TAD	CHKLIN	/Calculate offset in map of saved line
 434	 11012	7106  		CLL RTL		/*4
 435	 11013	1040  		TAD	CHKLIN	/*5
 436	 11014	7106  		CLL RTL		/*20.
 437	 11015	7106  		CLL RTL		/*80.
 438	 11016	3301  		DCA	CHKBAS	/Save base offset of the saved line
 439	 11017	3053  		DCA	OFFSET	/Clear present alignment offset
 440	 11020	3054  		DCA	LOFFST	/Clear offset in lines too
 441	 11021	5227  		JMP	TRYGO	/Jmp into alignment loop
 442	 11022	1053  	NXTRY,	TAD	OFFSET	/Try to align screen down
 443	 11023	7041  		CIA
 444	 11024	4242  		JMS	TRYMAT
 445	 11025	5776  		JMP I	(DNMOVE	/Jmp to move screen down if got a match
 446	 11026	1053  		TAD	OFFSET	/Try to align screen up
 447	 11027	4242  	TRYGO,	JMS	TRYMAT
 448	 11030	5775  		JMP I	(UPMOVE	/Jmp to move screen up if got a match
 449	 11031	2054  		ISZ	LOFFST	/Tally another line offset
 450	 11032	1053  		TAD	OFFSET
 451	 11033	1374  		TAD	(HSIZE	/Bump char offset magnitude too
 452	 11034	3053  		DCA	OFFSET
 453		0014  		XX=	VSIZE%2
 454	 11035	1054  		TAD	LOFFST	/See if too far out
 455	 11036	1373  		TAD	(-XX
 456	 11037	7710  		SPA CLA		/Skp if yes
 457	 11040	5222  		JMP	NXTRY	/Else try another set of moves
 458	 11041	5777  		JMP I	(OUTPUT	/Quit trying to match, go do output
/6G VT52 Support for OS/8 TECO V  MACREL-V2C  FRI 07-DEC-90  PAGE 12
                                                 FILE # 1

 459			
 460				/Compare the buffered line with a spot in the map
 461				/CALL+1 = JMP to do up or down scroll and map move as case may be
 462			
 463	 11042	0000  	TRYMAT,	0
 464	 11043	1301  		TAD	CHKBAS	/Add base of saved line relative to map
 465	 11044	1372  		TAD	(MAPST-1 /Make absolute
 466	 11045	3010  		DCA	BXR
 467	 11046	4064  		JMS	POLL	/Sample keyboard for type ahead
 468	 11047	1010  		TAD	BXR	/Range check pointer for [MAPST-1,MAPND-1]
 469	 11050	1371  		TAD	(-MAPND
 470	 11051	7100  		CLL
 471	 11052	1370  		TAD	(MAPSZ
 472	 11053	7620  		SNL CLA		/Skp if in range
 473	 11054	5277  		JMP	NOMTCH	/Else off screen, just exit
 474	 11055	1367  		TAD	(CHKBUF-1 /Point at match buffer
 475	 11056	3011  		DCA	CXR
 476	 11057	1366  		TAD	(-HSIZE	/Set count for size of line
 477	 11060	3051  		DCA	CNT
 478	 11061	1411  	MATLUP,	TAD I	CXR	/Compare chars
 479	 11062	7041  		CIA
 480	 11063	1410  		TAD I	BXR
 481	 11064	7640  		SZA CLA		/Skp if same
 482	 11065	5277  		JMP	NOMTCH	/Exit if not
 483	 11066	2051  		ISZ	CNT
 484	 11067	5261  		JMP	MATLUP	/Iterate
 485	 11070	1053  		TAD	OFFSET	/See if any offset
 486	 11071	7650  		SNA CLA
 487	 11072	5777  		JMP I	(OUTPUT	/Jmp if none, just do output
 488	 11073	1054  		TAD	LOFFST	/Setup alignment count to shift screen by
 489	 11074	7041  		CIA
 490	 11075	3051  		DCA	CNT
 491	 11076	5642  		JMP I	TRYMAT	/Jmp to CALL+1 to move screen
 492	 11077	2242  	NOMTCH,	ISZ	TRYMAT	/Skp screen align branch
 493	 11100	5642  		JMP I	TRYMAT
 494	 11101	0000  	CHKBAS,	0
 495			
	------
	 11166	7660  
	 11167	3577  
	 11170	3600  
	 11171	0200  
	 11172	3777  
	 11173	7764  
	 11174	0120  
	 11175	1224  
	 11176	1200  
	 11177	1400  
 496		1200  		PAGE
/6G VT52 Support for OS/8 TECO V  MACREL-V2C  FRI 07-DEC-90  PAGE 13
                                                 FILE # 1

 497			
 498				/Align the screen downward if offset was negative
 499			
 500	 11200	3036  	DNMOVE,	DCA	LINCNT	/Set cursor to [0,0]
 501	 11201	3020  		DCA	MAPCOL
 502	 11202	4777  		JMS I	(SETCUR	/Do the cursor sequence
 503	 11203	1376  	DNLUP,	TAD	(REVSEQ	/Now shift screen down with reverse LF sequence
 504	 11204	4775  		JMS I	(PUTCH
 505	 11205	2051  		ISZ	CNT
 506	 11206	5203  		JMP	DNLUP	/The correct number of times
 507	 11207	1374  		TAD	(MAPND-1-HSIZE /Set pointers for phantom screen move
 508	 11210	3010  		DCA	BXR	/Target pointer
 509	 11211	1053  		TAD	OFFSET
 510	 11212	7041  		CIA
 511	 11213	1010  		TAD	BXR
 512	 11214	3011  		DCA	CXR	/Source pointer
 513	 11215	1373  		TAD	(-HSIZE-HSIZE /XR offset
 514	 11216	5241  		JMP	ADJGO	/Go do adjustment now
 515			
 516	 11217	0033  	REVSEQ,	33;111;0	/Escape sequence for reverse line feed
	 11220	0111  
	 11221	0000  
 517	 11222	0012  	LFSEQ,	12;0		/Phony escape sequence for normal LF
	 11223	0000  
 518			
 519				/Align screen upward with normal LF if offset was positive
 520			
 521	 11224	1372  	UPMOVE,	TAD	(VSIZE-1 /Set cursor to bottom line
 522	 11225	3036  		DCA	LINCNT
 523	 11226	3020  		DCA	MAPCOL
 524	 11227	4777  		JMS I	(SETCUR	/Do position sequence
 525	 11230	1371  	UPLUP,	TAD	(LFSEQ	/Use a simple line feed
 526	 11231	4775  		JMS I	(PUTCH
 527	 11232	2051  		ISZ	CNT
 528	 11233	5230  		JMP	UPLUP
 529	 11234	1370  		TAD	(MAPST-1 /Set XR for phantom screen move
 530	 11235	3010  		DCA	BXR	/Target ptr
 531	 11236	1010  		TAD	BXR
 532	 11237	1053  		TAD	OFFSET
 533	 11240	3011  		DCA	CXR
 534	 11241	3301  	ADJGO,	DCA	XOFFSET	/Set xr offset now
 535	 11242	1367  		TAD	(-VSIZE	/Set number of lines to shift
 536	 11243	1054  		TAD	LOFFST
 537	 11244	4253  		JMS	MAPADJ	/Go do them
 538	 11245	1411  		TAD I	CXR	/Instruction to shift a char
 539	 11246	1054  		TAD	LOFFST	/Now number of lines remaining to blank
 540	 11247	7041  		CIA
 541	 11250	4253  		JMS	MAPADJ	/Do them
 542	 11251	1101  		TAD	VT40	/Instruction to blank a char
 543	 11252	5766  		JMP I	(OUTPUT	/Now do the output
 544			
 545	 11253	0000  	MAPADJ,	0
 546	 11254	3300  		DCA	LCNT	/Store line count passed in AC
 547	 11255	1653  		TAD I	MAPADJ	/Get proper source char inst passed in call+1
 548	 11256	2253  		ISZ	MAPADJ
/6G VT52 Support for OS/8 TECO V  MACREL-V2C  FRI 07-DEC-90  PAGE 13-1
                                                 FILE # 1

 549	 11257	3262  		DCA	MINST
 550	 11260	1365  	MLOOP,	TAD	(-HSIZE	/Set count for one line
 551	 11261	3051  		DCA	CNT
 552	 11262	7402  	MINST,	HLT		/"TAD I CXR" or "TAD VT40"
 553	 11263	3410  		DCA I	BXR	/Store the char
 554	 11264	2051  		ISZ	CNT
 555	 11265	5262  		JMP	MINST
 556	 11266	4064  		JMS	POLL	/Now poll the damn keyboard
 557	 11267	1010  		TAD	BXR	/Adjust XR's
 558	 11270	1301  		TAD	XOFFSET
 559	 11271	3010  		DCA	BXR
 560	 11272	1011  		TAD	CXR
 561	 11273	1301  		TAD	XOFFSET
 562	 11274	3011  		DCA	CXR
 563	 11275	2300  		ISZ	LCNT	/Do next line
 564	 11276	5260  		JMP	MLOOP
 565	 11277	5653  		JMP I	MAPADJ
 566	 11300	0000  	LCNT,	0
 567	 11301	0000  	XOFFSET,0
/6G VT52 Support for OS/8 TECO V  MACREL-V2C  FRI 07-DEC-90  PAGE 14
                                                 FILE # 1

 568			
 569				/Do -NL in Teco's text buffer
 570				/Entery AC = N
 571			
 572	 11302	0000  	BAKUPL,	0
 573	 11303	7040  		CMA
 574	 11304	3331  		DCA	BLCNT	/Set count of lines to skip
 575	 11305	5310  		JMP	BAKGO	/Go into loop
 576	 11306	1330  	BAKLP,	TAD	BLPTR
 577	 11307	3031  		DCA	PTRTXT	/Update pointer to text
 578	 11310	7340  	BAKGO,	CLL STA		/Peek at prev char
 579	 11311	1031  		TAD	PTRTXT
 580	 11312	3330  		DCA	BLPTR
 581	 11313	7420  		SNL		/Unless at start of buffer
 582	 11314	5702  		JMP I	BAKUPL
 583	 11315	6211  		CDF	10
 584	 11316	1730  		TAD I	BLPTR	/Look at the char
 585	 11317	6231  		CDF	CUR
 586	 11320	0076  		AND	VT177
 587	 11321	1364  		TAD	(-15	/Range check in interval [12,14]
 588	 11322	7100  		CLL
 589	 11323	1363  		TAD	(3
 590	 11324	7630  		SZL CLA		/Skp if not LF, VT, or FF
 591	 11325	2331  		ISZ	BLCNT	/Decrement counter if is LF, VT or FF
 592	 11326	5306  		JMP	BAKLP	/Repeat if not LF or count not done
 593	 11327	5702  		JMP I	BAKUPL
 594	 11330	0000  	BLPTR,	0
 595	 11331	0000  	BLCNT,	0
 596			
	------
	 11363	0003  
	 11364	7763  
	 11365	7660  
	 11366	1400  
	 11367	7750  
	 11370	3777  
	 11371	1222  
	 11372	0027  
	 11373	7540  
	 11374	7457  
	 11375	2466  
	 11376	1217  
	 11377	2426  
 597		1400  		PAGE
/6G VT52 Support for OS/8 TECO V  MACREL-V2C  FRI 07-DEC-90  PAGE 15
                                                 FILE # 1

 598			
 599			
 600				/Routine to actually do screen update after attempted alignment
 601			
 602	 11400	1377  	OUTPUT,	TAD	(VTCHAR	/Setup for actual terminal output now
 603	 11401	3045  		DCA	OUTCHR
 604	 11402	1376  		TAD	(VTBLNK
 605	 11403	3046  		DCA	OUTBLN
 606	 11404	3037  		DCA	RTMOST	/Initialize rightmost col to zero
 607	 11405	3036  		DCA	LINCNT	/Clear line counter too
 608	 11406	1042  		TAD	ZZSAV	/Calculate a char counter
 609	 11407	7040  		CMA
 610	 11410	1033  		TAD	LINPTR	/From saved cursor line (0L) to Z
 611	 11411	3030  		DCA	CHRCNT
 612	 11412	1033  		TAD	LINPTR
 613	 11413	3027  		DCA	TXTPTR
 614	 11414	1375  		TAD	(MAPST	/Set pointer to map for redundant output avoidance
 615	 11415	3032  		DCA	LINBAS
 616	 11416	1050  		TAD	INITFL	/See if screen state known
 617	 11417	7710  		SPA CLA
 618	 11420	5231  		JMP	KNWSCR	/Jmp if screen not corrupted
 619	 11421	3020  		DCA	MAPCOL	/Zero out map if screen is unknown
 620	 11422	7240  		STA
 621	 11423	3025  		DCA	VIDLIN
 622	 11424	3775  		DCA I	(MAPST	/Force a non blank char so screen will be cleared
 623	 11425	1374  		TAD	(MAPND	/Blank whole screen and map
 624	 11426	4446  		JMS I	OUTBLN
 625	 11427	1676  		EOSSEQ
 626	 11430	3026  		DCA	VIDCOL	/Set video col to zero
 627	 11431	1373  	KNWSCR,	TAD	(VSIZE-1
 628	 11432	3022  		DCA	CURLIN
 629	 11433	1372  		TAD	(HSIZE-1
 630	 11434	3023  		DCA	CURCOL
 631	 11435	4771  		JMS I	(DOTEXT	/Go do the real output now!
 632	 11436	1022  		TAD	CURLIN	/Position terminal cursor now
 633	 11437	3036  		DCA	LINCNT
 634	 11440	1023  		TAD	CURCOL
 635	 11441	3020  		DCA	MAPCOL
 636	 11442	4770  		JMS I	(SETCUR
 637	 11443	7340  		CLL STA		/Peek at char in front of P
 638	 11444	1043  		TAD	PSAV
 639	 11445	3267  		DCA	PTMP
 640	 11446	7620  		SNL CLA		/Skp if not at beginning of buffer
 641	 11447	5262  		JMP	OUTFIN	/Just exit if no
 642	 11450	6211  		CDF	10	/See if cursor is under a CR
 643	 11451	1667  		TAD I	PTMP
 644	 11452	6231  		CDF	CUR
 645	 11453	0076  		AND	VT177	/Only 7 bits
 646	 11454	1367  		TAD	(-15
 647	 11455	7640  		SZA CLA
 648	 11456	5262  		JMP	OUTFIN	/Jmp if no
 649	 11457	1366  		TAD	(CURSEQ	/Else do fancy down arrow sequence
 650	 11460	4765  		JMS I	(PUTCH	/Also moves cursor back under arrow
 651	 11461	3424  		DCA I	CURPTR	/Zap char in map since we clobbered it on screen
 652	 11462	7240  	OUTFIN,	STA		/Flag screen is known now
/6G VT52 Support for OS/8 TECO V  MACREL-V2C  FRI 07-DEC-90  PAGE 15-1
                                                 FILE # 1

 653	 11463	3050  		DCA	INITFL
 654	 11464	6203  		CIF CDF		/Now indicate that no output done
 655	 11465	3764  		DCA I	(OUTDNE	/By zeroing flag in Teco's print routine
 656	 11466	5763  		JMP I	(CTLWR	/Jmp back to a POPJ in Teco to exit
 657	 11467	0000  	PTMP,	0
 658			
 659	 11470	0033  	CURSEQ,	33;106;153;33;107;33;104;0	/Esc seq to flag cursor at CR
	 11471	0106  
	 11472	0153  
	 11473	0033  
	 11474	0107  
	 11475	0033  
	 11476	0104  
	 11477	0000  
 660			
	------
	 11563	0000 *
	 11564	0000 *
	 11565	2466  
	 11566	1470  
	 11567	7763  
	 11570	2426  
	 11571	1600  
	 11572	0117  
	 11573	0027  
	 11574	7600  
	 11575	4000  
	 11576	2251  
	 11577	2326  
 661		1600  		PAGE
/6G VT52 Support for OS/8 TECO V  MACREL-V2C  FRI 07-DEC-90  PAGE 16
                                                 FILE # 1

 662			
 663				/Main routine to expand text
 664			
 665	 11600	0000  	DOTEXT,	0
 666	 11601	5777  		JMP I	(EXPGO	/Jmp into expansion loop
 667			
 668				/Handle line overflows here
 669			
 670	 11602	6211  	OVFCHK,	CDF	10	/Get into text buffer field
 671	 11603	1427  		TAD I	TXTPTR
 672	 11604	6231  		CDF	CUR
 673	 11605	0076  		AND	VT177
 674	 11606	1376  		TAD	(-15	/See if overflow on cr
 675	 11607	7650  		SNA CLA
 676	 11610	5775  		JMP I	(GETBYT	/Ignore if yes
 677	 11611	6201  		CDF		/See if allowing line overflows
 678	 11612	1774  		TAD I	(ETFLAG
 679	 11613	0373  		AND	(400
 680	 11614	6231  		CDF	CUR
 681	 11615	7650  		SNA CLA		/Skp if should truncate to terminal width
 682	 11616	5227  		JMP	DOVFL
 683	 11617	2027  		ISZ	TXTPTR	/Eat char
 684	 11620	1020  		TAD	MAPCOL
 685	 11621	1372  		TAD	(-HSIZE+1
 686	 11622	7700  		SMA CLA
 687	 11623	5771  		JMP I	(CHKCUR
 688	 11624	1370  		TAD	(OVSEQ	/Now send out right arrow escape sequence
 689	 11625	4445  		JMS I	OUTCHR
 690	 11626	5771  		JMP I	(CHKCUR	/Go check cursor position
 691	 11627	7240  	DOVFL,	STA
 692	 11630	1030  		TAD	CHRCNT
 693	 11631	3030  		DCA	CHRCNT	/Fake out char counter to reget char
 694	 11632	1020  		TAD	MAPCOL
 695	 11633	3037  		DCA	RTMOST
 696	 11634	3020  		DCA	MAPCOL
 697	 11635	4767  		JMS I	(NEWLIN	/Goto new line
 698	 11636	1370  		TAD	(OVSEQ	/Now send right arrow escape sequence
 699	 11637	4445  		JMS I	OUTCHR
 700	 11640	1101  		TAD	VT40
 701	 11641	4445  		JMS I	OUTCHR
 702	 11642	5771  		JMP I	(CHKCUR	/Now go check if at cursor
 703			
 704	 11643	1042  	CHKEOS,	TAD	ZZSAV	/See if end of screen now
 705	 11644	7041  		CIA
 706	 11645	1027  		TAD	TXTPTR
 707	 11646	7640  		SZA CLA
 708	 11647	5256  		JMP	EORETN
 709	 11650	1020  		TAD	MAPCOL
 710	 11651	1372  		TAD	(-HSIZE+1
 711	 11652	7740  		SMA SZA CLA
 712	 11653	5256  		JMP	EORETN
 713	 11654	1366  		TAD	(EOBSEQ	/Send out special end of buffer char
 714	 11655	4445  		JMS I	OUTCHR
 715	 11656	1365  	EORETN,	TAD	(MAPND	/Pass pointer to end of map
 716	 11657	4446  		JMS I	OUTBLN	/Blank rest of screen now
/6G VT52 Support for OS/8 TECO V  MACREL-V2C  FRI 07-DEC-90  PAGE 16-1
                                                 FILE # 1

 717	 11660	1676  		EOSSEQ
 718	 11661	5600  		JMP I	DOTEXT	/Return
 719			
 720	 11662	0033  	OVSEQ,	33;106;150;33;107;0	/Esc seq to flag line overflow
	 11663	0106  
	 11664	0150  
	 11665	0033  
	 11666	0107  
	 11667	0000  
 721	 11670	0033  	EOBSEQ,	33;106;141;33;107;0	/Esc seq to flag end of buffer
	 11671	0106  
	 11672	0141  
	 11673	0033  
	 11674	0107  
	 11675	0000  
 722	 11676	0033  	EOSSEQ,	33;112;0		/Esc seq to clear to end of screen
	 11677	0112  
	 11700	0000  
 723			
	------
	 11765	7600  
	 11766	1670  
	 11767	2200  
	 11770	1662  
	 11771	2024  
	 11772	7661  
	 11773	0400  
	 11774	0000 *
	 11775	2005  
	 11776	7763  
	 11777	2140  
 724		2000  		PAGE
/6G VT52 Support for OS/8 TECO V  MACREL-V2C  FRI 07-DEC-90  PAGE 17
                                                 FILE # 1

 725			
 726				/Continuation of text expansion routine
 727			
 728	 12000	4064  	LOOP,	JMS	POLL	/See if key struck
 729	 12001	1020  		TAD	MAPCOL	/See if about to overflow line
 730	 12002	1377  		TAD	(-HSIZE+2
 731	 12003	7700  		SMA CLA
 732	 12004	5776  		JMP I	(OVFCHK	/Jmp if yes
 733	 12005	6211  	GETBYT,	CDF	10	/Get a char from Teco's text buffer
 734	 12006	1427  		TAD I	TXTPTR
 735	 12007	2027  		ISZ	TXTPTR	/Bump the pointer now
 736	 12010	6231  		CDF	CUR
 737	 12011	0076  		AND	VT177	/Save only 7 bits
 738	 12012	3345  		DCA	TXTCHR
 739	 12013	1345  		TAD	TXTCHR
 740	 12014	1375  		TAD	(-177
 741	 12015	7450  		SNA
 742	 12016	5270  		JMP	GOTDEL	/Flag del as ^? since it doesn't echo otherwise
 743	 12017	1374  		TAD	(177-40
 744	 12020	7510  		SPA		/Skp if normal printing char, usual case
 745	 12021	5250  		JMP	TRYCTL	/Else check type of control char
 746	 12022	1101  		TAD	VT40	/Restore char
 747	 12023	4445  	OUTPTC,	JMS I	OUTCHR	/Send it out
 748	 12024	1027  	CHKCUR,	TAD	TXTPTR	/Test if char is at cursor now
 749	 12025	1034  		TAD	UNDERC
 750	 12026	7650  		SNA CLA		/Skp if not under cursor, normal case
 751	 12027	5233  		JMP	SAVECP	/Else save its position information for later
 752	 12030	2030  	EXCONT,	ISZ	CHRCNT	/Now bump count
 753	 12031	5200  		JMP	LOOP	/Loop for more
 754	 12032	5773  		JMP I	(CHKEOS	/Exit to check out end of screen status if done
 755			
 756	 12033	1021  	SAVECP,	TAD	MAPPTR	/Else save line and column for cursor postion later
 757	 12034	3024  		DCA	CURPTR
 758	 12035	1036  		TAD	LINCNT
 759	 12036	3022  		DCA	CURLIN
 760	 12037	1020  		TAD	MAPCOL
 761	 12040	3023  		DCA	CURCOL
 762	 12041	1020  		TAD	MAPCOL
 763	 12042	1372  		TAD	(-HSIZE	/See if col is legal
 764	 12043	7710  		SPA CLA
 765	 12044	5230  		JMP	EXCONT	/Jmp if ok
 766	 12045	1371  		TAD	(HSIZE-1 /Fix it if no
 767	 12046	3023  		DCA	CURCOL
 768	 12047	5230  		JMP	EXCONT	/Continue
 769			
 770	 12050	1370  	TRYCTL,	TAD	(40-15	/See if CR
 771	 12051	7450  		SNA
 772	 12052	5331  		JMP	GOTCR	/Jmp if yes
 773	 12053	7100  		CLL		/See if carraige control LF, VT, FF
 774	 12054	1367  		TAD	(15-11
 775	 12055	7450  		SNA
 776	 12056	5316  		JMP	GOTTAB	/Jmp if happens to be TAB
 777	 12057	7420  		SNL		/Skp if carraige control
 778	 12060	5274  		JMP	GOTCTL	/Else its a control char requiring flagging
 779	 12061	7041  	GOTCRG,	CIA		/Form line feed count
/6G VT52 Support for OS/8 TECO V  MACREL-V2C  FRI 07-DEC-90  PAGE 17-1
                                                 FILE # 1

 780	 12062	7124  		STL RAL
 781	 12063	3344  		DCA	CRGCNT
 782	 12064	4766  		JMS I	(NEWLIN	/Emit a new line
 783	 12065	2344  		ISZ	CRGCNT	/Bump count
 784	 12066	5264  		JMP	.-2	/Iterate
 785	 12067	5224  		JMP	CHKCUR	/Go check cursor position
 786	 12070	1365  	GOTDEL,	TAD	(136	/Flag del as ^? since it normally doesn't print
 787	 12071	4445  		JMS I	OUTCHR
 788	 12072	1077  		TAD	VT77
 789	 12073	5223  		JMP	OUTPTC
 790	 12074	7200  	GOTCTL,	CLA
 791	 12075	6201  		CDF 0
 792	 12076	1764  		TAD I	(ETFLAG	/Check if image mode
 793	 12077	6231  		CDF CUR
 794	 12100	7010  		RAR
 795	 12101	7630  		SZL CLA
 796	 12102	5312  		JMP	IMGCTL	/Yes, don't convert
 797	 12103	1345  		TAD	TXTCHR
 798	 12104	1363  		TAD	(-33	/Now test if ESC requiring special flagging
 799	 12105	7650  		SNA CLA		/Not usually
 800	 12106	5314  		JMP	GOTESC	/Jmp if yes, echo as $
 801	 12107	1365  		TAD	(136	/Send out a ^ to flag it
 802	 12110	4445  		JMS I	OUTCHR
 803	 12111	1362  		TAD	(100	/Make character visible
 804	 12112	1345  	IMGCTL,	TAD	TXTCHR
 805	 12113	5223  		JMP	OUTPTC	/Go output it
 806	 12114	1104  	GOTESC,	TAD	VT4	/Echo $
 807	 12115	5222  		JMP	OUTPTC-1	/* ADD VT40
 808	 12116	1101  	GOTTAB,	TAD	VT40	/Simulate tabs
 809	 12117	4445  		JMS I	OUTCHR
 810	 12120	1020  		TAD	MAPCOL
 811	 12121	0103  		AND	VT7
 812	 12122	7650  		SNA CLA		/Skp if more to go
 813	 12123	5224  		JMP	CHKCUR	/Else back to loop
 814	 12124	1020  		TAD	MAPCOL
 815	 12125	1361  		TAD	(-HSIZE+1
 816	 12126	7710  		SPA CLA		/Skp if over line
 817	 12127	5316  		JMP	GOTTAB	/Else room to continue
 818	 12130	5224  		JMP	CHKCUR
 819	 12131	1020  	GOTCR,	TAD	MAPCOL
 820	 12132	7041  		CIA
 821	 12133	1037  		TAD	RTMOST
 822	 12134	7700  		SMA CLA
 823	 12135	5340  		JMP	EXPGO
 824	 12136	1020  		TAD	MAPCOL
 825	 12137	3037  		DCA	RTMOST
 826	 12140	1032  	EXPGO,	TAD	LINBAS
 827	 12141	3021  		DCA	MAPPTR
 828	 12142	3020  		DCA	MAPCOL	/Reset column counter on CR
 829	 12143	5224  		JMP	CHKCUR	/Check if cursor is here
 830			
 831	 12144	0000  	CRGCNT,	0
 832	 12145	0000  	TXTCHR,	0
 833			
	------
	 12161	7661  
/6G VT52 Support for OS/8 TECO V  MACREL-V2C  FRI 07-DEC-90  PAGE 17-2
                                                 FILE # 1

	 12162	0100  
	 12163	7745  
	 12164	0000 *
	 12165	0136  
	 12166	2200  
	 12167	0004  
	 12170	0023  
	 12171	0117  
	 12172	7660  
	 12173	1643  
	 12174	0137  
	 12175	7601  
	 12176	1602  
	 12177	7662  
 834		2200  		PAGE
/6G VT52 Support for OS/8 TECO V  MACREL-V2C  FRI 07-DEC-90  PAGE 18
                                                 FILE # 1

 835			
 836				/Handle a new line
 837			
 838	 12200	0000  	NEWLIN,	0
 839	 12201	1020  		TAD	MAPCOL
 840	 12202	3250  		DCA	SAVCOL
 841	 12203	4064  		JMS	POLL	/Sample keyboard for type ahead
 842	 12204	1032  		TAD	LINBAS	/Pass end of line in map to clear up to
 843	 12205	1377  		TAD	(HSIZE
 844	 12206	4446  		JMS I	OUTBLN	/Do clear end of line sequence
 845	 12207	2346  		CLNSEQ
 846	 12210	3037  		DCA	RTMOST	/Zero rightmost col
 847	 12211	1032  		TAD	LINBAS
 848	 12212	1377  		TAD	(HSIZE
 849	 12213	3032  		DCA	LINBAS	/Update base of current line in map
 850	 12214	2036  		ISZ	LINCNT	/Tally another line done
 851	 12215	1250  		TAD	SAVCOL
 852	 12216	7650  		SNA CLA
 853	 12217	5236  		JMP	NLDONE
 854	 12220	1036  		TAD	LINCNT
 855	 12221	1376  		TAD	(-VSIZE
 856	 12222	7700  		SMA CLA
 857	 12223	5236  		JMP	NLDONE
 858	 12224	3020  		DCA	MAPCOL
 859	 12225	1032  		TAD	LINBAS	/Point MAPPTR at beginning of new line
 860	 12226	3021  		DCA	MAPPTR	/For OUTCHR matching
 861	 12227	1101  	LEADBL,	TAD	VT40
 862	 12230	4445  		JMS I	OUTCHR
 863	 12231	1020  		TAD	MAPCOL
 864	 12232	7041  		CIA
 865	 12233	1250  		TAD	SAVCOL
 866	 12234	7640  		SZA CLA
 867	 12235	5227  		JMP	LEADBL
 868	 12236	1250  	NLDONE,	TAD	SAVCOL
 869	 12237	3020  		DCA	MAPCOL
 870	 12240	1020  		TAD	MAPCOL	/Now point MAPPTR at proper loc in new line
 871	 12241	1032  		TAD	LINBAS
 872	 12242	3021  		DCA	MAPPTR
 873	 12243	1036  		TAD	LINCNT	/Test if off end of screen
 874	 12244	1376  		TAD	(-VSIZE
 875	 12245	7710  		SPA CLA		/Skp if yes
 876	 12246	5600  		JMP I	NEWLIN
 877	 12247	5775  		JMP I	(EORETN	/Exit from text expansion
 878	 12250	0000  	SAVCOL,	0
/6G VT52 Support for OS/8 TECO V  MACREL-V2C  FRI 07-DEC-90  PAGE 19
                                                 FILE # 1

 879			
 880				/Blank the remainder of a line and map
 881				/Blanking is only done if map has any non blank chars in it
 882				/Entry AC = limit addr to stop at in map
 883			
 884	 12251	0000  	VTBLNK,	0
 885	 12252	3324  		DCA	BLNKCT	/Save limit addr
 886	 12253	1020  		TAD	MAPCOL	/**back up mapcol
 887	 12254	3325  		DCA	HOLDMC
 888	 12255	1037  		TAD	RTMOST	/Take MAX(RTMOST,MAPCOL)
 889	 12256	7041  		CIA
 890	 12257	1020  		TAD	MAPCOL
 891	 12260	7510  		SPA
 892	 12261	7200  		CLA
 893	 12262	1037  		TAD	RTMOST
 894	 12263	3020  		DCA	MAPCOL
 895	 12264	7240  		STA
 896	 12265	1020  		TAD	MAPCOL
 897	 12266	1032  		TAD	LINBAS	/Add to base of current line in map
 898	 12267	3010  		DCA	BXR	/Setup auto xr
 899	 12270	1324  		TAD	BLNKCT	/Calculate a counter
 900	 12271	7041  		CIA
 901	 12272	1010  		TAD	BXR
 902	 12273	3324  		DCA	BLNKCT
 903	 12274	3774  		DCA I	(PUTCH	/Use subroutine entry as a flag
 904	 12275	5302  		JMP	BLNKGO	/Jmp into loop
 905	 12276	1410  	BLNKLP,	TAD I	BXR	/Examine a char in map
 906	 12277	1373  		TAD	(-40
 907	 12300	7640  		SZA CLA		/Skp if blank already, the usual case
 908	 12301	5310  		JMP	NOTBLN	/Jmp if no, put space there now
 909	 12302	2324  	BLNKGO,	ISZ	BLNKCT	/Test count
 910	 12303	5276  		JMP	BLNKLP	/Go again
 911	 12304	1325  		TAD	HOLDMC	/Now restore mapcol
 912	 12305	3020  		DCA	MAPCOL
 913	 12306	2251  		ISZ	VTBLNK	/Skip past escape seq
 914	 12307	5651  		JMP I	VTBLNK
 915	 12310	1010  	NOTBLN,	TAD	BXR	/Save pointer to map
 916	 12311	3323  		DCA	BLNKPT
 917	 12312	1101  		TAD	VT40	/Now store space there
 918	 12313	3723  		DCA I	BLNKPT
 919	 12314	1774  		TAD I	(PUTCH	/See if already cleared to eol
 920	 12315	7640  		SZA CLA		/Skp if no
 921	 12316	5302  		JMP	BLNKGO	/Else continue scanning
 922	 12317	4772  		JMS I	(SETCUR	/First set cursor to end of line
 923	 12320	1651  		TAD I	VTBLNK	/Now pick up terminal clearing seq
 924	 12321	4774  		JMS I	(PUTCH	/Send it out
 925	 12322	5302  		JMP	BLNKGO	/Continue
 926	 12323	0000  	BLNKPT,	0
 927	 12324	0000  	BLNKCT,	0
 928	 12325	0000  	HOLDMC,	0
/6G VT52 Support for OS/8 TECO V  MACREL-V2C  FRI 07-DEC-90  PAGE 20
                                                 FILE # 1

 929			
 930				/Do actual output if updating screen
 931				/Does no output if char matches map
 932				/Slightly convoluted flow to minimize execution time
 933			
 934	 12326	0000  	VTCHAR,	0
 935	 12327	7041  		CIA
 936	 12330	1421  		TAD I	MAPPTR	/See if corresponds to map
 937	 12331	7440  		SZA		/Skp if yes, usual case
 938	 12332	5336  		JMP	VTSEND	/Else must send it
 939	 12333	2020  	VTDONE,	ISZ	MAPCOL	/Always tally new line column
 940	 12334	2021  		ISZ	MAPPTR	/And bump absolute map pointer
 941	 12335	5726  		JMP I	VTCHAR
 942	 12336	7041  	VTSEND,	CIA		/Restore char to ac
 943	 12337	1421  		TAD I	MAPPTR
 944	 12340	3421  		DCA I	MAPPTR	/Now save in map
 945	 12341	4772  		JMS I	(SETCUR	/Set cursor if necessary
 946	 12342	1421  		TAD I	MAPPTR	/Get char back
 947	 12343	4774  		JMS I	(PUTCH	/Send out char
 948	 12344	2026  		ISZ	VIDCOL	/Tally new video column now
 949	 12345	5333  		JMP	VTDONE	/Now exit
 950			
 951	 12346	0033  	CLNSEQ,	33;113;0	/Escape seq to clear to end of line
	 12347	0113  
	 12350	0000  
 952			
	------
	 12372	2426  
	 12373	7740  
	 12374	2466  
	 12375	1656  
	 12376	7750  
	 12377	0120  
 953		2400  		PAGE
/6G VT52 Support for OS/8 TECO V  MACREL-V2C  FRI 07-DEC-90  PAGE 21
                                                 FILE # 1

 954			
 955				/Phony output routne used to buffer a line in match buffer
 956				/For later use in vertical screen alignment
 957			
 958	 12400	0000  	CCHAR,	0
 959	 12401	2020  		ISZ	MAPCOL
 960	 12402	3444  		DCA I	CHKPTR	/Save char in check buffer
 961	 12403	1444  		TAD I	CHKPTR	/See if special escape or not
 962	 12404	2044  		ISZ	CHKPTR
 963	 12405	0377  		AND	(7600
 964	 12406	7650  		SNA CLA		/Skp if yes
 965	 12407	5600  		JMP I	CCHAR	/Else return
 966	 12410	3041  		DCA	CHKFLG	/Say match buffer not valid
 967	 12411	1376  		TAD	(FCHAR	/Reset output routine to flush chars
 968	 12412	3045  		DCA	OUTCHR
 969	 12413	5600  		JMP I	CCHAR	/Return
 970			
 971	 12414	0000  	FCHAR,	0
 972	 12415	7200  		CLA
 973	 12416	2020  		ISZ	MAPCOL
 974	 12417	5614  		JMP I	FCHAR
 975			
 976	 12420	0000  	FBLNK,	0
 977	 12421	7200  		CLA		/Clear ending addr passed in ac
 978	 12422	2220  		ISZ	FBLNK	/Skip past escape seq ptr in CALL+1
 979	 12423	1376  		TAD	(FCHAR	/Reset output routine to flush chars now
 980	 12424	3045  		DCA	OUTCHR
 981	 12425	5620  		JMP I	FBLNK	/Done
/6G VT52 Support for OS/8 TECO V  MACREL-V2C  FRI 07-DEC-90  PAGE 22
                                                 FILE # 1

 982			
 983				/Cursor setting routine
 984				/If LINCNT and MAPCOL are the same as VIDLIN and VIDCOL,
 985				/No positioning is done.  otherwise an escape seq is emitted.
 986			
 987	 12426	0000  	SETCUR,	0
 988	 12427	1036  		TAD	LINCNT	/Save map line
 989	 12430	3265  		DCA	VRTCHR	/In case vertical position necessary
 990	 12431	1036  		TAD	LINCNT
 991	 12432	7041  		CIA
 992	 12433	1025  		TAD	VIDLIN	/Compare video and map cursor positions
 993	 12434	7640  		SZA CLA
 994	 12435	5245  		JMP	DOSETC	/Jmp if different, set cursor
 995	 12436	1375  		TAD	(VSIZE	/If same, set vertical out of range to avoid VT52 flicker
 996	 12437	3265  		DCA	VRTCHR
 997	 12440	1020  		TAD	MAPCOL	/Now compare column
 998	 12441	7041  		CIA
 999	 12442	1026  		TAD	VIDCOL
1000	 12443	7650  		SNA CLA
1001	 12444	5626  		JMP I	SETCUR	/No need at all if same
1002	 12445	1374  	DOSETC,	TAD	(YSEQ	/Send out direct addr seq
1003	 12446	4773  		JMS I	(PUTCH
1004	 12447	1265  		TAD	VRTCHR
1005	 12450	1101  		TAD	VT40	/Make non control code out of it
1006	 12451	4773  		JMS I	(PUTCH
1007	 12452	1020  		TAD	MAPCOL
1008	 12453	1101  		TAD	VT40
1009	 12454	4773  		JMS I	(PUTCH
1010	 12455	1036  		TAD	LINCNT	/Now make video and map correspond
1011	 12456	3025  		DCA	VIDLIN
1012	 12457	1020  		TAD	MAPCOL
1013	 12460	3026  		DCA	VIDCOL
1014	 12461	5626  		JMP I	SETCUR	/Return
1015	 12462	0033  	YSEQ,	33;131;0	/Escape seq for direct cursor addressing
	 12463	0131  
	 12464	0000  
1016	 12465	0000  	VRTCHR,	0
/6G VT52 Support for OS/8 TECO V  MACREL-V2C  FRI 07-DEC-90  PAGE 23
                                                 FILE # 1

1017			
1018				/Print a char or an escape seq passed in AC
1019				/If AC GE 200, assumes an escape seq addr, else a 7 bit char
1020			
1021	 12466	0000  	PUTCH,	0
1022	 12467	1377  		TAD	(7600	/Test if addr of escape seq or real char
1023	 12470	7100  		CLL
1024	 12471	1372  		TAD	(200
1025	 12472	7420  		SNL		/Skp if normal char
1026	 12473	5276  		JMP	DOSEQ	/Else to sequence
1027	 12474	4306  		JMS	PCH
1028	 12475	5666  		JMP I	PUTCH
1029	 12476	3305  	DOSEQ,	DCA	SEQPTR	/Save pointer to escape sequence
1030	 12477	1705  	DOSEQL,	TAD I	SEQPTR
1031	 12500	2305  		ISZ	SEQPTR
1032	 12501	7450  		SNA
1033	 12502	5666  		JMP I	PUTCH	/End of seq delimited by null
1034	 12503	4306  		JMS	PCH
1035	 12504	5277  		JMP	DOSEQL
1036	 12505	0000  	SEQPTR,	0
1037			
1038				/Low level routine to print a char on terminal
1039			
1040	 12506	0000  	PCH,	0
1041	 12507	6031  	TRYKBD,	KSF
1042	 12510	5314  		JMP	TRYTSF
1043	 12511	3321  		DCA	PCHCHR
1044	 12512	4064  		JMS	POLL
1045	 12513	1321  		TAD	PCHCHR
1046	 12514	6041  	TRYTSF,	TSF		/Multi-8 changes this too 'SKP'
1047	 12515	5307  		JMP	TRYKBD	/OK, we don't have to check keyboard
1048	 12516	6046  		TLS
1049	 12517	7200  		CLA
1050	 12520	5706  		JMP I	PCH
1051	 12521	0000  	PCHCHR,	0
1052			
	------
	 12572	0200  
	 12573	2466  
	 12574	2462  
	 12575	0030  
	 12576	2414  
	 12577	7600  
1053		2600  		PAGE
/6G VT52 Support for OS/8 TECO V  MACREL-V2C  FRI 07-DEC-90  PAGE 24
                                                 FILE # 1

1054			
1055				/Once only setup routine
1056			
1057				/If monitor scope flag not set, won't run VWATCH
1058				/If GT 16K, cause overlays to run in field 4 and run VWATCH
1059				/If lt 16K, do not run VWATCH
1060				/If eq 16K and no BATCH, swap overlays and run VWATCH
1061				/If eq 16K and batch running, don't run VWATCH
1062			
1063				.EXTERN	MEMSIZ
1064				.EXTERN	CDF4A,CDF4B,CDF4C,CDF4F,CIF4A,CIF4B,CIF4C,HCDF1,CIF4E
1065				.EXTERN	ETFLAG,SRHLEN,TWLVKP,VTSUP,L16K
1066				.GLOBAL	CORTST
1067			
1068		7777  		BIPCCL=	7777	/OS/8 batch flag word in field 0
1069		7726  		SCOPWD=	7726	/HLT-CLA HLT scope flag word in field 1
1070			
1071	 12600	0000  	CORTST,	0
1072	 12601	6201  		CDF	0	/Enter with AC = "MEMSIZ" from Teco
1073	 12602	3777  		DCA I	(MEMSIZ	/Store it for Teco
1074	 12603	1776  		TAD I	(BIPCCL	/BATCH ACTIVE ?
1075	 12604	7004  		RAL
1076	 12605	7700  		SMA CLA
1077	 12606	5212  		JMP	NOBATC	/NO, KEEP MEMSIZ AS IS
1078	 12607	7240  		STA
1079	 12610	1777  		TAD I	(MEMSIZ
1080	 12611	3777  		DCA I	(MEMSIZ	/REDUCE MEMSIZ FOR RESIDENT BATCH
1081	 12612	1777  	NOBATC,	TAD I	(MEMSIZ	/Now test the size
1082	 12613	7450  		SNA
1083	 12614	5333  		JMP	NOVT	/Jmp if only 8k (12K BATCH)
1084	 12615	2200  		ISZ	CORTST
1085	 12616	7110  		CLL RAR
1086	 12617	7450  		SNA
1087	 12620	5333  		JMP	NOVT	/Jmp if only 12k (16K BATCH)
1088	 12621	7010  		RAR		/See if exactly 16K (20K BATCH)
1089	 12622	7640  		SZA CLA
1090	 12623	5227  		JMP	OKMOVE	/Jmp if no
1091	 12624	1375  		TAD	(CLA	/Reduce Teco to 12k
1092	 12625	3774  		DCA I	(TWLVKP
1093	 12626	3773  		DCA I	(L16K	/Don't allow "/"
1094	 12627	1372  	OKMOVE,	TAD	(CLL STA RTL
1095	 12630	3771  		DCA I	(VTSUP
1096	 12631	6213  		CIF CDF	10	/Ok, reset fields
1097	 12632	1770  		TAD I	(SCOPWD	/Test if scope or not
1098	 12633	0367  		AND	(200
1099	 12634	7650  		SNA CLA
1100	 12635	5327  		JMP	TECRTN	/Jmp out if no, don't run VWATCH
1101	 12636	4766  		JMS I	(VTSTUF	/Now go check out type of vt terminal and Multi-8
1102	 12637	1731  	VTMOVL,	TAD I	VTAD1	/Relocate VWATCH routine to field 3 now
1103	 12640	6231  		CDF	30
1104	 12641	3731  		DCA I	VTAD1
1105	 12642	6211  		CDF	10
1106	 12643	2331  		ISZ	VTAD1
1107	 12644	2332  		ISZ	VTCNT
1108	 12645	5237  		JMP	VTMOVL
/6G VT52 Support for OS/8 TECO V  MACREL-V2C  FRI 07-DEC-90  PAGE 24-1
                                                 FILE # 1

1109	 12646	1365  		TAD	(VPATCH-1 /Set up pointer to patch list
1110	 12647	3010  		DCA	BXR
1111	 12650	1410  	PATLP1,	TAD I	BXR	/See if more
1112	 12651	7450  		SNA
1113	 12652	5266  		JMP	SETFIN	/Jmp if no
1114	 12653	3052  		DCA	PTR	/Save pointer
1115	 12654	1410  		TAD I	BXR	/Get counter
1116	 12655	3051  		DCA	CNT
1117	 12656	1410  	PATLUP,	TAD I	BXR	/Get a word
1118	 12657	6201  		CDF	0
1119	 12660	3452  		DCA I	PTR	/Store in Teco
1120	 12661	6211  		CDF	10
1121	 12662	2052  		ISZ	PTR
1122	 12663	2051  		ISZ	CNT
1123	 12664	5256  		JMP	PATLUP	/Do this segment
1124	 12665	5250  		JMP	PATLP1	/Now get next segment
1125	 12666	4764  	SETFIN,	JMS I	(DPATCH	/*M8 CHANGED TO 'CLA'
1126	 12667	6201  		CDF	0
1127	 12670	1363  		TAD	(1000	/Now set VWATCH bit in etflag
1128	 12671	1762  		TAD I	(ETFLAG
1129	 12672	3762  		DCA I	(ETFLAG
1130	 12673	1361  		TAD	(-40	/And shorten search buffer to preserve "CTLW" routine
1131	 12674	3760  		DCA I	(SRHLEN
1132	 12675	7346  		CLL STA RTL	/-3
1133	 12676	1777  		TAD I	(MEMSIZ	/See if gt 16K now
1134	 12677	7710  		SPA CLA
1135	 12700	5325  		JMP	ONLY16	/Jmp if only 16K (20K BATCH), force overlays to swap
1136	 12701	1357  		TAD	(CDF 40	/Force overlays to load into field 4
1137	 12702	3756  		DCA I	(CDF4A
1138	 12703	1357  		TAD	(CDF 40
1139	 12704	3755  		DCA I	(CDF4B
1140	 12705	1357  		TAD	(CDF 40
1141	 12706	3754  		DCA I	(CDF4C
1142	 12707	1353  		TAD	(CIF 40
1143	 12710	3752  		DCA I	(CIF4B
1144	 12711	1351  		TAD	(CIF CDF 40
1145	 12712	3750  		DCA I	(CIF4C
1146	 12713	1351  		TAD	(CIF CDF 40
1147	 12714	3747  		DCA I	(CIF4E
1148	 12715	1357  		TAD	(CDF 40
1149	 12716	6211  		CDF	10
1150	 12717	3746  		DCA I	(CDF4F
1151	 12720	1353  		TAD	(CIF 40
1152	 12721	3745  		DCA I	(CIF4A
1153	 12722	1357  		TAD	(CDF 40
1154	 12723	3744  		DCA I	(HCDF1
1155	 12724	5327  		JMP	TECRTN
1156	 12725	1375  	ONLY16,	TAD	(CLA	/Zap overlay space test
1157	 12726	3774  		DCA I	(TWLVKP
1158	 12727	6203  	TECRTN,	CIF CDF
1159	 12730	5600  		JMP I	CORTST	/All set, return to Teco core size routine
1160	 12731	0000  	VTAD1,	0
1161	 12732	5200  	VTCNT,	-CORTST		/Move up to this once only code
1162			
1163	 12733	6203  	NOVT,	CIF CDF	0
/6G VT52 Support for OS/8 TECO V  MACREL-V2C  FRI 07-DEC-90  PAGE 24-2
                                                 FILE # 1

1164	 12734	3773  		DCA I	(L16K	/Don't allow "/"
1165	 12735	5600  		JMP I	CORTST
	------
	 12744	0000 *
	 12745	0000 *
	 12746	0000 *
	 12747	0000 *
	 12750	0000 *
	 12751	6243  
	 12752	0000 *
	 12753	6242  
	 12754	0000 *
	 12755	0000 *
	 12756	0000 *
	 12757	6241  
	 12760	0000 *
	 12761	7740  
	 12762	0000 *
	 12763	1000  
	 12764	0671  
	 12765	7777 *
	 12766	3002  
	 12767	0200  
	 12770	7726  
	 12771	0000 *
	 12772	7346  
	 12773	0000 *
	 12774	0000 *
	 12775	7200  
	 12776	7777  
	 12777	0000 *
1166		3000  		PAGE
/6G VT52 Support for OS/8 TECO V  MACREL-V2C  FRI 07-DEC-90  PAGE 25
                                                 FILE # 1

1167			
1168				/TERMINAL CLASSIFICATION VIA ESACPE SEQUENCES
1169				/IF DESPERATE FOR ROOM, CAN REMOVE THIS
1170			
1171				.EXTERN	VT05A,VT05B,VT05C
1172			
1173	 13000	0000  	VTSUBT,	0		/GETS THIRD CHAR OF TERMINAL ESC SEQ
1174	 13001	0000  	VTM8,	0		/=1 IF UNDER MULTI8
1175	 13002	0000  	VTSTUF,	0
1176	 13003	6254  		6254		/SKIP ON MULTI8
1177	 13004	7610  		SKP CLA
1178	 13005	7201  		CLA IAC		/SET 1 FOR MULTI8
1179	 13006	3201  		DCA	VTM8
1180	 13007	7305  		CLA CLL IAC RAL	/GIOT 2
1181	 13010	6770  		6770		/TURN ECHO OFF
1182	 13011	7200  		CLA
1183	 13012	1377  		TAD	(33	/SEND WHAT-ARE-YOU ESCAPE SEQ
1184	 13013	4304  		JMS	CPCH
1185	 13014	1376  		TAD	(132
1186	 13015	4304  		JMS	CPCH
1187	 13016	4251  		JMS	CGCH	/GET CHAR OR TIME OUT
1188	 13017	1375  		TAD	(-33
1189	 13020	7640  		SZA CLA
1190	 13021	5265  		JMP	NOGDVT	/JMP IF NOT A VALID ESC SEQ
1191	 13022	4251  		JMS	CGCH
1192	 13023	1374  		TAD	(-57	/'/' SHOULD FOLLOW
1193	 13024	7640  		SZA CLA
1194	 13025	5265  		JMP	NOGDVT	/JMP IF NOT VT5X OR VT100
1195	 13026	4251  		JMS	CGCH	/CLASSIFY TYPE OF VT5X
1196	 13027	3200  	VTNOT,	DCA	VTSUBT	/SAVE VT5X TYPE FOR LATER USE
1197	 13030	7325  		CLA STL IAC RAL	/GIOT 3
1198	 13031	6770  		6770		/TURN ECHO ON AGAIN
1199	 13032	7200  		CLA
1200	 13033	1200  		TAD	VTSUBT	/WAS IT VT5X?
1201	 13034	7650  		SNA CLA
1202	 13035	5773  		JMP I	(TECRTN	/NO, DON'T ENABLE VWATCH
1203	 13036	1201  		TAD	VTM8	/ARE WE UNDER MULTI8?
1204	 13037	7650  		SNA CLA
1205	 13040	5602  		JMP I	VTSTUF	/NO, BUT VALID VT52 OR VT100
1206	 13041	1372  		TAD	(NOP
1207	 13042	3771  		DCA I	(KBDCHK+1	/DISABLE 'KBDCHK'
1208	 13043	3770  		DCA I	(VT52KL	/DISABLE TYPEAHEAD HOOKS
1209	 13044	1372  		TAD	(NOP
1210	 13045	3767  		DCA I	(SETFIN	/AND ANOTHER ONE
1211	 13046	1372  		TAD	(NOP
1212	 13047	3766  		DCA I	(TRYKBD	/DISABLE KEYBOARD CHECK IN VWATCH PRINT
1213	 13050	5602  		JMP I	VTSTUF
/6G VT52 Support for OS/8 TECO V  MACREL-V2C  FRI 07-DEC-90  PAGE 26
                                                 FILE # 1

1214			
1215	 13051	0000  	CGCH,	0
1216	 13052	7346  		CLL STA RTL	/-3
1217	 13053	3051  		DCA	CNT
1218	 13054	6031  	CGCHL,	KSF
1219	 13055	5261  		JMP	FIG8
1220	 13056	6036  		KRB
1221	 13057	0076  		AND	VT177
1222	 13060	5651  		JMP I	CGCH
1223	 13061	2304  	FIG8,	ISZ	CPCH
1224	 13062	5254  		JMP	CGCHL
1225	 13063	2051  		ISZ	CNT
1226	 13064	5254  		JMP	CGCHL
1227	 13065	1365  	NOGDVT,	TAD	(10	/RUBOUT THE CRAPPY CHAR IF NOT VALID TERMINAL
1228	 13066	4304  		JMS	CPCH
1229	 13067	1101  		TAD	VT40
1230	 13070	4304  		JMS	CPCH
1231	 13071	1365  		TAD	(10
1232	 13072	4304  		JMS	CPCH
1233	 13073	6201  		CDF		/NOW DO MODS TO TECO, ASSUMING A VT05
1234	 13074	1310  		TAD	O7200
1235	 13075	3764  		DCA I	(VT05A
1236	 13076	1363  		TAD	(32
1237	 13077	3762  		DCA I	(VT05B
1238	 13100	1361  		TAD	(36
1239	 13101	6211  		CDF	10
1240	 13102	3760  		DCA I	(VT05C
1241	 13103	5227  		JMP	VTNOT	/RETURN WITHOUT VWATCH ENABLED
1242			
1243	 13104	0000  	CPCH,	0
1244	 13105	6046  		TLS
1245	 13106	6041  		TSF
1246	 13107	5306  		JMP	.-1
1247	 13110	7200  	O7200,	7200
1248	 13111	5704  		JMP I	CPCH
1249			
	------
	 13160	0000 *
	 13161	0036  
	 13162	0000 *
	 13163	0032  
	 13164	0000 *
	 13165	0010  
	 13166	2507  
	 13167	2666  
	 13170	0000 *
	 13171	0245  
	 13172	7000  
	 13173	2727  
	 13174	7721  
	 13175	7745  
	 13176	0132  
	 13177	0033  
1250		3200  		PAGE
/6G VT52 Support for OS/8 TECO V  MACREL-V2C  FRI 07-DEC-90  PAGE 27
SYMBOL TABLE

ADJGO	  1241			DOSETC	  2445			MAPSZ	  3600			SRHLEN	X ****			
BAKGO	  1310			DOSTUF	  0422			MATLUP	  1061			SWATCH	G 0402			
BAKLP	  1306			DOTEXT	  1600			MEMSIZ	X ****			TAHCHK	  0232			
BAKUPL	  1302			DOVFL	  1627			MINST	  1262			TECRTN	  2727			
BIPCCL	  7777			DPATCH	  0671			MLOOP	  1260			TIMOUT	  0063			
BLCNT	  1331			DPOLL	  0062			N	X ****			TPUTX	X ****			
BLNKCT	  2324			EOBSEQ	  1670			NCOM	X ****			TRYCTL	  2050			
BLNKGO	  2302			EORETN	  1656			NEWLIN	  2200			TRYGO	  1027			
BLNKLP	  2276			EOSSEQ	  1676			NFLG	X ****			TRYKBD	  2507			
BLNKPT	  2323			ERR34	X ****			NLDONE	  2236			TRYMAT	  1042			
BLPTR	  1330			ETFLAG	X ****			NOBATC	  2612			TRYMOV	  1000			
BXR	  0010			EXCONT	  2030			NOCSAV	  0660			TRYTSF	  2514			
CCHAR	  2400			EXPGO	  2140			NOGDVT	  3065			TTYBEG	  3000			
CCTRAP	  0333			FBLNK	  2420			NOMTCH	  1077			TTYEND	  3600			
CDF4A	X ****			FCHAR	  2414			NOROOM	  0310			TTYINP	  0057			
CDF4B	X ****			FIG8	  3061			NOTBLN	  2310			TTYOUP	  0060			
CDF4C	X ****			FLD: 0	  0200  ASECT		NOTOUT	  0266			TWLVKP	X ****			
CDF4F	X ****			FUDCNT	  0401			NOVT	  2733			TXTCHR	  2145			
CGCH	  3051			FUDKNT	  0400			NWATCH	  0047			TXTPTR	  0027			
CGCHL	  3054			GETBYT	  2005			NXTRY	  1022			TYIFLG	  0055			
CHKBAS	  1101			GETQX	X ****			OFFSET	  0053			TYIRET	X ****			
CHKBUF	  3600			GOTCR	  2131			OKGETQ	  0357			UNDERC	  0034			
CHKCTC	X ****			GOTCRG	  2061			OKMOVE	  2627			UPLUP	  1230			
CHKCTR	X ****			GOTCTL	  2074			ONLY16	  2725			UPMOVE	  1224			
CHKCUR	  2024			GOTDEL	  2070			OUTBLN	  0046			VCNT	  0533			
CHKEOS	  1643			GOTESC	  2114			OUTCHR	  0045			VIDCOL	  0026			
CHKFLG	  0041			GOTTAB	  2116			OUTDNE	X ****			VIDLIN	  0025			
CHKLIN	  0040			HCDF1	X ****			OUTFIN	  1462			VPATCH	X ****			
CHKPTR	  0044			HCNT	  0534			OUTPTC	  2023			VRTCHR	  2465			
CHRCNT	  0030			HOLDMC	  2325			OUTPUT	  1400			VSIZE	  0030			
CIF4A	X ****			HSIZE	  0120			OVFCHK	  1602			VTAD1	  2731			
CIF4B	X ****			IMGCTL	  2112			OVSEQ	  1662			VTBLNK	  2251			
CIF4C	X ****			INITFL	  0050			O7200	  3110			VTCCB	G 0340			
CIF4E	X ****			KBDCHK	  0244			P	X ****			VTCHAR	  2326			
CLNSEQ	  2346			KBDCTC	  0323			PATLP1	  2650			VTCHKC	G 0200			
CNT	  0051			KBDCTO	  0262			PATLUP	  2656			VTCNT	  2732			
CORTST	G 2600			KCHAR	  0056			PCH	  2506			VTDONE	  2333			
CPCH	  3104			KNWSCR	  1431			PCHCHR	  2521			VTEXIT	  0420			
CRGCNT	  2144			LCNT	  1300			POLL	  0064			VTGETQ	G 0346			
CRSLIN	  0035			LEADBL	  2227			PSAV	  0043			VTMOVL	  2637			
CTCTST	  0315			LFSEQ	  1222			PTMP	  1467			VTM20	  0100			
CTLWR	X ****			LINBAS	  0032			PTR	  0052			VTM3	  0102			
CUR	G 0030			LINCNT	  0036			PTRTXT	  0031			VTM8	  3001			
CURCOL	  0023			LINES	  0603			PUTCH	  2466			VTNOT	  3027			
CURLIN	  0022			LINPTR	  0033			QSAVE	  0061			VTSEND	  2336			
CURPTR	  0024			LOFFST	  0054			REVSEQ	  1217			VTSTUF	  3002			
CURSEQ	  1470			LOOP	  2000			RTMOST	  0037			VTSUBT	  3000			
CXR	  0011			LPOLL	  0067			SAVCNT	  0670			VTSUP	X ****			
DNLUP	  1203			L16K	X ****			SAVCOL	  2250			VTYI	G 0204			
DNMOVE	  1200			MAPADJ	  1253			SAVECP	  2033			VTYILP	  0203			
DOLCNT	  0600			MAPCOL	  0020			SCOPWD	  7726			VT05A	X ****			
DONTSV	  0644			MAPND	  7600			SEQPTR	  2505			VT05B	X ****			
DOSEQ	  2476			MAPPTR	  0021			SETCUR	  2426			VT05C	X ****			
DOSEQL	  2477			MAPST	  4000			SETFIN	  2666			VT177	  0076			
/6G VT52 Support for OS/8 TECO V  MACREL-V2C  FRI 07-DEC-90  PAGE 27-1
SYMBOL TABLE

VT4	  0104			
VT40	  0101			
VT52D	X ****			
VT52KL	X ****			
VT7	  0103			
VT77	  0077			
VWATCH	  3200  ASECT		
XOFFSE	  1301			
XX	  0014			
XXXJMP	  0702			
YSEQ	  2462			
ZZ	X ****			
ZZSAV	  0042