Sunday, August 28, 2022

First UFO sightings

So, Max finally did it. He found the HW to read our old floppy disks and got our 1985/86 software back and onto proper modern media ;) 

And then we both separately tried to get a good old DOS to run. My attempt was in a virtualbox on my PC... Tricky to get the program/files into that DOS box because you can't mount a folder from the host then (DOS doesnt have vbox extensions), nor do you have networking on it... so I had to dreate a disk image file, put the files on that, and mount it as disk 0 ("A:") to the DOS vm. And this worked.

Ladies and Gentlemen ... I give you... 


Please don't ask me what UFOS stood for... the U was most surely "Unterricht" (=education), but I can't remember wha tthe F would be for. I guess I need to try and find that in the sources.

Speaking of which, we did some wonderful stuff - and remember that was two 17y/o kids in high school working on 4.77MHz PCs with just 2 floppy disk drives, natively in x86 Assembler (Macro Assembler if that makes a difference to you, it doesn't to me, because I always considered the "marco" part a primitive pre-processor, not a different language) .

Core architecture was the base module (a .com file), that would load the various modules from disk when needed, and supply a bunch of common functions (a core library, if you will) as a  service interrupt. So when a module wanted to do some windowing/output stuff it would  - as was common practice under DOS - load a function code into the AH register (the AH part of the accu, ok) and call INT F0h, like you would do for a DOS or BIOS function.

The rest seems to be pretty awful, not only because of the lack of documentation.

The above-mentioned interrupt handler, utilized a jump table, i.e. use the function code in AH as an index into an array of function addresses to call those functions (pretty cool for 17y/o, right?) but I didn't check any boundaries... I probably thought I wouldn't need to, because only us two boys would ever call this interrupt... pretty stupid.  (And when I say I, I'm pretty sure that I wrote this piece of code at that time, and looking at the source, it look remarkably like my code)

1 comment:

Max said...

While Roman set up a "true" MSDOS in a virtual machine, I followed a different approach: ChromeOS -> Linux container (debian) -> dosbox. Saved me from creating a DOS disk image, as dosbox is able to mount a directory tree as the C: drive. Had to tune a few settings, and voila, had SV.COM running as well directly on my Pixelbook.

The two tricky parts were: the released version of dosbox is old, and cursor keys do not work. You have to "upgrade" to dosbox-staging. Google is your friend; there is a repo for that.

The second hoop for me was to get my Colemak keyboard layout to work in dosbox. to the rescue! You can download and use the freedos keyboard.sys keyboard layouts in dosbox. Just put keyboard.sys in the directory you will mount as C:, and here are some helpful dos commands:

mount c ~/c_drive_dos
keyb co 437 keyboard.sys

There you go. 37 years old software on a modern Laptop. And the feeling of achievement.