[net.micro.trs-80] vt52 for the Model 4

johnw@reed.UUCP (John Windberg) (09/12/86)

Ok Ok after so many requests, I will post the source as the author,
Michael S. Leibow sent me. It has it's copyright message in it.
Copyable as long as no one makes any money on it basically.
None of the keys not present on the model 4 keyboard are implimented.
There is no option for printer support or ascii file transfer,
but is does emulate a vt52 perfectly in all aspects
 If all changes made by users out there are resent to me, I will compare,
combine, etc. and repost the final version in all it's glory.
The only caution I can make about it is when converting it to assembler
format, be careful not to delete all the commas as I had done.
Good luck.
Johnw@reed



F1 is the delete key.
F2 toggles the wrap, nowrap feature.
F3 toggles the arrow keys.

-----------------------------Cut Here-----------------------------
00100		ORG	3000H
00110	START	PUSH	HL
00120		LD	A,2
00130		LD	C,28
00140		RST	28H
00150		CALL	CLS
00160		LD	A,82
00170		LD	E,'D'
00180		LD	D,'O'
00190		RST	28H
00200		LD	(DODCB),HL
00210		LD	DE,(DODCB)
00220		LD	HL,MSG
00230		LD	A,13
00240		RST	28H
00250		POP	HL
00260		LD	DE,DCB
00270		LD	A,78
00280		RST	28H
00290		LD	A,(DE)
00300		CP	2AH
00310		JP	NZ,CLNI
00320		PUSH	DE
00330		POP	HL
00340		INC	HL
00350		LD	A,(HL)
00360		LD	E,A
00370		INC	HL
00380		LD	A,(HL)
00390		LD	D,A
00400		LD	A,82		;CHECK TO SEE IF DRIVER
00410					;IS ALIVE?
00420		RST	28H
00430		JP	NZ,CLNI
00440		LD	A,(HL)
00450		BIT	3,A
00460		JP	NZ,CLNI
00470		LD	(DCB),HL
00480		LD	DE,(DCB)
00490		LD	C,2
00500		LD	A,5
00510		RST	28H		;INITIALIZE DRIVER
00520		LD	A,100		;GET HIGH$
00530		LD	B,0
00540		LD	HL,0
00550		RST	28H
00560		LD	(RLAST),HL
00570		LD	DE,(DCB)
00580		LD	IY,RSIINT
00590		LD	C,4
00600		LD	A,5
00610		DI
00620		RST	28H
00630		EI
00640	LOOP	LD	A,(BELCNT)
00650		OR	A
00660		JP	Z,LOOP1
00670		OUT	(90H),A
00680		DEC	A
00690		LD	(BELCNT),A
00700	LOOP1	LD	A,8
00710		RST	28H
00720		JP	NZ,LOOP2
00730		CP	128
00740		JP	Z,BYEBYE
00750		CP	129
00760		CALL	Z,DEL
00770		CP	130
00780		JP	Z,AM
00790		CP	131
00800		JP	Z,F3
00810		LD	C,A
00820		LD	A,(AKEYS)
00830		OR	A
00840		JP	Z,LOOP1A
00850		LD	A,C
00860		CP	8
00870		CALL	Z,ALEFT
00880		CP	9
00890		CALL	Z,ARIGHT
00900		CP	10
00910		CALL	Z,ADOWN
00920		CP	11
00930		CALL	Z,AUP
00940	LOOP1A	LD	A,20
00950		LD	B,2
00960		LD	IX,(DCB)
00970		RST	28H
00980	LOOP2	CALL	RSI
00990		JP	Z,LOOP
01000		PUSH	AF
01010		LD	A,(CODE1)
01020		OR	A
01030		JP	NZ,PART3
01040		LD	A,(CODE)
01050		OR	A
01060		JP	NZ,PART2
01070		POP	AF
01080		CP	27
01090		JP	Z,GOTESC
01100		CP	8
01110		JP	Z,BS
01120		CP	7
01130		JP	Z,BELL
01140		CP	13
01150		JP	Z,CR
01160		CP	10
01170		JP	Z,LF
01180		CP	9
01190		JP	Z,TAB
01200		CP	127
01210		JP	Z,DELETE
01220		CP	32
01230		JP	C,LOOP
01240	DSP	PUSH	AF
01250		LD	A,15
01260		LD	B,4
01270		RST	28H
01280		LD	A,15
01290		POP	BC
01300		LD	C,B
01310		LD	B,2
01320		RST	28H
01330		LD	A,(AMFLG)
01340		OR	A
01350		JP	NZ,ADVNCE
01360		JP	RIGHT
01370	NDSP	LD	A,2
01380		RST	28H
01390		JP	LOOP
01400	ALEFT	LD	C,'D'
01410		JP	AOUT
01420	ARIGHT	LD	C,'C'
01430		JP	AOUT
01440	AUP	LD	C,'A'
01450		JP	AOUT
01460	ADOWN	LD	C,'B'
01470		JP	AOUT
01480	AOUT	PUSH	BC
01490		LD	A,20
01500		LD	B,2
01510		LD	IX,(DCB)
01520		LD	C,27
01530		RST	28H
01540		POP	BC
01550		XOR	A
01560		RET
01570	BS	LD	C,18H
01580		JP	NDSP
01590	DEL	LD	A,127
01600		RET
01610	DELETE	LD	C,8
01620		JP	NDSP
01630	CR	LD	A,15
01640		LD	B,4
01650		RST	28H
01660		LD	L,0
01670		LD	A,15
01680		LD	B,3
01690		RST	28H
01700		JP	LOOP
01710	F3	LD	A,(AKEYS)
01720		XOR	1
01730		LD	(AKEYS),A
01740		JP	LOOP
01750	AM	LD	A,(AMFLG)
01760		XOR	1
01770		LD	(AMFLG),A
01780		JP	LOOP
01790	BELL	LD	A,255
01800		LD	(BELCNT),A
01810		JP	LOOP
01820	RVON	LD	C,16
01830		JP	NDSP
01840	RVOFF	LD	C,17
01850		JP	NDSP
01860	RS	LD	A,15
01870		LD	B,4
01880		RST	28H
01890		LD	A,H
01900		OR	A
01910		JP	Z,RSCR
01920		DEC	H
01930		LD	A,15
01940		LD	B,3
01950		RST	28H
01960		JP	LOOP
01970	RSCR	LD	A,15
01980		LD	B,6
01990		LD	HL,BUFF
02000		RST	28H
02010		LD	HL,BUFF+1839
02020		LD	DE,BUFF+1919
02030		LD	BC,1840
02040		LDDR
02050		LD	HL,BUFF
02060		LD	(HL),20H
02070		LD	DE,BUFF+1
02080		LD	BC,79
02090		LDIR
02100		LD	A,15
02110		LD	B,5
02120		LD	HL,BUFF
02130		RST	28H
02140		JP	LOOP
02150	LF	LD	A,15
02160		LD	B,4
02170		RST	28H
02180	LF1	LD	A,H
02190		CP	23
02200		JP	Z,SCROLL
02210		INC	H
02220		LD	A,15
02230		LD	B,3
02240		RST	28H
02250		JP	LOOP
02260	SCROLL	LD	A,15
02270		LD	B,6
02280		LD	HL,BUFF
02290		RST	28H
02300		LD	HL,BUFF+80
02310		LD	DE,BUFF
02320		LD	BC,1840
02330		LDIR
02340		LD	HL,BUFF+1840
02350		LD	DE,BUFF+1841
02360		LD	(HL),20H
02370		LD	BC,79
02380		LDIR
02390		LD	A,15
02400		LD	B,5
02410		LD	HL,BUFF
02420		RST	28H
02430		JP	LOOP
02440	TAB	LD	A,15
02450		LD	B,4
02460		RST	28H
02470		LD	A,L
02480		ADD	A,8
02490		CP	80
02500		JP	NC,TAB2
02510		AND	248
02520	TAB1	LD	L,A
02530		LD	A,15
02540		LD	B,3
02550		RST	28H
02560		JP	LOOP
02570	TAB2	LD	A,79
02580		JP	TAB1
02590	CLNI	LD	HL,ERROR
02600		LD	A,13
02610		LD	DE,(DODCB)
02620		RST	28H
02630		LD	A,22
02640		LD	L,8
02650		LD	H,0
02660		RST	28H
02670		JP	0000
02680	GOTESC	LD	A,1
02690		LD	(CODE),A
02700		JP	LOOP
02710	PART2	XOR	A
02720		LD	(CODE),A
02730		POP	AF
02740		CP	'A'
02750		JP	Z,UP
02760		CP	'B'
02770		JP	Z,DOWN
02780		CP	'C'
02790		JP	Z,RIGHT
02800		CP	'D'
02810		JP	Z,LEFT
02820		CP	'J'
02830		JP	Z,CLD
02840		CP	'K'
02850		JP	Z,CLL
02860		CP	'H'
02870		JP	Z,HOME
02880		CP	'I'
02890		JP	Z,RS
02900		CP	'L'
02910		JP	Z,ADDLNE
02920		CP	'M'
02930		JP	Z,DELLNE
02940		CP	'Y'
02950		JP	Z,CM
02960		CP	'p'
02970		JP	Z,RVON
02980		CP	'q'
02990		JP	Z,RVOFF
03000		JP	LOOP
03010	UP	LD	A,15
03020		LD	B,4
03030		RST	28H
03040		LD	A,H
03050		OR	A
03060		JP	Z,LOOP
03070		DEC	H
03080		LD	A,15
03090		LD	B,3
03100		RST	28H
03110		JP	LOOP
03120	DOWN	LD	A,15
03130		LD	B,4
03140		RST	28H
03150		LD	A,H
03160		CP	23
03170		JP	Z,LOOP
03180		INC	H
03190		LD	A,15
03200		LD	B,3
03210		RST	28H
03220		JP	LOOP
03230	RIGHT	LD	A,15
03240		LD	B,4
03250		RST	28H
03260		LD	A,L
03270		CP	79
03280		JP	Z,LOOP
03290	RIGHT1	INC	L
03300		LD	A,15
03310		LD	B,3
03320		RST	28H
03330		JP	LOOP
03340	ADVNCE	LD	A,15
03350		LD	B,4
03360		RST	28H
03370		LD	A,L
03380		CP	79
03390		JP	NZ,RIGHT1
03400		LD	L,0
03410		LD	A,15
03420		LD	B,3
03430		RST	28H
03440		JP	LF
03450	LEFT	LD	A,15
03460		LD	B,4
03470		RST	28H
03480		LD	A,L
03490		OR	A
03500		JP	Z,LOOP
03510		DEC	L
03520		LD	A,15
03530		LD	B,3
03540		RST	28H
03550		JP	LOOP
03560	HOME	LD	H,0
03570		LD	L,0
03580		LD	A,15
03590		LD	B,3
03600		RST	28H
03610		JP	LOOP
03620	CLD	LD	A,15
03630		LD	B,6
03640		LD	HL,BUFF
03650		RST	28H
03660		CALL	CURPOS
03670		PUSH	HL
03680		EX	DE,HL
03690		LD	HL,2048
03700		OR	A
03710		SBC	HL,DE
03720		PUSH	HL
03730		POP	BC
03740		POP	HL
03750		LD	DE,BUFF
03760		ADD	HL,DE
03770		PUSH	HL
03780		POP	DE
03790		INC	DE
03800		LD	(HL),20H
03810		LDIR
03820		LD	A,15
03830		LD	B,5
03840		LD	HL,BUFF
03850		RST	28H
03860		JP	LOOP
03870	CLL	LD	A,15
03880		LD	B,6
03890		LD	HL,BUFF
03900		RST	28H
03910		CALL	CURPOS
03920		LD	DE,BUFF
03930		ADD	HL,DE
03940		PUSH	HL
03950		LD	A,15
03960		LD	B,4
03970		RST	28H
03980		LD	A,L
03990		POP	HL
04000	CLL1	LD	(HL),20H
04010		INC	HL
04020		INC	A
04030		CP	80
04040		JP	NZ,CLL1
04050		LD	A,15
04060		LD	B,5
04070		LD	HL,BUFF
04080		RST	28H
04090		JP	LOOP
04100	ADDLNE	LD	A,15
04110		LD	B,4
04120		RST	28H
04130		LD	L,0
04140		LD	A,15
04150		LD	B,3
04160		RST	28H
04170		CALL	CURPOS
04180		LD	DE,1840
04190		CALL	CPHLDE
04200		JP	NC,CLL
04210		PUSH	HL
04220		LD	HL,BUFF
04230		LD	A,15
04240		LD	B,6
04250		RST	28H
04260		LD	DE,BUFF
04270		POP	HL
04280		ADD	HL,DE
04290		EX	DE,HL
04300		PUSH	DE
04310		LD	HL,BUFF+1840
04320		OR	A
04330		SBC	HL,DE
04340		PUSH	HL
04350		POP	BC
04360		LD	HL,BUFF+1839
04370		LD	DE,BUFF+1919
04380		LDDR
04390		POP	HL
04400		XOR	A
04410		JP	CLL1
04420	DELLNE	LD	A,15
04430		LD	B,4
04440		RST	28H
04450		LD	L,0
04460		LD	A,15
04470		LD	B,3
04480		RST	28H
04490		CALL	CURPOS
04500		LD	DE,1840
04510		CALL	CPHLDE
04520		JP	NC,CLL
04530		PUSH	HL
04540		LD	HL,BUFF
04550		LD	A,15
04560		LD	B,6
04570		RST	28H
04580		LD	DE,BUFF
04590		POP	HL
04600		ADD	HL,DE
04610		EX	DE,HL
04620		PUSH	DE
04630		LD	HL,BUFF+1840
04640		OR	A
04650		SBC	HL,DE
04660		PUSH	HL
04670		POP	BC
04680		POP	HL
04690		PUSH	HL
04700		LD	DE,80
04710		ADD	HL,DE
04720		POP	DE
04730		LDIR
04740		LD	HL,BUFF+1840
04750		XOR	A
04760		JP	CLL1
04770	CURPOS	LD	A,15
04780		LD	B,4
04790		RST	28H
04800		LD	A,H
04810		LD	C,L
04820		LD	HL,0
04830		LD	DE,80
04840	CLLOOP	OR	A
04850		JP	Z,CLLPE
04860		ADD	HL,DE
04870		DEC	A
04880		JP	CLLOOP
04890	CLLPE	LD	B,0
04900		ADD	HL,BC
04910		RET
04920	CM	LD	A,255
04930		LD	(CODE1),A
04940		JP	LOOP
04950	PART3	LD	A,(CODE1)
04960		CP	255
04970		JP	NZ,PART3B
04980		POP	AF
04990		LD	(CODE1),A
05000		JP	LOOP
05010	PART3B	LD	A,(CODE1)
05020		SUB	32
05030		LD	H,A
05040		POP	AF
05050		SUB	32
05060		LD	L,A
05070		LD	A,15
05080		LD	B,3
05090		RST	28H
05100		XOR	A
05110		LD	(CODE1),A
05120		JP	LOOP
05130	CLS	LD	HL,BUFF
05140		LD	(HL),20H
05150		LD	DE,BUFF+1
05160		LD	BC,2048
05170		LDIR
05180		LD	A,15
05190		LD	B,5
05200		LD	HL,BUFF
05210		RST	28H
05220		LD	HL,0
05230		LD	A,15
05240		LD	B,3
05250		RST	28H
05260		RET
05270	BYEBYE	LD	DE,(DCB)
05280		LD	IY,0
05290		LD	C,4
05300		LD	A,5
05310		DI
05320		RST	28H
05330		EI
05340		LD	HL,0
05350		LD	A,22
05360		RST	28H
05370		JP	0000
05380	RSIINT	DI
05390		PUSH	AF
05400		PUSH	BC
05410		PUSH	DE
05420		PUSH	HL
05430		PUSH	IX
05440		PUSH	IY
05450		LD	A,20
05460		LD	B,1
05470		LD	IX,(DCB)
05480		RST	28H
05490		JP	NZ,RSLVE
05500		LD	HL,(RPUT)
05510		LD	(HL),A
05520		CALL	RTEND
05530		LD	(RPUT),HL
05540	RSLVE	POP	IY
05550		POP	IX
05560		POP	HL
05570		POP	DE
05580		POP	BC
05590		POP	AF
05600		EI
05610		RET
05620	RSI	LD	HL,(RTAK)
05630		LD	DE,(RPUT)
05640		CALL	CPHLDE
05650		RET	Z
05660		LD	A,(HL)
05670		CALL	RTEND
05680		LD	(RTAK),HL
05690		RET
05700	RTEND	PUSH	AF
05710		INC	HL
05720		LD	DE,(RLAST)
05730		CALL	CPHLDE
05740		JP	C,RTE1
05750		LD	HL,RFIRST
05760	RTE1	POP	AF
05770		RET
05780	CPHLDE	LD	A,H
05790		SUB	D
05800		RET	NZ
05810		LD	A,L
05820		SUB	E
05830		RET
05840	BUFF	DEFS	2049
05850	DCB	DEFS	100
05860	DODCB	DEFW	0000
05870	MSG	DEFM	'Small Term Version 1.0 - VT52 Terminal Emulator for TRS-80 Model IV'
05880		DEFB	0AH
05890		DEFM	'Copyright (C) - 02/21/1986   Written By Michael S. Leibow'
05900		DEFB	0AH
05910		DEFB	0AH
05920		DEFM	'Permission to copy this program is granted provided that the copyright'
05930		DEFB	0AH
05940		DEFM	'is not made or distributed for commercial advantage.  Permission to copy'
05950		DEFB	0AH
05960		DEFM	'is given by the author, Michael Leibow, for personal use only.'
05970		DEFB	0AH
05980		DEFB	0AH
05990		DEFM	'VT52 is a trademark of Digital Equipment Corporation.'
06000		DEFB	0AH
06010		DEFM	'TRS-80 is a trademark of Tandy Corporation.'
06020		DEFB	0AH
06030		DEFB	0DH
06040	ERROR	DEFM	'Device Not Available'
06050		DEFB	0DH
06060	CODE1	DEFB	0
06070	CODE	DEFB	0
06080	BELCNT	DEFB	0
06090	AMFLG	DEFB	0
06100	AKEYS	DEFB	0
06110	RPUT	DEFW	RFIRST
06120	RTAK	DEFW	RFIRST
06130	RLAST	DEFW	0000
06140	RFIRST	EQU	$
06150		END	START
-- 
Michael S. Leibow
UUCP:		{allegra,seismo}!rochester!ritcv!msl5864
CSNET:		msl5864%rit@csnet-relay.ARPA

harris@dg_rtp.UUCP (Mark Harris) (09/17/86)

For anyone who does not know, kermit for the trs-80 model 4 has a 
vt52 emulator that seems to work fine.  The vt52 emulator in the model 1&3
kermits don't seem to work too well, at least in MY copy.
Kermit can be obtained from okstate or just about any bulletin board
that supports the trs-80 1,3,&4.