Path: utzoo!utgpu!jarvis.csri.toronto.edu!rutgers!bellcore!texbell!uhnix1!uhnix2!uace0 From: uace0@uhnix2.uh.edu (Michael B. Vederman) Newsgroups: comp.sys.atari.st Subject: DC-PORT info Keywords: DC-PORT, Double Click Software, Serial port expansion cartridge Message-ID: <818@uhnix2.uh.edu> Date: 25 Jul 89 04:56:00 GMT Organization: University of Houston Lines: 411 Here is our document describing access to DC-PORT. Please note that the document has changed slightly (shows rsconf for 38400) but I do not have the updated doc on hand. A five port version is available at this time. Programs which currently support DC-PORT are MichTron BBS v 3.0. Beckemeyer's MTC Shell is now having a device handler added to support DC-PORT. The upgrade to Flash (version 2.0) will have DC-PORT support. FoReM Elite may possibly be released with support for DC-PORT (Matt is experiencing various hardware failures preventing a port to the ST). STalker terminal accessory. Please direct all questions to us, we are more than happy to answer! - mike OVERVIEW ======== DC-PORT is a serial expansion cartridge for your Atari ST computer. With DC-PORT you get two more RS232 serial ports. DC-PORT does not support the CTS/RTS and RING DETECT lines. If you need these, use the main ST serial port. INSTALLATION ============ 1) Turn off your computer. NOTE: Always turn the POWER switch OFF when inserting or removing DC-PORT. This will protect the electronic components and prolong the life of your ATARI ST computer. 2) Plug the edge connector of DC-PORT into the cartridge port. 3) Plug the cable, with female DB25 connector, coming from DC-PORT into the ST's main serial port. The label on DC-PORT identifies this cable as: To ST 4) Plug the 3 DC-PORT cables into DC-PORT using the end with RJ12 (phone) jack connector. NOTE: DO NOT attempt to plug your telephone line directly into DC-PORT. Doing so WILL damage DC-PORT, and void your warranty. DC-PORT is designed to be used with an RS232 compatible device. The RJ12 connectors are *NOT* designed for direct connection to the telephone line. 5) Connect the male DB25 connectors to any RS232 compatible device, such as a modem, scanner, printer, another computer, etc. SPECIFICATIONS ============== DC-PORT supports the following RS232 lines: (numbers indicate the RJ12 pin number) TRANSMIT (1) RECEIVE (2) DATA TERMINAL READY [DTR] (3) NOT USED (4) CARRIER DETECT (CD) (5) GROUND (6) USAGE ===== To use DC-PORT, you must either be using a DC-PORT compatible program, or you must have the DC-PORT device handler installed. The program DCPORT.PRG adds devices to the ST's BIOS corresponding to the two extra ports. Access to the ports is provided through BIOS compatible commands. To INSTALL the DC-PORT handler, copy DCPORT.PRG into the AUTO folder of your boot disk. When DCPORT.PRG runs, it will display a bootup message indicating installation of the handler, as well as a handler version number. Should an upgrade of hardware require a change in device access, you would need only replace the DC-PORT handler program. PROGRAMMING =========== Programming to communicate using DC-PORT is provided through BIOS compatible calls. This section details use of these calls for DC-PORT and the regular serial port. ---- BIOS ---- These subroutines are accessed using the TRAP #13 call. All examples are calling sequences from 'C' Numbers in parenthesis indicate the function number All the examples will use the following declarations: #define AUX 0x0002 /* main ST serial port, DC-PORT 0 */ #define DCP0 0x8000 /* DC-PORT 0, main ST serial port */ #define DCP1 0x8100 /* DC-PORT 1 */ #define DCP2 0x8200 /* DC-PORT 2 */ #define DCP3 0x8300 /* DC-PORT 3 */ #define DCP4 0x8400 /* DC-PORT 4 */ char input; /* character input */ long status; /* status - where applicable */ int port; /* DC-PORT select */ port = DCP1; FUNCTIONS --------- int Bconstat(dev) (1) int dev; Return character-device input status, D0.L will be 0x0000 if no character is available, or 0xffff if (at least one) character is available from the device. Example: if (Bconstat(port)) input = Bconin(port); NOTE: For ease of use, you can OR the value of the DC-PORT select with the AUX: device number. We will use this syntax throughout the document. Example (from above): if (Bconstat(port|AUX)) input = Bconin(port|AUX); ------------------- int Bconin(dev) (2) int dev; dev is the device number as defined above. Does not return until a character has been input (busy-wait). It returns the character value in D0.L, with the high word zero. Example: input = Bconin(port|AUX); ------------------- void Bconout(dev,c) (3) int dev, c; dev is the device number as defined above. Output character 'c' to the device. Does not return until the character has been written. Example: Bconout(port|AUX, 'A'); ------------------- long Bcostat(dev) (8) int dev; dev is the device number as defined above. Returns character output status: -1 Device is ready to send (no waiting on next device-output call). 0 Device is not ready to send. Example: status = Bcostat(port|AUX); ----- XBIOS ----- These subroutines are accessed using the TRAP #14 call. All examples are calling sequences from 'C' Numbers in parenthesis indicate the function number. Examples are as above. FUNCTIONS --------- long Iorec(devno) (14) int devno; Returns a pointer to a serial device's input buffer record. dev is one of: devno Device ----- ------ 0x0000 RS232 (ST main serial port, DC-PORT 0) 0x8000 DCP0 (DC-PORT 0, ST main serial port) 0x8100 DCP1 (DC-PORT 1) 0x8200 DCP2 (DC-PORT 2) 0x8300 DCP3 (DC-PORT 3) 0x8400 DCP4 (DC-PORT 4) The structure of the record is: struct iorec { long ibuf; /* pointer to buffer */ int ibufsiz; /* size of the buffer */ int ibufhd; /* head index */ int ibuftl; /* tail index */ int ibuflow; /* low-water mark */ int ibufhi; /* hi-water mark */ }; For RS232, an output buffer record immediately follows the input buffer record. The format of the output buffer record is identical. 'ibuf' points to the device's buffer. 'ibufsiz' is the buffer's size. 'ibufhi' is the buffer's high-water mark. 'ibuflow' is the buffer's low-water mark. If flow control is enabled and the number of characters in the buffer reaches the high-water mark, the ST requests (according to the flow control protocol) the sender to stop sending characters. When the number of characters in the buffer drops below the low-water mark, the ST tells the sender to resume transmission. The flow control operation is similar for the RS232 output record. ------------------- long Rsconf(port|speed, flowctl, ucr, rsr, tsr, scr) int speed, flowctl, ucr, rsr, tsr, scr; This function initializes the rs232 port. SPEED sets the baud rate for the RS232 port as follows: SPEED BAUD RATE ----- --------- 0 19200 1 9600 2 4800 3 3600 * 4 2400 5 2000 6 1800 7 1200 8 600 9 300 10 200 * 11 150 12 134 13 110 14 75 15 50 * FLOW sets the flow control as follows: FLOW TYPE OF FLOW CONTROL ---- -------------------- 0 No flow control (default value) 1 XON/XOFF 2 RTS/CTS * 3 Both XON/XOFF and RTS/CTS * UCR, RSR, TSR, and SCR set the corrsponding 68901 registers. A -1 for any one of these parameters will not set the register: Bit in UCR Meaning ---------- ------- 0 Not used 1 Parity 1=even parity, 0=odd parity 2 Parity enable; 1=enabled 3,4 Start/Stop bits: Bit 4 Bit 3 Start bits Stop bits ----- ----- ---------- --------- 0 0 Do not use 0 1 1 1 1 0 1 1.5 1 1 1 2 5,6 Work length: Bit 6 Bit 5 Word length ----- ----- ----------- 0 0 8 bits 0 1 7 bits 1 0 6 bits 1 1 5 bits 7 Must be set to 1 RSR, TSR, and SCR should be set to -1. NOTE: Selections indicated with a * are only supported in DCPORT0. ------------------- offgibit(port|mask) (29) int mask; This function sets the DTR line on one of the serial ports. MASK has a value of $EF: Offgibit(port|$EF) ------------------- ongibit(port|mask) (30) int mask; This function drops the DTR line on one of the serial ports. MASK has a value of $10: Ongibit(port|$10) ------ GEMDOS ------ These subroutines are accessed using the TRAP #1 call. All examples are calling sequences from 'C' Numbers in parenthesis indicate the function number. Examples are as above. FUNCTIONS --------- Cauxin(dev) (3) NOTE: The standard GEMDOS call has no parameters. int dev; dev is as defined above. Return a character from the specified serial port (dev). Example: input = Cauxin(port); ------------------- Cauxout(chr) (4) int chr; NOTE: The standard GEMDOS call specifies a char Write a character to the serial port defined in the upper byte of the int 'chr.' Example: Cauxout(port|'A'); /* with port = 0x0000 it has no effect */ ------------------- long Cauxis() (18) Returns -1 [nonzero] if char is available from the main ST serial port; 0 otherwise. ------------------- long Cauxos() (19) Returns -1 [nonzero] if char is ready to receive a character, 0 if it is unavailable (for the main ST serial port). FOR FURTHER ASSISTANCE ====================== If you require further assistance from us, give our support BBS a call. We will be more than happy to help you with any difficulties which you find. WARRANTY ======== DC-PORT is guaranteed to be free from material defects for one year from the date of purchase. DC-PORT cables are guaranteed to be from material defects for 30 days from the date of purchase. Double Click Software will either replace or repair the defective unit, at the discretion of Double Click Software. Under no conditions will Double Click Software be responsible for damaged caused due to neglect. If the seal on DC-PORT is broken, the warranty is voided immediately. Double Click Software is not be responsible for any damage to your equipment, reputation, profit-making ability or mental or physical condition caused by the use or misuse of our hardware and/or software. ADDITIONAL INFORMATION ====================== Mailing address: Double Click Software P.O. Box 741206 Houston, Texas 77236-1206 Support BBS: (713)944-0108 ------------------------------------------------------------------------------ This manual and its contents are copyright (c) 1989 Double Click Software. This manual may be distributed freely so long as it is not edited in any form. ------------------------------------------------------------------------------ -- for (;;) : Use ATARINET, send an interactive do_it(c_programmers); : message such as: : Tell UH-INFO at UHUPVM1 ATARINET HELP University Atari Computer Enthusiasts : University of Houston UACE