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

[RESOLU] Problème mémoire et radotages!
https://cpcrulez.fr/forum/viewtopic.php?f=4&t=5378
Page 2 sur 2

Auteur :  Subaru [ 12 Déc 2014, 21:08 ]
Sujet du message :  Re: Problème mémoire et radotages!

Si tu le dis.

1 MODE 1: MEMORY &9FFF
4 LOAD "disp.bin",&A000:BORDER 6:OUT &7F00,&C5:LOAD "dispdat.bin":',&4000

Cependant, si la "rem" n'était pas présente, tu prendrais un beau "Syntax Error in 4".

Allez, amusez-vous bien.

Auteur :  AsT [ 12 Déc 2014, 21:12 ]
Sujet du message :  Re: Problème mémoire et radotages!

La fonction c1 te permet de loader ton prog en #c000, une fois le Out &7f00,&c0 mis les datas charges en c000 se retrouvent en #4000 Bank c7. Tu peux toujours utiliser la plage mémoire #c000 pour afficher ta video.

Auteur :  Xavier [ 12 Déc 2014, 21:51 ]
Sujet du message :  Re: Problème mémoire et radotages!

@Subaru
Heu... élémentaire mon chère "Watt-Sonne"!
Donc "A L'HEURE OU BLANCHIT LA COMPAGNE... (COURAGE, FUYONS !!!)" ?
Super premier contact... j'assure grave !

AsT a écrit :
La fonction c1 te permet de loader ton prog en #c000, une fois le Out &7f00,&c0 mis les datas charges en c000 se retrouvent en #4000 Bank c7. Tu peux toujours utiliser la plage mémoire #c000 pour afficher ta video.

Je suis perdu dans ce Bonto d'adresses.
Donc, on reprend le tableau de Demoniak...

Code :
           Numéro "bank" (out &7F00,xx)
               C0            C1            C2            C3     
Adr Z80                          Adr "logique"                     
0000-3FFF   00000-03FFF   00000-03FFF   10000-13FFF   00000-03FFF
4000-7FFF   04000-07FFF   04000-07FFF   14000-17FFF   0C000-0FFFF
8000-BFFF   08000-0BFFF   08000-0BFFF   18000-1BFFF   08000-0BFFF
C000-FFFF   0C000-0FFFF   1C000-1FFFF   1C000-1FFFF   1C000-1FFFF

 C4            C5            C6            C7
                      Adr "logique"
00000-03FFF   00000-03FFF   00000-03FFF   00000-03FFF
10000-13FFF   14000-17FFF   18000-1BFFF   1C000-1FFFF
08000-0BFFF   08000-0BFFF   08000-0BFFF   08000-0BFFF
0C000-0FFFF   0C000-0FFFF   0C000-0FFFF   0C000-0FFFF

C1 : 1C000-1FFFF
C0 : Adresses CPU (on retrouve l'adressage écran)
C7 : SWAP 1C000-1FFFF vers &4000...

C'est l'idée... effectivement.
Mais je vais avoir besoin de plus de 2 banques...
J'ai 10k de texte et Je sais pas trop de graphisme 40 images de 16x15 caractères (8x8)...
Donc, ok pour un buffer graphique en &1C000, mais ...
Autant utiliser la banque &1C000 directement avec le texte, et stocker un buffer graphique, qui sera accessible lors du traitement en ASM...
Je chargerai les images à la demande en partie haute.
Je vais voir si je peux faire des transfères de banque à banque en ASM...

[EDIT]
Il faut jouer sur le C3<>C2 (j'en suis sûr!!!)
[/EDIT]

Auteur :  TotO [ 12 Déc 2014, 23:06 ]
Sujet du message :  Re: Problème mémoire et radotages!

Les programmes qui utilisent C3 se comptent sur les doigts d'une main.
Quand à C2, ce mode n'est pas utilisable en BASIC car tu perds le firmware.

Auteur :  Xavier [ 15 Déc 2014, 02:00 ]
Sujet du message :  Re: Problème mémoire et radotages!

Salut,

Je comprends mieux les subtilités des banques mémoires...
Surtout avec l'utilisation du basic.
Il me maquait des bribes d'informations qui semblent trop évidentes lors de l'utilisation!

*La commutation de la banque est mémorisée en hard.
*La Rom est activée en marge des banques par le hard (sûrement par le ROMcs et les Ram par le RAMcs).
*La Rom Basic ne gère pas les banques.

Et cela change tout!
En basic :
OUT &7F00,&C1:LOAD "dispdat.bin",&C000:OUT &7F00,&C0:
On doit réassigner la banque mémoire vidéo pour permettre le réfléchissement de l'écran.

En assembleur, même chose!
print_char
LD BC,&7FC0
OUT (C),C
call &bb5a
LD BC,&7FC1
OUT (C),C
RET
Sinon, c'est la banque &1C000-&1FFFF qui est modifiée!

Une banque mémoire avec un adressage inférieur au MEMORY (HIMEM), ne fonctionnera pas!

Donc, à la lumière de ces informations il est possible de stocker des informations dans les banques inferieur au MEMORY, mais il faut penser à rétablir les banques d'exécution Basic avec son retour d'exécution.
Donc, merci pour toutes ces informations!
J'ai récupéré 16k pour le Basic sur la banque h1C000...
Et ça semble fonctionner.
Merci.
(Bravo pour toutes les informations techniques disponibles sur ce site!
c'est un réel plaisir de (re)découvrir le CPC ! )

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