Close

The York University Computer Museum MCM/70E Emulator

A project log for MCM/70 Reproduction

I am making a full sized MCM/70 reproduction, a Canadian personal computer from 1974.

michael-gardiMichael Gardi 04/01/2022 at 16:066 Comments

So thanks to the hard working folks at York University, I have a great head start with this project, a working MCM/70 Emulator.  Not just working, but because it is intended for research purposes, an emulator "with high historical accuracy". From the MCM/70E web page:

In 2019, YUCoM offered its emulator of the MCM/70 as free software. The emulator is the result of an extensive study of the MCM/70 hardware and of a software recovery project that has preserved MCM software from approximately 100 digital MCM cassettes donated to the museum. It emulates the original MCM/70 hardware with 8Kbytes of RAM with high historical accuracy. In particular, the memory management as well as tape, keyboard, and display functionality are emulated accurately. The emulator operates under the original systems software and is using the original tape storage organization (reconstructed during the above mentioned software preservation project).


There is a great document, the MCM/70E Guide, that accompanies the software that tells you how to install and run the emulator.

MCM/70E is written in C and is available for Linux only at this time. It is delivered as source in a .tgz archive and must be compiled on the target machine. OpenGL and the GLUT utility toolkit are required for the emulator to compile.

My intention is to run the emulator on a Raspberry Pi 4. Unfortunately due to supply shortages it does not look like I will be able to obtain one in the near future (or maybe even longer). So in the interim I dug a Raspberry Pi 2 Model B out of my parts box to give the emulator a try.

I installed the latest Raspberry Pi OS (Version 11 (bullseye)) onto the Model B.  I then downloaded and exploded the MCM70E.tgz file that I obtained from York University creating a /MCM70E_v2.1_distr folder. From within that folder I executed the following commands:

sudo apt-get install freeglut3-dev
apt-get install libncurses-dev
gcc mcm.c -lGL -lglut -o mcm

Notice that in order to get the emulator to compile under Raspberry Pi OS I had to install the ncurses library in addition to the GLUT library. Then it's a simple matter of running the emulator.

./mcm

The emulator runs great with one caveat. On my Raspberry Pi 2 it only runs at about 20% of the speed of an actual MCM/70. At this point I am not too worried about that. On a Raspberry Pi 4 the emulation will run faster. Also I believe that much of the speed loss is due to the overhead of running OpenGL for the emulator's UI. When my reproduction is done there will be no need for the UI or OpenGL so I expect much better performance. If I'm wrong it's a problem for future me to resolve.

Update: I enabled the GL acceleration in Advanced Settings on the Pi but it made little difference. However adding the following gcc options (for the Raspberry Pi 2 specifically):

-mcpu=cortex-a7  -mfpu=neon-vfpv4

to the compile did improve the performance to be 33% of the speed of an actual MCM/70.  I'm confident that further tweaks can get us up to par. 

Discussions

stevenaughtonnsx11 wrote 02/20/2024 at 15:21 point

Developing and customizing an emulator to run on the Raspberry Pi is a great way to combine your interests in computer architecture and engineering. Unfortunately, the performance on the Raspberry Pi 2 is slower than expected, but this is expected due to the differences in processing power and architecture between the Raspberry Pi 2 and the MCM/70. However, your confidence in improved performance on the Raspberry Pi 4 is well founded. I just recently needed engineering help, I found https://edubirdie.com/engineering-help for this. Your willingness to solve possible future performance problems is an excellent approach to engineering work. Continue your research and development and you will be able to achieve impressive results.

  Are you sure? yes | no

Michael Gardi wrote 02/20/2024 at 15:25 point

For sure. When ported to the Pi 4 the emulator runs at about 2x the speed of the original.

  Are you sure? yes | no

David Turner wrote 02/19/2024 at 19:56 point

It is a future

  Are you sure? yes | no

stevenaughtonnsx11 wrote 02/19/2024 at 19:56 point

wow what is it?

  Are you sure? yes | no

Michael Gardi wrote 02/19/2024 at 20:29 point

For a more complete story click on the MCM/70 Reproduction link above.

  Are you sure? yes | no

Michael Kwun wrote 01/31/2023 at 18:58 point

I assume you've checked the value of emulator_speed in mcm.h, right? the higher its value, the slower the emulator runs

  Are you sure? yes | no