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 ; ORG 100H MVI A,GROUP1 OUT GRPCTL ;SELECT FIRST SERIAL DEVICE CALL INIT MVI A,GROUP2 OUT GRPCTL ;SELECT SECOND SERIAL DEVICE CALL INIT MVI A,GROUP3 OUT GRPCTL ;SELECT THIRD SERIAL DEVICE CALL INIT JMP OUTONE INIT MVI A,DLAB+WLS0+WLS1+STB OUT LCR MVI A,BAUDL OUT DLL MVI A,BAUDH OUT DLM MVI A,WLS0+WLS1+STB OUT LCR XRA A OUT LSR MVI A,IMASK OUT IER RET ; OUTONE MVI C,'C' MVI A,GROUP1 OUT GRPCTL CALL CONOUT OUTTWO MVI C,'C' MVI A,GROUP2 OUT GRPCTL CALL CONOUT OUTTHR MVI C,'C' MVI A,GROUP3 OUT GRPCTL CALL CONOUT JMP OUTONE ; 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 END