Sunday, February 2, 2014

PCjr. Post-Cancellation, or the Afterlife of a Flop

November 1, 1983 - IBM announced the PCjr. to great fanfare.  Commentators predicted and expected that IBM's new system would bring order and compatibility to the fractured home computer market just as it had the business market with the PC and XT.  Magazines are published geared to the new system and software is updated to support the new features and otherwise run on the PCjr.

March 18, 1985 - IBM announced that it was discontinuing manufacturing the PCjr. system in April, intending to sell the remaining stock at a discount and not release any further peripherals or upgrades for the system.  It would continue to service the machines within their warranty period.

The reasons for the PCjr.'s failure have been well-documented elsewhere.  Had it not been discontinued, it would have probably have been sold until April 1, 1987, when the rest of the PC family was retired to make way for the PS/2 machines.  However, the public apathy for the machine a result of the machine's high price, competition from other home computers, miserable chicklet keyboard, incompatibilities with PC software and the high cost of the upgrades meant that despite IBM's weight in the industry, it had to be withdrawn as it was never going to the all-conquering success IBM intended it to be.

What happens when a buyer, believing in the solid name of IBM, buys a computer whose lifespan had just been reduced from years to months or even days?  Most PCjr.s had been sold during the 1984 Christmas season.  IBM not only abandoned the PCjr, but also soon abandoned its family and entertainment software products.  With one exception, the last games IBM marketed for the PC or PCjr. were released in 1985.  While it tried to put on a brave face by announcing a new and improved successor to the Jr., nothing came of it in the United States.  The closest thing to a PCjr. replacement was the PC JX, essentially the next generation of PCjr. released only in Japan, Australia and New Zealand.  It sold very poorly.  IBM never sold the PCjr. or JX in Europe and Tandy struggled to make an impact there as well.  IBM would not return to the market with a home-friendly machine until the PS/1 in 1990.

When IBM announced the PCjr. was being discontinued, software developers were the first to jump ship.  Microsoft, which had heavily supported the Jr. with the Microsoft Booster sidecar and an updated Flight Simulator 2.0 which took advantage of the Jr.'s capabilities, eliminated its PCjr. development almost overnight.  Spinnaker Software tried to burn its PCjrs in a great bonfire, only to find out that they wouldn't burn!.  Sierra On-line quickly focused its efforts to the PC and the Tandy platform, and many other game companies did the same.  Any software companies who had not yet jumped on the PCjr. bandwagon certainly were not about to start supporting the machine once its discontinuance had been announced.

All PCjr. magazines had already folded by December, 1984, in response to the weak market for the PCjr. before the 1984 Christmas season.  Peter Norton had written a trilogy of how-to books for the PCjr., Discovering the PCjr, Exploring the PCjr and Mastering the PCjr, but the third book was never released due to the discontinuing of the PCjr.

Every game that had support for the PCjr.'s graphics and sound, as identified in an earlier post on this blog, were all self-booting games released in 1984 or 1985.  In 1986, games were more and more beginning to run in DOS and very few advertised PCjr. support.  If a program had a sticker that said something like "IBM PC, XT, AT, Tandy 1000 and 100% Compatibles" that pretty much meant the PCjr. was unsupported and if the game worked it was more by chance than design.  Any DOS games from 1986 or later that did run on the PCjr., with expanded memory, tended to treat it just like an IBM PC with CGA. Sierra Online was the main exception, because its AGI engine had been originally built on the PCjr. and thus it was no great effort to make sure its games continued to run on it.  All Sierra AGI DOS games thus will work on the PCjr., but versions that work are a bit picky, the first versions of Space Quest, Police Quest, and King's Quest IV will not.  So will Thexder, 3-D Helicopter Simulator, later versions of Silpheed but later Game Arts/Falcom ports will not.  Early versions of King's Quest IV, Leisure Suit Larry II and perhaps Police Quest II specifically did not run on the PCjr., but later versions of these SCI engine games and other 16-color SCI0 engine games would run on a PCjr.

For the home user that had almost certainly dropped over $1,000 on the PCjr., it was not so easy to discard the computer like a bad memory as the mainstream industry had done.  Some undoubtedly felt that their purchase was now useless and soon consigned it to the attic or the basement.  Others probably only used it until they could afford something better.  But for some of the owners of the approximately 500,000 PCjrs IBM shipped out of its factories, they were not going to just let the machine gather dust and mildew.

Those who decided to stick with it and make a go with the Jr. were not completely left out in the cold, hardware wise.  The hardware expansion market for the PCjr. had dwindled considerably, but there were companies still trying to fulfill the need for upgrades.  Comapnies like Racore, Legacy and eventually PC Enterprises stepped up to offer an assortment of sidecars, cartridges, peripherals and expansion chassis to expand the capabilities of the comparatively crippled PCjr.  You could obtain a second floppy drive, a hard drive, 640KB of RAM, a clock/calendar chip, replacement keyboards, CPU accelerator boards, a coprocessor upgrade, Hayes compatible modems, and eventually SCSI adapters, VGA and Sound Blaster clones.  They sold compatibility cartridges that would fool software programs into thinking they were running on a PC.  In short, you could upgrade your Peanut almost as much as you could a PC or XT, but you had to do your research and purchase via mail order.  However, these expansions were sold to a limited market and pricey, often pricier than comparative PC expansions.  Also, with the monitor,  sidecars, expansion chassis and many adapters and cables to connect to standard PC peripherals, the PCjr. would eventually begin to look like a big "L" shaped spider.  PC Enterprises was in business the longest, finally closing its doors around the turn of the century.

For software, after 1985 things became really iffy for PCjr. owners.  Most PC game software (except Sierra), either only supported PC CGA, Hercules or EGA graphics and PC Speaker sound, and most of it required 256KB or more.  That software was indifferent to the PCjr. but if DOS-based, often would run if the PCjr had sufficient memory.  All IBM PCs and most clones by 1985 came with 256KB. While the Tandy 1000 also only came with 128KB, it was designed for 640KB, the PCjr. was designed for 128KB. While Tandy's memory expansions were pricey at first, they also added DMA, a widely appreciated feature which was difficult to implement on the PCjr.

For software now supporting Tandy graphics and sound, often the extra effort at trying to support a "dead" computer meant that developers did not bother, even though IBM made half a million PCjr.s and sold 400,000 of them.  Many developers did not have a PCjr. to test with.  Even though the IBM PCjr. and the Tandy 1000 operate almost identically, there are enough differences that making sure that software ran reliably on both was a real headache for a programmer unfamiliar with both systems.  Besides, with DMA, a relocatable video buffer, no extra latency between video and RAM access in the first 128KB, PC compatible floppy I/O addresses, two floppy drive support, easier hard disk support, better keyboard, more standard peripheral ports and faster Tandys, what time-pressed programmer wanted even to test their code on a PCjr.?

Here are some of the issues facing the programmer who wanted to make his software, designed on a Tandy 1000, work on a PCjr. :

Memory Issues - In the IBM PCjr., the first 128KB of memory is governed by the video controller.  This was done to simplify the design, eliminate the need for a DMA controller or separate circuitry to refresh the DRAM.  The video controller would read all the RAM sixty times a second.  However, this came at the expense of performance, as the video circuitry and the CPU had to contend with each other's access to RAM.  Any RAM added via sidecar above 128KB had its own refresh controller and thus accesses to and from this RAM was as fast as a PC.  So in the PCjr. there was a combination of "slow" RAM and "fast" RAM.  Tandy implemented this same feature in its machine, but unlike the PCjr, Tandy made sure that there was no adverse impact on performance.  So there is no "slow" and "fast" distinction in a Tandy, and any programmer desiring a consistent speed for their operations would have this headache.

The addition of memory above 128KB on a PCjr. does not give you as much memory as you would think. Adding more memory requires a DOS memory driver to configure the system to use the memory. Otherwise programs will not recognize or use it (with the rare exception of the Flight Simulator II booter.)  The memory driver will set the free RAM from 128KB upward and leave the slow first 128KB to the Video, BIOS, DOS and may configure the rest as a RAM disk.  A Tandy does not require this and can have more free RAM available to programs because its DOS does not need memory drivers or treat the first 128KB as non-user memory.  Generally speaking, a Tandy without the 768 RAM upgrade will report a maximum of 624KB available to DOS programs while a PCjr. will report 608KB.

Video Issues - Both the Tandy 1000 and IBM PCjr. have a video memory window at B8000 to maintain CGA compatibility.  Until the (upgraded) Tandy 1000 TX, there would be no actual memory in this area, it would redirect to the designated address of the main memory where the video buffer was located. However, IBM only provided a 16KB window at B8000-BBFFF while Tandy allowed access to a 32KB window at B8000-BFFFF.  For the 160x200x16 mode or any of the CGA modes, this made no difference because one screen's worth of these graphics modes use 16KB.  The 320x200x16 and 640x200x4 modes require a 32KB buffer.  On any Tandy 1000, the programmer could use the B8000 window and not have to bother about figuring out where the video buffer really began.  If the programmer made no changes to his code for the PCjr., only every other line would be visible.  This gave rise to the "Tandy-mod" for the PCjr., where a chip would be soldered into the PCjr. to show all the lines.  To support the PCjr., the programmer would have to write directly to the portion of memory which the video circuitry was using when using a 32KB mode.

The IBM PCjr. had a chip called the Video Gate Array (VGA) that controlled the graphics modes in conjunction with the MC6845.  Tandy implemented this VGA, but its implementation was a little different.  The PCjr.'s VGA had an address and data write register at port 3DA, with the write mode switched by a read to port 3DA.  Tandy must have decided this was inefficient, so address writes in its VGA went to port 3DA and data writes to port 3DD.  Any program that writes to the VGA must be aware of this difference.

Moreover, the actual registers that controlled the modes were implemented differently in the Tandy and PCjr.  In the Tandy, to restore compatibility with the PC CGA, Tandy's VGA supports I/O ports 3D8 (Mode Control) and 3D9 (Color Select).  The PCjr. does not implement these ports, and handles all of the Mode Control functions in the VGA internal ports, most important is port 00.  Tandy's VGA does not implement port 00 in its VGA, instead relying mainly on 3D9.  The differences in the VGA ports (and there are others) is another headache for the programmer who wants to directly program the graphics registers.

Floppy Drive Issues - Tandy followed the IBM PC and used addresses 3F0-3F7 to communicate with the Floppy Disk Controller.  The IBM PCjr. uses addresses F0-F7.  While software using DOS or BIOS routines should not care, since using DOS or BIOS takes care of disk transfers, programs accessing the disk controller directly would need to be modified for the PCjr.  Booter programs and copy protection routines, important in the 1980s, frequently accessed the hardware directly to obfuscate the code or to improve performance.  Moreover, the PCjr. had no provision for DMA while every Tandy 1000 had it or could be upgraded to it.  DMA made for faster disk transfers, and timing critical disk functions would be affected by this.

Keyboard Issues - Tandy uses a 90-key keyboard, and its raw scan codes are identical or similar to the 83-key IBM PC keyboard, except for those keys unique to the Tandy keyboard.  The 62-key PCjr. keyboard with its different arrangement uses different scancodes for the keys that exist on the 83-key PC keyboard.  This is typically with the Fn key, and the scancode pair is then translated by the BIOS for the PC scancode. Tandy's keyboard uses IRQ1, like the PC's, while the PCjr's keyboard uses NMI.  All these make for issues with low level keyboard reading routines.

Even with these issues, there was considerable life left in the old Peanut.  It was quite possible to purchase a PCjr. in 1987, often at a heavily discounted price.  IBM provided some support for the Jr. until that time at least.

In the 1980s, there were often users groups created in a geographical area dedicated to a particular home computer.  Perhaps spurred in part by the abandonment of the platform, PCjr. users groups were formed in several parts of the country and operated for many years, some well into the 1990s.  The most famous ones were the Eugene, Oregon PCjr. Users Group and the Metro PCjr. Users Group in the metro-Washington D.C. area.  These groups provided advice, support and meetings where PCjr. owners could trade the latest news and gossip, review hardware and software and try to solve problems.  The groups also had their own Bulletin Board Services (BBSs), where people could post on message boards and download patches and programs.  Newsletters in print and on disk were also a feature of these clubs.

Many issues of one particular newsletter, the jr Newsletter, are available online.  The jr Newsletter ran from June 1986 to at least October 1993.  This newsletter provided tips, fixes and advertising for PCjr. specific peripherals.  IBM's BBS also had PCjr. specific files for a long time.  Some games, sometimes unintentionally, still supported PCjr. graphics and sound or were hacked to do so.  Electronic Arts, for example, included a PCjr. patch for Starflight made by a PCjr. owner who submitted it to the company.

The PCjr.'s life was not totally brought to an abrupt end in March 1985, despite the views of many at the time and since.  Extending the lifespan of the machine required the user to become intimately familiar with this machine's hardware and the software available for it.  It is an important example of how ordinary people, despite mainstream indifference (and often contempt) and market forces which should have condemned the machine into a nearly-forgotten footnote of computing history, allowed a unique computer to achieve some measure of the hoped-for potential intended for the machine in 1983.

1 comment: