The Exidy Sorcerer (http://oldcomputers.net/sorcerer.html) is an early personal computer, arriving in 1978 on the heels of the Apple II, TRS-80, and PET. It features a 2 MHz Z80, up to 48K RAM, ROM cartridges (made from 8-track tape cases!), and a high-resolution monochrome display. Half the character set is based in RAM, so 512 by 240 pixel graphic displays are possible.
The Sorcerer comes with a cassette tape interface which can run at either 300 or 1200 baud, pretty good for its day (but not entirely reliable). The Teensy-based simulator replaces the cassette interface and transmits software from a microSD card at 20833 baud. Instead of queuing up a tape and waiting 15 minutes for a 24K program to load at 300 baud (or trying it twice at 1200 baud), the user loads a menu, selects the program, and loads it, all in under a minute.
Teensy 3.5 has 300 times the speed and 10 times the memory of the Sorcerer, so making it a storage peripheral is like the tail wagging the dog. But Teensy is cheap and easy, and using it this way preserves the best part of the retrocomputing experience as no system emulator can.
The Sorcerer's cassette interface is on a daughterboard which feeds a UART on the motherboard. The UART chip's spec is good up to 30k baud. The Teensy replaces the daughterboard and generates the UART clock signal (16 times the baud rate) using the FrequencyTimer2 library. In practice, the Sorcerer's ROM-based loader can't keep up at 30k baud, but it can at 21k (and 2 stop bits). Teensy's second serial port connects directly to the 5V UART chip with no level converters required.
In operation, Teensy repeatedly transmits a small piece of Z80 code, the terminal/loader, along with the required 5-second header. When the user enters LOG (LOad and Go) the Sorcerer runs the code and signals Teensy to send a menu. Teensy uses the SDFAT library to build the menu and sends it off. Sorcerer waits for a keypress and asks Teensy for another menu or for a file. The simulator presently supports 3 file types: .BAS for BASIC files, .COM for CP/M executable files, or .BIN for MESS/MAME binary files. When a file is selected, Sorcerer jumps to its ROM-based loader and Teensy transmits the header and program at a blazing 20833 baud (actually faster than some floppy drives of the day).
Long ago I happened on a Sorcerer motherboard without case, keyboard, and cassette interface. I upgraded its RAM to 56K and modified its ROM for a third-party keyboard, but then it languished for decades with no software to run. Thanks to Teensy and software libraries from the Internet, my Sorcerer has a new life. I decorated it with LEDs driven from a data bus buffer and hung it on the wall. A friend of mine with a complete Sorcerer uses the Teensy now instead of playing WAV files off a CD into the cassette port (still less than reliable). The Teensy 3.5 is visible at upper left, below the colored clip leads.
The Sorcerer comes with a cassette tape interface which can run at either 300 or 1200 baud, pretty good for its day (but not entirely reliable). The Teensy-based simulator replaces the cassette interface and transmits software from a microSD card at 20833 baud. Instead of queuing up a tape and waiting 15 minutes for a 24K program to load at 300 baud (or trying it twice at 1200 baud), the user loads a menu, selects the program, and loads it, all in under a minute.
Teensy 3.5 has 300 times the speed and 10 times the memory of the Sorcerer, so making it a storage peripheral is like the tail wagging the dog. But Teensy is cheap and easy, and using it this way preserves the best part of the retrocomputing experience as no system emulator can.
The Sorcerer's cassette interface is on a daughterboard which feeds a UART on the motherboard. The UART chip's spec is good up to 30k baud. The Teensy replaces the daughterboard and generates the UART clock signal (16 times the baud rate) using the FrequencyTimer2 library. In practice, the Sorcerer's ROM-based loader can't keep up at 30k baud, but it can at 21k (and 2 stop bits). Teensy's second serial port connects directly to the 5V UART chip with no level converters required.
In operation, Teensy repeatedly transmits a small piece of Z80 code, the terminal/loader, along with the required 5-second header. When the user enters LOG (LOad and Go) the Sorcerer runs the code and signals Teensy to send a menu. Teensy uses the SDFAT library to build the menu and sends it off. Sorcerer waits for a keypress and asks Teensy for another menu or for a file. The simulator presently supports 3 file types: .BAS for BASIC files, .COM for CP/M executable files, or .BIN for MESS/MAME binary files. When a file is selected, Sorcerer jumps to its ROM-based loader and Teensy transmits the header and program at a blazing 20833 baud (actually faster than some floppy drives of the day).
Long ago I happened on a Sorcerer motherboard without case, keyboard, and cassette interface. I upgraded its RAM to 56K and modified its ROM for a third-party keyboard, but then it languished for decades with no software to run. Thanks to Teensy and software libraries from the Internet, my Sorcerer has a new life. I decorated it with LEDs driven from a data bus buffer and hung it on the wall. A friend of mine with a complete Sorcerer uses the Teensy now instead of playing WAV files off a CD into the cassette port (still less than reliable). The Teensy 3.5 is visible at upper left, below the colored clip leads.