Sunday, April 27, 2014

The Original 8-bit XT IDE Interface

Back in the late 1980s, Western Digital had a good idea.  Its idea was to simplify hard drive interfaces and make them much more reliable by incorporating all the drive interface electronics on the hard drive.  Instead of having two ribbon cables connect a mostly dumb hard drive to a complex controller board, as was the case for the IBM XT and AT drive controller boards, all that would be required was one cable.  This cable would bring only the pins of the AT/16-bit IDE bus (essentially the data bus lines and a few address lines and some drive select signals) that the drive needed and could be implemented with simple glue logic.

This was a great idea and eventually became predominant in the industry for reasonable cost hard drives.  Reliability and data transmission speeds markedly increased.  The older ST-506 interface was already long in the tooth, and its successor, the ESDI, still used separate cables for data and control and still had too many functions on an interface card to implement on a PC motherboard.  SCSI was, and still is, a high cost, high end solution with its own headaches.

However, consumer based PCs of the late 1980s were increasingly feeling the pressure to add hard drives, or least the option to install one, into the PC.  When Western Digital and others were finalizing the AT Attachment (ATA) Standard, they also introduced a less functional version of the standard called the XT Attachment (XTA) Standard.  This has also been called 8-bit IDE and XT-IDE, but care must be had to distinguish it from the modern XT-IDE devices.  Hereafter, I will refer to it as XTA.  The chief differences between the two standards are as follows :

AT Attachment XT Attachment
Data Path 16-bit Wide 8-bit Wide
Number of Drives Supported 2 1
I/O Addresses Used 1F0-1F7, 170-177 320-323, 324-327
Hard Drive Capacities 20MB-504MB 20MB-40MB
ROM Addresses Integrated into BIOS C8000-C9FFF
Interrupt IRQ14, IRQ15 IRQ5, IRQ2
DMA None 3

The XTA interface was intended to replace the IBM PC/XT Fixed Disk Drive Adapter, which worked on I/O 320-323, IRQ5 and DMA3.  The ATA interface was intended to replace the IBM PC AT Fixed Disk and Diskette Drive Adapter, which used I/O 1F0-1F7 and IRQ14.

Several very interesting systems from the late 1980s and early 1990s had the XT-Attachment interface.  This includes the 286 based Tandy 1000 TL/2, TL/3, RLX, RLX-B, IBM PS/2 Model 25-286 and Model 30-286, and the IBM PS/1 Model 2011.  Also, the 8086 based Tandy 1000RL & RL-HD and the IBM PS.2 Model 25 and Model 30 also had this interface.

The IBM version of the XTA interface derivatives somewhat from the standard.  It uses a 44-pin cable and supplies power to the drive on some of the pins instead of a separate Molex connector.  In its 286 machines, which have or can be equipped with 16-bit ISA slots, IRQ14 will be used instead of IRQ5.  Their hard drive BIOSes may be integrated into the main BIOS.  

With the Tandy XTA interface, you are typically restricted to only a few hard drives, including the Seagate ST-325-X (20MB) and ST-351-A/X & ST-352-A/X (40MB), the Miniscribe M8225XT (20MB) and M8450XT (40MB) and the Western Digital WD95028-X-11R (20MB), WD95038-X-11R (30MB) and WD93044-X-11R (40MB).  The best drives from Seagate offer a 28ms seek time, the other drives can have a 40ms seek.  Conner Peripherals, Epson and Areal and Prairietek also made XTA drives.

The best of the bunch must be the Seagate ST351A/X.  As its name implies, the drive can work with an ATA or XTA interface.  Thus it can be connected to a modern IDE port without difficulty, although its storage capacity is still tiny compared to what is available today.  On the standard IBM drives table, it would be type 18.  Tandy sold the WD93028, WD93044 and ST-325-X.  The WD drives have a low-level format utility and require head parking when being moved.  The ST drives do not and can auto-park their heads.

One word of caution cannot be emphasized enough when dealing with these drives.  Do NOT use a low-level formatting program unless that program is specific to your manufacturer and drive.  DOS formats at a high level, and you should use that.  While the Seagate drives use 17 sectors per cylinder, the WD and MS drives use 27 or 28.  

As you can see above, the XTA interfaces has many drawbacks and disadvantages to the ATA interface.  For modern devices, the most important limitation is the I/O ports used.  Modern Parallel ATA hard drives, Disk On Modules and Compact Flash cards only support the ATA interface and the eight register addresses it uses.  While CF and DOMs support an 8-bit transfer mode, they must be programmed into this mode on bootup.  

Three difficulties present themselves in trying to get modern hard drive devices to work with the XTA interface.  First, the data, control and status information would need to be translated from the ATA interface of the device to the XTA interface of the system.  Second, the device would need to support and be put into 8-bit transfer mode on startup.  Third, the BIOS would need to be instructed on the correct geometry for the modern device.  While #1 and 3 can be fixed with a ROM BIOS extension, #2 is not an easy fix because the XTA connector presents I/O at 320, not 1F0.  In theory, someone could design an adapter that could do all three.  

Commodore 64 - No NTSC Love

Despite the Commodore 64 being the best selling computer model of all-time and being manufactured by a US company, all the major vintage enthusiasm for the machine seems to be centered on its presence in the UK and Europe.  In NTSC countries like the United States and Canada, there is arguably much more of a vintage interest in the Apple and Atari 8-bit computers.

In Europe, software for the Commodore 64 came primarily on cassette tape.  The Commodore 1530 C2N Datasette was competitively priced, the Commodore 1541 Floppy Disk Drive was not for what was came to be seen primarily as a games/hobbyist machine.  Virtually all European software came on tape, while only the pricey US imports like Ultima and Wizardry came on disk.  Cartridges, which were not dominant in the US after 1984, were seldom seen in Europe.

The tape medium imposed sharp limits on the varieties of games that could be played on a C64.  A full load of the 64KB of RAM took several minutes from tape, and once loaded, that was it for the game.  Since precise loading of data from one side of a tape was not very friendly to the player, one side of the tape equaled one load of a game.  Platformers, shumps, soccer (association football) and fighting games were very popular genres.  Turn-based strategy games, lengthy text-based adventures and RPGs were not popular on tape. Imagine having to fast forward a tape until the counter reached 200, 300 or 500 to load a town or a map. Wasn't going to happen.

The real problem is that most U.S. developers came late to the Commodore 64, having cut their teeth on Apple or Atari computers.  To most developers, the C64 was just one more machine that would need a port of a popular game.  Eventually U.S. developers did develop some games natively for the C64.  Maxis' Raid on Bungeling Bay and SimCity was developed for the C64, as was Microprose's Gunship and Sid Meier's Pirates!.  Activision contributed Little Computer People. Lucasfilm offered Labryinth, Maniac Mansion and Zak McKracken and the Alien Mindbenders, and from Electronic Arts there was Skate or Die! and Interplay contributed Neuromancer.  SSI developed its famous AD&D Gold Box engine for the C64 including Pool of Radiance and Curse of the Azure Bonds.  Epyx was prolific when it came to C64 development with Impossible Mission and other classics, but unfortunately that company foundered on what would become the Atari Lynx.  By the end of the 80s, all these US developers had shifted their focus to the generic IBM PC Compatible platform.

Many US-originated games are popular with Commodore 64 enthusiasts, even in Europe.  LucasArts' classics top many lists, and you can usually find an Ultima, M.U.L.E., Wasteland and others.  On more than one list of the top C64 games, roughly half come from US companies.  However, I have heard more than one commentator say that the NTSC C64 is crap and that you should get a PAL one instead.  Most US games will work (18% more slowly) in a PAL machine, while most of the good PAL games rely on timing that will break in an NTSC machine.

Many European C64 games were not as widely ported.  Some went to the Amiga, and some Amiga games like Turrican received very high quality ports to the C64.  While many games were ported to the ZX Spectrum, no one was going to favorably compare a ZX version to the C64 version, except perhaps in price.  Many companies decided develop their advanced efforts on the Commodore Amiga (the 500 was priced well in Europe) or the Atari ST instead of the boring PC clones.  Other than Cinemaware, US developers did not really embrace the Amiga, and the Atari ST and Apple IIgs saw even fewer natively developed game titles.

One great advantage of the Commodore 64 is that virtually all the classic US PC games of the early and mid-1980s, and even many late 1980s games, found native releases or ports to the system.  Some of the later Infocom games require a Commodore 128 to play (A Mind Forever Voyaging, Beyond Zork, Trinity) and some can take advantage of the 128's features (Ultima V, Hitckhiker's Guide to the Galaxy).  Developer interest virtually disappeared in the Atari 8-bit line after 1985 outside of Atari, and the Commodore offered far superior graphics and sound to the Apple II line.  By 1988, PCs had come down sufficiently in price that game developers could target them.  Decent graphics (EGA) and sound (Adlib) made the PC less of a chore to develop for than in the days of CGA and the PC Speaker.  However, the advent of affordable hard drives, and the enormous increase in functionality they provided, really helped establish the PC as a programmer's best friend.

The use of cassette tape had its advantages as well as its drawbacks.  Since the tape usually took some minutes to load, the programmers could send a static picture first and a musical tune to entertain the player while the game loaded.  The disk was faster but servicing it seemed to require the computer's total attention, so this sort of thing was not common for disk games.  Another advantage of the cassette game was that they were easier to copy and rip than disk games.  Cassettes were cheaper than disk, and the games were generally much, much smaller.  It's quite easy to distribute most of them as a simple Commodore executable file these days if you just want to play the game.   It is not so easy to do that with, say, Ultima V, which came on four double-sided floppy disks.

If the C64 has an Achilles Heel, it is undoubtedly the speed of the disk drive.  The standard speed was only 300 bytes per second.  An IBM PC Floppy drive was faster by almost two orders of magnitude, and even the slower Apple II and Atari 8-bit disk drives were faster.  Some have been converted from their slow floppy format to more mass-storage friendly solutions, but there is a great deal of work to be done in this area.  But perhaps it is this reason, most of all, which tends to put off US gamers from the C64.

Saturday, April 26, 2014

Capturing CGA, Tandy/PCjr. and EGA Video

It is not easy to capture true 16-color PC video.

One way to capture it is with a CGA card that has a composite video output.  The IBM PCjr. and Tandy 1000/A/HD/EX/HX/SX/TX also have composite video outputs, as does the IBM PC Convertible with the CGA adapter slice.  Some other laptops like the Tandy 1400LT also have CGA output.  Most EGA cards may have dual RCA jacks, but they are only connected to the EGA expansion feature port.  They are typically useless.

Composite video is necessary when trying to capture CGA artifact color.  Additionally, for capturing 40 column text it is usually adequate.  It is also good at capturing 160x200 graphics, since there is minimal artifacting going on in that mode.  Note that brown is dark yellow with a composite color connection. However, if you are trying to capture "pure" RGB 320x200x4 or 640x200x1, or 320x200x16 or 640x200x4, it is not suitable.  Composite video does not have the bandwidth to show pure colors in these modes.

CGA and its derivatives use digital TTL RGB.  The standard is also known as RGBI, with I standing for intensity.  One pin is devoted to the R, G, B and I signals.  When there is +5v on the line, that color will be displayed.  When there is Ground on the line, that color will not be displayed.  With the Red, Green and Blue signals, this gives you eight combinations, Red, Green, Blue, Cyan, Magenta, Yellow and Black and White.  The Intensity signal varies the strength of the colors, giving you a total of 16 colors.  CGA uses a 15kHz scan line frequency.

Other personal computers of the 1980s that supported RGB output, including the Commodore Amiga, Atari ST and Apple IIgs, support analog RGB output.  Consoles like the Sega Master System, Sega Genesis, Super Nintendo, Atari Jaguar, NEC Turbo Grafx 16, Playstation and an RGB modded NES or N64 also support 15kHz analog RGB.  Almost all arcade machines from the 1980s and into the late 1990s also support it.  With analog RGB output, the strength of each signal is based on the amplitude of a 0.7v Peak to Peak sine wave.  These systems typically use a15kHz scan line frequency.

The only other non-PC compatible device that supports CGA TTL RGBI is the Commodore 128.  Moreover, the C128 only supports this in its native video mode.  When emulating a C64, it uses a palette closer to the C64s.

All capture and conversion devices that advertise "CGA" like the GBS-8220 are using "CGA" only in the sense that they support a 15kHz horizontal scan line rate.  They expect an analog RGB signal.  CGA uses an RGBI signal.  If you connect the pins directly, you will only get 8 colors because it has no idea what to do with the I signal.  A simple passive adapter, like the one shown here, will give you 16 colors :  However, color 6 will be dark yellow when it should be brown.  To get it to show brown, you need an active converter, such as the one here :  That adapter will combine the separate CGA horizontal and vertical synchronization signals, which most 15kHz RGB outputs use.  You can buy a board that converts CGA into analog RGB here :  I have no personal experience with this product, so I cannot not know how faithful it actually is to CGA colors instead of C128 colors (if there is any difference at all).  You can also purchase a similar kit here : but you will have to solder the board.

After you have turned the digital RGB to analog, you will need to use a scan-line doubler to convert it to VGA and a capture card, for which there are many capture devices, or obtain an expensive PCI-E capture card that can handle 15kHz RGB analog video.  I have heard mixed reviews about the quality of the GBS-8220, which upscales 15kHz RGB signals into 31kHz VGA signals and is very common and not too expensive.  One suggestion is to use an XRGB-mini, the Framemeister.  The Framemeister will upscale analog RGB video into 720p, which can be captured by an HDMI capture card.

I would go for the latter, like this one :  Even though it is ridiculously expensive ($330!), it can handle just about anything, including VGA, HDMI and the like.  The StarTech PEXHDCAP is another PCI-E device that is very versatile and costs less than half as much :

The elgato game capture HD will capture 240p signals, which is essentially 15kHz scan rate video.  However, it only has composite, component and S-Video analog inputs.  You would need an RGB to Component converter for this device.  In essence you would need two converters.

If you want to capture 640x200x16 Tandy or EGA video, you will also need to use this method.  350-line EGA uses an unusual 21.8kHz horizontal refresh rate and 6-bit TTL RGB for a maximum selection of 64 colors.  VGA emulates 350-line EGA more-or-less perfectly and without double scanning.  It is just better to capture it directly from a VGA card.

Wednesday, April 23, 2014

"Tips" for the Xircom Parallel Port Ethernet Adapters

Xircom released several parallel port Ethernet adapters, and the advantage to these adapters is they can add Ethernet capabilities to any PC compatible with a standard parallel port.  They work better with bidirectional and EPP ports, but will function on a standard unidirectional port quite well.  Intel bought Xircom, so it hosts the drivers for the PE3 series of adapters here :

When it came to the PE3 series, Xircom released four adapters :

PE3-10BC - Twisted Pair (RJ-45) and Coaxial (Thin Ethernet) connector
PE3-10BT - Twisted Pair (RJ-45) connector
PE3-10B2 - Coaxial (Thin Ethernet) connector
PE3-10BX - AUI 15-pin connector

If you get one with only a Coaxial or AUI connector, you will probably need an adapter for the Coaxial connector or a transceiver to add an RJ-45 port to the AUI connector.  These are usually $10-20.

Sometimes these adapters come with a wall-wart, other times with a "Phantom" PS/2 power cable.  If you have the Phantom cable, do yourself a favor and throw it away.  It is intended to plug into only into a PS/2 mouse port, but the power draw of the adapter may cause damage to the adapter or the system.

The official AC power adapter is rated for DC output at 12v/500mA.  This will be sufficient for any of the above adapters.  A 300mA adapter will work with all but the BX.  If you need a wall-wart, buy one like this :  You will need the "N" Adaptaplug, which should be provided in a store at no extra charge.  The adapter uses a positive tip, so the + symbol must be next to the TIP symbol on the tip end.

Never insert or remove any device from a parallel or PS/2 port when the computer is on.  Install the Xircom adapter when the computer is off and plug in the AC adapter for the Xircom before turning the power on.

Once installed, the installing the packet driver in DOS is simple, and usually all that is required is designating the software interrupt and setting the mode to unidirectional or non-EPP bidirectional if your parallel port does not support a bidirectional or EPP port.

There is a previous PE2 series, with at least a 10BT, 10B2 and 10BX.  Drivers for those adapters can be found here :

Sunday, April 20, 2014

Scoring Vintage ISA Sound Cards' Gaming Suitability

I have tried to make an objective rating system to judge the gaming suitability of a particular vintage sound card.  I have avoided including more subjective qualities like measurement of audio output quality.  My basic standard for rating each element of a sound card is as follows :

0 - Not present or not widely supported
1 - Useful but often troublesome or problematic
2 - Mainline support
3 - Superior Features
4 - The Best of the Best

1. Gameport
0.00 - None
0.50 - Crippled (2axis/2buttons only) or Non-standard : Covox Sound Master
1.00 - Standard : Sound Blaster 1.0-Pro 2.0
1.50 - Speed Sensitive : Sound Blaster 16-AWE64
2.00 - Speed Adjustable : Gravis Ultrasound

2. MIDI Hardware Interface
0.00 - None
0.50 - Not Widely Supported : IBM Music Feature, Pro Audio Spectrum, Gravis Ultrasound, Adlib Gold
1.00 - Sound Blaster MIDI
1.50 - Widespread UART MPU-401 Hanging Note Bug : Sound Blaster DSP 4.11-4.13
1.75 - Minimal UART MPU-401 Hanging Note Bug : Sound Blaster DSP 4.11-4.13 & CT-1747
2.00 - UART MPU-401, Sound Blaster DSP <= 4.05 or DSP = 4.16
2.50 - MPU-401 Hardware Emulation
3.00 - Roland MPU-401 or 100% Fully Compatible

3. Music Synthesizer
0.00 - None (Digital Only)
0.50 - Not Widely Supported : Innovation SSI-2001, Covox Sound Master, IBM Music Feature, IBM PS/1 Audio/Game Card
1.00 - Game Blaster
1.50 - Gravis Ultrasound, Creative CQM : Later Sound Blaster 16 & AWE32s, most 32s, all AWE64s
2.00 - OPL2 : Adlib, Sound Blaster 1.0-2.0, Thunderboard, Covox Sound Master II
2.25 - Dual OPL2 : Sound Blaster Pro 1.0, Pro Audio Spectrum; OPL3 : Sound Blaster Pro 2.0, 16, AWE32, 32; Pro Audio Spectrum Plus/16, Adlib Gold
2.50 - AWE32/64 EMU-8000, Waveblaster 1/2, OPL4
3.00 - Ensoniq Soundscape, Yamaha DB50XG, SW60XG, Roland SCB-7
4.00 - Roland LAPC-I, SCC-1 or SCB-55

4. Digital Audio Output
0.00 - None (Music Only)
0.50 - Not Widely Supported : IBM PS/2 Speech Adapter or Compatible, Covox Sound Master/Plus, Covox Voice Master
1.00 - Covox Speech Thing or Disney Sound Source, Roland RAP-10, Covox Sound Master II
1.50 - Adlib Gold, Pro Audio Spectrum
2.00 - Sound Blaster DSP 1.xx, Microsoft Windows Sound System, Gravis Ultrasound
2.25 - Sound Blaster DSP 2.00
2.50 - Sound Blaster DSP >= 2.01, Thunderboard
2.75 - Pro Audio Spectrum Plus/16
3.50 - Sound Blaster Pro, Sound Blaster 16 <= DSP 4.05
3.75 - Sound Blaster 16 >= DSP 4.05, Sound Blaster AWE32
4.00 - Sound Blaster AWE64 Gold (SPDIF)

Thus if you add up the total scores, you can get a good idea of the overall suitability of an ISA sound card for DOS gaming. A Sound Blaster 1.0 or Gravis Ultrasound gets a 6, Roland LAPC-I or SCC-1 would rank a 7, a Sound Blaster AWE64 Gold a 10. A Sound Blaster AWE32 with SCC-1 would probably rate the highest at 11. Note that only the highest score for each individual category is counted. A basic AWE32 gets a 2.5 in the synthesizer category, not a 4.5.

Tape Cassette Storage with the IBM PC and PCjr.

IBM include a 5-pin DIN cassette port in the IBM PC Model 5150.  This was intended for systems sold without floppy disk drives, which were still very expensive in 1981.  Until the PC was discontinued in 1987, you could still buy a 5150 from IBM without a floppy disk drive (Model 104).

The 5-pin DIN connector used a TRS-80 cassette cable to connect to a tape recorder deck.  The Radio Shack CCR-81 and 82 came with the cables and had both Mic and Aux input jacks.  IBM never made a cable for the PC, and the only software it ever supplied was IBM PC Diagnostics and Advanced Diagnostics.  Otherwise, use of the cassette port was intended solely for users of Cassette BASIC.  Cassette BASIC, built into the system, used its save and load commands to access the cassette drive.  In this IBM followed other 8-bit microcomputers of the day, as Cassette storage was the cheapest form of storage available for home computing.

When IBM released the XT, it removed the cassette port circuitry but kept Cassette BASIC in ROM for compatibility with Disk BASIC, Advanced BASIC (BASICA) and programs which relied on any of the three.  You could no longer save or load a program in Cassette BASIC.  However, IBM also used the same cassette interface logic for the PCjr.  This time, IBM released a cable to connect to the unique cassette port on the PCjr.

The IBM PC and PCjr. communicate with the cassette deck via Int 15.  At the low level, the audio coming from the deck to the system is digitized and read serially on bit 4 of the 8255 Port C.  Audio generated from the system to the deck is generated by 8253 Timer 2, which also controls the PC Speaker and then sent to the cassette.  The motor is controlled by bit 3 (and bit 4 in the PCjr) of the 8255 Port B.  The BIOS routine writes a 1 bit is with a tone of 1 millisecond (1000Hz), and a 0 bit with a tone of 0.5 millisecond (2000Hz).

To signal the beginning of a program to BASIC, there will be a "leader" of 256 bytes where all the bits are 1, followed by a 0-bit and then ASCII Hex 16.  Then a 256-byte data block will be written, followed by a 2-byte Cyclic Redundancy Check, and then more data + CRC blocks until the whole program has been written.  The maximum size that can be written is probably close to 64K, since that is the absolute maximum size of a BASIC program on the PC.

Typing SAVE"[program name] will save a BASIC program to the cassette.  Typing LOAD"[program name] in Cassette BASIC will instruct BASIC to start the cassette and search for the file.  It is up to the user to remember where the program is located.  If the system cannot "hear" a program, it will eventually quit trying and give the "Device Timeout" error message.  If there is some kind of problem with what it is trying to load, it will say "Device I/O Error."  You should keep the volume as high as possible when recording and playing back.

By using the cassette cable, you can record the output of the IBM PC's Speaker without any other adapter hardware.  You can of course plug the other end of the cable into a PC instead of a recording deck.  It is better to use the audio jack of the PCjr. to record sounds from it, as that jack can record from the PC Speaker, the 3-voice sound chip, the PCjr. Speech Attachment or the audio coming from the cassette.

Using the cassette port is may be a good method to record PC speaker music from a PC, but note that unlike the internal Speaker, the PC will generate a solid tone from the time it signals a system ready beep until software takes control of the PC Speaker.

One program that specifically supports the cassette port is Electronic Arts Music Construction Set.  This program has a setting to output 1 note PC Speaker or 4 note (tweaked) PC Speaker music, and has an option to output it to the internal PC Speaker or the cassette port.  4-voice output may sound better through a powered speaker than the internal speaker, but the basic sound will be the same.

One issue with the PC and PCjr. is that both support being connected to the Mic or Aux input of a tape deck.  The PC does so via a jumper on the system board near the PC Speaker header.  The jumper block is a 2x2 block.  If the jumper is placed across the pins closest to the M silkscreened on the board, then the audio will be sent at a level appropriate for a Mic Input.  If the jumper is placed across the pins closest to the A silkscreened on the board, then the audio will be sent at a level appropriate for a Line Input. The PCjr sends both the Mic and Aux input lines to the C connector, but the official cable only uses the Aux line. Some modern cassette recorders only come with a Mic Input.

The Aztech Labs Sound Galaxy Nova Pro16 Extra

I found this card installed in a 386/486 vintage Packard Bell.  I took it as it looked interesting.

The card has had the DAC/ADC functionality of a Sound Blaster 2.0, a UART compatible MPU-401, a gameport, a Yamaha OPL3 chip and also is Microsoft Windows Sound System compatible.  It has a line in, a mic in, a line out and an amplified out (for headphones or unpowered speakers) and a gameport.

The card is set either via software or EEPROM, which is mostly jumper selectable.  All but one jumper has its function marked on the card, and there are four :

J1 - PC Speaker Amplification - Closed = High, Open = Low
JX1 - Microphone Type - 1-2 Closed = Condenser, 2-3 Closed = Carbon
JMPCFG - Configuration Type - 1-2 Closed = EEPROM setting, 2-3 Closed = Software setting
JMPBO - Base Address - 1-2 Closed = 220H, 2-3 Closed = 240H.

There are DOS configuration utilities buried in its Windows drivers.  They will be in the directory with the file, EASYSTAR.EXE, which functions as a gateway to the audio configuration and testing programs and the mixer application.  If you know the settings, no drivers need be loaded on bootup.  The HWSET utility can be used to set the IRQ and DMA values and should be used to set the mixer values, as the EEPROM will not store the mixer values, despite what the MIXTSR program says.

There are headers on the card for CD-in (4-pin white connector), Modem-in (4-pin blue connector), multimedia PC speaker (4-pin header) and a Waveblaster-compatible MIDI card.

The mixer functionality allows for 16 volume levels for the Master Volume, CD/Line In, FM/Wavetable, Sound Blaster Voice (DAC)  and Microphone.  All but the microphone can have the volume of the left and right channels independently selected.  

The UART MPU-401 uses a separate resource setting than the Sound Blaster or Windows Sound System.

The Sound Blaster and the MPU-401 can use either IRQ 2/9, 3, 5 or 7, but will not share an IRQ.  The card uses DMA 1 for the Sound Blaster and DMA 3 for the Microsoft Windows Sound System, and neither can be changed.  Like a real SB 2.0, it can be set to I/O 220 or 240 only.  Similarly, like the SB 16, the MPU-401 port can be set to I/O 330 or 300.

The Microsoft Windows Sound System can be set to I/O 530, 604, E80 & F40.  It can use IRQ 2, 7, 10 or 11 and DMA 0, 1 or 3. I believe it uses DMA 3 and IRQ 10.  The Galaxy drivers insert the following line in AUTOEXEC.BAT :

SET GALAXY=A220 I7 D1 K10 P530 T6

There are three proprietary CD-ROM interfaces on the card, Panasonic, Sony and Mitsumi.

The Microsoft Windows Sound System, MPU-401 and game port can be disabled.

The 16-bit portion of the card is used only for the extra IRQ and DMA signals for the CD-ROM interfaces.  They can use IRQ 11, 12 or 15 and DMA 0 or 3.  Otherwise the card should work in an 8-bit slot.

One warning about this card, when it grabs an IRQ, it does NOT like to play nice.  If you set its IRQ to the mouse's IRQ, for example, your mouse cursor will stop working.  There is a TSR in the DOS utilities to provide for some level of Sound Blaster Pro compatibility, but it will not provide stereo panning support for Wolfenstein 3D.  The headphone output is really noisy, with lots of hiss.   The game port is as speed sensitive as a real pre-16 Sound Blaster, so in a fast 386 or a 486 system you will probably want to use something else.

All-in-all, this a very good card.  The Sound Blaster hardware was licensed from Creative Labs and reports a 2.02 DSP.  The software resource setting is pre-PnP and quite easy to use.  It can also store the settings to an EEPROM, which eliminates the need to set resources every time the computer is booted, unlike an SB 16.  Its OPL3 is superior to the OPL2 of a real SB 2.0.  Its MPU-401 is better than a SB16's because it can use a separate IRQ from the SB (works with Soft-MPU).  It also supports a waveblaster and can record and playback 16-bit audio through the Windows Sound System.  The card is perfect for Windows 3.1

Wednesday, April 16, 2014

Simple Soldering Mods for Vintage PC Components

There are some simple, yet extremely useful modifications you can perform to some vintage PCs and cards using a soldering iron and a bit of solder or a few wires.  In this post, I am going to outline some well-known, highly useful modifications requiring soldering no more than three wires or chips.  Of course, you should have a solder sucker or desoldering braid to repair any mistakes.

Before I detail the mods, there is a debate between lifting pins and cutting traces.  In my opinion, its easier to cut a trace than it is to lift a pin.  I once broke a pin off an IC and had to remove and replace the whole IC.  Cut traces can easily be repaired by wiring the two pins connected by that trace together.

IBM XT & Portable 640KB System Board

All IBM XTs and Portables use the same basic motherboard design.  For those motherboards marked 64KB-256KB System Board, there is an empty socket at U84.  These Boards were intended to support only 256KB, but through a very easy mod and a chip replacement, they can all support 640KB on the motherboard.  This is the maximum amount of RAM that an 8-bit PC compatible is designed to use and it saves an expansion slot.

First, fit a 74LS158 chip into the U84 socket.  Second, replace the 64Kx1 DRAM chips in banks 0 & 1 with 256Kx1 chips, 150ns or better.  That is 18 chips (since the XT uses parity memory).  If banks 2 & 3 are empty, you can put those 64kx1 chips in those sockets.  Third, bridge the two points marked with an E2 on the motherboard.  It is near the power supply.  You just need solder and maybe a bit of wire to make the connection, because this is not a mod you are likely to want to reverse.  Finally, set switches 3 & 4 to the Off position if you haven't already done so.  This informs the system that all four banks of memory are populated.  More detailed instructions are here :

IBM Bidirectional Parallel Port

The IBM 8-bit cards all had a unidirectional parallel port, but could be modified to support a basic PS/2-style bidirectional port with one wire.  To do this, you need to solder pin 1 of the appropriate 74LS374 to pin 15 of the appropriate 74LS174.  You also need to cut away the trace that connects pin 1 of the 74LS374 to ground or lift the pin out of its solder hole.  Here are the correct chip numbers for each card :

IBM PC Monochrome Display and Printer Adapter :
74LS374 - U41
74LS174 - U39

IBM PC Printer Adapter :
74LS374 - U4
74LS174 - U7

IBM PC AT Serial/Parallel Adapter :
74LS374 - U18
74LS174 - U4

IBM PCjr. Parallel Printer Attachment :
74LS374 - ZM4
74LS174 - ZM11

Hercules Graphics Card (long, 13" version)
74LS374 - U32
74LS174 - U22

AST Six Pak Plus Type 1
74LS374 - U73
74LS174 - U81

AST Six Pak Plus Type 2 or Type 3

74LS374 - U76
74LS174 - U71

IBM LPT2 Parallel Port

The IBM Parallel cards, with the exception of the IBM PC AT Serial Parallel Adapter, are set to use only one set of addresses.  The IBM PC Monochrome Display and Printer Adapter uses addresses at 3BC-3BF and these should never be changed.  The BIOS will always assign LPT1 to a Monochrome card's parallel port, and the port must be at those addresses.  For the standalone parallel adapters, while they are set at 378-37F, they can be changed to use 278-27F.  The BIOS will assign LPT1 (assuming no mono card is in the system) to the parallel port at 378 and LPT2 to the parallel port at 278.

To make the IBM PC Printer Adapter use address starting at 278, you need to cut the trace connecting J1.  To reverse this, you need to solder a pair of staking pins to the pads at J1 and place a jumper over them.  Some solder sucker should be used to obtain clean holes first.

To change the address on a IBM PCjr. Parallel Printer Attachment, there are two traces that need to be cut and two wires soldered.  The instructions are here :

IBM CGA Thin-font

The IBM CGA card contains two character sets or fonts in its character generator ROM.  The standard font is the thick-font, which was designated as the default font because the characters were much easier to see on a TV screen or a composite monochrome monitor.  There is also a thin font available by connecting the two solder pads just below pins 1 & 2 of the 6845 CRTC chip.  Solder in a two-pin header and you can use a jumper to switch between the two.

IBM PCjr. Tandy-mod

One of the most popular modifications to enhance the PCjr.'s graphical capabilities is to install the Tandy mod.  This mod, which requires one common 74 series TTL chip, cutting a trace and soldering three wires, is relatively easy to do.  With the mod, the problem of the Venetian Blinds with games only supporting Tandy 320x200 and 640x200 (if there are any) graphics will go away.  This will fix many games.  The best instructions can be found here :

So, shouldn't all PCjr.'s have this mod installed?  Well, in my opinion, a PCjr. should be used and maintained as a unique computer, not an ersatz Tandy 1000.  Unlike the Tandy 1000s with their speed options (7.16MHz 8088s to 10MHz 80286s), the PCjr. is stuck at 4.77MHz as a practical matter.  Even installing a V20 and RAM above 128KB is not going to provide the speed necessary to run many games at a good speed which use the ubiquitous graphics 320x200x16c Mode 09h.  While it is possible to increase the clock speed of a PCjr. above 4.77MHz, the modification is much more involved than the Tandy mod and the results are not very reliable above 7.37MHz.

In addition, the Tandy mod does not solve all compatibility problems that a game specifically supporting only Tandy graphics and sound would have on the PCjr.  A review of the technical references of the Tandy 1000 and the PCjr. (available online) shows many differences in their respective graphics registers.  Their keyboard handling at the hardware level is very different.  Even their sound chips (the PCjr, uses a true TI SN76496, the Tandys typically use a NCR 8496 clone, discrete or integrated) have their differences.

In short, if you have or intend to acquire a Tandy 1000, leave your PCjr. alone.  If you have no interest or desire for a Tandy 1000 machine, then by all means consider the mod, but

CMOS Battery Replacement

CMOS batteries typically give 3-6V.  They generally come in three varieties for generic motherboards, the Dallas 1287 or 12887 RTC module, the barrel-type and the CR2032 coin-style with holder.  Each variety was common until the Pentium era, where the coin-style battery holder became ubiquitous.  The CR2032s can be readily replaced, because only the holder is soldered to the board.  The Dallas RTC module has a battery built-in that will eventually fail.  In these cases, the part is typically socketed and can be replaced.  A coin-style battery holder can be soldered to the appropriate legs, thereby extending the life of the part indefinitely.  A sharp hobby knife, or better still a dremel, will be needed to cut away enough of the plastic to expose the "thick" portion of the legs to solder the battery holder terminals.  Detailed instructions can be found here : or here :

The barrel style batteries are the most annoying of the bunch.  Too frequently they corrode and leak, causing damage to the motherboard.  If you buy a motherboard with one, remove it immediately, even if it hasn't leaked. Remove the leads from the motherboard using solder braid or a solder sucker, or simply solder the battery holder terminals to the extended leads.  Some of the barrel batteries are Ni-Cd rechargeable types, and standard batteries will not take the recharge current.  With a bit of searching, you can find modern Ni-MH barrel-style batteries that will work as a direct replacement.  Here is an example :
If you want to instead solder a battery holder, you will need to wire a schottky diode in between the battery's + terminal and the motherboard's + point to prevent the current from going from the motherboard to the battery.

If you do not want to solder a battery clip, some motherboards have a pin header to connect an external battery.  There are 3xAA and 4xAA battery holders with 2-pin or 4-pin connectors ideal for the task.  3xAA is 4.5v, which is quite sufficient to power CMOS, but 2xAA is only 3v, which is the bare minimum.  3 and 4 battery holders will last longer.

Saturday, April 12, 2014

Tandy 1000TX vs. 1000TL

The Tandy 1000TX was released in 1987.  Its successor, the Tandy 1000TL was released in 1988.  The TL was mainly a refresh of the earlier machine, with some enhancements.  However, in its efforts to become more PC compatible, some things were lost.  Let's compare each machine.  

Consider what both machines possessed in common :

80286 CPU @ 8MHz in PLCC Socket
80287 Socket
5 ISA Slots
65W Power Supply
640KB built-in/768KB upgradeable

Lets look at some features :

Video : 
TX - Composite Video Output
TL - 640x200x16c and MDA/Hercules Graphics Emulation

Composite video is useful to record video from the computer, since there are many, many devices that will record a composite video signal, even a not-quite standard signal that the Tandy outputs. It is also works very well with games that use a true (Maniac Mansion, Starflight) or effective (King's Quest) 160x200x16c graphics mode.  In this mode, there is minimal artifacting and the colors presented are generally close to their RGB counterparts.  True composite artifact color games, generally made for the IBM CGA card, will show incorrect colors which no amount of fiddling with the tint control will perfectly fix.  Still, the results will look much better than on an RGB monitor.  However, recordings using the 320x200x16c mode will not look great, because the composite video signal does not have the bandwidth to keep up with the color changes. The TX can also support a true 200-line 80 column text mode.  The TL will display a rolling screen using the MODE 200 command that came with the system disks.  You can use an updated MODE.COM from the RL system disks.

The Tandy 640x200x16c mode was rarely used in games, and those games also supported the corresponding EGA mode and all of the known games support VGA as well.  Deskmate 3's draw application uses it, but Deskmate 3 does have VGA and probably EGA drivers.  The built-in graphics controller can also emulate MDA/Hercules, but there are three issues with it.  First, if you use the machine as an MDA/Hercules card, you will also need a TTL monochrome monitor like the IBM 5151.  Second, since there is only one video output port, using MDA/Hercules disables the built-in Tandy graphics support, as you cannot see it anyway with the MDA monitor connected to the port.  Third, some games will detect a Tandy 1000 and insist on using the Tandy or CGA graphics modes.  It can be useful if you have upgraded to VGA, but then you could simply obtain a generic system for a VGA/MDA combo.

The TX can add a MDA or Hercules card and retain the ability to output Tandy graphics to a separate video monitor.  Still, some games will autodetect Tandy and not work correctly with the Hercules card.

While both the TX and TL support upgrading to an EGA or 8-bit compatible VGA card, there is a very nice utility called VSWITCH that will allow you to switch between the built-in Tandy video and VGA.  More recently, someone made a similar program called ESWITCH for EGA cards.  However, due to the differences in disabling the built-in video on the TX and the TL, the program only works in the TL or later Tandy 1000s with 768KB of RAM.    

Advantage - Tie

Audio :
TX - 3 Voice Sound & Sound Blaster 1.0-2.0 Support
TL - 3 Voice Sound & built-in DAC/ADC

While the TX only has the basic 3 voice chip, it also can work with a Sound Blaster 1.0-2.0, or any other 8-bit sound card that only works with DMA1.  Many early Sound Blaster-supporting titles only work if the card is at IRQ7 and DMA1.  However, because the built-in joystick port cannot be disabled in software, the gameport of the Sound Blaster must be disabled.   

The TL has a very decent mono DAC built in, which can use the internal speaker for output.  The ADC can sample at a higher rate than a Sound Blaster 2.0, but in the TL it is speed sensitive.  While this is immaterial to Tandy Deskmate, third-party programs may have difficulty with recording. Some early games like SimCity and Outrun only support the Tandy DAC and not Sound Blaster. Overall, many more games support a Sound Blaster than the Tandy DAC.

The DAC was never released as an add-on card, so at its original ports (where many games expect it) it is unique to the 1000 TL and SL and successors up to and including the RLX. The TL's joystick port can be disabled in software, but using a Sound Blaster 1.0 or 2.0 will cause the system to freeze if the Tandy DAC is used.  Using a Sound Blaster Pro, with the DMA channel set to 3 and the IRQ set to 5, would allow the Sound Blaster and Tandy DAC to work fine. Many early games refuse to work with a Sound Blaster unless the DMA is set to 1.  Additionally, the DAC and the built-in joystick ports cannot be used at the same time, so a game supporting the DAC is not likely to read the joystick port, built-in or on an expansion card, while using the DAC.  

Advantage - TX

Drive Bays :
TX - 2 x 5.25” slots
TL - 1 x 5.25” slot & 2 x 3.5” slots

Two 5.25" slots allows for more flexibility than one 5.25" and two 3.5" slots.  If you wanted to install a 5.25 floppy drive and internal CD-ROM, you could do so in a TX but not a TL.  However, the TL offers a more appropriate setup of one bay for a 3.5" floppy drive, one for a 5.25" floppy drive and one for a 3.5" hard drive.  With a TX, you would need to use a hardcard.  The 3.5" bays on the TL are not generally useful for external drives because the faceplate is moulded into a certain shape and cutout.  The faceplate is made of plastic, so it can be dremeled out.

Advantage - TL

Keyboard Support :
TX - Tandy 1000 90-Key Keyboard or Northgate Omnikey 101-Key Keyboard (with adapter)
TL - Tandy Enhanced 101-Key Keyboard or Tandy 1000 90-Key Keyboard (with adapter)

The Tandy 1000 Keyboard has 90 keys and is slightly awkward to use from a modern perspective.  The keys use springs, but feel mushy.  The interface is proprietary to the 1000TX and earlier 1000 machines and the Tandy 2000.

The Tandy Enhanced keyboard has the standard 101-key layout, but feels too stiff.  The keyboard can automatically switch into XT or AT mode, and can work an IBM PC Model 5150 or a 2014 motherboard with a PS/2 port.

The TX can use a Northgate Omnikey keyboard with a special passive adapter cable for 101-key support.  You will not be able to use the F1-F4 function keys when booting with the Northgate.

The TL can use a 1000 Keyboard, with a special passive adapter cable.  The TL can use any keyboard that supports XT operation, including the IBM PC Model F keyboard and the IBM Model M keyboards made prior to 1993.  However, there are some games that expect a 1000 keyboard and will refuse to work at all (Snow Strike) or freeze (King's Quest Tandy booter) if the wrong key is pressed with a standard XT keyboard.  

Advantage - Tie

Real Time Clock :
Installable RTC
Built-in RTC

The TL has a standard RTC and uses a replaceable CR2032 coin battery.  The TX requires a no-slot clock like the Dallas 1216E, which has a built-in battery and is seated under a ROM socket.  The height added by the clock chip can make the slot next to it suitable for only short cards.  Tandy DOS 3.3 has built-in support for the TL's clock, the TX requires an upgrade.  

Advantage - TL

Heavy Shielding inside Case
No Shielding inside Case

The TX has shielding virtually all around the motherboard, making the internal slots and jumpers difficult to get to.  It's case cover is plastic.  The TL apparently solved any RFI problems of the older machine by using a metal case cover, because there is no shielding getting in the way.  

Advantage - TL

Configuration and Built-in Software :
Basic BIOS & Jumpers
DOS & Deskmate in ROM, EEPROM Settings

The TX is configured by eight jumpers or dipswitches.  The TL has five functional jumpers/dipswitches, the rest is configured by a program included on the DOS disks.  The TX uses Function Keys, pressed on startup, to use the monochrome mode, swap floppy drives, use the 40-column/200 line TV mode and set the processor to low speed.

The TL does all but the TV mode via the setup program.  The settings are written to an EEPROM.  If that EEPROM fails...

The TL also has a portion of DOS and Deskmate 3 in ROM.  This is only useful if you do not have a hard drive.  If you have a hard drive, then the DOS on that will boot and a standalone version of Deskmate may be required to be installed.

Advantage - Tie

Bundled Software :
TX - Personal Deskmate 2 & DOS 3.2
TL - Deskmate 3.2 & DOS 3.3

DOS 3.3 is better than DOS 3.2, there is no doubt about it.  Since neither the TX nor TL can support a high density floppy drive with its built-in controller, the best quality DOS 3.3 brings is its support for more than one 32MB hard drive partition.  However, the TX can use Tandy DOS 3.3 without any difficulty.  Deskmate 3 looks similar to Personal Deskmate 2, but 3rd party programs can easily be installed to it.  Of course, you can upgrade the TX to Deskmate 3.  On the TL, Deskmate 3 has music and sound programs in the ROM.  The music programs in Personal Deskmate 2 and Deskmate 3 should share compatible files.  However, the DOS installable version of Deskmate 3 does not come with the music program, so you will need to keep Personal Deskmate 2 for that on the TX.

Memory Upgrade :

The TX and TL both allow their memory to be upgraded from 640KB to 768KB, and when upgraded the video no longer encroaches on the conventional memory.  DOS will report 640KB available.  Both are upgraded in the same way, by adding four 64Kx4 DRAM chips.  The TL automatically will detect the chips, the TX requires a jumper to be removed.  However, the upgrade is incompatible with certain programs (detailed in a later post), forcing you to use CGA modes for those games.  To disable the upgrade, you must physically remove the chips in the TL, but you only need replace the jumper in the TX.

Advantage - TX