Code of my life: MS-DOS 4.0

Michał Fita
5 min readMay 19, 2024

--

Microsoft’s release of MS-DOS 4.0 to GitHub triggered some old memories of my first PC and the first computer my family ever owned. That wasn’t the beginning of my larking with computers, which started much earlier with a book by a German author I can’t find (and I don’t remember the title)¹. I’ll return to the book in another article.

To that day my computers were usually of Commodore 64, ZX Spectrum or Atari calibre, with some variants like networked Elwro Junior running CP/M aside emulating ZX Spectrum. Going straight to PC AT (Intel 80286) with 20MB hard disk was an unprecedented update no one around me had access to at that time, not for long, but for a short while I had the privilege of access to the beefiest computer around.

Since the book I mentioned earlier, my interest in computers wasn’t merely as a toy or a game machine. They interested me as technology to learn about. I played some games, like J-Bird or Tetris, but I wanted to try to write programs. With my little experience in BASIC on my friends’ computers, the first thing I tried was QBasic, replaced quickly by Turbo Pascal. That programming language stayed with me for a long time. I tried to program TUI applications, some BGI graphics (including a talking face), control COVOX and later Sound Blaster (I think that was on our next PC). The fact I learned Pascal quite well helped me years later at the university, where lab exercises for Algorithms and Data Structures were carried out in Pascal written on the whiteboard, even if I hadn’t been using it for more than 5 years. Amongst my experiments with Pascal were failed attempts to write a bootloader; I managed to convert EXE to COM with zero offset and print something out of binary put in the first sector of the disk; I didn’t, however, have enough knowledge to do it right. That was the era before the internet, so I was limited to the books I had access to. Later, I’ve been trying x86 assembler as well.

There were times when people were learning programming by typing source code into computers from pages of computer magazines (I remember “Bajtek” and then “PC Kurier”, there were others) which required focus and settled code syntax in memory pretty well. Today people just copy and paste fragments with the hope they’ll understand them enough to harness them to work. But while this method gives faster results it doesn’t play well with our brains. The same applies to books. I had books from Jan Bielecki (Polish readers old enough can recognize the name) about Turbo Pascal and later even original manuals for Turbo Vision from Borland with some tutorials. The funny part is by trying Turbo Vision I learned well about pointers.

The reason why my father bought a rather expensive PC was his expectation he could harness that computer to help him carry on his own business. But despite many attempts, that idea hadn’t materialized for almost the next ten years. The reason was the lack of software capable of handling invoicing and accounting for services where each customer had completely different conditions. Those days all programs available on the Polish market could only handle selling products invoicing from a closed set of items entered long before the sale. For some period he even hired a programmer who was supposed to write the right application for him but that gent had his own vision of how to do things, so while the first versions were promising he couldn’t finish the job to the satisfaction of both sides. My father, however, was very demanding in terms of details.

On that PC, as a convenience on top of not very user-friendly MS-DOS landed Norton Commander and tools like Norton Disk Doctor (defragmentations) and Norton Disk Editor… yes, that’s how I learnt how FAT works. I was able to restore deleted files (helping my friends with this) and even fix broken file structures from time to time. After that experience I didn’t really follow the development of other filesystems that close, so I never became an expert.

My father found Tag — the first Polish word processor in graphics mode with multiple fonts, Polish national characters and nice printing. That inspired him to attempt to sell Polish software in the USA, mainly for Polish immigrants. One of the things of the past was that support of Polish national characters outside dedicated software required TSR programs (terminate and stay resident) amending character table (still within 127–255 character code of 8-bit ASCII). Two good programs were available in the public domain, but… they didn’t have an installer. For Polish computer enthusiasts that wasn’t a problem, but for American users much bigger one. I wrote a program to perform the installation for them that was given to any customer of my father in the USA — there weren’t plenty of them. Selling software with a Polish mindset was hard as our country didn’t have software copyright protection yet in the law introduced in 1994. Everyone was used to just copying programs for each other. Moreover, Polish software could inadvertently violate US patents, and existing copyrights (usually about fonts) or simply be accused of reverse engineering to amend its intended function (like replacing system font).

Time flew, and Windows 3.0 arrived. We already had a VGA card (again quite eccentric amongst others with Hercules and CGA cards). That was when I started using GUI applications on a PC. I knew some from Macs already — to some extent black & white Classic looked more appealing than the 16 colours of early Windows. While Windows didn’t have much impact on my skills until Visual Basic and Delphi, but that happened much later. What influenced me were Macs to which I had access by computer class at Youth Centre (pol. Młodzieżowy Dom Kultury, Pałac Kultury then Centrum Młodzieży). I learned there that GUI programs have resources someone can access and translate programs from English to Polish and how to write programs in HyperCard (we mostly did animations). This was quite a unique experience on my path to programming. It shaped my view that MacOS went in the wrong direction afterwards.

As Windows wasn’t useful for everything, we still have programs and some games running in MS-DOS. But apart from Polish fonts and a Polish keyboard driver, you needed Sound Blaster drivers and a few others. They all took space in memory. There were these things called EMS (Expanded Memory System) and XMS (Extended Memory Systems) that let you manage memory between 640 kB and 1MB significantly taken by Shadow BIOS (BIOS code copied to RAM for faster operations) and Video Memory. Most people at that time had menus in autoexec.bat to select loading different configurations depending on current need, but I mastered stealing chunks of memory free in that space and testing the machine for stability with drivers residing there. This was challenging and time-consuming to crawl memory for sections of zeros large enough to fit a segment. I was sometimes doing such optimisation on my friends’ computers, too.

Visual Basic and later Delphi mentioned earlier are part of a completely different story I may cover in a different article.

¹: In the end I found it on a Polish auction site by recognising the characteristic cover: Friedrich Haugg, probably “Stets zu Diensten: Dein Computer” (pol. “Poznaj swój komputer”).

--

--

Michał Fita

Software Craftsman who started programming before even had a computer.