Corsham projects, a tribute to Bob Applegate

Bob Applegate designed and sold for many years boards of interest for KIM, AIM 65, SYM-1 and the SS50/SS-30 users, his one man company was called Corsham TEchnology.

That ended last year when Bob died, and I miss him. A good friend with whom I exchanged many emails about the KIM-1 and KIM Clone.
I have bought many of his fine products. And many others did also, and due to the open nature of his projects, many variants appeared build by others.

His webpages disappeared in July 2024. His family does not respond to attempts to contact about the legacy of Corsham, many of us tried.

Therefore I decided to duplicate here all I have of Bob’s projects, in a way that makes it more accessible than his webshop sale pages, Github, private email exchanges and older downloads.

Here it is: Corsham Bob Applegate projects.

Enjoy, enhance, duplicate, and keep Bob in our memories, I claim nothing, I do not sell any Corsham product, I do not have more information like gerbers, PCB designs.
This is all Bob ever published!

xDBG for 65C02

# xDbg

xDbg is a 65C02 debugger meant to compliment the Corsham Technologies xKIM monitor.

## Features
* Pure 6502 code.
* Can load Intel hex files from either the SD card or console.
* Breakpoints without external hardware support.
* Single-stepping without external hardware support.
* WDC65C02 disassembler.
* Examine/edit memory.
* Can compute offsets for relative branches within memory editor.

## Command Summary (not a complete list)
* Examine/edit memory.
* Display/set registers.
* Jump to code.
* Load Intel hex file from console or SD card.
* Directory of SD card.
* Branch offset calculator, also within memory editor.
* Disassemble WDC65C02 code.
* Step/Step-over
* Breakpoints: list, set, clear, enable, disable.

xDebugger_Manual

Downloads:
xDbg for 65C02

KIM programs

Downloads:
KIM Programs

– Farmer Brown
– Lunar Lander
– Sample extension for XKIM

;=====================================================
; A sample extension for the Extended KIM monitor.
; This is a very simple example of how to write an
; extension (adding a new command) for the
; Extended KIM monitor.
;
; How can you test this? Easy. First, use the “?”
; command in the extended monitor and verify the
; “Z” command is not listed, then load the binary
; version of this file. Do “?” again and you’ll see
; the new command has been added and can be used.

Memory test

;***********************************************************
; This memory test was originally based on Jim Butterfield’s
; memory test program in the First Book of Kim, but has
; grown a bit.
;
; This now tests every memory location using a rolling 9-bit
; pattern. Ie the pattern repeats every 9 bytes, so this
; will detect most shorted address line problems. I use
; this to test memory boards, so it will run forever unless
; an error is detected. At the end of each pass, a ‘.’ is
; printed.
;
; This does output to the TTY port, so if you’re only using
; the default KIM display, the output functions will need to
; be tweaked. Not hard to do, but I didn’t need it.
;
; Written February 2006 by Bob Applegate, but it uses some
; bits of code from Jim Butterfield, and Ross Archer
; (http://www.6502.org/source/io/primm.htm).
;
; bob@applegate.org
; www.k2ut.org – look for my KIM page
;
; Rev 1.0 – 02/02/2006

Downloads:
Memory test for the KIM-1

SS-50 software SBUG SWTBUG

Archive with SS-50 software

See also the Corsham github repositories for the latest versions of programs.

In this archive:

  • 6800 programs

    xswtbug
    This is the extended version of SWTBUG, originally written by SWTPC and then enhanced by Corsham Tech. It is fully compatible with the original, and all entry points are the same, so old programs should run with it. This is the source file to the code in the EPROM on the 6800 CPU board.
    Note that this includes some low level functions for the SD card adaptor we’ve been working on, so that’s what some of the code is about.
    MicroBas

    This is Technical Systems Consultants’ (TSC) Micro Basic Plus, a 4K BASIC interpreter. This has been modified so the user can build it for use with either the MP-C card (as delivered) or the MP-S card (our change). The S19 file is built for the MP-S (or
    compatible card such as our serial board). It can be loaded with SWTBUG’s L command.
    numguess
    A silly number guessing game I wrote one evening, based on an interview question at Microsoft in the mid 1980s. Read the comments for an explanation. Basically, guess a number between 1 and 100 but it involves some rewards or consequences.
    console.asm
    I wanted a stripped down set of input/output functions for the console, and also a kbhit function to determine if a key is waiting or not, so this file was tossed together. It only supports ACIA boards, not the MP-C. Other source files include this.
    othello
    This is a decent version of the Othello game taken from the internet. We did nothing except make it assemble with the AS02 assembler.
    memtest
    A decent little memory test program that prompts the user for the starting and ending location, then does a rolling nine bit pattern. Since the pattern repeats every nine bytes (as opposed to a power of two), it can detect shorted address busses and the like.
    A “hunt the wumpus” game I found on the net. It assembles and runs, but that’s as far as I’ve tested it.
    Life.
    Don’t speak to me about life.” (you should know the reference).
    This is a version of Conway’s Life program, although it has bugs. One know issue is that it scrolls the screen when using a WYSE-30 terminal, so the whole screen is off by one row; makes updates look odd. Might have other bugs too. You can assemble it for either VT-100 or Wyse-30 terminals.

  • 6809 programs

    This contains 6809 related software. Sorry, but the 6809 board took a lot longer than anticipated, so there wasn’t much time to develop fun software like we did for the 6800 board.
    sbug_1_8 is the basic 6809 debugger that SWTPC included on their 6809 board. This is modified to build with the Kingswood Consulting 6809 cross assembler AS09.
    sbug is our more modified version that has options for building a Tiny BASIC into the lower 2K.
    basic is the Tiny BASIC interpreter

  • SBUG 1.8.1

    (see github for 1.8.2)

  • xSWTBUG

    ;REPLACEMENT FOR MIKBUG ROM
    ;FOR SWTPC 6800 COMPUTER SYSTEM
    ;COPYRIGHT 1977
    ;SOUTHWEST TECHNICAL PROD. CORP.
    ;AUGUST, 1977
    ;***************************************************
    ;
    ; Enhancements by Bob Applegate, K2UT
    ; bob@corshamtech.com
    ; www.corshamtech.com
    ;
    ; This was all done for the SWTBUG included with the
    ; Corsham Tech 6800 CPU board.
    (see also github)

  • CTMon65

    Monitor for the SS-50 65C02 CPU board
    (see also github)

SS-50 6809 CPU board

This is the coolest thing we’ve done… so far!

Our original 6800 board continues to be a fun project to work with. I grew up doing 6502 and Z80 assembly language and have always been able to do a lot with either, but the 6809 is just amazing! The instruction set and addressing modes make it easy to write much more complicated code. There are numerous operating systems for this processor, include multi-tasking and multi-user options.

Features
– 68B09 processor running at 2 MHz.
4- K EPROM – SBUG occupies upper 2K, and the lower 2K is available. We usually put either a Tiny BASIC or SD card subroutines there, but it can be replaced with user code.
– Switch allows disabling the lower 2K of the EPROM.
– 128K RAM – Extended memory banks 0 and 1. Each 8K block can be enabled/disabled via easy to use DIP switches.
– Support for the extended 20 bit address bus using the same Dynamic Address Translation (DAT) as the original SWTPC board.
– Jumper selection of either baud rate clocks or address bits for A16 to A19.
– Jumper selection of either baud rate clock or /BUSRQ line.
– On-board RESET button along with headers for external reset and interrupt buttons.
– High quality dual-layer board.
– Off the shelf components: easy to understand, easy to repair, easy to modify.

This shows the jumpers used to select the extended address lines or baud clocks, and clock selection. The jumper block labeled VAR sets the “VAR” clock rate to 1200, 2400, 4800 or 9600 baud (actually x16). The VAR/BUSRQ jumper selects which of those two signals are placed onto bus pin 46, usually the 110 baud clock line.

The other four jumpers select whether A16 to A19 or additional baud rate clocks are placed onto pins 47 to 50. The usual practice is to use all four lines for the extended address bus, then use pin 46 (110 baud/BUSRQ) as the clock for the serial board:

SS-50 6809 CPU Manual

Archive with older revisions (2-5) schematics




SS-50 RAM EEPROM

After many requests, I finally took the design of our SS-50 64K RAM board and added an EEPROM socket.

Features include:

• Provides anywhere from 0K to 64K.
• The RAM can be enabled/disabled in 4K segments via 16 switches from $0000 to $FFFF.
• The EEPROM (28C256) can be enabled/disabled in 4K segments via eight switches anywhere from $8000 to $FFFF.
• Fully compatible with the SS-50 bus. It does not support the extra four address lines of the SS-50C (6809) bus.
• Very low power.

Note that this memory board does not use any of the extended address bits on the SS-50C bus commonly used on 6809 based systems.

SS-50 RAM EEPROM Manual


SS-50 Prototyping board

Features include:

– Large solderless prototyping area. The “tabs” are along the top edge so you can plug in more boards to extend the area.
– All main SS-50/SS-50C signals are buffered.
– Buffer direction can be changed by pulling control lines to the proper state.
– 5 VDC power on-board for your circuit; 1.5 amp maximum draw.
– Spring loaded jumper block on upper right corner for connection to external devices.
– 16×34 array of plated-through holes for adding other connectors, components, etc.

The bus buffering defaults to taking data from the SS-50 bus and driving to the board, such as for output devices where the CPU is only writing to the board’s circuitry.
However, by pulling one control line low, the data buffers can be reversed for designs that both write and read to/from the board. The address and control line buffers can similarly be controlled so as to drive the bus for those who want to build their own DMA devices or even add a new CPU!

SS-50 Prototyping Manual

Bus signals are clearly identified:



SS-50 6800 CPU Board

6800 CPU board!

Is this board vintage? Well, it was designed in 2014, so technically it is not. However, it uses a design very similar to the original SWTPC MP-2A using parts available at that time. The large RAM and EPROMs are not vintage, nor are some of the TTL chips.
Using older parts has been a problem because some of them have not been made in a long time, so prices are high, conditions of pulled chips are unknown, and we have to test a lot more components to verify they actually work as expected. Fortunately all the chips on this board are available from surplus inventories, but eventually they will be unavailable.
his is our new rev 3A 6800 CPU board, which is roughly equivalent to the SWTPC MP-A2 CPU board with a few additions. It is SS-50 compatible and can be plugged into existing systems or for building a new system. It can be mixed with vintage SS-50 and SS-30 boards.

Features
– 6800 CPU running at about 1 MHz (see next feature).
– CPU speed can be adjusted via a precision trim pot on the top left corner of the board.
– CPU frequency probe pins to make it easy to measure and adjust the CPU speed.
– 8K of EPROM from E000 to FFFF. We include our extended version of SWTPC (xSWTPC) which includes new commands and is easily extendable. The source code for the software is on our web page.
– The new board (rev 3A and later) now has 48K of RAM from 0000 to 7FFF and 9000 to DFFF can be disabled via a jumper. The SWTPC board has 128 bytes from A000 to A07F so this extra RAM opens a lot of opportunities!
– Baud rate generator supplies 1200, 2400, 4800 or 9600 baud onto the 150 baud line. I generally use 4800 baud and wanted an easy way to select higher baud rates.
-ll address, data, and control lines are buffered.

xSWTBUG
There were two main monitor programs used on SWTPC machines, starting with MKBUG from Motorola, but it only supported serial communications via bit-banging a parallel port. Later, SWTPC developed SWTBUG that could support the parallel port or a 6850 ACIA. It maintained most of the important entry points so programs written for the older monitor would continue to run.

We started with the SWTBUG source code on the net, modified it for a more modern assembler, added macros to ensure entry points did not change, then added options for extensions. The main extension is replacing the “C” (clear screen) command with “X” for extended commands. Exactly what is added in those extensions varies from one version to another, but as of xSWTBUG 1.1 these are the extra commands:

Help
Memory test
Othello game
Number guessing game
As of version 1.2, these changes were made:

Ability to do a disk directory of SD card (with our SD card system)
Display contents of file on SD card
Load S19 files from SD card
Boot a DOS from SD card (usually FLEX)
We’ll be adding more, and since the source code is available, anyone can change the code to add/remove tools.

Of course, all the documented SWTBUG entry points are preserved! There are no worries about older software not running under xSWTBUG..

6800 CPU Manual Rev 2
6800 CPU Manual Rev 3A


Rev 2 schematics


Rev 3A schematics

SS-50 64K RAM board

SWTPC 6800 compatible 64K memory board

Is this board vintage? Frankly, no. It was designed in 2014 using a RAM chip that most definitely available in the era when SWTPC was selling their systems. The 74LS04 and the Molex connectors are vintage, but not much else is.

Features
This board was on the list of things to build, but the design was easy to visualize, and when someone contacted me about needing RAM boards for his system it just seemed like a good time to build the board.

Features include:

• Provides anywhere from 0K to 64K.
• The RAM can be enabled/disabled in 4K segments via 16 switches.
• Fully compatible with the SS-50 bus.
• Very low power.

SS-50 64K Manual