Pcjs.org
PCjs.org: The Ultimate Digital Museum for Retro Computing For enthusiasts of computing history, PCjs.org serves as a premier destination for experiencing the dawn of the personal computer era directly through a modern web browser. Founded and maintained by Jeff Parsons , the site is more than just a collection of emulators; it is a meticulously curated digital archive that preserves the hardware and software that defined the 1970s, 80s, and 90s. A Time Machine in Your Browser The core of PCjs.org is its extensive library of JavaScript-based machine emulators . These allow users to run vintage operating systems and applications on modern devices, including desktops, iPhones, and iPads, without installing specialized software. Key machines featured on the platform include: IBM PC and Compatibles : Experience the original 1981 IBM PC (Model 5150) or the powerful PC AT (Model 5170). You can boot into various versions of MS-DOS , PC DOS , and even early versions of Windows (1.0 through 3.x). Minicomputers and Terminals : The site expands beyond PCs to include legendary hardware like the DEC PDP-11 and various early video terminals. Programmable Calculators and Arcade Games : From specialized math tools to early gaming classics like Spacewar and Star Trek , the site covers a broad spectrum of early digital entertainment and utility. Preservation Through Documentation What sets PCjs.org apart from standard emulation sites is its commitment to historical context . The site hosts a massive "Software Archive" and "Document Archive" containing: Technical Manuals : High-quality digital copies of original hardware and software manuals from IBM, Microsoft, Intel, and Motorola. The Microsoft Programmer's Library : Access to seminal works such as the MS-DOS Encyclopedia and the Microsoft Systems Journal (MSJ), which provide deep dives into early OS internals. KnowledgeBase Archives : A rare collection of early Microsoft KnowledgeBase articles, some dating back to 1987, which were otherwise lost when Microsoft moved to newer support platforms. The Technical Edge: Why JavaScript? By utilizing JavaScript, PCjs.org ensures that the history of computing remains accessible and open-source . The project is released under the MIT License , allowing developers to study the code or even embed these machines into their own projects. This approach removes the barriers to entry for younger generations of programmers who wish to see how "low-level" coding worked on 8088 or 80286 processors. More Than Just Nostalgia For researchers and hobbyists, PCjs.org is an invaluable tool for: Software Archeology : Testing how legacy code behaves on original hardware timings. Education : Learning the fundamentals of assembly language and early operating system design. Digital Preservation : Rescuing "abandonware" and ensuring it remains runnable as physical media (like 5.25-inch floppies) degrades over time. Whether you want to play a round of Othello on a simulated 1980s monitor or research the specific memory limitations of MASM 1.00 , PCjs.org provides the tools and the data to do so with academic precision and a touch of retro charm. C References: MS KnowledgeBase - C - PCjs Machines C References: MS KnowledgeBase - C | PCjs Machines. PCjs Machines BASIC Programming Language - Facebook The table lists keywords in the first column and marks the compatibility for each language in parallel columns (a dot indicating " Facebook·BASIC Programming Language Never Ending Journey – Mihail's blog
PCjs.org: Preserving the Dawn of Personal Computing through Software-Defined Machines Abstract: In the landscape of digital preservation, PCjs.org stands as a specialized and technically sophisticated project dedicated to the accurate emulation of vintage personal computers from the late 1970s and 1980s. Unlike virtual machines that run modern operating systems, PCjs focuses on low-level, cycle-accurate emulation of iconic hardware, including the original IBM PC, the DEC PDP-11, and early Macintosh systems. This paper examines the project’s architecture, its unique browser-based delivery model, its educational value, and its role in the broader ecosystem of computer history conservation. 1. Introduction As original hardware from the personal computer revolution ages, becomes scarce, and fails, the need for accurate, accessible software-based preservation grows. PCjs.org (pronounced "PC JavaScript"), created and maintained by Jeff Parsons, addresses this need by implementing emulators entirely in client-side JavaScript. The project’s primary mission is not just to run old software, but to document and replicate the behavior of classic machines down to the component level, providing a resource for historians, educators, hobbyists, and curious users. 2. Technical Architecture: Emulation in the Browser Unlike traditional emulators (e.g., DOSBox, QEMU) that require native code execution, PCjs leverages modern web standards to run entirely within a browser tab.
Core Technology: The emulators are written in pure JavaScript and HTML5. No plugins, no server-side processing of game logic—everything runs locally on the user’s device after the initial page load. Machine Components Emulated: The project emulates a wide range of hardware, including:
CPUs: Intel 8088, 8086, 80286, 80386; Motorola 68000; DEC PDP-11. Chipsets & Timers: The original IBM PC’s 8259 Programmable Interrupt Controller, 8253 Timer, and 8237 DMA controller. Video: MDA (Monochrome Display Adapter), CGA (Color Graphics Adapter), EGA (Enhanced Graphics Adapter), and VGA. Storage: Floppy disk drives (360K, 1.2MB, 720K, 1.44MB), hard disk controllers (XTA, IDE), and ROM cartridges. Peripherals: Serial ports, parallel ports, keyboard controllers, and even the IBM PC’s cassette tape interface. pcjs.org
Machine Configurations: Users can choose from a library of predefined machines—e.g., an original IBM PC 5150 with 64KB RAM and one floppy drive, or a souped-up IBM PC AT Model 339 with a hard disk.
3. The Software-Defined Machine Repository A key innovation of PCjs is its method of packaging and distributing not just emulators, but complete machine configurations and disk images as JSON-formatted "machines."
Disk Preservation: The site hosts a vast library of bootable disk images (as .json or .img files), including IBM PC-DOS, MS-DOS versions 1.0 through 6.22, CP/M-86, early versions of Windows (1.01, 2.03, 3.0), and hundreds of commercial and public-domain applications (e.g., Lotus 1-2-3, WordStar, VisiCalc, early games like Zork and Microsoft Flight Simulator 1.0). ROM Dumps: Legally, PCjs relies on the principle of abandonware and fair use for historical preservation, making available original BIOS ROMs and option ROMs (e.g., from IBM, Phoenix, AMI) that are no longer commercially viable. Documentation as Code: Each machine is accompanied by a detailed XML or JSON manifest that describes its exact hardware configuration, allowing for reproducibility. These allow users to run vintage operating systems
4. Educational and Historical Significance PCjs offers value beyond mere nostalgia:
Teaching Computer Architecture: Because the emulator operates at the instruction level, users can single-step through BIOS POST (Power-On Self-Test) routines, watch the CPU interact with memory-mapped I/O, and understand interrupt handling—all within the browser’s debugger. Software Archeology: Researchers can run original, unmodified binaries from the early 1980s without needing to locate working hardware. This enables study of early digital art, copy-protection schemes, and operating system evolution. Accessibility: A user with a modern Chromebook or iPad can, in seconds, boot an IBM PC from 1981 and run original software. This lowers the barrier to entry for students of computing history.
5. Comparison to Other Preservation Projects | Project | Platform | Accuracy | Distribution | Key Limitation | | :--- | :--- | :--- | :--- | :--- | | PCjs.org | Browser (JS) | Cycle-accurate (8088/86) | Direct web access | Performance on very old machines | | DOSBox | Native code | High (timing-focused) | Requires install | Not cycle-accurate for all hardware | | MAME | Native code | Extremely accurate (chip-level) | Complex setup | High CPU overhead, steep learning curve | | VirtualBox/VMware | Hypervisor | Low (for vintage PC) | Fast | Cannot emulate CGA, floppy controllers, etc. | PCjs’s unique advantage is zero-install, bit-accurate emulation of the original IBM PC ecosystem , combined with extensive documentation. 6. Limitations and Challenges No preservation project is without constraints: Minicomputers and Terminals : The site expands beyond
Performance: JavaScript is slower than native code. While PCjs runs 4.77MHz 8088 emulation smoothly, higher-end machines (e.g., 386 DX/33) can be sluggish in a browser. Peripheral Support: Limited emulation of sound cards (no AdLib, Sound Blaster), modems, or mice. Most demos are text-mode or CGA graphics. Legal Gray Areas: Although PCjs respects takedown requests, distributing copyrighted BIOS code and commercial software (e.g., IBM PC-DOS) occupies a legally ambiguous space that relies on historical fair use arguments. Maintenance: As web APIs evolve, the project must update its JavaScript to remain functional. Recent browser security restrictions on SharedArrayBuffer have impacted some advanced features.
7. Future Directions and Community Role PCjs is an ongoing, open-source project (code available on GitHub). Future directions could include: