TAVERNIER 6809
Modérateurs : Papy.G, fneck, Carl
- michel guyot
- Messages : 616
- Inscription : 20 mars 2016 16:01
- Localisation : Pyrénées orientales
Re: TAVERNIER 6809
Bonjour,
Après toute cette série d'essais pour aboutir à un schéma qui fonctionne correctement, j'ai un peu fais le ménage dans mes papiers.
Ci-après le schéma auquel j'ai abouti notamment pour générer les signaux /CSW et /CSR
Pour introduire un retard de 80ns sur ces signaux, j'ai utilisé des chaines de portes 74LS14...simpliste mais cela fait le job !
A plus
Michel
Après toute cette série d'essais pour aboutir à un schéma qui fonctionne correctement, j'ai un peu fais le ménage dans mes papiers.
Ci-après le schéma auquel j'ai abouti notamment pour générer les signaux /CSW et /CSR
Pour introduire un retard de 80ns sur ces signaux, j'ai utilisé des chaines de portes 74LS14...simpliste mais cela fait le job !
A plus
Michel
Re: TAVERNIER 6809
Merci Michel. Ça me donnera une idée de ce à quoi il faut s'attendre si on veut utiliser un V99[1/3/5]8. Plus ça va, plus je trouve le 6809... difficile à interfacer avec l'extérieur.
Dernière modification par hlide le 17 févr. 2020 11:43, modifié 1 fois.
Re: TAVERNIER 6809
J'étais pas disponible ce week-end et je vois que tu as résolu ton problème, bravomichel guyot a écrit : ↑16 févr. 2020 14:46 Bonne nouvelle !!!
J'ai compris d'où venait mon problème de lecture des registres de status
En fait cela résulte d'une bourde de ma part sur la programmation du registre R#15 avec le numéro de registre de status S#n
Depuis le début je trainais cette erreur : LDA #REG15 au lieu de LDA #REG15+$80
J'ai vérifié ceci avec les commandes PSET et POINT
Et oui je l'avais indiqué dans mes routines de services pour lire les statuts +$80, ça nous arrivent à tous ce genre de bourde
En tout cas félicitations pour la réussite de l'intégration de ce VDP dans le Tavernier
Ca serait sympas de faire fabriquer des PCB de ce montage pour les Tavernier user's
En tout cas moi ça m'intéresserais bien de mettre cette carte sur mon Tavernier, si besoin je peux faire le tracer du PCB et produire les fichiers gerbers ?
Re: TAVERNIER 6809
Tu as chaîné 6 portes de 74LS14 plus les circuits logiques avant ça fait un retard assez conséquentmichel guyot a écrit : ↑16 févr. 2020 23:31 Pour introduire un retard de 80ns sur ces signaux, j'ai utilisé des chaines de portes 74LS14...simpliste mais cela fait le job !
6 * 22ns = 132ns + les 74ls32 + 74ls682 + 74ls541
Merci pour les schémas ça permet d'en apprendre pas mal sur l'interface du 6809, et oui c'est quand même assez complexe
- michel guyot
- Messages : 616
- Inscription : 20 mars 2016 16:01
- Localisation : Pyrénées orientales
Re: TAVERNIER 6809
Bonjour à tous,
Mon projet était de donner un peu de couleur à mon TAVERNIER…
L'extension couleur de ma carte graphique initiale (carte ELEKTOR) me semblait un peu complexe à réaliser, j'ai préféré examiner ce que le monde MSX pouvait m'apporter et je pense que c'était une bonne option. A terme j'envisage d'utiliser une interface genre GBS 8200 pour pouvoir utiliser un moniteur VGA classique.
Bien évidemment, mettre ce montage sur une carte PCB m'intéresse, mais je ne dispose pas de logiciel permettant la génération des fichiers GERBERS... Si 6502man se propose de le faire, je suis preneur !
Avant d'aller plus loin, je tiens tout de même à avancer sur les routines logiciels qui me permettre de vérifier les principales fonctionnalités du montage...et éviter des modifications toujours délicates à appliquer sur un PCB réalisé
pour répondre à hlide, je ne pense pas que le 6809 soit difficile à interfacer avec l'extérieur. C'est plus lié à mon manque de connaissance sur les différences de BUS… Le 6809 est tout de même un produit simple et "carré", le Z80 me semble plus confus
Je ne suis pas électronicien de formation...J'ai fais du copie coller à partir de schémas existants sans me poser trop de questions sur les timing mini /maxi...etc….
Pour finir, je vous livre quelques images de ma carte actuelle…
A plus
Michel
Mon projet était de donner un peu de couleur à mon TAVERNIER…
L'extension couleur de ma carte graphique initiale (carte ELEKTOR) me semblait un peu complexe à réaliser, j'ai préféré examiner ce que le monde MSX pouvait m'apporter et je pense que c'était une bonne option. A terme j'envisage d'utiliser une interface genre GBS 8200 pour pouvoir utiliser un moniteur VGA classique.
Bien évidemment, mettre ce montage sur une carte PCB m'intéresse, mais je ne dispose pas de logiciel permettant la génération des fichiers GERBERS... Si 6502man se propose de le faire, je suis preneur !
Avant d'aller plus loin, je tiens tout de même à avancer sur les routines logiciels qui me permettre de vérifier les principales fonctionnalités du montage...et éviter des modifications toujours délicates à appliquer sur un PCB réalisé
pour répondre à hlide, je ne pense pas que le 6809 soit difficile à interfacer avec l'extérieur. C'est plus lié à mon manque de connaissance sur les différences de BUS… Le 6809 est tout de même un produit simple et "carré", le Z80 me semble plus confus
Je ne suis pas électronicien de formation...J'ai fais du copie coller à partir de schémas existants sans me poser trop de questions sur les timing mini /maxi...etc….
Pour finir, je vous livre quelques images de ma carte actuelle…
A plus
Michel
Re: TAVERNIER 6809
Bonjour, Michel,
Bien entendu tant que le prototype est pas entièrement testé ont va pas crée un PCB, quoique vu les tarifs de nos amis les chinois !!!
Sinon voici un petit programme pour tester le screen 8 avec usage de la commande HMMM,
avec une animation pour démontrer la puissance et l'intérêt de ce VDP :
Tu peux tester aussi d'autre commande en changeant la ligne 219 en modifiant la valeur de A par $90 pour LMMM par exemple .
les datas sont dans le fichier binaire car ca va alourdir le post pour rien
J'ai vérifié qu'il n'y ai pas d'erreur d'assemblage et que les routines fonctionnent correctement,
La seule chose qu'il faut vérifier c'est la routine d'attente d'octets par le VDP, je m'en rappelle plus trop
et dans mes notes j'ai pas tout, surtout que une partie est sur un PC qui est en panne dans l'immédiat.
Bien entendu tant que le prototype est pas entièrement testé ont va pas crée un PCB, quoique vu les tarifs de nos amis les chinois !!!
Sinon voici un petit programme pour tester le screen 8 avec usage de la commande HMMM,
avec une animation pour démontrer la puissance et l'intérêt de ce VDP :
Tu peux tester aussi d'autre commande en changeant la ligne 219 en modifiant la valeur de A par $90 pour LMMM par exemple .
Code : Tout sélectionner
;***************************************
;
; TAVERNIER + VDP 9938
;
; test 256x212 256colors
;
; (c) 2020 6502MAN
;
;***************************************
; VDP I/O Ports
;---------------
VDPCTRL .EQU $E101 ; PORT #1
VDPDATA .EQU $E100 ; PORT #0
VDPPALETTE .EQU $E102 ; PORT #2
VDPRegInd .EQU $E103 ; PORT #3 ; registres indirectes
; ecrire registres : DATA port #1 ensuite Reg +80h port #1
Coordy .EQU $0000
.org $4000
Main:
JSR ModeGfx
JSR ClearVRAM
JSR WaitIntVDP
Bmp2VRAM: ; ecrit en VRAM
LDD #$0000 ; les données
LDX #$0000 ; de l'image
JSR SetVDPAddress ; stock en début de VRAM
LDX #SCREEN ; X= adresse des datas
LDY #$3E00 ; Y= longeur
JSR FillVram ; rempli VRAM
LDA #$00 ; iniatilise coordonnee Y
LDU #Coordy ;
LDA ,U ;
MOVE:
JSR Moving
BRA MOVE
FIN:
;------------------------------------------------------------------
; ROUTINES DE SERVICE
;
;
;-------------------------------------------
; Fixe le mode du VDP en mode SCREEN8
; bitmap 256x212 en 256 couleurs
;-------------------------------------------
ModeGfx:
LDB #24 ; 12 registres à ecrires
LDX #RegGfx ; adresse des données
LDU #VDPCTRL ; adresse ecriture registre VDP
LoopInitVdp:
LDA ,X+
STA ,U ; WRITE data
DECB
BNE LoopInitVdp
RTS
RegGfx:
; R0 R1 R2 =$1800 R3=$2000 R4=$0000 R5 R6 R7
FCB $02,$80, $60,$81, $06,$82, $ff,$83, $03,$84, $36,$85, $07,$86, $01,$87
; R8 R9 R10 R11
FCB $08,$88, $02,$89, $00,$8a ,$00,$8b
;-------------------------------------------
; Efface intégralement la VRAM du VDP MSX2 $1FFFF (128K)
;-------------------------------------------
ClearVRAM:
LDD #$0000
LDX #$0000
JSR SetVDPAddress ; $0.0000
LDY #$FFFF
LDA $00
LDU #VDPDATA
ClearVRAMLoop:
STA ,U ; Write data sur P1
LEAY -1,Y
BNE ClearVRAMLoop
RTS
;-------------------------------------------
; Fixe l'adresse d'ecriture du VDP
; VRAM 00000h-1FFFFh
; { Reg #45 = 0 MSX MXD MXS DIY DIX EQ MAJ } not necessary
; Reg #14 = 0 0 0 0 0 A16 A15 A14
; PORT #1 = A7 A6 A5 A4 A3 A2 A1 A0
; PORT #1 = 0 R/W A13 A12 A11 A10 A9 A8
; after read or write by PORT #0
;-------------------------------------------
; IN:
; A = A16:4 A15:2 A14:1 (R14)
; B = A7 A6 A5 A4 A3 A2 A1 A0 (P1)
; X = 0 0 0 0 0 0 0 0 A13:32 A12:16 A11:8 ... (P1)
;-------------------------------------------
SetVDPAddress:
LDU #VDPCTRL ; adresse ecriture registre VDP
STA ,U ; WRITE data ; A==>R14
LDA #14+$80
STA ,U ; WRITE n° registre ; R14
STB ,U ; Write data
TFR X,D
ADDB #$40 ; mode ecriture
STB ,U ; Write data
RTS
;-------------------------------------------
; Attend que le VDP soit libre
;
;-------------------------------------------
WaitIntVDP:
LDU #VDPCTRL ; adresse ecriture registre VDP
LDA #$02 ; => status 02
STA ,U ; data==>R15
LDA #15+$80
STA ,U ; R15
LDA ,U
RORA ; RR A
BCS WaitIntVDP
RTS
;-------------------------------------------
; Remplir la VRAM
;-------------------------------------------
; IN:
; X = adresse des datas à charger en VRAM
; Y = longeur des données à charger
;-------------------------------------------
FillVram:
LDU #VDPDATA ; adresse ecriture P1 VDP
LoopWriteVram:
LDA ,X+
STA ,U ; Write data sur P1
LEAY -1,Y
BNE LoopWriteVram
RTS
Moving:
LDU #VDPCTRL
LDA #32
STA ,U
LDA #17+$80 ; => reg17
STA ,U ; registre n°A autoincrementé
LDU #VDPRegInd
;SX R32-33
LDA #$00
STA ,U ; 1er octet de command
LDA #$00
STA ,U ; 2eme octet de command
;SY R34-35
LDA #$00
STA ,U ; 3eme octet de command
LDA #$00
STA ,U ; 4eme octet de command
;DX R36-37
LDA #$00
STA ,U
LDA #$00
STA ,U
;DY R38-39
LDX #Coordy
LDA ,X
ADDA #$60
;LD A,$60
STA ,U
LDA #$00
STA ,U
;NX R40-41
LDA #$FF
STA ,U
LDA #$00
STA ,U
;NY R42-43
LDA #$40
STA ,U
LDA #$00
STA ,U
LDA #$00
STA ,U ; R44 null
;Command R45
LDA #$00
STA ,U
;Command R46
LDA #$D0 ;D0 HMMM 90 LMMM
STA ,U ; envoie command
JSR WaitIntVDP
LDX #Coordy
LDA ,X
INCA
CMPA #$35
BNE Paslimite
LDA #$00
Paslimite:
STA ,X
RTS
;-------------------------------------------
; Attend que le VDP soit en attente d'octets
;
;-------------------------------------------
WaitTRVDP:
LDU #VDPCTRL
LDA #$02 ; => status 02
STA ,U ; data==>R15
LDA #15+$80
STA ,U ; R15
LDA ,U
TFR A,B ; LD B,A
RORA ; RR A
BCC FinCmdTrVdp ;JP NC,FinCmdTrVdp
ROLB ; RL B
BCC WaitTRVDP ; JR NC,WaitTRVDP
FinCmdTrVdp:
RTS
SCREEN:
;************** IMAGE ******************
J'ai vérifié qu'il n'y ai pas d'erreur d'assemblage et que les routines fonctionnent correctement,
La seule chose qu'il faut vérifier c'est la routine d'attente d'octets par le VDP, je m'en rappelle plus trop
et dans mes notes j'ai pas tout, surtout que une partie est sur un PC qui est en panne dans l'immédiat.
- michel guyot
- Messages : 616
- Inscription : 20 mars 2016 16:01
- Localisation : Pyrénées orientales
Re: TAVERNIER 6809
Bonjour 6502man
Merci pour le petit programme qui m'a permis d'avancer dans la prise en main du VDP....
J'ai rencontré deux difficultés d'ordre pratique
1-Mon TAVERNIER ne possède que 64Ko de RAM. J'élabore mes routines avec l'émulateur de Frédéric puis j'importe le binaire dans un mon module HxC..
Tout ceci pour dire que les images telle que le SCREEN sont plutôt indigestes sauf à les couper en rondelles…!
Pour faire simple avec ton programme , j'ai regénéré un SCREEN en remplissant ma RAM avec 00,01,02,03,...etc...
2-Je n'avais pas vu que dans ton exemple l'initialisation des registres n'est pas en mode GRAPHIC 7 !
J'ai tout de même réussi à faire tourner le tout enfin dans les grandes lignes, initialisation de la VRAM, remplissage partiel, déplacement de zone vers le bas, etc
Ci-dessous , les images que je récupère en fonctionnant avec un point d' arrêt sur MOVE
A plus Michel
Merci pour le petit programme qui m'a permis d'avancer dans la prise en main du VDP....
J'ai rencontré deux difficultés d'ordre pratique
1-Mon TAVERNIER ne possède que 64Ko de RAM. J'élabore mes routines avec l'émulateur de Frédéric puis j'importe le binaire dans un mon module HxC..
Tout ceci pour dire que les images telle que le SCREEN sont plutôt indigestes sauf à les couper en rondelles…!
Pour faire simple avec ton programme , j'ai regénéré un SCREEN en remplissant ma RAM avec 00,01,02,03,...etc...
2-Je n'avais pas vu que dans ton exemple l'initialisation des registres n'est pas en mode GRAPHIC 7 !
J'ai tout de même réussi à faire tourner le tout enfin dans les grandes lignes, initialisation de la VRAM, remplissage partiel, déplacement de zone vers le bas, etc
Ci-dessous , les images que je récupère en fonctionnant avec un point d' arrêt sur MOVE
A plus Michel
Re: TAVERNIER 6809
Kicad Kica et encore Kicad !!!michel guyot a écrit : ↑18 févr. 2020 10:24
Bien évidemment, mettre ce montage sur une carte PCB m'intéresse, mais je ne dispose pas de logiciel permettant la génération des fichiers GERBERS... Si 6502man se propose de le faire, je suis preneur !
Tous les autres 'pros' sont payants ou limités pour les versions gratuites. Alors ok, c'est peu désordonné au début mais on s'y fait et on arrive à ce qu'on veut. Oui, il n'y a pas le modèle pour chaque composant existant sur terre. De temps en temps il faut le creer avant de pouvoir l'incorporer.
Par exemple, décrire l'ULA d'un Oric/CPC/ZX prend 15 minutes à tout casser (quand on sait comment faire).
Re: TAVERNIER 6809
100% d'accord. J'utilise ce logiciel depuis des années et il est très simple à utiliser. La création d'éléments ne prend pas beaucoup de temps.
Par contre, un petit bémol, il faut prendre la dernière version de l'auteur, c'est à dire la 2013. Après c'est devenu une véritable usine à gaz lourde et instable.
Par contre, un petit bémol, il faut prendre la dernière version de l'auteur, c'est à dire la 2013. Après c'est devenu une véritable usine à gaz lourde et instable.
Re: TAVERNIER 6809
J'imagine que la version de l'auteur est un Kicad3 ou Kicad2 (c'est le Français Charasse ou Stambaugh btw ?)
La v4 est une horreur tout le monde est d'accord la dessus.
La v5 est stable. Pas de segfault intempestif, depuis le temps, les plus gros sont corrigés.
C'est une usine à gaz quand on ne prend pas le temps nécéssaire et comprendre le truc. C'est pareil pour tout les logiciels,
Le point noir c'est l'ergonomie. Si Inkscape c'est 10/10, Kicad c'est du 4/10 par exemple.
Un truc qu'ils (les devs) n'arrivent pas à comprendre. Il manque des trucs si évident que tu te demandes comment c'est possible.
Sous windows (beurk), l'installation des librairies de composants à l'air pas simple. Encore un truc qu'ils ne comprennent pas.
En tout cas il est urgent de virer le v4 et passer à la v5 (bon on arrête l'incruste dans le sujet Tavernier, nouveau topic si il y matière à discussion) !
- michel guyot
- Messages : 616
- Inscription : 20 mars 2016 16:01
- Localisation : Pyrénées orientales
Re: TAVERNIER 6809
Bonjour
Utiliser Kicad, oui pourquoi pas. Si je me décide à mettre ce montage sur PCB, je souhaite utiliser un outil répandu et qui ne pose pas de problème.
Ce sera pour moi une utilisation ponctuelle. Je verrai en temps utile, pour l'instant je vérifie que le schéma permet d'accéder aux fonctionnalités du VDP.
Les commandes fonctionnent bien en mode G7 et de manière individuelle. Je vais voir si la gestion des bits CE et TR s'effectue correctement et si je peux enchainer les commandes …..
Il faudra aussi que j'explore les autres modes...
A plus
Michel
Utiliser Kicad, oui pourquoi pas. Si je me décide à mettre ce montage sur PCB, je souhaite utiliser un outil répandu et qui ne pose pas de problème.
Ce sera pour moi une utilisation ponctuelle. Je verrai en temps utile, pour l'instant je vérifie que le schéma permet d'accéder aux fonctionnalités du VDP.
Les commandes fonctionnent bien en mode G7 et de manière individuelle. Je vais voir si la gestion des bits CE et TR s'effectue correctement et si je peux enchainer les commandes …..
Il faudra aussi que j'explore les autres modes...
A plus
Michel
- michel guyot
- Messages : 616
- Inscription : 20 mars 2016 16:01
- Localisation : Pyrénées orientales
Re: TAVERNIER 6809
Bonjour
Essai avec une commande maison
Michel
Essai avec une commande maison
Michel
- michel guyot
- Messages : 616
- Inscription : 20 mars 2016 16:01
- Localisation : Pyrénées orientales
Re: TAVERNIER 6809
Une variante…
Re: TAVERNIER 6809
Félicitations michel je vois que tu commence à maitriser ce VDP
- michel guyot
- Messages : 616
- Inscription : 20 mars 2016 16:01
- Localisation : Pyrénées orientales
Re: TAVERNIER 6809
Bonjour 6502man
Oui je progresse, mais la gestion des bits CE et TR pour les commandes telles que HMMC me pose problème….
A plus
Michel
Oui je progresse, mais la gestion des bits CE et TR pour les commandes telles que HMMC me pose problème….
A plus
Michel