M20 Olivetti M20

Repairing an Olivetti M20

M20 This section is intended to provide an help for common problems in old machines like the M20.

We do no take any responsibility for damages or injuries occurred when repairing the machine. Dangerous voltages can be present in several circuits, when the computer is connected to the main power. Remember also that several capacitors can stock dangerous energy for a while after the computer has been switched off. If you feel uncomfortable using a soldering iron, you should probably skip this section of the site.

For the moment, we can not give a complete description of every possible problem in the M20. Remember that in such an old machine, almost everything can be repaired. It is just a matter of time, patience and skill. Anyway, if you can solve the problem, we would be happy to include a description of your solution.

General informations

Taking apart the Olivetti M20 (by Davide Bucci)
The power supply unit
The disk drive units
The keyboard

Diagnostic errors

The Olivetti M20 performs a self test at the startup. In case of problems, it prints error messages on the screen and/or on the printer. Those error messages can be useful to identify and solve the problem. The following sequence is executed by the M20 each time it boots up.
  • The video chip is activated and configured. The only Z8001 instructions used are Load, Output and relative jump (JR)
  • 4 bytes of the bitmap RAM are written with a triangle-shape pattern
  • Register and instruction tests of the Z8001 are performed. If there is an error, the test hangs with an infinite loop.
  • 4 bytes of the bitmap RAM are written with a diamond-shape pattern
  • The RAM test is performed and if an error occurs, the system hangs with an infinite loop.
  • 4 bytes of the bitmap RAM are written with a four vertical lines pattern
  • The CPU call and trap test is performed. If it fails, the system hangs with an infinite loop.
  • The screen and printer driver are initialized. Those drivers need to be initialized to output error messages.
  • LSI chips are tested (8251 USART, 8253 timer, 8255 parallel I/O, 6845 CRT controller, 1797 floppy controller). Every error is displayed on the screen and sent to the parallel printer.
  • The system asks to the keyboard if a key has been pressed. This information will be used later.
  • A test command is sent to the keyboard. A diagnostic program present on the keyboard ROM (M8048) test the keyboard firmware, reads the configuration jumpers and returns the configuration and the test results to the M20 CPU. If an error occurs, it is printed on screen and sent to the parallel printer.
  • The zero track of the drive zero of the floppy disk unit is read. If the drive zero is not ready, the zero track is read from disk drive 1. If an error occurs, it is printed on the screen and sent on the parallel printer. If the D key is pressed, the system enters a test loop and this phase is repeated indefinitely.
  • If the L key is pressed (or the loopback jumper is set on the motherboard), the system enter in the test loop, sending informations about the errors and the status on the parallel printer.
  • The control is given to the operating system. Every key pressed, other than L or D is given as a parameter to the operating system.
Here is a list of the possible error codes that can be shown at the startup.
Message given: Error condition:
Triangle CPU problems
Diamond RAM test failed
4 vertical lines Test CPU instructions call and trap failed
EC0 8255 error parallel interface
EC1 6845 error screen controller
EC2 1797 error disc drive controller
EC3 8253 error timer circuit
EC4 8251 error keyboard interface circuit
EC5 8251 error RS-232 interface
EC6 8259 error interrupt controller
EK0 Keyboard not responding
EK1 Keyboard responding, but autotest failed
ED0 Error floppy 0
ED1 Error floppy 1
ED10 Error hard disk
E10 Non vectored interrupt error
E11 Vectored interrupt error
DISK DRIVE NOT READYNo disk in drives
INVALID BOOT FILEThe disk is not bootable
DISK ERROR XXError during disk access. The XX is an hexadecimal 8 bit code. Each bit means:
  • bit 0: illegal parameters
  • bit 1: not track zero after restore
  • bit 2: seek error
  • bit 3: data transfer error
  • bit 4: record not found error
  • bit 5: write fault
  • bit 6: write protect
  • bit 7: drive not ready
More error bits can be set in the same time. E.g. "Disk error 18" means that the bits 3 and 4 are set.

RSS feedsRSS feeds

Search in the M20 site
Search in the Internet