Sol20.org – Programs and Source

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:

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.

  1. Grab the *.ent file you are interested from one of the tables below.
  2. Connect a serial cable from your PC to your Sol
  3. 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.
  4. Test that the link works. Use the TERM command to do so.
  5. 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.
  6. On the PC, transfer the *.ent file over the serial link as a straight ASCII file.
  7. 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.

Processor Tech Software
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:
  • solve a specific system of equations
  • compute pi to N digits
  • timing loops to benchmark primitive speed
    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
Gamepac1
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  
Gamepac2
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  
Music, by Software Technology Corp., a division of Processor Technology
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
Other
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.

PROTEUS Cassette Collections
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).

CP/M Programs
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

Northstar Disk Related Programs
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.

Space Games (from Creative Computing)
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  
Strategy Games 2 (from Creative Computing)
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  
Various games written by Ray White
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  
Standalone software of various origins
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.