Skip to content

BinaryMelodies/VAXBox

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

VAXBox, an experimental usermode emulator

VAXBox is an experimental usermode emulator for several architectures and UNIX-like operating systems. It started out specifically as a VAX emulator but grew to incorporate other architectures and currently attempts to emulate historical UNIX versions from AT&T and BSD. Its current status is an unfinished prototype, most instructions and system calls are not implemented yet. Only trivial binaries have been tested. It is shared in the hopes that it will provide insight to people about the workings of these systems, and possibly aid them with retrocoding.

Use at your own risk!!!

The emulator translates system calls into the host's system calls and can access the host file system directly.

The UNIX emulation is inspired by Apout and A7out, usermode PDP-11 and PDP-7 emulators whose sources provided much needed insight into early UNIX versions, and was helped by The Unix Tree.

The goal is to represent instructions using a high level representation that lets the programmer study them, print them or execute them, eschewing efficiency in favor of readability. The current architectures implemented are listed below.

DEC PDP-7

A PDP-7 emulator with support for early UNIX. It can be selected as pdp7. It is an 18-bit word addressed machine and has a very different memory interface and set of system calls than later versions.

I/O instructions are not supported.

The system has to be specified as v0 from the command line. Binaries are expected to be stored in a tape format where a word is split into 6-bit bytes, starting at the most significant byte, and stored in the 6 least significant bits of each successive byte.

DEC PDP-11

A usermode PDP-11 emulator with support for AT&T and BSD UNIX. It can be selected as pdp11. This is a 16-bit little endian machine (with 32-bit words conventionally represented in a flipped order) that most AT&T UNIX versions supported.

The emulator supports split instruction/data spaces and has provisions for register banks. Floating point is not implemented.

Recognized systems include Version 1 to Version 7 (v1 to v7), System III (s3), System V up to 3.2 (s5), SVR 4 (svr4) from AT&T, as well as 2.11BSD (bsd). Binaries are expected to be in a headerless raw format, Version 1 a.out (with 0x0105 signature) or later 16-bit a.out format.

Interdata 7/32

A usermode Interdata 7/32 and 8/32 emulator with support for the University of Wollongong port of AT&T UNIX. It can be selected as id32. This is a 32-bit big endian machine supported by Version 6 (v6) and Version 7 (v7) UNIX. The source code provides some support for the AT&T V7 port as well, but it has not been tested due to lack of binary files for that port.

Floating point is not implemented.

Binaries are expected to be in 32-bit a.out format.

DEC VAX

A usermode VAX emulator that can execute AT&T and BSD UNIX binaries. It can be selected as vax. This is a 32-bit little endian machine.

Floating point and vector instructions are parsed but not implemented. The emulator contains provision for PDP-11 compatibility mode.

Recognized systems include UNIX/32V (specified as 32v or v7), System III (s3), System V up to 3.2 (s5), SVR 4 (svr4) from AT&T, as well as 4.3BSD (bsd). Binaries are expected to be in 32-bit a.out or COFF format.

AT&T 3B series

A usermode emulator for the AT&T 3B series of computers and the Bellmac 32 or WE 32000 microprocessor, with support for AT&T UNIX. It can be selected as we32k, with subtypes we32000 and we32200. This is a 32-bit big endian machine.

The only recognized systems are System V versions (s5). The machine types 3b20, 3b5 and 3b2 are recognized (only 3b2 has been tested). Binaries are expected to be in COFF format.

Intel x86

A usermode emulator for the Intel x86 series of microprocessors. The primary target is the 32-bit Intel 80386, selected as 386.

The emulator can also be configured to run an Intel 8086, Intel 80186, NEC V20 (not yet implemented), Intel 80286, Intel 80386, Intel i486, generic Pentium level processor (586), generic Pentium Pro level processor (686), or a 64-bit AMD or Intel processor. Floating point and vector instructions are not implemented. The emulator understands protected mode segmentation and descriptor tables, but it can only run in privilege level 3 or real mode. The code contains provisions for an 8080 emulation mode as well. The disassembler can display instructions in Intel or AT&T syntax.

Recognized systems are System V Release 3.2 (s5), SVR 4 (svr4) and 386BSD (bsd). Binaries are expected to be in 32-bit a.out (for BSD) or COFF (for System V) format. (BSD support has not been tested yet).

CCI Power 6/32 "Tahoe"

A usermode emulator for the Power 6/32 processor also known by its codename Tahoe. It is a 32-bit big endian machine with no surviving documentation and an encoding heavily influenced by VAX.

The emulation is based on the BSD sources for the assembler and disassembler. A significant amount of code is shared with the VAX emulation of this project. The correctness of the emulation cannot be ascertained, but it successfully executed the yes binary.

The only recognized system is 4.3BSD (bsd). Binaries are expected to be in 32-bit a.out format.

Assembler

A simple assembler is provided for the VAX and WE32K architectures. It is a single pass assembler that generates COFF object files. A linker such as RetroLinker can be used to generate executables from it.

About

Usermode UNIX emulator for VAX and other platforms

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published