Home of the original IBM PC emulator for browsers.
Over 30 years ago, in March 1993, Microsoft released MS-DOS 6.00, the next major release of MS-DOS after 5.00 shipped in June 1991....
This will probably be the final post in my “trilogy” of posts about the PC.js command-line utility, now that I’ve (hopefully) finished ironing out most of the wrinkles. I’ve improved FAT12 and FAT16 support, so when pc.js
builds either a standard or custom FAT disk image, it should be compatible with whatever version of PC DOS, MS-DOS, or COMPAQ DOS you select....
Last month, I wrote about a new tool I’ve been working on. pc.js is a stripped-down version of the web-based PCjs emulator that runs console-based DOS programs from the command-line. Since then, I’ve added a few more features and improved its ability to construct and load hard disk images....
Recently, I’ve been working on a command-line utility that uses PCjs machines to run DOS software on modern operating systems, and it’s called, aptly enough, pc.js
....
BASIC shipped with every IBM PC, both in the machine’s ROM and on DOS diskettes, making it the easiest (and cheapest) way to create programs that could run on every other IBM PC in the world. So it’s no surprise that a lot of BASIC software was created and distributed throughout the 1980s....
The PC Software Interest Group, aka PC-SIG, began advertising a directory of public domain software for the IBM PC in early 1983. A year later, their collection featured over 135 diskettes, which you could purchase for $6 per diskette, plus $4 per order for shipping. Each diskette was numbered, to make it easy to specify which diskettes you wanted. By 1986, PC-SIG was one of the most prominent advertisers of user-supported software (“shareware”), sold annual memberships, and had a collection of nearly 500 diskettes....
File compression became quite popular in the 1980s. People who used dial-up “BBS” bulletin board systems could transfer compressed data in less time, and people like me could squeeze more data onto 360K diskettes....
I first visited Paul Allen’s Living Computer Museum in October 2013. It offered a unique museum experience, combining traditional displays and plaques with interactive exhibits and vintage computers that allowed you to run a variety of old software–and even write your own....
I’ve recently been sifting through many boxes of loose diskettes. Any disks with personal information are being copied and then destroyed, while any “commercial” disks are also being copied and then put in a box for resale or donation. Hopefully later this year, my house will finally be free of ancient disk clutter....
MINIX was an operating system I had always wanted to dig into but never really did. Too many other projects, including work, got in the way. I bought Andrew Tanenbaum’s first book on MINIX, along with the IBM PC AT version of MINIX, in 1987, but the book and diskettes mostly just collected dust on various bookshelves over the years....
Next year, on August 12, 2021, we’ll be celebrating the 40th anniversary of the IBM PC, a machine that put the world of personal computing on a path we’re still on today....
It’s Solitaire Week at Living Computers Museum+Labs, and they’ve produced a lot of fun content celebrating the 30th anniversary of Solitaire for Microsoft Windows....
Thanks to the generosity of PCjs user Phil Mayes, who recently donated boxes of old PC diskettes for the price of shipping, the PCjs Software Archive continues to slowly grow....
I recently decided 2020 would be a good year to refresh the PCjs website....
When I first started working on PCjs, JavaScript features like Classes and requestAnimationFrame() weren’t widely available. Over the next 8 or so years, things changed a lot, I learned a lot, and PCjs slowly grew to support more machines....
There have been a number of small additions to the website over the last month:...
On September 9, 1986, at 11am at the Palladium nightclub in New York, COMPAQ unveiled the DeskPro 386, described by COMPAQ President Rod Canion as “the most advanced high-performance personal computer in the world.” With this product, COMPAQ effectively declared that they – along with Intel and Microsoft – were now “setting the pace for the rest of the industry”, by creating “the first of a new generation of industry-standard desktop workstations.” *...
Thanks to a contribution from a PCjs user, I was able to examine a KryoFlux dump of an original Microsoft Adventure diskette:...
MicroPro WordStar 3.20 for the IBM PC has been updated to include original MicroPro diskettes for version 3.20, along with other materials....
Before acquiring a copy of the 1988 Microsoft Programmer’s Library 1.0 CD-ROM, the oldest Microsoft CD-ROM I owned was the 1991 edition of Bookshelf for Windows....
I recently obtained a copy of Microsoft Programmer’s Library 1.0, a CD-ROM released in 1988. Microsoft had released only a handful of products on CD-ROM at that point, the first being the 1987 edition of Microsoft Bookshelf, so this is one of Microsoft’s oldest CD-ROMs....
A third piece of original unmodified copy-protected software now runs on PCjs: dBASE III 1.0....
I’ve long wanted PCjs to run unmodified copy-protected MS-DOS software directly from original disk images, but copy-protected disks are – no surprise – difficult to copy, and PCjs supported only standard DOS-formatted disk images, where all the sectors are 512 bytes, all the sector IDs are consecutive, and so on....
As I lamented in my last blog post, finding copies of the earliest versions of The Norton Utilities has proven to be surprisingly difficult – virtually impossible....
Appearing in 1982, The Norton Utilities was an interesting set of DOS tools that solved some vexing problems, most notably an “UNERASE” utility that could recover deleted files. Those tools launched Peter Norton on a journey from software developer to book author, magazine columnist, and entrepreneur, culminating in the sale of Peter Norton Computing, Inc. to Symantec Corporation in 1990 for $70M....
While browsing the December 1982 Issue of PC Magazine, I noticed an interesting letter in the “User-To-User” column (p. 320):...
The PCjs Disk Library now includes a snapshot of the MS-DOS 1.x/2.x Source Files from Microsoft’s September 28, 2018 re-release of MS-DOS source files on GitHub, along with a pre-configured machine ready to build the MS-DOS 2.x sources. A similar machine is provided below....
The original IBM Monochrome Display Adapter (MDA) had some idiosyncrasies that PCjs didn’t get quite right until recently. It all started when I was looking into this GitHub Issue regarding the best color choice for simulating the green phosphor of an IBM 5151 monochrome monitor....
A few weeks ago, I found a pristine set of all three manuals that COMPAQ shipped with their very first portable, along with an original COMPAQ MS-DOS 1.10 diskette. They are all “first editions”. The Operations Guide is dated November 1982 and the rest are dated December 1982....
Last week, I was sifting through some old email, looking for any interesting references to HIMEM
and A20
,
and I almost overlooked this short note I had written 30+ years ago:...
A couple of weeks ago, I stumbled across this tweet that piqued my interest:...
When I first created the PCjs x86 emulator, PCx86, it was a simple implementation that focused primarily on four components:...
On February 19, 2018, I received a pleasantly surprising email from a person named Eric, who had stumbled across a PCjs blog post where I was lamenting the disappearance of an old IBM EGA demonstration program called “Fantasy Land”:...
While I was working on programmable font support for EGA and VGA video cards, I wanted a quick
way to change the display mode from 25 rows to 43 (or 50) rows, and I remembered that the MODE
command that shipped
with Windows 95 did just that:...
In preparation for adding programmable font support for EGA and VGA video cards, I (re)discovered that the IBM VGA ROM font that PCjs was using was an 8x14 font, not the “higher resolution” 8x16 font introduced with the VGA. This was by virtue of hard-coded ROM font offsets that all PCjs machines were passing to the Video component:...
Thanks to a friend and former co-worker, I was able to add a small collection of early Xenix distributions to the PCjs archives recently:...
A rather ghastly quaint piece of early IBM PC software was a program called
Exploring The IBM Personal Computer. Created by Digital Learning Systems, Inc.
and marketed by IBM, it was designed to walk you through the “ins and outs” of your shiny new IBM PC, and it came in
two flavors: Monochrome and Color....
Below are side-by-side PCjs machines running Borland Turbo Pascal 5.00 and Microsoft QuickPascal 1.00. Make your browser window nice and wide, and then sit back and be mesmerized....
Since I’m finally in possession of a working IBM Monochrome Display, IBM Color Display, and IBM Enhanced Color Display, along with the requisite video cards – specifically:...
While I was working on some code to Control Machines By Serial Port, I ran into a few problems that people were probably first running into over 36 years ago....
I recently added a new PCjs TestMonitor component that is able to deliver user-defined commands to a PCjs machine via a serial port. TestMonitor is built into PCx86, and there is also a TestMonitor Utility that can issue commands to a physical machine, making it easy to compare operations between simulated and actual hardware....
The first version of SYMDEB I used was probably Version 4.00, released with Microsoft Macro Assembler 4.00:...
There are a number of “key” challenges to emulating all the keys on IBM PC and PC AT keyboards, due to differences that have evolved over time between the early PC keyboards and keyboards people are using today....
A few more interesting disks were recently added to the PCjs Archives, including:...
This past summer, I added a couple sets of Lotus 1-2-3 disk images to the PCjs archives (1-2-3 Release 1A and 1-2-3 Release 1A*), and I had noticed with some amusement that Lotus had timestamped all their files with the local time of 1:23am....
I recently added another disk to the PCjs Archives, WordStar 3.24, along with a copy of the article “WordStar 3.24 and 3.3: MicroPro Does It Again… And Again”, an interesting review/rant from 1983 on this and other versions of WordStar for the IBM PC....
Introduced in 1967, “Lite-Brite” sold for $6.95 and was described in an old print ad as an “amazing new toy that lets a child color with light. Easy to do, it’s delightfully fascinating to insert the colored pegs into the outline picture in the ‘magic’ box and see the pegs come to life in one of eight brilliant colors.”...
Building on the PCjs TI-57 Programmable Calculator emulator, I’m happy to report that PCjs can also emulate the TI-55 Programmable Calculator now. You can see both in operation below....
The new TI-57 Programmable Calculator emulator, shown below, is the latest addition to the PCjs Machines collection. It emulates a TMS-1501 chip at the register level, and uses an original TI-57 ROM, providing about as perfect a simulation as you can get....
For years, we all assumed that PCjs meant “Personal Computers in JavaScript.” Even I thought that. But now it turns out that it also stands for “Programmable Calculators in JavaScript.” Who knew?...
Today, during a random of check of my website’s “health” using Google Search Console, I was surprised to discover the following “Security Issue”:...
In my all-too-brief but soon-to-be-revisited blog post “Of Mice And When”, I mentioned that there seemed to be a lot of confusion on the Internet regarding the Microsoft Bus Mouse and the Microsoft InPort Mouse. I even found some software that claimed to emulate a “microsoft bus mouse” but was actually emulating an InPort mouse....
A book I used to have a copy of (and perhaps still do, in the bowels of my storage unit) was “Puzzled Programmers” by Michael Wiesenberg. It was published by Microsoft Press in 1987, and I recently rediscovered an online copy in the Internet Archive’s Open Library:...
While trying to bring the PCjs Microsoft Mouse Driver collection up-to-date, at least through the 1980’s, a number of versions have proven hard to find:...
One of the earliest tasks I remember tackling on an IBM PC was a basically a favor for my father-in-law, Tom Estelita. In 1984, he had purchased a copy of dBASE III and had become frustrated by its copy-protection. The previous version, dBASE II, had no such protection, which probably added to his frustration. At the time, he was running his own tiny software company, Radix 2 Software, and he certainly wasn’t interested in redistributing dBASE III – he just wanted to be able to back-up his software and switch between a handful of machines without the hassle or worry of relying on a single fragile copy-protected diskette....
While browsing the June/July 1982 issue of PC Magazine (Vol. 1, No. 3), I found the following
User-To-User
article about an intriguing little program called SPEEDUP
. Unfortunately, the first time I tried it,
it immediately hung my test machine. Here’s the original article, followed by my analysis of the program
and why it hung....
One of my long-standing pet peeves about PC emulators has been their obsession with raw speed, and how hard they try to squeeze every last drop of performance out of their instruction execution loop, on the assumption that everyone wants an 8088 that runs at, say, 500Mhz, as opposed to the stately 4.77Mhz of the original IBM PC....
You may recall from my last post that I had tracked down some useful Modula-2 test code, originally published in PC Tech Journal (October 1986), inside a ZIP archive at “THE PROGRAMMER’S CORNER: BBS ARCHIVE FROM THE PAST”....
I recently added a demo of the Logitech Modula-2/86 Compiler (1984), because I wanted to recreate the IBM PC test environment that John T. Cockerham had used in his October 1986 PC Tech Journal article “Evaluating the EGA: The EGA Standard”....
In October 1983, IBM released a game called “Adventures in Math”, which apparently tried to make mathematics as exciting as walking through a dungeon full of locked doors, treasures, spiders, and more. I had never heard of this game, until I was recently browsing the Internet Archive’s MS-DOS Showcase:...
Now that the PDPjs MACRO-10 Mini-Assembler is limping along, it’s time to start assembling some of DEC’s PDP-10 “Basic Instruction” diagnostics and loading them into a test machine. The first diagnostic I tried was KA10 Basic Instruction Diagnostic #1 (MAINDEC-10-DAKAA), which has been loaded into the machine below....
A few weeks ago, I finished my first cut of the core PDP-10 instructions in PDPjs. Most of my remaining work falls into these categories:...
Since I’ve more or less achieved all my goals for the PCjs PDP-11 Emulator, I’ve decided to turn my attention to an even older historically important DEC computer: the PDP-10....
As I mentioned in the “PDP-11 Tutorials” blog post, I’ve been working on some methods for visually illustrating how machine components work. And the PDP-11/70 Operator’s Console, with its daunting number of lights and switches, seemed like a good candidate....
As I mentioned last December, I had started converting PCjs machines to ECMAScript 2015, more conveniently known as ES6. At the time, only one PCjs machine, PDPjs, had been converted, which left the website in the unfortunate position of having duplicate shared modules: one set for ES5-based machines and another set for ES6....
Introducing PDP-11 tutorials. For more details, keep scrolling, and keep your eye on the VT100 below....
As 2016 was drawing to a close, browser support for ECMAScript 2015 (aka ES6) was looking pretty good, so maybe it was time to start taking advantage of a few ES6 features, especially:...
I recently did some more work on the PCjs VT100 Terminal emulation, making it work a bit better with other PCjs machines – specifically, PDP-11 and IBM PC machines....
I’m still trying to flush out lingering bugs in PDPjs. I’ll give you an example, using the PDP-11/70 pictured below....
Last week, I ran PDPjs through a series of early PDP-11 Paper Tape Diagnostics. These tests were originally released in 1970 and are documented in such DEC publications as the MAINDEC USER REFERENCE MANUAL (October 1973)....
Greetings from an alternate reality where DEC’s elegant PDP-11 architecture beat out Intel’s gross 8086 architecture, and DEC managed to gracefully evolve the 16-bit PDP-11 into powerful 32-bit and 64-bit successors, all while maintaining excellent backward compatibility....
Unfortunately, you’re stuck in your reality, so you have no idea what I’m talking about. Basically, your ancestors voted for the cheapest solution rather than the best solution, and now you have to live with the consequences....
PDPjs can now simulate a PDP-11/20. It was one of the first PDP-11 models, and since it had no MMU, it was limited to a maximum of 56Kb of RAM (or as DEC would say, 28K words), since the top 8Kb (or 4K words) of its 16-bit address space was reserved for UNIBUS devices....
PDPjs, a new DEC PDP-11 emulator, is the newest addition to the PCjs family of emulators, joining PCx86, PCx80, and C1Pjs....
Now that you’ve had a chance to play with a standalone VT100 Terminal, not to mention Dual VT100 Terminals, it’s time to take PCjs Machines to the next level, and begin connecting PCs to terminals....
Summer has been filled with distractions, but I’ve finally begun making headway on a DEC VT100 Terminal simulation....
This was the week of The Sharpening....
Or rather, introducing PCx80, a new 8080-based machine emulator recently added to the PCjs Project....
I recently added some more demos to the PCjs Project, to showcase its ability to run old 80286-based and 80386-based software, such as Windows/386, Windows 3.0, Windows 3.1, and Windows 95....
Yesterday, I fired up Windows 3.1 and played a complete game of Windows Solitaire on my iPad. It was a bit, um, touchy, but it worked....
IBM is obviously the company everyone thinks of first when we talk about the IBM PC – after all, IBM is right there in the name. They designed the thing. So IBM, and in particular the folks who worked in Boca Raton at IBM’s Entry Systems Division in the early 1980’s, deserve all the credit for defining what eventually became known as the Industry Standard Architecture (ISA) PC platform....
PCx86 (v1.20.9) now offers new, much easier ways to save disks and machines, thanks to the new Save Disk and Save Machine features. With one click, PCx86 can now generate a single download containing everything you need to embed any of our IBM PC demos on your own web page....
The new release of PCjs (v1.20.8) is a fairly minor update, but it’s an important one for FOOTBALL fans, resolving two annoying problems with the OS/2 FOOTBALL Boot Disk: mysterious hard-error popups and blank screens....
Before OS/2 was named OS/2 by IBM on April 2, 1987, the operating system was known by many different names at Microsoft as it evolved, including DOS5, MT-DOS, CP-DOS, and ADOS....
Just for fun (because I have a warped sense of fun), I decided to revisit some of the old OS/2 software I wrote almost 30 years ago. But first, I needed an OS/2 development environment....
It’s been nice using Node.js to power the PCjs website, using Amazon’s Elastic Beanstalk service, but that combination has also been a source of some frustrations....
Every time Windows 95 starts up, its real-mode loader performs the following CPU identification test....
Today, the last serious bug preventing a successful boot of Windows 95 was fixed. I won’t bore you with the details....
This week (July 14, 2015) was the 20th anniversary of Windows 95 RTM (“Release To Manufacturing”). So I decided to throw a PCjs party and try running Windows 95 Setup inside a PCx86 machine for the first time....
I was playing with different video modes using an IBM PC AT w/EGA and I discovered an odd problem. NOTE: In the machine below, you can also switch control to the TestMonitor window using the “CTTY COM2” DOS command and then type the TestMonitor’s “mode0e” command to replicate the SYMDEB sequence described below....
The IBM VGA (“Video Graphics Array”) standard was introduced as part of the IBM PS/2 line of computers; it was not a feature you could purchase or install in older PC, XT or AT-compatible machines. In fact, full VGA support was not even available in all PS/2 models....
This is an update to my 2014 post on the PCjs online collection of old PC Tech Journal magazine issues....
Our collection is much more complete now. We have the first issue, the last issue, and almost all the issues in between. All we’re currently missing are the first three issues of 1989, at least in terms of regular issues....
PCx86 can now boot the COMPAQ DeskPro 386/16 ROM BIOS....
Time to mention a few JavaScript idiosyncrasies, and how I deal with them....
Assembling a detailed and accurate history of the Intel 80386 CPU, including a complete listing of all the “steppings” (revisions), when they were released, what “errata” (problems) each stepping suffered from, and which of those problems were fixed by a later stepping, seems virtually impossible at this late date....
I finally dumped the COMPAQ DeskPro 386/16 ROMs from the motherboard I bought on eBay last year, so I’m ready to begin adding 80386 support to PCx86....
A new PCx86 Control Panel is under development, featuring a new “Display Panel” that will provide a variety of information about the machine, in real-time, and operate more efficiently than previous DOM-based Control Panels....
Most PCx86 machines on pcjs.org run with a compiled version of PCx86, which is produced by running the PCx86 JavaScript source code through Google’s Closure Compiler, yielding a smaller (minified) version that loads and runs much faster than the original source code....
From the beginning of the JavaScript Machines Project, I’ve always used an HTML5 Canvas object for both machine output and input. It’s the obvious choice for output, because the Canvas provides a 2D drawing API that’s essential both for drawing bitmappped graphics and for faithfully rendering individual characters using the machine’s original bitmapped fonts....
Exciting news for OS/2 fans: PCjs (v1.16.1) is now able to run OS/2 1.0 on IBM PC AT Machine Configurations. This is the culmination of recent work in PCjs to fully emulate the Intel 80286 processor and 16-bit protected-mode, including undocumented features like LOADALL and triple-fault resets....
PCjs v1.15.7 adds support for the XDF Diskette Format, which was used in PC DOS 7.00....
Coming from the C programming language, it’s easy to be “negative” about how JavaScript deals with 32-bit integers....
PCjs v1.15.6 is a fairly minor update that fixes a few Floppy Drive Controller (FDC) issues and one CPU emulation bug that prevented PC DOS 7.00 from working properly....
The 8Mhz IBM PC AT machine configuration now boots in PCjs v1.15.5, which includes the following fixes:...
I just added my first 8Mhz IBM PC AT machine configuration to the list of IBM PC Machine Configurations, and not surprisingly, the new machine fails to boot....
I’ve decided the time has come to make the PCjs Project an open source project on GitHub....
Here are a few highlights of the (evolving) JavaScript coding conventions used in PCjs....
My first IBM PC AT (Model 5170) Test Configuration finally boots to a PC DOS prompt. The configuration uses the original IBM Model 5170 ROM BIOS, dated January 10, 1984....
Getting through the BIOS “POST” (Power-On Self Test) diagnostics was like running an obstacle course, with various tests derailing the simulation at every turn....
The following fixes were made in PCjs v1.15.1...
The next milestone for PCx86 is complete 80286 emulation. My hope is to have it working by the end of the year....
As part of an ongoing effort to make classic PC technical literature more accessible, I just finished scanning and posting the 12 issues of PC Tech Journal from 1987....
PCjs v1.14.0 now includes basic EGA support. It emulates the EGA hardware well enough to pass the IBM EGA BIOS diagnostics and run Windows 1.01 in color. Check out our Windows 1.01 “Server Array” demo....
v1.13.7 of PCjs contains a few minor improvements, mostly in terms of rendering video modes a little more efficiently. The rest of the changes to the website involved beefing up support for both “software manifests” and “document manifests.”...
I had high hopes for the new AMC series “Halt and Catch Fire,” but it has proven to be an utter disappointment. I think I can suspend my disbelief as well as anyone, but this show requires you to completely turn your brain off in order to be believed. I’m also baffled by the show’s high IMDb score, which is currently 8.4 (out of 10). Either AMC has figured out how to game the system, or viewers are easily turned on by clichés, like the know-it-all Hot Programmer, the self-assured Sales Guy, and the non-plot-advancing sex that they almost instantly engage in....
I haven’t been closely monitoring the performance of PCjs across various browsers. Most of my browser testing has been limited to “Does the latest version still work in all current web browsers?”...
Lots of tinkering has been going on here at pcjs.org the past couple of weeks, but with nothing substantial to show for it. Fixing lots of little problems requires only small bits of time, whereas buckling down and tackling “the next BIG thing” for PCjs requires a much more serious time commitment, with limited interruptions....
There’s something very odd going on with between Node+Express and Safari, resulting in blank web pages. Don’t believe me? Just ask Google....
The latest version adds support for “software manifests”, which you can read more about here. Basically, manifests are simple XML files that describe a piece of software (an application, an operating system, whatever). They can also link to a PCjs machine configuration capable of running the software, along with a “ready-to-run” machine state file. Conversely, a PCjs machine XML file can refer back to the manifest, to obtain a list of disk images....
Announcing InternetJS: The Internet Emulator, the world’s smallest JavaScript application capable of emulating the entire Internet. And like all PCjs applications, there’s nothing to install. It runs safely and securely from any web browser....
While JavaScript has been doing a good job of delivering on the old “write once, run everywhere” promise that its unrelated namesake coined, the “hook once, deliver everywhere” promise seems less fulfilled....
Publishing a Node-based site to Azure was painless, thanks to their friendly web portal and GitHub integration. Getting a fully operational site, however, took a bit more time....
Initial goals for 2014 include...
As you may have noticed (or not), the website had a very modest makeover recently....
subscribe via RSS