I’ve had my SOL-20 for about 3 years now. I’ve enjoyed every aspect of owning this unique S-100 machine. I Love it. About a year ago I decided I would really like to get this machine working with some kind of DOS. After doing some research I decided on trying to track down a Northstar disk controller and floppy unit. This was a popular upgrade back in the day, and I decided I would follow suit.
I purchased a working Northstar disk controller on eBay, and it arrived safely. I had previously asked around if anyone was willing to make a boot floppy for my system and there were a few people who were kind enough to help. Unfortunately It soon became apparent that I had purchased a double density controller and everyone who was offering to supply a floppy had only single density systems. A single density boot floppy would not work with my setup.
After some pondering I decided the only solution would be to try to build my own boot disk by somehow bootstrapping my machine. I won’t waste time with the various failed directions I took in doing this, but needless to say I had many failures, and many many directions that just didn’t pan out. I must also state that the SOL-20 is my first experience with a S-100 machines, and I have never really used either Northstar DOS or CP/M before…so I was (and still am) a real novice when it come to this kind of thing. I needed a solution that was simple, and reproducable, that once instructions were written (which you are reading now) others could do as easily as I did.
That said, let me focus on what worked, and forget about what didn’t.
I decided to try getting Northstar DOS working first, although my ultimate goal was to get CP/M running.
Northstar DOS just seemed like a simpler option to begin with.
The key to everything is Dave Dunfield’s NTS utilities, a collection of PC based applications that allows the transfer of disk images to and from a PC and Nothstar Horizon computer, and writes a real working boot floppy from the Northstar machine. The problem is that I don’t have a Northstar computer, I only have the controller board from one. The issue here is that as part of the process a small stub file is loaded into the target north star system and it is this that helps the machine communicate with the PC, and helps with building a new floppy. This stub file would not work with the SOL-20 because the I/O are different between the Northstar Horizon and the SOL-20. Specifically the serial interfaces are different between the two machine and operate on different internal ports.
Enter Corey Cohen. I have had various conversations with Corey about my dilemma. His solution was to patch the stub for the SOL-20. He sent me some .asm files that I was able to convert to SOL-20 specific .ent files and load them into the SOL-20 via it’s onboard serial port. I was then able to easily establish a connection between the SOL-20 and the PC at 9600 baud.
So far so good.
Unfortunately, although Dave Dunfield’s NTS utility came bundled with Northstar disk Images, these images are again, like the NST stub, built specifically for a Northstar Horizon system, with a completely different I/O. This means that the I/O routines built into the floppy images were looking at different internal ports for such things as keyboard input, and character output (to a monitor) etc. Although I could now transfer a floppy image and build a real floppy disk from it, the resultant boot disk would not work. Nothing would appear on the screen, and no instructions could be typed even if anything could be seen.
What was needed was a way to patch the Northstar disk image with a SOL-20 BIOS. Fortunately I was able to find exactly what I was looking for, an assembly file (from ALS-8) of the BIOS from a SOL-20 Northstar DOS boot floppy. Great, but how to get the BIOS into the disk image. Again, after a few false starts I discovered that I could open the disk image file in a HEX editor and edit the code directly. This was a real breakthrough for me and made, from that point, patching any disk image very easy. It was then a fairly simple matter to convert the ALS-8 BIOS .asm file into a standard .asm file, and then convert it to HEX, and finally to a binary file that could be patched into disk Image with the HEX editor.
I chose a double density disk image because I had the Northstar double density controller board. Everything I had read told me that the BIOS lives at 2900h, but when I looked at the disk image I couldn’t see anything at this address, What I did find was that the BIOS was at 2800h instead (still not sure why this is).
I patched in the new BIOS. The last thing to do was to adjust the jump codes at 20xxh so that they matched the jump codes that the new BIOS expected.
Finally I was able to transfer the disk image to the SOL-20 via Dave Dunfield’s NTS app, and Corey’s patched stub and make a real floppy.
The resultant disk booted, and seems to work perfectly.
Obviously I didn’t tell you all the wrong turns and miss assumptions I made along the way, and there were many. The final solution I believe is simple and elegant.
I will include all files, including patched disk images, binary BIOS etc on my FTP site for download. These files will either allow you to simply follow the instructions below, or patch your own disk images. As I only have a double density controller, there are no patched single density image is included, as I have now way to test it. You will need to patch in the BIOS and jump codes yourself. The process of patching using a HEX editor is very simple, but I must point out that I believe that the BIOS lives at the 2900h address for the single density disk images, and at 2800h for the double density images. I have no idea why this is, and have not tested my hypothesis for the reason mentioned above. The simplest way to be sure you are patching the right addresses is to pad the disk image HEX file with 00’s until you can see that the start of the main code lines up at the 2000h address. Otherwise if you are a HEX wiz, you can calculate the offset. Lastly, even though the BIOS lives at different addresses for the single and double density images, the jump codes at 20xxh are consistent in that they only jump to the 2900h addresses, again, I have no idea why this is.
To simplify the process for those who just want to get their machine up and running quickly. Here is my down and dirty ‘how to’ instructions.
1) I’m assuming that you already have a serial connection from your PC/MAC to your SOL, and they can ‘talk’ to each other, and you can send .ent files to the SOL-20. If not, then this is your first step.
2)Load Corey’s patched stub (.ent file) into your SOL-20.
SOL20_NTSXS.ent (for single density)
SOL20_NTSXD.ent (for double density)
3)Execute the stub on your SOL-20: ‘EX 2900’
The SOL-20 will just sit there looking like it’s doing nothing…although it isn’t.
4)Launch the NTS DOS application.
5)Use the WD (or WS for single density setups) command, followed by the name of the disk image you
want to transfer.
I have included in the link a copy of my patched double density Northstar floppy image so you don’t have to go through the whole patching process yourself if you don’t want to: SOL20_NSDOS5_DD.nsi
(If you have a single density controller you will need to patch a single density disk image yourself)
6)The NTS DOS application should then show some transferring activity. If it doesn’t, and times out, try
pressing the ‘LOCAL’ key on the SOL-20 keyboard.
7)The process will take about 4 mins, and at the end you should have a bootable floppy disk containing a
SOL-20 specific copy of Northstar DOS.
8) Power cycle the SOL, and do a ‘EX E800’ (or possibly in some cases ‘EX E900’ depending on your disk controller) command to initiate the boot code in the Northstar disk controller. The floppy should then boot.
Good luck.
Next, see how I got CP/M working too…(Coming soon)
Special thanks to:
Dave Dunfield for his great NTS application
Corey Cohen for his support and work on the SOL-20 NTS stub
Dave Fanyes for his endless support and trying his best to answer by dumb questions
Andrew Quinn for his help in converting the ALS-8 .asm file to a CP/M compatible .asm format
Dwight Elvey for punching me a bunch of hard sectored media
...and everyone else who put up with my stupidity.
PROJECTS AND ARTICLES
Getting Northstar DOS running on a SOL-20
HEX file showing patched disk image I/O jump addresses for 200D through 2016
HEX file showing the start of the patched I/O area for double density disk image