La Place des Développeurs Outils pour lire les secteurs
ericb59
Membre non connecté
Conseiller Municipal
Bonjour,
Je cherche un outils sous MSX-DOS qui pourrait lire et afficher le contenu des secteurs d'une disquette.
Est-ce que cela existe ?
Je cherche un outils sous MSX-DOS qui pourrait lire et afficher le contenu des secteurs d'une disquette.
Est-ce que cela existe ?
Visiteurs
Vagabond
Message : 0
ericb59 :
Je cherche un outils sous MSX-DOS qui pourrait lire et afficher le contenu des secteurs d'une disquette.
Bientôt disponible avec Fusion-C
Je viens d'ajouter les fonctions SetDiskTA(buffer_pointer) et GetDiskSector(int sector_number, unsigned char drive, unsigned char nb_sectors_to_read);
1) SetDiskTA indique où placer les données lues
2) GetDiskSector lit les données depuis un secteur de départ, pour le lecteur donné et pour le nombre de secteurs voulus.
Edité par Visiteurs Le 27/03/2019 à 17h20
ericb59
Membre non connecté
Conseiller Municipal
sylvain :
Bientôt possible avec Fusion-C !
Bientôt disponible avec Fusion-C
Je viens d'ajouter les fonctions SetDiskTA(buffer_pointer) et GetDiskSector(int sector_number, unsigned char drive, unsigned char nb_sectors_to_read);
1) SetDiskTA indique où placer les données lues
2) GetDiskSector lit les données depuis un secteur de départ, pour le lecteur donné et pour le nombre de secteurs voulus.
ericb59 :
Je cherche un outils sous MSX-DOS qui pourrait lire et afficher le contenu des secteurs d'une disquette.
Bientôt disponible avec Fusion-C
Je viens d'ajouter les fonctions SetDiskTA(buffer_pointer) et GetDiskSector(int sector_number, unsigned char drive, unsigned char nb_sectors_to_read);
1) SetDiskTA indique où placer les données lues
2) GetDiskSector lit les données depuis un secteur de départ, pour le lecteur donné et pour le nombre de secteurs voulus.
M'enfin ! Je les ai déjà faites, c'était pour vérifier que mes fonctions étaient bonnes que je voulais un autre logiciel !
ericb59
Membre non connecté
Conseiller Municipal
J'ai aussi fait la fonctions : GET DISK PARAMETERS
Par contre j'aimerai savoir si les données sorties sont bonnes ....
Sur un floppy disk sous opeMSX J'obtiens ces données là :
Par contre j'aimerai savoir si les données sorties sont bonnes ....
Sur un floppy disk sous opeMSX J'obtiens ces données là :
Visiteurs
Vagabond
Message : 0
ericb59 :
M'enfin ! Je les ai déjà faites, c'était pour vérifier que mes fonctions étaient bonnes que je voulais un autre logiciel !
Ha, ben comme c'était facile et que j'avais 5mn j'ai voulu voir si ça fonctionnait
Bon alors la prochaine fois, j'attends un peu avant de démarrer au quart de tour...
ericb59
Membre non connecté
Conseiller Municipal
sylvain :
Ha, ben comme c'était facile et que j'avais 5mn j'ai voulu voir si ça fonctionnait
Bon alors la prochaine fois, j'attends un peu avant de démarrer au quart de tour...
ericb59 :
M'enfin ! Je les ai déjà faites, c'était pour vérifier que mes fonctions étaient bonnes que je voulais un autre logiciel !
Ha, ben comme c'était facile et que j'avais 5mn j'ai voulu voir si ça fonctionnait
Bon alors la prochaine fois, j'attends un peu avant de démarrer au quart de tour...
5 minutes ! Pfff... J'y ai passé la matinée ! Mais oui je confirme c'est facile en fait
Pour Disk Info c'est plus compliqué par contre, j'ai utilisé une structure pour stocker les données retournées.
Ca te semble bon comme ça ?
Code C :
Edité par
ericb59
Le 27/03/2019 à 18h21
#include "fusion-c/header/msx_fusion.h" #include <string.h> #include <stdio.h> typedef struct { char DriveN; int SectorSize; char SectorPerCluster; int NumberReservedSector; char NumberFatCopy; int NumberRootDirEntries; int TotalLogicalSectors; char MediaDescriptionByte; char NumberSectorsPerFat; int FirstRootSectorNumber; int FirstDataSectorNumber; int MaximumCluster; char DirtyFlag; char VolumeId[5]; char Reserved[9]; } DSKINFO; DSKINFO info; void getit(DSKINFO *info) __naked { __asm push ix ld ix,#0 add ix,sp ld e,4(ix) ld d,5(ix) ld l,#0 ld c,#0x31 call #5 pop ix ret __endasm; } void GetDiskParam(void) { int i; getit(&info); printf("\n\r DriveN : %d",info.DriveN); printf("\n\r SectorSize : %d",info.SectorSize); printf("\n\r SectorPerCluster : %d",info.SectorPerCluster); printf("\n\r ReservedSector : %d",info.NumberReservedSector); printf("\n\r NumberFatCopy : %d",info.NumberFatCopy); printf("\n\r NumberRootDirEntries : %d",info.NumberRootDirEntries); printf("\n\r TotalLogicalSectors : %d",info.TotalLogicalSectors); printf("\n\r MediaDescriptionByte : %d",info.MediaDescriptionByte); printf("\n\r NumberSectorsPerFat : %d",info.NumberSectorsPerFat); printf("\n\r FirstRootSectorNumber : %d",info.FirstRootSectorNumber); printf("\n\r FirstDataSectorNumber : %d",info.FirstDataSectorNumber); printf("\n\r MaximumCluster : %d",info.MaximumCluster); printf("\n\r DirtyFlag : %d",info.DirtyFlag); printf("\n\r VolumeId : %x",info.VolumeId); printf("\n\r Reserved : %x",info.Reserved); } void main(void) { int i; GetDiskParam(); Exit(0); }
Visiteurs
Vagabond
Message : 0
Oui Eric, ça me parait très bien . Et les données affichées dans ta copie d'écran me paraissent correctes. Peut-être que pour l'affichage de volumeID sur 5 octets ce n'est pas tout à fait ça.
Il faudrait comparer avec un outil d'info disque, peut-être que Igal connait ça, même si l'outil n'est pas sous DOS...
Il faudrait comparer avec un outil d'info disque, peut-être que Igal connait ça, même si l'outil n'est pas sous DOS...
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie