Home of the original IBM PC emulator for browsers.
Over 30 years ago, in March 1993, Microsoft releasedMS-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 thePC.js command-line utility, now that I’ve (hopefully) finished ironing out most of the wrinkles. I’ve improved FAT12 and FAT16 support, so whenpc.js
builds either a standardor custom FAT disk image, it should be compatible with whatever version of PC DOS, MS-DOS, or COMPAQ DOS you select....
Last month, Iwrote 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 featuresand 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’sLiving 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 arebeing copied and then destroyed, while any “commercial” disks are also being copied and then put in a box forresale or donation. Hopefully later this year, my house will finally be free of ancient disk clutter....
MINIX was an operating system I had alwayswanted 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 ofMINIX, in 1987, but the book and diskettes mostly just collected dust on various bookshelves overthe years....
Next year, on August 12, 2021, we’ll be celebrating the 40th anniversary of the IBM PC, a machine thatput the world of personal computing on a path we’re still on today....
It’sSolitaire Week atLiving Computers Museum+Labs, and they’ve produced a lot of fun content celebrating the 30thanniversary of Solitaire for Microsoft Windows....
Thanks to the generosity of PCjs user Phil Mayes, who recently donatedboxes of old PC diskettes for the price of shipping,thePCjs 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 likeClasses andrequestAnimationFrame() weren’t widelyavailable. 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 byCOMPAQ 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 ofthe 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 originalMicrosoft Adventure diskette:...
MicroPro WordStar 3.20 for the IBM PChas been updated to include original MicroPro diskettes for version 3.20, along with other materials....
Before acquiring a copy of the 1988Microsoft 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 the1987 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-formatteddisk images, where all the sectors are 512 bytes, all the sector IDs are consecutive, and so on....
As I lamented in mylast blog post, finding copies of the earliest versionsof 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 ajourney from software developer to book author, magazine columnist, and entrepreneur, culminating in thesale of Peter Norton Computing, Inc. to Symantec Corporation in 1990 for $70M....
While browsing theDecember 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 theMS-DOS 1.x/2.x Source Filesfrom Microsoft’sSeptember 28, 2018 re-releaseof MS-DOS source files onGitHub, along with apre-configured machine ready to build the MS-DOS 2.x sources.A similar machine is providedbelow....
The original IBM Monochrome Display Adapter (MDA) had some idiosyncrasies that PCjs didn’t get quite right untilrecently. It all started when I was looking into thisGitHub Issueregarding 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 datedNovember 1982 and the rest are dated December 1982....
Last week, I was sifting through some old email, looking for any interesting references toHIMEM
andA20
,and I almost overlooked this short note I had written 30+ years ago:...
A couple of weeks ago, I stumbled across thistweetthat piqued my interest:...
When I first created the PCjs x86 emulator,PCx86, it was a simpleimplementation that focused primarily on four components:...
On February 19, 2018, I received a pleasantly surprising email from a person named Eric, who had stumbled acrossa PCjsblog post where I was lamenting the disappearance of an old IBM EGA demonstration programcalled “Fantasy Land”:...
While I wasworking on programmable font support for EGA and VGA video cards, I wanted a quickway to change the display mode from 25 rows to 43 (or 50) rows, and I remembered that theMODE
command that shippedwith 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 ROMfont that PCjs was using was an 8x14 font, not the “higher resolution” 8x16 font introduced with the VGA. This was byvirtue 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 PCjsarchives recently:...
A ratherghastly quaint piece of early IBM PC software was a program calledExploring 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 intwo flavors: Monochrome and Color....
Below are side-by-side PCjs machines runningBorland Turbo Pascal 5.00 andMicrosoft QuickPascal 1.00. Make your browser windownice and wide, and then sit back and be mesmerized....
Since I’m finally in possession of a workingIBM Monochrome Display, IBM Color Display,and IBM Enhanced Color Display,along with the requisite video cards – specifically:...
While I was working on some code toControl Machines By Serial Port, I ran into a fewproblems that people were probably first running into over 36 years ago....
I recently added a new PCjsTestMonitor component that is able to deliver user-definedcommands to a PCjs machine via a serial port. TestMonitor is built into PCx86, and there is also aTestMonitor Utility that can issue commands to aphysical machine, making it easy tocompare operations between simulated and actual hardware....
The first version of SYMDEB I used was probably Version 4.00, released withMicrosoft Macro Assembler 4.00:...
There are a number of “key” challenges to emulatingall the keys on IBM PC and PC AT keyboards, due todifferences 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 and1-2-3 Release 1A*), and I hadnoticed 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 copyof 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 describedin an old print ad as an “amazing new toy that lets a child color with light. Easy to do, it’s delightfullyfascinating to insert the colored pegs into the outline picture in the ‘magic’ box and see the pegs come tolife in one of eight brilliant colors.”...
Building on the PCjsTI-57 Programmable Calculator emulator,I’m happy to report that PCjs can also emulate theTI-55 Programmable Calculator now.You can see both in operationbelow....
The newTI-57 Programmable Calculator emulator, shown below, is the latest addition to thePCjs Machines collection. It emulates a TMS-1501 chip at the register level, and uses an originalTI-57 ROM, providing about as perfect a simulation as you can get....
For years, we all assumed thatPCjs meant “Personal Computers in JavaScript.” Even I thought that. But nowit turns out that it also stands for “Programmable Calculators in JavaScript.” Who knew?...
Today, during a random of check of my website’s “health” usingGoogle 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 thatthere seemed to be a lot of confusion on the Internet regarding the Microsoft Bus Mouse and the Microsoft InPort Mouse.I even found somesoftware that claimed to emulatea “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 theInternet Archive’sOpen 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 tinysoftware company, Radix 2 Software, and he certainly wasn’t interested in redistributing dBASE III – he just wanted tobe able to back-up his software and switch between a handful of machines without the hassle or worry of relying on asingle fragile copy-protected diskette....
While browsing the June/July 1982 issue of PC Magazine (Vol. 1, No. 3), I found the followingUser-To-Userarticle about an intriguing little program calledSPEEDUP
. Unfortunately, the first time I tried it,it immediately hung my test machine. Here’s the original article, followed by my analysis of the programand why it hung....
One of my long-standing pet peeves about PC emulators has been their obsession with raw speed, and how hard theytry to squeeze every last drop of performance out of their instruction execution loop, on the assumption thateveryone wants an 8088 that runs at, say, 500Mhz, as opposed to the stately 4.77Mhz of the original IBM PC....
You may recall from mylast post that I had tracked down some useful Modula-2 test code,originally published inPC Tech Journal (October 1986),inside a ZIP archive at “THE PROGRAMMER’S CORNER: BBS ARCHIVE FROM THE PAST”....
I recently added a demo of theLogitech Modula-2/86 Compiler (1984),because I wanted to recreate the IBM PC test environment that John T. Cockerham had used in his October 1986PC 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 asexciting as walking through a dungeon full of locked doors, treasures, spiders, and more. I had never heard of thisgame, until I was recently browsing theInternet Archive’sMS-DOS Showcase:...
Now that the PDPjs MACRO-10 Mini-Assembler islimping along, it’s time to start assembling someof DEC’s PDP-10 “Basic Instruction” diagnostics and loading them into a test machine. The first diagnostic I tried wasKA10 Basic Instruction Diagnostic #1 (MAINDEC-10-DAKAA), which has been loaded intothe machine below....
A few weeks ago, I finished my first cut of thecore PDP-10 instructions in PDPjs. Most of my remaining workfalls into these categories:...
Since I’ve more or less achieved all my goals for the PCjsPDP-11 Emulator,I’ve decided to turn my attention to an even older historically important DEC computer:thePDP-10....
As I mentioned in the “PDP-11 Tutorials” blog post, I’ve been working onsome 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 Imentioned last December, I had started converting PCjs machines to ECMAScript 2015, moreconveniently 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 setfor 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 PCjsVT100 Terminal emulation, makingit work a bit better with other PCjs machines – specifically,PDP-11andIBM PC machines....
I’m still trying to flush out lingering bugs in PDPjs. I’ll give you an example, using thePDP-11/70 pictured below....
Last week, I ran PDPjs through a series of earlyPDP-11 Paper Tape Diagnostics.These tests were originally released in 1970 and are documented in such DEC publications as theMAINDEC 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 maintainingexcellent backward compatibility....
Unfortunately, you’re stuck in your reality, so you have no idea what I’m talking about. Basically, your ancestors votedfor 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 standaloneVT100 Terminal, not to mentionDual VT100 Terminals, it’s time to takePCjs Machines to the next level, andbegin connecting PCs to terminals....
Summer has been filled with distractions, but I’ve finally begun making headway on aDEC VT100 Terminal simulation....
This was the week of The Sharpening....
Or rather, introducingPCx80, a new 8080-based machine emulatorrecently added to the PCjs Project....
I recently added some more demos to the PCjs Project, to showcase its ability to run old 80286-based and80386-based software, such asWindows/386,Windows 3.0,Windows 3.1, andWindows 95....
Yesterday, I fired upWindows 3.1 and played a complete game ofWindows 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 rightthere in the name. They designed the thing. So IBM, and in particular the folks who worked in Boca Raton at IBM’sEntry Systems Division in the early 1980’s, deserve all the credit for defining what eventually became known as theIndustry Standard Architecture (ISA) PC platform....
PCx86 (v1.20.9) now offers new,much easier ways to save disks and machines, thanks to the newSave Disk andSave Machine features.With one click, PCx86 can now generate a single download containing everything you need to embed any of ourIBM 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 forFOOTBALL fans, resolvingtwo annoying problems with theOS/2 FOOTBALL Boot Disk: mysterious hard-error popupsand blank screens....
Before OS/2 was namedOS/2 by IBM on April 2, 1987, the operating system was known by many different names atMicrosoft as it evolved, includingDOS5,MT-DOS,CP-DOS, andADOS....
Just for fun (because I have a warped sense of fun), I decided to revisit some of the old OS/2 software I wrotealmost 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 combinationhas 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 withthe details....
This week (July 14, 2015) was the 20th anniversary of Windows 95 RTM (“Release To Manufacturing”). So I decided tothrow 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 anIBM PC AT w/EGAand I discovered an odd problem. NOTE: In the machine below, you can also switch control to the TestMonitor window usingthe “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 VGAsupport was not even available in all PS/2 models....
This is an update to my 2014post on the PCjs online collection of oldPC Tech Journal magazine issues....
Our collection is much more complete now. We have the first issue, the last issue, and almost all the issuesin between. All we’re currently missing are the first three issues of 1989, at least in terms of regular issues....
PCx86 can now boot theCOMPAQ 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, andwhich of those problems were fixed by a later stepping, seems virtually impossible at this late date....
I finally dumped theCOMPAQ DeskPro 386/16 ROMs from the motherboard I boughton 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 ofinformation about the machine, in real-time, and operate more efficiently than previous DOM-based Control Panels....
Most PCx86 machines onpcjs.org run with a compiled version of PCx86, which is producedby 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 theJavaScript Machines Project, I’ve always used an HTML5Canvas object for both machine outputand input. It’s the obvious choice for output, because the Canvas provides a 2D drawing API that’sessential both for drawing bitmappped graphics and for faithfully rendering individual charactersusing 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 onIBM PC AT Machine Configurations. This is the culminationof recent work in PCjs to fully emulate the Intel 80286 processor and 16-bit protected-mode,including undocumented features likeLOADALL and triple-fault resets....
PCjs v1.15.7 adds support for theXDF Diskette Format, which was used inPC 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 fewFloppy Drive Controller (FDC) issues and one CPU emulation bug that preventedPC DOS 7.00from working properly....
The8Mhz IBM PC AT machine configurationnow boots inPCjs v1.15.5, which includes the following fixes:...
I just added my first8Mhz IBM PC ATmachine configuration to the list of IBM PC Machine Configurations, and not surprisingly, the new machinefails to boot....
I’ve decided the time has come to make thePCjs Project an open source project onGitHub....
Here are a few highlights of the (evolving) JavaScript coding conventions used in PCjs....
My first IBM PC AT (Model 5170)Test Configurationfinally boots to a PC DOS prompt. The configuration uses the originalIBM 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 varioustests 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 finishedscanning and posting the 12 issues ofPC 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 BIOSdiagnostics and runWindows 1.01 in color. Check out ourWindows 1.01 “Server Array” demo....
v1.13.7 of PCjs contains a few minor improvements, mostly in terms of rendering video modes a little moreefficiently. 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 thisshow requires you to completely turn your brain off in order to be believed. I’m also baffled by the show’shighIMDb score, which is currently 8.4 (out of 10). Either AMC has figuredout 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 hasbeen 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” forPCjs 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 askGoogle....
The latest version adds support for “software manifests”, which you can read more abouthere.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....
AnnouncingInternetJS: 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 itsunrelated namesake coined, the “hook once, deliver everywhere” promise seems less fulfilled....
Publishing a Node-based site toAzure was painless, thanks to their friendly web portal andGitHub 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....
subscribevia RSS