Updating a 40-year-old computer design

illustrations illustrations illustrations illustrations illustrations illustrations illustrations
post-thumb

Published on 7 July 2022 by Andrew Owen (11 minutes)

In my last article, I wrote a lot about the development of the firmware for my hobbyist microcomputer project that became the Chloe 280SE. In this companion article, I’ll cover the hardware. I’m not sure how relevant any of this is going to be to modern development, but I think it’s worth telling the other half of the story. But to tell that story, first I need to tell the story of the time when Timex made computers.

The 1970s saw the advent of cheap, reliable digital watches made in the far east, which caused the demise of all but one American watchmaker; Timex. Throughout the 1980s, the company phased out mechanical watches in favor of digital. At the same time, Timex was selected as a manufacturing partner by Sinclair Research for its new ZX81 computer.

“Steve Jobs didn’t really set the direction of my Apple I and Apple II designs but he did the more important part of turning them into a product that would change the world. I don’t deny that.” —Steve Wozniak

Timex went on to sell its own US domestic version called the TS1000. Meanwhile, Sinclair was working on a successor to the ZX81, called the ZX Spectrum. In 1982, Lou Galie left the Burroughs Corporation to join Timex to lead the design and development of the Spectrum-based TS2068.

By 1983 Timex had already sold over 600,000 TS1000s. In fact, long after it had left the computer market, Timex continued to sell TS1000 boards to a European commercial refrigeration manufacturer that used them as dedicated controllers.

The key decision makers were Timex Computer Corporation president Danny Ross, Timex executive vice-president Kirk Pond, and Timex vice-president of research and design Rex Naden who had joined from Texas Instruments.

The ZX Spectrum failed to meet FCC part 15 regulations on interference. Timex realized it had to modify the machine and began hiring a team of engineers, starting with Galie. Based on the products introduced at CES in early 1983, Timex decided it needed something better than a patched-up ZX Spectrum.

The team mainly comprised former Burroughs staff, recruited from the closing Danbury, Connecticut engineering group. The rest were local college graduates and a few staff from Timex’s Cupertino, California research facility. Two machines were to be developed; the TS1500, an update of the TS1000, and the TS2068, a complete redesign of the Spectrum. The TS1500 was done in seven months, while the TS2068 took eleven.

Both machines were given a better keyboard and more memory. The TS2068 also got joystick and cartridge ports, a feature more commonly found on consoles, an extended version of BASIC, and a sound chip. They were also slightly faster, to better synchronize with the NTSC television standard. The TS2068 was designed to be 100 per cent backwards compatible with the ZX Spectrum. However, over time more software came to rely on ROM calls that were not at the same memory address in the TS2068, leading to the creation of an emulator cartridge. The inclusion of cartridge support was entirely down to the problems the team encountered with loading from cassette.

The TS2068 also replaced the Spectrum’s ULA logic chip, fixing various errors and adding new screen modes including high resolution, and multicolor. However, software rarely took advantage of these modes, as they consumed twice as much memory as the standard one.

A ZX Spectrum makes a noise like a dial-up modem while it’s loading software because hardware designer Richard Altwasser ran out of pins on the ULA and had to put sound in and out on the same pin. It was supposed to be silent, with the border colors indicating if software was loading. The Timex version implemented the original design.

Another difference in the Timex version is the decoding of the lower 8-bits of the I/O address range. The ZX81 and TS1000 only decode individual bits, reducing the potential I/O range from 65536 ports to only a handful of ports. Altwasser felt that if it was good enough for the ZX81, it was good enough for the ZX Spectrum. But the Timex engineers disagreed, and decided to fully decode the lower 8-bits, supporting a theoretical maximum of 256 devices.

Timex had plans for a successor to the TS2068 with a faster CPU, better color, real disk drives, and so on. A whole series of add-ons were planned that were never completed, including a Bus Expansion Unit that could support up to 16 megabytes of RAM. But the price war started by Commodore force Timex out of the US market.

Timex sold about 100,000 TS1500s and about 350,000 TS2068s, but this wasn’t the end of the machine. Time Portugal sold a European version of the TS2068. It went on to produce the FDD and FDD3000 disk interfaces, the TC2048, a cut-down TC2068 with better ZX Spectrum compatibility, and the Unipolbrit 2086 for export to Poland. There was even a third generation prototype called the TC3256.

Meanwhile, in a joint venture with its Spanish distributor Investronica, Sinclair Research launched the ZX Spectrum 128 in 1985. The machine was developed in Cambridge, England to a set of requirements provided by Investronica that included 128K of RAM, an improved BASIC, better sound capabilities, the ability to drive an RGB monitor, and built-in RS232.

Unfortunately, although Timex provided Sinclair with full details of the enhanced video modes, they were not included in the machine. This is likely because it would’ve required a major redesign of the ULA, and that would’ve added to the cost. Sinclair reused the ZX Spectrum+ case design that Rick Dickinson had reluctantly created to make use of the tooling from the failed Sinclair QL 16-bit computer. This necessitated an externally mounted heat sink.

With the commercial failure of the C5 electric tricycle and the QL, Sinclair had run out of money and sold the computer division to rival Amstrad. Boss Alan Sugar was so confident of the acquisition that he had the circuit board redesigned before he had signed the deal, enabling the launch of ZX Spectrum +2 in October 1986, in time for Christmas sales.

By this point, Altwasser was working for Amstrad. Together with Cliff Lawson (who created the firmware for the PCW word processor), he was tasked with updating the ZX Spectrum design. The result was the Spectrum +3, with built-in disk support and even more extensions to BASIC. However, most ZX Spectrum software continued to be sold on tape, and there were very few releases that were only available on disk.

The last official ZX Spectrum models ceased production in 1992. Seven years later, Jarek Adamski and I created the ZX Spectrum SE prototype; a mash-up of the features of the TS2068 and the Spectrum 128. Without any configuration, it could run almost all ZX Spectrum software, and through emulation it could run software written for the other Sinclair and Timex models.

In 2008, I led the team that created ULAplus, increasing the ZX Spectrum palette to 256 colors. And then in 2013, a group of enthusiasts in Spain created the ZX-Uno, which implemented the ZX Spectrum SE with ULAplus in its FPGA core.

One of the problems in designing ULAplus was that, because of Altwasser’s decision, effectively there were no free I/O ports on the ZX Spectrum. With pretty much every port already allocated, an exhaustive search was undertaken to find the port that clashed with the least existing hardware. The ULAplus team settled on port #3B. So far as we were aware, the only conflict was with the ZX Printer, and it was possible to modify it so that it didn’t clash. We later found out that it also clashed with a Czech-made disk interface, but the user base was relatively small.

With careful management, this new port could provide support for up to 256 interfaces that would not clash with any existing hardware. So we set up the ZX Interface (ZXI) standard, and a committee to manage port allocation. The first interface to make use of ZXI was an Ethernet interface called Spectranet. The ZX-Uno also makes use of ZXI for its control registers. Unfortunately, the crowdfunded clone I mentioned in the previous article, bypassed the committee and wrecked the standard.

So in 2018, after almost 20 years of on-off development, it was clear that there was no future for my own ZX Spectrum clone. But the ZX-Uno was a popular FPGA platform with a reasonably big installed base. So I decided to pivot. Instead of making a ZX Spectrum clone, I’d make the best possible firmware I could for the ZX-Uno core. And I called it the Chloe 280SE (the prototype ZX Spectrum SE was code-named Chloe and had 280K of RAM).

In the 1990s, the graphical 16- and 32-bit computers were not compatible with the 8-bit computers that they replaced. But there was a lost generation of enhanced versions of the 8-bit computers, that often included a 16-bit CPU. These included the Apple IIGS, the Commodore 65 (which only got as far as a prototype) and the MSX Turbo-R. The Chloe would be an open source equivalent of these machines.

SE Basic IV and UnoDOS 3 provide the Chloe with a user environment that’s quite similar to MSX Disk BASIC (but using FAT-32 formatted SD cards instead of floppy disks). Currently, the firmware uses the ZX-Uno’s native core running at 28MHz with a 60Hz interrupt, producing a standard VGA video output. But the long term goal was to create a dedicated core that would include a much faster CPU, IIGS video modes and a 24-bit DMA. The only design limit would’ve been the number of gates available in the Xilinx Spartan 6 FPGA.

But then two things happened; the pandemic and the global chip shortage. The ZX-Uno was cheap because its FPGA was very modestly priced. In the current environment, FPGAs are no longer affordable. One possible solution is to go back to integrated circuits and use a smaller FPGA purely for the video and glue logic. Another alternative is to simulate the entire system on a RISC SoC (system-on-a-chip).

Fortunately, no decision is required until the firmware is done. The OS kernel is complete. The BASIC is missing graphics and sound commands and low-resolution mode, but is otherwise complete. Although the firmware is written to use the existing ZX-Uno core, it is written in such a way that it’s easy to add support for new hardware features as they are implemented.

So what has all this got to do with updating a 40-year-old computer design? Well, I see the Chloe as one possible direction that Timex might have taken its computers if it hadn’t exited the market. The Chloe’s BASIC is derived from the TS1000, modified to be more compatible with Microsoft BASIC. The video modes and sideways RAM are taken straight from the TS2068. And the case design is influenced by several Timex models.

Without the nostalgia factor, I doubt there will ever be a market for something like this. But it has been an interesting design exercise that has given me insight into the early days of home brew computing. On the hardware side, I’ve had to solve problems like lack of I/O ports, creating an efficient palette system for an 8-bit bus and working out how to make the best use of a 32K frame buffer.

And from the keyboard design, I’ve learned about the challenges of integrating hardware and software. How to map everything except the function keys to the 40-key matrix used by the Timex machines. How to make the best use of all the keys on an off-the-shelf keyboard so that it gives the computer its own identity. Having to replace the single key memory in ZX81 BASIC with a circular keyboard buffer to keep up with the faster CPU.

Despite the chip shortage, the home brew scene is still thriving. If the Chloe has one unique selling point it’s that it’s an entirely open project; the hardware (motherboard schematics and bill of materials), the firmware (the BASIC and OS) and the software (a library of example applications with full source). My hope then is that if nothing else, the Chloe 280SE might inspire someone else to design their own computer and maybe even use it as a starting point.

Update

Antonio Villena has created a successor to the ZX-Uno called the ZXTRES which essentially implements all of the features I had in mind for the Chloe hardware:

  • Dual DE9 controller ports for game pads and joysticks.
  • Dual PS/2 ports for keyboard and mouse.
  • HD display (DisplayPort).
  • microSD card slot.
  • Mini pizzabox style case with a power switch.
  • Power switch.
  • Standard power connector (5VDC >=1A center positive 5.5mm x 2.1mm barrel jack power).

The hardware design is closed-source, but it’s based on a QMTECH XC7A357 and has enough in common with the ZX-Uno that it should be relatively trivial to clone for an expereinced hobbyist hardware develoepr.