The original SimCity 2000 had a strict requirement for an SVGA video card that supported 640×480 resolution with 256 colors. I used to believe that this was an inflexible requirement, but it turns out that the hardware requirements were eased in the Windows version. Not only did it allow the game to run in 16-color modes, but it was also bundled with a special VGA driver developed by Microsoft. This driver enabled modifications to the color palette, just like in the 256-color modes. I was completely unaware of the existence of such a feature until recently.
For those of you who are new to the world of vintage computers, this article can provide some valuable context and perspective. I delved into why the 386 was such a crucial milestone for PCs and a few lesser-known details. I absolutely adore this machine. I don’t think I own any other portable computer from the 80s that brings me as much joy while working on it. If only it were just a tad lighter..
8bit guy published a video about SuperCGA cards, which reminded me that this was a topic a recently dug into. I’ve never really worked with CGA/EGA monitors. When we had a computer at home for the first time in 1989, it was an IBM PS/2 Model 20 borrowed from dad’s office. That computer already had an on-board graphics chip that worked with VGA monitors. One year later, my family decided to buy our own computer. It was a 286 clone with an SVGA graphics card and an SVGA monitor able to show 1024×768 (interlaced though).
During the Bytefest (a vintage computer show in Czech Republic), one of the computers I brought there was an early Vienna 286. A friend of mine promised that he would have brought an EGA monitor, so I could try a card I bought just for this purpose – a Trident 8800CS (512KB). This Trident has both VGA and RGBI/TTL (CGA/EGA) outputs and can be switched to act like different IBM graphics chips. Sadly, the Trident card was ignoring the switches and always used VGA timing. It sent the signal always to both outputs but my EGA monitor was not able to sync 640×480 with 31kHz h-sync (as expected). We brought an oscilloscope, even made some modifications to the card, but nothing helped. When I asked in some groups, the only answer I got was that somebody tried the same thing on his Trident 8800CS with the same result.
Anyway, I also had the original ATI Graphics Solution card that was sold with the computer somewhere in 1987, so at least I had something else to play with. This is a very neat card. It has 64KB of video RAM and supports both CGA and Hercules modes. As I shown in the past, it even supports CGA modes on Hercules/MDA monitors using clever timing tricks. The card was used in the Hercules mode for the whole its life as the machine served in an electrical engineering lab for designing electric circuits. This was finally the time for me to switch it into the native CGA mode.
Seeing the CGA modes was not so interesting for me. However, the card supports also non-standard modes that can utilize the whole memory which is four times of what the IBM CGA has. The obvious choice was something that supports Plantronics ColorPlus which ATI supported like many other CGA-clone vendors. Yes, I tried Planet-X3 and Space Quest 3 in 320×200 with 16 colors. However, Planet-X3 is a modern game, and the Space Quest 3 uses a modern video driver to support this card (the original game did not have it). I was more interested in productivity apps. After seeing that GEM Desktop (sort of a Windows competitor) provides support for ColorPlus, I installed the whole bundle.
At the beginning, everything looked just like with CGA – black & white only. This was because the desktop environment does not use more colors there. On the other side, if I moved the mouse fast enough, it was visible that sometimes the cursor was ping instead of black for a moment. Thus, I knew that we were actually in the 4-color mode. After installing office programs, I was finally able to see all four colors in 640×200. Quickly after that I realized that among desktop accessories, there is a calculator that uses magenta as a background color. Anyway, I am happy that I also tried these office/productivity apps. From my point of view, they are gimmick. They look like they support everything but when you try to do something, you get the feeling that they were designed more to present the functionality of the desktop environment.
The ColorPlus had just 32KB of video RAM and my ATI Graphics Solution has 64KB, so it should be able to drive 640×200 in full 16 colors. I’ve checked the user guide for the card and indeed this mode was mentioned there. ATI manual says that there is support for it in AutoCAD, PC Paintbrush+, Lotus 1-2-3, Symphony and Framework II. I installed the PC Paintbrush+ as a bitmap editor can benefit the most from such a mode. The support for this card was built in the software so no extra drivers were needed. After selecting the mode, I was able to get the best out of a CGA 200-line monitor. What I really like, the bundled ATI driver disk contains a small example program to enable this mode (including its source code), so programmers could modify their own programs to get more than what a standard CGA offered.
After years, I’ve finished a long in-depth write-up about an interesting piece of history – the SGI IrisVision 3D accelerator from 1990. It was a scaled-down version of the graphics board set from the SGI Personal IRIS and was intended for PC compatibles (16-bit AT bus) and PS/2 computers (MCA).
The whole thing started when IBM licensed the graphics hardware and the IRIS GL 3D API for their IBM RS/6000 UNIX workstations. Although the IrisVision was not very successful (like all 3D accelerators of the era), it is cool that IRIS GL programs could run under DOS.
At the end of the article, there is a video showing the card in action in a high-end IBM PS/2 Model 70 with a 25-MHz Intel 386 and 387.
Thanks to friends of mine, I was able to get two working parallel-port ZIP drives from Iomega. My father used to use these during the 1990s as ZIP disks were popular in offices in Czech Republic. He later switched to an internal ZIP drive connected to IDE when his parallel-port external one died and used it for another 10 years.
I have a few systems where it is not possible to add a network controller so I though that this would be a good device for faster data transfers (compared to a null-modem cable or diskettes) or accessing data larger than the internal hard drives.
It works just fine. The only drawback is that you usually need a 486 system to leverage full speed of the external drive. My 386 laptops do not support the ECP/EPP protocols on the parallel port, so the access speed is significantly limited (150KB/s?). Anyway, it is still convenient enough for running DOS programs straight from the external drive. I am surprised how nice driver support Iomega provided for DOS and Windows 9x. There is even a “guest” driver in a form of a single exe file – just run it and you can immediately access the drive using a newly assigned drive letter.
I recently mentioned PCMCIA linear memory cards (both SRAM and flash) that existed before PCMCIA controllers started to support IO devices and ATA. I used such an SRAM card in my Olivetti Quaderno subnotebook instead of its failed hard drive. Quaderno boots DOS from the internal ROM, loads a driver to support SRAM and allows using it as an additional drive. However, there were also laptops that supported booting from PCMCIA cards, and I am surprised that this feature was not uncommon.
Certain 386/486 laptops with Phoenix BIOS have “PCMCIA” in the boot device list (in addition to “hard drive” and “floppy drive”). These support just linear flash/SRAM cards and let you boot DOS out of the card mapped as A:. Everything works just fine and you don’t need to load any PCMCIA driver. ATA PCMCIA and CompactFlash drives are not supported here – they are ignored by the BIOS module.
The laptop with AMI BIOS could have an optional “PCMCIA Boot Function” module. Once it was enabled and a card was inserted, the system booted from PCMCIA and mapped the card again as A:. However, the support was flaky – just good enough to load a proper PCMCIA driver during OS boot.
Laptops from large brands (like Toshiba) mostly didn’t support this feature. ThinkPads were an exception (486 and maybe also early Pentium ones). According to some owners, they even supported booting from ATA/CF cards. However, ThinkPads as well as the laptops with Phoenix and AMI software did not provide a driver-less access to PCMCIA cards if a user booted from a different device. It seems that there is only one known laptop that supported this – MiTAC 4022.
Although mounting remote HDDs over a serial cable to my Olivetti Quaderno was a nice solution, it was not very fast. I wanted to add persistent storage using a PCMCIA card, but Quaderno has just PCMCIA 1.0. I used to work a lot with PCMCIA, but it was always the newer standard (2.0) typical for 386/486 laptops. PCMCIA 1.0 does not support IO devices (so no ethernet cards) or CompactFlash cards (as they are IO cards in the ATA mode). PCMCIA 1.0 can work only with linear memory mapped cards. For linear flash cards, there were two incompatible standards (FTL and MS FFS). SRAM cards had just a single standard. In addition to all of this, simpler devices (industrial, embedded) required attribute memory on the card in order to work at all (fortunately, this laptop supports full Card Services and does not need it).
I took a 4MB PCMCIA SRAM expansion from my Amiga 600 and put it in Quaderno. The ROMDOS drive contains a Microsoft program called MEMCARD.exe (very similar to FDISK.exe, but for early PCMCIA cards), so I used it to format the card, rebooted the machine and got 4MB of persistent storage (the SRAM card has a battery to retain the data even after removing the card from the computer).
These early PCMCIA cards don’t work in Windows out of the box. However, there is already a DOS driver included in Windows 9x. You just need to add two lines in the config.sys and you can use the SRAM card in a “more modern vintage computer” (it still allows you to use the slot with other cards and use hot-plug features). Btw these direct mapped SRAM cards have one big advantage – they are super-fast.
I know it’s almost 30 years late, but I finally understood, how these old PCMCIA devices work…
You might think that the machine is useless without a working HDD and no floppy drive, but that is not true. Quaderno has a small bootable “ROMDOS” drive with basic system files, COMMAND.COM, a RAMDISK driver (up to 320KB of EMS memory can be used and you still have full 640KB of conventional memory) and Interlink software. This drive is interesting, because it acts like a read-write one. You can edit config.sys and autoexec.bat (the changes are there even after shutdown, if the CMOS battery is ok or AC is connected). You can even copy files there, but if it’s more than a few KB, the system will crash hard (requiring you to reinitialize the ROMDOS).
With Interlink, you can mount remote HDDs over a serial port. I used it to run VC (Volkov Commander) to edit the config.sys (no EDIT.COM in ROMDOS) and enable the RAMDISK driver. After this, I had my small but fast local storage (non-persistent) and everything bigger was started directly out of the remote HDD from another computer. This is a good way to test the computer before fixing the HDD or installing a flash/SRAM card in PCMCIA 1.0.
SimCity 2000 running on DECpc 325SLC (both from 1993) – This 25-MHz 386SL laptop was available with a color passive-matrix screen and thanks to its Western Digital graphics chip (512kB video RAM) it could handle 256 colors in a resolution of 640×480 (required by the game).
Not bad for a laptop that cost only about $2,100 when released.
I took this photo while working on the MS QuickBasic version of our benchmark (previously written in C and Assembly). The goal was to compare speed of different languages and compilers. This required me to relearn BASIC so I always needed to see online help, my BASIC code and the original C code on a single screen. Switching a screen into the VGA 80×50-character mode is invaluable in these situations.
Regarding the results: I tested all versions of our benchmark, which is mostly about integer performance and memory access (similar to compiling and XML parsing), on this IBM PS/2 P70 with a 20-MHz 386 (DX). Interpreted QuickBasic 4.5 version was used as a baseline (1x). These are the speed-ups: