was a microprocessor trainer kit sold in the 70's and 80's and was designed to be assembled by the end user and was used to teach fundamentals of microprocessors.
My father, an industrial engineer who was interested in electronics, bought the kit and kept it around in his workbench and as a young boy I found the time to play with it and even damage the exposed 6800 CPU by attempting to pry it out and put it back in, much to my father's chagrin.
The kit had the following features:
- Motorola 6800 8-bit CPU clocked at 1MHz
- Six 7-segment LED displays used to display address and data information, and as a visual output device (i.e. screen)
- 17 push-button switches used as a Hex keypad
- 8 LEDs for general purpose visual output
- 1 8-position DIP switch for data input
- 1 KB ROM
- 2 x 256 bytes RAM
- buffered 8-bit data and 16-bit address ports
The ROM contained a program allowing the user to (tediously, i.e. byte-by-byte) enter, run and monitor programs in RAM using the keypad and the screen.
This project simulates the ET-3400 by emulating the 6800 CPU and memory-mapped access to simulated 7-segment displays and keypad for I/O. The ROM program is included.
The emulator core and 7 segment display are written from scratch in 100% C#, I only got the basic idea of how an emulator should run from Marat Fayzullin's page How To Write a Computer Emulator
. It was originally implemented in Visual Basic 6, ported to C++, then finally C#.
You can download the trainer's Manual here
The package includes some RAM files that contain hex programs that can be run on the emulator.
Loading and Executing RAM files
To execute a RAM file, load the RAM file into memory using LoadRAM() and press D on the keypad to bring up the Do prompt. You will be required to enter a 16-bit hex address in RAM. Usually this will be 0000. The ROM will then execute the program.
The manual contains program listings in assembly/machine code and the ROM listing which can be useful for calling functions such as monitoring the keyboard and displaying text on screen.
Quick ET-3400 Guide
- View contents of Accumulator A RegisterACCB
- View contents of Accumulator B RegisterPC
- View contents of Program Counter RegisterINDEX
- View contents of Index Pointer RegisterCC
- View contents of Condition Codes RegisterSP
- View contents of Stack Pointer RegisterRTI
- Return from InterruptSS
- Single StepBR
- Start entering hex at specified addressBACK
- During EXAM
ine mode, move address backCHAN
- During EXAM
ine mode, edit hex at specified address. During ACCA/ACCB/PC
mode, edit hex in selected registerDO
- Execute RAM at given addressEXAM
- Start viewing hex at specified addressFWD
- During EXAM
ine mode, move address forward
- Memory viewer
Note / Disclaimer
Although the emulator appears to be fully functional (all the buttons seem to work, it can run RAM programs without problems and calls to ROM functions are all working) there seems to be a very subtle stack pointer corruption going on, for example when you try to Single Step.
I have resorted to comparing with a reference 6800 emulator core written in C, and this is a work in progress.
By downloading this code you agree to not hold the author liable for any damages that may incur from its use thereof. This is for educational purposes only.