Site logo

Triceraprog
La programmation depuis le Crétacé

  • Les commandes graphiques en BASIC du VG5000µ ()

    Une fois le VG5000µ démarré, on pourrait imaginer afficher des formes à l'écran en allumant des pixels avec des couleurs prises dans une palette donnée. Au même moment, c'est ce que font d'autres ordinateurs sur le marché. Avec de grandes limitations, certes, mais des commandes en BASIC sont fournies à l'utilisateur pour afficher des points, voires même tracer des lignes.

    Il n'en est rien.

    Les commandes en BASIC méritent d'être étudiées avant de se lancer. La manuel d'utilisation consacre quatre pages d'explications à l'affichage graphique et auront pu, je pense, décourager tous ceux qui ne cherchaient pas un minimum à conduire quelques expériences. Par chance, avoir un ordinateur à cette époque, c'est avoir un peu l'esprit curieux.

    Deux commandes, CURSORX et CURSORY, suivies d'une nombre, permettent de placer la position courante d'affichage sur l'espace à l'écran, divisé en 25 lignes de 40 colonnes. Les caractères affichés avec PRINT qui suivent une changement de coordonnée commenceront à l'endroit indiqué. Tout va bien.

    La commande d'effacement d'écran, qui s'occupe aussi de choisir une couleur de fond et une couleur d'encre, se nomme INIT. C'est l'équivalent d'un CLS sur d'autres machines.

    Une commande permet de geler le défilement d'écran et une autre de le reprendre (PAGE et SCROLL). L'une permet d'empêcher le rafraichissement de l'écran et l'autre de le reprendre (STORE et SCREEN). Une autre permet de contrôler le taux de rafraichissement de l'écran (DISPLAY). Ça fait beaucoup de commandes de contrôle de la surface d'affichage. Ce sont de toutes petites commandes qui ne prennent pas beaucoup de place dans le système, mais était-ce bien utile d'avoir tout ce monde ?

    À vrai dire, la seule commande d'affichage est PRINT. PRINT est implémentée de manière assez simple : une fois les paramètres évalués, chaque caractère à traiter est pris un par un et affiché à l'emplacement du CURSOR. Puis le curseur est avancé d'une position.

    L'implémentation vérifie au préalable passage que le caractère est bien affichable, ou bien s'il mérite un traitement spécial, ou bien si le caractère n'est pas affichable ; auquel cas ce dernier est remplacé par le caractère d'espacement.

    Les caractères affichables de PRINT peuvent être séléctionnés dans quatre fontes différentes. La première contient les lettres, chiffres, ponctuations et autre caractères textuels. La seconde contient des caractères semi-graphique. Les deux autres fontes sont entièrement modifiables par l'utilisateur.

    Ces caractères semi-graphiques sont une première solution pour tracer des images. Les pixels sont grossiers et arrangés sur une grille de 2 par 3, ce qui amène une résolution d'écran de 80 par 75. Pas fameux.

    Caractères semi-graphiques du VG5000µ

    L'utilisation des caractères programmables est la seconde manière d'afficher des pixels à ĺ'écran. Cette méthode est présentée rapidement dans le manuel et est similaire à celle que l'on retrouve sur l'Amstrad CPC par exemple. Grace à un encodage d'une grille de 8 pixels par 10, un caractère peut être redéfini, puis affiché avec PRINT, après sélection de la bonne fonte.

    Ce type d'encodage sort du cadre de cet article, mais voilà ce que cela donne :

      XXXX   4+8+16+32  =  60 = 3C
     X    X  2+64       =  66 = 42
    X X  X X 1+4+32+128 = 165 = A5
    X      X 1+128      = 129 = 81
    X  XX  X 1+8+16+128 = 153 - 99
    X X  X X 1+4+32+128 = 165 = A5
    X      X 1+128      = 129 = 81
     X    X  2+64       =  66 = 42
      XXXX   4+8+16+32  =  60 = 3C
             0          =   0 = 00
    
    SETEG 65,"3C54A58199A581423C00"
    EG 0,6,0:PRINT"A";
    
      XXXX   4+8+16+32  =  60 = 3C
     X    X  2+64       =  66 = 42
    X X  X X 1+4+32+128 = 165 = A5
    X      X 1+128      = 129 = 81
    X X  X X 1+4+32+128 = 165 = A5
    X X  X X 1+4+32+128 = 165 = A5
    X  XX  X 1+8+16+128 = 153 = 99
     X    X  2+64       =  66 = 42
      XXXX   4+8+16+32  =  60 = 3C
             0          =   0 = 00
    
    SETEG 66,"3C42A581A5A599423C00"
    EG 0,6,0:PRINT"B";
    

    Smileys avec le VG5000µ

    Voilà avec quoi devait jouer un utilisateur du VG5000µ n'ayant sous les yeux que le seul manuel fourni avec l'ordinateur. Avec des caractères de 8 pixels par 10, on atteint une résolution potentielle de 320 par 250... mais avec de grosses limitations.

    Est-ce qu'il serait néanmoins possible de tracer des lignes ? Oui, surement, nous verrons ça plus tard.


  • Les bases du BASIC ()

    Le BASIC est LE langage de programmation phare de l’époque de l'informatique personnelle des années 1980. Quasi tous les ordinateurs de la génération dite « 8 bits » démarrent sous un environnement immédiatement programmable en BASIC. Les magasines spécialisés enseignent le BASIC et la majorité des programmes diffusés par ce moyen sont en BASIC, au moins dans un premier temps et lorsqu'il y a une dimension pédagogique. On trouve aussi de nombreux livres ayant pour contenu des programmes en BASIC à recopier sur sa machine.

    Au moment de cette diffusion massive (toute proportion gardée, la micro informatique reste un objet de curiosité), le BASIC à déjà quelques années d'activité, sa création datant du milieu des années 60.

    À sa création, le BASIC se situe dans la classe des langages de programmation à vocation mathématiques. C'est un langage destiné à résoudre des problèmes numériques. L'autre grande classe de langages de programmation à cette époque étant ceux plutôt destinés au données d'entreprises : gestion de stock, gestion de personnel,...

    C'est aussi un langage interactif : il est possible d'entrer des commandes pour les voir s'exécuter immédiatement, ainsi que des programmes pour stocker des suites d'instructions à exécuter plus tard. Cela peut sembler naturel en 2017, mais à cette époque, beaucoup d'ordinateurs exécutent exclusivement des programmes stockés, sur des cartes perforées par exemple (BASIC peut d'ailleurs être aussi utilisé de cette manière, mais perd alors son côté interactif).

    Dernier point de contexte : le BASIC est crée 10 ans avant l'émergence de la micro informatique personnelle.

    Couverture du livre 40 Programmes de Jeux en BASIC

    À quoi ça ressemble ?

    Voici un programme tiré du manuel de BASIC de 1964

    10 PRINT "A", "B", "C", "GCD"
    20 READ A, B, C
    30 LET X = A
    40 LET Y = B
    50 GOSUB 200
    60 LET X = G
    70 LET Y = C
    80 GOSUB 200
    90 PRINT A, B, C, G
    100 GO TO 20
    110 DATA 60, 90, 120
    120 DATA 38456, 64872, 98765
    130 DATA 32, 384, 72
    200 LET Q = INT(X/Y)
    210 LET R = X - Q*Y
    220 IF R = 0 THEN 300
    230 LET X = Y
    240 LET Y = R
    250 GO TO 200
    300 LET G = Y
    310 RETURN
    999 END
    

    Qui affiche le plus grand commun diviseur (PGCD) d'une série de nombres, groupés par trois.

    A              B              C              GCD
     60             90             120            30
     38456          64872          98765          1
     32             384            72             8
    

    Un programme en BASIC est exécuté par numéro de ligne croissante, en débutant par le numéro le plus bas. Il est donc assez aisé, lorsque l'on connaît la signification des instructions, de suivre le déroulement.

    C'est une des forces du BASIC, l'écriture et la lecture d'un programme est très simple. L'exécution séquentielle permet de comprendre les programmes et de la mettre au point sans de grandes connaissances.

    Devenant un standard de fait, les programmes en BASIC sont assez faciles à porter d'une machine à une autre. Le programme ci-dessus, par exemple, fonctionne tel quel sur un VG5000µ. L'affichage 40 colonnes fait que la sortie texte devrait être un peu adaptée, mais ça fonctionne. Sur un MO5, le même programme demande une retouche mineure : enlever le mot clé LET.

    Dans sa forme de 1964, le BASIC est très limité. Il n'y a pas par exemple pas d'instruction pour accéder au matériel de la machine, ni à son environnement. Les commandes pour sauver et rappeler un programme ne peuvent être entrées qu'en mode direct. Le scénario typique est celui d'un étudiant qui s'installe sur un des 35 terminaux de la machine, reprend un travail en cours ou en débute un autre, note ses résultats puis laisse la place à quelqu'un d'autre.

    D'autres limitations : les sous-programmes, appelés par GOSUB, ne peuvent pas eux-même appeler d'autres sous-programmes. Cela limite fortement la structuration des programmes. Le nombre de données introduites par DATA est assez limité, ainsi que le nombre de boucles FOR, d'éléments de tableaux...

    L'évolution de BASIC lui enlèvera peu à peu ces limitations. Sur les ordinateurs des années 80, le BASIC s'est enrichi d'instructions pour accéder au matériel, dessiner à l'écran, jouer de la musique, demander des données à l'utilisateur,... Il restera cependant notoirement lent, extrêmement lent.

    La descendance

    L'offre des ordinateurs a évolué et ceux-ci n'ont plus été livré de base avec un environnement en BASIC. D'ailleurs de plus en plus sans environnement de programmation du tout.

    Mais du fait de sa simplicité et du nombre de personnes qui ont été exposé à ce langage de programmation, il est resté très longtemps populaire et a évolué en intégrant de nouveaux concepts, comme la programmation objet, les exceptions. Il a servi et sert toujours dans le Web, ou pour étendre des applications comme LibreOffice.

    Quelques mots-clé d'un BASIC IBM


  • Le BASIC du VG5000µ, démarrage ()

    Lorsqu'on allume un ordinateur personnel dans les années 80, il y a de bonnes chances de se retrouver dans un environnement BASIC. La machine présente, après quelques lignes d'introduction, une invite de commande à partir de laquelle l'utilisateur peut diriger les opérations. Ces opérations sont alors de deux types : lancer un programme, ou bien programmer (voire lancer un programme pour programmer).

    Il y a plusieurs exceptions à ce schéma. Le TO7, par exemple, a besoin d'une cartouche pour démarrer son environnement ; celui livré avec la machine est cependant un BASIC. Le Jupiter Ace quant à lui démarre avec un environnement en FORTH.

    Le VG5000µ fait parti de la catégorie des ordinateurs avec BASIC intégré. Dès l'allumage, on peut se lancer dans de l'expérimentation ou de la programmation.

    Démarrage du VG5000µ avec extention mémoire

    Dire qu'un ordinateur fonctionne avec BASIC n'est qu'une partie de la définition. Il n'y a pas un BASIC, mais plusieurs dialectes du même langage. Si les instructions principales restent les mêmes et fidèles au BASIC tel que créé en 1964, chaque machine possède ses particularités, même sur des versions produites par la même entreprise.

    Le dialecte du VG 5000 BASIC est assez classique. Les structures de contrôles IF/FOR/GOTO/GOSUB sont là, ainsi que les plus avancées ON GOTO et ON GOSUB. Des fonctions mathématiques classiques ainsi que de manipulations de chaînes de caractères sont présentes. Les fonctions d'éditions AUTO, mais surtout RENUM, sont toujours les bienvenues.

    Question périphériques, des commandes sont disponibles pour la manipulation des fichiers sur K7 (le VG 5000 n'a pas eu droit à son lecteur de disquette), le son, deux manettes et l'affichage. Nous verrons cela plus en détails plus tard.

    La manuel du VG5000µ est assez court avec sa centaine de pages. Comme il se doit pour un manuel d'époque, la partie programmation occupe la majeure partie de l'ouvrage en commençant dès la page 13 et continuant jusqu'à la presque fin. La programmation y est envisagé en BASIC, et seules quelques références à l'assembleur sont présentes.

    Je vous laisse avec le début du Chapitre 11, long de deux pages, expliquant la démarche d'écriture d'un programme.

    Extrait du manuel VG5000µ


  • VG5000µ ()

    La machine à laquelle je vais m'intéresser est le VG5000µ, de Philips. La plupart du temps, le µ n'est pas précisé. C'est une machine qui n'a pas vraiment de secret, ses nombreux fans l'ayant depuis longtemps passée au peigne fin et la documentation technique est abondante.

    Ce n'est cependant pas une machine si populaire. Je pense avoir passé les années 80 sans vraiment en entendre parler, ni en croiser sur mon chemin. J'ai donc découvert cette machine plutôt récemment, début 2016.

    C'est une machine extrêmement simple, autour d'un processeur central, d'un processeur vidéo et d'un clavier. Le tout dans un boîtier léger est plutôt aéré, pour ne pas dire plein de vide. Chose très appréciable, du moins en France, l'appareil est munie d'une prise Péritel, ce qui évite les jonglages pour sortir une image sur un écran pas trop ancien.

    Le clavier n'est pas extrêmement pratique, mais pas affreusement inconfortable. Il est presque envisageable de travailler directement dessus en 2017. Les inscriptions sur le clavier montrent aussi sans équivoque l'orientation de l'ordinateur vers la programmation en BASIC, avec des raccourcis qui inscrivent à l'écran les commandes.

    Je n'ai jamais trouvé ces raccourcis vraiment pratiques. Elles servent en sorte de documentation pour connaître les particularités du dialecte du BASIC utilisé par la machine, mais à l'époque et sur des machines similaires utilisant le même principe, j'ai toujours trouvé ça inutile dans le meilleur des cas.

    Avant de vous laisser avec une photo partielle du clavier de la machine que j'utilise, voici quelques sites consacrés au VG5000µ :

    • La page des fans du VG5000µ, avec un panorama du matériel, des logiciels et de la documentation.
    • VG5000, qui contient des informations sur la programmation du processeur vidéo.
    • VG5000 Bazar, qui contient des logiciels récents, des articles de fond et un recensement des machines toujours en circulation.
    • DCVG5K, l'émulateur VG5000µ de Daniel Coulom.
    • My VG5000 :), site de Carl Hervier avec de nombreuses documentations, informations et projets.

    Clavier du VG5000µ


  • Un premier projet ()

    Le premier billet de ce site, que je veux consacrer principalement à la programmation et son histoire, commence, c'est le paradoxe, par de la soudure.

    De discussion en discussion sur le forum System.cfg, l'idée de créer un lecteur de SD Card pour le VG5000 est apparue. Initialement, j'avais plus dans l'idée de m'occuper de la partie programmation. Cependant, à moins de vouloir utiliser de la sauvegarde sur cassette comme à l'époque, il est nécessaire d'avoir de quoi communiquer des informations depuis un ordinateur plus moderne.

    La méthode est simple, en théorie, on branche un cordon entre la prise cassette du VG5000µ et les prises son du PC. Et c'est ainsi que commence l'aventure : je n'ai pas ce cable à disposition. Un petit coup d'oeil au brochage me montre qu'il me faut une prise DIN 8 broches. J'ai des prises DIN 8 broches sous la main... mais celles pour Commodore, qui sont légèrement différentes.

    Un petit détour par la boutique d'électronique et me voici avec le matériel nécessaire. Prochaine étape donc, soudure.

    Prises pour le cable k7 VG5000


« (précédent) Page 22 / 22

Tous les tags

3d (14), 6809 (1), 8bits (1), Affichage (24), AgonLight (2), Altaïr (1), Amstrad CPC (1), Apple (1), Aquarius (2), ASM (30), Atari (1), Atari 800 (1), Atari ST (2), Automatisation (4), BASIC (30), BASIC-80 (4), C (3), Calculs (1), CDC (1), Clion (1), cmake (1), Commodore (1), Commodore PET (1), CPU (1), Debug (5), Dithering (2), Divers (1), EF9345 (1), Émulation (7), Forth (3), Game Jam (1), Hector (3), Histoire (1), Hooks (4), i8008 (1), Image (16), Jeu (14), Jeu Vidéo (4), Livre (1), Logo (2), Machine virtuelle (2), Magazine (1), MAME (1), Matra Alice (3), MDLC (7), Micral (2), Motorola (1), MSX (1), Musée (2), Nintendo Switch (1), Nombres (3), Optimisation (1), Outils (3), Pascaline (1), Peertube (1), Photo (2), Programmation (3), Python (1), ROM (15), RPUfOS (5), Salon (1), SC-3000 (1), Schéma (5), Synthèse (14), Tortue (1), Triceraprog (1), VG5000 (62), VIC-20 (1), Vidéo (1), Z80 (20), z88dk (1)

Les derniers articles

Instance Peertube pour Triceraprog
Environnement de développement pour Picthorix
Un jeu en Forth pour Hector HRX : Picthorix
Yeno SC-3000 et condensateurs
Suite de tests pour VG5000µ
Un peu d'Atari ST
Le Forth sur Hector HRX
J'MSX 24 et un micro jeu
Récréation 3D, Matra Alice
Tuiles des plus très-curieuses

Atom Feed

Réseaux