Skip to content
Snippets Groups Projects
Commit b18dbfdf authored by Thierno souleymane Bah's avatar Thierno souleymane Bah
Browse files

feat(dvol programm done, we can now list all volumes)

parent 3a2d1bdb
Branches
Tags
No related merge requests found
...@@ -13,7 +13,7 @@ LIBS = -L$(LIBDIR) -lhardware ...@@ -13,7 +13,7 @@ LIBS = -L$(LIBDIR) -lhardware
###------------------------------ ###------------------------------
### Main targets ### Main targets
###------------------------------------------------------------ ###------------------------------------------------------------
BINARIES= mkhd display_sector format_sector write_sector mkvol BINARIES= mkhd display_sector format_sector write_sector mkvol dvol
all: $(BINARIES) $(OBJECTS) all: $(BINARIES) $(OBJECTS)
...@@ -32,6 +32,7 @@ display_sector: display_sector.o drive.o ...@@ -32,6 +32,7 @@ display_sector: display_sector.o drive.o
format_sector: format_sector.o drive.o format_sector: format_sector.o drive.o
write_sector: write_sector.o drive.o write_sector: write_sector.o drive.o
mkvol: mkvol.o vol.o drive.o mkvol: mkvol.o vol.o drive.o
dvol: dvol.o vol.o drive.o
###------------------------------ ###------------------------------
### Misc. ### Misc.
......
...@@ -68,6 +68,15 @@ void read_sector(unsigned char *buf, int cylinder, int sector) ...@@ -68,6 +68,15 @@ void read_sector(unsigned char *buf, int cylinder, int sector)
buf[i] = MASTERBUFFER[i]; buf[i] = MASTERBUFFER[i];
} }
void read_sector_n(unsigned char *buf, int cylinder, int sector, int size)
{
int i;
unsigned char buffer[HDA_SECTORSIZE];
read_sector(buffer, cylinder, sector);
for (i = 0; i < size; i++)
buf[i] = buffer[i];
}
void write_sector(unsigned int cylinder, unsigned int sector, unsigned char *buf) void write_sector(unsigned int cylinder, unsigned int sector, unsigned char *buf)
{ {
int i; int i;
......
...@@ -16,6 +16,7 @@ void dump(unsigned char *buffer, ...@@ -16,6 +16,7 @@ void dump(unsigned char *buffer,
int octal_dump); int octal_dump);
void seek(int cylinder, int sec); void seek(int cylinder, int sec);
void read_sector(unsigned char *buf, int cylinder, int sector); void read_sector(unsigned char *buf, int cylinder, int sector);
void read_sector_n(unsigned char *buf, int cylinder, int sector, int size);
void write_sector(unsigned int cylinder, unsigned int sector, unsigned char *buf); void write_sector(unsigned int cylinder, unsigned int sector, unsigned char *buf);
void format_sector(unsigned int cylinder, void format_sector(unsigned int cylinder,
unsigned int sector, unsigned int sector,
......
#include <stdio.h>
#include <stdlib.h>
#include "hardware.h"
#include "vol.h"
void display_vol()
{
int vol;
char *vtype_names[3] = {"BASE", "ANNEXE", "OTHER"};
vol_t volume;
if (mbr.nb_vols == 0)
{
printf("Il n'y aucun volume.\n");
return;
}
printf("--------------------------\n");
for (vol = 0; vol < mbr.nb_vols; vol++)
{
volume = mbr.vols[vol];
printf("Volume: %d (%s)\n", vol, vtype_names[volume.type]);
printf("> Sector: %d \n", volume.sector);
printf("> Cylinder: %d \n", volume.cylinder);
printf("> Nb blocs: %d \n", volume.nb_blocs);
printf("--------------------------\n");
}
}
static void
empty_it()
{
return;
}
int main(int argc, char const *argv[])
{
unsigned int i;
/* init hardware */
if (init_hardware("hwconfig.ini") == 0)
{
fprintf(stderr, "Error in hardware initialization\n");
exit(EXIT_FAILURE);
}
/* Interreupt handlers */
for (i = 0; i < 16; i++)
IRQVECTOR[i] = empty_it;
/* Allows all IT */
_mask(1);
load_mbr();
display_vol();
/* and exit! */
exit(EXIT_SUCCESS);
}
...@@ -91,12 +91,3 @@ void format_vol(unsigned int vol) ...@@ -91,12 +91,3 @@ void format_vol(unsigned int vol)
format_sector(sector_cylinder[1], sector_cylinder[1], FMT_SIZE, FMT_DATA); format_sector(sector_cylinder[1], sector_cylinder[1], FMT_SIZE, FMT_DATA);
} }
} }
void read_sector_n(unsigned char *buf, int cylinder, int sector, int size)
{
int i;
unsigned char buffer[HDA_SECTORSIZE];
read_sector(buffer, cylinder, sector);
for (i = 0; i < size; i++)
buf[i] = buffer[i];
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment