Emulating my old computers

Few things take me back to my childhood as effectively as my old computers. As a child, I’ve spent countless hours on them, not only playing but also learning a lot. They are getting very old now and can stop working any day in the future. But can I do anything to preserve them and the software that ran on them?

This is a journey that started a few years ago and is now mostly complete.

Enter PCem

PCem is a very interesting emulation project: it aims not just to run old software, but to emulate all the components from the old computers, this includes using the original BIOS.

Never having done any useful emulation myself, I’ve spent a few years checking this project from a certain distance, without doing any contributions. Things changed when the project began supporting hardware that was very similar to the ones present in my computers: I realized that I could use that as a base to learn and hopefully emulate them.

Doing the first computer: Hyundai Super-286TR

Me playing LHX Attack Chopper on my first computer, probably in 1991 or 1992

These are the specifications from my first computer, the Hyundai Super-286TR, which was bought circa 1991. The second column shows the status in PCem for each component.

Hyundai Super-286TRStatus on PCem
Award 286 Bios, for Chips and Technologies Single-Chip AT (SCAT) chipsetOK
F82C710 Super I/O with 1x IDE, 1x FDC, 1x Serial and 1x ParallelMISSING
AMD 286 12 MHz (have to check if it is 12 or 12.5)OK
1MB RAMOK
VGA OAK OTI-037C 256KBOTI-067 exists, should be similar enough to serve as a base
PC Speaker AudioOK
Drives A: (1.2MB 5 1/4″) and B: (1.44MB 3 1/2″)OK
~40MB HDD – don’t know the model, I was 5 when it broke. Probably a Connor CP3000 or another with the same geometry (type 33 in the BIOS)OK
8042 AT Keyboard controllerCPU turbo commands missing

This one was easy! After dumping all my ROMS (System BIOS MD5: 19a0e6a13c3b8df827add273468ebe02, VGA BIOS MD5: 0fd29240900f1fdc31aacf4c139b3457) all I had to do was implement the VGA adapter using a very similar one as a base and then implement the Super I/O configuration registers to handle PCem’s peripherals. The CPU turbo commands in the AT keyboard controller were even easier. Everything took just a few hours in total!

This system came with MS-DOS 4.01 and was later upgraded to MS-DOS 5. I don’t know if it was upgraded further before the HDD broke and unfortunately a few of the programs and games were not preserved and I can’t even remember their names! Nevertheless, I still have dozens preserved here.

The most used non-gaming programs were by far Word Perfect 5.1, BannerMania and SAS. I’ve played lots of games on this and I don’t have them all, but some are still with me. Some examples sorted alphabetically: Barbarian, Battle Chess, Blockman, California Games, Castle Adventure, Dangerous Dave, Grand Prix Circuit, Hocus Pocus, LHX Attack Chopper, Prince of Persia, Sokoban. I can’t also forget about the QBasic examples Nibbles.bas and Gorilla.bas.

POST screen
CMOS setup
MS-DOS shell in all its glory
Prince of Persia
LHX Attack Chopper
BannerMania
Word Perfect 5.1

Overall, it is a success!

Doing the second computer: Itautec Infoway Multimídia

It looked like this. Mine didn’t have the remote control or the TV capture card, though. Image from a magazine ad

This one was acquired circa 1995 and is called the Itautec Infoway Multimídia. We had no Windows 3.1 phase, jumped straight from DOS to Windows 95.

Itautec Infoway MultimidiaStatus on PCem
Intel Zappa (Advanced/ZP, Triton chipset, 256KB cache)Advanced/EV existed and was used as base
Pentium 75MHz Socket 5OK
8MB RAMOK
VGA Cirrus Logic CL-5434 1MB (Model: VI-720)OK, but hardware cursor only works with 2MB VRAM
Sound Aztech Sound Galaxy Pro 16 AB (FCC ID I38-MMSN824)MISSING
Drive A: 1.44MB 3 1/2″OK
850MB HDD Western Digital Caviar E-IDE WDAC2850 10ms 64K 4500RPM 16.6MB/s (810MB on base 2)OK, but identification is generic
CD-ROM 4x speed AZT 468-01I or AZT 468-02II had to implement the identification so that the included drivers are able to identify it
From the NS PC87306 I/O chip: 2x serial, 1x LPT, 1x at keyboardMISSING
14.400 modem (USRobotics I think! I don’t have it anymore)MISSING

This one was a little more complex. Implementing the motherboard, I/O chip and CD-ROM drive identification was easy with what PCem already had in place. I didn’t make the 1MB VRAM work (but attached the VGA to the same PCI slot to avoid re-configuration when using a dumped HDD image), didn’t implement the HDD identification and neither implemented the modem (but I SURE do miss those sounds!).

Lastly, the sound card: these Aztech cards are based on the AZT2316A chipset and are capable of acting as WSS (Windows Sound System) or as an Sound Blaster Pro v2. PCem implements both, but the problem is that there was absolutely no Aztech documentation to be found anywhere.

Because of the lack of docs, I’ve resorted to the Linux driver first. It included basic information on a few of the configs and initialized it to WSS mode using magic numbers, but it was not enough to make the original drivers work.

The next step was reverse-engineering by disassembling the original drivers and utilities, followed by testing my findings by poking at the registers on my real card. I’m not very good at reverse engineering but eventually I managed to get the card to work, including the option to save the settings to the onboard EEPROM!

After all this work, I’ve also added support to emulate cards with the related AZT1605 chip. Cards based on both the AZT2316A and AZT1605 were very popular with OEMs of the time, so I believe this will be useful to emulate many systems.

Settings testing
Playing test sounds
WSS / SBProV2 switching
The Windows utilities installed after every testing was done

Finally I put everything together. I can’t give a BIOS MD5 because there is a configuration space in the flash (and the BIOS upgrades for this motherboard should still be available on-line anyway). The VGA BIOS MD5 is 7f2c1fd555c2b8cf4d67e2c4fc13767f for the first 32KB of the 64KB ROM, the upper 32KB is all 0xFF.

During testing, I’ve encountered a curious behavior that I still don’t know if I should consider a driver bug or a game bug: the Windows 95 version of Descent II couldn’t play the Redbook (CD-Audio) tracks!

What happens is that the game calls auxGetNumDevs() to check if any of the AUX devices has caps.wTechnology == AUXCAPS_CDAUDIO, but this fails because the Aztech Win95 driver only returns a “Line-In” device. I’m not aware of any other game that does this and this is completely unnecessary. Other games that play CD audio correctly have the exact same initialization code, minus this check that only Descent 2 Win95 does. It would work if it just skipped this check and progressed with calling mciSendCommand() with mciOpenParms.lpstrDeviceType = "cdaudio", like other games do. There are some sound cards listed as incompatible in the game’s README.TXT file that are probably due to this.

Proving the Descent II Redbook audio hypothesis

For this computer, I still have all the included programs and games (properly dumped) along with everything I used in the following years. Going forward nothing is missing and every media I have put my hands on is properly dumped and archived with redundancy.

This one came with various CD-ROM titles:

  • Compton’s Family Choice (educational titles, including The Berenstain Bears stuff)
  • Compton’s Interactive Encyclopedia 1995 Edition
  • F-15 Strike Eagle III
  • The Berenstain Bears – Learning At Home Vol. 1
  • Neo, Neo Kids and Neo Wave (This was the era of “digital magazines” and these were from Brazil)
  • Zoo-opolis

Of course I also played too many MS-DOS and Windows games from the 90’s to list here, maybe someday I write something about them.

POST screen
Windows 95 booting
New users were met with a warning to create backup disks and register the computer
This is the standard frontend from the manufacturer
OEM data
Descent

What about printing?

The Epson LX-810 printer (picture from the manual)

We used an Epson LX-810 printer with these two computers. Maybe I could emulate it too? There is no printer support at all in PCem, but the LPT ports are implemented. Luckily, I’ve found and old never merged DOSBox patch from the 2000’s that implemented the ESC/P commands used to control the Epson printers. This patch alone was 99% of the way of emulating my old printer! After this, I’ve decided to tackle printing.

After porting the patch to PCem, I’ve discovered that it contained numerous printer communication, drawing and printer logic errors. After fixing all of those that I could trigger (by trying every combination of operating system, driver, program and print mode that I could think of), I think I have a reasonable emulation of the Epson LX-810.

The draft printing modes uses the font variations from here. Unfortunately these fonts do not have all the printable characters on my printer, they only support 7-bit ASCII.

The DIP-switch-selected high-speed draft printing isn’t implemented and the NLQ (Near Letter Quality) Roman and Sans Serif fonts should be specified by the user. Any good TTF font should have support for all possible characters and I’ve also completed the codepages and international character sets conversion to unicode.

For printing bitgraphs, there is an option to emulate the pins or just print continuously. I’ve also incremented PCem’s context menu to handle the front panel of the printer.

I hope to get rid of the truetype fonts and just use the same functions as the bitgraph printing if I somehow dump and understand the character ROM. Too bad I’ve skipped the printer when dumping the ROMs of my systems.

Analyzing a zoomed printer output in comparison to the original file inside Microsoft Word 6.0. When I took this screenshot I wasn’t fixing spacing in proportional TTF fonts yet.
Printing from Word Perfect 5.1. Not all positioning problems were fixed at the time of this screenshot, but at least nothing was being thrown around the page anymore.
The available options
The front panel is handled via PCem’s context menu

Bonus

While I was at it, in addition to fixing a few small PCem bugs, I’ve also added support for the Xi8088 IBM PC-XT clone project. This project is a XT clone with more “modern” peripherals (VGA, 1.44MB floppy disks, Adlib sound, CF-card adapter, PS/2 keyboard and mouse, etc.) and its GPL bios was a perfect fit for PCem. Works just like the real one that I’ve built!

XI8088’s GPL’d XT-compatible BIOS

Closing words

So, that’s it. A small summary of my journey to emulate part of my childhood. I couldn’t have done all of this without the great work of lots of people, so I’m really grateful to all of them.

One thing is still missing though: all the sounds made by the HDDs, floppies, PSUs, etc. Those are really fundamental to getting the experience “right”. Some very nice people are working on this, maybe someday it happens and then I can contribute before my hardware breaks forever!

8 thoughts on “Emulating my old computers

  1. Paulo Estrela

    Simply amazing! I had one of those Itautec machines. I would love to have it again. Whats BIOS I need to configure a Itautec machine? Advanced/ZP bios?

    Reply
  2. Paulo Estrela

    Olá Eluan, você sabe como o Master CD identifica o computador? Tenho um Master CD 1.1 e configurei o PCem pra usar o Infoway, mas ao inciá-lo com o Master CD ele fala que não serve nesse computador. Tem alguma pista? Vi que você postou fotos da tela dos software da Itautec. Obrigado. A experiência está sendo bem legal. Voltei no tempo!

    Reply
    1. EluanCM Post author

      The specific model I helped emulate does not come with a Master CD, it instead asks the user to create backup diskettes after the first boot. The Master CD models started with the Infoway A96, which uses another motherboard (Advanced/AS – Atlantis) and slightly different hardware. The interfaces are quite similar between models, so you can install using the Master CD anyway and have the nostalgic feeling. You just need to start in safe mode and install appropriate drivers which will probably be different from what the Master CD offers. Be aware that some bundled programs like the TV and Radio stuff won’t work because there is no support for that in PCem.

      The Master CD looks for specific strings in the BIOS DMI space. Lots of people stopped being able to use their Master CDs after fully updating/replacing their BIOS. If you have a BIOS with the Itautec logo you probably have these strings already. If not, there is a small trick that has been floating on the Internet for a while:

      • Use a hex editor to open the Master CD ISO image file.
      • Look for the sequence 26 83 3E EE 0F 64 75 03 E8 DF B1
      • Replace with: 26 83 3E EE 0F 64 EB 03 E8 DF B1
      • Save the BIOS and try booting.

      Let me know if it works with your Master CD.

      Reply
      1. Paulo Estrela

        Eluan, thanks for replying my questions! I will try those instructions. But should I search for that byte sequence in Master CD ISO or in BIOS file? Because in the first step you mention to open Master CD ISO, then in the last step you mention “save the BIOS” file. Oh, I asked the same question in PCem forum, feel free to not answer. I will post that procedure if works for me mentioning that you gave me those directions. If not, I will delete my question because it relates to another Itautec model, as you said.

        Reply
        1. EluanCM Post author

          Sorry for taking so long to reply, other priorities have taken precedence in the last few months. I’ve been out of the forum for a while, but I will get back there eventually. “save the BIOS” was a typo, I meant “save the ISO”. 🙂

          Hope it worked for you.

          Reply
  3. Walter

    Hi there! Testing this out on PCem, and on boot I get the screen you show but there is no message to press “ctrl-alt-esc” (and even if there was I cannot send that to the machine…)

    Mine just stays at the test screen and never progresses after the bios shadow ram check..

    How do I get this to setup or boot?

    Thanks!

    Reply
    1. EluanCM Post author

      Hello!

      Have you tried booting without any other peripherals attached other than a standard VGA adapter? Also, have you tried deleting the generated PCem NVRAM file (a.k.a. CMOS data)? It would help a lot if you could paste your config here as text.

      About ctrl-alt-esc, you say that you wouldn’t be able to send that to the machine because you are using Windows and it gets captured by the shell? Try using the right ctrl and right alt.

      Reply

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.