Page 2 sur 4
Re: Double buffering sur MO6
Publié : 22 août 2014 20:30
par Orion_
Merci pour le liens vers A09 !
Je viens de tester et je le trouve vraiment plus pratique que c6809 au niveau de la syntaxe !
Re: Double buffering sur MO6
Publié : 22 août 2014 21:25
par __sam__
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 ?
Re: Double buffering sur MO6
Publié : 22 août 2014 22:32
par Daniel
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.
Re: Double buffering sur MO6
Publié : 23 août 2014 10:14
par __sam__
Ah ok, il produit donc un binaire brut sans le header thomson.
Re: Double buffering sur MO6
Publié : 23 août 2014 22:05
par jb_jb_fr
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
Re: Double buffering sur MO6
Publié : 12 sept. 2014 14:19
par Orion_
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
Re: Double buffering sur MO6
Publié : 14 sept. 2014 10:41
par Fool-DupleX
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.
Re: Double buffering sur MO6
Publié : 25 févr. 2016 20:40
par OlivierP
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 (3.36 Kio) Consulté 5711 fois
- hackMO6.PNG (3.22 Kio) Consulté 5711 fois
Re: Double buffering sur MO6
Publié : 25 févr. 2016 21:43
par Daniel
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.
Re: Double buffering sur MO6
Publié : 25 févr. 2016 21:59
par __sam__
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
Re: Double buffering sur MO6
Publié : 25 févr. 2016 23:38
par OlivierP
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
Re: Double buffering sur MO6
Publié : 26 févr. 2016 00:13
par __sam__
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
Re: Double buffering sur MO6
Publié : 26 févr. 2016 18:04
par OlivierP
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 ?
Re: Double buffering sur MO6
Publié : 26 févr. 2016 18:33
par __sam__
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.
Re: Double buffering sur MO6
Publié : 26 févr. 2016 18:45
par OlivierP
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 ?