Building An IBM PCjr BIOS From Source Using Original Printed Source Code

As unloved as IBM’s PCjr was, with only a one-year production run, it’s hard to complain about the documentation available for it. This includes the x86 assembly listing for the BIOS, which [dbalsom] recently used this print version to create an ASM project that can be built into a byte-identical copy of the PCjr BIOS.

In order to build the BIOS image, a ZIP file has been made available that contains the requisite assembler and linker tools, all of which can be run in DOS (or DOSBox) using the provided build.bat file. This creates an executable file, which can then be converted into a BIN file using the provided exe2bin.py Python script, or of course, manually.

This image cannot be used as-is, as the PCjr has its BIOS split across two 32 kB ROMs, so splitting them is required if you intend to burn fresh ROMs. Of note is that the BIOS code is still copyrighted by IBM, so do not take this as some kind of open sourcing, unless you wish to test IBM’s legal take on 1980s BIOS code for a generally unloved system.

With an estimated 240,000 – 275,000 PCjrs sold by January 1985 and reports of hundreds of thousands of unsold PCjrs languishing in warehouses by the end. It’s hard to say how many PCjrs have survived to today, but it’s good to see that keeping this glimpse of a budget, not-quite-IBM-PC-compatible legacy alive has become a little easier again.

Heading image: IBM PCjr internals. (Credit: Binarysequence, Wikimedia)

5 thoughts on “Building An IBM PCjr BIOS From Source Using Original Printed Source Code

  1. This image cannot be used as-is, as the PCjr has its BIOS split across two 32 kB ROMs, so splitting them is required if you intend to burn fresh ROMs.

    Tip: On Windows, the shareware version of the WinHex hex editor can do that.
    It can split, merge and interleave binary files. Among other things.
    Useful if soneone has to work with odd/even binary images, for examples.

  2. In order to build the BIOS image, a ZIP file has been made available that contains the requisite assembler and linker tools, all of which can be run in DOS (or DOSBox) using the provided build.bat file.

    MS-DOS Player is another option, it can run DOS executables straight off Windows NT command line.
    Which is useful to run DOS-based compilers, linkers or ZIP programs (ARC, PKZip etc).
    MS-DOS Playwr an built-in x86 emulator and works on Windows x64, too.
    Then there’s also XT.. a young DOS command-line runner.

    https://www.zophar.net/pc/ms-dos-player.html
    https://github.com/electricbolt/XT

    1. “XT” is pretty cool:

      “Because there is no Video RAM, ROM BIOS, Option ROMs or DOS kernel in memory, programs get almost the entire 1MB address space to run.”

      That would have been very useful back in the day when Windows was new and programs were ported from DOS to Windows! :-D

      It could have been used to extend the size of DOS programs a little more before hitting the memory barrier and needing XMS or EMS.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.