SWTPC 6800


Return to Home
Return to Resources




The Story

In spring 2025, I inadvertently came across a SWTPC 6800 in a North Texas antique radio auction and recognized it as a significant early computer that was worth bidding on. Fortunately during the auction, I did not encounter much competition and easily bought the computer alongside with a Lear-Siegler ADM3 terminal. The previous owner had lived in Arlington, Texas (between Dallas and Ft. Worth) so this computer and components likely have remained in Texas since they were first produced. Fortunately, there are plenty of resources and documentation posted online about the SWTPC 6800 that I was able to figure out exactly what I had on my hands and tinker with it.



SWTPC 6800 system configuration and board pictures

This is a picture of my SWTPC 6800 as found in the auction listing. The computer was missing the aluminum trim on the front and back corners of the case that I had to reproduce.

The SWTPC 6800 as found was configured with the following boards and memory map:

Board Memory/ROM Memory Range Notes
SWTPC MP-16 16KB DRAM 0x0000-0x3FFF Original configuration
SSB M-16-A 16KB SRAM 0x4000-0x7FFF DIP switches S1-S5 configured to 00100 (no write protect, start address x4000)
SWTPC MP-LA Parallel peripheral interface x8018-x801B Original configuration plugged in port 7 of MP-B. Peripheral ports are memory mapped in 4 byte increments starting at x8000.
SWTPC MP-8M2 8KB SRAM xC000-xDFFF DIP switches S1-S4 configured to 0000, address decoder wiring modification to use 7th 8KB block
Percom LFD-400 ROM #1 xE000-xE3FF MiniDOS 1980 version 1.01. The disk controller board had address decoder wiring modification to change base address of disk controller to xE000 as recommended by the MPX/9 user manual for use with the TSC FLEX OS.
ROM #2 xE400-xE7FF Empty slot (normally MPX DOS for 6800)
MiniDOS ROM (custom) xE800-xEFFF Empty slot (normally MiniDisk for 6800)
Percom SBC/9 1K RAM and I/O xF000 - xFBFF
Psymon ROM xFC00 - xEFFF Original 1979 version 1.2 firmware matching documented binary in Psymon User Manual.
SWTPC MP-B SS-50 motherboard N/A Original configuration

Software source code:

Percom SBC/9

The SBC/9 is a complete Single Board Computer with a 6809 microprocessor, RAM, serial and parallel ports, and a simple monitor ROM firmware. This board was marketed as an upgrade to replace the original SWTPC 6800 CPU board. The board was produced in 1980 by Percom and the ROM contains Percom's system monitor called Psymon.

Documentation



Percom LFD-400

The LFD-400 is a disk controller produced by Percom. This controller board was made in 1977 and was designed to work with the newly introduced Shugart SA-400 single 5.25" mini floppy drive. Prior to the introduction of the mini floppy, the standard size for a floppy disk was 8 inches. Shugart Associates had introduced the SA-400 drive in late 1976 and released in early 1977.

Documentation



SWTPC MP-8M2

The MP-8M2 is a 8KB RAM card consisting of sixteen 2102 static RAM chips produced and sold by SWTPC. Each 2102 is 4K by 1-bit. The board was made in circa 1977-78. This was a manually assembled kit, the factory assembled version was MP-8A. The kit was priced at $200 in 1978.



SSB M-16-A

The M-16-A is a 16KB RAM card consisting of thirty-two Texas Instruments TMS4044 static RAM chips. Each TMS4044 is 4K by 1-bit and drop-in equivalent to the 2102 that the board was originally designed for. The board was produced in 1977 and sold by Smoke Signal Broadcasting (SSB). This board was the first non-SWTPC product made for the SWTPC 6800 SS-50 bus and was originally priced at $529 in early 1977 and later reduced to $379 in 1978.

Documentation



SWTPC MP-16

The MP-16 appears to be a rebranded Motorola SMS3506 board. It is a 16KB dynamic RAM card consisting of sixteen 4116-equivalent 16K by 1-bit dynamic RAM chips produced by Semiconductor Memory Systems (SMS) division of Motorola, the photo shows only half of the sockets populated. The user manual for the board mentions it was designed for Motorola MCM6616 chips (equivalent to the 4116 according to this source), but the obscure and undocumented DO8385W124 labeling on the Motorola chips themselves do not match. The 7801 is likely the date code for week 1 of 1978. I believe this may be intentional mislabeling to avoid patent infringement or licensing fees.

The board contains all the DRAM refresh control logic so memory could be accessed from the SS-50 bus in the same basic manner as if it were a static RAM card. In 1978, this board was priced at $400 and for an additional $250 could be expanded to 32KB by ordering the M16-X expansion kit for 16 more DRAM chips to plug into the empty memory sockets on this board.

Documentation



SWTPC MP-LA

The MP-LA is a parallel peripheral/printer interface produced and sold by SWTPC using the 6820 PIA. This board was produced in 1976 at an introduction price of $35.

Documentation



SWTPC MP-B

The MP-B is the main SWTPC 6800 SS-50 bus motherboard for power distribution, data and address line sharing. Address decoding was sometimes modified on this board, but this example is original. The board was priced at $40 when introduced in 1975.

Documentation



SWTPC MP-68 Mini Floppy Disk System

The MP-68 is a dual 5.25" floppy drive assembled and sold by SWTPC for the 6800 computer. It requires a SWTPC DC2 floppy drive controller board that did not come with this computer when I bought it. I'm uncertain if it was ever used and the SWTPC 6800 setup may have relied entirely on the LFD-400 and the single Shugart drive.

Documentation



Using this SWTPC 6800

As this SWTPC 6800 system includes the Percom SBC/9 and LFD-400, its operation follows the user manual instructions for Percom hardware and software, rather than instructions for SWTPC's own disk controllers and the MIKBUG or SWTBUG monitors.

The SBC/9 has a serial port that connects to a serial terminal that in my case is either a laptop running PuTTY or a period-correct Lear-Siegler ADM3 terminal. The board has configurable baud rates and my board happened to be configured for 9600 baud, 8 data bits, 2 stop bits, and no parity. The ADM3 terminal has configurable DIP switches to match the SBC/9 settings for proper communication.

At first power up of the SWTPC 6800, the SBC/9 6809 processor starts a read at the reset vector address xFFFE in the Psymon ROM space that is programmed to xFC00 instructing the processor to jump to xFC00 where the Psymon firmware starts. The first thing that prints out on the terminal is a "CMD?" prompt. The Psymon User Manual describes the supported commands in this monitor:


M <address>     - Memory examine/change (e.g. peek/poke)
G <address>     - Go to address
R <register>    - Register examine/change
L               - Load program from tape
S <start> <end> - Save program to tape
B <address>     - Set/list breakpoints
U <address>     - Unset breakpoints
Z               - Jump to address xC000 (DEPRECATED! See note below)

Note that the PSYMON user manual mentions a Z command that is a shortcut equivalent to 'G C000' to jump to address xC000 where the LFD-400 MiniDOS ROM #1 is located. However, this command appears to be deprecated and is not in the command look up table of the PSYMON 1.0 6809 assembly code. Therefore, to jump to LFD-400 MiniDOS, the 'G' command is used instead.



A simple 6809 program

The simplest way to interact with the 6809 processor via the monitor firmware is manually entering or examining memory contents.




Using the LFD-400

The Percom LFD-400 controller in this computer has a MiniDOS 1.01 ROM from 1980 that supports loading MPX/9 from a floppy disk. This version of MiniDOS is assembled for the 6809 and does not match any of the 6800 based code that is documented in the LFD-400 user manual. The SBC/9 user manual also has an Appendix A5 section near the back discussing using the LFD-400 in a SBC/9 system. The "MPX/9" ROM mentioned in Appendix A5 is really referring to a 6809-compatible MiniDOS/9 ROM placed in any slot on the LFD-400 controller, see the Software source code section.

Basic usage is to turn on both the computer and the Shugart disk drive, type in PSYMON after the "CMD?" prompt this command 'G E000' to jump to address xE000 (base address of the LFD-400 on my system, other systems may have this at xC000). The disk drive will start spinning and if a valid disk is present, the disk will stop after a few seconds and the screen will display "MPX/9 VERSION 1.20 COPYRIGHT (c) 1980 BY PERCOM DATA CO. INC." followed by a "MPX>" prompt. Then MPX commands as documented in the user manual (listed below) are usable:


COMMAND     ENTRY FORMAT
S(ave)      S <FNAME> <BEGA> <ENDA> [<EXEC>]
L(oad)      L <FNAME> <Address>
D(elete)    D <FNAME>
F(iles)     F <N>
I(nitial)   I <N> [<CMD>]
R(ename)    R <OLDNAME> <NEWNAME>
G(o)        G <EXEC> [<PARAMETERS>]
M(onitor)   M

The LFD-400 controller has memory mapped control and status IO to a Shugart SA-400 disk. The memory-mapped control signals are mapped with an address offset of 0x0C00 + N where N is the 74LS138 3:8 decoder output index relative to the base of the controller. For example, "MON" for Motor On is at x0C05 + xC000 = xCC05 if the LFD-400 base is at xC000. Mine was modified for xE000 so "MON" is actually located at address xEC05.

LFD-400 controller signals:
Signal Offset Direction Purpose
SWE xC00 read Controller status
SYNC xC00 write Sync word port
RDE xC01 read Received data
RDE xC01 write Write data port
SCTR xC02 read Sector counter
SCTR xC02 write Fill word port
DVST xC03 read Drive status
DVST xC03 write Drive and track select
RRST xC04 read Receiver restart pulse
RRST xC04 write Write pulse
MON xC05 read Disk motor on pulse
MOF xC06 read Disk motor off pulse

The motor controller circuitry on the LFD-400 has an astable multivibrator using a 74LS122 that relies on the computer sending "MON" Motor On pulses on a regular basis to keep the disk spinning, otherwise the multivibrator automatically turns off the disk after approximately 3 seconds if the computer happens to become non-responsive. The multivibrator circuit is timed with a simple analog RC circuit consisting of a 330K resistor and 33uF electrolytic capacitor. After nearly 50 years, the capacitor failed on my controller so the disk was not spinning up. MiniDOS/9 would return a "DISK ERROR 04" indicating that it thinks there is no disk present. Once the capacitor was replaced, executing "G E000" from PSYMON to jump to MiniDOS/9 will spin up the disk as expected. A debugging technique for the motor control is to execute PSYMON 'M EC05' followed by ENTER to read this address causing a pulse to 'MON' Motor On to verify the astable multivibrator flipped state to enable the disk motor on signal to the Shugart drive.

The LFD-400 only works with hard sectored disks that have 10 index holes punched on the disk. Many later 5.25" floppy disks are soft sectored with only 1 index hole and will not work. The controller looks at the TRACK 0 pulses from the Shugart drive and relies on timing between holes to determine if a disk is present, so a soft-sectored disk will cause MiniDOS to return "DISK ERROR 04" because the less-frequent TRACK 0 pulses cause it to think the disk is missing.

The circa 1980 MPX/9 disk that came with my system surprisingly appeared to be readable at least for the MPX/9 section. If the disk is flipped backwards and appears blank, MiniDOS/9 returns "DISK ERROR 06" indicating that it is unable to find an expected disk header. With the disk inserted in the proper orientation, MPX/9 will load into RAM. First a bootloader is loaded into RAM at 0x0100, and then this loads the rest of MPX/9 into RAM at xD000 with the lower sections being used for stack memory. The executable code entry point for MPX/9 is at 0xD503, e.g. after MPX/9 is loaded into RAM and you decide to return to PSYMON with the MPX/9 'M' command, you can jump back into MPX/9 with a PSYMON 'G D503' command.

The files in the screenshot above are what is present on the disk that came with this SWTPC 6800 system. This disk has BASIC09 files, but unfortunately does not read and has data corruption. There are some other interesting files on this disk that provide clues as to what this SWTPC 6800 system may have originally been used for. There are inventory control serial numbers etched on the back of the SWTPC 6800 and on the Percom Shugart drive, and given that there are files related to THERMAL and LOGGER, I suspect the computer used the MP-LA parallel port to query temperature data from some external 1970s-era monitoring equipment and logged it to disk. Likely the logging program was written in BASIC so the computer would first load MPX/9 and then BASIC, then run BASIC to run the data logging program. If true, this is an interesting early example of computer automated data logging using a relatively affordable 1976 computer. National Instruments was founded in 1976 to solve this exact application of using computers to control test equipment and automate data collection.


Back to Top