{"version":"1.0","provider_name":"MO5.COM","provider_url":"http:\/\/mo5.com\/fr","title":"Programmer le Micral N - MO5.COM","type":"rich","width":600,"height":338,"html":"<blockquote class=\"wp-embedded-content\" data-secret=\"SjlGAIQ27Q\"><a href=\"http:\/\/mo5.com\/fr\/programmer-le-micral-n\/\">Programmer le Micral N<\/a><\/blockquote><iframe sandbox=\"allow-scripts\" security=\"restricted\" src=\"http:\/\/mo5.com\/fr\/programmer-le-micral-n\/embed\/#?secret=SjlGAIQ27Q\" width=\"600\" height=\"338\" title=\"\u00ab\u00a0Programmer le Micral N\u00a0\u00bb &#8212; MO5.COM\" data-secret=\"SjlGAIQ27Q\" 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\/2023\/05\/20230501-MicralN-Emulation-Panel-Chenillard.gif","thumbnail_width":474,"thumbnail_height":268,"description":"Par Sylvain Glaize Nous avons donc un mat\u00e9riel fonctionnel, une \u00e9mulation fonctionnelle. Nous avons aussi de quoi communiquer avec la machine via le port s\u00e9rie. Il est temps de pr\u00e9voir quelques programmes qui pourraient \u00eatre lanc\u00e9s. Pour cela, il est pr\u00e9vu d&#8217;utiliser un simulateur de lecteur de disquette, mais cette partie l\u00e0 viendra dans un article futur. Pour le moment, parlons programmation du Micral N. Le boot Au d\u00e9marrage de la machine dans la configuration de notre exemplaire, la ROM pr\u00e9sente sur la carte de \u00ab boot \u00bb se charge d&#8217;aller chercher des donn\u00e9es depuis un lecteur de disquette. Ce n&#8217;est pas obligatoire sur un Micral N, qui pourrait contenir directement un logiciel \u00e0 ex\u00e9cuter, ou bien lire des donn\u00e9es depuis un autre p\u00e9riph\u00e9rique. Notre configuration semble \u00eatre faite pour s&#8217;adapter \u00e0 un logiciel qui peut \u00eatre modifi\u00e9 facilement. Ce programme de d\u00e9marrage lit les 14 premiers kilo-octets de donn\u00e9es pr\u00e9sents sur la disquette et les copie en m\u00e9moire vive \u00e0 partir des adresses basses. La carte de \u00ab boot \u00bb est alors dans un mode o\u00f9 la lecture de donn\u00e9es se fait depuis la ROM, mais o\u00f9 l&#8217;\u00e9criture se fait en RAM pour les adresses communes. Une fois le chargement des donn\u00e9es termin\u00e9, le programme provoque un reset de la machine, qui est rep\u00e9r\u00e9 par la carte de \u00ab boot \u00bb qui ne permet plus l&#8217;acc\u00e8s \u00e0 la ROM. Ainsi, le programme venant de la disquette est enti\u00e8rement disponible, et a le contr\u00f4le complet de la machine. Le syst\u00e8me Nous n&#8217;avons pas de logiciel original pour cette machine, \u00e0 part le contenu des deux ROMs. Cependant, il est possible d&#8217;imaginer que ces donn\u00e9es peuvent soit constituer un programme utilis\u00e9 directement soit un syst\u00e8me d&#8217;exploitation. Les 2 kilo-octets du moniteur en haut de la m\u00e9moire ne forment pas un syst\u00e8me en soit. C&#8217;est un programme dans lequel on peut entrer pour op\u00e9rer et debugger la machine. Mais cette partie n&#8217;est pas construite comme un syst\u00e8me dont on pourrait appeler des fonctions pr\u00e9d\u00e9finies. En fait, cette ROM moniteur pourrait \u00eatre tout aussi bien remplac\u00e9e par de la RAM. Particularit\u00e9s du programme de boot Ce programme, tr\u00e8s court (199 octets utiles), utilise les deux cartes Pile\/Canal. L&#8217;une d&#8217;elles est utilis\u00e9e comme m\u00e9moire secondaire sous forme de pile. En effet, le 8008 n&#8217;a pas de gestion de pile en RAM comme on peut en trouver sur le Z80. Ce processeur n&#8217;a qu&#8217;une toute petite pile d&#8217;adresses, interne et non accessible, qui servent aux appels de sous-routines. Cette carte de m\u00e9moire secondaire sert pour calculer la somme de contr\u00f4le des donn\u00e9es lues depuis la disquette, sans avoir besoin de la RAM, qui est en train d&#8217;\u00eatre remplie par ces dites donn\u00e9es. Cela nous apprend donc que pour \u00e9crire dans cette pile, il faut utiliser l&#8217;instruction `OUT $16` (envoyer sur le port de sortie num\u00e9ro $16 en hexad\u00e9cimal). Pour lire depuis la pile, il faut utiliser l&#8217;instruction `INP $6` (lire depuis le porte d&#8217;entr\u00e9e num\u00e9ro 6). L&#8217;autre carte sert de buffer de lecture. Le programme y place le nombre d&#8217;octets attendus, puis demande au contr\u00f4leur de disquette de lancer la lecture. Une fois le nombre [&hellip;]"}