Saturday, January 25, 2014

Meet another Video Card - The Prolink Systems, Inc. MVGA-AVGA4VL VLB Card

Recently, I found a card nearly identical to this one from http://www.vgamuseum.info/ in an old system and decided to try it out :



I have tried it out and have come to like it more than my S3-805 based Diamond Stealth VLB card.  Its slightly faster, more compatible, supports more RAM and video modes.  I have no complaints about the DOS video quality.  It uses the Cirrus Logic CL-GD5429, which supports true color modes and Windows acceleration.  It uses memory-mapped I/O for increased speed.  It comes with 1MB of RAM and can be upgraded to 2MB with two 256x16-70ns Fast Page Mode SOJ chips.

The card has two jumpers, JP1 when closed allows for IRQ2/9 usage, and JP2 when closed allows for operation when the bus speed is greater than 33MHz.  The data sheet for the family of VGA controllers, for which this is perhaps its most advanced member, is readily available.  It reports that the card's BIOS supports the following SVGA/VESA modes :

14h - 132x25T
54h/10Ah - 132x43T
55h/109h - 132x25T
5Eh/100h - 640x400x256
5Fh/101h - 640x480x256
58h,6Ah/102h - 800x600x16
5Ch/103h - 800x600x256
5Dh/104h - 1024x768x16i/p
60h/105h - 1024x768x256i/p
6Ch/106h - 1280x1024x16i 
6Dh/107h - 1280x1024x256i*
66h/110h - 640x480x32K
64h/111h - 640x480x64K
71h/112h - 640x480x16M
67h/113h - 800x600x32K
65h/114h - 800x600x64K
68h/116h - 1024x768x32Ki
74h/117h - 1024x768x64Ki

* - Requires 2MB of video RAM.
i - Interlaced Mode
T - Text Mode

This card has better compatibility that the S3 card.  EGA compatibility is very good.  Commander Keen 4, 5 and 6 and Dangerous Dave do not need the SVGA compatibility switch, Keen 1-3 and Keen Dreams do not have scrolling problems, SimCity's text fonts look correct in the EGA high resolution mode and there are almost no flickering lines in the Silpheed intro.

VGA and SVGA compatibility is outstanding.  System Shock CD allows the 640x400 mode to be used, although the speed on my 486DX2/66 is not the speed at which I would like to play the game.  It has no problem with games with unusual Mode-X VGA modes like 320x240 (Epic Pinball), 320x400 (System Shock CD), 320x199 (Jazz Jackrabbit), 360x350 (Pinball Illusions), 312x200 (Prehistorik 2), 320x184 (Jurassic Park) and 320x350 (Pinball Fantasies).  It supports SVGA 640x480 and 800x600 resolution modes in Pinball Illusions perfectly.  It works with Prehistorik 1 & 2, Duff and Lollypop, both of which use a tweaked 320x200 mode.  It is among the supported 640x400 SVGA modes of Microsoft Flight Simulator 5.x.  It can even support the old Paradise SVGA 800x600 mode that Wonderland uses.  DOOM and DOOM II run just as fast on this card as the S3 card.

The DOS refresh utility is called CLMODE and there are Windows 3.1 drivers for the chipset.  The BIOS revision on my card is 1.00A.

Prompted by a friend of mine, I decided to perform a more demanding test, namely testing this card's support with UniVBE 5.3 and 6.53.  UniVBE 6.53 reports that Linear Frame Buffer will not work reliably with CL 542x chips with more than 14MB of RAM.  Support for LFB was thus dsiabled in my system, but 16MB of system RAM is more useful in a 486 than 12MB of system RAM and LFB.  With 8MB of RAM, UniVBE will install LFB at 14MB.  UniVBE also reports that Multi Buffering and Virtual Scrolling are also available, but 8-bit DACs are not present.

The card supports lots and lots of modes with UniVBE loaded, so I didn't test each and every resolution at each and every frame rate.  With UniVBE 5.3 all the modes I tested worked.  There are more modes supported with UniVBE than with the card's BIOS, and UniVBE offers superior compatibility with some modes than the BIOS alone.  UniVBE requires 13KB of RAM and it may not be possible to load it into upper memory, so it should only be used when necessary.  Here are the list of modes the card supports with UniVBE loaded :

4-bit Banked Only
640x480
800x600
1024x768

8-bit Banked and Linear
320x200
320x240
400x300
320x400
320x480
512x384
640x350
640x400
640x480
800x600
1024x768
1152x864

15-bit Banked and Linear
320x200
320x240
400x300
320x400
320x480
512x384
640x350
640x400
640x480
800x600

16-bit Banked and Linear
320x200
320x240
400x300
320x400
320x480
512x384
640x350
640x400
640x480
800x600

24-bit Banked and Linear
320x200
320x240
400x300
320x400
320x480
512x384
640x350
640x400
640x480

32-bit Modes
None

Tuesday, January 21, 2014

SimCity for DOS - The Swiss Army Knife of Video Mode Support

The original version of SimCity for DOS, 1.02, supported a variety of video modes.  Here is a screenshot of the title screen and an in-game screenshot of the Detroit scenario with a maxed out main window for each mode:

CGA Graphics Mode 06H 640x200 Monochrome :




Hercules Graphics Mode 720x348 Monochrome :




Tandy Graphics Adapter Graphics Mode 09H 320x200x16 / EGA Graphics Mode 0DH 320x200x16 :
(note : screenshots are 200% of original)



EGA Graphics Mode 0FH 640x350 Monochrome :




EGA Graphics Mode 10H 640x350x16 :




Version 1.07 of SimCity added the following :

MCGA/VGA Graphics Mode 11H 640x480 Monochrome :




SimCity Classic for DOS dropped the CGA and Tandy/EGA 320x200 support, but added the following :

MCGA/VGA Graphics Mode 12H 640x480x16 :



MCGA/VGA Graphics Mode 13H 320x200x256 :
(note : screenshots are 200% of original)



The modes common to SimCity and SimCity Classic look virtually identical in-game, but the title screens are different.  Here they are :

Hercules Graphics Mode 720x348 Monochrome
EGA Mode 0FH 640x350 Monochrome
EGA Mode 10H 640x350x16
MCGA/VGA Mode 11H 640x480 Monochrome :


Finally SimCity Enhanced CD-ROM for DOS only supported the following :

SVGA/VESA Graphics Mode 101H 640x480x256 :

Note : Title Screen uses MCGA/VGA Graphics Mode 13H 320x200x256 (screenshot is 200% of original size)

Between the various incarnations of the same basic SimCity game for DOS, the game supported every major DOS video standard and an unusually wide variety of Graphics Modes.  Sound support was also very broad.  The original SimCity only supported sound effects, and supported the only available digitized sound hardware available in 1989 that would output digital samples without seriously compromising performance, the Tandy DAC and the Covox Sound Master.  Unfortunately, not until SimCity Classic did the game support Sound Blaster cards.

Thursday, January 16, 2014

A Tale of Two Configs

In an MS-DOS system with a 386 or better processor, when it comes to configuring the OS, typically the issue is whether to load or not to load EMM386.EXE.  Loading EMM386.EXE puts the machine into Virtual 8086 mode, and using EMM386 to make expanded memory available substantially decreases the amount of upper memory available to load drivers.  Fortunately, you need not make expanded memory available unless a program requires it.  EMM386 is used to make upper memory available for loading device drivers, and without it, those drivers must be loaded in conventional memory.  If those drivers cause the amount of free memory to be lower than the amount a program requires, the program will not load.  Use of EMM386.EXE is utterly incompatible certain programs like Ultima VII Parts I & II.  On the other hand, many other contemporary games require expanded memory to support sound.  Other games don't care either way.

HIMEM.SYS, which provides access to all the memory above 640KB, is essential to load and should always be loaded .  EMM386.EXE requires HIMEM.SYS to be loaded first.  HIMEM.SYS provides access to the high memory area and allows DOS to load most of itself there, significantly cutting down on the conventional memory DOS would otherwise take up.  For programs that require or can use it, it also makes extended memory available.

For MS-DOS 6.22, a typical 486 computer setup with a mouse, CD-ROM drive and a Sound Blaster 16   may have a CONFIG.SYS like this :

DEVICE=C:\DOS\HIMEM.SYS /TESTMEM:OFF
DEVICE=C:\DOS\EMM386.EXE I=B700-BFFF FRAME=E000
DOS=HIGH,UMB
FILES=40
BUFFERS=30
DEVICEHIGH=C:\DRIVERS\VIDE-CDD.SYS /D:MSCD001

and a typical AUTOEXEC.BAT file may look like this :

@ECHO OFF
PROMPT $P$G
PATH=C:\;C:\DOS;C:\SB16
SET BLASTER=A220 I5 D1 H5 P330 T6
SET SOUND=C:\SB16
SET MIDI=SYNTH:1 MAP:E
C:\SB16\DIAGNOSE /S
C:\SB16\MIXERSET /P /Q
LH C:\DOS\MSCDEX.EXE /D:MSCD001
LH CTMOUSE.EXE

My 486 uses roughly these lines in its AUTOEXEC.BAT and CONFIG.SYS.  Lets describe what each line does, starting with the first line of CONFIG.SYS :

1.  DEVICE=C:\DOS\HIMEM.SYS /TESTMEM:OFF

HIMEM.SYS is a Device Driver that must be loaded in CONFIG.SYS on startup.  The config.sys command to load a device driver is DEVICE=.  The full path where a device driver can be found must be included.  HIMEM.SYS is primarily used to allow DOS to access the High Memory Area, but it also functions as an eXtended Memory Manager (XMM), giving your programs access to eXtended Memory Specification (XMS) memory.  The /TESTMEM:OFF parameter bypasses a memory test that adds to the boot time.  It is only useful on 286 or above systems.

2.  DEVICE=C:\DOS\EMM386.EXE I=B700-BFFF FRAME=E000

EMM386.EXE can be used as a command or as a device driver.  It's primary function is to act as an Expanded Memory Manager (EMM), giving your programs access to Expanded Memory Specification (EMS) memory.  It also allows the creation of Upper Memory Blocks (UMB) in the Upper Memory Area (UMA).  It is only useful on 386 or above systems.  This device driver switches DOS from using real mode into Virtual 8086 mode, and some programs and games refuse to run in this mode.  By removing the EMM386.EXE line, those programs that complained about EMM386.EXE and Virtual 8086 mode and refuse to load now will load.

3.  DOS=HIGH,UMB

This line instructs DOS to load itself high, saving about 55K of Conventional Memory.  It also instructs DOS to create UMBs.  By loading drivers within UMBs, you can save Conventional Memory from being used.  You must load HIMEM.SYS to use the HIGH parameter and EMM386.SYS to use the UMB parameter.  

4.  FILES=40

DOS's default maximum number of files being open at one time is 15, but some games require more.  40 is sufficient for just about any program.  

5.  BUFFERS=30

DOS's default maximum number of disk buffers to allocate is 8, but some games require more.  30 is sufficient for just about any program.  

6.  DEVICEHIGH=C:\DRIVERS\VIDE-CDD.SYS /D:MSCD001

DEVICEHIGH tells DOS to load a device driver into an UMB.  It does not work with HIMEM.SYS or EMM386.EXE and will not work until both have been loaded.  

VIDE-CDD.SYS is a generic IDE CD-ROM device driver that works with pretty much everything and only takes up 5KB of RAM.  This device driver acts as an interpreter between DOS calls and the low level hardware.  If the CD-ROM drive used a SCSI or proprietary interface, you would load another kind of driver here.  You cannot actually use a CD-ROM as a drive until you load MSCDEX.EXE in AUTOEXEC.BAT  The /D:MSCD001 is the name given to the CD-ROM and must be used with MSCDEX.EXE.  

Alternatives to EMM386.EXE for UMBs

EMM386.EXE generally causes slightly decreased performance compared with an environment when it is not loaded.  If you want to create UMBs without it, you will have to try to find a program that will work with your chipset.  The program UMBPCI.SYS works with chipsets that provide a properly-functional PCI implementation.  Pentium/586 and later systems are the mostly likely systems to work with UMBPCI.SYS. Programs that can work with 386 and 486 computers include HiRAM, URAM, DOSMAX and RDOSUMB.  These programs only support specific motherboard chipsets, whereas EMM386.EXE is universally supported on PC compatible motherboard chipsets.  I have a 486 SiS 85C471 chipset and URAM supports it, so I use that program.  My CONFIG.SYS looks like this :

DEVICE=C:\DRIVERS\URAM.COM R=..........7777777777.... I Q
DEVICE=C:\DRIVERS\UMB.SYS C800-EFFF
DEVICEHIGH=C:\DOS\HIMEM.SYS /TESTMEM:OFF
DOS=HIGH,UMB
FILES=40
DEVICEHIGH=C:\DRIVERS\VIDE-CDD.SYS /D:MSCD001

My AUTOEXEC.BAT stays the same.

DOS 6.0 and above allows you to select your configuration properties via a boot-up menu system.  The Help in DOS 6.0 and above gives examples on how to set up a menu so that one selection will give load EMM386 and a second selection will load URAM.

Tuesday, January 7, 2014

SID and DOS - Unlikely but True Bedfellows

The Commodore MOS 6581 Sound Interface Device, the SID, is one of the most famous synthesizer chips of all time.  Its inclusion in the Commodore 64 and 128 computers helped to popularize computer music, mostly in Europe.  Like virtually every other popular synthesizer chip of the time, it made its way to the PC in some form.  Commodore had no problem in selling its chips to outside and technically rival companies. During its market life, the SID appeared in two different but related PC sound cards.

I.  The Entertainer

In 1987, Microprose was looking for a way to enhance the sound of some of its DOS games.  These games had access to superior audio hardware on the Commodore 64, Amiga and Atari ST, but the U.S. market was increasingly turning to the PCs.  Unless a PC owner had a Tandy 1000 with its 3-voice chip, he had to settle for the PC speaker, as there was no popular and cheap sound expansion hardware available at the time.  Since Microprose was still developing games for the Commodore 64, it seemed a natural idea to interface its SID chip with the PC.  They advertised a PC sound board called The Entertainer, which included a 6581 and a joystick port on an ISA card.  The only place this advertisement has ever been known to be seen is in an introduction screen and the readme to Gunship v429.04.  The readme discusses the card with the following text :

Support has been added for the MicroProse Sound Board - "The Entertainer".
Presence of the board is detected by the program and enhanced sound is
automatically generated.  Two additional control keys have been added to
control the volume.  Ctrl-V turns the sound down one notch.  Alt-V turns
it up.  Just pressing "V" alone still toggles the sound on & off.

Microprose, according to the ad, sold the card directly and it was available through "your local retailer". Two high-level Microprose employees have been contacted and have no memory of selling the card at that time, so it probably was not actually sold and if it was sold, it did not sell well.  The Entertainer card, if it was actually released by Microprose, was not supported by Microprose except in Gunship, v429.04 & 429.05 and Sid Meier's Pirates!, v432.1, 432.2 and 432.3.  It may also be supported in 432.4, which was a DOS conversion of the floppy PC booter from a Best of Microprose CD.  It was not known to have been intentionally supported in any other company's games.  The in-game ad and the text quoted above was removed for Gunship v429.05, so it is very possible that this was an idea that Microprose considered but which it did not follow through to market.

II.  The Innovation Sound Standard SSI-2001

Not too long after the Adlib Music Synthesizer Card began to be adopted by Sierra and other companies, and the idea (and more, as we will see) of a SID-on-a-chip card was resurrected by a company called Innovation.  It released a card around April, 1989 called the Innovation Sound Standard SSI-2001, which is a 6581 plus a speed-adjustable gameport.  It cost $129.00, but with discounts and coupons you could have purchased one for $69.00.  It may have only been available directly through Innovation.  Support was poor, the following games are the only ones known to support it :

Airball - SFX only, slow PC req'd
Bad Blood - Music only
Battle Chess II - SFX only
BattleTech: The Crescent Hawks' Revenge
F-19 Stealth Fighter
Falcon A.T.
Harpoon
Joe Montana Football - SFX only
Lord of the Rings Volume 1 - Floppy version only, SFX only
Red Storm Rising
Super Jeopardy
Ultima VI - Music only
Windwalker

I have verified that all the above games work with the Innovation emulation in DOSBox except for Super Jeopardy.  While Mobygames claims that Lexi-Cross and Castles and its expansion Castles : The Northern Campaign support Innovation, I have personally verified that these programs do not have install options for Innovation, despite what the system requirements labels on their boxes may indicate.  Asterix: Operation Getafix is also listed by Mobygames as supporting the Innovation, but it actually supports the InterSound MDO, a Covox Speech Thing-like device released by the French gaming company Coktel Vision.

The best informational article describing the card can be found in Computer Gaming World, Number 63, September 1989.  It mentions that only Origin and possibly Mindscape were planning to support the card.  Interplay and Microprose eventually did with more than one title.  Although Commodore made PC clones, it never put its sound chips in them.  The SSI-2001 is the only non-Commodore product I am aware of that used the SID chip prior to Commodore's failure in 1994.  

Technical details about the Innovation card and its SID implementation are as follows.  The card puts the SID chip and its 29 registers directly on the ISA bus.  It can use ports starting at 280, 2A0, 2C0 or 2E0.  280 is the default, and it takes up 32 consecutive I/O ports (3 presumably mirrored or unused).  The SID is clocked using the 14.318180 MHz clock from the ISA bus.  This clock signal is divided by the counter and flip flops on the board by 16 to produce a base frequency of .89488625 MHz.  By contrast, the base frequency of the SID in an NTSC C64 is 1.02272714 MHz and a PAL C64 is .98524851 MHz.  

The filter capacitors on the Innovation board use a value of 1nF.  This was proper according to the datasheet of the 6581, but in practice in the Commodore 64, different values were used.  By comparison, the 6581 SID in a C64 uses 470pF capacitors and an 8580 in a C64C or C128D use 22nF capacitors (1nF = 1000pF).  If Innovation had used the later 8580 chips in their card, the datasheet for the 8580 specifies 6n8/6.8nF/6800pF capacitors.  The POTX and POTY pins are not connected on the Innovation board, so the two registers which correspond to the functionality provided by these pins are useless.

The gameport is addressable at the standard port 201, supports 4 axes and 4 buttons, can be disabled with a jumper and supports three levels of "sensitivity", also selectable by jumper.  The Innovation card is the first sound card known to incorporate a standard gameport, a feature popularized by the Sound Blaster in 1990 and then ubiquitous on sound cards for the rest of the decade.

By using the joystick enable jumper and the four port range selections, one can install four boards and hence four SID chips in one computer, if you had the slots to spare.  Two boards would provide fully-independent stereo channels, but no software was known to take advantage of this capability.  

I know of exactly two Innovation boards known to be in existence, and each has minor layout differences compared with the other.  Both boards clearly show the use of 6581 chips, not the later 6582/8580 chips.  Here are images of both boards known to be in existence :

Earlier Board :


Later Board :


No one I know has ever seen a "The Entertainer" branded card.  It works just like the Innovation board hard coded at port 280, but it also has autodetection port functionality at port 200.  Gunship and Pirates! will only produce SID sound if they read a value of 45h from this port. The code string BA 00 02 EC in Gunship 429.05 executables EGAME.EXE/CGAME.EXE/TGAME.EXE and TITLE.EXE (the only version that uses unencrypted executables) must be replaced with B8 A5 00 90.  Ditto for the disk images of Pirates! Once the code is bypassed and an Innovation card is in the system or the emulation is enabled in DOSBox, you will hear SID sound.  Unfortunately, DOSBox uses the 1.02MHz frequency and 470pF Caps for the SID, so it will not sound exactly like the real boards would.

III.  The Modern Replica SSI-2001

In 2015, the prayers of many were answered when members of the VOGONS forum produced a replica of the SSI-2001 using a redesigned ISA board built mainly from photos of the card.  This is what my card looks like :


Improvements over the old card include :

Can use 6581 or 8580 SIDs.
Jumper based speed setting for NTSC clock frequency or canonical SID clock frequency
Audio input jack
4-pin audio output header (dual mono on pins 1 & 4, pin 2 is ground)
Plated holes for POTX and POTY inputs
Fully labeled jumper settings

The cards have been made by a VOGONS user named Fagear, who is based in the Russian Federation. His work is top quality and he had the good sense to use mini-jacks instead of the RCA jack on the original.  This meant that you can use any old junky ISA sound card for a bracket instead of having to make a custom bracket.  My card works great, although I had to find my 6581 SID chip from another source.

You may notice, if you order from a card from Fagear, that the markings on the ICs, except for the SID, are not the familiar 74 series designations.  The chips on this card are clones or work-alikes of the 74 series from several manufacturers exported by V/O Elektronorgtechnica.  This company was a part of Elorg, the Soviet state owned entity that controlled imports and exports of computer hardware and where Tetris was born.  However, with one apparent exception, the Russian parts appear to be functionally equivalent and use the same pinouts as the western chips.  The identifying information for every part, western or Russian is silkscreened underneath the part, as can be seen here :


The sole exception is the chip just below the silkscreened SID CLOCK on the replica board, hence the jumper if the Russian or Western part is used.  

You cannot just swap a 6581 for an 8580 in these boards whenever you like.  The 6581 uses +12v, which the ISA bus provides.  The 8580 uses +9v, which is not present on the ISA bus.  In order to use an 8580, you must install a 78L09 voltage converter.  The location is just to the left of the POT X holes.  You would probably need to remove it if you revert to a 6581.

Thanks to VOGONS user form member bristlehog, you can play back .sid files through this card through a DOS utility called SIDPLAY.  However, you will need a fast PC, around at least a 500MHz Pentium III, for proper speed.  This is because .sid files use 6510 CPU instructions and rely on the 6526 CIA or the 6569 VIC-II for their timing, so a fair amount of these chips must be emulated.  That means CPU power.

If you want to order a Replica SSI-2001 and download the player software, you can find it in this thread : http://www.vogons.org/viewtopic.php?f=46&t=27045

With this Board, I was able to verify that Super Jeopardy does output digitized sound.  The output volume is so low as to make it almost useless.  Activision got it right in the BattleTech: The Crescent Hawks' Revenge, the voice in the introduction is nice and clear with an Innovation.