★ APPLICATIONS ★ CREATION GRAPHIQUE ★ AUTOMATE CELLULAIRE ★ |
Automate Cellulaire (CPC Infos) | Applications Creation Graphique |
|
0 | 1 | 2 | 3 | 4 |
0 noir | 2 vert | 3 bleur | 1 rouge | 2 vert |
-> x
Le fonctionnement
Mettons-nous à la place de l'automate et suivons son tricotage maille à maille.
Prenons le point après le 0, appelons-le x(1).
On prend sa valeur : 2=x(1). On lui ajoute la valeur du point précédent : 2=0+2=x(0)+x(1). On lui ajoute la valeur du point suivant : 5=0+2+3=x(0)+x(1)+x(2). On dispose d'une somme : 5=x(0)+ x(1)+x(2).
Utilisons la formule :
la somme=5, on prend le chiffre de la formule de rang 5, on obtient 1 :
1=formule (somme).
Somme=3
Rang : 0123456
Formule: 1013312
Obtenu: 1
Sous le point x(1), on trace un point de la couleur correspondant au chiffre couleur rouge.
0 | 1 | 2 | 3 | 4 | |
Ligne début: | 0 | 2 | 3 | 1 | 2 |
Ligne suivante: | 1 Rouge |
On se décale sur le point suivant x(2), on recommence le processus, x(1)+x(2)+x(3)=6, formule (6)=2, on trace sous x(2) un point de couleur 2. On fait cela jusqu'au bout de la ligne, on place 0 en début et en fin de ligne : une 2ème ligne a été tracée sous la 1ère.
On se déplace sur la ligne suivante, on recommence, cela jusqu'à former une image complète.
Figure 1
L'ALGORITHME
Au lieu de points, on parle de cellules. La cuisine ci-dessus peut s'écrire, façon BASIC (voir figure 1).
En BASIC, remplir un écran en mode 1 prend 12 minutes, contre 2 secondes en assembleur.
LES POSSIBILITES MULTIPLES
Modifier la ligne de début modifiera l'aspect du graphisme créé. Changer la formule changera la structure du graphisme. La formule est composée d'un maximum de 28 chiffres, chaque chiffre entre 0 et 9 : les combinaisons possibles sont considérables, libre à vous de les explorer.
LE PROGRAMME
Lancer d'abord ACDATA qui créera le fichier AC.BIN, puis lancer le programme BASIC.
Les formules
Pour choisir une formule, lister le BASIC, supprimer la formule valide (EDIT puis REM), puis valider la formule choisie (EDIT puis supprimer REM).
Le menu
L'option Début détermine la ligne de départ :
On peut choisir le Mode 0 ou 1, (pour tester une formule, essayer d'abord mode 1), et afficher l'image façon Scan (balayage écran) ou Scroll.
Back vous ramènera un écran en arrière.
Run pour lancer l'automate. En fonctionnement, appuyer sur espace pour retourner au menu.
LA STRUCTURE DU PROGRAMME
BASIC
SSPRGM INITIAL ASSEMBLEUR
création tableau adresses lignes
RAM écran 1 (#C000)
création tableau adresses 8 lignes
RAM écran 2 (#4000)
copie encres mode 1 dans tableau
encres mode 1
RETOUR AU BASIC
choix et écrire formule dans tableau formule
choix et écrire ligne début dans tableau cellules
choix et écrire type affichage (scan, scroll, mode 0,1) dans swltch data
SSPRGM ENTREE ASSEMBLEUR
fin interruptions
sauver 2ème Jeu de registres sur pile (2ème Jeu de registres utilisé par DOS lors des interruptions)
sauver pointeur de pile dans buffer pointeur de pile pointe au bas du tableau adresses lignes écran 1 (utile pour scroller en dépilant adresse lignes dans les registres voulus)
PSG et port données prêt à entrer ligne 6 clavier (touche espace) (PSG : Programmable Son Générateur, qui peut aussi lire le clavier)
ssprgm restituer haut écran (efface le menu en BASIC) Initialiser compteur (de lignes image ou de groupe lignes) si data en switch data =1 : aller à scroll mode 0 =2 : aller à scan mode 0 =3 : aller à scroll mode 1 aller à scan mode 1
SCROLL MODE 0
(mode 0 : lignes écran sont doublées (pour obtenir des points carrés),
(permet un scrolling en 2 passes, plus souple)
copie lignes paires 4 à 200 vers lignes paires 2 à 198 copie lignes impaires 3 à 199 vers lignes impaires 1 à 197 charger adresse ligne 199 ssprgm automate cellulaire mode 0 (trace ligne 199, recopie sur ligne 200, décrémente compteur lignes) si touche espace non appuyée boucler en revenant à "copie lignes paires" aller à FIN
SCAN MODE 0
charger adresse ligne 1 ssprgm automate cellulaire mode 0 (trace ligne, recopie sur ligne suivante, décrémente compteur lignes)
si écran non terminé calcul et charger adresse prochaine ligne
boucler en revenant à "ssprgm automate cellulaire mode 0" si touche espace non appuyée boucler en revenant à "charger adresse ligne 1 " aller à FIN
SSPRGM AUTOMATE CELLULAIRE MODE 0
automate cellulaire trace ligne (cf algorithme dans listing assembleur)
copie ligne vers ligne suivante décrémente compteur lignes Image
(100 lignes image formant 200 lignes écran)
si écran terminé
ssprgm sauve tableau cellule dans buffers (pour commande menu "Back") RETOUR
SCROLL MODE 1
(utilise 2 RAM écran : affichage saccadé, mais sans ondulations) copie écran 1 (ligne 3 à 200) vers écran 2 (ligne 1 à 198) charger adresse ligne 199 écran 2 charger nombre lignes à tracer
ssprgm automate cellulaire mode 1 (trace lignes 199 et 200 écran 2, décrémente compteur groupes lignes)
attendre synchro verticale moniteur RAM écran 2 on
copie écran 2 (ligne 3 à 200) vers écran 1 (ligne 1 à 198) charger adresse ligne 199 écran 1 charger nombre lignes à tracer ssprgm automate cellulaire mode 1 (trace lignes 199 et 200 écran 1, décrémente compteur groupes lignes)
attendre synchro verticale moniteur
RAM écran 1 on
si touche espace non appuyée
boucler en revenant à "copie écran
1 vers 2"
aller à FIN
SCAN MODE 1
Initialiser compteur de groupe lignes modifier valeur initialisation compteur de groupe lignes dans code ssprgm sauve tableau cellule dans buffers charger adresse ligne 1 charger nombre lignes à tracer ssprgm automate cellulaire mode 1
(trace 8 lignes, décrémente compteur groupes lignes) si écran non terminé calcul et charger adresse prochaine ligne
boucler en revenant à "charger nombre lignes à tracer* si touche espace non appuyée boucler en revenant à "charger adresse ligne 1 "
rétablir valeur Initialisation compteur de groupe lignes
dans code ssprgm sauve tableau cellule dans buffers aller à FIN
SSPRGM AUTOMATE CELLULAIRE MODE 1
automate cellulaire trace ligne décrémente compteur lignes à tracer
si compteur lignes à tracer > 0 calcul et charger adresse ligne suivante
revenir à "automate cellulaire trace ligne"
(avec scroll : 2 lignes tracées, avec scan : 8 lignes tracées) décrémente compteur groupe lignes
si écran terminé
ssprgm sauve tableau cellule dans buffers (pour commande menu "Back") RETOUR
SSPRGM SAUVE TABLEAU CELLULE DANS BUFFERS
(pour commande menu "Back")
copie : buffer2 -> buffer3, buffer1 buffer2, tableau
cellule -> buffer1 flag écran terminé on (pour scan)
initialiser compteur (groupe) lignes
(à 100 : cas général : 200 lignes
écran / 2 lignes écran par boucle)
(à 25 : cas de scan mode 1 : 200
lignes écran / 8 lignes par boucle)
RETOUR
FIN
sauver 8 lignes haut écran vers buffer
(sur ces 8 lignes s'écrira le menu en BASIC)
rétablir port données en sortie rétablir pointeur de pile d'origine
rétablir 2ème jeu de registres d'origine
rétablir interruptions
RETOUR AU BASIC
|
|