This wiki is to provide information and manual on the UniPCemu emulator.
For information on controlling the emulator, see Controls.
For information on supported disk images and XT-IDE Universal BIOS support, see Disk images.
For information on the emulator Settings and execution modes(as well as BIOS ROMs), see Settings menu.
For information on the emulator debugger, see Debugging.
The emulated system
- Intel 8086/80186/80286/80386/80486 (Cycle-accurate 80286+(up to and including 80386 instructions) emulation, still containing some bugs due to unfound errors in the CPU emulation). 8086/8088 is pretty cycle-accurate(up to 4% off).
- IBM VGA graphics card directly emulated, CGA/MDA graphics card using a compatibility layer on the VGA(fully working, even with accurate demos), Tseng Labs ET3000 and ET4000 is mostly emulated(adding high-res up to 64K colors working on top of VGA modes(no non-VGA text modes working yet)). Various hack modes are also available(for using a VGA BIOS with software putting the hardware into CGA or MDA mode when it's control registers are addressed). EGA is emulated as a VGA restricted mode, but not comletely working due to problems with the EGA BIOS.
- MPU-401 (Requires soundfont loaded using the BIOS, or can use a MIDI command passthrough to Windows(on Windows only)).
- PS/2 keyboard (and PS/2 mouse instead of a serial mouse when set to PS/2 architecture).
- XT RTC chip (XT only, a NC MM58167 chip). It uses it's own clock instead of the CMOS RTC on AT and up(though configured using the same settings file method, but only using the time set in those settings(CMOS RAM values are ignored) as well as the EXTRARAM values.
- CMOS RTC (on AT and up, an MC146818 chip). Settings on it are architecture-dependent and configured for each architecture individually. The EXTRARAM values in the settings aren't used for this chip(those are for the XT RTC only).
- Adlib sound card(cycle-accurate, except for drum channels having sound bugs).
- IDE ATA(ATA-1) emulation. IDE CD-ROM is also fully implemented for the CD-ROM drives(On the Secondary controller, unless no ATA hard disk, which makes it move to the primary controller).
- Dual DMA controller.
- Floppy disk controller.
- PCI emulation (used by ATA controller).
- PIT timer (with PC Speaker).
- Dual Programmable Interrupt Controller (i8259).
- Serial mouse (When set only, either Serial or PS/2(8042) mouse&keyboard is selectable).
- Software debugger (Port E9 hack, also port EA extensions for my emulator (see included debugger.txt)).
- UART serial port (with Serial mouse at COM1, when not using PS/2 mouse).
- PPI hardware interface (simple buffers) for detecting floppy disk controller and specific hardware correctly.
- Lo-tech 2MB EMS Board with 4MB EMS memory on 80(1)86.
- Disney Sound Source/Covox speech things are both supported.
- XT expansion unit(only capturing memory I/O and reporting it).
- Several joysticks: Gravis Gamepad, Gravis Analog Pro and Logitech Wingman Extreme Digital.
- Game Blaster sound card, rendered at 7MHz for full quality.
- Sound Blaster 1.5 and 2.0 sound cards. Adlib and MPU-401 emulation are required, with the Adlib always emulated(instead of using the Adlib setting), Game Blaster emulation chips is optional and enabled by enabling the Game Blaster. Disabling MPU-401 emulation will also disable the Sound Blaster emulation. Recording uses a simple hack to allow realtime recording without transforming sound due to speed vs realtime differences.
- Option ROMs managed by a Atmel 64K ROM(AT28C64B).
- Serial modem(Server TCP port is configurable using the settings.ini file only, defaulting to port 23) on the second serial port with serial mouse or on the first serial port without serial mouse(PS/2 architecture).
All hardware uses the default IRQ assignments documented for XT/AT/Compaq hardware. Exceptions are(shared interrupt lines):
- ATA/ATAPI on XT: IRQ5(shared line with below and third parallel port, if any).
- Sound Blaster on any hardware: IRQ5(shared with above and a third parallel port, if any).
- VGA uses IRQ2(XT) or IRQ11(AT and up), shared with the MPU-401 controller on XT hardware only.
- The MPU-401 uses IRQ 2(XT) or IRQ9(AT and up), shared with the VGA controller on XT hardware only.
Full IRQ assignments list:
- 0 PIT
- 1 PS/2 keyboard
- 2 MPU-401 (XT only)
- 2 VGA (XT only)
- 3 UART2&4
- 4 UART1&3
- 5 Sound blaster
- 5 Parallel port 3 - unused
- 5 ATA Primary and Secondary channel (XT only)
- 6 Floppy
- 6 Parallel port 2 - unused
- 7 Parallel port 1
- 8 CMOS
- 9 MPU-401 (AT and up)
- 11 VGA (AT and up)
- 12 PS/2 mouse
- 14 ATA primary channel (AT and up)
- 15 ATA secondary channel (AT and up)
A little sidenote: The PS/2 Architecture just changes the mouse to a PS/2 mouse instead of a serial mouse, while keep using the Compaq Deskpro 386 architecture(Basically just a more modern machine). The serial mouse is connected to the first serial port(COM1). A
Different parts of the emulator (except the SETTINGS.INI file) are placed in various subfolders:
- The "disks" folder contains the disks that can be mounted with the emulator. It will be automatically generated when a disk is generated using UniPCemu.
- The "soundfonts" folder contains any SoundFonts (in 2.04 format) to be used with UniPCemu's MIDI emulation.
- The "music" folder contains any filed to be played using the Music player inside the Sound submenu. Currently Dosbox recordings (DRO) for the adlib sound card and MID/MIDI files are played using the emulated hardware. In order for playback to work, the Adlib sound card needs to be emulated(requires restart of the emulator to apply) for DRO files. The MPU needs to be having a soundfont loaded(and applied to be running, like the adlib) in order for MIDI playback to work.
- A "logs" subfolder will automatically be created to hold logging data, when anything is logged by the emulator. This is for output purposes(by the emulator) only.