Lua 5.3 didn't need an x86 emulator. But now, it has one regardless.
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.
asie 1efd286db1 mark IVT locations as NOP or IRET depending on implementation presence pirms 1 gada
.gitignore add command line arguments, precompiled emu_core.lua pirms 1 gada
README.md point at some test suites pirms 1 gada
changelog.txt DAA fix, speed boosts pirms 1 gada
comms.lua bugfixes in timer emulation, still wonky pirms 1 gada
compile.sh minor tweaks pirms 1 gada
config_disks.lua add command line arguments, precompiled emu_core.lua pirms 1 gada
disks.lua add changelog, uncommon fd image size support pirms 1 gada
emu_core.lua mark IVT locations as NOP or IRET depending on implementation presence pirms 1 gada
emu_core_pre.lua mark IVT locations as NOP or IRET depending on implementation presence pirms 1 gada
kbdmaps.lua fix backspace and down arrow key in curses mode pirms 1 gada
keyboard.lua bugfixes in timer emulation, still wonky pirms 1 gada
lunatic86.lua mark 0.1.1 pirms 1 gada
pic.lua first commit pirms 1 gada
pit.lua PIT emulation improvements, +5% speed bump pirms 1 gada
platform_curses.lua fix backspace and down arrow key in curses mode pirms 1 gada
platform_oc.lua fix OC bugs, mark off 0.1.1 pirms 1 gada
sysconf.lua minor tweaks pirms 1 gada
table_cp437.lua first commit pirms 1 gada
table_ocpalette.lua fix OC bugs, mark off 0.1.1 pirms 1 gada
timer.lua bugfixes in timer emulation, still wonky pirms 1 gada
video.lua bugfixes in timer emulation, still wonky pirms 1 gada

README.md

Lunatic86

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

Compilation Instructions

  1. Run ./compile.sh on a (preferably?) Linux machine.
  2. Edit disks.lua to point to your disk images.
  3. Run platform_oc.lua in OpenComputers or Kallisti, or platform.lua with lcurses (text mode only).

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: