Forum Oric
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Derniers sujets
» carte mère Oric (re)tracée
problème d'affichage écriture dans adresse mémoire écran, routine de scrolling EmptyMar 5 Mar 2024 - 18:54 par kenneth

» Meurtre à Grande Vitesse
problème d'affichage écriture dans adresse mémoire écran, routine de scrolling EmptyDim 25 Fév 2024 - 5:09 par Iurius

» ORIC-1 sur LE BON COIN
problème d'affichage écriture dans adresse mémoire écran, routine de scrolling EmptyVen 23 Fév 2024 - 23:01 par Mcar

» ORIC ATMOS sur LE BON COIN
problème d'affichage écriture dans adresse mémoire écran, routine de scrolling EmptyDim 4 Fév 2024 - 12:06 par kiwilevrai

» Problème d'affichage des couleurs avec un Oric Atmos
problème d'affichage écriture dans adresse mémoire écran, routine de scrolling EmptySam 27 Jan 2024 - 1:26 par pierbail

» Bienvenue dans le Forum des Oriciens
problème d'affichage écriture dans adresse mémoire écran, routine de scrolling EmptyMar 9 Jan 2024 - 12:33 par Dom50

» Rencontre avec Laurant Weill, co-fondateur de Loriciel, et mon garçon de 12 ans
problème d'affichage écriture dans adresse mémoire écran, routine de scrolling EmptyVen 29 Déc 2023 - 14:13 par Arcade-des-Monts

» Bonnes fêtes
problème d'affichage écriture dans adresse mémoire écran, routine de scrolling EmptyMar 26 Déc 2023 - 10:21 par Dom50

» Murders in Venice / Meutres à Venise
problème d'affichage écriture dans adresse mémoire écran, routine de scrolling EmptySam 18 Nov 2023 - 22:44 par retroric

» Un clavier PS/2 pour tester un ORIC
problème d'affichage écriture dans adresse mémoire écran, routine de scrolling EmptyDim 27 Aoû 2023 - 9:49 par Voyageur

» Disquette 3" Sedoric
problème d'affichage écriture dans adresse mémoire écran, routine de scrolling EmptyMar 1 Aoû 2023 - 14:22 par AtomeX

» faire un 6502 avec des phototransistor
problème d'affichage écriture dans adresse mémoire écran, routine de scrolling EmptyDim 16 Juil 2023 - 17:26 par Voyageur

» Oricutron linux et DSK
problème d'affichage écriture dans adresse mémoire écran, routine de scrolling EmptyJeu 29 Juin 2023 - 18:34 par Voyageur

» No Problem !
problème d'affichage écriture dans adresse mémoire écran, routine de scrolling EmptyDim 25 Juin 2023 - 17:53 par Voyageur

» MONASM pour emulateur ORIC
problème d'affichage écriture dans adresse mémoire écran, routine de scrolling EmptyLun 12 Juin 2023 - 18:31 par Gliou

Qui est en ligne ?
Il y a en tout 2 utilisateurs en ligne :: 0 Enregistré, 0 Invisible et 2 Invités

Aucun

Le record du nombre d'utilisateurs en ligne est de 29 le Mer 25 Fév 2015 - 14:01
Connexion

Récupérer mon mot de passe

Statistiques
Nous avons 240 membres enregistrés
L'utilisateur enregistré le plus récent est Jean72

Nos membres ont posté un total de 8915 messages dans 811 sujets
Sites Sympas

> Culture Club


-20%
Le deal à ne pas rater :
(Adhérents Fnac) Enceinte Bluetooth Marshall Stanmore II Noir
199.99 € 249.99 €
Voir le deal

problème d'affichage écriture dans adresse mémoire écran, routine de scrolling

4 participants

Aller en bas

problème d'affichage écriture dans adresse mémoire écran, routine de scrolling Empty problème d'affichage écriture dans adresse mémoire écran, routine de scrolling

Message par goyo Mer 10 Oct 2018 - 12:28

Je me m'initie à l'assembleur à travers le C osdk. J'ai pas bien tout compris le système d'affichage de la boucle de scrolling du code ci-dessous.

J'aimerais pouvoir obtenir la version Assembleur symbolique , relogeable de cette routine. J'ai fait une tentative dans le code plus bas mais sans succès.

je ne comprend pas comment ça fait pour agir sur la mémoire de l'écran étant donné que les adresses 0C et 0D ne sont pas celles de l'écran mais des adresses de la page zéro :-/
de pus je sais pas si les adresses 0C et 0D sont elles déjà réservées par le compilateur C  ou par osdk ?

code du bouquin "L'assembleur de l'ORIC 1 et ORIC-ATMOS" Edition PSI, page 76
Code:
LDA 82
STA (0C)
LDA BB
STA (0D)
LDX 27d
CLC
LDA (0C)
ADC 40d
STA (0C)
BCC 2+2
INC (0D)
LDY 37d
LDA (0C),Y
PHA
DEY
LDA (OC),Y
INY
STA (0C),Y
DEY
DEY
BPL 2-9
INY
PLA
STA (0C),Y
DEX
BNE 2-33
RTS

voici mon code en assembleur symbolique qui n'affiche rien ...
Code:

;scroll de droite à gauche
_scrollleft

LDA $82
STA $0C
LDA $BB
STA $0D
LDX 27
suite3
CLC
LDA $0C
ADC 40
STA $0C
BCC suite1
INC $0D
suite1
LDY 37
LDA $0C,Y
PHA
DEY
suite2
LDA $0C,Y
DEY
STA $0C,Y
DEY
DEY
BPL suite2
INY
PLA
STA $0C,Y
DEX
BNE suite3
RTS
merci de votre aide ! Very Happy
goyo
goyo

Messages : 199
Date d'inscription : 02/05/2014
Age : 52
Localisation : Massy

Revenir en haut Aller en bas

problème d'affichage écriture dans adresse mémoire écran, routine de scrolling Empty Re: problème d'affichage écriture dans adresse mémoire écran, routine de scrolling

Message par didierv Mer 10 Oct 2018 - 18:24

Pour les adresses prises en C par OSDK, voir http://osdk.defence-force.org/index.php?page=documentation&subpage=zeropage

Les adresses utilisées sont au delà de $50

_________________
DidierV - CEO Mag
alias coco.oric sur Defence-Force
didierv
didierv

Messages : 810
Date d'inscription : 19/01/2014
Age : 61
Localisation : Nord de la France

http://www.dmacoco.fr

Revenir en haut Aller en bas

problème d'affichage écriture dans adresse mémoire écran, routine de scrolling Empty Re: problème d'affichage écriture dans adresse mémoire écran, routine de scrolling

Message par Ladywasky Mer 10 Oct 2018 - 19:01

Je ne suis pas beaucoup plus douée que toi en assembleur.

Je pense que tu dois apprendre la différence entre un addressage direct ou immédiat et un adressage relatif Smile

Par exemple LDX #$A0 et LDX $A0, il y a une subtilité à comprendre qui permet de sortir de la page 0 Wink

Si ça peut te rassurrer, j'ai compris ça il y a deux jours en allant voir comment faire des effets sonores sur ATMOS.
Le premier code à comprendre se trouve dans Théoric n°7 page 39 (qui utilise la page 0)
et le second à comparer page dans Theoric HS pages 37 et 38 ainsi que Théoric n°4 page 56. C'est très court et très très instructif !!!
6 instructions assembleurs, c'est facile à étudier Very Happy

Et le résultat se trouve ici :
http://forum.defence-force.org/viewtopic.php?f=24&p=18242&sid=349c5074082bfc333ccbf1599a7f4d69#p18242

Et mis en pratique dans mon Oric Kong :
https://github.com/DJChloe/Orickong_C/blob/master/src/Main/main.cLà-dedans (cherche bien) et ici.

Tu vas voir, ce n'est pas si compliqué.
N'oublie pas d'avoir ton manuel Atmos sous le coude pour certaines mnémoniques (il y en à 3 ou 4 qui se battent en duel)
Ladywasky
Ladywasky

Messages : 240
Date d'inscription : 25/08/2018
Age : 53

Revenir en haut Aller en bas

problème d'affichage écriture dans adresse mémoire écran, routine de scrolling Empty Re: problème d'affichage écriture dans adresse mémoire écran, routine de scrolling

Message par assinie Mer 10 Oct 2018 - 19:47

L'équivalent du code du bouquin est, si je ne fais pas d'erreur:

Code:

    LDA #$82
    STA $0C
    LDA #$BB
    STA $0D

    LDX #27
suite3
    CLC
    LDA $0C
    ADC #40
    STA $0C
    BCC suite1
    INC $0D

suite1
    LDY #37
    LDA ($0C),Y
    PHA
    DEY

suite2
    LDA ($OC),Y
    INY
    STA ($0C),Y
    DEY
    DEY
    BPL suite2

    INY
    PLA
    STA ($0C),Y
    DEX
    BNE suite3
    RTS
Le code que tu as écrit ne fait aboslument pas la même chose.

Les 4 premières instructions placent la valeur $BB82 dans les "cases" mémoire $0C et $0D, ce qui correspond à l'adresse du 3ième caractère de la 1ère ligne de l'écran (si tu fais POKE #BB82,65 en BASIC, tu devrais voir un "A" à cet emplacement)

Pour comprendre le fonctionnement du programme, il faut décomposer les instructions LDA et STA.

  • Le $ indique une valeur en hexadécimal

  • Le # indique que l'argument de l'insrtuction est pris tel quel (immédiatement). Par exemple, LDX #27 charge la valeur décimale 27 dans le registre X.

  • Les parenthèses indiquent un adressage indirect, ce qui signifie que l'argument de l'instruction n'est pas à l'adresse indiquée mais à l'adresse contenue dans l'adresse indiquée...

    Par exemple:
    Si $0C contient $82, $0D contient $BB, et $BB82 contient $41, alors LDA ($0C) est équivalent à LDA $BB82 qui sera équivalent dans ce cas à LDA #$41

  • Le ,Y signifie que le registre Y sert d'index pour avoir l'adresse finale qui sera utilisée par l'instruction (ie on ajoute la valeur de Y à l'adresse en argument juste avant le ,Y)

    Par exemple:
    Si Y contient la valeur décimale 37, ou $25 en hexa, et $BBA7 contient la valeur $42, alors l'instruction LDA $BB82,Y est équivalent à LDA $BB82+$25 soit LDA $BBA7 et finalement A est chargé avec la valeur $42.


Maintenant, si on prend l'instruction LDA ($0C),Y et qu'on applique les règles ci-dessus, on a:
LDA ($0C),Y -> LDA $BB82,Y -> LDA $BBA7 -> LDA #$42

Le raisonnement est le même pour les instructions STA pour transférer le contenu du registre A vers une case mémoire.


Dernière édition par assinie le Mer 10 Oct 2018 - 19:57, édité 3 fois (Raison : Correction typo)
assinie
assinie

Messages : 271
Date d'inscription : 09/02/2014

Revenir en haut Aller en bas

problème d'affichage écriture dans adresse mémoire écran, routine de scrolling Empty Re: problème d'affichage écriture dans adresse mémoire écran, routine de scrolling

Message par assinie Mer 10 Oct 2018 - 20:01

Petite précision, si l'argument de l'instruction ne commence pas par un #, alors l'arguement représente une adresse mémoire (adressage absolu):

LDA #$25 charge l'accumulateur avec la valeur immédiate $25
LDA $25 charge l'accumulateur avec la valeur contenue à l'adresse absolue $25
assinie
assinie

Messages : 271
Date d'inscription : 09/02/2014

Revenir en haut Aller en bas

problème d'affichage écriture dans adresse mémoire écran, routine de scrolling Empty Re: problème d'affichage écriture dans adresse mémoire écran, routine de scrolling

Message par goyo Jeu 11 Oct 2018 - 16:06

Merci didierv, Ladywasky et assinie !

Je comprends mieux , c'est beaucoup plus clair pour moi  ! et un cours particulier c'est trop sympa Smile , surtout par des passionnés !

Je n'avais touché à l'assembleur de l'Oric depuis 30 ans ... J'avais fait une petite routine d'affichage de bloc en mode Hires : pour le prototype d'un jeu sur le thème Alien

Je crois que je ne vous poserai plus de questions lorsque j'aurai atteint le niveau d'assembleur du Professeur Chéma, je ne sais pas si ce sera ici bas ou dans la cieux Wink
goyo
goyo

Messages : 199
Date d'inscription : 02/05/2014
Age : 52
Localisation : Massy

Revenir en haut Aller en bas

problème d'affichage écriture dans adresse mémoire écran, routine de scrolling Empty Re: problème d'affichage écriture dans adresse mémoire écran, routine de scrolling

Message par goyo Jeu 11 Oct 2018 - 16:26

assinie a écrit:L'équivalent du code du bouquin est, si je ne fais pas d'erreur:

Code:

    LDA #$82
    STA $0C
    LDA #$BB
    STA $0D

    LDX #27
suite3
    CLC
    LDA $0C
    ADC #40
    STA $0C
    BCC suite1
    INC $0D

suite1
    LDY #37
    LDA ($0C),Y
    PHA
    DEY

suite2
    LDA ($OC),Y
    INY
    STA ($0C),Y
    DEY
    DEY
    BPL suite2

    INY
    PLA
    STA ($0C),Y
    DEX
    BNE suite3
    RTS
Le code que tu as écrit ne fait aboslument pas la même chose.

Les 4 premières instructions placent la valeur $BB82 dans les "cases" mémoire $0C et $0D, ce qui correspond à l'adresse du 3ième caractère de la 1ère ligne de l'écran (si tu fais POKE #BB82,65 en BASIC, tu devrais voir un "A" à cet emplacement)

Pour comprendre le fonctionnement du programme, il faut décomposer les instructions LDA et STA.

  • Le $ indique une valeur en hexadécimal

  • Le # indique que l'argument de l'insrtuction est pris tel quel (immédiatement). Par exemple, LDX #27 charge la valeur décimale 27 dans le registre X.

  • Les parenthèses indiquent un adressage indirect, ce qui signifie que l'argument de l'instruction n'est pas à l'adresse indiquée mais à l'adresse contenue dans l'adresse indiquée...

    Par exemple:
    Si $0C contient $82, $0D contient $BB, et $BB82 contient $41, alors LDA ($0C) est équivalent à LDA $BB82 qui sera équivalent dans ce cas à LDA #$41

  • Le ,Y signifie que le registre Y sert d'index pour avoir l'adresse finale qui sera utilisée par l'instruction (ie on ajoute la valeur de Y à l'adresse en argument juste avant le ,Y)

    Par exemple:
    Si Y contient la valeur décimale 37, ou $25 en hexa, et $BBA7 contient la valeur $42, alors l'instruction LDA $BB82,Y est équivalent à LDA $BB82+$25 soit LDA $BBA7 et finalement A est chargé avec la valeur $42.


Maintenant, si on prend l'instruction LDA ($0C),Y et qu'on applique les règles ci-dessus, on a:
LDA ($0C),Y -> LDA $BB82,Y -> LDA $BBA7 -> LDA #$42

Le raisonnement est le même pour les instructions STA pour transférer le contenu du registre A vers une case mémoire.

oups j'ai une erreur à la compilation  : Assembling    Rolling Eyes

Code:
  LDA ($OC),Y
C:\osdk\sample\c\hello_world_advanced\print.s(177):  09c8:Syntax error
Break after 1 errors
apparemment il ne veut pas des parenthèses du LDA ..?
(j'ai mis la routine dans le source print.s)

;scroll de droite à gauche

_scrollleft
LDA #$82
STA $0C
LDA #$BB
STA $0D

LDX #27
suite3
CLC
LDA $0C
ADC #40
STA $0C
BCC suite1
INC $0D

suite1
LDY #37
LDA ($0C),Y
PHA
DEY

suite2
LDA ($OC),Y
INY
STA ($0C),Y
DEY
DEY
BPL suite2

INY
PLA
STA ($0C),Y
DEX
BNE suite3
RTS
goyo
goyo

Messages : 199
Date d'inscription : 02/05/2014
Age : 52
Localisation : Massy

Revenir en haut Aller en bas

problème d'affichage écriture dans adresse mémoire écran, routine de scrolling Empty Re: problème d'affichage écriture dans adresse mémoire écran, routine de scrolling

Message par assinie Jeu 11 Oct 2018 - 17:26

C 'est une erreur de frappe, j'ai mis la lettre O à la place du chiffre 0 Embarassed
assinie
assinie

Messages : 271
Date d'inscription : 09/02/2014

Revenir en haut Aller en bas

problème d'affichage écriture dans adresse mémoire écran, routine de scrolling Empty Re: problème d'affichage écriture dans adresse mémoire écran, routine de scrolling

Message par goyo Jeu 11 Oct 2018 - 22:27

assinie a écrit:C 'est une erreur de frappe, j'ai mis la lettre O à la place du chiffre 0 Embarassed

Oups pardon c'est de ma faute , j'aurais du vérifier. Merci pour l'info.

0¿O
  °
goyo
goyo

Messages : 199
Date d'inscription : 02/05/2014
Age : 52
Localisation : Massy

Revenir en haut Aller en bas

problème d'affichage écriture dans adresse mémoire écran, routine de scrolling Empty Re: problème d'affichage écriture dans adresse mémoire écran, routine de scrolling

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum