The Compaq Portable II
Hardware
Hardware-wise, the Portable II is very similar to the original Portable, though smaller. Instead of being XT-compatible like the Portable, it's AT-compatible, with a 286 processor, a real time clock, a 16-bit ISA bus, and so forth.
According to the service manual, there are two versions of the motherboard. They are functionally equivalent but the second is physically smaller. There is a socket on the underside of the motherboard for a memory expansion board; alternatively, memory can be expanded by plugging in an ISA card.
The video card has the same capabilities as the one in the Portable and Deskpro, though it's a later version of the design (Assembly no. 000525).
As with the Deskpro, the video card can can be made to display text attributes like an MDA does (ie, you only get bright and underlined) rather than in 15 shades of green. This feature only applies in the high-resolution mode, and it's selected by setting bit 7 of the CGA control register (port 03D8h).
Keyboard
The keyboard controller is most likely the same 106436-001 as used in the Portable III (documented here). If so, then it will support XT and AT keyboard types, auto-sensing the protocol used.
The keyboard controller supports the following Compaq-specific commands (for more details see table P0401 in the Interrupt List, file PORTS.A):
- 0A1h
- Set 6MHz speed
- 0A2h
- Set 8MHz speed
- 0A3h
- Set 16MHz speed
- 0A4h
- Toggle CPU speed
- 0A5h
- Special read (get keyboard type and other values).
In the value returned:
Bit 5 set for XT keyboard, clear for AT. Bits 2,3 give CPU speed. Bits 2 and 3 set: 8 MHz Bit 2 set: 16 MHz Else: 6 MHz (if available; see below).
- 0A6h
- Set CPU speed limit. Followed by one byte giving the new limit (0 or 1).
On some motherboards(?), port 86h also seems to be involved in CPU speed switching. When read:
If bits 6 and 7 are set, CPU speed is 16MHz, slowing to 8MHz during floppy access. If bit 3 is set, 8MHz and 16MHz are available. clear, 6MHz, 8MHz and 16MHz are available.
When the CPU speed is being set, this port is used if the value read had bit 3 set. Various permuations of bits 5,6,7 are then used to select the speed.
Storage
There are two drive bays. The upper one holds an ATA hard drive. On my Portable II, this is actually a Miniscribe MFM hard drive with an ATA-to-MFM bridgeboard bolted to its underside. The lower bay holds a slimline 5.25" floppy drive (mine has a 360k one, but the service manual also has part numbers for 1.2M and 1.4M drives). There are two types of 5.25" drive; "flip door" and "push button".
The physical arrangement of the drive enclosure also allows a twin-floppy configuration, with a second floppy drive in the upper bay.
The following hard drive types are supported by the BIOS. Any others would need a drive overlay to be installed:
Type | Cylinders | Heads | Sectors | Capacity | Landing zone | Write precompensation | Control byte |
---|---|---|---|---|---|---|---|
1 | 306 | 4 | 17 | 10.2 M | 305 | 128 | 0x00 |
2 | 615 | 4 | 17 | 20.4 M | 638 | 128 | 0x00 |
3 | 615 | 6 | 17 | 30.6 M | 615 | 128 | 0x00 |
4 | 1024 | 8 | 17 | 68.0 M | 1023 | 512 | 0x00 |
5 | 940 | 6 | 17 | 46.8 M | 939 | 512 | 0x00 |
6 | 697 | 5 | 17 | 28.9 M | 696 | 128 | 0x00 |
7 | 462 | 8 | 17 | 30.7 M | 511 | 256 | 0x00 |
8 | 925 | 5 | 17 | 38.4 M | 924 | 128 | 0x00 |
9 | 900 | 15 | 17 | 112.1 M | 899 | -1 | 0x08 |
10 | 980 | 5 | 17 | 40.7 M | 980 | -1 | 0x00 |
11 | 925 | 7 | 17 | 53.7 M | 924 | 128 | 0x00 |
12 | 925 | 9 | 17 | 69.1 M | 924 | 128 | 0x08 |
13 | 612 | 8 | 17 | 40.6 M | 611 | 256 | 0x00 |
14 | 980 | 4 | 17 | 32.5 M | 980 | 128 | 0x00 |
15 | 0 | 0 | 0 | 0.0 M | 0 | 0 | 0x00 |
16 | 612 | 4 | 17 | 20.3 M | 612 | 0 | 0x00 |
17 | 980 | 5 | 17 | 40.7 M | 980 | 128 | 0x00 |
18 | 966 | 5 | 17 | 40.1 M | 966 | 128 | 0x00 |
19 | 754 | 11 | 17 | 68.8 M | 753 | -1 | 0x08 |
20 | 733 | 5 | 17 | 30.4 M | 732 | 256 | 0x00 |
21 | 733 | 7 | 17 | 42.6 M | 732 | 256 | 0x00 |
22 | 805 | 6 | 17 | 40.1 M | 805 | -1 | 0x00 |
23 | 924 | 8 | 17 | 61.4 M | 924 | -1 | 0x00 |
24 | 966 | 14 | 17 | 112.3 M | 966 | -1 | 0x08 |
25 | 966 | 16 | 17 | 128.3 M | 966 | -1 | 0x08 |
26 | 1023 | 14 | 17 | 118.9 M | 1023 | -1 | 0x08 |
27 | 966 | 10 | 17 | 80.2 M | 966 | -1 | 0x08 |
28 | 748 | 16 | 17 | 99.3 M | 748 | -1 | 0x08 |
29 | 805 | 6 | 26 | 61.3 M | 805 | -1 | 0x00 |
30 | 615 | 4 | 25 | 30.0 M | 615 | 128 | 0x00 |
31 | 615 | 8 | 25 | 60.1 M | 615 | 128 | 0x00 |
32 | 905 | 9 | 25 | 99.4 M | 905 | 128 | 0x08 |
33 | 748 | 8 | 34 | 99.3 M | 748 | -1 | 0x00 |
34 | 966 | 7 | 34 | 112.3 M | 966 | -1 | 0x00 |
35 | 966 | 8 | 34 | 128.3 M | 966 | -1 | 0x00 |
36 | 966 | 9 | 34 | 144.3 M | 966 | -1 | 0x08 |
37 | 966 | 5 | 34 | 80.2 M | 966 | -1 | 0x00 |
38 | 611 | 16 | 63 | 300.7 M | 611 | -1 | 0x08 |
39 | 1023 | 11 | 33 | 181.3 M | 1023 | -1 | 0x08 |
40 | 1023 | 15 | 34 | 254.8 M | 1023 | -1 | 0x08 |
41 | 1023 | 15 | 33 | 247.3 M | 1023 | -1 | 0x08 |
42 | 1023 | 16 | 63 | 503.5 M | 1023 | -1 | 0x08 |
43 | 805 | 4 | 26 | 40.9 M | 805 | -1 | 0x00 |
44 | 805 | 2 | 26 | 20.4 M | 805 | -1 | 0x00 |
45 | 748 | 8 | 33 | 96.4 M | 748 | -1 | 0x00 |
46 | 748 | 6 | 33 | 72.3 M | 748 | -1 | 0x00 |
47 | 966 | 5 | 25 | 59.0 M | 966 | 128 | 0x00 |
Firmware
The Portable II has 32k of BIOS in two 16k chips.
- The Compaq ROM signature is a 6-byte string at F000:FFEAh: "COMPAQ". This is preceded by the product class signature at F000:FFE8h: "01".
- The BIOS on mine is dated 28 January 1988, which seems quite late considering that the Portable II was superseded by the Portable III in 1987. It's revision P, which supports 1.4Mb floppy drives.
- As on the Portable, the enhanced CGA card is supported, with the same keystrokes to switch between the high- and low- resolution versions of the 80×24 video mode when the CTRL+ALT+< and CTRL+ALT+> key combinations are detected.
- As on the original Portable, the video registers table (pointed to by INT 1Dh) is only 64 bytes long, and therefore contains only the 6845 registers. The other bits of the table (video buffer sizes, columns on screen, etc.) are stored elsewhere in the ROM.
- Also matching the Portable, the ROM BIOS attempts to support the ROM BASIC interrupt (INT 18h). It doesn't include a full BASIC interpreter; rather, if BASIC is invoked, it asks the user to insert the Compaq DOS disk, and then attempts to launch BASICA.EXE (which, unlike the IBM version, works as a standalone interpreter).
- The CPU speed is set using INT 16h calls with AH=0F0h to 0F4h. See the Interrupt List for more details. The keystroke CTRL+ALT+backslash (on a UK keyboard, CTRL+ALT+hash) also toggles the turbo mode.
- CTRL+ALT+minus switches between MDA-compatible and CGA-compatible attributes in the 24x80 text modes.
- The following extended Compaq video BIOS functions are
suported on INT 10h:
- 0BF00h / 0BF01h
- Select external / internal monitor
- 0BF04h
- Set mode switch delay (uses BL not BH)
- 0BF05h
- Enable/disable display (uses BL not BH)
John Elliott 16 May 2009.