Listing of file='BREAK.SRC;02' 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 ;UPDATED WITH "BREAK KEY" FUNCTIONALITY ON 14 JULY 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 READY EQU 81FFH ;KEYBOARD READY FLAG BRAKE EQU 3BH ;STANDARD "BREAK PROCESSOR" OSTR EQU 33F4H ;DISPLAY STRING ENDING WITH 239 ;WATL EQU 3429H ;LONG WAIT: 20 MSEC / COUNT ; ; 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 CALLED 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 ROUT. 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 LXI H,PROMPT;"RICKIS TERMINAL PROGRAM VERSION 1.0" CALL OSTR ;DISPLAY MESSAGE LOOP: ; MVI A,5 ;5*20 = 100 MSEC ; CALL WATL ;LONG WAIT LDA READY ;IS THERE A CHARACTER FROM THE KEYBOARD CPI 50H ;IS IT A BREAK? JNZ LOOP ;GO BACK AND LOOP LOOKING FOR A BREAK ; LXI H,BRKMSG;"BREAK KEY" ; CALL OSTR ;DISPLAY MESSAGE XRA A ;CLEAR A STA READY ;RESET BREAK FLAG CALL BRAKE ;FCS "BREAK KEY PROCESSOR" JMP LOOP ;ONLY WAY OUT IS "CPU RESET" POP PSW RET ;BRKMSG: DB 13,10,'BREAK KEY',13,10,239 PROMPT: DB 6,2,11,29,'RICKIS ',19,'TERMINAL ',20,'PROGRAM ' DB 23,'VERSION ',17,'1.0',18,13,10,239 END LINK