35C3: A Deep Dive into DOS Viruses and Pranks

Oh, the hijinks that the early days of the PC revolution allowed. Back in the days when a 20MB hard drive was a big deal and MS-DOS 3.1 ruled over every plain beige PC-clone cobbled together by enthusiasts like myself, it was great fun to “set up” someone else’s machine to do something unexpected. This generally amounted to finding an unattended PC — the rooms of the residence hall where I lived in my undergrad days were a target-rich environment in this regard — and throwing something annoying in the AUTOEXEC.BAT file. Hilarity ensued when the mark next booted the machine and was greeted with something like an inverted display or a faked hard drive formatting. Control-G was good to me too.

So it was with a sense of great nostalgia that I watched [Ben Cartwright-Cox]’s recent 35C3 talk on the anatomy and physiology of viruses from the DOS days. Fair warning to the seasoned reader that a sense of temporal distortion is inevitable while watching someone who was born almost a decade after the last meaningful release of MS-DOS discuss its inner workings with such ease. After a great overview of the DOS API elements that were key to getting anything done back then, malware or regular programs alike, he dives into his efforts to mine an archive of old DOS viruses, the payloads of most of which were harmless pranks. He built some tools to find viruses that triggered based on the system date, and used an x86 emulator he designed to test every day between 1980 and 2005. He found about 10,000 malware samples and explored their payloads, everything from well-wishes for the New Year to a bizarre foreshadowing of the Navy Seal Copypasta meme.

We found [Ben]’s talk a real treat, and it’s good to see someone from the current generation take such a deep dive into the ways many of us cut our teeth in the computing world.

Continue reading “35C3: A Deep Dive into DOS Viruses and Pranks”

DooM Retrospective: 25 Years of Metal

Metal is many things. A material hard and coarse in nature that by forging it in fire becomes sharp enough to cut through anything in its path. The music that bares its namesake is equally cutting and exudes an unyielding attitude that seeks to separate the posers from the true acolytes. Metal is the sentiment of not blindly following the rules, a path less taken to the darker side of the street. In videogame form, there is nothing more metal than Doom.

The creators of Doom, id Software, were always hellbent on changing the perception of PC gaming in the 1990s. Games of the time were rigid and slow in comparison to their console counterparts. The graphical fidelity was technically superior on PC, but no other developer could nail movement in a game like id. The team had made a name for themselves with their Commander Keen series (which came about after a failed Super Mario Bros. 3 PC demo) along with the genre defining Wolfenstein 3D, but nothing topped Doom. In an era that was already soaking with “tude”, Doom established an identity all its own. The moody lighting, the grotesque monster designs, the signature push forward combat, and all the MIDI guitars a Soundblaster could handle; Doom looked and felt a cut above everything else in 1993.

In December of that year, Senators Joe Lieberman and Herb Kohl held a hearing to publicly condemn the inclusion of violence in videogames sold in America. The bulk of the arguments sought to portray the videogame industry and its developers as deviants seeking to corrupt the nation’s youth. Id Software responded as if to raise the largest middle finger imaginable, by releasing Doom to the world the very next day. A quarter of a century later people are still talking about it.

Continue reading “DooM Retrospective: 25 Years of Metal”

Tiny Ray Tracer Fits In 64 Bytes

Throughout human history, people try to make the biggest, the fastest, and — sometimes — the smallest. [Hellmood] falls into the latter category and proves it with a 64 byte interactive 3D raycasting application for MSDOS.

Why MSDOS? We suppose why not? The .COM file format is lean, and you can take over everything without a lot of work. If the program were huge, it wouldn’t be very impressive. There are 64 shades of gray which is odd looking these days, however there are versions that use various color palettes and each one fits in 64 bytes or less. There’s even mouse control and you can see the results in the video below.

Continue reading “Tiny Ray Tracer Fits In 64 Bytes”

A Parallel Port Synthesiser For Your DOS PC

It is a great shame that back in the days when a typical home computer had easy low-level hardware access that is absent from today’s machines, the cost of taking advantage of it was so high. Professional PCBs were way out of reach of a home constructor, and many of the integrated circuits that might have been used were expensive and difficult to source in small quantities.

Here in the 21st century we have both cheap PCBs and easy access to a wealth of semiconductors, so enthusiasts for older hardware can set to work on projects that would have been impossible back in the day. Such an offering is [Serdef]’s Tiny Parallel Port General MIDI Synthesizer for DOS PCs, a very professionally produced synth that you might have paid a lot of money to own three decades ago.

At its heart is a SAM2695 synthesiser chip, and the board uses the parallel port as an 8-bit I/O port. The software side is handled by a TSR (a Terminate and Stay Resident driver loaded at startup, for those of you who are not DOS aficionados), and there are demonstrations of it running with a few classic games.

If the chip used here interests you, you might like to look at a similar project for an Arduino. The Kickstarter we covered is now long over, but you can also find it on GitHub.

MSDOS Development with GCC

It might seem odd to think about programming in MSDOS in 2018. But if you are vintage computer enthusiast or have to support some old piece of equipment with an MSDOS single board computer, it could be just the thing. The problem is, where do you get a working compiler that doesn’t have to run on the ancient DOS machine? Turns out, gcc can do the trick. [RenéRebe] offers a video demo based on a blog post by [Chris Wellons]. You can see the video, below.

The technique generates COM files, not EXE files, so there are some limitations, such as a 64K file size. The compiler also won’t generate code for any CPU lower than a 80386, so if you have a real 8086, 80186, or 80286 CPU, you are out of luck. The resulting code will run in a real DOS environment on a ‘386 or higher or in a simulator like DOSBox.

You might be thinking why not use the DJGPP port of gcc to DOS. That sounds good, but it actually doesn’t produce true DOS code. It produces code for a DOS extender. In addition, [Chris] had trouble getting it to work with a modern setup.

The only real trick here is using the right combination of gcc flags to create a standalone image with the right codes. A COM file is just a dump of memory, so you don’t need a fancy header or anything. You also, of course, won’t have any library support, so you’ll have to write everything including functions to, say, print on the screen. Of course, you can borrow [Chris’] if you like.

The last pieces of the puzzle include adding a small stub to set up and call main and getting the linker to output a minimal file. Once you have that, you are ready to program like it is 1993. Don’t miss part 2, which covers interrupts.

If you pine away for QuickBasic instead of C, go download this. If you just want to run some old DOS games, that’s as close as your browser.

Continue reading “MSDOS Development with GCC”

PC-XT Emulator On ESP8266

Do you remember the simpler times when you had a DOS command line, a handful of commands, and you talked to the hardware through a few BIOS and DOS interrupts? Okay, maybe it was a little limited, but nostalgia doesn’t care. Now [mcuhacker] is working on bringing some of those memories back by getting a PC-XT emulator running on an ESP8266.

For the x86 CPU emulator, he ported Fake86 which is written in C, and created an Arduino IDE environment for it. The MS-DOS 3.3 bootdisk image is stored in flash and is accessed as the A: drive. There’s no keyboard yet but he has 640×200 CGA working with 80×25 characters on a 3.5″ TFT display with the help of a low pass filter circuit. In the video below he shows it booting to the point where it asks for the date.

Continue reading “PC-XT Emulator On ESP8266”

The IBM PC That Broke IBM

It was the dawn of the personal computer age, a time when Apple IIs, Tandy TRS-80s, Commodore PETs, the Atari 400 and 800, and others had made significant inroads into schools and people’s homes. But IBM, whose name was synonymous with computers, was nowhere to be seen. And yet within a few years, the IBM PC would be the dominant player.

Those of us who were around at the time cherished one of those early non-IBM computers, and as the IBM PC came out, either respected it, looked down on it, or did both. But now, unless your desktop machine is a Mac, you probably own a computer that owes its basic design to the first IBM PC.

The Slow Moving Elephant

IBM System/360 Model 30 mainframe
IBM System/360 Model 30 mainframe by Dave Ross CC BY 2.0

In the 1960s and 1970s, the room-filling mainframe was the leading computing platform and the IBM System/360 held a strong position in that field. But sales in 1979 in the personal computer market were $150 million and were projected to increase 40% in 1980. That was enough for IBM to take notice. And they’d have to come up with something fast.

Fast, however, wasn’t something people felt IBM could do. Decisions were made through committees, resulting in such a slow decision process that one employee observed, “that it would take at least nine months to ship an empty box.” And one analyst famously said, “IBM bringing out a personal computer would be like teaching an elephant to tap dance.”

And yet, in just a few short years, IBM PCs dominated the personal computer market and the majority of today’s desktops can trace their design back to the first IBM PC. With even more built-in barriers which we cover below, how did the slow-moving elephant make this happen?

Continue reading “The IBM PC That Broke IBM”