DCMOTO - Emulateur universel Thomson 8 bits : Forum - Fiches techniques - Lecteur Enregistreur de Programme et cassettes MO5-MO6
Auteur Message
Daniel
Visiteur
Date : 09/02/2005 à 15h21
Structure des fichiers sur cassette

Structure logique des fichiers binaires (images memoire)
====================================

Un fichier binaire est constitue par une suite d'enregistrements.

Ces enregistrements sont de deux types :

1) Enregistrement contenant des donnees
0 type d'enregistrement = 00
1-2 longueur des donnees
3-4 adresse de chargement
5-x donnees

2) Enregistrement contenant l'adresse d'execution
0 type d'enregistrement = FF
1-2 longueur des donnees = 0000
3-4 adresse d'execution

Dans fichier binaire, il peut exister plusieurs enregistrements de type 00.
Il n'existe qu'un seul enregistrement contenant l'adresse d'execution.
C'est le dernier enregistrement du fichier.



Structure logique des fichiers Basic
======================

Un fichier Basic est constitue d'un seul enregistrement
- de code FF pour les programmes non proteges
- de code FE pour les programmes proteges

0 type d'enregistrement FF ou FE
1-2 longueur du programme
3-x programme (crypte si type = FE)



Structure logique des fichiers de donnees
==========================

Un fichier de donnees est constitue de lignes de longueurs
variables. Les lignes sont separees par CR-LF (0D0A).



Structure physique d'un fichier sur cassette
===========================

Pour etre enregistre sur cassette, un fichier logique est decoupe
en blocs. Il y a un bloc d'en-tete, un ou plusieurs blocs contenant
le fichier, un bloc de fin.


- Bloc d'en-tete (type 00)

00 type de bloc = 00
01 longueur du bloc = &h10
02-09 nom du fichier
0A-0C extension (sans le point)
0D type de fichier 00=Basic 01=Data 02=Binaire
0E mode du fichier 00=Binaire FF=Texte
0F identique à l'octet precedent (a verifier)
10 checksum

La checksum est calculee de telle façon que la somme des octets
02 à 10, modulo 256, soit nulle.


- Blocs contenant le fichier (type 01)

00 type de bloc = 01
01 longueur du bloc = xx (attention, &h00 signifie 256)
02-yy contenu du fichier (yy = xx -1)
xx checksum

Normalement tous ces blocs ont une longueur = 00 (256 octets),
sauf le dernier.

La checksum est calculee de telle façon que la somme des octets
02 à xx, modulo 256, soit nulle.


- Bloc de fin (type FF)
00 type de bloc = FF
01 longueur du bloc = 02
02 checksum = 00


En-tete de bloc :
Pour permettre la synchronisation de la lecture, les blocs sont
precedes d'une en-tete composee de 16 octets 01, suivis de deux
octets contenant les caracteres <Z (3C5A).

Espace entre les blocs
Les blocs sont separes sur la bande par un intervalle sans signal,
pour donner le temps au MO5 de les traiter apres les avoir lus.
Selon le type de fichier et le type de bloc, cet intervalle varie
de quelques millisecondes a pres d'une seconde.

Les blocs physiques sont stockés sur la cassette grâce à l'enregistrement MFM




Remarques
=======

1) Toutes ces informations sont donnees sans aucune garantie. Merci de signaler d'eventuelles erreurs au webmaster

2) Elles concernent uniquement les fichiers standard MO5 crees par les commandes Basic. On peut trouver des fichiers MO5 de structure differente. Ils ont ete crees par des routines speciales en langage machine, le plus souvent pour empecher la copie des programmes commerciaux par les debutants.

3) Les techniques de protection les plus courantes consistent a charger un petit programme en langage machine, le loader. Il est contenu dans un fichier binaire normal. Ce loader utilise des routines speciales pour charger le reste du programme, qui n'est pas au format standard et ne peut pas etre lu par les routines d'origine du MO5.

Voici une liste non exhaustive des procedes employes :
- en-tete de bloc non standard
- checksum calculee avec un algorithme different
- longueur du bloc non specifiee
- longueur du bloc superieure a 256 octets
- vitesse d'enregistrement plus rapide que la normale
- etc.

Ces procedes peuvent etre employes simultanement, et de plus les donnees sont parfois cryptees.

On rencontre aussi des protections a deux niveaux : le loader principal est lui-meme protege, et doit etre charge par un loader non protege de deuxieme niveau.

Daniel
en haut - en bas
Daniel
Visiteur
Date : 16/02/2005 à 10h52
Brochage du connecteur DIN

Cliquez sur le lien : Connecteur magnétophone

Daniel
en haut - en bas