Sunday, February 16, 2014

Influences of the PCjr. - the IBM PC Convertible

The IBM PC Convertible, Model 5140, was IBM's first attempt at a battery-powered laptop.  Of course, it was thick, had a small screen, and expansions made it longer.  However, it does share more than a few similarities with an earlier of the PC family, the IBM PCjr.  While it took ideas from the PCjr. and improved on them in many respects, the system was not a great success due to its own issues, namely its high price and less-than impressive specifications compared with competitor's products of the time.  The introduction of the 3.5" disk drive on this system, when all software had previously been released on 5.25" disks, meant that it took time for the market to release PC compatible software for the machine.  Also, if the chicklet keyboard was the Achilles Heel of the PCjr, the Convertible's initial low-contrast LCD gave it a bad reputation.  Later machines used a super twist LCD and a backlit LCD, both offering much improved readability, but like the PCjr., it was too little, too late.

Keyboard - The original IBM PC Keyboard used 83 keys.  The PCjr. Cordless Keyboards use 62 keys and the PC Convertible uses 78 keys (U.S. style).  The fewer keys make handling these keyboards with low-level routines quite different from the IBM PC keyboard.  Both the PC Convertible and the PCjr. use the Non-Maskable Interrupt to generate IBM PC Keyboard compatible scan codes.

In an IBM PC, serial data from the keyboard is sent to the system unit, deserialized by a shift register and then placed in I/O port 60, the 8255 PPI Port A0.  IRQ1 is used to signal the CPU that there is a key to be read.  A program can read the raw scancode directly or execute INT 09H/INT16H to obtain an extended ASCII scancode.

In the IBM PCjr., serial data sent from the keyboard is sent to bit 6 of I/O Port 62, 8255 PPI Port C0.   The NMI is generated to alter the CPU that there is a key to be serviced and the CPU deserializes the data stream, then INT 48H is executed to translate the raw scancode into codes compatible with INT 09H/INT16H.  IRQ1 is never used, but the translated scancodes appear at I/O port 60.

In the PC Convertible, the raw scancode is placed in I/O Port 07D.  An NMI is generated and the NMI handler will translate the raw scancode into a compatible scancode and stores the result in I/O Port 60 and generates IRQ1 and the key can be read with INT 09H/INT16H.  While obviously derived from the PCjr., this is an obvious improvement over the PCjr.'s slow routine and should be much more compatible with programs expecting PC keyboard handling.

Memory Expansion - Neither the PC Convertible nor the PCjr. were intended by IBM to reach 640KB, both were intended to max out with 512KB.  Memory expansions for both machines came in 128KB.  IBM officially only supported the Memory Expansions for the PCjr. (128KB in system unit + 3 x 128KB expansions), but the fourth expansion was easy enough to add.  IBM only physically supported four memory modules in the PC Convertible, each with 128KB, and the system always came with two installed from the factory.  Third party expansions were required for the PC Convertible to reach 640KB and recommended for the PCjr. to reach 640KB.

Feature Expansion - Both machines were expanded by hardware attachments, the PCjr. via sidecars that fit onto a connector on the right side of the machine, the PC Convertible by a connector on the rear of the machine.  IBM released five PCjr. attachment options, parallel, power, memory, speech and cluster, and four for the PC Convertible, serial/parallel, CRT display, speech and portable printer.  If customers did not particularly care for adding onto the length of the PCjr. they must have positively detested the added weight and length that the add-ons for the Convertible added.

Modem - IBM included a modem slot in the PCjr.  It sold a modem based on the Novation Smart 103 modem for the PCjr, which could run at 110 or 300 baud.  It did not sell well because it was not Hayes compatible.  IBM also included an internal modem socket in the PC Convertible.  Apparently ignoring the market again, IBM used the same style of modem for the PC Convertible internal modem upgrade.  This time the modem could also support 1200 baud.

The COM ports were similarly assigned on both systems.  The PCjr. had a serial port built in and it was assigned to COM1, but the resources were at 278/03.  Once the modem was installed, the serial port became COM2 and the modem COM1 at 3F8/04.  The PC Convertible Internal Modem always used 3F8/04 and would be assigned to COM1 when it was installed.  This time, IBM knew enough that not everyone would install the internal modem, so the PC Convertible had a serial adapter that could be set to COM1 3F8/04 if no internal modem was installed or COM2 2F8/03 if it was

CGA Support - The PCjr. had only basic, BIOS CGA support since it did not implement the crucial Color Select and Mode Control registers.  Although the PC Convertible uses a CGA-friendly 640x200 LCD resolution, the built in video is not particularly CGA compatible either.  Color text-mode attributes were not supported on the monochromeLCD, it was either normal video, reverse video or no display.  320x200 graphics would display three shades of gray plus black, but the graphics take up the whole screen, meaning they are twice as wide as they should be.   The built in LCD does not distinguish between 640x200 and 320x200 in this instance.  The MC6845 was only emulated enough for the basic modes, the color select register is not present and the mode control register has missing bits compared to real CGA.

The built-in display adapter can also be configured to emulate a MDA card.  When the CRT Display adapter is attached to the PC Convertible, it will function like an MDA card and the CRT Display adapter should provide 100% CGA compatibility.  The Display adapter has three video output ports, a Direct Drive port using an 18-pin BERG connector with pinouts identical to the PCjr's Direct Drive video port (except no audio).  The adapter can connect directly to the PCjr. Color Display, Model 4863 or the PC Convertible Color Display, Model 5145.  It can connect to an IBM PC Color Display, Model 5153 or IBM PC Enhanced Color Display, Model 5154 or any other compatible display via the PCjr. 18-BERG to 9-pin DE-9 adapter.  It also has a composite video output like the PCjr. and a 6-pin BERG connector for an RF adapter.  The BERG connector has a compatible pinout with the PCjr. RF switch.

Printer - Both systems had a printer designed specifically for it, the IBM PC Compact Printer for the PCjr. and the IBM Portable Printer for the PC Convertible.  Both are unidirectional thermal serial printers operating at a maximum of 1200 baud and have a 2K buffer.  Both use a transmission format of 1 start bit, 8 data bits and 2 stop bits.  The Convertible's character set includes text-drawing characters at ASCII 176-223 which the Compact Printer does not.  The PC Compact Printer can print in standard, condensed, double-wide and underline styles and 480-bit graphics, while the Portable Printer adds emphasized, superscript and subscript styles and 960 and 1920 bit graphic modes.  The Portable Printer supports virtually all the control codes of the Compact Printer plus some more for its enhanced features.

Speech Attachment - The Convertible's Speech Attachment is supposed to be functionally identical to the PCjr's.

No comments: