Logicielsmoto.com

Nous sommes le 28 Sep 2020, 23:15

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 194 messages ]  Aller à la page Précédente  1, 2, 3, 4, 5 ... 13  Suivante
Auteur Message
 Sujet du message: Re: Debut en asm sur TO8
MessagePosté: 09 Déc 2018, 01:24 
Hors ligne

Inscription: 06 Avr 2010, 01:59
Messages: 211
bon ok, j'ai fais un truc tout simple ça marche

Code:
          ORG $8000

          PSHS   A,B,X,Y,U,DP,CC

* Disable interrupts
          ORCC  #80

* Paint screen with 0xAA pattern in FORME
          LDA #$AA
          LDX #$5f40

boucle
          STA ,-X
          CMPX #4000
          BNE boucle

          PULS   A,B,X,Y,U,DP,CC,PC
         
          RTS


merci beaucoup, j'ai capté certaines choses du coup, top :bien:


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Debut en asm sur TO8
MessagePosté: 09 Déc 2018, 11:09 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1264
Localisation: Brest
Ton org est en $A000, mais tu charges et lance l'execution en $8000, c'est à dire pas du tout à l'adresse que tu as prévue. Pas étonannt que ca plante du coup.

[EDIT]et oui il faut préserver les registres pour revenir au basic.

_________________
Good morning, that's a nice Tnetennba


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Debut en asm sur TO8
MessagePosté: 09 Déc 2018, 11:54 
Hors ligne

Inscription: 27 Juin 2006, 19:44
Messages: 1054
Localisation: France (24)
Samuel Devulder a écrit:
[EDIT]et oui il faut préserver les registres pour revenir au basic.

S et DP surtout. CC éventuellement.

_________________
Marche a suivre pour s'inscrire sur ce forum
Do not forget to contact one of the administrators to validate your registration.
Le site des démos de Puls
L'émulateur Teo


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Debut en asm sur TO8
MessagePosté: 09 Déc 2018, 12:02 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1264
Localisation: Brest
Oui S et DP comme je l'avais indiqué dans >>ce message<< hier. Mais peut-être que ADNZ ne l'avait pas remarqué parmi les autres hypothèses possibles pour sa plante.

Ah tiens, en regardant le dernier code ASM, je me rend compte que le RTS après le "PULS ...,PC" est inutile (jamais executé) car après le puls comme on récupère le PC, on retroune à l'appellant.

_________________
Good morning, that's a nice Tnetennba


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Debut en asm sur TO8
MessagePosté: 09 Déc 2018, 13:56 
Hors ligne

Inscription: 06 Avr 2010, 01:59
Messages: 211
ok donc si j'avais pas récupéré le PC, le RTS s'exécuterait si j'ai bien compris.

re-ok donc en faite en sauvegardant le PC à l'entrée, c'est comme si je gardais l'adresse de l'execution du basic, donc en remettant le PC, c'est comme dire "reviens continuer d'executer le basic" !


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Debut en asm sur TO8
MessagePosté: 09 Déc 2018, 14:13 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1264
Localisation: Brest
Oui c'est exactement ca: le basic reprends juste après là où il a appellé ton code (commande EXEC).

_________________
Good morning, that's a nice Tnetennba


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Debut en asm sur TO8
MessagePosté: 28 Déc 2018, 18:45 
Hors ligne

Inscription: 06 Avr 2010, 01:59
Messages: 211
Bon ça avance ;)
Je commence à kiffé un peu quant je vois que ça fonctionne ;)

Petit scroll bouclé en bitmap 16, bon je dois mettre en place une petite routine de double buffer pour pas voir cette effet d'affichage décalé.
Faut que je potasse cette histoire de swap ram !

Image


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Debut en asm sur TO8
MessagePosté: 28 Déc 2018, 19:25 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1264
Localisation: Brest
Cool! :cool:

_________________
Good morning, that's a nice Tnetennba


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Debut en asm sur TO8
MessagePosté: 09 Jan 2020, 10:36 
Hors ligne

Inscription: 06 Avr 2010, 01:59
Messages: 211
question :

ça veux dire quoi le "LABEL_B+1" quant on écrit comme ça :

pourquoi on ajoute 1 à une etiquette de sous-prog ?

Code:
LABEL_A
              LDB   LABEL_B+1
              ...
              ...
LABEL_B
              LDB  #$00
              ...                               <- ça veux dire d'executer cette ligne ?  (LABEL_B+1ligne) ?
              ...
              RTS



Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Debut en asm sur TO8
MessagePosté: 09 Jan 2020, 10:40 
Hors ligne

Inscription: 24 Juil 2010, 16:08
Messages: 421
Localisation: France
Bonjour,

C'est pour accéder à l'opérande de l'instruction (ici le #$00 de LDB #$00). On utilise ça en général pour faire du code auto-modifié: on change la valeur de cet opérande en dur dans l'instruction, et ensuite on exécute l'instruction (probablement plusieurs fois), et au final l'exécution est plus rapide.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Debut en asm sur TO8
MessagePosté: 09 Jan 2020, 15:40 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1264
Localisation: Brest
Oui c'est cracra, dangereux et tout, mais comme ca va plus vite et que le code n'est pas en rom, ca marche et j'utilise beaucoup cela dans mes démos.

_________________
Good morning, that's a nice Tnetennba


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Debut en asm sur TO8
MessagePosté: 10 Jan 2020, 19:39 
Hors ligne

Inscription: 06 Avr 2010, 01:59
Messages: 211
salut,

J'ai repris et modifier ce bout de code qui s'auto-modifie,
mais j'arrive pas à faire alterner, un coup jump à saut_2000 un coup jump à saut_0000

Code:
swap_ramab_virtual
        LDB  swap_ramab_virtual0+1
        ANDB #$80
        cmpb $80
        BEQ  saut_2000
        cmpb $00
        BEQ  saut_0000
        COM  swap_ramab_virtual0+1
swap_ramab_virtual0
        LDB  #$00
        ANDB #$02
        ORB  #$60
        RTS

saut_0000
        LEAX  1,X
        RTS
saut_2000
        LEAX  $2000,X
        RTS



Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Debut en asm sur TO8
MessagePosté: 10 Jan 2020, 20:54 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1264
Localisation: Brest
Bon j'essaye de comprendre le code mais c'est un peut difficile (je ne pige pas trop ce qu'il fait).

Une remarque d'optim quand-même
Code:
LDB  swap_ramab_virtual0+1
        ANDB #$80
        cmpb $80
        BEQ  saut_2000
        cmpb $00
        BEQ  saut_0000
        COM  swap_ramab_virtual0+1
J'imagine que c'est CMPB #$80 et CMPB #$00 que tu veux faire (il manque le #).

Déjà première remarque, tu peux économiser 1 octet en replaçant "CMPB #0" par TSTB.

Ensuite, sachant que le résultat après le ANDB vaut soit $80 soit $00. Donc si le "BEQ saut_2000" n'est pas pris c'est que B vaut nécessairement $00, et donc le BEQ saut_0000 est pris. Bref tu peux éliminer le 2ème couple (CMPB/BEQ):
Code:
        LDB  swap_ramab_virtual0+1
        ANDB #$80
        cmpb $80
        BEQ  saut_2000
        BRA  saut_0000
        COM  swap_ramab_virtual0+1

Enfin, comme je le disais ANDB donne soit $80 soit $00. Donc la comparaison avec #$80 est en fait un BNE sur la sortie du ANDB. Chouette, on gagne encore une instruction:
Code:
        LDB  swap_ramab_virtual0+1
        ANDB #$80
        BNE  saut_2000
        BRA  saut_0000
        COM  swap_ramab_virtual0+1

Enfin (bis), le ANDB extrait le bit de signe de B. Donc en fait ce qu'on teste, c'est avoir si B est >=0 ou <0, plus précisément ANDB #$80 suivi par BNE peut être remplacé par BMI sur la valeur de B lue:
Code:
        LDB  swap_ramab_virtual0+1
        BMI  saut_2000
        BRA  saut_0000
        COM  swap_ramab_virtual0+1

Le code est devenu tout simple. Mais ce que je le comprends pas c'est: comment diable atteint-on la ligne "COM swap_ramab_virtual0+1" ??? Ne serait-ce pas là ton bug ? (en passant outre le # manquant au CMPB qui était probablement une faute de recopie sur le forum).

_________________
Good morning, that's a nice Tnetennba


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Debut en asm sur TO8
MessagePosté: 11 Jan 2020, 00:30 
Hors ligne

Inscription: 06 Avr 2010, 01:59
Messages: 211
eu non tu a raison c'est #$80, je me suis effectivement trompé !


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Debut en asm sur TO8
MessagePosté: 11 Jan 2020, 00:45 
Hors ligne

Inscription: 06 Avr 2010, 01:59
Messages: 211
ha ba oui pour atteindre COM swap_ramab_virtual0+1,

c'est pour ça que j'essaye de faire 2 CMPB qui link ou pas à une sub routine avec un RTS
qui reviens sur le 2eme CMPB link ou pas à une sub routine avec un RTS

du coup 1 coup sur 2 y'en à 1 des 2 qui dois pas linké ver la sub routine

genre

CMPB #$80
BEQ saut_2000 * if B == $80 then gosub saut_2000
sinon ça continu...
CMPB #$80
BNE saut_0000 * if B != $80 then gosub_saut_0000
sinon ça continu...
COM swap_ramab_virtual0+1


ahhh, j'y suis presque, y'a plus qu'a resserrer le colonne noir !
Image


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

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 3 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 à:  
Développé par phpBB® Forum Software © phpBB Group
Traduction par phpBB-fr.com