CODINGApprendre pas à pas la programmation en assembleur Z80 par Roudoudou ★ Scrollings en folie! ★

Quand changer l'adresse du split-screen?

suite de l'article [Rupture en assembleur]

Comment définir deux adresses indépendantes pour nos écran?

Les registres R12 et R13

Les registres 12 et 13 servent à définir l'adresse de départ d'un écran. On peut les changer "un peu" quand on veut car l'adresse de départ n'est prise en compte qu'au début d'un écran. On changera donc R12 et R13 avant le nouvel écran!

Il vous faudra une [image mon chien] pour continuer ;)

buildsna : bankset 0
org #100 : run #100

ld sp,#100 : ld hl,#C9FB : ld (#38),hl : ei ; init pile+INT

ld bc,#BC06 : out (c),c : ld bc,#BD00+19 : out (c),c

ld bc,#7F00 : out (c),c : ld a,#54 : out (c),a
ld bc,#7F01 : out (c),c : ld a,#4E : out (c),a
ld bc,#7F02 : out (c),c : ld a,#43 : out (c),a
ld bc,#7F03 : out (c),c : ld a,#4B : out (c),a

ld bc,0 : ld a,10
unepause djnz $ : dec c : jr nz,unepause : dec a : jr nz,unepause

novbl ld b,#F5
.vbl in a,(c) : rra : jr nc,.vbl
.novbl in a,(c) : rra : jr c,.novbl

ld b,0 : djnz $

mainLoop
halt : halt
ld bc,#BC07 : out (c),c : ld bc,#BD00+255 : out (c),c ; desactiver la VBL
ld bc,#BC06 : out (c),c : ld bc,#BD00+19 : out (c),c ; notre écran visible fait 19 blocs
ld bc,#BC04 : out (c),c : ld bc,#BD00+18 : out (c),c ; notre écran "complet" fait 19 blocs (R4=19-1)

halt : halt
; changer l'adresse de l'écran suivant AVANT qu'il arrive!
ld bc,#BC00+12 : out (c),c : ld bc,#BD20 : out (c),c ; écran suivant en #8000
; attendre 16 lignes soit 16x64 nops ou 4x256 nops, le DJNZ qui saute prend 4 nops
ld b,0 : djnz $
ld bc,#7F02 : out (c),c : ld a,#47 : out (c),a ; petit changement de couleur
ld bc,#BC07 : out (c),c : ld bc,#BD00+11 : out (c),c
ld bc,#BC06 : out (c),c : ld bc,#BD00+8 : out (c),c ; on raccourci le deuxième écran visible
ld bc,#BC04 : out (c),c : ld bc,#BD00+19 : out (c),c ; le deuxième écran "complet" fait 20 blocs pour avoir 39 au total
halt : halt
ld bc,#7F02 : out (c),c : ld a,#43 : out (c),a ; petit changement de couleur pendant la VBL :)
ld bc,#BC00+12 : out (c),c : ld bc,#BD30 : out (c),c ; écran du haut en #C000
jr mainLoop

teucha defb #54,#4E,#43,#4B

org #8000 : incbin 'iench.bin'
org #C000 : incbin 'teucha.bin' ; petite image

Après avoir affiché le premier écran raccourci seul, la transition se fait sans heurt.


Je vous disais en début d'article qu'on peut changer R12 et R13 "un peu" quand on veut. C'est vrai pour tous les CRTC, sauf le plus performant des CRTC. The ONE.

Le CRTC-1 présente la particularité de prendre en compte le nouveau début d'écran pendant l'intégralité du bloc 0.

Cette spécificité est très utilisée par les meilleurs d'entre nous afin de réaliser des changements gratuits (Free Coffee). Big UP Futur's et Vanity!

C'est pour cette raison que je prépare l'adresse de l'écran du haut plus tard, en même temps que je prépare la couleur qui change. Si vous changez la ligne de place pour que le code à la fin change de ça...

halt : halt
ld bc,#7F02 : out (c),c : ld a,#43 : out (c),a ; petit changement de couleur pendant la VBL :)

En ça...

ld bc,#7F02 : out (c),c : ld a,#43 : out (c),a ; petit changement de couleur pendant la VBL :)
halt : halt

Alors les effets secondaires apparaissent. Sur CRTC 0,2,3 et 4, aucun souci, tout fonctionne comme attendu.

Et les spécialistes me diront que ce qui se passe sur CRTC-1 est aussi attendu!

Voilà, maintenant que vous le savez et que vous l'avez vu en situation, vous y penserez ;)

Que manque-t'il d'indispensable pour pouvoir travailler en même temps que notre rupture? Vous le saurez dans [l'article suivant].

Roudoudou

★ ANNÉE: 2026
★ AUTEUR: Roudoudou

Je participe au site:

» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.732-desktop/c
Page créée en 086 millisecondes et consultée 12 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.