OVH Cloud OVH Cloud

[HS] Activer mode graphique

2 réponses
Avatar
Sivaller
Une liste de code assembler pour activer un mode graphique (MCGA)
asm
mov ax,0013h
int 10h
end;

Je rechercherai donc une source qui active le mode graphique (CGA,MCGA,VGA)
directement par les registres E/S de la carte vidéo (3d4 3d5 etc) C.A.D sans
passer par le BIOS;
Merci

2 réponses

Avatar
Fabien LE LEZ
On Fri, 31 Dec 2004 18:43:53 +0100, "Sivaller"
:

Une liste de code assembler pour activer un mode graphique (MCGA)
asm
mov ax,0013h
int 10h


Tu risques d'avoir beaucoup de mal à trouver de la doc sur ce genre de
choses maintenant que Windows 95 (et ses successeurs) est sorti, et
que tout le monde a oublié ces techniques depuis plus de six ans.
Si fr.comp.os.msdos est encore actif, tu y trouveras peut-être des
infos. Ta question est presque aussi HS sur
fr.comp.os.ms-windows.programmation qu'ici, puisque sous Windows, les
méthodes sont différentes (typiquement, on laisse DirectX s'occuper de
tout).
Sinon, il te reste comp.lang.asm.x86 (en anglais je suppose).


--
;-)

Avatar
Fred
Une liste de code assembler pour activer un mode graphique (MCGA)
asm
mov ax,0013h
int 10h
end;

Je rechercherai donc une source qui active le mode graphique (CGA,MCGA,VGA)
directement par les registres E/S de la carte vidéo (3d4 3d5 etc) C.A.D sans
passer par le BIOS;
Merci


Bonjour à tous et bonne année,


J'ai retrouvé dans mes archives le Cd Micro Application "La Bible PC"
dans lequel l'auteur traite ce sujet.

En voici un très court extrait pour ne pas polluer le forum C++.
Contributeurs du Newsgroup, veuillez m'excuser, je n'en ai pas
pour longtemps :

;---------------------------------------------------------------------*;
;* Auteur : MICHAEL TISCHER *;
;* Développé le : 13.08.87 *;
;* Dernière MAJ : 21.04.89 *;
;*--------------------------------------------------------------------*;
;* Assemblage : MASM VCOL; *;
;* LINK VCOL; *;
;*--------------------------------------------------------------------*;
;* Appel : VCOL *;
;**********************************************************************;

;== Constantes ========================================================
REG_CONTR = 03D8h ; Adr. port du registre de commande
REG_COUL = 03D9h ; Adr. port de registre de sélection des couleurs
ADRESS_6845 = 03D4h ; Registre d'adresse du 6845
DATA_6845 = 03D5h ; Registre de données du 6845
VIO_SEG = 0B800h ; Segment de la mémoire d'écran
CUR_START = 10 ; Nø registre CRTC: ligne sup‚rieure du curseur
CUR_END = 11 ; Nø registre CRTC: ligne inférieure du curseur
PAGECOUR_HI = 12 ; Octet fort de l'adresse de la page
PAGECOUR_LO = 13 ; Octet faible de l'adresse de la page
CURPOS_HI = 14 ; Nø registre CRTC: octet fort pos. curseur
CURPOS_LO = 15 ; Nø registre CRTC: octet faible pos. curseur

DELAY = 20000 ; Compteur d'itérations pour boucle d'attente


;-- SETMODE: Macro pour régler le registre de commande de l'écran ------

setmode macro mode

mov dx,REG_CONTR ; Adresse du registre de commande de l'écran
mov al,mode ; Nouveau mode dans le registre AL
out dx,al ; Envoyer mode au registre de commande

endm
;------------------------------------------------------------------

;-- GRAFHI : Active le mode graphique 640*200 points ----------
;-- Entr‚e : Aucune
;-- Sortie : Aucune
;-- Registres: AX, SI, BH, DX et registre des indicateurs sont modifiés

grafhi proc near

mov bl,00010010b ; Mode graphique 640*200 points
jmp short graphiq ; Reprogramme le controleur vidéo
grafhi endp
;--------------------------------------------------------------------

;-- VCPROG : programme le controleur vid‚o ---------------------------
;-- Entrée : SI = Adresse d'une table de registres
;-- BL = Valeur pour registre de commande de l'écran
;-- Sortie : Aucune
;-- Registres: AX, SI, BH, DX et registre des indicateurs sont modifiés

vcprog proc near

setmode bl ; Bit 3 = 0 : Ecran d‚sactiv‚

mov cx,12 ; 12 registres … fixer
xor bh,bh ; Commence par le registre 0

vcp1: lodsb ; Lit une valeur de registre dans table
mov ah,al ; Valeur de registre dans AH
mov al,bh ; Num‚ro du registre dans AL
call setvc ; Transmet la valeur au contr“leur
inc bh ; Appelle le registre suivant
loop vcp1 ; Fixe les autres registres

or bl,8 ; Bit 3 = 1 : Ecran activ‚
setmode bl ; Fixe nouveau mode
ret ; Retour au programme appelant
;-------------------------------------------------------------------------

Je pense que c'est ce que vous cherchez, j'ai aussi les programmes
C et Pascal utilisant ces routines.
Vous pouvez me contacter en suivant ce lien et je pourrai vous faire
parvenir le CD que je dois récupérer chez un ami.




--
Fred40

http://cerbermail.com/?7WWAvXv1hV