Tuesday, September 16, 2014

Tandy 1000s and Interlnk and the Laplink Cable

You may recall that I hypothesized that the Tandy 1000 parallel port was actually useful for more than just printers, http://nerdlypleasures.blogspot.com/2014/03/a-hypothesis-of-tandy-1000-parallel.html, and now I have proof that it is so.  Using the MS-DOS Interlnk program, you can use the Tandy 1000 parallel port to transfer data to and from the Tandy 1000 with a second computer.

First, let us review some of the flaws in the Tandy 1000 parallel port.  First, most of them use a card edge connector instead of the common DB-25 connector.  To use it with anything except some Tandy printers or with a Tandy cable (rare) requires making an adapter.  Second, one of the signals for the Control Port, the Select Input signal, is not present on the connector.  Third, the Select signal on the Status port must be jumpered inside the system.

In most 1000 systems, the Select signal has a 2-pin header.  In the TL/2, RL and maybe the SL/2, you will need to solder in a 2-pin a header or connect the pins through some solder.  For the TL/2, the points are marked E1 and E2, unlike the other systems, this was not generally documented.  In most systems, the jumper is usually in a fairly inaccessible place, like underneath the power supply.  You will need to jumper the Select Printer signal to use Interlnk.  If you have an RLX, RSX or TL/3, then you won't have any of these problems.

Pinouts


Signal Name IBM Printer Port DB-25 Centronics 36-pin Cable Tandy 1000 34-Pin Card Edge Motherboard/Multifunction 26-pin Header
Strobe 1 1 1 1
Data 0 2 2 3 3
Data 1 3 3 5 5
Data 2 4 4 7 7
Data 3 5 5 9 9
Data 4 6 6 11 11
Data 5 7 7 13 13
Data 6 8 8 15 15
Data 7 9 9 17 17
Acknowledge 10 10 19 19
Busy 11 11 21 21
Paper End/Out of Paper 12 12 23 23
Select Printer 13 13 25 25
Auto Linefeed 14 14 27 2
Error/Fault 15 32 28 4
Init/Reset 16 31 30 6
Select Input 17 36
8
Ground 18-25 16, 19-30, 33 2, 4, 6, 8, 10, 12, 16, 18, 20, 24 10, 12, 14, 16, 18, 20, 22, 24
Not Connected
15, 17-18, 34-35 14, 26, 34 (+5v) 26 (key)

Constructing an Adapter

In order to construct an adapter, you need three things, a 34-pin IDC Card Edge Connector, a length of 34-pin ribbon cable (less than one foot) and a DB-25 female connector.  The Card Edge connector can be harvested off floppy drive cables, but you will need to grind out the bit of plastic inside with a small knife or screwdriver because the Tandy printer card edge has no slot for the function of this plastic bit, which is intended to make sure that you don't insert the connector the wrong way.  Pin 1 of the card edge parallel port is always on the side closest to the expansion slots on the Tandy 1000s.  Align it with the red stripe of the ribbon cable.


The DB-25 connector ideally should have the same type of crimp connectors as the Card Edge connector.  With the crimp connectors, you don't have to solder.  An alternative would be a parallel port with a ribbon cable that attaches to a header on the motherboard or a multifunction card like the AST Six Pak Plus.  I have included the pinout for them above.  In fact, if you remove the BERG-style connector, you will have pre-crimped wires that correspond almost exactly to the Tandy pinout.  This is probably the best way to go about it, and you can find keyless IDC 34-pin connectors.


If you go with the crimping DB-25 connector, I would recommend connecting all the Card Edge connector pins to the ribbon cable, then attaching the appropriate wires to the DB-25, which should give you more room to work with.  You only really need to connect a few of the ground wires, but make sure they aren't being cut into by other wires.

Custom Converter Cable
If you go with the ribbon DB-25 connector, I recommend pulling all the not connected pins, 14, 26 and 34, to make your job easier.  For your first cable, you may want to go easy on yourself and only connect the ten pins needed for a Laplink cable, which are 3, 5, 7, 9, 11, 19, 21, 23, 25, 28 and the two ground pins 16 and 18 on the card edge.  I recommend pulling all the other pins in this case.

Custom Converter Cable Closeup

Laplink Cables

While you can use Interlnk with either a serial null-modem or parallel port, the parallel port transfer is much faster and your Tandy's single built-in serial port, if you have one, should be used for a mouse.  This cable is called a Laplink cable, and originally it was most useful for laptops to access larger hard drives on desktops. A proper Laplink cable only connects certain wires, and here is the pinout :

Signal Name Pin Pin Signal Name
Data 0 2 15 Error/Fault
Data 1 3 13 Select
Data 2 4 12 Paper End/Out of Paper
Data 3 5 10 Acknowledge
Data 4 6 11 Busy
Acknowledge 10 5 Data 4
Busy 11 6 Data 3
Paper End/Out of Paper 12 4 Data 2
Select 13 3 Data 1
Error/Fault 15 2 Data 0
Ground 25 25 Ground

Testing the Adapter with a Laplink Cable

A Laplink cable acts like a loopback cable in that it feeds the output of one computer into the inputs of another computer and vice versa.  The Laplink cable sends and receives five bits.  The output port of a computers first parallel port, called LPT1 in DOS, is typically located at I/O address 0x378.  This is an 8-bit port, but in the Laplink cable, only the lower five bits are used.  The input port of LPT1 is located at 0x379, but this port only uses the upper 5-bits of the port.  Thus, the input will be shifted three bits to the left compared to the output.  In addition, the high bit of the input port is inverted.  

Debug has the i and o commands that can be used to output and input bytes from I/O ports.  The output command is o 378 xx and the input command is i 379.  Try outputting a byte from one machine and then read the input from a second machine.  You should use the following commands :

Host              Client
- o 378 10     - i 379
                       00 (IBM) or 07 (Tandy) - All bits cleared to 0

- o 378 0F      - i 379
                       F8 (IBM) or FF (Tandy) - All bits set to 1

Do this in both directions.  If the value you receive on the input does not equal the results above, you have a faulty wire.  Convert the number to binary to see which bit(s) is or are not working.

Only the top five bits of the result are important for Interlnk.  The lower three bits seem to be set to 0s on IBM parallel ports and 1s on Tandy parallel ports.

The DOS Interlnk Device Driver and Program

Interlnk was first introduced in IBM PC-DOS 5.02 and can be found in MS-DOS 6.0 through 6.22.  It can also be found somewhere in a Windows 9x installation.  It consists of two components, INTERLNK.EXE and INTERSVR.EXE.  INTERLNK.EXE functions both as a device driver and external DOS command.   INTERSVR.EXE is run at the command line.

INTERLNK is a program that allows you to access drives remotely, and its really easy to use once you figure out which computer is going to the host and which will be the client.  The host computer is the one being accessed, the client is the one performing the access.  On the host PC, all you need do is run the INTERSVR.EXE program at the command prompt.  Make sure to run it first.  It usually does not need any command line arguments, but you can use the /X=A: /X=B: to exclude the floppy drives.  

On the client PC, you will need to load INTERLNK.EXE in CONFIG.SYS.   To use the parallel port, I would suggest the following line in CONFIG.SYS :
DEVICE=C:\DOS\INTERLNK.EXE /NOPRINTER /LPT1

If you are successful, INTERLNK.EXE will inform you which drives it has discovered and will allow you to access them as if they were physically attached to the client machine.  Typically this will add at least drive D: to the client machine.  

You must all the INTERSVR.EXE program to remain running on the host machine, otherwise the benefits will be lost.

You can type INTERLNK at the command line of the client computer to determine the status of the INTERLNK connection.  

All Tandy 1000s can use MS-DOS 6.22, and the INTERLNK.EXE device driver takes up a very reasonable 7K.  INTERLNK requires a fully working parallel port adapter for the Tandys.  I would suggest using drivparm=/d:1 /f:x in your CONFIG.SYS for MS-DOS to fully recognize 720KB floppy drives, replacing the x with 0, 1 or 2 depending on which drive is a 720KB drive.

With a Tandy 1000 TX, you may be able to obtain a 40KB transfer rate from and to a hard drive.  If you are reading from or writing to floppy disks, expect something in the neighborhood of 5-8K.

Early Tandy 1000s

This guide applies to the Tandy 1000 EX, HX, SX, TX, TL, TL/2, SL, SL/2, RL and RL-HD.  The Tandy 1000/A/HD has an earlier version of the card edge port that puts Autoline Feed on pin 32, which is not relevant for the Interlnk cable but may be for other parallel devices.  They may connect the Select In pin instead of the Select pin.  If that is true, then the port is useless unless you connect the pin from the Parallel Port Array chip to the card edge.  However, the Tandy Technical Information Series Notes and Jumpers indicates that the Tandy 1000A and HD have a jumper to connect the printer select to the parallel port like the later models.

No comments: