Close

SYM-1 to MEGA Connections

rob-wardRob Ward wrote 09/16/2021 at 09:45 • 3 min read • Like

The Sym-1 SBC has a short, but chequered history. The concepts that were built into the Super Mon 1.1 have subtly influenced the very well designed BBC Micro and laid the seeds for the ARM line of computers. Its major bottle neck though was not having a reliable filing system. The board originally was designed with an audio cassette tape system in mind for saving and loading files. This was a cost saving measure and a practical reality. Cassette recorders were vastly cheaper and more plentiful than Floppy Disc Drives.

Faced with the problem of reading the ancient literature (1975-1985) on what can be done with these boards, I decided to go about it in a different way and use the convenience of modern SBC's like and Arduino Mega 2560 to provide the storage system. To that end I used the Arduino Mega to provide an 8-bit parallel interface and enable reading and writing 8 bits at a time, regulated into and orderly fashion where the Sym-1 was the Master and doing hand shaking to regulate the data exchange between the two computers.

The germ of this idea came from Bob Applegate who publishes the web site Corsham Technologies. This amazing guy has developed fantastic hardware interfaces (and manufactured to the highest quality) that work with the KIM-1 mainly, but also has applications with the Sym-1 world as well. His 64Kb memory card is my mainstay. He also gave me the idea of piggy-backing onto a Mega2650 board to create a filing system. This paragraph is a somewhat belated acknowledgement, as I had lost the connection to his work for nearly a year and could not find my way back. Now, having found it on my phone, I have been reminded who inspired this work. It is a powerful idea and relies on on very little hardware bashing as the following diagram shows. 

Here is the circuit diagram to carry out this exchange.

Very simple. The handshake lines were crossed over to make the hand shake algorithm as similar as possible on either side. The Sym-1 is the master and signals the Mega what data is to be exchanged. The mega has to respond with either sending the Sym-1 bytes, or is requested to listen to the Sym-1 for bytes. So the Mega simply waits to be "told" what to do. As long as the two systems stay in sync, then exchanges progress with next to no errors (thanks Bob!). Errors of data exchange are undetectable at the moment. Algorithm errors where the exchanges were not symmetrical were challenging to eliminate due to rusty skills with 6502 machine code. But that was what the challenge was all about.

The dual colour LED shown in the photo connect to Mega pin 8 and 9, and they serve to alert the user of reads and write status, but most important of all, to also alert the user if the Mega starts up and finds the Sym-1 with any logic signals other than "handshake=null" to begin with. This is rectified when the MFS is started by the Sym-1 running the FS linking extensions at $9000, as it resets the Sym-1 handshake interface.

The speed of the exchange is quite fast, though I am waiting until I can do something like transfer an 8kB ROM image (Tested: well under 3 seconds), eg BASIC to RAM from the SD Card to get an estimate of the transfer rate. It is certainly an astronomic step from the cassette filing system days!!

For the project overview and support files Project Page Sym-1 A 6502 Phoenix!

Like

Discussions