Nouvelles
  •   Emulateur VG5000 21/11/05
    la version 1.0 de DCVG5K, http://dcvg5k.free.fr/
  •   My VG5000 18/10/05
    un site consacré aux programmes VG5000 perso.
  •   La Radiotechnique 15/10/05
    correction du manuel d'utilisation.
  •   Club VG5000 01/10/05
    3 documents du club VG5000.
  •   Ligne du temps 29/09/05
    De la naissance à la disparition du VG5000, mise à jour.
  •   Nouveaux scans 01/02/05
    Le VG5000 au banc d'essai dans le magazine Radio Plans.
  •   20 ans ! 01/10/04
    1984-2004, le VG5000 a 20 ans.
  •   Version 2 22/12/03
    Voici un nouveau design pour le site (changez le en cliquant sur la marque du VG5000).
  •   i18n 07/12/03
    La version internationale est en ligne... amusez-vous et corrigez mes fautes !!!.
  •   Collectionneurs 04/11/03
    Membres, vous pouvez (devez) saisir votre collection dans le formulaire adéquat. Ainsi, chacun pourra savoir ce que vous cherchez, ou ce que vous souhaitez échanger ou vendre. Merci !
 
 
Login
 



La vidéo du VG5000 :

LE HARDWARE

Au cœur de la machine :

Le VG5000 est équipé d'un processeur vidéo SGS-Thomson EF9345 et de 8 ko de RAM SRAM D4168C (200ns)
Le 9345 est un microprocesseur semi-graphique et controlleur d'écran.
Il est optimisé pour l'affichage sur télévison nb ou couleur (64ms par ligne), utilisable en 50 ou 60Hz.

L'interfaçage entre le processeur vidéo EF9343 et la RAM

à noter que ce type d'interfaçage permettrait de changer la ram 8Ko par une 16Ko car l'adressage se fait via multiplexage.

Le brochage du 9345

1-Masse électrique 20-+5V alimentation
2-Lecture dans la RAM 21-Bit de donnée 3
3-Ecriture dans la RAM 22-Bit de donnée 4
4- Présence d'une donnée ou d'une adresse sur le bus ADM0-ADM7 23-Bit de donnée 5
5-Sortie de synchro trame du TV 24-Bit de donnée 6
6-Sortie de synchro ligne du TV 25-Bit de donnée 7
7-Sortie bleu 26-Validation du circuit
8-Sortie vert 27-Bit 13
9-Sortie rouge 28-Bit 12
10-Sortie d'incrustation 29-Bit 11
11-Entrée d'horloge 12 mhz 30-Bit 10
12-Sortie d'horloge 4 mhz 31-Bit 9
13-Entrée de synchro 32-Bit 8
14-Indication d'adresse sur le bus de donnée 33-Bit 7
15-Indication de sortie d'une donnée 34-Bit 6
16-Indication d'entrée d'une donnée 35-Bit 5
17-Bit de donnée 0 36-Bit 4
18-Bit de donnée 1 37-Bit 3
19-Bit de donnée 2 38-Bit 2
39-Bit 1
40-Bit 0

en rouge: Bus d'adresses poids fort
en bleu: Bus d'adresses poids faible multiplexé avec le bus de données du Z80

La connectique :

Brochage du connecteur vidéo DIN du VG5000
N° de broche
Description
1
Commande rapide
2
Masse
3
Bleu
4
Sync
5
Rouge
6
Commande lente
7
BF
8
Vert
Brochage du connecteur vidéo SCART

N° de broche
Description
1
Sortie audio droite
2
Entrée audio droite
3
Sortie audio gauche
4
Masse commune audio
5
Masse "bleu"
6
Entrée audio gauche
7
Entrée composante "bleu"
8
Entrée commutation lente
9
Masse "vert"
10
Horloge
11
Entrée composante "vert"
12
Commande à distance
13
Masse "rouge"
14
Masse commande à distance
15
Entrée composante "rouge"
16
Entrée commutation rapide
17
Masse vidéo
18
Masse commutation rapide
19
Sortie vidéo
20
Entrée vidéo
21
Blindage de la fiche

Comment faire son cable vidéo :
VG5000 SCART TV
7 BF 2 Entrée Audio Droite
7 BF 6 Entrée Audio Gauche
2 Masse 4 Masse Audio
4 Sync. 20 Entrée Vidéo Composite
1 Commande Rapide 16 Commutation rapide
6 Commande Lente 8 Commutation lente
3 Bleu 7 Entrée Bleu
8 Vert 11 Entrée Vert
5 Rouge 15 Entrée Rouge
2 Masse 17 Masse Commune Vidéo

Pour ceux qui n'ont pas de télévision avec prise scart, il existe le VU-0011, convertisseur RVB en UHF Secam.

 

Il est même possible de connecter son VG5000 sur l'entrée vidéo d'un carte PCTV via un convertisseur CGV (les screenshots couleurs ont été faits de cette manière).

LE SOFTWARE

Organisation du processeur vidéo EF9345

Le Z80 et le EF9345 communiquent par l'intermédiaire d'un bus 8 bits multiplexé et par les ports d'entrées-sorties $8F et $CF.
Le processeur vidéo possède ses propres registres internes lui permettant de gérer de façon autonome tous les paramètres d'affichage.
L'utilisateur peut communiquer avec le EF9345 par l'intermédiaire des routines du Basic, par l'intermédiaire des routines d'accès direct (sans passer par le buffer vidéo) ou bien même directement en utilisant tous les modes disponibles sur ce processeur (le VG 5000 utilise uniquement le mode 16 bits par caractère).

En BASIC

L'affichage :

L'affichage se fait en 40 colonnes et 25 lignes pour le VG5000 mais il pourrait se faire en 80 colonnes sur 25 lignes via une routine assembleur.

 

A l'écran s'affichent 40 x 25 soit 1000 caractères ou 80 000 pixels. En équivalent bitmap cela donne (40 x 8) par (25 x 10), soit 320 x 250.

Les caractères :

  • 110 caractères ASCII texte
  • 128 caractères graphiques
  • 192 caractères utilisateur

En mode 40 colonnes, un caractére fait en honrizontal 8 pixels par 10 pixels en vertical soit 80 pixels par caractére.

Figure 1
Figure 2

La matrice en figure 2, peut servir à determiner la codification hexadécimal des caractéres.


Exemple : la codification de la 5ème ligne est égale à 67 soit 4+2 = 6 et 4+2+1 = 7

En basic, deux commandes existent pour créer des caractéres, les commandes SETEG et SETET.
Matrice des caractères en mode texte
Matrice des caractères en mode graphique
Génération des codes SETET ou SETEG

Instruction et opérateurs basic

CURSORX A Positionne le curseur à l'abscisse spécifiée par A (colonne).
CURSORY A Positionne le curseur à l'ordonnée spécifiée par A (ligne).
DELIM A,B,C

Met un message en relief en changeant la couleur du délimiteur (opérande A) et celle du fond (opérande B) et en le soulignant (opérande C).
Les valeurs des opérandes A et B correspondent au tableau des codes de couleurs, l'opérande C doit avoir une valeur impaire pour un souligné et une valeur paire pour un non souligné.

Ex : tapez le programme suivant :
10 INIT 6,6
20 DELIM 1,2,0
30 PRINT "Bonjour à tous";
40 DELIM 3,6,0

Faites "RUN" et vous voyez un carré rouge
suivi de "Bonjour à tous" sur fond vert, suivi d'un carré jaune.

DISPLAY A

Permet de modifier la vitesse d'affichage des caractères. L'opérande A doit être compris entre 0 et 255. Le délai d'affichage entre deux caractères est 20*A en ms.
L'opérande est facultatif et vaut 20 par défaut.

Ex : tapez le programme suivant

10 A$="ESSAI DE LA COMMANDE DISPLAY"
20 FORI=ITOLEN(A$)
30 PRINT MID$(A$,1,1);
40 SOUND 200,1
50 DISPLAY
60 NEXT I
Exécutez le programme, puis supprimez la ligne 50 ; vous apprécierez alors l'intérêt de DISPLAY.

EG A,B,C

Initialise le mode graphique spécial (caractères définis par l'utilisateur).
L'opérande A correspond à la couleur de l'encre, l'opérande B à la couleur du fond. Voir le tableau des codes de couleurs.
L'opérande C définit le clignotement (0 = stable, 1 = clignotant).

Ex : tapez le programme suivant
10 CURSORX 10 : CURSORY 10
20 EG 3,4,1
Ce programme définit la ligne 10 à partir de la colonne 10, comme zone graphique clignotante encre jaune, fond bleu.

ET A,B,C  Initialise le mode texte spécial.
L'opérande A correspond à la couleur.
L'opérande B correspond à l'attribut des caractères (voir attribut des caractéres), l'opérande C au clignotement (0 = stable, 1 = clignotant)
GR A,B,C Initialise le mode graphique normal.
Les opérandes A, B, C sont les mêmes que pour EG.
INIT A,B Efface l'écran et change la couleur (l'encre opérande A) et du fond (opérande B).
LPOS (A)  Donne l'abscisse (colonne) du dernier caractère Imprimé (sur l'imprimante).
LPRINT Permet l'impression d'une variable ou d'une chaîne 1e caractères sur l'imprimante.
PAGE Permet de geler le scrolling de l'écran.
POS (A) Donne l'abscisse (colonne) du dernier caractère affiché à l'écran.
PRINT Permet l'impression d'une variable ou d'une chaîne de caractères à l'écran.
SCREEN Permet d'afficher à l'écran une image qui a été réalisée après une commande STORE.
SCROLL Permet le scrolling de l'écran après que celui-ci ait été gelé par la commande PAGE.
SETEG A,"BBCCDDEEFFGGHHIIKK"

Permet de définir un caractère graphique spécial. L'opérande A définit le caractère (code compris entre 32 et 127), tandis que l'opérande entre guillemets définit la nouvelle matrice du caractère, chaque ligne étant représentée par une valeur hexadécimale, soit deux caractères.

Ex : matrice du caractère A
00000000 soit 00 en hexadécimal
00111000 soit 38 en hexadécimal
01000100 soit 44 en hexadécimal
01000100 soit 44 en hexadécimal
01000100 soit 44 en hexadécimal
01111100 soit 7C en hexadécimal
01000100 soit 44 en hexadécimal
01000100 soit 44 en hexadécimal
00000000 soit 00 en hexadécimal
00000000 soit 00 en hexadécimal
On peut donc redéfinir le A par
SETEG 65, "00384444447C44440000".

SETET A,"BBCCDDEEFFGGHHIIJJKK" Commande identique à SETEG, mais elle permet de définir un caractère de texte spécial.
SPC (A) Affiche A espace(s) à la position courante du curseur. L'opérande A doit être compris entre 0 et 255.
STORE

Permet de concevoir une image sans que celle-ci n'apparaisse à l'écran lors de sa fabrication. On évite ainsi la désagréable apparition de motifs successifs.
Pour faire afficher l'image ainsi conçue, on utilise SCREEN.
Nota : DISPLAY, END, STOP, un scrolling d'écran, une erreur, font aussi apparaître l'image.

Ex : reprenez le programme donné pour DISPLAY en supprimant la ligne 50 et en rajoutant les lignes
50 STORE
70 SCREEN
Remarque : la ligne 70 est facultative puisque le
programme s'achève derrière (=END). Elle a uniquement un but pédagogique.

TAB (A) Permet d'effectuer des tabulations aussi bien sur l'écran que sur l'imprimante. L'opérande A doit être compris entre 1 et 39.
TX A,B,C Initialise le mode texte normal. Les opérandes A, B, C sont les mêmes que pour ET.
CSAVES "xxxx" Sauve l'écran sur la cassette

Les codes couleurs :

0 noir
1 rouge
2 vert
3 jaune
4 bleu
5 violet
6 cyan
7 blanc

Attributs des caractères :

0 normal
1 double hauteur
2 double largeur
3 double hauteur et double largeur
4 inversion vidéo
5 inversion vidéo et double hauteur
6 inversion vidéo et double largeur
7 inversion vidéo, double hauteur et double largeur

Quelques exemples :


TX 0,0

TX0,2

TX0,1

TX0,3

TX0,5

Voici quelques actuces accessibles depuis le basic via la commande poke :

PASSER EN MINUSCULES/MAJUSCULES PAR PROGRAMME

Majuscules : POKE &"47FE",1
Minuscules : POKE &"47FE",O

CHANGER LA COULEUR DU BORD ET L'ASPECT DU CURSEUR

C'est l'octet $47FD qui gère ces deux fonctions : le quartet de poids faible correspond à la couleur, le quartet de poids fort à l'aspect du curseur.

7
6
5
4
3
2
1
0
inutilisé
inutilisé
clignotement
forme
couleur
couleur
couleur
couleur

Si le bit 4 est à 0, le curseur est un pavé.
Si le bit 4 est à 1, le curseur est un trait.
Si le bit 5 est à 0, le curseur est fixe.
Si le bit 5 est à 1, le curseur est clignotant.
Ceci revient à choisir le code de la couleur et à ajouter 16 si l'on veut un trait comme curseur, et/ou ajouter 32 si l'on veut qu'il clignote.

Exemples :
Couleur rouge, pavé clignotant => 1+32 = 33 donc POKE &"47FD",33
Couleur verte, trait fixe => 2 + 16 = 18 donc POKE &"47FD",18
Couleur jaune, pavé fixe => 3 donc POKE &"47FD",3
Couleur bleu, trait clignotant => 4 + 16 + 32 = 52 donc POKE &"47FD",52

RESTAURER LA POSITION COURANTE DU CURSEUR

Si, pour une raison quelconque, vous désirez restaurer la position courante du curseur après une erreur, rien de plus simple :
POKE &"47FD,PEEK(&"47FD") AND 191 : POKE &"4871", PEEK(&"4871") AND 64

LANGAGE MACHINE

Adresses système

la mémoire écran : $4000 à $4700 soit la zone de 16384 à 18384

Les Variables écran :
47FA Compteur d'interruption pour le rafraichissement de l'écran
47FB Drapeau indiquant si l'écran a besoin d'être rafraichi.
47FC Valeur de référence pour le compteur d'interruptions.
47FD Couleur du pourtour et aspect du curseur
47FE Bascule majuscule / minuscule
4802 Attribut de couleur d'encre pour le prochain caractère à afficher :
Bits 0 à 2 couleur d'encre
Bit 3 clignotement
Bit 4 double largeur (texte)
Bit 5 double hauteur (texte)
Bits 4 à 6 couleur de fond (graphique)
Bit 7 0 = texte / 1 = graphique
4803 Attribut de couleur utilisé par init :
Bits 0 à 2 encre de la colonne 0
Bit 3 = 0
Bits 4 à 6 couleur de fond
Bit 7 = 1
4804 Drapeau de redéfinition de caractéres :
Bits 0 à 6 = 0
Bit 7 0 = normal / 1 = redéfini
4805 Abscisse du curseur (colonne)
4806 Ordonnée du curseur (ligne)

Les routines de gestion d'affichage :

$0092 Envoie un caractère de 16 bits à l'écran directement sans passer par le buffer vidéo géré par le Z80. La position du caractère est donnée par HL, H représentant l'ordonnée (ligne) 0 - ligne 0, 8-31 - lignes 1-24, et L représentant l'abscisse (colonne) 0-39 - colonnes 0-39.
D doit contenir le code du caractère et E son attribut. Les registres BC et AF sont altérés.
$0095 Envoie un caractère de 16 bits à l'écran directement sans passer par le buffer vidéo géré par le Z80. L'affichage se fait à la position courante du curseur. D doit contenir le code du caractère, et E son attribut. Les registres BC et AF sont altérés.
$0098 Permet de lire un caractère de 16 bits directement depuis la mémoire écran à la position définie par HL (codage identique à $0092). Le code du caractère revient dans D, tandis que son attribut revient dans E. Les registres AF, BC et DE sont altérés.
$009B Permet de lire un caractère de 16 bits directement depuis la mémoire écran à la position courante du curseur. Le code du caractère revient dans D, tandis que son attribut revient dans E.
Les registres AF, BC et DE sont altérés.
$009E Efface l'écran et réinitialise la couleur du fond définie par $4803, et de l'encre définie par $4802.Tous les registres sont altérés.
$00A1 Efface une ligne et réinitialise les couleurs de fond et d'encre (idem $009E). A doit contenir le numéro de la ligne à effacer. Tous les registres sont altérés.
$00A4 Interrompt le déroulement d'un programme jusqu'à ce que le circuit vidéo soit disponible pour un transfert de données. Le registre AF est altéré.
$00A7  Calcule l'adresse physique d'une position d'écran par rapport à son abscisse et son ordonnée. H doit contenir l'ordonnée et L l'abscisse. L'adresse calculée revient dans HL. Tous les registres sont altérés.
$00AD Charge les registres du processeur vidéo EF9345 dans une table pointée par HL. Le premier octet de la table sera le nombre de données dans la table. Les registres seront codés sur deux octets, le premier octet étant l'adresse de selection du registre, et le secon le contenu du registre. Les registres AF, BC et HL sont altérés.

Les Applications du commerce :

Salut L'artiste de Nice Ideas, ce logiciel permet de faire des dessins en 320x250 en 8 couleurs. L'utilisation est moins aisée qu'un logiciel travaillant directement en bitmap mais les résultats reste quand même d'un bon niveau.

   

Les Jeux :

voici quelques captures d'écrans de jeux :

   

   
liste emails