Session
Schedule FOSDEM 2022
Emulator Development

A Venix/86 emulator

A step in recreating Venix/86 Sources
D.emulator
Warner Losh
<p>Venix/86 was the first commercially available Unix for the IBM PC. PC/IX was the first one that IBM supported, but VentureCom created released this port about the time PC/IX was announced. They ported it to a number of the 'near compatible' systems as well, so for many people the first Unix available on those early 8086/8088 machines was Venix. This included the DEC Rainbow 100B with Venix/86R.</p> <p>A companion project to recreate the sources for Venix/86 from 7th edition tapes now available was hampered by the slow speed of the DEC Rainbow, so I wrote the emulator to seed that along.</p> <p>This talk will be about the emulator's structure, system call interface and portability to other ancient 8088/8086 Unixes. It will also discuss how many of the early ports coped with lack of a MMU in clever ways. It will touch on the path here, and then focus on the current implementation.</p>
The author had a DEC Rainbow which was supported with Venix/86R. By the time the author was employed post college, copies of it had become impossible to find. Recently, A copy surfaced and I started working with it. A number of interesting challenges for creating this port will be discussed. I took the hard path to decompile parts of libc to discover the system call interface, and went through a few preliminary implementations of Venix/86 emulation before arriving at what we have today. After the initial decompile, documentation surfaced, other incomplete copies were found along with some source, all of which confirmed most of the details that had been guessed. This has been a labor of love for me, using 4 different x86 emulators, a number of deep searches online to find as much info as I can, disassembly, etc. I'll touch on some of these aspects as well. It's currently running using vm86 on a FreeBSD/i386 bhyve instance hosted on a FreeBSD/amd64 machine nicely... A port to qemu user-* might be possible too. This goes hand in hand with another project: recreate the sources that can create a Venix kernel using the now-available 7th Edition sources, which may be a future submission.

Additional information

Type devroom

More sessions

2/6/22
Emulator Development
Roland van Laar
D.emulator
<p>ScummVM reached a milestone with the release of 2.5.0. Version 0.0.1 was released 20 years ago. The latest release was also the first release that included support for a few Director games.</p> <p>MacroMedia Director, later Adobe Director, was a multimedia application authoring platform. Its ease of use led to a huge number of graphic adventure games being written with it. This was the late 90's. Some well known games are the Journeyman Project, Total Distortion and Spaceship Warlock.</p> ...
2/6/22
Emulator Development
Anisse Astier
D.emulator
<p>While writing a Z80 emulator, you might ask yourself: should it be 100% accurate ? Maybe not, if you just want to run old software. But what if you're not and this old software accidentally depends on undocumented behavior ? In this talk we'll explore how, 30 years after its design, a few people on a Russian retro-computing forum reverse engineered an undocumented Z80 register: MEMPTR. And how 6 years later, another even less known secret register was discovered.</p>
2/6/22
Emulator Development
Stefanos Kornilios Mitsis Poiitidis
D.emulator
<p>Emulators, especially ones targeting real time performance, can become very complex, and can present unique debugging challenges - more akin to cpu, operating system and compilers than typical software projects.</p> <p>In this talk I will cover common and not-so-common classes of bugs that manifest themselves in a vast range of emulators (gameboy, dreamcast, x86/64 usermode will be used as examples), and strategies and heuristics I've used over the years to identify, prevent, mitigate, fix ...
2/6/22
Emulator Development
Alexandro Sanchez Bach
D.emulator
<p>The PlayStation 3 features one of the most ambitious and fascinating architectures among video game consoles. Once deemed near-impossible to emulate in real-time, we now celebrate the 10th anniversary of its most popular emulator: RPCS3, a free and open-source software capable of running two thirds of the console's catalogue on PC.</p> <p>This talk describes the hardware and software stack of the PlayStation 3, covering the IBM Cell/B.E. CPU, Nvidia RSX GPU and Sony's CellOS operating system ...
2/6/22
Emulator Development
Thomas Harte
D.emulator
<p>Most emulator authors will have encountered a test suite; a series of compliance tests that indicate whether their implementation matches original hardware. But these suites tend to assume a lot of working functionality beyond the part they are specifically testing, often being designed by an intelligent human being to test finished emulators.</p> <p>This presentation covers an alternative source and target of tests: random numbers, to test individual processor instructions, so that future ...
2/6/22
Emulator Development
Stephanie Gawroriski
D.emulator
<p>SquirrelJME is a from-scratch and clean-room built Java Virtual Machine implementation which targets the J2ME/Java ME runtimes which have been historically used for mobile applications such as those running on flip phones. The presentation will go over the unique challenges of implementing a JVM along with differences compared to traditional CPUs. Additionally due to the rapidly changing nature of traditional desktop Java Virtual Machines, backwards compatibility with older byte codes is not ...
2/6/22
Emulator Development
Thomas Harte
D.emulator
<p>A disadvantage of many emulators is that they require the user to know how they should configure a machine — which model, which expansions and peripherals — and what they need to type before they can use their desired classic software. Wouldn't it be nice if the emulator could just figure all that stuff out for you?</p> <p>This presentation covers three means of doing so: ahead-of-time static analysis, runtime dynamic analysis, and brute-force try-them-all parallel execution.</p>