Capitolo – 16
Sviluppo di più utilità per i dischi
introduzione
In questo capitolo discuteremo come utilizzare le informazioni di MBR, DBR, FAT e directory principali per sviluppare programmi di utilità che possono aiutarci nella gestione dei dati, nell'ottimizzazione dell'archiviazione o nelle attività di risoluzione dei problemi del disco.
Di solito, questi programmi sono la soluzione a qualche problema specifico. In questo capitolo sono stati discussi alcuni programmi di utilità e la relativa programmazione.
Nascondere le partizioni
In genere, l'utilità per nascondere le partizioni viene utilizzata da quegli utenti che lavorano su tale sistema informatico utilizzato dagli utenti. Se ci sono molti utenti per lo stesso computer, potrebbe esserci una grande possibilità che i dati di un altro utente possano essere letti, rubati o eliminati.
In tal caso, qualora l'utente abbia alcuni dati importanti o alcune informazioni riservate nello stesso computer, potrebbe essere disposto a nascondere la partizione in cui ha i suoi dati in modo tale che la partizione non sia accessibile all'Operatore sistema, in modo che non possa essere raggiunto da altri utenti.
Quando l'utente vuole lavorare sul sistema, può accedere nuovamente alla partizione, semplicemente scoprendo la partizione. Generalmente questi tipi di eventi si svolgono nelle istituzioni professionali, dove i computer sono utilizzati da molti studenti ma gli studenti senior sono sempre preoccupati per i loro dati importanti o il lavoro di progetto. Come per mancanza di conoscenza, il nuovo studente potrebbe danneggiare o addirittura cancellare i propri dati.
Come viene nascosta la partizione
La tabella seguente rappresenta il formato della partizione nella tabella delle partizioni di MBR:
Offset |
Meaning |
Size |
Description |
00H |
Boot Type Indicator Byte |
1 Byte |
If Byte is 00H, the Partition is Inactive and if Byte is 80H, The Partition is Active (or Bootable) |
01H |
Head Number of Beginning of the Partition |
1 Byte |
Starting Head number of the Partition in Hexadecimal System |
02H |
Sector and Cylinder Number of Beginning of the Partition |
2 Bytes |
6 Bits of First Byte make Starting Sector Number and Combination of remaining 2 Bits (as Two Most Significant Bits) plus 8 Bits of another Byte (Rest 8 least Significant Bits of the 10-Bit Number ) make the Starting Cylinder Number of the Partition |
04H |
File System indicator Byte |
1 Byte |
File System Indicator Byte in Hexadecimal system (for complete list of partition indicator bytes, refer the chapter “Logical Approach to Disks and OS” discussed earlier in this book) |
05H |
Head Number of End of the Partition |
1 Byte |
Ending Head Number of the Partition in Hexadecimal System |
06H |
Sector and Cylinder Number of End of the Partition |
2 Bytes |
6 Bits of First Byte make Ending Sector Number and Combination of remaining 2 Bits (as Two Most Significant Bits) plus 8 Bits of another Byte (Rest 8 least Significant Bits of the 10-Bit Number ) make the Ending Cylinder Number of the Partition |
08H |
Absolute Sector number of Beginning of the Partition |
4 Bytes |
Number of Sectors Between the MBR and the First Sector in the Partition |
0CH |
Absolute Sector number of End of the Partition |
4 Bytes |
Number of Sectors in the Partition |
|
|
Total = 16 Bytes |
|
All'offset 04H, in ogni voce di partizione, c'è un byte indicatore del file system. Questo byte indicatore rappresenta il tipo di file system di quella partizione. Se il valore di questo byte viene modificato, viene modificata l'identità della partizione.
Ad esempio, il valore del byte dell'indicatore di partizione per "DOS 12-Bit FAT" è 0x01. Se questo valore viene modificato in 0x11, l'identità del file system nella voce della tabella delle partizioni viene modificata in "Hidden DOS 12-Bit FAT" (per l'elenco completo dei byte degli indicatori di partizione, fare riferimento al capitolo "Approccio logico ai dischi e al sistema operativo" discusso all'inizio di questo libro).
La tabella seguente mostra alcuni altri esempi di byte indicatore del file system per alcuni tipi di partizione:
Partition type indicator Byte |
Description of File System of Partition |
0x01 |
DOS 12–bit FAT |
0x11 |
Hidden DOS 12–bit FAT |
0x04 |
DOS 16–bit FAT (<=32MB) |
0x14 |
Hidden DOS 16–bit FAT (<=32MB) |
0x05 |
DOS Extended |
0x15 |
Hidden DOS Extended |
0x06 |
DOS 16–bit big (> 32MB) |
0x16 |
Hidden DOS 16–bit big (> 32MB) |
0x07 |
NTFS |
0x17 |
Hidden NTFS |
0x0B |
Windows FAT32 |
0x1B |
Hidden Windows FAT32 |
0x0C |
Windows FAT32 (LBA) |
0x1C |
Hidden Windows FAT32 (LBA) |
0x0E |
Windows FAT16 (LBA) |
0x1E |
Hidden Windows FAT16 (LBA) |
0x0F |
Windows Extended |
0x1F |
Hidden Windows Extended |
Qui vediamo che la partizione nascosta corrispondente per qualsiasi file system viene trovata aggiungendo il valore 0x10 al suo byte indicatore di sistema.
Sebbene non sia la regola ferrea per nascondere la partizione, funziona anche per la maggior parte del file system. Il motivo è che quando cambiamo il valore del byte dell'indicatore di partizione, l'identità del file system nella voce della tabella delle partizioni viene modificata. Ed è molto raro che il nuovo file system sia supportato anche dallo stesso sistema operativo.
Programma di scrittura per nascondere la partizione
Il programma fornito di seguito viene utilizzato per nascondere la partizione utilizzando la voce di partizione di quella partizione dalla tabella delle partizioni di MBR. Se desideri nascondere altre partizioni logiche nel volume esteso, devi accedere agli MBR estesi.
La codifica del programma è stata data di seguito:
/* Programma per nascondere la partizione utilizzando la voce della tabella delle partizioni di quella partizione dall'MBR */
#include <bios.h>
#include <stdio.h>
int main(void)
{
struct diskinfo_t dinfo;
int result, tohide;
int i;
static char dbuf[512];/* Data Buffer to read-Write the
Sector information */
clrscr();
dinfo.drive = 0x80; /* drive number for First
Hard Disk */
dinfo.head = 0; /* disk head number */
dinfo.track = 0; /* track number */
dinfo.sector = 1; /* sector number */
dinfo.nsectors = 1; /* sector count */
dinfo.buffer = dbuf; /* data buffer */
/* Leggi il primo settore del disco */
result = _bios_disk(_DISK_READ, &dinfo);
if ((result & 0xff00) == 0)
{
printf("The Partition Codes of Four Partition Entries are,
0x%02x, 0x%02x, 0x%02x And 0x%02x.\n",
dbuf[450] & 0xff, dbuf[466] & 0xff,
dbuf[482] & 0xff, dbuf[498] & 0xff);
textcolor(15);
gotoxy(5,5);cprintf("Partition Entry in MBR is as
follows:");
gotoxy(10,7);cprintf("1. "); showtype(dbuf[450] & 0xff);
gotoxy(10,8);cprintf("2. "); showtype(dbuf[466] & 0xff);
gotoxy(10,9);cprintf("3. "); showtype(dbuf[482] & 0xff);
gotoxy(10,10);cprintf("4. "); showtype(dbuf[498] & 0xff);
/* ottieni l'input utente per nascondere la partizione */
gotoxy(1,15);
printf("Enter The partition no. you want to hide,
Or Press any other key to Exit... ");
tohide=getche();
switch(tohide)
{
case '1': /* Hide First Partition in partition Table */
dbuf[450] = dbuf[450] +16;
result = _bios_disk(_DISK_WRITE, &dinfo);
break;
case '2': /* Hide second Partition in partition Table */
dbuf[466] = dbuf[466]+16;
result = _bios_disk(_DISK_WRITE, &dinfo);
break;
case '3': /* Hide third Partition in partition Table */
dbuf[482] = dbuf[482] +16;
result = _bios_disk(_DISK_WRITE, &dinfo);
break;
case '4': /* Hide Fourth Partition in partition Table */
dbuf[498] = dbuf[498]+16;
result = _bios_disk(_DISK_WRITE, &dinfo);
break;
default:
exit(0);
}
if ((result & 0xff00) == 0)
{
printf("\n\nThe New Partition Codes of Four Partition
Entries are, 0x%02x, 0x%02x, 0x%02x And 0x%02x.\n",
dbuf[450] & 0xff, dbuf[466] & 0xff,
dbuf[482] & 0xff, dbuf[498] & 0xff);
getch();
}
else
{
printf("Cannot Change the Byte, status = 0x%02x\n",
result);
getch();
}
}
return 0;
}
Commenti sulla codifica:
Il programma legge i byte dell'indicatore del file system di tutte e quattro le voci di partizione nella tabella delle partizioni di MBR. La funzione showtype() viene utilizzata per mostrare il nome del file system per il valore corrispondente del byte indicatore del file system.
L'utente seleziona la partizione da nascondere dal menu visualizzato sullo schermo e quindi viene aggiunto 16 (0x10) al valore del byte indicatore del file system di quella partizione per nasconderlo.
La codifica della funzione showtype() è la seguente:
/* Funzione per mostrare il nome del file system corrispondente al valore del byte indicatore del file system */
showtype(i)
{
switch (i)
{
case 0x00 :cprintf("Empty"); break;
case 0x01 :cprintf("DOS 12-bit FAT"); break;
case 0x02 :cprintf("XENIX root"); break;
case 0x03 :cprintf("XENIX usr"); break;
case 0x04 :cprintf("DOS 16-bit <32M"); break;
case 0x05 :cprintf("Extended"); break;
case 0x06 :cprintf("DOS 16-bit >=32M"); break;
case 0x07 :cprintf("OS/2 HPFS"); break;
case 0x08 :cprintf("AIX"); break;
case 0x09 :cprintf("AIX bootable"); break;
case 0xa :cprintf("OS/2 Boot Manag"); break;
case 0xb :cprintf("Win95/98/ME FAT32"); break;
case 0xc :cprintf("Win95/98/ME FAT32 (LBA)"); break;
case 0xd :cprintf("Win95 FAT16"); break;
case 0xe :cprintf("Win95 FAT16 (LBA)"); break;
case 0xf :cprintf("Win95 Extended"); break;
case 0x11 :cprintf("Hidden FAT-12");break;
case 0x12 :cprintf("Compaq Diagnostics");break;
case 0x14 :cprintf("Hidden FAT-16 (<32)");break;
case 0x15 :cprintf("Hidden Extended");break;
case 0x16 :cprintf("Hidden FAT-16");break;
case 0x17 :cprintf("NTFS"); break;
case 0x40 :cprintf("Venix 80286"); break;
case 0x51 :cprintf("Novell?"); break;
case 0x52 :cprintf("Microport"); break;
case 0x63 :cprintf("GNU HURD"); break;
case 0x64 :
case 0x65 :cprintf("Novell Netware"); break;
case 0x75 :cprintf("PC/IX"); break;
case 0x80 :cprintf("Old MINIX"); break;
case 0x81 :cprintf("Linux/MINIX"); break;
case 0x82 :cprintf("Linux swap"); break;
case 0x83 :cprintf("Linux native"); break;
case 0x85 :cprintf("Linux Extended"); break;
case 0x93 :cprintf("Amoeba"); break;
case 0x94 :cprintf("Amoeba BBT"); break;
case 0xa5 :cprintf("BSD/386"); break;
case 0xa6 :cprintf("OpenBSD"); break;
case 0xa7 :cprintf("NEXTSTEP"); break;
case 0xb7 :cprintf("BSDI fs"); break;
case 0xb8 :cprintf("BSDI swap"); break;
case 0xc7 :cprintf("Syrinx"); break;
case 0xdb :cprintf("CP/M"); break;
case 0xe1 :cprintf("DOS access"); break;
case 0xe3 :cprintf("DOS R/O"); break;
case 0xf2 :cprintf("DOS secondary"); break;
case 0xff :cprintf("BBT"); break;
default :cprintf("UNKOWN");
}
return 0;
}
Programma di scrittura per scoprire la partizione
Il programma per mostrare la partizione nascosta funziona esattamente di fronte al programma che nasconde il programma. In questo programma sottraiamo 16 (0x10) dal valore del byte indicatore del file system della partizione nascosta.
La codifica del programma è la seguente:
/* Programma per mostrare la partizione nascosta dal programma precedente */
#include <bios.h>
#include <stdio.h>
int main(void)
{
struct diskinfo_t dinfo;
int result, tohide;
int i;
static char dbuf[512];/* Data buffer */
clrscr();
dinfo.drive = 0x80; /* drive number for
First Hard Disk */
dinfo.head = 0; /* disk head number */
dinfo.track = 0; /* track number */
dinfo.sector = 1; /* sector number */
dinfo.nsectors = 1; /* sector count */
dinfo.buffer = dbuf; /* data buffer */
result = _bios_disk(_DISK_READ, &dinfo);
if ((result & 0xff00) == 0)
{
printf("The Partition Codes of Four Partition
Entries are, 0x%02x, 0x%02x, 0x%02x And 0x%02x.\n",
dbuf[450] & 0xff, dbuf[466] & 0xff,
dbuf[482] & 0xff, dbuf[498] & 0xff);
textcolor(15);
gotoxy(5,5);
cprintf("Partition Entry in MBR is as follows:");
gotoxy(10,7);cprintf("1. "); showtype(dbuf[450] & 0xff);
gotoxy(10,8);cprintf("2. "); showtype(dbuf[466] & 0xff);
gotoxy(10,9);cprintf("3. "); showtype(dbuf[482] & 0xff);
gotoxy(10,10);cprintf("4. "); showtype(dbuf[498] & 0xff);
/* Ottieni l'input Usa per mostrare la partizione */
gotoxy(1,15);printf("Enter The partition no., Which to
unhide, Or Press any other key to
Exit... ");
tohide=getche();
switch(tohide)
{
/* Scopri la prima partizione della tabella delle partizioni */
case '1':
dbuf[450] = dbuf[450] -16;
result = _bios_disk(_DISK_WRITE, &dinfo);
break;
/* Unhide second partition of partition table */
case '2':
dbuf[466] = dbuf[466]-16;
result = _bios_disk(_DISK_WRITE, &dinfo);
break;
/* Unhide third partition of partition table */
case '3':
dbuf[482] = dbuf[482] -16;
result = _bios_disk(_DISK_WRITE, &dinfo);
break;
/* Unhide fourth partition of partition table */
case '4':
dbuf[498] = dbuf[498]-16;
result = _bios_disk(_DISK_WRITE, &dinfo);
break;
default:
exit(0);
}
if ((result & 0xff00) == 0)
{
printf("\n\nThe New Partition Codes of Four Partition
Entries are, 0x%02x, 0x%02x, 0x%02x And 0x%02x.\n",
dbuf[450] & 0xff, dbuf[466] & 0xff,
dbuf[482] & 0xff, dbuf[498] & 0xff);
getch();
}
else
{
printf("Cannot Change the Byte, status = 0x%02x\n",
result);
getch();
}
}
return 0;
}
Commenti sul programma
Fai attenzione mentre dai il numero di partizione da mostrare. Se il numero di partizione viene inserito in modo errato per errore, le informazioni sul file system di quella partizione verranno modificate e la partizione potrebbe diventare inaccessibile. Tuttavia, il programma discusso in precedenza per nascondere le partizioni, può aiutarti a curare il byte indicatore del file system di quella partizione.
Scrittura del programma per eliminare la partizione
Il programma per eliminare la partizione viene utilizzato per la risoluzione dei problemi. Ad esempio, supponiamo di avere le partizioni del file system FAT32 nel disco. Ora hai deciso di installare contemporaneamente il sistema operativo LINUX nel tuo disco.
Se del caso, l'installazione del sistema operativo viene interrotta nel frattempo, nella fase in cui sono state apportate le modifiche alla tabella delle partizioni dell'MBR. In questi casi ci sono molte possibilità che la partizione, in cui stavi per installare l'altro sistema operativo, diventi inaccessibile.
In questo caso lo spazio su disco della partizione persa diventa inutile perché inaccessibile. Tuttavia, se cancelliamo le informazioni sulla partizione di quella partizione dalla tabella delle partizioni in qualsiasi modo, possiamo nuovamente rendere utilizzabile questo spazio usando il comando FDISK di DOS.
Il programma per eliminare la voce della partizione dalla tabella delle partizioni di MBR è stato fornito di seguito:
/* Programma per eliminare la seconda voce di partizione dalla tabella delle partizioni di MBR */
# include <bios.h>
/* structure to read the partition entry from partition table */
struct partition
{
/* Active Partition Byte */
unsigned char bootable ;
/* Starting Head */
unsigned char start_side ;
/* combination of Starting sector and cylinder number */
unsigned int start_sec_cyl ;
/* File system Indicator Byte */
unsigned char parttype ;
/* Ending Head */
unsigned char end_side ;
/* combination of Starting sector and cylinder number */
unsigned int end_sec_cyl ;
/* Relative Sector Number */
unsigned long part_beg ;
/* Partition length in sectors */
unsigned long plen ;
} ;
/* Structure to read-write MBR */
struct part
{
/* IPL (Initial Program Loader) */
unsigned char master_boot[446] ;
/* Partition table */
struct partition pt[4] ;
/* Magic Number */
int lasttwo ;
} ;
struct part p ;
void main()
{
unsigned int t1,t2;
clrscr();
biosdisk ( 2, 0x80, 0, 0, 1, 1, &p ) ;
display(); /* display the information of
Partition table */
getch();
p.pt[1].bootable = 0;
p.pt[1].start_side = 0 ;
p.pt[1].start_sec_cyl = 0 ;
p.pt[1].parttype = 0;
p.pt[1].end_side = 0;
p.pt[1].end_sec_cyl = 0;
p.pt[1].part_beg = 0;
p.pt[1].plen = 0;
printf("\n\n\n After Deleting the Second Partition
Entry From MBR Partition Table,");
printf("\n The Partition Table will Be Changed as
Follows: ");
/* To Delete Second Partition Information from partition
table of MBR Remove the forward slashes from the
biosdisk( ) function. Do not use Carelessly, Partition
information of Second Partition of Partition Table will
be Erased Completely. */
////// biosdisk ( 3, 0x80, 0, 0, 1, 1, &p ) ;
display(); /* Display the information of partition
table after modification */
getch();
}
Commenti sul programma:
Decommenta la funzione biosdisk ( 3, 0x80, 0, 0, 1, 1, &p ) per eliminare la seconda partizione dalla tabella delle partizioni di MBR.
Per eliminare la partizione, tutti i suoi parametri sono impostati a 0 nella voce della tabella delle partizioni in MBR. Ricorda sempre che se elimini la partizione estesa, anche tutte le partizioni logiche di quella partizione estesa diventeranno inaccessibili.
La funzione display( ) viene utilizzata per visualizzare la tabella delle partizioni di MBR. La codifica della funzione è la seguente:
/* Funzione per visualizzare la tabella delle partizioni di MBR */
display()
{
unsigned int s_sec, s_trk, e_sec, e_trk, i, t1, t2 ;
char type[20], boot[5] ;
printf("\n\nPart. Boot Starting location Ending Location
Relative Number of");
printf("\nType Side Cylinder Sector Side Cylinder
Sector Sectors Sectors\n");
for ( i = 0 ; i <= 3 ; i++ )
{
if ( p.pt[i].bootable == 0x80 )
strcpy ( boot, "Yes" ) ;
else
strcpy ( boot, "No" ) ;
switch ( p.pt[i].parttype )
{
case 0x00 :
strcpy ( type, "Unused" ) ; break ;
case 0x1 :
strcpy ( type, "FAT12" ) ; break ;
case 0x2 :
strcpy ( type, "Xenix" ) ; break ;
case 0x3 :
strcpy ( type, "Xenix:usr" ) ; break ;
case 0x4 :
strcpy ( type, "FAT16<32M" ) ; break ;
case 0x5 :
strcpy ( type, "DOS-Ext." ) ; break ;
case 0x6 :
strcpy ( type, "FAT16>32M" ) ; break ;
case 0x7 :
strcpy ( type, "NTFS" ) ; break ;
case 0x0b :
strcpy ( type, "FAT32" ) ; break ;
case 0x0c :
strcpy ( type, "FAT32-LBA" ) ; break ;
case 0x0d :
strcpy ( type, "VFAT16" ) ; break ;
case 0x0e :
strcpy ( type, "VFAT16-LBA" ) ; break ;
case 0x0f :
strcpy ( type, "FAT EXT" ) ; break ;
case 0x17 :
strcpy ( type, "HPFS" ) ; break ;
case 0x81 :
strcpy ( type, "Old LINUX" ) ; break ;
case 0x82 :
strcpy ( type, "LinuxSwap" ) ; break ;
case 0x83 :
strcpy ( type, "LinuxNative" ) ; break ;
case 0x85 :
strcpy ( type, "Linux Ext." ) ; break ;
default :
strcpy ( type, "Unknown" ) ; break ;
}
s_sec = ( p.pt[i].start_sec_cyl & 0x3f ) ;
t1 = ( p.pt[i].start_sec_cyl & 0xff00 ) >> 8 ;
t2 = ( p.pt[i].start_sec_cyl & 0x00c0 ) << 2 ;
s_trk = t1 | t2 ;
e_sec = ( p.pt[i].end_sec_cyl & 0x3f ) ;
t1 = ( p.pt[i].end_sec_cyl & 0xff00 ) >> 8 ;
t2 = ( p.pt[i].end_sec_cyl & 0x00c0 ) << 2 ;
e_trk = t1 | t2 ;
printf ( "\n%6s %3s", type, boot ) ;
printf ( "%4d %6d %8d", p.pt[i].start_side,
s_trk,s_sec ) ;
printf ( "%7d %6u %8u", p.pt[i].end_side, e_trk,
e_sec ) ;
printf ( " %10lu %10lu", p.pt[i].part_beg,
p.pt[i].plen ) ;
}
return 0;
}
Formattazione del floppy "Traccia 0 non valido"
Questo programma viene utilizzato per formattare quei floppy che hanno settori danneggiati sulla traccia 0 e quando sono formattati con DOS o Windows, visualizza messaggi di errore come "Track 0 BAD". Tuttavia puoi anche usarlo per formattare normali floppy.
La codifica del programma è stata data nel dischetto allegato a questo libro con il nome “TTFORMAT.C”. La logica di lavoro del programma è la stessa del programma pubblicato sulla rivista di computer PCQUEST, nell'edizione di febbraio 2003.
In questo programma, proviamo a rendere riutilizzabili questo tipo di floppy formattandoli. Il programma sembra che tu possa gestire il floppy disk anche con alcuni settori danneggiati. Tuttavia, se il primo settore del disco è danneggiato, il floppy non può essere formattato.
Il programma riscrive tutte le informazioni DBR, FAT e Root Directory. Se sono presenti settori danneggiati sulla superficie del disco, vengono contrassegnati come danneggiati in FAT.
Nella codifica del programma, la struttura BPB viene utilizzata per scrivere il BIOS Parameter Block del DBR. La struttura boot_sector viene utilizzata per scrivere il DBR del disco. La struttura address_field viene utilizzata per interagire con il numero di cilindri, teste e settori per traccia e con la dimensione del settore.
Nella tabella seguente sono state riportate le diverse funzioni utilizzate nella codifica del programma e la loro descrizione.
Il numero di serie del volume del floppy disk viene calcolato dal DOS in base alla data e all'ora correnti dell'orologio di sistema.
La prima parte del numero di serie è calcolata dalla somma dell'ora (secondi e centesimi di secondo) e della data (mese e giorno). La seconda parte del numero di serie è uguale alla somma dell'ora (ore e minuti) e della data (anno).
Tutti i calcoli vengono eseguiti in sistema esadecimale. Ad esempio, supponiamo di aver formattato il floppy in ambiente DOS alle 11:16:28:65 del 23/10/2003. Ora calcoliamo il numero di serie del disco.
The time in (seconds and Hundredths of seconds) format is
= (28 and 65)
= (1CH and 41H)
Write it as 1C41
Similarly, date in (month and day) format is
= (10 and 23)
= (0AH and 17H)
Write it as 0A17
Similarly, time in (hours and minutes) format is,
= (11 and 16)
= (0BH and 10H)
Write it as 0B10
And the year will be
= 2003
= 07D3
Ora calcoliamo il numero seriale del floppy disk, secondo la descrizione data prima. La prima parte del numero di serie sarà (1C41 + 0A17) = 2658 e la seconda parte del numero di serie sarà (0B10 + 07D3) = 12E3.
Scrittura dello strumento di modifica del disco
La codifica del programma di editing del disco è stata data nel disco allegato a questo libro, con il nome del file “TTEDITOR.C”. È possibile utilizzare questo programma per analizzare la superficie dei dischi rigidi o dei floppy disk. Anche la maggior parte dello studio durante la stesura di questo libro, ho usato TTEDITOR per analizzare la superficie del disco o eseguire le modifiche del disco.
Alcune delle attività importanti che questo programma di editing può eseguire sono le seguenti:
- Legge le informazioni per settore della superficie dei dischi rigidi e dei floppy disk.
- Scrivi il backup di qualsiasi settore su file.
- Ripristina i dati del settore dal file.
- Modifica il singolo byte.
- Calcolatrice da esadecimale a decimale e binaria.
Il programma utilizza le funzioni biosdisk() e _bios_disk() per accedere ai dischi. Se vuoi analizzare il disco oltre gli 8.4 GB, Modifica il programma con l'utilizzo delle Estensioni di INT 13H. La descrizione delle funzioni utilizzate nel programma è stata riportata nella tabella seguente:
Function |
Description |
bkground( ) |
creates the back ground and frame of first screen |
clsline( ) |
Used to clear the complete row from the screen specified by row number. |
refresh( ) |
Function to recall all the display functions on the screen |
writetofile( ) |
Function to write the data of a sector to user defined file. |
writetosector( ) |
Function to restore the sector from specified file. |
msgdisp( ) |
Function to display messages on the screen. |
modify( ) |
Function to modify a single byte of any sector, specified by user. |
frame( ) |
Function to draw the frame structure of sector display |
dispmax( ) |
Display maximum CHS number of the disk (Valid Up to 8.4 GB Disk) |
display( ) |
Display the sector and information on the screen. |
hextodec( ) |
Function to Calculate hexadecimal number to corresponding decimal and binary numbers. |
Pagina modificata il: 10/03/2022