{"version":"1.0","provider_name":"MO5.COM","provider_url":"http:\/\/mo5.com\/fr","title":"Lecture et sauvegarde des ROMs du Micral N - MO5.COM","type":"rich","width":600,"height":338,"html":"<blockquote class=\"wp-embedded-content\" data-secret=\"o1l41rxo0c\"><a href=\"http:\/\/mo5.com\/fr\/lecture-et-sauvegarde-des-roms-du-micral-n\/\">Lecture et sauvegarde des ROMs du Micral N<\/a><\/blockquote><iframe sandbox=\"allow-scripts\" security=\"restricted\" src=\"http:\/\/mo5.com\/fr\/lecture-et-sauvegarde-des-roms-du-micral-n\/embed\/#?secret=o1l41rxo0c\" width=\"600\" height=\"338\" title=\"\u00ab\u00a0Lecture et sauvegarde des ROMs du Micral N\u00a0\u00bb &#8212; MO5.COM\" data-secret=\"o1l41rxo0c\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\" class=\"wp-embedded-content\"><\/iframe><script type=\"text\/javascript\">\n\/* <![CDATA[ *\/\n\/*! This file is auto-generated *\/\n!function(d,l){\"use strict\";l.querySelector&&d.addEventListener&&\"undefined\"!=typeof URL&&(d.wp=d.wp||{},d.wp.receiveEmbedMessage||(d.wp.receiveEmbedMessage=function(e){var t=e.data;if((t||t.secret||t.message||t.value)&&!\/[^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<o.length;i++)o[i].style.display=\"none\";for(i=0;i<a.length;i++)s=a[i],e.source===s.contentWindow&&(s.removeAttribute(\"style\"),\"height\"===t.message?(1e3<(r=parseInt(t.value,10))?r=1e3:~~r<200&&(r=200),s.height=r):\"link\"===t.message&&(r=new URL(s.getAttribute(\"src\")),n=new URL(t.value),c.test(n.protocol))&&n.host===r.host&&l.activeElement===s&&(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<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);\n\/\/# sourceURL=http:\/\/mo5.com\/wp-includes\/js\/wp-embed.min.js\n\/* ]]> *\/\n<\/script>\n","thumbnail_url":"https:\/\/mo5.com\/wp-content\/uploads\/2022\/08\/MicralN-ROM.jpg","thumbnail_width":750,"thumbnail_height":563,"description":"Par Sylvain Glaize. C&#8217;est le 5 avril 2021 qu&#8217;a lieu la tr\u00e8s importante session de dump, ou lecture et sauvegarde, des ROMs du Micral N. Ces EPROMs sont tellement anciennes qu&#8217;il est possible de voir les transistors de stockage tant la gravure est grossi\u00e8re. En nous renseignant sur leur technologie, nous apprenons que la tension \u00e9lectrique n\u00e9cessaire pour programmer ces EPROMs est de 47 volts, ce qui est \u00e9norme par rapport aux standards actuels. Cette tr\u00e8s importante diff\u00e9rence de potentiel a peut-\u00eatre prot\u00e9g\u00e9 le contenu de ces EPROMs, et nous allons nous en assurer tout de suite. \u00c0 noter que ces EPROMs sont des composants NMOS (https:\/\/fr.wikipedia.org\/wiki\/NMOS), comme le 8008 et certaines SRAMs de la machine. Ces composants\u00a0n\u00e9cessitent une alimentation bitension +5V et -9V, des niveaux logiques diff\u00e9rents des niveaux TTL classiques. Jean-Fran\u00e7ois Del Nero a pr\u00e9par\u00e9 en amont un appareil sp\u00e9cifique qui, en \u00e9tant adapt\u00e9 \u00e0 ces niveaux, va nous permettre de lire ces EPROMs. Cet outil permet, en plus de permettre la lecture de ces EPROMs 1702, de tester l&#8217;ensemble des m\u00e9moires RAM de la machine. Ces RAM (SRAMs 2102 et 4007) sont d&#8217;ailleurs en bon \u00e9tat de fonctionnement, \u00e0 part une que nous rempla\u00e7ons par une 2102A. Les sources et le sch\u00e9ma de cet outil sont disponibles sur ce d\u00e9p\u00f4t Github : &gt;&gt;&gt;Sources ici &nbsp; Tout se passe \u00e0 merveille. Le contenu des EPROMs est sauv\u00e9 ! Jean-Fran\u00e7ois et Philippe m&#8217;envoient imm\u00e9diatement le contenu fra\u00eechement sorti du \u00ab dumper \u00bb. La premi\u00e8re \u00e9tape est de v\u00e9rifier que le contenu est correct. En effet, ces octets ont \u00e9t\u00e9 stock\u00e9s pendant des ann\u00e9es sur des EPROMs. Le contenu a pu \u00eatre alt\u00e9r\u00e9. Il y a deux ROMs diff\u00e9rentes, l&#8217;une de 256 octets, l&#8217;autre de 2 kilo octets. Autant commencer par la plus courte. 256 octets, \u00e7a n&#8217;est pas tr\u00e8s long \u00e0 parcourir. La premi\u00e8re ROM Imm\u00e9diatement, l&#8217;espoir de donn\u00e9es ex\u00e9cutables est permis. En effet, les deux premi\u00e8res instructions d\u00e9cod\u00e9es sont LAA et JMP $0048. Sous ces mn\u00e9moniques se cache une s\u00e9quence de d\u00e9marrage de processeur 8008, c&#8217;est tr\u00e8s bon signe ! LAA signifie \u00ab Load from register A to register A \u00bb, autrement dit, \u00ab charge le contenu du registre (un morceau de m\u00e9moire du processeur) A vers le registre A \u00bb. Ce qui n&#8217;a pas d&#8217;effet visible sur l&#8217;\u00e9tat du processeur et est la convention pour indiquer au 8008 de&#8230; ne rien faire d&#8217;int\u00e9ressant. Un mn\u00e9monique \u00e9quivalent sur d&#8217;autres processeur est NOP, pour \u00ab No OPeration \u00bb. Cette instruction est g\u00e9n\u00e9ralement la premi\u00e8re instruction que l&#8217;on pr\u00e9sente \u00e0 un 8008 qui vient de d\u00e9marrer. En effet, du fait de son fonctionnement, le processeur va ex\u00e9cuter cette instruction deux fois. Conventionnellement, le choix se porte sur une instruction qui n&#8217;a pas d&#8217;effet visible. La seconde instruction JMP $0048 est un saut vers l&#8217;adresse indiqu\u00e9e, qui se trouve plus loin, apr\u00e8s un lot d&#8217;adresses r\u00e9serv\u00e9es. C&#8217;est l\u00e0 aussi une instruction classique, que l&#8217;on retrouve sur des machines \u00e0 base de Z80, qui pr\u00e9sente les m\u00eames premi\u00e8res adresses r\u00e9serv\u00e9es, r\u00e9v\u00e9lant une filiation. Et la suite ? \u00c0 partir de l&#8217;adresse `$0048`, cela ressemble \u00e0 un programme. Apr\u00e8s un peu de travail [&hellip;]"}