# Amstrad PC2286: repair notes

Compiled 5 Oct 2026. Sources are listed at the end. The facts marked **[BIOS]** come from
disassembling the v1.11 BIOS (the PC2386 dump on archive.org, the same firmware as the PC2286; see §1).
The BIOS start-up was also run in a Unicorn-based emulator to check the analysis.

---

## 1. The four BIOS EPROMs

| | |
|---|---|
| Chips | 4 × 27C256 (32 KB), Amstrad **40189, 40190, 40191, 40192** |
| Location | IC149–IC152 on the PC2286 main board (IC156–IC159 on the PC2386) |
| Organisation | **4-way byte interleave, not even/odd pairs** |

Byte *N* of the 128 KB ROM image is stored in chip *N mod 4*, at chip address *N div 4*:

| lane | chip | holds image bytes |
|---|---|---|
| 0 | 40189 | 0, 4, 8, 12 … |
| 1 | 40190 | 1, 5, 9, 13 … |
| 2 | 40191 | 2, 6, 10, 14 … |
| 3 | 40192 | 3, 7, 11, 15 … |

Layout of the 128 KB image **[BIOS]**:

| image offset | chip offset (every chip) | contents |
|---|---|---|
| 00000–03FFF | 0000–0FFF | VGA option-ROM stub (`55 AA`, Paradise copyright, mostly zeros). Seen at C000:0, it jumps to E000:4000 |
| 04000–0BFFF | 1000–2FFF | Paradise PVGA1A VGA BIOS code |
| 0C000–0FFFF | 3000–3FFF | empty (FF) |
| 10000–17FFF | 4000–5FFF | Amstrad system BIOS v1.11, 32 KB (POST runs from this copy: reset → F000:605B → F000:0080) |
| 18000–1FFFF | 6000–7FFF | identical second copy (holds the IBM-compatible entry points F000:E05B…, the reset vector at FFFF0) |

**So the system BIOS sits in the upper half of every chip.** A two-chip diagnostic ROM can't just replace
two of them. You have to burn four chips. `tools/pc2286rom.py diag` does the conversion (§6).

**The PC2286 and PC2386 run the same BIOS.**
- A PC2286/40 owner dumped all four chips (VCFed, Sept 2026). They are 40189/40190/40191/40192, 4-way
  interleaved. Those are the same Amstrad part numbers the PC2386 service manual lists for IC156–159.
- The BIOS stores its banner as `AMSTRAD PC?86 (1.11)`. At boot it fills in the `?` from gate-array strap
  bits. Port 22h bit 3 picks 2 or 3 (286 or 386). Port 18h bits 5–7 pick the series digit **[BIOS]**.
  The same image prints "PC2286" or "PC2386" (and probably PC1286/1386/3286/3386).
- It also contains code that only applies to the 386 (CACHE message, 386 instructions behind CPU checks).
- Cliff Lawson (ex-Amstrad) refers to "the 1.xx BIOS fitted in 1/2xxx".
- Caveat: I haven't byte-compared a PC2286 dump myself (that attachment needs a forum login). Reading
  one of your chips settles it. `check` compares against the reference SHA-1s.

Reference dump (v1.11, chips "-2"): <https://archive.org/details/pc-2386>
`40189-2 c41cf517…  40190-2 5344c0a6…  40191-2 d0550c3d…  40192-2 dc3ea1fc…` (full hashes in the tool).

The BIOS checksums only the lower 32 KB copy. The tool checks both copies and the VGA stub.

---

## 2. What happens between power-on and the first character **[BIOS]**

1. Reset vector → F000:605B → F000:0080.
2. The BIOS writes 80h to **I/O port DEADh** (gate-array "unlock") and reads it back. If the gate array
   doesn't answer, the BIOS loops forever writing an error number to DEADh. No beep, no video.
3. Gate-array configuration from the link settings (RAM size/speed etc. via ports 20h–27h while unlocked),
   EMS mapper (ports 2A8h–2AAh), CMOS/RTC check. A dead battery makes it load CMOS defaults, which select VGA.
4. System BIOS checksum. If it's bad: "Error: Faulty ROS ROM checksum".
5. PIT/DMA/PIC set-up. Then it writes **00 to ports 80h–8Fh**. That is the only write a POST card sees
   during early POST. The Amstrad BIOS has no POST codes, which is why your card showed nothing useful.
6. **VGA initialisation.** The BIOS sets SS:SP = 0000:0000, builds the interrupt table in the first KB and
   calls the Paradise VGA BIOS. **It does this before any RAM test**, using the first 64 KB of RAM untested.
7. "Please wait" appears, followed by a dot per test that passes.
8. Conventional RAM sizing and test ("Error: Faulty SYSTEM RAM"), protected-mode extended RAM test,
   SIMM-size probe, RTC, PIC, DMA, timer, serial, printer, mouse, then memory size/equipment, option ROMs,
   keyboard, floppy, hard disk.
9. INT 19h boot.

Error halts print `Error: Faulty …` and stop. The message numbers are:
01 SYSTEM RAM, 02 VDU RAM, 03 interrupt controller, 04 DMA controller, 05 floppy controller/drive,
06 interval timer, 07 system status register, 08 real-time clock, 09 VDU controller, 0A printer port,
0B serial port, 0C mouse registers, 0D ROS ROM checksum, 0E parity error, 10 extended RAM, 11 hard disk.

**What this means for a black screen with no beep.** The machine died before step 7. That covers power,
reset, clock, CPU, ROM, gate array, **the first 64 KB of RAM**, or the VGA (which sits on the upper
expansion board). Bad base RAM kills it silently. Other owners report the same:
- jcd92 (PC2386): any system-RAM problem means "POST simply doesn't start". A CRT just shows blue stripes,
  which is the VGA left uninitialised. Five pins in his SIMM sockets were broken.
- VintageVic (PC2286) revived two "completely dead, black screen" boards by removing the DIL DRAMs
  (parity chips too) and fitting four good SIMMs with the links set to match.

---

## 3. Links, switches, memory (Amstrad note via Cliff Lawson)

Most links are reachable by removing the metal plate on the bottom of the 1/2xxx machines.

| Link (x286/x386) | Function |
|---|---|
| Link (x286/x386) | Function | Normal PC2286 setting |
|---|---|---|
| 9–12 | Mouse IRQ 5 / 4 / 9 / 3 (one fitted) | leave as found; needs a full strip-down |
| 27 | on-board HD controller | disabled (it never worked; shipped with a WD1006V card) |
| **28** | **on-board VGA** | enabled |
| 30 | on-board mouse interface | enabled |
| 31 | on-board parallel port (LPT1) | enabled |
| **32** | **on-board floppy controller** | enabled. Confirmed on a PC2286; removing it there caused RAM errors |
| 33 | on-board serial (COM1) | enabled |
| **34** | **Power-On Self Test** | enabled |
| 36 | expansion bus cache | PC2386 only |

"Enable" links should be enabled when fitted. The BIOS reads these inputs active-low, which supports
that, but the safest check is to compare all four boards.

The boards also carry undocumented factory links. The PC2386 manual shows links up to at least LK46 on
that board: floppy data-separator options, a speaker "bug fix" link, memory-timing options, and HD
controller polarity links LK306/LK307 on the expansion board. Leave those as found. Photograph every
board and compare: apart from the RAM links, any position that differs between your four boards is a
suspect.

The generic list gives RAM links as 19–24. Those are the PC2386 numbers. On the **PC2286**, size is
**LK17–LK20** and speed is **LK21–LK22**:

| Memory (PC2286) | LK20 | LK19 | LK18 | LK17 |
|---|---|---|---|---|
| 512K (2×256K) | In | In | In | Out |
| 640K (2×256K + 2×64K) | In | In | Out | In |
| 1MB (4×256K, also the stock DIL fit) | In | In | Out | Out |
| 2MB (2×1MB) | In | Out | Out | In |
| 2.5MB (2×256K + 2×1MB) | Out | In | In | In |
| 4MB (4×1MB) | Out | In | In | Out |
| 8MB (2×4MB) | Out | In | Out | Out |
| 16MB (4×4MB) | Out | Out | Out | Out |

| RAM speed | LK21 | LK22 |
|---|---|---|
| 80 ns | Out | Out |
| 100 ns | In | Out |
| 120 ns | Out | In |
| 150 ns | In | In |

- The stock machine has **12 DIL DRAMs** (TMS44C256 plus parity chips) and empty SIMM sockets. Remove
  all of them before fitting SIMMs.
- SIMMs go in pairs, with the first pair in the two innermost sockets. Use 30-pin parity SIMMs, 9-chip
  ones preferably (some 3-chip SIMMs don't work).

Video DIP switches: Sw1 On = multi-frequency monitor, Sw2 On = PS/2 mode (Off = AT), Sw3 unused,
Sw4 On = 16-bit bus. Suggested setting: 1 On, 2 On, 4 On.

---

## 4. Power supply

The PSU board is the same design as the PC2386's (MP0001A: same parts and the same component numbers
in VCFed repairs). The harness to the main board differs: the PC2386 uses a 12-way connector,
1 −12V, 2 +12V, 3 −5V, 4–8 GND, 9–12 +5V.

| PC2286 main-board connector pin | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
|---|---|---|---|---|---|---|---|---|
| (as traced by a VCFed member) | +5V | −5V | +5V | −12V | GND | +12V | GND | GND |

**Verify it yourself before relying on it**, because wire colours aren't standard (white and blue were
swapped on one machine). With the power off, buzz each pin to an ISA slot on the expansion board:
B1/B10/B31 GND, B3/B29 +5V, B5 −5V, B7 −12V, B9 +12V (B1 is at the bracket end).

Other outputs: hard disk uses a standard 4-pin (+12, GND, GND, +5). Floppy power is **+5 V only**
(3 wires: +5 V, GND, GND). The fan is 12 V. Mains fuse F601 is T4A on the PSU board.

Checking it:
1. Test it under load, ideally on the motherboard; it won't start with nothing connected.
2. With the machine on, measure at the ISA slot B pins. That is the real load point and includes the
   board-to-board joint. Targets: +5 V 4.9–5.25, +12 V 11.4–12.6, −5 V −4.5 to −5.5,
   −12 V −10.8 to −13.2. On +5 V ripple should ideally be under ~50 mV p-p.
3. Compare with the PSU test points: **TP A** (+5 V) and **TP B** (+12 V), in the corner of the PSU board
   by the outputs. More than ~0.1 V lost between TP A and the ISA slot means a bad connector or joint.
4. Adjust only if needed: **VR604** sets +5 V to 5.00 ±0.05 at TP A, **VR603** sets +12 V to 12.00 ±0.05
   at TP B. Leave VR606 (+12 V protection) and VR601 (primary protection) alone.
5. While you're on the slot: B2 (RESET DRV) should pulse high at switch-on and then sit at 0 V. If it
   stays high, the board is held in reset. B30 should be 14.318 MHz; B20 (bus clock) was ~8 MHz on one
   PC2286.

- The primary side holds ~325 V DC for a while after switch-off.
- The supply won't start with no load.
- Failures seen on PC2286 PSUs: leaking **6800 µF/16 V** secondary caps (C627/C628), 3300 µF/35 V (C625),
  **VR603** (1 kΩ +12 V trimmer) going open, the **TLP741G** opto-isolator in the protection loop.
  Symptom: the fan turns for a second and then the PSU shuts down.
- Key ICs: STK7458, MB3761 detector, LA6324, BA6993, BA707, AN7905F (−5 V), AN7912T (−12 V). The PC2386
  service manual lists the same parts, so its PSU schematic (p.48) very likely applies.
- Test point and trimmer locations are in "Fig. A" on page 3 of the PC2386 manual; the PSU board layout
  is on page 8. The PC2086 manual sets +5.15 V, but its PSU is a different design.

---

## 5. Suggested order for "PSU on, nothing on screen" (×4 machines)

1. **Voltages under load** at the board connector: +5 (≥ 4.9 V), +12, −5, −12. Check ripple with a scope
   if you can. Old caps are the usual problem.
2. **Links.** LK28 (VGA), LK32 (FDC) and LK34 (POST) should be fitted. LK17–20 and LK21–22 must match
   the RAM fitted. Check the video DIP switches.
3. **Reseat the upper expansion board** (ISA slots plus the Paradise VGA). Test with both boards in the
   chassis, because the top board flexes and the joint goes intermittent when it's loose on a bench.
4. **RAM.** Reseat and clean the 12 DIL DRAMs, or swap in 4 known-good parity SIMMs (remove all the DIL
   chips and set the links). Inspect the SIMM socket pins.
5. **Pull the AA batteries** for a minute. That forces CMOS defaults; a stale "mono/CGA" display type in
   CMOS would leave the VGA idle.
6. **Dump the ROMs** and run `check` to catch bit rot.
7. **Burn the POST-code BIOS** (§6). The card then shows where it stops, and the RAM pre-test names the
   failing data bits.
8. With a logic probe on the 286: RESET (pin 29) should pulse and then stay low, CLK (pin 31) should be
   about 25 MHz. Look for /CE activity on the ROMs. One owner saw half a second of EPROM address activity
   and then nothing, which matches a crash inside VGA init on bad base RAM.

---

## 6. tools/pc2286rom.py

Ready-built images are in `roms/`: the original v1.11 set plus both POST-code variants, as 27C256
(32 KB) and, in `roms/27C512/`, as 27C512 (64 KB, image stored twice). `roms/README.txt` has the socket
placement and checksums. Add `--27c512` to `split`, `diag` or `postcode` to get 64 KB output.

Python 3, no extra modules needed. The inputs are raw 32 KB reads of the four chips, in any order.

```
python3 tools/pc2286rom.py check  a.bin b.bin c.bin d.bin      # lane order, checksums, reference compare
python3 tools/pc2286rom.py postcode a.bin b.bin c.bin d.bin -o m1-post   # POST-code BIOS (4 files)
python3 tools/pc2286rom.py diag supersoft_even.bin supersoft_odd.bin -o ss   # or: diag xtramtest.32k -o xt
python3 tools/pc2286rom.py codes                                 # POST code table
```

`postcode` builds a copy of your own BIOS with 15 small hooks. The patch source is in
`tools/pc2286_postcode.asm`. It was tested in emulation: normal boot, gate-array failure, ROM checksum
failure and injected RAM faults.

| code | meaning |
|---|---|
| 11 | BIOS started (CPU is fetching from the EPROMs) |
| F1–F4 | early fatal halt. **F2 = gate array not answering at DEADh** |
| 0D | BIOS checksum bad |
| 20 | testing the first 64 KB of RAM |
| **E0 lo hi ad** (cycling, beeps) | **first 64 KB failed**: bad bits D0–7 / D8–15, address bits 15–8 |
| 21 | RAM OK, starting VGA BIOS (**stuck here = hang inside VGA init**) |
| 0F | VGA up, printing "Please wait" |
| 22 / 23 | conventional / extended memory test |
| 30–36 | RTC, PIC, DMA, timer, serial, printer, mouse |
| 37 | late POST (option ROMs, keyboard, disks) |
| 40 | INT 19h, POST finished |
| 01–11 | halted on "Error: Faulty …" with that message number (§2) |

For generic diagnostic ROMs you need an ISA MDA/CGA card, with LK28 removed. They also don't set up
Amstrad's gate arrays, so a RAM error they report might not be real.

---

## Sources
- PC2386 service manual scan (schematics, parts list, PSU): <https://archive.org/details/amstrad-pc-2386-service-manual>
- PC2086 service manual, two scans: <https://archive.org/details/manual_PC2086_SM_AMSTRAD_EN>, <https://archive.org/details/manual_PC2086_SM_AMSTRAD>
- **PC2286/D/40 service manual** (47 pp, Aug 1989), not online. Held by the Centre for Computing History,
  CH27477: <https://www.computinghistory.org.uk/det/27477/Amstrad-PC2286-D-40-Service-Manual/>
- PC2386 BIOS v1.11 dump: <https://archive.org/details/pc-2386>
- VCFed "Amstrad PC 2286" thread (PSU repair, RAM, ROM dumps, links): <https://forum.vcfed.org/index.php?threads/amstrad-pc-2286.1238386/>
- Cliff Lawson's Amstrad pages, archived (links, memory, SETUP.EXE): <https://web.archive.org/web/20101216023809/http://web.ukonline.co.uk/cliff.lawson/atpcs.htm>
- CPCWiki "PC2286/40 won't boot" (fixed by cleaning dust): <https://www.cpcwiki.eu/forum/other-retro/pc228640-won't-boot/>
- MAME `pc2386` driver (and the 40211 keyboard MCU dump): `src/mame/pc/at.cpp`
