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é:
LES ELEMENTS ET LES CIRCUITS
La face recto de la carte controleur, son circuit et les
éléments à mettre dessus:
La face verso de la carte controleur et son circuit:
Les ports en sortie de l'Apple II europlus (slot 3 = controleur, slot 5
= SSC en option pour utiliser un émulateur d'eprom):
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:
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)
Un schéma du controleur:
L'organigramme d'un programme de l'eprom (APPLE_SAS de $C300 à
$C3FF):
Le source commenté d'un programme de l'eprom du controleur :
APPLE_SAS de $C300 à $C3FF (Lisa 2.5):
L'organigramme d'un programme de l'eprom (PROGRAMMATEUR de $C800
à $CFFF):
Le source commenté d'un programme de l'eprom du controleur :
PROGRAMMATEUR de $C800 à $CFFF (Lisa 2.5):
La doc des éléments du boitier de programmation PRM 4:
Circuits dans le boitier de programmation PRM 4:
Doc complémentaire sur l'inductance d'une bobine cyclindrique:
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.
----------------------------------------------------------------------

|
DOS 3.3
|
Download Sources et objets Eprom Controleur
(gzipped)
|

|
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