Sunday, May 11, 2014

Memory in the Tandy 1000 Series : Why More is Not Always Better

All true Tandy 1000s (true Tandys do not include any RLX or RSX machines) come shipped from the factory with variable amounts of RAM, and all can be upgraded.  Here is the basic chart :

128K - Tandy 1000/A
256K - Tandy 1000HD, 1000EX, 1000SX (also Tandy 1000/A)
384K - Tandy 1000SX, 1000SL (also Tandy 1000/A/HD, 1000EX, 1000HX)
512K - Tandy 1000SL/2, 1000RL/RL-HD (also Tandy 1000/A)
640K - Tandy 1000TX, 1000TL, 1000TL/2, 1000TL/3 (all other upgraded Tandys)
768K - Tandy 1000RL/RL-HD, 1000TX, 1000TL, 1000TL/2, 1000TL/3 (upgraded)

(all systems mentioned in parentheses are systems upgraded with RAM expansion cards, boards or had RAM installed in mainboard sockets after the system came from the factory)

Now you might think that more RAM is always better, but consider a few of these games :

King's Quest, Touchdown Football - The PCjr. Only Booters -versions of these games assume that the video memory is at the top or within the first 128KB of RAM, as it would be on a PCjr.  This assumption is also true for the Tandy 1000/A, but vanishes when you upgrade the RAM with an expansion card.  The Tandy 1000 HD comes with one of these cards pre-installed but can be removed to bring the system back down to 128KB.  The hard drive controller card that comes with the system also uses DMA, so it may have to be removed.  The Tandy versions of these games work fine so long as the RAM is 640KB or Less

Demon Attack - The Tandy version of this game, which unlike the PCjr. version came on disk, will work with RAM up to 640KB, but will fail to work if 768KB is in the system.  This was well before any idea was given to 768KB.  Touchdown Football also has the same issue, it will not work correctly if 768KB is installed.  Ultima V will fail to run with 768KB.

Demon's Forge - The Mastertonic 1987 PC port of this game supports 16-color Tandy graphics only if there is no DMA chip in the system.  Otherwise it supports 4-color CGA graphics.  The Tandy 1000/A, EX and HX all do not come with DMA, but to upgrade the RAM, you must use a board with a DMA chip included.  I believe this may be a hold over from its port to the PCjr.

Demon Stalkers, Duck Tales : Quest for the Gold, Fire King, Harley-Davidson: The Road to Sturgis, The Three Stooges, The Simpsons : Arcade and Snow Strike - These late 1980s games will show no graphics, garbled graphics or fail to work if the RAM has been upgraded beyond 640KB.  Apparently these games were not programmed with the idea that you could expand a Tandy beyond 640KB, despite the TX already being released by this time.  To play these games, you need to remove the RAM upgrades in a system with 768KB.  Most require 512KB or 640KB, so apparently only two possibilities were envisioned for these games.  Alternatively, you can use their CGA command line arguments (C or CGA usually) to play the games with CGA graphics and Tandy sound.

Saturday, May 3, 2014

Practical Issues with using the Tandy 1000 TL

This week I have reacquired from a friend a Tandy 1000 TL he once sent me.  I would like to describe my experiences with it, getting programs to work with it, etc.

Floppy Drives :

Tandy really wanted you to use the drives they sold, so they supplied these awkward cables that tended to fit only their drives.  If you have the original Tandy cable, you will not that it does not connect to the floppy header on the system motherboard in the way you would expect.  Instead, it uses the berg connector nearest the the card edge for the 5.25" drive.  That connector plugs into the motherboard, and from that plug the wire comes out at both ends.  The short end has the card edge connector, and the long end has two berg connectors for the 3.5" drives.  The cable may not work with all 5.25" drives.

The next thing to note is that Tandy supplied power to the 3.5" drives through the drive cables.  If you are using a 3.5" drive that does not use the Tandy-power-in-drive method, then you need to cut small holes in pins 3, 5, 7, 9, 11, 29, 31, 33.  Tandy already did this for that end of the cable with a card edge on it, since all 5.25" IBM PC compatible drives use the 4-pin Molex connector.

Additionally, Tandy's cables do not use a twist to determine drive A, B and C.  Instead you must manipulate DS0-DS3 on the drive.  If you use a standard "universal floppy drive" cable, you must untwist the twist. 720KB drives usually have jumpers or switches, as did 360KB and 1.2MB drives.  Modern 1.44MB drives are always set to DS1, so by default they are Drive B:.  The setup program may be able to change that to Drive A:, but you won't be able to use two of these drives unless you figure out how to set one of them to DS0.

Finally, if you use a custom cable, be prepared to insert it "backwards,"  The bit of plastic on one of the ends of the berg connector on modern universal cables is on the wrong side from the Tandy's perspective.  File, cut or dremel it down.

The built-in 720K floppy drive should be a Sony MP-F11W or MP-F17W.  It has a switch on the side to select DS0-3.  It is more or less identical to the earlier Sony 3.5" drives Tandy used except it has a small blue eject button instead of a large "lip" button.

3.5" drives automatically terminate depending on what drive they are, but 5.25" drives have a terminator pack or jumper to set the termination.  Regardless of position on the cable, whichever drive is drive A: must be terminated, and drives B: and C: cannot.  If your 360KB drive is drive B:, remove the terminator.

Hard Drives : Tandy 1000 TL have no hard drive interface, you will need to find one that works in the Tandy.  XT-IDE devices should work fine.  There is a vintage device called the Silicon Valley ADP-50L that uses a faster method for data transfer, memory mapping, than the I/O driven method of the XT-IDE interface.  On the other hand, while the XT-IDE can handle drives up to the DOS Final FAT 16 limits (8GB, 2GB partitions), the ADP card is limited to the Int 13h barrier of 504MB.  There is also the XTA interface that was used with old hard drives, but they only get to 40MB.

Alternatively, you can use an 8-bit SCSI card.  The Trantor T-128 and Rancho Technologies RT1000B will boot in a Tandy 1000 TL.  The more common, yet somewhat slower Trantor T-130B will not boot a device in the TL, but will work if initialized with a floppy drive.  With an external SCSI adapter, you can add floppy drives, hard drives or CD-ROM drives without taking up the precious room in the machine.

Built in Video and Video Cards :

The Tandy 1000 TL's built-in video is a jack-of-all-trades.  It is nearly 100% CGA compatible, supports Tandy 16-color graphics and can also emulate a Hercules card quite well.  It also supports EGA and VGA cards.  You could insert a CGA video card in it, but unless you are looking for composite color output, the built-in video is superior.  Any video card inserted into an expansion slot will "disable" the built-in video.

The video inside the TL and later machines is called Tandy Video II because it supports a special 640x200x16 mode.  Relatively few games support it, but a recent patch provides support for all Sierra 256-color SCI1 and 1.1 games.

With VGA cards, you should run a simple program called VGAFIXC.COM to modify some bytes in the BIOS data area that programs frequently look to to detect VGA.  If you can find a VGA card that can work in an 8-bit slot, there is an excellent utility called VSWITCH that allows you to switch between the built in video adapter (CGA, Tandy, Hercules) and a VGA expansion card.  I use a Cirrus Logic CL-5401 basic 16-bit VGA card I pulled from a Packard Bell.  It works just fine, no jumpers, dipswitches or drivers needed.  With a VGA card, a Tandy system becomes a real jack-of-all-trades when it comes to PC video.

Some games are aware of a Tandy and often do not detect a non-Tandy video adapter, so you may need to force some to work despite their protests if you can with command line arguments or in their setup programs.

You can switch from color (Tandy/CGA) to monochrome (Hercules) by pressing Ctrl + Alt + Shift + V at bootup.

The built in video uses IRQ5 for indicating when the adapter is in a vertical retrace, allowing for rapid screen updates.  It is set by a jumper on E1-E2.  If E2-E3 is set instead, IRQ5 will be available to the expansion slots.  Whether the video uses IRQ2 when IRQ5 is disconnected is debatable.  IRQ5 is typically used by non-Tandy aware hard drive controllers.

Keyboard :

The Tandy 1000 TL only works with keyboard supporting the XT keyboard protocol.  It came with the Tandy Enhanced Keyboard, a standard 101-key autoswitching XT/AT protocol keyboard that works in just about any PC.  It will work in the IBM PC, XT, AT and any PC with a 5-pin DIN or 6-pin PS/2 mini-DIN that supports an XT or an AT protocol keyboard.  It will work in a modern motherboard with a PS/2 port or PS/2 to USB converter.

The TL will also work with an IBM 83-key Model F PC/AT keyboard.  According to the Technical reference, it (and the Tandy 1000 SL) should also work with a 90-key Tandy 1000 keyboard, but it requires an adapter because the Tandy 1000 keyboard uses an 8-pin DIN and the Tandy 1000 TL keyboard port is a 7-pin DIN.  I tried making an adapter, but no key presses were registered.  The TL/2, SL/2 and later machines do not have a 7-pin port, so this functionality cannot be used, even if it exists, in these machines.

Case :

The case for the later Tandys are all really easy to remove.  Just unscrew one screw on each side and pull the sides out a bit, then up, then forward.  Unlike the earlier Tandys, you don't need to disconnect the keyboard or the joystick ports, which have been relocated to the back of the machine.

Inside the machine is easier to work in than the older models.  There is no internal shielding to remove to get at the innards.  The TL uses a sheet metal cover, unlike the TX and earlier models which used plastic.  The screws for the expansion slots are small phillips head screws, and the plastic on the back has indentations to allow for easy screwdriver access.  The left 3.5" drive bay can be removed by unscrewing two screws on the front metal chassis and pushing the bay back until the clips clear.  The 5.25" bay requires drive rails.  I am not sure whether modern drive rails will work.

The front bezel may have the left 3.5" drive cutout covered with a plastic panel.  Once the panel is removed, you can install another floppy drive that conforms to the shape of the cutout.  If it does not, or you wish to use some drive with a faceplate, you will need a dremel.

Serial :

There is one 9-pin serial port on the back, and it uses a 8250B UART.  It is set to COM1.  However, the serial hardware has been incorporated into the PSSJ chip, so it may not be as robust as a card with a discrete chip.

Game Ports :

There are two 6-pin DIN game ports on the back of the machine next to the keyboard sockets.  Unlike the game ports of the TX and earlier models, you can disable the built-in game ports of the TL and later machines in software.  The game ports in the TX and earlier machines have to be disabled by cutting a pin or two on one of the ICs on the system board.

Parallel Port :

The Tandy parallel port has been covered in more detail in another post.  In the TL, there is a setup setting for output enable.  This should corresponds to bit 5 at port 37A, allowing for bidirectional mode.  However, as the Tandy parallel port in any model with a PSSJ chip (except the TL/3 and RLX) is missing one of the printer select lines, it may not work with any device requiring bidirectional parallel port mode.  The other printer select line has a jumper, E4-E5, to connect it from the card edge to the PSSJ.

Conventional Memory Upgrade :

The TL can be upgraded from 640K to 768K by inserting four 64Kx4 (120ns or better) chips into the four unpopulated memory sockets on the motherboard.  This extra RAM will allow you to enjoy a full 640KB of conventional memory without the onboard video taking a portion of it.  However, this extra 128K cannot be used for any other purpose, it is solely dedicated to the on-board video.

Expanded Memory :

Only a few Expanded Memory boards will work in the TL, and this is mostly due to the fact that there is only room for 10" cards.  Most Expanded Memory boards run the full 13".

Real Time Clock :

The TL uses a Dallas 1215E RTC which is powered by a coin-style battery, a CR2032.  The built in DOS-in-ROM will handle keeping the system date and time up to date, a separate driver is not needed.

CPU Upgrades :

A math coprocessor socket is available in the TL.  The 80286 CPU is socketed in a 68-pin PLCC socket under the left 3.5" bay.  It should only be removed with a PLCC extractor and after the bay above has been removed.  There are 386 and 486 upgrades which can plug into these boards and offer up to 2x the performance of the original 8MHz 80286.  The built-in video performance will not improve.  I have one called the IO Data PK-X486/87SL, which is a Japanese product intended for an NEC-9801 machine.

While the accelerator is usually a good thing, I have encountered two problems with the one I am using.  First, the floppy drives simply will not respond, no matter how the machine is slowed down.  Second, the audio recording function is speed-sensitive in the TL, so audio will record too quickly using Deskmate.  The TL/2 should fix this problem with a double-buffered chip.  I understand that Improve Technologies Make-it-486 will also work in the TL.

Built in Sound and Sound Cards :

The TL comes with the Tandy PSSJ sound chip.  It provides for Tandy 3-voice sound and digital audio input and output through the internal speaker.  The speaker has a volume control, an earphone out and a line/mic in.  Do not connect a Line Input without first setting the jumper to E7-E8.

The digital audio output function sits on DMA1 and doesn't like other sound cards, like a Sound Blaster, to use DMA1.  It also uses IRQ7.  A Mediavision Thunderboard allows you to disable the DAC, at which point is functions like an Adlib with a gameport (and without MIDI interface).  Additionally, a Pro Audio Spectrum 16 and a MedixTrix AudioTrix Pro require software initialization before functioning, so they will work with the PSSJ.

Sound Blaster Pros and early Sound Blaster 16s only work with the PSSJ when set to DMA3.  Earlier Sound Blasters are hard wired to DMA1.  The DMACTRL jumper on some Sound Blaster 2.0s and Pro 1.0s will not solve the problem, nor will removing the jumper from DRQ1, since DACK1 is still wired.  The second greneration Sound Blaster 16s, which use diagnose.exe or sbconfig.exe to set their IRQ and DMAs should work.  For a solution for the ISA PnP Sound Blaster 16s, look here : http://www.vintage-computer.com/vcforum/showthread.php?38484-ISA-XT-Sound-card-list.

The DAC in the SL and TL were rather speed sensitive.  Essentially an audio sample played back in one machine would be too fast or slow in the other machine unless the program adjusted itself for the system speed.  This is not an issue in the TL/2 or SL/2 or later computers because the DACs on these computers are double buffered.

DOS-in-ROM :

The TL comes with the basic core of Tandy DOS 3.3 in ROM.  This is very helpful when you are trying to run DOS programs off floppy disks, you don't need a disk with COMMAND.COM in the drive.  If you have no hard drive installed, then the DOS-in-ROM becomes drive C: if you have 1-2 floppy drives, and drive D: if you have three.  If you have a hard drive installed, it will be drive C: or D: and the ROM drive will be drive D: or E:.  Here are the contents of the ROM drive :

 Volume in drive D has no label
 Directory of  D:\

AUTOEXEC BAT       20   6-15-88   1:00p
AUTOMEM  COM     1962   6-15-88   1:00p
COMMAND  COM    25612   6-15-88   1:00p
DESK     COM       77   6-15-88   1:00p
DISKCOPY COM     6264   6-15-88   1:00p
DRVR8530 MOD     6652   6-15-88   1:00p
FORMAT   COM    11681   6-15-88   1:00p
NETBIOS  MOD     8092   6-15-88   1:00p
NETLOAD  COM      485   6-15-88   1:00p
RESTART  COM      209   6-15-88   1:00p
       10 File(s)         0 bytes free

IBMIO.SYS and IBMDOS.SYS or IO.SYS and MSDOS.SYS should also be present, but hidden.

The TL came with Tandy MS-DOS 3.3 on one 720KB disk.  The disk contains all DOS programs on one disk and is fully bootable.  Important programs on the disk are SETUPTL.COM, which allows you to enter the setup menu, BASIC.EXE and BASICA.COM, which grant you access to GW-BASIC, and MODE.COM, which allows you to control Tandy specific features like Mode Slow (for 4MHz operation).  Unfortunately, the MODE.COM included in the Tandy TL disks has a bug where the MODE 200 command does not work in the 80-column text mode.  Take the MODE.COM from the RL system disks and restore that feature.

If you upgrade to MS-DOS 5.0 or better, you will lose the ROM drive.  In this case, you will need a standalone version of Deskmate.  Standalone Deskmate doesn't come with the music or sound programs, so you may need to rescue them from the TL Deskmate disks.   Additionally, you should use drivparm in your config.sys for every floppy drive. drivparm=/d:0 /f:2 for a 720KB 3.5" drive and drivparm=/d:1 /f:0 for a 360KB 5.25" drive.

Deskmate :

The TL came with Deskmate 3.0, partially in ROM and the rest on two 720KB disks.  The main executable is DESK.COM on the ROM drive and it will allow you to enter the basic graphical shell.  To use programs, you need to install them off the floppies, or change the directory to where the programs are located on your hard drive.  The ROM Deskmate may be necessary to access the music and sound programs, which use the PSSJ sound chip.  The Deskmate draw program will use the 640x200x16 mode.  If you have a VGA card installed, you will need a VGA Deskmate driver.  Deskmate 3 works well with serial mice supporting the Microsoft serial mouse protocol.

Setup Utility :

The basic setup utility is displayed by using SETUPTL.COM.  SETUPTL /A brings up the advanced menus, and SETUPTL /F restores the settings to the factory defaults.  

The basic setup functions are identified in the TL Practical Guide.  If you have a hard drive, there is little need to change the usual settings.  You will probably want to set the Initial Start-up Program to MSDOS instead of DESKMATE.  It may not seem intuitive, but if you have a hard drive with MS-DOS 3.3 on it, the setting for Primary Statup Device should remain ROM.  You should also definitely Check for Autoexec.bat and Config.sys on Drive C:  If you have upgraded your DOS to version 4.00 or later, then you must select DISK as the primary startup device.  

As far as the advanced menu goes, you won't find much of interest here.  The first screen is Diskette, and the TL should automatically detect the number and types of floppy drives you have.  Running the basic utility usually works to automatically recognize a new drive.  If it doesn't, you can try setting them here.  The second screen is System Startup, and everything here can be found on the basic menu except for Video Memory.  The maximum amount of video memory is only an issue when you don't have the 768K upgrade.  The default value is 64K, which is sufficient for the 640x200x16c graphics mode.  The maximum is 128K, and if you have the upgrade you can set it to that amount because that memory can't be used for anything else.  

The third screen is BIOS Machine State.  There are off/on selections for Hard Disk, Parallel, Video, Diskette, Serial Chip Selects and Parallel Output Enable.  All default to on.  The Hard Disk Chip Select is useless as there is no hard drive interface in the TL, perhaps it was meant for the TL/2.  The Diskette Chip select apparently does not work, you will need a program called nofloppy.com, available here, http://www.oldskool.org/guides/tvdog/1000TL.html to disable the built-in floppy controller.  Since the on-board video is disabled when a VGA or EGA card is installed, the video chip select is more harmful than helpful.  Parallel Output Enable apparently does not make the built-in parallel port bidirectional, at least to devices that weren't sold by Tandy.

Later on that page, there are Wait State cycle options for Internal Memory, External Memory (Expanded Memory), CPU I/O Cycle, DMA Cycle, 16-bit Video.  The defaults, 0, 3, 3, 1,1 are safe values and probably should not be changed.  Last is the OSCIN frequency, which defaults to 24MHz but can be set to 28.636360MHz. I think the OSCIN frequency has something to do with the PSSJ chip.

The next two screens have to deal with network adapters, and unless you have the specific Tandy adapters the ROM expects, then these screens are useless.  The penultimate screen is International and lets you select the language, country code, keyboard type and code page.  If you live in the US, there is no need to change any of these settings.  The final screen is Usable Programs, and let you specify whether each program on the ROM disk can be used.

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 : https://sites.google.com/site/h2obsession/CBM/C128/rgbi-to-vga  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 : http://he-insanity.blogspot.com/  That adapter will combine the separate CGA horizontal and vertical synchronization signals, which most 15kHz RGB outputs use.
  You can also purchase a similar kit here : http://www.microbeetechnology.com.au/vga_video_converter.htm but you will have to solder the board.  This has been verified to give a proper brown color.  There is another kit available here : http://gglabs.us/node/1619 which also shows proof of good colors.  There is another kit that is available from b i t - c 1 2 8 . c o m, but it does not give a proper brown.

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 : http://www.solarisjapan.com/sc-512n1-l-dvi-component-hd-and-dvi-capture-board/?setCurrencyId=1  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 : http://www.amazon.com/StarTech-com-Express-Video-Capture-1080p/dp/B007U5MGBE

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 : http://www.intel.com/p/en_US/support/highlights/network/pe3

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 : http://www.radioshack.com/product/index.jsp?productId=3832491  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 : http://www.minuszerodegrees.net/manuals.htm

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 :
http://www.uncreativelabs.net/textfiles/hardware/XTMB640K.MOD

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 : http://www.brutman.com/PCjr/lpt2_mod.html

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 : http://vintagemashups.net/2011/12/ibm-pcjr-tandy-1000-graphics-mod/

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 : http://www.mcamafia.de/mcapage0/dsrework.htm or here : http://www.classic-computers.org.nz/blog/2009-10-10-renovating-a-dallas-battery-chip.htm

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 : http://www.jameco.com/1/1/48175-5560830312-nimh-rechargable-batteries-3-6v-rechargeable.html
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

Sunday, March 30, 2014

The Blog at 100 (Posts)

I am not an attention glutton who always feels the need to call attention to my blog with each entry I post.  Of course I appreciate compliments, praise and criticism, but I don't respond to every post with "Check out my blog, you will find the answer there."  While I love the outlet this blog gives me, I do not believe it is the best way to present reference material about DOS games.

I have been inspired by the idea to create and host a website.  My fantasy site would have an alphabetical link to a list of games, and each link would send the user to the page about the DOS game listed.  Each page would identify the game, give the year of first release, developer & publisher.  It would give screenshots of each game for each major mode it supports, 40 Column Color Text, 80 Column Color Text, Monochrome Text, CGA, Hercules Graphics, Amstrad, Tandy, EGA, MCGA/VGA, SVGA and VESA  It would give sound clips for the various music in the game, if any.  It will give technical specs, including minimum/recommended RAM, input support (joystick, keyboard, mouse), DOS version required (1.0, 1.1, 2.0, 2.1, 3.0, 3.1, 3.2, 3.3, 5.0), etc.  Also patch downloads would be available and advice on running the games on DOS.  Version information would be provided where available.

In some ways, I envision this site as a light version of MobyGames, but unlike MobyGames, I would intend the site to be focused strictly on DOS games (including PC booters).  Entries would be limited to only the games and their official expansion packs.  I don't intend to give any separate coverage to re-releases, combo packs, shovelware CDs.

Each game would take up a full page and have all its information on one page.  Screenshots would be shown in their native resolution (typically 320x200) and can be clicked on to show a 640x400 screenshot using nearest neighbor interpolation.  This would have to be set browser by browser.

Typically pngs would only be allowed for screenshots.  PNGs compress 8-bit graphics (256 colors or less) very well. They also compress losslessly.  Each image can be stored in less than 10K.  Few DOS games support 16-bit color graphics.  I would see to it that an "incorrect" screenshot would be replaced by a correct one when discovered.

Additionally, music will be stored not as standard wave recordings or the like, instead it will be stored in a format appropriate for the output device.  This would have a tremendous savings on bandwidth.  General MIDI or MT-32 music will be stored in a .MID file (with accompanying patch file, if necessary), Adlib in .DRO v.2  format.  Hopefully, someone would be able to device a simple format for Tandy 3-voice, PC Speaker and Game Blaster music and a simple player that works in DOSBox and on real hardware, regardless of speed (within reason).

One important feature of my site would be a list and search feature.  The list feature would show all games that use a certain mode, support a certain device, etc.  I would really like my search feature to support boolean search terms so that someone could search the games that, for example, support Adlib but NOT EGA.

The site design would be extremely simple and basic.  No fancy stuff like embedded video, wallpapers with large file sizes.  Hopefully the site would be so low in bandwidth requirements that it would not need ads, at least not the intrusive kind.  It would not be a throwback to bad old ideas like frames, embedded midis or animated gif logos.

Sites I would take visual inspiration from include uncreativelabs.net, minuszerodegrees.net, home.comcast.net/~ervind/index.html, textfiles.com, oldskool.org.  While all but one is more or less frozen in time, they have several features I admire :

Simple formatted text on solid color or basic textured backgrounds.
Small pictures and quick loading
Display on any browser
Site scaling to any resolution, not stuck in the center of the screen

One thing I would NOT do is to post box, media or manual scans.  First of all, they are comparatively large compared to game screenshots.  Second, I do not have many boxes and would not want to take them from another site.

Perhaps the site may progress to a point where directory listings with file dates and checksums for the files off the installation disks will be able to be included.  Additionally, to bypass copy protection, a listing of the appropriate programs that can crack the game will also be given.

The main goal of the site is to be hosted on pure DOS-appropriate hardware.  This, in my opinion, means a 486 class machine.  I believe that Pentium machines are more appropriate to Windows 95.  Additionally, I would want the site to be so simple that it could be properly displayed on a DOS-based browser like Arachne.

The site is right now just a fantasy, but I would love to have it get to the point where others can contribute freely like a wiki where moderation is done after the fact, if necessary, and not before.

Saturday, March 29, 2014

Working with MT-32 & Yamaha FB-01 MIDI Files and Patches

1.  Description of the MT-32's Capabilities

The MT-32 consists of eight instrument parts and one rhythm/percussion part.  It calls them Parts 1-8 and R.  Any part can be assigned to any of MIDI channels 1-16.  The default is that parts 1-8 are assigned to MIDI channels 2-9.  There is a setting to change this to MIDI channels 1-8.  The rhythm/percussion part is always assigned to MIDI channel 10 by default.

These parts share 32-voices/notes of polyphony, but the dynamic allocation of polyphony is not efficient over 22-24 voices, especially on a first generation unit.  The MT-32 does support an Overlow Assign mode where excess polyphony can be sent to a second MT-32 unit, but operation in practice is unreliable with first generation units.

A patch, which contains all the essential information for an instrument, is assigned to each part. Each patch can require up to 4 voices/notes to play, so there are restrictions on the sounds that can be played from the module. The use of multiple parts enables the MT-32 to be called Multi-Timbral, hence the name.  This is done via a Program Change MIDI message, and the MT-32 contains built-in 128 instrument patches and 30 rhythm patches.  A patch is made up of a timbre plus the patch parameter.  Timbres are made up of up to four partials and common parameter setting for all partials.  Each partial has many settings which can be individually controlled. Each partial takes one polyphony note/voice and can use either a waveform (square, rectangle or sawtooth) or a 16-bit PCM sample (128 available) as the basis of its sound.

A patch can call on four timbre banks, A, B, M & R.  Timbre bank A corresponds to the first 64 built-in patches of the MT-32, bank B the second 64 built-in patches, bank R corresponds to the 30 percussion patches of the rhythm section (and the 33 sound effects of the LAPC-I/CM-32L), and bank M corresponds to an area where up to 64 user-created timbres are stored.

The MT-32 is a synthesizer because user created patches can be stored and recalled from memory.  The SC-55, by contrast, is not a synthesizer.  While each of the patches used by the 16 parts of the SC-55 can be adjusted similarly to an MT-32 timbre, there is much less flexibility and you can only modify the active patch.  While the SC-55 is battery backed, this is intended to store the general settings of the module.

To dump or send custom patch/timbre data to the MT-32, System Exclusive MIDI messages are required. The sysex messages for patch/timbre data are unique to the MT-32 series and sequencers do not understand what they do.  Moreover, most sequencer programs assume that Program Changes correspond to General MIDI instrument assingments, but the MT-32 has very different assignments.

2.  Format of MT-32 Patches

The structure of an MT-32 patch, as contained in a sysex file, is as follows :

Length in Bytes (Decimal) MT-32 Area Sysex Receive String
33 System Area F0 41 10 16 11 10 00 00 00 00 17 59 F7
154 Patch Temporary Area F0 41 10 16 11 03 00 00 00 01 10 6C F7
266 Rhythm Setup Temporary Area F0 41 10 16 11 03 01 10 00 02 00 6A F7
360 Rhythm Setup Temporary Area (CM-32L) F0 41 10 16 11 03 01 10 00 02 54 16 F7
1064 Patch Memory F0 41 10 16 11 05 00 00 00 08 00 73 F7
17024 Timbre Memory F0 41 10 16 11 08 00 00 02 00 00 76 F7

The various areas can be in any order, since each area is separate and independent in the MT-32's memory. The temporary areas may not be required to be transmitted.

The MT-32 sends and receives data in packets no larger than 256 bytes (really 128 bytes, see below).  In order to send or receive bytes to the MT-32's various memory areas, System Exclusive messages are required.  Each message adds 10 bytes to the data to be transmitted.  By doing the math, up to 71 (MT-32) or 72 (CM-32L) System Exclusive messages may be sent at the start of a game to a LA synthesizer.  The structure of a system exclusive message is as follows :

F0 - Begin System Exclusive Message

41 - Manufacturer ID (Roland)

10 - Device ID/Unit # (Default is Unit 17)

16 - Model ID (Roland LA Device)

11 - Command ID (Request Data 1/RQ1)

This is sent from the computer to the synthesier to tell it to send the data in a memory area to the computer.  Command ID 12 is Data Set 1/DT1, and it is used when writing data to the synthesizer.

10 00 00 - The address of the area of memory to be addressed

00 00 17 - The number of bytes of data to be requested with RQ1.  With DT1, this can be up to 256 bytes with a single sysex command.

59 - Checksum

F7 - End of System Exclusive Message

The sysex files from Quest Studios also include an MT-32 Display Message at the beginning and at the end of the sysex file, adding approximately 58 bytes to the file.  The format of these commands is as follows :

F0 41 10 16 12 20 00 00 xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx ck F7

The Display of the MT-32 supports 20 characters, but the command data need not include all twenty character places.  Text is encoded in 7-bit ASCII.  You will have to calculate the checksum for the message.  You can find a Windows program that will avoid that tedious business here :

http://www.bwalk.com.au/Convert/Convert.html

This program can be used to convert text file containing command strings into a syx or a mid file :

http://www.bwalk.com.au/MidiUtil/FileConvert.html

Note that addresses and data never use a value above 7F, this is because these bytes are actually 7-bit bytes, not 8-bit bytes, the high bit is never used.  The above program can convert decimal and hexadecimal to the 7-bit values the MT-32 uses.

With a rev. 0 MT-32, there must be a 40 microsecond delay between the sending of system exclusive messages.  Thus it will take a minimum of three seconds to send a full patch bank to the MT-32.  The rev. 1 MT-32 and all other MT-32 compatible LA synthesizers do not have this limitation.

There is no reason why you cannot send more than one dump receive request at one time.  You can combine all the above dump receive commands into one file and use the file to obtain all the data at once.  The resulting file size for the MT-32 will be 18,541 bytes.  For the CM-32L, it will be 18,635 bytes.  After accounting for the text messages, this dump will be 16 bytes larger than the Quest Studio's dumps. This is because QS missed the temporary patch area for the rhythm part.

Yamaha FB-01 and IBM Music Feature Card

The Yamaha FB-01 FM Sound Generator supports seven patch/voice banks.  Each bank can hold up to 48 patches.  Banks 1 and 2 are RAM banks and this is where users can store their custom patches.  Banks 3-7 are ROM banks and have 48 patches each.  As its name suggests, these are the built-in patches.  Unlike the MT-32, there is no distinction between instrument and percussion channels/patches.  Thus the device supports 240 built-in patches and 96 user-created patches.

A Program Change command only works with numbers 0-47, essentially confining the non-FB-01 aware device to a small subset of its available patches.  To change the patch/voice bank requires a System Exclusive command to change the configuration parameters.  This is how another voice bank is selected.  The FB-01 has 16 RAM and 4 ROM choices for its Configuration Memory, which assigns MIDI channels, polyphony reserve, channel volume and the like.

The FB-01 receives 8 MIDI channels (8 parts), and by default uses MIDI channel 1-8.  It only supports 8 simultaneous note playback (8 note polyphony).  Each instrument patch can take from 1-8 notes.  The core of the device is the Yamaha YM2614 FM Operator Type-P, which is musicially and (almost) functionally identical to the YM2151 chip found in many, many arcade machines.  This chip supports 4-operator FM synthesis.

Sierra's games store custom patches in both RAM banks, so both will need to be dumped.  The FB-01 can only receive System Exclusive messages on the MIDI channel assigned to a specific module (thus up to 16 modules can be supported via the MIDI channels) The default is channel 0/1.  The system exclusive commands to do this are as follows :

F0 43 75 00 20 00 00 F7 (Voice Bank 0)
F0 43 75 00 20 00 01 F7 (Voice Bank 1)

Each resulting file will be 6,363 bytes.

Additionally, you may also need to dump the configuration memory.  The command to dump all configuration memory is :

F0 43 75 00 20 03 00 F7

The file will be 2,616 bytes.

Sierra's games also use System Exclusive messages to change instruments and voice banks and adjust certain events like Note On and Note Off with a finer degree of control than possible with a standard message.  This sysex is not generally large, but must be included to obtain an accurate rendition of the song.

This method works with either the IBM Music Feature Card or the FB-01.  The makers of the FB-01 helpfully also decided to allow you to also send data from the module using the front panel buttons, but using the sysex above allows for saving the resulting data in one step.

The IBM Music Feature Card defaults to the memory protection function to off.  It does not have a battery.  The FB-01 defaults memory protection to on and has a spot-welded CR2032 battery.  It needs to be set to off for custom patch data to be received by the FB-01.  The IBM Music Feature Card's power on defaults allow all MIDI messages to pass from the MIDI IN (with the breakout box) to the music hardware on the card.

When the FB-01 or IBM card receives patch/configuration dumps, it will send back the following sysex : F0 43 60 0x F7.  The 02 indicates an ACK, 03 indicates error, and 04 usually means you forgot to set the memory protection to off.  The FB-01 will also show dump/received!! for a good dump, a dump/error for a bad dump and memory/protect if the memory protection is on.  If you send all three sets of data, you will see the above sysex three times in the monitor.

If you want to send one sysex file to dump all three areas, put the configuration memory command first, then followed by the voice bank commands.  I have found that the FB-01 will not acknowledge the configuration memory dump if it immediately follows a voice bank dump command.  If it still doesn't work, send the dump commands as separate sysex files.  A complete sysex file with all three areas will be 15,342 bytes, and should have the configuration memory sent first.

Capturing MT-32 or FB-01 Music

In order to obtain MT-32 or FB-01 song data, the following steps must be accomplished :

1.  Capture the custom patches, if any

Not all games that support the MT-32 use custom patches.  Games like King's Quest IV, Police Quest II, LOOM, The Secret of Monkey Island and Ultima VI do not use custom patches.  However, they may still use a modest amount of sysex to modify existing patch and device parameters.  Most games only load patches once, but some games like Ultima VII and Serpent Isle load three sets of patches, and each must be captured to capture all the music.

Fortunately, most games do not send an MT-32 reset once the player quits them.  Additionally, MIDI cables are hot-swappable, so there are many ways to cut off a game and preserve its patches.  So the first task is to start a game and let load its patches, then quit.  The patches will be kept in the MT-32's memory.

The next step is to obtain those patches.  If you are looking to dump a Sierra game's patches, the work has probably already been done and you can skip this step.  Download the Sierra MT-32 Sound Library here : http://www.midimusicadventures.com/queststudios/mt32-resource/utilities/

The way I present here is a slightly tedious process, but typically you need only do it once per game.  It requires a windows-compatible MIDI interface and the MIDI-OX program.  The module will need to have its MIDI in and MIDI out cables connected to the interface.  I found that an rev. 0 MT-32 did not send all the data to MIDI-OX, but a CM-32L did.  The idea is to send sysex commands requesting that the module send the data in its memory.  You will need one command for each section of memory, then you will need to save the resulting data to a file and perhaps convert it from text to a binary sysex file.

MIDI-OX is good because it has command called "Send/Receive Sysex", which will automatically save your data to a .syx file.

Note that an LAPC-I will not work to capture patches in this way. The LAPC-I is equilavent to an MPU-401 connected to a CM-32L by a MIDI OUT cable only.  As there is no MIDI IN connection, the synthesizer has no way of sending data to the MPU-401 and thus the computer has no way to read it.  The SCC-1 and all wavetable daughterboards have the same issue, but typically patch information is not requested from those devices.

When capturing a dump, do not use a crappy UART MPU-401 compatible interface like the ones found on a Sound Blaster 16.  They failed to complete transfers of the MT-32's timbre banks.

2.  Record the MIDI as played in a game

DOSBox is extremely useful for recording MIDI via its Capture Raw MIDI function.  It saves all MIDI data to a MID file for easy editing in just about any sequencer.

You can also do this via a sequencer, which should be able to record MIDI data.  This works best with two computers.  In this case, connect the MIDI IN from your interface on computer one to the MIDI THRU of your MT-32.  Computer two, preferably the older machine, will play the game and connect its interface to the MIDI IN of your MT-32.

3.  Edit MIDI in Sequencer

In order to work with any MIDI file, you need a Sequencer.  The best two sequencers back in the day were Voyetra Sequencer Plus Gold and Cakewalk Pro.  Since we are talking to the MT-32, it is best to use vintage sequencers, and Quest Studios provides Voyetra's software for DOS and Cakewalk for Windows 3.1  Find them here :

http://www.midimusicadventures.com/queststudios/mt32-resource/utilities/

Both work in DOSBox, but because DOSBox does not implement the MIDI IN function, their functionality is somewhat crippled.  Personally I prefer Cakewalk Pro.

MIDI files can be edited in a Sequencer similarly to how audio files are edited in an audio editing program.  In this case, however, you will want to remove all the patch data that DOSBox captured.  For the MT-32, DOSBox will fill all 256 banks (and they are not enough) with the patch data.  Delete all of it with the Event List View.  Do not delete any other sysex.  For the FB-01, DOSBox will not completely capture the voice bank data, but you must only delete the sysex banks with the size 1024.

One thing you will want to do is to mute or delete any channels other than 2-10 for the MT-32.  In Sierra's early SCI games, for example, channel 1 contains PC speaker data and channels 11-15 contains Adlib data.  A CM-64 and CM-500 use channels 11-16 for their CM-32P and thus unintended sound will play on these channels if you are using those modules.

Cakewalk has the ability to play MIDI files, and you should avail yourself of this functionality. However, before you play a file, make sure to transmit the sysex patch bank with the Sysx view first.  Find an empty bank and send it.

4.  Embed patch to MIDI file (optional)

Cakewalk Pro uses .syx files to load patch banks in its bank manager.  Load the .MID, go into the Sysex View page and load the sysex bank.  Click on the Auto button and save your MID file.  That is it!  Additionally, it may be advisable to also embed an MT-32 reset sysex command so that you are sure you are not using any leftover data from any MIDI you played on the device prior.  Finally, you may want to add a few extra measures of silence at the beginning of the song.

I do not believe that embedding is the best way to present these files.  Many MIDI players have difficulty with large files or files with lots of sysex in it.  Windows Media Player does not have any such issues, nor does DOSmid.