MSX Village forum

L'atelier Entête des ROMs

Fabf Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 24/08/2010 à 20h55

Messages: 4833

Le 27/02/2013 à 17h35

Reprise du message précédent

C'est pour ça que j'ai commencé à regarder du coté des entêtes pour voir s'il n'en existait pas d'autres.
Comme le MSX semble prévu pour un telle extension, une entête particulière aurait pu exister.

Pour le reste GDX a sans doute d'autres chose à faire que de se lancer dans un projet si hasardeux.

Le mystère NEOS finira bien par être percé un jour ;)
GDX Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 17/01/2011 à 08h52

Messages: 3004

Le 28/02/2013 à 07h25
SveN :
#FCC1 est en RAM. Cette variable système est définie par le bios lors du démarrage de la machine et ne doit servir qu'à stocker l'état du slot.0.

La machine démarre inévitablement en slot 0 ou 0-0, et se "contente" de stocker le caractère étendu ou non de ce slot.

"Déplacer" le bios en modifiant le contenu de cette adresse m'apparaît impossible.


En regardant le texte japonais de plus près, il y a la réponse à la question de Fabf. Le texte dit bien que la ROM principale (BIOS + Basic) d'un MSX est toujours en slot 0 ou 0-0 mais ajoute qu'il y a une exception avec l'extension MSX2 qui contient un V9938 et une ROM contenant un Basic MSX2 et une subROM. L'emplacement de ce Basic est dans ce cas indiqué par FCC1h et celui de la subROM par FAF8h. Le texte termine par la remarque : FAF8h contient la valeur 0 sur les MSX1.



C'est bizarre car d'après ce qui est écrit le Bios ne changerait pas ! :|

Fabf :
J'ai mis la ROM MSX2 en slot 1 et la SUBROM en slot 2 (slots non étendus)

J'ai tapé :

poke &hfcc1,1

poke &hfaf8,2


Il faut couper les interruptions pour essayer: Essaye en exécutant les 2 instructions sur la même ligne.
   
Fabf Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 24/08/2010 à 20h55

Messages: 4833

Le 28/02/2013 à 07h43
J'ai testé les 2 instructions sur la même ligne mais rien de mieux.
Qu'entends tu par couper les interruptions ?

Metalion Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 23/12/2009 à 15h32

Messages: 1503

Le 28/02/2013 à 08h29
Fabf :
Qu'entends tu par couper les interruptions ?


Utiliser les instructions en assembleur :



DI pour arrêter les interruptions du processeur

EI pour les rétablir.




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)
   
Fabf Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 24/08/2010 à 20h55

Messages: 4833

Le 28/02/2013 à 09h20
Ok donc le prog serait :

DI
LD &c1fc,1
LD &f8fa,2
EI
RET

Je suis proche de l'état zéro en ASM :oups
Metalion Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 23/12/2009 à 15h32

Messages: 1503

Le 28/02/2013 à 09h40
Plutôt :

Code :
DI
LD A,1
LD ($C1FC),A
INC A
LD ($F8FA),A
EI
RET

Car on ne peut pas charger directement une adresse avec une valeur, il faut passer par l'accumulateur.


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)
   
Fabf Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 24/08/2010 à 20h55

Messages: 4833

Le 28/02/2013 à 10h33
Merci :top
Fabf Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 24/08/2010 à 20h55

Messages: 4833

Le 28/02/2013 à 13h06
Commentaire de msxholder sur MRC :

Vdp at adress 88 with 256kb rom
second cartridge with rpc501 and rom 128 kb or vice versa
dos kernel for switch slots
I only go for the real stuff !! no emulator simulator
Visiteur

Vagabond

Rang

Avatar

Message : 0

Le 28/02/2013 à 14h35
J'ai aussi mis mon grain de sel ^^



Citation :
I guess it means that the NEOS rom should not work in an emulator because it requests a double boot. In an emulator, a reset leads in most cases to a full re-initialisation, with as consequence that the second boot does not give the expected result.



So, dumping the NEOS rom will be only useful for real hardware users.




Here's a similar case : http://msxbanzai.tni.nl/dev/MSX2PLUS.LZH



Citation :
MSX2+ SubROM Emulator by Ramon van der Winkel



This program enables you to use MSX-BASIC v3.0 in a MSX2 with V9958 Video Display Processor and an external memory expansion.



The internal memory mapper is used for the MSX2+ SubROM, it expects this mapper to reside in Slot 3-3 (Sony HB-F700, etc). Change the value 8F to 8B in MSX2PLUS.LDR if your RAM is in Slot 3-2 (Philips NMS8245, etc). The program needs additional memory (either a 64kB datacartridge or another memory mapper) in a lower slot (one of the cartridgeslots) which will be used as the main memory.




This MSX2+ SubROM Emulator does not work in blueMSX or openMSX.




Espérons que msxholder dumpera la rom NEOS pour te permettre d'avancer dans ton projet :) Edité par Visiteur Le 01/03/2013 à 15h19
   
Fabf Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 24/08/2010 à 20h55

Messages: 4833

Le 01/03/2013 à 09h21
Merci pour ton aide mars2000, c'est vraiment pas mal le truc de Ramon van der Winkel :top
J'ai pas pu le tester faute de machine répondant à la config demandée.

Une petite question pour Jipe maintenant ;)

J'ai fais une carte avec une eprom 32ko sur laquelle j'ai utilisé /SLTSL et non pas /CS01
Elle fonctionne parfaitement avec le SUBBIOS MSX2+

Est ce que je peux faire pareil pour la ROM MSX2+ ou dois je obligatoirement utiliser /CS01

Merci
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10731

Le 01/03/2013 à 13h39
CS01 n'est pas disponible dans toutes machines

pour une eprom 32k allant de 0000H a 7FFFH il faut utiliser /SLTSL

pour une eprom 32k allant de 4000H a BFFFH il faut utiliser /CS12 ( cas d'un jeu 32 k )


:noel
Site web    
Visiteur

Vagabond

Rang

Avatar

Message : 0

Le 01/03/2013 à 15h33
Mes tests avec le MSX2+ SubROM Emulator étaient incorrects. J'avais créé dans blueMSX un HB-700P modifié avec V9958 et 512 Kb (*) de RAM externe en slot 1. Ce qui m'a induit en erreur, c'est le fait qu'après le reset provoqué par le programe MSX2PLUS.LDR, l'écran indiquait toujours "MSX BASIC version 2.0". J'avais oublié que ce message vient du BIOS principal et que le MSX2+ SubROM Emulator utilise uniquement l'extension du BIOS pour MSX2+.

Le programme suivant fonctionne, le BASIC du MSX2+ est donc bien émulé :

Code :

10 SCREEN 12
20 GOTO 20


(*) cela marche aussi avec 64 Kb de RAM externe

Dès lors, on peut peut-être s'attendre à quelque chose de semblable avec NEOS (BASIC du MSX2 émulé mais écran indiquant toujours "MSX BASIC version 1.0" après reset) ???? :hum Edité par Visiteur Le 01/03/2013 à 15h58
   
Fabf Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 24/08/2010 à 20h55

Messages: 4833

Le 01/03/2013 à 16h24
J'ai testé effectivement ça marche :top

Par contre pour la NEOS je m'attends à quelque chose d'autre.
Le MSX2 et le MSX2+ sont assez proche alors qu'il y a quand même une différence plus marquée entre le MSX et le MSX2

Enfin ça peut donner des idées, je vais jeter un oeil sur les octets avant CD de la SUBROM.

Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10731

Le 01/03/2013 à 16h58
la subrom est une subrom tout a fait ordinaire

les octets avant CD sont l'entête du fichier binaire

FE 00 80 FF BF 00 00

FE fichier binaire

00 80 -> 8000 début du fichier

FF BF -> BFFF fin de fichier

00 00 -> start du fichier , ici pas de start


:noel
Site web    
Fabf Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 24/08/2010 à 20h55

Messages: 4833

Le 01/03/2013 à 17h13
Bon tout est dans le LDR alors, merci :top
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10731

Le 01/03/2013 à 17h28
voici en gros

ligne 60 c'est pour installer le basic en C000 afin de charger le .bin en RAM a 8000

lignes 170 et plus patchent la rom qui est en RAM

A769H , DBH
A76AH , F4H
A76BH , 00H
A76CH ,C9H

A76F , 00H
A770 , D3H
A771 , F4H
A772 , C9H

ligne 110 et plus recopient la RAM dans la cartouche 64K en 4000H et fait un reset

j'ai regardé de plus prés le patch

IN A,(F4H)
NOP
RET

NOP
OUT (F4),A
RET



:noel
Site web    
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie