Mike's PCjr Page Logo

PCjr Tips and Tricks

This section is very incomplete - I will add to it as my foggy memory allows me to.

Keyboard Hot Keys:

The BIOS of the PCjr understood and interpreted four key sequences that affected system behavior. Standard PC clones did not do this. They key sequences are:
  • <Alt> and <Ctrl> and <Cursor Left> keys: shift the screen to the left
  • <Alt> and <Ctrl> and <Cursor Right> keys: shift the screen to the right
  • <Alt> and <Ctrl> and <Caps Lock> keys: turn the keyboard "clicker" on or off
  • <Alt> and <Ctrl> and <Ins> keys: start the built-in diagnostic routines. (See below)
The first two were most useful to television users; this allowed them to center the screen easily.

The keyboard "clicker" was a feature that would make the machine emit a "clik" for each keypress - this was to make up for the inadequate keyboards, which had little or no clicking sounds to them. (They used rubber dome technology, which was cheap to manufacture.)

Running Diagnostics

The built-in diagnostics were unique to the PCjr. Other machines ran diagnostics from a diskette. The diagnostic routines let you test all of the IBM provided options - it automatically senses which options are installed. Some of the tests are:
  • A memory test, which includes memory above the 128KB mark
  • A video test covering both text and graphics modes
  • Joystick & LightPen
  • Diskette Drive
  • Serial Printer & Parallel Printer
  • Internal modem
  • Speech attachment

Multiple Keyboards:

The infra-red keyboard design has an interesting drawback - imagine a classroom full of children using PCjrs, and each pointing their keyboard at somebody else's machine. A pretty amusing image, don't you think?

However, if you are playing a two player game this feature can be used to give each player an independent set of controls without crowding each other. I've done this trick a few times.

Identifying a PCjr by a program:

IBM reserved a byte at segment xF000, offset 0xFFFE to identify the machine type:
  • 0xFF means this is an IBM Personal Computer
  • 0xFE means this is an IBM Personal Computer XT
  • 0xFD means this is an IBM PCjr
  • 0xFC means this is an IBM PC AT
With the proliferation of machines over the past few years this byte as probably lost it's meaning. Newer machines probably use a code for "AT" or "reserved."

PCjr's with the Racore PC ID cartridge will identify themselves as Personal Computers, not PCjrs. This is a handy trick for faking out programs that insist on behaving differently for the different machines.

Using a Modem

My PCjr spent a lot of time connected to other machines, via a modem. For many years it was used to dial BBS systems and trade DOS utility programs. When I went to college, it was used to connect to the Unix hosts there.

The best modem to use is an external modem. The internal modem that IBM offered only transferred data at 300bps, and it had a strange command set that was not Hayes compatible. Any old (9600 bps or less) external modem using the Hayes command set is a good choice.

Note: According to the technical reference guide for the PCjr, it is not recommended to drive a modem faster than 1200bps. The PCjr is just too slow. Here is the technical explanation (paraphrased):

The PCjr uses the Non-Maskable Interrupt of the 8088 processor to handle the keyboard, which is a departure from other PCs of the era. Non-Maskable means that the interrupt can't be ignored. At 2400bps data is coming in fast, but the PCjr is fast enough to read it. However, if you press a key on the keyboard, the PCjr will drop what it is doing and decode the key. Keyboard decoding time is too long, which can cause data to be missed at the serial port.
The 8250 UART chip can be programmed to do 4800 baud. The machine is certainly fast enough. You just can't type while it is happening.

Another problem for the PCjr is the lack of a DMA controller. If you are receiving data at any speed from the serial port and the diskette drive is activated, you will lose data from the serial port. The processor will spend all of it's time servicing the disk drive, causing the serial port bits to "drop on the floor."

I used my PCjr for years at 2400bps with few problems. Here is why it worked for me, and how you can make it work for you:

  • Use a PCjr with expanded memory, and run your program from that memory. Memory accesses above the 128KB mark are faster because the PCjr's video hardware does not intefere. See "The Memory Subsystem" for details. If you do this, you should drop less bytes because the machine has more time to monitor the serial port. Keystrokes may still cause you pain.
  • Add a NEC V20 to your PCjr to speed the processor up. The extra 5 or 10% performance improvement might allow keyboard decoding to happen and finish between bytes coming in on the serial port.
  • Don't type while data is coming in. ;-)
  • Don't use the diskette drive while data is coming in. If you need to download, download files to a ram disk and transfer the files to floppy after the download has completed.
  • Super Hackers only: The 8250 can be replaced with the 16550 rather easily. The 16550 is capable of buffering up to 16 bytes. With some software to drive it, you can cut the interrupt overhead a lot by processing more than one character at a time.
Faster modems may work with the PCjr, although your risk of data loss increases. You are better off if you just limit the interface speed to 2400bps, even if you have a faster modem.

You will need the serial port adapter to do this. You will also need software, such as Qmodem, Procomm, PC Talk, or any old DOS based program. And finally, you may need the COMSWAP utility to correct the COM port weirdness discussed in the hardware section.

See "The Serial Ports" for a discussion on the PCjr serial port hardware.

Transferring Data using a NULL Modems or Laplink

This is an extension of the preceding topic on using modems ...

The 5 1/4 inch double density diskette drive was standard until the PC AT was introduced in 1984. The PC AT also used 5 1/4 inch diskettes, but they were the high density variety. Soon afterwards 3 1/2 inch diskettes became popular, both in low density and high density versions. The 5 1/4 inch diskette drive is all but a memory now. Within a few years, the 3 1/2 inch diskette will be a memory too.

Of course, you still have the problem of transfering data from a PCjr to another machine (or vice versa). One solution is to use a NULL modem. A NULL modem allows two machines to connect via the serial port without modems in between.

Using the directions above under "Using a Modem" and a NULL modem connection, it is possible to connect two machines and transfer data via the serial port. This technique works for almost any machine with a serial port. For PCjr owners, it may be the only technique that works. The files are sent using a standard modem protocol, such as X-Modem, Y-Modem, or Z-Modem. The transfer rate is fairly slow (4800bps), and the PCjr has to write the files to a RAM disk, but it beats retyping. ;-)

PCjr owners with parallel port sidecars may be able to use LapLink or similar software; I have not tried this myself. The parallel port has the potential to be much faster than the serial port.

Connecting a Mouse

There are two types of mice available for the PCjr.

One type of mouse is known as a bus mouse. It comes with special hardware to connect the mouse to the system. A device driver loaded a boot time tells the DOS and applications how to use the mouse. The Microsoft Booster is a memory card with a bus mouse built into it. If you can find a Microsoft Booster and the device driver (or something similar to the Booster), you can connect a mouse. These are hard to find though.

The second type of mouse is known as a serial mouse. A serial mouse connects to the existing serial port of a machine, and uses a simple DOS device driver to enable it. To use a serial mouse on a PCjr, you need the serial adapter. You will probably also need another adapter (or custom cable) to convert the DB-25 connector of the serial adapter to the DB9 connector that the mouse will have. I have an older Logitech mouse that comes with such an adapter, and it works fine. The drawback to a serial mouse is that it ties up the serial port; you can't use a modem on the serial port and the mouse at the same time. The PCjr Thermal Printer also uses the serial port.

Using a 3.5" Floppy Drive

Note: This only applies to drives connected to the internal floppy controller. Parallel port attached dries are basically logical block devices and have different rules.

The PCjr comes with a 5.25" double density floppy drive and controller, limiting diskette storage to 360KB for a normal, DOS formatted diskette. Later 3.5" floppy drives will work on a PCjr with no modifications. Double density drives (720KB formatted/1MB unformatted) look exactly like double density 5.25" drives except they have 80 tracks per inch instead of 40. High density drives (1.44MB formatted/2MB unformatted) support the slower data rate used by the PCjr and will generally work. The key to using both variants reliably is to use the correct media - you must use double density diskettes. On a double density drive this is a hard requirement; they can't ever use high density disks. On a high density drive the drive will try to detect the correct data rate to use by sensing the media, so to get the slower data rate that is compatible with the PCjr you need to use double density media.

Double density 3.5" media did not last long in the market place but it is still readily available on the used market.

If you do nothing except swap the drive the PCjr will just treat it as a 360KB drive that has the same geometry as the 5.25" drive - 40 tracks, 2 heads, and 9 sectors per track. DOS is "clever" and uses a media descriptor byte, so a 720KB diskette formatted as such will be fully readable and usable on a PCjr. To make the PCjr format a diskette to 720KB you will need to use DRIVER.SYS to tell give DOS another logical drive letter that matches the geometry of the 3.5" drive, which is 80 tracks, 2 heads and 9 sectors per track.

Created in October 2000, Last updated December 27th, 2020
(C)opyright Michael B. Brutman, mbbrutman at gmail.com

Return to Mike's IBM PCjr Page main page