Standalone SWTPC Emulator

Version: July 2014

Image from: Michael Holley / Wikipedia

Introduction

The SWTPC 6800 Computer was introduced in 1975 by the Southwest Technical Products Corporation. It was powered by a Motorola MC6800 8-bit microprocessor. More information on SWTPC 6800 computer is available from here or here
My first computer was a SWTPC compatible Newbear 77/68 with a 1MHz Motorola MC6800 CPU, MC6850 ACIA, 4 kByte RAM and a SWTBUG ROM. I used this system between 1978-1980, for experiment control and simple data acquisition applications in the Department of Physiology at University Pécs in Hungary. Since I had neither an operating system, nor programming languages, I developed the programs with "hand assembly", a very time-consuming way of programming. Since at the end of 1979 my lab received a Digital Equipment PDP11/40 computer with RT11 operating system with Fortran compiler and Macro assembler, the Motorola 6800 system became obsolete. Since the 6800 instruction set was more or less a subset of the PDP11 series CPUs, it was very easy for me to develop programs for the PDP11 with MACRO11.

Purpose

To emulate the Southwest Technical Products Corporation SWTPC 6800 personal computer using open source hardware and software components. The microcontroller is an Arduino DUE, a low-cost board (~50$) available from different companies. The development system is available for free from www.arduino.cc
The emulator is a standalone port of the SIMH SWTPC emulator written by William Beech. SIMH is available from http://simh.trailing-edge.com
Technical information for SWTPC is available form: http://www.swtpc.com/mholley/index.html

Software for the SWTPC is available form: http://www.flexusergroup.com/flexusergroup/fug5.htm

SWTPC Emulator

This software is the Aduino DUE port of the SIMH simulator developed by William Beech. The CPU emulation is a nearly 1:1 implementation of file m6800.c in the SIMH package, the rest of the code is a complete rewrite of the code for standalone operation.

Memory map (Hexadecimal Addresses):
0000-7FFF: RAM
8004-8007: MC6850 ACIA (UART)
A000-DFFF: RAM
E000-FFFF: SWTBUG Monitor ROM (visible on every 1 k memory location)

Emulated components:
Motorola MC6800 CPU (SWTPC mp-a)
Motorola MC6850 UART (SWTPC mp-s)
48k RAM

The dc-4 disk controller is not implemented!
The implementation would be easy using a SD card and the modified user interface of my TU58 Dectape II Emulator project.

TCS 8k Basic, is preloaded to memory location (Hex) 0100 TSC 8k Basic program and documentation are available from: http://www.flexusergroup.com/flexusergroup/fug4.htm To start Basic type either G (uppercase G) or J 0100 on the SWTBUG command line. To exit from Basic interpreter type exit. SWTBUG accepts only UPPER case letters as commands. TCS basic is lower case letter compatible.

Uploading the emulator Firmware to Arduino DUE:

Download the compressed source files from here,
Uncompress SWTPC.zip,
open swtpc.ino with Arduino IDE,
Under Menu -> Tools -> Board select board Arduino Due (Programming Port),
Under Menu -> Tools -> Port select the appropriate COM port (Programming Port),
upload the program to Arduino DUE on the programming port.

Using the emulated SWTPC

Using a terminal emulator with USB:
1. Connect a micro USB cable to the programming port on Arduino DUE.
2. Connect the end of the USB cable to a personal computer.
3. Find out the device name assigned to Arduino, e.g., COM7
4. Start a terminal emulator on your PC (e.g., putty, IVT220, etc.)
5. Setup serial communication parameters (Portname, Baudrate=9600 baud, no protocol)

Using a terminal or terminal emulator with a RS232 interface:
1. Connect a 3.3V TTL-to RS232 level converter to Arduino pins 0 and 1.
2. Connect the RS232 lelel converter to the terminal or terminal emulator.
3. Start a terminal emulator on your PC (e.g., putty, IVT220, etc.)
3. Setup serial communication parameters (Portname, Baudrate=9600 baud, no protocol)

After starting the terminal emulation you'll see a $ SWTBUG prompt at the beginning of the line.
SWTBUG will accept only upper case characters. The SWTBUG Users Guide is available from: SWTBUG Users Guide

To start TSC 8k MicroBasic type G (uppercase G) or J 0100 in SWTBUG
TSC 8k MicroBasic is not case sensitive, you can enter lower case characters. To exit TSC Basic type exit.

An introduction to TSC Micro Basic is available from: TSC Micro Basic Plus Manual

Contact Information

Béla Török Email: belbelatorok.com

SWTPC Emulator, SWTBUG Memory Examine function.

TSC 8k MicroBasic.

Arduino Due with TTL to RS232 Level Converter Download high resolution image