{"id":583,"date":"2023-03-08T14:00:20","date_gmt":"2023-03-08T12:00:20","guid":{"rendered":"https:\/\/mo5.com\/micral\/?p=583"},"modified":"2023-03-14T11:02:49","modified_gmt":"2023-03-14T09:02:49","slug":"lecture-et-sauvegarde-des-roms-du-micral-n","status":"publish","type":"post","link":"https:\/\/mo5.com\/en\/lecture-et-sauvegarde-des-roms-du-micral-n\/","title":{"rendered":"Reading and saving Micral N ROMs"},"content":{"rendered":"<div id=\"pl-583\"  class=\"panel-layout\" ><div id=\"pg-583-0\"  class=\"panel-grid panel-no-style\" ><div id=\"pgc-583-0-0\"  class=\"panel-grid-cell\" ><div id=\"panel-583-0-0-0\" class=\"so-panel widget widget_sow-editor panel-first-child panel-last-child widgetopts-SO\" data-index=\"0\" ><div\n\t\t\t\n\t\t\tclass=\"so-widget-sow-editor so-widget-sow-editor-base\"\n\t\t\t\n\t\t>\n<div class=\"siteorigin-widget-tinymce textwidget\">\n\t<p><em>By Sylvain Glaize.<\/em><\/p>\n<p>The all-important Micral N ROM dump, or read and save session, takes place on 5 April 2021.<\/p>\n<p><div style=\"width: 1610px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/mo5.com\/micral\/wp-content\/uploads\/2022\/08\/IMG_20210405_135753.jpg\" alt=\"D\u00e9tail d'une des ROMs du moniteur du Micral N de l'association MO5\" width=\"1600\" height=\"555\" \/><\/p>\n<p class=\"wp-caption-text\">Detail of one of the monitor ROMs on the Micral N from the MO5 association<\/p>\n<\/div>\n<p>These EPROMs are so old that it's possible to see the storage transistors because the engraving is so rough. When we looked into their technology, we learned that the electrical voltage required to program these EPROMs was 47 volts, which is enormous by today's standards. This huge difference in potential may have protected the content of these EPROMs, and we're going to find out right away.<\/p>\n<p>Note that these EPROMs are NMOS components (<a href=\"https:\/\/fr.wikipedia.org\/wiki\/NMOS\">https:\/\/fr.wikipedia.org\/wiki\/NMOS<\/a>), such as the 8008 and some of the machine's SRAMs. These components require a +5V and -9V dual-voltage supply, with logic levels different from conventional TTL levels.<\/p>\n<p><div style=\"width: 1930px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/mo5.com\/wp-content\/uploads\/2022\/08\/set-de-travail-Copie.jpg\" alt=\"Dumper de ROM sp\u00e9cialement con\u00e7u par Jean Fran\u00e7ois Del Nero pour le Micral N\" width=\"1920\" height=\"532\" \/><\/p>\n<p class=\"wp-caption-text\">ROM Dumper specially designed by Jean Fran\u00e7ois Del Nero for the Micral N<\/p>\n<\/div>\n<p>Jean-Fran\u00e7ois Del Nero prepared a special device in advance which, by being adapted to these levels, will enable us to read these EPROMs. As well as reading the 1702 EPROMs, this tool will allow us to test all the machine's RAM memories. These RAMs (SRAMs 2102 and 4007) are in good working order, apart from one which we are replacing with a 2102A.<\/p>\n<p>The sources and schematics of this tool are available on this Github repository:<br \/>\n<a href=\"https:\/\/github.com\/jfdelnero\/TrucsEnVrac\/tree\/master\/EPROM_dumper_RAM_tester\">&gt;&gt;&gt;Sources here<\/a><\/p>\n<p><div style=\"width: 1930px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/mo5.com\/wp-content\/uploads\/2022\/08\/P1040172-Copie.jpg\" alt=\"Jean-Fran\u00e7ois \u00e0 l'\u0153uvre sur un plan de travail avec instruments de mesure\" width=\"1920\" height=\"555\" \/><\/p>\n<p class=\"wp-caption-text\">Jean-Fran\u00e7ois at work on a work surface with measuring instruments at Viveris Technologies.<\/p>\n<\/div>\n<p>&nbsp;<\/p>\n<p><div style=\"width: 1376px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/mo5.com\/micral\/wp-content\/uploads\/2022\/08\/eprom_dump.png\" alt=\"Le r\u00e9sultat d'un dump d'une des EPROMs\" width=\"1366\" height=\"648\" \/><\/p>\n<p class=\"wp-caption-text\">The result of a dump of one of the EPROMs<\/p>\n<\/div>\n<p>Everything works perfectly. The contents of the EPROMs are saved! Jean-Fran\u00e7ois and Philippe immediately sent me the contents fresh from the dumper.<\/p>\n<p>The first step is to check that the content is correct. After all, these bytes have been stored for years on <strong>EPROMs<\/strong>. The content may have been altered.<br \/>\nThere are two different ROMs, one of 256 bytes, the other of 2 kilobytes. We might as well start with the shorter one. 256 bytes isn't very long to go through.<\/p>\n<h1>The first ROM<\/h1>\n<p>Immediately, there is hope of executable data. In fact, the first two instructions decoded are <code>LAA<\/code> and <code>JMP $0048<\/code>.<\/p>\n<p>Underneath these mnemonics lies an 8008 processor boot sequence, which is a very good sign!<\/p>\n<p><code>LAA<\/code> means \" <em>Load from register A to register A<\/em> \"In other words, \"load the contents of register (a piece of processor memory) A into register A\". This has no visible effect on the state of the processor and is the convention for telling the 8008 to... do nothing interesting. An equivalent mnemonic on other processors is <code>NOP<\/code>for \" <em>No OPeration<\/em> \".<\/p>\n<p>This instruction is generally the first instruction presented to an 8008 that has just started up. Because of the way it works, the processor will execute this instruction twice. Conventionally, the choice is made for an instruction that has no visible effect.<\/p>\n<p>The second instruction <code>JMP $0048<\/code> is a jump to the indicated address, which is further away, after a batch of reserved addresses.<\/p>\n<p>This is also a classic instruction, found on Z80-based machines, which has the same first reserved addresses, revealing a filiation.<\/p>\n<h2>What next?<\/h2>\n<p>From the address `$0048`, it looks like a program. After a bit of work and a few first notes, I'm pretty sure this program hasn't been tampered with. It looks coherent.<\/p>\n<p>There is, however, one small point that deserves attention. In the reserved addresses mentioned above (the \" <em>Restart<\/em> \"used by the instruction <code>RST<\/code> and, on Micral N, by interrupts), only two contain anything coherent.<\/p>\n<p>The rest forms an incoherent whole, and looks more like a sequence of random bits.<\/p>\n<h2>A boot ROM<\/h2>\n<p>This point is similar to another: at the end of ROM processing, an instruction requests that the processor be restarted at address 0.<\/p>\n<p>The intuition is then to say that this ROM performs a boot operation, and then 'deletes', in the sense of hiding, to make way for something else.<\/p>\n<p>What tends to confirm this intuition is that ROM makes requests on its inputs\/outputs to acquire data from a peripheral. This data is then placed in memory, starting at address 0, after a checksum has been verified.<\/p>\n<p>It is therefore probably a boot program that will read a second program from an external source. A \" <em>boot loader<\/em> \".<\/p>\n<p>These intuitions would later be confirmed.<\/p>\n<h1>The second ROM<\/h1>\n<p>The second ROM is larger. 2048 bytes may seem small, but it's certainly not very big. Translating this content to get a fairly accurate idea of how it works is still a rather tedious task.<\/p>\n<p>But it's an exercise that I nevertheless find enjoyable.<\/p>\n<p>The first step is to find out where this ROM is located in memory. Here, the simplicity of the 8008 helps. The jump instructions all mention absolute addresses. One technique is to find a small loop of instructions and deduce a likely location.<\/p>\n<p>In fact, a loop will mention an address close to the jump instruction itself. Having chosen a probable address, all that remains is to confirm it with a pair of other loops.<\/p>\n<p>This ROM is therefore in <code>$3800<\/code>address, i.e. at the very end of the 8008's addressable memory space, which addresses a range of 16 kB between addresses <code>$0000<\/code> and <code>$3FFF<\/code>.<\/p>\n<h2>Initial spray<\/h2>\n<p>These exercises are a bit swimming at first. You have to find the ends of the threads, pull on them and see how the whole ball can be untangled.<\/p>\n<p>The ROM starts by saving the 8008 context in fixed addresses.<\/p>\n<p>Then continues by sending the ASCII code corresponding to a question mark to an external device. This doesn't seem like a coincidence... is there a dialogue going on with the outside world?<\/p>\n<p>I'm looking to see if there's any data recovery from the outside. Indeed, there is.<\/p>\n<h2>Monitor ROM<\/h2>\n<p>It's time to open the Micral N manual and take a look at the section describing the monitor, a program that allows you to perform generic operations, such as reading and displaying memory, loading data from a punched tape...<\/p>\n<p>And the manual indicates that it displays a question mark while waiting for a command. And the commands, of which there are many, all consist of a capital letter.<\/p>\n<p>Now it turns out that in a piece of ROM that doesn't look like instructions, these letters appear, separated by what could perfectly well be valid addresses in this ROM.<\/p>\n<p>After checking, these addresses are indeed entry points for routines.<\/p>\n<p>There was no longer any doubt, and the doubt was completely removed a few hours later: this was indeed the monitor as described in the manual.<\/p>\n<h1>Contribution of ROMs<\/h1>\n<p>Studying the ROMs was a crucial step in understanding the machine. The manual is not always very clear about how the Micral N works. What's more, it's a modular machine, which can have various configurations.<\/p>\n<p>These two ROMs have enabled us to start from a precise configuration, deduced from the addresses at which they are stored, as well as the input\/output ports used.<\/p>\n<p>This is the information I needed to use the emulator to model the beginnings of a functional and plausible Micral N configuration.<\/p>\n<p>We'll look at this in a later article.<\/p>\n<p>Don't forget to take part in the campaign to support our work! <a href=\"https:\/\/micral.mo5.com\">https:\/\/micral.mo5.com<\/a><\/p>\n<\/div>\n<\/div><\/div><\/div><\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>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;]<\/p>\n","protected":false},"author":329,"featured_media":20234,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"give_campaign_id":0,"footnotes":""},"categories":[1485,1502],"tags":[],"class_list":["post-583","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-micral","category-programmation"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Lecture et sauvegarde des ROMs du Micral N - MO5.COM<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/mo5.com\/en\/lecture-et-sauvegarde-des-roms-du-micral-n\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Lecture et sauvegarde des ROMs du Micral N - MO5.COM\" \/>\n<meta property=\"og:description\" content=\"Par Sylvain Glaize. C&#039;est le 5 avril 2021 qu&#039;a lieu la tr\u00e8s importante session de dump, ou lecture et sauvegarde, des ROMs du Micral N. Ces EPROMs sont tellement anciennes qu&#039;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&#039;ensemble des m\u00e9moires RAM de la machine. Ces RAM (SRAMs 2102 et 4007) sont d&#039;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&#039;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&#039;une de 256 octets, l&#039;autre de 2 kilo octets. Autant commencer par la plus courte. 256 octets, \u00e7a n&#039;est pas tr\u00e8s long \u00e0 parcourir. La premi\u00e8re ROM Imm\u00e9diatement, l&#039;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&#039;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&#039;a pas d&#039;effet visible sur l&#039;\u00e9tat du processeur et est la convention pour indiquer au 8008 de... ne rien faire d&#039;int\u00e9ressant. Un mn\u00e9monique \u00e9quivalent sur d&#039;autres processeur est NOP, pour \u00ab No OPeration \u00bb. Cette instruction est g\u00e9n\u00e9ralement la premi\u00e8re instruction que l&#039;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&#039;a pas d&#039;effet visible. La seconde instruction JMP $0048 est un saut vers l&#039;adresse indiqu\u00e9e, qui se trouve plus loin, apr\u00e8s un lot d&#039;adresses r\u00e9serv\u00e9es. C&#039;est l\u00e0 aussi une instruction classique, que l&#039;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&#039;adresse `$0048`, cela ressemble \u00e0 un programme. Apr\u00e8s un peu de travail [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/mo5.com\/en\/lecture-et-sauvegarde-des-roms-du-micral-n\/\" \/>\n<meta property=\"og:site_name\" content=\"MO5.COM\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/pages\/Association-MO5COM\/9540357570\" \/>\n<meta property=\"article:published_time\" content=\"2023-03-08T12:00:20+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-03-14T09:02:49+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/mo5.com\/wp-content\/uploads\/2022\/08\/MicralN-ROM.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"750\" \/>\n\t<meta property=\"og:image:height\" content=\"563\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Sylvain Glaize\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@assomo5\" \/>\n<meta name=\"twitter:site\" content=\"@assomo5\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Sylvain Glaize\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/mo5.com\\\/lecture-et-sauvegarde-des-roms-du-micral-n\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/mo5.com\\\/lecture-et-sauvegarde-des-roms-du-micral-n\\\/\"},\"author\":{\"name\":\"Sylvain Glaize\",\"@id\":\"https:\\\/\\\/mo5.com\\\/#\\\/schema\\\/person\\\/e2593639b2e77eace001e56b26086749\"},\"headline\":\"Lecture et sauvegarde des ROMs du Micral N\",\"datePublished\":\"2023-03-08T12:00:20+00:00\",\"dateModified\":\"2023-03-14T09:02:49+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/mo5.com\\\/lecture-et-sauvegarde-des-roms-du-micral-n\\\/\"},\"wordCount\":1455,\"publisher\":{\"@id\":\"https:\\\/\\\/mo5.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/mo5.com\\\/lecture-et-sauvegarde-des-roms-du-micral-n\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/mo5.com\\\/wp-content\\\/uploads\\\/2022\\\/08\\\/MicralN-ROM.jpg\",\"articleSection\":[\"Micral\",\"Programmation\"],\"inLanguage\":\"en-GB\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/mo5.com\\\/lecture-et-sauvegarde-des-roms-du-micral-n\\\/\",\"url\":\"https:\\\/\\\/mo5.com\\\/lecture-et-sauvegarde-des-roms-du-micral-n\\\/\",\"name\":\"Lecture et sauvegarde des ROMs du Micral N - MO5.COM\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/mo5.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/mo5.com\\\/lecture-et-sauvegarde-des-roms-du-micral-n\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/mo5.com\\\/lecture-et-sauvegarde-des-roms-du-micral-n\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/mo5.com\\\/wp-content\\\/uploads\\\/2022\\\/08\\\/MicralN-ROM.jpg\",\"datePublished\":\"2023-03-08T12:00:20+00:00\",\"dateModified\":\"2023-03-14T09:02:49+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/mo5.com\\\/lecture-et-sauvegarde-des-roms-du-micral-n\\\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/mo5.com\\\/lecture-et-sauvegarde-des-roms-du-micral-n\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/mo5.com\\\/lecture-et-sauvegarde-des-roms-du-micral-n\\\/#primaryimage\",\"url\":\"https:\\\/\\\/mo5.com\\\/wp-content\\\/uploads\\\/2022\\\/08\\\/MicralN-ROM.jpg\",\"contentUrl\":\"https:\\\/\\\/mo5.com\\\/wp-content\\\/uploads\\\/2022\\\/08\\\/MicralN-ROM.jpg\",\"width\":750,\"height\":563,\"caption\":\"MicralN ROM\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/mo5.com\\\/lecture-et-sauvegarde-des-roms-du-micral-n\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/mo5.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Lecture et sauvegarde des ROMs du Micral N\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/mo5.com\\\/#website\",\"url\":\"https:\\\/\\\/mo5.com\\\/\",\"name\":\"MO5.COM\",\"description\":\"Pr\u00e9server, explorer, rejouer\",\"publisher\":{\"@id\":\"https:\\\/\\\/mo5.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/mo5.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/mo5.com\\\/#organization\",\"name\":\"Association MO5.COM\",\"url\":\"https:\\\/\\\/mo5.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/mo5.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/mo5.com\\\/wp-content\\\/uploads\\\/2023\\\/10\\\/Logo_MO5_A_Colo_Texte_Bleu-e1697059504554.png\",\"contentUrl\":\"https:\\\/\\\/mo5.com\\\/wp-content\\\/uploads\\\/2023\\\/10\\\/Logo_MO5_A_Colo_Texte_Bleu-e1697059504554.png\",\"width\":2094,\"height\":559,\"caption\":\"Association MO5.COM\"},\"image\":{\"@id\":\"https:\\\/\\\/mo5.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/pages\\\/Association-MO5COM\\\/9540357570\",\"https:\\\/\\\/x.com\\\/assomo5\",\"http:\\\/\\\/www.instagram.com\\\/assomo5\",\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UCRncMsBo89C9u_8gpWnsOVw\\\/featured\",\"https:\\\/\\\/bsky.app\\\/profile\\\/assomo5.bsky.social\",\"https:\\\/\\\/twitch.tv\\\/mo5assoretro\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/mo5.com\\\/#\\\/schema\\\/person\\\/e2593639b2e77eace001e56b26086749\",\"name\":\"Sylvain Glaize\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c57fffe6046f79130765edc0cc15c31865aef60892197deca86f5c61d3f2261b?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c57fffe6046f79130765edc0cc15c31865aef60892197deca86f5c61d3f2261b?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c57fffe6046f79130765edc0cc15c31865aef60892197deca86f5c61d3f2261b?s=96&d=mm&r=g\",\"caption\":\"Sylvain Glaize\"},\"url\":\"https:\\\/\\\/mo5.com\\\/en\\\/author\\\/mokona78\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Reading and saving Micral N ROMs - MO5.COM","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/mo5.com\/en\/lecture-et-sauvegarde-des-roms-du-micral-n\/","og_locale":"en_GB","og_type":"article","og_title":"Lecture et sauvegarde des ROMs du Micral N - MO5.COM","og_description":"Par Sylvain Glaize. C'est le 5 avril 2021 qu'a lieu la tr\u00e8s importante session de dump, ou lecture et sauvegarde, des ROMs du Micral N. Ces EPROMs sont tellement anciennes qu'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'ensemble des m\u00e9moires RAM de la machine. Ces RAM (SRAMs 2102 et 4007) sont d'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'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'une de 256 octets, l'autre de 2 kilo octets. Autant commencer par la plus courte. 256 octets, \u00e7a n'est pas tr\u00e8s long \u00e0 parcourir. La premi\u00e8re ROM Imm\u00e9diatement, l'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'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'a pas d'effet visible sur l'\u00e9tat du processeur et est la convention pour indiquer au 8008 de... ne rien faire d'int\u00e9ressant. Un mn\u00e9monique \u00e9quivalent sur d'autres processeur est NOP, pour \u00ab No OPeration \u00bb. Cette instruction est g\u00e9n\u00e9ralement la premi\u00e8re instruction que l'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'a pas d'effet visible. La seconde instruction JMP $0048 est un saut vers l'adresse indiqu\u00e9e, qui se trouve plus loin, apr\u00e8s un lot d'adresses r\u00e9serv\u00e9es. C'est l\u00e0 aussi une instruction classique, que l'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'adresse `$0048`, cela ressemble \u00e0 un programme. Apr\u00e8s un peu de travail [&hellip;]","og_url":"https:\/\/mo5.com\/en\/lecture-et-sauvegarde-des-roms-du-micral-n\/","og_site_name":"MO5.COM","article_publisher":"https:\/\/www.facebook.com\/pages\/Association-MO5COM\/9540357570","article_published_time":"2023-03-08T12:00:20+00:00","article_modified_time":"2023-03-14T09:02:49+00:00","og_image":[{"width":750,"height":563,"url":"https:\/\/mo5.com\/wp-content\/uploads\/2022\/08\/MicralN-ROM.jpg","type":"image\/jpeg"}],"author":"Sylvain Glaize","twitter_card":"summary_large_image","twitter_creator":"@assomo5","twitter_site":"@assomo5","twitter_misc":{"Written by":"Sylvain Glaize","Estimated reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/mo5.com\/lecture-et-sauvegarde-des-roms-du-micral-n\/#article","isPartOf":{"@id":"https:\/\/mo5.com\/lecture-et-sauvegarde-des-roms-du-micral-n\/"},"author":{"name":"Sylvain Glaize","@id":"https:\/\/mo5.com\/#\/schema\/person\/e2593639b2e77eace001e56b26086749"},"headline":"Lecture et sauvegarde des ROMs du Micral N","datePublished":"2023-03-08T12:00:20+00:00","dateModified":"2023-03-14T09:02:49+00:00","mainEntityOfPage":{"@id":"https:\/\/mo5.com\/lecture-et-sauvegarde-des-roms-du-micral-n\/"},"wordCount":1455,"publisher":{"@id":"https:\/\/mo5.com\/#organization"},"image":{"@id":"https:\/\/mo5.com\/lecture-et-sauvegarde-des-roms-du-micral-n\/#primaryimage"},"thumbnailUrl":"https:\/\/mo5.com\/wp-content\/uploads\/2022\/08\/MicralN-ROM.jpg","articleSection":["Micral","Programmation"],"inLanguage":"en-GB"},{"@type":"WebPage","@id":"https:\/\/mo5.com\/lecture-et-sauvegarde-des-roms-du-micral-n\/","url":"https:\/\/mo5.com\/lecture-et-sauvegarde-des-roms-du-micral-n\/","name":"Reading and saving Micral N ROMs - MO5.COM","isPartOf":{"@id":"https:\/\/mo5.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/mo5.com\/lecture-et-sauvegarde-des-roms-du-micral-n\/#primaryimage"},"image":{"@id":"https:\/\/mo5.com\/lecture-et-sauvegarde-des-roms-du-micral-n\/#primaryimage"},"thumbnailUrl":"https:\/\/mo5.com\/wp-content\/uploads\/2022\/08\/MicralN-ROM.jpg","datePublished":"2023-03-08T12:00:20+00:00","dateModified":"2023-03-14T09:02:49+00:00","breadcrumb":{"@id":"https:\/\/mo5.com\/lecture-et-sauvegarde-des-roms-du-micral-n\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/mo5.com\/lecture-et-sauvegarde-des-roms-du-micral-n\/"]}]},{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/mo5.com\/lecture-et-sauvegarde-des-roms-du-micral-n\/#primaryimage","url":"https:\/\/mo5.com\/wp-content\/uploads\/2022\/08\/MicralN-ROM.jpg","contentUrl":"https:\/\/mo5.com\/wp-content\/uploads\/2022\/08\/MicralN-ROM.jpg","width":750,"height":563,"caption":"MicralN ROM"},{"@type":"BreadcrumbList","@id":"https:\/\/mo5.com\/lecture-et-sauvegarde-des-roms-du-micral-n\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/mo5.com\/"},{"@type":"ListItem","position":2,"name":"Lecture et sauvegarde des ROMs du Micral N"}]},{"@type":"WebSite","@id":"https:\/\/mo5.com\/#website","url":"https:\/\/mo5.com\/","name":"MO5.COM","description":"Preserve, explore, replay","publisher":{"@id":"https:\/\/mo5.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/mo5.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":"Organization","@id":"https:\/\/mo5.com\/#organization","name":"MO5.COM Association","url":"https:\/\/mo5.com\/","logo":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/mo5.com\/#\/schema\/logo\/image\/","url":"https:\/\/mo5.com\/wp-content\/uploads\/2023\/10\/Logo_MO5_A_Colo_Texte_Bleu-e1697059504554.png","contentUrl":"https:\/\/mo5.com\/wp-content\/uploads\/2023\/10\/Logo_MO5_A_Colo_Texte_Bleu-e1697059504554.png","width":2094,"height":559,"caption":"Association MO5.COM"},"image":{"@id":"https:\/\/mo5.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/pages\/Association-MO5COM\/9540357570","https:\/\/x.com\/assomo5","http:\/\/www.instagram.com\/assomo5","https:\/\/www.youtube.com\/channel\/UCRncMsBo89C9u_8gpWnsOVw\/featured","https:\/\/bsky.app\/profile\/assomo5.bsky.social","https:\/\/twitch.tv\/mo5assoretro"]},{"@type":"Person","@id":"https:\/\/mo5.com\/#\/schema\/person\/e2593639b2e77eace001e56b26086749","name":"Sylvain Glaize","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/secure.gravatar.com\/avatar\/c57fffe6046f79130765edc0cc15c31865aef60892197deca86f5c61d3f2261b?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/c57fffe6046f79130765edc0cc15c31865aef60892197deca86f5c61d3f2261b?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c57fffe6046f79130765edc0cc15c31865aef60892197deca86f5c61d3f2261b?s=96&d=mm&r=g","caption":"Sylvain Glaize"},"url":"https:\/\/mo5.com\/en\/author\/mokona78\/"}]}},"_links":{"self":[{"href":"https:\/\/mo5.com\/en\/wp-json\/wp\/v2\/posts\/583","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mo5.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mo5.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mo5.com\/en\/wp-json\/wp\/v2\/users\/329"}],"replies":[{"embeddable":true,"href":"https:\/\/mo5.com\/en\/wp-json\/wp\/v2\/comments?post=583"}],"version-history":[{"count":0,"href":"https:\/\/mo5.com\/en\/wp-json\/wp\/v2\/posts\/583\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/mo5.com\/en\/wp-json\/wp\/v2\/media\/20234"}],"wp:attachment":[{"href":"https:\/\/mo5.com\/en\/wp-json\/wp\/v2\/media?parent=583"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mo5.com\/en\/wp-json\/wp\/v2\/categories?post=583"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mo5.com\/en\/wp-json\/wp\/v2\/tags?post=583"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}