[VG5000] Utilitaire PC pour créer des cassettes

Couvre tous les domaines de l'émulation ou de la virtualisation ainsi que les discussions sur les divers outils associés.

Modérateurs : Papy.G, fneck, Carl

OlivierV
Messages : 16
Inscription : 26 oct. 2020 14:09
Localisation : Hérault

[VG5000] Utilitaire PC pour créer des cassettes

Message par OlivierV »

Bonjour,

ayant découvert DCVG5K il y a quelques temps, je suis retombé en enfance, et je me suis remis à étudier cette machine. Merci Daniel :) !

En passant, j'ai créé un petit outil (linux) qui permet de convertir un fichier binaire (assembleur ou C) en un fichier k7 chargeable via CLOAD: https://github.com/ovalenti/mkk7

Il y a un petit exemple de "hello world" qui utilise SDCC (http://sdcc.sourceforge.net/).

Bien cordialement,

Olivier
Markerror
Messages : 1973
Inscription : 31 oct. 2011 19:21
Localisation : Orléans
Contact :

Re: [VG5000] Utilitaire PC pour créer des cassettes

Message par Markerror »

Bonjour,

Ca fait toujours plaisir de voir des anciens utilisateurs se remettre à faire vivre la machine :-).

Ce petit outil est intéressant. Ce serait pas mal d'avoir la même chose mais pour un fichier Basic car pour de longs listings, utiliser la fonction de lecture de DcVG5k est un peu fastidieux (ça laisse le temps de se faire un petit café :-) ).
Avatar de l’utilisateur
Mokona
Messages : 867
Inscription : 17 déc. 2016 22:01
Localisation : Nord Est des Yvelines
Contact :

Re: [VG5000] Utilitaire PC pour créer des cassettes

Message par Mokona »

Cool l'utilitaire, j'irai voir ça de plus près.

Pour la transformation en BASIC directement, si ça peut aider pour base, j'avais fait un k7 -> txt avec décodage de BASIC. C'est ici.
OlivierV
Messages : 16
Inscription : 26 oct. 2020 14:09
Localisation : Hérault

Re: [VG5000] Utilitaire PC pour créer des cassettes

Message par OlivierV »

Markerror a écrit : 30 oct. 2021 07:39 Ce serait pas mal d'avoir la même chose mais pour un fichier Basic car pour de longs listings, utiliser la fonction de lecture de DcVG5k est un peu fastidieux (ça laisse le temps de se faire un petit café :-) ).
C'est faisable, en particulier grâce au code de Mokona qui fait exactement l'opération inverse. Cependant, ça nécessite un parser lexical et une petite phase de syntaxe. Si je ne m'abuse, c'est essentiellement faire la correspondance entre les verbes BASIC et leur octet correspondant (table des pointeurs dans la ROM à 0x2000 avec l'index divisé par deux pour le code de l'instruction).

Il faut détecter les erreurs de syntaxe avant de faire la K7.
Markerror
Messages : 1973
Inscription : 31 oct. 2011 19:21
Localisation : Orléans
Contact :

Re: [VG5000] Utilitaire PC pour créer des cassettes

Message par Markerror »

Ah effectivement, il y a cette problématique qui complexifie pas mal la chose. Ca serait pourtant pratique :-).
Avatar de l’utilisateur
Mokona
Messages : 867
Inscription : 17 déc. 2016 22:01
Localisation : Nord Est des Yvelines
Contact :

Re: [VG5000] Utilitaire PC pour créer des cassettes

Message par Mokona »

Le BASIC Microsoft ne va pas si loin dans l'encodage, en tout cas dans sa version VG5000 (mais probablement dans les autres de la même époque, pareil).

Dès qu'il y un une suite de caractères qui est dans sa liste (à l'exclusion de ce qui est dans une chaîne de caractères entre guillemets), il l'encode par son token. La liste est en en $209e.

Ainsi, si on tape :

Code : Tout sélectionner

10 GOTOTRUC
20 GOTO1000
On aura en mémoire (hors information de chaînage et de numéro de ligne) :

Code : Tout sélectionner

88 54 52 55 43 
(c'est-à-dire le token de GOTO suivi de TRUC en quatre octets)

puis

Code : Tout sélectionner

88 0E E8 03
(le token GOTO suivi du marqueur de codage de numéro de ligne (OE), suivi du codage en entier 16 bits de la ligne... ce codage est une particularité que je n'ai pas retrouvé sur tous les BASIC Microsoft, mais qui existe en tout cas sur le VG5000 pour les instructions GOTO et GOSUB).

Le "tokeniser" ne fait pas de vérification de syntaxe. Il encode très bêtement. Il ne fait même pas de vérification de contexte. Si on tape 30 ABSENT, en mémoire, on a : C5 4E 54, soit le token de ABS() suivi de ENT. Bien entendu, une fois que l'interpréteur est lancé, tout ça se passe très mal :) Car lui, vérifie.

Et effectivement, les tokens sont des index dans la table qui se trouve en $2000 (seuls le 7 bits faibles comptent)
OlivierV
Messages : 16
Inscription : 26 oct. 2020 14:09
Localisation : Hérault

Re: [VG5000] Utilitaire PC pour créer des cassettes

Message par OlivierV »

Du coup, il doit y avoir moyen d'ajouter une option "BASIC input" à mkk7!

Markerror: est-ce que tu pourrais me fournir un exemple de listing, stp?

Autre question: certains préféreraient-ils avoir un utilitaire Windows?
Markerror
Messages : 1973
Inscription : 31 oct. 2011 19:21
Localisation : Orléans
Contact :

Re: [VG5000] Utilitaire PC pour créer des cassettes

Message par Markerror »

Bonjour,

Les fichiers texte contenant du Basic VG 5000, il y en a dans un bon paquet de homebrew sortis sur la machine. On a aussi tapé ou archivé les listings de la majorité des livres édités sur la machine. Après, pour être exhaustif, il faudrait aussi un listing contenant l'intégralité des commandes Basic, y compris celles non utilisées mais connues dans l'interpréteur (Fred72 s'en sert par exemple dans Le manoir du Dr Genius).

Quelques exemples :

http://vg5000bazar.free.fr/zip/games/island_vg5000.zip (un long listing pour une machine 32ko)
http://vg5000bazar.free.fr/zip/games/machaon_vg5000.zip

http://vg5000bazar.free.fr/zip/listings ... hilips.zip

Une interface Windows, pourquoi pas, mais ce n'est pas une fin en soit. Après, avoir le programme compilé quelque part, là, je suis pour :-) Github, c'est bien, mais pour tester un programme rapidement, rien ne vaut un archive avec l'exécutable.
Xavier_

Re: [VG5000] Utilitaire PC pour créer des cassettes

Message par Xavier_ »

Salut,

Dans ma série des "Tokens"... "ZxToken", "CpcToken", "DragonToken", "Trs80Token", "HectorToken", "OricToken", "Pc1500Token" ou "X07Token"...

Pas de "TO7", ni de "VG5K" ... "...Token".

Pour la simple et bonne raison que la solution "Dc" (DcVg5000 et DcMoto), était rapide, fiable et plus pratique pour le débogage.
Avec une possibilité rapide de sortir un listing ASCII en fichier imprimante.
Ajout de lignes à la volée...

Donc, pas de "VG5KToken" ou "ToToken", même si ces deux projets ont été partiellement créés, ils ne me semblaient ni justifiés, ni pertinents.

Un tel logiciel est justifié si les émulateurs ne prennent pas, ou très mal les caractères Ascii clavier ce qui n'est pas la cas de ces deux émulateurs.
Dernière modification par Xavier_ le 01 nov. 2021 09:19, modifié 1 fois.
Xavier_

Re: [VG5000] Utilitaire PC pour créer des cassettes

Message par Xavier_ »

Version du code Windows32: (binaire et sources)
mkk7-master.zip
(49.92 Kio) Téléchargé 58 fois
Ce code encapsule un fichier binaire ou texte (brute) dans une structure de fichier K7.

Il faut donc assembler ou posséder un fichier Basic Microsoft compilé pour les exécuter.

Cf le Read.me inclus dans le fichier zippé. (© Olivier V.)
OlivierV
Messages : 16
Inscription : 26 oct. 2020 14:09
Localisation : Hérault

Re: [VG5000] Utilitaire PC pour créer des cassettes

Message par OlivierV »

Merci pour la version Windows :D

Je précise juste que cet utilitaire prend du binaire Z80 et sort un fichier K7 qui boot directement quand on charge celle-ci. Je ne sais pas exactement ce que signifie "fichier texte brut" (ça me plairait d'avoir fait qqchose sans m'en rendre compte, mais j'en doute)

Pour la question du chargement rapide d'un listing, avec tous les éléments données ici, j'ai l'impression que la solution K7 n'apporterait pas grand chose.

Y a-t-il une fonctionnalité "avance rapide" dans dcvg5000?
Daniel
Messages : 15449
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [VG5000] Utilitaire PC pour créer des cassettes

Message par Daniel »

OlivierV a écrit : 01 nov. 2021 10:34 Y a-t-il une fonctionnalité "avance rapide" dans dcvg5000?
Oui : "Avance" dans Outils/Magnétophone.

dcvg5k.png
dcvg5k.png (84.12 Kio) Consulté 2964 fois
Daniel
L'obstacle augmente mon ardeur.
Markerror
Messages : 1973
Inscription : 31 oct. 2011 19:21
Localisation : Orléans
Contact :

Re: [VG5000] Utilitaire PC pour créer des cassettes

Message par Markerror »

Importer dans DcVg5k un long listing Basic avec la fonction "Simuler le clavier" prend pas mal de temps (quelques minutes pour un gros fichier). Il faut ensuite sauvegarder le fichier.

Un petit outil qui lit un fichier texte et l'encode directement en fichier Basic au format .K7 est pour moi utile, même si jusqu'à maintenant, on a réussi à vivre sans.
OlivierV
Messages : 16
Inscription : 26 oct. 2020 14:09
Localisation : Hérault

Re: [VG5000] Utilitaire PC pour créer des cassettes

Message par OlivierV »

Daniel a écrit : 01 nov. 2021 11:11
OlivierV a écrit : 01 nov. 2021 10:34 Y a-t-il une fonctionnalité "avance rapide" dans dcvg5000?
Oui : "Avance" dans Outils/Magnétophone.
Je n'ai pas accès au code dans l'immédiat, mais je suppose que cette fonction exécute l'émulateur en n'attendant plus là sortie son. Il serait possible (peut-être est-ce déjà le cas) d'entrer dans ce mode lorsqu'on simule l'entrée d'un listing au clavier ?
Daniel
Messages : 15449
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [VG5000] Utilitaire PC pour créer des cassettes

Message par Daniel »

Avance rapide est la fonction permettant de dérouler rapidement la cassette pour positionner l'index plus loin. Aucun rapport avec la vitesse de simulation du clavier.

La simulation du clavier par un fichier est lente car le système interprète chaque caractère. Il faut un certain nombre de cycles du processeur. On peut aller un peu plus vite en augmentant la fréquence du processeur dans les options, mais le gain de temps n'est pas énorme. La lenteur est due aux traitements effectués par le VG5000. La même fonction sur Thomson va entre 5 et 10 fois plus vite.

Quand j'ai programmé la simulation du clavier, j'ai essayé d'envoyer les données à une fréquence plus élevée, mais il y avait alors des pertes de caractères. Je suis revenu en arrière en prenant une petite marge de sécurité.
Daniel
L'obstacle augmente mon ardeur.
Répondre