Sol20.org

PTDOS Programs and Source

PTDOS Source Code (link)

Most of the programs here were recovered from a batch of disks supplied by Bob Stek and Steve Maguire. Although I wasn't able to get either of my Helios systems running, I was able to write software for the Catweasel disk controller to drive a standard 8" floppy disk and read most of the disks. That source code is available on this page as well.

Pick it up as one big ZIP file. (1.2 MB) Read what is in its readme.txt file. It contains a number of Proteus source disks, a couple official Processor Tech source disks, and miscellaneous other files.

Other Source Code (link)

Martin Eberhard has a Sol-20 with Helios disk system which is still operating and running PTDOS. He has written an XMODEM driver for PTDOS, allowing reliable file transfer between a host computer and a PTDOS system, via the xmodem protocol. The zip file contains the source and a README file with directions on building and using the software. Bravo, Martin!

PTDOS 2.0 Source Code (link)

This software comes via Leslie Smith. It is called PTDOS 2.0, but as far as I know, the last official PTDOS was 1.5. Scanning the source code a bit makes it obvious that this is an evolution of PTDOS 1.5 that supports a non-Helios disk system. In fact, the revision string is "PTDOS 2.0 Rev AA Nov 88", author "D. Sherratt".

DiskCopy.asm seems to match that found in the 1.5 sources, although it has a "bonus program" concatenated at the end of the listing. PTDOS-Assm.asm is identical to the official PTDOS 1.5 source.

PTDOS 2.0 Program Source
Source Comments
PTDOS-core.asm The core PTDOS 2.0 O/S itself. Beautifully written by Philip Levy.
PTDOS-Assm.asm Source code for the 8080 assembler, ASSM 1.1 (mod 0)
DiskCopy.asm disk copy utility
NPT_Defs.txt macros used by the assembler and disk copy programs

In the final few seconds of its existence, Processor Technology/Software Technology sold copies of the source code to its programs. Here is the source code to PTDOS 2.0, to the 8080 assembler that came with it, and to a disk copy utility. Thanks to Leslie Smith for having saved it and for forwarding it on to me.

Originally, the three ".asm" files had the suffix ".src", but netscape would refuse to recognize the files as text, and insisted it was type "x-wais-source", making viewing it more difficult.

I have not attempted to build any of these programs.

Catweasel / Virtual Helios Disk Programs (link)

The Helios disk system used a very unusual disk format including

There are no standard disk controllers that could possibly understand this disk format. Fortunately, there is the Catweasel card. The catweasel paradoxically doesn't understand anything about disk formats. It simply records the bit pattern on entire disk track that custom software can extract and analyze in any way appropriate to decode the disk contents.

And that is exactly what the following software, called HELIOS.EXE, does. It consists of a few pieces bundled into one program:

At each step, the intermediate format can be read or written to disk. For instance, a disk image can be saved from a real disk to a .RAW file. These files are large, but they have the advantage that even disk errors are preserved, and it handles CP/M as well as PTDOS formatted disks.

The tracks can be decoded into bytes and saved and read as a much more compact .BYT file. This handles CP/M and PTDOS as well, but any information about bad bytes (or the chance to correct those errors through more sophisticated decoding) is lost. .BYT files are ASCII text files, so they are easy to study.

Finally, if the disk image is a PTDOS format, the disk can be saved as a .SVH (Solace Virtual Helios) file. This file format is suitable for use with Solace, the Sol emulator (as of 8/21/04, Solace isn't ready to read this format yet). .SVH files are binary files and are about 1/3 the size of the same .BYT file. HELIOS.EXE can read PTDOS disks (physical or virtual) and check them for file errors, list the disk directory and file information, and can extract files into binary or Intel HEX format files.

HELIOS.EXE is a Win32 program that runs under Windows 98 and up, but due to O/S protection mechanisms, using the program to drive a Catweasel card requires using Windows 98. If anybody knows a good way to "punch holes" in Win XP's security to allow a program to perform I/O to a specified address, please let me know. The source code is set up to use djgpp.

HELIOS.EXE accepts a few different command line forms to perform the following functions:

helios command summary:
    Print directory of files matching optional spec:
        helios <src> [<spec>]
    Extract specific files matching optional spec:
        helios <src> [<spec>] -{x|xh|xi}
    Use -x to extract as binary, -xh as intel hex; use -xi for program images
    Check integrity of files matching optional spec:
        helios <src> [<spec>] -c
    Convert <scr> to one or more disk image files:
        helios <src> [-r foo.raw] [-b foo.byt] [-v foo.svh] [-l "label"]
    <src> is one of:
        /n           -- disk drive n (0-3) on the attached catweasel card
        filename.raw -- unprocessed dump of bit transition timings, by track
        filename.byt -- header and data bytes FM decoded by track and sector
        filename.svh -- Solace virtual disk image
    <spec> is an optional filename wildcard pattern:
        ? matches any single character
        * matches any sequence of characters
        all other characters match just one literal character
Notes:
    A .raw file can only be produced from a real disk.
    Use multiple "-l"s for multiline labels with -r, -b, -v.
    Beware that the shell might expand the wildcard; put it in quotes.

One very confusing point is that PTDOS stored executables in a file as a list of data segments, with each data segment starting with four header bytes indicating the segment start address and segment size. This allowed a program to load to non-contiguous addresses. The effect on the HELIOS.EXE file extraction is that you must know if a file is an executable or not in order to extract it since the segment header information must be taken into account.

Source and executables, along with one .raw file for target practice is in this 2.5 MB file.