Logicielsmoto.com

Nous sommes le 28 Mar 2024, 21:38

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 21 messages ]  Aller à la page Précédente  1, 2
Auteur Message
MessagePosté: 17 Fév 2022, 16:16 
Hors ligne

Inscription: 12 Fév 2021, 15:54
Messages: 78
Localisation: Rennes
Donc, en m'insipirant de ton code, ça, ça fonctionne :

Code:
    * PALETTE_BLACK : DEBUT   
    LDD #$0020
    STB PALETTE_SEL
!   STA PALETTE_REG    ; STA est plus rapide que CLR
    SUBB #$02
    BNE  <
    * PALETTE_BLACK : FIN

_________________
Fan de Atari 2600, Thomson MO5, Thomson TO8, Atari STE.
Retro-Codeur à mes heures perdues. https://www.fxjavadevblog.fr


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 17 Fév 2022, 16:28 
Hors ligne

Inscription: 12 Fév 2021, 15:54
Messages: 78
Localisation: Rennes
Voilà le code "corrigé" :

Code:
************************************************************************************************
* EQUATES
************************************************************************************************
GETCH        EQU $E806     * routine getchar
KEY_ENTER    EQU $0D      * touche entrée
PUTC         EQU $E803    * routine PUTC
SET_PALETTE   EQU $EC00   * routine setpalette
PALETTE_SEL   EQU $E7DB   * selecteur de palette
PALETTE_REG   EQU $E7DA   * registre lecture/écriture palette
MESSAGE       EQU $6280   * adresse du message text de Joshua. $6280, c'est à dire à l'offet 128
************************************************************************************************

** MACROS : DEBUT **********************************
PCHAR MACRO       * Affiche un caractère
    LDB \1
    JSR PUTC
    ENDM

PRINT MACRO       * Affiche une chaine de caractères
    LDX \1
    BSR PRINT_STRING
    ENDM
** MACROS : FIN ************************************   

    ORG $6200

DEBUT
    PSHS Y,X,A

    * PALETTE_BLACK : DEBUT   
    LDD #$0020
    STB PALETTE_SEL
!   STA PALETTE_REG    ; STA est plus rapide que CLR
    SUBB #$02
    BNE  <
    * PALETTE_BLACK : FIN

    LDX #$6200 * little trick
    STX $601E  * pour éviter l'écrasement du bootsector par PUTC, le méchant
       
    * init graphique
    PRINT #INIT

    * reglage palette couleur 1 sur CYAN (FF0)
    INCA        * A vaut 0 à cet endroit, on y affecte donc la valeur 1
    LDX #$FFF0
    LDY #$0FF0
    JSR SET_PALETTE

    * affichage du texte
    PRINT #MESSAGE     

    * attente clavier
    BSR KEY_ECHO

    PULS A,X,Y
FIN   
    RTS

********************************************************
* Routine : PRINT_STRING
* Affichage d'une chaine de caractères
* X contient l'adresse de la chaine, terminée par un $00
* Usage : LDX #STRING
*         BSR PRINT_STRING
********************************************************
PRINT_STRING
    PSHS B 
!   LDB ,X+
    BEQ >      * si B est égal à 0, on sort
    JSR PUTC
    CMPB #$0A       * test retour chariot ?
    BNE <           * ce n'est pas un retour chariot, on reboucle
    PCHAR #$0D      * on ajoute le retour à la ligne
    BRA <
!   PULS B,PC       * == RTS
********************************************************   


********************************************************
* Routine : KEY_ECHO
* Affiche un curseur et toutes les touches saisie
* jusqu'à ce que le code KEY (equate) soit rencontré
* Usage : BSR KEY_ECHO
********************************************************
KEY_ECHO 
    PSHS B
!   PCHAR #$7F          * curseur carré 
    PCHAR #$08          * on revient un cran en arrière (pour l'écraser par la suite)
    JSR GETCH           * on attend une touche saisie B contient le caractère tapé
    CMPB #KEY_ENTER     * est-ce le caractère de sortie ?
    BEQ >               * on sort de la boucle
    JSR PUTC            * on l'affiche si ce n'était pas le caractère de sortie       
    BRA <               * on boucle
!   PULS B,PC           * == RTS
********************************************************


**************************************************************************************
* DATA
**************************************************************************************
INIT
    FCB $1B,$5B                  * passage en mode 80 colonnes. Oui PUTC peut faire ça
    FCB $1B,$41,$1B,$50,$1B,$60  * screen 1,0,0
    FCB $11,$0C,$00              * effacement du curseur, effacement de l'écran
**************************************************************************************   
    END   


Je connaissais l'astuce du PULS ...,PC pour faire un RTS, mais j'avais oublié de le faire :-)
Et pour SUBB (et SUBBA), j'avais eu la flemme de cherche l'instruction, et je connaissais DECA :-)
Pour info, je me remets à peine à l'assembleur 6809 :tourne: :areuh:

_________________
Fan de Atari 2600, Thomson MO5, Thomson TO8, Atari STE.
Retro-Codeur à mes heures perdues. https://www.fxjavadevblog.fr


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 17 Fév 2022, 16:48 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1802
Localisation: Brest
Non c’est pas encore totalement bon pour l’initialisation de la palette je crois.

Déjà tu fais SUBB#2, donc tu n’écris que 16 valeurs. Ensuite le STB PALETTE_SEL écrit une valeur illégale (32, le max étant 31). Probablement que seuls 5 bits sont utilisés et que ça revient à écrire 0; mais il vaudrait quand même mieux écrire 0 (STA) à la place (c’est plus clair). Cependant, je pense que peu importe la valeur de départ de PALETTE_SEL. Ce qui compte c’est d’écrire 32 fois 0 (et pas 16, cf pb du SUB#2) en PALETTE_REG, et comme c’est cyclique on revient forcément à la valeur d’origine de PALETTE_SEL sans rien faire. ;)

Le label FIN n’à pas l’air utilisé. Du peux donc aussi fusionner le PULS/RTS je pense.

_________________
Good morning, that's a nice Tnetennba


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 17 Fév 2022, 21:50 
Hors ligne

Inscription: 12 Fév 2021, 15:54
Messages: 78
Localisation: Rennes
Rola Voui, j'avais fait n'importe quoi sur mon code précédent.

Finalement ton idée de base était bonne, il manquait juste un STA PALETTE_SEL avant la boucle.

Ce code fonctionne :

Code:
    * PALETTE_BLACK : DEBUT   
    LDD #0020       * on met 0 dans A et B sera le compteur. On itere sur 16 couleurs, ie:32 octets, ie:$20
    STA PALETTE_SEL
!   STA PALETTE_REG
    DECB   
    BNE  <
    * PALETTE_BLACK : FIN

_________________
Fan de Atari 2600, Thomson MO5, Thomson TO8, Atari STE.
Retro-Codeur à mes heures perdues. https://www.fxjavadevblog.fr


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 17 Fév 2022, 22:55 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1802
Localisation: Brest
Il manque un dollar ;)
LDD #$0020
(Je suis chiant :D )

_________________
Good morning, that's a nice Tnetennba


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 18 Fév 2022, 14:29 
Hors ligne

Inscription: 12 Fév 2021, 15:54
Messages: 78
Localisation: Rennes
Mais zut alors, j'suis nul ... :nanana: :W
J'avais mis quand même le $ dans le commentaire ... lol

Merci.

_________________
Fan de Atari 2600, Thomson MO5, Thomson TO8, Atari STE.
Retro-Codeur à mes heures perdues. https://www.fxjavadevblog.fr


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 21 messages ]  Aller à la page Précédente  1, 2

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 47 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages
Vous ne pouvez pas joindre des fichiers

Rechercher:
Aller à:  
cron
Développé par phpBB® Forum Software © phpBB Group
Traduction par phpBB-fr.com