La Place des Développeurs Buffer Temporaire en RAM
ericb59
Membre non connecté
Conseiller Municipal
On a souvent besoin d'un buffer plus ou moins grand pour stocker des informations transitoires.
Pour tenter d'économiser de la RAM, et au lieu de créer un espace dédié dans la RAM généraliste, j'ai remarqué qu'un espace de 318 octets était dispo dans la zone mémoire haute, qu'on est pas censé utiliser...
La zone KBUFF en 0xF41F qui est une zone censée être utilisée par le BASIC
J'ai intégré ce buffer comme ceci
Je me demande dans quelle mesure on peut utiliser ces 318 octets, sans soucis, dans le cadre d'un développement classique pour ROM ou pour DOS ? Edité par ericb59 Le 19/03/2022 à 18h59
Pour tenter d'économiser de la RAM, et au lieu de créer un espace dédié dans la RAM généraliste, j'ai remarqué qu'un espace de 318 octets était dispo dans la zone mémoire haute, qu'on est pas censé utiliser...
La zone KBUFF en 0xF41F qui est une zone censée être utilisée par le BASIC
J'ai intégré ce buffer comme ceci
Code TEXT :
unsigned volatile char __at(0xF41F) FusionTemp[318];
Je me demande dans quelle mesure on peut utiliser ces 318 octets, sans soucis, dans le cadre d'un développement classique pour ROM ou pour DOS ? Edité par ericb59 Le 19/03/2022 à 18h59
Les zones que l'on peut utiliser dans une ROM font l'objet de nombreuses discussions et polémiques. Il y a les rigoureux, qui disent que puisque ce sont des zone BIOS, on ne doit pas y toucher. Puis les autres (comme toi et moi), qui considèrent que ces zones ne servent à rien dans le cadre d'une ROM (aucun passage par le BASIC), et que l'on peut donc les utiliser.
Il y a aussi 384 octets de libres en $F975, qui sont normalement utilisés par l'instruction PLAY.
Et même 448 octets si on ajoute la zone buffer de 64 octets pour RS-232 qui est juste après.
Il y a aussi 384 octets de libres en $F975, qui sont normalement utilisés par l'instruction PLAY.
Et même 448 octets si on ajoute la zone buffer de 64 octets pour RS-232 qui est juste après.
MSX1: Daewoo DPC-200 / Yamaha CX5M
MSX2: Sony HB-F9P
MSXVR
Vidéo: V9990 (GFX-9)
Audio: MSX-Music (FM-PAC) / MSX-Audio (Audiowave) / OPL4 (Monster Sound FM Blaster) / OPNB (Neotron)
aoineko
Membre non connecté
Conseiller Municipal
Personnellement j'ai opté pour approche du tout ou rien :
- Dans les ROM avec remplacement de la page 0 (ISR perso et aucune utilisation du BIOS), je m'autorise à utiliser toute la RAM jusqu'à FFFEh.
- Dans les ROM ou je laisse la page 0 sur le BIOS, je ne touche pas du tout à la zone réservée pour les variables systèmes (pour être compatible avec tous les BIOS passés ou à venir).
Après, j'ai très rarement des problèmes de place en RAM.
Pour FinalSmash, j'utilise tellement peu de RAM que j'ai finalement ajouté une option 8K pour que le jeu soit jouable sur 100% des MSX1.
- Dans les ROM avec remplacement de la page 0 (ISR perso et aucune utilisation du BIOS), je m'autorise à utiliser toute la RAM jusqu'à FFFEh.
- Dans les ROM ou je laisse la page 0 sur le BIOS, je ne touche pas du tout à la zone réservée pour les variables systèmes (pour être compatible avec tous les BIOS passés ou à venir).
Après, j'ai très rarement des problèmes de place en RAM.
Pour FinalSmash, j'utilise tellement peu de RAM que j'ai finalement ajouté une option 8K pour que le jeu soit jouable sur 100% des MSX1.
On est toujours ignorant avant de savoir.
ericb59
Membre non connecté
Conseiller Municipal
@metalion
Ok c’est bon à savoir pour les 2 autres zones que l’on peut utiliser.
On est d’accord que même sous DOS ces zones ne sont pas utilisées non plus ?
Ok c’est bon à savoir pour les 2 autres zones que l’on peut utiliser.
On est d’accord que même sous DOS ces zones ne sont pas utilisées non plus ?
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie