Building an APB 8086 clone for the M20 in 2024

by Davide Bucci

Introduction
Putting together the APB 8086
Testing
Conclusion
Page log

Introduction

I was greatly inspired and amused by Scott Baker's videos. I was already in touch with Salvatore Paxia, who is a great electronic engineer and who has a few very interesting projects related to the M20 computer. I was particularly intrigued by the APB 8086, a card that Olivetti introduced in 1983, when it became clear that the IBM PC was going to be a huge hit. The PCOS could not simply compete with the MS-DOS in terms of the number of software packages available. The Olivetti M20 being based on the rather obscure Zilog Z8001, the Alternate Processor Board (APB) sported a full-fledged 8086 that could be used to achieve a degree of compatibility with the PC world and run MS-DOS 2.0.

I like hardware projects for the M20! I already expanded my M20 to the full 512 KB and I thought it would be fun to put together such a card. After a few emails, Salvatore sent me a bare PCB that reproduced the original Olivetti design for the APB 8086 and a few components that I did not have in stock. This page shows my experience building and testing such a card and the tests I could do running the M20 with the MS-DOS operating system. I commented on this experience on Mastodon.

Putting together the APB 8086

The PCB and the components, ready for assembly Once I got the PCB and all the components required for the card, assembly was not a big deal. All components in the original design are through holes. The only peculiar ones are two PAL's that Salvatore already sent me programmed. The PAL's were rudimentary type of programmable gate array circuits that Olivetti used for the glue logic in their cards. Salvatore had to build his own programmer for those chips, not supported by the TL866II or similar modern solutions. On the other hand, I could program the two 2764 EPROMs with my TL866II programmer with no particular issues. Their content is available here.

The fully assembled APB The assembled PCB is not very dissimilar from Olivetti's original 1983 board. Salvatore's design can, however, use two different crystal oscillator circuits.

A screenshot of my M20 BC, showing that the ROM 1.0 does not recognize the APB in the system The smoke test was passed in the sense that there were no flames coming from the board when I installed it in my M20. What a relief! However, the question "Use alternate processor (Y/N)" should appear when I switch on my computer. For a few minutes, I was wondering what was wrong. Then I realized that the answer was in front of my eyes: the Olivetti APB was put together in 1983, and my computer was built in the summer of 1982. The 1.0 ROM installed in my BC model simply did not contemplate the presence of the APB.

A picture of the original PA62 and PA66 EPROMs installed in the rev. D board. The original Olivetti "Boostrap Loader Rev. 1.0" is contained in two 2732 EPROM's located, in the rev. "D" of the motherboard, just under the keyboard. They are marked PA66 and PA62, and their upgrade is explicitly mentioned in the installation instructions of the "Manuale Assistenza". The full manual can be downloaded from this page, but I have extracted the table that interests us (page 71 of the pdf file) and that refers to the APB 8086 install. I had to change the ZA jumper from ZA-2 to ZA-1, to correctly address the disk drives with the new firmware. For the 1.0 ROM's, instead of an EPROM marked PA66 you may encounter PA61 for M20's sold outside Italy, or for models different from mine, that is a "BC". If you need the 2.0f firmware to program your EPROMs, you can find it there.

The new EPROM's with the 2.0f firmware installed. It was not very simple to program two 2732 EPROMs with the new firmware (2.0f), as I only had one 27C32 that could be programmed at Vpp=12.5V. My TL866II can only provide up to 18V for the programming voltage, and the majority of the 2732 EPROMs I had required 21V. I hacked together a small two-transistor circuit that allowed me to circumvent that limitation, though.
Version 2.0f of the firmware also takes much longer to do the memory test of my fully expanded 512 KB M20. This means that the diamond shape on the top left corner of the shape remains visible for a while. I was asking myself if there were issues with the memory, but no, I just had to wait a few seconds more than I was used to.

A screenshot of the boot prompt of the new firmware, showing that the version 2.0f was correctly installed. I was happy to see that I could correctly update the firmware to version 2.0f. By the way, I could check the easter egg (a small spider crawling across the screen) by pressing Command+S.

The question Select Alternate CPU (y/n)? that shows that the APB is present in the system and works Sure enough, this time when I put back the APB in the M20, the computer asks if I want to use the 8086 processor. Success!

After having installed the APB in the system, I tested a few MS-DOS utilities. I first made a copy of the floppy disk with the operating system, then configured it for my keyboard, which is an Italian QZERTY layout. I could play a little with the Microsoft Basic provided with MS-DOS 2.0. It is different from GW-BASIC and does not offer any graphical commands.

Testing

Salvatore also sent me a floppy disk containing the Olivetti version of MS-DOS 2.0 that could be used with this configuration. It is important to have it as the M20 has different hardware than the PC-IBM, and Olivetti had to write a driver to access the screen.

The MS-DOS 2.0 prompt Of course, this configuration only implemented a text-only display. I do not think it would be impossible to access graphics with MS-DOS. After all, the Olivetti M20 system is always operating in a 512x256 graphics mode (there is no text mode altogether). However, that would require low-level access to the M20 hardware, something that is very different, for instance, from the usual CGA hardware installed in the PC IBM. Was that a crippling limitation in 1983? Probably not, as the CGA was a quite expensive option for the original IBM PC, which could count on many text-only applications. Of course, in 1983, Olivetti released the M24, which was a very good PC compatible, but this is another story. By the way, did you know that there was an APB Z8001 for the M24, too?

The MS-DOS version of Silk Dust running on the Olivetti M20 I was very happy to see that the computer passed all the diagnostic tests with the 8086 processor taking the control of the machine. The feeling is immediately different from the PCOS and when I put the floppy with the MS-DOS operating system, I was welcomed with the date and time questions as well as the usual A> prompt. Success!
It turns out I do not have plenty of MS-DOS software on 360 KB floppy disks. I am not really collecting old PC hardware (at least not ordinary ones). Searching for something interesting to test, I decided to give a try to Silk Dust, a text adventure game I wrote that could run on MS-DOS 2.0 with a text-only interface. It works flawlessly! I already had a native version for the M20 of this game, but it was a fun experience nonetheless.

Conclusion

This page describes my experiences building an Alternate Processor Board (APB) 8086 for the Olivetti M20. The rather unusual Z8001 processor is taken over by an 8086 processor that allows using MS-DOS. I needed to update the firmware of my machine, as the APB was not compatible with the version 1.0 that I had on my M20 BC. Overall the fabrication and the test were a sound success, and I could load the MS-DOS 2.0 and run a text adventure game I wrote.

Page Log