• MS-DOS runs on Apple IIe

    From D Finnigan@3:633/10 to All on Monday, March 30, 2026 19:12:00
    You need to add an 8088 coprocessor card to your Apple, but the result is
    that MS-DOS and "a lot of off-the-shelf DOS software just works."

    Seth Kushniryk writes:
    Two weeks ago I posted about getting MS-DOS 2.0 to boot on the AD8088 Plus coprocessor card. Since then I?ve been working on getting it into a
    publishable state, and today it?s ready.

    The source is at git.sr.ht/~sethkush/reboot-camp-83. Everything you need to build and run MS-DOS 2.0 on an Apple II with an AD8088 card is in the repository ? the full MS-DOS 2.0 kernel source (MIT licensed by Microsoft),
    the OEM BIOS, the 6502 bridge, build scripts, and a bunch of ported DOS software.

    The first post covered the initial boot. Since then the bridge ? the 6502 program that mediates between the 8088 and the Apple II ? was relocated from $0C00 to $0800, freeing up both HGR pages ($2000-$5FFF) for programs that
    want to draw to the Apple II?s hi-res screen. This was harder than it
    sounds. The relocation exposed a cascade of buffer overlap bugs between the staging area, ProDOS I/O buffers, and the ROM copy timing. I also hit an undocumented ProDOS constraint where MLI READ limits the request count to
    the distance between your data buffer and the nearest internal file buffer above it in memory. That one took a while.

    The bridge now handles INT 10h video BIOS, INT 16h keyboard BIOS, and an
    ANSI escape sequence parser in the CON driver. Open Apple acts as Meta/ESC,
    and Closed Apple maps to function and navigation keys (F1-F12, Home, End,
    PgUp, PgDn, Insert, Delete). The cursor blinks in sync with the Apple II?s
    VBL.


    You need an Apple II with an 80-column card, an AD8088 or AD8088 Plus coprocessor, and a ProDOS-compatible mass storage device (CF card, SD card, SCSI drive). Copy the output image to your storage, boot ProDOS, and select MS-DOS from the startup menu.

    Read the whole article, with screenshots: https://sethkush.com/post/2026/03/22/reboot-camp-83-ms-dos-on-the-apple-iie-is-ready/


    --- PyGate Linux v1.5.13
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From D Finnigan@3:633/10 to All on Monday, March 30, 2026 19:14:16
    Here's his earlier article with some info on the 8088 card: https://sethkush.com/post/2026/03/12/ms-dos-2.0-on-the-apple-iie/

    I?ve been porting MS-DOS 2.0 to the Apple IIe using the AD8088 Plus
    coprocessor card. It?s an 8088 CPU on an expansion card with its own RAM and ROM. The card shipped with CP/M-86, available from nanja.info. The original
    ALF advertising materials suggest there may have been an MS-DOS port at some point (they write about it in future tense, so I don?t know if it ever
    actually happened), but the original OS disks aren?t shared to any of the
    usual places. I decided to start my own port because I like directories and object-oriented Turbo Pascal, neither of which CP/M-86 supports. Today I got
    it to boot.

    [Photo of The AD8088 Plus card]

    The card has 64KB on-board RAM at 00000-0FFFF, another 64KB at 20000-2FFFF, 512KB at 40000-BFFFF, and a 256KB ROM at C0000-FFFFF (only 4KB of which is
    used by the firmware). The Apple II?s main memory is visible to the 8088 at 10000-1FFFF, and the two processors talk through a shared memory protocol:
    the 8088 writes a command byte, signals the Apple II through an I/O port,
    and waits.


    There are some constraints. This will never run CGA/EGA/VGA graphical
    programs, and probably won?t ever run text programs that write directly to VRAM. It does have full access to the 6502 address space though, so it could
    in theory run MS-DOS programs with Apple II graphics. I?m pretty sure none exist yet.


    --- PyGate Linux v1.5.13
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From Steve Nickolas@3:633/10 to All on Tuesday, March 31, 2026 17:08:06
    On Mon, 30 Mar 2026, D Finnigan wrote:

    You need to add an 8088 coprocessor card to your Apple, but the result is that MS-DOS and "a lot of off-the-shelf DOS software just works."

    <snip>

    You need an Apple II with an 80-column card, an AD8088 or AD8088 Plus coprocessor, and a ProDOS-compatible mass storage device (CF card, SD card, SCSI drive). Copy the output image to your storage, boot ProDOS, and select MS-DOS from the startup menu.

    I'm currently trying to reverse engineer the 8088 version of MBASIC
    because I'd like to be able to hack on it...maybe that would be useful.
    (The Z80 version's source is out there, as is GW-BASIC which is based on
    it.)

    That said - I haven't finished yet and have hit some rough spots.

    -uso.

    --- PyGate Linux v1.5.13
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From D Finnigan@3:633/10 to All on Wednesday, April 01, 2026 12:37:46
    Steve Nickolas wrote:

    I'm currently trying to reverse engineer the 8088 version of MBASIC
    because I'd like to be able to hack on it...maybe that would be useful.
    (The Z80 version's source is out there, as is GW-BASIC which is based on it.)

    That said - I haven't finished yet and have hit some rough spots.

    What rough spots have you hit?


    --- PyGate Linux v1.5.13
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)
  • From Steve Nickolas@3:633/10 to All on Thursday, April 02, 2026 20:03:25


    On Wed, 1 Apr 2026, D Finnigan wrote:

    Steve Nickolas wrote:

    I'm currently trying to reverse engineer the 8088 version of MBASIC
    because I'd like to be able to hack on it...maybe that would be useful.
    (The Z80 version's source is out there, as is GW-BASIC which is based on
    it.)

    That said - I haven't finished yet and have hit some rough spots.

    What rough spots have you hit?

    The disassembler I use (an old version of IDA) is interpreting everything
    as one segment but it's clearly using two.

    There are some places where the code, or the order of the code, of the
    8088 version does not quite match the Z80 version and I lose
    synchronization.

    I tried another approach - to attempt to hand-convert through search-and-replace the Z80 code - but that hasn't worked either.

    -uso.

    --- PyGate Linux v1.5.13
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)