IBM PC - The DOS Years
IBM PC - The Open Source Movement
Return to Home Page
For more information on any of these topics, please email me at email@example.com
I built my first personal computer, an 8008 based machine called a "Scelbi", in the early 1970s, when one had to be either an electrical engineer or an "homebrew" amateur radio operator even to build one from a kit. There was only one page of assembly instructions, beginning with "Using the parts list and the printed circuit layout diagram, install all the resistors on the printed circuit board". They didn't even bother to include a reference for the resistor color codes, obviously feeling that anyone who had to ask had no business buying the kit in the first place.
Programming the Scelbi via the front panel switches was a pain, so I modified some of my Teletype gear, and wrote a punched paper tape operating system which let me use my model 26 keyboard/printer as a console. This used up enough memory that I had to buy a 2nd memory board, thereby doubling my storage to 2048 bytes.
A year or two later, I upgraded to a "Sphere", which was a pretty nifty piece of design engineering for its time. It incorporated all of the electronics, a crt, and a keyboard into a single package, looking much as the TRS-80 would some years later. Although one did not have to be a hardware engineer to get the Sphere up and running, it had no software. So I wrote a tape cassette [and later hard disk] based operating system including an assembler and a BASIC interpreter.
My next upgrade (Cromemco) ushered in the days of the commercial operating systems (CP/M), and over the next several years I acquired an Apple ][, a C-64, a TRS-80, and the first of many IBM (and IBM clone) machines.
Although it is unlikely that I will ever power up any of these early machines again, I have recently gotten interested in being able to demonstrate some of the programs which I wrote in the 1970's, and to this end, I have written an 8008 emulator -- complete with all the lights and switches of the original.
Using this emulator, I have verified the correct assembly and execution of the following 8008 source files:
echo.asm - Echos keystrokes to
An assembler, written in C, for the above programs can be built from the following files:
[Return to Top]
The arrival of the IBM PC brought with it a choice of three propriatary operating systems -- CPM/86, UCSD Pascal, and DOS -- of which, DOS rapidly became the de facto standard, along with MASM, BASIC, and other DOS based development tools. Therefore, the new frontier became system utility programs, networking, and the development of applications which had previously been too large to squeeze onto a personal computer.
During this time, I developed a number of text adventure games, wrote the first backup program for "copy protected" diskettes, and created the the first multi-user bulletin board system (CC-BBS) for the IBM PC..
From a development standpoint,, the CC-BBS project was, by far, the most interesting, since it involved a variety of challenges, including telecommunication protocols; data base management; text processing; and implenting a multi-tasking extension to DOS. Although the Internet has made CC-BBS obsolete, the source code may still be of interest.
bufrpool.asm - Dynamic storage
ccbbs.asm - Initialization, interrupt tasks, and task manager
ccbbs.mac - Common macros
ccmsg.asm - Message database
convert.asm - Convert user file records to new format
error.asm - Error handling routines
filesyst.asm - File upload and download manager
filsbrt.asm - Local file management routines
indexam.asm - Indexed file access manager
login.asm - User login manager
main.asm - Main menu manager
msgsyst.asm - Posted messages manager
script.asm - Script file handler
subrtns.asm - Common subroutines
sysop.asm - Sysop utility routines
termnl.asm - Terminal emulation routines
usrparm.asm - User database manager
Most of the text adventure games are probably lost forever, since they were developed on 5 1/4 inch floppies, and even if those floppies are still physically readable, I no longer have any way of converting them to modern media. However, in about 1992, when I still had such capability, I did upgrade two of them to run from a hard disk, and even more recently, created a native Linux version for Castle Elsinore.
elsinore.zip - Castle Elsinore -
Native DOS & various DOS boxes, including Linux dosemu
elsinore.tar - Castle Elsinore - Native Linux
monster.zip - Monster Rally - Native DOS & various DOS boxes, including Linux dosemu
[Return to Top]
For the most part, writing i386 command line programs for Linux is pretty much the same as for Windows or OS/2, but the graphics interface is a bit more of a challenge. Here are some example programs which show how this can be done.
axgame.tar.gz - Source Files for fasm
include.tar.gz - Include Files for fasm
nxgame.tar - Source & Include files for 32-bit nasm
nx64game.tar - Source & Include files for 64-bit nasm
[Return to Top]