Logicielsmoto.com

Nous sommes le 29 Mar 2024, 00:12

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 10 messages ] 
Auteur Message
 Sujet du message: ZX0 compressor
MessagePosté: 18 Juil 2021, 16:00 
Hors ligne

Inscription: 21 Avr 2019, 21:48
Messages: 433
Localisation: Var
Connaissez vous ZX0 ? c'est sorti en début d'année.

Ratio de compression équivalent à Exomizer, mais 5x plus rapide à la décompression :eek:

Pour compresser :
https://github.com/einar-saukas/ZX0

La routine de décompression pour 6809 :
https://github.com/dougmasten/zx0-6x09

Comparaison ratio/rate :
https://www.cpcwiki.eu/forum/programmin ... #msg197727


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: ZX0 compressor
MessagePosté: 18 Juil 2021, 16:13 
Hors ligne

Inscription: 12 Fév 2021, 15:54
Messages: 78
Localisation: Rennes
TOP

_________________
Fan de Atari 2600, Thomson MO5, Thomson TO8, Atari STE.
Retro-Codeur à mes heures perdues. https://www.fxjavadevblog.fr


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: ZX0 compressor
MessagePosté: 22 Juil 2021, 22:41 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1802
Localisation: Brest
:voyons: J'ai regardé le code ASM 6309, et ok je laisse tomber le 6809 (trop nul ce CPU! :non: ). Le code 6309 est plus rapide, plus compact, et moins bidouillesque (pas de code auto-modifié, même dans sa version turbo).

Je pense à un truc: tous ces algos de décompression extraient des bits depuis un buffer totalement en mémoire. Or à la fois le lecteur de K7 et le lecteur de D7 et même SDDrive/SDMoto sont en fait des périphériques dont le contrôleur nous fournit les bits 1 à 1. Imaginez si on faisait un loader disk qui décompresse les bits fournit directement par la diskette ?!?? Ca nous ferait des diskettes de 1Mo facile (une fois décompressées.)

_________________
Good morning, that's a nice Tnetennba


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: ZX0 compressor
MessagePosté: 22 Juil 2021, 23:32 
Hors ligne

Inscription: 06 Avr 2010, 01:59
Messages: 478
ah oui, du coup on pourrait par exemple faire tenir beaucoup plus de niveau de jeu sur une seule disquette !

_________________
Image


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: ZX0 compressor
MessagePosté: 23 Juil 2021, 06:42 
Hors ligne

Inscription: 21 Avr 2019, 21:48
Messages: 433
Localisation: Var
Ah oui super idée, ça doit être très intéressant a faire en plus !
Il faudrait donc reprendre le code de lecture disquette des routines moniteur et y ajouter une décompression a la volée les données lues.
Par contre les paramètres d'entrée seraient différents car la lecture disquette se fait actuellement par secteur de 256 octets et ce n'est pas assez gros pour une compression efficace j'imagine.
La routine commencerait à lire à l'endroit indiqué (comme ce qui est fait actuellement par la routine moniteur), mais continuerai à lire les secteurs jusqu'à rencontrer la balise de fin des données compressées. Il faudrait donc un paramètre supplémentaire d'entrelacement.

Du coup avec ton idée on n'a plus besoin de recopier préalablement toutes les données dans un buffer en mémoire avant de décompresser.
C'est excellent !

Qui se lance dans l'aventure ???
ZX0 serait utilisable dans cette configuration ?

Remarque :
Pour le SDDRIVE il y a un moyen de "changer les disquettes" rapidement depuis le 6809 sans repasser par le menu avec ce code de Daniel:
https://forum.system-cfg.com/viewtopic.php?f=25&t=9508&start=108
=> C'est rapide et on a donc accès à une grande quantité de données de manière rapide (Je ne sais pas quelle est la taille des données max ... mais c'est certainement très grand).


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: ZX0 compressor
MessagePosté: 28 Juil 2021, 09:09 
Hors ligne

Inscription: 06 Juin 2004, 08:23
Messages: 464
C'est effectivement une idée qui m'avait traversé la tête dès que j'ai commencé à développer le code 6809 d'Exomizer. Mais ce n'est pas tout simple. Les bits arrivent à cadence fixe, alors que la décompression elle prend un temps variable, qui ne tient pas nécessairement dans le temps disponible entre l'arrivée des bits.

Ce qui ne signifie pas que c'est impossible. Une solution "naïve" au problème pourrait par exemple consister à avoir un buffer mémoire de la taille de deux secteurs disque ou de deux blocs cassette et arrêter le moteur entre les blocs pendant la décompression. On pourrait même imaginer d'utiliser un codage cassette à temporalité variable, de manière à ce que l'enregistrement soit synchronisé avec le temps nécessaire à la décompression. Ceci éviterait de devoir arrêter/redémarrer sans cesse le moteur, ce qui en soit prend facilement 1-2 secondes.

Sur MO, on pourrait faire encore mieux et changer complètement l'encodage magnétique. En fait, on pourrait le faire aussi sur TO, mais en utilisant un lep MO. Il y a longtemps que je me demande si remplacer le MFM par du RLL 2,7 par exemple ne permettrait pas de gagner en densité (théoriquement, la réponse est oui).

Bref, il y a bien un moyen de faire un turbo-lep.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: ZX0 compressor
MessagePosté: 13 Aoû 2021, 09:27 
Hors ligne

Inscription: 21 Avr 2019, 21:48
Messages: 433
Localisation: Var
Jouer sur la temporalité (sauter des données sur le média si j’ai bien compris) est une solution pour se laisser le temps de jouer l’algo de décompression… mais du coup on perd de l’espace de stockage, ce qui va a l’encontre de l’objectif initial (gagner de l’espace avec la compression).

Sur TO8(D) il existe combien de contrôleurs disquette différents ?
J’ai trouvé dans le sdk vital un fichier texte avec la rom moniteur désassemblée et qq commentaires sur la partie utilisation disquette, ainsi que des infos sur thmfc1 sur le site de pulkomandy. Vous avez de la doc plus détaillée sous la main ?

Une piste peut être :
decomposer l’algo de décompression en effectuant l’écriture des données non compressées dans l’emplacement mémoire de destination au moment de la lecture du média et en laissant des espaces vides qui seront comblés par la suite lorsque l’algo de décompression terminera le travail en effectuant des copies de données à l’aide d’offsets.
Les données pour cette seconde partie seraient copiées dans un buffer … on ne peut pas faire autrement.
Bon pour faire ça il faut une organisation des données particulière et rien ne dit qu’on garde un bon ratio de compression.

Sur ces sujets de contrôleur et compression je n’ai pas d’expérience vous en savez plus que moi !
En tout cas c’est loin d’être trivial


Dernière édition par Bentoc le 13 Aoû 2021, 11:10, édité 1 fois.

Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: ZX0 compressor
MessagePosté: 13 Aoû 2021, 10:33 
Hors ligne
M. DCMOTO

Inscription: 06 Juin 2004, 08:23
Messages: 681
Localisation: Provence (France)
Utiliser la compression pour compenser la lenteur des périphériques est une bonne idée, mais elle ajoute la charge de décompression au processeur. Dans la plupart des applications la lenteur du 6809 est le principal obstacle à surmonter. Cette bonne idée au départ n'est peut-être pas si bonne en définitive.

Une autre approche est d'inventer des périphériques plus rapides, pour ne pas limiter le débit d'acquisition des données et garder toute la puissance du processeur pour des tâches utiles. On arrive ainsi, par exemple, à jouer sur Thomson de la vidéo en streaming avec une qualité très honorable. Il suffit de lancer les démonstrations de __sam__ avec SDSTREAM pour s'en convaincre.

Ceci dit, l'étude des méthodes de compression reste un bon exercice intellectuel, mais il ne permettra pas de faire aussi bien.

Pour répondre à la question de Bentoc, il existe trois contrôleurs externes de disquettes Thomson, sans compter celui du QDD et ceux intégrés dans les TO9, TO8 et TO9+.
On peut aussi ajouter à la liste les contrôleurs de cartes SD : CS91-280, SDDISK et SDDRIVE.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: ZX0 compressor
MessagePosté: 13 Aoû 2021, 11:49 
Hors ligne

Inscription: 21 Avr 2019, 21:48
Messages: 433
Localisation: Var
Désolé ma question était un peu floue, le controleur CD90-351 est le seul qui permette d’utiliser des dsk 3 1/2 double face / double densité ?
Il contient la puce thmfc1 ?
Ce contrôleur est celui présent dans tous les to8 et to8d ?

Si je réalise des tests sous dcmoto, est-ce qu’il emule les temps d’attente matériel ? (J’imagine qu’on doit faire du polling pour savoir si l’octet est dispo a la lecture depuis la dsk mais je n’ai pas encore regardé le code du moniteur).


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: ZX0 compressor
MessagePosté: 13 Aoû 2021, 14:11 
Hors ligne
M. DCMOTO

Inscription: 06 Juin 2004, 08:23
Messages: 681
Localisation: Provence (France)
Dcmoto n'émule pas le THMFC01. Il ne peut donc pas servir à contrôler les temps d'attente matériel.
Il y a juste une option pour ralentir la lecture des disquettes : "Simuler la vitesse réelle" dans la boîte de dialogue "Supports amovibles". C'est très approximatif et inexploitable.

A noter que le temps d'accès ne dépend pas seulement du contrôleur : il y a des délais mécaniques pour changer de piste et pour trouver le début d'un secteur en fonction de l'entrelacement. Il y a aussi des "retries" pour certaines fonctions, ils peuvent modifier fortement le temps de réalisation de l'opération.


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 10 messages ] 

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 40 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages
Vous ne pouvez pas joindre des fichiers

Rechercher:
Aller à:  
cron
Développé par phpBB® Forum Software © phpBB Group
Traduction par phpBB-fr.com