TAVERNIER 6809

C'est la catégorie reine de l'ordinophile, 8 bits et pas un de plus!
Single board ou bus S-100 acceptés.

Modérateurs : Papy.G, fneck, Carl

Avatar du membre
michel guyot
Messages : 209
Enregistré le : 20 mars 2016 16:01
Localisation : Pyrénées orientales

Re: TAVERNIER 6809

Message par michel guyot » 16 févr. 2020 23:31

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
2020-02-16 - Buffer et decodage adresse - b.jpg
2020-02-16 - Buffer et decodage adresse - b.jpg (260.93 Kio) Vu 1218 fois
2020-02-16 - VDP et Interface Vidéo - b.jpg
2020-02-16 - VDP et Interface Vidéo - b.jpg (270.25 Kio) Vu 1218 fois

Avatar du membre
hlide
Messages : 1867
Enregistré le : 29 nov. 2017 10:23

Re: TAVERNIER 6809

Message par hlide » 17 févr. 2020 11:21

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.
Modifié en dernier par hlide le 17 févr. 2020 11:43, modifié 1 fois.

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

Re: TAVERNIER 6809

Message par 6502man » 17 févr. 2020 11:33

michel guyot a écrit :
16 févr. 2020 14:46
Bonne nouvelle !!! :D
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
J'étais pas disponible ce week-end et je vois que tu as résolu ton problème, bravo :)

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 :D
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 ?
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.

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

Re: TAVERNIER 6809

Message par 6502man » 17 févr. 2020 11:38

michel 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 !
Tu as chaîné 6 portes de 74LS14 plus les circuits logiques avant ça fait un retard assez conséquent :roll:
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 :roll:
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.

Avatar du membre
michel guyot
Messages : 209
Enregistré le : 20 mars 2016 16:01
Localisation : Pyrénées orientales

Re: TAVERNIER 6809

Message par michel guyot » 18 févr. 2020 10:24

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
P1050576.JPG
P1050576.JPG (418.74 Kio) Vu 1165 fois
P1050575.JPG
P1050575.JPG (270.24 Kio) Vu 1165 fois
P1050573.JPG
P1050573.JPG (327.91 Kio) Vu 1165 fois
P1050526.JPG
P1050526.JPG (407.25 Kio) Vu 1165 fois
P1050523.JPG
P1050523.JPG (436.45 Kio) Vu 1165 fois

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

Re: TAVERNIER 6809

Message par 6502man » 18 févr. 2020 11:05

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 .


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 ******************
Screen8_tavernier.zip
(34.12 Kio) Téléchargé 22 fois
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.
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.

Avatar du membre
michel guyot
Messages : 209
Enregistré le : 20 mars 2016 16:01
Localisation : Pyrénées orientales

Re: TAVERNIER 6809

Message par michel guyot » 22 févr. 2020 23:33

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
P1050584.JPG
P1050584.JPG (143.05 Kio) Vu 1125 fois
P1050585.JPG
P1050585.JPG (138.37 Kio) Vu 1125 fois
P1050586.JPG
P1050586.JPG (166.6 Kio) Vu 1125 fois
P1050587.JPG
P1050587.JPG (181.61 Kio) Vu 1125 fois

Avatar du membre
Franckb78
Messages : 29
Enregistré le : 12 janv. 2020 20:55
Contact :

Re: TAVERNIER 6809

Message par Franckb78 » 23 févr. 2020 01:17

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 !
Kicad Kica et encore Kicad !!!

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).

Fred_72
Messages : 357
Enregistré le : 22 mai 2019 13:10

Re: TAVERNIER 6809

Message par Fred_72 » 23 févr. 2020 09:08

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.

Avatar du membre
Franckb78
Messages : 29
Enregistré le : 12 janv. 2020 20:55
Contact :

Re: TAVERNIER 6809

Message par Franckb78 » 23 févr. 2020 12:27

Fred_72 a écrit :
23 févr. 2020 09:08
[sup modo: quote inutile]
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) !

Avatar du membre
michel guyot
Messages : 209
Enregistré le : 20 mars 2016 16:01
Localisation : Pyrénées orientales

Re: TAVERNIER 6809

Message par michel guyot » 24 févr. 2020 01:29

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
P1050592.JPG
P1050592.JPG (97.14 Kio) Vu 1053 fois
P1050588.JPG
P1050588.JPG (198.41 Kio) Vu 1053 fois

Avatar du membre
michel guyot
Messages : 209
Enregistré le : 20 mars 2016 16:01
Localisation : Pyrénées orientales

Re: TAVERNIER 6809

Message par michel guyot » 25 févr. 2020 23:22

Bonjour

Essai avec une commande maison
Michel
P1050594.JPG
P1050594.JPG (173.93 Kio) Vu 1013 fois

Avatar du membre
michel guyot
Messages : 209
Enregistré le : 20 mars 2016 16:01
Localisation : Pyrénées orientales

Re: TAVERNIER 6809

Message par michel guyot » 25 févr. 2020 23:32

Une variante…
P1050595.JPG
P1050595.JPG (137.36 Kio) Vu 1011 fois

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

Re: TAVERNIER 6809

Message par 6502man » 26 févr. 2020 15:40

Félicitations michel je vois que tu commence à maitriser ce VDP :D
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.

Avatar du membre
michel guyot
Messages : 209
Enregistré le : 20 mars 2016 16:01
Localisation : Pyrénées orientales

Re: TAVERNIER 6809

Message par michel guyot » 26 févr. 2020 23:49

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

Répondre