From: Subject: Sol-20 Program Notes Date: Sun, 27 Jun 2004 20:31:57 -0400 MIME-Version: 1.0 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.thebattles.net/sol20/solpgm_notes.html X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1409 Sol-20 Program Notes


Sol-20 Program Notes=20

Here is a collection of notes I've made about the various = programs=20 that appear on the Program Binaries = and=20 Source page.  This is intended to give a more full = description of=20 each program than can fit in the tables, including what the program = does,=20 where it came from, and general thoughts.=20


als8

This program is courtesy of Paul Schaper.  His comments = follow:=20
I used the program quit a bit until I got the Northstar = disks.  The disk prom was right in the middle of ALS8 and I = never tried=20 hard enough to remedy the conflict.  The remedy I do have if I = really=20 need to run it is that I wrote a virtual Sol program allowing me to = run a=20 program from anywhere in memory, but it was too slow to be=20 practical.
ALS-8 is an editor/assembler developed by = Processor=20 Technology.  My understanding is that there were two = versions.  One=20 version was loaded from tape, the other version existed on ROMs that = came on=20 an S-100 card that plugged into your backplane.

atc

This program is courtesy of Paul Schaper.  His comments = follow:=20
This is the best game I ever found for the Sol.  = In=20 fact, it is the only reason I ever kept the machine this long.  = I have=20 two versions of the game.  One looks like a prerelease = version. =20 It has five shortcomings that make it less desirable than the final=20 version:=20

1) The grid is made up of plusses (+) instead of dots = (.).  It=20 makes it harder to find the airplanes on the screen.=20

2) When you inquire on an airplane, you have to type a = question mark=20 after the airplane letter.  This doubles the keystrokes to = inquire.=20

3) Inquiry does not let you know which direction the plane is=20 traveling.   You have to watch it for at least two moves = to=20 tell.=20

4) It does not warn you when an airplane is about to enter the = airspace.  It just surprises you.=20

5) It does not warn you when an airplane wishes to take off = from an=20 airport.  You have to inquire of each airplane, keep track of = those=20 that wish to leave from an airport, and every so often, when the = airlane is=20 clear, ask them to take off.  They will either do so or say = they can't=20 yet.=20

I do have the docs for this game - a photo copy I = believe.  And,=20 because I do not have an original tape, I am not sure if I have the = right=20 program length.


basic5

This is a 5K BASIC from Processor Technology.  It comes = courtesy of Paul Schaper.  His comments follow:=20
This tape is labeled:=20

Processor Technology Corporation; BASIC/5=20

It contains:=20

BASIC B 0000 19B9
MTCHS B 1AD9 034D =
LUNAR B 1AD9=20 0953
BASIC B 0000 19B6
MTCHS B 1AD9 034D=20
LUNAR B 1AD9 0953=20

This is the second (of three) basic interpretors PT = produced.  It=20 is basically the first with fixes.  It is fast and the math = wasn't=20 bad.  The main flaw was that it did not support string = variables but it=20 did allow system calls to machine code, with argument passing, that = did=20 allow some games to become really spiffy.=20


basic5 programs

Later Paul contributed a couple other BASIC/5 programs, and=20 figured out a way to allow loading the tokenized BASIC image directly = into=20 memory via Solace's "File/Load Program..." menu selection.  = Normally,=20 this doesn't work because besides loading the program image, BASIC = must also=20 twiddle a couple locations that depend on the actual program = loaded. =20 Paul simply found those locations in memory and diddled the .ENT file = to set=20 those locations as appropriate.  This hack wouldn't work on a = cassette,=20 but works just fine with Solace.  Here are Paul's comments:=20
Attached is a zip with four Basic5 programs.  = Lunar and=20 Mtchs are the same from Processor Tech.  I modified the = beginning so=20 that you can load and run them.  In Solace, load and run = Basic5. =20 Then load Lunar within Basic5 and run it.  The first line in = the .ent=20 file  (1AD3: FF 3F) causes Basic5 to increase its memory usage = from 8K=20 to 16K.  It is as if you typed in the command SET = M=3D16384.  The=20 second line (1AD7: 2B 24) tells Basic5 where the end of the program=20 is.  One nice thing about this way of doing it, you can go from = game to=20 game and not have to leave Basic5.  Just make sure that Basic5 = has=20 stopped interpreting the basic program.=20

I have also added BOMBR.ENT and BOMB.ENT.  Bombr is one = of those=20 101 programs.  I included it because I use Basic5's ability to = call a=20 machine language routine to poll the keyboard.  The routine is = near the=20 beginning of the program hidden in a REM statement.  Because of = this,=20 the beginning of the program is not editable and the whole program = is not=20 relocatable (can't move it from 1AD9 to say 2D00).=20

The second program, Bomb, I saw on a PET computer and got it = to=20 work.  It uses several machine language=20 routines.


beastie

This is from CPMUG volume 015.=20

A little graphics character performs a random walk, leaving "." as = a=20 trail.  Not too entertaining for very long.


chase

This is from volume 015 of CPMUG.  Vol 029 has an = evolution=20 of this version which uses CP/M I/O services.=20

I tweaked it a bit to use the SOL VDM I/O port address.=20

This is a classic, fun little game.  You are stuck in a room = which has=20 electrified walls and electrified obstacles filling the room.  = Making it=20 worse, the room has a number of zombie robots that attempt to catch = you. =20 It isn't real-time.  For every step you take, they take one = step. =20 The goal is to evade them without walking into any electrified = obstacles while=20 at the same time trying to lead them to walk into the obstacles.  = (the=20 robot chase algorithm is simple: take the most direct path).=20

From the source code:
      THE = GAME OF=20 CHASE =
          --=20 FROM DR. DOBBS JOURN=20 =
           =       =20 MAY 1977 =
          --=20 MODIFIED FOR SOL


chess

This program comes courtesy of Paul Schaper.  His = comments=20 follow:=20
This tape is labeled:=20

Processor Technology; 8080 Chess Cassette; P/N 727152=20

It contains:=20

CHESS    0000 16F9=20
END      CC00 0000=20

A middle of the road chess program at the time.  Good for = their=20 first effort.   It out performed all the other chess = programs I=20 had for the Sol (I never got any of the CP/M ones) but Zargon ran = circles=20 around PTs chess.  It always made a move on level 3 but if it = was=20 raised to level 4 and the board became complicated, it would get = stuck in an=20 infinite loop (the stack would wrap around=20 itself).


dbg8, dbg16, dbg32, dbg48, dbg64

These programs come courtesy of Paul Schaper.  His = comments=20 follow:=20
This is the last tape I have.  It is labeled:=20

Processor Technology; DEBUG, Advanced 8080 Debugger; P/N = 727132=20

It contains:=20

DBG8    0E00 11D4
DBG16   = 2E00=20 11D4
DBG32   6E00 11D4 =
DBG48  =20 AE00 11D4
DBG64   EE00 11D4=20
END     CC00 0000=20

I never used it because I don't think I had the docs and I = never had a=20 problem sticky enough to need it.  One of the versions on the = tape was=20 never able to load but I was able to create it by comparing the = differences=20 between two others and making the necessary changes to create the = bad=20 one.


deflect

This is from CPMUG volume 029.  Quoting the CPMUG docs: =
DEFLECT.ASM ANOTHER VDM GAME. THIS ONE INVOLVES
MORE=20 COORDINATION THAN PIRANHA, BUT
IS MORE SIMPLE-MINDED IN ITS=20 PLOT.
The source code says:=20
"THE GAME OF DEFLECTION BY ANDREW A. RECUPERO
FROM = KILOBAUD=20 FEB '78 #14"
I had to tweak the I/O ports to work for = the SOL.=20

Directions are in the source code.


edit, unpac, pack

These programs come courtesy of Paul Schaper.  His = comments=20 follow:=20
This tape is labeled:=20

Processor Technology; EDIT, Advanced 8080 Editor; P/N = 727142=20

It contains:=20

EDIT     0000 1A44=20
UNPAC    0000 03E0=20
PACK     0000 0364=20
END      CC00 0000=20

I never used these programs because I never saw the docs and I = had=20 other
programs to do the = work.


extbasic

This program comes courtesy of Paul Schaper.  His = comments=20 follow:=20
This tape is labeled:=20

Processor Technology; Extended Cassette BASIC; P/N 727019=20

It contains:=20

BASIC B 0000 3F85
END   ? FFFF 0001=20
BASIC B 0000 3F85
END   ? FFFF 0001=20

I rarely used this program because it was too big to use with = my tape=20 player,
it required me to relocate my Northstar Dos to a = place I=20 didn't want it, it
was slow, and the math package wasn't = that=20 strong.

I present two versions of the program, = which are=20 identically long:=20
extbasic.ent=20
extbasic_patched.ent
extbasic.ent is = the=20 pristine original source.  It has a bug where:=20
10 FOR I=3D1 TO 0
20 FOR K=3D1 TO 0 =
30=20 PRINT "impossible"
40 NEXT K
50 NEXT=20 I
will cause a CS (control stack) error.  P.T. = put out=20 an errata sheet with a small patch to fix this bug.  That has = been=20 applied and is in the file extbasic_patched.ent.  This indeed = fixes this=20 problem.  However, when running "ROMLN.BAS" (which uses = a lot of=20 "NEXT 100" type statements and fiddles with the control = index), we=20 get a CS error with the patched version but not the original=20 version.

focal

This program comes courtesy of Paul Schaper.  His = comments=20 follow:=20
This tape is labeled:=20

Processor Technology; 8080 Cassette Focal(tm); P/N 727027=20

It contains:=20

FOCAL    0000 1C93=20
END      CC00 0000=20

I wrote three programs in this language to gauge its = ability.  It=20 used binary math rather than BCD (binary coded decimal) so the math = errors=20 and lack of capability made it unuseful.

To = drive this=20 last point home, Paul gives the example:=20
*T 23+31 =
 54.0001
Now=20 that's really bad!

galaxy

This game was reconstructed from the source listing in = Processor=20 Tech Access newsletter, Volume 1, Number 4.  It is a logic = puzzle=20 where you try to "shoot stars" (flip bits) to change the starting = pattern to=20 the goal pattern.  The instructions are given when the game is=20 played.  Looking at the source might also provide some = clues.

mine

This game is courtesy of Paul Schaper.  His comments = follow:=20
This tape is not from PT.  I bought it from a = catalog I=20 found.  I may still have the catalog.  The tape is simply=20 labeled:=20
MINEFIELD
It contains:=20

MINE  G 0000 1495
MINE  G 0000 1495=20
NOMOR ? FFFF 0001
MINE  G 0000 1495=20

It is a game.  Try to get from one end to the other of a = mine=20 field.

When you run the game, the opening screen = supplies=20 directions.

music

This program and associated "score" files come courtesy of = Paul=20 Schaper.  His comments follow:=20
This tape is labeled:=20

MUSIC SYSTEM=20

It appears to by produced by Software Technology Corp, a = division=20 of
Processor Technology Corp.  It contains:=20

MUSIC M 0000 082E
PRELD M 08D3 09AE =
ALLEG M 08D3=20 02D2
SARAB M 08D3 059F
AIR   M 08D3 = 0CF7=20
CHORL M 08D3 08B4
END   ? 0000 0001=20

This is the music program that caused the disappearance of = CPMUG disk=20 39.  It toggles the interrupt enable line on the CPU on and off = at a=20 fast rate.  The Sol did not use this line.  I tried to get = it to=20 run of a Northstar (Z80) but the hardware was too different.  = Three=20 voice harmony.  The price was right considering any other = method of=20 making music cost over $100 per voice.

Until = Solace has=20 support for emulating the filtered interrupt enable output and = producing=20 sound, there isn't a whole lot of point in running this = software. =20 Someday...

piranha

This is from CPMUG volume 029.  Quoting the CPMUG docs: =
PIRANHA.ASM A SUPER VDM GAME FROM INTERFACE AGE.=20
JUST CHECK THE I/O ROUTINES, ASSEMBLE,
AND HAVE = FUN=20 DODGING THE HUNGRY FISH.
I had to tweak some of the = port=20 address info for the SOL.=20

A charming little game.  Little asterisk piranhas swim around = and if=20 they run into you, you die.  The longer you live, the higher your = score.  You can even redefine the key mappings.  The fish = have=20 different behaviors: sometimes swarming, sometimes just swimming = past.  I=20 don't have all the controls figure out.=20

By default, ESC sets up key mapping=20

  • CTRL-A goes back to the monitor=20
  • Use the keypad for directions:=20
  • 8 is up, 4 is left, 6 is right, 2 is down=20
  • 7 is UL, 9 is UR, 1 is DL, 3 is DR=20
  • 5 is stop moving=20
  • . is pause the play=20
  • 0 is AUTO, although I don't know what this does =
If=20 you hit a key twice, it goes that way quickly.=20

There is also a PHASE counter at the bottom, but I'm not sure how = that=20 works either.


raiders

This is a clone of Space Invaders, written by Steve = Maguire. =20 Steve is the same incredibly generous guy who gave me two Sol systems = and a=20 bunch of software.  He is also the author of a some pretty widely = read=20 books on programming and project management, including Writing=20 Solid Code and Debugging=20 the Development Process.

robot

This is from CPMUG volume 029.  Quoting the CPMUG docs: =
ROBOT.ASM LET YOUR VDM MOONMAN BUMP AROUND THE=20
BOUNDARIES OF THE SCREEN.
Source code = comments say=20 "FROM BYTE, APRIL 1978".  It is a somewhat pointless = program.  A=20 little man does a random walk around the screen.=20

I had to tweak the I/O ports for the VDM and keyboard.  Typing = CTRL-C=20 reboots the computer.


targ

This is the program that made the Sol famous.  It is = quite=20 impressive that such a good game can be made from ASCII = graphics. =20 Although the "spash screen" doesn't pop up the following message, a = binary=20 dump of the program reveals the following revision notice:=20
TARGET
COPYRIGHT 1977 =
BY=20
PROCESSOR TECHNOLOGY CORPORATION
VERSION=20 2.4   JANUARY 7, 1977   S.=20 DOMPIER
This game was also ported to run = on the=20 TRS-80, which also happens to have a 64x16 memory mapped = display.

target

This is from volume 015 of CPMUG.  Volume 029 of CPMUG=20 contains an evolution of this program that uses CP/M services for I/O. =

There are no source code credits, but the CPMUG directory listing = gives=20 credit to "GEORGE W. ROMPOT".=20

This is not the same thing as the more famous target game that went = by the=20 name "TARG".  In this game, your player is in a fixed location on = the=20 left side of the screen and you attempt to shoot a bouncing object on = the=20 right side of the screen.  It is quite inane.


train

It is a screen saver, of sorts.  An ascii graphic train = chuffs across the screen.  For the full effect, the dipswitch = under the=20 keyboard set to display the right set of chars.=20

I have three versions of this program, but present only one.  = If you=20 think you might want one of the others, let me know and I can send it = along.=20

The version I present is the source as scanned from the Processor = Tech=20 Access newsletter, Vol 1, Number 4.  There was also a = version=20 presented in Vol 1, Number 1, but it couldn't run on the Sol; it was = written=20 for some other S-100 system using the VDM-1.  I also have a = version of=20 this from volume 001 of CPMUG, but the source listing appears to be a=20 reconstruction of the source by someone who typed it in from the = Access=20 newsletter, but didn't want to type in all the comments.=20

The Access newsletter says the author is "Newett Awl," but = I'm not=20 sure this isn't actually a pun, you know, like "know it = all."


winzi

This program was reconstructed from the listing appearing in = P.T.=20 Access newsletter, Volume 1, Number 4.  It is a tiny = program that=20 contains four very terse "games."  One neat feature is that these = all run=20 entirely from the SRAM on the Sol motherboard, so that a bare system = without=20 any memory expansion can still play the games.=20

The four games are Chase, Hic, Opps, and Life.  See the = newsletter for=20 more details on the program.  Don't forget to "SET S=3D80" from = the monitor=20 before playing the game, otherwise the game speed is way to=20 fast.


Back to A Sol-20 = Web=20 Page=20

Last time I remembered to update this field: Nov-09-2003
 =20