[comp.unix.microport] Adding a 3rd serial port

hikaru@infoac.rmi.de (Walter D|rr) (07/23/89)

My current Microport installation is configured with two serial ports
(tty0/1) using the standard COM1:/COM2: serial interfaces.
Now, I would like to add a third serial port (tty2) to the system. 

The new serial board is a standard dumb board (similar to the one used for
tty0/1). The switches on the new board are set to use IO address 0x3e8 
and IRQ 4.
(I can access the board under DOS as COM3: using Telix).
I used ttypatch to patch the kernel and mknod the /dev/tty2 file.
(ttypatch -t2 -i4 -a1000)

Now for the problem:
"echo test > /dev/tty2" hangs until a CR is typed on the terminal
connected to /dev/tty0.
Output to tty2 occurs only when there is output to tty0:
"cat /etc/passwd > /dev/tty2" hangs.
Then, when I type "echo test > /dev/tty0", four characters from the password
file are displayed on the terminal connected to tty2.

The documentation in the runtime manual and the online man page for 
ttypatch give the impression that it is possible to use up to eight ports
on one interrupt (either IRQ 3 or 4), so my setup above should work.

Are there any other kernel location besides si_ints, ctl or mcr that must
be patched to correctly install a third serial port? 
I even tried several values for mcr (0,4,8,12) but without any success.

(I can access the new serial board without problems if I patch ctl to 0x3e8.
Then the new board becomes tty0 and works correctly. That would rule out
a hardware problem with the new board, I guess.)


Walter

steve@nuchat.UUCP (Steve Nuchia) (07/26/89)

In article <509@infoac.rmi.de> hikaru@infoac.rmi.de (Walter D|rr) writes:
>My current Microport installation is configured with two serial ports
>(tty0/1) using the standard COM1:/COM2: serial interfaces.
>Now, I would like to add a third serial port (tty2) to the system. 

>The new serial board is a standard dumb board (similar to the one used for
>tty0/1). The switches on the new board are set to use IO address 0x3e8 
>and IRQ 4.

Bad news.  The PC bus wasn't designed to handle multiple cards
using the same IRQ lines.  This will not work.

>(I can access the board under DOS as COM3: using Telix).

Most DOS programs do not use interrupts with serial lines.  Even
if the do they will generally enable only one at a time.

>Now for the problem:
>"echo test > /dev/tty2" hangs until a CR is typed on the terminal
>connected to /dev/tty0.
>Output to tty2 occurs only when there is output to tty0:
>"cat /etc/passwd > /dev/tty2" hangs.
>Then, when I type "echo test > /dev/tty0", four characters from the password
>file are displayed on the terminal connected to tty2.

:-)  Yep, the COM1 card's IRQ driver is winning the tug-of-war
against the one on your new card.  Once the driver sees the IRQ
line wiggle it services both ports.

>The documentation in the runtime manual and the online man page for 
>ttypatch give the impression that it is possible to use up to eight ports
>on one interrupt (either IRQ 3 or 4), so my setup above should work.

It is referring to integrated multi-port cards, with all the interrupts
gated into a single driver.

>(I can access the new serial board without problems if I patch ctl to 0x3e8.
>Then the new board becomes tty0 and works correctly. That would rule out
>a hardware problem with the new board, I guess.)

Yep, the board is good.  The configuration is not.  If the driver
knows about only one of them it will only enable one of them.  Because
of the way the PC serial port design uses an external interrupt enable
gate it is just possible that this makes a difference.

If you can strap any one of your ports to an unused IRQ you can
install my driver (or on of the others) that supports more than
2 IQRs.  Or if you are up to really hacking the hardware you can
run the IRQ line from one card through an appropriate gate on
the other, effectively creating an integrated card.
-- 
Steve Nuchia	      South Coast Computing Services
uunet!nuchat!steve    POB 890952  Houston, Texas  77289
(713) 964 2462	      Consultation & Systems, Support for PD Software.