Κεφάλαιο – 9
Εργασία με μεγάλους σκληρούς δίσκους
Εργασία με μεγάλους σκληρούς δίσκους
Στο προηγούμενο κεφάλαιο, συζητήσαμε τις λειτουργίες του BIOS-Disk και τη χρήση των διακοπών για πρόσβαση στα φυσικά μέσα των σκληρών δίσκων. Εκεί χρησιμοποιήσαμε λειτουργίες INT 13H για πρόσβαση σε σκληρούς δίσκους.
Η διεπαφή INT 13H υποστηρίζει πολλές διαφορετικές εντολές όπως ανάγνωση, εγγραφή, διαμόρφωση και επαλήθευση κ.λπ., οι οποίες μπορούν να περάσουν στο BIOS, το οποίο στη συνέχεια τις μεταβιβάζει στον σκληρό δίσκο. Επειδή χρησιμοποιήθηκε από το DOS για μεγάλο χρονικό διάστημα, το INT13H ήταν το πρότυπο για πολλά χρόνια.
Το INT 13H εκχωρεί 24 bit για τις προδιαγραφές γεωμετρίας του δίσκου και απαιτεί από το πρόγραμμα κλήσης να γνωρίζει τις συγκεκριμένες παραμέτρους του σκληρού δίσκου και να παρέχει στις ρουτίνες ακριβείς διευθύνσεις κεφαλής, κυλίνδρου και τομέα για πρόσβαση στο δίσκο.
Το BIOS χρησιμοποιεί τη γεωμετρία του σκληρού δίσκου όπως έχει διαμορφωθεί στο πρόγραμμα εγκατάστασης του BIOS. Τα 24 bit που εκχωρούνται από τη διεπαφή INT 13H για τις προδιαγραφές γεωμετρίας του δίσκου αναλύονται ως εξής:
- 10 bit για τον αριθμό του κυλίνδρου. Έτσι, το μέγιστο όριο του συνολικού αριθμού κυλίνδρων μπορεί να είναι έως και 1024 κυλίνδρους.
- 8 bit για τον αριθμό κεφαλής. Έτσι, το μέγιστο όριο του συνολικού αριθμού γκολ είναι μέχρι 256.
- 6 bit για τον αριθμό τομέα. Έτσι, ο μέγιστος συνολικός αριθμός τομέων μπορεί να είναι έως και 63 τομείς.
Έτσι, ο μέγιστος αριθμός τομέων που υποστηρίζονται από αυτήν την προσέγγιση μπορεί να φτάσει τους 1024 * 256 * 63 = 16515072.
Αυτό σημαίνει ότι η διεπαφή INT13H μπορεί να υποστηρίξει μονάδες δίσκου που περιέχουν έως και 16,5 εκατομμύρια τομείς περίπου, οι οποίοι στα 512 byte ανά τομέα έχουν ως αποτέλεσμα 8,46 GB κατ' ανώτατο όριο. Αυτό ακριβώς θέλω να εξηγήσω. Έτσι χρησιμοποιώντας όλες αυτές τις λειτουργίες ή το INT 13H μπορούμε να έχουμε πρόσβαση σε δίσκους μόνο έως 8,46 GB.
Αυτός είναι ο λόγος που, τα τελευταία χρόνια, οι περιορισμοί αυτής της παλιάς διεπαφής οδήγησαν στην εγκατάλειψή της προς όφελος ενός νέου τρόπου αντιμετώπισης των σκληρών δίσκων, ο οποίος περιγράφεται παρακάτω σε αυτό το κεφάλαιο.
Καταρχήν να σας πω μια ιστορία!
Πριν από έντεκα χρόνια, όταν ήμουν στην έβδομη τάξη, άκουσα για έναν σκληρό δίσκο 42 MB στο σχολείο μου, ίσως ήταν ο WDA-L42 της IBM. Ήταν πραγματικά δύσκολο για μένα και τους φίλους μου να φανταστούμε μια τόσο μεγάλη χωρητικότητα ενός σκληρού δίσκου εκείνη την εποχή.
Η μεθοδολογία INT 13H αναπτύχθηκε πριν από περίπου είκοσι χρόνια από σήμερα. Τώρα μπορείτε να δείτε ότι ένας σκληρός δίσκος 8 GB ήταν πολύ μεγαλύτερος από ό,τι θα μπορούσε να φανταστεί κανείς ακόμη και στα όνειρά του εκείνη την εποχή. Αλλά σήμερα, αν μιλάμε για σκληρό δίσκο 8 GB σε οποιονδήποτε χρήστη υπολογιστή, μπορεί να μην θέλει να τον χρησιμοποιήσει λέγοντας ότι έχει μικρή χωρητικότητα αποθήκευσης.
Αυτός είναι ο λόγος για τον οποίο η διεπαφή INT 13H έχει εξαντλήσει επιτέλους τη χρησιμότητά της στα σύγχρονα συστήματα. Το INT 13H χρησιμοποίησε 24 bit για να εκχωρήσει τη γεωμετρία του δίσκου και δυστυχώς δεν ήταν δυνατή η επέκταση της υπάρχουσας διεπαφής BIOS INT 13H, γιατί αν γινόταν, πολλά παλιά προϊόντα υλικού και λογισμικού θα σταματούσαν να λειτουργούν και μπορείτε να καταλάβετε ότι η σημερινή αγορά υπολογιστών δεν θα αντέξει ποτέ μια τόσο μεγάλη αλλαγή όταν εκατομμύρια παλιά προϊόντα λογισμικού και υλικού σταματήσουν να λειτουργούν.
Δεδομένης αυτής της συνθήκης, το INT 13H αντικαταστάθηκε από μια νεότερη διεπαφή που ονομάζεται επεκτάσεις INT 13H. Ωστόσο, το INT 13H μπορεί να εξακολουθεί να χρησιμοποιείται από το DOS και ορισμένα άλλα παλαιότερα λειτουργικά συστήματα και για άλλους σκοπούς συμβατότητας.
Η νέα διεπαφή INT 13H χρησιμοποιεί 64 bit αντί για 24 bit για διευθυνσιοδότηση και επιτρέπει μέγιστο μέγεθος σκληρού δίσκου 9,4 * 1021 byte, που είναι στην πραγματικότητα 9,4 τρισεκατομμύρια gigabyte ή 94000000000000 Gigabyte. Ας ελπίσουμε ότι μπορούμε τώρα να ηρεμήσουμε για λίγο μέχρι να ξεπεραστεί αυτό το όριο.
Μερικές σημαντικές λειτουργίες επέκτασης για τη διακοπή 13H περιγράφονται παρακάτω. Μπορείτε να χρησιμοποιήσετε αυτές τις λειτουργίες στον προγραμματισμό με τον ίδιο τρόπο που χρησιμοποιήσατε τις λειτουργίες INT 13H. Αυτός είναι και ο λόγος που αυτές οι λειτουργίες ονομάζονται επεκτάσεις INT 13H.
Επεκτάσεις INT 13H:
ΕΣΩΤΕΡΙΚΗ 13Ω (0x13)
Λειτουργία 1BH (0x1B ή 27) --> Λήψη κεφαλίδας παραγωγής (Σταθερός δίσκος ESDI)
Κλήση με: AH = 1BH
AL = αριθμός τομέων προς ανάγνωση
DL = κίνηση
ES:BX = Buffer για την κεφαλίδα παραγωγής
(κατάλογος ελαττωμάτων)
Επιστρέφει: Εάν η λειτουργία είναι επιτυχής
Φέρω σημαία = καθαρός
AH = 00X
Εάν η λειτουργία αποτύχει
Φέρω σημαία = σετ
AH = κατάσταση
Σχόλια:
Αυτή η λειτουργία χρησιμοποιείται για τη λήψη της κεφαλίδας κατασκευής του σταθερού δίσκου. Η πρώτη ανάγνωση του τομέα περιέχει την κεφαλίδα κατασκευής με τον αριθμό των καταχωρήσεων ελαττωμάτων και την αρχή του χάρτη ελαττωμάτων. Οι υπόλοιποι τομείς περιέχουν το υπόλοιπο του χάρτη ελαττωμάτων. Η μορφή κεφαλίδας κατασκευής (μορφή εγγραφής χάρτη ελαττωμάτων) βρίσκεται στην Τεχνική αναφορά μονάδων σταθερού δίσκου IBM 70MB, 115MB.
INT 13H (0x13)
Λειτουργία 1BH (0x1B ή 27) --> Λήψη δείκτη στο μπλοκ πληροφοριών δίσκου SCSI (μελλοντικός ελεγκτής SCSI τομέα)
Κλήση με: AH = 1BH
DL = αναγνωριστικό σκληρού δίσκου
Επιστρέφει: Εάν η λειτουργία είναι επιτυχής
Φέρω σημαία = καθαρός
AH = 01H
Εάν η λειτουργία είναι ανεπιτυχής
Φέρω σημαία = σετ
AH = κατάσταση
ES:BX = μπλοκ πληροφοριών δίσκου SCSI
Σχόλια:
Αυτή η συνάρτηση χρησιμοποιείται για τη λήψη του δείκτη στο μπλοκ πληροφοριών δίσκου SCSI. Αυτό ορίζει επίσης μια μη επαναρυθμιζόμενη σημαία που αποτρέπει την εμφάνιση ορισμένων μηνυμάτων ελεγκτή.
INT 13H (0x13)
Λειτουργία 1CH (0x1C ή 28) --> Λήψη δείκτη σε δωρεάν Ram Controller (Future Domain SCSI Controller)
Κλήση με: AH = 1CH
DL = αναγνωριστικό σκληρού δίσκου για οποιοδήποτε έγκυρο SCSI
σκληρός δίσκος
Επιστρέφει: Εάν η λειτουργία είναι επιτυχής
Φέρω σημαία = καθαρός
AH = 01H
Εάν η λειτουργία είναι ανεπιτυχής
Φέρω σημαία = σετ
AH = κατάσταση
ES:BX = πρώτο byte ελεύθερης μνήμης RAM στον ελεγκτή
Σχόλια:
Αυτή η λειτουργία χρησιμοποιείται για τη λήψη του δωρεάν ελεγκτή Ram. Το ES:BX δείχνει το πρώτο byte της ελεύθερης μνήμης RAM στον ελεγκτή, διαθέσιμο για άλλες χρήσεις. Το ES περιέχει το τμήμα στο οποίο βρίσκεται ο ελεγκτής. Οι δύο θύρες εισόδου/εξόδου που έχουν αντιστοιχιστεί στη μνήμη του ελεγκτή είναι σε μετατόπιση 1C00H και 1E00H.
INT 13H (0x13)
Λειτουργία 1C08H (0x1C08) --> Λήψη κατάστασης ολοκλήρωσης εντολών (Σταθερός δίσκος ESDI)
Κλήση με: AX = 1C08H
DL = δίσκος
ES:BX = buffer για Command Complete
Μπλοκ κατάστασης
Επιστροφή: Εάν η λειτουργία είναι επιτυχής
Φέρω σημαία = καθαρός
AH = 01H
Εάν η λειτουργία είναι ανεπιτυχής
Φέρω σημαία = σετ
AH = κατάσταση
Σχόλια:
Αυτή η συνάρτηση χρησιμοποιείται για τη λήψη της κατάστασης ολοκλήρωσης εντολών. Εάν η λειτουργία είναι επιτυχής, η σημαία μεταφοράς είναι καθαρή και εάν η σημαία μεταφοράς δεν είναι επιτυχής έχει οριστεί.
INT 13H (0x13)
Λειτουργία 1C09H (0x1C09) --> Λήψη κατάστασης συσκευής (Σταθερός δίσκος ESDI)
Κλήση με: AX = 1C09H
DL = δίσκος
ES:BX = buffer για το μπλοκ κατάστασης συσκευής
Επιστροφή: Εάν η λειτουργία είναι επιτυχής
Φέρω σημαία = καθαρός
AH = 01H
Εάν η λειτουργία είναι ανεπιτυχής
Φέρω σημαία = σετ
AH = κατάσταση
Σχόλια:
Αυτή η λειτουργία χρησιμοποιείται για τη λήψη της κατάστασης συσκευής. Εάν η λειτουργία είναι επιτυχής, η σημαία μεταφοράς είναι καθαρή και εάν η σημαία μεταφοράς δεν είναι επιτυχής έχει οριστεί.
INT 13H (0x13)
Λειτουργία 1C0AH (0x1C0A) --> Λήψη διαμόρφωσης συσκευής (Σταθερός δίσκος ESDI)
Κλήση με: AX = 1C0AH
DL = δίσκος
ES:BX = buffer για την κατάσταση διαμόρφωσης μονάδας δίσκου
Φραγμός
Επιστροφή: Εάν η λειτουργία είναι επιτυχής
Φέρω σημαία = καθαρός
AH = 01H
Εάν η λειτουργία είναι ανεπιτυχής
Φέρω σημαία = σετ
AH = κατάσταση
Σχόλια:
Αυτή η λειτουργία χρησιμοποιείται για τη λήψη της Διαμόρφωσης συσκευής για το δίσκο. Εάν η λειτουργία είναι επιτυχής, η σημαία μεταφοράς είναι καθαρή και ο καταχωρητής AH είναι 01H, διαφορετικά έχει οριστεί η σημαία μεταφοράς και ο καταχωρητής AH Επιστρέφει την κατάσταση. Ο παρακάτω πίνακας δείχνει τη Μορφή του μπλοκ κατάστασης διαμόρφωσης μονάδας ESDI:
Οφσετ
|
Μέγεθος
|
Περιγραφή
|
00H
|
Ψηφιόλεξη
|
09Η
|
01 Ω
|
Ψηφιόλεξη
|
αριθμός λέξεων στο μπλοκ (06H)
|
02H
|
Ψηφιόλεξη
|
σημαίες
|
03 Ω
|
Ψηφιόλεξη
|
αριθμός εφεδρικών τομέων ανά κύλινδρο
|
04Ω
|
Διπλή λέξη
|
συνολικός αριθμός χρησιμοποιήσιμων τομέων
|
08Ω
|
Λέξη
|
συνολικός αριθμός κυλίνδρων
|
0AH
|
Ψηφιόλεξη
|
τροχιές ανά κύλινδρο
|
0BH
|
Ψηφιόλεξη
|
τομείς ανά κομμάτι
|
INT 13H (0x13)
Λειτουργία 1C0BH (0x1C0B) --> Λήψη διαμόρφωσης προσαρμογέα (Σταθερός δίσκος ESDI)
Κλήση με: AX = 1C0BH
ES:BX = buffer για τη διαμόρφωση ελεγκτή
Μπλοκ κατάστασης
Επιστροφή: Εάν η λειτουργία είναι επιτυχής
Φέρω σημαία = καθαρός
AH = 01H
Εάν η λειτουργία είναι ανεπιτυχής
Φέρω σημαία = σετ
AH = κατάσταση
Σχόλια:
Αυτή η λειτουργία χρησιμοποιείται για τη λήψη της διαμόρφωσης προσαρμογέα. Εάν η λειτουργία είναι επιτυχής, η σημαία μεταφοράς είναι καθαρή και το AH είναι 01H, εάν έχει οριστεί η σημαία μεταφοράς χωρίς επιτυχία και το AH επιστρέφει την κατάσταση.
INT 13H (0x13)
Λειτουργία 1C0CH (0x1C0C) --> Λήψη πληροφοριών POS (Σταθερός δίσκος ESDI)
Κλήση με: AX = 1C0CH
ES:BX = buffer για την κατάσταση πληροφοριών POS
Φραγμός
Επιστροφή: Εάν η λειτουργία είναι επιτυχής
Φέρω σημαία = καθαρός
AH = 01H
Εάν η λειτουργία είναι ανεπιτυχής
Φέρω σημαία = σετ
AH = κατάσταση
Σχόλια:
Αυτή η λειτουργία χρησιμοποιείται για τη λήψη των πληροφοριών POS. Εάν η λειτουργία είναι επιτυχής, η σημαία μεταφοράς είναι καθαρή και το AH είναι 01H, εάν έχει οριστεί η σημαία μεταφοράς χωρίς επιτυχία και το AH επιστρέφει την κατάσταση.
INT 13H (0x13)
Λειτουργία 1C0EH (0x1C0E) --> Μετάφραση RBA σε ABA (Σταθερός δίσκος ESDI)
Κλήση με: AX = 1C0EH
CH = χαμηλό 8 bit αριθμού κυλίνδρου
CL = αριθμός τομέα (υψηλό δύο bit του
αριθμός κυλίνδρου στα bit 6 και 7)
DH = αριθμός κεφαλής
DL = αριθμός μονάδας δίσκου
ES:BX = ABA (Absolute Block Address)
αριθμός
Επιστροφή: Εάν η λειτουργία είναι επιτυχής
Φέρω σημαία = καθαρός
AH = 01H
Εάν η λειτουργία είναι ανεπιτυχής
Φέρω σημαία = σετ
AH = κατάσταση
Σχόλια:
Αυτή η συνάρτηση μεταφράζει το RBA (Διεύθυνση σχετικού μπλοκ) σε ABA (Διεύθυνση απόλυτου μπλοκ). Εάν η συνάρτηση είναι επιτυχής, η σημαία μεταφοράς είναι καθαρή και ο καταχωρητής AH είναι 01H, διαφορετικά έχει οριστεί το Carry Flag και το AH επιστρέφει την κατάσταση.
INT 13H (0x13)
Λειτουργία 20H (0x20 ή 32) --> Λήψη τρέχουσας μορφής πολυμέσων (Αφαιρούμενη συσκευή πολυμέσων Compaq ATAPI)
Κλήση με: AH = 20H
DL = αριθμός μονάδας δίσκου
Επιστροφή: Εάν η λειτουργία είναι επιτυχής,
Carry Flag = καθαρός
AL = τύπος μέσου
AH = 00H
Εάν η λειτουργία είναι ανεπιτυχής,
CF = σύνολο
AH = κωδικός σφάλματος
Σχόλια:
Αυτή η λειτουργία χρησιμοποιείται για τη λήψη της τρέχουσας μορφής πολυμέσων. Οι τιμές για τον τύπο μέσου δισκέτας Compaq/ATAPI έχουν δοθεί στον ακόλουθο πίνακα:
Αξία
|
Μέσα ενημέρωσης
|
03 Ω
|
720K (1M χωρίς μορφοποίηση)
|
04Ω
|
1,44 εκατ. (2 εκατ. χωρίς μορφοποίηση)
|
06Ω
|
2,88 εκατ. (4 εκατ. χωρίς μορφοποίηση)
|
0CH
|
360 χιλ
|
0DH
|
1,2 εκ
|
0EH
|
Toshiba 3 mode
|
0FH
|
Λειτουργία NEC 3 (1024 byte ανά τομέα)
|
10Η
|
Αφαιρούμενη συσκευή πολυμέσων ATAPI
|
INT 13H (0x13)
Λειτουργία 21H (0x21 ή 33) --> Ανάγνωση πολλαπλών τομέων δίσκων (PS και PS/2, Σκληροί Δίσκοι)
Κλήση με: AH = 21H
AL = αριθμός τομέων προς ανάγνωση
CH = χαμηλό byte αριθμού κυλίνδρου 12 bit
CL = αρχικός τομέας (bit 0 έως 5) και bit 8
και 9 του κυλίνδρου (bit 6 και 7)
DH = αριθμός κεφαλής (bit 0 έως 5) και bit 10
και 11 του κυλίνδρου (bit 6 και 7)
DL = αριθμός μονάδας δίσκου
ES:BX = Προσωρινή μνήμη δεδομένων προς ανάγνωση
Επιστροφή: Εάν η λειτουργία είναι επιτυχής,
Φέρω σημαία = καθαρός
ES:BX = Συμπληρωμένη προσωρινή μνήμη δεδομένων
Εάν η λειτουργία είναι ανεπιτυχής,
Φέρω σημαία = σετ
AH = κατάσταση
Σχόλια:
Η συνάρτηση χρησιμοποιείται για την ανάγνωση πολλών τομέων δίσκου χρησιμοποιώντας τη λειτουργία πολλαπλών μπλοκ, η οποία δημιουργεί μια διακοπή μόνο μετά το τέλος της μεταφοράς μιας ομάδας τομέων και όχι μετά από κάθε τομέα.
INT 13H (0x13)
Λειτουργία 22H (0x22 ή 34) --> Εγγραφή πολλαπλών τομέων δίσκων (PS και PS/2, Σκληροί Δίσκοι)
Κλήση με: AH = 22H
AL = αριθμός τομέων που θα γραφούν
CH = χαμηλό byte αριθμού κυλίνδρου 12 bit
CL = αρχικός τομέας (bit 0 έως 5) και bit 8
και 9 του κυλίνδρου (bit 6 και 7)
DH = αριθμός κεφαλής (bit 0 έως 5) και bit 10
και 11 του κυλίνδρου (bit 6 και 7)
DL = αριθμός μονάδας δίσκου
ES:BX = buffer που περιέχει δεδομένα προς εγγραφή
Επιστροφή: Εάν η λειτουργία είναι επιτυχής,
Carry Flag = καθαρός
AH = 01H
Εάν η λειτουργία είναι ανεπιτυχής,
Carry Flag = Σετ
AH = Κατάσταση
Σχόλια:
Η συνάρτηση χρησιμοποιείται για την εγγραφή πολλών τομέων δίσκου χρησιμοποιώντας τη λειτουργία πολλαπλών μπλοκ, η οποία δημιουργεί μια διακοπή μόνο μετά το τέλος της μεταφοράς μιας ομάδας τομέων και όχι μετά από κάθε τομέα.
INT 13H (0x13)
Λειτουργία 22H (0x22 ή 34) --> Ενεργοποίηση/Απενεργοποίηση προσωρινής μνήμης (QuickCache II v4.20)
Κλήση με: AH = 22H
AL = νέα κατάσταση (00H, εάν είναι απενεργοποιημένη και 01H,
εάν είναι ενεργοποιημένο)
Επιστροφή: Εάν η λειτουργία είναι επιτυχής,
AX = 0000H
Εάν η λειτουργία είναι ανεπιτυχής,
AX = κατάσταση
Σχόλια:
Αυτή η λειτουργία Ενεργοποιεί ή/και απενεργοποιεί την προσωρινή αποθήκευση όλων των μονάδων δίσκου. Εάν η συνάρτηση είναι επιτυχής, ο καταχωρητής AX είναι 0000H διαφορετικά επιστρέφει την κατάσταση.
INT 13H (0x13)
Λειτουργία 23H (0x23 ή 35) --> Ρύθμιση εγγραφής δυνατοτήτων ελεγκτή (PS και PS/2, Σκληρός Δίσκος)
Κλήση με: AH = 23H
AL = αριθμός χαρακτηριστικού
DL = αριθμός μονάδας δίσκου
Επιστροφή: Εάν η λειτουργία είναι επιτυχής,
Carry Flag = Καθαρό
Εάν η λειτουργία είναι ανεπιτυχής,
Carry Flag = Σετ
AH = Κατάσταση
Σχόλια:
Αυτή η συνάρτηση χρησιμοποιείται για τη ρύθμιση του καταχωρητή χαρακτηριστικών του ελεγκτή. Εάν η λειτουργία είναι επιτυχής, η σημαία μεταφοράς είναι καθαρή και εάν η σημαία μεταφοράς δεν είναι επιτυχής έχει οριστεί και ο καταχωρητής AH επιστρέφει την κατάσταση
INT 13H (0x13)
Λειτουργία 24 Ω (0x24 ή 36) --> Ρύθμιση πολλαπλών – Λειτουργία μεταφοράς (Σκληρός Δίσκος, PS και PS/2)
Κλήση με: AH = 24H
AL = αριθμός τομέων ανά μπλοκ
DL = αριθμός μονάδας δίσκου
Επιστροφή: Εάν η λειτουργία είναι επιτυχής,
Carry Flag = Καθαρό
Εάν η λειτουργία είναι ανεπιτυχής,
Carry Flag = Σετ
AH = Κατάσταση
Σχόλια:
Αυτή η λειτουργία χρησιμοποιείται για να ρυθμίσετε τη λειτουργία πολλαπλής μεταφοράς. Εάν θέλετε να απενεργοποιήσετε τη λειτουργία πολλαπλών – μεταφοράς, ορίστε τον αριθμό των τομέων σε 0. Η μέγιστη τιμή για το μέγεθος του μπλοκ (όπως 2,4,6,8 και 16 κ.λπ.) εξαρτάται από τον τύπο σταθερής μονάδας δίσκου.
Η τιμή αποθηκεύεται σε byte 15H του πίνακα παραμέτρων σταθερής μονάδας δίσκου που δημιουργείται από το POST (Power On Self-Test). Το byte στη διεύθυνση 0040H:0074H έχει οριστεί σε κατάσταση λειτουργίας. Οι τιμές για τον αριθμό χαρακτηριστικών του σκληρού δίσκου PS/1 παρατίθενται στον παρακάτω πίνακα:
Αξία
|
Περιγραφή
|
01 Ω
|
Επιλέξτε μεταφορές δεδομένων 8 bit αντί για 16 bit
|
02H
|
Ενεργοποίηση κρυφής μνήμης εγγραφής
|
22Ω
|
Γράψτε την ίδια περιοχή που καθορίζεται από τον χρήστη
|
33Η
|
Απενεργοποιήστε τις επαναλήψεις
|
44Ω
|
Ορίστε τον αριθμό των byte ECC για μακρά ανάγνωση/εγγραφή
|
54Η
|
Ορισμός τμημάτων κρυφής μνήμης
|
55Η
|
Απενεργοποιήστε το look μπροστά
|
66Η
|
Απενεργοποιήστε την επαναφορά στις προεπιλογές ενεργοποίησης
|
77Η
|
Απενεργοποιήστε τη διόρθωση σφαλμάτων
|
81Η
|
Επιλέξτε μεταφορές δεδομένων 16 bit (προεπιλογή)
|
82Η
|
Απενεργοποιήστε την προσωρινή μνήμη εγγραφής
|
88Η
|
Ενεργοποίηση διόρθωσης σφαλμάτων (προεπιλογή)
|
99Η
|
Ενεργοποίηση επαναλήψεων (προεπιλογή)
|
AAH
|
Ενεργοποίηση ματιά μπροστά
|
BBH
|
Ορίστε το μήκος ECC για μακρά ανάγνωση/εγγραφή σε τέσσερα byte
|
CCH
|
Ενεργοποιήστε την επαναφορά στις προεπιλογές ενεργοποίησης
|
DDH
|
Γράψτε το ίδιο, ολόκληρος ο δίσκος
|
INT 13H (0x13)
Συνάρτηση 24 Ω (0x24 ή 36) --> Σύνολο τομέων (QuickCache II v4.20)
Κλήση με: AX = 24H
BX = Νέος αριθμός προσωρινών αποθεμάτων τομέα
κρύπτη
Επιστροφή: Εάν η λειτουργία είναι επιτυχής,
AX = 0000H
Εάν η λειτουργία είναι ανεπιτυχής,
AX = Κατάσταση
Σχόλια:
Αυτή η συνάρτηση χρησιμοποιείται για τον ορισμό των Τομέων. Εάν η συνάρτηση είναι επιτυχής, ο καταχωρητής AX είναι 0000H διαφορετικά το AX επιστρέφει την Κατάσταση.
INT 13H (0x13)
Λειτουργία 25H (0x25 ή 37) --> Αναγνώριση μονάδας (Σκληρός Δίσκος, PS και PS/2)
Κλήση με: AH = 25H
DL = Αριθμός μονάδας δίσκου
ES:BX = Buffer 512 byte για το πακέτο απάντησης
Επιστροφή: Εάν η λειτουργία είναι επιτυχής,
Carry Flag = Καθαρό
Buffer γεμάτο με μπλοκ πληροφοριών μονάδας δίσκου
Εάν η λειτουργία είναι ανεπιτυχής,
Carry Flag = Σετ
AH = Κατάσταση
Σχόλια:
Αυτή η λειτουργία χρησιμοποιείται για την αναγνώριση της μονάδας δίσκου. Το byte στη διεύθυνση 0040h:0074h ορίζεται στην κατάσταση της λειτουργίας. Η IBM ταξινομεί επίσημα αυτή τη λειτουργία ως προαιρετική. Τα πεδία Bit για τη γενική διαμόρφωση μονάδας δίσκου έχουν δοθεί στον ακόλουθο πίνακα:
Bit(α)
|
Περιγραφή
|
0
|
Κράτηση (0)
|
1
|
Σκληρός τομέας
|
2
|
Μαλακό τομέα
|
3
|
Δεν έχει κωδικοποίηση MFM
|
4
|
Χρόνος μεταγωγής κεφαλής μεγαλύτερος από 15 msec
|
5
|
Εφαρμόστηκε η επιλογή ελέγχου κινητήρα ατράκτου
|
6
|
Σταθερή μονάδα δίσκου
|
7
|
Αφαιρούμενη μονάδα φυσιγγίου
|
8
|
Ο ρυθμός μεταφοράς δίσκου είναι μικρότερος ή ίσος με 5 Mbs
|
9
|
Ο ρυθμός μεταφοράς δίσκου είναι μεγαλύτερος από 5 Mbs αλλά μικρότερος ή ίσος με 10 Mbs
|
10
|
Ο ρυθμός μεταφοράς δίσκου είναι μεγαλύτερος από 10 Mbs
|
11
|
Η ανοχή ταχύτητας περιστροφής είναι μεγαλύτερη από 0,5%
|
12
|
Διατίθεται η επιλογή μετατόπισης στροβοσκοπίου δεδομένων
|
13
|
Διατίθεται η επιλογή μετατόπισης κομματιού
|
14
|
Απαιτείται κενό ανοχής ταχύτητας μορφής
|
15
|
Προορίζεται για μη μαγνητικούς δίσκους (0)
|
Η περιγραφή του μπλοκ πληροφοριών Μορφή μονάδας δίσκου όπως δίνεται στην προδιαγραφή ATA (Συνημμένο AT) έχει δοθεί στον επόμενο πίνακα:
Οφσετ
|
Μέγεθος
|
Περιγραφή
|
00H
|
ΛΕΞΗ
|
Γενική διαμόρφωση μονάδας δίσκου
|
02H
|
ΛΕΞΗ
|
Αριθμός κυλίνδρων
|
04Ω
|
ΛΕΞΗ
|
Ρεζερβέ
|
06Ω
|
ΛΕΞΗ
|
Αριθμός κεφαλών
|
08Ω
|
ΛΕΞΗ
|
Αριθμός μη μορφοποιημένων byte ανά κομμάτι
|
0AH
|
ΛΕΞΗ
|
Αριθμός μη μορφοποιημένων byte ανά τομέα
|
0CH
|
ΛΕΞΗ
|
Αριθμός τομέων ανά κομμάτι
|
0EH
|
6 BYTES
|
Πωλητής μοναδικός
|
14Ω
|
20 BYTES
|
Σειριακός αριθμός σε ASCII, (0000H=δεν καθορίζεται)
|
28Ω
|
ΛΕΞΗ
|
Τύπος buffer
|
2AH
|
ΛΕΞΗ
|
Μέγεθος buffer σε προσαυξήσεις 512 byte (0000H=δεν καθορίζεται)
|
2CH
|
ΛΕΞΗ
|
Αριθμός byte ECC που διαβιβάστηκαν στις εντολές Read/Write Long 0000H = δεν έχει καθοριστεί
|
2EH
|
8 BYTES
|
Αναθεώρηση υλικολογισμικού σε ASCII, 0000H=δεν καθορίζεται
|
36Η
|
40 BYTES
|
Αριθμός μοντέλου σε ASCII, 0000H=δεν καθορίζεται
|
5EH
|
ΛΕΞΗ
|
Bit 15-8 Vendor Unique, bit 7-0, (εάν 00H = Read/Write Multiple commands not Implemented, αλλιώς xxH = Μέγιστος αριθμός τομέων που μπορούν να μεταφερθούν ανά διακοπή σε Read and Write Multiple Commands)
|
60Η
|
ΛΕΞΗ
|
0000H = Δεν είναι δυνατή η εκτέλεση Doubleword I/O, 0001H = Δυνατότητα εκτέλεσης Doubleword I/O.
|
62Η
|
ΛΕΞΗ
|
Bit 15-9 (0=δεσμευμένο), bit 8 (1=DMA υποστηρίζεται), Bit 7-0 Vendor Unique.
|
64Η
|
ΛΕΞΗ
|
Ρεζερβέ
|
66Η
|
ΛΕΞΗ
|
Λειτουργία χρονισμού κύκλου μεταφοράς δεδομένων Bits 15-8 PIO, Μοναδικός προμηθευτής Bits 7-0
|
68Η
|
ΛΕΞΗ
|
Λειτουργία χρονισμού κύκλου μεταφοράς δεδομένων Bits 15-8 DMA, Μοναδικός προμηθευτής Bits 7-0
|
6 ΑΧ
|
ΛΕΞΗ
|
Δεσμευμένα bit 15-1, bit 0 (1=τα πεδία που αναφέρονται σε λειτουργία μετάφρασης είναι έγκυρα, 0=τα πεδία που αναφέρονται σε λειτουργία μετάφρασης μπορεί να είναι έγκυρα)
|
6CH
|
ΛΕΞΗ
|
Αριθμός κυλίνδρων ρεύματος
|
6ΕΗ
|
ΛΕΞΗ
|
Αριθμός τρεχουσών κεφαλών
|
70Η
|
ΛΕΞΗ
|
Αριθμός τρεχόντων τομέων ανά κομμάτι
|
72Η
|
DWORD
|
Τρέχουσα ικανότητα σε τομείς
|
76Η
|
>ΛΕΞΗ
|
Ρεζερβέ
|
78Η
|
136 BYTES
|
Δεν ορίζεται
|
100H
|
64 BYTES
|
Πωλητής μοναδικός
|
140Η
|
96 BYTES
|
Ρεζερβέ
|
INT 13H (0x13)
Λειτουργία 25H (0x25 ή 37) --> Ορισμός διαστήματος έκπλυσης (QuickCache II v4.20)
Κλήση με: AH = 25H
BX = Διάστημα έκπλυσης
Επιστροφή: Εάν η λειτουργία είναι επιτυχής,
AH = 0000H
Εάν η λειτουργία είναι ανεπιτυχής,
AH = κατάσταση
Σχόλια:
Αυτή η λειτουργία χρησιμοποιείται για τη ρύθμιση του διαστήματος έκπλυσης. Εάν η συνάρτηση είναι επιτυχής, το AH είναι 0000H διαφορετικά το AH επιστρέφει την κατάσταση.
INT 13H (0x13)
Λειτουργία 26H (0x26 ή 38) --> QuickCache II v4.20 Uninstall
Κλήση με: AH = 26H
Επιστροφή: Εάν η λειτουργία είναι επιτυχής,
AX = 0000H
Εάν η λειτουργία είναι ανεπιτυχής,
AX = κατάσταση
Σχόλια:
Το AX επιστρέφει την κατάσταση από 0001H σε 00FFH για διάνυσμα διακοπής που αγκιστρώθηκε από άλλο TSR
INT 13H (0x13)
Λειτουργία 27H (0x27 ή 39) --> Έλεγχος εγκατάστασης (QuickCache II v4.20)
Κλήση με: AH = 27H
BX = 0000H
Επιστροφή: BH = Major Έκδοση
BL = Δυαδική δευτερεύουσα έκδοση
Εάν εγκατασταθεί,
AX = 0000H
ΒΧ = Μη μηδενικό
Σχόλια:
Εάν εγκατασταθεί, ο καταχωρητής AX είναι 0000H και το BX επιστρέφει τιμή μη μηδενική.
INT 13H (0x13)
Λειτουργία 28H (0x28 ή 40) --> Ορισμός αυτόματης αποσυναρμολόγησης (QuickCache II v4.20)
Κλήση με: AH = 28H
AL = Νέα Πολιτεία
Επιστροφή: Εάν η λειτουργία είναι επιτυχής,
AX = 0000H
Εάν η λειτουργία είναι ανεπιτυχής,
AX = Κατάσταση
Σχόλια:
Καλέστε τη λειτουργία με AL = 00H για Απενεργοποίηση και με AL = 01H για Ενεργοποίηση.
INT 13H (0x13)
Λειτουργία 29H (0x29 ή 41) --> Χωρίς λειτουργία (QuickCache II v4.20)
Κλήση με: AH = 29H
Επιστροφή: AX = 0000H
INT 13H (0x13)
Λειτουργία 2AH (0x2A ή 42) --> Ορισμός μεγέθους buffer (QuickCache II v4.20)
Κλήση με: AH = 2AH
AL = Μέγεθος buffer
Επιστροφή: Εάν η λειτουργία είναι επιτυχής,
AX = 0000H
Εάν η λειτουργία είναι ανεπιτυχής,
AX = Κατάσταση
Σχόλια:
Αυτή η συνάρτηση χρησιμοποιείται για να ορίσετε το μέγεθος του buffer. Εάν η συνάρτηση είναι επιτυχής, το AX είναι 0000H, εάν το AX δεν είναι επιτυχές επιστρέφει την κατάσταση.
INT 13H (0x13)
Λειτουργία 2BH (0x2B ή 43) --> Ήχοι πρόσβασης μονάδας δίσκου (QuickCache II v4.20)
Κλήση με: AH = 2BH
AL = νέα κατάσταση (00h απενεργοποιημένη, 01h
ενεργοποιημένο)
Επιστροφή: Εάν η λειτουργία είναι επιτυχής,
AX = 0000H
Εάν η λειτουργία είναι ανεπιτυχής,
AX = Κατάσταση
Σχόλια:
Εάν η συνάρτηση είναι επιτυχής, το AX είναι 0000H, εάν το AX δεν είναι επιτυχές επιστρέφει την κατάσταση. Κλήση λειτουργίας με AL = 00H για απενεργοποίηση και AL = 01H για ενεργοποίηση ήχων πρόσβασης μονάδας
INT 13H (0x13)
Λειτουργία 2CH (0x2C ή 44) --> Ορισμός εγγραφής σε προσωρινή μνήμη (QuickCache II v4.20)
Κλήση με: AH = 2CH
AL = νέο κράτος
Επιστροφή: Εάν η λειτουργία είναι επιτυχής,
AX = 0000H
Εάν η λειτουργία είναι ανεπιτυχής,
AX = Κατάσταση
Σχόλια:
Αυτή η λειτουργία ενεργοποιεί ή απενεργοποιεί τις καθυστερημένες εγγραφές για όλες τις μονάδες δίσκου. Χρησιμοποιήστε AH=38H για να αλλάξετε μία μονάδα. Χρησιμοποιήστε AL = 00H για Απενεργοποίηση και 01H για Ενεργοποίηση.
INT 13H (0x13)
Λειτουργία 2DH (0x2D ή 45) --> Ορισμός ανάγνωσης προσωρινής αποθήκευσης (QuickCache II v4.20)
Κλήση με: AH = 2Dh
AL = νέα κατάσταση (00h απενεργοποιημένη, 01h
ενεργοποιημένο)
Επιστροφή: Εάν η λειτουργία είναι επιτυχής,
AX = 0000H
Εάν η λειτουργία είναι ανεπιτυχής,
AX = Κατάσταση
Σχόλια:
Αυτή η λειτουργία ενεργοποιεί ή απενεργοποιεί την εκ των προτέρων ανάγνωση για όλες τις μονάδες δίσκου. Χρησιμοποιήστε AL = 00H για Απενεργοποίηση και AL = 01H για Ενεργοποίηση. Χρησιμοποιήστε AH=37H για να αλλάξετε μία μονάδα.
INT 13H (0x13)
Λειτουργία 2EH (0x2E ή 46) --> Ορισμός μέτρησης έκπλυσης (QuickCache II v4.20)
Κλήση με: AH = 2EH
BX = Καταμέτρηση έκπλυσης
Επιστροφή: Εάν η λειτουργία είναι επιτυχής,
AX = 0000H
Εάν η λειτουργία είναι ανεπιτυχής,
AX = Κατάσταση
Σχόλια:
Αυτή η συνάρτηση χρησιμοποιείται για τη ρύθμιση του Flush Count. Εάν η συνάρτηση είναι επιτυχής, το AX είναι 0000H, εάν το AX δεν είναι επιτυχές επιστρέφει την κατάσταση.
INT 13H (0x13)
Λειτουργία 2FH (0x2F ή 47) --> Επιβολή άμεσης αυξητικής έκπλυσης (QuickCache II v4.20)
Κλήση με: AH = 2FH
Επιστροφή: Εάν η λειτουργία είναι επιτυχής,
AX = 0000H
Εάν η λειτουργία είναι ανεπιτυχής,
AX = Κατάσταση
Σχόλια:
Εάν η συνάρτηση είναι επιτυχής, το AX είναι 0000H, εάν το AX δεν είναι επιτυχές επιστρέφει την κατάσταση.
INT 13H (0x13)
Λειτουργία 30H (0x30 ή 48) --> Λήψη πληροφοριών (QuickCache II v4.20)
Κλήση με: AH = 30H
AL = Αριθμός πληροφοριών (Δείτε τον Πίνακα στο
Σχόλια)
DS:DX = buffer για πληροφορίες
Επιστροφή: Εάν η λειτουργία είναι επιτυχής,
AX = 0000H
Εάν η λειτουργία είναι ανεπιτυχής,
AX = Κατάσταση
Σχόλια:
Αυτή η συνάρτηση χρησιμοποιείται για τη λήψη του διαφορετικού τύπου πληροφοριών σχετικά με το σύστημα, που καθορίζονται από την AL. Εάν η συνάρτηση είναι επιτυχής, το AX είναι 0000H, εάν το AX δεν είναι επιτυχές επιστρέφει την κατάσταση. Το AX = 8000H υποδεικνύει τον μη έγκυρο προσδιοριστή πληροφοριών. Οι αριθμοί πληροφοριών που πρέπει να καθοριστούν στο AL, παρατίθενται στον ακόλουθο πίνακα:
Αξία
|
Περιγραφή
|
00H
|
Πληροφορίες συστήματος
|
01 Ω
|
Πληροφορίες οδήγησης
|
02H
|
Συχνότητα πρόσβασης (Πίνακας 30 λέξεων)
|
03 Ω
|
Ευρετήριο μονάδας δίσκου (Πίνακας 32 byte που υποδεικνύει μονάδα BIOS για μονάδα DOS)
|
INT 13H (0x13)
Λειτουργία 31H (0x31 ή 49) --> Reserve Memory (QuickCache II v4.20)
Κλήση με: AH = 31H
BX = Αριθμός παραγράφων του
συμβατική μνήμη για κράτηση
Εφαρμογές.
Επιστροφή: Εάν η λειτουργία είναι επιτυχής,
AX = 0000H
Εάν η λειτουργία είναι ανεπιτυχής,
AX = Κατάσταση
Σχόλια:
Αυτή η λειτουργία χρησιμοποιείται για την κράτηση της μνήμης για εφαρμογές. Εάν η συνάρτηση είναι επιτυχής, το AX είναι 0000H, εάν το AX δεν είναι επιτυχές επιστρέφει την κατάσταση.
INT 13H (0x13)
Λειτουργία 32H (0x32 ή 50) --> Ενεργοποίηση προσωρινής αποθήκευσης για συγκεκριμένο δίσκο (QuickCache II v4.20)
Κλήση με: AH = 32H
AL = αριθμός μονάδας δίσκου
Επιστροφή: Εάν η λειτουργία είναι επιτυχής,
AX = 0000H
Εάν η λειτουργία είναι ανεπιτυχής,
AX = Κατάσταση
Σχόλια:
Αυτή η λειτουργία χρησιμοποιείται για την ενεργοποίηση της προσωρινής αποθήκευσης για συγκεκριμένη μονάδα δίσκου. Για παράδειγμα, καλέστε τη Συνάρτηση με AL = 00H για A: και ούτω καθεξής. Εάν η συνάρτηση είναι επιτυχής, το AX είναι 0000H, εάν το AX δεν είναι επιτυχές επιστρέφει την κατάσταση.
INT 13H (0x13)
Λειτουργία 33H (0x33 ή 51) --> Απενεργοποίηση προσωρινής αποθήκευσης για συγκεκριμένη μονάδα δίσκου (QuickCache II v4.20)
Κλήση με: AH = 33H
AL = αριθμός μονάδας δίσκου
Επιστροφή: Εάν η λειτουργία είναι επιτυχής,
AX = 0000H
Εάν η λειτουργία είναι ανεπιτυχής,
AX = Κατάσταση
Σχόλια:
Αυτή η λειτουργία χρησιμοποιείται για την απενεργοποίηση της προσωρινής αποθήκευσης για συγκεκριμένη μονάδα δίσκου. Για παράδειγμα, καλέστε τη Συνάρτηση με AL = 00H για A: και ούτω καθεξής. Εάν η συνάρτηση είναι επιτυχής, το AX είναι 0000H, εάν το AX δεν είναι επιτυχές επιστρέφει την κατάσταση.
INT 13H (0x13)
Λειτουργία 34H (0x34 ή 52) --> Κλείδωμα/Ξεκλείδωμα Τομέα(ες) (QuickCache II v4.20)
Κλήση με: AH = 34H
AL = Αριθμός λειτουργίας κλειδώματος/ξεκλειδώματος
(Δείτε τον πίνακα που δίνεται στα σχόλια)
Επιστροφή: Εάν η λειτουργία είναι επιτυχής,
AX = 0000H
Εάν η λειτουργία είναι ανεπιτυχής,
AX = Κατάσταση
Σχόλια:
Αυτή η λειτουργία χρησιμοποιείται για την κλήση λειτουργιών κλειδώματος/ξεκλειδώματος τομέων, που καθορίζονται από το AL. Εάν η συνάρτηση είναι επιτυχής, το AX είναι 0000H, εάν το AX δεν είναι επιτυχές επιστρέφει την κατάσταση. Οι διαφορετικοί αριθμοί συναρτήσεων που πρέπει να καλούνται με AL έχουν δοθεί στον ακόλουθο πίνακα:
Αξία
|
Λειτουργία
|
00H
|
Κλείδωμα/ξεκλείδωμα τερματικού τομέα
|
01 Ω
|
Κλείδωμα όλων των τομέων στους οποίους έχετε πρόσβαση στην κρυφή μνήμη
|
02H
|
Ξεκλειδώστε όλους τους τομείς στους οποίους έχετε πρόσβαση και απορρίψτε την από την προσωρινή μνήμη
|
INT 13H (0x13)
Λειτουργία 35H (0x35 ή 53) --> Ορισμός μεγέθους πισίνας κλειδώματος (QuickCache II v4.20)
Κλήση με: AH = 35H
BX = Αριθμός τομέων στο lock pool
Επιστροφή: Εάν η λειτουργία είναι επιτυχής,
AX = 0000H
Εάν η λειτουργία είναι ανεπιτυχής,
AX = Κατάσταση
Σχόλια:
Αυτή η λειτουργία χρησιμοποιείται για τον καθορισμό του μεγέθους της πισίνας κλειδώματος. Εάν η συνάρτηση είναι επιτυχής, το AX είναι 0000H, εάν το AX δεν είναι επιτυχές επιστρέφει την κατάσταση.
INT 13H (0x13)
Συνάρτηση 36H (0x36 ή 54) --> Ορισμός μεγέθους προσωρινής μνήμης ίχνους
Κλήση με: AH = 36H
AL = Νέο μέγεθος προσωρινής μνήμης ίχνους
Επιστροφή: Εάν η λειτουργία είναι επιτυχής,
AX = 0000H
Εάν η λειτουργία είναι ανεπιτυχής,
AX = Κατάσταση
Σχόλια:
Αυτή η συνάρτηση χρησιμοποιείται για τον ορισμό του Trace Buffer Size. Εάν η συνάρτηση είναι επιτυχής, το AX είναι 0000H, εάν το AX δεν είναι επιτυχές επιστρέφει την κατάσταση. Αυτή η συνάρτηση συνήθως καλείται με τη συνάρτηση 24H του INT 13H με AL=05H.
INT 13H (0x13)
Λειτουργία 37H (0x37 ή 55) --> Ορισμός αναγνώσεων προσωρινής αποθήκευσης για συγκεκριμένο δίσκο (QuickCache II v4.20)
Κλήση με: AH = 37H
AL = Νέα κατάσταση
DL = Αριθμός μονάδας δίσκου
Επιστροφή: Εάν η λειτουργία είναι επιτυχής,
AX = 0000H
Εάν η λειτουργία είναι ανεπιτυχής,
AX = Κατάσταση
Σχόλια:
Αυτή η συνάρτηση χρησιμοποιείται για τον ορισμό αναγνώσεων προσωρινής αποθήκευσης για συγκεκριμένο Drive. Εάν AL = 00H η κατάσταση είναι ενεργοποιημένη, διαφορετικά απενεργοποιήστε. Εάν η συνάρτηση είναι επιτυχής, το AX είναι 0000H, εάν το AX δεν είναι επιτυχές επιστρέφει την κατάσταση.
INT 13H (0x13)
Λειτουργία 38H (0x38 ή 56) --> Ορισμός εγγραφών προσωρινής αποθήκευσης για συγκεκριμένη μονάδα δίσκου (QuickCache II v4.20)
Κλήση με: AH = 38H
AL = Νέα κατάσταση
DL = Αριθμός μονάδας δίσκου
Επιστροφή: Εάν η λειτουργία είναι επιτυχής,
AX = 0000H
Εάν η λειτουργία είναι ανεπιτυχής,
AX = Κατάσταση
Σχόλια:
Αυτή η συνάρτηση χρησιμοποιείται για τον ορισμό εγγραφών σε προσωρινή μνήμη για συγκεκριμένο Drive. Εάν AL = 00H η κατάσταση είναι ενεργοποιημένη, διαφορετικά απενεργοποιήστε. Εάν η συνάρτηση είναι επιτυχής, το AX είναι 0000H, εάν το AX δεν είναι επιτυχές επιστρέφει την κατάσταση.
INT 13H (0x13)
Λειτουργία 39H (0x39 ή 57) --> Ορισμός μεγέθους buffer ανάγνωσης για συγκεκριμένη μονάδα δίσκου (QuickCache II v4.20)
Κλήση με: AH = 39H
AL = Νέο μέγεθος buffer ανάγνωσης
DL = Αριθμός μονάδας δίσκου
Επιστροφή: Εάν η λειτουργία είναι επιτυχής,
AX = 0000H
Εάν η λειτουργία είναι ανεπιτυχής,
AX = Κατάσταση
Σχόλια:
Αυτή η συνάρτηση χρησιμοποιείται για να ορίσετε το μέγεθος της προσωρινής μνήμης ανάγνωσης για συγκεκριμένη μονάδα δίσκου, όπως DL = 00H για A: και ούτω καθεξής. Εάν η συνάρτηση είναι επιτυχής, το AX είναι 0000H, εάν το AX δεν είναι επιτυχές επιστρέφει την κατάσταση.
INT 13H (0x13)
Λειτουργία 3AH (0x3A ή 58) --> Ορισμός μεγέθους buffer εγγραφής για συγκεκριμένη μονάδα δίσκου (QuickCache II v4.20)
Κλήση με: AH = 3AH
AL = Νέο μέγεθος buffer εγγραφής
DL = Αριθμός μονάδας δίσκου
Επιστροφή: Εάν η λειτουργία είναι επιτυχής,
AX = 0000H
Εάν η λειτουργία είναι ανεπιτυχής,
AX = Κατάσταση
Σχόλια:
Αυτή η συνάρτηση χρησιμοποιείται για τον ορισμό του μεγέθους buffer εγγραφής για Συγκεκριμένη μονάδα δίσκου, όπως DL = 00H για A: και ούτω καθεξής. Εάν η συνάρτηση είναι επιτυχής, το AX είναι 0000H, εάν το AX δεν είναι επιτυχές επιστρέφει την κατάσταση.
INT 13H (0x13)
Λειτουργία 3DH (0x3D ή 61) --> Ενεργοποίηση/απενεργοποίηση κυλίνδρου έκπλυσης για μονάδα δίσκου (QuickCache II v4.20)
Κλήση με: AH = 3DH
AL = Νέα κατάσταση
DL = αριθμός μονάδας δίσκου
Επιστροφή: Εάν η λειτουργία είναι επιτυχής,
AX = 0000H
Εάν η λειτουργία είναι ανεπιτυχής,
AX = Κατάσταση
Σχόλια:
Αυτή η λειτουργία χρησιμοποιείται για την ενεργοποίηση/απενεργοποίηση της έκπλυσης κυλίνδρων για συγκεκριμένους δίσκους, όπως DL = 00H για A: και ούτω καθεξής. Εάν η συνάρτηση είναι επιτυχής, το AX είναι 0000H, εάν το AX δεν είναι επιτυχές επιστρέφει την κατάσταση. Εάν ο καταχωρητής AL έχει οριστεί σε 01H, η κατάσταση είναι ενεργοποιημένη, αλλιώς απενεργοποιείται.
INT 13H (0x13)
Λειτουργία 3EH (0x3E ή 62) --> Ορισμός μπόνους ενός τομέα (QuickCache II v4.20)
Κλήση με: AH = 3EH
AL = Νέα αξία για μπόνους
Επιστροφή: Εάν η λειτουργία είναι επιτυχής,
AX = 0000H
Εάν η λειτουργία είναι ανεπιτυχής,
AX = Κατάσταση
Σχόλια:
Αυτή η συνάρτηση χρησιμοποιείται για τον ορισμό του μπόνους ενός τομέα. Εάν η συνάρτηση είναι επιτυχής, το AX είναι 0000H, εάν το AX δεν είναι επιτυχές επιστρέφει την κατάσταση.
INT 13H (0x13)
Λειτουργία 3FH (0x3F ή 63) --> Ορισμός κατωφλίου μπόνους (QuickCache II v4.20)
Κλήση με: AH = 3FH
AL = Νέα τιμή για το όριο μπόνους
Επιστροφή: Εάν η λειτουργία είναι επιτυχής,
AX = 0000H
Εάν η λειτουργία είναι ανεπιτυχής,
AX = Κατάσταση
Σχόλια:
Αυτή η συνάρτηση χρησιμοποιείται για τον ορισμό του ορίου μπόνους. Εάν η συνάρτηση είναι επιτυχής, το AX είναι 0000H, εάν το AX δεν είναι επιτυχές επιστρέφει την κατάσταση
INT 13H (0x13)
Λειτουργία 41H (0x41 ή 65) --> Έλεγχος εγκατάστασης (Επεκτάσεις IBM/MS INT 13H)
Κλήση με: AH = 41H
BX = 55AAH
DL = Αριθμός μονάδας δίσκου (80H-FFH)
Επιστροφή: Εάν οι επεκτάσεις υποστηρίζονται και λειτουργούν με επιτυχία,
Carry Flag = Καθαρό
BX = AA55H
AH = Κύρια έκδοση επεκτάσεων (Βλ
πίνακας στα σχόλια)
AL = Εσωτερική χρήση
CX = Υποσύνολο API bitmap υποστήριξης (Βλ
Πίνακας στα σχόλια)
DH = Έκδοση επέκτασης (έκδοση 2.0 και μεταγενέστερη)
Εάν η επέκταση δεν υποστηρίζεται ή η λειτουργία είναι ανεπιτυχής,
Carry Flag = σετ
AH = 01H (Μη έγκυρη συνάρτηση)
Σχόλια:
Αυτή η λειτουργία ελέγχει εάν οι επεκτάσεις IBM/MS INT 13H είναι εγκατεστημένες και υποστηρίζονται. Οι τιμές για τις κύριες εκδόσεις επεκτάσεων έχουν δοθεί στον ακόλουθο πίνακα:
Αξία
|
Κύρια έκδοση της επέκτασης
|
01 Ω
|
1.χ
|
20H
|
2,0 / EDD-1,0
|
21 Ω
|
2.1 / EDD-1.1
|
30Η
|
EDD-3.0
|
Τα πεδία Bit για το bitmap υποστήριξης του API επεκτάσεων IBM/MS INT 13H έχουν δοθεί στον ακόλουθο πίνακα:
Bit(α)
|
Περιγραφή
|
0
|
Υποστηρίζονται εκτεταμένες λειτουργίες πρόσβασης δίσκου (AH=42H, 43H, 44H, 47h και 48H).
|
1
|
Υποστηρίζονται οι λειτουργίες του ελεγκτή αφαιρούμενης μονάδας (AH=45H, 46H, 48H, 49H και INT15/AH =52H).
|
2
|
Υποστηρίζονται βελτιωμένες λειτουργίες μονάδας δίσκου (EDD) (AH=48H και AH=4EH). Ο εκτεταμένος πίνακας παραμέτρων μονάδας δίσκου είναι έγκυρος.
|
3-15
|
Κράτηση (0)
|
INT 13H (0x13)
Λειτουργία 42H (0x42 ή 66) --> Εκτεταμένη ανάγνωση (Επεκτάσεις IBM/MS INT 13H)
Κλήση με: AH = 42H
DL = Αριθμός μονάδας δίσκου
DS:SI = Πακέτο διεύθυνσης δίσκου (Δείτε τον πίνακα στο
σχόλια)
Επιστροφή: Εάν η λειτουργία είναι επιτυχής,
Carry Flag = Καθαρό
AH = 00H
Εάν η λειτουργία είναι ανεπιτυχής,
Carry Flag = Σετ
AH = κωδικός σφάλματος
Σχόλια:
Αυτή η συνάρτηση είναι η επέκταση για τη λειτουργία ανάγνωσης δίσκου. Εάν η λειτουργία είναι επιτυχής, η σημαία μεταφοράς είναι καθαρή και ο καταχωρητής AH είναι 00H, διαφορετικά έχει οριστεί η σημαία μεταφοράς και το AH επιστρέφει τον κωδικό σφάλματος. Το πεδίο μέτρησης μπλοκ του πακέτου διεύθυνσης δίσκου ορίζεται στον αριθμό μπλοκ που μεταφέρθηκαν με επιτυχία. Η μορφή του πακέτου διεύθυνσης δίσκου έχει δοθεί παρακάτω:
Οφσετ
|
Μέγεθος
|
Περιγραφή
|
00H
|
ΨΗΦΙΟΛΕΞΗ
|
Μέγεθος πακέτου (10H)
|
01 Ω
|
ΨΗΦΙΟΛΕΞΗ
|
Κράτηση (0)
|
02H
|
ΛΕΞΗ
|
Αριθμός μπλοκ προς μεταφορά
|
04Ω
|
DWORD
|
Μεταφορά buffer
|
08Ω
|
QWORD
|
Αρχικός αριθμός απόλυτου μπλοκ (LBA)
|
INT 13H (0x13)
Λειτουργία 43H (0x43 ή 67) --> Εκτεταμένη εγγραφή (Επεκτάσεις IBM/MS INT 13H)
Κλήση με: AH = 43H
AL = εγγραφή σημαιών (Δείτε τον πίνακα στο
σχόλια)
DL = αριθμός μονάδας δίσκου.
DS:SI = πακέτο διεύθυνσης δίσκου
Επιστροφή: Εάν η λειτουργία είναι επιτυχής,
Carry Flag = καθαρός
AH = 00H
Εάν η λειτουργία είναι ανεπιτυχής,
Carry Flag = σετ
AH = κωδικός σφάλματος
Σχόλια:
Αυτή η συνάρτηση είναι η επέκταση για τη λειτουργία εγγραφής δίσκου. Εάν η λειτουργία είναι επιτυχής, η σημαία μεταφοράς είναι καθαρή και ο καταχωρητής AH είναι 00H, διαφορετικά έχει οριστεί η σημαία μεταφοράς και το AH επιστρέφει τον κωδικό σφάλματος. Το πεδίο μέτρησης μπλοκ του πακέτου διεύθυνσης δίσκου έχει οριστεί με επιτυχία σε αριθμό μπλοκ. Οι πληροφορίες των σημαιών εγγραφής για διαφορετικές εκδόσεις έχουν δοθεί στον ακόλουθο πίνακα:
Έκδοση 1.0 και 2.0
|
Έκδοση 2.1 και μεταγενέστερη
|
Αξία
|
Περιγραφή
|
Αξία
|
Περιγραφή
|
Bit 0
|
Επαλήθευση Εγγραφή
|
00H και 01H
|
Γράψτε χωρίς Επαλήθευση
|
Bits 1 έως 7
|
Κράτηση (0)
|
02H
|
Γράψτε με επαλήθευση
|
INT 13H (0x13)
Λειτουργία 44H (0x44 ή 68) --> Επαλήθευση τομέων (Επεκτάσεις IBM/MS INT 13H)
Κλήση με: AH = 44H
DL = αριθμός μονάδας δίσκου
DS:SI = πακέτο διεύθυνσης δίσκου
Επιστροφή: Εάν η λειτουργία είναι επιτυχής,
Carry Flag = Καθαρό
AH = 00H
Εάν η λειτουργία είναι ανεπιτυχής,
Carry Flag = Σετ
AH = κωδικός σφάλματος
Σχόλια:
Αυτή η συνάρτηση είναι η επέκταση για τη λειτουργία Verify Sectors. Εάν η λειτουργία είναι επιτυχής, η σημαία μεταφοράς είναι καθαρή και ο καταχωρητής AH είναι 00H, διαφορετικά έχει οριστεί η σημαία μεταφοράς και το AH επιστρέφει τον κωδικό σφάλματος. Το πεδίο μέτρησης μπλοκ του πακέτου διεύθυνσης δίσκου έχει οριστεί με επιτυχία σε αριθμό μπλοκ
INT 13H (0x13)
Λειτουργία 45H (0x45 ή 69) --> Κλείδωμα/Ξεκλείδωμα μονάδας (Επεκτάσεις IBM/MS INT 13H)
Κλήση με: AH = 45H
AL = Αριθμός λειτουργίας (Δείτε τον Πίνακα στο
σχόλια)
DL = Αριθμός μονάδας δίσκου
Επιστροφή: Εάν η λειτουργία είναι επιτυχής,
Carry Flag = Καθαρό
AH = 00H
AL = Κατάσταση κλειδώματος (00H = Ξεκλείδωτο)
Εάν η λειτουργία είναι ανεπιτυχής,
Carry Flag = Σετ
AH = Κωδικός σφάλματος
Σχόλια:
Αυτή η λειτουργία χρησιμοποιείται για το Κλείδωμα/Ξεκλείδωμα της μονάδας. Αυτή η λειτουργία απαιτείται να υποστηρίζεται για οποιεσδήποτε αφαιρούμενες μονάδες με αριθμό 80H ή μεγαλύτερο. Μπορούν να τοποθετηθούν έως και 255 κλειδαριές σε μια μονάδα δίσκου και τα μέσα δεν θα ξεκλειδωθούν φυσικά μέχρι να αφαιρεθούν όλες οι κλειδαριές.
Εάν η λειτουργία είναι επιτυχής, η σημαία μεταφοράς είναι καθαρή και ο καταχωρητής AH είναι 00H, διαφορετικά έχει οριστεί η σημαία μεταφοράς και το AH επιστρέφει τον κωδικό σφάλματος.
Οι αριθμοί λειτουργίας για διαφορετικές λειτουργίες Κλείδωμα/Ξεκλείδωμα της μονάδας δίνονται στον ακόλουθο πίνακα:
Αξία
|
Λειτουργία
|
00H
|
Κλείδωμα μέσων στη μονάδα δίσκου
|
01 Ω
|
Ξεκλείδωμα πολυμέσων
|
02H
|
Ελέγξτε την κατάσταση κλειδώματος
|
INT 13H (0x13)
Λειτουργία 46H (0x46 ή 70) --> Εξαγωγή μέσων (Επεκτάσεις IBM/MS INT 13H)
Κλήση με: AH = 46H
AL = 00H (δεσμευμένο)
DL = Αριθμός μονάδας δίσκου
Επιστροφή: Εάν η λειτουργία είναι επιτυχής,
Carry Flag = Καθαρό
AH = 00H
Εάν η λειτουργία είναι ανεπιτυχής,
Carry Flag = Σετ
AH = κωδικός σφάλματος
Σχόλια:
Αυτή η λειτουργία είναι η εξαγωγή μέσων. Εάν η λειτουργία είναι επιτυχής, η σημαία μεταφοράς είναι καθαρή και ο καταχωρητής AH είναι 00H, διαφορετικά έχει οριστεί η σημαία μεταφοράς και το AH επιστρέφει τον κωδικό σφάλματος.
INT 13H (0x13)
Λειτουργία 47H (0x47 ή 71) --> Εκτεταμένη αναζήτηση (Επεκτάσεις IBM/MS INT 13H)
Κλήση με: AH = 47H
DL = Αριθμός μονάδας δίσκου
DS:SI = Πακέτο διεύθυνσης δίσκου
Επιστροφή: Εάν η λειτουργία είναι επιτυχής,
Carry Flag = Καθαρό
AH = 00H
Εάν η λειτουργία είναι ανεπιτυχής,
Carry Flag = Σετ
AH = κωδικός σφάλματος
Σχόλια:
Αυτή η συνάρτηση είναι η επέκταση για τη συνάρτηση αναζήτησης. Εάν η λειτουργία είναι επιτυχής, η σημαία μεταφοράς είναι καθαρή και ο καταχωρητής AH είναι 00H, διαφορετικά έχει οριστεί η σημαία μεταφοράς και το AH επιστρέφει τον κωδικό σφάλματος. Το πεδίο μέτρησης μπλοκ του πακέτου διεύθυνσης δίσκου έχει οριστεί με επιτυχία σε αριθμό μπλοκ.
INT 13H (0x13)
Λειτουργία 48H (0x48 ή 72) --> Λήψη παραμέτρων μονάδας δίσκου (Επεκτάσεις IBM/MS INT 13H)
Κλήση με: AH = 48H
DL = Drive (80H-FFH)
DS:SI = Buffer για παραμέτρους μονάδας δίσκου
Επιστροφή: Εάν η λειτουργία είναι επιτυχής,
Carry Flag = Καθαρό
AH = 00H
DS:SI = Γεμάτο buffer
Εάν η λειτουργία είναι ανεπιτυχής,
Carry Flag = Σετ
AH = Κωδικός σφάλματος
Σχόλια:
Αυτή η λειτουργία χρησιμοποιείται για τη λήψη των παραμέτρων μονάδας δίσκου. Εάν η συνάρτηση είναι επιτυχής, η σημαία μεταφοράς είναι καθαρή και ο καταχωρητής AH είναι 00H με το DS:SI του Filled buffer, διαφορετικά έχει οριστεί η σημαία μεταφοράς και το AH επιστρέφει τον κωδικό σφάλματος.
INT 13H (0x13)
Λειτουργία 49H (0x49 ή 73) --> Εκτεταμένη αλλαγή μέσων (Επεκτάσεις IBM/MS INT 13H)
Κλήση με: AH = 49H
DL = Αριθμός μονάδας δίσκου (οποιοσδήποτε αριθμός μονάδας, βλ
Σχόλια)
Επιστροφή: Εάν τα μέσα δεν έχουν αλλάξει,
Carry Flag = Καθαρό
AH = 00H
Εάν τα μέσα μπορεί να έχουν αλλάξει,
Carry Flag = Σετ
AH = 06H (Κωδικός σφάλματος για αλλαγή μέσων)
Σχόλια:
Αυτή η λειτουργία είναι η επέκταση για τη λειτουργία αλλαγής πολυμέσων. Εάν η λειτουργία είναι επιτυχής, η σημαία μεταφοράς είναι καθαρή και ο καταχωρητής AH είναι 00H, διαφορετικά έχει οριστεί η σημαία μεταφοράς και το AH επιστρέφει τον κωδικό σφάλματος.
Η κύρια διαφορά σε αυτήν τη συνάρτηση και τη συνάρτηση AH = 16H του INT 13H είναι ότι μπορούμε να καθορίσουμε οποιονδήποτε αριθμό μονάδας δίσκου, όπου η συνάρτηση 16H επιτρέπει μόνο τον αριθμό μονάδας δίσκου 00H έως 7FH για δισκέτες.
INT 13H (0x13)
Λειτουργία 4AH (0x4A ή 74) --> Εκκίνηση εξομοίωσης δίσκου (CD-ROM με δυνατότητα εκκίνησης)
Κλήση με: AH = 4AH
AL = 00H
DS:SI = Πακέτο προδιαγραφών (δείτε τον Πίνακα στα σχόλια)
Επιστροφή: Εάν η λειτουργία είναι επιτυχής,
Carry Flag = Καθαρό
Εάν η λειτουργία αποτύχει,
Carry Flag = Σετ
AX = Κωδικός κατάστασης
Σχόλια:
Αυτή η λειτουργία χρησιμοποιείται για την εκκίνηση της εξομοίωσης δίσκου. Εάν η λειτουργία είναι επιτυχής, η σημαία μεταφοράς είναι καθαρή, διαφορετικά έχει οριστεί η σημαία μεταφοράς και ο καταχωρητής AX επιστρέφει τον κωδικό κατάστασης και η μονάδα δίσκου δεν θα είναι σε λειτουργία εξομοίωσης.
Η μορφή του πακέτου προδιαγραφών CD-ROM με δυνατότητα εκκίνησης έχει δοθεί στον ακόλουθο πίνακα:
Οφσετ
|
Μέγεθος
|
Περιγραφή
|
00H
|
ΨΗΦΙΟΛΕΞΗ
|
Μέγεθος πακέτου σε byte (13H)
|
01 Ω
|
ΨΗΦΙΟΛΕΞΗ
|
Τύπος μέσου εκκίνησης
|
02H
|
ΨΗΦΙΟΛΕΞΗ
|
Αριθμός μονάδας δίσκου
Αριθμός μονάδας δίσκου
|
Περιγραφή μονάδας δίσκου
|
00H
|
Δισκέτα εικόνα
|
80Η
|
Σκληρός δίσκος με δυνατότητα εκκίνησης
|
81H έως FFH
|
Μη εκκινήσιμο ή χωρίς εξομοίωση
|
|
03 Ω
|
ΨΗΦΙΟΛΕΞΗ
|
Αριθμός ελεγκτή CD-ROM
|
04Ω
|
DWORD
|
Λογικό μπλοκ Διεύθυνση εικόνας δίσκου στο Emu
|
08Ω
|
ΛΕΞΗ
|
Προδιαγραφές συσκευής
Αξία
|
Περιγραφή
|
(IDE) Bit 0
|
Ο δίσκος είναι σκλάβος αντί για κύριος
|
(SCSI) Bits 0 έως 7
|
LUN (Αριθμός λογικής μονάδας) και PUN (Αριθμός φυσικής μονάδας)
|
Bits 8 έως 15
|
Αριθμός λεωφορείου
|
|
0AH
|
ΛΕΞΗ
|
Τμήμα προσωρινής μνήμης 3 Kb για την προσωρινή αποθήκευση αναγνώσεων CD-ROM
|
0CH
|
ΛΕΞΗ
|
Φόρτωση τμήματος για αρχική εικόνα εκκίνησης (εάν είναι 0000H, φόρτωση στο τμήμα 07C0H)
|
0EH
|
ΛΕΞΗ
|
Αριθμός εικονικών τομέων 512 byte προς φόρτωση (ισχύει μόνο για τη συνάρτηση 4CH του INT 13H)
|
10Η
|
ΨΗΦΙΟΛΕΞΗ
|
Χαμηλό byte του αριθμού κυλίνδρων (για τη συνάρτηση 08H του INT 13H)
|
11 Ω
|
ΨΗΦΙΟΛΕΞΗ
|
Αριθμός τομέων, υψηλός αριθμός κυλίνδρων bits (για τη συνάρτηση 08H του INT 13H)
|
12Ω
|
ΨΗΦΙΟΛΕΞΗ
|
Αριθμός κεφαλών (για τη συνάρτηση 08H του INT 13H)
|
Τα πεδία Bit για τον τύπο μέσου εκκίνησης με δυνατότητα εκκίνησης CD-ROM έχουν δοθεί στον ακόλουθο πίνακα:
Bit(α)
|
Περιγραφή
|
3-0
|
Τύπος πολυμέσων
Αξία
|
Περιγραφή
|
0000
|
Καμία εξομοίωση.
|
0001
|
Δισκέτα 1,2M.
|
0010
|
Δισκέτα 1,44M.
|
0011
|
Δισκέτα 2,88M.
|
0100
|
Σκληρός δίσκος (μονάδα δίσκου C:)
|
Αλλος
|
Ρεζερβέ
|
|
5-4
|
Κράτηση (0)
|
6
|
Η εικόνα περιέχει πρόγραμμα οδήγησης ATAPI
|
7
|
Η εικόνα περιέχει προγράμματα οδήγησης SCSI
|
INT 13H (0x13)
Λειτουργία 4B00H (0x4B00) --> Τερματισμός εξομοίωσης δίσκου (CD-ROM με δυνατότητα εκκίνησης)
Κλήση με: AX = 4B00H
DL = Αριθμός μονάδας δίσκου (ή 7FH για τερματισμό
όλες οι προσομοιώσεις)
DS:SI = Κενό πακέτο προδιαγραφών
Επιστροφή: Εάν η λειτουργία είναι επιτυχής,
Carry Flag = Καθαρό
Εάν η λειτουργία είναι ανεπιτυχής,
Carry Flag = Σετ
AX = Κωδικός κατάστασης
DS:SI = Συμπληρώθηκε το πακέτο προδιαγραφών
Σχόλια:
Αυτή η λειτουργία χρησιμοποιείται για τον τερματισμό της εξομοίωσης δίσκου. Εάν θέλετε να τερματίσετε όλες τις προσομοιώσεις, καλέστε τη συνάρτηση με DL = 7FH. Εάν η Λειτουργία είναι επιτυχής, η σημαία μεταφοράς είναι καθαρή, διαφορετικά έχει οριστεί η σημαία μεταφοράς και ο καταχωρητής AX επιστρέφει τον κωδικό κατάστασης και η μονάδα παραμένει σε λειτουργία εξομοίωσης.
INT 13H (0x13)
Λειτουργία 4B01H (0x4B01) --> Λήψη κατάστασης (CD-ROM με δυνατότητα εκκίνησης)
Κλήση με: AX = 4B01H
DL = Αριθμός μονάδας δίσκου
DS:SI = Κενό πακέτο προδιαγραφών
Επιστροφή: Εάν η λειτουργία είναι επιτυχής,
Carry Flag = Καθαρό
Εάν η λειτουργία είναι ανεπιτυχής,
Carry Flag = Σετ
AX = Κωδικός κατάστασης
DS:SI = Συμπληρώθηκε το πακέτο προδιαγραφών
Σχόλια:
Η συνάρτηση χρησιμοποιείται για τη λήψη της κατάστασης. Εάν η Λειτουργία είναι επιτυχής, η σημαία μεταφοράς είναι καθαρή, διαφορετικά ορίζεται η σημαία μεταφοράς και ο καταχωρητής AX επιστρέφει τον κωδικό κατάστασης
INT 13H (0x13)
Λειτουργία 4CH (0x4C ή 76) --> Εκκίνηση εξομοίωσης δίσκου και εκκίνησης (CD-ROM με δυνατότητα εκκίνησης)
Κλήση με: AH = 4CH
AL = 00H
DS:SI = Πακέτο προδιαγραφών
Επιστροφή: Εάν η λειτουργία είναι επιτυχής,
Τίποτα
Εάν η λειτουργία είναι ανεπιτυχής,
Carry Flag = Σετ
AX = Κωδικός κατάστασης
Σχόλια:
Αυτή η λειτουργία χρησιμοποιείται για την εκκίνηση της εξομοίωσης δίσκου και την εκκίνηση του συστήματος. Εάν η λειτουργία είναι επιτυχής, δεν επιστρέφει τίποτα άλλο, ορίζεται η σημαία μεταφοράς και ο καταχωρητής AX επιστρέφει τον κωδικό κατάστασης.
INT 13H (0x13)
Λειτουργία 4D00H (0x4D00) --> Κατάλογος εκκίνησης επιστροφής (CD-ROM με δυνατότητα εκκίνησης)
Κλήση με: AX = 4D00H
DS:SI = Πακέτο εντολών (Δείτε τον Πίνακα στο
σχόλια)
Επιστροφή: Εάν η λειτουργία είναι επιτυχής,
Carry Flag = Καθαρό
Εάν η λειτουργία είναι ανεπιτυχής,
Carry Flag = Σετ
AX = Κωδικός κατάστασης
Σχόλια:
Αυτή η συνάρτηση χρησιμοποιείται για την επιστροφή του καταλόγου εκκίνησης. Εάν η Λειτουργία είναι επιτυχής, η σημαία μεταφοράς είναι καθαρή, διαφορετικά ορίζεται η σημαία μεταφοράς και ο καταχωρητής AX επιστρέφει τον κωδικό κατάστασης. Η μορφή του CD-ROM με δυνατότητα εκκίνησης του πακέτου εντολών "Get Boot Catalog" έχει δοθεί στον ακόλουθο πίνακα:
Οφσετ
|
Μέγεθος
|
Περιγραφή
|
00H
|
ΨΗΦΙΟΛΕΞΗ
|
Μέγεθος πακέτου σε byte (08H)
|
01 Ω
|
ΨΗΦΙΟΛΕΞΗ
|
Αριθμός τομέων του καταλόγου εκκίνησης προς ανάγνωση
|
02H
|
DWORD
|
Buffer για τον κατάλογο εκκίνησης
|
06Ω
|
ΛΕΞΗ
|
Πρώτος τομέας στον κατάλογο εκκίνησης προς μεταφορά
|
INT 13H (0x13)
Λειτουργία 4EH (0x4E ή 78) --> Ρύθμιση παραμέτρων υλικού (Επεκτάσεις IBM/MS INT 13H v2.1)
Κλήση με: AH = 4EH
AL = Αριθμός συνάρτησης (Δείτε τον Πίνακα στα σχόλια)
DL = Αριθμός μονάδας δίσκου
Επιστροφή: Εάν η λειτουργία είναι επιτυχής,
Carry Flag = Καθαρό
AH = 00H
Εάν η λειτουργία είναι ανεπιτυχής,
Carry Flag = Σετ
AH = κωδικός σφάλματος
AL = Κατάσταση
Σχόλια:
Αυτή η λειτουργία χρησιμοποιείται για τη ρύθμιση των παραμέτρων υλικού. Οι αριθμοί συναρτήσεων για να καλέσει το AL αυτή τη συνάρτηση έχουν δοθεί στον ακόλουθο πίνακα:
Αξία
|
Περιγραφή
|
00H
|
Ενεργοποιήστε την προφόρτωση
|
01 Ω
|
Απενεργοποιήστε την προφόρτωση
|
02H
|
Ρυθμίστε τη μέγιστη λειτουργία μεταφοράς PIO
|
03 Ω
|
Ρυθμίστε τη λειτουργία PIO 0
|
04Ω
|
Ορίστε την προεπιλεγμένη λειτουργία μεταφοράς PIO
|
05H
|
Ενεργοποίηση μέγιστης λειτουργίας INT 13H DMA
|
06Ω
|
Απενεργοποιήστε το INT 13H DMA
|
Οι λειτουργίες DMA και PIO αποκλείονται αμοιβαία, επομένως η επιλογή DMA απενεργοποιεί το PIO είτε για την καθορισμένη συσκευή είτε για όλες τις συσκευές σε αυτόν τον ελεγκτή και η επιλογή PIO απενεργοποιεί το DMA
INT 13H (0x13)
Function 5001H (0x5001) --> Send Packet Command (Enhanced Disk Drive Spec v3.0)
Κλήση με: AX = 5001H
DL = Αριθμός μονάδας δίσκου
ES:BX = Πακέτο εντολών (Δείτε τον Πίνακα στο
σχόλια)
Επιστροφή: Εάν η λειτουργία είναι επιτυχής,
Carry Flag = Καθαρό
AH = 00H
Εάν η λειτουργία είναι ανεπιτυχής,
Carry Flag = Σετ
AH = κωδικός σφάλματος
Σχόλια:
Αυτή η λειτουργία χρησιμοποιείται για την αποστολή των εντολών πακέτων. Εάν η λειτουργία είναι επιτυχής, η σημαία μεταφοράς είναι καθαρή και ο καταχωρητής AH είναι 00H, διαφορετικά έχει οριστεί η σημαία μεταφοράς και το AH επιστρέφει τον κωδικό σφάλματος. Το πακέτο εντολών Format of Enhanced Disk Drive Spec v3.0 έχει δοθεί στον ακόλουθο πίνακα:
Οφσετ
|
Μέγεθος
|
Περιγραφή
|
00H
|
ΛΕΞΗ
|
Υπογραφή B055H
|
02H
|
ΨΗΦΙΟΛΕΞΗ
|
Μήκος πακέτου σε byte
|
03 Ω
|
ΨΗΦΙΟΛΕΞΗ
|
Κράτηση (0)
|
04Ω
|
N BYTE
|
Μορφοποιημένα δεδομένα πακέτων
|
INT 13H (0x13)
Λειτουργία 5501H (0x5501) --> Ερώτηση (Seagate ST01/ST02)
Κλήση με: AX = 5501H
DH = Αριθμός byte προς μεταφορά
DL = Αριθμός μονάδας δίσκου
ES:BX = Buffer για αποτελέσματα
Απόδοση
ES:BX buffer, γεμάτο με τα αποτελέσματα της έρευνας.
Σχόλια:
Αυτή η λειτουργία χρησιμοποιείται για την αποστολή ερωτήματος. Το ST01/ST02 BIOS δεν επιστρέφει καμία ένδειξη επιτυχίας ή αποτυχίας για τη λειτουργία, επομένως όλες οι εντολές πρέπει να θεωρηθούν επιτυχείς.
Το ST01/ST02 BIOS αντιστοιχίζει πάντα τους δίσκους του μετά από τις προηγούμενες μονάδες BIOS χωρίς να αλλάζει τον αριθμό μονάδων δίσκου BIOS στο 0040H:0075H. Αυτή η εντολή είναι πανομοιότυπη με την εντολή SCSI Inquiry
INT 13H (0x13)
Λειτουργία 5502H (0x5502) --> Με κράτηση (Seagate ST01/ST02)
INT 13H (0x13)
Λειτουργία 5503H (0x5503) --> Ορισμός DTQ (Προκριματικός Τύπος συσκευής) (Seagate ST01/ST02)
Κλήση με: AX = 5503H
DH = byte DTQ (Δείτε τον πίνακα στο
σχόλια)
DL = Αριθμός μονάδας δίσκου
Επιστροφή: Τίποτα
Σχόλια:
Αυτή η λειτουργία χρησιμοποιείται για τον ορισμό του DTQ (Device Type Qualifier). Η Λειτουργία δεν επιστρέφει τίποτα. Τα πεδία Bit για το byte DTQ εμφανίζονται στον ακόλουθο πίνακα:
Bit(α)
|
Περιγραφή
|
0
|
Υπάρχει λογισμικό εγκατάστασης Seagate
|
1
|
Η επιλεγμένη μονάδα δίσκου έχει εγκατασταθεί
|
2
|
Ο προσαρμογέας κεντρικού υπολογιστή ελέγχει την ισοτιμία στην επιλεγμένη μονάδα δίσκου
|
3
|
Η επιλεγμένη μονάδα δίσκου είναι ST225N
|
4
|
Η επιλεγμένη μονάδα δίσκου έχει αντιστοιχιστεί ST225N/NP
|
5
|
Ρεζερβέ
|
6
|
Η μονάδα SCSI είναι προσαρτημένη
|
7
|
Ρεζερβέ
|
INT 13H (0x13)
Λειτουργία 5504H (0x5504) --> Αναγνώριση επιστροφής (Seagate ST01/ST02)
Κλήση με: AX = 5504H
DL = Αριθμός μονάδας δίσκου
Απόδοση:
AX = 4321H
BL = επιλεγμένος αριθμός μονάδας δίσκου (00H, 01H)
BH = αριθμός μονάδων δίσκου που είναι συνδεδεμένοι στον κεντρικό υπολογιστή
Προσαρμογέας
Σχόλια:
Η λειτουργία χρησιμοποιείται για την επιστροφή της αναγνώρισης της μονάδας ή των μονάδων δίσκου.
INT 13H (0x13)
Λειτουργία 5505H (0x5505) --> Κεφαλές στάθμευσης (Seagate ST01/ST02)
Κλήση με: AX = 5505H
DL = Αριθμός μονάδας δίσκου
DH = Υποσυνάρτηση (δείτε τα σχόλια)
Απόδοση:
Τίποτα
Σχόλια:
Η λειτουργία χρησιμοποιείται για τη στάθμευση των κεφαλών του δίσκου. Χρησιμοποιούνταν στους παλιούς σκληρούς δίσκους ωστόσο οι σύγχρονοι σκληροί δίσκοι δεν χρειάζονται κανένα εξωτερικό πρόγραμμα για να παρκάρουν τα κεφάλια τους.
Η Sub function 00H παρκάρει τις κεφαλές (εντολή Stop SCSI) και η Sub function 01H unpark the head (εντολή SCSI Start) του δίσκου.
INT 13H (0x13)
Συνάρτηση 5506H (0x5506) --> Ισοτιμία διαύλου SCSI (Seagate ST01/ST02)
Κλήση με: AX = 5506H
DL = Αριθμός μονάδας δίσκου
DH = Αριθμός υποσυνάρτησης (Βλ
Σχόλια)
Απόδοση:
AL = Κατάσταση (00H έλεγχος ισοτιμίας
απενεργοποιημένο, ενεργοποιημένος ο έλεγχος ισοτιμίας 01H)
Σχόλια:
Καλέστε τη συνάρτηση με τον ακόλουθο αριθμό δευτερεύουσας λειτουργίας για DH:
Αξία
|
Περιγραφή
|
00H
|
Απενεργοποίηση ελέγχου ισοτιμίας
|
01 Ω
|
Ενεργοποίηση ελέγχου ισοτιμίας
|
02H
|
Επιστροφή τρέχουσας ρύθμισης ισοτιμίας
|
INT 13H (0x13)
Λειτουργία 5507H (0x5507) Προς Λειτουργία 550DH (0x550D) --> Δεσμευμένες λειτουργίες (Seagate ST01/ST02)
Κλήση με: AX = 5507H έως AX = 550DH
Σχόλια:
Αυτές οι Λειτουργίες έχουν καταχωρηθεί επίσημα ως "Δεσμευμένες"
INT 13H (0x13)
Συνάρτηση A0H (0xA0 ή 160) --> Λήψη τμήματος κώδικα κατοίκου (Super PC-Kwik έκδοση 3.20 και μεταγενέστερη έκδοση)
Κλήση με: AH = A0H
IF = 4358H
Απόδοση:
AX = Τμήμα Κωδικού Κατοίκου
Σχόλια:
Αυτή η συνάρτηση χρησιμοποιείται για τη λήψη του τμήματος κώδικα κατοίκου. Το AX επιστρέφει το τμήμα του κωδικού κατοίκου.
INT 13H (0x13)
Λειτουργία A1H (0xA1 ή 161) --> Flush Cache (Super PC-Kwik v3.20 και νεότερη έκδοση)
Κλήση με: AH = A1H
IF = 4358H
Απόδοση:
Carry Flag = Καθαρό
AH = 00H (v5.10)
Σχόλια:
Η συνάρτηση χρησιμοποιείται για την έκπλυση της κρυφής μνήμης.
INT 13H (0x13)
Λειτουργία A3H (0xA3 ή 163) --> Απενεργοποίηση προσωρινής μνήμης (Super PC- Kwik έκδοση 3.20 και μεταγενέστερη έκδοση)
Κλήση με: AH = A3H
IF = 4358H
Απόδοση:
Carry Flag = Καθαρό
Σχόλια:
Η συνάρτηση χρησιμοποιείται για την απενεργοποίηση της κρυφής μνήμης.
INT 13H (0x13)
Λειτουργία A4H (0xA4 ή 164) --> Ενεργοποίηση προσωρινής μνήμης (Super PC-Kwik έκδοση 3.20 και νεότερη έκδοση)
Κλήση με: AH = A4H
IF = 4358H
Απόδοση:
Carry Flag = Καθαρό
Σχόλια:
Αυτή η συνάρτηση χρησιμοποιείται για την ενεργοποίηση της προσωρινής μνήμης.
INT 13H (0x13)
Λειτουργία EEH (0xEE ή 238) --> Set 1024-Cylinder Flag (SWBIOS)
Κλήση με: AH = EEH
DL = Αριθμός μονάδας δίσκου
Απόδοση:
Carry Flag = Καθαρό
AH = 00H
Σχόλια:
Η συνάρτηση χρησιμοποιείται για το Set 1024 – Cylinder flag. Η σημαία διαγράφεται από όλες τις κλήσεις INT 13H εκτός από AH=EEH και AH=EFH. Η Διαχείριση δίσκων υποστηρίζει επίσης αυτές τις κλήσεις. Αυτή η λειτουργία είναι ισοδύναμη με την κλήση της συνάρτησης AH=EFH με CX=0400H για το λογισμικό που υποστηρίζει αυτήν την κλήση.
Αυτή η λειτουργία υποστηρίζεται επίσης από το HyperDisk έκδοση 4.01 και νεότερη έκδοση, και το PC-Cache v5.5 και μεταγενέστερα, προκειμένου να επιτρέπεται η προσωρινή αποθήκευση μονάδων δίσκου που χρησιμοποιούν SWBIOS για πρόσβαση σε περισσότερους από 1024 κυλίνδρους.
INT 13H (0x13)
Λειτουργία EFH (0xEF ή 239) --> Ρύθμιση μετατόπισης κυλίνδρου (Ontrack Drive Rocket)
Κλήση με: AH = EFH
CX = Μετατόπιση κυλίνδρου για την επόμενη κλήση INT 13H
DL = Αριθμός μονάδας δίσκου
Απόδοση:
Carry Flag = Καθαρό
AH = 00H
Σχόλια:
Η συνάρτηση χρησιμοποιείται για τη ρύθμιση της μετατόπισης κυλίνδρου. Για λογισμικό που υποστηρίζει αυτήν την κλήση, η συνάρτηση AH=EEH ισοδυναμεί με την κλήση αυτής της συνάρτησης με CX=0400H. Η μετατόπιση κυλίνδρου επαναφέρεται στο 0 από όλα τα INT 13H που καλούνται εκτός από τα AH=EEH και AH=EFH.
INT 13H (0x13)
Λειτουργία F9H (0xF9 ή 249) --> Έλεγχος εγκατάστασης (SWBIOS)
Κλήση με: AH = F9H
DL = Αριθμός μονάδας δίσκου
Επιστροφή: Εάν η λειτουργία είναι επιτυχής,
Carry Flag = Καθαρό
DX = Configuration Word (δείτε σχόλια)
Εάν η λειτουργία είναι ανεπιτυχής,
Carry Flag = Σετ
Σχόλια:
Αυτή η λειτουργία χρησιμοποιείται για έλεγχο εγκατάστασης. Εάν η συνάρτηση είναι επιτυχημένη, η σημαία μεταφοράς είναι καθαρή και το DX επιστρέφει τη λέξη διαμόρφωσης, διαφορετικά έχει οριστεί η σημαία μεταφοράς.
Το bit 15 ορίζεται εάν είναι διαθέσιμες άλλες επεκτάσεις SWBIOS. Η Διαχείριση δίσκων υποστηρίζει επίσης αυτές τις κλήσεις.
INT 13H (0x13)
Λειτουργία FEH (0xFE ή 254) --> Λήψη εκτεταμένου αριθμού κυλίνδρων (SWBIOS)
Κλήση με: AH = FEH
DL = Αριθμός μονάδας δίσκου
Απόδοση:
Carry Flag = Καθαρό
DX = Αριθμός κυλίνδρων πέραν των 1024
σε οδήγηση
Σχόλια:
Αυτή η λειτουργία χρησιμοποιείται για τη λήψη του εκτεταμένου αριθμού κυλίνδρων. Η συνάρτηση AH = 08H του INT 13H θα επιστρέψει έναν αριθμό κυλίνδρων περικομμένο στο 1024. Το BIOS χωρίς αυτήν την επέκταση θα επέστρεφε το modul count 1024. Το Disk Manager υποστηρίζει επίσης αυτές τις κλήσεις
INT 13H (0x13)
Λειτουργία FFH (0xFF ή 255) --> Επίσημη ιδιωτική λειτουργία (IBM SurePath BIOS)
INT 13H (0x13)
Λειτουργία FFFFH (0xFFFF) --> Ρύθμιση λειτουργίας Turbo (UNIQUE UX Turbo Utility)
Κλήση με: AX = FFFFH
BH = AAH
BL = Αριθμός δευτερεύουσας συνάρτησης (δείτε τον πίνακα
στα σχόλια)
Επιστροφή: Εάν έχει εγκατασταθεί,
AX = 1234H
Σχόλια:
Αυτή η λειτουργία χρησιμοποιείται για τη ρύθμιση της λειτουργίας Turbo. Οι αριθμοί Sub-συναρτήσεων για να καλέσετε τη συνάρτηση με BL έχουν δοθεί στον ακόλουθο πίνακα:
Αξία
|
Περιγραφή
|
00H
|
Έλεγχος εγκατάστασης
|
01 Ω
|
Ενεργοποιήστε τη λειτουργία Turbo
|
02H
|
Απενεργοποιήστε τη λειτουργία Turbo
|
03 Ω
|
Ρυθμίστε τη λειτουργία Turbo σύμφωνα με τον διακόπτη υλικού
|
04Ω
|
Ρυθμίστε την πρόσβαση στο δίσκο σε λειτουργία Turbo
|
05H
|
Ρυθμίστε την πρόσβαση στο δίσκο σε Κανονική λειτουργία
|
Πώς να χρησιμοποιήσετε τις επεκτάσεις INT 13H στον προγραμματισμό C
Μπορούμε να καλέσουμε τις Συναρτήσεις Επέκτασης του INT 13H με τις ίδιες συναρτήσεις C (int86(), int86x() κ.λπ.), τις οποίες χρησιμοποιούσαμε στα προηγούμενα κεφάλαια. Ας το μάθουμε με ένα παράδειγμα.
Το ακόλουθο παράδειγμα δίνει την εστίαση στις τρεις λειτουργίες (Έλεγχος παρόντων επεκτάσεων, εκτεταμένη ανάγνωση και εκτεταμένη εγγραφή). Ωστόσο, δεν πρόκειται να χρησιμοποιήσουμε τη λειτουργία εκτεταμένης εγγραφής σε αυτό το κεφάλαιο.
Το πρόγραμμα ελέγχει πρώτα αν υποστηρίζονται επεκτάσεις ή όχι εάν υπάρχουν επεκτάσεις για το INT 13H, διαβάζει τον απόλυτο τομέα 0 (άρα MBR) του δίσκου. Η κωδικοποίηση του προγράμματος γίνεται με τον εξής τρόπο:
/* Πρόγραμμα πρόσβασης σε τομείς πέραν των 8,46 GB χρησιμοποιώντας επεκτάσεις INT 13 BIOS */
#include<stdio.h>
#include<dos.h>
/* Εκχωρεί το αναγνωριστικό στον τύπο δεδομένων */
typedef ανυπόγραφο char Byte.
typedef ανυπόγραφο στο Word.
typedef ανυπόγραφο long DWord?
Η /* δομή disk_packet φορτώνεται στο DS:SI και η εντολή εκτελείται */
struct disk_packet
{
Byte size_pack; // Το μέγεθος του πακέτου πρέπει να είναι 16 ή 16+
Byte δεσμευμένο1; // Με κράτηση
Byte no_of_block;// Αριθμός μπλοκ για μεταφορά
Byte δεσμευμένο2; // Με κράτηση
/* Διεύθυνση σε Segment:Offset format */
Μετατόπιση λέξεων; //διεύθυνση μετατόπισης
Τμήμα λέξεων; //διεύθυνση τμήματος
/* Για υποστήριξη του δίσκου ακόμη και χωρητικότητας 1152921504,607 GB */
DWord lba1;
DWord lba2;
}
disk_pack;
/* Λειτουργία για έλεγχο εάν υποστηρίζονται οι επεκτάσεις */
void check_ext_present()
{
ένωση REGS inregs, outregs; /* Καταχωρητές εισόδου και
Έξοδος */
inregs.h.ah=0x41; /* Λειτουργία για έλεγχο
Παρούσα επέκταση */
inregs.x.bx=0x55AA;
inregs.h.dl=0x80; /* Αριθμός μονάδας για τον πρώτο σκληρό δίσκο */
int86(0x13,&inregs,&outregs); /*Διακοπή κλήσης */
if(outregs.x.cflag)
{
/* Η επέκταση δεν υποστηρίζεται */
printf("\nΗ επέκταση Bios δεν υποστηρίζεται");
exit(1);
}
if(outregs.x.bx==0xAA55)
if(outregs.x.cx & 0x1)
/* Παρούσα επέκταση */
printf("\nΥποστήριξη εκτεταμένης εισόδου/εξόδου");
}
/* Λειτουργία για ανάγνωση του Τομέα */
void read_sectors(void *buffer)
{
ένωση REGS inregs, outregs; /* Είσοδος και έξοδος
Εγγραφές */
struct SREGS segregs? // Καταχωρητές τμημάτων
disk_pack.size_pack=16; // Ορίστε το μέγεθος σε 16
disk_pack.no_of_blocks=1; // Ένα μπλοκ
disk_pack.reserved1=0; // Reserved Word
disk_pack.reserved2=0; // Reserved Word
disk_pack.segment=FP_SEG(buffer);// Τμήμα buffer
disk_pack.offset=FP_OFF(buffer); // Μετατόπιση buffer
/* αίτημα για MBR σκληρού δίσκου 1 */
/* Διαβάστε τον απόλυτο τομέα 0 */
disk_pack.lba1=0; /* Διεύθυνση LBA, Περιέχει πρώτα
32 bit */
/* Συνήθως απαιτούμε (μονάδες δίσκου < 2,1 TB) για να ρυθμίσουμε
μόνο αυτό */
disk_pack.lba2=0; // Τελευταία διεύθυνση 32 bit
inregs.h.ah=0x42; // Λειτουργία για ανάγνωση
inregs.h.dl=0x80; // Αριθμός μονάδας για τον πρώτο σκληρό δίσκο inregs.x.si = FP_OFF(&disk_pack); /*Κάντε σημείο DS:SI
στο disk_pack */
segregs.ds = FP_SEG(&disk_pack);
/* Διακοπή κλήσης */
int86x(0x13,&inregs,&outregs,&segregs);
if(outregs.x.cflag)
printf("\n\nΣφάλμα %d\n",outregs.h.ah);
αλλού
printf("\n\nΕλπίζω να πάνε όλα καλά");
}
//// Συνάρτηση τομέα εγγραφής \\\\
void write_sector()
{
/* Θα γραφτεί με τον ίδιο τρόπο όπως η συνάρτηση read_sectors, εκτός από το Function Number, που θα είναι 0x43 σε αυτή τη συνάρτηση. Θα συζητήσουμε την εκτεταμένη λειτουργία εγγραφής στα επόμενα κεφάλαια.
Πριν χρησιμοποιήσετε αυτήν τη λειτουργία, ελέγξτε και επαληθεύστε τι πρόκειται να κάνετε. Θα πρέπει να έχετε τη σωστή γνώση του τι πρόκειται να κάνετε. Η χρήση αυτής της λειτουργίας ελλείψει γνώσης ή απρόσεκτα μπορεί να καταστρέψει τα δεδομένα σας. */
}
/// Κύρια συνάρτηση \\\\
void main()
{
int i=0;
/* buffer για να κρατήσει το MBR */
Byte mbr[512];
clrscr();
/* ελέγξτε εάν υπάρχει επέκταση BIOS */
check_ext_present();
/* ανάγνωση τομέα */
read_sectors(&mbr);
printf("\n\n Δεδομένα MBR \n");
printf("▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀\n\n\n");
ενώ(i++<512)
{
/* εμφάνιση του buffer MBR */
printf("%c",mbr[i]);
}
}
Στοιχεία MBR
Σχόλια για την Κωδικοποίηση του προγράμματος
typedef Εκχωρεί το αναγνωριστικό στον τύπο δεδομένων έτσι ώστε να πληκτρολογεί unsigned char Byte. εκχωρεί αναγνωριστικό Byte για τον τύπο δεδομένων char. Ομοίως, το αναγνωριστικό Word εκχωρείται στο int και το DWord εκχωρείται στο long.
Η δομή disk_packet φορτώνεται στο DS:SI και η εντολή (όπως εκτεταμένη ανάγνωση, εκτεταμένη εγγραφή ή επαλήθευση κ.λπ.) εκτελείται. Δείτε τις λειτουργίες των επεκτάσεων IBM/MS INT 13H (Λειτουργία 41H έως Λειτουργία 49H) που δόθηκαν προηγουμένως.
Η συνάρτηση check_ext_present() ελέγχει εάν οι επεκτάσεις είναι διαθέσιμες/υποστηριζόμενες ή όχι. Η συνάρτηση καλείται με BX=55AAH (inregs.x.bx=0x55AA;) και εάν υποστηρίζονται επεκτάσεις, ο καταχωρητής BX ορίζεται σε AA55H. (Δείτε τη συνάρτηση 41H που δόθηκε προηγουμένως)
Η συνάρτηση read_sectors χρησιμοποιείται για την ανάγνωση του απόλυτου τομέα του δίσκου, που καθορίζεται από το disk_pack.lba1. Σε αυτό το πρόγραμμα δώσαμε disk_pack.lba1=0, επομένως θα διαβάσουμε τον απόλυτο τομέα 0 (Δείτε τη σημείωση παρακάτω) διαβάζοντας έτσι το MBR του δίσκου.
Η συνάρτηση write_sector είναι επίσης ίδια με τη συνάρτηση read_sectors και θα γραφτεί με τον ίδιο τρόπο αλλά με τις διαφορετικές επιλογές Function. Θα το χρησιμοποιήσουμε στα επόμενα κεφάλαια.
Σημείωμα:
Διαβάζουμε τους τομείς του δίσκου με τους εξής δύο τρόπους:
- Σχετικός τομέας Ανάγνωση (ή Εγγραφή)
- Απόλυτος τομέας Ανάγνωση (ή Εγγραφή)
Στο Relative Sector Read διαβάζουμε τους τομείς του δίσκου σύμφωνα με τη γεωμετρία CHS (Cylinder, Head and Sector) του δίσκου. Σε σχετικό τομέα διαβάστε το MBR του δίσκου (First Sector of the Disk) βρίσκεται στον κύλινδρο 0, στην κεφαλή 0 και στον τομέα 1.
Στην Απόλυτη ανάγνωση των τομέων του δίσκου, δεν χρειάζεται να προσδιορίσουμε τους αριθμούς κυλίνδρου ή κεφαλής στο πρόγραμμά μας. Οι απόλυτοι τομείς υπολογίζονται από τον απόλυτο τομέα 0.
Έτσι, αν πρόκειται να διαβάσουμε το MBR του δίσκου (Πρώτος τομέας του δίσκου), θα διαβάσουμε τον απόλυτο τομέα 0. Είναι δουλειά του BIOS να μετατρέψει τον απόλυτο αριθμό τομέα στον αντίστοιχο αριθμό κυλίνδρου, κεφαλής και τομέα.
Όπως και στην ανάγνωση (ή εγγραφή) απόλυτου τομέα, πρέπει να υπολογίσουμε μόνο τους απόλυτους τομείς εντός του βρόχου στις πράξεις όπως ανάγνωση ή εγγραφή ολόκληρου του δίσκου, ενώ σε περίπτωση ανάγνωσης (ή εγγραφής) σχετικού τομέα, πρέπει να εκτελέσουμε τρεις βρόχους τη φορά για τον υπολογισμό του CHS, επομένως η ανάγνωση/εγγραφή απόλυτου τομέα είναι πολύ πιο γρήγορη από την ανάγνωση/εγγραφή σχετικού τομέα.
Για παράδειγμα, εάν έχουμε σκληρό δίσκο με τις 16 κεφαλές (πλευρές), 12 κυλίνδρους και 63 τομείς, ο πίνακας που ακολουθεί δείχνει τη διαδικασία και τη διαφορά και των δύο μεθόδων ανάγνωσης και έτσι δείχνει πώς η προσέγγιση απόλυτης τομέα μπορεί να κάνει τα προγράμματα που απαιτούν χρόνο (όπως προγράμματα ανάγνωσης/εγγραφής ολόκληρου δίσκου ή προγράμματα σκουπίσματος ολόκληρου δίσκου κ.λπ.) να εκτελούνται πολύ πιο γρήγορα:
Σχετικοί Τομείς Ανάγνωση
|
Απόλυτη Τομεακή ανάγνωση
|
Κύλινδρος =0, Κεφαλή =0, Τομέας = 1
|
Απόλυτος Τομέας = 0
|
Κύλινδρος =0, Κεφαλή =0, Τομέας = 2
|
Απόλυτος Τομέας = 1
|
Κύλινδρος =0, Κεφαλή =0, Τομέας = 3
|
Απόλυτος Τομέας = 2
|
.
.
.
.
|
.
.
.
.
|
Κύλινδρος =0, Κεφαλή =0, Τομέας = 62
|
Απόλυτος Τομέας = 61
|
Κύλινδρος =0, Κεφαλή =0, Τομέας = 63
|
Απόλυτος Τομέας = 62
|
Κύλινδρος =0, Κεφαλή =1, Τομέας = 1
|
Απόλυτος Τομέας = 63
|
Κύλινδρος =0, Κεφαλή =1, Τομέας = 2
|
Απόλυτος Τομέας = 64
|
Κύλινδρος =0, Κεφαλή =1, Τομέας = 3
|
Απόλυτος Τομέας = 65
|
Κύλινδρος =0, Κεφαλή =1, Τομέας = 4
|
Απόλυτος Τομέας = 66
|
.
.
.
.
|
.
.
.
.
|
Κύλινδρος =0, Κεφαλή =1, Τομέας = 63
|
Απόλυτος Τομέας = 125
|
Κύλινδρος =0, Κεφαλή =2, Τομέας = 1
|
Απόλυτος Τομέας = 126
|
Κύλινδρος =0, Κεφαλή =2, Τομέας = 2
|
Απόλυτος Τομέας = 127
|
Κύλινδρος =0, Κεφαλή =2, Τομέας = 3
|
Απόλυτος Τομέας = 128
|
.
.
.
.
|
.
.
.
.
|
Κύλινδρος =0, Κεφαλή =15, Τομέας = 63
|
Απόλυτος Τομέας = 1007
|
Κύλινδρος =1, Κεφαλή =0, Τομέας = 1
|
Απόλυτος Τομέας = 1008
|
Κύλινδρος =1, Κεφαλή =0, Τομέας = 2
|
Απόλυτος Τομέας = 1009
|
Κύλινδρος =1, Κεφαλή =0, Τομέας = 3
|
Απόλυτος Τομέας = 1010
|
.
.
.
.
|
.
.
.
.
|
Κύλινδρος =1, Κεφαλή =0, Τομέας = 63
|
Απόλυτος Τομέας = 1070
|
Κύλινδρος =1, Κεφαλή =1, Τομέας = 1
|
Απόλυτος Τομέας = 1071
|
Κύλινδρος =1, Κεφαλή =1, Τομέας = 2
|
Απόλυτος Τομέας = 1072
|
Κύλινδρος =1, Κεφαλή =1, Τομέας = 3
|
Απόλυτος τομέας = 1073
|
.
.
.
.
|
.
.
.
.
|
Κύλινδρος = 1, Κεφαλή = 15, Τομέας = 63
|
Απόλυτος τομέας = 2015
|
Κύλινδρος =2, Κεφαλή =0, Τομέας =1
|
Απόλυτος τομέας = 2016
|
Κύλινδρος =2, Κεφαλή =0, Τομέας =2
|
Απόλυτος τομέας = 2017
|
Κύλινδρος =2, Κεφαλή =0, Τομέας =3
|
Απόλυτος τομέας = 2018
|
.
.
.
.
|
.
.
.
.
|
Κύλινδρος = 11, Κεφαλή = 15, Τομέας = 60
|
Απόλυτος τομέας = 12092
|
Κύλινδρος = 11, Κεφαλή = 15, Τομέας = 61
|
Απόλυτος τομέας = 12093
|
Κύλινδρος = 11, Κεφαλή = 15, Τομέας = 62
|
Απόλυτος τομέας = 12094
|
Κύλινδρος = 11, Κεφαλή = 15, Τομέας = 63
|
Απόλυτος τομέας = 12095
|
Παρακάτω είναι οι πληροφορίες σχετικά με τον πίνακα διαμερισμάτων MBR που εμφανίζονται από οποιοδήποτε εργαλείο ανάλυσης MBR στο δίσκο:
Εμφανίζεται από οποιοδήποτε εργαλείο ανάλυσης MBR στο δίσκο
Στις παραπάνω πληροφορίες, οι σχετικοί αριθμοί τομέων για την έναρξη και των δύο διαμερισμάτων είναι 63 και 11277630 αντίστοιχα, δεν έχουν κατατμήσεις και υπολογίζονται σύμφωνα με τον αριθμό των τομέων που είναι διαθέσιμοι στο δίσκο.