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).
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.
is a variant of the SOLOS program. The SOLOS/CUTER manual, on the manuals 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.
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.
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.)
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.
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 personality 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!
|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.