2016 - 5 - 23 : Emulator on the Arduino Blog of Adafruit.com

Emulator on the Arduino Blog of Adafruit Emulator on the Arduino Blog of Adafruit - 2

I have no idea how this happened, but somehow the Mega Emulator also became a featured project on the Arduino blog of Adafruit.com in the "Arduino Monday" series :-) Seems they are working closely with Hackaday.io. I did not announce it to them in any ways, but I am flattered by the publicity. After all, the Emulator is using a couple of Adafruit components - the LED backpacks, the Emic 2, and so on.


2016 - 5 - 14 : Playing with KiCad

I am musing about the idea of producing a PCB (printed circuit board) for the emulator project, such that mass production in China can start soon ;-) First step is to learn how to draw schematics in KiCad. These are my first schematics ever - a black and white version, and a color version. Not sure how difficult it will be to make it into a PCB. Interesting idea, though. The front panel elements (buttons, LEDs, etc.) will probably have to go on separate PCBs, such that the whole thing can be mounted without all the wires required for the prototype.


2016 - 5 - 10 : The Emulator is "Featured Project" at Hackaday.com

Featured Project at Hackaday.com
The Project at Atmel Makes Tweat

The Talking Microtronic Mega Computer System Emulator is a "Featured Project" at Hackaday.com :-) If my understanding is correct, it stays "featured" on the front page of Hackaday.com for about a week. Before that, the project had also shown up on the "Atmet Makes" tweat.

The Hackaday.io project page will continue to exist. This page also contains some more general information about the Microtronic, i.e., I documented the 2090 instruction set, as the only source of documentation so far was in German (the Microtronic Manuals). Thanks to Kay Hidde, who saved the the whole Hackaday featured page as one single PDF for my archive.


2016 - 4 - 9 : Single Step (STEP) and Breakpoint (BKP) Functionality implemented

I have finally added the breakpoint and single step functionality to the emulator (function keys BKP and STEP). As usual, the latest code of the Mega Emulator Version 3.2 is on GitHub. Goodbye, Microtronic Mega Emulator, we had a great time together!


2016 - 4 - 1 : A Talking Microtronic Emulator - Mega Emulator Version 3

Mega Emulator Version 3 - A speaking Microtronic - 1
Mega Emulator Version 3 - A speaking Microtronic - 2

Three months after I started this project, I have probably reached the end of this effort, with the release of Microtronic Mega Emulator Version 3. This version has a built-in Emic 2 Speech Synthesizer Module. The Emic 2 echos back function key and HEX keypad presses, confirms user actions, describes the emulator status, can read the display contents to the user, etc. Wanna get a quote from Microtronic umm HAL 9000? Just press the right red button under the display (backspace button). Need an answer from the Magical Eight Ball? Use the left red button (cancel button). Also, the clock program PGM 4 uses the speech synthesizer- the current time is spoken with a press of the right yellow cursor key under the LCD. When entering a program, the current address, mnemonic of the current instructions, register contents etc. can be spoken - watch the YouTube video of the talking Microtronic computer.

Mega Emulator Version 3 - A speaking Microtronic - 3

I had a lot of trouble finishing Version 3. Using more and memory for strings for storing Emic 2's utterances, I ran into very unstable system behaviors. After a lot of trial and error and some debugging hours it turned out that Arduino's String library was one source of troubles, and the other one was the SDCard library. Both produce memory leaks. Strings can be created comfortably with the String library, and it provides many convenient string manipulation functions such as concatenation, substring ranges etc., but there is no way to release the memory allocated dynamically for strings, and no garbage collection. What's worse, the SDCard library also uses the String library, and simply crashes after being used for a while, leaving you with no trace what so ever went wrong. I regained system stability by removing all references to the String library, and also replaced the SDCard library with the SdFat library. This fixed all stability problems, and the emulator runs stable for hours now.

The Emic 2 has a built-in amplifier, which is surprisingly powerful. The volume can be set with an Emic command. I connected this little Uniden external HAM radio speaker to it, and the voice is clear and loud. That way, no USB-powered speaker is required.

In order to enable the built-in Emic to speak arbitary sentences like the external Emic that I had reported about here before, I added some "extra meaning" to the MOV instruction. Obvously, one wants to be able to just sent an ASCII character to the Emic without having to go through the digital outputs, cables and the additional Arduino Uno on the receiver side, which acted as a byte buffer, BAUD converter and hence, an intelligent interface to the Emic 2. This was achieved as follows. First, a MOV xx / Oxx instruction is basically meaningless, as it merely copies the content of register x onto itself, no meaningful Microtronic program uses them. Hence, I gave MOV xx an additional effect / meaning, namely to also transfer the half-byte / nibble x to the Emic. An ASCII character in decimal coding xy is thus transmitted via the sequence MOV xx, MOV yy / 0xx, 0yy, and more is not required in order to make the Emic 2 speak arbitrary sentences. This is demonstrated in this video. How many characters fit now? Much more than with the external approach... in order to speak a sentence, the Emic first needs a heading S character, and then the text followed by a trailing CR character. The 256 words of Microtronic program memory are hence good for 126 characters. One advantage of the external Emic 2 about which I before is that it can be connected to a real Microtronic, though.


2016 - 3 - 20 : A Speech Synthesizer for the Microtronic (Emulator)

Microtronic Speech Synthesizer 1
Microtronic Speech Synthesizer 2

The Emic 2 Speech Module / Speech Synthesizer was sitting on my desk for quite a while now. I finally found some time to realize the Microtronic Speech Synthesizer with it. As I had mentioned previously on this blog, a Speech Module was announced for the Busch Microtronic in the Manual Vol. 1, page 77, in 1981. The Speech Module never got released by Busch (which I don't find too surprising I have to say ;-) ) So, 35 years after that module was announced, you can finally hear the Microtronic speaking with its new Emic 2-based voice, and this also works with the emulator.

One challenge in connecting the Emic 2 to the Microtronic was posed by the different interfaces - whereas the Emic 2 has a serial line with 9600 baud, the Microtronic has 4 digital outputs (at 40 bauds or smaller)... I looked into using hardware (shift registers and buffers, UARTs etc.) for making the Microtronic talk to the Emic 2, but it all seemed much more complicated than simply employing another Arduino Uno acting as a byte buffer and converter. So I did that. I connected the four digital outputs of the Microtronic to the digital Arduino Uno inputs and tried to read some data from this primitive 4-bit wide "data bus". That turned out to be challenging - for some reason, the nibbles I read from the digital ports were unstable, especially when the output changed. I used a counter as a test program, and I would see readings such as 0, 1, 3, 2, 3, 5, 4... I tried to tweak the readings with delays and timings (make sure that a value is read constantly for at least <n> microseconds before returning it etc.), but it was still shaky. Also the digital inputs are very slow to read on the Arduino. I found solutions on the web for solving this problem (reading the PORTB register directly), but still the signals were unstable. I then ended up using the analog inputs of the Arduino, and I did my own threshold-based analog-to-digital conversion. That way I could get reliable readings of fast changing nibbles from the Microtronic "data bus".

The next step was to design a little data exchange protocol. The protocol must allow me to send a stream of ASCII characters to the Arduino, which would assemble a string from them, and send this string off to the Emic 2 via 9600 baud over serial IO, which will then speak that ASCII text string. One problem in designing such a "data exchange protocol" is obviously synchronization. Handshaking is too complicated and costly on the Microtronic side, especially since the thing is so slow, and serial data requires exact timings, start-and-stop bits, or hardware flow control, etc. All very complicated to implement. I figured I wanted a simple "self-clocked" data transmission protocol such that the data / flow synchronization problem does not present itself in the first place. I can transmit one ASCII character by sending two nibbles, and use a '0' after each nibble as the clock. That also means that I am then not allowed to send '0' as data, for any of the nibbles. I solved this by splitting the decimal ASCII encoding of a character into two nibbles, and by adding 1 to each, so '0' never occurs. The first nibble encodes decimal place values hundred and ten (hence, for ASCII codes from 32 to 127 this nibble will have values from 4 to 13 / Hex D), and the second nibble encodes decimal place value one (hence, this nibble will have values from 1 to 10 / Hex A). For example, for 'z' = 122 in decimal ASCII, 'D-0-3-0' will be sent. The Arduino decodes this back into 'z', and puts into a string buffer, until CR 13 is received. This works for all relevant ASCII characters - the Emic 2 needs CR 13 and obviously all characters from 32 to 127. Problem solved. However, timing on the Arduino side was still tricky, but in principle, the protocol is self-clocked.


2016 - 3 - 4 : Interfacing Microtronic Mega Emulator V2 with Busch Electronic Circuits

Sound Generator Busch Electronic Kit 1
Sound Generator Busch Electronic Kit 2

In order to check whether the emulator was really compatible with the electronic circuits build up from the original Busch electronic kits I had ordered a brand-new Busch electronic studio "Profi 6000" from Amazon - it got shipped to the US, and arrived surprisingly fast after five days. I then rebuilt the original sound generator from Busch Microtronic manual Vol. 2, page 55, and it worked, as shown in this YouTube video, but the pitch is off quite a bit, so it sounds quite detuned. I have to try this also with the original Microtronic and check if it makes a difference, or if it is as good as it gets with fixed resistor values for the DA converter / resistor ladder. Well, at least it works in principle, which is good news. Previously, I had only connected a 555-based sound generator on a breadboard successfully.

Pullup Resistors and Diodes 1
Pullup Resistors and Diodes 2

Since the Arduino is being powered by a strong enough external PSU, there is no need for a 9V battery in the experiments, and the 9V and GND cables were used instead. On the Arduino side, I also had to put in signal diodes at the outputs in order to prevent leakage currents. In addition, I had to switch the inputs to INPUT mode instead of INPUT_PULLUP, since the Busch experiments won't work with inverted logic. So I added 4 pulldown resistors (each 10 kilo Ohms) to the little circuit board which also holds the signal diodes for the outputs, as seen in the pictures on the right. I have tested the inputs and outputs by connecting cables from 1 Hz clock to inputs, and also output to input, and I could successfully read the correct bits from the digital inputs corresponding to the outputs and 1 Hz clock signal.


2016 - 2 - 28 : Microtronic Mega Emulator Version 2 - Now with Case

Busch
 Microtronic 2090 Emulator for Arduino Mega 2560 with Case
Busch
 Microtronic 2090 Emulator for Arduino Mega 2560

I mused about the idea of putting the Microtronic Mega Emulator into a case for quite a while. It is done! Here is the YouTube video of the emulator in a case. After a couple of fruitless attempts to precisely cut out a decent face plate on my own with a scroll saw and plywood, I finally admitted to myself that this might be a job for a professional. I hence designed a face place blueprint and sent it to a custom laser-cutting production service: Pololu. These guys did a terrific job; the quality of the 4 faceplates (2 in blue acrylic, 2 in iced transparent acrylic) is fantastic. The material is thick (3 mm strong), not wobbly at all, and it took only 5 days from order to delivery. Price: 70 $. I can highly recommend that service, it is awesome!

Busch  Microtronic 2090 Emulator for Arduino Mega 2560 with Case
Busch
 Microtronic 2090 Emulator for Arduino Mega 2560

The next step was to redesign the hardware of the emulator. The backpacks I used for the previous version are great for prototyping, but they are unwieldy to put into a case. Hence, I had to replace the LCD+Keypad shield with a discrete LCD display and discrete N.O. momentary push buttons for the SD card file operations such as directory browsing and file creation, and I also wanted the display to be bigger. Hence I ordered a 4x20 white-on-blue Hitachi HD44780 display with backlight. Previously, I had used the TM1638 8digit 7segment display with 8 LEDs and 8 push buttons. The buttons were used as Microtronic function keys, so they had to be replaced, too. I added a second 4x3 telephone keypad to the system, this time non-matrix encoded as I still had one lying arround. This takes up some more PINs on the Arduino side though - but hey, why not use most of the 54 Arduino digitial pins, and even more, since also the analog pins can be converted into digital pins! The 8digit 7segment display got replaced with two 'intelligent' blue Adafruit 4digit 7segment display backpacks. What a nice blue color! All this is much easier to fit into a case / face plate, but requires a lot of wires and soldering. The LEDs on the TM1638 module were replaced with ultra-bright LEDs in blue, green, and pink, together with matching resistors to limit the current. As previously, these LEDs display the status of the 4 digital outputs of the Microtronic (set by the DOT op-code), as well as the carry and zero flag, a 1 Hz clock LED, and I also added a CPU heart / blinking light, indicating the speed of the emulation (which is controlled with the CPU throttle potentiometer on the right; the left potentiometer controls the LCD display contrast). Overall cost of material: about 300 $, and approx. 20 hours of work. But it was totally worth it, I had a lot of fun assembling it! I am glad it is done now, though - sorry, family, it will get better now, I promise :-)

Busch
 Microtronic 2090 Emulator for Arduino Mega 2560 with Case

You might ask whether I forgot to put some more LEDs into the additional holes in the front place? These are reserved for cables to be passed through. There are four additional digital input and four additional digital output pins reserved for that purpose on the Arduino board, so one pair of input / output cables per hole. Then, the three remaining holes on the right are for GND, 9V VCC, and 1 Hz clock. This is all what is required to reproduce the electronic experiments / circuits from the Busch manuals. The digital inputs will need additional pull-down resistors though to work correctly - the Arduino features internal pull-up resistors, but no pull-down resistors. With pull-up resistors, the logic levels of the inputs are inverted. One demonstration of how to connect additional circuitry to the digital outputs is this 555-based sound generator. It uses the old mega emulator, but the same thing will also work with version 2.


2016 - 1 - 30 : OCR Scanning of Programs from the Manuals for Microtronic Emulator, Bugfixes to MULT and DIV Instructions

The Microtronic software library is growing fastly, thanks to the Abby Screen Reader, which allows me to convert the machine code listings from the Microtronic manuals to text files for the emulator effortlessly. Abby Screen Reader runs in the Windows tray next to the clock. I can open a text editor, select a rectangular region on the screen with the mouse. The text in that region is input to the OCR, and the recognized text is put into the clipboard. Then I can simple paste it into the text editor via Ctrl-v. The recognition is very accurate; occassionally, I am getting a Q or O instead of a 0, an I instead of a 1, and a P instead of a D, but other than this it is almost perfect (less than 1 percent of such errors). I had also tried out some other open-source and freeware solutions, but none were working as smoothly and perfect as Abby Screen Reader. Great program! I should soon have all the programs from the Microtronic manuals in the GitHub.

It was when I tested the (trigonometric) Sinus calculator from Manual 2 that I realized something was wrong... the results were inaccurate and quite off, not at all what was documented in the Manual. It took me a while to realize that the sinus program could only achieve the desired, documented result if the multiplication instruction MULT F0B does something extra, and something not documented - it has to set the extra-registers 0-5 to zero (and perhaps more than those?) This is nowhere mentioned in the manuals, but it is clear that it has to be the case, because the division by six via MOVI 160 and DIV F0C at addresses 17 and 18 will only work properly if MULT FOB at address 15 had set the extra-registers 1 to 5 to zero, which are swapped with the working registers via EXRL FOD at address 16 before the division. Without the extra-registers not being cleared as a side-effect of MULT FOB at address 15, it will divide by xxxxx6 instead of 000006.

I have made that change, and found another bug - the manual claims that it is an error if the numerator or denominator is zero in a division, and that carry is set then. This certainly makes sense if the denominator is zero, but not for the numerator. I changed that - dividing zero by x now returns zero, not error, and carry is NOT set. In addition with the other changes, I was then getting the documented output for the sinus calculator.

It seems that "reverse engineering" is difficult - I would not have expected that, as the Microtronic instruction set is documented very accurately and completely. Still, this level of detail is not enough in order to get a working emulator. So far I found one error, and two critical omissions in the documentation which have to be implemented / fixed in order to get a working emulator.

As always, the changes were uploaded to the GitHub repository. I consider playing Tic Tac Toe and successful sinus calculation another milestone :-)


2016 - 1 - 23 : First Fully Functional Version of Arduino Mega Emulator

Busch
 Microtronic 2090 Emulator for Arduino Mega 2560
Busch
 Microtronic 2090 Emulator for Arduino Mega 2560

The Microtronic Arduino Mega Emulator passed two more milestones today. Load and Save Program via PGM 1 and PGM 2 to SDCard is working now, and I played my first round of Lunar Lander!

Busch
 Microtronic 2090 Emulator for Arduino Mega 2560
Busch
 Microtronic 2090 Emulator for Arduino Mega 2560

I implemented a simple filename editor for save, and a simple directory browser on the LCD display for load. Then, I typed in the Lunar Lander program and saved it (LUNAR.MIC). The file names are DOS 8+3, and CR+LF end-of-line coding, just simple text. That way it is possible to edit and create them on the PC with a simple text editor, save them to SDCard, and load them into the emulator. Trying to get Lunar Lander to work I also uncovered some bugs (as expected), this time in the implementation of the DISP op code, and fixed that. Since Lunar Lander is a big program using most of the 2090's instruction set, I am confident that there are not a lot of remaining bugs to be found in the emulator. Playing Lunar Lander after 33 years again was fun - watch the YouTube video here.

It seems that there is bug in the SDCard library though. For some reason, the emulator requires a reset before loading another program, i.e., the second call to PGM 1 fails, and a lot of crazy characters appear on the display, after which the Arduino crashes. Something wrong with the memory management? The next two pictures are showing the op-code display, and the register content status page.

Busch
 Microtronic 2090 Emulator for Arduino Mega 2560
Busch
 Microtronic 2090 Emulator for Arduino Mega 2560

So, what's next? I would like to implement some "real" digital outputs next. The Arduino Mega still has plenty of digital IO pins left. Currently, the status of the digital output ports is visualized by the LEDs of the LED module only, as set by the digital output instruction (the FEs / DOT op-code). Connecting the Speech Synthesizer to these ports, or the little transistor oscillator sound module from Microtronic Manual Vol. 2 page 52 will be fun, and would be a good first application for the digital outputs. I need to get some parts from Fry's electronics :-)


2016 - 1 - 20 : Busch 2090 Microtronic Arduino MEGA 2560 Emulator

Busch
 Microtronic 2090 Emulator for Arduino Mega 2560
Busch
 Microtronic 2090 Emulator for Arduino Mega 2560

Ported the emulator to the Arduino Mega 2560 - and here is the YouTube video. Now I have enough SRAM to add the LCD+Keypad shield and SDCard (plus Ethernet) shield. The LCD display can be useful for debugging, i.e., showing the current instruction and PC when a program is running as shown in the above video, or for displaying the realtime contents of the 16 4bit registers (plus the 16 extra registers - it has 2 lines of 16 characters! perfect!)

Busch
 Microtronic 2090 Emulator for Arduino Mega 2560
Busch
 Microtronic 2090 Emulator for Arduino Mega 2560

The SDCard can already be read and written to. Finally, unlimited program memory for potentially ALL the Microtronic programs in the world that have ever been written! Will start putting in Lunar Lander and friends soon.

Busch
 Microtronic 2090 Emulator for Arduino Mega 2560

Please notice that getting the SDCard shield and the LCD+Keypad shield to work in combination requires a trick - disconnet PIN 10. Using Arduino extensions headers as shown does the trick. The headers are required for this setup anyways, as the Ethernet RJ45 female jack is too high to allow another shield on top without extension.

I will update the source code on the GitHub page soon, or, rather, create a new repository for the Mega branch of the emulator.


2016 - 1 - 19 : Busch 2090 Microtronic Arduino Emulator - PGM 3 and PGM 4 Clock Programs implemented

The real time clock of the Microtronic Arduino emulator is now working. This YouTube video demonstrates PGM 3 (set time) and PGM 4 (show time). Notice how the clock keeps running in the background while playing (and losing) two rounds of the Nim game (PGM 7).


2016 - 1 - 18 : Busch 2090 Microtronic Arduino Emulator - Nim Game and EEPROM PGM Storage

Busch
 Microtronic 2090 Emulator on Arduino Uno R3

Another update and bugfixes to the Microtronic Arduino Emulator. Thanks to Martin Sauter, from whom I got the PGM 7 Nim Game machine code! He retrieved it from his real Microtronic (my Microtronic is still in Hamburg, Germany). See it playing the Nim game with me. Also, I moved the PGM Microtronic ROM programs into the EEPROM of the Arduino. This freed a lot of memory and I am no longer getting the "low memory warning"s during compilation of the emulator. Now, in order to use the emulator, another sketch must be loaded into the Uno first - load PGM-EEPROM.ino first, which stores the PGM examples into EEPROM. The busch2090.ino emulator read the PGM ROM programs from there, and it won't initialize properly if the EEPROM has not been set up properly by PGM-EEPROM.ino first.


2016 - 1 - 16 : Digital Inputs, Reset Button, and CPU Throttle for Microtronic Emulator

Busch Microtronic 2090 Emulator on Arduino Uno R3

A small update to the Microtronic Arduino emulator. Added a reset button, and digital inputs are now read by the DIN FDx instruction. Also added a CPU throttle potentiometer. Here is another YouTube video.

Busch
Microtronic 2090 Emulator on Arduino Uno R3

I tried putting the Lunar Lander code into PGM ROM, but failed, since this requires at least 396 bytes, or even 528 bytes if I use the program as a string method with spaces between instructions (e.g., "F01 501 C00 ") for readability. The Uno only has 2 KBs of SRAM. It is of course possible to type in the Lunar Lander program by hand, but I have currently no way of storing programs (I want to add an SDCard shield). The EEPROM might be perfect for storing one complete memory dump (1 KB), but it is not good enough for multiple big programs. I could reorganize the memory, such that only 12 bits per word were used instead of 32 as currently - but it is still not enough memory.

Busch
Microtronic 2090 Emulator on Arduino Uno R3

In fact there is enough PROGMEM / flash memory (32 KBs) to store the Lunar Lander, and even a number of other big programs, but the Arduino cannot access the PROGMEM directly. Rather, one needs to retrieve the PROGMEM content into a string buffer first, and go from there. That string buffer has to be in SRAM, and obviously as long as the longest program (ideally, 1 KB, or, with 12 bit words, at least 768 bytes). I don't have that much SRAM space, though.

The easiest solution is to move forward to the Arduino Mega 2560, which has 4 times more SRAM than the Uno (8 KBs). That will be more than enough space, even with the current Microtronic memory organization, and I can comfortably fit in Lunar Lander and the Nim game then (and probably some more programs). Also, the additional drivers required for the yet-to-add SDCard shield and LCD module will need more memory anyways. So, going with the Mega 2560 seems to be the right thing. I have ordered one. Stay tuned, more to come.


2016 - 1 - 13 : Homebrew Busch Microtronic 2090 Emulator on Arduino Uno R3

Busch Microtronic
2090 Emulator on Arduino Uno R3

Got some time recently to tinkertoy with Arduino Uno R3. I always wanted to build a Busch Microtronic 2090 Emulator, preferably in hardware. This 4bit educational single board computer was my first machine, on which I learned programming. Here is a first version of the emulator on GitHub, and I also uploaded a YouTube video where you can see it in action.

Busch Microtronic
2090 Emulator on Arduino Uno R3

Compared to the original Microtronic, there are a couple of advantages, e.g., the display has 8 digits instead of 6, and I can use this to indicate the status of the machine. Unlike the original, I have a cursor, indicated by blinking digit. An other advantage is a real stack (of depth 10 currently) - the original Microtronic could not have nested subroutines, apparently they had a single subroutine program counter return register instead of a real stack.

Busch
Microtronic 2090 Emulator on Arduino Uno R3

However, my emulator also has a couple of drawbacks currently, which I am still working on. Save and load to tape / cassette is obviously difficult, and it might make more sense to simply add an SDCARD shield to the Arduino for that. Some other functionality is missing as well. The original Microtronic had digital inputs for hardware projects - I might be able to use the leftover Arduino pins D3 - D0 for that. Also, the reset button of the Arduino kills the Microtronic program memory, so I will have to add a reset button which only clears the Microtronic registers. Moreover, the internal clock is not working yet, and neither are the breakpoint and stepping functions for debugging. And then there is testing and more testing... all the op-codes are implemented, but I haven't checked them all yet. I will certainly find some more bugs when I start putting in Lunar Lander from the manual.

Next, some of the original programs which came with the Microtronic in ROM, e.g., the Nim game (PGM 7), are missing from my version, simply because I don't have a real Microtronic at hand currently, and the program listing for Nim is nowhere to be found in the Busch 2090 manuals. I am hoping somebody outside there will send me the code; in the meantime, I can put other programs into ROM, e.g. the lunar lander from the first manual is more fun for PGM 7 anyways.

It would also be cool to hook up the emulator with a Speech Synthesizer - I got this one recently, and can't wait to use it. The original Busch manual mentioned (in 1982?) that a Speech Synthesizer expansion board was under development, but it never got released by Busch. And I still like the idea of connecting a Hitachi HD44780 text display to the Microtronic.

So, plenty of project ideas. Given that the code is on GitHub, perhaps people from the community would like to contribute? Looking forward to hear from you!

Interestingly, from a performance point of view, it seems that the emulator reaches a similar processing speed like the original! Certain operations will be a lot faster, of course, e.g. the division of 9999 by 1 took 40 seconds on the original... Regarding memory requirements, I am noticing that the Uno is almost full. Increasing the stack depth from currently 10 to 255 entries already results in Arduino warnings regarding code instability during comilation, and they indeed show up at runtime then. So there isn't a lot of room for much more. Seems I am pretty much at the limit with what one can do with a little Uno R3. But then, the current implementation is also not very resourceful, wasting some memory, e.g. using 24 bits per machine word where 12 would have been sufficient, and so on. But then, I didn't want to spend days implementing that either (who has all that time).