CPC Rulez https://cpcrulez.fr/forum/ |
|
[résolu] Douce reprise de l'assembleur (par un gros boulet) https://cpcrulez.fr/forum/viewtopic.php?f=4&t=6483 |
Page 1 sur 1 |
Auteur : | DiVi [ 16 Mars 2021, 14:16 ] |
Sujet du message : | [résolu] Douce reprise de l'assembleur (par un gros boulet) |
Comme beaucoup avant moi, ça fait plusieurs dizaines d'année que je n'ai pas touché à l'assembleur Z80, j'ai décidé de m'y remettre doucement en reprenant tout depuis le début. J'étudie donc le listing présenté dans l'initiation à l'assembleur de Amstrad 100%, n°11 page 75. Évidement, ça marche pas comme je veux. Je vous met là ca que j'ai tapé : Code : ; ; org #9000 ; exec $ <- commenté parce que l'assembleur de WinAPE aime pas beaucoup ça ; ex de, hl ld a, (hl) inc hl ld e, (hl) inc hl ld d, (hl) push de pop hl add a, e ld e, a jr nc, suit inc d suit xor a ld (de), a pass push hl call #bd19 ld hl, #c781 loop ld b, #4f push hl push hl pop de dec de bouc ld a, (hl) ld (de), a inc hl inc de djnz bouc ld de, #800 pop hl add hl, de jr nc, loop ld hl, #5019 call #bb75 pop hl ld a, (hl) inc hl or a jr z, sors call #bb5a jr pass sors ld a, 32 jp #bb5a Je crois qu'il est sencé faire scroller une ligne de texte en bas de l'écran. Déjà, pour l'appeller, c'est bien un Code : call &9000,"Ma super chaine que je veux faire scroller" qu'il faut faire ? Si mes souvenirs sont bons, le XOR A qui sort de nulle part ligne 18 sert bien à mettre A à zéro plus vite qu'un LD, oui ? Désolé, c'est du niveau hyper débutant, et je galère déjà Toute aide est la bienvenue. Merci d'avance ! |
Auteur : | Nemo59 [ 16 Mars 2021, 15:46 ] |
Sujet du message : | Re: Douce reprise de l'assembleur |
Hello. Ça remonte à très loin pour moi aussi. Mais il me semble qu’il manque toute la partie pour pointer vers ta chaîne de caractère en paramètre au début de ton programme. |
Auteur : | DiVi [ 16 Mars 2021, 16:51 ] |
Sujet du message : | Re: Douce reprise de l'assembleur |
Non j' ai cru ça aussi au début, mais l'adresse du debut de la chaine est bien récupéré dans DE par Code : ex de, hl ; on met l'adresse du descripteur de la chaine dans HL ld a, (hl) ; A contient maintenant la longueur de la chaine inc hl ; HL pointe sur l'octet de poids faible de l'adresse de la chaine ld e, (hl) ; -> qu'on charge dans E inc hl ; HL pointe sur l'octet de poids fort de la chaine ld d, (hl) ; -> chargé dans D. DE pointe maintenant sur l'adresse de la chaine Je me suis amusé à commenter tout le listing pour mieux le comprendre et tout parrait correct. J'ai pas encore vérifé si les vecteurs utilisés sont les bons mais il y a pas de raisons. J'ai pas vu non plus de correctif dans le numéro suivant. D'ailleurs la chaîne s'affiche bien, juste pas au bon endroit et donc le scroll se fait dans le vide, s'il se fait. Je vais essayer de faire un GIF du résultat, si c'est possible avec WinAPE. edit : Il y avait pas une histoire de saut de ligne qui décale tout l'écran vers le haut quand on affiche un caractère dans la dernière colonne de la dernière ligne ? Je suis à peu près sûr que c'est le cas en basic, en assembleur je sais pas... Si c'est le cas ça peut pas marcher comme ça son truc, étonnant tout de même... non pas du tout, je sais pas d'où je sors ça. |
Auteur : | demoniakparadox [ 16 Mars 2021, 17:19 ] |
Sujet du message : | Re: Douce reprise de l'assembleur |
DiVi a écrit : Déjà, pour l'appeller, c'est bien un Code : call &9000,"Ma super chaine que je veux faire scroller" qu'il faut faire ? Si mes souvenirs sont bons, le XOR A qui sort de nulle part ligne 18 sert bien à mettre A à zéro plus vite qu'un LD, oui ? Désolé, c'est du niveau hyper débutant, et je galère déjà Toute aide est la bienvenue. Merci d'avance ! Oui, c'est bien call &9000,"chaine" à faire pour l'appeler Effectivement, le XOR A met 0 dans A (entre autres), plus vite que LD A,0 Sinon le programme que tu as listé semble fonctionner pour moi... |
Auteur : | DiVi [ 16 Mars 2021, 17:57 ] |
Sujet du message : | Re: Douce reprise de l'assembleur |
demoniakparadox a écrit : Sinon le programme que tu as listé semble fonctionner pour moi... Curieux, chez moi ça donne ça (piece jointe). Bon merci pour vos réponses, je vais continuer à investiguer... |
Auteur : | DiVi [ 16 Mars 2021, 18:40 ] |
Sujet du message : | Re: Douce reprise de l'assembleur |
Alors en fait, ça marche en mode 2. C'est pas précisé dans l'article, et j'ai pas fait gaffe aux coordonées du curseur... Toutes mes confuses (edit:par contre je comprend pas pourquoi en corrigeant les coordonnées du locate ça écrase le texte en mode 1, ça devrait rien changer puisque tout les octets sont décalés ? oui si forcément, faudrait décaler de 2 octets par caractere affiché... double boulet) |
Page 1 sur 1 | Le fuseau horaire est UTC+1 heure |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |