; REMCH - REMOTE CHANNEL DRIVER EXAMPLE ; .Z80 ; NAME ('RemCh0') ; ; ; COM1 SET BAUD RATE ; SETBA@:: LD B,0 ; SET CHANNEL 1 LD C,(IX+31H) ; GET E-REGISTER LD E,3 ; SET FUNCTION 3=SET BAUD RATE CALL COMDRV## ; DO IT LD A,0FFH ; RETURN TRUE JP EXITA## ; AND QUIT ; ; COM1 GET BAUD RATE ; GETBD@:: LD B,0 ; SET CHANNEL 1 LD E,4 ; SET FUNCTION 4=GET BAUD RATE CALL COMDRV## JP EXITA## ; RETURN WITH BAUD IN A ; ; COM1 I/O ; INOUT@:: LD A,(IX+30H) ; GET DIRECTION FLAG AND 80H ; VALID CHAR IN E? JR Z,.NO1 ; NO, INPUT ONLY LD B,0 CALL .CMOUT ; COMMON OUTPUT .NO1: CALL GETDMA## ; GET DMA ADDRESS DI EX DE,HL LD BC,128 LD HL,COM1BF LD A,(HL) LDIR LD HL,COM1BF LD (HL),0 EI JP EXITA## ; ; COMMON OUTPUT ; .CMOUT: LD C,(IX+31H) ; GET CHARACTER LD E,2 ; OUTPUT FCN JP COMDRV## ; DO IT ; ; ATTACH COM CHANNEL ; ATACH@:: LD DE,COM1PL CALL LNKPOL## XOR A JP EXITA## ; ; DETACH COM CHANNEL ; DETA@:: LD HL,COM1PL JP UNLINK## ; ; POLL ROUTINE ; COM1PL: DW 0 DW 0 LD E,0 LD B,0 CALL COMDRV## OR A RET Z LD E,1 LD B,0 CALL COMDRV## LD B,A LD HL,COM1BF LD A,(HL) CP 7FH RET Z DI INC A LD (HL),A LD E,A LD D,0 ADD HL,DE LD (HL),B EI RET ; ; REMCH DATA AREA ; COM1BF: DB 0 DS 127 ; END