BBS: Inland Empire Archive Date: 02-14-93 (21:39) Number: 309 From: CORIDON HENSHAW Refer#: NONE To: ALL Recvd: NO Subj: Accessing FOSSIL from BAS Conf: (2) Quik_Bas
Hello All! Thought this may be of use to someone here. ===Chop=== BEGIN COMM.BAS PROJECT: SirrusMail(0) DECLARE FUNCTION FossInit% (Port%) DECLARE FUNCTION BlockRead$ (Port%) DECLARE FUNCTION BlockWrite% (Port%, Buffer$) DEFINT A-Z '$INCLUDE: 'QBX.BI' FUNCTION BlockRead$ (Port) Buffer$ = STRING$(32766, 0) 'Max 32766 bytes to read Regs.CX = LEN(Buffer$) Regs.DX = Port Regs.ES = SSEG(Buffer$) Regs.DI = SADD(Buffer$) CALL InterruptX(&H14, Regs, Regs) BlockRead$ = LEFT$(Buffer$, Regs.AX) END FUNCTION FUNCTION BlockWrite (Port, Buffer$) Regs.CX = LEN(Buffer$) Regs.DX = Port Regs.ES = SSEG(Buffer$) Regs.DI = SADD(Buffer$) CALL InterruptX(&H14, Regs, Regs) BlockWrite = Regs.AX 'Number of chars transfered END FUNCTION SUB FossDeInit (Port) ' Release the FOSSIL device driver Regs.AX = &H500 Regs.DX = Port InterruptX &H14, Regs, Regs END SUB FUNCTION FossInit (Port) ' Initialize the FOSSIL device driver ' ' dx = Communications port number (0-3) ' ah = &H04 Fossil Function Number - Initialize FOSSIL driver ' (Raises DTR in the porcess) Regs.DX = Port Regs.AX = &H400 CALL InterruptX(&H14, Regs, Regs) IF Regs.AX <> &H1954 THEN FossInit = False 'Fossil Not Found END IF FossInit = True END FUNCTION SUB SetDtr (Port, DtrStatus) Regs.DX = Port 'Set carrier detect low or high SELECT CASE DtrStatus CASE 0 Regs.AX = &H600 CASE 1 Regs.AX = &H601 CASE ELSE Regs.AX = &H600 BEEP END SELECT InterruptX &H14, Regs, Regs END SUB SUB SetFlowControl (Port, Control) Regs.DX = Port SELECT CASE Control CASE 1 'Xon/Xoff on transmit Regs.AX = &H601 CASE 2 'CTS/RTS Regs.AX = &H602 CASE 3 'Xon/Xoff on recieve Regs.AX = &H608 END SELECT CALL InterruptX(&H14, Regs, Regs) END SUB SUB SetPortParams (Port, Bps AS LONG, Bits, Stops, Parity$) Regs.DX = Port Regs.AX = 0 SELECT CASE Bps CASE 300 Regs.AX = (Regs.AX OR &H40) CASE 600 Regs.AX = (Regs.AX OR &H60) CASE 1200 Regs.AX = (Regs.AX OR &H80) CASE 2400 Regs.AX = (Regs.AX OR &HA0) CASE 4800 Regs.AX = (Regs.AX OR &HC0) CASE 9600 Regs.AX = (Regs.AX OR &HE0) CASE 19200 Regs.AX = (Regs.AX OR &H0) CASE 38400 Regs.AX = (Regs.AX OR &H20) CASE ELSE Regs.AX = (Regs.AX OR &HA0) 'Default to 2400 baud END SELECT SELECT CASE Bits CASE 5 Regs.AX = (Regs.AX OR &H0) CASE 6 Regs.AX = (Regs.AX OR &H1) CASE 7 Regs.AX = (Regs.AX OR &H2) CASE 8 Regs.AX = (Regs.AX OR &H3) CASE ELSE Regs.AX = (Regs.AX OR &H3) 'Default to 8 bits END SELECT SELECT CASE Stops CASE 1 Regs.AX = (Regs.AX OR &H0) CASE 2 Regs.AX = (Regs.AX OR &H4) CASE ELSE Regs.AX = (Regs.AX OR &H0) 'Default to 1 stop bit END SELECT SELECT CASE UCASE$(Parity$) CASE "N" Regs.AX = (Regs.AX OR &H0) CASE "O" Regs.AX = (Regs.AX OR &H8) CASE "E" Regs.AX = (Regs.AX OR &H18) CASE ELSE Regs.AX = (Regs.AX OR &H0) ' Default to no parity END SELECT Regs.DX = Port InterruptX &H14, Regs, Regs END SUB ===Chop=== END COMM.BAS LINE: 149
Books at Amazon:
Back to BASIC: The History, Corruption, and Future of the Language
Hackers: Heroes of the Computer Revolution (including Tiny BASIC)
Go to: The Story of the Math Majors, Bridge Players, Engineers, Chess Wizards, Scientists and Iconoclasts who were the Hero Programmers of the Software Revolution
The Advent of the Algorithm: The Idea that Rules the World
Moths in the Machine: The Power and Perils of Programming
Mastering Visual Basic .NET