Mercredi  26/05/2004.


>>>>Cette weblog a été mise à jour le jeudi 06/04/2006.
En 2004, quand j'ai écrit le 1er jet de cette page, je pensais l'updater rapidement après coup en y rajoutant des scans de la doc et des photos plus explicites. Mais comme toujours, j'ai eu plein de trucs à faire et le dossier a été mis de côté.
Ce n'est que suite à un contact venu de Belgique (Marc) datant d'il y a quelques semaines que je me suis décidé à compléter cette page. En effet Marc (qui a l'expérience de la création de cartes périphériques Apple II) va essayer de se faire un programmateur d'eproms à partir des éléments disponibles laissés par Yves-Paul.
Il fallait donc que je rassemble tout ça et le mette en forme. C'est à présent chose faite.
Le rajout est en bas de page.
<<<<

PRESENTATION

Suite à son annonce de vente sur abcelectronique, rendez-vous chez Yves-Paul Morice, inventeur et concepteur d'une solution de programmation d'eproms 2716 (25V), 2732 (21V), 2764 (12,5V ou 21V) et 27128 (12,5V ou 21V) sur un ordinateur Apple II europlus.

Il s'agit d'une solution unique, entièrement faite main qui a la particularité d'avoir un boitier de programmation externe, ce qui est extrêmement rare sur cette gamme de machine. En effet, la plupart des solutions qui furent commercialisées (AP-64e eprom writer, Xcalibur xProm, BAL500 auto eprom programmer, PROmGRAMMER de Southern California Research Group, ...) se présentait sous la forme d'une carte à mettre dans un slot et sur laquelle on plaçait directement l'Eprom à traiter.

Ici point besoin d'avoir le capeau ouvert, de faire des manipulations de switchs ni de mettre hors tension sa machine...

La solution se présente sous la forme d'une carte d'interface à insérer dans le slot 3 reliée au boitier externe par une nappe.
Le boitier proprement dit correspond à un programmateur "universel" appelé PRM 4 dont le plan était paru dans la revue Radio Plans E-L numéros 468 et 469 avec une compatibilité assurée pour les processeurs 6800, 6809 et 6502. Yves-Paul a mis au point une interface pour relier ce boitier au programmateur.

Il suffit d'insérer (l'apple II+ allumé) l'eprom dans le Zero Insertion Force du boitier, de l'abaisser, de faire un PR#3 et le firmware (en français évidemment!) affiche un menu permettant de faire toutes les manipulations (lecture, écriture, tests  - checksum, virginité, comparaison de mémoire -, changement de type d'eproms, passage en mode moniteur pour modifier les datas débutant en $0800 et revenir au menu via la séquence ctrl-Y et return, ...)

C'est l'outil idéal pour remplacer les roms de l'Apple II par des eproms contenant une version plus à jour (upgrade du IIe avec les caractères souris et les nouvelles roms), pour se faire des krakroms (meilleure maitrise du reset par exemple, contrer des protections de programmes originaux lors de déplombages pour en faire des images disks destinés aux émulateurs sur autres plateformes, ...), pour bruler des eproms à mettre sur des rom-cards (comme la Quikloader par exemple), pour jouer les béta-testeurs de firmware en aidant des passionnés qui conçoivent encore des cartes pour la gamme Apple II, ...

01/05/2006 : ajout information de Jean-Pierre: sur APPLE II et II+, ce ne sont pas des 2716. ATTENTION il faut une légère modification pour les installer. Le seul point est que si l'acheteur pense qu'il va installer des 2716 sur son APPLE il sera un tantinet déçu... ce n'est pas destructif mais cela ne marche pas. Il y a juste un bidouillage à faire qui est simple sur trois pattes d'adresses car les ROM apple sont "presque" compatibles 2716.


La phase d'écriture est très rapide! Une seconde pour une 2764... On est loin des 50 ms/octet demandés par les fabricants pour assurer la garantie (plus de 13 minutes pour une 27128!) mais ça marche! Ceci a été possible grâce à l'algorithme de programmation rapide d'eproms de la société Intel.

Il est même possible d'utiliser un émulateur d'Eprom sous la forme d'un petit boitier connecté à une carte supersérie SSC taiwanaise.

Yves-Paul avait vendu au début des années 1980 (fin 1984/1985?) quelques copies de son invention à des particuliers mais il s'agit ici de l'original. L'avantage énorme est la disponibilité des docs, que ce soit les sources des programmes présents sur l'eprom du controleur (conçus avec l'assembleur Lisa, listing papier avec commentaires+sources sur disquette), le mode d'emploi, les plans & schémas (de la carte, du boitier et de l'émulateur), l'organigramme du programme, les docs d'aide (programmateur d'eprom universel PRM 4 sur RP-EL n° 468/469, le PIA 6821, ...)

Il y a même de dispo les bases pour faire une nouvelle carte (si ça intéresse quelqu'un, y-a qu'à demander! Moi, je n'y connais rien... je ne fais qu'utiliser).
Note du 06/04/2006: en fait non!! Il s'agit du PCB d'une autre carte : je n'avais pas controlé à l'époque ce que m'avait dit Yves-Paul et c'est Marc qui m'a signalé que la carte vierge expédiée n'était pas la bonne :-((


Quelques clichés généraux du matériel récupéré:


Apple II+ vue globale Controleur dedans Controleur dehors Boitier Eprom
Organigramme & Plans Programme et plans Docs & Schémas Disquettes
Emulateur Eprom avec SSC Menu Effaceur eproms



LES ELEMENTS ET LES CIRCUITS

La face recto de la carte controleur, son circuit et les éléments à mettre dessus:

Controleur Controleur Controleur

La face verso de la carte controleur et son circuit:

Controleur Controleur

Les ports en sortie de l'Apple II europlus (slot 3 = controleur, slot 5 = SSC en option pour utiliser un émulateur d'eprom):

Ports

Contenu du boitier avec le programmateur proprement dit.
Ce boitier contient 2 circuits superposés (3ème photo avec vue de côté). Le 1er circuit est double face et le 2nd simple face:

Interieur boitier Interieur boitier Interieur boitier


LES DOCS SCANNEES

Le mode d'emploi: (les informations pour le changement de slot est en référence au source papier Lisa 2.5)

Doc Doc Doc

Un schéma du controleur:

Doc


L'organigramme d'un programme de l'eprom (APPLE_SAS de $C300 à $C3FF):

Doc


Le source commenté d'un programme de l'eprom du controleur : APPLE_SAS de $C300 à $C3FF (Lisa 2.5):

Doc Doc Doc


L'organigramme d'un programme de l'eprom (PROGRAMMATEUR de $C800 à $CFFF):

Doc Doc Doc
Doc Doc Doc


Le source commenté d'un programme de l'eprom du controleur : PROGRAMMATEUR de $C800 à $CFFF (Lisa 2.5):

Doc Doc Doc Doc
Doc Doc Doc Doc
Doc Doc Doc Doc


La doc des éléments du boitier de programmation PRM 4:

Doc Doc Doc Doc
Doc Doc Doc Doc
Doc Doc Doc Doc


Circuits dans le boitier de programmation PRM 4:

Doc Doc Doc


Doc complémentaire sur l'inductance d'une bobine cyclindrique:

Doc Doc Doc Doc


LES PROGRAMMES PRESENTS DANS L'EPROM DE LA CARTE DU CONTROLEUR

Sur la carte controleur se trouve une eprom qui contient 2 programmes:

- Le programme qui est appelé en 1er lorsque l'on fait un PR#3 (APPLE_SAS). Il est logé dans l'espace $C300-$C3FF.

- Le programme qui gère le programmateur proprement dit (PROGRAMMATEUR). L'implantation mémoire correspond classiquement à l'espace réservé pour chaque carte périphérique ($C800-$CFFF).

Cette eprom est une 27C32, c'est à dire qu'elle a une capacité de 32 kbits, soit 32*1024/8=$1000 octets.

Voici la carte de l'eprom:

Offset
Eprom         Adresse ROM
$0000-$00FF   $C300-$C3FF : 256 octets carte périphérique -> Contenu du programme APPLE_SAS
$0100-$07FF   Inutilisé (rempli de $FF, c'est à dire un espace vierge)
$0800-$0FFF   $C800-$CFFF : Espace mémoire d'extention de la carte -> Contenu du programme PROGRAMMATEUR

Pour avoir les sources propres de ces programmes sous Merlin, ce ne fut pas une mince affaire!
Voici l'histoire:


Avec ce matériel, j'ai aussi récupéré chez Yves-Paul un lot de disquettes avec quelques copies d'utilitaires (bureautique, ...), une version pirate de Lisa 2.5 (avec la doc photocopiée) et plusieurs disquettes de travail de l'auteur.
Malheureusement la disquette principale sur laquelle devait se trouver les sources de l'eprom de la carte controleur (ainsi que le BIN final résultant des assemblages avec Lisa) était en partie HS.
En examinant les autres disquettes de travail, j'ai trouvé plusieurs fois des sources qui me semblaient être les bons. Mais je n'étais pas sur.

Dans le doute, j'ai préféré partir de l'eprom elle même pour m'en servir comme référence.
J'ai récupéré son contenu en la lisant avec un autre programmateur d'eprom: une carte externe Willem (http://www.willem.org) se connectant sur le port parallèle d'un pc et alimentée par le port USB, le tout drivé par un soft sous Windows.

Pour la petite histoire, j'avais acheté ce matériel supplémentaire (Willem) mi-2004 sur ebay (montage made in Hong Kong pour moins cher) dans la perspective de programmer des 27512 (non supportées par le programmateur d'Yves-Paul) pour les mettre sur une carte QuikLoader (signée Southern California Research Group). Cette carte permet de stocker des programmes en eproms (différentes capacités) et de les appeler directement avec une combinaison de touches sur l'apple II. Je voulais ainsi avoir un Merlin (entre autre) prêt au quart de tour. Malheureusement cette carte n'arriva jamais de la région toulousaine où elle se trouvait (salut Thry2!) : perdue par la poste ou fut volée dans ma boite à lettre (colis non reçu alors que le statut colissimo suivi sur internet indiquait "livré"). Une embrouille postale de plus!

Yves Paul m'avait aussi légué un source papier commenté de son programme principal.
Ce support est important car il y a des commentaires qui ne figurent pas sur le source informatique (et je n'ai pas le temps de les reporter).
C'est pour cela que vous trouverez un scan du listing avec les annotations manuelles de l'auteur sur cette page web en complément (et en plus ça vous permettra de voir la tête d'un source Lisa. A noter les branchements >num et <num qui pointe vers un tag ^num respectivement en dessous ou en dessus du point d'appel. J'ai quand même mis des commentaires pour structurer le programme et améliorer la compréhension générale).
Mais j'ai constaté qu'il y avait quelques écarts entre le BIN extrait avec la Willem et le source papier ainsi que le source sur disquette.

Mon objectif a donc été de reconstituer un source complet sur disquette qui corresponde à l'objet (le BIN récupéré avec la willem).

Le 1er soucis rencontré est l'assembleur lui-même.
Lisa 2.5 est archaïque. La version DOS utilise un type spécial ($F4) pour stocker les sources.
Il ne s'agit pas d'un fichier texte simple mais un fichier utilisant des codes pour représenter les mnémoniques, probablement dans un soucis de réduction de l'occupation disque.
Mais tout ceci n'est pas simple et Lisa est moins malléable que Merlin à mon sens.
J'ai donc voulu faire la conversion Lisa -> Merlin. Ceci est surtout motivé par le fait que cet assembleur est bien plus répandu.
Pour retrouver un format TXT lisible, j'ai du créer un disk image avec les sources, les extraire/décoder avec l'outil CiderPress qui sait gérer ce format (décodage des codes spéciaux Lisa vers les mnémoniques) puis les ré-injecter vers un disk image avec un format consultable avec l'éditeur plein écran de Merlin.

(L'option native de Lisa permettant de faire une sortie fichier texte à partir d'un source en mémoire étant bugguée, j'avais aussi essayé le truc consistant à imprimer le source depuis Lisa sous Apple Oasis en ayant pris le soin de définir le port imprimante comme le presse papier windows. Ca avait marché mais Lisa avait imprimé en plus la numération des lignes, ce qui créait du travail supplémentaire pour la remise en forme "Merlin").

Le source dispo en TXT n'est pas suffisant car il contient encore des spécificités de l'assembleur Lisa d'origine.
J'ai donc du retravailler les sources pour que le résultat s'assemble avec Merlin.
Puis j'ai comparé cet assemblage Merlin avec le BIN Willem afin de synchroniser le source avec l'objet final.


Pour avoir à dispo le contenu de l'eprom, vous pouvez soit récupérer le .bin Willem soit procéder ainsi:

Assembler avec Merlin les sources T.APPLE_SAS et T.PROGRAMMATEUR pour créer les binaires APPLE_SAS et PROGRAMMATEUR.

]CALL -151
*2400:FF
*2401<2400.2AFFM
*<ctrl-C><return>

]BLOAD APPLE_SAS,A$2300
]BLOAD PROGRAMMATEUR,A$2B00
]BSAVE EPROM_OK,A$2300,L$1000

Et vous avez un BIN prêt qui s'appelle EPROM_OK.


QUELQUES MOTS SUR "APPLE_SAS"


Si vous regardez le source APPLE_SAS, beaucoup de chose vont vous sembler obscures.
Et c'est bien normal...
J'ai voulu dans cette page web ne parler que du programmateur.
J'ai juste évoqué l'émulateur mais il me faut en dire un peu plus ici car programmateur et émulateur sont liés.
Je vous rassure, il est tout à fait possible de n'utiliser que le programmateur. Mais le plus gros du 1er programme (APPLE SAS) concerne l'émulateur.
Le programme APPLE_SAS commence par tester si l'émulateur est utilisé (valeur renseignée manuellement à l'adresse $047B).
Il teste 3 valeurs possibles. Si ce n'est aucune de ces 3, alors il passe la main à la rom du programmateur. Sinon il exécute du code spécifique à l'émulateur.
Pour s'affranchir de ce dernier, il suffirait de faire sauter ces tests et d'aller directement au JMP EPROM ($C800)...

A noter qu'APPLE_SAS a été optimisé au point de n'avoir plus que 8 octets de libre sur la page de MEM (256 octets) de la carte périphérique!! En enlevant le code de l'émulateur, vous pouvez inclure ce que vous voulez à la place...

Pour utiliser cet émulateur, il faut qu'il y ait dans le slot 5 de l'apple II europlus une carte SSC (super-série).
L'émulateur est reliée à cette SSC d'une part (c'est pour celà qu'il y a des références à la transmission) et d'autre part, il y a aussi un cable sortant de l'émulateur dont la terminaison correspond aux broches d'une eprom et qu'il faut bien entendu mettre sur le programmateur comme s'il s'agissait d'une eprom classique que l'on veut bruler.

Dans le cadre d'une mise au point traditionnelle d'une eprom (à monter sur une carte d'extension quelconque par exemple), il faut à chaque correction de code retirer l'eprom de la carte d'extension, l'effacer aux rayons ultraviolets (UV), l'insérer dans le programmateur, la bruler, l'enlever du programmateur et la remettre sur la carte d'extension. L'ensemble de ces opérations prend dans le meilleur des cas près de 20 mn.
Avec l'émulateur d’eprom, il n'y a plus cette perte de temps puisqu'on a substitué l'eprom normale.
Il est possible de tester une carte avec cet émulateur et de faire des corrections rapidement du contenu de la future eprom sans repartir sur un cycle infernal d'effacement...


LE BONJOUR DE MARC

De:     Marc F.
À:     Deckard
Sujet:     apple 2
Date:     Thu, 26 Jan 2006 23:52:23 +0100   

Bonjour Jean Marc,
 
 
Tout d'abord "félicitations" pour votre site ! Ca me rappelle des souvenirs... et il faut continuer à entretenir la flamme, je pense !
Je suis aussi inquiet que vous ( je vais me permettre de tutoyer ) donc, je disais... que toi... en ce qui concerne mes apple's...
Ce qui fait que j'en ai un peu partout, aussi...
Au moins 12 en tout... en état.
 
Je suis en Belgique, près de Liège, pour me situer.

 
Mais, je vais te raconter un peu mon histoire apple 2, si tu veux bien... question que tu me connaisses un peu mieux  ;)
 
Je me souviens encore du rêve... ces samedis à passer devant un magasin à Liège... à les regarder... Qu'ils étaient beaux !
Puis, un jour... ce fut le grand jour... j'avais convaincu mes parents de m'en payer un pour ma Saint Nicolas... un 32 K apple II avec mon vieux lecteur de K7 comme mémoire de masse... et la télé comme moniteur...  coût : 70000 Francs Belges... Là, j'étais le plus heureux des petits bonhommes, tu imagines :)
J'avais 17 ans... et après la découverte "du jouet" ... je passai de longues soirées, pendant mes études, à programmer mes devoirs d'électricité. wow... le prof, lui, n'avait qu'une HP 41 C ... moi un apple 2 !  :)
A la fin de mes études secondaires... il fallait que je continue à programmer... je ne savais pas quoi... mais quelque chose...
J'eus une idée : celle de faire un jeu de lumière sur base de l'apple...
Ma première interface fut concue à partir du petit connecteur GAME-PAD. Il y a 4 sorties binaires et un strobe et deux entrées sur ce connecteur.
Super... on ne touchait pas au slot encore inconnu de moi... mais 4 sorties, c'était trop peu...
Alors, comme je voulais au moins 40 sorties, j'eu l'idée de multiplexer... et ce fut le jack-pot...
Il suffisait d'employer le strobe comme base de temps... de compter 10 très vite... de mémoriser chaque coup de 4 sorties... et puis retour à zero... l'oeil n'avait rien vu ! :)
Vitesse-vitesse quand tu nous tiens !
C'est à cause de la lenteur du basic... que je fis mes débuts en Assembleur / langage machine : call-151, quoi !
 
Faut s'imaginer : nous sommes en 1984 : avoir 80 lampes à faisceaux 12volts/30watts pour une sono-disco mobile commandés par 2 avec un ordi... c'était LA PUB !  :)
J'ai tourné deux années comme ça... puis, avec le début du PC... comme j'avais des copains qui me nargaient et je ne pouvais en rester là...
 
J'ai tout recommencé : mais cette fois sur base de PIA PIO... un 6821... et comme avec le langage machine, j'avais entre temps mieux compris les bus et les slots... toujours avec un jeu de multiplexage... j'arrivais à 512 sorties digitales... voire + suivant le nombre de cartes et de MEM ram dispos !
 
Un jour, je vis un lot d'apple 2 à vendre à l'université de Liège et j'acheta tout le lot au même prix que mon tout premier apple 2.
Une aubaine !
Et aussi un miracle, car, ils avaient eux, 128 K de Ram :) enfin... non... c'était un toujours 64 K mais on arrivait à faire des mémoires paginées : ce qui était tout de même une amélioration des perfs...
 
Jusqu'à 97, ce sytème de light show tourna tourna tourna !
 
Depuis 97, mes apples sont un peu au repos... Mais c'est en voyant ton site que je me dis...
 
qu'il n'y a pas que moi et mon aventure !
 
:-)

 
Et aujourd'hui... que faire avec mes apple 2 !  :)
 
En 2006, je me prépare à refaire tourner un apple 2 sur une interface PIA PIO pour une commande de moteurs pas à pas.
20 moteurs avec 4 sorties... ( sequence 1 - 2 - 3 - 4 pour le faire avancer ou 4 - 3 - 2 - 1 ) ==> 4 bits x 20 ==> 80 sorties digitales + 40 entrées... ==> je pense que 3 de mes cartes pia dans un apple 2 feront l'affaire... ( ici je ne vais pas multiplexer )
 
Pourquoi faire ces moteurs... ? Ces moteurs pas à pas vont commuter via des miroirs un faisceau laser de plusieurs watts...
 
L'apple sera en bouclage continuel ( en esclave ) attendant des infos d'entrées...  Ces entrées seront gérées par un PC maitre ( actuel donc ) qui sera probablement interfacé en dmx 512 avec l'apple 2 au trvers d'opto coupleurs pour bien tout isoler...
Pour rendre plus simples les cablages depuis les cartes d'interfaces ==> la puissance des moteurs, je vais déshabiller l'apple et le faire tourner comme un vulgaire circuit électronique sous mon banc optique laser !
Voilà le projet en 2006 !
 
J'espère pouvoir ouvrir un blog prochainement avec l'avancée du projet...
 
 
PS :
 
J'ai vu dans tes pages  que tu tenais à disposition de qui le demande les schémas d'un programmeur d'eprom...
cela m'intéresse toujours, si tu es d'accord pour le partager.
 
Je n'ai pas malheureusement de mon côté d'étude très détaillée de ma carte PIA PIO... puisque c'était fait dans un cadre ludique...
Mais, j'ai une page avec toutes les instructions Langage machine ici :
 
http://marcfiasse.com/micro/6502_apple/index.htm
 
Je pense que je prendrai aussi tes pages comme aide-mémoire en ce qui concerne les jeux de commande de l'assembleur :)
 

 
Voilà un peu de mon histoire... et j'espère qu'elle peut être lue comme d'un roman qui se termine bien ou qui n'est pas encore terminé :)
 
Très cordialement,
Bien à toi,
 
Marc
 
 
LES PROGRAMMES

Disk : Sources_Eprom_Programmateur.dsk
"-" files are DELETED files | "*" files are LOCKED files
----------------------------------------------------------------------
 A A$0000 (000000) L$00C6 (000198) 002 DISK*
 T A$0000 (000000) L$0C00 (003072) 012 T.APPLE_SAS
 B A$C300 (049920) L$0100 (000256) 003 APPLE_SAS
 T A$0000 (000000) L$3100 (012544) 049 T.PROGRAMMATEUR
 B A$C800 (051200) L$0800 (002048) 010 PROGRAMMATEUR
 B A$0000 (000000) L$1000 (004096) 018 WILLEM_EPROM_PROGRAMMER.BIN
 B A$2300 (008960) L$1000 (004096) 018 EPROM_OK

This catalog contains 7 files. 0 were DELETED.
----------------------------------------------------------------------



Floppy
DOS 3.3
Download Sources et objets Eprom Controleur (gzipped)
Floppy
BIN
Download le contenu de l'eprom controleur (extraction Willem)



PROGRAMME APPLE_SAS:


:ASM
                1   
                2                  ORG    $C300    
                3   
                4    ********************************
                5    *                              *
                6    *           APPLE SAS          *
                7    *       YVES-PAUL MORICE       *
                8    *                              *
                9    ********************************
                10  
                11   * Conversion du source LISA 2.5 vers MERLIN
                12   * par CiderPress (Andy McFadden) et Deckard
                13  
                14   * Adresses page 0
                15  
                16   COMPT1        EQU    $06      
                17   COMPTEUR      EQU    $07      
                18   ADRB          EQU    $08      
                19   ADRH          EQU    $09      
                20   DATA1         EQU    $0C      
                21   LPBPIA1       EQU    $18      
                22   LPBPIA2       EQU    $19      
                23   ADRPROMB      EQU    $1A      
                24   ADRPROMH      EQU    $1B      
                25   ADRMEMB       EQU    $1C      
                26   ADRMEMH       EQU    $1D      
                27   EPIA1         EQU    $1E      
                28   EPIA2         EQU    $1F      
                29  
                30   * Usage spécifique controleur programmateur eprom
                31  
                32   FORMAT        EQU    $047B     ;$0478+SLOT 3
                33   BLOCS         EQU    $ED      
                34   SOMME         EQU    $F9      
                35   DATA          EQU    $18      
                36  
                37   SERIE         EQU    $C0D8    
                38   STATUS        EQU    $C0D9    
                39   COMMANDE      EQU    $C0DA    
                40   CONTROLE      EQU    $C0DB    
                41  
                42   EPROM         EQU    $C800    
                43  
                44   * Adresses ROM APPLE
                45  
                46   RETOUR        EQU    $FA62    
                47   BELL          EQU    $FBDD    
                48   CLAVIER       EQU    $FD1B    
                49   PRBYTE        EQU    $FDDA    
                50   ECRAN         EQU    $FDED    
                51   EFFACE        EQU    $FC58    
                52   COUT1         EQU    $FDF0    
                53   IOREST        EQU    $FF3F    
                54   IOSAVE        EQU    $FF4A    
                55  
                56   ********************************
                57  
C300: 20 4A FF  58   CORPROAP      JSR    IOSAVE   
C303: AD FF CF  59                 LDA    $CFFF     ;DESACTIVATION DES ROMS
C306: A9 9F     60                 LDA    #%10011111
C308: 8D DB C0  61                 STA    CONTROLE  ;1 BIT STOP-8 BITS DONNEE-19200 BDS-PAIRE
C30B: A9 6B     62                 LDA    #%01101011
C30D: 8D DA C0  63                 STA    COMMANDE  ;MODE NORMAL-PARITE PAIRE
C310: AD 7B 04  64                 LDA    FORMAT   
C313: C9 10     65                 CMP    #16      
C315: F0 0B     66                 BEQ    DEUXK    
                67  
C317: C9 20     68                 CMP    #32      
C319: F0 15     69                 BEQ    QUATREK  
                70  
C31B: C9 40     71                 CMP    #64      
C31D: F0 21     72                 BEQ    HUITK    
                73  
C31F: 4C 00 C8  74                 JMP    EPROM    
                75  
C322: A9 10     76   DEUXK         LDA    #16      
C324: 8D D8 C0  77                 STA    SERIE    
C327: A9 08     78                 LDA    #$08     
C329: 85 ED     79                 STA    BLOCS    
C32B: 85 09     80                 STA    ADRH     
C32D: 4C 4D C3  81                 JMP    ATTEND   
                82  
C330: A9 20     83   QUATREK       LDA    #32      
C332: 8D D8 C0  84                 STA    SERIE    
C335: A9 10     85                 LDA    #$10     
C337: 85 ED     86                 STA    BLOCS    
C339: A9 08     87                 LDA    #$08     
C33B: 85 09     88                 STA    ADRH     
C33D: 4C 4D C3  89                 JMP    ATTEND   
                90  
C340: A9 40     91   HUITK         LDA    #64      
C342: 8D D8 C0  92                 STA    SERIE    
C345: A9 20     93                 LDA    #$20     
C347: 85 ED     94                 STA    BLOCS    
C349: A9 08     95                 LDA    #$08     
C34B: 85 09     96                 STA    ADRH     
C34D: EE 7B 04  97   ATTEND        INC    FORMAT   
C350: 20 97 C3  98                 JSR    DONNEE   
C353: CD 7B 04  99                 CMP    FORMAT   
C356: D0 76     100                BNE    TEXTE1   
                101 
C358: A9 EE     102                LDA    #$EE     
C35A: 8D D8 C0  103                STA    SERIE    
C35D: 20 97 C3  104                JSR    DONNEE   
C360: C9 50     105                CMP    #$50     
C362: D0 6A     106                BNE    TEXTE1    ;ERREUR PROTOCOLE NON RESPECTE
                107 
C364: A0 00     108                LDY    #$00      ;RAZ DU POINTEUR
C366: 84 08     109                STY    ADRB      ;RAZ POIDS FAIBLE DE L'ADRESSE DE DEBUT
C368: 84 F9     110                STY    SOMME     ;RAZ SOMME DE VERIFICATION
C36A: B1 08     111  ENVOI         LDA    (ADRB),Y 
C36C: 85 18     112                STA    DATA     
C36E: 20 C3 C3  113                JSR    TRANS    
C371: 18        114                CLC             
C372: A5 18     115                LDA    DATA     
C374: C9 FF     116                CMP    #$FF     
C376: F0 04     117                BEQ    :1       
                118 
C378: 65 F9     119                ADC    SOMME     ;SOMME DES DONNEES POUR VERIFICATION
C37A: 85 F9     120                STA    SOMME    
C37C: C8        121  :1            INY             
C37D: D0 EB     122                BNE    ENVOI    
                123 
C37F: E6 09     124                INC    ADRH     
C381: C6 ED     125                DEC    BLOCS     ;1 PAGE (256 OCTETS) ENVOYEE
C383: D0 E5     126                BNE    ENVOI    
                127 
C385: 20 97 C3  128                JSR    DONNEE    ;ATTENTE DE LA SOMME DU SAS
C388: C5 F9     129                CMP    SOMME    
C38A: D0 42     130                BNE    TEXTE1    ;ERREUR DE COMPARAISON DES SOMMES
                131 
C38C: A9 FF     132                LDA    #$FF     
C38E: 8D D8 C0  133                STA    SERIE    
C391: 20 3F FF  134  FIN           JSR    IOREST   
C394: 6C F2 03  135                JMP    ($3F2)    ;RETOUR AU PROGRAMME PRINCIPAL
                136 
C397: A9 FF     137  DONNEE        LDA    #$FF     
C399: 85 07     138                STA    COMPTEUR 
C39B: A9 20     139                LDA    #$20     
C39D: 85 06     140                STA    COMPT1   
C39F: AD D9 C0  141  TEST          LDA    STATUS   
C3A2: 29 08     142                AND    #%00001000
C3A4: D0 19     143                BNE    RECUE    
                144 
C3A6: AD D9 C0  145                LDA    STATUS   
C3A9: 29 01     146                AND    #%00000001
C3AB: D0 21     147                BNE    TEXTE1    ;ERREUR DE PARITE DE LA DONNEE
                148 
C3AD: C6 07     149                DEC    COMPTEUR 
C3AF: F0 03     150                BEQ    :1       
                151 
C3B1: 4C 9F C3  152                JMP    TEST     
                153 
C3B4: C6 06     154  :1            DEC    COMPT1   
C3B6: F0 16     155                BEQ    TEXTE1    ;ERREUR TEMPS TROP LONG
                156 
C3B8: A9 FF     157                LDA    #$FF     
C3BA: 85 07     158                STA    COMPTEUR 
C3BC: 4C 9F C3  159                JMP    TEST     
                160 
C3BF: AD D8 C0  161  RECUE         LDA    SERIE    
C3C2: 60        162                RTS             
                163 
C3C3: 8D D8 C0  164  TRANS         STA    SERIE    
C3C6: AD D9 C0  165  TEST1         LDA    STATUS   
C3C9: 29 10     166                AND    #%00010000
C3CB: F0 F9     167                BEQ    TEST1    
                168 
C3CD: 60        169                RTS             
                170 
C3CE: 20 DD FB  171  TEXTE1        JSR    BELL      ;BIP ET AFFICHAGE MESSAGE ERR TRANSMISSION
C3D1: A2 00     172                LDX    #$00     
C3D3: BD E1 C3  173  AA            LDA    TABLE,X  
C3D6: C9 40     174                CMP    #'@'      ;TERMINATEUR?
C3D8: F0 B7     175                BEQ    FIN       ;OUI
                176 
C3DA: 20 F0 FD  177                JSR    COUT1    
C3DD: E8        178                INX             
C3DE: 4C D3 C3  179                JMP    AA       
                180 
C3E1: C5 D2 D2  181  TABLE         ASC    "ERREUR DE TRANSMISSION"
C3E4: C5 D5 D2 A0 C4 C5 A0 D4
C3EC: D2 C1 CE D3 CD C9 D3 D3
C3F4: C9 CF CE
C3F7: 40        182                ASC    '@' ;RECONNAISSANCE DE FIN DE TEXTE
                183 
C3F8: FF FF FF  184                DS     \,$FF     ;REMPLI DE $FF LE RESTE DE LA PAGE
C3FB: FF FF FF FF FF
                185 
                186                SAV    APPLE_SAS

Object saved as APPLE_SAS,A$C300,L$0100



--End assembly, 256 bytes, Errors: 0


Symbol table - alphabetical order:

   AA           =$C3D3      ADRB         =$08        ADRH         =$09     ?  ADRMEMB      =$1C
?  ADRMEMH      =$1D     ?  ADRPROMB     =$1A     ?  ADRPROMH     =$1B        ATTEND       =$C34D
   BELL         =$FBDD      BLOCS        =$ED     ?  CLAVIER      =$FD1B      COMMANDE     =$C0DA
   COMPT1       =$06        COMPTEUR     =$07        CONTROLE     =$C0DB   ?  CORPROAP     =$C300
   COUT1        =$FDF0      DATA         =$18     ?  DATA1        =$0C        DEUXK        =$C322
   DONNEE       =$C397   ?  ECRAN        =$FDED   ?  EFFACE       =$FC58      ENVOI        =$C36A
?  EPIA1        =$1E     ?  EPIA2        =$1F        EPROM        =$C800      FIN          =$C391
   FORMAT       =$047B      HUITK        =$C340      IOREST       =$FF3F      IOSAVE       =$FF4A
?  LPBPIA1      =$18     ?  LPBPIA2      =$19     ?  PRBYTE       =$FDDA      QUATREK      =$C330
   RECUE        =$C3BF   ?  RETOUR       =$FA62      SERIE        =$C0D8      SOMME        =$F9
   STATUS       =$C0D9      TABLE        =$C3E1      TEST         =$C39F      TEST1        =$C3C6
   TEXTE1       =$C3CE      TRANS        =$C3C3  


Symbol table - numerical order:

   COMPT1       =$06        COMPTEUR     =$07        ADRB         =$08        ADRH         =$09
?  DATA1        =$0C     ?  LPBPIA1      =$18        DATA         =$18     ?  LPBPIA2      =$19
?  ADRPROMB     =$1A     ?  ADRPROMH     =$1B     ?  ADRMEMB      =$1C     ?  ADRMEMH      =$1D
?  EPIA1        =$1E     ?  EPIA2        =$1F        BLOCS        =$ED        SOMME        =$F9
   FORMAT       =$047B      SERIE        =$C0D8      STATUS       =$C0D9      COMMANDE     =$C0DA
   CONTROLE     =$C0DB   ?  CORPROAP     =$C300      DEUXK        =$C322      QUATREK      =$C330
   HUITK        =$C340      ATTEND       =$C34D      ENVOI        =$C36A      FIN          =$C391
   DONNEE       =$C397      TEST         =$C39F      RECUE        =$C3BF      TRANS        =$C3C3
   TEST1        =$C3C6      TEXTE1       =$C3CE      AA           =$C3D3      TABLE        =$C3E1
   EPROM        =$C800   ?  RETOUR       =$FA62      BELL         =$FBDD   ?  EFFACE       =$FC58
?  CLAVIER      =$FD1B   ?  PRBYTE       =$FDDA   ?  ECRAN        =$FDED      COUT1        =$FDF0
   IOREST       =$FF3F      IOSAVE       =$FF4A


PROGRAMME PROGRAMMATEUR:


Il est tout à fait possible de réassembler le firmware pour une utilisation dans un autre slot. Mais il vous faudra pour celà modifier les sources pour pointer sur les bonnes adresses liées à l'usage d'un slot donné (ORG, adresses $C0xx des PIA, pointeur page 3 du CTRL-Y et usage page 4 pour l'émulateur).
Je n'ai pas essayé mais à première vue, il n'y a pas de raison pour que celà ne fonctionne pas sur une apple //e.


:ASM
                1   
                2                  ORG    $C800    
                3   
                4    ********************************
                5    *                              *
                6    *    Programmateur d'eproms    *
                7    *       Yves-Paul MORICE       *
                8    *                              *
                9    ********************************
                10  
                11   * Conversion source Lisa 2.5 vers Merlin avec
                12   * CiderPress (Andy MacFadden) et Deckard
                13  
                14  
                15   * Usage spécifique programmateur eprom
                16  
                17   FORMAT        EQU    $047B     ;$0478+slot 3
                18  
                19   ORA1          EQU    $C0B0     ;REGISTRE ORA OU DDRA DU PIA1
                20   CRA1          EQU    $C0B1     ;REGISTRE DE CONTROLE PORTA DU PIA1
                21   ORB1          EQU    $C0B2     ;REGISTRE ORB OU DDRB DU PIA1
                22   CRB1          EQU    $C0B3     ;REGISTRE DE CONTROLE PORTB DU PIA1
                23   ORA2          EQU    $C0B4     ;REGISTRE ORA OU DDRA DU PIA2
                24   CRA2          EQU    $C0B5     ;REGISTRE DE CONTROLE PORTA DU PIA2
                25   ORB2          EQU    $C0B6     ;REGISTRE ORB OU DDRB DU PIA2
                26   CRB2          EQU    $C0B7     ;REGISTRE DE CONTROLE PORTB DU PIA2
                27  
                28   SERIE         EQU    $C0D8    
                29   STATUS        EQU    $C0D9    
                30   COMMANDE      EQU    $C0DA    
                31   CONTROLE      EQU    $C0DB    
                32  
                33   EPROM         EQU    $C800    
                34  
                35   * Adresses ROM
                36  
                37   RETOUR        EQU    $FA62    
                38   BELL          EQU    $FBDD    
                39   ECRAN         EQU    $FBFD    
                40   VTAB          EQU    $FC22    
                41   CLREOP        EQU    $FC42    
                42   HOME          EQU    $FC58    
                43   CR            EQU    $FC62    
                44   LF            EQU    $FC66    
                45   CLREOL        EQU    $FC9C    
                46   WAIT          EQU    $FCA8    
                47   CLAVIER       EQU    $FD0C    
                48   PRBYTE        EQU    $FDDA    
                49   COUT1         EQU    $FDF0    
                50   IOSAVE        EQU    $FF4A    
                51   IOREST        EQU    $FF3F    
                52  
                53   * Adresses page 0
                54  
                55   CSWL          EQU    $36      
                56   CSWH          EQU    $37      
                57  
                58   CH            EQU    $24       ;POSITION HORIZONTALE CURSEUR
                59   CV            EQU    $25       ; "" VERTICALE ""
                60   DATA          EQU    $18       ;TAMPON DE DONNEE
                61   TYPE          EQU    $19       ;TYPE D'EPROM (0 A 3)
                62   PB2LECT       EQU    $1A       ;CONFIG PORT POUR LECTURE
                63   PB2ECRI       EQU    $1B       ;"" "" ECRITURE
                64   ADRMEMB       EQU    $1C       ;Adresse low implantation mémoire
                65   ADRMEMH       EQU    $1D       ;Idem high
                66   NEUVE         EQU    $1E       ;=0 SI EPROM NON VIERGE
                67   NUMERO        EQU    $1F       ;POINTEUR DU NO D'EPROM POUR AFTYPE
                68   CONSERVE      EQU    $EF       ;SAUVEGARDE DE Y
                69   SOMME         EQU    $F9       ;CHECKSUM
                70   COMPTEUR      EQU    $07      
                71   PASSE         EQU    $06       ;NB DE PASSE POUR PROG. 1 OCTET
                72   EGALITE       EQU    $EC       ;=0 SI EPROM = MEMOIRE
                73   XDM           EQU    $FE      
                74   MC            EQU    $FF      
                75   DU            EQU    $D6       ; "" "" ""
                76   TENSION       EQU    $D7       ;O:VPP=12,5V 1:VPP= 21V
                77   TABLEB        EQU    $CE       ;Pointeur low chaines TXT
                78   TABLEH        EQU    $CF       ;Pointeur High chaines TXT
                79   BLOCS         EQU    $ED       ;NB DE PAGES A PROGRAMMER
                80   BLOCTEST      EQU    $EE       ;TAMPON
                81   ADRB          EQU    $08       ;ADR. BASSE EPROM EN COURS
                82   ADRH          EQU    $09       ;"" HAUTE "" ""
                83   TEMPS         EQU    $FA       ;DUREE IMPULSION
                84   TEMPSX4       EQU    $FB       ;DUREE IMPULS.DE MAINTIEN
                85   PB1ECRI       EQU    $FC       ;CONFIG PB PIA1 ECRITURE AVEC VPP
                86  
                87   ********************************
                88  
C800: A9 F0     89                 LDA    #<COUT1   ; output normal
C802: 85 36     90                 STA    CSWL     
C804: A9 FD     91                 LDA    #>COUT1  
C806: 85 37     92                 STA    CSWH     
                93  
C808: A9 38     94   CORPRO        LDA    #%00111000
C80A: 8D B1 C0  95                 STA    CRA1     
C80D: 8D B3 C0  96                 STA    CRB1     
C810: 8D B7 C0  97                 STA    CRB2     
C813: A9 FF     98                 LDA    #$FF     
C815: 8D B0 C0  99                 STA    ORA1     
C818: 8D B2 C0  100                STA    ORB1     
C81B: 8D B6 C0  101                STA    ORB2     
C81E: A9 3C     102                LDA    #%00111100
C820: 8D B1 C0  103                STA    CRA1     
C823: 8D B5 C0  104                STA    CRA2     
C826: 8D B3 C0  105                STA    CRB1     
C829: 8D B7 C0  106                STA    CRB2     
                107 
C82C: A9 00     108                LDA    #$00      ; low adr
C82E: 85 CE     109                STA    TABLEB   
C830: 85 1C     110                STA    ADRMEMB  
C832: A9 FF     111                LDA    #$FF     
C834: 8D B6 C0  112                STA    ORB2     
C837: A9 CE     113                LDA    #>TBL_CE00
C839: 85 CF     114                STA    TABLEH   
                115 
C83B: 20 58 FC  116  DISPLAY       JSR    HOME      ; choix du type d'eprom
C83E: A0 00     117                LDY    #$00     
C840: 20 E0 CD  118                JSR    TEXTE    
C843: 20 0C FD  119  ATTEND        JSR    CLAVIER   ; Attente sélection
C846: 29 0F     120                AND    #$0F     
C848: C9 01     121                CMP    #1       
C84A: F0 13     122                BEQ    :1        ; 2716
                123 
C84C: C9 02     124                CMP    #2       
C84E: F0 0F     125                BEQ    :1        ; 2732
                126 
C850: C9 03     127                CMP    #3       
C852: F0 0B     128                BEQ    :1        ; 2764
                129 
C854: C9 04     130                CMP    #4        ; 27128
C856: F0 07     131                BEQ    :1       
                132 
C858: C9 05     133                CMP    #5       
C85A: F0 7C     134                BEQ    HUIT      ; quitter
                135 
C85C: 4C 43 C8  136                JMP    ATTEND    ; touche non gérée
                137 
C85F: 38        138  :1            SEC              ; eprom [0,3]
C860: E9 01     139                SBC    #1       
C862: AA        140                TAX             
C863: BD 14 CA  141                LDA    CONFLECT,X
C866: 85 1A     142                STA    PB2LECT  
C868: BD 18 CA  143                LDA    CONFECRI,X
C86B: 85 1B     144                STA    PB2ECRI  
C86D: BD 1C CA  145                LDA    VOLUME,X 
C870: 85 ED     146                STA    BLOCS    
C872: 85 EE     147                STA    BLOCTEST 
C874: BD 20 CA  148                LDA    CODETYPE,X
C877: 85 19     149                STA    TYPE     
C879: BD 24 CA  150                LDA    NUMTYPE,X
C87C: 85 1F     151                STA    NUMERO   
C87E: 20 B2 CD  152  SUITE         JSR    AFTYPE   
                153 
C881: A9 CE     154                LDA    #>TBL_CE00 ; affichage menu
C883: 85 CF     155                STA    TABLEH   
C885: A0 34     156                LDY    #52      
C887: 20 E0 CD  157                JSR    TEXTE    
C88A: 20 62 FC  158                JSR    CR       
C88D: 20 62 FC  159                JSR    CR       
                160 
C890: 20 0C FD  161  CLAV          JSR    CLAVIER   ; attente option
C893: C9 B1     162                CMP    #"1"     
C895: F0 4D     163                BEQ    UN        ; lire
                164 
C897: C9 B2     165                CMP    #"2"     
C899: F0 68     166                BEQ    DEUX      ; écrire
                167 
C89B: C9 B3     168                CMP    #"3"     
C89D: F0 76     169                BEQ    TROIS     ; virginité
                170 
C89F: C9 B4     171                CMP    #"4"     
C8A1: F0 17     172                BEQ    LABQUAT   ; checksum
                173 
C8A3: C9 B5     174                CMP    #"5"     
C8A5: F0 16     175                BEQ    LABCINQ   ; copier
                176 
C8A7: C9 B6     177                CMP    #"6"     
C8A9: F0 15     178                BEQ    LABSIX    ; comparaison avec mémoire
                179 
C8AB: C9 B7     180                CMP    #"7"     
C8AD: F0 14     181                BEQ    SEPT      ; sortie moniteur
                182 
C8AF: C9 B8     183                CMP    #"8"     
C8B1: F0 25     184                BEQ    HUIT      ; quitter
                185 
C8B3: C9 B9     186                CMP    #"9"     
C8B5: F0 84     187                BEQ    DISPLAY   ; changer type eprom
                188 
C8B7: 4C 90 C8  189                JMP    CLAV      ;Touche non gérée
                190 
                191  *===============================
                192 
C8BA: 4C 51 C9  193  LABQUAT       JMP    QUATRE   
                194 
C8BD: 4C 83 C9  195  LABCINQ       JMP    CINQ     
                196 
C8C0: 4C B5 C9  197  LABSIX        JMP    SIX      
                198 
                199  *===============================
                200 
                201  * Sortie moniteur (position ctrl-Y)
                202 
C8C3: A9 4C     203  SEPT          LDA    #$4C      ; JMP
C8C5: 8D F8 03  204                STA    $3F8     
C8C8: A9 00     205                LDA    #<$C300  
C8CA: 8D F9 03  206                STA    $3F9     
C8CD: A9 C3     207                LDA    #>$C300  
C8CF: 8D FA 03  208                STA    $3FA     
C8D2: 20 58 FC  209                JSR    HOME     
C8D5: 4C 69 FF  210                JMP    $FF69    
                211 
                212  *===============================
                213 
                214  * Quitter
                215 
C8D8: 20 58 FC  216  HUIT          JSR    HOME     
C8DB: 20 3F FF  217                JSR    IOREST   
C8DE: 6C F2 03  218                JMP    ($3F2)   
                219 
                220  *===============================
                221 
C8E1: 4C 3B C8  222  NEUF          JMP    DISPLAY  
                223 
                224  *===============================
                225 
                226  * Lire eprom
                227 
C8E4: 20 B2 CD  228  UN            JSR    AFTYPE   
C8E7: A0 C8     229                LDY    #200     
C8E9: 20 E0 CD  230                JSR    TEXTE    
C8EC: 20 3C CA  231  AA            JSR    RET      
C8EF: 20 8E CA  232                JSR    LECTURE  
C8F2: 20 BB CA  233                JSR    CORLECT  
C8F5: 20 B2 CD  234                JSR    AFTYPE   
C8F8: A0 EF     235                LDY    #239     
C8FA: 20 E0 CD  236                JSR    TEXTE    
C8FD: 20 0C FD  237                JSR    CLAVIER  
C900: 4C 7E C8  238                JMP    SUITE    
                239 
                240  *===============================
                241 
                242  * Ecrire eprom
                243 
C903: 20 D3 CA  244  DEUX          JSR    ECRITURE 
C906: 20 62 FC  245                JSR    CR       
C909: A9 CE     246                LDA    #>TBL_CE00
C90B: 85 CF     247                STA    TABLEH   
C90D: A0 D0     248                LDY    #208     
C90F: 20 E0 CD  249                JSR    TEXTE    
C912: 4C 61 CB  250                JMP    ECRIT    
                251 
                252  *===============================
                253 
                254  * Virginité eprom
                255 
C915: 20 B2 CD  256  TROIS         JSR    AFTYPE   
C918: A9 CF     257                LDA    #>TBL_CF00
C91A: 85 CF     258                STA    TABLEH   
C91C: A0 7A     259                LDY    #122     
C91E: 20 E0 CD  260                JSR    TEXTE    
C921: 20 62 FC  261                JSR    CR       
C924: 20 44 CA  262                JSR    COMPARER 
C927: 20 62 FC  263                JSR    CR       
C92A: A5 1E     264                LDA    NEUVE    
C92C: F0 1B     265                BEQ    CC       
                266 
C92E: 20 DD FB  267                JSR    BELL     
C931: A0 34     268                LDY    #52      
C933: 20 E0 CD  269                JSR    TEXTE    
C936: 20 62 FC  270  FF            JSR    CR       
C939: 20 62 FC  271                JSR    CR       
C93C: A0 00     272                LDY    #0       
C93E: 20 E0 CD  273                JSR    TEXTE    
C941: 20 28 CA  274                JSR    INTERRO  
C944: F0 CF     275                BEQ    TROIS    
C946: 4C 7E C8  276                JMP    SUITE    
                277 
C949: A0 84     278  CC            LDY    #132     
C94B: 20 E0 CD  279                JSR    TEXTE    
C94E: 4C 36 C9  280                JMP    FF       
                281 
                282  *===============================
                283 
                284  * Checksum
                285 
C951: 20 B2 CD  286  QUATRE        JSR    AFTYPE   
C954: A9 CF     287                LDA    #>TBL_CF00
C956: 85 CF     288                STA    TABLEH   
C958: A0 91     289                LDY    #145     
C95A: 20 E0 CD  290                JSR    TEXTE    
C95D: 20 44 CA  291                JSR    COMPARER 
C960: 20 62 FC  292                JSR    CR       
C963: 20 62 FC  293                JSR    CR       
C966: A0 99     294                LDY    #153     
C968: 20 E0 CD  295                JSR    TEXTE    
C96B: A5 F9     296                LDA    SOMME    
C96D: 20 DA FD  297                JSR    PRBYTE   
C970: 20 62 FC  298                JSR    CR       
C973: 20 62 FC  299                JSR    CR       
C976: A0 00     300                LDY    #0       
C978: 20 E0 CD  301                JSR    TEXTE    
C97B: 20 28 CA  302  HH            JSR    INTERRO  
C97E: F0 D1     303                BEQ    QUATRE   
                304 
C980: 4C 7E C8  305                JMP    SUITE    
                306 
                307  *===============================
                308 
                309  * Copier
                310 
C983: 20 B2 CD  311  CINQ          JSR    AFTYPE   
C986: A9 CF     312                LDA    #>TBL_CF00
C988: 85 CF     313                STA    TABLEH   
C98A: A0 A3     314                LDY    #163     
C98C: 20 E0 CD  315                JSR    TEXTE    
C98F: 20 62 FC  316                JSR    CR       
C992: 20 62 FC  317                JSR    CR       
C995: A0 AA     318                LDY    #170     
C997: 20 E0 CD  319                JSR    TEXTE    
C99A: 20 3C CA  320                JSR    RET      
C99D: 20 8E CA  321                JSR    LECTURE  
C9A0: 20 BB CA  322                JSR    CORLECT  
C9A3: 20 D3 CA  323                JSR    ECRITURE 
C9A6: 20 62 FC  324                JSR    CR       
C9A9: A9 CE     325                LDA    #>TBL_CE00
C9AB: 85 CF     326                STA    TABLEH   
C9AD: A0 D0     327                LDY    #208     
C9AF: 20 E0 CD  328                JSR    TEXTE    
C9B2: 4C 61 CB  329                JMP    ECRIT    
                330 
                331  *===============================
                332 
                333  * Comparer eprom avec contenu mémoire
                334 
C9B5: 20 B2 CD  335  SIX           JSR    AFTYPE   
C9B8: A9 CF     336                LDA    #>TBL_CF00
C9BA: 85 CF     337                STA    TABLEH   
C9BC: A0 D0     338                LDY    #208     
C9BE: 20 E0 CD  339                JSR    TEXTE    
C9C1: 20 62 FC  340                JSR    CR       
C9C4: 20 62 FC  341                JSR    CR       
C9C7: 20 62 FC  342                JSR    CR       
C9CA: A9 CE     343                LDA    #>TBL_CE00
C9CC: 85 CF     344                STA    TABLEH   
C9CE: A0 D0     345                LDY    #208     
C9D0: 20 E0 CD  346                JSR    TEXTE    
C9D3: 20 3C CA  347                JSR    RET      
C9D6: 20 44 CA  348                JSR    COMPARER 
C9D9: 20 62 FC  349                JSR    CR       
C9DC: 20 62 FC  350                JSR    CR       
C9DF: A5 EC     351                LDA    EGALITE  
C9E1: D0 1C     352                BNE    LAB2     
C9E3: A9 CF     353                LDA    #>TBL_CF00
C9E5: 85 CF     354                STA    TABLEH   
C9E7: A0 D9     355                LDY    #217     
C9E9: 20 E0 CD  356                JSR    TEXTE    
C9EC: 20 62 FC  357  DB            JSR    CR       
C9EF: 20 62 FC  358                JSR    CR       
C9F2: A0 00     359                LDY    #0       
C9F4: 20 E0 CD  360                JSR    TEXTE    
C9F7: 20 28 CA  361                JSR    INTERRO  
C9FA: F0 B9     362                BEQ    SIX      
                363 
C9FC: 4C 7E C8  364                JMP    SUITE    
                365 
C9FF: 20 62 FC  366  LAB2          JSR    CR       
CA02: A9 CF     367                LDA    #>TBL_CF00
CA04: 85 CF     368                STA    TABLEH   
CA06: A0 E7     369                LDY    #231     
CA08: 20 E0 CD  370                JSR    TEXTE    
CA0B: 20 62 FC  371                JSR    CR       
CA0E: 20 DD FB  372                JSR    BELL     
CA11: 4C EC C9  373                JMP    DB       
                374 
CA14: 4C        375  CONFLECT      DFB    %01001100
CA15: 5C        376                DFB    %01011100
CA16: 7C        377                DFB    %01111100
CA17: 7C        378                DFB    %01111100
CA18: 4E        379  CONFECRI      DFB    %01001110
CA19: 57        380                DFB    %01010111
CA1A: 3E        381                DFB    %00111110
CA1B: 3E        382                DFB    %00111110
                383 
CA1C: 08        384  VOLUME        DFB    8        
CA1D: 10        385                DFB    16       
CA1E: 20        386                DFB    32       
CA1F: 40        387                DFB    64       
                388 
CA20: 00        389  CODETYPE      DFB    0        
CA21: 01        390                DFB    1        
CA22: 02        391                DFB    2        
CA23: 03        392                DFB    3        
                393 
CA24: 00        394  NUMTYPE       DFB    0        
CA25: 05        395                DFB    5        
CA26: 0A        396                DFB    10       
CA27: 0F        397                DFB    15       
                398 
CA28: 20 0C FD  399  INTERRO       JSR    CLAVIER  
CA2B: C9 CF     400                CMP    #"O"     
CA2D: F0 07     401                BEQ    :1       
                402 
CA2F: C9 CE     403                CMP    #"N"     
CA31: F0 06     404                BEQ    :2       
                405 
CA33: 4C 28 CA  406                JMP    INTERRO  
                407 
CA36: A9 00     408  :1            LDA    #$00     
CA38: 60        409                RTS             
                410 
CA39: A9 FF     411  :2            LDA    #$FF     
CA3B: 60        412                RTS             
                413 
CA3C: 20 0C FD  414  RET           JSR    CLAVIER   ; attente
CA3F: C9 8D     415                CMP    #$8D      ; return?
CA41: D0 F9     416                BNE    RET      
                417 
CA43: 60        418                RTS             
                419 
                420  *===============================
                421 
CA44: A9 00     422  COMPARER      LDA    #$00     
CA46: 85 F9     423                STA    SOMME    
CA48: 85 1E     424                STA    NEUVE    
CA4A: 85 EC     425                STA    EGALITE  
CA4C: A8        426                TAY             
CA4D: 20 8E CA  427                JSR    LECTURE  
CA50: AD B4 C0  428  LECTMEM       LDA    ORA2     
CA53: 85 18     429                STA    DATA     
CA55: D1 1C     430                CMP    (ADRMEMB),Y
CA57: F0 04     431                BEQ    :1       
                432 
CA59: A9 BB     433                LDA    #$BB     
CA5B: 85 EC     434                STA    EGALITE  
CA5D: A5 18     435  :1            LDA    DATA     
CA5F: C9 FF     436                CMP    #$FF     
CA61: F0 0B     437                BEQ    :2       
                438 
CA63: A9 BB     439                LDA    #$BB     
CA65: 85 1E     440                STA    NEUVE    
CA67: 18        441                CLC             
CA68: A5 18     442                LDA    DATA     
CA6A: 65 F9     443                ADC    SOMME    
CA6C: 85 F9     444                STA    SOMME    
CA6E: EE B0 C0  445  :2            INC    ORA1     
CA71: C8        446                INY             
CA72: D0 DC     447                BNE    LECTMEM  
                448 
CA74: E6 1D     449                INC    ADRMEMH  
CA76: C6 EE     450                DEC    BLOCTEST 
CA78: D0 0E     451                BNE    T01      
                452 
CA7A: A9 3C     453  HT            LDA    #%00111100
CA7C: 8D B7 C0  454                STA    CRB2     
CA7F: AD B6 C0  455                LDA    ORB2     
CA82: 09 81     456                ORA    #%10000001
CA84: 8D B6 C0  457                STA    ORB2     
CA87: 60        458                RTS             
                459 
CA88: EE B2 C0  460  T01           INC    ORB1     
CA8B: 4C 50 CA  461                JMP    LECTMEM  
                462 
CA8E: A9 3C     463  LECTURE       LDA    #%00111100
CA90: 8D B5 C0  464                STA    CRA2     
CA93: A2 00     465                LDX    #$00     
CA95: 20 23 CD  466                JSR    SORTIE   
CA98: A5 ED     467                LDA    BLOCS    
CA9A: 85 EE     468                STA    BLOCTEST 
CA9C: A5 1A     469                LDA    PB2LECT  
CA9E: 8D B6 C0  470                STA    ORB2     
CAA1: A9 34     471                LDA    #%00110100
CAA3: 8D B7 C0  472                STA    CRB2     
CAA6: A9 00     473                LDA    #$00     
CAA8: 8D B0 C0  474                STA    ORA1     
CAAB: A8        475                TAY             
CAAC: A9 C0     476                LDA    #%11000000
CAAE: 8D B2 C0  477                STA    ORB1     
CAB1: A9 FA     478                LDA    #250     
CAB3: 20 A8 FC  479                JSR    WAIT     
CAB6: A9 08     480                LDA    #>$0800  
CAB8: 85 1D     481                STA    ADRMEMH  
CABA: 60        482                RTS             
                483 
CABB: AD B4 C0  484  CORLECT       LDA    ORA2     
CABE: 91 1C     485                STA    (ADRMEMB),Y
CAC0: EE B0 C0  486                INC    ORA1     
CAC3: C8        487                INY             
CAC4: D0 F5     488                BNE    CORLECT  
                489 
CAC6: EE B2 C0  490                INC    ORB1     
CAC9: E6 1D     491                INC    ADRMEMH  
CACB: C6 EE     492                DEC    BLOCTEST 
CACD: D0 EC     493                BNE    CORLECT  
                494 
CACF: 20 7A CA  495                JSR    HT       
CAD2: 60        496                RTS             
                497 
CAD3: 20 B2 CD  498  ECRITURE      JSR    AFTYPE   
CAD6: A9 CF     499                LDA    #>TBL_CF00
CAD8: 85 CF     500                STA    TABLEH   
CADA: A0 0B     501                LDY    #11      
CADC: 20 E0 CD  502                JSR    TEXTE    
CADF: 20 62 FC  503                JSR    CR       
CAE2: A5 19     504                LDA    TYPE     
CAE4: F0 53     505                BEQ    :2       
                506 
CAE6: C9 01     507                CMP    #1       
CAE8: F0 63     508                BEQ    :3       
                509 
CAEA: A0 14     510                LDY    #20      
CAEC: 20 E0 CD  511                JSR    TEXTE    
CAEF: 20 62 FC  512                JSR    CR       
CAF2: A0 29     513                LDY    #41      
CAF4: 20 E0 CD  514                JSR    TEXTE    
CAF7: 20 62 FC  515                JSR    CR       
CAFA: 20 62 FC  516                JSR    CR       
CAFD: A0 2F     517                LDY    #47      
CAFF: 20 E0 CD  518                JSR    TEXTE    
                519 
CB02: 20 0C FD  520  :1            JSR    CLAVIER  
CB05: C9 B1     521                CMP    #"1"     
CB07: F0 07     522                BEQ    :4       
                523 
CB09: C9 B2     524                CMP    #"2"     
CB0B: F0 15     525                BEQ    :5       
                526 
CB0D: 4C 02 CB  527                JMP    :1       
                528 
CB10: A0 23     529  :4            LDY    #35      
CB12: 20 E0 CD  530                JSR    TEXTE    
CB15: A9 C0     531                LDA    #%11000000
CB17: 85 FC     532                STA    PB1ECRI  
CB19: A9 14     533                LDA    #20      
CB1B: 85 FA     534                STA    TEMPS    
CB1D: A9 28     535                LDA    #40      
CB1F: 85 FB     536                STA    TEMPSX4  
CB21: 60        537                RTS             
                538 
CB22: A0 2B     539  :5            LDY    #43      
CB24: 20 E0 CD  540                JSR    TEXTE    
CB27: A9 40     541                LDA    #%01000000
CB29: 85 FC     542                STA    PB1ECRI  
CB2B: A9 3C     543                LDA    #%00111100
CB2D: 8D B3 C0  544                STA    CRB1     
CB30: A9 3C     545                LDA    #60      
CB32: 85 FA     546                STA    TEMPS    
CB34: A9 6E     547                LDA    #110     
CB36: 85 FB     548                STA    TEMPSX4  
CB38: 60        549                RTS             
                550 
CB39: A0 2F     551  :2            LDY    #47      
CB3B: 20 E0 CD  552                JSR    TEXTE    
CB3E: A0 F4     553                LDY    #244     
CB40: 20 E0 CD  554                JSR    TEXTE    
CB43: A9 00     555                LDA    #$00     
CB45: 85 FC     556                STA    PB1ECRI  
CB47: A9 34     557                LDA    #%00110100
CB49: 8D B3 C0  558                STA    CRB1     
CB4C: 60        559                RTS             
                560 
CB4D: A0 2F     561  :3            LDY    #47      
CB4F: 20 E0 CD  562                JSR    TEXTE    
CB52: A0 2B     563                LDY    #43      
CB54: 20 E0 CD  564                JSR    TEXTE    
CB57: A9 00     565                LDA    #$00     
CB59: 85 FC     566                STA    PB1ECRI  
CB5B: A9 3C     567                LDA    #%00111100
CB5D: 8D B3 C0  568                STA    CRB1     
CB60: 60        569                RTS             
                570 
CB61: 20 3C CA  571  ECRIT         JSR    RET      
CB64: 20 44 CA  572                JSR    COMPARER 
CB67: 20 62 FC  573                JSR    CR       
CB6A: 20 62 FC  574                JSR    CR       
CB6D: A5 1E     575                LDA    NEUVE    
CB6F: F0 25     576                BEQ    :1       
                577 
CB71: A9 CF     578                LDA    #>TBL_CF00
CB73: 85 CF     579                STA    TABLEH   
CB75: A0 34     580                LDY    #52      
CB77: 20 E0 CD  581                JSR    TEXTE    
CB7A: 20 DD FB  582                JSR    BELL     
CB7D: 20 62 FC  583                JSR    CR       
CB80: 20 62 FC  584                JSR    CR       
CB83: A0 00     585                LDY    #0       
CB85: 20 E0 CD  586                JSR    TEXTE    
CB88: 20 62 FC  587                JSR    CR       
CB8B: 20 62 FC  588                JSR    CR       
CB8E: 20 28 CA  589                JSR    INTERRO  
CB91: F0 03     590                BEQ    :1       
                591 
CB93: 4C 7E C8  592                JMP    SUITE    
                593 
CB96: A9 09     594  :1            LDA    #9       
CB98: 85 25     595                STA    CV       
CB9A: 20 22 FC  596                JSR    VTAB     
CB9D: 20 42 FC  597                JSR    CLREOP   
CBA0: A9 00     598                LDA    #0       
CBA2: 85 24     599                STA    CH       
CBA4: A9 0B     600                LDA    #11      
CBA6: 85 25     601                STA    CV       
CBA8: 20 22 FC  602                JSR    VTAB     
CBAB: A9 CF     603                LDA    #>TBL_CF00
CBAD: 85 CF     604                STA    TABLEH   
CBAF: A0 45     605                LDY    #69      
CBB1: 20 E0 CD  606                JSR    TEXTE    
CBB4: A9 00     607                LDA    #$00     
CBB6: 8D B0 C0  608                STA    ORA1     
CBB9: 85 08     609                STA    ADRB     
CBBB: 85 09     610                STA    ADRH     
CBBD: 85 EF     611                STA    CONSERVE 
CBBF: 20 DA FD  612                JSR    PRBYTE   
CBC2: A9 00     613                LDA    #$00     
CBC4: 20 DA FD  614                JSR    PRBYTE   
CBC7: A5 ED     615                LDA    BLOCS    
CBC9: 85 EE     616                STA    BLOCTEST 
CBCB: A5 1B     617                LDA    PB2ECRI  
CBCD: 8D B6 C0  618                STA    ORB2     
CBD0: A5 FC     619                LDA    PB1ECRI  
CBD2: 8D B2 C0  620                STA    ORB1     
CBD5: A9 FF     621                LDA    #255     
CBD7: 20 A8 FC  622                JSR    WAIT     
CBDA: A9 08     623                LDA    #>$0800  
CBDC: 85 1D     624                STA    ADRMEMH  
CBDE: A9 34     625                LDA    #%00110100
CBE0: 8D B5 C0  626                STA    CRA2     
CBE3: A5 19     627                LDA    TYPE     
CBE5: F0 67     628                BEQ    T06      
                629 
CBE7: C9 01     630                CMP    #1       
CBE9: F0 63     631                BEQ    T06      
                632 
CBEB: A2 FF     633  FD            LDX    #$FF     
CBED: 20 23 CD  634                JSR    SORTIE   
CBF0: A9 01     635                LDA    #$01     
CBF2: 85 06     636                STA    PASSE    
CBF4: A4 EF     637                LDY    CONSERVE 
CBF6: B1 1C     638                LDA    (ADRMEMB),Y
CBF8: 8D B4 C0  639                STA    ORA2     
CBFB: 85 18     640                STA    DATA     
CBFD: C9 FF     641                CMP    #$FF     
CBFF: F0 4A     642                BEQ    LQUAT    
                643 
CC01: A9 34     644                LDA    #%00110100
CC03: 8D B7 C0  645                STA    CRB2     
CC06: AD B2 C0  646  FJ            LDA    ORB1     
CC09: 29 BF     647                AND    #%10111111
CC0B: 8D B2 C0  648                STA    ORB1     
CC0E: A5 FA     649                LDA    TEMPS    
CC10: 20 A8 FC  650                JSR    WAIT     
CC13: AD B2 C0  651                LDA    ORB1     
CC16: 09 40     652                ORA    #%01000000
CC18: 8D B2 C0  653                STA    ORB1     
CC1B: A2 00     654                LDX    #$00     
CC1D: 20 23 CD  655                JSR    SORTIE   
CC20: A5 1A     656                LDA    PB2LECT  
CC22: 29 BC     657                AND    #%10111100
CC24: 8D B6 C0  658                STA    ORB2     
CC27: AD B4 C0  659                LDA    ORA2     
CC2A: C5 18     660                CMP    DATA     
CC2C: F0 23     661                BEQ    T07      
                662 
CC2E: E6 06     663                INC    PASSE    
CC30: A5 06     664                LDA    PASSE    
CC32: C9 0F     665                CMP    #15      
CC34: F0 1B     666                BEQ    T07      
                667 
CC36: AD B6 C0  668                LDA    ORB2     
CC39: 09 02     669                ORA    #%00000010
CC3B: 8D B6 C0  670                STA    ORB2     
CC3E: A2 FF     671                LDX    #$FF     
CC40: 20 23 CD  672                JSR    SORTIE   
CC43: A5 18     673                LDA    DATA     
CC45: 8D B4 C0  674                STA    ORA2     
CC48: 4C 06 CC  675                JMP    FJ       
                676 
CC4B: 4C 87 CC  677  LQUAT         JMP    SAUT4    
                678 
CC4E: 4C 37 CD  679  T06           JMP    PROGORD  
                680 
CC51: A5 1B     681  T07           LDA    PB2ECRI  
CC53: 8D B6 C0  682                STA    ORB2     
CC56: A5 18     683                LDA    DATA     
CC58: 8D B4 C0  684                STA    ORA2     
CC5B: AD B2 C0  685                LDA    ORB1     
CC5E: 29 BF     686                AND    #%10111111
CC60: 8D B2 C0  687                STA    ORB1     
CC63: A5 FB     688  :1            LDA    TEMPSX4  
CC65: 20 A8 FC  689                JSR    WAIT     
CC68: C6 06     690                DEC    PASSE    
CC6A: D0 F7     691                BNE    :1       
                692 
CC6C: AD B2 C0  693                LDA    ORB1     
CC6F: 09 40     694                ORA    #%01000000
CC71: 8D B2 C0  695                STA    ORB1     
CC74: A2 00     696                LDX    #$00     
CC76: 20 23 CD  697                JSR    SORTIE   
CC79: A5 1A     698                LDA    PB2LECT  
CC7B: 29 BC     699                AND    #%10111100
CC7D: 8D B6 C0  700                STA    ORB2     
CC80: AD B4 C0  701                LDA    ORA2     
CC83: C5 18     702                CMP    DATA     
CC85: D0 68     703                BNE    T08      
                704 
CC87: EE B0 C0  705  SAUT4         INC    ORA1     
CC8A: AD B6 C0  706                LDA    ORB2     
CC8D: 09 02     707                ORA    #%00000010
CC8F: 8D B6 C0  708                STA    ORB2     
CC92: E6 EF     709                INC    CONSERVE 
CC94: D0 3C     710                BNE    T09      
                711 
CC96: E6 1D     712                INC    ADRMEMH  
CC98: C6 EE     713                DEC    BLOCTEST 
CC9A: D0 33     714                BNE    T11      
                715 
CC9C: A9 3C     716  FINPROG       LDA    #%00111100
CC9E: 8D B5 C0  717                STA    CRA2     
CCA1: 20 62 FC  718                JSR    CR       
CCA4: 20 62 FC  719                JSR    CR       
CCA7: A9 FE     720                LDA    #254     
CCA9: 20 A8 FC  721                JSR    WAIT     
CCAC: 20 44 CA  722                JSR    COMPARER 
CCAF: A5 EC     723                LDA    EGALITE  
CCB1: D0 25     724                BNE    T10      
                725 
CCB3: A9 CF     726                LDA    #>TBL_CF00
CCB5: 85 CF     727                STA    TABLEH   
CCB7: A0 65     728                LDY    #101     
CCB9: 20 E0 CD  729                JSR    TEXTE    
CCBC: 20 62 FC  730  UV            JSR    CR       
CCBF: 20 62 FC  731                JSR    CR       
CCC2: A0 00     732                LDY    #0       
CCC4: 20 E0 CD  733                JSR    TEXTE    
CCC7: 20 28 CA  734                JSR    INTERRO  
CCCA: D0 1D     735                BNE    WW       
                736 
CCCC: 4C 03 C9  737  RECOM         JMP    DEUX     
                738 
CCCF: EE B2 C0  739  T11           INC    ORB1     
CCD2: 20 8F CD  740  T09           JSR    COMPTAGE 
CCD5: 4C EB CB  741                JMP    FD       
                742 
CCD8: 20 62 FC  743  T10           JSR    CR       
CCDB: 20 62 FC  744                JSR    CR       
CCDE: A0 4D     745                LDY    #77      
CCE0: 20 E0 CD  746                JSR    TEXTE    
CCE3: 20 DD FB  747                JSR    BELL     
CCE6: 4C BC CC  748                JMP    UV       
                749 
CCE9: 20 7A CA  750  WW            JSR    HT       
CCEC: 4C 7E C8  751                JMP    SUITE    
                752 
CCEF: 20 62 FC  753  T08           JSR    CR       
CCF2: A0 4D     754                LDY    #77      
CCF4: 20 E0 CD  755                JSR    TEXTE    
CCF7: 20 DD FB  756                JSR    BELL     
CCFA: 20 62 FC  757                JSR    CR       
CCFD: A0 00     758                LDY    #0       
CCFF: 20 E0 CD  759                JSR    TEXTE    
CD02: 20 28 CA  760                JSR    INTERRO  
CD05: D0 E2     761                BNE    WW       
                762 
CD07: A9 0C     763                LDA    #12      
CD09: 85 25     764                STA    CV       
CD0B: 20 22 FC  765                JSR    VTAB     
CD0E: A9 00     766                LDA    #0       
CD10: 85 24     767                STA    CH       
CD12: 20 42 FC  768                JSR    CLREOP   
CD15: A9 0B     769                LDA    #11      
CD17: 85 25     770                STA    CV       
CD19: 20 22 FC  771                JSR    VTAB     
CD1C: A9 0B     772                LDA    #11      
CD1E: 85 24     773                STA    CH       
CD20: 4C 87 CC  774                JMP    SAUT4    
                775 
CD23: AD B5 C0  776  SORTIE        LDA    CRA2     
CD26: 29 FB     777                AND    #%11111011
CD28: 8D B5 C0  778                STA    CRA2     
CD2B: 8E B4 C0  779                STX    ORA2     
CD2E: AD B5 C0  780                LDA    CRA2     
CD31: 09 04     781                ORA    #%00000100
CD33: 8D B5 C0  782                STA    CRA2     
CD36: 60        783                RTS             
                784 
CD37: A2 FF     785  PROGORD       LDX    #$FF     
CD39: 20 23 CD  786                JSR    SORTIE   
CD3C: A9 CF     787                LDA    #>TBL_CF00
CD3E: 85 CF     788                STA    TABLEH   
CD40: A9 34     789                LDA    #%00110100
CD42: 8D B7 C0  790                STA    CRB2     
CD45: AD B6 C0  791                LDA    ORB2     
CD48: 29 7F     792                AND    #%01111111
CD4A: 8D B6 C0  793                STA    ORB2     
CD4D: A5 FC     794                LDA    PB1ECRI  
CD4F: 8D B2 C0  795                STA    ORB1     
CD52: A9 08     796                LDA    #>$0800  
CD54: 85 1D     797                STA    ADRMEMH  
CD56: A4 EF     798  ABB           LDY    CONSERVE 
CD58: B1 1C     799                LDA    (ADRMEMB),Y
CD5A: C9 FF     800                CMP    #$FF     
CD5C: F0 18     801                BEQ    :1       
                802 
CD5E: 8D B4 C0  803                STA    ORA2     
CD61: AD B6 C0  804                LDA    ORB2     
CD64: 49 01     805                EOR    #%00000001
CD66: 8D B6 C0  806                STA    ORB2     
CD69: A9 8E     807                LDA    #142     
CD6B: 20 A8 FC  808                JSR    WAIT     
CD6E: AD B6 C0  809                LDA    ORB2     
CD71: 49 01     810                EOR    #%00000001
CD73: 8D B6 C0  811                STA    ORB2     
CD76: E6 EF     812  :1            INC    CONSERVE 
CD78: EE B0 C0  813                INC    ORA1     
CD7B: D0 0C     814                BNE    :2       
                815 
CD7D: EE B2 C0  816                INC    ORB1     
CD80: E6 1D     817                INC    ADRMEMH  
CD82: C6 EE     818                DEC    BLOCTEST 
CD84: D0 03     819                BNE    :2       
                820 
CD86: 4C 9C CC  821                JMP    FINPROG  
                822 
CD89: 20 8F CD  823  :2            JSR    COMPTAGE 
CD8C: 4C 56 CD  824                JMP    ABB      
                825 
CD8F: E6 08     826  COMPTAGE      INC    ADRB     
CD91: C6 24     827                DEC    CH       
CD93: C6 24     828                DEC    CH       
CD95: A5 08     829                LDA    ADRB     
CD97: 20 DA FD  830                JSR    PRBYTE   
CD9A: A5 08     831                LDA    ADRB     
CD9C: D0 13     832                BNE    :1       
                833 
CD9E: E6 09     834                INC    ADRH     
CDA0: C6 24     835                DEC    CH       
CDA2: C6 24     836                DEC    CH       
CDA4: C6 24     837                DEC    CH       
CDA6: C6 24     838                DEC    CH       
CDA8: A5 09     839                LDA    ADRH     
CDAA: 20 DA FD  840                JSR    PRBYTE   
CDAD: E6 24     841                INC    CH       
CDAF: E6 24     842                INC    CH       
CDB1: 60        843  :1            RTS             
                844 
                845  *===============================
                846 
CDB2: 20 58 FC  847  AFTYPE        JSR    HOME      ; affiche à l'écran le type d'eprom
CDB5: A9 23     848                LDA    #35      
CDB7: 85 24     849                STA    CH       
CDB9: A4 1F     850                LDY    NUMERO   
CDBB: A2 05     851                LDX    #5       
CDBD: B9 CC CD  852  :1            LDA    NUMEPROM,Y
CDC0: 84 07     853                STY    COMPTEUR 
CDC2: 20 FD FB  854                JSR    ECRAN    
CDC5: A4 07     855                LDY    COMPTEUR 
CDC7: C8        856                INY             
CDC8: CA        857                DEX             
CDC9: D0 F2     858                BNE    :1       
                859 
CDCB: 60        860                RTS             
                861 
CDCC: B2 B7 B1  862  NUMEPROM      ASC    "2716 "  
CDCF: B6 A0
CDD1: B2 B7 B3  863                ASC    "2732 "  
CDD4: B2 A0
CDD6: B2 B7 B6  864                ASC    "2764 "  
CDD9: B4 A0
CDDB: B2 B7 B1  865                ASC    "27128"
CDDE: B2 B8
                866 
                867  *==============================*
                868  *                              *
                869  * Affichage chaine à l'écran   *
                870  *                              *
                871  *==============================*
                872 
                873  * In: Y=pointe sur début chaine
                874 
                875  * Note: les chaines de TXT tiennent sur 2 pages aussi
                876  *       le choix de l'auteur pour l'indexation consiste
                877  *       à modifier le pointeur sur la page $CE ou $CF.
                878 
CDE0: B1 CE     879  TEXTE         LDA    (TABLEB),Y
CDE2: C9 C0     880                CMP    #"@"      ;terminateur chaine
CDE4: F0 0F     881                BEQ    :1       
                882 
CDE6: C9 A3     883                CMP    #"#"      ;retour chariot
CDE8: F0 0C     884                BEQ    :2       
                885 
CDEA: 84 07     886                STY    COMPTEUR 
CDEC: 20 FD FB  887                JSR    ECRAN    
CDEF: A4 07     888                LDY    COMPTEUR 
CDF1: C8        889                INY             
CDF2: 4C E0 CD  890                JMP    TEXTE    
                891 
CDF5: 60        892  :1            RTS             
                893 
CDF6: 20 62 FC  894  :2            JSR    CR       
CDF9: 20 66 FC  895                JSR    LF       
CDFC: C8        896                INY             
CDFD: 4C E0 CD  897                JMP    TEXTE    
                898 
                899  *==============================*
                900  *                              *
                901  * Table chaines en $CE00-$CEFF *
                902  *                              *
                903  *==============================*
                904 
                905  TBL_CE00                      
CE00: D4 D9 D0  906                ASC    #TYPE D'EPROM?#
CE03: C5 A0 C4 A7 C5 D0 D2 CF
CE0B: CD BF
CE0D: A3        907                ASC    "#"
CE0E: B1 AD B2  908                ASC    "1-2716#"
CE11: B7 B1 B6 A3
CE15: B2 AD B2  909                ASC    "2-2732#"
CE18: B7 B3 B2 A3
CE1C: B3 AD B2  910                ASC    "3-2764#"
CE1F: B7 B6 B4 A3
CE23: B4 AD B2  911                ASC    "4-27128#"
CE26: B7 B1 B2 B8 A3
CE2B: B5 AD D1  912                ASC    "5-QUITTE@"
CE2E: D5 C9 D4 D4 C5 C0
                913 
CE34: B1 AD CC  914                ASC    "1-LIRE#"
CE37: C9 D2 C5 A3
CE3B: B2 AD C5  915                ASC    "2-ECRIRE#"
CE3E: C3 D2 C9 D2 C5 A3
CE44: B3 AD D6  916                ASC    "3-VIRGINITE#"
CE47: C9 D2 C7 C9 CE C9 D4 C5
CE4F: A3
CE50: B4 AD C3  917                ASC    "4-CHEKSUM#"
CE53: C8 C5 CB D3 D5 CD A3
CE5A: B5 AD C3  918                ASC    "5-COPIER#"
CE5D: CF D0 C9 C5 D2 A3
CE63: B6 AD C3  919                ASC    "6-COMPARER A LA MEMOIRE (DEBUT $0800)#"
CE66: CF CD D0 C1 D2 C5 D2 A0
CE6E: C1 A0 CC C1 A0 CD C5 CD
CE76: CF C9 D2 C5 A0 A8 C4 C5
CE7E: C2 D5 D4 A0 A4 B0 B8 B0
CE86: B0 A9 A3
CE89: B7 AD CD  920                ASC    "7-MONITEUR (RETOUR=CTRL-Y)#"
CE8C: CF CE C9 D4 C5 D5 D2 A0
CE94: A8 D2 C5 D4 CF D5 D2 BD
CE9C: C3 D4 D2 CC AD D9 A9 A3
CEA4: B8 AD D1  921                ASC    "8-QUITTER#"
CEA7: D5 C9 D4 D4 C5 D2 A3
CEAE: B9 AD C3  922                ASC    #9-CHANGER DE TYPE D'EPROM@#
CEB1: C8 C1 CE C7 C5 D2 A0 C4
CEB9: C5 A0 D4 D9 D0 C5 A0 C4
CEC1: A7 C5 D0 D2 CF CD C0
                923 
CEC8: CC C5 C3  924                ASC    "LECTURE#"
CECB: D4 D5 D2 C5 A3
CED0: D0 CC C1  925                ASC    #PLACEZ UNE EPROM PUIS "RETURN"@#
CED3: C3 C5 DA A0 D5 CE C5 A0
CEDB: C5 D0 D2 CF CD A0 D0 D5
CEE3: C9 D3 A0 A2 D2 C5 D4 D5
CEEB: D2 CE A2 C0
                926 
CEEF: C5 D0 D2  927                ASC    "EPROM->$0800@"
CEF2: CF CD AD BE A4 B0 B8 B0
CEFA: B0 C0
                928 
CEFC: FF FF FF  929                DS     \,$FF    
CEFF: FF
                930 
                931  *==============================*
                932  *                              *
                933  * Table chaines en $CF00-$CFFF *
                934  *                              *
                935  *==============================*
                936 
                937  TBL_CF00                      
CF00: D3 D5 C9  938                ASC    "SUITE O/N?@"
CF03: D4 C5 A0 CF AF CE BF C0
CF0B: C5 C3 D2  939                ASC    "ECRITURE@"
CF0E: C9 D4 D5 D2 C5 C0
CF14: D4 C5 CE  940                ASC    "TENSION VPP?#1-12,5V@"
CF17: D3 C9 CF CE A0 D6 D0 D0
CF1F: BF A3 B1 AD B1 B2 AC B5
CF27: D6 C0
CF29: B2 AD B2  941                ASC    "2-21V@"
CF2C: B1 D6 C0
CF2F: D6 D0 D0  942                ASC    "VPP=@"
CF32: BD C0
CF34: C5 D0 D2  943                ASC    "EPROM NON VIERGE@"
CF37: CF CD A0 CE CF CE A0 D6
CF3F: C9 C5 D2 C7 C5 C0
CF45: C5 D0 D2  944                ASC    "EPROM:$@"
CF48: CF CD BA A4 C0
CF4D: C5 D2 D2  945                ASC    "ERREUR DE PROGRAMMATION@"
CF50: C5 D5 D2 A0 C4 C5 A0 D0
CF58: D2 CF C7 D2 C1 CD CD C1
CF60: D4 C9 CF CE C0
CF65: C6 C9 CE  946                ASC    "FIN DE PROGRAMMATION@"
CF68: A0 C4 C5 A0 D0 D2 CF C7
CF70: D2 C1 CD CD C1 D4 C9 CF
CF78: CE C0
                947 
CF7A: D6 C9 D2  948                ASC    "VIRGINITE@"
CF7D: C7 C9 CE C9 D4 C5 C0
CF84: C5 D0 D2  949                ASC    "EPROM VIERGE@"
CF87: CF CD A0 D6 C9 C5 D2 C7
CF8F: C5 C0
CF91: C3 C8 C5  950                ASC    "CHEKSUM@"
CF94: CB D3 D5 CD C0
CF99: C3 C8 C5  951                ASC    "CHEKSUM=$@"
CF9C: CB D3 D5 CD BD A4 C0
CFA3: C3 CF D0  952                ASC    "COPIER@"
CFA6: C9 C5 D2 C0
CFAA: D0 CC C1  953                ASC    #PLACEZ L'EPROM A COPIER PUIS "RETURN"@#
CFAD: C3 C5 DA A0 CC A7 C5 D0
CFB5: D2 CF CD A0 C1 A0 C3 CF
CFBD: D0 C9 C5 D2 A0 D0 D5 C9
CFC5: D3 A0 A2 D2 C5 D4 D5 D2
CFCD: CE A2 C0
                954 
CFD0: C3 CF CD  955                ASC    "COMPARER@"
CFD3: D0 C1 D2 C5 D2 C0
CFD9: C5 D0 D2  956                ASC    "EPROM=MEMOIRE@"
CFDC: CF CD BD CD C5 CD CF C9
CFE4: D2 C5 C0
CFE7: C5 D2 D2  957                ASC    "ERREUR !!   @"
CFEA: C5 D5 D2 A0 A1 A1 A0 A0
CFF2: A0 C0
CFF4: B2 B5 D6  958                ASC    "25V@"
CFF7: C0
                959 
CFF8: FF FF FF  960                DS     \,$FF    
CFFB: FF FF FF FF FF
                961 
                962                SAV    PROGRAMMATEUR

Object saved as PROGRAMMATEUR,A$C800,L$0800



--End assembly, 2048 bytes, Errors: 0


Symbol table - alphabetical order:

?  AA           =$C8EC      ABB          =$CD56      ADRB         =$08        ADRH         =$09
   ADRMEMB      =$1C        ADRMEMH      =$1D        AFTYPE       =$CDB2      ATTEND       =$C843
   BELL         =$FBDD      BLOCS        =$ED        BLOCTEST     =$EE        CC           =$C949
   CH           =$24        CINQ         =$C983      CLAV         =$C890      CLAVIER      =$FD0C
?  CLREOL       =$FC9C      CLREOP       =$FC42      CODETYPE     =$CA20   ?  COMMANDE     =$C0DA
   COMPARER     =$CA44      COMPTAGE     =$CD8F      COMPTEUR     =$07        CONFECRI     =$CA18
   CONFLECT     =$CA14      CONSERVE     =$EF     ?  CONTROLE     =$C0DB      CORLECT      =$CABB
?  CORPRO       =$C808      COUT1        =$FDF0      CR           =$FC62      CRA1         =$C0B1
   CRA2         =$C0B5      CRB1         =$C0B3      CRB2         =$C0B7      CSWH         =$37
   CSWL         =$36        CV           =$25        DATA         =$18        DB           =$C9EC
   DEUX         =$C903      DISPLAY      =$C83B   ?  DU           =$D6        ECRAN        =$FBFD
   ECRIT        =$CB61      ECRITURE     =$CAD3      EGALITE      =$EC     ?  EPROM        =$C800
   FD           =$CBEB      FF           =$C936      FINPROG      =$CC9C      FJ           =$CC06
?  FORMAT       =$047B   ?  HH           =$C97B      HOME         =$FC58      HT           =$CA7A
   HUIT         =$C8D8      INTERRO      =$CA28      IOREST       =$FF3F   ?  IOSAVE       =$FF4A
   LAB2         =$C9FF      LABCINQ      =$C8BD      LABQUAT      =$C8BA      LABSIX       =$C8C0
   LECTMEM      =$CA50      LECTURE      =$CA8E      LF           =$FC66      LQUAT        =$CC4B
?  MC           =$FF     ?  NEUF         =$C8E1      NEUVE        =$1E        NUMEPROM     =$CDCC
   NUMERO       =$1F        NUMTYPE      =$CA24      ORA1         =$C0B0      ORA2         =$C0B4
   ORB1         =$C0B2      ORB2         =$C0B6      PASSE        =$06        PB1ECRI      =$FC
   PB2ECRI      =$1B        PB2LECT      =$1A        PRBYTE       =$FDDA      PROGORD      =$CD37
   QUATRE       =$C951   ?  RECOM        =$CCCC      RET          =$CA3C   ?  RETOUR       =$FA62
   SAUT4        =$CC87      SEPT         =$C8C3   ?  SERIE        =$C0D8      SIX          =$C9B5
   SOMME        =$F9        SORTIE       =$CD23   ?  STATUS       =$C0D9      SUITE        =$C87E
   T01          =$CA88      T06          =$CC4E      T07          =$CC51      T08          =$CCEF
   T09          =$CCD2      T10          =$CCD8      T11          =$CCCF      TABLEB       =$CE
   TABLEH       =$CF        TBL_CE00     =$CE00      TBL_CF00     =$CF00      TEMPS        =$FA
   TEMPSX4      =$FB     ?  TENSION      =$D7        TEXTE        =$CDE0      TROIS        =$C915
   TYPE         =$19        UN           =$C8E4      UV           =$CCBC      VOLUME       =$CA1C
   VTAB         =$FC22      WAIT         =$FCA8      WW           =$CCE9   ?  XDM          =$FE



Symbol table - numerical order:

   PASSE        =$06        COMPTEUR     =$07        ADRB         =$08        ADRH         =$09
   DATA         =$18        TYPE         =$19        PB2LECT      =$1A        PB2ECRI      =$1B
   ADRMEMB      =$1C        ADRMEMH      =$1D        NEUVE        =$1E        NUMERO       =$1F
   CH           =$24        CV           =$25        CSWL         =$36        CSWH         =$37
   TABLEB       =$CE        TABLEH       =$CF     ?  DU           =$D6     ?  TENSION      =$D7
   EGALITE      =$EC        BLOCS        =$ED        BLOCTEST     =$EE        CONSERVE     =$EF
   SOMME        =$F9        TEMPS        =$FA        TEMPSX4      =$FB        PB1ECRI      =$FC
?  XDM          =$FE     ?  MC           =$FF     ?  FORMAT       =$047B      ORA1         =$C0B0
   CRA1         =$C0B1      ORB1         =$C0B2      CRB1         =$C0B3      ORA2         =$C0B4
   CRA2         =$C0B5      ORB2         =$C0B6      CRB2         =$C0B7   ?  SERIE        =$C0D8
?  STATUS       =$C0D9   ?  COMMANDE     =$C0DA   ?  CONTROLE     =$C0DB   ?  EPROM        =$C800
?  CORPRO       =$C808      DISPLAY      =$C83B      ATTEND       =$C843      SUITE        =$C87E
   CLAV         =$C890      LABQUAT      =$C8BA      LABCINQ      =$C8BD      LABSIX       =$C8C0
   SEPT         =$C8C3      HUIT         =$C8D8   ?  NEUF         =$C8E1      UN           =$C8E4
?  AA           =$C8EC      DEUX         =$C903      TROIS        =$C915      FF           =$C936
   CC           =$C949      QUATRE       =$C951   ?  HH           =$C97B      CINQ         =$C983
   SIX          =$C9B5      DB           =$C9EC      LAB2         =$C9FF      CONFLECT     =$CA14
   CONFECRI     =$CA18      VOLUME       =$CA1C      CODETYPE     =$CA20      NUMTYPE      =$CA24
   INTERRO      =$CA28      RET          =$CA3C      COMPARER     =$CA44      LECTMEM      =$CA50
   HT           =$CA7A      T01          =$CA88      LECTURE      =$CA8E      CORLECT      =$CABB
   ECRITURE     =$CAD3      ECRIT        =$CB61      FD           =$CBEB      FJ           =$CC06
   LQUAT        =$CC4B      T06          =$CC4E      T07          =$CC51      SAUT4        =$CC87
   FINPROG      =$CC9C      UV           =$CCBC   ?  RECOM        =$CCCC      T11          =$CCCF
   T09          =$CCD2      T10          =$CCD8      WW           =$CCE9      T08          =$CCEF
   SORTIE       =$CD23      PROGORD      =$CD37      ABB          =$CD56      COMPTAGE     =$CD8F
   AFTYPE       =$CDB2      NUMEPROM     =$CDCC      TEXTE        =$CDE0      TBL_CE00     =$CE00
   TBL_CF00     =$CF00   ?  RETOUR       =$FA62      BELL         =$FBDD      ECRAN        =$FBFD
   VTAB         =$FC22      CLREOP       =$FC42      HOME         =$FC58      CR           =$FC62
   LF           =$FC66   ?  CLREOL       =$FC9C      WAIT         =$FCA8      CLAVIER      =$FD0C
   PRBYTE       =$FDDA      COUT1        =$FDF0      IOREST       =$FF3F   ?  IOSAVE       =$FF4A