Skip to content

asiekierka/lunatic86

Repository files navigation

Lunatic86

Barely-IBM-compatible PC emulator written in Lua 5.3.

Usage

  1. Copy over the .lua files to an OpenComputers drive.
  2. Prepare uncompressed, raw .img files for your floppy disks and hard disks.
  3. Run Lunatic86 (lunatic86.lua -h for help).

Note that floppy drives require a known floppy drive-matching size. Meanwhile, hard drives can be of any size, but they are assumed to always have 63 sectors and 16 heads.

Development

Do not edit emu_core.lua! It is automatically generated by compile.sh - edit emu_core_pre.lua instead.

  1. Run ./compile.sh on a (preferably?) Linux machine.
  2. Run lunatic86 in OpenComputers. (The curses port needs fixing)

What's Emulated?

Probably decently

  • CPU: 8086-esque
  • Graphics: CGA (640x200x1, 320x200x2, text modes), 320x200x8 (Mode 13h)
    • With some partial I/O ports emulation!
  • BIOS: High-level emulation
    • Decent implementations of most expected interrupts

Pretend

  • Audio: PC Speaker (Computronics Beep Card)
  • Keyboard: PC XT-compatible
  • 8259 PIC
  • 8253 PIT

Not even tested

  • Graphics: Tandy-compatible

Not even implemented

  • BIOS: Serial/Printer Port interrupts, INT 15h
  • Pretty much anything not listed

Notes

  • platform.lua outputs debug text to stderr. Run with "2>/dev/null" to avoid.
  • The performance on my desktop (i7-4790K) seems to be:
    • about 3x PC XT in Lua 5.3,
    • about 0.6x PC XT in latest stable OpenComputers,
    • about 1x PC XT in latest stable OpenComputers + fixed machine.lua - you may override it server-side,
    • about 1.8x PC XT in latest stable OpenComputers + fixed machine.lua + natives recompiled to actually use -O2 and not debug mode,
    • about 2.5x PC XT in Kallisti with the timeout-checking code disabled altogether, and about 1.8x PC XT otherwise.
  • There's a lot of bugs and hacks.

Known issues

Many. See the Wiki for the Compatibility List.

In particular, a "reduced memory usage" mode has to be introduced for OC users.

Licensing

TBD. For now, consider it "all rights reserved" - or just ask on IRC.

Acknowledgements

  • 8086tiny, for providing the initial motivation and being one of the emulators which proved helpful during development
  • Publicly available 8086 test suites used:

About

Lua-based IBM PC-ish emulator for the OpenComputers mod

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published