The Spectranet project is to put the Sinclair Spectrum online. The Spectrum has been online in the past with peripherals such as the Prism VTX-5000, as well as using the ZX Interface 1 network and RS-232 ports. These ways of getting online aren't so useful these days, with serial ports disappearing on PCs that could act as routers, and the Interface 1 network only being compatible with other Interface 1s. Today's standard is 10/100 Ethernet, and this is what this project aims at doing: giving the Spectrum a fully featured Ethernet interface.
Project goals are:
- Compatibility with common hardware such as the Interface 1, DivIDE, DivIDE+, Kempston and similar joysticks.
- Support TCP, UDP, ICMP and DHCP, plus access to raw IP and Ethernet.
- Highest performance possible - at least the full speed of an LDIR or INIR instruction for transferring data.
- Compatibility with all the Sinclair and Amstrad models (compatibility with others if they have the standard edge connector)
- Compact PCB to reduce risk of "ram pack wobble".
- Through port.
- Finished cost of GBP30 or less (without enclosure).
Hardware design features
The interface will be based around the WIZnet W5100 single-chip ethernet device. This includes a TCP offload engine, as well as the Ethernet MAC and PHY, but is flexible enough that the W5100 TCP offload is not mandatory: a software TCP/IP stack can also be written for the Spectrum if anybody desires (for example, to support things the W5100 doesn't, such as more than 4 sockets or IPv6). The W5100 will be used in memory mapped mode.
Glue logic (execution trapper, memory pager) will be implemented in a CPLD rather than discrete logic. The CPLD will be an Xilinx XC9572 in a 100 pin TQFP. The CPLD allows the board to be much more compact (and therefore, a lower cost to make) than if 74-series logic is used.
Memory will be provided by an Am29F010 128kbyte flash memory for ROM in a TSSOP package, and an IDT71024 128kbyte static RAM in a SOJ (small outline, J-lead) package. The flash will be programmable from the Spectrum, so end users can easily update the firmware or add network applications - or use the flash in their own programs. The static RAM is also available for general use as well as for workspace for programs running from ROM.
Passives will generally be surface mount, no smaller than 0603 (60 mils by 30 mils, or about 1.5mm by 0.75mm) which gives a good compromise between compact size (so that decoupling capacitors can be as close as possible to power pins on the high pin countn square chips like the W5100 and XC9572) and ease of hand assembly. An onboard LDO regulator will also be present, to provide 3.3 volts for the W5100 and XC9572. Surface mount is used throughout the project to keep the board compact, and keep the cost of components down, as well as make it easier to route the address/data bus. All surface mount parts can be soldered by a hobbyist at home - if you want to assemble your own board, all the parts can be soldered by hand.
Software design features
By the time the first prototypes are ready for people to play with, the goal is to have the following as a minimum:
- A socket library allowing assembler and C programs to be written. The socket library will be as close as possible to the standard BSD socket library found on virtually any OS running today. If time allows, also an interface to ZX BASIC.
- A simple network file system (TNFS, Tiny Network Filesystem) designed for 8 bit systems.
- A network filesystem browser, either triggered by the NMI button or from BASIC extensions.
This is an open project, and it's my intention that anyone should be able to make it for fun or for profit, with no restrictions. Code and hardware designs (PCB layouts, CPLD configuration etc.) will be made available under the MIT license, which is very liberal.