Section courante

A propos

Section administrative du site

 Langage  Programmation  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
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
Affichage
Clavier
Cyrix
Traitement de texte
Manette de jeux
Mathématique
Modem
Partition
Presse-Papier
Son
Souris
Système d'exploitation
Hacker
Introduction
Métaphysique de l'affichage
Affichage d'élément simple
Traitement des couleurs
Accélérateur graphiques
Technique d'affichage de forme
Les Scalaires (images sur mesure)
Les Fractales
BIOS CGA pour Graphic Solutions
Triangle de «Sierpinski»
PS/2
Exécution de programmes fils et de sessions
Bibliothèque de code
Sources
Lexique et dictionnaire 80x86
Code Assembleur
Extension Fichier
Interruptions
Port d'E/S
RAM
Table Code
8080 et 8085
68000
Java
00h à 07h: Processeur
08h à 0Fh: Périphériques (IRQ0 à IRQ7)
10h: Gestionnaire vidéo
13h: Accès aux disques
15h: Extension d'Entrée/Sortie
16h: Clavier
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é
00h: Lecture d'un caractère
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
APPLE ][
ATARI 2600
Commodore 64
IBM PC
Préface
Notes légal
Dictionnaire
Recherche

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;

Voir également

Index des entreprises - Cyrix

PARTAGER CETTE PAGE SUR
Dernière mise à jour : Dimanche, le 1 mai 2016