Capitolo – 9
Lavorare con dischi rigidi di grandi dimensioni
Lavorare con dischi rigidi di grandi dimensioni
Nel capitolo precedente abbiamo parlato delle funzioni BIOS-Disk e dell'uso degli interrupt per accedere ai supporti fisici dei dischi rigidi. In questo caso abbiamo utilizzato le funzioni INT 13H per accedere ai dischi rigidi.
L'interfaccia INT 13H supporta molti comandi diversi, come lettura, scrittura, formattazione e verifica, ecc., che possono essere passati al BIOS, che a sua volta li passa al disco rigido. Poiché è stato utilizzato a lungo dal DOS, INT13H è stato lo standard per molti anni.
INT 13H alloca 24 bit per la specifica della geometria del disco e richiede che il programma chiamante conosca i parametri specifici del disco rigido e fornisca alle routine l'indirizzamento preciso di testine, cilindri e settori per accedere al disco.
Il BIOS utilizza la geometria del disco rigido configurata nel programma di configurazione del BIOS. I 24 bit assegnati dall'interfaccia INT 13H per la specifica della geometria del disco sono suddivisi come segue:
- 10 bit per il numero del cilindro. Pertanto, il limite massimo del numero totale di cilindri può arrivare a 1024 cilindri.
- 8 bit per il numero della testa. Pertanto, il limite massimo del numero totale di gol è 256.
- 6 bit per il numero di settore. Pertanto, il numero massimo totale di settori può essere pari a 63.
Pertanto, il numero massimo di settori supportati da questo approccio può raggiungere 1024 * 256 * 63 = 16515072.
Ciò significa che l'interfaccia INT13H può supportare unità contenenti fino a circa 16,5 milioni di settori, che a 512 byte per settore danno un massimo di 8,46 GB. Questo è esattamente ciò che voglio spiegare. Quindi utilizzando tutte queste funzioni o INT 13H possiamo accedere solo a dischi fino a 8,46 GB.
Ecco perché, negli ultimi anni, i limiti di questa vecchia interfaccia hanno portato al suo abbandono in favore di un nuovo modo di indirizzare i dischi rigidi, descritto più avanti in questo capitolo.
Prima di tutto, lasciatemi raccontarvi una storia!
Undici anni fa, quando ero in settima elementare, ho sentito parlare di un disco rigido da 42 MB nella mia scuola, forse era il WDA-L42 della IBM. All'epoca era davvero difficile per me e i miei amici immaginare una capacità così grande per un disco rigido.
La metodologia INT 13H è stata sviluppata circa vent'anni fa. Ora puoi vedere che un disco rigido da 8 GB era molto più grande di quanto chiunque avrebbe potuto immaginare, anche nei propri sogni, a quel tempo. Ma oggi, se parliamo di un disco rigido da 8 GB a qualsiasi utente di PC, potrebbe non volerlo utilizzare, sostenendo che ha una capacità di archiviazione ridotta.
Ecco perché l'interfaccia INT 13H ha definitivamente esaurito la sua utilità nei sistemi moderni. INT 13H utilizzava 24 bit per allocare la geometria del disco e sfortunatamente non era possibile estendere l'interfaccia BIOS INT 13H esistente, perché se fosse stato fatto, molti vecchi prodotti hardware e software avrebbero smesso di funzionare e si può comprendere che l'attuale mercato dei computer non potrà mai resistere a un cambiamento così grande, quando milioni di vecchi prodotti hardware e software smetteranno di funzionare.
Date queste condizioni, INT 13H è stato sostituito da una nuova interfaccia denominata estensioni INT 13H. Tuttavia, INT 13H può ancora essere utilizzato da DOS e da alcuni altri sistemi operativi più vecchi, nonché per altri scopi di compatibilità.
La nuova interfaccia INT 13H utilizza 64 bit anziché 24 bit per l'indirizzamento e consente una dimensione massima del disco rigido di 9,4 * 1021 byte, ovvero 9,4 trilioni di gigabyte o 94000000000000 Gigabyte. Speriamo che ora possiamo calmarci per un po' finché questo limite non verrà superato.
Di seguito vengono descritte alcune importanti funzioni di estensione per l'interruzione 13H. È possibile utilizzare queste funzioni nella programmazione nello stesso modo in cui sono state utilizzate le funzioni INT 13H. Questo è anche il motivo per cui queste funzioni sono chiamate estensioni INT 13H.
Estensioni INT 13H:
INTERNO 13H (0x13)
Funzione 1BH (0x1B o 27) --> Ottieni intestazione di produzione (disco fisso ESDI)
Chiama con: AH = 1BH
AL = numero di settori da leggere
DL = guidare
ES:BX = Buffer per l'intestazione di produzione
(elenco dei difetti)
Restituisce: se la funzione ha esito positivo
Porta bandiera = libera
AH = 00X
Se la funzione fallisce
Porta bandiera = impostato
AH = stato
Commenti:
Questa funzione è utilizzata per ottenere l'intestazione di fabbricazione del disco fisso. Il primo settore letto contiene l'intestazione di fabbricazione con il numero di voci di difetto e l'inizio della mappa di difetto; i settori rimanenti contengono il resto della mappa di difetto. Il formato dell'intestazione di fabbricazione (formato Defect Map Record) può essere trovato in IBM 70MB, 115MB Fixed Disk Drives Technical Reference.
INTERNO 13H (0x13)
Funzione 1BH (0x1B o 27) --> Ottieni il puntatore al blocco di informazioni del disco SCSI (Future Domain SCSI Controller)
Chiama con: AH = 1BH
DL = ID del disco rigido
Restituisce: se la funzione ha successo
Porta bandiera = libera
AH = 01H
Se la funzione non riesce
Porta bandiera = impostato
AH = stato
ES:BX = Blocco informazioni disco SCSI
Commenti:
Questa funzione è usata per ottenere il puntatore al blocco di informazioni del disco SCSI. Imposta anche un flag non resettabile che impedisce la visualizzazione di alcuni messaggi del controller.
INTERNO 13H (0x13)
Funzione 1CH (0x1C o 28) --> Ottieni puntatore alla RAM libera del controller (Future Domain SCSI Controller)
Chiama con: AH = 1CH
DL = ID del disco rigido per qualsiasi SCSI valido
disco rigido
Restituisce: se la funzione ha successo
Porta bandiera = libera
AH = 01H
Se la funzione non riesce
Porta bandiera = impostato
AH = stato
ES:BX = primo byte di RAM libera sul controller
Commenti:
Questa funzione è usata per ottenere la RAM libera del controller. ES:BX punta al primo byte di RAM libera sul controller, disponibile per altri usi. ES contiene il segmento in cui risiede il controller. Le due porte I/O mappate in memoria del controller sono agli offset 1C00H e 1E00H.
INTERNO 13H (0x13)
Funzione 1C08H (0x1C08) --> Ottieni stato di completamento comando (disco fisso ESDI)
Chiama con: AX = 1C08H
DL = guidare
ES:BX = buffer per comando completato
Blocco di stato
Ritorno: se la funzione ha successo
Porta bandiera = libera
AH = 01H
Se la funzione non riesce
Porta bandiera = impostato
AH = stato
Commenti:
Questa funzione è usata per ottenere lo stato di completamento del comando. Se la funzione ha successo, il flag di riporto è chiaro e se non ha successo, il flag di riporto è impostato.
INTERNO 13H (0x13)
Funzione 1C09H (0x1C09) --> Ottieni stato dispositivo (disco fisso ESDI)
Chiama con: AX = 1C09H
DL = guidare
ES:BX = buffer per il blocco di stato del dispositivo
Ritorno: se la funzione ha successo
Porta bandiera = libera
AH = 01H
Se la funzione non riesce
Porta bandiera = impostato
AH = stato
Commenti:
Questa funzione è usata per ottenere lo stato del dispositivo. Se la funzione ha successo il flag di trasporto è chiaro e se non ha successo il flag di trasporto è impostato.
INTERNO 13H (0x13)
Funzione 1C0AH (0x1C0A) --> Ottieni configurazione dispositivo (disco fisso ESDI)
Chiama con: AX = 1C0AH
DL = guidare
ES:BX = buffer per lo stato di configurazione dell'unità
Bloccare
Ritorno: se la funzione ha successo
Porta bandiera = libera
AH = 01H
Se la funzione non riesce
Porta bandiera = impostato
AH = stato
Commenti:
Questa funzione viene utilizzata per ottenere la configurazione del dispositivo per il disco. Se la funzione ha esito positivo, il flag di trasporto è azzerato e il registro AH è 01H, altrimenti il flag di trasporto è impostato e il registro AH restituisce lo stato. La seguente tabella mostra il formato del blocco di stato della configurazione dell'unità ESDI:
Offset
|
Misurare
|
Descrizione
|
ore 00:00
|
Byte
|
ore 09:00
|
01H
|
Byte
|
numero di parole nel blocco (06H)
|
ore 02:00
|
Byte
|
bandiere
|
ore 03:00
|
Byte
|
numero di settori di riserva per cilindro
|
ore 04:00
|
Doppia parola
|
numero totale di settori utilizzabili
|
ore 08:00
|
Parola
|
numero totale di cilindri
|
0AH
|
Byte
|
tracce per cilindro
|
0BH
|
Byte
|
settori per traccia
|
INTERNO 13H (0x13)
Funzione 1C0BH (0x1C0B) --> Ottieni configurazione adattatore (disco fisso ESDI)
Chiama con: AX = 1C0BH
ES:BX = buffer per la configurazione del controller
Blocco di stato
Ritorno: se la funzione ha successo
Porta bandiera = libera
AH = 01H
Se la funzione non riesce
Porta bandiera = impostato
AH = stato
Commenti:
Questa funzione è usata per ottenere la configurazione dell'adattatore. Se la funzione ha successo, il flag di riporto è chiaro e AH è 01H, se non ha successo, il flag di riporto è impostato e AH restituisce lo stato.
INTERNO 13H (0x13)
Funzione 1C0CH (0x1C0C) --> Ottieni informazioni POS (disco fisso ESDI)
Chiama con: AX = 1C0CH
ES:BX = buffer per lo stato delle informazioni POS
Bloccare
Ritorno: se la funzione ha successo
Porta bandiera = libera
AH = 01H
Se la funzione non riesce
Porta bandiera = impostato
AH = stato
Commenti:
Questa funzione è utilizzata per ottenere le informazioni POS. Se la funzione ha successo, il flag di riporto è chiaro e AH è 01H, se non ha successo, il flag di riporto è impostato e AH restituisce lo stato.
INTERNO 13H (0x13)
Funzione 1C0EH (0x1C0E) --> Traduci RBA in ABA (disco fisso ESDI)
Chiama con: AX = 1C0EH
CH = 8 bit bassi del numero del cilindro
CL = numero del settore (due bit alti di
numero del cilindro nei bit 6 e 7)
DH = numero di testa
DL = numero di unità
ES:BX = ABA (indirizzo di blocco assoluto)
numero
Ritorno: se la funzione ha successo
Porta bandiera = libera
AH = 01H
Se la funzione non riesce
Porta bandiera = impostato
AH = stato
Commenti:
Questa funzione traduce l'RBA (Relative Block Address) in ABA (Absolute Block Address). Se la funzione ha successo, il carry flag è azzerato e il registro AH è 01H, altrimenti il carry flag è impostato e AH restituisce lo stato.
INTERNO 13H (0x13)
Funzione 20H (0x20 o 32) --> Ottieni il formato del supporto corrente (dispositivo di supporto rimovibile Compaq ATAPI)
Chiama con: AH = 20H
DL = numero di unità
Ritorno: se la funzione ha successo,
Porta bandiera = libera
AL = tipo di supporto
AH = 00H
Se la funzione non riesce,
CF = insieme
AH = codice di errore
Commenti:
Questa funzione è utilizzata per ottenere il formato del supporto corrente. I valori per il tipo di supporto del dischetto Compaq/ATAPI sono stati forniti nella seguente tabella:
Valore
|
Media
|
ore 03:00
|
720K (1M non formattato)
|
ore 04:00
|
1,44 M (2 M non formattati)
|
ore 06:00
|
2,88 M (4 M non formattati)
|
0CH
|
360 mila
|
0DH
|
1,2 milioni
|
0EH
|
Toshiba 3 modalità
|
0FH
|
NEC 3mode (1024 byte per settore)
|
ore 10.00
|
Dispositivo multimediale rimovibile ATAPI
|
INTERNO 13H (0x13)
Funzione 21H (0x21 o 33) --> Leggi più settori del disco (PS e PS/2, dischi rigidi)
Chiama con: AH = 21H
AL = numero di settori da leggere
CH = byte basso del numero del cilindro a 12 bit
CL = settore iniziale (bit da 0 a 5) e bit 8
e 9 del cilindro (bit 6 e 7)
DH = numero della testa (bit da 0 a 5) e bit 10
e 11 del cilindro (bit 6 e 7)
DL = numero di unità
ES:BX = Buffer dati da leggere
Ritorno: se la funzione ha successo,
Porta bandiera = libera
ES:BX = Buffer dati riempito
Se la funzione non riesce,
Porta bandiera = impostato
AH = stato
Commenti:
La funzione viene utilizzata per leggere più settori del disco utilizzando la modalità a blocchi multipli, che genera un'interruzione solo dopo la fine del trasferimento di un gruppo di settori anziché dopo ogni settore.
INTERNO 13H (0x13)
Funzione 22H (0x22 o 34) --> Scrivi più settori del disco (PS e PS/2, dischi rigidi)
Chiama con: AH = 22H
AL = numero di settori da scrivere
CH = byte basso del numero del cilindro a 12 bit
CL = settore iniziale (bit da 0 a 5) e bit 8
e 9 del cilindro (bit 6 e 7)
DH = numero della testa (bit da 0 a 5) e bit 10
e 11 del cilindro (bit 6 e 7)
DL = numero di unità
ES:BX = buffer contenente i dati da scrivere
Ritorno: se la funzione ha successo,
Porta bandiera = libera
AH = 01H
Se la funzione non riesce,
Porta bandiera = Imposta
AH = Stato
Commenti:
La funzione viene utilizzata per scrivere più settori del disco utilizzando la modalità Multiple Block, che genera un'interruzione solo dopo la fine del trasferimento di un gruppo di settori anziché dopo ogni settore.
INTERNO 13H (0x13)
Funzione 22H (0x22 o 34) --> Abilita/Disabilita cache (QuickCache II v4.20)
Chiama con: AH = 22H
AL = nuovo stato (00H, se disabilitato e 01H,
se abilitato)
Ritorno: se la funzione ha successo,
AX = 0000H
Se la funzione non riesce,
AX = stato
Commenti:
Questa funzione abilita e/o disabilita la memorizzazione nella cache di tutte le unità. Se la funzione ha successo, il registro AX è 0000H, altrimenti restituisce lo stato.
INTERNO 13H (0x13)
Funzione 23H (0x23 o 35) --> Imposta registro caratteristiche controller (PS e PS/2, disco rigido)
Chiama con: AH = 23H
AL = numero della caratteristica
DL = numero di unità
Ritorno: se la funzione ha successo,
Porta bandiera = Cancella
Se la funzione non riesce,
Porta bandiera = Imposta
AH = Stato
Commenti:
Questa funzione è utilizzata per impostare il registro delle funzionalità del controller. Se la funzione ha successo, il flag di riporto è azzerato e se non ha successo, il flag di riporto è impostato e il registro AH restituisce lo stato
INTERNO 13H (0x13)
Funzione 24H (0x24 o 36) --> Imposta modalità di trasferimento multipla (disco rigido, PS e PS/2)
Chiama con: AH = 24H
AL = numero di settori per blocco
DL = numero di unità
Ritorno: se la funzione ha successo,
Porta bandiera = Cancella
Se la funzione non riesce,
Porta bandiera = Imposta
AH = Stato
Commenti:
Questa funzione è utilizzata per impostare la modalità di trasferimento multiplo. Se si desidera disattivare la modalità di trasferimento multiplo, impostare il numero di settori su 0. Il valore massimo per la dimensione del blocco (ad esempio 2, 4, 6, 8 e 16 ecc.) dipende dal tipo di unità disco fisso.
Il valore è memorizzato nel byte 15H della tabella dei parametri dell'unità disco fisso creata da POST (Power On Self-Test). Il byte all'indirizzo 0040H:0074H è impostato sullo stato di funzionamento. I valori per il numero di funzionalità del disco rigido PS/1 sono stati elencati nella seguente tabella:
Valore
|
Descrizione
|
01H
|
Selezionare trasferimenti di dati a 8 bit anziché a 16 bit
|
ore 02:00
|
Abilita la cache di scrittura
|
22 ore
|
Scrivi la stessa area specificata dall'utente
|
33 ore
|
Disabilita i nuovi tentativi
|
44 ore
|
Imposta il numero di byte ECC per lettura lunga/scrittura lunga
|
54 ore
|
Imposta segmenti di cache
|
55 ore
|
Disattivare la visualizzazione anticipata
|
66 ore
|
Disabilita il ripristino delle impostazioni predefinite all'accensione
|
77 ore
|
Disabilitare la correzione degli errori
|
81 ore
|
Seleziona trasferimenti dati a 16 bit (predefinito)
|
82 ore
|
Disabilita la cache di scrittura
|
88 ore
|
Abilita correzione errori (predefinito)
|
99 ore
|
Abilita i nuovi tentativi (predefinito)
|
AAH
|
Abilitare la visione anticipata
|
BBH
|
Imposta la lunghezza ECC per lettura lunga/scrittura lunga a quattro byte
|
CCH
|
Abilita il ripristino delle impostazioni predefinite all'accensione
|
DDH
|
Scrivi lo stesso, l'intero disco
|
INTERNO 13H (0x13)
Funzione 24H (0x24 o 36) --> Imposta settori (QuickCache II v4.20)
Chiama con: AX = 24H
BX = Nuovo numero di buffer di settore in
nascondiglio
Ritorno: se la funzione ha successo,
AX = 0000H
Se la funzione non riesce,
AX = Stato
Commenti:
Questa funzione è usata per impostare i settori. Se la funzione ha successo il registro AX è 0000H altrimenti AX restituisce lo stato.
INTERNO 13H (0x13)
Funzione 25H (0x25 o 37) --> Identifica unità (disco rigido, PS e PS/2)
Chiama con: AH = 25H
DL = Numero di unità
ES:BX = Buffer di 512 byte per il pacchetto di risposta
Ritorno: se la funzione ha successo,
Porta bandiera = Cancella
Buffer riempito con blocco di informazioni sull'unità
Se la funzione non riesce,
Porta bandiera = Imposta
AH = Stato
Commenti:
Questa funzione è utilizzata per identificare l'unità. Il byte all'indirizzo 0040h:0074h è impostato sullo stato dell'operazione. IBM classifica ufficialmente questa funzione come opzionale. I campi bit per la configurazione generale dell'unità sono stati forniti nella seguente tabella:
Pezzo(i)
|
Descrizione
|
0
|
Riservato (0)
|
1
|
Settori duri
|
2
|
Settori morbidi
|
3
|
Non codificato MFM
|
4
|
Tempo di commutazione della testa superiore a 15 msec
|
5
|
Implementata l'opzione di controllo del motore del mandrino
|
6
|
Unità fissa
|
7
|
Unità cartuccia rimovibile
|
8
|
La velocità di trasferimento del disco è inferiore o uguale a 5 Mbs
|
9
|
La velocità di trasferimento del disco è maggiore di 5 Mbs ma minore o uguale a 10 Mbs
|
10
|
La velocità di trasferimento del disco è superiore a 10 Mbs
|
11
|
La tolleranza della velocità di rotazione è maggiore dello 0,5%
|
12
|
Opzione offset strobo dati disponibile
|
13
|
Opzione offset traccia disponibile
|
14
|
È richiesta una tolleranza di velocità del formato
|
15
|
Riservato per unità non magnetiche (0)
|
Nella tabella seguente è riportata la descrizione del blocco informativo Formato dell'unità come riportato nella specifica ATA (AT Attachment):
Offset
|
Misurare
|
Descrizione
|
ore 00:00
|
PAROLA
|
Configurazione generale dell'unità
|
ore 02:00
|
PAROLA
|
Numero di cilindri
|
ore 04:00
|
PAROLA
|
Prenotato
|
ore 06:00
|
PAROLA
|
Numero di teste
|
ore 08:00
|
PAROLA
|
Numero di byte non formattati per traccia
|
0AH
|
PAROLA
|
Numero di byte non formattati per settore
|
0CH
|
PAROLA
|
Numero di settori per traccia
|
0EH
|
6 BYTE
|
Fornitore unico
|
14 ore
|
20 BYTE
|
Numero di serie in ASCII, (0000H=non specificato)
|
28 ore
|
PAROLA
|
Tipo di buffer
|
2AH
|
PAROLA
|
Dimensione del buffer in incrementi di 512 byte (0000H=non specificato)
|
2 canali
|
PAROLA
|
Numero di byte ECC passati sui comandi lunghi di lettura/scrittura 0000H = non specificato
|
2EH
|
8 BYTE
|
Revisione del firmware in ASCII, 0000H=non specificato
|
36 ore
|
40 BYTE
|
Numero di modello in ASCII, 0000H=non specificato
|
5EH
|
PAROLA
|
Bit 15-8 Fornitore univoco, bit 7-0, (se 00H = Comandi multipli di lettura/scrittura non implementati, altrimenti xxH = Numero massimo di settori che possono essere trasferiti per interrupt su comandi multipli di lettura e scrittura)
|
60 ore
|
PAROLA
|
0000H = Impossibile eseguire I/O Doubleword, 0001H = È possibile eseguire I/O Doubleword.
|
62 ore
|
PAROLA
|
Bit 15-9 (0=riservato), bit 8 (1=DMA supportato), Bit 7-0 univoco del fornitore.
|
64 ore
|
PAROLA
|
Prenotato
|
66 ore
|
PAROLA
|
Bit 15-8 Modalità di temporizzazione del ciclo di trasferimento dati PIO, Bit 7-0 Fornitore univoco
|
68 ore
|
PAROLA
|
Bit 15-8 Modalità di temporizzazione del ciclo di trasferimento dati DMA, Bit 7-0 Fornitore univoco
|
6AH
|
PAROLA
|
Bit 15-1 riservati, bit 0 (1=i campi segnalati in modalità traduzione sono validi, 0=i campi segnalati in modalità traduzione potrebbero essere validi)
|
6 canali
|
PAROLA
|
Numero di cilindri attuali
|
6EH
|
PAROLA
|
Numero di teste attuali
|
70 ore
|
PAROLA
|
Numero di settori correnti per traccia
|
72 ore
|
PAROLA D'ORDINE
|
Capacità attuale nei settori
|
76 ore
|
>PAROLA
|
Prenotato
|
78 ore
|
136 BYTE
|
Non definito
|
100 ore
|
64 BYTE
|
Fornitore unico
|
140 ore
|
96 BYTE
|
Prenotato
|
INTERNO 13H (0x13)
Funzione 25H (0x25 o 37) --> Imposta intervallo di svuotamento (QuickCache II v4.20)
Chiama con: AH = 25H
BX = Intervallo di lavaggio
Ritorno: se la funzione ha successo,
AH = 0000H
Se la funzione non riesce,
AH = stato
Commenti:
Questa funzione è usata per impostare l'intervallo di svuotamento. Se la funzione ha successo, AH è 0000H, altrimenti AH restituisce lo stato.
INTERNO 13H (0x13)
Funzione 26H (0x26 o 38) --> Disinstallazione di QuickCache II v4.20
Chiama con: AH = 26H
Ritorno: se la funzione ha successo,
AX = 0000H
Se la funzione non riesce,
AX = stato
Commenti:
AX restituisce lo stato da 0001H a 00FFH per il vettore di interrupt che è stato agganciato da un altro TSR
INTERNO 13H (0x13)
Funzione 27H (0x27 o 39) --> Controllo installazione (QuickCache II v4.20)
Chiama con: AH = 27H
BX = 0000H
Ritorno: BH = Versione principale
BL = Versione Binaria Minore
Se installato,
AX = 0000H
BX = diverso da zero
Commenti:
Se installato, il registro AX è 0000H e BX restituisce un valore diverso da zero.
INTERNO 13H (0x13)
Funzione 28H (0x28 o 40) --> Imposta smontaggio automatico (QuickCache II v4.20)
Chiama con: AH = 28H
AL = Nuovo Stato
Ritorno: se la funzione ha successo,
AX = 0000H
Se la funzione non riesce,
AX = Stato
Commenti:
Chiamare la funzione con AL = 00H per disabilitarla e con AL = 01H per abilitarla.
INTERNO 13H (0x13)
Funzione 29H (0x29 o 41) --> Nessuna operazione (QuickCache II v4.20)
Chiama con: AH = 29H
Ritorno: AX = 0000H
INTERNO 13H (0x13)
Funzione 2AH (0x2A o 42) --> Imposta dimensione buffer (QuickCache II v4.20)
Chiama con: AH = 2AH
AL = Dimensione del buffer
Ritorno: se la funzione ha successo,
AX = 0000H
Se la funzione non riesce,
AX = Stato
Commenti:
Questa funzione è usata per impostare la dimensione del buffer. Se la funzione ha successo, AX è 0000H, se non ha successo, AX restituisce lo stato.
INTERNO 13H (0x13)
Funzione 2BH (0x2B o 43) --> Suoni di accesso all'unità (QuickCache II v4.20)
Chiama con: AH = 2BH
AL = nuovo stato (00h disabilitato, 01h
abilitato)
Ritorno: se la funzione ha successo,
AX = 0000H
Se la funzione non riesce,
AX = Stato
Commenti:
Se la funzione ha successo, AX è 0000H, se non ha successo, AX restituisce lo stato. Chiama la funzione con AL = 00H per Disabilitare e AL = 01H per Abilitare i suoni di accesso all'unità
INTERNO 13H (0x13)
Funzione 2CH (0x2C o 44) --> Imposta scrittura bufferizzata (QuickCache II v4.20)
Chiama con: AH = 2CH
AL = nuovo stato
Ritorno: se la funzione ha successo,
AX = 0000H
Se la funzione non riesce,
AX = Stato
Commenti:
Questa funzione abilita o disabilita le scritture ritardate per tutte le unità. Usa AH=38H per modificare una singola unità. Usa AL = 00H per disabilitare e 01H per abilitare.
INTERNO 13H (0x13)
Funzione 2DH (0x2D o 45) --> Imposta lettura bufferizzata (QuickCache II v4.20)
Chiama con: AH = 2Dh
AL = nuovo stato (00h disabilitato, 01h
abilitato)
Ritorno: se la funzione ha successo,
AX = 0000H
Se la funzione non riesce,
AX = Stato
Commenti:
Questa funzione abilita o disabilita la lettura anticipata per tutte le unità. Utilizzare AL = 00H per disabilitare e AL = 01H per abilitare. Utilizzare AH=37H per modificare una singola unità.
INTERNO 13H (0x13)
Funzione 2EH (0x2E o 46) --> Imposta conteggio svuotamento (QuickCache II v4.20)
Chiama con: AH = 2EH
BX = conteggio dei flush
Ritorno: se la funzione ha successo,
AX = 0000H
Se la funzione non riesce,
AX = Stato
Commenti:
Questa funzione è usata per impostare il conteggio Flush. Se la funzione ha successo, AX è 0000H, se non ha successo, AX restituisce lo stato.
INTERNO 13H (0x13)
Funzione 2FH (0x2F o 47) --> Forza svuotamento incrementale immediato (QuickCache II v4.20)
Chiama con: AH = 2FH
Ritorno: se la funzione ha successo,
AX = 0000H
Se la funzione non riesce,
AX = Stato
Commenti:
Se la funzione ha esito positivo l'AX è 0000H, in caso contrario l'AX restituisce lo stato.
INTERNO 13H (0x13)
Funzione 30H (0x30 o 48) --> Ottieni informazioni (QuickCache II v4.20)
Chiama con: AH = 30H
AL = Numero di informazione (vedere la tabella in
Commenti)
DS:DX = buffer per informazioni
Ritorno: se la funzione ha successo,
AX = 0000H
Se la funzione non riesce,
AX = Stato
Commenti:
Questa funzione è utilizzata per ottenere i diversi tipi di informazioni sul sistema, specificati da AL. Se la funzione ha successo, AX è 0000H, se non ha successo, AX restituisce lo stato. AX = 8000H indica lo specificatore di informazioni non valido. I numeri di informazioni da specificare ad AL sono stati elencati nella seguente tabella:
Valore
|
Descrizione
|
ore 00:00
|
Informazioni di sistema
|
01H
|
Informazioni sulla guida
|
ore 02:00
|
Frequenza di accesso (Array di 30 parole)
|
ore 03:00
|
Indice unità (array di 32 byte che indica l'unità BIOS per l'unità DOS)
|
INTERNO 13H (0x13)
Funzione 31H (0x31 o 49) --> Riserva memoria (QuickCache II v4.20)
Chiama con: AH = 31H
BX = Numero di paragrafi di
memoria convenzionale da riservare per
Applicazioni.
Ritorno: se la funzione ha successo,
AX = 0000H
Se la funzione non riesce,
AX = Stato
Commenti:
Questa funzione è usata per riservare la memoria per le applicazioni. Se la funzione ha successo, AX è 0000H, se non ha successo, AX restituisce lo stato.
INTERNO 13H (0x13)
Funzione 32H (0x32 o 50) --> Abilita la memorizzazione nella cache per un'unità specifica (QuickCache II v4.20)
Chiama con: AH = 32H
AL = numero di unità
Ritorno: se la funzione ha successo,
AX = 0000H
Se la funzione non riesce,
AX = Stato
Commenti:
Questa funzione è usata per abilitare la memorizzazione nella cache per un'unità specifica. Ad esempio, chiama la funzione con AL = 00H per A: e così via. Se la funzione ha successo, AX è 0000H, se non ha successo, AX restituisce lo stato.
INTERNO 13H (0x13)
Funzione 33H (0x33 o 51) --> Disabilita la memorizzazione nella cache per un'unità specifica (QuickCache II v4.20)
Chiama con: AH = 33H
AL = numero di unità
Ritorno: se la funzione ha successo,
AX = 0000H
Se la funzione non riesce,
AX = Stato
Commenti:
Questa funzione è usata per disabilitare la memorizzazione nella cache per un'unità specifica. Ad esempio, chiama la funzione con AL = 00H per A: e così via. Se la funzione ha successo, AX è 0000H, se non ha successo, AX restituisce lo stato.
INTERNO 13H (0x13)
Funzione 34H (0x34 o 52) --> Blocca/Sblocca settore/i (QuickCache II v4.20)
Chiama con: AH = 34H
AL = Numero funzione di blocco/sblocco
(Vedi la tabella riportata nei commenti)
Ritorno: se la funzione ha successo,
AX = 0000H
Se la funzione non riesce,
AX = Stato
Commenti:
Questa funzione è usata per chiamare funzioni di blocco/sblocco di settori, specificati da AL. Se la funzione ha successo, AX è 0000H, se non ha successo, AX restituisce lo stato. I diversi numeri di funzione da chiamare con AL sono stati forniti nella seguente tabella:
Valore
|
Funzione
|
ore 00:00
|
Blocco/sblocco del settore finale
|
01H
|
Blocca tutti i settori a cui si accede nella cache
|
ore 02:00
|
Sblocca tutti i settori a cui si è avuto accesso e scarta dalla cache
|
INTERNO 13H (0x13)
Funzione 35H (0x35 o 53) --> Imposta dimensione pool di blocco (QuickCache II v4.20)
Chiama con: AH = 35H
BX = Numero di settori nel pool di blocco
Ritorno: se la funzione ha successo,
AX = 0000H
Se la funzione non riesce,
AX = Stato
Commenti:
Questa funzione è usata per impostare la dimensione del pool di lock. Se la funzione ha successo, AX è 0000H, se non ha successo, AX restituisce lo stato.
INTERNO 13H (0x13)
Funzione 36H (0x36 o 54) --> Imposta dimensione buffer traccia
Chiama con: AH = 36H
AL = Nuova dimensione del buffer di traccia
Ritorno: se la funzione ha successo,
AX = 0000H
Se la funzione non riesce,
AX = Stato
Commenti:
Questa funzione è usata per impostare la dimensione del buffer di traccia. Se la funzione ha successo, AX è 0000H, se non ha successo, AX restituisce lo stato. Questa funzione è solitamente chiamata con la funzione 24H di INT 13H con AL=05H.
INTERNO 13H (0x13)
Funzione 37H (0x37 o 55) --> Imposta letture bufferizzate per unità specifica (QuickCache II v4.20)
Chiama con: AH = 37H
AL = Nuovo stato
DL = Numero di unità
Ritorno: se la funzione ha successo,
AX = 0000H
Se la funzione non riesce,
AX = Stato
Commenti:
Questa funzione è usata per impostare letture bufferizzate per Drive specifici. Se AL = 00H lo stato è abilitato, altrimenti disabilitato. Se la funzione ha successo, AX è 0000H, se non ha successo, AX restituisce lo stato.
INTERNO 13H (0x13)
Funzione 38H (0x38 o 56) --> Imposta scritture bufferizzate per unità specifica (QuickCache II v4.20)
Chiama con: AH = 38H
AL = Nuovo stato
DL = Numero di unità
Ritorno: se la funzione ha successo,
AX = 0000H
Se la funzione non riesce,
AX = Stato
Commenti:
Questa funzione è usata per impostare scritture bufferizzate per Drive specifici. Se AL = 00H lo stato è abilitato, altrimenti disabilitato. Se la funzione ha successo, AX è 0000H, se non ha successo, AX restituisce lo stato.
INTERNO 13H (0x13)
Funzione 39H (0x39 o 57) --> Imposta la dimensione del buffer di lettura per un'unità specifica (QuickCache II v4.20)
Chiama con: AH = 39H
AL = Nuova dimensione del buffer di lettura
DL = Numero di unità
Ritorno: se la funzione ha successo,
AX = 0000H
Se la funzione non riesce,
AX = Stato
Commenti:
Questa funzione è utilizzata per impostare la dimensione del buffer di lettura per unità specifiche, ad esempio DL = 00H per A: e così via. Se la funzione ha esito positivo, AX è 0000H, in caso contrario AX restituisce lo stato.
INTERNO 13H (0x13)
Funzione 3AH (0x3A o 58) --> Imposta la dimensione del buffer di scrittura per un'unità specifica (QuickCache II v4.20)
Chiama con: AH = 3AH
AL = Nuova dimensione del buffer di scrittura
DL = Numero di unità
Ritorno: se la funzione ha successo,
AX = 0000H
Se la funzione non riesce,
AX = Stato
Commenti:
Questa funzione è utilizzata per impostare la dimensione del buffer di scrittura per unità specifiche come DL = 00H per A: e così via. Se la funzione ha successo, AX è 0000H, in caso contrario AX restituisce lo stato.
INTERNO 13H (0x13)
Funzione 3DH (0x3D o 61) --> Abilita/Disabilita il lavaggio del cilindro per l'unità (QuickCache II v4.20)
Chiama con: AH = 3DH
AL = Nuovo stato
DL = numero di unità
Ritorno: se la funzione ha successo,
AX = 0000H
Se la funzione non riesce,
AX = Stato
Commenti:
Questa funzione è utilizzata per abilitare/disabilitare il flush del cilindro per unità specifiche come DL = 00H per A: e così via. Se la funzione ha successo, AX è 0000H, se non ha successo, AX restituisce lo stato. Se il registro AL è impostato su 01H, lo stato è abilitato, altrimenti disabilitato.
INTERNO 13H (0x13)
Funzione 3EH (0x3E o 62) --> Imposta bonus singolo settore (QuickCache II v4.20)
Chiama con: AH = 3EH
AL = Nuovo valore per il bonus
Ritorno: se la funzione ha successo,
AX = 0000H
Se la funzione non riesce,
AX = Stato
Commenti:
Questa funzione è usata per impostare il bonus per singolo settore. Se la funzione ha successo, AX è 0000H, se non ha successo, AX restituisce lo stato.
INTERNO 13H (0x13)
Funzione 3FH (0x3F o 63) --> Imposta soglia bonus (QuickCache II v4.20)
Chiama con: AH = 3FH
AL = Nuovo valore per la soglia bonus
Ritorno: se la funzione ha successo,
AX = 0000H
Se la funzione non riesce,
AX = Stato
Commenti:
Questa funzione è usata per impostare la soglia bonus. Se la funzione ha successo, AX è 0000H, se non ha successo, AX restituisce lo stato
INTERNO 13H (0x13)
Funzione 41H (0x41 o 65) --> Controllo installazione (estensioni IBM/MS INT 13H)
Chiama con: AH = 41H
BX = 55AAH
DL = Numero unità (80H-FFH)
Ritorno: se le estensioni sono supportate e la funzione ha esito positivo,
Porta bandiera = Cancella
Codice articolo: AA55H
AH = Versione principale delle estensioni (vedere
tabella nei commenti)
AL = Uso interno
CX = Supporto sottoinsieme API bitmap (vedere
Tabella nei commenti)
DH = Versione estensione (v2.0 e successive)
Se l'estensione non è supportata o la funzione non riesce,
Porta bandiera = impostato
AH = 01H (Funzione non valida)
Commenti:
Questa funzione controlla se le estensioni IBM/MS INT 13H sono installate e supportate. I valori per le versioni principali delle estensioni sono stati forniti nella seguente tabella:
Valore
|
Versione principale dell'estensione
|
01H
|
1.x
|
ore 20
|
Versione 2.0 / EDD-1.0
|
ore 21:00
|
2.1 / EDD-1.1
|
30 ore
|
EDD-3.0
|
Nella tabella seguente sono riportati i campi bit per il supporto bitmap dell'API delle estensioni IBM/MS INT 13H:
Pezzo(i)
|
Descrizione
|
0
|
Sono supportate funzioni di accesso estese al disco (AH=42H, 43H, 44H, 47h e 48H).
|
1
|
Sono supportate le funzioni del controller dell'unità rimovibile (AH=45H, 46H, 48H, 49H e INT15/AH =52H).
|
2
|
Sono supportate le funzioni Enhanced Disk Drive (EDD) (AH=48H e AH=4EH). La tabella dei parametri dell'unità estesa è valida.
|
3-15
|
Riservato (0)
|
INTERNO 13H (0x13)
Funzione 42H (0x42 o 66) --> Lettura estesa (estensioni IBM/MS INT 13H)
Chiama con: AH = 42H
DL = Numero di unità
DS:SI = Pacchetto indirizzo disco (vedere la tabella in
commenti)
Ritorno: se la funzione ha successo,
Porta bandiera = Cancella
AH = 00H
Se la funzione non riesce,
Porta bandiera = Imposta
AH = codice di errore
Commenti:
Questa funzione è l'estensione della funzione di lettura del disco. Se la funzione ha successo, il flag di trasporto è azzerato e il registro AH è 00H, altrimenti il flag di trasporto è impostato e AH restituisce il codice di errore. Il campo del conteggio dei blocchi del pacchetto di indirizzi del disco è impostato sul numero di blocchi trasferiti con successo. Il formato del pacchetto di indirizzi del disco è stato fornito di seguito:
Offset
|
Misurare
|
Descrizione
|
ore 00:00
|
BYTE
|
Dimensioni del pacchetto (10H)
|
01H
|
BYTE
|
Riservato (0)
|
ore 02:00
|
PAROLA
|
Numero di blocchi da trasferire
|
ore 04:00
|
PAROLA D'ORDINE
|
Buffer di trasferimento
|
ore 08:00
|
Parola chiave
|
Numero assoluto di blocco iniziale (LBA)
|
INTERNO 13H (0x13)
Funzione 43H (0x43 o 67) --> Scrittura estesa (estensioni IBM/MS INT 13H)
Chiama con: AH = 43H
AL = flag di scrittura (vedere la tabella in
commenti)
DL = numero dell'unità.
DS:SI = pacchetto indirizzo disco
Ritorno: se la funzione ha successo,
Porta bandiera = libera
AH = 00H
Se la funzione non riesce,
Porta bandiera = impostato
AH = codice di errore
Commenti:
Questa funzione è l'estensione per la funzione di scrittura su disco. Se la funzione ha successo, il flag di riporto è azzerato e il registro AH è 00H, altrimenti il flag di riporto è impostato e AH restituisce il codice di errore. Il campo del conteggio dei blocchi del pacchetto di indirizzi del disco è impostato sul numero di blocchi con successo. Le informazioni sui flag di scrittura per le diverse versioni sono state fornite nella seguente tabella:
Versione 1.0 e 2.0
|
Versione 2.1 e successive
|
Valore
|
Descrizione
|
Valore
|
Descrizione
|
Pezzo 0
|
Verifica Scrivi
|
00H e 01H
|
Scrivi senza verificare
|
Bit da 1 a 7
|
Riservato (0)
|
ore 02:00
|
Scrivi con verifica
|
INTERNO 13H (0x13)
Funzione 44H (0x44 o 68) --> Verifica settori (estensioni IBM/MS INT 13H)
Chiama con: AH = 44H
DL = numero di unità
DS:SI = pacchetto indirizzo disco
Ritorno: se la funzione ha successo,
Porta bandiera = Cancella
AH = 00H
Se la funzione non riesce,
Porta bandiera = Imposta
AH = codice di errore
Commenti:
Questa funzione è l'estensione della funzione Verify Sectors. Se la funzione ha successo, il flag di riporto è azzerato e il registro AH è 00H, altrimenti il flag di riporto è impostato e AH restituisce il codice di errore. Il campo del conteggio dei blocchi del pacchetto di indirizzi del disco è impostato sul numero di blocchi con successo
INTERNO 13H (0x13)
Funzione 45H (0x45 o 69) --> Blocca/Sblocca unità (estensioni IBM/MS INT 13H)
Chiama con: AH = 45H
AL = Numero operazione (vedere la tabella in
commenti)
DL = Numero di unità
Ritorno: se la funzione ha successo,
Porta bandiera = Cancella
AH = 00H
AL = Stato di blocco (00H = Sbloccato)
Se la funzione non riesce,
Porta bandiera = Imposta
AH = Codice di errore
Commenti:
Questa funzione è utilizzata per bloccare/sbloccare l'unità. Questa funzione deve essere supportata per tutte le unità rimovibili con numero 80H o superiore. È possibile posizionare fino a 255 blocchi su un'unità e il supporto non verrà sbloccato fisicamente finché tutti i blocchi non saranno stati rimossi.
Se la funzione ha esito positivo, il flag di riporto viene cancellato e il registro AH è 00H, altrimenti il flag di riporto viene impostato e AH restituisce il codice di errore.
Nella tabella seguente sono riportati i numeri delle operazioni per le diverse operazioni di Blocco/Sblocco dell'unità:
Valore
|
Funzione
|
ore 00:00
|
Blocca il supporto nell'unità
|
01H
|
Sblocca i media
|
ore 02:00
|
Controllare lo stato del lucchetto
|
INTERNO 13H (0x13)
Funzione 46H (0x46 o 70) --> Espelli supporto (estensioni IBM/MS INT 13H)
Chiama con: AH = 46H
AL = 00H (riservato)
DL = Numero di unità
Ritorno: se la funzione ha successo,
Porta bandiera = Cancella
AH = 00H
Se la funzione non riesce,
Porta bandiera = Imposta
AH = codice di errore
Commenti:
Questa funzione serve per espellere il supporto. Se la funzione ha successo, il flag di trasporto è azzerato e il registro AH è 00H, altrimenti il flag di trasporto è impostato e AH restituisce il codice di errore.
INTERNO 13H (0x13)
Funzione 47H (0x47 o 71) --> Ricerca estesa (estensioni IBM/MS INT 13H)
Chiama con: AH = 47H
DL = Numero di unità
DS:SI = Pacchetto indirizzo disco
Ritorno: se la funzione ha successo,
Porta bandiera = Cancella
AH = 00H
Se la funzione non riesce,
Porta bandiera = Imposta
AH = codice di errore
Commenti:
Questa funzione è l'estensione della funzione di ricerca. Se la funzione ha successo, il flag di riporto è azzerato e il registro AH è 00H, altrimenti il flag di riporto è impostato e AH restituisce il codice di errore. Il campo del conteggio dei blocchi del pacchetto di indirizzo del disco è impostato sul numero di blocchi con successo.
INTERNO 13H (0x13)
Funzione 48H (0x48 o 72) --> Ottieni parametri unità (estensioni IBM/MS INT 13H)
Chiama con: AH = 48H
DL = Guida (80H-FFH)
DS:SI = Buffer per i parametri di azionamento
Ritorno: se la funzione ha successo,
Porta bandiera = Cancella
AH = 00H
DS:SI = Buffer riempito
Se la funzione non riesce,
Porta bandiera = Imposta
AH = Codice di errore
Commenti:
Questa funzione viene utilizzata per ottenere i parametri dell'unità. Se la funzione ha esito positivo, il flag di riporto è azzerato e il registro AH è 00H con DS:SI di Filled buffer, altrimenti il flag di riporto è impostato e AH restituisce il codice di errore.
INTERNO 13H (0x13)
Funzione 49H (0x49 o 73) --> Modifica supporto esteso (estensioni IBM/MS INT 13H)
Chiama con: AH = 49H
DL = Numero di unità (qualsiasi numero di unità, vedere
Commenti)
Ritorno: Se il supporto non è stato modificato,
Porta bandiera = Cancella
AH = 00H
Se i media potrebbero essere stati modificati,
Porta bandiera = Imposta
AH = 06H (codice di errore per cambio supporto)
Commenti:
Questa funzione è l'estensione della funzione di cambio media. Se la funzione ha successo, il flag di riporto è azzerato e il registro AH è 00H, altrimenti il flag di riporto è impostato e AH restituisce il codice di errore.
La differenza principale tra questa funzione e la funzione AH = 16H di INT 13H è che possiamo specificare qualsiasi numero di unità, mentre la funzione 16H consente solo i numeri di unità da 00H a 7FH dei floppy disk.
INTERNO 13H (0x13)
Funzione 4AH (0x4A o 74) --> Inizia emulazione disco (CD-ROM avviabile)
Chiama con: AH = 4AH
AL = 00H
DS:SI = Pacchetto di specifiche (vedere la tabella nei commenti)
Ritorno: se la funzione ha successo,
Porta bandiera = Cancella
Se la funzione non riesce,
Porta bandiera = Imposta
AX = Codice di stato
Commenti:
Questa funzione è usata per avviare l'emulazione del disco. Se la funzione ha successo il flag di trasporto è azzerato, altrimenti il flag di trasporto è impostato e il registro AX restituisce il codice di stato e l'unità non sarà in modalità di emulazione.
Il formato del pacchetto di specifiche del CD-ROM avviabile è riportato nella seguente tabella:
Offset
|
Misurare
|
Descrizione
|
ore 00:00
|
BYTE
|
Dimensione del pacchetto in byte (13H)
|
01H
|
BYTE
|
Tipo di supporto di avvio
|
ore 02:00
|
BYTE
|
Numero di unità
Numero di unità
|
Descrizione dell'unità
|
ore 00:00
|
Immagine floppy
|
80 ore
|
Disco rigido avviabile
|
Da 81H a FFH
|
Non avviabile o nessuna emulazione
|
|
ore 03:00
|
BYTE
|
Numero del controller CD-ROM
|
ore 04:00
|
PAROLA D'ORDINE
|
Indirizzo del blocco logico dell'immagine del disco per Emu
|
ore 08:00
|
PAROLA
|
Specifiche del dispositivo
Valore
|
Descrizione
|
(IDE) Pozzo 0
|
L'unità è slave anziché master
|
(SCSI) Bit da 0 a 7
|
LUN (numero di unità logica) e PUN (numero di unità fisica)
|
Pezzi da 8 a 15
|
Numero dell'autobus
|
|
0AH
|
PAROLA
|
Segmento di buffer da 3 Kb per la memorizzazione nella cache delle letture CD-ROM
|
0CH
|
PAROLA
|
Carica segmento per l'immagine di avvio iniziale (se 0000H, carica al segmento 07C0H)
|
0EH
|
PAROLA
|
Numero di settori virtuali da 512 byte da caricare (valido solo per la funzione 4CH di INT 13H)
|
ore 10.00
|
BYTE
|
Byte basso del conteggio dei cilindri (per la funzione 08H di INT 13H)
|
ore 11:00
|
BYTE
|
Conteggio dei settori, bit elevati del conteggio dei cilindri (per la funzione 08H di INT 13H)
|
ore 12.00
|
BYTE
|
Conteggio delle teste (per la funzione 08H di INT 13H)
|
Nella tabella seguente sono riportati i campi Bit per il tipo di supporto di avvio CD-ROM avviabile:
Pezzo(i)
|
Descrizione
|
3-0
|
Tipo di supporto
Valore
|
Descrizione
|
0000
|
Nessuna emulazione.
|
0001
|
Dischetto da 1,2 M.
|
0010
|
Dischetto da 1,44 M.
|
0011
|
Dischetto da 2,88 M.
|
0100
|
Disco rigido (unità C:)
|
Altro
|
Prenotato
|
|
5-4
|
Riservato (0)
|
6
|
L'immagine contiene il driver ATAPI
|
7
|
L'immagine contiene driver SCSI
|
INTERNO 13H (0x13)
Funzione 4B00H (0x4B00) --> Termina emulazione disco (CD-ROM avviabile)
Chiama con: AX = 4B00H
DL = Numero di unità (o 7FH per terminare
tutte le emulazioni)
DS:SI = Pacchetto di specifiche vuoto
Ritorno: se la funzione ha successo,
Porta bandiera = Cancella
Se la funzione non riesce,
Porta bandiera = Imposta
AX = Codice di stato
DS:SI = Pacchetto di specifiche compilato
Commenti:
Questa funzione è usata per terminare l'emulazione del disco. Se vuoi terminare tutte le emulazioni, chiama la funzione con DL = 7FH. Se la funzione ha successo, il flag di riporto è azzerato, altrimenti il flag di riporto è impostato e il registro AX restituisce il codice di stato e l'unità rimane in modalità emulazione.
INTERNO 13H (0x13)
Funzione 4B01H (0x4B01) --> Ottieni stato (CD-ROM avviabile)
Chiama con: AX = 4B01H
DL = Numero di unità
DS:SI = Pacchetto di specifiche vuoto
Ritorno: se la funzione ha successo,
Porta bandiera = Cancella
Se la funzione non riesce,
Porta bandiera = Imposta
AX = Codice di stato
DS:SI = Pacchetto di specifiche compilato
Commenti:
La funzione viene utilizzata per ottenere lo stato. Se la funzione ha successo, il flag di riporto è chiaro, altrimenti il flag di riporto è impostato e il registro AX restituisce il codice di stato
INTERNO 13H (0x13)
Funzione 4CH (0x4C o 76) --> Avvia emulazione disco e avvio (CD-ROM avviabile)
Chiama con: AH = 4CH
AL = 00H
DS:SI = Pacchetto di specifiche
Ritorno: se la funzione ha successo,
Niente
Se la funzione non riesce,
Porta bandiera = Imposta
AX = Codice di stato
Commenti:
Questa funzione è usata per avviare l'emulazione del disco e avviare il sistema. Se la funzione ha successo, non restituisce nient'altro, il flag di riporto è impostato e il registro AX restituisce il codice di stato.
INTERNO 13H (0x13)
Funzione 4D00H (0x4D00) --> Restituisci catalogo di avvio (CD-ROM avviabile)
Chiama con: AX = 4D00H
DS:SI = Pacchetto di comandi (vedere la tabella in
commenti)
Ritorno: se la funzione ha successo,
Porta bandiera = Cancella
Se la funzione non riesce,
Porta bandiera = Imposta
AX = Codice di stato
Commenti:
Questa funzione viene utilizzata per restituire il catalogo di avvio. Se la funzione ha successo, il flag di trasporto è azzerato, altrimenti il flag di trasporto è impostato e il registro AX restituisce il codice di stato. Il formato del CD-ROM avviabile del pacchetto di comandi "Get Boot Catalog" è stato fornito nella seguente tabella:
Offset
|
Misurare
|
Descrizione
|
ore 00:00
|
BYTE
|
Dimensione del pacchetto in byte (08H)
|
01H
|
BYTE
|
Numero di settori del catalogo di avvio da leggere
|
ore 02:00
|
PAROLA D'ORDINE
|
Buffer per catalogo di avvio
|
ore 06:00
|
PAROLA
|
Primo settore nel catalogo di avvio da trasferire
|
INTERNO 13H (0x13)
Funzione 4EH (0x4E o 78) --> Imposta configurazione hardware (estensioni IBM/MS INT 13H v2.1)
Chiama con: AH = 4EH
AL = Numero Funzione (Vedi la tabella nei commenti)
DL = Numero di unità
Ritorno: se la funzione ha successo,
Porta bandiera = Cancella
AH = 00H
Se la funzione non riesce,
Porta bandiera = Imposta
AH = codice di errore
AL = Stato
Commenti:
Questa Funzione è utilizzata per impostare la configurazione hardware. I numeri di funzione per AL per chiamare questa Funzione sono stati forniti nella seguente tabella:
Valore
|
Descrizione
|
ore 00:00
|
Abilita prefetch
|
01H
|
Disabilitare il prefetch
|
ore 02:00
|
Imposta la modalità di trasferimento PIO massima
|
ore 03:00
|
Imposta la modalità PIO 0
|
ore 04:00
|
Imposta la modalità di trasferimento PIO predefinita
|
ore 05:00
|
Abilita la modalità massima INT 13H DMA
|
ore 06:00
|
Disabilita INT 13H DMA
|
Le modalità DMA e PIO si escludono a vicenda, pertanto la selezione di DMA disabilita PIO per il dispositivo specificato o per tutti i dispositivi su quel controller e la selezione di PIO disabilita DMA
INTERNO 13H (0x13)
Funzione 5001H (0x5001) --> Invia comando pacchetto (Enhanced Disk Drive Spec v3.0)
Chiama con: AX = 5001H
DL = Numero di unità
ES:BX = Pacchetto di comandi (vedere la tabella in
commenti)
Ritorno: se la funzione ha successo,
Porta bandiera = Cancella
AH = 00H
Se la funzione non riesce,
Porta bandiera = Imposta
AH = codice di errore
Commenti:
Questa funzione è utilizzata per inviare i comandi del pacchetto. Se la funzione ha successo, il flag di trasporto è azzerato e il registro AH è 00H, altrimenti il flag di trasporto è impostato e AH restituisce il codice di errore. Il formato del pacchetto di comandi Enhanced Disk Drive Spec v3.0 è stato fornito nella seguente tabella:
Offset
|
Misurare
|
Descrizione
|
ore 00:00
|
PAROLA
|
Firma B055H
|
ore 02:00
|
BYTE
|
Lunghezza del pacchetto in byte
|
ore 03:00
|
BYTE
|
Riservato (0)
|
ore 04:00
|
N BYTE
|
Dati del pacchetto formattati
|
INTERNO 13H (0x13)
Funzione 5501H (0x5501) --> Richiesta (Seagate ST01/ST02)
Chiama con: AX = 5501H
DH = Numero di byte da trasferire
DL = Numero unità
ES:BX = Buffer per i risultati
Ritorno
Buffer ES:BX, riempito con i risultati della richiesta.
Commenti:
Questa funzione è utilizzata per inviare una richiesta. Il BIOS ST01/ST02 non restituisce alcuna indicazione di successo o fallimento per la funzione, pertanto tutti i comandi devono essere considerati come se avessero avuto successo.
Il BIOS ST01/ST02 mappa sempre le sue unità dopo le unità BIOS precedenti senza modificare il conteggio delle unità BIOS a 0040H:0075H. Questo comando è identico al comando SCSI Inquiry
INTERNO 13H (0x13)
Funzione 5502H (0x5502) --> Riservato (Seagate ST01/ST02)
INTERNO 13H (0x13)
Funzione 5503H (0x5503) --> Imposta DTQ (qualificatore tipo dispositivo) (Seagate ST01/ST02)
Chiama con: AX = 5503H
DH = byte DTQ (Vedi la tabella in
commenti)
DL = Numero unità
Ritorno: Niente
Commenti:
Questa funzione è usata per impostare il DTQ (Device Type Qualifier). La funzione non restituisce nulla. I campi Bit per il byte DTQ sono stati mostrati nella seguente tabella:
Pezzo(i)
|
Descrizione
|
0
|
Software di installazione Seagate presente
|
1
|
L'unità selezionata è stata installata
|
2
|
L'adattatore host controlla la parità sull'unità selezionata
|
3
|
L'unità selezionata è ST225N
|
4
|
L'unità selezionata è abbinata ST225N/NP
|
5
|
Prenotato
|
6
|
Unità SCSI collegata
|
7
|
Prenotato
|
INTERNO 13H (0x13)
Funzione 5504H (0x5504) --> Identificazione ritorno (Seagate ST01/ST02)
Chiama con: AX = 5504H
DL = Numero unità
Ritorno:
AX = 4321H
BL = numero dell'unità selezionata (00H, 01H)
BH = numero di unità collegate all'host
Adattatore
Commenti:
La funzione viene utilizzata per restituire l'identificazione dell'unità.
INTERNO 13H (0x13)
Funzione 5505H (0x5505) --> Testine di parcheggio (Seagate ST01/ST02)
Chiama con: AX = 5505H
DL = Numero unità
DH = Sottofunzione (vedi commenti)
Ritorno:
Niente
Commenti:
La funzione è usata per parcheggiare le testine del disco. Era usata nei vecchi dischi rigidi, ma i dischi rigidi moderni non hanno bisogno di alcun programma esterno per parcheggiare le loro testine.
La funzione secondaria 00H parcheggia le testine (comando SCSI Stop) e la funzione secondaria 01H ripristina le testine (comando SCSI Start) del disco.
INTERNO 13H (0x13)
Funzione 5506H (0x5506) --> Parità bus SCSI (Seagate ST01/ST02)
Chiama con: AX = 5506H
DL = Numero unità
DH = Numero della sottofunzione (vedere
Commenti)
Ritorno:
AL = Stato (controllo parità 00H
disabilitato, controllo di parità 01H abilitato)
Commenti:
Chiamare la funzione con il seguente numero di sottofunzione per DH:
Valore
|
Descrizione
|
ore 00:00
|
Disabilita il controllo di parità
|
01H
|
Abilita controllo parità
|
ore 02:00
|
Restituisce l'impostazione di parità corrente
|
INTERNO 13H (0x13)
Funzione 5507H (0x5507) alla funzione 550DH (0x550D) --> Funzioni riservate (Seagate ST01/ST02)
Chiama con: AX = 5507H a AX = 550DH
Commenti:
Queste funzioni sono state ufficialmente elencate come "Riservate"
INTERNO 13H (0x13)
Funzione A0H (0xA0 o 160) --> Ottieni segmento di codice residente (Super PC-Kwik v3.20 e versioni successive)
Chiama con: AH = A0H
SE = 4358H
Ritorno:
AX = Segmento del codice residente
Commenti:
Questa funzione viene utilizzata per ottenere il segmento del codice residente. AX restituisce il segmento del codice residente.
INTERNO 13H (0x13)
Funzione A1H (0xA1 o 161) --> Svuota cache (Super PC-Kwik v3.20 e versioni successive)
Chiama con: AH = A1H
SE = 4358H
Ritorno:
Porta bandiera = Cancella
AH = 00H (v5.10)
Commenti:
La funzione viene utilizzata per svuotare la cache.
INTERNO 13H (0x13)
Funzione A3H (0xA3 o 163) --> Disabilita cache (Super PC- Kwik v3.20 e versioni successive)
Chiama con: AH = A3H
SE = 4358H
Ritorno:
Porta bandiera = Cancella
Commenti:
La funzione viene utilizzata per disabilitare la cache.
INTERNO 13H (0x13)
Funzione A4H (0xA4 o 164) --> Abilita cache (Super PC-Kwik v3.20 e versioni successive)
Chiama con: AH = A4H
SE = 4358H
Ritorno:
Porta bandiera = Cancella
Commenti:
Questa funzione serve per abilitare la cache.
INTERNO 13H (0x13)
Funzione EEH (0xEE o 238) --> Imposta flag cilindro 1024 (SWBIOS)
Chiama con: AH = EEH
DL = Numero unità
Ritorno:
Porta bandiera = Cancella
AH = 00H
Commenti:
La funzione è utilizzata per impostare 1024 – Flag del cilindro. Il flag viene cancellato da tutte le chiamate INT 13H eccetto AH=EEH e AH=EFH. Disk Manager supporta anche queste chiamate. Questa funzione equivale a chiamare la funzione AH=EFH con CX=0400H per il software che supporta tale chiamata.
Questa funzione è supportata anche da HyperDisk v4.01 e versioni successive e da PC-Cache v5.5 e versioni successive, per consentire la memorizzazione nella cache delle unità che utilizzano SWBIOS per accedere a più di 1024 cilindri.
INTERNO 13H (0x13)
Funzione EFH (0xEF o 239) --> Imposta offset cilindro (Ontrack Drive Rocket)
Chiama con: AH = EFH
CX = Offset cilindro per la prossima chiamata INT 13H
DL = Numero unità
Ritorno:
Porta bandiera = Cancella
AH = 00H
Commenti:
La Funzione è usata per impostare l'offset del cilindro. Per il software che supporta questa chiamata, la Funzione AH=EEH equivale a chiamare questa funzione con CX=0400H. L'offset del cilindro viene reimpostato a 0 da tutti gli INT 13H chiamati eccetto AH=EEH e AH=EFH.
INTERNO 13H (0x13)
Funzione F9H (0xF9 o 249) --> Controllo installazione (SWBIOS)
Chiama con: AH = F9H
DL = Numero unità
Ritorno: se la funzione ha successo,
Porta bandiera = Cancella
DX = Parola di configurazione (vedi commenti)
Se la funzione non riesce,
Porta bandiera = Imposta
Commenti:
Questa funzione è utilizzata per il controllo dell'installazione. Se la funzione ha esito positivo, il flag di riporto è azzerato e DX restituisce la parola di configurazione, altrimenti il flag di riporto è impostato.
Il bit 15 è impostato se sono disponibili altre estensioni SWBIOS. Disk Manager supporta anche queste chiamate.
INTERNO 13H (0x13)
Funzione FEH (0xFE o 254) --> Ottieni conteggio cilindri esteso (SWBIOS)
Chiama con: AH = FEH
DL = Numero unità
Ritorno:
Porta bandiera = Cancella
DX = Numero di cilindri oltre 1024
in auto
Commenti:
Questa funzione è usata per ottenere il conteggio esteso dei cilindri. La funzione AH = 08H di INT 13H restituirà un conteggio dei cilindri troncato a 1024. Il BIOS senza questa estensione restituirebbe il conteggio modulo 1024. Disk Manager supporta anche queste chiamate
INTERNO 13H (0x13)
Funzione FFH (0xFF o 255) --> Funzione ufficialmente privata (IBM SurePath BIOS)
INTERNO 13H (0x13)
Funzione FFFFH (0xFFFF) --> Imposta modalità Turbo (utilità Turbo UX UNICA)
Chiama con: AX = FFFFH
BH = AAH
BL = Numero della sottofunzione (vedere la tabella)
nei commenti)
Ritorno: Se installato,
AX = 1234H
Commenti:
Questa funzione è utilizzata per impostare la modalità Turbo. I numeri delle sottofunzioni per chiamare la funzione con BL sono stati forniti nella seguente tabella:
Valore
|
Descrizione
|
ore 00:00
|
Controllo dell'installazione
|
01H
|
Attiva la modalità Turbo
|
ore 02:00
|
Disattiva la modalità Turbo
|
ore 03:00
|
Imposta la modalità Turbo in base all'interruttore hardware
|
ore 04:00
|
Imposta l'accesso al disco in modalità Turbo
|
ore 05:00
|
Imposta l'accesso al disco in modalità Normale
|
Come utilizzare le estensioni INT 13H nella programmazione C
Possiamo chiamare le Funzioni di Estensione di INT 13H con le stesse funzioni C (int86(), int86x() ecc.) che abbiamo usato nei capitoli precedenti. Impariamolo con un esempio.
L'esempio seguente focalizza l'attenzione sulle tre funzioni (Check Extensions present, extended read e extended write). Tuttavia non utilizzeremo la funzione extended write in questo capitolo.
Il programma verifica innanzitutto se le estensioni sono supportate o meno, se le estensioni sono presenti per INT 13H, legge il settore assoluto 0 (quindi MBR) del disco. La codifica del programma procede nel modo seguente:
/* Programma per accedere ai settori oltre 8,46 GB utilizzando le estensioni BIOS INT 13 */
#include<stdio.h>
#include<dos.h>
/* Assegna l'identificatore al tipo di dati */
typedef unsigned char Byte;
typedef unsigned int Parola;
typedef unsigned long DWord;
/* la struttura disk_packet viene caricata in DS:SI e il comando viene eseguito */
struttura disk_packet
{
Byte size_pack; // La dimensione del pacchetto deve essere 16 o 16+
Byte riservato1; // Riservato
Byte no_of_blocks;// Numero di blocchi per il trasferimento
Byte riservato2; // Riservato
/* Indirizzo nel formato Segmento:Offset */
Offset parola; //indirizzo offset
Segmento di parola; //indirizzo del segmento
/* Per supportare il disco anche con capacità di 1152921504.607 GB */
Parola chiave lba1;
Parola chiave lba2;
}
pacchetto_disco;
/* Funzione per verificare se le estensioni sono supportate */
annulla check_ext_present()
{
union REGS inregs, outregs; /* Registri di input e
Produzione */
inregs.h.ah=0x41; /* Funzione da controllare
Estensione presente */
inregs.x.bx=0x55AA;
inregs.h.dl=0x80; /* Numero unità per il primo disco rigido */
int86(0x13,&inregs,&outregs); /*Interruzione chiamata */
se(outregs.x.cflag)
{
/* Estensione non supportata */
printf("\nEstensione BIOS non supportata");
uscita(1);
}
se(outregs.x.bx==0xAA55)
se(outregs.x.cx & 0x1)
/* Estensione presente */
printf("\nI/O esteso supportato");
}
/* Funzione per leggere il Settore */
void read_sectors(void *buffer)
{
unione REGS inregs, outregs; /* Input e Output
Registri */
struct SREGS segregs; // Registri di segmento
disk_pack.size_pack=16; // Imposta la dimensione a 16
disk_pack.no_of_blocks=1; // Un blocco
disk_pack.reserved1=0; // Parola riservata
disk_pack.reserved2=0; // Parola riservata
disk_pack.segment=FP_SEG(buffer); // Segmento del buffer
disk_pack.offset=FP_OFF(buffer); // Offset del buffer
/* richiesta MBR del disco rigido 1 */
/* Leggi il settore assoluto 0 */
disk_pack.lba1=0; /* Indirizzo LBA, contiene il primo
32 bit */
/* Normalmente richiediamo (unità < 2,1 TB) per impostare
solo questo */
disk_pack.lba2=0; // Ultimo indirizzo a 32 bit
inregs.h.ah=0x42; // Funzione da leggere
inregs.h.dl=0x80; // Numero di unità per il primo disco rigido inregs.x.si = FP_OFF(&disk_pack); /*Crea il punto DS:SI
per impacchettare il disco */
segregs.ds = FP_SEG(&disk_pack);
/* Interruzione chiamata */
int86x(0x13,&inregs,&outregs,&segregs);
se(outregs.x.cflag)
printf("\n\nErrore %d\n",outregs.h.ah);
altro
printf("\n\nSpero che tutto vada bene");
}
//// Scrivi la funzione del settore \\\\
annullare write_sector()
{
/* Sarà scritto nello stesso modo della funzione read_sectors, eccetto Function Number, che sarà 0x43 in questa funzione. Discuteremo della funzione di scrittura estesa nei prossimi capitoli.
Prima di usare questa funzione, controlla e verifica cosa farai. Dovresti avere la conoscenza adeguata di cosa farai. L'uso di questa funzione in mancanza di conoscenza o negligenza potrebbe distruggere i tuoi dati. */
}
/// Funzione principale \\\\
vuoto principale()
{
int i=0;
/* buffer per contenere MBR */
Il byte mbr[512];
clrscr();
/* verifica la presenza dell'estensione BIOS */
controlla_ext_present();
/* leggi settore */
leggi_settori(&mbr);
printf("\n\n Dati di MBR \n");
printf("▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀\n\n\n");
mentre(i++<512)
{
/* visualizza il buffer MBR */
printf("%c",mbr[i]);
}
}
Dati di MBR
Commenti sulla codifica del programma
typedef Assegna l'identificatore al tipo di dati in modo che typedef unsigned char Byte; assegna l'identificatore Byte per il tipo di dati char. Allo stesso modo, l'identificatore Word è assegnato a int e DWord è assegnato a long.
La struttura disk_packet viene caricata in DS:SI e il comando (ad esempio extended read, extended write o verify ecc.) viene eseguito. Vedere le funzioni di IBM/MS INT 13H Extensions (Funzione 41H a Funzione 49H) fornite in precedenza.
La funzione check_ext_present() controlla se le estensioni sono disponibili/supportate o meno. La funzione viene chiamata con BX=55AAH (inregs.x.bx=0x55AA;) e se le estensioni sono supportate il registro BX viene impostato su AA55H. (Vedi Funzione 41H data prima)
La funzione read_sectors viene utilizzata per leggere il settore assoluto del disco, specificato da disk_pack.lba1. In questo programma abbiamo dato disk_pack.lba1=0, quindi leggeremo il settore assoluto 0 (vedere la nota sotto) e quindi leggeremo l'MBR del disco.
La funzione write_sector è anche la stessa della funzione read_sectors e verrà scritta nello stesso modo ma con le diverse opzioni Function. La useremo nei prossimi capitoli.
Nota:
Leggiamo i settori del disco nei due modi seguenti:
- Lettura (o scrittura) del settore relativo
- Lettura (o scrittura) del settore assoluto
In Relative Sector Read leggiamo i settori del disco in base alla geometria CHS (cilindro, testina e settore) del disco. In relative sector read l'MBR del disco (primo settore del disco) è sul cilindro 0, testina 0 e settore 1.
Nella lettura assoluta dei settori del disco, non abbiamo bisogno di specificare i numeri di cilindro o testina nel nostro programma. I settori assoluti vengono contati dal settore assoluto 0.
Quindi se vogliamo leggere l'MBR del disco (primo settore del disco), leggeremo il settore assoluto 0. È compito del BIOS convertire il numero di settore assoluto nel numero di cilindro, testina e settore corrispondente.
Come nella lettura (o scrittura) del settore assoluto, dobbiamo calcolare solo i settori assoluti all'interno del ciclo in operazioni come la lettura o scrittura dell'intero disco, mentre nel caso della lettura (o scrittura) del settore relativo, dobbiamo eseguire tre cicli alla volta per calcolare CHS, pertanto la lettura/scrittura del settore assoluto è molto più veloce della lettura/scrittura del settore relativo.
Ad esempio, se abbiamo un disco rigido con 16 testine (lati), 12 cilindri e 63 settori, la tabella riportata di seguito mostra la procedura e la differenza tra entrambi i metodi di lettura e mostra quindi come l'approccio assoluto del settore possa far sì che i nostri programmi che richiedono molto tempo (come programmi di lettura/scrittura dell'intero disco o programmi di cancellazione dell'intero disco, ecc.) vengano eseguiti molto più velocemente:
Lettura dei settori relativi
|
Lettura assoluta del settore
|
Cilindro =0, Testa =0, Settore = 1
|
Settore assoluto = 0
|
Cilindro =0, Testa =0, Settore = 2
|
Settore assoluto = 1
|
Cilindro =0, Testa =0, Settore = 3
|
Settore assoluto = 2
|
.
.
.
.
|
.
.
.
.
|
Cilindro =0, Testa =0, Settore = 62
|
Settore assoluto = 61
|
Cilindro =0, Testa =0, Settore = 63
|
Settore assoluto = 62
|
Cilindro =0, Testa =1, Settore =1
|
Settore assoluto = 63
|
Cilindro =0, Testa =1, Settore =2
|
Settore assoluto = 64
|
Cilindro =0, Testa =1, Settore =3
|
Settore assoluto = 65
|
Cilindro =0, Testa =1, Settore =4
|
Settore assoluto = 66
|
.
.
.
.
|
.
.
.
.
|
Cilindro =0, Testa =1, Settore = 63
|
Settore assoluto = 125
|
Cilindro =0, Testa =2, Settore =1
|
Settore assoluto = 126
|
Cilindro =0, Testa =2, Settore =2
|
Settore assoluto = 127
|
Cilindro =0, Testa =2, Settore =3
|
Settore assoluto = 128
|
.
.
.
.
|
.
.
.
.
|
Cilindro =0, Testa =15, Settore = 63
|
Settore assoluto = 1007
|
Cilindro =1, Testa =0, Settore =1
|
Settore assoluto = 1008
|
Cilindro =1, Testa =0, Settore =2
|
Settore assoluto = 1009
|
Cilindro =1, Testa =0, Settore =3
|
Settore assoluto = 1010
|
.
.
.
.
|
.
.
.
.
|
Cilindro =1, Testa =0, Settore = 63
|
Settore assoluto = 1070
|
Cilindro =1, Testa =1, Settore =1
|
Settore assoluto = 1071
|
Cilindro =1, Testa =1, Settore =2
|
Settore assoluto = 1072
|
Cilindro =1, Testa =1, Settore =3
|
Settore assoluto = 1073
|
.
.
.
.
|
.
.
.
.
|
Cilindro = 1, Testa = 15, Settore = 63
|
Settore assoluto = 2015
|
Cilindro =2, Testa =0, Settore =1
|
Settore assoluto = 2016
|
Cilindro =2, Testa =0, Settore =2
|
Settore assoluto = 2017
|
Cilindro =2, Testa =0, Settore =3
|
Settore assoluto = 2018
|
.
.
.
.
|
.
.
.
.
|
Cilindro = 11, Testa = 15, Settore = 60
|
Settore assoluto = 12092
|
Cilindro = 11, Testa = 15, Settore = 61
|
Settore assoluto = 12093
|
Cilindro = 11, Testa = 15, Settore = 62
|
Settore assoluto = 12094
|
Cilindro = 11, Testa = 15, Settore = 63
|
Settore assoluto = 12095
|
Di seguito sono riportate le informazioni sulla tabella delle partizioni MBR visualizzate da qualsiasi strumento di analisi MBR sul disco:
Visualizzato da qualsiasi strumento di analisi MBR sul disco
Nelle informazioni di cui sopra, i numeri di settore relativi per l'inizio di entrambe le partizioni sono rispettivamente 63 e 11277630, sono liberi da partizioni e vengono conteggiati in base al numero di settori disponibili sul disco.