Vintage PC pages
Home -> Vintage PCs -> Multilink Network

Multilink Network

Multilink was an early networking technology, developed by Nine Tiles Computer Systems. Among the systems it supported are Amstrad PCWs and CPCs, the BBC Micro, and Apricot and IBM-compatible PCs. There's very little information about it online, and this page is an attempt to collect what there is.

In March 2019, there were a fair few articles reporting that Nine Tiles had donated a prototype Spectrum to the Centre for Computing History at Cambridge. In fact, they donated a number of items, including several Multilink interfaces, and an Amstore network-attached storage device (labelled as a 'pre-production unit').

More recently, two Multilink interfaces for the Amstrad PCW were sold on eBay; I'd guess that these were also part of the Nine Tiles collection, and deemed surplus to requirements. I bought one, and so am in a position to examine it.

I've since also attended a lecture by John Grant of Nine Tiles, in which he described the system and its operation.

The hardware

RS232 interface

In its original incarnation, a Multilink node is a standalone box designed to connect to its host computer or dumb terminal by RS232. When used with a terminal, the node is controlled by ASCII commands from the terminal.

The PCW card

In due course, Multilink interfaces were made which attached directly to the host computer's bus, such as this one for the PCW:


From looking at this card and the Multilink cards pictured on the CCH website, it's possible to come to some conclusions on the nature of the network:

By way of comparison, here's a card for the PC, with relay, transceiver and DE9 socket in position. The firmware ROM is the same version as for the PCW, 5.10. The DIP switches control the I/O, interrupt and DMA settings.


I/O

To its host, a Multilink card is designed to look something like an 8251 serial port. In the case of the PCW, it is mapped at ports 0A6h (status / control) and 0A7h (data). It will thus conflict with the AMX mouse, the Electric Studio light pen, and Cirtech / ASD hard drives.

Status port
BitMeaning on read
7Reserved: Appears always to be 1
6-2Reserved: Appears always to be 0
1Set if a byte can be read from the data port
0Set if a byte can be written to the data port

Since I have no network to connect the card to, mine sends the byte sequence 00 90 99 00 on power-up, meaning 'break in the ring at this station'.

Firmware

I have been able to dump and briefly examine the firmware on the PCW card. The ROM is mapped into the card Z80's address space at 0000h (as expected) with the RAM at 0F800h.

I/O is memory-mapped; the firmware ROM accesses memory locations at 4000h, 4001h, and 8000h-8007h. 4000h / 4001h appear to be the channel used for communication with the host PC, and 8000h-8007h to control the network interface.

Network signalling

A packet has a 6-byte header followed by a variable-length trailer:

	DEFB	destination	;Destination node number, 0-127.
	DEFB	time-to-live	;Number of nodes this packet can pass through
	DEFB	length		;Length of remainder of packet (number of data 
				;bytes + 3).
	DEFB	checksum	;Packet checksum.
	DEFB	source		;Source node number.
	DEFB	type		;Packet type / flags
				;Bit 7 set for acknowledgement
				;Bit 6 set for control packet
				;Bit 5 set if channel number present
				;Bit 4 set if XOR key is present
				;Bit 3 set for end of message
				;Bit 2 set if sender implements flow control
				;Bits 0-1 give serial number modulo 4
	DEFB	channel		;Channel number (optional; bit 5 in flags
				;indicates its presence)
	DEFB	xor		;XOR key (optional; bit 4 in flags indicates
				;its presence)
	DEFB	data		;Packet data (may not contain 0xFF)
	DEFB	0xFF		;Stop byte

Channel numbers are used to multiplex streams of data across the ring. Multilink is a connection-oriented system, so to connect to two or more remote systems at the same time, the host must open two channels, one to each, and switch between them as it requires.

Since 0xFF terminates the packet data, it can't be included within the packet. If a 0xFF byte would be included, the node generates a key such that, xored with each byte in the data, none of the result bytes is 0xFF. This key is then included at the start of the packet, with bit 4 set in 'flags' to indicate its presence.

Client software

I do not have any drivers for the card, but I've seen a screenshot; the redirector is called DIVERT.COM, and allows CP/M drives to be assigned to directories on the fileserver. The redirector signs on as 'SimpleNet diverter for CP/M+, Vn 1.2'.

The Amstrad Multilink Network Interface (presumably targeting the CPC rather than the PCW) has two ROMs; I'd guess that the second one is a network redirector for AMSDOS.

Other sources of information


John Elliott 3 November 2019.