TSTCH EQU 'A' GROUP1 EQU 1 ;CODE FOR FIRST ACE (J1) GROUP2 EQU 2 ;CODE FOR SECOND ACE (J2) GROUP3 EQU 3 ;CODE FOR THIRD ACE (J3) BASE EQU 48H ;BASE I/O ADDRESS SET BY SW-8C GRPCTL EQU BASE+7 ;BOARD GROUP CONTROL PORT DLL EQU BASE ;ACE BAUD RATE DIVISOR (LSB) DLM EQU BASE+1 ;ACE BAUD RATE DIVISOR (MSB) IER EQU BASE +1 ;ACE INTERRUPT ENABLE REGISTER LCR EQU BASE +3 ;ACE LINE CONTROL REGISTER LSR EQU BASE +5 ;ACE LINE STATUS REGISTER RBR EQU BASE ;ACE RECEIVER BUFFER REGISTER THR EQU BASE ;ACE TRANSMITTER HOLDING REGISTER DLAB EQU 80H ;DIVISOR LATCH ACCESS BIT THRE EQU 20H ;LINE STATUS REGISTER THRE BIT DR EQU 1 ;LINE STATUS REGISTER DR BIT BAUDL EQU 12 ;DIVISOR LATCH LOW BYTE - - 9600 BAUD BAUDH EQU 0 ;DIVISOR LATCH HIGH BYTE - - 9600 BAUD WLS0 EQU 1 ;WORD LENGTH SELECT BIT 0 - 8 BIT WORD WLS1 EQU 2 ;WORD LENGTH SELECT BIT 1 - 8 BIT WORD STB EQU 4 ;STOP BIT COUNT - 2 STOP BITS IMASK EQU 0 ;INTERRUPT MASK - DISABLE ALL BDOS EQU 5 CR EQU 0AH LF EQU 0DH ; BASE2 EQU 10H ;BASE I/O FOR MULT BD2 GRPCTL2 EQU BASE2+7 ;BOARD GROUP CONTROL PORT DLL2 EQU BASE2 ;ACE BAUD RATE DIVISOR (LSB) DLM2 EQU BASE2+1 ;ACE BAUD RATE DIVISOR (MSB) IER2 EQU BASE2+1 ;ACE INTERRUPT ENABLE REGISTER LCR2 EQU BASE2+3 ;ACE LINE CONTROL REGISTER LSR2 EQU BASE2+5 ;ACE LINE STATUS REGISTER RBR2 EQU BASE2 ;ACE RECEIVER BUFFER REGISTER THR2 EQU BASE2 ;ACE TRANSMITTER HOLDING REGISTER ; ORG 100H MVI A,GROUP1 OUT GRPCTL ;SELECT FIRST SERIAL DEVICE OUT GRPCTL2 CALL INIT MVI A,GROUP2 OUT GRPCTL ;SELECT SECOND SERIAL DEVICE OUT GRPCTL2 CALL INIT MVI A,GROUP3 OUT GRPCTL ;SELECT THIRD SERIAL DEVICE OUT GRPCTL2 CALL INIT JMP OUTONE INIT MVI A,DLAB+WLS0+WLS1+STB OUT LCR OUT LCR2 MVI A,BAUDL OUT DLL OUT DLL2 MVI A,BAUDH OUT DLM OUT DLM2 MVI A,WLS0+WLS1+STB OUT LCR OUT LCR2 XRA A OUT LSR OUT LSR2 MVI A,IMASK OUT IER OUT IER2 RET ; OUTONE MVI C,TSTCH MVI A,GROUP1 OUT GRPCTL OUT GRPCTL2 CALL CONOUT OUTTWO MVI C,TSTCH MVI A,GROUP2 OUT GRPCTL OUT GRPCTL2 CALL CONOUT CALL STATUS CPI 0FFH JNZ MISS CALL CONIN CPI TSTCH JZ OUTTHR MOV E,A MVI C,2 CALL BDOS JMP OUTTHR MISS LXI D,NODR2 MVI C,09H CALL BDOS OUTTHR MVI C,TSTCH MVI A,GROUP3 OUT GRPCTL OUT GRPCTL2 CALL CONOUT JMP OUTONE ; STATUS MVI E,0 WAIT DCR D DCR E JNZ WAIT INLP IN LSR2 ANI DR RZ MVI A,0FFH RET ; CONOUT MVI A,WLS0+WLS1+STB OUT LCR CONOUTL IN LSR ANI THRE JZ CONOUTL MOV A,C OUT THR CKINT LDA 0E3F9H ANI 4 RNZ JMP 0 ; CONIN MVI A,WLS0+WLS1+STB OUT LCR2 CONIN1 IN LSR2 ANI DR JZ CONIN1 IN RBR2 ANI 7FH RET NODR2 DB CR,LF DB 'NO DR ON 2$' END