Repairing an Olivetti 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.
Taking apart the Olivetti M20 (by Davide Bucci)
The power supply unit
The disk drive units
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.
Here is a list of the possible error codes that can be shown at the startup.
- 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.
|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 READY||No disk in drives|
|INVALID BOOT FILE||The disk is not bootable|
|DISK ERROR XX||Error during disk access. The XX is an hexadecimal 8 bit code. Each bit means:|
More error bits can be set in the same time. E.g. "Disk error 18" means that the bits 3 and 4 are set.
- 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
Olivetti is a registered trademark of Telecom Italia.
This site is not related to Olivetti nor to Telecom Italia. The material presented is meant for personal use only and is shared in a "fair use" spirit. If you own the copyright of some of the stuff presented here and you think it should be removed, please contact the webmaster.