ACTE I : L'attaque des clones !

Dans la série "si je lisais la doc, ça irait tout de suite mieux", quelle ne fut pas ma surprise de tomber (totalement par hasard) sur cette info dans la documentation d'AppleWin :

Function Key F9 + Ctrl :
This PC function key combo will cycle through AppleWin's character sets :  original Apple II charsets and clones' char-sets. This shortcut allows you to override the default character sets of the Apple II model or clone.

Évidemment, nous, petits frenchies, on se fout totalement de l'alphabet cyrillique de ces fameux clones (Pravets 8x), par contre, puisque l'on a un moyen très simple (le CTRL+F9) de changer de jeux de caractères à la volée, pourquoi ne pas tout simplement remplacer le jeu de caractères des clones par celui modifié dont je parlais dans mes articles précédents ? L'avantage est énorme : on garde le jeu de caractères original pour une utilisation hors caractères accentués franchouillards (ça évite les pages de "à" dès qu'on tripote un peu le Monitor) et en cas de besoin, hop, un coup de CTRL+F9 (deux fois...) et on récupère les fameux accents ! Tentant non ? 

La méthode est toujours la même : on prend une copie fraîche d'AppleWin (où rien n'a été modifié au niveau caractères encore) et cette fois, au lieu de remplacer le BITMAP 1033 sous CHARSET40, on remplace le BITMAP 1033 (oui, c'est le même numéro) mais sous CHARSET8C, toujours avec Resource Hacker bien évidemment (en utilisant la méthode décrite précédemment qui reste valable).

Et pour me faire pardonner les errances multiples en ce qui concerne cette bidouille (on en est déjà à l'épisode III quand même...), je vous en livre en exclusivité une autre (en espérant qu'elle ne se transforme pas, elle aussi, en saga) :

ACTE II :  La revanche du clown !

AppleWin ne permet pas l'ouverture d'un même fichier image dans deux sessions différentes. C'est particulièrement pénible si par exemple, vous voulez développer sous Merlin dans une session AppleWin et tester le résultat dans une autre...  Impossible, le "unable to open file xxx" nous rappelle qu'on n'est pas là pour rigoler ! Et c'est ici que cette petite bidouille intervient ! On va modifier AppleWin de façon à ce qu'il autorise l'ouverture simultanée d'un même fichier. Avant d'aller plus loin, j'attire votre attention sur certaines limitations que je vais exposer ci-après. Libre à vous ensuite, de voir si elles sont rédhibitoires ou non :

  • il vous faudra deux AppleWin (donc dans deux répertoires différents) : un modifié et l'autre non. Quand je parle de modification, je parle de celle qui nous intéresse présentement, pas des modifications de caractères ou autres qui n'ont rien à voir et qui sont parfaitement cumulables.
  • l'AppleWin modifié n'ouvrira l'image déjà ouverte dans la première session qu'en lecture seule. Aucune modification ne pourra être effectuée sur le disque depuis cette session AppleWin (écriture de secteur, formatage, etc.).
  • après toute modification effectuée depuis la session normale (sauvegarde de fichier etc), il faudra faire un reload de l'image dans la session modifiée. Un reboot par le bouton POMME ne suffira pas, il faudra re-cliquer sur le drive, re-sélectionner le fichier et le re-booter !

Pour reprendre l'exemple de développement sous Merlin, voici ce que ça peut concrétement donner :

  • vous avez une session AppleWin normale avec votre source que vous modifiez et sauvegardez sur un disque de travail. Vous laissez cette session ouverte, pas la peine de quitter Merlin, vous pouvez même continuer à avoir le code sous le nez.
  • dans l'autre session, vous chargez votre disquette de travail et vous la bootez. Vous pouvez lancer le programme à tester : Arghh eine büg, große malheur !
  • depuis votre session Merlin, vous corrigez le malandrin, assemblez et sauvegardez.
  • vous repassez sur l'autre session, rechargez l'image du disque de travail (obligatoire, sinon l'image disque en mémoire sera celle d'avant la correction) et vous la bootez. Le bug a disparu ! Oui c'est magique... Non, il est toujours là ? Re-modifiez le code et ainsi de suite...

Ceux qui développent sous AppleWin comprendront vite l'intérêt de la chose ! Bon, on me signale que des gars codant avec Merlin pour Apple II sous Windows avec l'émulateur AppleWin et qui en plus parlent français et sont suffisamment félés  pour lire mes articles jusqu'au bout, il n'y en a pas !

Ok, dommage pour eux car la bidouille (oui j'y viens enfin) ne nécessite que la modification d'un pauvre petit octet ! Oui, un seul pour une souplesse d'utilisation pareille, c'est presque donné !

Pour modifier AppleWin donc, il vous faudra un éditeur hexa (Hex Workshop, Ultra Edit, enfin celui que vous voulez). Faire une recherche de la suite hexadécimale suivante : 6A 01 68 00 00 00 80 et remplacez le 01 par 03 !

Pour ceux que ça intéresse (cette fois-ci, je suis quasiment certain qu'il ne reste plus personne), voici l'explication de la bidouille : sous Windows, pour ouvrir un fichier, l'API à utiliser est CreateFile. Parmi les multiples paramètres de la fonction, un doit être positionné de façon à autoriser l'ouverture d'un fichier déjà ouvert avec droits en écriture (ce qui est le cas si l'image disque est déjà chargée dans une première session AppleWin), il s'agit du paramètre dwShareMode que l'on positionne ici à la fois pour l'écriture et la lecture (contrairement au mode lecture seule par défaut).