Une bibliothèque son pour la Mockingboard, sur Apple II
a2mock_sndlib est une bibliothèque C/assembleur pour la carte son Mockingboard de l’Apple II — deux circuits AY-3-8910 pilotés par deux 6522, six voies, deux sorties audio. Elle vise un Apple II d’époque : 6502 strict (pas d’opcode 65C02), 64 Ko, ProDOS. Elle est éprouvée sur du vrai matériel, pas seulement sous émulateur.
Pourquoi une bibliothèque, et pas juste un exemple de code
Écrire quelques registres dans une Mockingboard n’a rien de sorcier. Ce qui est répétitif, en revanche, c’est tout ce qui entoure cette écriture : savoir si la carte est vraiment là sans écrire au hasard dans un slot inconnu, tenir une base de temps régulière pendant que le programme fait autre chose, restaurer proprement la mémoire d’un //e si une interruption tombe au mauvais moment. Ce sont des détails qu’on redécouvre — et qu’on rate — à chaque nouveau projet si personne ne les a déjà réglés une bonne fois. C’est ce que cette bibliothèque essaie de faire une fois pour toutes, pour que le projet suivant n’ait plus qu’à en profiter.
Ce qu’elle contient
liba2mb— la couche de base : détection de la carte, écriture dans les AY, une base de temps fiable (IRQ 6522, avec repli en scrutation pour qui ne veut pas d’IRQ), des effets sonores. Un projet qui ne veut que des bruitages ne linke que ça.liba2m— le lecteur de musique, posé surliba2mb. Il lit un format maison, A2M, produit par un petit outil en Python qui tourne sur un ordinateur d’aujourd’hui. Le travail coûteux (calculer une enveloppe, réétalonner une période, dépaqueter un format tiers) se fait une fois, à la conversion ; le 6502 ne fait que rejouer une suite d’octets déjà prête. Deux profils, un seul lecteur : un flux de registres brut, qui convertit n’importe quelle source fidèlement, et un profil événements — notes et instruments — qui tient un morceau entier dans quelques centaines d’octets.- Une disquette de démonstration, dans le dépôt, qui joue une douzaine de morceaux et sert à la fois de vitrine et de banc d’essai.
Où elle en est, honnêtement
Utilisable, et vérifiée sur une Mockingboard physique dans un Apple //e — pas seulement en simulation. Ceci dit :
- l’API peut encore bouger, rien n’est figé avant une 1.0 ;
- le lecteur ne valide pas un module au-delà de sa signature ;
- le chemin Apple II+ (sans les bascules mémoire du //e) est écrit mais jamais exercé sur machine réelle ;
- pas d’intégration continue : les tests se lancent à la main.
Rien de tout ça n’est caché dans le code ou dans les commentaires : c’est écrit noir sur blanc dans le dépôt, avec le détail de ce qui a été mesuré et de ce qui reste à vérifier.
Pour qui c’est fait
Pour qui veut mettre du son ou de la musique dans un programme Apple II — jeu, démo, outil — sans repartir de zéro sur la partie carte et sans réinventer un format de musique. Et pour qui possède une vraie Mockingboard : les retours de matériel réel sont ce qui manque le plus, plus encore que les retours sous émulateur.
Le code, le format et la disquette de démonstration sont sur GitHub, sous licence MIT.
