Bonjour je tente de créer un écran avec des ruptures mais malgré les différentes infos que je trouve un peu partout sur le net j'ai un problème en ce qui concerne ce qu'on affiche dans les ruptures. comment calculer l'offset de ce que l'on veut afficher dans les rupture y'a un truc que je comprends pas dans les reg12 et 13. si quelqu'un pouvait détailler un peu cette partie. Merci.
Inscription : 20 Août 2007, 18:21 Message(s) : 4998
https://cpcrulez.fr/coding_graphic-30-etude_du_CRTC__SOSP.htm a écrit :
R12: Ce seul registre permet non seulement de mettre la RAM écran dans n'importe lequel des 4 blocs de 16K mais en plus il permet d'adresser 32K pour l'écran au lieu des 16 prévus initialement . Ce sont les bits mis ou pas qui permettent le choix du bloc RAM et de la longueur d'adressage .
Les bits 7 & 6 ne sont pas utilisés . Les bits 5 & 4 déterminent l'adresse de départ de la RAM écran comme ceci 7 6 5 4 3 2 1 0 0 0 0 0 0 0 0 0 = 0 : RAM écran 16K de #0000 à #3FFF 0 0 0 1 0 0 0 0 = 16 : RAM écran 16K de #4000 à #7FFF 0 0 1 0 0 0 0 0 = 32 : RAM écran 16K de #8000 à #BFFF 0 0 1 1 0 0 0 0 = 48 : RAM écran 16K de #C000 à #FFFF
Les bits 3 & 2 mis simultanément adressent 32K de RAM écran .
7 6 5 4 3 2 1 0 0 0 0 0 1 1 0 0 = 12 : RAM écran 32K de #0000 à #7FFF 0 0 0 1 1 1 0 0 = 28 : RAM écran 32K de #4000 à #BFFF 0 0 1 0 1 1 0 0 = 44 : RAM écran 32K de #8000 à #FFFF 0 0 1 1 1 1 0 0 = 60 : RAM écran 32K de #C000 à #3FFF
NOTE : Ces 2 bits doivent être mis simultanément ! Un seul d'entre eux (3 ou 2) mis n'à aucun effet .
Les bits 1 & 0 : Que la peste et la vérole s'abattent sur tous les auteurs ayant traité du CRTC et ayant passé sous silence l'usage de ces 2 bits pourtant fort utiles ! Ils permettent en effet d'avancer le début de la RAM écran de 512 à 1536 octets !
C'est a dire que pour un écran prévu en &C000 les bits 0 & 1 décaleront la 1ère adresse en :
Bits : 1 0
0 1 : Départ en &C0 + &200 (32ème octet de la 6ème ligne caractère) 1 0 : Départ en &C0 + &400 (66ème octet de la 13éme ligne caractère) 1 1 : Départ en &C0 + &600 (16ème octet de la 20éme ligne caractère)
Ces 3 décalages (#200,#400,#600) seront les mêmes quelque soit l'adresse de départ envisagée (#0000,#4000,#8000,#C000) et le mode d'adressage 16K ou 32K .
R13: Ce registre permet d'affiner le point de départ de la RAM écran . Il décalera l'adresse d'origine des données de 2 cases mémoire (1 colonne CRTC) pour une unité ajoutée . On peut encore repousser le départ d'écran de 255*2=500 octets avec R13 . Par exemple , avec une RAM en #C000 , mettre 4 dans le registre R13 mettra le début d'écran en #C000+2*4 = #C008 .
J'ai testé en ayant chargé une image en &C000 et une en &4000 J'ai modifié les registres 12 et 13 après ma première rupture, sur 4, mais ça continue à n'afficher que l'image en &C000 j'ai du rater un truc.....
Oui AST je l'ai déjà lu le sujet, le problème ce n'est pas la rupture en soit, c'est de pouvoir afficher des trucs sur les différentes parties une fois les ruptures faites.
Pour cela, il faut adresser le crtc via les registres 12 et 13, le registre 12 étant le poids fort de l'adresse écran, le registre 13, le poids faible. Comment faire ?
Code :
; ; in: hl=adr video ; Video ld bc,#bc0c Out (c),c ; select r12 Inc b Out (c),h ; send value Dec b Inc c Out (c),c ; select r13 Inc b Out (c),l ; send value RET
Dans l'exemple, il te suffit de mettre la bonne valeur dans hl pour pouvoir afficher le bon écran ! Par exemple, je souhaite accéder à la partie video #c400. Il me suffira de faire :
Code :
Ld hl,#3200 Call video ...
Pour accéder à la page situé en #4300 (bank 0 seulement, car le crtc ne peut pas accéder aux banques mémoires), il te suffira de faire :
Code :
Ld hl,#1180 Call video ...
J'espère avoir été assez clair. Si tu as des questions, n'hésite pas à demander et à relire ce que t'a écrit hERMOL. Ensuite, suivant le crtc, tu t'apercevras vite qu'on ne peut pas changer ces registres n'importe quand, mais cela, c'est une autre histoire!
Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 4 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