Subject: Sol Personality Modules
From: <Saved by Microsoft Internet Explorer 5>
Date: Mon, 15 Mar 2004 01:05:06 -0500

Sol Personality Modules

One neat feature of the Sol is that the boot/bios/monitor (call it
what you will) ROM is on a tiny removable PC card, that Processor Technology
called "Personality Modules."  The intention was that you could change
the "personality" of your machine by swapping in different boot ROMs.
Each card contained up to 2 KB of EPROM.

Stan Sieler has a web page listing which personality modules he has here.

Another driving force behind the personality modules was economics.
Processor Technology concurrently offered both the SOLOS personality module
and the stripped down version, CONSOL.  The difference was that while
SOLOS took up 2 KB of EPROM, CONSOL fit into 1 KB.  Although a piddling
amount today, the cost difference was substantial back in 1977.  The
struggling hobbyist could decide how much they wanted to spend on the monitor
program.

Another economic factor was that there were many types of EPROMs in use
back then, and many of which had incompatible pinouts.  P.T. shipped
functionally identical Sol-20 systems but they were able to use whatever EPROM
was cheapest at that moment by picking the appropriate personality module for
the chosen EPROM manufacturer.  P.T. could use four 512B EPROMs, two
1024B EPROMs (e.g. 2708) or one 2048 byte EPROM (e.g. 2716).

SOLOS appears to have been the most popular option.  Besides
offering a few spartan commands for controlling the machine (setting memory,
dumping memory, jumping to a program at a given address, loading a program,
saving a program), it had some more sophisticated features too.  For
instance, the input and output could be redirected to any of four I/O
devices (one of which was user definable).  I find this feature quite
useful when playing with my Sol.  I can tell the monitor to accept
input from the serial port as if it was coming from the keyboard; I then use
a terminal program on my PC to interact with the Sol.  This way I can
transfer files and capture output quite readily.  SOLOS also contained
a number of I/O routines, many of which were in a vector table at the start
of the ROM.  This was meant to provide a degree of hardware/software
independence, just like the more modern IBM-PC BIOS.  Quoting page I-2
of the Sol manual,

SOLOSTM--allows full stand-alone terminal-computer
operation.

CUTER is a variant of the SOLOS program.  The SOLOS/CUTER
manual, on the documents page,
explains that they are largely compatible programs, except that SOLOS is
targeted specifically for the Sol computer, while CUTER is the version for
other 8080 machines that use the P.T. VDM-1 (display), CUTS (tape system),
and "3P+S Parallel/Serial I/O" boards.  The only command that SOLOS has
that CUTER doesn't is the "TERM" command (dumb terminal mode).  Also,
the manual says that there is a ROM version of CUTER and a relocatable
version that came on tape.  The version here must be the ROM version.

CONSOL was a stripped down version of SOLOS, as it fits into 1 KB
of EPROM.  This was targeted at more cost conscious buyers.
Quoting page I-2 of the Sol manual,

CONSOLTM--allows simple terminal operations plus direct
control of the basic computer functions for entering or examining data in
any memory location, or executing a program stored at a known location in
memory.

BOOTLOAD was another variant of SOLOS.  The "TERM" command
was removed and in its place the command "BOOT" was added.  This
command is used in conjunction with the Helios II Disk Memory
System in order to bootstrap the disk process.  "This
personality module is supplied with Sol Systems III and IV."  (i.e.,
system bundles that include the helios disk system.)

SOLED is mentioned in some P.T. sales literature.  It was
also a 2 KB module, like SOLOS, but the commands and features were targeted
at smart terminal applications.  It was possible to do off-line editing
and then send blocks of data to the host machine under local or remote
control.  I don't know if this was ever shipped or if it was just
marketing hot air.  Quoting page I-2 of the Sol manual,

SOLEDTM--allows advanced terminal operations with CONSOL
plus screen, file and cassette tape editing/transmission
operations.

DPMON is a 3rd party personality module from Micro Complex, and
was an interesting development.  Although it is still only 2KB, quite a
few new commands were added, such as dumping/entering in ascii or hex,
filling/moving/searching/comparing/testing memory, and adding a number of
jump vector commands. The catch is the monitor tossed out support for the
cassette interface and all related commands (CAT/XEQ/GET, plus the standard
entry points for manipulating the tapes).  You can read more about it
in its manual.
The source code also
has assembly-time options for relocating the personality module to F000
(requires a hardware mod) and for supporting 80 column displays (requires
a  hardware mod).

Does anybody know if any personality modules other than
CONSOL/CUTER/SOLOS/SOLED/BOOLOAD were ever produced?  If you have SOLED
or some other pesonality module I don't know about, I'd be interested in
hearing about it and somehow getting a binary/hex dump of it from you.
Let me know!

Personality Module Source Code

Source

Description

consol.orig

source for CONSOL personality module as scanned from Chapter IX of the
Sol manual

consol.asm

source for CONSOL personality module after manual conversion to
standard CP/M ASM syntax

cuter.orig

source for CUTER personality module as scanned from P.T. Access Volume
One, Number Two

cuter.asm

source for CUTER personality module after manual conversion to
standard CP/M ASM syntax

solos1.asm

source for one v1.3 SOLOS (the one appearing in my machine)

solos2.asm

source for another v1.3 SOLOS (masked ROM version; official, or at
least most common?)

solos3.asm

source for yet another v1.3 SOLOS, from CPMUG 015.  Not 100%
compatible

dpmon.asm

source for Micro Complex's Dual Personality Module
(documentation
for this module is here: dpmon.pdf)

(binary for conventional operation is here: dpmon.rom)

bootload.asm

source for the BOOTLOAD version of Solos.  Replaces TERM with the
BOOT command to boot from a Helios drive.

The code above is the code for four different personality module
types.

Notice that there are three versions of SOLOS source code.  Many
owners customized their SOLOS a bit for their own needs.  Modifying it
was relatively easy since P.T. was nice enough to supply the SOLOS source
code.  Because the "bios" was on EPROM and there were (supposedly)
well-defined entry points to the BIOS, owners could tinker with their SOLOS as
they saw fit.

"solos1" appears to have been one of these jobs.  P.T.
architected SOLOS to have a jump table at the start and documented only a few
"well-known" entry points.  As long as you maintained those few
addresses, no applications should be the wiser.  However, many programs
did have carnal knowledge of non-standard entry points, so any fiddling with
SOLOS had to be done carefully.  This version has tweaked the GCLIN
routine to add code to give the LOAD key special meaning.

"solos2" came from a personality module that appears to be a mask
ROM.  It carries the legend "SOLOS-1" on it, stamped at the same time the
manufacturer put their legend on the gold lid.  Thus I expect this was an
"official" version.

"solos3" came from CPMUG 015, which says it appears in P.T. Access
newsletter.  This isn't true, though.  Between its publication in
Access and CPMUG 015, somebody "fixed" the PCR routine (process
carriage return) to prevent the command line from erasing itself in
CP/M.   Unfortunately, because PCR here is of different length than
in solos1 and solos2, it causes the entry point of subsequent routines to be
off by two bytes.  Because a lot of software made direct calls into the
ROM, that software will break with this version of the P.M.  So just
don't use it unless you know you want it.  There is a slight change in
GTBYT (a bug?), plus the stack pointer is loaded one address higher, which
works because the 8080 decrements the SP before pushing the first word.

Paul Schaper has sent in a list of some bugs
and shortcomings he found with SOLOS that aren't otherwise documented by P.T.

Unfortunately, the designers of the Sol decided to put the personality
module decode at $C000, which means if you have a 64 KB RAM card, it has a
hole punched in the middle of it.  Actually, the system RAM and display
RAM were adjacent to this area too, so the whole block from $C000 to $CFFF is
taken out of the memory map.  Some people hacked up their hardware to
relocate these to the high end of 64 KB to allow more contiguous memory for
programs.

Micro Complex sold a kit that fixed the problem and was supported by dpmon,
but it did require cutting and jumpering a few traces to make it all
work.  A toggle switch on the personality module then selected between
conventional and relocated behavior.

Back to A Sol-20 Web
Page.

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