MO5 Kandy Krush Java
Modérateurs : Papy.G, fneck, Carl
Re: MO5 Kandy Krush Java
Très bien la nouvelle animation, c'est beaucoup plus parlant. Merci d'avoir pris en compte cette remarque !
Re: MO5 Kandy Krush Java
En effet c'est nettement mieux ainsifarvardin a écrit :Très bien la nouvelle animation, c'est beaucoup plus parlant.
-
- Messages : 7988
- Inscription : 18 sept. 2010 12:08
- Localisation : Brest et parfois les Flandres
Re: MO5 Kandy Krush Java
Bah perso j'aimais bien le bruit lié au remplissage de la grille de départ. Mais bon.
Une remarque: Quand on est en mode auto, on entend le son de nouvelle partie. Je sais pas si c'est voulu, mais du coup il n'est pas silencieux dans ce mode.
Une remarque: Quand on est en mode auto, on entend le son de nouvelle partie. Je sais pas si c'est voulu, mais du coup il n'est pas silencieux dans ce mode.
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Re: MO5 Kandy Krush Java
Oui, j'ai laissé volontairement le son de début de partie en jeu automatique, et j'ai supprimé les son de remplissage de la grille qui énervait les occupants de la pièce quand je testais le jeu
Bon, ce n'est peut-être pas la bonne solution. Pour contenter tout le monde il faudrait pouvoir paramétrer tous les effets. Si le son est gênant, on peut mettre le volume à zéro dans les options de dcmoto. Avec l'exécutable Windows, vous pouvez régler le volume du son du PC.
Nouveauté du jour : Version TO sur disquette, carte SD et cartouche MEMO7
http://dcmoto.free.fr/programmes/kandykrush/index.html
Je ne voulais pas frustrer les thomsonistes qui n'ont pas de MO. La version TO fonctionne sur TO7, TO7/70, TO9, TO8, TO8D, TO9+.
Sur TO7 les versions disquette et carte SD nécessitent l'extension 16K, sinon il n'y a pas assez de place pour charger le DOS.
Sur TO7 sans extension mémoire vous pouvez utiliser la version MEMO7, ou copier le programme KANDY7.BIN sur cassette.
Il se lance par LOADM"",,R
Bon, ce n'est peut-être pas la bonne solution. Pour contenter tout le monde il faudrait pouvoir paramétrer tous les effets. Si le son est gênant, on peut mettre le volume à zéro dans les options de dcmoto. Avec l'exécutable Windows, vous pouvez régler le volume du son du PC.
Nouveauté du jour : Version TO sur disquette, carte SD et cartouche MEMO7
http://dcmoto.free.fr/programmes/kandykrush/index.html
Je ne voulais pas frustrer les thomsonistes qui n'ont pas de MO. La version TO fonctionne sur TO7, TO7/70, TO9, TO8, TO8D, TO9+.
Sur TO7 les versions disquette et carte SD nécessitent l'extension 16K, sinon il n'y a pas assez de place pour charger le DOS.
Sur TO7 sans extension mémoire vous pouvez utiliser la version MEMO7, ou copier le programme KANDY7.BIN sur cassette.
Il se lance par LOADM"",,R
Daniel
L'obstacle augmente mon ardeur.
L'obstacle augmente mon ardeur.
Re: MO5 Kandy Krush Java
Je me disais aussi! Te connaissant ^^Daniel a écrit :Je ne voulais pas frustrer les thomsonistes qui n'ont pas de MO. La version TO fonctionne sur TO7, TO7/70, TO9, TO8, TO8D, TO9+.
PS. Ce serait bien d'avoir les dernières sources afin de les étudier. Enfin cela n'a aucune espèce d'obligation
Re: MO5 Kandy Krush Java
Les sources ne sont pas très propres car j'ai fait beaucoup de modifications ces derniers jours. Je les publierai plus tard sur le site dcmoto, après les avoir arrangées. En attendant voici le brouillon de la version TO.
Code : Tout sélectionner
/**************************************************\
* TO7 KANDY KRUSH JAVA *
* (c) 2016 - Daniel Coulom *
* http://dcmoto.free.fr/ *
* http://forum.system-cfg.com/ *
*--------------------------------------------------*
* Ce code est distribue gratuitement dans l'espoir *
* qu'il sera utile, mais sans aucune garantie et *
* sans engager la responsabilité de l'auteur. *
* Vous pouvez l' utiliser, le modifier et le *
* diffuser librement, en conservant cette licence *
* et les références de l'auteur dans toutes les *
* copies. L'exploitation commerciale est interdite.*
\**************************************************/
* La version TO7 necessite de modifier :
* La routine affichage pastille (calcul couleur)
* La routine affichage chaine SWI --> JSR $6803
* les lectures clavier et test touches
* La routine effacement (octet couleur)
* La sequence escape pour ATTRB 1,1
* L'adresse de l'écran $0000 --> $4000
* Les adresses des pastilles
* La commutation de page video $A7C0 --> $E7C3
* Le bit buzzer $A7C1(b0) --> $E7C1(b3)
* Le graphisme du titre
/**************************************************\
* Version 2016.10.06 *
\**************************************************/
* Historique
* 2016.10.06 Version originale (clone version MO5)
*===========================================
* INITIALISATIONS
*===========================================
ORG $9000
LDX #SCRINIT chaine d'initialisation ecran
LBSR CHAINE initialisation ecran
LBSR BITMAP affichage du titre
INIT
LDD #$0000 zero dans D
STD COUPS remise a zero du nombre de coups
STD SCORE remise a zero du score
LDX #SCRNEW chaine pour ecran de debut partie
LBSR CHAINE affichage ecran de debut partie
LDX #MAIDE chaine du message pour l'aide
LBSR CHAINE affichage du message pour l'aide
LBSR DPARTIE affichage du numero de partie
LBSR COULINI initialisation des couleurs
LBSR TDISP affichage de toutes les pastilles
INC JEUAUTO pour supprimer le clignotement
LBSR PALIGN recherche alignements
DEC JEUAUTO pour retablir le parametre
LBSR EFFBUZ signal de debut de jeu
LBSR EFFBUZ signal de debut de jeu
*===========================================
* DEROULEMENT DU JEU
*===========================================
JEU
LBSR DSCORE affichage du score
LDA JEUAUTO
BEQ JEU1 jeu manuel
LBSR AUTOMAT jeu automatique
LBRA SUIVANT passage au coup suivant
JEU1
* SWI lecture rapide clavier MO5
* FCB $0C
* CMPB #$0C 'A' pour Aide MO5
JSR $E806 lecture clavier TO7
ANDB #$DF majuscule
CMPB #$41 'A' pour Aide TO7
BNE JEU2
LBSR AIDE affichage de l'aide
BRA JEU affichage du score
JEU2
* CMPB #$37 'J' pour Jeu automatique MO5
CMPB #$4A 'J' pour Jeu automatique TO7
BNE JEU3
LDA #$01
STA JEUAUTO indicateur de jeu automatique
BRA JEU
JEU3
* SWI contact crayon optique MO5
* FCB $16
JSR $E81B contact crayon optique TO7
BCC JEU1 attente appui
* SWI coordonnees crayon optique MO5
* FCB $18
JSR $E818 coordonnees crayon optique TO7
* test de la colonne pointee
TFR X,D
LSRD
LSRD
LSRD
TFR D,X
CMPX #$0011
LBLT ERROR trop a gauche
CMPX #$0026
LBGT ERROR trop a droite
* test de la ligne pointee
TFR Y,D
LSRD
LSRD
LSRD
TFR D,Y
CMPY #$0005
BLT ERROR trop haut
CMPY #$0017
BGT ERROR trop bas
* test pointage centre pastille
TFR X,D
SUBD #$0011 centre premiere pastille
LBSR DMOD3
PSHS B
TFR Y,D
SUBD #$0005 centre premiere pastille
LBSR DMOD3
PULS A
ADDB -1,S
BEQ ERROR
* permutation horizontale
HORIZ
TFR Y,D
SUBD #$0005 centre premiere pastille
LBSR DMOD3
BNE VERT
PSHS Y,X
LBSR PINVH
LBSR PALIGN recherche alignements
PULS X,Y
BCS SUIVANT alignement trouve
LBSR PINVH retablissement position
BRA ERROR
* permutation verticale
VERT
TFR X,D
SUBD #$0011 centre premiere pastille
LBSR DMOD3
BNE ERROR
PSHS Y,X
LBSR PINVV
LBSR PALIGN recherche alignement
PULS X,Y
BCS SUIVANT alignement trouve
LBSR PINVV retablissement position
BRA ERROR
*===========================================
* PASSAGE AU COUP SUIVANT
*===========================================
SUIVANT
LDD COUPS
ADDD #$0001
STD COUPS
CMPD COUPMAX fin de partie apres n coups
BEQ FIN
LBRA JEU suite du jeu
*===========================================
* ERREUR DE POINTAGE
*===========================================
ERROR
LDX #$0800 hauteur note
LDA #$10 longueur note
LBSR BUZZ
LBRA JEU
*===========================================
* FIN DE PARTIE
*===========================================
FIN
LDD SCORE
CMPD MAX
BLT FIN0
STD MAX
FIN0
LDA JEUAUTO indicateur de jeu automatique
LBNE INIT nouvelle partie automatique
FIN1
LBSR DSCORE
LDX #MAPPUI message appui sur une touche
LBSR CHAINE
LDX #FPARTIE message fin de partie
LBSR CHAINE
FIN2
* SWI lecture rapide clavier MO5
* FCB $0C
JSR $E809 lecture rapide clavier TO7
BCC FIN2
LBRA INIT
*===========================================
* JEU AUTOMATIQUE
*===========================================
AUTOMAT
LDB #$37
* test permutation horizontale
AUTO1
TFR B,A
ANDA #$07
CMPA #$07
BEQ AUTO3 permutation horizontale impossible
LBSR CINVH permutation horizontale
PSHS B
LDB #$37
AUTO2
LBSR TSTAH test alignement horizontal en B
BCS AUTO9 alignement trouve
* LBSR TSTAV test alignement vertical en B
* BCS AUTO9 alignement trouve
DECB
BGE AUTO2
PULS B
LBSR CINVH retablissement des couleurs
* test permutation verticale
AUTO3
CMPB #$2F
BGT AUTO5 permutation verticale impossible
LBSR CINVV permutation verticale
PSHS B
LDB #$37
AUTO4
LBSR TSTAH test alignement horizontal en B
BCS AUTO9 alignement trouve
* LBSR TSTAV test alignement vertical en B
* BCS AUTO9 alignement trouve
DECB
BGE AUTO4
PULS B
LBSR CINVV retablissement des couleurs
AUTO5
DECB
CMPB #$1F
BNE AUTO1
AUTO10
* test permutation horizontale
LDB #$37
AUTO11
TFR B,A
ANDA #$07
CMPA #$07
BEQ AUTO13 permutation horizontale impossible
LBSR CINVH permutation horizontale
PSHS B
LDB #$37
AUTO12
LBSR TSTAH test alignement horizontal en B
BCS AUTO9 alignement trouve
LBSR TSTAV test alignement vertical en B
BCS AUTO9 alignement trouve
DECB
BGE AUTO12
PULS B
LBSR CINVH retablissement des couleurs
* test permutation verticale
AUTO13
CMPB #$2F
BGT AUTO15 permutation verticale impossible
LBSR CINVV permutation verticale
PSHS B
LDB #$37
AUTO14
LBSR TSTAH test alignement horizontal en B
BCS AUTO9 alignement trouve
LBSR TSTAV test alignement vertical en B
BCS AUTO9 alignement trouve
DECB
BGE AUTO14
PULS B
LBSR CINVV retablissement des couleurs
AUTO15
DECB
BGE AUTO11
AUTO6
LBSR TDISP affichage de toutes les pastilles
AUTO7
BRA AUTO7 pas de coup trouve
AUTO9
PULS B
LBSR PALIGN recherche alignements
RTS
*===========================================
* CALCUL DE D MODULO 3
* RESULTAT DANS D
*===========================================
DMOD3
SUBD #$03
BGE DMOD3
ADDD #$03
RTS
*===========================================
* CALCUL DE B MODULO 8
* RESULTAT DANS B
*===========================================
BMOD8
SUBB #$08
BGE BMOD8
ADDB #$08
RTS
*===========================================
* TEST ALIGNEMENT HORIZONTAL EN B
* CARRY SET SI ALIGNEMENT TROUVE
*===========================================
TSTAH
PSHS B
BSR BMOD8 B modulo 8
CMPB #$05
PULS B
BGT TSTAH8 pas d'alignement en fin de ligne
LDX #PCOLOR table des couleurs
LDA B,X couleur pastille B
LEAX 1,X
CMPA B,X couleur pastille B+1
BNE TSTAH8
LEAX 1,X
CMPA B,X couleur pastille B+2
BNE TSTAH8
TST JEUAUTO
BNE TSTAH7
BSR CLIGH clignotement de l'alignement
TSTAH7
COMA set carry (trouve)
BRA TSTAH9
TSTAH8
CLRA clear carry
TSTAH9
RTS
*===========================================
* CLIGNOTEMENT ALIGNEMENT HORIZONTAL EN B
*===========================================
CLIGH
* effacement des pastilles
BSR EFFH
* affichage des pastilles
ADDB #$02
LBSR PDISP
DECB
LBSR PDISP
DECB
LBSR PDISP
* signal sonore
LDX #$00A0 hauteur note
LDA #$20 longueur note
LBSR BUZZ
* effacement des pastilles
BSR EFFH
RTS
*===========================================
* EFFACEMENT 3 PASTILLES HORIZONTALES EN B
*===========================================
EFFH
PSHS B empilage numero de pastille
BSR EFFINI initialisations
LDB #$18 compteur de boucles
* effacement des pastilles
EFFH1
STA ,x+
STA ,x+
STA ,x+
STA ,x+
STA ,x+
STA ,x+
STA ,x+
STA ,x+
STA ,x+
LEAX $1F,X
DECB
BNE EFFH1
* signal sonore
BSR EFFBUZ
PULS B,PC
*===========================================
* SIGNAL SONORE EFFACEMENT ALIGNEMENT
*===========================================
EFFBUZ
LDX #$0080 hauteur note
LDA #$30 longueur note
LBSR BUZZ
LDX #$0060 hauteur note
LDA #$40 longueur note
LBSR BUZZ
RTS
*===========================================
* INITIALISATIONS POUR EFFACEMENT PASTILLES
*===========================================
EFFINI
* LDA $A7C0 PA du PIA systeme MO5
LDA $E7C3 PA du PIA systeme TO7
ANDA #$FE RAZ bit0
* STA $A7C0 video couleur MO5
STA $E7C3 video couleur TO7
LDX #PADDR table des adresses
LSLB deplacement dans la table
LDX B,X adresse pastille B
* LDA #$44 couleur fond/forme MO5
LDA #$E4 couleur fond/forme TO7
RTS
*===========================================
* TEST ALIGNEMENT VERTICAL EN B
* CARRY SET SI ALIGNEMENT TROUVE
*===========================================
TSTAV
CMPB #$27
BGT TSTAV8 pas d'alignement en fin de colonne
LDX #PCOLOR table des couleurs
LDA B,X couleur pastille B
LEAX 8,X
CMPA B,X couleur pastille B+8
BNE TSTAV8
LEAX 8,X
CMPA B,X couleur pastille B+16
BNE TSTAV8
TST JEUAUTO
BNE TSTAV7
BSR CLIGV clignotement de l'alignement
TSTAV7
COMA
BRA TSTAV9
TSTAV8
CLRA clear carry
TSTAV9
RTS
*===========================================
* CLIGNOTEMENT ALIGNEMENT VERTICAL EN B
*===========================================
CLIGV
* effacement des pastilles
BSR EFFV
* affichage des pastilles
ADDB #$10
LBSR PDISP
SUBB #$08
LBSR PDISP
SUBB #$08
LBSR PDISP
* signal sonore
LDX #$00A0 hauteur note
LDA #$20 longueur note
LBSR BUZZ
* effacement des pastilles
BSR EFFV
RTS
*===========================================
* EFFACEMENT 3 PASTILLES VERTICALES EN B
*===========================================
EFFV
PSHS B empilage numero de pastille
BSR EFFINI initialisations
LDB #$48 compteur de boucles
* effacement des pastilles
EFFV1
STA ,x+
STA ,x+
STA ,x+
LEAX $25,X
DECB
BNE EFFV1
* signal sonore
BSR EFFBUZ
PULS B,PC
*===========================================
* RECHERCHE DES ALIGNEMENTS
* CARRY SET SI ALIGNEMENT TROUVE
*===========================================
PALIGN
CLRA initialisation compteur
PSHS A empilage compteur alignements
PALIGN1
* alignement horizontaux
CLRB
HALIGN1
LBSR TSTAH test alignement horizontal en B
BCS HALIGN4 alignement trouve
INCB
CMPB #$36
BEQ VALIGN alignement non trouve
BRA HALIGN1
HALIGN4
LBSR SUPPR
INCB
LBSR SUPPR
INCB
LBSR SUPPR
INC ,S
BRA PALIGN1
*alignement verticaux
VALIGN
CLRB
VALIGN1
BSR TSTAV test alignement vertical en B
BCS VALIGN4 alignement trouve
INCB
CMPB #$28
BEQ VALIGN8
BRA VALIGN1
VALIGN4
ADDB #$10
LBSR SUPPR
LBSR SUPPR
LBSR SUPPR
INC ,S
BRA PALIGN1
VALIGN8
PULS A
CMPA #$00
BEQ VALIGN9
COMA #$01 set carry
VALIGN9
RTS
*===========================================
* RECHERCHE ALIGNEMENT VERT OU HORIZ
* CARRY SET SI UN ALIGNEMENT EST TROUVE
*===========================================
RALIG
PSHS B
LDB #$37
RALIG1
LBSR TSTAH test alignement horizontal en B
BCS RALIG9 alignement trouve
LBSR TSTAV test alignement vertical en B
BCS RALIG9 alignement trouve
DECB
BNE RALIG1
CLRA clear carry
RALIG9
PULS B,PC
*===========================================
* AIDE = RECHERCHE DES COUPS POSSIBLES
*===========================================
AIDE
LDX #$0100 hauteur note
LDA #$10 longueur note
LBSR BUZZ signal sonore
CLRA compteur de coups possibles
PSHS A empilage compteur de coups
INC JEUAUTO pour supprimer animation et son
* test des permutations verticales
AIDE0
CLRB
AIDE1
LBSR CINVV inversion des couleurs
BSR RALIG recherche d'un alignement
BCC AIDE2 pas d'alignement trouve
LBSR PERMV affichage permutation verticale
INC ,S incrementation du compteur de coups
AIDE2
LBSR CINVV retablissement des couleurs
INCB
CMPB #$2F
BLE AIDE1
* test des permutations horizontales
CLRB
AIDE3
TFR B,A
ANDA #$07
CMPA #$07
BEQ AIDE5 dernier pion de la ligne
LBSR CINVH inversion des couleurs
BSR RALIG recherche d'un alignement
BCC AIDE4 pas d'alignement trouve
BSR PERMH affichage permutation horizontale
INC ,S incrementation du compteur de coups
AIDE4
LBSR CINVH retablissement des couleurs
AIDE5
INCB
CMPB #$37
BLE AIDE3
* mise a jour du score et attente d'une touche
DEC JEUAUTO pour retablir la valeur initiale
LDD SCORE
SUBD #$000A enlever 10 points
BGE AIDE6
LDD #$0000 si negatif remettre a zero
AIDE6
STD SCORE mise a jour du score
AIDE7
LDX #MAPPUI
LBSR CHAINE affichage du message appuyer touche
AIDE8
* SWI lecture rapide clavier MO5
* FCB $0C
JSR $E806 lecture clavier TO7
BEQ AIDE8 attente d'une touche
* CMPB #$03 touche secrete ACC MO5 pour redemarrer
CMPB #$16 touche secrete ACC TO7 pour redemarrer
LBEQ INIT redemarrage
* retablissement de la configuration de jeu
LBSR TDISP affichage de toutes les pastilles
LDX #$0080 hauteur note
LDA #$10 longueur note
LBSR BUZZ signal sonore
LDX #MAIDE
LBSR CHAINE affichage du message pour l'aide
PULS A compteur de coups possibles
CMPA #$00
BNE AIDE9 continuer s'il y a des coups possibles
* reinitialisation en cas de blocage
LBSR COULINI initialisation des couleurs
LBSR TDISP affichage de toutes les pastilles
LBSR PALIGN recherche alignements
AIDE9
RTS
*===========================================
* AFFICHAGE PERMUTATION HORIZONTALE POSSIBLE
*===========================================
PERMH
LDX #PADDR
TFR B,A
LSLA
LDX A,X
LEAX $192,X
* LDA $A7C0 PA du PIA systeme MO5
LDA $E7C3 PA du PIA systeme TO7
ORA #$01 Set bit 0
* STA $A7C0 selection video forme MO5
STA $E7C3 selection video forme TO7
LDA #$FF
STA ,X+
STA ,X+
LEAX $26,X
STA ,X+
STA ,X+
PERMH9
RTS
*===========================================
* AFFICHAGE PERMUTATION VERTICALE POSSIBLE
*===========================================
PERMV
LDX #PADDR
TFR B,A
LSLA
LDX A,X
LEAX $2D1,X
* LDA $A7C0 PA du PIA systeme MO5
LDA $E7C3 PA du PIA systeme TO7
ORA #$01 Set bit 0
* STA $A7C0 selection video forme MO5
STA $E7C3 selection video forme TO7
LDA #$0A compteur de boucles
PSHS A empilage
LDA #$30
PERMV1
STA ,X
LEAX $28,X
DEC ,S
BNE PERMV1
PULS A
PERMV9
RTS
*===========================================
* ECHANGE DES COULEURS B ET B+1 (HORIZONTAL)
*===========================================
CINVH
LDX #PCOLOR table des couleurs
LDA B,X couleur premiere pastille
PSH A
INCB
LDA B,X couleur deuxieme pastille
DECB
STA B,X deuxieme dans premiere
PULS A
INCB
STA B,X premiere dans deuxieme
DECB retablissement valeur initiale
RTS
*===========================================
* ECHANGE DES COULEURS B ET B+8 (VERTICAL)
*===========================================
CINVV
LDX #PCOLOR table des couleurs
LDA B,X couleur premiere pastille
PSH A
ADDB #$08
LDA B,X couleur deuxieme pastille
SUBB #$08
STA B,X deuxieme dans premiere
PULS A
ADDB #$08
STA B,X premiere dans deuxieme
SUBB #$08
RTS
*===========================================
* INITIALISATION DES COULEURS VALEUR A
*===========================================
COULINI
* LDA $2031 valeur aleatoire MO5
LDA $6031 valeur aleatoire TO7
INCA pour changer de couleur
* STA $2031 en jeu automatique MO5
STA $6031 en jeu automatique TO7
LSRA
ANDA #$07
BEQ COULINI pas de noir
CMPA #$04
BEQ COULINI pas de bleu
CMPA #$07
BEQ COULINI pas de blanc
LDX #PCOLOR table des couleurs
LDB #$37 numero derniere pastille
COULINI1
STA B,X
DECB
BGE COULINI1
RTS
*===========================================
* CALCUL DU NUMERO DE PASTILLE B
* FONCTION DE LIGNE ET COLONNE POINTEES
*===========================================
CALNUM
* numero dans la ligne = Y/3
TFR Y,D ligne pointee
SUBD #$0005 centre premiere pastille
CALNUM1
INCA
SUBB #$03
BGE CALNUM1
DECA
* multiplication par 8
LSLA
LSLA
LSLA
PSHS A empilage resultat
* numero dans la ligne = X/3
TFR X,D colonne pointee
SUBD #$0011 centre premiere pastille
CALNUM2
INCA
SUBB #$03
BGE CALNUM2
DECA
* ajout du nombre de pastilles lignes precedentes
ADDA ,S
TFR A,B
PULS A
RTS
*===========================================
* INVERSION DE DEUX PASTILLES B ET B+1
*===========================================
PINVH
BSR CALNUM calcul du numero B
BSR CINVH inversion des couleurs
LBSR PDISP affichage premiere pastille
INCB
LBSR PDISP affichage deuxieme pastille
LDX #$0080 hauteur note
LDA #$08 longueur note
BSR BUZZ
RTS
*===========================================
* INVERSION DE DEUX PASTILLES B ET B+8
*===========================================
PINVV
BSR CALNUM calcul du numero B
BSR CINVV inversion des couleurs
LBSR PDISP affichage premiere pastille
ADDB #$08
LBSR PDISP affichage deuxieme pastille
LDX #$0080 hauteur note
LDA #$08 longueur note
BSR BUZZ
RTS
*===========================================
* TEMPORISATION EN FONCTION DE X
*===========================================
TEMPO
PSHS X
TEMPO1
LEAX -1,X
BNE TEMPO1
PULS X,PC
*===========================================
* EMISSION SIGNAL SONORE
* TEMPO DANS X
* DUREE DANS A
*===========================================
BUZZ
* signal sonore
ORCC #$50 masque les interruptions
PSHS A compteur duree note
* LDA $A7C1 registre pour le buzzer MO5
LDA $E7C1 registre pour le buzzer TO7
BUZZ1
* ORA #$01
* STA $A7C1 buzzer MO5 a un
ORA #$08
STA $E7C1 buzzer TO7 a un
BSR TEMPO temporisation
* ANDA #$FE
* STA $A7C1 buzzer MO5 a zero
ANDA #$F7
STA $E7C1 buzzer TO7 a zero
BSR TEMPO temporisation
DEC ,S
BNE BUZZ1
PULS A
ANDCC #$AF restaure les interruptions
RTS
*===========================================
* SUPPRESSION PASTILLE B ET DESCENTE COLONNE
*===========================================
SUPPR
PSHS B
SUPPR1
SUBB #$08 pastille au-dessus
BLT SUPPR2 haut de colonne depasse
BSR SCROLL scroll pastille
BRA SUPPR1 pastille suivante
SUPPR2
* LDA $2031 valeur aleatoire MO5
LDA $6031 valeur aleatoire TO7
INCA pour changer de couleur
* STA $2031 en jeu automatique MO5
STA $6031 en jeu automatique TO7
ANDA #$07 valeur entre 0 et 7
INCA
CMPA #$04 couleur de fond MO5
BNE SUPPR3
LDA #$05
SUPPR3
CMPA #$06
BLE SUPPR4
LDA #$01
SUPPR4
LDX #PCOLOR table des couleurs
ADDB #$08 premiere pastille colonne
STA B,X
LBSR PDISP affichage pastille
PULS B,PC
*===========================================
* SCROLL PASTILLE B
*===========================================
SCROLL
LDA JEUAUTO indicateur de jeu automatique
BNE SCROLL9 pas de mouvement en jeu automatique
LDX #PADDR table des adresses
LEAX B,X pointeur dans la table
LEAX B,X pointeur dans la table
LDY ,X adresse pastille B
PSHS Y empilage adresse originale
LDA #$18 compteur de boucle
PSHS A empilage compteur
PSHS Y,X empilage pointeur et adresse
SCROLL1
PULS X,Y
LEAY $28,Y
STY ,X
PSHS Y,X
LBSR PDISP
DEC 4,S
BNE SCROLL1
PULS X,Y
PULS A
PULS Y adresse originale
STY ,X restauration de l'adresse
* signal sonore
LDX #$0040 hauteur note
LDA #$03 longueur note
LBSR BUZZ
SCROLL9
PSHS B empilage no pastille depart
LDX #PCOLOR table des couleurs
LDA B,X couleur pastille depart
ADDB #$08
STA B,X couleur pastille arrivee
BSR PDISP affichage pastille arrivee
* incrementation du score
LDD SCORE
ADDD #$0001
STD SCORE
PULS B depilage no pastille depart
RTS
*===========================================
* AFFICHAGE DU NUMERO DE PARTIE
*===========================================
DPARTIE
LDX #PARTIE+2
LBSR CHAINE
LDD PARTIE
ADDD #$0001
STD PARTIE
JSR DISPD affichage registre D
RTS
*===========================================
* AFFICHAGE DU SCORE
*===========================================
DSCORE
PSHS B
LDX #BLANC effacement de Patientez....
LBSR CHAINE
LDX #COUPS+2
LBSR CHAINE
LDD COUPS nombre de coups
JSR DISPD affichage registre D
LDX #SCORE+2
BSR CHAINE
LDD SCORE score
JSR DISPD affichage registre D
LDX #MAX+2
BSR CHAINE
LDD MAX hiscore
JSR DISPD affichage registre D
PULS B,PC
*===========================================
* AFFICHAGE CHAINE EN X TERMINEE PAR $04
*===========================================
CHAINE
LDB ,X+
CMPB #$04
BEQ CHAIN9
* SWI affichage caractere MO5
* FCB $02
JSR $E803 affichage caractere TO7
BRA CHAINE
CHAIN9
RTS
*===========================================
* AFFICHAGE COLONNE PASTILLE
*===========================================
CDISP
LDB #$18
CDISP1
LDA ,X+
STA ,Y
LEAY $28,Y
DECB
BNE CDISP1
LEAY -$3BF,Y
RTS
*===========================================
* AFFICHAGE DE LA PASTILLE B
*===========================================
PDISP
PSHS B empilage du numero de pastille
* couleur
* LDA $A7C0 MO5
LDA $E7C3 TO7
ANDA #$FE
* STA $A7C0 MO5
STA $E7C3 TO7
LDX #PCOLOR
LDA B,X couleur pastille
* calcul octet couleur pour MO5
* LSLA
* LSLA
* LSLA
* LSLA
* ORA #$04 couleur de fond bleu
* calcul octet couleur pour TO7
LSLA
LSLA
LSLA
ORA #$C4 bits intensite et fond
* recherche adresse pastille
LDX #PADDR table des adresses
LSLB deplacement dans la table
LDY B,X adresse pastille B
PSHS Y empilage adresse
LDB #$18 nombre de lignes
PDISP0
STA 0,Y
STA 1,Y
STA 2,Y
LEAY $28,Y
DECB
BNE PDISP0
ORA #$07 couleur de fond blanc
LEAY -$27F,Y
LDB #$08
PDISP2
STA ,Y
LEAY $28,Y
DECB
BNE PDISP2
PULS Y
* forme
LDX #PGRAPH table de definition pastille
* INC $A7C0 selection video forme MO5
INC $E7C3 selection video forme TO7
BSR CDISP affichage premiere colonne
BSR CDISP affichage deuxieme colonne
BSR CDISP affichage troisieme colonne
PULS B,PC
*===========================================
* AFFICHAGE DE TOUTES LES PASTILLEs
*===========================================
TDISP
LDB #$37
TDISP1
BSR PDISP affichage d'une pastille
DECB
BGE TDISP1
RTS
*===========================================
* AFFICHAGE BITMAP DU TITRE
*===========================================
BITMAP
* LDY #$0000 MO5
LDY #$4000 TO7
LDX #TITRE
* LDA $A7C0 MO5
LDA $E7C3 TO7
ORA #$01
* STA $A7C0 MO5
STA $E7C3 TO7
BIT1
LDD ,x++
STD ,Y++
* CMPY #$03C0 MO5
CMPY #$43C0 TO7
BNE BIT1
RTS
*===========================================
* AFFICHAGE REGISTRE D EN DECIMAL
*===========================================
DISPD
STD DWORK1 stockage de D
CLR DISPCN raz nbre de chiffres affiches
LDD #10000 diviseur
BSR DISPC
LDD #1000 diviseur
BSR DISPC
LDD #100 diviseur
BSR DISPC
LDD #10 diviseur
BSR DISPC
LDD #1 diviseur
INC DISPCN forcer affichage unite a zero
BSR DISPC
RTS
*===========================================
* AFFICHAGE CHIFFRE DECIMAL
*===========================================
DISPC
STD DWORK2 stockage diviseur
BSR DIVD division de D
CMPB #$00
BNE DISPC1
LDA DISPCN nombre de chiffers affiches
BNE DISPC1 affichage du zero
RTS pas d'affichage du zero
DISPC1
INC DISPCN
ADDB #$30 code ASCII
* SWI affichage caractere
* FCB $82 retour
JSR $E803 affichage caractere TO7
DISPCN
FCB $00
*===========================================
* DIVISION DE DWORK1 PAR DWORK2
* RESULTAT DANS B, RESTE DANS DWORK1
*===========================================
DIVD
CLRB
PSHS B compteur pour le quotient
LDD DWORK1 dividende
DIVD1
SUBD DWORK2 oter le diviseur
BLT DIVD2 terminer si valeur negative
INC ,S incrementer le quotient
BRA DIVD1 recommencer
DIVD2
ADDD DWORK2 annuler la derniere soustraction
STD DWORK1 reste dans DWORK1
PULS B,PC depilage et retour
DWORK1
FDB $0000 zone de stockage du nombre
DWORK2
FDB $0000 diviseur
*===========================================
* Variables diverses (score, coups, etc.)
*===========================================
PARTIE
FDB $0000
FCB $1E,$0A,$0A,$0A,$0A,$0A
FCC 'Partie: '
FCB $04
COUPS
FDB $0000
FCB $1E,$0A,$0A,$0A,$0A,$0A,$0A
FCC 'Coups : '
FCB $04
SCORE
FDB $0000
FCB $1E,$0A,$0A,$0A,$0A,$0A,$0A,$0A
FCC 'Score : '
FCB $04
MAX
FDB $0000
FDB $1E0A,$0A0A,$0A0A,$0A0A,$0A0A
FCC 'Hiscore '
FCB $04
BLANC
FCB $1E locate 0,0
FDB $0A0A,$0A0A,$0A0A
FCB $0A
FCC ' '
FCB $04
COUPMAX
FDB $0020 nbre de coups par partie
JEUAUTO
FCB $00 indicateur de jeu automatique
*===========================================
* Initialisation de l'ecran
*===========================================
SCRINIT
FCB $1B sequence d'echappement
FCB $47 forme blanc
FCB $1B sequence d'echappement
FCB $54 fond bleu
FCB $1B sequence d'echappement
FCB $64 cadre bleu
FCB $0C effacement ecran
FCB $14 extinction curseur
FCB $04
*===========================================
* Ecran pour une nouvelle partie
*===========================================
SCRNEW
FCB $1E locate 0,0
FDB $0A0A,$0A0A,$0A0A
FCC ' '
FDB $0D0A
FCC 'Patientez... '
FDB $0D0A,$0A0A,$0A0A
FCC 'Alignez 3 pions'
FDB $0D0A
FCC 'de m'
FDB $1643
FCC 'eme couleur '
FDB $0D0A
FCC 'horizontalement '
FDB $0D0A
FCC 'ou verticalement'
FCB $0D,$0A,$0A
FCC 'Pointez entre 2 '
FDB $0D0A
FCC 'pions pour les '
FDB $0D0A
FCC 'permuter.'
FCB $04
*===========================================
* Message pour afficher l'aide
*===========================================
MAIDE
FDB $1E0A locate 0,0 + line feed
FDB $0A0A,$0A0A,$0A0A,$0A0A,$0A0A
FDB $0A0A,$0A0A,$0A0A,$0A0A,$0A0A
FCC 'Touche A = Aide'
FDB $0D0A
FCC 'avec perte de '
FDB $0D0A
FCC 'dix points. '
FCB $04
*===========================================
* Message d'appui sur une touche
*===========================================
MAPPUI
FDB $1E0A locate 0,0 + line feed
FDB $0A0A,$0A0A,$0A0A,$0A0A,$0A0A
FDB $0A0A,$0A0A,$0A0A,$0A0A,$0A0A
FCC 'Appuyez sur une'
FDB $0D0A
FCC 'touche pour '
FDB $0D0A
FCC 'continuer... '
FCB $04
*===========================================
* Message de fin de partie
*===========================================
FPARTIE
* FDB $1B73 caracteres taille double MO5
FDB $1B4F caracteres taille double TO7
FCB $1F sequence user
FDB $4D52 curseur ligne 13 colonne 18
FCC 'FIN'
* FDB $1B70 caracteres taille normale MO5
FDB $1B4C caracteres taille normale TO7
FCC ' de '
* FDB $1B73 caracteres taille double MO5
FDB $1B4F caracteres taille double TO7
FCC 'PARTIE'
* FDB $1B70 caracteres taille normale MO5
FDB $1B4C caracteres taille normale TO7
FCB $04
*===========================================
* Table des couleurs
*===========================================
PCOLOR
FCB $00,$00,$00,$00,$00,$00,$00,$00
FCB $00,$00,$00,$00,$00,$00,$00,$00
FCB $00,$00,$00,$00,$00,$00,$00,$00
FCB $00,$00,$00,$00,$00,$00,$00,$00
FCB $00,$00,$00,$00,$00,$00,$00,$00
FCB $00,$00,$00,$00,$00,$00,$00,$00
FCB $00,$00,$00,$00,$00,$00,$00,$00
*===========================================
* Positions des pastilles dans l'ecran
*===========================================
PADDR
FDB $4510,$4513,$4516,$4519,$451C,$451F,$4522,$4525
FDB $48D0,$48D3,$48D6,$48D9,$48DC,$48DF,$48E2,$48E5
FDB $4C90,$4C93,$4C96,$4C99,$4C9C,$4C9F,$4CA2,$4CA5
FDB $5050,$5053,$5056,$5059,$505C,$505F,$5062,$5065
FDB $5410,$5413,$5416,$5419,$541C,$541F,$5422,$5425
FDB $57D0,$57D3,$57D6,$57D9,$57DC,$57DF,$57E2,$57E5
FDB $5B90,$5B93,$5B96,$5B99,$5B9C,$5B9F,$5BA2,$5BA5
*===========================================
* Graphisme de la pastille (par colonne)
*===========================================
PGRAPH
FCB $00,$00,$00,$00,$00,$03,$07,$07
FCB $0F,$0F,$0F,$0F,$0F,$0F,$07,$07
FCB $03,$00,$00,$00,$00,$00,$00,$00
FCB $00,$00,$00,$00,$FC,$FF,$FF,$FF
FCB $FF,$FF,$FE,$FE,$FC,$FC,$F1,$C3
FCB $FF,$FC,$00,$00,$00,$00,$00,$00
FCB $00,$00,$00,$00,$00,$00,$80,$80
FCB $C0,$C0,$C0,$C0,$C0,$C0,$80,$80
FCB $00,$00,$00,$00,$00,$00,$00,$00
*===========================================
* Graphisme du titre TO7
*===========================================
TITRE
FDB $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
FDB $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
FDB $FFFF,$FFFF,$FFFF,$FFFF,$FE00,$0000,$0FFF,$800F
FDB $FFFF,$F000,$00FF,$FFE3,$F83F,$FFFF,$FFFC,$7FFF
FDB $FE3F,$83FF,$FFFF,$FF8F,$FFFF,$F1FF,$FFFF,$FFFF
FDB $FE00,$0000,$0FFC,$0001,$FFFF,$F000,$00FF,$FFE3
FDB $F07F,$FFFF,$FFFC,$7FFF,$FE3F,$07FF,$FFFF,$FF8F
FDB $FFFF,$F1FF,$FFFF,$FFFF,$FE00,$0000,$0FF0,$0000
FDB $7FFF,$F000,$00FF,$FFE3,$E0FF,$FFFF,$FFFC,$7FFF
FDB $FE3E,$0FFF,$FFFF,$FF8F,$FFFF,$F1FF,$FFFF,$FFFF
FDB $FE00,$0000,$0FE0,$0000,$3FFF,$F000,$00FF,$FFE3
FDB $C1FF,$FFFF,$FFFC,$7FFF,$FE3C,$1FFF,$FFFF,$FF8F
FDB $FFFF,$F1FF,$FFFF,$FFFF,$FFFF,$FFFF,$FFC0,$7FF0
FDB $1FFF,$FFFF,$F0FF,$FFE3,$83F8,$1F10,$7F00,$63E3
FDB $FE38,$3E02,$3E3C,$0788,$3FFF,$F1F0,$38FC,$703F
FDB $FE00,$0400,$0FC1,$C01C,$1FFF,$F000,$10FF,$FFE3
FDB $07E0,$0F00,$3E00,$63C3,$FE30,$7E02,$3E38,$0380
FDB $1FFF,$F1C0,$18FC,$401F,$FE00,$0400,$0F87,$0007
FDB $0FFF,$F000,$30FF,$FFE0,$0FC0,$0700,$3C00,$63C3
FDB $FE00,$FE06,$3E30,$0380,$0FFF,$F180,$08F8,$000F
FDB $FE00,$0400,$0F86,$0003,$0FFF,$F000,$20FF,$FFE0
FDB $1FC3,$870E,$1870,$61C7,$FE01,$FE1E,$3E31,$E187
FDB $0FFF,$F187,$0C78,$870F,$FE00,$0400,$0F0C,$0001
FDB $87FF,$F000,$61FF,$FFE0,$0FC7,$C71F,$1878,$71C7
FDB $FE00,$FE3E,$3E30,$718F,$8FFF,$F18F,$8C78,$8F8F
FDB $FFFF,$843F,$FF08,$3FE0,$87FF,$FFF0,$C1FF,$FFE0
FDB $0FFE,$071F,$18F8,$7187,$FE00,$FE3E,$3E30,$0F8F
FDB $8FFF,$F1FC,$0C31,$FC0F,$FFFF,$843F,$FF08,$7FF0
FDB $87FF,$FFE0,$83FF,$FFE1,$87F0,$071F,$18FC,$708F
FDB $FE18,$7E3E,$3E38,$038F,$8FFF,$F1E0,$0E31,$E00F
FDB $FFFF,$843F,$FF08,$3FE0,$87FF,$FFE1,$87FF,$FFE3
FDB $83E0,$071F,$18FC,$780F,$FE38,$3E3E,$3E3C,$018F
FDB $8FFF,$F1C0,$0E21,$C00F,$FFFF,$843F,$FF0C,$0001
FDB $87FF,$FFC3,$07FF,$FFE3,$C3C1,$C71F,$18F8,$780F
FDB $FE3C,$3E3E,$3E3F,$C18F,$8FF8,$F183,$8F03,$838F
FDB $FFFF,$843F,$FF86,$0003,$0FFF,$FF82,$0FFF,$FFE3
FDB $E1C7,$871F,$1878,$781F,$FE3E,$1E3E,$3C31,$F18F
FDB $8FF8,$F18F,$0F03,$8F0F,$FFFF,$843F,$FF87,$0007
FDB $0FFF,$FF86,$1FFF,$FFE3,$F0C3,$071F,$1C30,$7C1F
FDB $FE3F,$0E3E,$1830,$618F,$8FF8,$6186,$0F07,$860F
FDB $FFFF,$843F,$FFC1,$C01C,$1FFF,$FF0C,$1FFF,$FFE3
FDB $F040,$071F,$1C00,$7C1F,$FE3F,$063E,$0038,$038F
FDB $8FF8,$0380,$0F87,$800F,$FFFF,$843F,$FFC0,$7FF0
FDB $1FFF,$FE08,$3FFF,$FFE3,$F860,$031F,$1E00,$7E1F
FDB $FE3F,$863F,$0038,$038F,$8FFC,$07C0,$0787,$C007
FDB $FFFF,$843F,$FFE0,$0000,$3FFF,$FE18,$7FFF,$FFE3
FDB $FC30,$E31F,$1F84,$7E3F,$FE3F,$C23F,$C23E,$0F8F
FDB $8FFF,$0FE1,$C7CF,$E1C7,$FFFF,$843F,$FFF0,$0000
FDB $7FFF,$FC30,$7FFF,$FFFF,$FFFF,$FFFF,$FFFF,$FC3F
FDB $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
FDB $FFFF,$843F,$FFFC,$0001,$FFFF,$F820,$FFFF,$FFFF
FDB $FFFF,$FFFF,$FFFF,$FC7F,$FFFF,$FFFF,$FFFF,$FFFF
FDB $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$843F,$FFFF,$800F
FDB $FFFF,$F861,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$F07F
FDB $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
FDB $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
FDB $FFFF,$FFFF,$FFFF,$F0FF,$FFFF,$FFFF,$FFFF,$FFFF
FDB $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
FDB $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$F1FF
FDB $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
END
Dernière modification par Daniel le 10 oct. 2016 12:44, modifié 1 fois.
Daniel
L'obstacle augmente mon ardeur.
L'obstacle augmente mon ardeur.
Re: MO5 Kandy Krush Java
Merci Daniel
J'étais certain que tu allez sortir la version TO
J'étais certain que tu allez sortir la version TO
Re: MO5 Kandy Krush Java
Dans cette version TO7 il y a encore une petite anomalie : on a toujours le même tableau au démarrage, car sur TO il n'y a pas de compteur pour le clignotement du curseur. Le jeu automatique doit donner toujours la même partie.
La prochaine version utilisera le timer pour initialiser les couleurs au hasard. Ce sera une version commune pour TO et pour MO.
La prochaine version utilisera le timer pour initialiser les couleurs au hasard. Ce sera une version commune pour TO et pour MO.
Daniel
L'obstacle augmente mon ardeur.
L'obstacle augmente mon ardeur.
Re: MO5 Kandy Krush Java
Merci Daniel pour les sources même si elles ne sont pas très propres (je reprends tes termes) elles sont toutefois très intéressantes. Elles permettent, du moins pour moi, de voir les différences de codage entre les TO et les MO et surtout de comprendre comment ces machines gèrent tout ça.
Mais dis moi. Quand tu parles de version commune, tu penses à une seules sources fonctionnant sur TO et MO. C'est bien ça. Alors connaissant le problème de compatibilité d'échange entre les deux soit c'est pour te simplifier la tâche soit ce sera une version SD que l'on pourra lire sur l'un ou sur l'autre. Perso, je pencherais pour la deuxième. Quoique la première est compréhensible aussi
Mais dis moi. Quand tu parles de version commune, tu penses à une seules sources fonctionnant sur TO et MO. C'est bien ça. Alors connaissant le problème de compatibilité d'échange entre les deux soit c'est pour te simplifier la tâche soit ce sera une version SD que l'on pourra lire sur l'un ou sur l'autre. Perso, je pencherais pour la deuxième. Quoique la première est compréhensible aussi
Re: MO5 Kandy Krush Java
Voici un aperçu des sources de la version MO/TO. Il reste encore à tester soigneusement le programme avec toutes les machines.
Code : Tout sélectionner
/**************************************************\
* KANDY KRUSH JAVA MO & TO *
* (c) 2016 - Daniel Coulom *
* http://dcmoto.free.fr/ *
* http://forum.system-cfg.com/ *
*--------------------------------------------------*
* Ce code est distribue gratuitement dans l'espoir *
* qu'il sera utile, mais sans aucune garantie et *
* sans engager la responsabilité de l'auteur. *
* Vous pouvez l' utiliser, le modifier et le *
* diffuser librement, en conservant cette licence *
* et les références de l'auteur dans toutes les *
* copies. L'exploitation commerciale est interdite.*
\**************************************************/
/**************************************************\
* Version 2016.10.07 *
\**************************************************/
* Historique
* 2016.10.07 Version unique pour MO et TO
*===========================================
* DETERMINATION DU TYPE D'ORDINATEUR
*===========================================
ORG $9000
CLRA initialisation type=0 (MO)
LDX #$1F40 adresse RAM(MO) ou ROM(TO)
LDB ,X lecture adresse X
COM ,X tente de modifier adresse X
CMPB ,X test modification adresse X
BNE TYPEMO valeurs differentes -> MO
TYPETO
INCA initialisation type=1 (TO)
TYPEMO
COM ,X retablissement adresse X
STA MOTO stockage du type 0=MO, 1=TO
*===========================================
* AFFICHAGE DU TITRE
*===========================================
LDX #SCRINIT chaine d'initialisation ecran
LBSR CHAINE initialisation ecran
LBSR BITMAP affichage du titre
*===========================================
* INITIALISATIONS
*===========================================
INIT
LDD #$0000 zero dans D
STD COUPS remise a zero du nombre de coups
STD SCORE remise a zero du score
LDX #SCRNEW chaine pour ecran de debut partie
LBSR CHAINE affichage ecran de debut partie
LDX #MAIDE chaine du message pour l'aide
LBSR CHAINE affichage du message pour l'aide
LBSR DPARTIE affichage du numero de partie
LBSR COLINI initialisation des couleurs
LBSR TDISP affichage de toutes les pastilles
INC JEUAUTO pour supprimer le clignotement
LBSR PALIGN recherche alignements
DEC JEUAUTO pour retablir le parametre
LBSR EFFBUZ signal de debut de jeu
LBSR EFFBUZ signal de debut de jeu
*===========================================
* DEROULEMENT DU JEU
*===========================================
JEU
LBSR DSCORE affichage du score
LDA JEUAUTO
BEQ JEU1 jeu manuel
LBSR AUTOMAT jeu automatique
LBRA SUIVANT passage au coup suivant
JEU1
TST MOTO test du type d'ordinateur
BNE JEU30
*===========================================
* Lecture clavier et crayon optique MO
*===========================================
JEU20
SWI lecture rapide clavier MO5
FCB $0C
CMPB #$0C 'A' pour Aide MO5
BNE JEU21
LBSR AIDE affichage de l'aide
BRA JEU affichage du score
JEU21
CMPB #$37 'J' pour Jeu automatique MO5
BNE JEU22
LDA #$01
STA JEUAUTO indicateur de jeu automatique
BRA JEU
JEU22
SWI contact crayon optique MO5
FCB $16
BCC JEU1 attente appui
SWI coordonnees crayon optique MO5
FCB $18
BRA JEU4
*===========================================
* Lecture clavier et crayon optique TO
*===========================================
JEU30
JSR $E806 lecture clavier TO7
ANDB #$DF majuscule
CMPB #$41 'A' pour Aide TO7
BNE JEU31
LBSR AIDE affichage de l'aide
BRA JEU affichage du score
JEU31
CMPB #$4A 'J' pour Jeu automatique TO7
BNE JEU32
LDA #$01
STA JEUAUTO indicateur de jeu automatique
BRA JEU
JEU32
JSR $E81B contact crayon optique TO7
BCC JEU1 attente appui
JSR $E818 coordonnees crayon optique TO7
*===========================================
* Controle et execution du coup joue
*===========================================
JEU4
* test de la colonne pointee
TFR X,D
LSRD
LSRD
LSRD
TFR D,X
CMPX #$0011
LBLT ERROR trop a gauche
CMPX #$0026
LBGT ERROR trop a droite
* test de la ligne pointee
TFR Y,D
LSRD
LSRD
LSRD
TFR D,Y
CMPY #$0005
BLT ERROR trop haut
CMPY #$0017
BGT ERROR trop bas
* test pointage centre pastille
TFR X,D
SUBD #$0011 centre premiere pastille
LBSR DMOD3
PSHS B
TFR Y,D
SUBD #$0005 centre premiere pastille
LBSR DMOD3
PULS A
ADDB -1,S
BEQ ERROR
* permutation horizontale
HORIZ
TFR Y,D
SUBD #$0005 centre premiere pastille
LBSR DMOD3
BNE VERT
PSHS Y,X
LBSR PINVH
LBSR PALIGN recherche alignements
PULS X,Y
BCS SUIVANT alignement trouve
LBSR PINVH retablissement position
BRA ERROR
* permutation verticale
VERT
TFR X,D
SUBD #$0011 centre premiere pastille
LBSR DMOD3
BNE ERROR
PSHS Y,X
LBSR PINVV
LBSR PALIGN recherche alignement
PULS X,Y
BCS SUIVANT alignement trouve
LBSR PINVV retablissement position
BRA ERROR
*===========================================
* PASSAGE AU COUP SUIVANT
*===========================================
SUIVANT
LDD COUPS
ADDD #$0001
STD COUPS
CMPD COUPMAX fin de partie apres n coups
BEQ FIN
LBRA JEU suite du jeu
*===========================================
* ERREUR DE POINTAGE
*===========================================
ERROR
LDX #$0800 hauteur note
LDA #$10 longueur note
LBSR BUZZ
LBRA JEU
*===========================================
* FIN DE PARTIE
*===========================================
FIN
LDD SCORE
CMPD MAX
BLT FIN0
STD MAX
FIN0
LDA JEUAUTO indicateur de jeu automatique
LBNE INIT nouvelle partie automatique
FIN1
LBSR DSCORE
LDX #MAPPUI message appui sur une touche
LBSR CHAINE
TST MOTO test du type d'ordinateur
BNE FIN4
FIN2
LDX #FPART5 message fin de partie MO5
LBSR CHAINE
FIN3
SWI lecture rapide clavier MO5
FCB $0C
BCC FIN3
LBRA INIT
FIN4
LDX #FPART7 message fin de partie TO7
LBSR CHAINE
FIN5
JSR $E809 lecture rapide clavier TO7
BCC FIN5
LBRA INIT
*===========================================
* JEU AUTOMATIQUE
*===========================================
AUTOMAT
LDB #$37
* test permutation horizontale
AUTO1
TFR B,A
ANDA #$07
CMPA #$07
BEQ AUTO3 permutation horizontale impossible
LBSR CINVH permutation horizontale
PSHS B
LDB #$37
AUTO2
LBSR TSTAH test alignement horizontal en B
BCS AUTO9 alignement trouve
DECB
BGE AUTO2
PULS B
LBSR CINVH retablissement des couleurs
* test permutation verticale
AUTO3
CMPB #$2F
BGT AUTO5 permutation verticale impossible
LBSR CINVV permutation verticale
PSHS B
LDB #$37
AUTO4
LBSR TSTAH test alignement horizontal en B
BCS AUTO9 alignement trouve
DECB
BGE AUTO4
PULS B
LBSR CINVV retablissement des couleurs
AUTO5
DECB
CMPB #$1F
BNE AUTO1
AUTO10
* test permutation horizontale
LDB #$37
AUTO11
TFR B,A
ANDA #$07
CMPA #$07
BEQ AUTO13 permutation horizontale impossible
LBSR CINVH permutation horizontale
PSHS B
LDB #$37
AUTO12
LBSR TSTAH test alignement horizontal en B
BCS AUTO9 alignement trouve
LBSR TSTAV test alignement vertical en B
BCS AUTO9 alignement trouve
DECB
BGE AUTO12
PULS B
LBSR CINVH retablissement des couleurs
* test permutation verticale
AUTO13
CMPB #$2F
BGT AUTO15 permutation verticale impossible
LBSR CINVV permutation verticale
PSHS B
LDB #$37
AUTO14
LBSR TSTAH test alignement horizontal en B
BCS AUTO9 alignement trouve
LBSR TSTAV test alignement vertical en B
BCS AUTO9 alignement trouve
DECB
BGE AUTO14
PULS B
LBSR CINVV retablissement des couleurs
AUTO15
DECB
BGE AUTO11
AUTO6
LBSR TDISP affichage de toutes les pastilles
AUTO7
BRA AUTO7 pas de coup trouve
AUTO9
PULS B
LBSR PALIGN recherche alignements
RTS
*===========================================
* CALCUL DE D MODULO 3
* RESULTAT DANS D
*===========================================
DMOD3
SUBD #$03
BGE DMOD3
ADDD #$03
RTS
*===========================================
* CALCUL DE B MODULO 8
* RESULTAT DANS B
*===========================================
BMOD8
SUBB #$08
BGE BMOD8
ADDB #$08
RTS
*===========================================
* TEST ALIGNEMENT HORIZONTAL EN B
* CARRY SET SI ALIGNEMENT TROUVE
*===========================================
TSTAH
PSHS B
BSR BMOD8 B modulo 8
CMPB #$05
PULS B
BGT TSTAH8 pas d'alignement en fin de ligne
LDX #PCOLOR table des couleurs
LDA B,X couleur pastille B
LEAX 1,X
CMPA B,X couleur pastille B+1
BNE TSTAH8
LEAX 1,X
CMPA B,X couleur pastille B+2
BNE TSTAH8
TST JEUAUTO
BNE TSTAH7
BSR CLIGH clignotement de l'alignement
TSTAH7
COMA set carry (trouve)
BRA TSTAH9
TSTAH8
CLRA clear carry
TSTAH9
RTS
*===========================================
* CLIGNOTEMENT ALIGNEMENT HORIZONTAL EN B
*===========================================
CLIGH
* effacement des pastilles
BSR EFFH
* affichage des pastilles
ADDB #$02
LBSR PDISP
DECB
LBSR PDISP
DECB
LBSR PDISP
* signal sonore
LDX #$00A0 hauteur note
LDA #$20 longueur note
LBSR BUZZ
* effacement des pastilles
BSR EFFH
RTS
*===========================================
* EFFACEMENT 3 PASTILLES HORIZONTALES EN B
*===========================================
EFFH
PSHS B empilage numero de pastille
BSR EFFINI initialisations
LDB #$18 compteur de boucles
* effacement des pastilles
EFFH1
STA ,x+
STA ,x+
STA ,x+
STA ,x+
STA ,x+
STA ,x+
STA ,x+
STA ,x+
STA ,x+
LEAX $1F,X
DECB
BNE EFFH1
* signal sonore
BSR EFFBUZ
PULS B,PC
*===========================================
* SIGNAL SONORE EFFACEMENT ALIGNEMENT
*===========================================
EFFBUZ
LDX #$0080 hauteur note
LDA #$30 longueur note
LBSR BUZZ
LDX #$0060 hauteur note
LDA #$40 longueur note
LBSR BUZZ
RTS
*===========================================
* INITIALISATIONS POUR EFFACEMENT PASTILLES
*===========================================
EFFINI
TST MOTO test du type d'ordinateur
BNE EFFIN3
EFFIN2
LDA $A7C0 PA du PIA systeme MO5
ANDA #$FE RAZ bit0
STA $A7C0 video couleur MO5
LDA #$44 couleur fond/forme MO5
BRA EFFIN4
EFFIN3
LDA $E7C3 PA du PIA systeme TO7
ANDA #$FE RAZ bit0
STA $E7C3 video couleur TO7
LDA #$E4 couleur fond/forme TO7
EFFIN4
LDX #PADDR table des adresses
LSLB deplacement dans la table
LDX B,X adresse pastille B
RTS
*===========================================
* TEST ALIGNEMENT VERTICAL EN B
* CARRY SET SI ALIGNEMENT TROUVE
*===========================================
TSTAV
CMPB #$27
BGT TSTAV8 pas d'alignement en fin de colonne
LDX #PCOLOR table des couleurs
LDA B,X couleur pastille B
LEAX 8,X
CMPA B,X couleur pastille B+8
BNE TSTAV8
LEAX 8,X
CMPA B,X couleur pastille B+16
BNE TSTAV8
TST JEUAUTO
BNE TSTAV7
BSR CLIGV clignotement de l'alignement
TSTAV7
COMA
BRA TSTAV9
TSTAV8
CLRA clear carry
TSTAV9
RTS
*===========================================
* CLIGNOTEMENT ALIGNEMENT VERTICAL EN B
*===========================================
CLIGV
* effacement des pastilles
BSR EFFV
* affichage des pastilles
ADDB #$10
LBSR PDISP
SUBB #$08
LBSR PDISP
SUBB #$08
LBSR PDISP
* signal sonore
LDX #$00A0 hauteur note
LDA #$20 longueur note
LBSR BUZZ
* effacement des pastilles
BSR EFFV
RTS
*===========================================
* EFFACEMENT 3 PASTILLES VERTICALES EN B
*===========================================
EFFV
PSHS B empilage numero de pastille
BSR EFFINI initialisations
LDB #$48 compteur de boucles
* effacement des pastilles
EFFV1
STA ,x+
STA ,x+
STA ,x+
LEAX $25,X
DECB
BNE EFFV1
* signal sonore
LBSR EFFBUZ
PULS B,PC
*===========================================
* RECHERCHE DES ALIGNEMENTS
* CARRY SET SI ALIGNEMENT TROUVE
*===========================================
PALIGN
CLRA initialisation compteur
PSHS A empilage compteur alignements
PALIGN1
* alignement horizontaux
CLRB
HALIGN1
LBSR TSTAH test alignement horizontal en B
BCS HALIGN4 alignement trouve
INCB
CMPB #$36
BEQ VALIGN alignement non trouve
BRA HALIGN1
HALIGN4
LBSR SUPPR
INCB
LBSR SUPPR
INCB
LBSR SUPPR
INC ,S
BRA PALIGN1
*alignement verticaux
VALIGN
CLRB
VALIGN1
BSR TSTAV test alignement vertical en B
BCS VALIGN4 alignement trouve
INCB
CMPB #$28
BEQ VALIGN8
BRA VALIGN1
VALIGN4
ADDB #$10
LBSR SUPPR
LBSR SUPPR
LBSR SUPPR
INC ,S
BRA PALIGN1
VALIGN8
PULS A
CMPA #$00
BEQ VALIGN9
COMA #$01 set carry
VALIGN9
RTS
*===========================================
* RECHERCHE ALIGNEMENT VERT OU HORIZ
* CARRY SET SI UN ALIGNEMENT EST TROUVE
*===========================================
RALIG
PSHS B
LDB #$37
RALIG1
LBSR TSTAH test alignement horizontal en B
BCS RALIG9 alignement trouve
LBSR TSTAV test alignement vertical en B
BCS RALIG9 alignement trouve
DECB
BNE RALIG1
CLRA clear carry
RALIG9
PULS B,PC
*===========================================
* AIDE = RECHERCHE DES COUPS POSSIBLES
*===========================================
AIDE
LDX #$0100 hauteur note
LDA #$10 longueur note
LBSR BUZZ signal sonore
CLRA compteur de coups possibles
PSHS A empilage compteur de coups
INC JEUAUTO pour supprimer animation et son
* test des permutations verticales
AIDE0
CLRB
AIDE1
LBSR CINVV inversion des couleurs
BSR RALIG recherche d'un alignement
BCC AIDE2 pas d'alignement trouve
LBSR PERMV affichage permutation verticale
INC ,S incrementation du compteur de coups
AIDE2
LBSR CINVV retablissement des couleurs
INCB
CMPB #$2F
BLE AIDE1
* test des permutations horizontales
CLRB
AIDE3
TFR B,A
ANDA #$07
CMPA #$07
BEQ AIDE5 dernier pion de la ligne
LBSR CINVH inversion des couleurs
BSR RALIG recherche d'un alignement
BCC AIDE4 pas d'alignement trouve
BSR PERMH affichage permutation horizontale
INC ,S incrementation du compteur de coups
AIDE4
LBSR CINVH retablissement des couleurs
AIDE5
INCB
CMPB #$37
BLE AIDE3
* mise a jour du score et attente d'une touche
DEC JEUAUTO pour retablir la valeur initiale
LDD SCORE
SUBD #$000A enlever 10 points
BGE AIDE6
LDD #$0000 si negatif remettre a zero
AIDE6
STD SCORE mise a jour du score
AIDE7
LDX #MAPPUI
LBSR CHAINE affichage du message appuyer touche
AIDE8
* SWI lecture rapide clavier MO5
* FCB $0C
JSR $E806 lecture clavier TO7
BEQ AIDE8 attente d'une touche
* CMPB #$03 touche secrete ACC MO5 pour redemarrer
CMPB #$16 touche secrete ACC TO7 pour redemarrer
LBEQ INIT redemarrage
* retablissement de la configuration de jeu
LBSR TDISP affichage de toutes les pastilles
LDX #$0080 hauteur note
LDA #$10 longueur note
LBSR BUZZ signal sonore
LDX #MAIDE
LBSR CHAINE affichage du message pour l'aide
PULS A compteur de coups possibles
CMPA #$00
BNE AIDE9 continuer s'il y a des coups possibles
* reinitialisation en cas de blocage
LBSR COLINI initialisation des couleurs
LBSR TDISP affichage de toutes les pastilles
LBSR PALIGN recherche alignements
AIDE9
RTS
*===========================================
* AFFICHAGE PERMUTATION HORIZONTALE POSSIBLE
*===========================================
PERMH
LDX #PADDR
TFR B,A
LSLA
LDX A,X
LEAX $192,X
TST MOTO test du type d'ordinateur
BNE PERMH2
PERMH1
LDA $A7C0 PA du PIA systeme MO5
ORA #$01 Set bit 0
STA $A7C0 selection video forme MO5
BRA PERMH3
PERMH2
LDA $E7C3 PA du PIA systeme TO7
ORA #$01 Set bit 0
STA $E7C3 selection video forme TO7
PERMH3
LDA #$FF
STA ,X+
STA ,X+
LEAX $26,X
STA ,X+
STA ,X+
PERMH9
RTS
*===========================================
* AFFICHAGE PERMUTATION VERTICALE POSSIBLE
*===========================================
PERMV
LDX #PADDR
TFR B,A
LSLA
LDX A,X
LEAX $2D1,X
TST MOTO test du type d'ordinateur
BNE PERMV2
PERMV1
LDA $A7C0 PA du PIA systeme MO5
ORA #$01 Set bit 0
STA $A7C0 selection video forme MO5
BRA PERMV3
PERMV2
LDA $E7C3 PA du PIA systeme TO7
ORA #$01 Set bit 0
STA $E7C3 selection video forme TO7
PERMV3
LDA #$0A compteur de boucles
PSHS A empilage
LDA #$30
PERMV4
STA ,X
LEAX $28,X
DEC ,S
BNE PERMV4
PULS A
PERMV9
RTS
*===========================================
* ECHANGE DES COULEURS B ET B+1 (HORIZONTAL)
*===========================================
CINVH
LDX #PCOLOR table des couleurs
LDA B,X couleur premiere pastille
PSH A
INCB
LDA B,X couleur deuxieme pastille
DECB
STA B,X deuxieme dans premiere
PULS A
INCB
STA B,X premiere dans deuxieme
DECB retablissement valeur initiale
RTS
*===========================================
* ECHANGE DES COULEURS B ET B+8 (VERTICAL)
*===========================================
CINVV
LDX #PCOLOR table des couleurs
LDA B,X couleur premiere pastille
PSH A
ADDB #$08
LDA B,X couleur deuxieme pastille
SUBB #$08
STA B,X deuxieme dans premiere
PULS A
ADDB #$08
STA B,X premiere dans deuxieme
SUBB #$08
RTS
*===========================================
* CALCUL DU NUMERO DE PASTILLE B
* FONCTION DE LIGNE ET COLONNE POINTEES
*===========================================
CALNUM
* numero dans la ligne = Y/3
TFR Y,D ligne pointee
SUBD #$0005 centre premiere pastille
CALNUM1
INCA
SUBB #$03
BGE CALNUM1
DECA
* multiplication par 8
LSLA
LSLA
LSLA
PSHS A empilage resultat
* numero dans la ligne = X/3
TFR X,D colonne pointee
SUBD #$0011 centre premiere pastille
CALNUM2
INCA
SUBB #$03
BGE CALNUM2
DECA
* ajout du nombre de pastilles lignes precedentes
ADDA ,S
TFR A,B
PULS A
RTS
*===========================================
* INVERSION DE DEUX PASTILLES B ET B+1
*===========================================
PINVH
BSR CALNUM calcul du numero B
BSR CINVH inversion des couleurs
LBSR PDISP affichage premiere pastille
INCB
LBSR PDISP affichage deuxieme pastille
LDX #$0080 hauteur note
LDA #$08 longueur note
BSR BUZZ
RTS
*===========================================
* INVERSION DE DEUX PASTILLES B ET B+8
*===========================================
PINVV
BSR CALNUM calcul du numero B
BSR CINVV inversion des couleurs
LBSR PDISP affichage premiere pastille
ADDB #$08
LBSR PDISP affichage deuxieme pastille
LDX #$0080 hauteur note
LDA #$08 longueur note
BSR BUZZ
RTS
*===========================================
* TEMPORISATION EN FONCTION DE X
*===========================================
TEMPO
PSHS X
TEMPO1
LEAX -1,X
BNE TEMPO1
PULS X,PC
*===========================================
* EMISSION SIGNAL SONORE
* TEMPO DANS X
* DUREE DANS A
*===========================================
BUZZ
* signal sonore
ORCC #$50 masque les interruptions
PSHS A compteur duree note
TST MOTO test du type d'ordinateur
BNE BUZZ3
* version MO5
BUZZ1
LDA $A7C1 registre pour le buzzer MO5
BUZZ2
ORA #$01
STA $A7C1 buzzer MO5 a un
BSR TEMPO temporisation
ANDA #$FE
STA $A7C1 buzzer MO5 a zero
BSR TEMPO temporisation
DEC ,S
BNE BUZZ2
BRA BUZZ9
* version TO7
BUZZ3
LDA $E7C1 registre pour le buzzer TO7
BUZZ4
ORA #$08
STA $E7C1 buzzer TO7 a un
BSR TEMPO temporisation
ANDA #$F7
STA $E7C1 buzzer TO7 a zero
BSR TEMPO temporisation
DEC ,S
BNE BUZZ4
* retour
BUZZ9
PULS A
ANDCC #$AF restaure les interruptions
RTS
*===========================================
* RETOUR VALEUR ALEATOIRE DANS A
*===========================================
ALEA
TST MOTO test du type d'ordinateur
BNE ALEA2
ALEA1
LDA $2031 valeur aleatoire MO5
INCA pour changer de couleur
STA $2031 en jeu automatique MO5
BRA ALEA3
ALEA2
LDA $E7C7 valeur aleatoire TO7
INCA pour changer de couleur
STA $E7C7 en jeu automatique TO7
ALEA3
RTS
*===========================================
* INITIALISATION AU HASARD DES COULEURS
*===========================================
COLINI
BSR ALEA valeur aleatoire dans A
LSRA
ANDA #$07
BEQ COLINI pas de noir
CMPA #$04
BEQ COLINI pas de bleu
CMPA #$07
BEQ COLINI pas de blanc
LDX #PCOLOR table des couleurs
LDB #$37 numero derniere pastille
COL9
STA B,X
DECB
BGE COL9
RTS
*===========================================
* SUPPRESSION PASTILLE B ET DESCENTE COLONNE
*===========================================
SUPPR
PSHS B
SUPPR1
SUBB #$08 pastille au-dessus
BLT SUPPR2 haut de colonne depasse
BSR SCROLL scroll pastille
BRA SUPPR1 pastille suivante
SUPPR2
BSR ALEA valeur aleatoire dans A
ANDA #$07 valeur entre 0 et 7
INCA
CMPA #$04 couleur de fond MO5
BNE SUPPR8
LDA #$05
SUPPR8
CMPA #$06
BLE SUPPR9
LDA #$01
SUPPR9
LDX #PCOLOR table des couleurs
ADDB #$08 premiere pastille colonne
STA B,X
LBSR PDISP affichage pastille
PULS B,PC
*===========================================
* SCROLL PASTILLE B
*===========================================
SCROLL
LDA JEUAUTO indicateur de jeu automatique
BNE SCROLL9 pas de mouvement en jeu automatique
LDX #PADDR table des adresses
LEAX B,X pointeur dans la table
LEAX B,X pointeur dans la table
LDY ,X adresse pastille B
PSHS Y empilage adresse originale
LDA #$18 compteur de boucle
PSHS A empilage compteur
PSHS Y,X empilage pointeur et adresse
SCROLL1
PULS X,Y
LEAY $28,Y
STY ,X
PSHS Y,X
LBSR PDISP
DEC 4,S
BNE SCROLL1
PULS X,Y
PULS A
PULS Y adresse originale
STY ,X restauration de l'adresse
* signal sonore
LDX #$0040 hauteur note
LDA #$03 longueur note
LBSR BUZZ
SCROLL9
PSHS B empilage no pastille depart
LDX #PCOLOR table des couleurs
LDA B,X couleur pastille depart
ADDB #$08
STA B,X couleur pastille arrivee
BSR PDISP affichage pastille arrivee
* incrementation du score
LDD SCORE
ADDD #$0001
STD SCORE
PULS B depilage no pastille depart
RTS
*===========================================
* AFFICHAGE DU NUMERO DE PARTIE
*===========================================
DPARTIE
LDX #PARTIE+2
LBSR CHAINE
LDD PARTIE
ADDD #$0001
STD PARTIE
JSR DISPD affichage registre D
RTS
*===========================================
* AFFICHAGE DU SCORE
*===========================================
DSCORE
PSHS B
LDX #BLANC effacement de Patientez....
LBSR CHAINE
LDX #COUPS+2
LBSR CHAINE
LDD COUPS nombre de coups
JSR DISPD affichage registre D
LDX #SCORE+2
BSR CHAINE
LDD SCORE score
JSR DISPD affichage registre D
LDX #MAX+2
BSR CHAINE
LDD MAX hiscore
JSR DISPD affichage registre D
PULS B,PC
*===========================================
* AFFICHAGE CHAINE EN X TERMINEE PAR $04
*===========================================
CHAINE
TST MOTO test du type d'ordinateur
BNE CHAIN2
CHAIN1
LDB ,X+
CMPB #$04
BEQ CHAIN9
SWI affichage caractere MO5
FCB $02
BRA CHAIN1
CHAIN2
LDB ,X+
CMPB #$04
BEQ CHAIN9
JSR $E803 affichage caractere TO7
BRA CHAIN2
CHAIN9
RTS
*===========================================
* AFFICHAGE DE LA PASTILLE B
*===========================================
PDISP
PSHS B empilage du numero de pastille
LDX #PCOLOR
LDA B,X couleur pastille
LSLA
LSLA
LSLA
TST MOTO test du type d'ordinateur
BNE PDISP2
* calcul octet couleur MO5
PDISP1
LDB $A7C0 MO5
ANDB #$FE
STB $A7C0 MO5
LSLA
ORA #$04 couleur de fond bleu
BRA PDISP3
* calcul octet couleur TO7
PDISP2
LDB $E7C3 TO7
ANDB #$FE
STB $E7C3 TO7
ORA #$C4 bits intensite et fond
* recherche adresse pastille
PDISP3
LDB ,S numero de pastille
LDX #PADDR table des adresses
LSLB deplacement dans la table
LDY B,X adresse MO5 pastille B
TST MOTO test du type d'ordinateur
BEQ PDISP4 type MO5
LEAY $4000,Y adresse TO7 pastille B
PDISP4
PSHS Y empilage adresse
LDB #$18 nombre de lignes
PDISP5
STA 0,Y
STA 1,Y
STA 2,Y
LEAY $28,Y
DECB
BNE PDISP5
ORA #$07 couleur de fond blanc
LEAY -$27F,Y
LDB #$08
PDISP6
STA ,Y
LEAY $28,Y
DECB
BNE PDISP6
PULS Y
* forme
TST MOTO test du type d'ordinateur
BNE PDISP8
PDISP7
INC $A7C0 selection video forme MO5
BRA PDISP9
PDISP8
INC $E7C3 selection video forme TO7
PDISP9
LDX #PGRAPH table de definition pastille
BSR CDISP affichage premiere colonne
BSR CDISP affichage deuxieme colonne
BSR CDISP affichage troisieme colonne
PULS B,PC
*===========================================
* AFFICHAGE DE TOUTES LES PASTILLEs
*===========================================
TDISP
LDB #$37
TDISP1
BSR PDISP affichage d'une pastille
DECB
BGE TDISP1
RTS
*===========================================
* AFFICHAGE COLONNE PASTILLE
*===========================================
CDISP
LDB #$18
CDISP1
LDA ,X+
STA ,Y
LEAY $28,Y
DECB
BNE CDISP1
LEAY -$3BF,Y
RTS
*===========================================
* AFFICHAGE REGISTRE D EN DECIMAL
*===========================================
DISPD
STD DWORK1 stockage de D
CLR DISPCN raz nbre de chiffres affiches
LDD #10000 diviseur
BSR DISPC
LDD #1000 diviseur
BSR DISPC
LDD #100 diviseur
BSR DISPC
LDD #10 diviseur
BSR DISPC
LDD #1 diviseur
INC DISPCN forcer affichage unite a zero
BSR DISPC
RTS
*===========================================
* AFFICHAGE CHIFFRE DECIMAL
*===========================================
DISPC
STD DWORK2 stockage diviseur
BSR DIVD division de D
CMPB #$00
BNE DISPC1
LDA DISPCN nombre de chiffers affiches
BNE DISPC1 affichage du zero
RTS pas d'affichage du zero
DISPC1
INC DISPCN
ADDB #$30 code ASCII
TST MOTO test du type d'ordinateur
BNE DISPC3
DISPC2
SWI affichage caractere
FCB $82 retour
DISPC3
JSR $E803 affichage caractere TO7
RTS
DISPCN
FCB $00
*===========================================
* DIVISION DE DWORK1 PAR DWORK2
* RESULTAT DANS B, RESTE DANS DWORK1
*===========================================
DIVD
CLRB
PSHS B compteur pour le quotient
LDD DWORK1 dividende
DIVD1
SUBD DWORK2 oter le diviseur
BLT DIVD2 terminer si valeur negative
INC ,S incrementer le quotient
BRA DIVD1 recommencer
DIVD2
ADDD DWORK2 annuler la derniere soustraction
STD DWORK1 reste dans DWORK1
PULS B,PC depilage et retour
DWORK1
FDB $0000 zone de stockage du nombre
DWORK2
FDB $0000 diviseur
*===========================================
* Variables diverses (score, coups, etc.)
*===========================================
PARTIE
FDB $0000
FCB $1E,$0A,$0A,$0A,$0A,$0A
FCC 'Partie: '
FCB $04
COUPS
FDB $0000
FCB $1E,$0A,$0A,$0A,$0A,$0A,$0A
FCC 'Coups : '
FCB $04
SCORE
FDB $0000
FCB $1E,$0A,$0A,$0A,$0A,$0A,$0A,$0A
FCC 'Score : '
FCB $04
MAX
FDB $0000
FDB $1E0A,$0A0A,$0A0A,$0A0A,$0A0A
FCC 'Hiscore '
FCB $04
BLANC
FCB $1E locate 0,0
FDB $0A0A,$0A0A,$0A0A
FCB $0A
FCC ' '
FCB $04
COUPMAX
FDB $0020 nbre de coups par partie
JEUAUTO
FCB $00 indicateur de jeu automatique
MOTO
FCB $00 type d'ordinateur 0=MO,1=TO
*===========================================
* Initialisation de l'ecran
*===========================================
SCRINIT
FCB $1B sequence d'echappement
FCB $47 forme blanc
FCB $1B sequence d'echappement
FCB $54 fond bleu
FCB $1B sequence d'echappement
FCB $64 cadre bleu
FCB $0C effacement ecran
FCB $14 extinction curseur
FCB $04
*===========================================
* AFFICHAGE BITMAP DU TITRE
*===========================================
BITMAP
TST MOTO
BNE BITM7
BITM5
LDA $A7C0 registre MO5
ORA #$01 bit selection video
STA $A7C0 selection forme
LDY #$0000 adresse ecran MO5
LDX #TITRE5 adresse titre MO5
LDD #$0E18 dimensions bitmap
BSR BITMX affichage bitmap
LDY #$000E adresse ecran MO5
BRA BITM9
BITM7
LDA $E7C3 registre TO7
ORA #$01 bit selection video
STA $E7C3 selection forme
LDY #$4000 adresse ecran TO7
LDX #TITRE7 adresse titre TO7
LDD #$0E18 dimensions bitmap
BSR BITMX affichage bitmap
LDY #$400E adresse ecran TO7
BITM9
LDX #KANDYK adresse titre
LDD #$1A18 dimensions bitmap
*===========================================
* AFFICHAGE EN Y DU BITMAP X
* LARGEUR Ax8, HAUTEUR B
*===========================================
BITMX
PSHS B,A empilage des dimensions
BITMX1
PSHS Y adresse debut ligne
BITMX2
LDB ,X+ lecture 8 bits
STB ,Y+ ecriture 8 bits
DECA compteur de colonnes
BNE BITMX2 colonne suivante
PULS Y adresse debut de ligne
LEAY $28,Y adresse ligne suivante
LDA ,S compteur de colonnes
DEC 1,S compteur de lignes
BNE BITMX1 ligne suivante
PULS A,B,PC
*===========================================
* Ecran pour une nouvelle partie
*===========================================
SCRNEW
FCB $1E locate 0,0
FDB $0A0A,$0A0A,$0A0A
FCC ' '
FDB $0D0A
FCC 'Patientez... '
FDB $0D0A,$0A0A,$0A0A
FCC 'Alignez 3 pions'
FDB $0D0A
FCC 'de m'
FDB $1643
FCC 'eme couleur '
FDB $0D0A
FCC 'horizontalement '
FDB $0D0A
FCC 'ou verticalement'
FCB $0D,$0A,$0A
FCC 'Pointez entre 2 '
FDB $0D0A
FCC 'pions pour les '
FDB $0D0A
FCC 'permuter.'
FCB $04
*===========================================
* Message pour afficher l'aide
*===========================================
MAIDE
FDB $1E0A locate 0,0 + line feed
FDB $0A0A,$0A0A,$0A0A,$0A0A,$0A0A
FDB $0A0A,$0A0A,$0A0A,$0A0A,$0A0A
FCC 'Touche A = Aide'
FDB $0D0A
FCC 'avec perte de '
FDB $0D0A
FCC 'dix points. '
FCB $04
*===========================================
* Message d'appui sur une touche
*===========================================
MAPPUI
FDB $1E0A locate 0,0 + line feed
FDB $0A0A,$0A0A,$0A0A,$0A0A,$0A0A
FDB $0A0A,$0A0A,$0A0A,$0A0A,$0A0A
FCC 'Appuyez sur une'
FDB $0D0A
FCC 'touche pour '
FDB $0D0A
FCC 'continuer... '
FCB $04
*===========================================
* Message de fin de partie MO5
*===========================================
FPART5
FDB $1B73 caracteres taille double MO5
FCB $1F sequence user
FDB $4D52 curseur ligne 13 colonne 18
FCC 'FIN'
FDB $1B70 caracteres taille normale MO5
FCC ' de '
FDB $1B73 caracteres taille double MO5
FCC 'PARTIE'
FDB $1B70 caracteres taille normale MO5
FCB $04
*===========================================
* Message de fin de partie TO7
*===========================================
FPART7
FDB $1B4F caracteres taille double TO7
FCB $1F sequence user
FDB $4D52 curseur ligne 13 colonne 18
FCC 'FIN'
FDB $1B4C caracteres taille normale TO7
FCC ' de '
FDB $1B4F caracteres taille double TO7
FCC 'PARTIE'
FDB $1B4C caracteres taille normale TO7
FCB $04
*===========================================
* Table des couleurs
*===========================================
PCOLOR
FCB $00,$00,$00,$00,$00,$00,$00,$00
FCB $00,$00,$00,$00,$00,$00,$00,$00
FCB $00,$00,$00,$00,$00,$00,$00,$00
FCB $00,$00,$00,$00,$00,$00,$00,$00
FCB $00,$00,$00,$00,$00,$00,$00,$00
FCB $00,$00,$00,$00,$00,$00,$00,$00
FCB $00,$00,$00,$00,$00,$00,$00,$00
*===========================================
* Positions des pastilles dans l'ecran
*===========================================
PADDR
FDB $0510,$0513,$0516,$0519,$051C,$051F,$0522,$0525
FDB $08D0,$08D3,$08D6,$08D9,$08DC,$08DF,$08E2,$08E5
FDB $0C90,$0C93,$0C96,$0C99,$0C9C,$0C9F,$0CA2,$0CA5
FDB $1050,$1053,$1056,$1059,$105C,$105F,$1062,$1065
FDB $1410,$1413,$1416,$1419,$141C,$141F,$1422,$1425
FDB $17D0,$17D3,$17D6,$17D9,$17DC,$17DF,$17E2,$17E5
FDB $1B90,$1B93,$1B96,$1B99,$1B9C,$1B9F,$1BA2,$1BA5
*===========================================
* Graphisme de la pastille (par colonne)
*===========================================
PGRAPH
FCB $00,$00,$00,$00,$00,$03,$07,$07
FCB $0F,$0F,$0F,$0F,$0F,$0F,$07,$07
FCB $03,$00,$00,$00,$00,$00,$00,$00
FCB $00,$00,$00,$00,$FC,$FF,$FF,$FF
FCB $FF,$FF,$FE,$FE,$FC,$FC,$F1,$C3
FCB $FF,$FC,$00,$00,$00,$00,$00,$00
FCB $00,$00,$00,$00,$00,$00,$80,$80
FCB $C0,$C0,$C0,$C0,$C0,$C0,$80,$80
FCB $00,$00,$00,$00,$00,$00,$00,$00
*===========================================
* Graphisme MO5
*===========================================
TITRE5
FDB $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
FDB $FE00,$7FFC,$00FC,$0000,$3F00,$0000,$7FFF
FDB $FEFF,$BFFB,$FEF3,$FFFF,$CF7F,$FFFF,$7FFF
FDB $FEFF,$BFFB,$FEEF,$FFFF,$F77F,$FFFF,$7FFF
FDB $FEF7,$DFF7,$DEEF,$FFFF,$F77F,$FFFF,$7FFF
FDB $FEF3,$DFF7,$9EDF,$FFFF,$FB78,$0000,$7FFF
FDB $FEF3,$EFEF,$9EDF,$0000,$FB7B,$FFFF,$FFFF
FDB $FEF5,$EFEF,$5EDE,$FFFF,$7B7B,$FFFF,$FFFF
FDB $FEF5,$F7DF,$5EDE,$FFFF,$7B7A,$0007,$FFFF
FDB $FEF6,$F7DE,$DEDE,$FFFF,$7B78,$FFF9,$FFFF
FDB $FEF6,$FBBE,$DEDE,$FFFF,$7B7F,$FFFE,$FFFF
FDB $FEF7,$7BBD,$DEDE,$FFFF,$7B7F,$FFFF,$7FFF
FDB $FEF7,$7D7D,$DEDE,$FFFF,$7B7E,$001F,$7FFF
FDB $FEF7,$BD7B,$DEDE,$FFFF,$7B00,$FFEF,$7FFF
FDB $FEF7,$BEFB,$DEDE,$FFFF,$7BFF,$FFEF,$7FFF
FDB $FEF7,$DEF7,$DEDE,$FFFF,$7BFF,$FFEF,$7FFF
FDB $FEF7,$DEF7,$DEDE,$FFFF,$7BFF,$FFEF,$7FFF
FDB $FEF7,$EFEF,$DEDF,$0000,$FB00,$FFEF,$7FFF
FDB $FEF7,$EFEF,$DEDF,$FFFF,$FB7E,$001F,$7FFF
FDB $FEF7,$F7DF,$DEEF,$FFFF,$F77F,$FFFF,$7FFF
FDB $FEF7,$F7DF,$DEEF,$FFFF,$F7BF,$FFFE,$FFFF
FDB $FEF7,$FBBF,$DEF3,$FFFF,$CFCF,$FFF9,$FFFF
FDB $FE07,$F83F,$C0FC,$0000,$3FF0,$0007,$FFFF
FDB $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
*===========================================
* Graphisme TO7
*===========================================
TITRE7
FDB $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
FDB $FE00,$0000,$0FFF,$800F,$FFFF,$F000,$00FF
FDB $FE00,$0000,$0FFC,$0001,$FFFF,$F000,$00FF
FDB $FE00,$0000,$0FF0,$0000,$7FFF,$F000,$00FF
FDB $FE00,$0000,$0FE0,$0000,$3FFF,$F000,$00FF
FDB $FFFF,$FFFF,$FFC0,$7FF0,$1FFF,$FFFF,$F0FF
FDB $FE00,$0400,$0FC1,$C01C,$1FFF,$F000,$10FF
FDB $FE00,$0400,$0F87,$0007,$0FFF,$F000,$30FF
FDB $FE00,$0400,$0F86,$0003,$0FFF,$F000,$20FF
FDB $FE00,$0400,$0F0C,$0001,$87FF,$F000,$61FF
FDB $FFFF,$843F,$FF08,$3FE0,$87FF,$FFF0,$C1FF
FDB $FFFF,$843F,$FF08,$7FF0,$87FF,$FFE0,$83FF
FDB $FFFF,$843F,$FF08,$3FE0,$87FF,$FFE1,$87FF
FDB $FFFF,$843F,$FF0C,$0001,$87FF,$FFC3,$07FF
FDB $FFFF,$843F,$FF86,$0003,$0FFF,$FF82,$0FFF
FDB $FFFF,$843F,$FF87,$0007,$0FFF,$FF86,$1FFF
FDB $FFFF,$843F,$FFC1,$C01C,$1FFF,$FF0C,$1FFF
FDB $FFFF,$843F,$FFC0,$7FF0,$1FFF,$FE08,$3FFF
FDB $FFFF,$843F,$FFE0,$0000,$3FFF,$FE18,$7FFF
FDB $FFFF,$843F,$FFF0,$0000,$7FFF,$FC30,$7FFF
FDB $FFFF,$843F,$FFFC,$0001,$FFFF,$F820,$FFFF
FDB $FFFF,$843F,$FFFF,$800F,$FFFF,$F861,$FFFF
FDB $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
FDB $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
*===========================================
* Graphisme Kandy Krush
*===========================================
KANDYK
FDB $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
FDB $FFE3,$F83F,$FFFF,$FFFC,$7FFF,$FE3F,$83FF,$FFFF,$FF8F,$FFFF,$F1FF,$FFFF,$FFFF
FDB $FFE3,$F07F,$FFFF,$FFFC,$7FFF,$FE3F,$07FF,$FFFF,$FF8F,$FFFF,$F1FF,$FFFF,$FFFF
FDB $FFE3,$E0FF,$FFFF,$FFFC,$7FFF,$FE3E,$0FFF,$FFFF,$FF8F,$FFFF,$F1FF,$FFFF,$FFFF
FDB $FFE3,$C1FF,$FFFF,$FFFC,$7FFF,$FE3C,$1FFF,$FFFF,$FF8F,$FFFF,$F1FF,$FFFF,$FFFF
FDB $FFE3,$83F8,$1F10,$7F00,$63E3,$FE38,$3E02,$3E3C,$0788,$3FFF,$F1F0,$38FC,$703F
FDB $FFE3,$07E0,$0F00,$3E00,$63C3,$FE30,$7E02,$3E38,$0380,$1FFF,$F1C0,$18FC,$401F
FDB $FFE0,$0FC0,$0700,$3C00,$63C3,$FE00,$FE06,$3E30,$0380,$0FFF,$F180,$08F8,$000F
FDB $FFE0,$1FC3,$870E,$1870,$61C7,$FE01,$FE1E,$3E31,$E187,$0FFF,$F187,$0C78,$870F
FDB $FFE0,$0FC7,$C71F,$1878,$71C7,$FE00,$FE3E,$3E30,$718F,$8FFF,$F18F,$8C78,$8F8F
FDB $FFE0,$0FFE,$071F,$18F8,$7187,$FE00,$FE3E,$3E30,$0F8F,$8FFF,$F1FC,$0C31,$FC0F
FDB $FFE1,$87F0,$071F,$18FC,$708F,$FE18,$7E3E,$3E38,$038F,$8FFF,$F1E0,$0E31,$E00F
FDB $FFE3,$83E0,$071F,$18FC,$780F,$FE38,$3E3E,$3E3C,$018F,$8FFF,$F1C0,$0E21,$C00F
FDB $FFE3,$C3C1,$C71F,$18F8,$780F,$FE3C,$3E3E,$3E3F,$C18F,$8FF8,$F183,$8F03,$838F
FDB $FFE3,$E1C7,$871F,$1878,$781F,$FE3E,$1E3E,$3C31,$F18F,$8FF8,$F18F,$0F03,$8F0F
FDB $FFE3,$F0C3,$071F,$1C30,$7C1F,$FE3F,$0E3E,$1830,$618F,$8FF8,$6186,$0F07,$860F
FDB $FFE3,$F040,$071F,$1C00,$7C1F,$FE3F,$063E,$0038,$038F,$8FF8,$0380,$0F87,$800F
FDB $FFE3,$F860,$031F,$1E00,$7E1F,$FE3F,$863F,$0038,$038F,$8FFC,$07C0,$0787,$C007
FDB $FFE3,$FC30,$E31F,$1F84,$7E3F,$FE3F,$C23F,$C23E,$0F8F,$8FFF,$0FE1,$C7CF,$E1C7
FDB $FFFF,$FFFF,$FFFF,$FFFF,$FC3F,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
FDB $FFFF,$FFFF,$FFFF,$FFFF,$FC7F,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
FDB $FFFF,$FFFF,$FFFF,$FFFF,$F07F,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
FDB $FFFF,$FFFF,$FFFF,$FFFF,$F0FF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
FDB $FFFF,$FFFF,$FFFF,$FFFF,$F1FF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
END
Daniel
L'obstacle augmente mon ardeur.
L'obstacle augmente mon ardeur.
Re: MO5 Kandy Krush Java
Je pense qu'il y a plus simple pour tester si il s'agit d'un TO ou d'un MO
J'ai mis volontairement l'adresse $FFF0 au cas ou le besoin de tester la version est nécessaire Sinon bien sûr on peut simplifier par
Code : Tout sélectionner
CLR MOTO ' le tampon MOTO n'a pas besoin d'être initialisé
' car normalement à 0 lors du chargement du programme
TEST LDX #$FFF0 ' je pointe l'adresse moniteur commune aux deux types dans x
LDA #7 ' je charge la valeur du bit à tester
BITA 2,(X) * les parenthèses servent à comprendre qu'il s'agit du mot contenu dans X+2
BNE SUITE ' si le bit 7 est à 1 alors c'est un MO
INC MOTO ' sinon c'est un TO
SUITE...
MOTO FCB 00
Code : Tout sélectionner
TEST LDA #7
BITA #$FFF2
BNE SUITE
INC MOTO
Dernière modification par jasz le 07 oct. 2016 19:02, modifié 1 fois.
Re: MO5 Kandy Krush Java
Ce que tu écris est vrai pour les ROMs officielles Thomson. Par contre, pour d'autres ROMs existantes ou à venir, il n'y a aucune garantie. Par exemple, dans la dernière version de la ROM OS/9 pour TO9+, le bit 7 de $FFF2 est à 1. Tu me diras que ce n'est pas grave, car Kandy Krush ne fonctionne pas dans OS/9 puisqu'il appelle des routines système Thomson. Mais rien n'empêche un développeur d'écrire une ROM compatible Thomson avec un bit 7 de $FFF2 différent de la valeur habituelle.
Ma méthode de test de l'adresse $1F40 pour déterminer si c'est de la RAM ou de la ROM n'est pas plus compliquée et un peu plus sûre.
Ma méthode de test de l'adresse $1F40 pour déterminer si c'est de la RAM ou de la ROM n'est pas plus compliquée et un peu plus sûre.
Daniel
L'obstacle augmente mon ardeur.
L'obstacle augmente mon ardeur.
Re: MO5 Kandy Krush Java
Oui aussi! Mais là on rentre dans un futur incertain . Et si ce jeune homme s'amuse à dénaturer toutes les ROM d'origines ou allons nous? Remarque, je dis ça, je dis rien Mon exemple s'applique simplement à des machines ordinairesDaniel a écrit : Mais rien n'empêche un développeur d'écrire une ROM compatible Thomson avec un bit 7 de $FFF2 différent de la valeur habituelle.
edit
Remarque, cette fameuse partie commune aux deux types pourrait t'être utile pour l'affichage du logo. L'octet $FFF0 permet de connaitre le modèle de la machine
Dernière modification par jasz le 08 oct. 2016 08:23, modifié 2 fois.
-
- Messages : 7988
- Inscription : 18 sept. 2010 12:08
- Localisation : Brest et parfois les Flandres
Re: MO5 Kandy Krush Java
Ya un bug! Sur le 6809 l'opération BITA est en réalité un masque AND qui ne modifife pas le registe. Aussi pour tester le bit 7, il faut charger A le registre avec 128 (==pow(2,7)) et pas 7.jasz a écrit :Code : Tout sélectionner
LDA #7 BITA XXXX BNE SUITE ' si le bit 7 est à 1 alors c'est un MO
Code : Tout sélectionner
LDA $FFF2
BITA #128
BNE SUITE
...
Code : Tout sélectionner
TST $FFFE ou LDA c'est pareuil pour le bit N(egative)
BMI SUITE
...
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Re: MO5 Kandy Krush Java
En effet __sam__, tu as parfaitement raison. C'est vrai que BIT ne fonctionne pas comme un BTST.
Il faut donc charger A avec $80 et remplacer le BITA par ANDA. J'aurais du tester avant mea culpa
Edit
Mais j'avoue ne pas avoir pensé à cette solution
Merci __sam__ pour cette précision
Il faut donc charger A avec $80 et remplacer le BITA par ANDA. J'aurais du tester avant mea culpa
Code : Tout sélectionner
CLR MOTO ' le tampon MOTO n'a pas besoin d'être initialisé
' car normalement à 0 lors du chargement du programme
TEST LDX #$FFF0 ' je pointe l'adresse moniteur commune aux deux types dans x
LDA $80 ' je charge la valeur du bit à tester
ANDA 2,(X) * les parenthèses servent à comprendre qu'il s'agit de l'octet contenu dans X+2
BEQ SUITE ' si le bit 7 est à 1 alors c'est un MO
INC MOTO ' sinon c'est un TO
SUITE...
MOTO FCB 00
Mais j'avoue ne pas avoir pensé à cette solution
Code : Tout sélectionner
TEST TST #$FFF2
BLT SUITE ' si le bit 7 est à 1 alors l'octet est négatif donc <0 c'est un MO
INC MOTO ' sinon c'est un TO
SUITE...
MOTO FCB 00
Dernière modification par jasz le 08 oct. 2016 08:09, modifié 2 fois.