CPC Rulez
https://cpcrulez.fr/forum/

Rupture besoin d'aide !!!
https://cpcrulez.fr/forum/viewtopic.php?f=4&t=5982
Page 1 sur 1

Auteur :  moussoufdiaz [ 10 Sep 2017, 12:37 ]
Sujet du message :  Rupture besoin d'aide !!!

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.

Auteur :  hERMOL [ 10 Sep 2017, 17:11 ]
Sujet du message :  Re: Rupture besoin d'aide !!!

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 .

Auteur :  moussoufdiaz [ 10 Sep 2017, 19:30 ]
Sujet du message :  Re: Rupture besoin d'aide !!!

Merci hERMOL je vais regarder ça.

Auteur :  moussoufdiaz [ 11 Sep 2017, 10:14 ]
Sujet du message :  Re: Rupture besoin d'aide !!!

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.....

Auteur :  hERMOL [ 11 Sep 2017, 10:20 ]
Sujet du message :  Re: Rupture besoin d'aide !!!

Les articles de Serge devrait pouvoir t'aider: https://cpcrulez.fr/search-engine.php?s= ... t=mw%3D%3D

Auteur :  AsT [ 13 Sep 2017, 12:37 ]
Sujet du message :  Re: Rupture besoin d'aide !!!

Si tu veux, tu peux aussi consulter cet article écrit par mes soins.
Petit coquinou hERMOL, tu as oublié ce lien ?

Auteur :  moussoufdiaz [ 15 Sep 2017, 19:45 ]
Sujet du message :  Re: Rupture besoin d'aide !!!

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.

Auteur :  AsT [ 15 Sep 2017, 20:12 ]
Sujet du message :  Re: Rupture besoin d'aide !!!

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!

Page 1 sur 1 Le fuseau horaire est UTC+1 heure
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/