<?xml version="1.0"?>
<oembed><version>1.0</version><provider_name>MO5.COM</provider_name><provider_url>http://mo5.com/fr</provider_url><title>Reading and saving the Micral N's ROMs - MO5.COM</title><type>rich</type><width>600</width><height>338</height><html>&lt;blockquote class="wp-embedded-content" data-secret="b77xl4lJSz"&gt;&lt;a href="http://mo5.com/fr/reading-and-saving-micral-n-roms/"&gt;Reading and saving the Micral N&#x2019;s ROMs&lt;/a&gt;&lt;/blockquote&gt;&lt;iframe sandbox="allow-scripts" security="restricted" src="http://mo5.com/fr/reading-and-saving-micral-n-roms/embed/#?secret=b77xl4lJSz" width="600" height="338" title="&#xAB;&#xA0;Reading and saving the Micral N&#x2019;s ROMs&#xA0;&#xBB; &#x2014; MO5.COM" data-secret="b77xl4lJSz" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" class="wp-embedded-content"&gt;&lt;/iframe&gt;&lt;script type="text/javascript"&gt;
/* &lt;![CDATA[ */
/*! This file is auto-generated */
!function(d,l){"use strict";l.querySelector&amp;&amp;d.addEventListener&amp;&amp;"undefined"!=typeof URL&amp;&amp;(d.wp=d.wp||{},d.wp.receiveEmbedMessage||(d.wp.receiveEmbedMessage=function(e){var t=e.data;if((t||t.secret||t.message||t.value)&amp;&amp;!/[^a-zA-Z0-9]/.test(t.secret)){for(var s,r,n,a=l.querySelectorAll('iframe[data-secret="'+t.secret+'"]'),o=l.querySelectorAll('blockquote[data-secret="'+t.secret+'"]'),c=new RegExp("^https?:$","i"),i=0;i&lt;o.length;i++)o[i].style.display="none";for(i=0;i&lt;a.length;i++)s=a[i],e.source===s.contentWindow&amp;&amp;(s.removeAttribute("style"),"height"===t.message?(1e3&lt;(r=parseInt(t.value,10))?r=1e3:~~r&lt;200&amp;&amp;(r=200),s.height=r):"link"===t.message&amp;&amp;(r=new URL(s.getAttribute("src")),n=new URL(t.value),c.test(n.protocol))&amp;&amp;n.host===r.host&amp;&amp;l.activeElement===s&amp;&amp;(d.top.location.href=t.value))}},d.addEventListener("message",d.wp.receiveEmbedMessage,!1),l.addEventListener("DOMContentLoaded",function(){for(var e,t,s=l.querySelectorAll("iframe.wp-embedded-content"),r=0;r&lt;s.length;r++)(t=(e=s[r]).getAttribute("data-secret"))||(t=Math.random().toString(36).substring(2,12),e.src+="#?secret="+t,e.setAttribute("data-secret",t)),e.contentWindow.postMessage({message:"ready",secret:t},"*")},!1)))}(window,document);
//# sourceURL=http://mo5.com/wp-includes/js/wp-embed.min.js
/* ]]&gt; */
&lt;/script&gt;
</html><thumbnail_url>https://mo5.com/wp-content/uploads/2022/08/MicralN-ROM.jpg</thumbnail_url><thumbnail_width>750</thumbnail_width><thumbnail_height>563</thumbnail_height><description>By Sylvain Glaize. Translation by S&#xE9;bastien Marty. It is on April 5, 2021 that the very important dump session, i.e. the reading and saving of the Micral N&#x2019;s ROMs, took place. These EPROMs are so old and the manufacturing density so low that it is possible to make out the individual storage transistors. Looking into their technology, we learn that the electrical voltage needed to program these EPROM chips is 47 volts, which is huge compared to today&#x2019;s standards. This very large potential difference may have protected the contents of the chips, and we will make sure of this right away. Note that these EPROMs are NMOS components (https://en.wikipedia.org/wiki/NMOS_logic), same as the 8008 and some of the machine&#x2019;s SRAM chips. These components require a dual voltage supply (+5V and -9V) &#x2013; i.e. different logic levels than typical TTL levels. Jean-Fran&#xE7;ois Del Nero prepared a specific device beforehand which, being adapted to these levels, will allow us to read these EPROMs. In addition, it also allows us to test all the RAM chips in the machine. These RAMs (2102 and 4007 SRAM chips) turn out to be in good working order, except for one that we replaced with a 2102A chip. The sources and schematics for this tool are available on this Github repository &gt;&gt;&gt;Sources here &nbsp; Everything is going wonderfully. The contents of the EPROMs are saved! Jean-Fran&#xE7;ois and Philippe immediately send me the contents fresh out of the &#x201C;dumper&#x201D;. The first step is to verify that the contents is correct. Indeed, those bytes have been stored for years on EPROMs. They may have been altered. There are two different ROMs, one is 256 bytes, the other 2 kilobytes. Might as well start with the shortest. 256 bytes is not very long to look over. The First ROM Straight away, hope for executable data is allowed. Indeed, the first two decoded instructions are LAA and JMP $0048. These mnemonics hide an 8008 processor startup sequence, which is a very good sign! LAA stands for &#x201C;Load from register A to register A&#x201D;, in other words, &#x201C;load the contents of register (a piece of processor memory) A to register A&#x201D;. This has no visible effect on the state of the processor and is the convention for telling the 8008 to&#x2026; do nothing interesting. An equivalent mnemonic on other processors is NOP, for &#x201C;No OPeration&#x201D;. This instruction is usually the first one fed to an 8008 which has just started. Indeed, due to the way it operates, the processor will execute this instruction twice. Conventionally, the choice falls on an instruction which has no visible effect. The second instruction, JMP $0048, is a jump to the specified address which is located further away, after a set of reserved addresses. This too is a classic instruction, also found on Z80-based machines &#x2013; a processor with the same first reserved addresses, showing therefore a direct line of descent. What&#x2019;s next ? From address `$0048` onwards, we find what looks like a program. After a bit of work and jotting down some first notes, I&#x2019;m pretty confident this program hasn&#x2019;t been damaged. It seems to form [&hellip;]</description></oembed>
