Introduction

The ET-3400 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#.

Usage

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

ACCA - View contents of Accumulator A Register
ACCB - View contents of Accumulator B Register
PC - View contents of Program Counter Register
INDEX - View contents of Index Pointer Register
CC - View contents of Condition Codes Register
SP - View contents of Stack Pointer Register
RTI - Return from Interrupt
SS - Single Step
BR - Break
AUTO - Start entering hex at specified address
BACK - During EXAMine mode, move address back
CHAN - During EXAMine mode, edit hex at specified address. During ACCA/ACCB/PC mode, edit hex in selected register
DO - Execute RAM at given address
EXAM - Start viewing hex at specified address
FWD - During EXAMine mode, move address forward

ToDo

  • Assembler/Disassembler
  • 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.

Last edited Dec 18, 2012 at 11:15 PM by RupertAvery, version 9