Section courante

A propos

Section administrative du site

 Langage  Elément  Tutoriel  Programmation  Plateforme  Compilateur  Outils  Emulateur  Annexe  Aide 
ABAP/4
Ada
Assembleur
Assembly & bytecode
ASP (Active Server Pages)
Basic
C
C++
C# (C Sharp)
Cobol
ColdFusion
Fortran
HTML
Java
JavaScript
LISP
Logo
LotusScript
Oberon
Pascal
Perl
PHP
PL/1
Prolog
Python
Rebol
REXX
Ruby
Rust
SAS
NoSQL
SQL
Swift
X++ (Axapta)
GNAT
SMALLAda
VHDL
Assembleur 370
Assembleur 1802
Assembleur 4004
Assembleur 6502
Assembleur 6800
Assembleur 68000
Assembleur 8080 et 8085
Assembleur 8089
Assembleur 80x86
Assembleur AGC4
Assembleur ARM
Assembleur DPS 8000
Assembleur i860
Assembleur Itanium
Assembleur MIPS
Assembleur PDP-11
Assembleur PowerPC
Assembleur RISC-V
Assembleur SPARC
Assembleur SuperH
Assembleur UNIVAC I
Assembleur VAX
Assembleur Z80
Assembleur Z8000
Assembleur z/Architecture
ASSEMBLER/MONITOR 64
Micol Assembler
GFA Assembler
A86
MASM (Macro Assembler)
TASM (Turbo Assembler)
CIL
Jasmin
LLVM
MSIL
Parrot
P-Code (PCode)
SWEET16
G-Pascal
ASP 1.0
ASP 2.0
ASP 3.0
ASP.NET
ASP.NET Core
ABasiC (Amiga)
Adam SmartBASIC
Altair BASIC
AmigaBASIC (Amiga)
AMOS Basic (Amiga)
Atari Basic (Atari 400, 600 XL, 800, 800XL)
Basic Apple II (Integer BASIC/APPLESOFT)
Basic Commodore 64 (CBM-BASIC)
Basic Commodore 128 (BASIC 7.0)
Basic Commodore VIC-20 (CBM-BASIC 2.0)
Basic Coco 1 (Color Basic)
Basic Coco 2 (Extended Color Basic)
Basic Coco 3 (Extended Color Basic 2.0)
BASICA (PC DOS)
Basic Pro
BBC BASIC
Blitz BASIC (Amiga)
DarkBASIC
Dartmouth BASIC
GFA-Basic (Atari ST/Amiga)
GWBASIC (MS-DOS)
Liberty BASIC
Locomotive BASIC (Amstrad CPC)
MSX-Basic
Omikron Basic (Atari ST)
Oric Extended Basic
Power Basic
Quick Basic/QBasic (MS-DOS)
Sinclair BASIC (ZX80, ZX81, ZX Spectrum)
ST BASIC (Atari ST)
Turbo Basic
Vintage BASIC
VBScript
Visual Basic (VB)
Visual Basic .NET (VB .NET)
Visual Basic pour DOS
Yabasic
BeckerBASIC
SIMONS' BASIC
Basic09 d'OS-9
Disk Extended Color Basic
Basic09 d'OS-9
Disk Extended Color Basic
Access
Excel
Visual Basic pour Windows
Visual Basic .NET pour Windows
C Shell Unix (csh)
C pour Amiga
C pour Atari ST
C pour DOS
C pour Falcon030
C pour GEMDOS (Atari ST)
C pour Linux
C pour PowerTV OS
C pour OS/2
C pour Unix
C pour Windows
Aztec C
CoCo-C
GNU C
HiSoft C
IBM C/2
Introl-C
Lattice C
Microsoft C
MinGW C
MSX-C
Open Watcom C
OS-9 C Compiler
Pure C
Quick C
Turbo C
HiSoft C for Atari ST
HiSoft C for CP/M (Amstrad CPC)
C++ pour OS/2
C++ pour Windows
Borland C++
C++Builder
IBM VisualAge C++
Intel C++
MinGW C++
Open Watcom C++
Symantec C++
Turbo C++
Visual C++
Visual C++ .NET
Watcom C++
Zortech C++
C# (C Sharp) pour Windows
Apple III Cobol
Microsoft Cobol
BlueDragon
Lucee
OpenBD
Railo
Smith Project
Microsoft Fortran
WATFOR-77
CSS
FBML
Open Graph
SVG
XML
XSL/XSLT
LESS
SASS
GCJ (GNU)
JSP
Jython
Visual J++
Node.js
TypeScript
AutoLISP
ACSLogo
LotusScript pour Windows
Amiga Oberon
Oberon .NET
Apple Pascal
Delphi/Kylix/Lazarus
Free Pascal
GNU Pascal
HighSpeed Pascal
IBM Personal Computer Pascal
Lisa Pascal
Maxon Pascal
MPW Pascal
OS-9 Pascal
OSS Personal Pascal
Pascal-86
Pascal du Cray Research
Pascal/VS
Pascal-XT
PURE Pascal
QuickPascal
RemObjets Chrome
Sun Pascal
THINK Pascal
Tiny Pascal (TRS-80)
Turbo Pascal
UCSD Pascal
VAX Pascal
Virtual Pascal
Turbo Pascal for CP/M-80
Turbo Pascal for DOS
Turbo Pascal for Macintosh
Turbo Pascal for Windows
CodeIgniter (Cadre d'application)
Drupal (Projet)
Joomla! (Projet)
Phalanger (PHP .NET)
phpBB (Projet)
Smarty (balise)
Twig (balise)
Symfony (Cadre d'application)
WordPress (Projet)
Zend (Cadre d'application)
PL360
PL/M-80
PL/M-86
Turbo Prolog
CPython
IronPython
Jython
PyPy
AREXX
Regina REXX
JMP
Btrieve
Cassandra
Clipper
CouchDB
dBASE
Hbase
Hypertable
MongoDB
Redis
Access
BigQuery
DB2
H2
Interbase
MySQL
Oracle
PostgreSQL
SAP HANA
SQL Server
Sybase
U-SQL
Introduction
Les remarques
Les opérateurs
Les instructions conditionnelles
Les instructions de boucles
Type de données élémentaire
Référence des registres
Mode d'adressage du processeur
Structure de données
Référence des instructions par catégories
Référence, lexique et dictionnaire des instructions 80x86
Les symboles prédéfinies
Les directives
Mode 8080
Mode réel
Mode protégé
Mode virtuel 8086
Mode SMM
Format du descripteur de segment
Format du TSS
Format du SMM
Format BCD
Format des nombres réels
8086/8088
Série NEC V20/V30
80286
80386
Pentium
Pentium Pro
AVX-512
MMX (MultiMedia eXtensions)
MPX (Memory Protection Extensions)
SGX (Software Guard Extensions)
SHA extensions
SMX (Safer Mode Extensions)
SSE (Streaming SIMD Extensions)
SSE2 (Streaming SIMD Extensions 2)
SSE3 (Streaming SIMD Extensions 3)
SSSE3 (Supplemental Streaming SIMD Extensions 3)
SSE4.1 (Streaming SIMD Extensions 4.1)
SSE4.2 (Streaming SIMD Extensions 4.2)
TSX (Transactional Synchronization Extensions)
VMX (Virtual-Machine eXtensions)
x86-64
Les boucles
Les chaînes
les comparaisons
Les conversions
Les décalages de bits
Les drapeaux
Les opérateurs
Saut conditionnel
Saut inconditionnel
Les transferts de données
Utilisation de la pile
Accès mémoire
Ensemble d'instructions pour les applications 80386
BIOS compatible au micro-ordinateur IBM PC
Démarrage du système
Détermination de la version du BIOS
Détermination du type de PC
Fonctions de sortie de l'écran du BIOS
Détermination de la configuration du système à l'aide du BIOS
Détermination de la RAM disponible à l'aide du BIOS
Accéder à la disquette depuis le BIOS
Accéder au disque dur depuis le BIOS
Accéder au port série depuis le BIOS
L'interruption de la cassette
Accéder au clavier depuis le BIOS
Accéder à l'imprimante à partir du BIOS
Lecture de la date et de l'heure à partir du BIOS
Variables du BIOS
Bonjour
Application
Détection
Mathématique
Temps
Stationnement de voiture
BIOS SCSI
CMOS de XT
DesqView
Valeur absolue (ABS)
Triangle Pascal
Année bissextile
DOS
GeoWorks
86-DOS
MS-DOS 2
MS-DOS 6
A86
LZASM
MASM
NASM
TASM
CodeView
Free Hex Editor Neo
OllyDbg
SoftICE
Turbo Debugger
DOSBox
emu8086
PCE - PC Emulator
PCem
Interruptions
Port d'entrée/sortie
RAM de l'IBM PC
Téléchargement
00h à 07h: Processeur
08h à 0Fh: Périphériques (IRQ0 à IRQ7)
10h: Gestionnaire vidéo
13h: Accès aux disques
14h: Gestion des ports séries
15h: Extension d'Entrée/Sortie
16h: Gestion du clavier
17h: Gestion de l'imprimante
21h: Service DOS
2Ah: Interface de service réseau
2Fh: Multiplexe
33h: Interface du pilote de souris
59h: GSS Computer Graphics Interface
5Ch: Réseau BIOS (NetBIOS)
67h: Gestionnaire EMM/EMS
00h: Mode vidéo
01h: Sélection du type de curseur
10h, F0h: Tseng Labs HiColor
4Fh: Pilote VESA
5Fh: Realtek RTVGA
6Fh: Video 7
18h: Demande des informations SCSI
01h: Écrit dans la RAM non-volatile (Amstrad PC1512)
02h: Lecture dans la RAM non-volatile (Amstrad PC1512)
10h: Gestionnaire principal TopView
89h: Entrée en mode protégé
64h: OS/2 API DOS32StartSession
FFh, 92h: Détecte la présence du pilote «PREDIR.EXE»
16h: Windows & DPMI
0Ah: Détection de Windows
84h: Demande le point d'entrée
86h: Détection du mode DPMI
87h: Détecte l'installation DPMI
8Eh: Machine virtuel et application
Préface
Notes légal
Dictionnaire
Recherche

Accéder à la disquette depuis le BIOS

Un enregistreur à cassette était la principale forme d'entreposage de masse au début de l'informatique personnelle. Cependant, les unités de disquettes sont rapidement devenus la norme. Les PC peuvent contrôler un maximum de quatre unités de disque, numérotés de 0 à 3. Le DOS désigne les deux premières unités comme unité de disque A et unité de disque B.

Les premiers systèmes PC basés sur disque n'utilisaient qu'un seul côté des disques pour l'entreposage des données. Les versions 1.1 et ultérieures de DOS entreposent les données des deux côtés du disque.

Structure du disque

Chaque face d'un disque se compose de 40 pistes de 9 secteurs chacune. Chaque secteur a une capacité de 512 octets. Les pistes sont numérotées de 0 à 39. La piste 0 est située sur le bord extérieur et la piste 39 sur le bord intérieur du disque. Les deux faces du disque portent les désignations face 0 (avant) et face 1 (arrière). Ce disque a une capacité d'entreposage totale de 360 Ko.

Les unités de disque inclus avec les ordinateurs AT ont 80 pistes avec 15 secteurs au lieu de 40 pistes avec 9 secteurs. Un unité de disquette AT peut entreposer jusqu'à 1,2 mégaoctets de données par disque. Les systèmes dotés d'un unité de disque de 1,2 Mo peuvent lire à la fois des disques de 1,2 Mo et des disques de 360 Ko.

Remarque : Bien qu'il soit possible d'écrire sur des disques formatés 360 Ko à l'aide d'un unité de disque de type AT de 1,2 Mo, les disques résultants ne sont pas toujours lisibles par un unité de disque PC/XT 360K standard.

Cette structure est basée sur les spécifications DOS. Il est possible de programmer directement le contrôleur de disque ou d'utiliser les différentes fonctions du BIOS pour modifier la structure du disque. Certaines méthodes de protection contre la copie tirent parti de cette capacité pour organiser les données sur le disque de manière à ce que DOS ne puisse pas les utiliser directement.

Les méthodes de transfert de données vers ou depuis le disque sont identiques. La tête de lecture/écriture se déplace d'abord sur la bonne piste. Comme le disque bouge constamment, le secteur à traiter finit par passer par la tête, permettant le transfert de données.

Le BIOS rend certaines fonctions disponibles pour l'accès au disque au niveau le plus bas. Le BIOS pense à DASD (Direct Access Storage Device) plutôt qu'aux unités de disque.

Un total de six fonctions de disque BIOS sont accessibles en appelant l'interruption 13h et en transmettant le numéro de fonction au registre AH.

Fonction 0 : Réinitialiser le disque

La fonction 0 réinitialise l'unité de disque. La réinitialisation s'exécute toujours automatiquement lors du démarrage du système, mais doit également se produire lorsqu'une erreur se produit lors de l'appel de l'une de ces six fonctions. Avant l'appel d'interruption, la fonction numéro 0 doit être chargée dans le registre AH. Après l'exécution de la fonction, l'état d'erreur est renvoyé dans le registre AH. Une valeur indiquant le type d'erreur, le cas échéant, est renvoyée dans le registre AH après les 6 fonctions.

Si un programme appelle la fonction de réinitialisation sans que l'unité de disque signale auparavant une erreur, le code d'erreur 1 (numéro de fonction non inscrit) peut être renvoyé dans certains cas, même si aucune erreur ne s'est produite. Pour cette raison, la fonction ne doit être appelée qu'après une erreur, et non après chaque opération sur le disque.

Fonction 1 : État

La fonction 1 détecte l'état du disque sans accès au disque. S'il renvoie une valeur de 0 comme résultat, aucune erreur ne s'est produite. Une autre valeur représente l'un des codes d'erreur suivants :

Valeur Description
01h Numéro de fonction non autorisé
02h Marquage d'adresse introuvable
03h Tentative d'écriture sur disque protégé en écriture
04h Adresse secteur introuvable
06h Disque changé
08h Dépassement DMA
09h Transmission de données au-delà de la frontière du segment
10h Erreur de lecture
20h Erreur du contrôleur de disque
40h Piste introuvable
80h Erreur de dépassement de délai, le variateur ne répond pas

Si l'une de ces erreurs apparaît, l'opération de disque venant de se terminer a été répétée plusieurs fois après une réinitialisation. La plupart du temps, l'opération répétée réussit sans erreur. Si ce n'est pas le cas, le programme actuel en mémoire doit réagir à la condition d'erreur de manière appropriée et afficher un message d'erreur.

En travaillant avec les fonctions présentées ici, une erreur de temporisation peut se produire fréquemment après une opération de lecture. Cela se produit généralement en raison de la diminution de la vitesse requise pour lire le disque : L'ancienne vitesse ne peut pas être reprise immédiatement après la lecture.

Fonction 2 : Lire

La fonction 2 lit les données du disque. Le BIOS doit connaître l'emplacement à partir duquel vous souhaitez lire les données du disque. Cette information est passée dans les registres DL, DH, CL et CH :

Registre Description
DL Numéro d'unité de disque (0 à 3)
DH Côté du disque (toujours 0 pour les disques simple face)
Valeur Description
0 Face avant
1 Face arrière
CL Premier secteur à lire (1 à 9/1 à 15)
CH Piste contenant le secteur à lire

Jusqu'à 9 secteurs (unités de disque PC/XT) ou 15 secteurs (unités de disque AT) peuvent être lus à l'aide d'un seul appel de fonction. Le registre AL précise ce nombre de secteurs. Étant donné que les unités de disque entreposent généralement des données appartenant ensemble dans des secteurs séquentiels, cela permet un accès rapide aux données (par exemple, 9x512 octets = 4,5 Ko en une révolution de disque).

L'adresse d'un tampon en mémoire doit être passée dans les registres ES et BX puisque la zone de transfert de données n'a pas d'emplacement fixe en RAM dans lequel elle puisse résider. Le registre ES accepte l'adresse de segment du tampon et le registre BX accepte l'adresse de déplacement.

La fonction renvoie l'état d'erreur au registre AH et le nombre de secteurs lus dans le registre AL. En plus du registre AH, un drapeau de retenue activé (drapeau de retenue = 1) signale l'apparition d'une erreur.

Fonction 3 : Écrire

La fonction 3 permet l'accès en écriture au disque. Elle accepte des paramètres similaires à ceux utilisés dans la fonction 2 ci-dessus :

Registre Description
DL Numéro de l'unité de disque (0 à 3)
DH Côté du disque (toujours 0 pour les disques simple face)
Valeur Description
0 Face avant
1 Face arrière
CL Premier secteur à écrire (1 à 9/1 à 15)
CH Piste dans laquelle se trouve le secteur à écrire

La valeur dans le registre AL indique le nombre de secteurs à écrire, tandis que les registres ES et BX indiquent l'adresse de la zone mémoire à partir de laquelle les données doivent être lues. La fonction transmet l'état d'erreur dans le registre AH et le nombre de secteurs écrits dans le registre AL. Le drapeau de retenue a la même signification que dans la fonction 2.

Fonction 4 : vérifier le disque

La fonction 4 teste si les données sont correctement transférées vers et depuis le disque. Le BIOS base la transmission correcte des données sur une valeur de contrôle de redondance cyclique (CRC), au lieu de simplement comparer les données en mémoire avec les données sur disque. L'utilisation d'un CRC consiste à additionner la valeur de chaque octet individuel dans un secteur avec une formule spécifique. Étant donné que la plupart des unités de disque fonctionnent bien et ont une fiabilité exceptionnelle, la plupart des programmeurs ignorent cette fonction. Le DOS n'utilise cette fonction que pour tester les données ayant été transmises à un disque en réponse à un drapeau VERIFY ON actif.

La configuration du registre est similaire aux fonctions fonction 2 et fonction 3 (voir ci-dessus), à la différence que le registre AH doit contenir 4. Comme la fonction n'a pas besoin d'une adresse de tampon, cette fonction n'utilise pas les registres BX et ES.

Remarque : Cette fonction ne fonctionne correctement que sur un PC ou un XT : les AT peuvent renvoyer des résultats incorrects.

Fonction 5 : Formater

La dernière fonction de l'interruption 13h permet à l'utilisateur de formater une partie d'un disque. Le formatage du disque (par exemple, avec la commande FORMAT du DOS) est une exigence car les disques utilisés par le PC sont à secteurs logiciels. Cela signifie que le logiciel, et non le matériel, détermine le positionnement des secteurs et des pistes sur le disque. Le système d'exploitation doit installer les pistes et les secteurs sur le disque à l'aide de cette fonction. Les secteurs ne doivent pas contenir 512 octets. Cette fonction du BIOS permet de formater 128, 256, 512 ou 1024 octets par secteur. Cependant, vous devez formater une piste complète.

Le numéro de fonction (5) doit être passé dans le registre AH. Le registre AL est chargé avec le nombre de secteurs avec lesquels formater la piste. Ce nombre peut être inférieur aux valeurs par défaut du DOS de 9 ou 15. Le numéro de la piste à formater est passé dans le registre CH. Ce numéro de piste doit être une valeur comprise entre 0 et 39 (PC/XT) ou entre 0 et 79 (AT). Le numéro de l'unité de de disque est passé dans le registre DL et la face du disque dans le registre DH.

Outre ces informations, la fonction de format nécessite également un champ contenant des chartes de formatage, également nécessaire aux fonctions de lecture, d'écriture et de vérification d'un secteur. L'adresse de ce champ est passée dans les registres ES et BX. L'adresse de segment est chargée dans le registre ES et l'adresse de déplacement dans le registre BX.

Cette table contient une entrée composée de quatre octets pour chaque secteur à formater :

Position Description
Octet 1 Piste à formater
Octet 2 Côté du disque (toujours 0 pour les disques simple face) :
Valeur Description
0 Face avant
1 Face arrière
Octet 3 Numéro de secteur
Octet 4 Nombre d'octets dans ce secteur :
0 128 octets
1 256 octets
2 512 octets
3 1024 octets

Même si la fonction possède déjà le numéro de la piste à formater et la face du disque, ces éléments réapparaissent ici pour des raisons de sécurité. Les secteurs sont placés dans cette table séquentiellement, ce qui attribue au premier secteur le numéro logique 1 et au deuxième secteur le numéro logique 7.

Alors que les numéros logiques et physiques des secteurs concordent généralement dans un lecteur de disque, il est logique dans un disque dur de changer le numéro logique d'un secteur au lieu de son numéro physique. Le disque dur du XT réduit le temps d'accès pour les secteurs individuels en déplaçant les secteurs logiques par six par rapport aux secteurs physiques.

De plus, le nombre d'octets qu'un secteur peut contenir n'a pas besoin d'être uniforme, puisque chaque secteur peut être défini dans la table. Avec cela et d'autres paramètres de la table, la protection contre la copie peut être développée en fonction du formatage. La protection contre la copie basée sur le format ne peut pas être traitée par le système d'exploitation.

En plus des informations telles que l'unité de disque et le numéro de secteur transmis aux fonctions du BIOS lors d'un appel, le BIOS nécessite également une série d'autres éléments pour activer certaines opérations de disque. Ces paramètres sont passés dans la table des paramètres du périphérique. Une telle table existe dans le BIOS en ROM, mais vous pouvez installer le vôtre dans la RAM. L'adresse de la nouvelle table de paramètres du périphérique doit être placée dans les emplacements de mémoire 0000:0078 à 0000:007B. Ces emplacements mémoire doivent contenir l'adresse de l'interruption 1Eh (le PC n'utilise pas cette interruption).

Le DOS offre également la possibilité de fournir une table de paramètres de périphérique unique modifiant certaines valeurs de cette table par rapport à la valeur par défaut du BIOS, accélérant l'accès aux unités de disque.

La table elle-même se compose de 11 octets. Les deux premiers octets sont transférés directement au contrôleur de disque. Ils indiquent le temps d'un saut et le mode DMA. Le temps d'un saut est la durée maximale pendant laquelle la tête de lecture/écriture de l'unité de disque peut se déplacer d'une piste à l'autre.

Le deuxième octet indique le temps pendant lequel le moteur de l'unité de disque peut continuer à fonctionner après une opération de disque. Sa valeur par défaut est de 2 secondes, car il suppose qu'il s'agit de la durée maximale entre des accès consécutifs au disque. La vitesse d'accès au disque est plus rapide si le moteur du disque a déjà atteint sa vitesse de fonctionnement et n'a pas besoin d'être remis en vitesse. La valeur dans cet emplacement de mémoire est basée sur l'horloge système de 18 unités par seconde, ainsi, une valeur de 18 représente un temps d'exécution d'environ une seconde.

La valeur dans l'octet 3 indique le nombre d'octets par secteur pour une opération d'écriture ou de lecture. Il correspond aux valeurs de formatage d'un secteur, il contient donc normalement la valeur 3 (512 octets par secteur). Si vous souhaitez écrire ou lire des secteurs avec d'autres tailles de secteur, la valeur appropriée doit être entrée dans cet emplacement de mémoire.

L'octet 4 donne le nombre maximum de secteurs par piste. L'unité de disque PC/XT utilise par défaut la valeur 9 à cet emplacement, tandis que l'AT utilise par défaut la valeur 15 décimale.

L'octet 5 du tableau contient une valeur représentant la quantité d'espace vide entre la fin d'un secteur et le début du secteur suivant. Cet espace concerne le temps que le BIOS doit laisser s'écouler jusqu'à ce que le secteur suivant apparaisse sous la tête de lecture/écriture (pas d'unités de longueur). La valeur par défaut de cet emplacement mémoire est 42.

L'octet 6 détermine la longueur de transfert de données, qui n'a aucune influence sur la transmission de données dans la plupart des cas.

Comme le formatage d'un disque se produit par l'aimantation de certaines zones, les tailles des espaces non magnétiques entre les secteurs doivent être déterminées. L'octet 7 enregistre cela, et ces espaces doivent être plus grands que l'espace entre les secteurs dans l'octet 5 afin que le début d'un secteur puisse être reconnu correctement.

L'octet 8 accepte le code ASCII du caractère remplissant un secteur lors du formatage. Le BIOS utilise par défaut le caractère de division ÷ (code ASCII 246).

Après que la tête de lecture/écriture se soit déplacée d'une piste à l'autre, elle a besoin d'une période de repos pour laisser les vibrations liées au mouvement s'estomper. Ensuite, il peut effectuer correctement tous les accès au disque suivant.

Cette période de repos indiquée dans l'octet 9 du tableau est par défaut un multiple de 1 milliseconde. Alors que le BIOS accorde 25 millisecondes de repos, DOS n'autorise que 15 millisecondes.

La dernière entrée du tableau dans l'octet 10 donne la durée pendant laquelle le moteur du disque atteint la vitesse de fonctionnement. La valeur dans cet emplacement de mémoire est par défaut des multiples de 1/8 de seconde. Même ici, le DOS nécessite plus de la tête de lecture/écriture que le BIOS. Il ne fournit qu'une période d'attente de 1/4 seconde, par opposition à 1/2 seconde pour le BIOS.

Disques durs haute densité

Une partie de l'introduction de l'AT comprenait des unités de disque haute densité de 1,2 mégaoctet. Pour assurer la compatibilité avec les disques durs antérieurs, ils sont capables de lire et d'écrire des disques 320 Ko/360 Ko malgré l'augmentation de la capacité supérieure de 1,2 mégaoctets. Ils peuvent également reconnaître un changement de support de disque. Pour la prise en charge de cette nouvelle capacité, le BIOS d'AT contient trois nouvelles fonctions de disque étant appelées via l'interruption 13h comme les fonctions précédentes.

La première de ces nouvelles fonctions détermine le type d'unité utilisé. Lors de l'appel de fonction, en plus du numéro de fonction 15h, le numéro de l'unité de disque (0 ou 1, 2 réservé au disque dur) doit être passé dans le registre DL. La fonction renvoie le type d'unité de disque dans le registre AH :

Valeur Description
AH=0 Aucun unité de disque de disponible
AH=1 L'unité de disque ne détecte pas le changement de disque
AH=2 L'unité de disque détecte le changement de disque
AH=3 Disque dur

Si l'unité de disque détecte un changement de disque, il peut être détecté à l'aide de la fonction 16h. Après avoir appelé cette fonction en passant la valeur 16h au registre AH et le numéro de l'unité de disque (0 ou 1), la fonction retourne un numéro au registre AH indiquant si le disque a été changé depuis le dernier accès disque. Si ce registre contient la valeur 6, le disque a été changé. La valeur 0 indique qu'aucun changement n'a eu lieu.

La dernière nouvelle fonction, la fonction 17h, doit être appelée avant d'appeler la fonction de formatage (fonction numéro 5) sur les machines PC/AT ou PS/2 pour indiquer au contrôleur comment il doit formater le disque. Il doit formater le disque au format 320 Ko, 360 Ko ou 1,2 mégaoctet. Outre le numéro de fonction dans le registre AH et le numéro de l'unité de disque dans le registre DL, un code doit être transmis au registre AL indiquant non seulement le type de format, mais également le type de lecteur de disque utilisé. Ce code a la signification suivante :

Valeur Description
1 Formater en 320/360 Ko sur un lecteur 320/360K
2 Formater à 320/360 Ko sur un disque de 1,2 Mo
3 Formater à 1,2 Mo sur un lecteur de 1,2 Mo


PARTAGER CETTE PAGE SUR
Dernière mise à jour : Mardi, le 7 février 2023