THOMSON MO6 BASIC

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

Modérateurs : Papy.G, fneck, Carl

dinoprodest
Messages : 312
Inscription : 01 févr. 2020 20:31
Localisation : Rome - Italy

THOMSON MO6 BASIC

Message par dinoprodest »

joint un outil pour convertir les fichiers K7 BASIC enregistrés au format ascii en fichiers txt
Pièces jointes
k72asc.zip
(45.96 Kio) Téléchargé 111 fois
Daniel
Messages : 17408
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: THOMSON MO6 BASIC

Message par Daniel »

J'ai essayé avec un petit programme BASIC, après l'avoir enregistré dans un fichier .k7 par SAVE"TEST",A
La conversion n'a pas marché pour la ligne 20, je ne dois pas savoir utiliser le programme.

##.png
##.png (963 octets) Consulté 3887 fois

Résultat :

test.png
test.png (12.63 Kio) Consulté 3886 fois
Daniel
L'obstacle augmente mon ardeur.
dinoprodest
Messages : 312
Inscription : 01 févr. 2020 20:31
Localisation : Rome - Italy

Re: THOMSON MO6 BASIC

Message par dinoprodest »

merci Daniel de l'avoir essayé. Dans la ligne 20, il existe des combinaisons de clés ACC vraies? Je vais essayer de corriger le bug. :D
Ythunder
Messages : 934
Inscription : 21 août 2019 10:12

Re: THOMSON MO6 BASIC

Message par Ythunder »

Les accents c'est la chianlit il me semble...
Bah pour taper par contre du code sans le faire sur le vrai clavier Thomson, c'est bien non ? (Et donc y a pas d'accents sur les instructions)
Daniel
Messages : 17408
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: THOMSON MO6 BASIC

Message par Daniel »

En BASIC Thomson les lettres accentuées sont codées avec une séquence de trois caractères, dite séquence d'accent.
Il faut en tenir compte dans les conversions au format ASCII, aussi bien dans le sens Thomson vers ASCII qu'ASCII vers Thomson.

Voici un extrait des sources de dcmoto pour la conversion dans le sens ASCII --> Thomson

Code : Tout sélectionner

// Conversion des carateres accentues//////////////////////////////////////////
void Accents(char c)
{
 switch(c & 0xff)
 {
  case 0xe0: keybtext[keybindex++] = 0x16; //à
             keybtext[keybindex++] = 0x41;
             keybtext[keybindex++] = 0x61;
             break;
  case 0xe2: keybtext[keybindex++] = 0x16; //â
             keybtext[keybindex++] = 0x43;
             keybtext[keybindex++] = 0x61;
             break;
  case 0xe7: keybtext[keybindex++] = 0x16; //ç
             keybtext[keybindex++] = 0x4b;
             keybtext[keybindex++] = 0x63;
             break;
  case 0xe8: keybtext[keybindex++] = 0x16; //è
             keybtext[keybindex++] = 0x41;
             keybtext[keybindex++] = 0x65;
             break;
  case 0xe9: keybtext[keybindex++] = 0x16; //é
             keybtext[keybindex++] = 0x42;
             keybtext[keybindex++] = 0x65;
             break;
  case 0xea: keybtext[keybindex++] = 0x16; //ê
             keybtext[keybindex++] = 0x43;
             keybtext[keybindex++] = 0x65;
             break;
  case 0xeb: keybtext[keybindex++] = 0x16; //ë
             keybtext[keybindex++] = 0x48;
             keybtext[keybindex++] = 0x65;
             break;
  case 0xee: keybtext[keybindex++] = 0x16; //î
             keybtext[keybindex++] = 0x43;
             keybtext[keybindex++] = 0x69;
             break;
  case 0xef: keybtext[keybindex++] = 0x16; //ï
             keybtext[keybindex++] = 0x48;
             keybtext[keybindex++] = 0x69;
             break;
  case 0xf4: keybtext[keybindex++] = 0x16; //ô
             keybtext[keybindex++] = 0x43;
             keybtext[keybindex++] = 0x6f;
             break;
  case 0xf6: keybtext[keybindex++] = 0x16; //ö
             keybtext[keybindex++] = 0x48;
             keybtext[keybindex++] = 0x6f;
             break;
  case 0xf9: keybtext[keybindex++] = 0x16; //ù
             keybtext[keybindex++] = 0x41;
             keybtext[keybindex++] = 0x75;
             break;
  case 0xfb: keybtext[keybindex++] = 0x16; //û
             keybtext[keybindex++] = 0x43;
             keybtext[keybindex++] = 0x75;
             break;
  case 0xfc: keybtext[keybindex++] = 0x16; //ü
             keybtext[keybindex++] = 0x48;
             keybtext[keybindex++] = 0x75;
             break;
  default:   keybtext[keybindex++] = c;
 }
}
Daniel
L'obstacle augmente mon ardeur.
dinoprodest
Messages : 312
Inscription : 01 févr. 2020 20:31
Localisation : Rome - Italy

Re: THOMSON MO6 BASIC

Message par dinoprodest »

Merci beaucoup Daniel je vais l'implémenter immédiatement :D
dinoprodest
Messages : 312
Inscription : 01 févr. 2020 20:31
Localisation : Rome - Italy

Re: THOMSON MO6 BASIC

Message par dinoprodest »

https://github.com/dinoflorenzi/PC128OP ... ster/tools

dans le lien ci-dessus le bon programme avec les indications de Daniel :D
Daniel
Messages : 17408
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: THOMSON MO6 BASIC

Message par Daniel »

Les caractères accentués sont bien convertis 8)
On peut noter que tous les caractères "carriage return" ($0D) sont doublés, et que la séquence CR-CR-LF est insérée au début du fichier. En pratique ce n'est pas très gênant, le fichier texte en sortie contient une ligne vierge avant chaque ligne utile.

output.png
output.png (12.58 Kio) Consulté 3796 fois

Code : Tout sélectionner



10 REM !"#$%&'()

20 REM éèùçà

Daniel
L'obstacle augmente mon ardeur.
dinoprodest
Messages : 312
Inscription : 01 févr. 2020 20:31
Localisation : Rome - Italy

Re: THOMSON MO6 BASIC

Message par dinoprodest »

putain, je ne fais pas un bon :(
dinoprodest
Messages : 312
Inscription : 01 févr. 2020 20:31
Localisation : Rome - Italy

Re: THOMSON MO6 BASIC

Message par dinoprodest »

Daniel, vous pouvez publier le fichier K7 que vous avez utilisé pour le test. Je ne peux pas comprendre ce qui ne va pas.
Daniel
Messages : 17408
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: THOMSON MO6 BASIC

Message par Daniel »

test-k7.zip
(233 octets) Téléchargé 102 fois

Code : Tout sélectionner

Offset      0  1  2  3  4  5  6  7   8  9  A  B  C  D  E  F

00000000   01 01 01 01 01 01 01 01  01 01 01 01 01 01 01 01                   
00000010   3C 5A 00 10 54 45 53 54  20 20 20 20 42 41 53 00   <Z  TEST    BAS 
00000020   FF FF 6C 01 01 01 01 01  01 01 01 01 01 01 01 01   ÿÿl             
00000030   01 01 01 3C 5A 01 2B 0D  31 30 20 52 45 4D 20 21      <Z + 10 REM !
00000040   22 23 24 25 26 27 28 29  0D 32 30 20 52 45 4D 20   "#$%&'() 20 REM 
00000050   16 42 65 16 41 65 16 41  75 16 4B 63 16 41 61 0D    Be Ae Au Kc Aa 
00000060   C0 01 01 01 01 01 01 01  01 01 01 01 01 01 01 01   À               
00000070   01 3C 5A FF 02 00 02 00                             <Zÿ    
Daniel
L'obstacle augmente mon ardeur.
dinoprodest
Messages : 312
Inscription : 01 févr. 2020 20:31
Localisation : Rome - Italy

Re: THOMSON MO6 BASIC

Message par dinoprodest »

quelle chose étrange, seul l'exécutable Windows le fait, sur Ubuntu et sur Android il ne fait pas ce défaut.
dinoprodest
Messages : 312
Inscription : 01 févr. 2020 20:31
Localisation : Rome - Italy

Re: THOMSON MO6 BASIC

Message par dinoprodest »

j'ai peut-être résolu que je devais ouvrir le fichier en mode "wb" au lieu de "w". Windows l'associe à un fichier texte et automatiquement lorsqu'il écrit 0x0a il écrit 0x0d
__sam__
Messages : 7964
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: THOMSON MO6 BASIC

Message par __sam__ »

Ca semble être un bon indice en effet. Ouvre le fichier en tant que binaire pour que windows ne change pas le contenu lu.
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
dinoprodest
Messages : 312
Inscription : 01 févr. 2020 20:31
Localisation : Rome - Italy

Re: THOMSON MO6 BASIC

Message par dinoprodest »

problème résolu, fichier mis à jour sur gihub
Répondre