1

Hello,
Toujours dans la lignée de la compréhension du fonctionnement de la bête, j'analyse la memory map.
J'ai des questions aux spécialistes :
1-La configuration initiale est ROMHI = 1 soit la ROM 0 identifiée sur la plage $E00000 à $FFFFFF : correspond-t-elle à l'implémentation d'un microprocesseur de type MOTOROLA ?
2-Inversément, si ROMHI =0 soit la ROM 0 identifiée sur la plage $000000 à $1FFFFF : est-ce pour un microprocesseur de type INTEL ?
3-Où pourrais-je trouver le listing du boot ?
4-Sur quelle plage d'adresses est implémentée la jagcd ?
Merci
avatar
http://irioslabs.over-blog.com/

La connaissance ne vaut que si elle est partagée par tout le monde.
I2C

2

sur jag, ROMHI = 1 est défini par la résistance R148 en pull-up durant la phase de boot hardware.
Après il peut être modifié logiciellement en écrivant dans MEMCON1.

En fait, tant que MEMCON1 n'est pas écrit, le contenu de la ROM est mappé sur tout l'espace adressable.
Au boot, le 68k va lire les adresses $0 et $4 (qui sont mappées de manière transparente sur $E00000 & $E00004) pour récupérer le stackpointer et le vecteur de reset.
Le 68k va ensuite jumper à l'adresse pointée par le vecteur de reset (qui doit être $E00008) et exécuter les premières instructions qui init MEMCON1, ce qui va activer le mapping mémoire du fonctionnement normal.

Pour un fonctionnement avec un Intel, je ne sachant pas comment boot ces procs, je ne peux pas me prononcer.

Pour le jagcd, il me semble qu'il utilise une plage dans les GPIO + une plage dans les $DFFxxx (mais ça fait très longtemps que j'ai pas regardé)
Le code source du jagcdbios est dispo aussi.

Zeroogle sait sans doute les retrouver tongue
avatar

3

SCPCD (./2) :
Pour un fonctionnement avec un Intel, je ne sachant pas comment boot ces procs, je ne peux pas me prononcer.
Contrairement au 68k, l'adresse initiale du pointeur d'exécution est en dur, et située 16 octets avant la fin de l'espace d'adressage (en général on met de la ROM à cet endroit, avec un saut vers la "vraie" adresse de début du code). Et effectivement, le chipset Jaguar a été prévu pour être aussi compatible avec les x86.

SCPCD (./2) :
Le code source du jagcdbios est dispo aussi.

Zeroogle sait sans doute les retrouver tongue
Hop : https://www.jagware.org/jag_uploads/dev/curt_vendel_jagfiles/JagCDfiles.zip
Mais c'est tout ce que je dirais sur le sujet du JagCD embarrassed

Par contre, à ma connaissance les sources de la ROM de la console n'ont pas été retrouvées. Donc si tu veux savoir ce qu'il y a dedans, faut sortir le désassembleur smile
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

4

https://atariage.com/forums/topic/330901-normal-boot-with-skunk/?do=findComment&comment=5004595 ? smile

Ya pas tout, mais ptet que en cherchant sur le net ca pourrait se retrouver plus complet.
avatar

5

... Par contre, à ma connaissance les sources de la ROM de la console n'ont pas été retrouvées. Donc si tu veux savoir ce qu'il y a dedans, faut sortir le désassembleur smile

C'est l'occasion de me replonger dans ma jeunesse !!!
Merci à vous deux pour ces informations.
avatar
http://irioslabs.over-blog.com/

La connaissance ne vaut que si elle est partagée par tout le monde.
I2C

6

SCPCD (./4) :
Ya pas tout, mais ptet que en cherchant sur le net ca pourrait se retrouver plus complet.
Tiens, ça doit être un des posts où je me suis dit "il faudra que je lise ça plus tard" et que j'ai oubliés. Merci SCPCD smile
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

7

Je continue et j'avais déjà abordé le sujet il y a quelques années ici.
Il y a 4Mo de DRAM installée qui correspondrait à la plage DRAM0 soit les signaux RASL0 et CASL0.
Est-ce que l'analyse est correcte ?
Sur les signaux OEx, je remarque qu'il y a les signaux OE0 à OE2 utilisés sur les DRAM dont OE2 est utilisé deux fois.bigeyes
Dans la logique, j'aurais du voir OE3, donc comment le système fait la différence ?
Ces signaux sont-ils couplés avec les signaux WEx ?
avatar
http://irioslabs.over-blog.com/

La connaissance ne vaut que si elle est partagée par tout le monde.
I2C

8

Il n'y a que 2Mo de RAM installé dans la Jag et non 4Mo wink
Mais oui, CAS0/RAS0 = bank0 ($000000 à $3FFFFF) et CAS1/RAS1 = bank1 ($400000 à $7FFFFF)
Le nombre colonnes est défini par R137 qui est récupéré par le bit5 de $F14002. ce qui permet au bios de définir correctement le registre MEMCON2.
La jag est configurée par défaut en 2 banks de 2Mo (256K*64bit) mais il n'y a que une seule bank d'implémenté physiquement (et de routé sur le PCB).


OE0 = bit[0..15] (utilisé sur la ram U23)
OE1 = bit[16..31] (utilisé sur la ram U24)
OE2 = bit[32..63] (utilisé sur les ram U33 & U34)


Même si on lit que 8bit sur la plage OE2 de 32-bit c'est pas gênant vu que de toute façon c'est le contrôleur de mémoire (interne à TOM) qui lit la data puis shift la valeur lue pour la mettre ensuite à disposition pour le CPU qui a demandé la lecture en fonction de l'adresse et de la largeur demandé (vu que tous les CPU n'ont pas d'interface mémoire 64-bit).
Donc on pourrait même en théorie n'avoir qu'un seul signal OE de 64-bit.

WE[0..7] sont vraiment les signaux d'écriture de data répartie par tranche de 8-bit et ne sont actifs exclusivement que dans les phases d'écritures.
avatar

9

Ok mais les adresses des banques que tu m'indiques sont celles pour une configuration ROMHI=1, la configuration par défaut sur les jag c'est ROMHI=0, soit $800000 à $FFFFFF, non ?
avatar
http://irioslabs.over-blog.com/

La connaissance ne vaut que si elle est partagée par tout le monde.
I2C

10

non, sur jag c'est bien ROMHI = 1 (voir ./2 tongue)

Le 68k à besoin de RAM dans son espace d'adresse du bas (vu qu'il y a tous les vecteurs d'exception, traps, etc...)
Le mapping normal de la mémoire est :
- $000000 à $7FFFFF = DRAM,
- $800000 à $DFFFFF = port cartouche,
- $E00000 à $EFFFFF = ROM
- $F00000 à $FFFFFF = registres TOM/Jerry

smile
avatar

11

Oui j'ai zappé ton info, bulbe de poisson rouge que je suis ! 🤣
Je continue mes investigations à la compréhension du fonctionnement de la jag.
J'avance doucement mais sûrement sur mon objectif.😁
Merqui !!👍
avatar
http://irioslabs.over-blog.com/

La connaissance ne vaut que si elle est partagée par tout le monde.
I2C