SSE SoftBox Z80 Computer


  • The SoftBox from Small Systems Engineering Ltd. (SSE) adds CP/M capability to Commodore PET/CBM computers. It is a Z80-based single board computer with 64K RAM and 4K ROM BIOS, designed to run CP/M 2.2. It uses the same hardware platform as the SSE HardBox.

    Rather than mounting internally like the Z-RAM, the SoftBox is an external unit that connects to the IEEE-488 bus. Over IEEE-488, it can use the Commodore computer as its terminal and use the Commodore floppy drives under CP/M.

    In addition to IEEE-488, the SoftBox has two other ports:

    • A 34-pin flat cable connector allows a Corvus hard drive to be attached. The Corvus drive can be used under CP/M and CP/M can even be booted from it. Corvus hard drives ranged in capacity from 5 to 20 megabytes. Up to 4 Corvus units may be chained, allowing access to up to 80 megabytes of online storage.
    • An optional DB25M connector and USART may be populated, providing RS-232 capability. If equipped, the RS-232 port can be used under CP/M for communications (e.g. to attach a printer or modem). The also enables the SoftBox to be used as a standalone computer. If no CBM computer is detected on the IEEE-488 bus, the SoftBox will use the RS-232 port for a terminal connection.

    Operation

    The SoftBox is an IEEE-488 controller, like the Commodore computer. IEEE-488 allows for multiple controllers on the same bus. The SoftBox uses the REN (Remote Enable) line to sense if a CBM computer is on the bus.

    When a CBM computer is on the IEEE-488 bus with the SoftBox, the CBM is used as a terminal. The SoftBox will not try to boot from the drive at power on. Instead, a terminal program must be loaded on the CBM. Once loaded, the CBM will become the terminal for the SoftBox over IEEE-488 and the SoftBox will try to boot CP/M from the drive. If no IEEE-488 floppy drive is present on address 8, the SoftBox will attempt to boot CP/M from an attached Corvus hard drive.

    When no CBM computer is on the IEEE-488 bus with the SoftBox, the RS-232 port is used for the terminal. Since the SoftBox is itself an IEEE-488 controller, it controls the Commodore floppy drives directly and follows the same boot process as if the CBM is attached.

    Hardware

    Three different versions of the SoftBox have been found:

    • Rev 1. This unit is owned by Nils Eilers. It has no revision number on the PCB and so it is believed to be revision 1. The PCB is quite different from the other two listed here and slides into the case on rails. It has an internal AC transformer and attached cord for mains power. This SoftBox has one LED. Rev 1 Photos
    • Rev 2. This is shown in the picture at top. It has an internal AC transformer and an attached cord. This SoftBox has three LEDs. Rev 2 Photos
    • Rev 3. This newer unit has a different chassis and is shown in SSE advertisements. It has a 9 VAC power input and requires an external transformer. This SoftBox has one LED. Rev 3 Photos

    The two units have slightly different circuit boards but their layouts and components are the same. If there are circuit differences, they are very minor.

    Schematic – PNG format. Note: a few lines are unreadable, particularly the address lines going to the 74S287, due to the schematic being pieced together from several photocopies.

    Firmware

    The firmware is stored on two 2716 EPROMs located in sockets IC3 and IC4. I have two sets of original firmware:

    The first set is an older version that I found in my original SoftBox (“Rev 2” hardware). It contains strings in the IC3 binary that identify it as Revision 27-Oct-81:

    SOFTBOX-OCT81-IC3.BIN – Socket IC3. Sticker reads “379 (C)1981 K. FREWIN”
    SOFTBOX-OCT81-IC4.BIN – Socket IC4. Sticker reads “380 (C)1981 K. FREWIN”

    I found the second set in my newer SoftBox (“Rev 3” hardware). This set contains strings in the IC3 binary that identify it as Revision 09-June-1983:

    SOFTBOX-JUN83-IC3.BIN – Socket IC3. Sticker reads “389”
    SOFTBOX-JUN83-IC4.BIN – Socket IC4. Sticker reads “390”

    A major difference between Revision 9-Jun-1983 and the previous version is that support for the CBM 8250 drive was added. However, I found that a bug causes it to fail for tracks 100+. I fixed the bug myself and created this unofficial BIOS:

    UNOFFICIAL-MAY2014-IC3.BIN – Socket IC3.
    UNOFFICIAL-MAY2014-IC4.BIN – Socket IC4.

    Software

    SOFTBOX-DISTRIB.D80 – SoftBox CP/M 2.2 distribution disk (D80 format for 8050 drive)

    The Commodore directory will show two files: K and CP/M. The terminal program that runs on the CBM computer is K. To start the SoftBox, load K and run it. The file CP/M is not a Commodore program; it is Z80 code for the CP/M system (BDOS and CCP). The SoftBox loads this file into its RAM on startup.

    The rest of the disk appears empty in the Commodore directory. It is not empty. The CP/M filesystem is contained on the sectors. Do not modify this disk from the Commodore side or else the CP/M fileystem will be corrupted.

    Reverse Engineering

    I have reverse engineered most of the SoftBox software and ROMs. The following has been done:

    • PET Terminal – The software that runs on the PET has been fully disassembled. An interesting feature is that it allows the SoftBox to read/write/execute memory.
    • BIOS – The SoftBox EPROMs are about 98% disassembled. All routines have been identified, some work remains on the drive code.
    • Utilities – The programs that were originally written in Z80 assembler, BACKUP, COLD, SET, TIME, and XFER, have been fully disassembled. The programs that were written in MBASIC and compiled, NEWSYS and FORMAT have been largely disassembled and source code recreated, but work still needs to be done.

    I’ve also made an enhanced version of the terminal and a port for CBM-II machines. All work is available in my GitHub Repository.

    Emulator

    SoftBox support has been added to the MAME emulator. MAME can emulate the SoftBox in both standalone and PET peripheral modes. I put together a ZIP archive with the SoftBox ROMs and software for MAME. I also wrote a shell script to build MAME with SoftBox support from source on Ubuntu Linux.

    Starting the 8032 emulator with the SoftBox as a peripheral:

    $ ./mame pet8032 -window -nomaximize -skip_gameinfo -natural \ 
        -ieee11 softbox \
        -flop1 ./software/softbox/softbox-distrib.d80 \
        -hard1 ./software/softbox/corvus10mb.chd

    Starting the standalone SoftBox emulator:

    $ ./mame softbox -window -nomaximize -skip_gameinfo -natural \
        -flop1 ./software/softbox/softbox-distrib.d80 \
        -hard1 ./software/softbox/corvus10mb.chd

    Manual

    SoftBox Manual – PDF format, 40 pages.

    Articles

    Announcement (TORPET, Jan 1982)
    Announcement (InfoWorld, Apr 1982)
    Announcement (Compute, Jun 1982)
    Announcement (Commodore Magazine, Jun/Jul 1982)
    Announcement (Popular Electronics, Jul 1982)
    Review (Commodore Club News, Jul 1981)
    Review (Interface Age, Jun 1982)
    Review (Compute, Jul 1982)
    Review (InfoWorld, Sep 1982)
    Technical article (Wireless World, Jun 1983)
    Advertisement (Commodore Magazine, Jun/Jul 1982)
    Advertisement (Commodore Magazine, Aug/Sep 1982)
    Advertisement (InfoWorld, Apr 1982)
    Advertisement (InfoWorld, Jul 1982)
    Advertisement (Compute, Aug 1982)
    Advertisement (Ahoy, Jan 1984)
    Advertisement (Commodore Computing Intl, May 1984)
    Mention (Vic Computing, Feb 1982)
    Mention (TORPET, Oct 1982)
    Mention (Midnite Software Gazette, Feb/Mar 1983)
    Mention (TPUG Magazine, Mar/Apr 1984)

    Credits

    This page was made possible by the following people:

    • Former employees of Small Systems Engineering, Ltd. of London, England – Terence Smith, Keith Frewin, and Jeremy Gugenheim. Terence gave me his hardware, disks, schematics, and answered many questions. Keith Frewin had an original manual, which Jeremy Gugenheim scanned and sent to me. Jeremy also found the RCC80 CORAL disk and manual.
    • Steve Gray of Toronto, Ontario, Canada – Steve helped me with the initial disassembly of the SoftBox terminal program. He also helped with the CBM II port and wrote the keyboard code in that port.
    • Doug Staley of Toronto, Ontario, Canada – Doug reverse engineered the SoftBox terminal program back in the ’80s and made enhancements to it for the SuperPET. I found Doug’s name in a magazine from 1984 and contacted him in 2012. He saved his disassembly files after all those years and they helped improve my disassembly.
    • Anders Carlsson of Sweden – Anders gave me a HardBox, which is another SSE peripheral that is based on the same hardware as the SoftBox. I was able to convert this unit to a SoftBox, which provided another unit to work with.
    • Curt Coder of Finland – Curt is a developer on the MESS/MAME project, and he built the first working SoftBox emulator. We’ve since refined it together and it has become a valuable tool for working with the SoftBox code.
    • Steve Hirsch of Burlington, Vermont, USA – Steve provided REL/PAK from MicroSmith Computer Technology, a CP/M program that allowed me to disassemble the KLIB.REL and LOADSAVE.REL, two relocatable object files from SSE found on Terence Smith’s disks.
    • Martin Hoffmann-Vetter of Germany – Martin helped with the SoftBox BIOS by disassembling the older 1981-10-27 version, using my 1983-06-09 disassembly as a reference. This provided clues to the SoftBox development history. He also helped reverse engineer the CBM drive routines in the BIOS.
    • Nils Eilers of Germany – Nils provided high quality photos of his early model SoftBox and dumps of the EPROMs inside it (BIOS revision 1981-09-08).

    Thank you for all of your help!