Double buffering sur MO6

Cette catégorie traite de développements récents pour nos vieilles machines, applications, jeux ou démos... Amis programmeurs, c'est ici que vous pourrez enfin devenir célèbres!

Modérateurs : Carl, Papy.G, fneck

Avatar du membre
Orion_
Messages : 146
Enregistré le : 07 août 2014 16:29
Localisation : Perpignan
Contact :

Re: Double buffering sur MO6

Message par Orion_ » 22 août 2014 20:30

Merci pour le liens vers A09 !
Je viens de tester et je le trouve vraiment plus pratique que c6809 au niveau de la syntaxe !
Programmation rétro ! Orion_'s website

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

Re: Double buffering sur MO6

Message par __sam__ » 22 août 2014 21:25

Daniel a écrit :Je ne connais pas c6809, donc je ne suis pas sûr que la méthode s'applique aussi.
Sisi, je pense que ca marche pareil. Normalement dans les adresses on est toujours supposé dire le mode d'adressage à utiliser >LBL ou <LBL. Si on ne dit rien (LBL seul), alors le compilo choisi le mode qui lui semble le mieux, typiquement le mode direct-page si le setdp courant (implicite à 0) correspond à la partie haute de LBL: on gagne à la fois 1 cycle et un octet. C'est magnifique ce mode direct-page.

Concernant A09, produit-il des binaires compatibles thomson ?
Samuel.
A500 Vampire V2+, A1200(030@50mhz/fpu/64mb/cf 8go),
GVP530 (MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8. New Teo 1.8.4 8)

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

Re: Double buffering sur MO6

Message par Daniel » 22 août 2014 22:32

A09 est le seul macro-assembleur 6809 utilisé pour tous mes développements Thomson, en particulier le contrôleur CS91-280 et les démonstrations sur carte SD. Jusqu'à maintenant je n'ai pas remarqué d'incompatibilité. J'insère directement le binaire en mémoire avec la fonction de l'émulateur dcmoto.
Daniel
L'obstacle augmente mon ardeur.

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

Re: Double buffering sur MO6

Message par __sam__ » 23 août 2014 10:14

Ah ok, il produit donc un binaire brut sans le header thomson.
Samuel.
A500 Vampire V2+, A1200(030@50mhz/fpu/64mb/cf 8go),
GVP530 (MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8. New Teo 1.8.4 8)

Avatar du membre
jb_jb_fr
Messages : 296
Enregistré le : 29 mars 2010 10:36
Localisation : Essonne (91)
Contact :

Re: Double buffering sur MO6

Message par jb_jb_fr » 23 août 2014 22:05

Salut
Orion_ a écrit :et d'ailleurs c'est toujours d'actualité OS/9 ? car la page officielle semble en pause depuis bien longtemps :(
je pense qu'avec le nouveau module SD y'aurait de quoi faire (pour éviter le ROM disk par exemple)
Il est vrai que la page officielle d'OS9 sur Thomson n'a pas évoluée, mais OS9 est toujours d'actualité pour nos Thomson (même si on (avec FoolDuplex) fait pas trop de pub). Je suis de très près ce qui a été fait sur CoCo III, et j'ai ainsi mis à jour le noyau et les driver principaux.

J'ai récemment travaillé avec FoolDuplex au démarrage de OS9 sur MO6. Et maintenant c'est une chose réglé et qui marche bien. On serait donc susceptible d'avoir OS9 sur MO5/MO5NR/MO6/TO8/TO9 vu que le MO6 utilise le même GateArray que le MO5NR, T08, et T09.

Je bosse actuellement sur un projet (qui n'avance pas très vite) qui me tiens a coeur depuis très longtemps: Faire une tête de réseau NanoReseau sur MO5 et sous OS9. Je me heurte à des problèmes de temps réel, mais je ne désespère pas d'y arriver. Surtout que sur MO6, ce qui est intéressant c'est qu'il y a en standard plus de mémoire, donc plus de possibilité de gérer des postes.

Il me restera donc, comme tu le dis, à gérer par exemple la carte SDMOTO de Daniel pour avoir accès à un disque OS9, mais la aussi, je risque d'avoir un autre soucis temps réel car le module est lent. Mais ça c'est une autre histoire, et un autre problème sur lequel je me pencherai plus tard.

Jacques

Avatar du membre
Orion_
Messages : 146
Enregistré le : 07 août 2014 16:29
Localisation : Perpignan
Contact :

Re: Double buffering sur MO6

Message par Orion_ » 12 sept. 2014 14:19

Je reviens sur la discussion à propos de l'extension mémoire sur MO6.
J'ai testé le programme suivant sur DCmoto avec l'extension mémoire activé, ça fonctionne (en mode MO5 et MO6)
j'ai bien le petit damier qui s'afficher en haut de l'écran:
Par contre, sur un Vrai MO6 avec une vraie extension mémoire, ça me fait un écran gris, et l'affichage doublé/décalé.
Je cherche à faire un petit programme me permettant de tester la ram complete de mes 6 extensions mémoire acheté sur ebay, mais comme je n'ai qu'un MO6, ça à l'air un peu plus complexe (vu que l'extension est censé être incompatible MO6)
Si déja, ce petit programme ne marche pas, je sais pas bien si c'est parceque j'ai fait une erreur ou si parceque mes extensions ne fonctionne pas :(

Remarque: j'ai un écran gris entier, donc, le code n'arriverais même pas à la ligne ou c'est censer changer le bord en noir (sta $A7DD)

Code : Tout sélectionner

	lda	$81	; Valeur du BIOS pour $A7E7
	ora	#$50	; Bit 6, Desactivation de l'émulation cartouche (non documenté), et bit 4 pour écriture $A7E5
	sta	$A7E7

	clra
	sta	$A7E4	; Permet la lecture des valeurs systeme en $A7E4

	lda	$A7E4
	anda	#%11011111	; Cartouche Visible
	sta	$A7DD		; Attention: trash la couleur du bord (4 bit LSB)

	lda	#$0C		; Selectionne la Bank 0 de l'extension mémoire 64k ($C -> $F pour les 4 banks)
	sta	$A7CB		; 16k disponible à partir de $B000

	lda	#$55		; Test d'écriture dans l'extension mémoire
	ldb	#$AA
	ldx	#$B000
rea	std	,x++
	cmpx	#$B008
	bne	rea

	lda	$A7C0	; Select VRAM Page 0
	ora	#1
	sta	$A7C0

	ldx	#$B000		; Affiche le resultat dans le premier char de l'écran
	ldy	#0

reb	lda	,x+
	sta	,y
	leay	40,y
	cmpx	#$B008
	bne	reb

LOOP	JMP	LOOP
Programmation rétro ! Orion_'s website

Fool-DupleX
Messages : 1000
Enregistré le : 06 avr. 2009 12:07

Re: Double buffering sur MO6

Message par Fool-DupleX » 14 sept. 2014 10:41

Attention : les bits 0-3 sur A7E4 sont phi, pas necessairement 0. je ferais un anda #%11010000 pour être sur du resultat sur le bord.
et puis il y a un gros bug au debut, tu charges la valeur qui se trouve en $0081, pas en $2081 ... donc ta config video est fausse.

Avatar du membre
OlivierP
Messages : 645
Enregistré le : 21 sept. 2009 15:50
Localisation : IDF

Re: Double buffering sur MO6

Message par OlivierP » 25 févr. 2016 20:40

Bonjour,

Je deterre ce topic car j'ai pb pour utiliser le mode page en 160x200x16c.
J'essaye de faire une version MO6 de NyanCat TO8, mais l'affichage est décalé : on dirait que l'écran commence en $C000, avec $B000 à partir du milieu de l'écran :?
J'ai trouvé un moyen de contourner le pb, mais c'est vraiment un hack grossier et j'espère que je me suis trompé quelque part dans l'initialisation des registres, mais où ?
Je poste un bout de code qui affiche à la manière TO8 sur une page, et de manière a peu près correcte sur MO6 (avec gros hack) sur l'autre page.
Avez-vous une idée ou une piste ?
commeTO8.PNG
commeTO8.PNG (3.36 Kio) Vu 1544 fois
hackMO6.PNG
hackMO6.PNG (3.22 Kio) Vu 1544 fois
NyanCatMO6NoSnd.asm.zip
(2.9 Kio) Téléchargé 48 fois
Envoyé de mon pécé

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

Re: Double buffering sur MO6

Message par Daniel » 25 févr. 2016 21:43

Par manque de temps je n'ai pas encore regardé, mais comme il y a de subtiles différences entre le TO8 et le MO6 (et pas que les adresses), c'est probablement par là qu'il faut chercher. Si le problème n'est pas résolu avant la fin de la semaine j'essaierai de trouver une réponse plus précise.
Daniel
L'obstacle augmente mon ardeur.

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

Re: Double buffering sur MO6

Message par __sam__ » 25 févr. 2016 21:59

Ca doit être pareil que sur TO (page droite de http://dcmoto.free.fr/documentation/man ... ts&page=60). Quand on prends la page 2 ou la page 3 en video, la RAMA se trouve au dessus de la RAMB:

Code : Tout sélectionner

|$0000
|  ::
|[RAMB] <-- colonnes impaires (1, 3, 5...) du mode 160x200 
|[RAMA] <-- colonnes paires (0, 2, 4...)
|  ::
|$FFFF
Donc la ram video débute dans la 2ème moité des 16ko
Samuel.
A500 Vampire V2+, A1200(030@50mhz/fpu/64mb/cf 8go),
GVP530 (MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8. New Teo 1.8.4 8)

Avatar du membre
OlivierP
Messages : 645
Enregistré le : 21 sept. 2009 15:50
Localisation : IDF

Re: Double buffering sur MO6

Message par OlivierP » 25 févr. 2016 23:38

c'est ce que je pensais aussi, la routine fonctionne bien sur TO8 (voir source sur http://forum.system-cfg.com/viewtopic.php?f=25&t=3469) mais pas tel quel sur MO6
Envoyé de mon pécé

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

Re: Double buffering sur MO6

Message par __sam__ » 26 févr. 2016 00:13

En fait, ce que la doc dit sur TO c'est que le sens RAMB avant RAMA ne se produit que lorsqu'on map l'espace "données" ($A000-$DFFF) à l'écran 2 ou 3. La logique du décodage d'addresse est indiqué en bas de la page de gauche de: http://dcmoto.free.fr/documentation/man ... ts&page=61

Donc si on map l'écran 2 ou 3 ailleurs (dans l'espace ROM $0000-$3FFF typiquement) que dans l'espace "données" il n'y a pas cette inversion car le décodage est direct. C'est logique en fait s'il y avait inversion de la parti basse et haute de la RAM émulant la ROM, elle serait inexploitable.

Le tableau en bas de la page de droite de la page indiquée ci-dessus résume bien la situation sur TO

Code : Tout sélectionner

Espace "données"     Espace Ecran
$A000-$BFFF          RAMB
$C000-$DFFF          RAMA

Espace "cartouche"   Espace Ecran
$0000-$1FFF          RAMA
$2000-$3FFF          RAMB
Samuel.
A500 Vampire V2+, A1200(030@50mhz/fpu/64mb/cf 8go),
GVP530 (MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8. New Teo 1.8.4 8)

Avatar du membre
OlivierP
Messages : 645
Enregistré le : 21 sept. 2009 15:50
Localisation : IDF

Re: Double buffering sur MO6

Message par OlivierP » 26 févr. 2016 18:04

on a donc la disposition suivante sur MO6 :
RAMA $C000-$CFFF (haut de l'écran) puis $D000-$DFFF (bas de l'écran)
RAMB $E000-$EFFF (haut de l'écran) puis $B000-$BFFF (bas de l'écran)
ce qui impose de complexifier l'algorithme de dessin pour gérer le saut de page en RAMB, qui est au milieu d'une ligne :?

comment accéder aux RAMA et B de manière linéaire ?
est-ce dû à la gestion particulière de la plage $B000-$BFFF avec la ROM BASIC 1 ?
Envoyé de mon pécé

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

Re: Double buffering sur MO6

Message par __sam__ » 26 févr. 2016 18:33

J'avoue que la config RAMB découpée en deux est déroutante. On aurait donc par tranche de 4ko sur MO6:
[RAMB: 4ko]
[RAMA: 4ko]
[RAMA: 4ko]
[RAMB: 4ko]
C'est vraiment pas linéaire en effet ce truc. C'est très ... inexploitable :? Dommage qu'il n'y ait pas de manuel technique du MO6 pour comprendre pourquoi c'est fichu comme ca.
Samuel.
A500 Vampire V2+, A1200(030@50mhz/fpu/64mb/cf 8go),
GVP530 (MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8. New Teo 1.8.4 8)

Avatar du membre
OlivierP
Messages : 645
Enregistré le : 21 sept. 2009 15:50
Localisation : IDF

Re: Double buffering sur MO6

Message par OlivierP » 26 févr. 2016 18:45

Dans les sources de MESS (thomson.cpp) il y a une gestion particulière de l'espace cartouche pour le MO6 ($B000-$BFFF distinct de $C000-$EFFF), que l'on ne retrouve pas pour le TO8 (16Ko en une seule plage). Est-ce spécifique au code de MESS ou est-ce ainsi dans les autres émulateurs ?
Envoyé de mon pécé

Répondre