Skip to content

jeromelesaux/dsk

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

256 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

dsk — Bibliothèque Go pour images DSK / HFE / SNA

Ce projet fournit une bibliothèque et un outil en ligne de commande pour manipuler des images de disquettes (DSK/EDSK), des images HFE (GoPlay V4 HxC), des snapshots SNA et des fichiers CPR (cartouches). Le code inclut des utilitaires pour travailler avec les en-têtes AMSDOS et les formats CPC (lecture/écriture, import/export, conversion).

Fonctionnalités principales

  • Lecture et écriture des images DSK (format simple et étendu - EDSK)
  • Formatage de disquettes virtuelles (personnalisation: pistes, têtes, secteurs, formats vendor/data)
  • Gestion du catalogue AMSDOS : lister, ajouter (put), extraire (get), afficher en hex/ASCII, supprimer des fichiers
  • Import/Export RAW : import/export direct par piste/secteur
  • Support complet des en-têtes AMSDOS (création, détection, extraction d'adresses de chargement/exécution)
  • Lecture / écriture et conversion HFE ↔ DSK (décodage / encodage MFM)
  • Lecture / écriture de snapshots SNA (versions 1, 2, et prise en charge partielle/lecture de la v3)
  • Création et manipulation de fichiers CPR (cartouches) : écriture de banques, ajout de fichiers, patch et offsets
  • Outils de bas niveau pour lire/écrire blocs et pistes, extraire fichiers bruts et construire des pistes MFM
  • CLI complète avec de nombreuses options (formatage, conversion, import/export, analyse, tests automatiques)

Packages et responsabilités

  • dsk/ : lecture/écriture DSK, catalogue, gestion des blocs, import/export de fichiers AMSDOS.
  • hfe/ : lecture HFE, décodage/encodage MFM, conversion HFE→DSK et DSK→HFE.
  • sna/ : lecture/écriture SNA (v1/v2/v3), import dans SNA, extraction de mémoire.
  • cpr/ : création et manipulation de fichiers CPR (cartouches), gestion de banques.
  • amsdos/ : utils pour détecter et manipuler l'en-tête AMSDOS.
  • cli/ : interface en ligne de commande, exemples d'utilisation.

Compilation

Compiler l'exécutable CLI :

go build -o dsk cli/main.go

Vous pouvez aussi exécuter directement depuis le répertoire du projet :

go run ./cli -help

Usage CLI — exemples courants

  • Convertir un HFE en DSK :
./dsk -hfe input.hfe -toDsk output.dsk
  • Convertir un DSK en HFE :
./dsk -dsk input.dsk -tohfe output.hfe
  • Créer une DSK vide (format par défaut) :
./dsk -dsk new.dsk -format
  • Lister le contenu d'une DSK :
./dsk -dsk image.dsk -list
  • Extraire un fichier AMSDOS depuis une DSK :
./dsk -dsk image.dsk -get FICHIER.BIN
  • Insérer un fichier AMSDOS dans une DSK (avec adresse d'exécution/chargement) :
./dsk -dsk image.dsk -put hello.bin -exec "#1000" -load "#0500"
  • Créer un SNA et y importer un fichier AMSDOS :
./dsk -sna out.sna -put hello.bin -snaversion 1 -cpctype 4 -screenmode 1
  • Import RAW (copie directe à partir d'une piste/secteur) :
./dsk -dsk image.dsk -put rawfile.bin -rawimport -track 1 -sector 0
  • Exécuter la suite de tests auto intégrés :
./dsk -autotest
# ou
go test ./...

Pour la liste complète des options, voir le code de l'interface : cli/main.go ou lancer ./dsk -help.

Formats supportés

  • DSK / EDSK : lecture et écriture, formatage, accès aux pistes et secteurs
  • HFE : lecture et écriture (conversion MFM ↔ secteurs)
  • SNA : versions 1, 2 (lecture/écriture), v3 partiellement (lecture des chunks CPC+)
  • CPR : création et modification de cartouches (32 banques)

Exemples d'API (Go)

  • Lire un DSK depuis le code :

  • Voir l'implémentation principale dans dsk/dsk.go.

Tests

Lancer l'ensemble des tests unitaires :

go test ./...

Le binaire CLI contient également une option -autotest qui exécute un ensemble d'auto-tests (voir cli/main.go).

Contribuer

Les contributions sont bienvenues : ouvrir des issues pour signaler des bugs ou proposer des améliorations.

Licence

Voir LICENSE.md pour les informations de licence.

Fichiers utiles

About

dsk lib in Golang

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors