[ TO8D ] ressuscité

Placez ici vos trucs et astuces, étalez sans retenue votre savoir-faire et votre science qui va nous permettre de redonner une apparence neuve et fonctionnelle à nos bouzes.

Modérateurs : Papy.G, fneck, Carl

Avatar du membre
6502man
Messages : 9448
Enregistré le : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: [ TO8D ] ressuscité

Message par 6502man » 03 mai 2019 20:22

Ca fonctionne sur machine réel comme sur DCmoto :)

Le programme est prévu pour une mémo 7 avec pagination comme les modèle que je propose ;)

Je vous propose la version beta :
TO8MEM.zip
(12.99 Kio) Téléchargé 7 fois

Donc la cartouche permet de tester :

- $4000-$5FFF (VRAM ) sur 2 bank
- $6000-$9FFF (RAM fixe)
- $A000-$DFFF (Ram paginé) sur 16 ou 32 bank

Le programme détecte si il y a 256 ou 512Ko et test en conséquence.

Il me reste à finir la page d'acceuil, le message de fin correspondant à la taille mémoire et un message en cas d'erreur ...

Si le test est concluant on peut voir 2 images qui correspondes à 1 copiée dans la BANK 16 et 1 copiée dans la BANK 32 et évidemment recopié en VRAM par la suite, ce qui permet de vérifier la non redondance des 2 plages RAMS ;)

Voici l'écran résultat:
dcmoto02.png
dcmoto02.png (5.88 Kio) Vu 119 fois

Par la suite je vous proposerais le code source.
(j'en connais qui vont ce faire un plaisir à optimiser :wink: )
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.

__sam__
Messages : 4685
Enregistré le : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [ TO8D ] ressuscité

Message par __sam__ » 03 mai 2019 20:57

C'était quoi le soucis alors ?
Samuel.
A500 ^V^ampire V2+, A1200(030@50mhz/fpu/64mb/cf 8go),
GVP530 (MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.

Avatar du membre
6502man
Messages : 9448
Enregistré le : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: [ TO8D ] ressuscité

Message par 6502man » 03 mai 2019 21:50

Le problème était bien l'initialisation de la pagination de la RAM données.
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.

Avatar du membre
6502man
Messages : 9448
Enregistré le : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: [ TO8D ] ressuscité

Message par 6502man » 04 mai 2019 11:51

J'ai un comportement particulier lorsque mon programme exécute cette partie du code :

la valeur de y écrite en $8000 est bien présente pendant l’exécution de la boucle jusqu'au moment ou je commute sur la bank 0 et la la mémoire est apparemment effacée, je ne retrouve que des valeurs $00 à l'emplacement $8000 et idem pour la zone $6000-9FFF qui n'est évidemment pas écrite pendant l’exécution de la boucle ???
Est ce un comportement normal sur la machine réel, je n'ai pas accès au TO8 avec seulement 256 Ko avant ce soir ...
Je n'ai testé à l'instant que sous DCmoto !!!

Code : Tout sélectionner

	;  ram paginée
	;------------

			STY $8000	; sauve valeur de Y 
		LDD $8000	;TFR Y,D	; numéro de bank dans B

	
LoopBank
	STB BANK	; positionne la ram paginée sur la première bank
	LDX #$A000	; initialise le pointeur sur le début de la bank
	STB COLTOUR	; change la couleur de bordure à chaque changement de bank

LoopRam2	
	LDA #$55	; initialise A pour control RAM
	STA 0,X
	LDA 0,X
	CMPA #$55
	BNE Error
	
	LDA #$AA	; initialise A pour control RAM
	STA 0,X
	LDA 0,X
	CMPA #$AA
	BNE Error
	
	LDA #$00	; initialise A pour control RAM
	STA 0,X
	LDA 0,X+
	CMPA #$00
	BNE Error	
	
	CMPX #$E000			; boucle jusqu'a  DFFF (3FFF) pour la partie paginée
	BNE LoopRam2	

	DECB
	CMPB #$FF
	BNE LoopBank
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.

__sam__
Messages : 4685
Enregistré le : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [ TO8D ] ressuscité

Message par __sam__ » 04 mai 2019 12:09

D'après le manuel technique les bank sont organisées comme suit:
Image4.png
Image4.png (198.87 Kio) Vu 83 fois
La bank 0 c'est la video (en deux pages de 8ko). La bank 1 c'est l'espace $6000->$9FFF (16ko). On y retrouve ton $8000. En fait c'est pas à la commut en page 0 que le problème se passe mais quand tu est en bank 1 car à ce moment là ce que tu as entre $A000 et $DFFF est l'espace $6000->$9FFF. Comme la boucle efface le contenu de la bank lors du dernier "STA ,X" (au fait pas besoin de faire un cmpa #0, ca sert à rien: sur 6809 les flags sont mis à jour dès le LDA), elle va gentiment effacer tout le contenu de $6000 à $9FFF qui est reflété entre $A000 et $DFFF. La valeur que tu as sauvée en $8000 est donc effacée (et la pile du programme aussi pour ne pas aider.)

Bref: pour tester il faut 1) bloquer les interruptions pour ne pas avoir de soucis avec la pile qui est potentiellement transitoirement trashée 2) restaurer les valeurs lues (tu peux utiliser le registre B pour ca.)

PS: j'enrage de la pauvre qualité graphique du manuel technique. Et dire que mon exemplaire perso est parti chez Christophe's Lair (qui bossait dans le même labo de que moi il y a 20ans) qui devait en faire un scan de qualité mais n'a fait qu'un scan text partiel :-/
Samuel.
A500 ^V^ampire V2+, A1200(030@50mhz/fpu/64mb/cf 8go),
GVP530 (MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.

Daniel
Messages : 11825
Enregistré le : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [ TO8D ] ressuscité

Message par Daniel » 04 mai 2019 15:12

De mémoire le manuel technique TO9/TO8/TO9+ est passé sur ebay il y a quelques mois. Si par hasard il a été acheté par un membre du forum, il pourrait peut-être le scanner proprement, ou le prêter un jour ou deux...
Daniel
L'obstacle augmente mon ardeur.

Avatar du membre
6502man
Messages : 9448
Enregistré le : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: [ TO8D ] ressuscité

Message par 6502man » 04 mai 2019 17:04

Oui évidemment la translation d'adresse :roll:

Bon je viens de faire la correction donc je test VRAM (2 banks) RAM fixe et ensuite 32 ou 16 bank -2, ca fonctionne et ma variable et bien conservé :lol:

J'ouvre un autre post pour pouvoir retrouver plus facilement le programme de test de la ram ...
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.

Répondre