M20 Olivetti M20

An 8 bit ISA to M20 converter

by Davide Bucci and Christian Groessler

The ISA (Industry Standard Architecture) standard was adopted in the original PC-IBM computer and countless expansion cards have been developed for covering almost any need. We would like to discuss here the realization of an adapter which can be used to plug any standard 8 bit ISA expansion card on the Olivetti M20. Of course, the adapter is useful on adapting the hardware, but the software needs to be adapted too, and this is another business.

Feature State
I/O access Implemented
Memory access To be tested
Interrupt To be tested
DMA access Not implemented

The schematic

Here is the schematic of the adapter card. You can click on the two images to obtain an higher resolution version. Here you can download an archive with the schematics in the the very compact GPL v. 3 FidoCadJ file format.

The schematic 1/2.

The schematic 2/2.

Some photos of the first prototype

The adapter, component side. A closeup photo of the adapter card. All chips are standard TTL, very easy to find. The ISA card is mounted in a small daughterboard, connected with the adapter via a 50 wires flat cable.

The adapter, solder side. A little bit of manual wiring...

The adapter, installed in the M20. A photo of the card installed in a M20 system. The memory expansion described here can also be seen.

The adapter, installed in the M20. Another view of the installed adapter. The 14.31818 MHz crystal oscillator built around the BF244C JFET was still not present on the bord. This frequency was provided by the ISA bus and was used by some cards. It does not need to be synchronized with the system clock.

A 3Com ethernet card mounted on the daughterboard. A 3Com ethernet card mounted on the daughter-board.

How to write the software

The I/O ports

The Olivetti M20 can access to the I/O addresses of the ISA card in the following way:

  • The access is always done at a byte level.
  • Only the least significative byte of the data bus is transferred.
  • An access at an even address on the ISA card is mapped to the following odd address at the M20 side. For example, M20 0x0281 corresponds to ISA 0x0280. This copes with the restriction that byte accesses at the M20 side should always be at odd addresses.
  • An access at an odd address on the ISA card is mapped to the same odd address at the M20 side, but the most significative bit of the address is set. For example, M20 0x8281 corresponds to ISA 0x0281.

Memory access

The segment <7> is (or should be...) unused by the M20 operating system. AN access at the segment <7> is translated by the adapter in the following way:

  • The most significative 4 bits are those configured by the hardware jumpers on the adapter.
  • The remaining 16 bits of the address as coded by the least significative 16 bits of the address bus of the M20 (the ISA address bus is composed by 21 bits).
For example, if the memory mapping bits of the interface are configured in the 0xE configuration, an access to the <7>C000 will be translated to 0xEC000 on the ISA side.

Interrupt system

On the ISA side, the active interrupt is hardcoded to the IRQ5 line. On the M20 side, a jumper is available to select whether to activate the IR1 (COMVI2), IR2 (COMVI2) or IR7 (SYSINT) lines.

A complete example/test program

A screenshot of the test program recognizing a 3Com Ethernet adapter An example/test program has been written to see if an Olivetti M20 equipped with this adapter can access to an external ISA card. We chosen the 3Com 3C503 card (Etherlink II). The test program checks for the presence of the card, reads its MAC number and see if it corresponds to a 3Com address. The program is written in C, can be compiled by gcc and can be downloaded here. If you are curious about how to cross programming the Olivetti M20 using the gcc compiler, read this article.


The development of this adapter is not complete. Probably some serious tests should be made and probably some buffering is needed for the address bus if the ribbon cable is too long. More importantly, some interesting application should be found and the adapted software should be developed. In any case, we believe that this adapter can become an important key for the future expandability of the Olivetti M20 systems. If you have some ideas, or if you want to participate to the hardware or software work, please contact us!

RSS feedsRSS feeds

Search in the M20 site
Search in the Internet