From: Subject: Sol-20 Programs and Source Date: Sun, 27 Jun 2004 20:27:09 -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/solpgms.html X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1409 Sol-20 Programs and Source

Sol-20 Program Binaries and Source

Some of what is presented is just binaries, sometimes=20 reconstructed source code, and sometimes the actual, official = source. =20 Things are broken down into a few categories:=20 By "standalone" I mean that they don't use CP/M services, = and can=20 just be entered from the monitor and run.  In the tables below, = the=20 "Addr" column says where the program loads.  Obviously, since all = of the=20 programs load somewhere other than the scratch RAM space at $C800, = they=20 require some memory in the system other than the stock 2KB.=20

If you want to try and download these programs to your Sol, here's = how to=20 do it.=20

  1. Grab the *.ent file you are interested from one of the tables = below.=20
  2. Connect a serial cable from your PC to your Sol=20
  3. Set the baud rate, data bits, parity bits, and stop bits the = same on the=20 two machines.  I have difficulty getting my Sol to transfer = reliably if=20 the baud rate is higher than 1200.  YMMV.=20
  4. Test that the link works.  Use the TERM command to do so.=20
  5. On the Sol, type "SET I=3D1".  This makes it accept = subsequent input=20 from the serial port, as if you were entering it from the keyboard.=20
  6. On the PC, transfer the *.ent file over the serial link as a = straight=20 ASCII file.=20
  7. To run the program, type "EX xxxx", where xxxx is the load = address, and=20 off she goes!
If you have a better way of doing it, let me know!=20


Processor Tech software

Most of this software comes courtesy of Paul Schaper and Bob = Stek,=20 who were kind enough to archive this information for posterity. =
 =20
Processor Tech Software
Binary Source Brief description Docs Screen Contributor
als8.ent no source P.T. 8080 program development system
als8.pdf=20
che= atsheet=20
als8-er= rors=20
notes=
als8
Paul Schaper
basic5.ent=20
basic5_48= K.ent
no source P.T. Basic/5 -- a simple BASIC
The = released=20 version assumes system has 8KB of RAM.  Use "SET M=3Dxxxxx" = to change=20 this. basic5_48K.ent has been patched to assume a 48KB = system
basic5.pdf=20
notes
basic5
Paul Schaper
chess.ent<= /TT> no source P.T. 8080 Chess Cassette; P/N 727152
chess.pdf =
notes=20
Appendix=20 4
chess
Paul Schaper
dbg8.ent<= /A> no = source P.T. DEBUG, Advanced 8080 = Debugger; P/N=20 727132
(different versions for different sized memory = systems)
debug.pdf =
notes=
debug
Paul Schaper
dbg16.en= t
dbg32.en= t
dbg48.en= t
dbg64.en= t
debug.zip<= /TT> a zip file containing all the above files
edit.ent no = source P.T. EDIT, Advanced 8080 Editor; = P/N=20 727142
edit-img.pd= f=20
notes=
edit
Paul Schaper
unpac.ent<= /TT>
pack.ent
extbasic.en= t=20
ext= basic_patched.ent
no source P.T. Extended Cassette BASIC; P/N 727019
See the notes to = the=20 right as to why there are two versions of the program here
extbasi= c.pdf=20
notes=
extbasic=
Paul Schaper
focal.ent<= /TT> no source P.T. 8080 Cassette Focal(tm); P/N 727027
focal.pdf =
notes
focal
Paul Schaper
  • gauss.ent<= /TT>=20
  • pi.ent=20
  • speed.ent<= /TT>=20
no source three focal programs:=20
  • solve a specific system of equations=20
  • compute pi to N digits=20
  • 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<= /A> no = source conway's life
gamepac1.pd= f
life
Bob Stek
Tim Shoppa
ptrn.ent<= /A> simple kaleidoscope
ptrn
targ.ent<= /A> the famous target game -- shoot down ASCII spaceships.  = by=20 placing an AM radio near the computer and playing with the = tuner, you=20 can get sound effects with the game.  presented is a 14 = second=20 selection of the resulting racket:=20
  • targ_am.wav=20 (315 KB)=20
  • targ_am.mp3 (87 = KB)
  • targ
    zing.ent<= /A> a multi-ball pong-like game; requires external input = device
    zing
    gamep= ac1.zip a zip file containing all four programs

    Gamepac2:
    hang.ent<= /A> no = source hangman -- in speedy assembly language
    gamepac2.pd= f
    hang
    Bob Stek
    qubic.en= t play 3D tic-tac-toe against the computer
    qubic
    gamep= ac2.zip a zip file containing both programs

    Music:
    music.en= t no=20 source by Software Technology Corp, a = division of=20 Processor Technology=20

    This is the music program that caused the disappearance of = CPMUG disk=20 39.=20

    It toggles the interrupt enable line on the CPU on and off at = a fast=20 rate; after a low pass filter, three part harmony was = generated. =20 This worked because the Sol did not use the interrupt = line.  The=20 price was right considering any other method of making music = cost over=20 $100 per voice.=20

    Here is a 24 second clip of a JS Bach fugue:=20

    • d-minor.wav (1=20 MB)=20
    • d-minor.mp3=20 (196 KB)
    music.pdf =
    notes
    music
    Paul Schaper
    Scores:
    air.ent air.asc
    alleg.en= t alleg.as= c
    boure.en= t boure.as= c
    chorl.en= t chorl.as= c
    preld.en= t preld.as= c
    sarab.en= t sarab.as= c
    music.zip<= /TT> 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=20 programs, gleaned from various places, mostly the CPMUG collections = located here and there on = the=20 net.  If anybody has authorship attributions for any of these = programs,=20 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
    spacegame= s.pdf=20
    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<= /A> no source person-against-person "growing snake" game
    strat= egygames2.pdf=20
    notes=
    trap
    Bob Stek
    n/a wmpus.ba= s Hunt the Wumpus
    Extended BASIC
    wmpus
    n/a wmps2.ba= s Hunt the Wumpus II
    Extended BASIC
    wmps2
    n/a race.bas<= /A> race your car around one of three courses
    Extended = BASIC
    race
    n/a kngdm.ba= s a version of Hamurabi.  incomplete -- corrupted file =
    Extended=20 BASIC
    strat= egy.zip a zip file containing all the above programs, including all of = the=20 BASIC programs as a .SVT file

    Various games written by Ray White
    dea= thmaze_instr.ent no source instructions for the deathmaze game  
    dea= thmaze_instr
    Ray White
    deat= hmaze_play.ent no source dungeons & dragons game
    deat= hmaze_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_i= nstr.ent no source instructions for the robot game
    robot_i= nstr
    robot_pl= ay.ent no source write robot programs then pit them against each other
    robot_pl= ay
    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.z= ip   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<= /CENTER>
    atc
    <= /TD>
    Paul Schaper
    beastie.ent= beastie.asm= random walk (noninteractive)
    notes<= /A>
    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<= /A>
    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.en= t 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=20 different binary, same game)
    notes<= /A>
    piranha
    prote= us7.zip   Proteus was a user group of the Procesor Tech/Sol = community. =20 They also published a monthly/semimonthly/quarterly newsletter, = and some=20 collections of programs on tape and disk.  This is cassette = #7 from=20 that collection.
    proteus_c= 7.pdf=20
    other=20 tapes
      Bob Stek
    quebbeman.zip<= /TT>   collection of source and binaries from Doug Quebbeman=20 (uncategorized)
    notes
    =
      Doug Quebbeman
    raiders.ent= no source Space Invaders clone, by Steve Maguire
    notes<= /A>
    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.e= nt   This binary contains both the tiny basic program and the = following=20 BASIC program for playing a version of StarTrek.=20
    startrek.a= sc
    This=20 zip file contains this and more:=20
    tinytrek.z= ip
    notes<= /CENTER>
    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. =20 There are no end of interesting CP/M programs that could be run on the = Sol; my=20 intention here is to capture those that have some Sol-specific feature = (most=20 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=20 for standalone programs, then boot CP/M.  Be careful not to run = any=20 transient programs.  When you get the CP/M command prompt, use = the SAVE=20 command to save the transient area to a .COM file for later use.  = That's=20 it.=20

    Another way that would conceivably work would be to have the = program in the=20 form of an Intel HEX file.  Boot CP/M and do a "PIP = a:foo.hex=3DRDR:[H]"=20 from CP/M.  RDR: might not be the right device; use whatever your = serial=20 port is mapped to.  the "[H]" option tells PIP that it is an = intel hex=20 format, so PIP can do stronger error checking.  After you get the = HEX=20 file, you can use the CP/M LOAD command to convert the .HEX file to a = .COM=20 file.  Well, that's in theory.  I found that when I = transferred=20 large programs, the Sol would have to save a block to disk on occasion = and the=20 serial line would drop characters.  I don't (yet) know enough = about the=20 serial interface chip on the Sol to know if it supports hardware flow = control,=20 which would prevent this exact problem.  If you can get this to = work on=20 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=20 dumping it here.
     =20
    PTDOS 2.0 Program Source
    Source Comments
    PTDOS-core.= asm The core PTDOS 2.0 O/S itself.  Beautifully written by = Philip=20 Levy.
    PTDOS-Assm.= asm Source code for the 8080 assembler, ASSM 1.1 (mod 0)
    DiskCopy.asm<= /A> disk copy utility
    NPT_Defs.txt<= /A> macros used by the assembler and disk copy=20 programs

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

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

    I have not attempted to build any of these programs = yet.


    Northstar software

     =20
    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'=20 Group) archives
    The first program, nsboot.asm, is a disassembly of the 256B = boot=20 PROM located on the disk controller card. There is some relocation = trickery=20 involved in the process.  Although most of it makes sense, there = are a=20 few things that I am unsure of in the program.  If you know what = is going=20 on there, or even have just some guesses, let me know.  The boot = PROM reads=20 sector 4 of track 0 off the disk and jumps to that code.  The = boot PROM=20 knows nothing of CP/M -- in fact, this boot PROM will load a northstar = OS just=20 fine too.  There is nothing in the boot prom that is Sol-specific = either.=20

    The second program, dboot.asm, is the disassembled and commented = boot=20 sector --- sector 4, track 0.  This is 512B long and has some = other black=20 magic and vestigial code.  If you have any insight into it, let me know.  It loads = sectors 5-9=20 from track 0 and sectors 0-9 of track 1 into memory, performs a = relocation=20 patch if required, and then jumps into the code.=20

    The third program, cbios.asm, is a disassembled and commented = CBIOS. =20 It assembles and produces a binary exactly like that captured from = memory=20 after loading CP/M, but it hasn't actually been used to "close the = loop" and=20 build a new system.  There is some cruft in there to ensure the = output is=20 identical to the reference image, when in reality many = uninitialized=20 data sections are don't-cares.  Ideally when this is all done, it = will be=20 possible to customize things a bit, such as adding better disk error=20 reporting.=20

    cpmug.zip is a number of sources and binaries taken from the CP/M = Users'=20 Group archives.  Although there are many very useful programs in = the=20 archive, this subset is just those that are relevent to the Sol or to = machines=20 that used the VDM display.  Some of the sources had to be = modified a bit=20 to work on the Sol.  These programs also appear on a virtual disk = image=20 that is distributed with the emulator, Solace.


    Miscellaneous software

    This section contains programs that don't really fit = anywhere=20 else.  Being lazy, I just bundled them up as ZIP files, although = I did=20 try and sort through and comment on what each file does.  All of = them=20 were contributed by Ralph Hopkins.
     =20
    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=20
    com-ent_n= otes.txt
    A collection of mostly CP/M programs in binary ENT = format
    lib_pgms.zip lib_pgms.txt A collection if assembly language library=20 routines

    Useful utilities

    I have written a few scripts that help me convert between=20 different file formats.  Perhaps the most useful are the = following perl=20 scripts.  To use them, your machine needs to have a perl = interpreter, of=20 course.  Perl has been ported to many environments, including MS=20 Windows.  I've only used these scripts on Windows, but they = should work=20 anywhere. ActiveState Perl = is what=20 you want.=20

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

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