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 !
Dernière édition par DiVi le 16 Mars 2021, 18:41, édité 1 fois.
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.
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.
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)
Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 21 invité(s)
Vous ne pouvez pas publier de nouveaux sujets dans ce forum Vous ne pouvez pas répondre aux sujets dans ce forum Vous ne pouvez pas éditer vos messages dans ce forum Vous ne pouvez pas supprimer vos messages dans ce forum Vous ne pouvez pas insérer de pièces jointes dans ce forum