Showing posts with label IBM PCjr.. Show all posts
Showing posts with label IBM PCjr.. Show all posts

Thursday, October 23, 2014

4.77MHz 8088, You're Needed!

The floor for all PCs, in terms of speed, is the Intel 8088 CPU running at 4.77MHz, the speed it ran in the IBM PC Model 5150 released in 1981.  However, there are various nuances when it comes to PC speed :

The IBM PCjr. also ran at 4.77MHz, but its access to 128KB of RAM was substantially slower than the PC because the video chip also accessed memory to refresh the memory.  It could decrease performance by 15-20%.  However, if software is ran in memory above 128KB, the performance is slightly better than the IBM PC.  Because the PCjr. was not designed to use more than 128KB, at least in the beginning, most early software did not account for the speed increase.  On the other hand, most PCjr.-specific software was contained on cartridges or self-booting disks and did not need RAM about 128KB.

A DOS rip of a PCjr. booter may run too fast.  Lode Runner is a good example of a game with this problem.  Fortunately it does have a speed adjustment that can reduce the speed to sane levels.  This is, however, a rare feature.

Most 8088s in the PCs and compatibles, including all the IBM PCs, XTs most of the PCjr.s, were socketed.  The NEC V20 was a very popular upgrade and was a simple replacement for the 8088.  It could increase performance by 15-20%, depending on the application.  Later, ISA accelerator cards like the Orchid Tiny Turbo and the Intel Inboard 386PC plugged into an ISA slot and the CPU socket and could speed up the system to be the equivalent of a low end AT or 386 machine.  Some brave users would try to overclock their machines by using crystal-switching devices like PC Sprint, which allowed the processor to use a faster clock crystal while the rest of the system used the standard clock crystal, vital for system timing.  

Later PC compatibles bumped the clock speed (Tandy 1000 SX, EX and HX), used a V20 (Tandy 1400) or the 8086 with a true 16-bit data path to RAM (some Compaq machines, Tandy SL, SL/2 and RL, IBM PS/2 Models 25 and 30) to improve speed without seriously sacrificing compatibility with software that relied on the basic speed.  Usually one speed "bump" would not be sufficiently serious to break software, but gameplay, sound effects and graphical effects could be affected when compared to the base machine.

However, when IBM released the IBM PC AT in 1984, it included a 6MHz 80286, which could run applications three times faster than the original PC or XT.  All the software that had been written before the AT's release had only to cope with one speed, so code that was dependent on processor speed could run far faster than intended.  Even when the AT was released, programmers did not necessarily put speed checks in their code overnight, the AT was an enormously expensive machine and games would be the last kind of software expected to run on it.  Thus for a five year period, 1981-1986, game software was generally designed to run on a 4.77MHz 8088.

In addition to the CPU speed, the speed of the video card sometimes needs to be taken into account.  The IBM Color/Graphics Display Adapter was the first graphics card for the IBM PC and compatibles, and it was widely cloned.  (By contrast, the IBM Monochrome Display and Printer Adapter could only show 80-column text and was not suitable for most games).  The PCjr. was only semi-compatible and the Tandy 1000 was (almost) fully compatible with IBM CGA, but it accessed memory far faster than the IBM card.  Some games rely on the performance of the IBM CGA card to produce special graphical effects.

Eventually, most early games will break sooner or later as the processor speed and generations increase, or the CGA hardware found less and less support with more advanced graphic cards.  Some games, however, like Shamus and Alley Cat, were famously far-sighted and could be run on virtually any system that can run DOS, regardless of processor speed.

IBM PC 4.77MHz

Defender
Defender simply runs too fast when the speed becomes any greater than one bump.  Forget about it running at a playable speed on a 286, even one that has been slowed down to 4MHz as with a Tandy 1000 TX or TL.  A 4MHz 286 is about as an 8MHz V20 or 8086.

Ultima I-IV
All of the first four Ultima ports to the PC vary the length of their sound effects, the speed of attacks and the spawning rate based on the system speed.

Dunzhin: Warrior of RAS
Dunzhin features synthesized speech, and the pitch of the speech is speed sensitive.  "Welcome to Dunzhin!"

IBM PCjr. 4.77MHz

Lode Runner & Championship Lode Runner
These games detect the presence of the PCjr. and adjust their speed.  Running games like these as a DOS conversion will result in the action running very fast.  The speed settings contained in the game may not fully compensate.

IBM PCjr. 4.77MHz and Tandy 1000 4.77MHz

Touchdown Football
This game was released by Imagic first for the PCjr. and somewhat later for the Tandy 1000.  At this point, the Tandy 1000 only ran at 4.77MHz and came with 128KB of RAM onboard.  The PCjr. version could run in a 128KB Tandy 1000, but the digitized speech would play back too quickly because the Tandy does not have same the speed penalty for memory accesses in its 128KB of RAM.  If you were able to accelerate your PCjr., the speech would playback too quickly.  The digitized speech in the Tandy version is affected by any speed bump, such as the 7.16MHz Tandy 1000 SX.  Fortunately, Tandy allowed you to change the speed of the CPU to 4.77MHz either at boot-up or in DOS.

Demon Attack
Also developed by Imagic and ported from the PCjr. cartridge version.  Similar to Touchdown Football, this game is extremely speed sensitive and runs properly only on a 4.77MHz 8088 Tandy 1000/A/HD/EX/HX/SX.

IBM PC 4.77MHz and Tandy 1000 4.77MHz

Super Boulder Dash
As discussed here : http://nerdlypleasures.blogspot.com/2016/08/boulder-dash-pc-speed-and-joysticks.html, the joystick will respond correctly only at this speed.  Fortunately it will still work with a V20 CPU.

IBM CGA Graphical Effects

Frogger
Jungle Hunt
Frogger and Jungle Hunt rely not so much on processor speed as they do on CGA speed to achieve the effect of making a change in the background color (Frogger) or palette (Jungle Hunt), in mid-frame.  Thus, the default graphics in Frogger will show blue water on the top and black pavement on the bottom, and show a white score text (using the intense cyan, magenta and white palette) on the top and green, red and brown in the playfield for Jungle Hunt.  Even at 4.77MHz, I discovered that at least Jungle Hunt will have an issue with initiating the palette switch on the right scanline when I was using an ADP-50L hard drive controller.  Using a different hard drive controller fixed the issue.

Digger
Digger uses a color-cycling effect on its High Score screen that looks properly when run on a 4.77MHz machine with a CGA card.

8088mph
This recent (2015) demo will only run correctly with a 4.77MHz 8088 CPU and an IBM CGA card. It relies both on the speed of the CPU and the video memory speed access of the CGA card, as well as the composite colors generated by the IBM CGA card.   It has different settings for Old and New IBM CGA cards.

Saturday, October 11, 2014

Directional Difficulties - The Early Keyboards and Cursor Keys

When IBM introduced the PC, it came with an 83-key keyboard keyboard that a number row and a numeric keypad.  There were no status LEDs on this keyboard, so the only way you could tell whether the Num Lock key had been pressed was by observing the behavior of the numeric keypad.  If a number was typed, then the Num Lock was on.  The general layout was as follows :


All layouts taken from here : http://www.quadibloc.com/comp/kyb03.htm.  There were also separate + and - keys and a PrtSc * key.  Not every game used the numberpad for directional controls.  

For the IBM PCjr., IBM severely cut down the keyboard size, build quality and number of keys.  There was no numeric keypad.  Instead, the keyboard only had six discrete cursor keys.  Here is the new layout :

The cursor keys pull double and even triple duty, as their function changes  if the Shift or Fn key is held down.  There is no Num Lock key on this keyboard.

The Num Lock key can be "pressed" by hitting Alt, Fn and N.  When the Num Lock function is activated in this manner or the Shift key is pressed, then Up becomes 8, Left becomes 4, Right becomes 6, Down becomes 2, Ins becomes 0 and Del becomes .  If the Fn key is held, then you get Home, Pg Up, Pg Dn and End for Up, Left, Right and Down, respectively.   Press Fn and Shift, and you get 7, 9, 3 and 1.  Numberpad key 5 cannot be directly generated by the PCjr. keyboard.

The next major keyboard innovation came from Tandy.  Tandy 2000 and more importantly 1000 keyboards have separate cursor control keys in the now familiar inverted-T layout.  In addition, there is a numeric keypad, but several functions have been changed.  There are individual keys for Home, Insert and Delete. Here is the layout :


There are more differences between an IBM and a Tandy keyboard as well.  However, the differences do not always make a difference to programs.  There are two general methods with PCs to determine which key was pressed.  The first was to call Int 16h.  The result would give you a translated scan code and an ASCII character.  The second was to read the raw scancode directly from the hardware.  Some programmers used the second method with their own keyboard interrupt handlers.  This tends to be the cause of keyboard incompatibilities.

Because some keys, like the numberpad keys, can give results identical to other keys on the keyboard, even the BIOS allows you to distinguish between the 1 key on the number row and the 1 key on the number paid.  You can tell the difference between the Left and Right Shift keys, even though their function is totally identical.

A Tandy has a Num Lock key and even a status LED, but when the Tandy boots up, the Num Lock defaults to off, just like the PCjr.  An IBM PC defaults the Num Lock function to on.  Many games require you to turn the Num Lock on when running on a Tandy 1000.  This is because the characters given by the Tandy keyboard are often not the same as on an IBM PC keyboard.  However, for numbers they will always be the same.  

The Tandy inverted T cursor keys are another issue.  A well-behaved program doesn't care which key is pressed so long as it reads the scancode it expects.  However, not every DOS game is well-behaved.  In DOS, the separate cursor keys function as they would on an IBM Model M keyboard.  However, some games rely on the numeric keypad to give eight movement directions.  Tandy's inverted-T cursor keys give different raw scancodes and may not always be recognized.  

Later Keyboards :

The 83-key keyboard layout was followed for the PC AT keyboard with a few differences to key placement and size.  IBM included status LEDs and an 84th key for Sys Req.  The raw scancodes are completely different from an 83-key keyboard, only the BIOS allows for compatibility with PC and XT software.  However, despite the fewer number of keys compared to more modern keyboards, it is still usable in any system with a PS/2 port.  

Finally, IBM released the Model M 101-key keyboard which essentially defined the minimum number of keys and the basic layout that we use today.  Its provided fully separate cursor keys in addition to the numeric keypad.  Most of the time, the cursor keys can be used as directionals, but because they have different raw scancodes than the numeric keypad cursor keys, some games will not recognize them.  The Model M supports three sets of raw scancodes, Set 1 is the PC/XT scancodes and it sends those scancodes when it is plugged into a PC or XT or Tandy 1000 TL/SL/RL or the 8086 based IBM PS/2s (but compatibility with anything other than the PC/XT's 2nd or 3rd BIOS is dicey).  Set 2 is when it is plugged into an IBM PC AT, PC/XT Model 286 and just about every other computer, including modern machines. Set 3 was intended as the native PS/2 scancode set and is similar to Set 2 but was rarely used. 

Sunday, September 28, 2014

The Lost PC Game Versions

Updated 03-28-2021

Originally this blog entry was titled "The Lost PCjr. and Tandy 1000 Game Versions".  However, several years later there are very few games known to have any special support for PCjr./Tandy graphics or sound remaining unavailable.  So I have decided to expand this list with other notable games.  You won't find these games in any DOS or ROM collection, on any abandonware site, from any torrent site, or to buy from any legitimate retro PC game selling site like Good Old Games.  Where I know of corroboration for these games, I will give it.

Agent USA - Tandy
Supports PCjr. graphics and was advertised for sale in Tandy's catalogs, so a Tandy version with support for enhanced graphics may exist.

Congo Bongo - CGA Composite
This game, like Tapper, came as a "flippy" disk.  This is a disk where both sides are independent of each other and can be used in single or double sided drives.  This is rare on the IBM PC, and disks for the IBM PC have two index holes.  Ultima 3 also used a flippy.  One version had graphics suitable for RGBI monitors, the other was meant for composite color monitors.  The composite color version has yet to be preserved and distributed.

Dragon's Keep - PCjr.
Based on installation instructions in the manual for the PCjr. and magazine articles from the time period, this game may have been ported to the PCjr.

EcoQuest 1 - EGA 16-Color
EcoQuest uses the Sierra SCI1 engine, and like other SCI1 games, it had separate 16-color and 256-color versions.  Other SCI1 games like King's Quest V and Conquests of the Longbow have their 16-color versions available, this is the only one which is not available.

Gauntlet II - Tandy DAC
Gauntlet II had a bonus disk, which you had to send away for to Mindscape, that added digitized sound support for owners of a Tandy 1000 with a DAC, such as the TL, SL and their successors.

Mouskattack - PC
A 2019 discovery of this Sierra port from the Apple II and Atari 8-bit computers : https://www.mobygames.com/game/mouskattack/cover-art

Oil's Well - PCjr.- PCjr.
Although there is a hack which gets Oil's Well working on a PCjr./Tandy 1000, the original disk still needs to be redumped because the disk was damaged where the PCjr. code was.  The original game may have PCjr/Tandy sound support.

Superbowl Sunday - Tandy
Supports enhanced PCjr. graphics.  Advertised in Tandy's catalogs, so a version that supports enhanced graphics on a Tandy may exist.

Wizardry II - 5.25" Disk
The Wizardry sequels were released on 5.25" disks and 3.5" disks, but only the latter are available for Wizardry II.  All booters should have 5.25" disks versions available because early computers like the IBM PC, XT and PCjr. did not have 3.5" drives.

Friday, September 5, 2014

Flavors of PC Compatible BASIC and Why You Should Care

Cassette BASIC :

In 1981, when IBM released the IBM PC Model 5150, it included BASIC in ROM.  In the 5150, it was contained on four 8KB chips, in later machines, it was included within the 32KB chips that included the BIOS.  In every IBM PC model it occupies the space from F600:0000 to FDFF:0000.

Cassette BASIC, as its name implies, has commands for saving and loading only to a compact cassette.  In order to save to or load a program from a cassette, the user needed to connect a cassette drive to his IBM PC with a special cable.  On the back of the IBM PC Model 5150, there was a 5-pin DIN next to the keyboard DIN that this cable would plug into.  At the other end of the cable there would be a 3.2mm audio jack for the auxillary or microphone input (to save/record data from a PC), a 3.2mm audio jack for the earphone output (to load/playback data to the PC), and a 2.5mm jack to control the tape recorder remotely. The PC had a relay circuit on the motherboard that would start and stop the motor so that the user would not have to.

IBM did not offer a cable for the 5150, but Tandy/Radio Shack TRS-80 and Color Computer tape recorders came with the correct cable.  Most older tape recorders, including those Radio Shack sold for their non-PC compatibles, had four audio jacks, the EAR, REM, MIC and AUX.  Current recorders ditch the AUX input and only have a MIC input.  REM is the smaller jack that controls the cassette deck.  There was a jumper on the system board to set the appropriate signal strength for a MIC input or an AUX input.

Cassette BASIC comes in three versions, C1.0, C1.1 and C1.2.  C1.0 will only be found in the very first IBM PCs, typically those with a 16-64KB system board and a BIOS version dated 04/24/81 or 10/19/81. C1.1 generally should come with all IBM PC Model 5150s with a 64-256KB system board or those systems with a BIOS version dated 10/27/82 (the last).  However, the BIOS in the IBM PC is contained in one chip, U33, and can be updated in an 16-64KB system board without updating BASIC.

All later IBM PCs, the XT, Portable, AT, XT/286 and Convertible, contain Cassette BASIC C1.1.  The PCjr. (and probably the PC JX) uses Cassette BASIC C1.2 for reasons described below.  All PS/2s released during the 1980s and early 90s, and the early IBM PS/1s, also contain Cassette BASIC C1.1 for compatibility reasons.  No other PC Compatible system, unless an exact clone of one of these systems, included Cassette BASIC.

Unlike the disk-based versions of BASIC, Cassette BASIC does not require PC or MS-DOS to run.  However, because the IBM PC and IBM PCjr. are the only PC-compatible systems known to come with circuitry to drive a cassette recorder, Cassette BASIC can only save or load programs on these two systems. 

Disk BASIC, Advanced BASIC and GW-BASIC :

Disk BASIC and Advanced BASIC were included with PC-DOS v1.0 and every version thereafter, 1.1, 2.0, 2.1, 3.0, 3.1, 3.2, 3.3, 4.0 and 4.01.  They were replaced by QBASIC in PC-DOS 5.0.  The version number for Disk BASIC and Advanced BASIC correspond directly to the version of DOS they came with.  This you will see D1.1 for the version of Disk BASIC accompanying PC-DOS 1.1 and A3.3 for the version of Advanced BASIC that came with PC-DOS 3.3.  Disk BASIC is invoked by executing BASIC.COM in DOS, and Advanced BASIC by BASICA.COM in DOS.

The Disk BASIC-Advanced BASIC split was due to the low amounts of memory that came with early IBM PCs.  You could buy an IBM PC with only 16KB of RAM, but with that amount of RAM, you could only run Cassette BASIC.  Disk BASIC required 32KB of RAM, and Advanced BASIC 48KB of RAM.  Disk BASIC could do everything that Cassette BASIC could do and added support for saving and loading programs to floppy disks and serial port access, keeping track of the date and time and supporting two additional printers.  Advanced BASIC does all Disk BASIC does and more, such as support for more graphics and sound statements and event trapping.

PC BASIC does not support multiple memory segments, it runs everything within one 64KB segment.  Thus, after PCs began shipping with 128KB of RAM or more, there was no further need to use Disk BASIC.  In fact, as of DOS 3.3, BASIC.COM was just a small (1-2K) stub that called BASICA.COM and was only present for compatibility.  DOS 1.0-3.2 had a functional BASIC.COM.  PC BASIC would keep up with DOS features, like the added support for subdirectories in DOS 2.0 and the IOCTL calls in DOS 3.0.

With non-IBM machines, vendors and OEMs released system-specific versions of MS-DOS.  With these operating systems, GW-BASIC was included.  GW-BASIC did not require Cassette BASIC.  In these systems, sometimes there is a large BASIC.EXE and a small BASICA.COM.  BASICA.COM is the stub that executes BASIC.EXE.  Sometimes there is also a BASIC.COM stub.  In certain systems, the file was BASICA.EXE or GWBASIC.EXE.

Tandy's GW-BASIC for the Tandy 1000 series included the commands found in Cartridge BASIC to control its PCjr-derived advanced graphics and sound capabilities.  The AT&T 6300's GW-BASIC included commands for the advanced graphics capabilities of that system, and the Hercules Graphics Card came with a utilities disk with HBASIC, which allowed the use of the 720x348 graphics mode these cards support.  A generic GW-BASIC would not support these special features.  Microsoft began releasing generic, non-OEM specific versions of MS-DOS starting with MS-DOS 3.2.  A generic version of GW-BASIC can be found on them.

IBM also released Compiler BASIC which allowed users to compile their program into object code so it does not require a BASIC interpreter to run the program.  Most companies that released games found it simpler to run their code through an interpreter, because every computer with a disk drive and DOS should have had one during the 1980s.

Cartridge BASIC :

The PCjr. included Cassette BASIC C1.2 in its system ROM.  Due to the differences between the PC and PCjr., the BASIC code cannot be identical.  However, to maintain compatibility with applications written for Cassette BASIC, all the functionality of PC Cassette BASIC is included in PCjr. Cassette BASIC, and nothing more.  IBM released an official cassette cable that plugged into a unique male BERG-style port on the PCjr., but it requires a cassette recorder with an AUX input.

IBM released Cartridge BASIC with the PCjr., and the user had to buy it separately.  It is a 32KB cartridge that plugs into either cartridge slot of the PCjr.  Cartridge BASIC included commands to take advantage of the PCjr. video adapter and sound chip.  Cartridge BASIC has only one version, J1.0.  Disk BASIC and Advanced BASIC, when run on the PCjr., will show the version as J1.0, regardless of DOS version.  Disk BASIC and Advanced BASIC will not run unless Cartridge BASIC is present.

Using Cartridge BASIC in a PCjr. with more than 128KB of RAM imposes special problems.  Cartridge BASIC was not designed for more than 128KB, and programs run it may not run correctly or at all. However, the PCjr. will not recognize extra RAM unless a device driver is loaded in DOS.  If DOS is loaded, either from a disk or a hard drive without a device driver loaded, then Cartridge BASIC should run normally.  You will be limited to the first 128KB of RAM and the poor performance resulting by running BASIC code within it.  The popular device driver JRCONFIG 3.1 included an unsupported /q command line switch where it will lie about the amount of memory available to BASIC, but it will warn you that anything contained in a RAM Disk or Print Spooler created by JRCONFIG will be in danger.

QBASIC :

In PC-DOS 5.0 and MS-DOS 5.0, Disk BASIC and Advanced BASIC were no longer included with the operating system.  Instead, QBASIC version 1.0 was included.  QBASIC was a cut down version of Microsoft QuickBASIC.  QBASIC does not require line numbers and supports a mouse cursor, split windows, drop down menus and multiple colors in its text-based user interface.  The MS-DOS EDIT.EXE program requires QBASIC.EXE, QBASIC.HLP and EDIT.HLP to work.  QBASIC tends to be a poor performer on 8088-based XT-class and low speed 286-based AT-class machines.

I read that the original version of QBASIC in PC-DOS 5.0 still required Cassette BASIC in ROM, but it only used checked to see that it was there before loading QBASIC.  This requirement was removed in the QBASIC that came with PC-DOS 5.02.  QBASIC version 1.1 was included in MS-DOS 6.0 through Windows ME and NT 4.0.

BASIC Games :

The first game ever written for the IBM PC was Donkey.  This simple game was included as the file DONKEY.BAS with several other demonstration programs included on the DOS disks.  In fact, half the files included in PC-DOS 1.0 and 1.1 were BASIC demonstration programs.  It is included with PC-DOS 1.0-3.2.  With DOS 3.3, virtually all the demo programs were eliminated.  

QBASIC in MS-DOS 5.0 and PC-DOS 5.0 came with two games, Gorillas and Nibbles.  Their files are called GORILLA.BAS and NIBBLES.BAS.  Nibbles is a text mode game that uses an 80x25 column mode, but appears as a 80x50 column mode by the use of a half-bar ASCII character (where the top half uses the foreground color and the bottom half uses the background color).  It works with any video adapter. Gorillas uses either the 320x200x4 CGA Mode 04 or the 640x350x16 EGA Mode 0F.  They are intended to be run on a low-end 386 or a high end 286.  Both games would be gone by MS-DOS 6.22 and PC-DOS 6.1

Games Requiring BASIC :

Several games, usually early games, used Cassette/Disk/Advanced BASIC.  Some were copy-protected DOS disks that directly accessed Cassette BASIC.  They must be run on an IBM system.  Nine games commercially released by IBM early in the life of its PC line require Cassette BASIC or Cartridge BASIC.  They are

Adventures in Math
Arithmetic Games Set 1*
Arithmetic Games Set 2*
Bumble Games*
Bumble Plot*
Casino Games
Juggles Butterfly*
Monster Math
Strategy Games

* - Copy Protected (The Learning Company games) or probably Copy Protected (Science Research Associates, Inc.)  IBM never seemed to copy protect the games it developed internally, but did with any game it released that was licensed from or developed by another company.  Any game that is not copy protected, or has been cracked to run on a generic disk should be able to be run with GW-BASIC.  Mobygames lists 75 games that require BASIC, and some are sophisticated commercial releases like Battle of the Bulge, some are old classics like Temple of Apshai and others are small single file games that just need a BASIC interpreter. There are many, many freeware games that run on QBASIC, and while Mobygames may not document every Cassette/Disk/Advanced BASIC game ever made, it does not really list any games that use QBASIC other than Gorillas an Nibbles.  A good place to start to find QBASIC games is here :

http://www.qbasic.com/games/
http://www.petesqbsite.com/index.php


Monday, August 4, 2014

HomeWord - Sierra Online's Easy to Use Word Processor

Ken Williams, who founded what would become Sierra Online in 1979, was a programmer. He had worked service bureaus selling computing services to businesses.  He programmed on mainframe computers, and bought an Apple II with a disk drive to develop a FORTRAN compiler.  His wife Roberta loved playing computer text adventure games, and persuaded him to program her idea for a game on his Apple II.  The result was Mystery House and the rest was history.  Within a year of Mystery House's 1980 debut, Sierra had published a Word Processing program called ScreenWriter, but felt there was a market for a more family-friendly program.

The end result of Sierra's efforts was HomeWord, released for the Apple II and ported to the IBM PC and PCjr.  Sierra's program was not going to compete with WordStar, WordPerfect or even Microsoft Word.  In fact, it was marketed toward people who would have been too imtimidated by WordStar's command shortcuts or WordPerfect's brick-thick manuals.  Many, many home-market friendly computer companies released word processors.  Broderbund's Bank Street Writer was one of the products against which HomeWord would compete.  Sierra would later release HomeWord II, which would have full hard drive support.  HomeWord came with a tutorial cassette to walk the novice user through his first word processing session.

In this blog entry I am going to take a look at HomeWord for the IBM PCjr., released at the end of 1983.  It was sold through IBM for $75.00. This version only ran on a PCjr., it will fail to load if it detects the presence of DMA, which would indicate a PC.  It came with an overlay for the PCjr. chicklet keyboard that looked like this :


The disk was formatted for DOS 2.1, but was copy-protected.  It required the user to save his files to a formatted floppy disk.  It could exit to DOS and contained programs like FORMAT and DISKCOPY to allow the user to do that without needing his DOS disk.  The program did not support hard drives.  Hard drives were extremely expensive in 1983 and were not intended for the consumer PCjr.

When you boot the HomeWord disk, you will see the following :

Doesn't this look familiar...
 then this :

I sincerely doubt they sold nine hundred million copies
After the title screen, the disk's AUTOEXEC.BAT file will automatically execute the DOS DATE and TIME commands, in order to remind you to set them.  The PCjr. had no real-time clock, but even so, many people were probably too lazy to set the date and time.  After the date and time prompts, the program would show you this screen :


The menu is using a tweaked 4-color graphics mode 04h, which requires less RAM than a 16-color mode but more flexibility than the PCjr. text modes.

HomeWord is pretty functional for a basic word processor, and the commands are easy to use.  The program is will describe what you need to do, and you can see the results fairly quickly to make sure you have it right.  The program will allow you access to most, if not all, of them via the menu.  However, learning the shortcuts makes things easier (refer to the overlay in the image above).  Instead of going through all its capabilities, let me allow the program to show some of them to you :

Beginning of the Document
Menu Selections
Scrolling Down is done by the Cursor Control (Arrow) keys
The program also supported 80-column "text", in reality graphics mode 06H :

80-column mode, note the use of inverse text to identify functions
The PCjr.'s graphics capabilities were not quite ready for WYSIWYG, but Sierra did try to give the user a good idea of what the document would look like before they used the print command.  On the bottom right of the screen, there is a miniature version of the page, showing the text alignment as it was being typed.  There is also a "show document" command that will display the whole document as it will appear on the printed page.  The scrolling happens automatically, and you need to press the spacebar to pause it.  Unfortunately, there is no obvious option to have it pause screen by screen.

The program supports custom margins, combining documents, headers and footers and page numbers.  It does not support automatic footnotes, but that was a function of high-end Word Processors.  The resulting files are very small and almost plain-text, so only the formatting would be lost.  If you want to show off your mastery of printer escape codes, there is a function which would allow you to insert them into the document.  You can also see the raw ASCII for the document.

Most keyboard functions are handled by the Control key, but the Alt key is sometimes required and the Fn key will also be frequently used.  Since I don't have the manual, I am not aware of the function that will bring the cursor to the beginning or end of the line.  Once you turn a function on, like Bold or Underline, the function will apply to all text until you use the Normal function to turn those attributes off.  No support for italics, but that was not a common feature of the printers of the day.

Here is the end result as printed on my IBM Compact Printer.  Although this program has explicit support for a serial printer, it refused to print anything more than two lines with that selection.  It would stop printing, saying my printer wasn't ready.  The hell it was!  I believe it was confused because I had an Internal Modem and the Parallel Printer Attachment installed.  Instead, I tricked it into thinking it was printing to a parallel printer via the DOS mode command.  Using the MODE command found in DOS 2.1, I used the following commands to fool the program (you have to exit the program first, type the commands in DOS, then restart it):

mode lpt1:=com2:
mode com2: 1200,n,8,2,p

With that, the printer printed as well as the Compact Printer can, and here is a scan of the results :

To Boldly Go, or maybe Not
This program was designed to run on a 128KB PCjr., and suffers from the performance limitations of that machine.  Even so, the program is not as slow as you might expect.  I do not know if the speed can be improved by loading it after using a device driver to allow it access to the fast memory contained on a PCjr. attachment, but I suspect it would.

Sunday, June 8, 2014

One Issue of PCjr. Magazine

Front Cover - The guy in the photo is shown at the beginning of the Dow Jones article, I think his expression is a double-take after seeing the prices for the service
In February of 1984, PCjr. Magazine was first published to highlight the new PCjr.  This magazine was published by Ziff-Davis, which had previously began PC Magazine in February/March, 1982, soon after the IBM PC's debut.  A friend of mine sent me a copy of PCjr. Magazine, Volume One, Number Eight.  I found the magazine easy to read and wanted to share some highlights of the issue.

This volume was dated for September, 1984, roughly seven months after the first customers had received their PCjr.s. (PCjr. was an "Early Bird Certificate" special for Christmas 1983).  It would cease publication by October of that same year, as reported in InfoWorld (which I consider something akin to the Annals of Computers).  The last issue was released in November, so only two more issues followed this one.  As the magazine is not available online, I would like to share some of the insights contained therein.  This magazine is extremely important because it reviews King's Quest in the issue. I will start with comments on specific ads and features which I find interesting by page number, and then make some general comments.

Fold-out Cover : Advertisement for the Tecmar jr Captain, a neat add-on sidecar with a parallel port, RTC and 128KB of RAM, expandable to 512KB.  Essentially all the good IBM sidecar upgrades rolled into one.  Tecmar also got the back cover.

Back Cover - Tecmar's Ad probably cost as much to print as it would have been to rent that ship.
Page 1 : WordPerfect, now available in jr. version.  WordPerfect was the successor of WordStar as the standard word processor for many, many computer users.

Page 10 : Impulse's Jr. Partner sidecar, similar to the jr Captain.  This advertisement implies that the sidecar can be upgraded using standard DRAM chips, all the way to 512KB.  It also advertises a bi-directional parallel port with a 16-bit timer.

Page 14 : AST's ad, "COMING SOON, New Products for PCjr."  AST made great stuff for the PC, but apparently decided not to follow through on their ad for the PCjr.

Page 15 : "Screen Play" Column.  He reviews Star Fleet I : The War Begins and Wizardry : Proving Grounds of the Mad Overlord.  Star Fleet is a descendant of the text-based Star Trek game of the 1970s.  The author begins with a mock conversation between Captain Kirk, Mr. Spock and Lt. Uhura from Star Trek, but Uhura's name is consistently misspelled "Uhuru".  He appreciated both games, but almost treated Wizardry like a new game, even though it had been a fixture of the Apple II computer for three years by that point.  (He did acknowledge that it had been popular on the Apple II for a while.)  He did not appreciate the merciless difficulty of Wizardry.  Apparently, the version of Star Fleet reviewed required Cartridge BASIC, as the system requirements indicate that version 2.0 would not.  Considering that Star Fleet was almost an entirely text-based game, this raises an eyebrow.

Page 17 : Microsoft's PCjr. Booster ad.  This sidecar included 128KB and a Microsoft Bus mouse.  The Booster sidecar's mouse offered an alternative to the serial mouse, and the PCjr. only had one general purpose serial port.

Page 18 : Atarisoft's games are featured in this ad.  Atari had released ports of several of its arcade licenses to the PC, and most of its games worked on the PCjr.  The games featured in the ad were Gremlins, Crystal Castles, Donkey Kong Jr., Mario Bros., Track and Field, Typo Attack.  Pac-Man, Ms. Pac-Man, Jungle Hunt, Battlezone, Donkey Kong, Centipede and Pole Position were also mentioned in the ad as still being available.  Only Ms. Pac-Man, Centipede, Donkey Kong, Moon Patrol and Typo Attack were listed as being available for the PCjr.  It appears that the later Atarisoft titles almost certainly added PCjr. compatibility.  Typo Attack was indicated as being released for the IBM PC/PCjr. and the Commodore VIC-20, but the latter version has been acknowledged to be vaporware, so I would suggest that the former is as well.  The game only appears to have been released for the Atari 8-bit computers.  Of the other games described in the main text, Atarisoft only released Gremlins for any platform, and it appears to work with the PCjr.

Promises, promises...
Page 19 : An article profiling Broderbund.  It identifies games like Alien Rain and Captain Goodnight. It also mentions famous games like Choplifter and Lode Runner.  Broderbund's contributions to the PCjr. were very limited.

Page 30 : Legacy Technologies's Ad.  Legacy marketed a line of expansions that sat on top of the PCjr. and allowed for a second floppy drive or a fixed disk drive.  Legacy's products also supported a unique L-bus expansion slot system.

Necessities come at a price
Page 33 : Ad for an obscure game called StarShip Valiant, which runs on the PC, XT and jr.  Also, in the next issue there will be reviews for Imagic's Touchdown Football and Sierra's Championship Boxing.

Page 35 : Feature evaluating and reviewing educational software and games.  Among the titles reviewed include IBM's Adventures in Math, which has graphics that look like those from the DOS port of Might and Magic, and the first version of Math Blaster!, which would enjoy a moderate notoriety in later years.

Page 47 : Photo of an IBM 5153 monitor on a jr., something IBM did not recommend.  The weight of the monitor would cause diskette drive errors due to the stress points placed on the case.  The 4863 can be put on top of a PCjr, without encountering this problem.

Page 51 : Ad for jr Connection, a software and hardware dealer.  Among the games there are several of Infocom's titles, Funtastic's Snack Attack II, Microsoft Flight Simulator 2.0, Orion's PC-Man and Sirtech's Wizardry.

Page 52 : Ad for Key Tronic's KB5151jr. keyboard.  The layout is like an early version of the first Northgate Omnikey keyboards, and  it uses capacitive keyboard switches, not the rubber domes of the IBM PCjr. keyboards.  There are separate function keys, arrow keys and a numeric keypad, and an attached keyboard cord.  $225.00.

Page 58 : Review of the Microsoft Booster sidecar.  Among the more interesting notes is a program that will move Cartridge BASIC into the expansion RAM, improving performance.  Newer versions of Flight Simulator (2.1+) can also use the mouse for controlling many of the program's features.

Page 66 : Review of King's Quest.  The reviewer describes the game as "the best use of graphics of any game yet developed for the PCjr."  He also notes that while the game makes use of the full graphics and sound capabilities of the jr. and was developed for it, a PC compatible version was already available.  He was impressed with the three dimensional aspect of the graphics.  However, he observes that the audio component is "barely adequate at best", failing to take much advantage of the "four-voice [sic] chip".

Is this for King's Quest or Pitfall II?
The reviewer praises the challenges for being "fun and fair".  Apparently he had not tried to guess the gnome's name.  He also notes that previous Sierra titles were more arbitrary and capricious with puzzle solutions.  He notes the procedure for creating a save disk and the replayability due to the scoring system and multiple puzzle solutions.  He really liked the game.

Page 72 : Advertisement for GATO

Page 77 : "Revue of Reviews", a feature recapping the reviews of the previous seven issues.  Among the games and educational software that had been previously reviewed were Facemaker, Fraction Fever, Juggles Butterfly, Type Attack, Adventure in Serenia, Casino Games, Conquest, Crossfire, Demon's Forge, Digger, Enchanter, Flight Simulator 2.0, Forbidden Quest, GATO, Infidel, Jury Trial, Micro Surgeon, Mine Shaft, Mouser, Murder by the Dozen, Sorcerer, Space Decathlon, Strategy Games, The Stud Poker Parlor, Styx, Tiao Ch'i (Chinese Checkers), and Ulysses and the Golden Fleece.  They reviewed the Legacy II in August, 1984.  They also reviewed the book Hands-On BASIC for the IBM PCjr. in that same month.

Page 88 : Short descriptions of products for the PCjr.  Includes the Rapport Drive Two Enhancement Package (later Racore), the jr-87 (allows an 8087 math coprocessor to be installed) and the jr extender (another 2nd drive + memory enhancement)

That is all the page annotations I found of interest.  I note that double-cartridge version of Lotus 1-2-3 had not been mentioned, so I would guess it hadn't been released yet.  VisiCalc and Microsoft Multiplan had been released for the jr. or could be run on it.  All the photos of the PCjr. in the magazine show the chicklet keyboard, which IBM recalled and replaced in July.  Apparently the magazine and the vendors had not appreciated the urgency of eliminating that unwelcome image from their artwork.  This is one area in which all companies concerned should have taken more aggressive action to shed the poor PCjr. image with its useless chicklet keyboard.

Most of the games reviewed in the magazine had no special (Wizardry, Enchanter, Juggles Butterfly) or marginal (Crossfire, Mine Shaft) PCjr. support.  Adventure in Serenia was released very early for the IBM PC, and according to an IBM brochure I have, it was not updated for the PCjr.  The only box I have seen for it is the old clam-shell style IBM used for early PC software, not the later large "cassette tape" boxes.  There was a later obscure re-release of the game for the PCjr. under the title Wizard and the Princess, but I doubt it would have been available at launch.  "Casino Games" may or may not have been the IBM title, the game is attributed to the generic "PC Software Corporation"

The magazine reviewed three games from Windmill Software, one of the earliest companies to focus exclusively on the PC platform.  The PC versions of these games tweak the CGA far too much to be playable on a PCjr., so special versions must have been marketed.  There is cover artwork for Styx on MobyGames indicating that it was for the IBM PCjr.  It is unknown if there are any enhancements for the PCjr. versions of these games, but nothing I read leads me to believe otherwise.

Of the canonical eight cartridge games, the magazine had reviewed four of them.  The reviewers probably like those games more than I do.  I like the other four cartridge games comparatively better.

GATO does not appear to have any PCjr. enhancements, but apparently there was a later version which added 16-color support for Tandy 1000s.  This required 256KB, whereas IBM PCs with CGA and PCjr.s only required 128KB, so no 16-color graphics for PCjr. users.  Demon's Forge received a PC port well before Mastertronic's 1987 release, so perhaps the PCjr. has official 16-color support.  I have a hacked version of the hard drive hack which restores 16-color support for all Tandy 1000s and the PCjr.  Apparently this version was released by Boone Software, which did re-release the Apple II version under its brand.

Hardware-wise, it is amazing how quickly other companies reacted to plug the gaps in IBM's machine.  More than one option was available for adding a second floppy drive and many memory expansions were available.  A better keyboard was available as was a math-coprocessor adapter, and you could even add a hard drive if you were prepared to spend a lot of money.

The magazine implies that Hands-On BASIC for the IBM PCjr., published by IBM did not come with the computer, I have verified that it did..  The BASIC reference manual presumably came with Cartridge BASIC, which was a separate purchase.  The only other substantial documentation included with the system would have been the Guide to Operations.  The DOS manual came with DOS 2.1 for the PCjr., purchased separately.  The Technical Reference and the Hardware Maintenance and Service Manuals were also released separately.

Sunday, May 18, 2014

Apple //c vs. IBM PCjr. - Clash of the Computer Titans, 1984

Two compact machines, with limited or very limited expansion were released by two titans of the Industry in 1984.  The IBM PCjr. and the Apple //c were both heralded with great fanfare and greeted with great initial enthusiasm.  However, the PCjr. failed within a year and the Apple //c was generally seen as a poor man's Apple IIe.

Input

The Apple //c has a built-in keyboard, but it contained all the keys of the Apple IIe, plus an 80/40 column switch.  The PCjr. supported a wireless keyboard with 21 fewer keys than an IBM PC keyboard.  There were substantial compatibility problems with the PCjr. keyboard interface when programs were intended to run on a PC.  There were some minor compatibility issues with programs expecting the older keyboard.  The PCjr. keyboard uses rubber domes, while the //c uses scissor-keyswitches like a laptop.  While expensive, it is possible to replace the PCjr. keyboard with a nicer keyboard with more keys.

The PCjr. supported two joysticks with two axes and two buttons each.  The Apple //c only had one joystick port, which supported one joystick with two axes and two buttons.  The joystick port was also used for the mouse.  A PCjr. required a serial mouse or a bus mouse.  The PCjr. also supported a light pen.

Advantage : Apple //c (out of the box)

Storage

The PCjr. was only designed for one floppy drive, but that drive was a doubled sided drive supporting 360KB disks.  A second drive required an expensive expansion.  The Apple //c used the standard Apple II single sided disk drive supporting 143KB per side.  However, there was a port in the back of the machine for a second drive, no extras required.  The PCjr. Diskette Controller and BIOS relieved much of the burden from the programmer and CPU of reading and writing to the disk.  The Apple //c's drive controller (for 5.25" drives) is an integrated version of the TTL-logic based Disk II controller, so pretty much all reading and writing is done via software.  Even without factoring in the disk flipping, the PCjr.'s diskette drive was easier to use.

The Apple //c, with a ROM upgrade, could also support a UniDisk 3.5" drive for 800KB 3.5" disks.  The UniDisk was an intelligent drive to compensate for the slow CPU of the Apple IIe/IIc and is a pricey upgrade these days.  The IBM PCjr can use a 720KB drive or most common 1.44MB drives (with 720KB read/write capabilities) if you use DOS 3.2 or better.

The PCjr. supported a cassette interface for saving and loading programs from BASIC.  Even though all previous Apple II models supported the cassette interface for saving and loading in BASIC, the Apple //c dropped the cassette jacks.  The cassette interface was intended for the basic model PCjr., which didn't come with a disk drive and only 64KB of RAM, and most people bought the enhanced model.

Neither system was intended for a hard disk, and both machines required special drives and interfaces, which were extremely pricey.  Today there is jrIDE for the PCjr. and SmartPortVHD for the //c.  Both are hobbyist projects and tend to be available only at certain times and command relatively high prices.  The jrIDE is connected by the PCjr. sidecar bus while the SmartPort has to go through the much slower floppy interface (its like a big UniDisk drive).

The PCjr. also had a pair of cartridge ports for loading games and instant loading of programs.  There were eight games released and about as many application programs.  Lotus 1-2-3 required both cartridge ports.

Advantage : PCjr.

Memory & CPU

The PCjr. was sold in 64KB and 128KB models, and that was it for memory expansion.  Most people bought the 128KB model, since the 64KB didn't come with a hard drive.  Before the end of its life, it could be expanded to 640KB and 736KB with some work.

The original Apple //c had 128KB and was not intended to be expandable.  Apple released the Memory Expansion Apple //c in 1986 with a memory expansion slot.  The maximum RAM supported was 1MB. Nonetheless, even the pre-Memory Expansion Apple //c can be upgraded to 1MB of RAM, thanks to products from Applied Engineering.  That AE upgrade could also support a Z80 CPU for CP/M compatibility.  Few games ever supported more than 128KB on the //c, but there are many games that require 256KB or more to run on the PCjr.

The PCjr. used an 8088 CPU running at 4.77MHz.  The Apple //c used a 65C02 CPU running at 1.02MHz. The comparison is not quite apples to apples.  The 65C02 can execute many instructions in fewer clock cycles than the comparative 8088 instruction.  The 8088 had many more instructions and registers and could utilize up to 1MB through memory segmentation.  The 8088 uses 16-bit registers or can split them into 8-bit registers, only the external data bus is 8-bit.  The 65C02 only has 8-bit registers, but its access to the first 256 bytes of RAM is almost as fast as access to registers.  The 65C02 could only address 64KB of RAM and Apple //c implemented a complex bankswitching scheme inherited from its predecessors.  A complex game like Microsoft Flight Simulator would show marked improvements on the 8088.

The PCjr. could be upgraded to an NEC V20 for a modest speed boost, and a board could allow the CPU to be run at a 7.3MHz clock rate.  The Apple //c could have its CPU replaced with a 4MHz or 8MHz Zip Chip, turning it into something very much like an Apple //c+

Advantage : PCjr. (stock)

Output

The Apple //c supported all the graphics modes of the 128KB Apple IIe with a revision B motherboard.  This includes 40 column by 24 line text, 80 column by 24 line text, 40x48 low-resolution graphics, 280x192 high resolution graphics and 560x192 double high resolution graphics.  The low and high resolution graphics modes could also support four lines of text.  All Apple IIs, except for the IIgs, produce color by NTSC color composite artifacts.  For text they look best on small monochrome monitors.

There was a DA-15 pin external video connector on the //c, this was used mainly for the LCD attachment.

The IBM PCjr. supported the graphics modes of the IBM CGA card and more.  The PCjr. was only BIOS-level compatible with CGA, unlike the Apple //c, which was hardware compatible with the graphic modes of the earlier machines.  The PCjr. supported 40 column by 25 line text, 80 column by 25 line text, 320x200 4 color graphics, 640x200 2 color graphics, 160x200 16 color graphics, 320x200 4 color graphics and 640x200 4 color graphics.  The PCjr. supported RGBI monitors for sharp images and composite video for color composite artifact color.  It also had a port for an RF modulator.

The Apple //c had a built in speaker, but it was still the same software driven 1-bit device inside all Apple IIs.  There was a volume and headphone jack.  The Apple //c did not have standard expansion slots, so it could not support sound and music boards like the Mockingboard in the ordinary game-compatible way.  The Mockingboard D was made for the //c, but it used the serial port, not the internal bus.

The PCjr. could act like the PC speaker with its timer driven sound, but also had a 3-voice Texas Instruments sound chip.  This chip could produce square waves or noise, but did not use the internal piezo tweeter.  There also was a Speech Attachment available to record and playback digitized sounds and speech.  There was something similar for the Apple //c, the Echo IIC.

Advantage : PCjr.

Communications

The PCjr. had one serial port built in and also could support an internal modem.  The Apple //c had two serial ports.  One was intended for a modem, the other for a serial printer.

The PCjr.'s built-in serial port was capable of 4,800 baud and the official modem was a 300 baud model.  There was a third-party modem built for the slot that supported 1200 baud.  The Apple //c's Super Serial Card-derived serial ports could support a 19,200 baud rate.

The PCjr. had an add-on parallel port that was very a common purchase.  Parallel printers are much faster than serial printers and nowadays are more common.  Moreover, there are PC compatible Parallel Port Ethernet adapters that can enable very fast (comparatively speaking) transfers to the PCjr.

Advantage : PCjr.

Software

The Apple //c was designed to be as compatible with software as possible, as it is essentially a condensed version of the Apple IIe.  Virtually all Apple II disk software is compatible with it.  Very minor incompatibilities exist due to the updated keyboard, the 65C02 not supporting the illegal opcodes of the 6502, DOS 3.2 disks and untransfered cassette programs.  The PCjr. could not make the same boast, as its IBM PC compatibility was hit or miss.  Its issues with PC compatibility are legion and well known.

Advantage and Conclusion : While the PCjr. beat the Apple //c hands-down in almost every comparison, the Apple //c just has a far more expansive library than the PCjr.  That library, which came on 5.25" floppies, is far better preserved and accessible than the software released for the IBM PC and PCjr. of the 1980s.

The Saga of 16 Colors

IBM's original color graphics solution for CGA could display 16 colors.  However, it could not display them all at the same time, except in the text modes.  Otherwise it could display graphics (all points addressable) in limited 320x200 4 color and 640x200 2 color modes. Certain games like Round 42 use the 80 column text mode, tweaked to display an effective 160x100 graphics resolution.  On a real CGA, the 80-column mode would show CGA snow or the graphics would be very slow.

The 1983 PCjr. was IBM's first consumer device that could display all 16 colors on screen at the same time in graphics modes.  Despite the system being much more difficult to upgrade and slower than an IBM PC when equipped with 128KB or less of RAM, its 320x200 16 color and even its 160x200 16 color graphics were far superior to CGA.

The 1984 EGA was IBM's third graphics adapter to see widespread support in games, although the high price of EGA kept it out of reach for most consumers for approximately two years.  It too supported a 320x200 16 color mode and could display 160x200 16 color graphics easily through pixel doubling.

In late 1984, Tandy used a tweaked and modified version of the PCjr.'s graphics adapter in its 1000 series.  The Tandy 1000 supported the same graphics modes as the PCjr.  Games were much more likely to support PCjr. and then Tandy graphics over than EGA in 1985 and 1986.  Even so, there were quite a few budget games and lazy ports even in 1987 and 1988 that supported CGA only, especially in Europe where PCs were expensive and the PCjr and Tandy did not have much of a retail presence (if any).  The Amstrad PC-1512 was one of the best selling PC compatibles of the time, and it supported little beyond basic CGA.  The only advantage it had over regular CGA was a 640x200x16 mode that only a very few games supported.

Games generally would indicate on the box if they supported the PCjr. or the Tandy 1000 series or EGA.  Assuming a game supported all three, like Space Quest III : The Pirates of Pestulon, you could connect the PC with EGA, PCjr. or Tandy 1000 to the same monitor and see identical or nearly identical (Maniac Mansion) graphics.  All these monitors used a digital TTL signal to which was sent a 4-bit RGBI signal.  Thus they could display only 16 colors, and by 1983 IBM had standardized those colors with its 5153 Color Graphics Display.  Outside the digital input, the 5153 was little different than the other RGB monitors non-IBM PCs used, as it used a 15.75KHz horizontal line scan rate and 60Hz frame rate.  TVs also used this scan rate.

EGA could also support 16 colors from a palette of 64 colors, but only using its 350-line modes.  The maximum resolution supported, 640x350 in 16/64 colors, required 128KB of RAM, which was more than the stock IBM EGA card had (64KB).  Relatively few games used this mode, SimCity being the most famous example.  It also required a 5154 Enhanced Color Display or similar monitor, so it was not widely used for games.  The 5154 supported a higher 21.8KHz horizontal line scan rate and 6-bit RrGgBb digital signalling.  The 5154 was backwards compatible with the 5153, with changes on the polarity of the pins telling the monitor whether it would display 200 line or 350 line modes.

EGA also supported a 640x200 16 color graphics mode that saw some use, typically in ports of Japanese PC games like Thexder, Zeliard and Romance of the Three Kingdoms.  Later Tandy systems have an updated graphics adapter that added support for 640x200 16 color graphics, but the mode was very seldom used for games and all games that support it also support EGA.  Additionally, the very popular in Europe Amstrad PC-1512 also supported a similar 640x200 16 color graphics, but only a few games used it.  The Hercules Graphics InColor Card supported a 720x350 16 color graphics mode on an EGA monitor, only a few games used it.

16 color graphics were typically the best quality graphics PC games supported in the 1980s.  256-color VGA graphics did not really become a must-have feature for games until 1990.  Even though EGA was eclipsed by the MCGA and VGA adapters, 16-color games advertised support for these adapters but only displayed their graphics in 16-colors.  However, a few games took advantage of the MCGA and VGA's comparatively vast (256K) palette to display other colors than the canonical 16 colors of CGA.  Moebius : The Orb of Celestial Harmony is a good example.  Thexder is another.

VGA monitors (including MCGA), have a horizontal scan rate double that of a CGA monitor.  To compensate, IBM had these adapters draw each of the 200 scanlines twice.  This gives 320x200 graphics, regardless of color depth, a noticeable "double scanned" look on VGA, with a scanline bisecting each pixel on the line horizontally, regardless of color depth.

16 color graphics typically looked identical whether displayed on a Tandy 1000, an EGA or VGA card or an MCGA card.  EGA was almost always implemented as an expansion card, and VGA could be found integrated into IBM PS/2 systems or cloned on an ISA card.  MCGA never came on a card, like the Tandy 1000 Graphics Adapters and the PCjr. Graphics Adapter.

EGA has the great advantage of being available for any system with an ISA slot.  MCGA and VGA have an even greater advantage by having an output compatible with most modern monitors.  Early Tandy 1000s and the PCjr. also are modern monitor friendly though their composite video output.  While the 16 color output looks good with 160x200 graphics, it looks poor with 320x200 graphics.

VGA is a superset of EGA, and at the 16 color level the cards usually work so similarly that games use the same or almost the same graphics driver.  However, EGA and MCGA function very differently at the hardware level, and a game must support both to provide 16 colors.  MCGA is mostly CGA compatible, and there were games or versions of games that supported only 4 colors with MCGA.  MCGA does not have a true 320x200 16 color mode, so it uses a 320x200 256 color mode, which is slower than EGA.

While Tandy graphics and the PCjr. work very similarly,  there are just enough differences with the adapters and the systems that a game that works on a PCjr. in 16 colors will not work on a Tandy, and vice versa, unless the game was programmed for both or hacked for one or the other.  Tandy graphics work very differently from EGA, so games supporting EGA graphics only tend not to work on a Tandy.  This includes virtually every EGA shareware game of the early 90s (Commander Keen, Duke Nukem, Dangerous Dave).  The Tandy systems, starting with the SX, can be upgraded with an EGA or VGA card, but the software that allows you to switch back to Tandy graphics only works with VGA.

While Tandy graphics (which use a 16-bit data path) are generally faster than EGA graphics (generally put on an 8-bit card) at similar CPU speeds, systems with Tandy graphics max out at a 10MHz 286, while EGA graphics can accompany systems with much faster CPUs.  The IBM systems are stuck with the 8088 PCjr. and the 8086 PS/2 MCGA  Models 25 and 30

Monday, May 12, 2014

Game Patches Allowing Games to Run on an IBM PCjr.

Many, many PC games were released during the 1980s that supported the IBM PC, XT, Portable, AT, XT/286, Amstrad PC-1512 & 1640, Tandy 1000, 1200, 3000/4000, Compaq computers etc.  However, many of these games specifically lack PCjr. support.  Some games may work OK with a Tandy mod, but many do not work at all or only support 4-color CGA and PC speaker sound on the PCjr.  Many games were hacked back in the day to work on a PCjr., and these hacks were distributed in PCjr. Newsletters, on BBSes, and through disks.  Recently, I have been sent a CD-ROM with a great deal of PCjr. material on it.  The most interesting portion of the disk contains patches to run certain games on the PCjr. which otherwise do not run.  I have prepared a list of the patches included on the disk for major games with a description of what each does with the game :

Game Title What it Does Notes
688 Attack Sub 16 color video, 3 voice sound, PCjr. Menu Option, PCjr. ID Check
Artifox Copy protection removal
Bard's Tale II : Thief of Fate 16 color video
Battle Chess 16 color video, 3 voice sound Two Patches, one for graphics, one for sound
Battle Tech : The Crescent Hawk's Inception 16 color video, 3 voice sound, PCjr. Menu Option
California Games 16 color video, 3 voice sound
Championship Lode Runner V20 Compatibility
Chuck Yeager's Advanced Flight Simulator Copy protection removal
Designasaurus Compatibility Fixes
F-19 Stealth Fighter 16 color video, 3 voice sound Two Patches, one for 3 voice sound with 4 color video, one for 16 color and 3 voice sound, Tandy 1000 Mod Required for 16 color
Grand Prix Circuit 16 color video, PCjr. Menu Option
Indiana Jones and The Last Crusade: The Graphic Adventure 16 color video
Jack Nicklaus' Greatest 18 Holes of Major Championship Golf 16 color video Multiple Versions
Kings Quest IV : The Perils of Rosella 16 color video, PCjr. ID Check For Versions without PCJR320.DRV
Knight Games 16 color video
Leisure Suit Larry II : Looking for Love in all the Wrong Places 16 color video, PCjr. ID Check For Versions without PCJR320.DRV
Maniac Mansion 16 color video, 3 voice sound
Microsoft Flight Simulator 3.0 16 color video
One on One : Jordan vs. Bird 16 color video, 3 voice sound, PCjr. Menu Option, PCjr. ID Check
Paperboy 16 color video, 3 voice sound
Police Quest II : The Vengeance 16 color video, PCjr. ID Check For Versions without PCJR320.DRV
Shanghai 16 color video
Silpheed 16 color video Manual Install, no Patch Required
SimCity 16 color video, PCjr. Menu Option
Space Rogue 16 color video
Star Rank Boxing II 16 color video, PCjr. ID Check
Starflight 16 color video Different Patches for Old and New Versions
Steel Thunder 16 color video, PCjr. Menu Option, PCjr. ID Check
Strip Poker II 16 color video, PCjr. ID Check
Tales of the Unknown Volume 1 : The Bard's Tale 16 color video
Test Drive II – The Duel 16 color video
Tetris 16 color video
The Games : Summer Edition 16 color video
Ultima IV : Quest of the Avatar 16 color video
Ultima V : Warriors of Destiny 16 color video
Where in the World is Carmen Sandiego MS-DOS 2.1 Patches
Zak McKracken and the Alien Mindbenders 16 color video, 3 voice sound
Zany Golf 3 voice sound

This is probably only a fraction of the games that were ever hacked to run on the PCjr.  If anyone has more patches, I'd love to hear from them.  The patches are available here : http://etc.pixesthesia.com/jrstuff/

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.

Thursday, March 6, 2014

IBM PCjr. Upgrades

IBM PCjr. Internal Modem

The IBM PCjr. Internal Modem fits in a special slot inside the PCjr.  The Modem sits at COM1 and this is undoubtedly its most useful purpose in the modern era.  The BIOS designates the internal serial port, with no modem installed, as COM1.  The resources the serial port uses, I/O 278H and IRQ3, are those typically assigned to COM2.  This causes programs no end of confusion, and usually a program like COMSWAP is used to redesignate the serial port as COM2.

The Internal Modem uses the resources typically assigned to COM1, I/O 3F8H and IRQ4.  By installing one, even if you never intend to use it, the BIOS will assign the Modem to COM1 and the serial port to COM2.

If you want to use a serial mouse and you don't have the Internal Modem installed, you can use the Cutemouse v1.91 driver.  You will need to use the following command line argument /S13.  This tells the driver to use the device at COM1 and IRQ3.

IBM's PCjr. Internal Modem is based on the Novation 103 Smart Modem, which uses a command set somewhat different from the Hayes compatible command set most terminal emulator programs expect.  However, once you learn the basic commands and how to implement them in a terminal emulator, it can be used, as it was intended, at 300 baud.  It does not have any speaker on it, so the only way to know whether you have connected is to review the messages sent from the modem.  All commands can be shortened to the first letter, like the Hayes command set in many instances.

To initialize the modem, use the command : I

To set the format, use the command : F.  The modem supports the following serial data formats (data bits:parity:stop bit) :

0 - 7:M-1
1 - 7-S-1
2 - 7-O-1
3 - 7-E-1
4 - 8-N-1

The default is 7-E-1.  M is Mark Parity, S is Space Parity, E is even Parity and O is Odd Parity.  To set the format to 8-N-1, use the command : F 4.  The initialize and format commands can be carried on the same command line, separated by a comma.  Using an 8-bit speed will show more corrupt characters than using the 7-bit speed, but it is faster and more compatible with BBS terminals that still allow for dialup.

The command to dial is appropriately called "dial", and you type in the number after it.  I would recommend putting a "w" just before the number to ensure the modem dials using tone rather than the old-fashioned pulse and add a short delay to avoid any confusion by noise at the line gets taken off the hook.  This is a command to dial : D w15555555555.

The command to answer is : A.  The hangup command is : H.

Any commands to the modem must be prefaced by a control character.  The default character is 0E/Ctrl N. This is the equivalent of the AT control character of the Hayes commands. The command string must be terminated by a carriage return/Ctrl M, just like Hayes.  However, there is no +++ equivalent, the modem will always view one of the 255 ASCII codes as a command code, but it does allow you to change the default ASCII value with the N command.

The program ProComm, 2.4.3, which was very popular back in the day, will work with the PCjr. Internal Modem.  The default strings to enter in the setup menu look like these :

^N I, F 4 ^M
^N D w##########
^M
^N H ^M

If you have a phone service that uses a stuttering dial tone to indicate that you have new voicemail, this modem may interpret the stuttering signal as a BUSY signal and do nothing.  Clear your voicemail.

Many of the few BBSes expect a faster transmission rate than 300 baud or a more robust modem solution. One BBS that more or less works is the Capitol City Online BBS out of Frankfort, KY.  Its telephone number is 502-875-8938.

IBM PCjr. Parallel Printer Attachment

This sidecar adds one parallel port and was a very popular add-on for the PCjr, which did not come with a parallel port.  The parallel port is a standard DB-25F connector, unlike virtually every port on the back of the PCjr.  It uses  the standard CGA LPT1 resources, I/O 378H and IRQ7.  If there is no parallel printer sidecar installed, then the serial port will receive the LPT1 designation.  When the parallel port is installed, the BIOS will reassign LPT1 to it.  IBM did not allow the settings on the parallel port adapter to be changed, so only one parallel port is supported.  There is a fairly simple mod to change the I/O to the LPT2 278H address, you can find it here : http://www.brutman.com/PCjr/lpt2_mod.html

The parallel port is a unidirectional port by default, capable of nibble transfers.  There is an easy mod to make the parallel port bidirectional.  This will double throughput when an external devices wants to send data through the parallel port to the computer.  The instructions for the mod can be found here : http://www.brutman.com/PCjr/parallel_port.html  This mod will also work with the ISA-based IBM PC Printer Adapter and the IBM Monochrome Display and Printer Adapter and probably all clones that implement a parallel port strictly using TTL logic.

The parallel port is useful for more than just connecting to printers, although it can do that too.  I have connected it to a 2008 vintage Brother MFC-8860DN and it was able to print from DOS.  It is far more useful to use with a 100MB zip drive or an Ethernet adapter like the Xircom PE3-10BC.  The Xircom's packet driver (PE3PD.COM) and test program (PE3TEST.EXE) work just fine with an 8088 machine and a PCjr.  The packet driver is initialized as follows for a PCjr. with an unmodified parallel port :

pe3pd sint=60 non

The non tells the adapter to operate in the non-Bidirectional mode (a.k.a. Unidirectional), and sint=60 assigns the Packet Driver services to software interrupt 60H.  The driver can autodetect the presence of the adapter on any of the LPT assignments and the Interrupt.

Using the Xircom adapter, you can transfer files to and from the PCjr. with relative ease.  There is a suite of TCP/IP utilities called mTCP, which you can get from here. http://www.brutman.com/mTCP/  The DHCP client utility especially useful for automatically obtaining all the critical information (IP, Gateway, Nameserver) from your route to connect to the Internet.  I typically start up the packet driver and dhcp client in a batch file which I created (MTCP.BAT) and it looks like this :

c:\mtcp\pe3pd sint=60 non
set MTCPCFG=c:\mtcp\tcp.cfg
c:\mtcp\dhcp.exe

There are other useful utilities.  The IRCJR functions as a basic Internet Relay Chat client.  You can use it to chat on IRC.  It will not download files from IRC though.  I use it to connect to the Vintage Computer IRC channel on irc.slashnet.org, /join #vc.  SNTP will obtain the time and date from an internet server and set the time and date in DOS.  This is very useful for systems without a Real Time Clock or you want more exact time.  There is also a Telnet client with ANSI emulation for all your text-based terminal needs.  There is also a basic FTP client.  It can copy (get) multiple files, but not sub-directories.

To actually use these utilities, you need to create a file called TCP.CFG.  At a minimum, the following is required :

PACKETINT 0x60
HOSTNAME PCjr

The PACKETINT must correspond with the Packet Driver's software interrupt, but the HOSTNAME can be anything.  DHCP will add or change the necessary configuration every time you start the DHCP server.  Individual mTCP utilities will have their own settings in this file.

The most important utility is the FTP Server.  This utility lets you operate your PCjr. as an FTP Server.  The practical application of this utility is an easy and modern method to send from and receive files to your PCjr.'s (or any DOS machine) drives.  You setup the FTP Server on the PCjr,'s end and use a modern FTP Client on your modern PC like Filezilla.  This is what I use, and with a few tweaks to Filezilla, it works well.

In Filezilla, set the transfer type to binary, the maximum number of connections to 1, the timeout to 200 seconds and the speed limits to 25K/25K.  If you have a bidirectional port, you can push the speeds higher, but 50KB/50KB is the max you will probably be able to get from a PCjr.  A V20 or faster CPU will speed up transfer rates a bit.  Filezilla expects to talk to a modern machine, and it runs so fast that the flow control will get screwed up waiting for the slow PCjr.

On the PCjr. FTP Server, I recommend the following lines added to TCP.CFG :

FTPSRV_PASSWORD_FILE ftppass.txt
FTPSRV_LOG_FILE log.txt
FTPSRV_EXCLUDE_DRIVES AB
FTPSRV_FILEBUFFER_SIZE 16
FTPSRV_TCPBUFFER_SIZE 16
FTPSRV_PACKETS_PER_POLL 10

The first two are required for FTP Server to run.  The remainder give the maximum buffer sizes and exclude the floppy drives.

jrIDE

jrIDE is an amazing sidecar that was recently (2012) developed by PCjr. enthusiasts, mainly Alan Hightower.  It combines 1MB of SRAM, a real time clock chip and can boot 16-bit IDE drives.  It can support an IDE master and an IDE slave drive, and it can effectively support hard drives up to 8GB (the maximum of using DOS and FAT16).

The RTC is a Dallas 12887 module, and is socketed for replacement.  The date and time is set by a program called rtc, loaded in the autoexec.bat file on startup.  IRQ 1, 2 or 7 can be selected for its operation.  I suggest IRQ2 because the parallel port uses IRQ7 and the keyboard on a regular PC uses IRQ1, which could possibly confuse some programs that are not PCjr-aware.  The Speech Attachment also uses IRQ1.  Using an IRQ really is not essential for this function.

In order to set the date and time, you will need a small program called rtc.com, available here:
http://www.retrotronics.org/svn/jride/trunk/prebuilt/jr/

To set the date and time for the RTC, first, set the correct date and time in DOS using the DATE and TIME commands.  Next, run the rtc.com program with the /r switch.  This will send the date and time you told DOS to the RTC.  Finally, add the rtc.com program to your autoexec.bat file with the /d switch.  Upon every bootup, this will fetch the correct date and time from the RTC and automatically set it in DOS.

The IDE header is at a right angle and has all 40 pins. Pins 1 and 2 are at the bottom of the board.  The key pin can (via jumper) be used to provide +5v to power low-power devices like Disk On Module (DOM) devices or Compact Flash cards.  The PCjr., without a power sidecar, is not likely able to supply sufficient power for a 2.5" or 3.5" hard disk drive.  I found that even a DOM had difficulty when it was the third card in the system.

The jrIDE BIOS is based on the Universal XT-IDE BIOS, so it should be able to support drives up to 8.4GB in size supported by Int 13 and maybe higher if true LBA is used..  Practically speaking, the use of DOS (pre 7.1) is going to limit you to 4GB drives.  You will need PC-DOS or MS-DOS 4.0 or better to use a primary partition (primary drive) greater than 32MB and logical drives greater than 32MB.  With DOS 4.0 or above, you can have a primary partition of 2GB (C:) and one or more logical drives in the extended partition within the remaining 2GB (D:).  With DOS 3.3, below, you will be limited at a maximum to a primary 32MB partition (C:) and 32MB logical drives in the extended partition, D:-Z: for 736MB total hard disk space.  With PC-DOS 3.0-3.2, only one DOS 32MB partition is available for a C: drive per disk.  DOS 2.1 allows only one 15MB partition for C:.  Using DOS 5.0 or above requires patching the DOS system files as outlined here : http://www.brutman.com/forums/viewtopic.php?f=3&t=224&p=1978&hilit=stacks#p1978

Of that 1MB of RAM, you can have 736KB total conventional memory, even though the PCjr. only counts to 640KB on the startup screen.  However, without a device driver loaded in config.sys, DOS will only see 128KB of RAM, and that is before it loads itself and the video buffer is taken into account.  The remaining RAM is the slow RAM controlled by the video controller.

The device driver to use with the PCjr. and jrIDE is JRCONFIG.SYS v3.10 from PC Enterprises.  The most basic use of it is to load it in config.sys like so :

DEVICE=C:\JRCONFIG.SYS -V64

When this driver is loaded with a jrIDE, it will give you 608KB of conventional memory free.  Physically, this memory is between the first, slow 128KB and the video buffer window which starts at 736KB.  The lower 128KB is reserved for DOS and the video memory.  You can use what is left over for a RAM disk.  RAM disks are especially important if you are using a null-modem to transfer data to or from a PCjr. because the machine lacks DMA.

A system booted to DOS with JRCONFIG v3.10 and no other drivers or an autoexec.bat loaded will report 753,664 total bytes (736KB) and 610,656 bytes free (596KB).  You can also try an earlier version of the driver called JRCONFIG.DSK v2.14, which should require less RAM.

The driver has many command line switches, the only one that most people will need is -v64.  This will allocate 64KB of video memory within a 32KB video page so that programs using the 320x200x16 and 640x200x4 modes will work.

The only major downside to using JRCONFIG is that it is not really compatible with Cartridge BASIC.  REM out the line with JRCONFIG or simply rename config.sys when you need to use Cartridge BASIC and DOS.  Cartridge BASIC is limited to 64KB free memory and freaks out if it is told there is more than 128KB in the system.

Since JRCONFIG uses software interrupt 60, which is the default software interrupt for many Ethernet DOS packet drivers, assign the packet driver to use a different interrupt.

You can find JRCONFIG here : http://www.brutman.com/PCjr/pcjr_downloads.html  jrconfig.zip is the v2.14 version, jrcfg310.zip is the v3.10 version.

To obtain a jrIDE, join the PCjr. Web Forum, here : http://www.brutman.com/forums/  Be prepared to spend well over $100 to obtain an assembled one, and you may have to wait.  The board assembly itself requires only through hole soldering, but the project is still quite the undertaking.

NEC V20

Most IBM PCjr. will have a socketed 8088 CPU, located underneath the disk drive.  If you are unlucky and received one of the last units sold by IBM, the CPU will be soldered onto the motherboard.  You can remove the 8088 CPU from the socket and replace it with a V20 CPU for a decent (10-15%) speed boost while retaining nearly 100% compatibility with software.  The most common part number for the V20 is the NEC D70108.  If you have a soldered CPU, you can always remove the CPU and solder in a 40-pin socket.

The V20, V30, 80186 and 80286 and later CPUs are not 100% compatible with 8086/8088 software because the 8086/8088 have undefined/illegal (as opposed to undocumented) opcodes whereas the later CPUs do not.  The only game I am aware of, after a great deal of searching, that may not support the V20 PCjr. is Lode Runner, but every version of the game available for download works just fine with a V20.  Every cartridge game for the PCjr. works fine with the V20.

Increasing the clock speed of the 8088 or V20 is not for the faint of heart.  There is one 14.318MHz crystal on the PCjr that is used for all system timing.  This includes the CPU clock speed, the 8253 Timer input and the OSC signal.  In the PC it is arguably more difficult to overclock because the DMA chip uses the CPU CLK signal for its timing.  Replace that crystal and all three frequencies, which are derived from an Intel 8284 Clock Generator chip, will change.

There is a PCB design called PC-SPRINT that essentially directs a higher clock solely to the CPU.  It is a separate board which is piggybacked on the existing CPU socket.  It has a separate crystal and a second 8284.  Typically, speeds of 7.16MHz or 7.37MHz are stable, although some people have boasted of obtaining a 9.54MHz speed.

IBM PCjr. Speech Attachment

This sidecar contains a TMS5220 chip very similar to the chips used in the Speak & Spell toys of the time and sounds identical.  It uses two methods to digitize and playback sound, LPC (linear predictive coding) and CVSD (continuously variable slope delta modulation).  The TMS chip handles the LPC while the CVSD is handled by a MC3418.  Interfacing to these chips is through an 8255 PPI and 8254 Timer.  All audio output is routed through the system board multiplexer just like the 3-voice chip.

LPC allows for the use of compressed digitized samples and the sampling rate is of higher quality.  The Sppech Attachment uses this method to play its built in vocabulary of 196 words, phrases and sound effects. Its 32K ROM chip resides at CE000-CFFFF.  The voice playback of the vocabulary samples has an 8KHz sample rate.  The built-in vocabulary is very easy to access in BASIC.  You can add your own (compressed) vocabulary words with a computer that has a program that can encode the recorded sound into the format of the Speech Attachment.

CVSD allows for recording voice and sound through the microphone input and play it back.  Normally voice recording is limited to disk size, but if you have a large hard disk, this will be less of a concern.  The recording and playback speed through the microphone ranges from 1.8K-4.8K per second.  CVSD encodes at 1 bit per sample, so that audio sampled at 38.4 kHz is encoded at 38.4 kbit/s.  The default addresses used are FB98-FB9F, FF98 and FF9F.  It also uses IRQ1.

The best program I have discovered to use the Speech Attachment is MAKETALK from PC Enterprises.  It will allow you to play the vocabulary and build sentences for recording by an external device and also allow you to record and playback to the limits of your disk space.

IBM PC Compact Printer

IBM released this low-cost printer to go with its low cost entry system.  It is a thermal printer and uses an 8-pin head.  It has just one button for line feed and a power switch and LED.  The printer uses the PCjr. serial BERG connector that plugs directly into the PCjr, but adapters exist that can convert it into a DB-25 connector for use with a regular serial port and a PC compatible.

This printer can print 56 characters per second, but only prints from left to right.  It can print 80 characters per line in standard mode, and supports double width mode, compressed mode, compressed/double width mode and underlining.  It prints all the 256 IBM ASCII and Extended ASCII characters except for the 64 block characters at 176-223.  It also supports a 480-bit graphics mode.

The Compact Printer uses an 8.5" wide paper roll.  The rolls typically are not perforated, so the user must cut or tear pages to length.  The lack of perforations makes it ideal for banners and graphics.  Staples and OfficeDepot sell 8.5" rolls, typically 98' or 164'.  Thermal printers do not need ink ribbons, ink or toner cartridges, so their operational cost is strictly from the paper.

The printer has a data transfer rate of 1200bps and uses 1 start bit, 8 data bits, no parity and 2 stop bits.  In order to obtain reliable operation, as in no missing or skipped characters, you should use the following parameters with the MODE command :

mode COM2: 1200, n, 8, 2, p

Without the IBM Parallel Printer Attachment, the BIOS assigns the serial port to LPT1.  Thus devices printing only to LPT1 should not have a problem.  If you have a Parallel Port attached, then it will be assigned to LPT1.  You can redirect LPT1 to COM1 or COM2, depending on which your printer is designated, by the command :

mode LPT1:=COM1: or

mode LPT1:=COM2:

The last issue with this printer is loading the paper.  First, you lift the smoky colored cover.  Next, there is a tab on the left side that you push in, allowing the paper roll enough room to fit inside the housing.  Fit the cardboard portion of the roll onto the two pegs.  The end of the paper must be feeding upwards and counterclockwise.  Release the latch on the side to let the printer allow the paper to be fed to the thermal head.  Take the edge of the paper, fold it in a U shape, and guide it down behind the beige plastic bar.  Use the paper feed button until the paper catches.  Gently adjust the paper, once you can see it through the underside of the thermal element so that it is straight and then close the latch on the side to hold the paper in place.  Make sure you have enough paper so that a little bit of paper appears over the plastic cover when you put it down.

Tandy Mod

One upgrade you may want to make to your system board is to make it more compatible with games that support the 160x200x16, 320x200x16 or 640x200x4 graphics modes only with a Tandy 1000.  Some games (essentially just about every PC game released after 1985) will allow you to select Tandy graphics, but when you play these games on a stock PCjr., you will only see every other line.  The Tandy mod will fix this problem.  A good guide to the mod with instructions can be found here : http://vintagemashups.net/2011/12/ibm-pcjr-tandy-1000-graphics-mod/

Other problems may prevent a game from working on a PCjr., including when a game auto-detects a Tandy 1000, keyboard or joystick input issues, graphical anomalies due to the differences between the Tandy and PCjr. graphics controllers, disk-based copy protection failures.  You may need to set the audio multiplexer to output 3-voice music before starting a game.

Of PCjr. games, the only game I know of that doesn't like the Tandy mod is ScubaVenture, which will throw a line out of place about every time the screen scrolls.  The line is solid, which makes it more difficult or impossible for the player to pass it without losing a life.  Mouser also shows some graphical garbage on the top of the screen with the Tandy mod, but it does not interfere with game play.

Memory Sidecars

If you are not fortunate enough to obtain a jrIDE, you can add memory expansions that were sold for the PCjr. if you can find one.  These typically come with 128KB or more of RAM, and without any modifications you can add up to 512KB of RAM in this way to the system.  IBM's Memory Expansion is configured through four dipswitches on the back of the sidecar.  Only one switch should be "ON" for each Expansion, the rest must be OFF.  You could attach up to four expansions, and the first expansion should have switch 1 ON, the second expansion switch 2 ON, the third expansion switch 3 ON and the fourth expansion switch 4 ON.

The IBM Memory Expansion can be modded to have 512KB on a single sidecar.  You must remove the sixteen 64Kx1 DRAM chips and replace them with 256Kx1 DRAM chips.  Just to the right of the large 74S409 chip, you will see three solder pads closely aligned in a row, with a trace connecting the left and center pads.  You must cut that trace and connect the center and right pads.  It may be possible to mod this card to 736KB, but I do not know how.