{"id":1928,"date":"2026-11-02T16:58:31","date_gmt":"2026-11-02T15:58:31","guid":{"rendered":"https:\/\/www.gistlabs.net\/weblogs\/?p=1928"},"modified":"2026-11-02T16:58:31","modified_gmt":"2026-11-02T15:58:31","slug":"pom2-emulateur-apple-ii","status":"publish","type":"post","link":"https:\/\/www.gistlabs.net\/weblogs\/pom2-emulateur-apple-ii\/","title":{"rendered":"POM2 v1.1.2 : toute la famille Apple II, du ][ de 1977 au \/\/c Plus"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/www.gistlabs.net\/weblogs\/wp-content\/uploads\/2026\/11\/pom2-emulateur-apple-ii.png\" alt=\"POM2 fait tourner Wilderness sur un Apple \/\/c PAL, avec le cadre du moniteur, le clavier et les lecteurs de disquettes\"\/><figcaption>Wilderness sur un Apple \/\/c PAL : moniteur, lecteurs et clavier cliquable compris.<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Une disquette, un \u00e9cran qui luit, et encore une partie. Apr\u00e8s <a href=\"https:\/\/www.gistlabs.net\/weblogs\/pom1-v1-9-4-effets-crt-raspberry-pi-et-grand-nettoyage\/\">POM1<\/a> et l&rsquo;Apple 1, voici <strong>POM2<\/strong>, un \u00e9mulateur de toute la famille Apple II : du ][ de 1977 au \/\/c Plus de 1988, en NTSC comme en PAL, avec une quarantaine de cartes d&rsquo;extension \u00e0 brancher.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Il tourne <strong>directement dans le navigateur<\/strong>, rien \u00e0 installer : <a href=\"https:\/\/habib256.github.io\/pom2\/wasm\/\">lancer POM2 maintenant<\/a>. La version 1.1.2 est aussi disponible pour Linux, macOS, Windows et Raspberry Pi sur la <a href=\"https:\/\/github.com\/habib256\/pom2\/releases\/latest\">page de t\u00e9l\u00e9chargement<\/a>, et le code source (GPL-3.0) est sur <a href=\"https:\/\/github.com\/habib256\/pom2\">GitHub<\/a>.<\/p>\n\n\n\n<!--more-->\n\n\n\n<h3 class=\"wp-block-heading\">Neuf machines, un seul menu<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Le menu <em>Machine \u2192 Profile<\/em> propose neuf profils : ][, ][+, \/\/e non am\u00e9lior\u00e9 et am\u00e9lior\u00e9, \/\/c, \/\/c Plus, et les versions PAL du \/\/e non am\u00e9lior\u00e9, du \/\/e am\u00e9lior\u00e9 et du \/\/c. Ces profils PAL ne sont pas un simple r\u00e9glage cosm\u00e9tique : ils respectent le vrai timing \u00e0 312 lignes et 50 Hz, celui pour lequel les d\u00e9mos de French Touch ont \u00e9t\u00e9 \u00e9crites.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Le silicium comme r\u00e9f\u00e9rence<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Sur une machine o\u00f9 les d\u00e9mos changent de mode vid\u00e9o en plein milieu d&rsquo;une ligne de balayage, l&rsquo;exactitude ne se discute pas. Les changements en cours de ligne sont donc suivis, et les c\u0153urs 6502 et 65C02 respectent le nombre de cycles par instruction des vecteurs de test de Tom Harte. L&rsquo;\u00e9talon reste <a href=\"https:\/\/github.com\/Fr3nchT0uch\/DIX\/\">DIX<\/a>, l&rsquo;anthologie de d\u00e9mos de French Touch.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La v1.1.0 est all\u00e9e plus loin : les 801 commentaires du code qui citaient MAME ou AppleWin ont \u00e9t\u00e9 relus face aux sources primaires (datasheets, Sather, notes techniques d&rsquo;Apple, d\u00e9sassemblages de ROM). Bilan : 33 rapports d&rsquo;audit, 3 corrections majeures et 26 mineures. Chaque affirmation sur le mat\u00e9riel porte d\u00e9sormais une note de preuve, de <strong>A<\/strong> (mesur\u00e9 sur une vraie machine) \u00e0 <strong>F<\/strong> (inconnue assum\u00e9e), et une note basse ne l&#8217;emporte jamais sur une note plus haute.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Ce qu&rsquo;il y a dans la bo\u00eete<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Vid\u00e9o<\/strong> : texte 40\/80 colonnes, basse et haute r\u00e9solution et leurs modes doubles ; rendus composite NTSC, AppleWin, monochrome et CRT ; Le Chat Mauve et Video-7 RGB, Videx, VidHD, E-Z Color ; et m\u00eame une vue 3D en voxels.<\/li>\n<li><strong>Son<\/strong> : haut-parleur, cassette, bruits du lecteur et de l&rsquo;imprimante ; Mockingboard st\u00e9r\u00e9o, Phasor ; synth\u00e8se vocale SSI263 et Echo+ TMS5220C.<\/li>\n<li><strong>Stockage<\/strong> : Disk II, Sony 3\u00bd pouces, SmartPort, HDV, CFFA, Floppy Emu, captures WOZ et MOOF en \u00e9criture. Les modifications arrivent dans le fichier image environ une seconde apr\u00e8s l&rsquo;arr\u00eat du lecteur, sans \u00e9jection.<\/li>\n<li><strong>CP\/M<\/strong> : cinq cartes Z80, dont la Microsoft SoftCard et la PCPI Applicard.<\/li>\n<li><strong>Acc\u00e9l\u00e9rateurs et m\u00e9moire<\/strong> : RamWorks III, Saturn 128K, Slinky ; TransWarp, Zip Chip, FASTChip.<\/li>\n<li><strong>P\u00e9riph\u00e9riques<\/strong> : souris, manettes, ImageWriter II avec export PNG\/PDF, Uthernet, FujiNet (r\u00e9seau sur la version de bureau uniquement).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Fait pour regarder \u00e0 l&rsquo;int\u00e9rieur<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Maintenir <strong>F6<\/strong> remonte le temps (une fois l&rsquo;enregistrement activ\u00e9 dans <em>Machine \u2192 Rewind<\/em>). Pour les curieux et ceux qui programment encore sur cette machine, il y a aussi un d\u00e9bogueur qui g\u00e8re les banques m\u00e9moire, un assembleur 6502\/65C02, une trace des appels ProDOS et CP\/M, une vue du flux magn\u00e9tique sous la t\u00eate du Disk II et des \u00e9diteurs HGR\/DHGR. Les automatisations passent par <code>pom2_headless<\/code>, une API HTTP locale et un SDK C++.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Cinq disquettes pour commencer<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">La version navigateur d\u00e9marre sur un Apple \/\/c PAL avec une Mockingboard 4c et la d\u00e9mo DIX-fix. Glissez une image disque sur la fen\u00eatre pour la lancer. Cinq disques sont fournis dans <em>File \u2192 Disk Library<\/em> :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>DIX-fix<\/strong> : l&rsquo;anthologie de d\u00e9mos de French Touch ;<\/li>\n<li><strong>Dirtbike 1.1<\/strong> : un contre-la-montre de motocross sur 30 circuits ;<\/li>\n<li><strong>ChromaBreak 1.1<\/strong> : un casse-briques color\u00e9 ;<\/li>\n<li><strong>Micro-Sokoban 1.3<\/strong> : un petit puzzle avec beaucoup de caisses \u00e0 pousser ;<\/li>\n<li><strong>A2 File Cmd XL 1.0<\/strong> : un gestionnaire de fichiers ProDOS.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">POM2 lit les formats <code>.dsk<\/code>, <code>.do<\/code>, <code>.d13<\/code>, <code>.po<\/code>, <code>.nib<\/code>, <code>.woz<\/code>, <code>.moof<\/code>, <code>.2mg<\/code> et <code>.hdv<\/code>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Installer POM2<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Les paquets ne contiennent aucun firmware sous copyright : au premier lancement, la version de bureau propose de t\u00e9l\u00e9charger les ROM en un clic et v\u00e9rifie chaque fichier. Si vous avez d\u00e9j\u00e0 vos propres dumps, il suffit de les glisser sur la fen\u00eatre.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Les paquets n&rsquo;\u00e9tant ni notaris\u00e9s par Apple ni sign\u00e9s pour Windows, il faut autoriser POM2 une fois. Sur macOS : <em>R\u00e9glages Syst\u00e8me \u2192 Confidentialit\u00e9 et s\u00e9curit\u00e9 \u2192 Ouvrir quand m\u00eame<\/em>. Sur Windows : <em>Informations compl\u00e9mentaires \u2192 Ex\u00e9cuter quand m\u00eame<\/em>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tout est sur <a href=\"https:\/\/github.com\/habib256\/pom2\">le d\u00e9p\u00f4t GitHub<\/a>, et les retours sont les bienvenus dans <a href=\"https:\/\/github.com\/habib256\/pom2\/issues\">les issues<\/a>. Pas d&rsquo;Apple II sous la main ? <a href=\"https:\/\/habib256.github.io\/pom2\/wasm\/\">Lancez-le dans le navigateur<\/a>.<\/p>\n\n","protected":false},"excerpt":{"rendered":"<p>Une disquette, un \u00e9cran qui luit, et encore une partie. Apr\u00e8s POM1 et l&rsquo;Apple 1, voici POM2, un \u00e9mulateur de toute la famille Apple II : du ][ de 1977 au \/\/c Plus de 1988, en NTSC comme en PAL, avec une quarantaine de cartes d&rsquo;extension \u00e0 brancher. Il tourne directement dans le navigateur, rien &hellip; <\/p>\n<p><a class=\"more-link btn\" href=\"https:\/\/www.gistlabs.net\/weblogs\/pom2-emulateur-apple-ii\/\">Lire la suite<\/a><\/p>\n","protected":false},"author":0,"featured_media":1929,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5,33,9],"tags":[158,586,552,51,585,368,553],"class_list":["post-1928","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-emulation","category-games","category-dev","tag-apple","tag-apple-ii","tag-c","tag-emulation-2","tag-pom2","tag-retro","tag-webassembly","item-wrap"],"_links":{"self":[{"href":"https:\/\/www.gistlabs.net\/weblogs\/wp-json\/wp\/v2\/posts\/1928","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gistlabs.net\/weblogs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gistlabs.net\/weblogs\/wp-json\/wp\/v2\/types\/post"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gistlabs.net\/weblogs\/wp-json\/wp\/v2\/comments?post=1928"}],"version-history":[{"count":0,"href":"https:\/\/www.gistlabs.net\/weblogs\/wp-json\/wp\/v2\/posts\/1928\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.gistlabs.net\/weblogs\/wp-json\/wp\/v2\/media\/1929"}],"wp:attachment":[{"href":"https:\/\/www.gistlabs.net\/weblogs\/wp-json\/wp\/v2\/media?parent=1928"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gistlabs.net\/weblogs\/wp-json\/wp\/v2\/categories?post=1928"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gistlabs.net\/weblogs\/wp-json\/wp\/v2\/tags?post=1928"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}