;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Serial Port Driver ;; ;; ;; ;; (c)Copyright Sealevel Systems Incorporated, 1993 - 1995 ;; ;; ;; ;; Please refer to the READ.ME file for Technical Support and ;; ;; Copyright information. ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; SCOM.INC ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Define Software Interrupt ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ifdef SWINT60 COM_INT EQU 060h elseifdef SWINT61 COM_INT EQU 061h elseifdef SWINT62 COM_INT EQU 062h elseifdef SWINT63 COM_INT EQU 063h elseifdef SWINT64 COM_INT EQU 064h elseifdef SWINT65 COM_INT EQU 065h elseifdef SWINT66 COM_INT EQU 066h elseifdef SWINT67 COM_INT EQU 067h else COM_INT EQU 014h endif ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Define Language Type ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ifdef LBASIC LANGT TEXTEQU SCWORD TYPEDEF SWORD SCBYTE TYPEDEF SWORD else LANGT TEXTEQU SCWORD TYPEDEF WORD SCBYTE TYPEDEF BYTE endif INIT_COM EQU 000000000h PUT_CHAR_COM EQU 000000001h GET_CHAR_COM EQU 000000002h REQ_STAT_COM EQU 000000003h INIT_EX_COM EQU 000000004h REQ_STAT_EX_COM EQU 000000005h GET_BUF_CNT_COM EQU 000000006h FLUSH_BUF_COM EQU 000000007h PUT_BLOCK_COM EQU 000000008h GET_BLOCK_COM EQU 000000009h HAND_SHAKE_COM EQU 00000000ah BAUD_RATE_COM EQU 00000000bh WRITE_REG_COM EQU 00000000ch READ_REG_COM EQU 00000000dh DRV_INFO_COM EQU 00000000eh ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;This struct type def is used to access the Get System Information;; ;; function (0eh) ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; SYS_INFO_COM STRUCT DriverSeg WORD ? ; Segment of Driver CodeSize WORD ? ; Resident Code Size in Paragraphs Mux2F_ID BYTE ? ; Int 2Fh ID MaxPorts BYTE ? ; Max Ports Serviced Extra1 WORD ? ; Reserved Extra2 WORD ? ; Reserved SYS_INFO_COM ENDS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; InitPortCOM PROTO LANGT wPORT:SCWORD, bINITBYTE:SCBYTE ;ret AH AL valid PutCharCOM PROTO LANGT wPORT:SCWORD, bCHAR:SCBYTE GetCharCOM PROTO LANGT wPORT:SCWORD ReqPortStatCOM PROTO LANGT wPORT:SCWORD InitPortExCOM PROTO LANGT wPORT:SCWORD, bBAUD:SCBYTE,bPARITY:SCBYTE, bLENGTH:SCBYTE, bSTOP:SCBYTE ReqPortStatExCOM PROTO LANGT wPORT:SCWORD, wVALUE:SCWORD GetBufferCountCOM PROTO LANGT wPORT:SCWORD, bVALUE:SCBYTE FlushBufferCOM PROTO LANGT wPORT:SCWORD, bVALUE:SCBYTE PutBlockCOM PROTO LANGT wPORT:SCWORD, fpBUFFER:DWORD, wLEN:SCWORD GetBlockCOM PROTO LANGT wPORT:SCWORD, fpBUFFER:DWORD, wLEN:SCWORD HandShakeConfigCOM PROTO LANGT wPORT:SCWORD, wVALUE:SCWORD BaudRateConfigCOM PROTO LANGT wPORT:SCWORD, wBAUD:SCWORD WritePortRegCOM PROTO LANGT wPORT:SCWORD, bREG:SCBYTE, bVALUE:SCBYTE ReadPortRegCOM PROTO LANGT wPORT:SCWORD, bREG:SCBYTE GetDrvInfoCOM PROTO LANGT fpSTRUCT:DWORD ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Port Status ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; RX_BUFFER_STAT EQU 000000001h OVERRUN_ERROR EQU 000000002h PARITY_ERROR EQU 000000004h FRAME_ERROR EQU 000000008h BREAK_DETECTED EQU 000000010h TX_BUFFER_STAT EQU 000000020h TX_TIME_OUT EQU 000000080h ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Modem Status ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; DELTA_CTS EQU 000000001h DELTA_DSR EQU 000000002h TRAIL_RI EQU 000000004h DELTA_DCD EQU 000000008h CTS_STAT EQU 000000010h DSR_STAT EQU 000000020h RI_STAT EQU 000000040h DCD_STAT EQU 000000080h ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Function 00: Initialize Port ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; LBAUD_110 EQU 000000000h LBAUD_150 EQU 000000020h LBAUD_300 EQU 000000040h LBAUD_600 EQU 000000060h LBAUD_1200 EQU 000000080h LBAUD_2400 EQU 0000000a0h LBAUD_4800 EQU 0000000c0h LBAUD_9600 EQU 0000000e0h PARITY_NONE EQU 000000000h PARITY_ODD EQU 000000008h PARITY_EVEN EQU 000000018h LSTOP_BIT_1 EQU 000000000h LSTOP_BIT_2 EQU 000000004h WORD_LENGTH_7 EQU 000000002h WORD_LENGTH_8 EQU 000000003h ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Function 01: Transmit Character ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Returns 0x80 if failed ;; TX_FAILED EQU 000000080h ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Function 02: Receive Character ;; see Port Status above ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; NO_CHAR EQU 0x80 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Function 03: Request Port Status ;; see Port Stauts and Modem Status above ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Function 04: Extended Initialize Port ;; also see Port Status and Modem Status ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; NO_BREAK EQU 000000000h BREAK EQU 000000001h NO_PARITY EQU 000000000h ODD_PARITY EQU 000000001h EVEN_PARITY EQU 000000002h STICK_ODD_PARITY EQU 000000003h STICK_EVEN_PARITY EQU 000000004h STOP_BIT_1 EQU 000000000h STOP_BIT_2 EQU 000000001h STOP_BIT_1_5 EQU 000000001h ; valid if 5 data bits DATA_BITS_5 EQU 000000000h DATA_BITS_6 EQU 000000001h DATA_BITS_7 EQU 000000002h DATA_BITS_8 EQU 000000003h BAUD_110 EQU 000000000h BAUD_150 EQU 000000001h BAUD_300 EQU 000000002h BAUD_600 EQU 000000003h BAUD_1200 EQU 000000004h BAUD_2400 EQU 000000005h BAUD_4800 EQU 000000006h BAUD_9600 EQU 000000007h BAUD_19_2K EQU 000000008h BAUD_38_4K EQU 000000009h BAUD_56K EQU 00000000ah BAUD_115_2K EQU 00000000bh ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Function 05: Extended Port Control ;; also see Port Status and Modem Status ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; READ_MCR EQU 000000000h WRITE_MCR EQU 000000100h DTR EQU 000000001h RTS EQU 000000002h OUT1 EQU 000000004h OUT2 EQU 000000808h LOOP_BIT EQU 000000010h ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Function 06: Get Buffer Count ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; TX_BUFF_COUNT EQU 000000000h RX_BUFF_COUNT EQU 000000001h TX_BUFF_FREE EQU 000000002h RX_BUFF_FREE EQU 000000003h ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Function 07: Flush Buffer ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; TX_FLUSH EQU 000000001h RX_FLUSH EQU 000000002h ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Function 08: Block Transmit ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; PARTIAL_TX EQU 000000001h ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Function 09: Block Receive ;; none ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Function 0A: Get / Set Handshake Mode ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; SET_HAND_SHAKE EQU 000000000h GET_HAND_SHAKE EQU 000000100h SW_TX EQU 000000001h SW_RX EQU 000000002h DSR_TX EQU 000000004h DTR_RX EQU 000000008h CTS_TX EQU 000000010h RTS_TX EQU 000000020h RS_485 EQU 000000020h RTS_ON EQU 000000040h DTR_ON EQU 000000080h ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Function 0B: Get / Set Non-Standard Baud Divisor ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; GET_DIVISOR EQU 000000000h ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Function 0C: Write to Any Port Register ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; DATA_REG EQU 000000000h ; Can also read IER_REG EQU 000000001h ; Can also read FIFO_REG EQU 000000002h LCR_REG EQU 000000003h ; Can also read MCR_REG EQU 000000004h ; Can also read SCRATCH_REG EQU 000000007h ; Can also read DLAB_LS_REG EQU 000000000h ; Can also read DLAB_MS_REG EQU 000000001h ; Can also read ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Function 0D: Read Any Port Register ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; IIR_REG EQU 000000002h LSR_REG EQU 000000005h MSR_REG EQU 000000006h ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Function 0E: Get System Information ;; see SYS_INFO_COM struct above ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; End of File ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;