There is a lot of stuff here. There is enough that it needs organization, yet how to organize it: by function, contributor, alphabetically, language? Some of what is presented is just binaries, sometimes reconstructed source code, and sometimes the actual, official source. Things on this page are broken down into these categories:
- Processor Tech software
- PROTEUS Cassette Software
- CP/M programs
- Northstar disk subsystem
- other standalone programs
- miscellaneous collections
- utility programs
Use the navigation menu to get to other program groups.
By "other standalone programs" I mean that they don't use CP/M services, and can just be entered from the monitor and run. In the tables below, the "Addr" column says where the program loads.
If you want to try and download these programs to your Sol, here's how to do it.
- Grab the *.ent file you are interested from one of the tables below.
- Connect a serial cable from your PC to your Sol
- Set the baud rate, data bits, parity bits, and stop bits the same on the two machines. I have difficulty getting my Sol to transfer reliably if the baud rate is higher than 1200. YMMV.
- Test that the link works. Use the TERM command to do so.
- On the Sol, type "SET I=1". This makes it accept subsequent input from the serial port, as if you were entering it from the keyboard.
- On the PC, transfer the *.ent file over the serial link as a straight ASCII file.
- To run the program, type "EX xxxx", where xxxx is the load address, and off she goes!
If you have a better way of doing it, let me know!
Processor Technology software
Most of this software comes courtesy of Paul Schaper and Bob Stek, who were kind enough to archive this information for posterity.
| Program | Brief description | Docs | Screen | Contributor |
|---|---|---|---|---|
| als8.ent | P.T. 8080 program development system | als8.pdf cheatsheet als8-errors notes |
als8 | Paul Schaper |
| basic5.ent basic5_48K.ent |
P.T. Basic/5 -- a simple BASIC The released version assumes system has 8KB of RAM. Use "SET M=xxxxx" to change this. basic5_48K.ent has been patched to assume a 48KB system |
basic5.pdf notes |
basic5 | Paul Schaper |
| chess.ent | P.T. 8080 Chess Cassette; P/N 727152 | chess.pdf notes Appendix 4 |
chess | Paul Schaper |
| dbg8.ent | P.T. DEBUG, Advanced 8080 Debugger; P/N 727132 (different versions for different sized memory systems) |
debug.pdf notes |
debug | Paul Schaper |
| dbg16.ent | ||||
| dbg32.ent | ||||
| dbg48.ent | ||||
| dbg64.ent | ||||
| debug.zip | a zip file containing all the above files | |||
| edit.ent | P.T. EDIT, Advanced 8080 Editor; P/N 727142 | edit-img.pdf notes |
edit | Paul Schaper |
| unpac.ent | ||||
| pack.ent | ||||
| extbasic.ent extbasic_patched.ent |
P.T. Extended Cassette BASIC; P/N 727019 See the notes to the right as to why there are two versions of the program here |
extbasic.pdf notes |
extbasic | Paul Schaper |
| focal.ent | P.T. 8080 Cassette Focal(tm); P/N 727027 | focal.pdf notes |
focal | Paul Schaper |
three focal programs:
|
Paul Schaper | |||
| pilot.ent | P.T. 8080 PILOT 2.2 (MOD 000) | pilot-img.pdf | pilot | Ralph Hopkins |
| pilot.ent pilot.zip |
The version of PILOT here has the same label as the above version, but isn't binary equavalent. The zip file contains the other programs that came on the cassette too. | tape contents | pilot | |
| trk80.ent | P.T. TREK80; Sol-specific version of the famous star trek game | trek80.pdf | trk80 | Tim Shoppa |
| Program | Brief description | Docs | Screen | Contributor |
|---|---|---|---|---|
| life.ent | conway's life | gamepac1.pdf | life | Bob Stek Tim Shoppa |
| ptrn.ent | simple kaleidoscope | ptrn | ||
| targ.ent | the famous target game -- shoot down ASCII spaceships. by placing an
AM radio near the computer and playing with the tuner, you can get sound
effects with the game. presented is a 14 second selection of the
resulting racket:
|
targ | ||
| zing.ent | a multi-ball pong-like game; requires external input device | zing | ||
| gamepac1.zip | a zip file containing all four programs |
| Program | Brief description | Docs | Screen | Contributor |
|---|---|---|---|---|
| hang.ent | hangman -- in speedy assembly language | gamepac2.pdf | hang | Bob Stek |
| qubic.ent | play 3D tic-tac-toe against the computer | qubic | ||
| gamepac2.zip | a zip file containing both programs |
| Program | Brief description | Docs | Screen | Contributor |
|---|---|---|---|---|
| music.ent | This is the music program that caused the disappearance of CPMUG disk 39.
It toggles the interrupt enable line on the CPU on and off at a fast rate; after a low pass filter, three part harmony was generated. This worked because the Sol did not use the interrupt line. The price was right considering any other method of making music cost over $100 per voice. Here is a 24 second clip of a JS Bach fugue:
|
music.pdf notes |
music | Paul Schaper |
| Scores: | ||||
| air.ent air.asc |
||||
| alleg.ent alleg.asc |
||||
| boure.ent boure.asc |
||||
| chorl.ent chorl.asc |
||||
| preld.ent preld.asc |
||||
| sarab.ent sarab.asc |
||||
| music.zip | a zip file containing all the above files | |||
| sol-music.zip | a zip file containing 26 other scores |
| Program | Brief description | Docs | Screen | Contributor |
|---|---|---|---|---|
| io_printer_sw.zip | ProcessorTechnology Sol Printer I/O Software P/N 727056, Rev. A |
tape contents |
PROTEUS Cassette Software
PROTEUS was a user's group for Sol computers and published a newsletter for a number of years. They also solicited contributions of programs, which they would periodically bundle up and sell on cassette tape. Here are some of those collections. Below the zip file contains the binary .ENT version of each of the programs, an ASCII version of text programs, and a Solace Virtual Tape (.svt) tape image. You can also read a summary of all the PROTEUS bundles.
| Collection | ZIP file | Contents | Description |
|---|---|---|---|
| PROTEUS C1 | proteus_1.zip | tape contents | ECB Programs |
| PROTEUS C2 | proteus_2.zip | tape contents | ECB Programs |
| PROTEUS C3 | proteus_3.zip | tape contents | ECB Programs |
| PROTEUS C7 | proteus_7.zip | tape contents | Assembly source and object proteus_c7.pdf (courtesy Bob Stek) |
| PROTEUS C8 | proteus_8.zip | tape contents | ECB Programs |
If you have any of the other collections hidding in a shoebox in your basement and want to help preserve the bits, please contact me.
CP/M programs
These programs use the CP/M system in some manner or other. There are no end of interesting CP/M programs that could be run on the Sol; my intention here is to capture those that have some Sol-specific feature (most likely, it has bypassed CP/M I/O for direct VDM manipulation).
| Binary | Source | Docs |
|---|---|---|
| basic-5.ent | basic-5.asm | basic-5.txt |
| life8.ent | life8.asm | life8.txt |
| pong.ent | pong.asm | tennis, anyone? |
If you want to grab any of these programs, follow the procedure as for standalone programs, then boot CP/M. Be careful not to run any transient programs. When you get the CP/M command prompt, use the SAVE command to save the transient area to a .COM file for later use. That's it.
Another way that would conceivably work would be to have the program in the form of an Intel HEX file. Boot CP/M and do a "PIP a:foo.hex=RDR:[H]" from CP/M. RDR: might not be the right device; use whatever your serial port is mapped to. the "[H]" option tells PIP that it is an intel hex format, so PIP can do stronger error checking. After you get the HEX file, you can use the CP/M LOAD command to convert the .HEX file to a .COM file. Well, that's in theory. I found that when I transferred large programs, the Sol would have to save a block to disk on occasion and the serial line would drop characters. I don't (yet) know enough about the serial interface chip on the Sol to know if it supports hardware flow control, which would prevent this exact problem. If you can get this to work on your machine, or know why it doesn't work on mine, let me know.
Northstar software
| Source | Docs |
|---|---|
| nsboot.asm | Disassembled and commented boot PROM program |
| dboot.asm | Disassembled boot sector |
| cbios.asm | Disassembled CP/M custom bios (updated 12-22-01) |
| cpmug.zip | a collection of sources and binaries taken from the CPMUG (CP/M Users' Group) archives |
The first program, nsboot.asm, is a disassembly of the 256B boot PROM located on the disk controller card. There is some relocation trickery involved in the process. Although most of it makes sense, there are a few things that I am unsure of in the program. If you know what is going on there, or even have just some guesses, let me know. The boot PROM reads sector 4 of track 0 off the disk and jumps to that code. The boot PROM knows nothing of CP/M -- in fact, this boot PROM will load a northstar OS just fine too. There is nothing in the boot prom that is Sol-specific either.
The second program, dboot.asm, is the disassembled and commented boot sector --- sector 4, track 0. This is 512B long and has some other black magic and vestigial code. If qou have any insight into it, let me know. It loads sectors 5-9 from track 0 and sectors 0-9 of track 1 into memory, performs a relocation patch if required, and then jumps into the code.
The third program, cbios.asm, is a disassembled and commented CBIOS. It assembles and produces a binary exactly like that captured from memory after loading CP/M, but it hasn't actually been used to "close the loop" and build a new system. There is some cruft in there to ensure the output is identical to the reference image, when in reality many uninitialized data sections are don't-cares. Ideally when this is all done, it will be possible to customize things a bit, such as adding better disk error reporting.
cpmug.zip is a number of sources and binaries taken from the CP/M Users' Group archives. Although there are many very useful programs in the archive, this subset is just those that are relevent to the Sol or to machines that used the VDM display. Some of the sources had to be modified a bit to work on the Sol. These programs also appear on a virtual disk image that is distributed with the emulator, Solace.
Other standalone software
Here are some programs and oftentimes the source code for some Sol programs, gleaned from various places, mostly the CPMUG collections located here and there on the net. If anybody has authorship attributions for any of these programs, let me know.
| Program | Brief description | Docs | Screen | Contributor |
|---|---|---|---|---|
| aster.ent | asteroids; not to be confused with arcade game | spacegames.pdf
notes |
aster | Bob Stek |
| lunar.ecb | lunar lander | lunar | ||
| strwr.ecb | star wars | strwr | ||
| romln.ecb | romulan | romln | ||
| space.zip | a .zip file containing the above programs |
| Program | Brief description | Docs | Screen | Contributor |
|---|---|---|---|---|
| trap.ent | person-against-person "growing snake" game | strategygames2.pdf
notes |
trap | Bob Stek |
| wmpus.ecb | Hunt the Wumpus | wmpus | ||
| wmps2.ecb | Hunt the Wumpus II | wmps2 | ||
| race.ecb | race your car around one of three courses | race | ||
| kngdm.ecb | a version of Hamurabi | |||
| strategy.zip | a zip file containing all the above programs, including all of the BASIC programs as a .SVT file |
| Program | Brief description | Screen | Contributor |
|---|---|---|---|
| deathmaze_instr.ent | instructions for the deathmaze game | deathmaze_instr | Ray White |
| deathmaze_play.ent | dungeons & dragons game | deathmaze_play | |
| feudal.ent | run a simulated kingdom (hammurabi-like) | feudal | |
| gobble.ent | race the clock to pick up as many pieces as you can | gobble | |
| pacman.ent | pacman "clone" | pacman | |
| reversi.ent | play reversi against the computer | reversi | |
| robot_instr.ent | instructions for the robot game | robot_instr | |
| robot_play.ent | write robot programs then pit them against each other | robot_play | |
| skullcave.ent | adventure game | skullcave | |
| stomp.ent | try to swat the flies | stomp | |
| tic_tac_toe.ent | play tic-tac-toe against the computer | tic_tac_toe | |
| raywhite.zip | a zip file containing all of the above programs |
| Program | Brief description | Docs | Screen | Contributor |
|---|---|---|---|---|
| atc.ent | P.T. air traffic controller game
(Creative Computing Software) |
atc.pdf
notes |
atc | Paul Schaper |
| beastie.ent beastie.asm |
random walk (noninteractive) | notes | beastie | |
| chase.ent chase.asm |
evade robots before they grab you | notes | chase | |
| chkr2.ent | checkers | chkr2 | Bob Stek | |
| dds.ent | dynamic debugging system (dunno what it is) | dds.pdf | Bob Stek | |
| deflect.ent deflect.asm |
reaction type game | notes | deflect | |
| galaxy.ent galaxy.asm |
logic game from Access Vol 1, #4 | notes | galaxy | |
| minefield.ent | minefield game; payware | notes | minefield | Paul Schaper |
| modpg.ent | patch; converts cassette PT BASIC into CP/M BASIC | Bob Stek | ||
| msbasic.ent | Microsoft BASIC | msbasic | Bob Stek | |
| pencl.ent | electric pencil word procesor | pencil.pdf | pencl | Bob Stek |
| piranha.ent piranha.asm |
use the keypad to evade swarming piranhas
(proteus7.zip has a different binary, same game) |
notes | piranha | |
| raiders.ent raiders.zip |
Space Invaders clone, by Steve Maguire. The source code is worth looking at -- beautiful. | notes | raiders | Steve Maguire |
| robot.ent robot.asm |
not much of a game, barely interesting | notes | robot | |
| target.ent target.asm |
really simple game (not the famous target) | notes | target | |
| tinyc.zip | Metron TinyC system | tape contents terse document |
||
| tinytrek.ent startrek.asc tinytrek.zip |
tinytrek.ent contains both the tiny basic interpreter and the tiny basic program for playing a tiny version of Star Trek. The game itself is startrek.asc. startrek.zip contains the previous two and more. | notes | tinytrek | Joseph F. Gaffney |
| train.ent train.asm |
a screen saver, of sorts (newly restored) | notes | train | |
| winzi.ent winzi.asm |
four tiny games in one, from Access Vol 1, #4 | notes | winzi |
Miscellaneous collections
This section contains bundles of programs contributed by various people. Being lazy, I just bundled them up as ZIP files, although I did try and sort through and comment on what each file does.
| Program Source | Comments | Brief Description | Contributor |
|---|---|---|---|
| als_pgms.zip | als_pgms.txt | A collection of assembly sources in ALS format | Ralph Hopkins |
| asm_pgms.zip | asm_pgms.txt | A collection of assembly sources in CP/M ASM format | Ralph Hopkins |
| com-ent.zip | com-ent_dir.txt com-ent_notes.txt |
A collection of mostly CP/M programs in binary ENT format | Ralph Hopkins |
| lib_pgms.zip | lib_pgms.txt | A collection if assembly language library routines | Ralph Hopkins |
| quebbeman.zip | quebbeman.txt | collection of source and binaries (ed: some redundant programs removed) | Doug Quebbeman |
Useful utilities
I have written a few scripts that help me convert between different file formats. Perhaps the most useful are the following perl scripts. To use them, your machine needs to have a perl interpreter, of course. Perl has been ported to many environments, including MS Windows. I've only used these scripts on Windows, but they should work anywhere. ActiveState Perl is what you want.
- asciify.pl
accepts a .ENT file on standard in, ignores addresses, converts each data byte to a character on output. It is useful for converting source files to something an editor can chew on.
- asciient.pl
accepts a .ENT file on standard in and echos it on standard out. Each line of hex input, though, has a corresponding ascii decoding on the right side of the output. Only printable characters are output.
- basic5.pl
accepts a .ENT file on standard in, decodes the byte stream, and produces a BASIC/5 listing on output. You can tell that the binary is for BASIC/5 because the starting address is 1AD9.
- extbas.pl
accepts a .ENT file on standard in, decodes the byte stream, and produces an Extended BASIC listing on output. You can tell that the binary is for Extended BASIC because the starting address is 3C20. Besides having more keywords than BASIC/5, the token values are different for the set of keywords that overlap.