Compucolor.org – Virtual Media

Listing of file='TALKL6.SRC;01' on disk='vmedia/comm_pgms-sideA-sector.ccvf'

;ROUTINE TO ALLOW COMPUCOLOR II TO TALK TO OTHER COMPUTERS
;USING THE INDUSTRY STANDARD OF EVEN PARITY
;WRITTEN BY RICKI A. VICK ON 23 JUNE 1980
;
S1OUT	EQU	33C3H	;TRANSMIT CHARACTER FROM E
CMPHD	EQU	344DH	;COMPARE HL:DE
SVCHA	EQU	39DCH	;SYSTEM DEFAULT CHARACTER DISPLAY ROUT.
KBDFL	EQU	81DFH	;KEYBOARD INPUT FLAG
INPFL	EQU	81E3H	;RS232 INPUT PORT FLAG
	;
	;	LINKAGE TO COMPUCOLOR EXECUTIVE
	;
	ORG	33215	;ESC USER JUMP VECTOR
	JMP	LINK	;ONE TIME INITIALIZATION
	ORG	33221	;USER INPUT FLAG JUMP VECTOR
	JMP	WHICH	;USER ROUTINE TO EDIT INPUT TO/FOR HOST
	ORG	40900
	;
	;	ROUTINE TO DETERMINE WHICH SOURCE OF DATA
	;	HAS PROVIDED A CHARACTER
	;
WHICH:	PUSH	PSW	;SAVE MACHINE STATE
	PUSH	D	;SAVE DE
	LXI	D,KBDFL	;ADDRESS OF KEYBOARD INPUT FLAG
	CALL	CMPHD	;CALL HL:DE COMPARE
	JZ	PARTY	;JUMP IF CALL WAS FOR KEYBOARD CHARACTER
	LXI	D,INPFL	;ADDRESS OF RS232 INPUT PORT FLAG
	CALL	CMPHD	;CALL HL:DE COMPARE
	JZ	EDIT	;JUMP IF CALL WAS FOR HOST CHARACTER
	POP	D	;RESTORE DE
	POP	PSW	;RESTORE MACHINE STATE
	RET		;DID NOT WANT THIS CHARACTER ANYWAY
	;
	;	ROUTINE TO GENERATE PARITY FOR HOST
	;
PARTY:	POP	D	;RESTORE DE
	MOV	A,E
	ANI	7FH	;FORCE PARITY BIT OFF
	JPE	POK
	ORI	80H	;SET PARITY BIT
POK:	MOV	E,A
	POP	PSW
	JMP	S1OUT	;SYSTEM ROUTINE TO TRANSMIT E ON RS232
	;
	;	ROUTINE TO EDIT INPUT FROM HOST
	;
EDIT:	POP	D	;RESTORE DE
	MOV	A,E
	ANI	7FH
	CPI	7FH
	JZ	EX2	;IGNORE DEL
	CPI	0AH
	JZ	EX1	;TAKE LF
	CPI	0DH
	JZ	EX1	;TAKE CR
	CPI	20H
	JC	EX2	;IGNORE CONTROL CHARACTERS
EX1:	MOV	E,A
	POP	PSW
	JMP	SVCHA	;SYSTEM ROUTINE TO DISPLAY CHARACTER IN E
EX2:	POP	PSW
	RET
	;
	;	SET UP LINKAGE
	;
LINK:	PUSH	PSW
	MVI	A,31	;USER INPUT ROUTINE VECTOR
	STA	INPFL	;RS232 INPUT PORT FLAG
	MVI	A,31	;USER INPUT ROUTINE VECTOR
	STA	KBDFL	;KEYBOARD INPUT FLAG
	MVI	A,84H	;300 BAUD 1 STOP BIT
	OUT	5	;SET BAUD RATE
	POP	PSW
	RET
	END	LINK