Section courante

A propos

Section administrative du site

Sommaire


Introduction

Cette page est réservé exclusivement à la programmation du microprocesseur Cyrix qui ma fois à des propriétés permettant des ajustements de compatibilité tout à fait exceptionnel, cependant, il est un peut victime de ce fait, car pour atteindre cette objectif, il n'est pas configuré à son meilleur!

Cette page ce veut donc une alternative à tous les marchands de pacotille cherchant inlassablement à nous vendre des logiciels pour en tirer le meilleur! Je suis particulièrement révolter de voir que parmi les quelques 200 à 300 pages HTML traîtant de ce fabuleux petit bijoux (quand on sait comment si prendre avec lui), aucun n'offre de code source ou d'exemple concret, même chez GNU et Linux pour arriver à cette objectif.

Afin, puisqu'il n'y avait absolument aucune documentation ou exemple (hormis un vague prélude de Ralf Brown), je dus transgresser un sermant, un faire de l'"inverse-ingenering" afin que la connaissance soit accessible pour tous! Je dois ainsi me plaindre de voir qu'autant d'auteur n'ont aucune dignité et cherche à vendre pour environ 20$ des ajustements de puces n'en valeur qu'une 60$??? Avouez comme moi qu'un abus existe et qu'un urgent besoin de remettre les choses au point est absolument nécessaire!

ATTENTION! Les Session de compatibilité DOS de Windows ou les boîtes de compatibilité d'OS/2 ne support pas très bien ce genre de programmation directe de microprocesseur lui-même! Donc, il se peut que le système n'effectue aucune modification de sa configuration actuel... sous ses systèmes d'exploitations ou environnement graphiques multi-tâche.

Découvrir la présence du Cyrix

La technique la plus simple pour découvrir la présence d'un processeur Cyrix est la suivante:

PUSH AX
  MOV AX,5555h
  XOR DX,DX
  MOV CX,0002h
  CLC
  DIV CX
 POP AX
 JC  @NotCyrix
 MOV AL,Cyrix
@NotCyrix:

Découvrir la présence du Cyrix 6x86 sans utiliser le CPUID

Malheureusement, les nouveaux systèmes d'exploitation de la trame des Windows, désactive par défaut l'instruction CPUID sur les microprocesseur Cyrix (et le BIOS aussi de faite!). Alors si l'instruction CPUID permettant la reconnaissance des nouveaux microprocesseurs de la classe Pentium ne sert à rien sous ces systèmes... Cependant, il y a une alternative, si le système n'autorise pas l'activation du CPUID, il peut être plus simple de tout simplement interroger les autres registres de configuration (fixer en lecture seulement) après s'être assurer qu'il s'agit d'abord d'un Cyrix. Ainsi en envoyant la valeur 0FEh dans le port d'Entrée/Sortie 22h, on pourra lire dans le registre du port 23h les valeurs correspondant au microprocesseur comme le montre le tableau suivant:

Valeur (registre 0FEh du port 23h) Description
00h Cx486 SLC
01h Cx486 DLC
02h Cx486 SLC2
03h Cx486 DLC2
04h Cx486 SRx (mise-à-jour du Cx486SLC)
05h Cx486 DRx (mise-à-jour du Cx486DLC)
06h Cx486 SRx2 (mise-à-jour du 2x Cx486SLC)
07h Cx486 DRx2 (mise-à-jour du 2x Cx486DLC)
10h Cx486S
11h Cx486S2
12h Cx486Se
13h Cx486S2e
1Ah Cx486DX
1Bh Cx486DX2
1Fh Cx486DX4
28h 5x86 1xs
29h 5x86 2xs
2Ah 5x86 1xp
2Bh 5x86 2xp
2Ch 5x86 4xs
2Dh 5x86 3xs
2Eh 5x86 4xp
2Fh 5x86 3xp
30h 6x86 1xs
31h 6x86 2xs
32h 6x86 1xp
33h 6x86 2xp
34h 6x86 4xs
35h 6x86 3xs
36h 6x86 4xp
37h 6x86 3xp
40h GxM 4x0
41h MediaGX x1/GxM 6x0
42h GxM 4x1
43h GxM 6x1
44h MediaGX 4xs/GxM 7x0
45h MediaGX 3xs/GxM 8x0
46h MediaGX 4xp/GxM 7x1
47h MediaGX 3xp/GxM 5x1
50h 6x86MX s base 1x
51h 6x86MX 2xs
52h 6x86MX 2.5xs
53h 6x86MX 3xs
54h 6x86MX 3.5xs
55h 6x86MX 4xs
56h 6x86MX 4.5xs
57h 6x86MX 5xs
58h 6x86MX p base 1x/1xp
59h 6x86MX 2xp
5Ah 6x86MX 2.5xp
5Bh 6x86MX 3xp
5Ch 6x86MX 3.5xp
5Dh 6x86MX 4xp
5Eh 6x86MX 4.5xp
5Fh 6x86MX 5xp

Voici un exemple du bout de code assembleur permettant de tester la présence d'un microprocesseur 5x86 ou 6x86:

MOV AL,0FEh
OUT 22h,AL
IN  AL,23h
MOV BL,AL
MOV AL,Cyrix5x86
CMP BL,30h
JB  @Not6x86
MOV AL,Cyrix6x86
@Not6x86:

Activation de l'instruction CPUID sur un Cyrix 6x86

La routine suivante écrit en à l'origine pour un Turbo Pascal 6 ou supérieur pour un microprocesseur Cyrix 6x86 et permet d'autoriser ou d'interdire l'instruction «CPUID» par le microprocesseur, il va de soit que le bit 21 du registre de drapeaux 32 bits du microprocesseur pourra s'activer à partir de ce moment que l'instruction sera reconnu par des logiciels conçu exclusivement pour INTEL.
 

 Procedure SetCPUID(X:Boolean);Assembler;ASM
  MOV DX,0022h { Port de contrôle de configuration }
  MOV AL,0C3h { Registres de contrôle de configuration CCR3 }
  OUT DX,AL
  INC DX
  IN AL,DX
  MOV CL,AL { Sauvegarde dans CL la valeur CCR3 }
   { Fixe les bits 4 à 7 du registre CCR3 à 1 pour autoriser une modification }
  AND AL,0Fh
  OR AL,010h
  XCHG AL,AH
  DEC DX
  MOV AL,0C3h { Registre CCR3 }
  OUT DX,AL
  INC DX
  XCHG AL,AH
  OUT DX,AL
  DEC DX
  MOV AL,0E8h
  OUT DX,AL
  INC DX
  IN AL,DX
   { Ajuste le 7 bits du registre à la valeur de «X» }
  CMP X,True
  JE @2
  AND AL,LOW(NOT 80h)
  JMP @3
 @2:
  OR AL,80h
 @3:
  XCHG AL,AH
  DEC DX
  MOV AL,0E8h
  OUT DX,AL
  INC DX
  XCHG AL,AH
  OUT DX,AL
  DEC DX
   { Restitution de la valeur original du CCR3 }
  MOV AL,0C3h { Registre CCR3 }
  OUT DX,AL
  INC DX
  MOV AL,CL
  OUT DX,AL
 END;


Dernière mise à jour : Dimanche, le 1 mai 2016