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)

Monday, August 15, 2022

Fun ahead

Not a lot happening here tech-wise these days.

Except: an upcoming "archaeological" adventure.

Max, my longest and dearest friend found a bunch of disks (yes, those: 5.25" and 3.5") from way back when. We were in high school together when the first PCs came out and started to get used in school administration. Obviously, there was a lack of software for exactly this back then. We had good ties to our school administrator (who happened to be our geometry teacher as well), and since the two of us made up about 50% of the school geeks (there were two others and of course all four of us where friends) he sometimes allowed us to use his "official" computer, an Olivetti (_that_ long ago), and also the only one sporting a 10MB (!!) hard disk.

So at one point, Max and I set out to write a piece of software that would help him in some administration tasks, namely creating and assigning the whole schools class schedule, making sure that all the boundary conditions were taken care of. Conditions like the (weighted) hours per teacher, or honouring their days off. Stuff like that. Not some fancy logic that would automatically take care of it, but supporting it. 

The fun part: this was all written under MS-DOS in 8086 Assembler (yes) and we even created a nice (character) windowing and menu framework for this.  At least I'm pretty sure we did.

So, Max happened to find the disks with the sources for it.

Now we need to get access to disk drives (3.5 and 5.25),  and connect them to a modern PC.I checked: I really don't have any. And then hopefully get some DOS running in a VM and see what will happen. 

Fingers crossed that any of this is still readable.

PS: I just might post some stories of that time here in the upcoming weeks, and of course the progress of our digital excavations.