Legacy OSes Archive

Palm OS gets a TOTP application

Still rocking your Palm OS device, but mutter under your breath every time you need to log into a website or service with two-factor authentication? Sick of carrying around an Android or iOS device just so you can log in on your Palm PDA? Worry no more, your prayers have been answered, you can finally throw that Android or iOS garbage into the sun. Get your 2-factor codes on your Palm, just like Google Authenticator. Unlike Hotpants (an old port of a J2ME phone app), this version takes up much less space and supports all Palm OS versions. ↫ Nathan Korth You can now generate 2FA codes on your Palm device. This is wild, and I absolutely love it. I might if set it up on one of my dozens of Palm OS devices and just put it next to my keyboard for easy access. There’s no cooler way to handle 2FA than this.

Running CP/M on the C128

I owned a C64 and was familiar with the C128, but this one was odd. It wasn’t running any games, color graphics or playing music. Instead, it was connected to a monochrome monitor which always displayed either a weird command line prompt or what seemed to be some boring professional writing software. I soon came to find that it was running CP/M and WordStar, one of the first word processors for microcomputers. My daily obsessive visits to the computer shop led to some friendship with the owner, to the point that he’d let me in and play with the machines. So, I played with CP/M and learned how to use WordStar. Well, in case you didn’t notice, I own a C128DCR now. This blog is about how I got CP/M, WordStar, and other fun ancient software apps running on it. ↫ Celso Martinho CP/M, of course, was the primary influence of DOS.

Running GNU on DOS with DJGPP

I remember using DJGPP back in the 1990s before I had been exposed to Linux and feeling that it was a strange beast. Compared to the Microsoft C Compiler and Turbo C++, the tooling was bloated and alien to DOS, and the resulting binaries were huge. But DJGPP provided a complete development environment for free, which I got from a monthly magazine, and I could even look at its source code if I wished. You can’t imagine what a big deal that was at the time. But even if I could look under the cover, I never did. I never really understood why was DJGPP so strange, slow, and huge, or why it even existed. Until now. As I’m in the mood of looking back, I’ve spent the last couple of months figuring out what the foundations of this software were and how it actually worked. Part of this research has resulted in the previous two posts on DOS memory management. And part of this research is this article. Let’s take a look! ↫ Julio Merino Having access to tools such as this, including the source code, must’ve been a huge deal to a lot of people, even if ti was “strange, slow, and huge” as the author notes.

Beyond the 1 MB barrier in DOS

Last month, we covered Julio Merino’s article about going from 0 to 1 MB in DOS, and now they’re back for breaking beyond that 1 MB barrier. I know I promised that this follow-up article would be about DJGPP, but before getting into that review, I realized I had to take another detour to cover three more topics. Namely: unreal mode, which I intentionally ignored to not derail the post; LOADALL, which I didn’t know about until you readers mentioned it; and DOS extenders, which I was planning to describe in the DJGPP article but they are a better fit for this one. So… strap your seat belts on and dive right in for another tour through the ancient techniques that DOS had to pull off to peek into the memory address space above the first MB. And get your hands ready because we’ll go over assembly code for a step-by-step jump into unreal mode. ↫ Julio Merino What’s amazing is that I don’t even remember having to deal with any of this while using MS-DOS back in the day. Games tended to use DOS extenders automatically (DOS/4G!), but I don’t remember if I ever had to set up any of the DOS above-640k stuff manually.

From 0 to 1 MB in DOS

Since the last article on the text-based IDEs of old, I’ve been meaning to write about the GCC port to DOS, namely DJGPP. As I worked on the draft for that topic, I realized that there is a ton of ground to cover to set the stage so I took most of the content on memory management out and wrote this separate post. This article is a deep dive on how DOS had to pull out tricks maximize the use of the very limited 1 MB address space of the 8086. Those tricks could exist because of the features later introduced by the 80286 and the 80386, but these were just clutches to paper over the fact that DOS could not leverage the real improvements provided by protected mode. ↫ Julio Merino The DOS memory story is a string of hacks upon hacks that somehow managed to work – and that still work today.

86-DOS revisited

Recently, the oldest known versions of DOS were uploaded to the internet, and Michal Necasek dove into the floppy images. Even after more than 40 years(!), old software releases and pre-releases can still surface. In the case of 86-DOS 0.11 and 0.34 it’s practically a miracle, since there were probably never very many copies in existence. For the first time since the early 1980s, FAT formatted floppies with the primordial 16-byte directory entry format have come to light. The old 16-byte directory entries were gone by 86-DOS 1.0 in April 1981 and of course never appeared in any public PC DOS release. These prehistoric versions of 86-DOS allow us to fill in further missing pieces in the puzzle of DOS origins. It is fascinating to follow how DOS developed from almost nothing to a multi-million dollar business in the course of just a few years. ↫ Michal Necasek It started out so humbly. Yet, here we are, in 2024, and variants of DOS still have their uses in certain niches. An incredible legacy, for sure.

CP/M ported to to 30-year-old digital typewriter

CP/M is an operating system dating to the mid-1970s that found its niche giving cheap 8-bit home computers the flexibility, if not the power, of expensive workstations. The Brother SuperPowerNote was a fancy and “very weird” portable typewriter from the early 1990s. David Given ported the former to the latter, creating a freakishly versatile laptop. The source code is on github! ↫ Rob Beschizza And now I’m browsing eBay for electronic/digital typewriters again. There’s so many of them! And they all look so awesome and fun! Please stop me! One day I’ll finally pull the trigger.

Don’t waste money on a math coprocessor they said

I tried to launch BattleTech over and over and had zero success. I couldn’t figure out why it was struggling on my model 80 board, where it runs just great on 86Box. What is going on? One thing I had stumbled upon was that if I launched an ancient Infocom game in a DOS box, and then launched BattleTech it had a much higher chance of running. But this did not always equate to it working. How is launching an old COM file from the early 80’s excise the ‘devil’ of some 1988 EXE from running? As the title suggests, it’s got to do with the math coprocessor. I know I say this often, but I’m so glad people dive into these sorts of things decades later to figure out what’s going on. It makes for great reading.

Browsing the WWW on a 1980s IBM PC using MicroWeb

Do you ever sit at your 1981 vintage IBM PC and get the urge to pop onto that newfangled ‘WWW’ to stay up to date on all the goings-on in the world? Fret not, because Al’s Geek Lab has you covered with a new video, which you will unfortunately have to watch on a device that was made at the very least in the late 1990s. What makes this feat possible is a miniscule web browser called MicroWeb, created by jhhoward, that will happily run on an 8088 CPU or compatible, without requiring any fiddling with EMS or similar RAM extensions. Anything is possible, if you just want it hard enough.

CP/M-65: CP/M on the 6502

This is a native port of Digital Research’s seminal 1977 operating system CP/M to the 6502. Unlike the original, it supports relocatable binaries, so allowing unmodified binaries to run on any system: this is necessary as 6502 systems tend to be much less standardised than 8080 and Z80 systems. (The systems above all load programs at different base addresses.) Currently you can cross-assemble programs from a PC, as well as a working C toolchain with llvm-mos. For native development, there’s a basic assembler, a couple of editors, and a BASIC. You need about 20kB to run the assembler at all, and of course more memory the bigger the program. The usefulness of this project is debatable, but that doesn’t make it any less cool.

Zilog’s forgotten operating system: Z80-RIO

When it comes to famous operating systems for the Z80 and similar Zilog processors, the first and maybe only one to come to mind is CP/M, which was even made its presence known on the dual-CPU (8502 and Z80) Commodore 128. Yet Zilog also developed its own operating system, in the form of the comprehensively titled Z80 Operating System with Relocatable Modules and I/O Management (Z80-RIO for short). With limited documentation having survived, Ralf-Peter Nerlich has set out to retain and recover what information he can on RIO and the associated Programming Language Zilog (PLZ) after working with these systems himself when they were new. Catchy name, and awesome work to try and recover as much about it as possible.

Thirty years ago: MS-DOS 6.00, DoubleSpace, and MultiConfig

In addition to several new full-screen utilities, like DEFRAG to defragment your hard disk (licensed from Symantec), MSBACKUP to efficiently backup your hard disk (also licensed from Symantec), and MSAV to check for viruses (licensed from Central Point Software), there were a number of new command-line programs, such as CHOICE, DELTREE, MOVE, MSCDEX, and SMARTDRV. But the biggest addition to MS-DOS 6.00 was a new feature called DoubleSpace (dubbed “MagicDrive” internally) that automatically compressed everything on your hard disk, providing up to “double” the amount of effective disk space – or more, or less, depending on how compressible your files were overall. Despite growing up with MS-DOS since our first computer was a 286 PC in 1990 or so, I never used any of these advanced features. I was 6-7, and just wanted to play games, basically. It’s only now that I’m much older that I actually admire the crazy things people have managed to squeeze out of – or into – DOS.

A virus for the BBC Micro

In short, no, I’m not making it up, I did make a virus back in 1990. I don’t have the source code, unfortunately, for two reasons. It was over thirty years ago. I’m a chronic hoarder, but seemingly not that chronic. The floppy discs containing the code were confiscated. No, my mum wasn’t proud, indeed she didn’t even know about this episode at the time, and still doesn’t. Not that she’d understand what a computer virus is, even if I attempted to explain it to her. What a great story.


The other day I had a pressing “need” to examine the behavior of Adaptec 154x and compatible SCSI HBAs and their DOS drivers. I found the hard way that the AHA-154xB does not work with Adaptec’s last DOS drivers from circa 1999. That includes the drivers still available for download (ASPI4DOS.SYS version 3.36), as well as the driver shipped with OEM versions of Windows 98SE (ASPI4DOS.SYS version 3.36S). The error message is far from enlightening; effectively the driver acts as if there were no HBA at all. It turns out it’s an incredibly interesting story.

dosfetch: a neofetch clone for DOS

You know neofetch, the little tool that shows you some nicely formatted system information in your terminal? Even though I find Archey 4 vastly superior, neofetch is still cool and often serves as an inspiration for people to create similar fun tools for other platforms. In this case – DOS, through dosfetch. That’s really all there’s to it – it’s just a fun little toy for a classic operating system.

Here’s why the best IMAX movies still need a Palm Pilot to work

About a small town’s worth of people pointed me to this on Mastodon, so here it goes: In an IMAX theater, the m130’s job is to control the quick turn reel unit, or QTRU for short. (For many years, it appears, a non-emulated m130 sat holstered in most theaters.) The QTRU’s job is to control the platters, which are those large horizontal shelves where all of a film’s many reels are stitched together, stored, and then quickly spun out to and from the projector. The IMAX 1570 projector moves film at a little under six feet per second, so it’s all happening really fast. The m130 is apparently crucial to keeping the thing humming — “PALM PILOT MUST BE ON ALL THE TIME,” reads a notice above an image of a different m130 that has since been passed around the internet — but doesn’t often need to be used. “I’ve never had to interact with the Palm Pilot,” says one person familiar with the technology. “It’s really just a status screen.” Its job is to keep the QTRU moving at a consistent speed and to help keep the film’s video in sync with its audio. This doesn’t surprise me one bit. In environments like these, if something works, and has been working reliably for decades, there’s really no reason to change any of it. This application is probably quite simple, but since there’s only a very small number of theaters out there even capable of showing 70mm film, and it doesn’t look like it’s a format on the up and up.

DESKTOP2: a graphical user interface for DOS

DESKTOP is a graphical user interface for DOS, which ones used to be a commercial shell like MS-Windows 3.0 or GEOS. However, due to the dominance of MS-Windows 95, we were forced to stop publishing the program, so it’s free now… I’ve done a lot of digging into these alternative shells for both MS-DOS and Windows 3.x/9x, but I had somehow never heard of this one. It’s freely available, and has some neat and interesting features, like copy and paste, a full file manager, and much more.


An SDK for developing DOS software for x86 machines, including IBM PC compatibles and NEC PC-98 This SDK (Software Development Kit) is modeled after the Amiga NDK (Native Development Kit). The Amiga NDK contains a set of header files and libraries for both assembly and C development, which provides all the required constants, flags, data structures and whatnot to interface directly with the hardware, and having readable code making use of human-readable symbols and type definitions. An equivalent for the IBM PC platform, or PC DOS/MS-DOS/compatible environments has never been available to my knowledge. This SDK attempts to fill that void. Think of it as Ralfs Interrupt List and Bochs ports.lst turned into .inc/.asm and .h/.c files ready for use in a programming environment. What an awesome initiative.