Section courante

A propos

Section administrative du site

Détermination du type de PC

L'utilisation de certaines fonctions du BIOS est davantage destinée à l'identification du modèle qu'à l'identification de la version du BIOS. Ils indiquent le type de PC utilisé. Ils indiquent également quand le BIOS a des fonctions supplémentaires (par exemple, le BIOS AT est mieux équipé que le BIOS PC et BIOS XT). Ces fonctions supplémentaires gèrent essentiellement la sortie de chaîne de caractères à l'écran, l'accès à l'horloge en temps réel (standard sur l'AT) et la RAM supplémentaire au-delà de la limite de mémoire de 1 mégaoctet (également standard sur l'AT).

Un programme appelant ces fonctions doit d'abord s'assurer que l'ordinateur utilisé est bien un AT, et que les fonctions adressées sont disponibles. Le programmeur peut utiliser l'octet d'identification de modèle situé dans le dernier emplacement mémoire de la ROM-BIOS à l'adresse F000:FFFE. Cet octet peut contenir les codes suivants :

Code Description
251 ou FBh PC XT avec carte maîtresse 256/640
252 ou FCh AT, XT/286
253 ou FDh PC Junior d'IBM.
254 ou FEh XT et PC portable
255 ou FFh PC

Remarque : Ces valeurs ne sont pas tout à fait exactes. De nombreux compatibles PC/XT indiquent des valeurs complètement différentes dans l'octet d'identification du modèle. La règle empirique suivante peut être utilisée : un octet d'identification de modèle de 252 identifie un AT ; tout autre numéro indique un PC/XT.

Seuls les ordinateurs IBM PC ont des numéros d'identification de modèle fiables garantis à l'emplacement de mémoire F000:FFFE. Cela peut ne pas être le cas pour les ordinateurs compatibles. Utilisez le programme DEBUG du DOS pour obtenir l'octet d'identification du modèle. Appelez DEBUG avec :

debug

Saisissez la séquence de commandes suivante :

d f000:fffe 1 1

L'identification du modèle apparaît sous forme de nombre hexadécimal à l'écran.

Accès à l'octet d'identification du modèle à partir des programmes

L'identification du modèle peut être obtenue directement à partir d'un programme. Voici un petit programme assembleur pour effectuer cette tâche :

  1. DSeg Segment at 0F000h
  2.             org 0FFFEh
  3. PCID DB (?)
  4. IDSeg EndS
  5.     PUSH DS         ; Sauvegarde le segment de données
  6.      MOV AX,IDSeg
  7.      MOV DS,AX      ; Fixe le segment de données vers le BIOS
  8.      CMP PCID,252   ; Test si code AT
  9.     POP DS          ; Restaure le segment de données
  10.     JE IsAT
  11.     ; Périphérique est un PC/XT
  12. IsAT Label Near

Les langages de niveau supérieur peuvent également trouver l'octet d'identification. Le programme BASICA/GWBASIC suivant utilise l'instruction PEEK pour lire l'identification du modèle :

  1. 10 DEF SEG=&HF000
  2. 20 IF PEEK(&HFFFE) = 252 THEN PRINT "AT" ELSE PRINT "PC/XT"

Le Turbo Pascal utilise le tableau MEM pour lire l'identification du modèle :

  1. Program ModelPC;
  2. BEGIN
  3.  If Mem[$F000:$FFFE]=252 Then Writeln('AT')
  4.                          Else Writeln('PC/XT');
  5. END.


Dernière mise à jour : Mardi, le 7 février 2023