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
irios
Messages : 3213
Enregistré le : 04 nov. 2007 19:47
Localisation : Rochefort du Gard (30)
Contact :

Re: TAVERNIER 6809

Message par irios » 28 nov. 2019 12:03

Je pense Michel que ce lien te sera utile : http://map.grauw.nl/resources/video/yam ... 58_ocr.pdf

Bon bricolage.
http://irioslabs.over-blog.com/

La connaissance ne vaut que si elle est partagée par tout le monde.
I2C

Avatar du membre
Papy.G
Modérateur
Messages : 1965
Enregistré le : 10 juin 2014 13:40
Localisation : Haute-Garonne/Gers

Re: TAVERNIER 6809

Message par Papy.G » 28 nov. 2019 13:35

Carrément le 9958 maintenant! :lol:

Michel, si tu veux simplifier, tu peux même partir sur des boitiers DIP de plus grosse capacité et en 8 bits, ça aura toujours l'air d'être d'époque, pour simplifier encore plus le câblage, tu peux t'orienter vers des SRAM, si le processeur graphique le supporte. :mrgreen:
Peut-être même que les schémas trouvés n'utilisent pas le maximum d'espace d'adressage de mémoire Vidéo, viser le maximum ne devrait pas représenter un surcoût insurmontable à notre époque. :twisted:
Soyez exigeants, ne vous contentez pas de ce que l'on vous vend.
Demandez-en plus, ou faites-le vous-même.

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

Re: TAVERNIER 6809

Message par michel guyot » 28 nov. 2019 15:53

Bonjour 6502man,

Il me faut un peu de temps analyser la datasheet du V99xx et savoir comment générer les lignes d'interface…

Une question après une première lecture, concernant le décodage d'adresse, si je comprend bien, cette extension n'occupe en fait que une ou deux adresses pour communiquer avec le VDP ?
Par contre sa programmation m'a l'air un peu complexe, ton aide me sera certainement utile en temps voulu
A+
Michel

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

Re: TAVERNIER 6809

Message par 6502man » 28 nov. 2019 16:30

Le 9918 utilise 2 ports par contre le 9938 ou 9958 utilisent 4 ports en tout cas sur MSX2 et +

Exemple pour les MSX :

Code : Tout sélectionner

#98	VRAM data read/write port
#99 (write) ==	VDP register write port 
#99 (read)  ==	Status register read port
#9A	Palette access port (only v9938/v9958)
#9B	Indirect register access port (only v9938/v9958)
Pour la quantité de Vram tu peux configurer comme tu veux dans la limite de 192Ko évidemment moins il y à de Vram moins tu pourras exploiter les mode graphiques haute résolution ;)

Tu peux regarder sur ce databook TMS9938 :
http://bitsavers.informatik.uni-stuttga ... _Aug85.pdf
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.

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

Re: TAVERNIER 6809

Message par 6502man » 28 nov. 2019 21:48

J'ai oublié aussi de préciser que l'on peut faire de l'incrustation vidéo avec les TMS9938 ou TMS9958 ;)
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.

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

Re: TAVERNIER 6809

Message par michel guyot » 02 déc. 2019 20:49

Bonjour 6502man

Bon, je crois avoir trouvé comment adapter les signaux au bus 6809. Je dis bien je crois ! Les essais me le diront…!

Pour l'instant je réunis les différents composants nécessaires. Faire tenir le tout sur une carte d'essais à bandes me donne du fil à retordre. sans parler du V9938 qui est en boitier DIL shrink…!

Une requête en vu des 1ers test sur le hard quand j'y serai….Disposerais-tu à titre d'exemple de quelques lignes de code Z80 qui consiste à écrire ou lire un octet dans la RAM ?
Il n'y a pas d'urgence, mais cela m'aidera en évitant de cumuler les pannes matérielles avec des erreurs de soft

Cordialement
Michel

Jacobert
Messages : 49
Enregistré le : 18 janv. 2018 23:30
Localisation : Paris

Re: TAVERNIER 6809

Message par Jacobert » 03 déc. 2019 22:49

:?: pourquoi ne pas avoir contacter Christian T.? (http://www.tavernier-c.com/contactez-moi.htm)

Avatar du membre
Totor le Butor
Messages : 1520
Enregistré le : 07 sept. 2011 16:14
Localisation : Paris

Re: TAVERNIER 6809

Message par Totor le Butor » 04 déc. 2019 11:37

... car il ne répond pas aux questions concernant son ordinateur :( .
Born to bricole
[Rch] Vieux composants électroniques et circuits intégrés toute époque et vieilles cartes .

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

Re: TAVERNIER 6809

Message par 6502man » 04 déc. 2019 17:12

Ce n'est pas la même démarche de chercher par soi même à créer une carte d'extension pour une machine que de demander au créateur de la machine la solution :wink:

Pour un exemple de code d'écriture en VRAM je ressort mes sources pour ce VDP, d'ailleurs j'en avais fait un jeu :
https://www.6502man.com/RetroCoding/New ... NYKF87.php

Les routines de services que j'avais mis en place pour ce jeu :

Code : Tout sélectionner

; VDP I/O Ports   MSX2
;----------------------
VDPCTRL		.EQU	$99		;	PORT #1
VDPDATA		.EQU	$98		;	PORT #0
VDPPALETTE	.EQU	$9A		;	PORT #2
VDPRegInd	.EQU	$9B		;	PORT #3		;	registres indirectes

Code : Tout sélectionner

;-------------------------------------------
;	Fixe le mode du VDP en mode SCREEN8
;		bitmap 256x212 en  256 couleurs
;-------------------------------------------	
ModeGfx
	ld hl,DataGfx
	ld b,20
	ld c,VDPCTRL
	otir
	RET
		;	 R0	     R1	     R2      R3      R4      R5      R6      R7      R8      R9
DataGfx	.db $06,$80,$60,$81,$1f,$82,$80,$83,$01,$84,$ef,$85,$0F,$86,$01,$87,$08,$88,$82,$89

Code : Tout sélectionner

;-------------------------------------------
; initialisation de la palette (256 couleurs) screen 8
;	IN : B= numéro de palette (datas) 
;-------------------------------------------
InitPalette
	LD A,B
	CP $01
	JR Z,Fillpalette1
	CP $02
	JR Z,Fillpalette2
	CP $03
	JR Z,Fillpalette3
	LD HL,PaletteRGB4
	JR Fillpalettez	
	
Fillpalette3	
	LD HL,PaletteRGB3
	JR Fillpalettez	
Fillpalette2
	LD HL,PaletteRGB2
	JR Fillpalettez
Fillpalette1
	LD HL,PaletteRGB
Fillpalettez
	LD A,00
	OUT (VDPCTRL),a
	LD A,16	+$80	;  00=> reg16 (palette)
	OUT (VDPCTRL),A	; numéro palette n°A	autoincrementé après 2 ecriture sur port 2 (RGB)
	
	LD B,32
FillPalet
	LD A,(HL)
	INC HL
	OUT (VDPPALETTE),A
	DJNZ FillPalet
	RET

Code : Tout sélectionner

;-------------------------------------------
;  >>>> TITLE  <<<<
;
;  affiche la page d'intro
;-------------------------------------------
; mapper konami 8Ko
	LD A,$12
	LD (Konami8),A
	LD A,$13
	LD (KonamiA),A
Title2VRAM
	LD BC,$0000	; 1eme ligne
   	CALL SetVDPAddress	; Adress VRAM = $00000
	LD B,$02 ;2 bloc à transferer
ReloopTitle2Vram
	LD HL,$3FFF
	ld DE,$8000
Title2VRAMloop
		LD A,(DE)
        out (VDPDATA),a 
		inc DE
        dec L
        jr nz,Title2VRAMloop
        dec H
        jr nz,Title2VRAMloop		
; mapper konami 8Ko
	LD A,$14
	LD (Konami8),A
	LD A,$15
	LD (KonamiA),A
	DJNZ ReloopTitle2Vram

Code : Tout sélectionner

;-------------------------------------------
;	Fixe l'adresse d'ecriture du VDP MSX2
;			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 go to  read or write by PORT #0
;-------------------------------------------
;	IN:
;	C = adresse A16:4  A15:2  A14:1
;	B = lignes A8:1 ....
;-------------------------------------------
SetVDPAddress
	LD A,C
	OUT (VDPCTRL),a	; A==>R14
	LD A,14+$80
	OUT (VDPCTRL),a	; R14
	;---
	LD A,$00
	OUT (VDPCTRL),a ; P1
	;---
	LD A,$40
	ADD A,B
	OUT (VDPCTRL),a	; P1
	RET	

Code : Tout sélectionner

;-------------------------------------------
;	Efface intégralement la VRAM du VDP	MSX2  $1FFFF	(128K)
;-------------------------------------------		
ClearVRAM
	LD BC,$0000
   	call @SetVDPAddress
	LD D,$02
   	LD A,$11
BigLoopClrVram	
   	LD BC,$Ffff 
ClearVRAMLoop
        out (VDPDATA),a 
        dec c
        jr nz,ClearVRAMLoop
        dec b
        jr nz,ClearVRAMLoop
		DEC D
		JR NZ,BigLoopClrVram
		
		RET

Code : Tout sélectionner

;-------------------------------------------
;	Attend que le VDP est atteint le bas de l'écran
;
;-------------------------------------------
WaitIntVDP			
	LD A,$00		; => status 02
	OUT (VDPCTRL),a	; data==>R15
	LD A,15+$80
	OUT (VDPCTRL),a	; R15	
	
	IN A,(VDPCTRL)
	RL A
	JR NC,WaitIntVDP
	RET

Code : Tout sélectionner

;-------------------------------------------
;	Attend que le VDP est fini la commande
;
;-------------------------------------------
WaitEndCmdVDP			
	LD A,$02		; => status 02
	OUT (VDPCTRL),a	; data==>R15
	LD A,15+$80
	OUT (VDPCTRL),a	; R15	
	
			IN A,(VDPCTRL)
			RR A
			JR C,WaitEndCmdVDP
		RET

C'est bien entendu destiné pour un MSX2 ou +, mais ca te donne une idée de départ.

les Out et IN sur 6809 seront à remplacer par des STA, STB, STU ....

Par contre lors de mes tests j'avais mis en évidence une gestion logique différente de la gestion physique de la RAM en mode SCREEN 8, il faut que je retrouve précisément, mais de mémoire les données ne sont pas écrites séquentiellement en RAM mais plutôt par pair et impaire en mémoire haute ou basse, je vérifie car si tu veux analyser les données écrite en RAM ça risque de te donner des surprises :roll:

Sinon un collègue m'a passé un schéma pour remplacer les DRAMs par des SRAMs j'arrive pas à joindre le pdf, mais j'ai trouvé la source :
SRAM
Au cas où ça peut te servir ;)
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.

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

Re: TAVERNIER 6809

Message par michel guyot » 04 déc. 2019 22:52

Bonjour 6502man
Effectivement à partir d'une idée de départ, tout le plaisir se trouve dans la recherche et la création de la solution , puis dans sa réalisation…
C'est d'ailleurs tout l'intérêt de ces vieilles machines dont la technologie reste accessible aux bricoleurs que nous sommes...

Merci pour toutes ces informations qui me serviront certainement, mais pas tout de suite…
Pour l'instant, il me faut installer et cabler une vingtaine de composants sur un plaque d'essais à bandes
Le V9938 au format DIL 64 pins shrink me complique un peu la vie !

J'ai vu effectivement quelques documents proposants de remplacer les DRAMs par des SRAMs…
Pour l'instant je suis parti sur l'utilisation des 41464...je verrai si des difficultés particulières apparaissent

A plus

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

Re: TAVERNIER 6809

Message par 6502man » 05 déc. 2019 17:29

Le V9938 au format DIL 64 pins shrink me complique un peu la vie
Pourquoi ?
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.

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

Re: TAVERNIER 6809

Message par michel guyot » 05 déc. 2019 22:55

Bonjour 6502man

Je prévois d'implanter cette extension directement sur le bus de mon TAVERNIER.
Pour cela je cable mes composants sur une carte d'essai bakelite à bandes au pas de 2.54 mm
Le support DIL du V9938 est au pas de 1.78, je suis donc contraint d'utiliser l'astuce qui consiste à le monter en biais par rapport aux pistes cuivre…

A+
Michel

Répondre