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”

x86 emulation running DOS on ESP8266

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”

The Oldest Known Surviving PC Operating System

You’ll all be familiar with the PC, the ubiquitous x86-powered workhorse of desktop and portable computing. All modern PCs are descendants of the original from IBM, the model 5150 which made its debut in August 1981. This 8088-CPU-driven machine was expensive and arguably not as accomplished as its competitors, yet became an instant commercial success.

The genesis of its principal operating system is famous in providing the foundation of Microsoft’s huge success. They had bought Seattle Computer Products’ 86-DOS, which they then fashioned into the first release version of IBM’s PC-DOS. And for those interested in these early PC operating systems there is a new insight to be found, in the form of a pre-release version of PC-DOS 1.0 that has found its way into the hands of OS/2 Museum.

Sadly they don’t show us the diskette itself, but we are told it is the single-sided 160K 5.25″ variety that would have been the standard on these early PCs. We say “the standard” rather than “standard” because a floppy drive was an optional extra on a 5150, the most basic model would have used cassette tape as a storage medium.

The disk is bootable, and indeed we can all have a play with its contents due to the magic of emulation. The dates on the files reveal a date of June 1981, so this is definitely a pre-release version and several months older than the previous oldest known PC-DOS version. They detail an array of differences between this disk and the DOS we might recognise, perhaps the most surprising of which is that even at this late stage it lacks support for .EXE executables.

You will probably never choose to run this DOS version on your PC, but it is an extremely interesting and important missing link between surviving 86-DOS and PC-DOS versions. It also has the interesting feature of being the oldest so-far-found operating system created specifically for the PC.

If you are interested in early PC hardware, take a look at this project using an AVR processor to emulate a PC’s 8088.

Header image: (CC BY-SA 3.0 DE).

Boy Off The Grid For Years Writes GUI For DOS

In a hacker version of Jumanji, when [fiberbundle]’s parents divorced, his thrice-fugitive new stepfather took him to a remote location in Australia without any access to technology or the outside world. With him he brought an old 486, a gift from his real dad. Lest the police discover them, [fiberbundle] was forbidden contact from most of society and even restricted in the books he was allowed to read.

The boy spent years trying to get the most he could out of his two-generations-old PC. Using only two textbooks from a decade and a half earlier, DOS 6.0, and QBasic he managed to write his own shell dubbed OSCI (pronounced “Aussie”), a ray-caster 3d engine and lots more. No mentors, no Internet. The computers at school were even more outdated Power Macs.

Eventually life returned him to civilization to be mindblown by modern technology 1000x as powerful. He went from playing text-based adventures he had to write for himself, to seeing Crysis. From QBasic to C++. From ASCII art “shooters” to Half-Life 2. From a 486 to a 4-core CPU. From a rural library to Wikipedia.

Follow the link above to see screens of his projects over the years. As of yet no one has verified the story, but, even if only that it is worth a read.

Thanks [Gustavo] for the tip.