Regular readers may be aware that I have a certain affinity for vintage VTech educational toys, especially ones that attempted to visually or even functionally tie in with contemporary computer design. In the late 1980s, when it became obvious the personal computer was here to stay, these devices were seen as an affordable way to give kids and even young teens hands-on time with something that at least somewhat resembled the far more expensive machines their parents were using.
A perfect example is the PreComputer 1000, released in 1988. Featuring a full QWERTY keyboard and the ability to run BASIC programs, it truly blurred the line between toy and computer. In fact from a technical standpoint it wasn’t far removed from early desktop computers, as it was powered by the same Zilog Z80 CPU found in the TRS-80 Model I.
By comparison, the Smart Start has more in common with a desktop electronic calculator. Even though it was released just two years prior to the PreComputer 1000, you can tell at a glance that it’s a far more simplistic device. That’s due at least in part to the fact that it was aimed at a younger audience, but surely the rapid advancement of computer technology at the time also played a part. Somewhat ironically, VTech did still at least attempt to make the Smart Start look like a desktop computer, complete with the faux disk drive on the front panel.
Of course, looks can be deceiving. While the Smart Start looks decidedly juvenile on the outside, that doesn’t mean there aren’t a few surprising technical discoveries lurking under its beige plastic exterior. There’s only one way to find out.
The Z80 was a big deal in the 1970s and 1980s, and while its no longer a dominant architecture today, its legacy lives on. [James Andrew Fitzjohn] is a fan of the Z, and decided to interface the real silicon with the Raspberry Pi, by and large for the fun of it!
The Z80’s address and data lines, as well as the clock, are hooked up to the Raspberry Pi through several MCP23017 GPIO expanders. The Pi’s GPIO lines aren’t known for their speed, of course, and using expanders through I2C isn’t exactly quick either. However, speed isn’t necessary, as the clock only goes as fast as the Raspberry Pi desires, since it’s controlling the clock along with everything else. There’s also an LCD for viewing the Z80s status, along with some era-appropriate blinkenlights.
This setup allows the Pi to run code directly on the Z80 itself, while managing the CPU’s RAM in its own memory, all through a Python script. It’s a fun hack that lets you run retro code on retro silicon without using an emulator. Techniques like these are useful for finding undocumented or edge case performance of a processor. If this hack isn’t enough Zilog for your liking, consider throwing one in your pocket as well!
Back in the days before kids could be placated with a $50 Android burner phone, many a youngster was gifted a so-called “educational computer” to keep them occupied. Invariably looking like a fever dream version of the real computer their parents didn’t want to let them use, these gadgets offered monochromatic exploits that would make Zork look like Fortnite. Due equally to their inherent hardware limitations and the premise of being an educational toy, the “games” on these computers often took the form of completing mathematical equations or answering history questions.
The VTech PreComputer 1000 is a perfect specimen of this particular style of educational toy. Released in 1988, it was advertised as a way for pre-teens to become more comfortable with operating a real computer; since at that point, it had become abundantly clear that the coming decade would see a beige box on every professional’s desk. Its full-size QWERTY keyboard was specifically mentioned in the product’s accompanying literature as a way to get young hands accustomed to the ways of touch typing.
By the mid-1990s these devices would have progressed far enough to include passable text-to-speech capabilities and primitive graphics, but the junior professional who found him or herself seated in front of the PreComputer 1000 was treated to a far more spartan experience. It’s perhaps just as well that this particular educational computer was listed as a training tool, because even in 1988, surely a session with this toy must have felt very much like work.
But that’s not to say the PreComputer 1000 is without its own unique charms. In an effort to help cement its role as a “trainer” for more conventional computers, VTech saw fit to equip the PreComputer with its own BASIC interpreter. They even included generous written documentation that walked young programmers through the various commands and functions. Even today, there’s something oddly appealing about a mobile device with a full keyboard that can run BASIC programs for better than 24 hours on batteries (even if they’re alkaline “C” cells).
Let’s take a look inside this more than 30 year old mobile device, and see how the designers managed to create a reasonable facsimile of actual computing on a kid-friendly budget.
We love classic synthesizers here at Hackaday. So does [gligli], but he didn’t like the processor limitations of the Prophet 600. That’s why he’s given it a new brain in the form of a Teensy++. The Sequential Circuits Prophet 600 was a big deal when it was released back in 1982/1983. The 600 was the first commercially available synthesizer to include a MIDI interface. The original design of the 600 could be called a hybrid. A Zilog Z80 microprocessor controlled modular analog voice chips. The Z80 was a bit stressed in this configuration though, and a few limitations were evident. An 8 bit processor just wasn’t quite enough for software driven envelopes and a Low Frequency Oscillator (LFO) control. This was further exacerbated by the fact that everything was driven through a 14 bit DAC.
[gligli] discovered most of the limitations in the 600 were due to the processor. By beefing up the processing power he could really unlock the potential within 600. Since he didn’t actually have a Prophet 600, he started with the schematic. [gligli] created a PC based emulator for the digital circuits, learning the whole system as he worked. With that phase complete, [gligli] bought a used Prophet and started hacking. The Teensy++ required a few hardware mods to fill the Z80’s shoes, including cutting off a pin and adding a few jumper wires. We really like the fact that no changes to the Prophet 600 itself are required. Pull out the Teensy++, drop in the Z80, and you’re ready to party like it’s 1982 again.
The new processor interfaces directly with the Z80’s 8 bit bus. Since the AVR on the Teensy has built-in RAM and ROM, it simply ignores the ROM and RAM address spaces of the original system. Interfacing a fast micro with older parts like an 8253 timer and a 68B50 UART does have its pitfalls though. The system bus had to run slow enough to not violate timing requirements of the various peripheral chips. To handle this, [gligli] added a number of wait statements in his firmware. Once the system was working, [gligli] was free to start adding new features. He began by smoothing out the stepped envelope and filter generators, as well as adding new exponential modes. From there he added new keyboard polyphony modes as well as pitch and mod wheel changes. The full lineup of new features are listed in the instruction manual (PDF link). Since this is an open source project, adding a feature is as simple as cracking open your favorite editor and writing it up.
The increment/decrement circuit is responsible for updating the program counter register during normal (non branch) operations. The increment/decrement circuit also handles the stack pointer register during stack operations, as well as several other functions. One might wonder why a separate adder would be used when the microprocessor has a big ALU available to it. The answer is twofold. First the ALU is already in use handling user math operations. Secondly the increment/decrement circuit has to be fast. A generic ALU just won’t be fast enough.
One classic adding circuit is a Ripple Carry Adder. Ripple Carry Adders get the job done, but they are slow. Note slow is measured in nanoseconds here – there are no clocks involved in the circuit. The whole thing becomes a classic combinational logic optimization problem. Each layer of logic adds a gate delay to the circuit. As the carry has to ripple through all 16 bits, there are 16 gate delays before the final result is available at the outputs. Delays like these are what limits the maximum clock speed for a given circuit.
The Z80 uses some tricks in its increment/decrement circuit. The first is Carry-lookahead. A carry-lookahead circuit will calculate the carry values directly from the inputs. This reduces the gate delays significantly, but it requires more real estate on the die. A second trick is the carry-skip circuit. Carry-skip calculates the result for groups of bits rather than each bit individually. Again, it will reduce gate delays, at the cost of real estate. The actual Z80 implementation uses a mix of both circuits. Several other “helper” circuits are also used. Surprisingly the Z80 has specific logic just to check for 1 (0x0001) on the internal address bus. This circuit is used during memory move loops to inform other parts of the chip that a loop is about to complete.