|
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:
| 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;
|
|