Subject: Sol-20 Programs and Source
From: <Saved by Microsoft Internet Explorer 5>
Date: Sun, 27 Jun 2004 20:27:09 -0400

Sol-20 Program Binaries and Source

Some of what is presented is just binaries, sometimes
reconstructed source code, and sometimes the actual, official source.
Things are broken down into a few categories:

Processor Tech
software

other
standalone programs

BASIC/5
programs

Extended
Cassette BASIC (ECB) programs

CP/M
programs

PTDOS

programs
relating to Northstar disk subsystems

the Sol
Personality Module page has personality module source and binaries

miscellaneous

By "standalone" 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.  Obviously, since all of the
programs load somewhere other than the scratch RAM space at $C800, they
require some memory in the system other than the stock 2KB.

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 Tech 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

Binary

Source

Brief description

Docs

Screen

Contributor

als8.ent

no source

P.T. 8080 program development system

als8.pdf

cheatsheet

als8-errors

notes

als8

Paul Schaper

basic5.ent

basic5_48K.ent

no source

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

no source

P.T. 8080 Chess Cassette; P/N 727152

chess.pdf

notes

Appendix
4

chess

Paul Schaper

dbg8.ent

no source

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

no source

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

no source

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

no source

P.T. 8080 Cassette Focal(tm); P/N 727027

focal.pdf

notes

focal

Paul Schaper

gauss.ent

pi.ent

speed.ent

no source

three focal programs:

solve a specific system of equations

compute pi to N digits

timing loops to benchmark primitive speed

Paul Schaper

pilot.ent

no source

P.T. 8080 PILOT 2.2 (MOD 000)

pilot-img.pdf

pilot

Ralph Hopkins

trk80.ent

no source

P.T. TREK80; Sol-specific version of the famous star trek game

trek80.pdf

trk80

Tim Shoppa

Gamepac1:

life.ent

no source

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_am.wav
(315 KB)

targ_am.mp3 (87
KB)

targ

zing.ent

a multi-ball pong-like game; requires external input device

zing

gamepac1.zip

a zip file containing all four programs

Gamepac2:

hang.ent

no source

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:

music.ent

no
source

by Software Technology Corp, a division of
Processor Technology

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:

d-minor.wav (1
MB)

d-minor.mp3
(196 KB)

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 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.

Other standalone programs

Binary

Source

Brief description

Docs

Screen

Contributor

Space Games: (from Creative Computing)

aster.ent

no source

asteroids; not to be confused with arcade game

spacegames.pdf

notes

aster

Bob Stek

n/a

lunar.bas

lunar lander; Extended BASIC

lunar

n/a

strwr.bas

star wars; Extended BASIC

strwr

n/a

romln.bas

romulan; Extended BASIC

romln

space.zip

a .zip file containing the above programs

Strategy Games 2: (from Creative Computing)

trap.ent

no source

person-against-person "growing snake" game

strategygames2.pdf

notes

trap

Bob Stek

n/a

wmpus.bas

Hunt the Wumpus
Extended BASIC

wmpus

n/a

wmps2.bas

Hunt the Wumpus II
Extended BASIC

wmps2

n/a

race.bas

race your car around one of three courses
Extended BASIC

race

n/a

kngdm.bas

a version of Hamurabi.  incomplete -- corrupted file
Extended
BASIC

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

deathmaze_instr.ent

no source

instructions for the deathmaze game

deathmaze_instr

Ray White

deathmaze_play.ent

no source

dungeons & dragons game

deathmaze_play

feudal.ent

no source

run a simulated kingdom (hammurabi-like)

feudal

gobble.ent

no source

race the clock to pick up as many pieces as you can

gobble

pacman.ent

no source

pacman "clone"

pacman

reversi.ent

no source

play reversi against the computer

reversi

robot_instr.ent

no source

instructions for the robot game

robot_instr

robot_play.ent

no source

write robot programs then pit them against each other

robot_play

skullcave.ent

no source

adventure game

skullcave

stomp.ent

no source

try to swat the flies

stomp

tic_tac_toe.ent

no source

play tic-tac-toe against the computer

tic_tac_toe

raywhite.zip

a zip file containing all of the above programs

atc.ent

no source

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

no source

checkers

chkr2

Bob Stek

dds.ent

no source

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

no source

minefield game; payware

notes

minefield

Paul Schaper

modpg.ent

no source

patch; converts cassette PT BASIC into CP/M BASIC

Bob Stek

msbasic.ent

no source

Microsoft BASIC

msbasic

Bob Stek

pencl.ent

no source

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

proteus7.zip

Proteus was a user group of the Procesor Tech/Sol community.
They also published a monthly/semimonthly/quarterly newsletter, and some
collections of programs on tape and disk.  This is cassette #7 from
that collection.

proteus_c7.pdf

other
tapes

Bob Stek

quebbeman.zip

collection of source and binaries from Doug Quebbeman
(uncategorized)

notes

Doug Quebbeman

raiders.ent

no source

Space Invaders clone, by Steve Maguire

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

tinytrek.ent

This binary contains both the tiny basic program and the following
BASIC program for playing a version of StarTrek.

startrek.asc
This
zip file contains this and more:

tinytrek.zip

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

CP/M software

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.

PTDOS software

This really should be its own page, but until I have more, I'm
dumping it here.

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 yet.

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 you 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.

Miscellaneous software

This section contains programs that don't really fit anywhere
else.  Being lazy, I just bundled them up as ZIP files, although I did
try and sort through and comment on what each file does.  All of them
were contributed by Ralph Hopkins.

Program Source

Comments

Brief Description

als_pgms.zip

als_pgms.txt

A collection of assembly sources in ALS format

asm_pgms.zip

asm_pgms.txt

A collection of assembly sources in CP/M ASM format

com-ent.zip

com-ent_dir.txt

com-ent_notes.txt

A collection of mostly CP/M programs in binary ENT format

lib_pgms.zip

lib_pgms.txt

A collection if assembly language library
routines

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.

Back to A Sol-20 Web
Page

Last time I remembered to update this field: Nov-08-2003