db 0 ;used by swap.com conin: call const ;select console and test for char ORA A ;SEE IF ZERO OR NON ZERO RETURNED jz conin ; in rbr ;Read character LDA CONCHR ani 7fh ;Strip parity MOV C,A XRA A STA CONCHR ;RESET CONCHR TO INDICATE NO CHAR HAS BEEN RECD MOV A,C ret UNIX MVI C,'2' ;ENTER HERE WHEN BREAK TYPED WHILE WORKING WITH HOST CALL CONOUT ;DISPLAY PORT NUMBER 2 ON SCREEN TERMCHR:call selcon ;Select console in lsr ;Read status register ani dr JZ L0113H ;IF NO CHAR READY, THEN SEE IF CHAR IS READY AT PORT 3 IN RBR ;GET THE CHARACTER ORA A JNZ NOBREAK ;(RETURN TO CP/M IF 00H (NULL)(BREAK)TYPED??? LXI H,UGRPNUM MOV A,M CPI 2 JZ NOW3 DCR M ;RETURN TO HOST COMPUTER OPERATION MVI C,'1' CALL CONOUT RET NOW3 INR M MVI C,'3' CALL CONOUT JMP L0113H NOBREAK MOV C,A ;LOAD THE CHARACTER INTO THE C REGISTER CALL L013FH ;OUTPUT THE CHARACTER IN THE C REGISTER L0113H CALL UCHRRDY ;IS DATA IS READY FROM PORT 2/3 (0 IF NOT,FF IF YES) ORA A JZ TERMCHR ;IF NO DATA READY, THEN SEE IF DATA IS READY AT PORT 1 CALL L012AH ;GET DATA FROM PORT 3 MOV C,A ;LOAD THE CHARACTER INTO THE C REGISTER CALL L0139H ;OUTPUT THE CHARACTER IN THE C REGISTER JMP TERMCHR ;SEE IF DATA READY AT PORT 1 L012AH CALL USELGRP L012DH IN LSR ANI DR JZ L012DH ;LOOP UNTIL DATA IS READY IN RBR ;READ THE DATA ANI 07FH ;CLEAR THE PARITY BIT RET L0139H CALL SELCON JMP UOUTCHR L013FH CALL USELGRP UOUTCHR: IN LSR ANI THRE JZ UOUTCHR ;LOOŠ UNTIĢ TRANSMITTEŅ HOLDINĒ REGISTER IS EMPTY MOV A,C OUT THR ;LOAD CHARACTER INTO TRANSMITTER HOLDING REGISTER RET UCHRRDY CALL USELGRP IN LSR ANI DR RZ ;RETURN A ZERO IF DATA NOT READY MVI A,0FFH RET ;RETURN FF IF DATA IS READY USELGRP:MVI A,002H ;NUMBER PATCHED TO CURRENT GROUP NUMBER UGRPNUM EQU $-1 OUT 04FH ;SELECT GROUP RET Š ;Console Output ;-------------- ; db 1 ;used by swap.com conout: call conost ;Select console and test status jz conout mov a,c ;Character is in (c) ani 7fh out thr ;Output to transmitter buffer ret ;Console Status ;-------------- ; 1) Returns zero if character is not ready to be read; Otherwise, ; this routine returns 255 indicating a ready condition. ; const: LDA CONCHR CPI 0 JNZ CHRRDY call selcon ;Select console in lsr ;Read status register ani dr rz ;No character ready IN RBR STA CONCHR ;SAVE THE CHARACTER CPI 0 JNZ CHRRDY ;IF CHARACTER IS NOT A BREAK CALL UNIX MVI A,0 RET CHRRDY: mvi a,0ffh ;Character ready ret CONCHR: DB 0 ;Console Output Status Routine ;----------------------------- ; conost: call selcon ; in msr ;Hardware handshake check-read pin 8 (CTS) of port ; ani 010h ;1. Routine added 10/18/83 by Ron Jacobs ; rz in lsr ani thre rz mvi a,0ffh ret ;Console Select Routine ;---------------------- ; selcon: lxi d,group ;pass to application ldax d ori congrp out grpsel ret endif ;End of Multio/Wunderbuss Console Driver