philou02
Messages postés6Date d'inscriptionmercredi 9 mai 2001StatutMembreDernière intervention 4 juin 2004
-
7 mai 2004 à 10:18
ghuysmans99
Messages postés2496Date d'inscriptionjeudi 14 juillet 2005StatutContributeurDernière intervention 5 juin 2016
-
12 janv. 2009 à 20:19
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
ghuysmans99
Messages postés2496Date d'inscriptionjeudi 14 juillet 2005StatutContributeurDernière intervention 5 juin 20161 12 janv. 2009 à 20:19
# mov eax, [es:(9*4)]
# mov [cs:OldInt9], eax
Euh ... on est en mode réel (sous DOS, dans ce cas-ci) donc pas question d'utiliser EAX qui est un registre 32 bits car ton code ne fonctionnerait pas sur un processeur 16 bits !
Mais tu peux faire :
Bombela
Messages postés225Date d'inscriptionmardi 4 mars 2003StatutMembreDernière intervention30 juillet 2008 9 sept. 2004 à 13:17
Petit message vite fait...
En tapant Bombela dans google, je suis retombé sur cette source...
J'ai jamais posté de driver clavier !
Et oui ! Pas le temps de le terminer !
De plus, j'étai partit du mauvais pied !
M'enfin c'est pas grâve... Y a Modula qui avance ! (Le nouveau nom de PM3D, plus en rapport avec l'évolution du projet !)
@+
philou02
Messages postés6Date d'inscriptionmercredi 9 mai 2001StatutMembreDernière intervention 4 juin 2004 4 juin 2004 à 11:52
Bonjour,
Peut on récupérer les code obtenu, et les intégrer dans prog en C ou C++ ?
philippe
zinotron
Messages postés65Date d'inscriptionvendredi 14 février 2003StatutMembreDernière intervention11 septembre 2004 4 juin 2004 à 00:10
"Alors je cherche et je trouverais ..." (allez, tous en coeur :p )
drasow
Messages postés1Date d'inscriptionvendredi 28 mai 2004StatutMembreDernière intervention28 mai 2004 28 mai 2004 à 17:09
je cherce kelkun ki si conné en java
Bombela
Messages postés225Date d'inscriptionmardi 4 mars 2003StatutMembreDernière intervention30 juillet 2008 18 mai 2004 à 19:29
C 'est pas grâve ;)
Pour mon driver ?
Ben je mélange du C et de l'ASM.
Tu verra comment ça fonctionne quand je l'aurais fini !
Parce uqe pour le moment, c'est pas au top du fonctiononnement ;)
Mais globalement, y juste de l'asm pour installer un gestionnaire de l'int9 le désinstaller etc. En fait, c'est du code asm qui est appelé par une interruption, et c'est ce code asm qui appeelle une fonction C pour la gestion du clavier. Arpès, le code asm envoi au PIC des INT matrérielle le message de fin d'INT.
Le problème n'es pas dans la programmation du matériel. Elle est au momment de convertir les scancode du claviier (Qui sont bordélique) en code de touche virtuelle et en caractère.
Rend toi compte que les virtual code doivent être les mêmes sur un clavier français, anglais ou suisse ! C'est donc vraiment difficile.
Et puis aussi la convertion en caractère ! Il faut gérer les trema, les accents circonflexes et tout et tout !!!
Comme tu vois, c'est pas de tous repos, mais j'ai beoisn de se driver pour un OS spécial 32 bit (PM3D qu'il sappelle ;). Je le dévelloppe dabors pour dos, et une convertion en 32 bits sera facile...
Bye.
zinotron
Messages postés65Date d'inscriptionvendredi 14 février 2003StatutMembreDernière intervention11 septembre 2004 18 mai 2004 à 19:15
question marrante -> tu fais comment pour ton driver clavier ? (qui a dit que j'etait tres interessé ?)
au fait mill pardons, t'avais raison, j'éi confondu avec je c pu trop koi
have fun
danke
++
Bombela
Messages postés225Date d'inscriptionmardi 4 mars 2003StatutMembreDernière intervention30 juillet 2008 18 mai 2004 à 17:56
Au fait, en dévellopant un driver clavier en C (Que j'ai toujours pas fini), je suis apreçus que j'ai fais une grosse erreur dans cette source asm !!
Quand un scancode étendu est généré, il ne faut pas essayer de lire tout de suite le suivant !!! Il faut attendre la provhaine interrption clavier qui vas, a ce moment là, donner la suite du scancode.
Donc, si ça marche, c'est un coup de bol...
@+
Bombela
Messages postés225Date d'inscriptionmardi 4 mars 2003StatutMembreDernière intervention30 juillet 2008 18 mai 2004 à 17:52
Nan nan nan !!! ;)
Tu te trompe ! L'interruption 9 est générer par le processeur lorsqu'une interruption matérielle 1 (Le clavier) est déclanchée !
Je ne tripotte pas le bios !!! En 32 bit, on fait pareil.
Le clavier, génère donc une interruption 9.
Tu vas me dire: mais pourquoi on se retrouve avec une interruption 9 alors que c'est l'interruption matérielle 1 ?
Et bien c'est tous simple ! Les 9 autres interruptions en dessous (0..8) sont dédiée au interruption du processeur et du coprocesseur.
C'est a dire les interruptions du genre erreur de divisions etc.
Voilà !
@+
zinotron
Messages postés65Date d'inscriptionvendredi 14 février 2003StatutMembreDernière intervention11 septembre 2004 18 mai 2004 à 17:03
chapeau!
la verité, ca claque !
par contre, je suis au regret de te dire que ca ne marche pas comme ca dans les OS.
en effet, tu te base sur l'interuption 9 du bios, mais ca fait depuis longtemps que les OS fonctionnent en mode protégé, ce qui leurs interdit l'acces au bios (et meme que c'est tres chiant, ca m'aurait bcp arrangé :-) )
mais chapeau !
ZiNoTrOn
Bombela
Messages postés225Date d'inscriptionmardi 4 mars 2003StatutMembreDernière intervention30 juillet 2008 7 mai 2004 à 12:45
Et bien c'est cool !
J'suis en train de faire un driver clavier en C/ASM pour apprendre le C et en même temps m'entraîner à faire un driver.
Heu... Je fais pas un driver pour DOS, je précise...
C'est un driver pour programme en gros...
Enfin à suivre quoi...
Je mettrais sur le site quand ce sera fini.
@+
philou02
Messages postés6Date d'inscriptionmercredi 9 mai 2001StatutMembreDernière intervention 4 juin 2004 7 mai 2004 à 10:18
12 janv. 2009 à 20:19
# mov [cs:OldInt9], eax
Euh ... on est en mode réel (sous DOS, dans ce cas-ci) donc pas question d'utiliser EAX qui est un registre 32 bits car ton code ne fonctionnerait pas sur un processeur 16 bits !
Mais tu peux faire :
# mov ax, [es:(9*4)]
# mov [cs:OldInt9], ax
# mov ax, [es:(9*4)+2]
# mov [cs:OldInt9+2],ax
9 sept. 2004 à 13:17
En tapant Bombela dans google, je suis retombé sur cette source...
J'ai jamais posté de driver clavier !
Et oui ! Pas le temps de le terminer !
De plus, j'étai partit du mauvais pied !
M'enfin c'est pas grâve... Y a Modula qui avance ! (Le nouveau nom de PM3D, plus en rapport avec l'évolution du projet !)
@+
4 juin 2004 à 11:52
Peut on récupérer les code obtenu, et les intégrer dans prog en C ou C++ ?
philippe
4 juin 2004 à 00:10
28 mai 2004 à 17:09
18 mai 2004 à 19:29
Pour mon driver ?
Ben je mélange du C et de l'ASM.
Tu verra comment ça fonctionne quand je l'aurais fini !
Parce uqe pour le moment, c'est pas au top du fonctiononnement ;)
Mais globalement, y juste de l'asm pour installer un gestionnaire de l'int9 le désinstaller etc. En fait, c'est du code asm qui est appelé par une interruption, et c'est ce code asm qui appeelle une fonction C pour la gestion du clavier. Arpès, le code asm envoi au PIC des INT matrérielle le message de fin d'INT.
Le problème n'es pas dans la programmation du matériel. Elle est au momment de convertir les scancode du claviier (Qui sont bordélique) en code de touche virtuelle et en caractère.
Rend toi compte que les virtual code doivent être les mêmes sur un clavier français, anglais ou suisse ! C'est donc vraiment difficile.
Et puis aussi la convertion en caractère ! Il faut gérer les trema, les accents circonflexes et tout et tout !!!
Comme tu vois, c'est pas de tous repos, mais j'ai beoisn de se driver pour un OS spécial 32 bit (PM3D qu'il sappelle ;). Je le dévelloppe dabors pour dos, et une convertion en 32 bits sera facile...
Bye.
18 mai 2004 à 19:15
au fait mill pardons, t'avais raison, j'éi confondu avec je c pu trop koi
have fun
danke
++
18 mai 2004 à 17:56
Quand un scancode étendu est généré, il ne faut pas essayer de lire tout de suite le suivant !!! Il faut attendre la provhaine interrption clavier qui vas, a ce moment là, donner la suite du scancode.
Donc, si ça marche, c'est un coup de bol...
@+
18 mai 2004 à 17:52
Tu te trompe ! L'interruption 9 est générer par le processeur lorsqu'une interruption matérielle 1 (Le clavier) est déclanchée !
Je ne tripotte pas le bios !!! En 32 bit, on fait pareil.
Le clavier, génère donc une interruption 9.
Tu vas me dire: mais pourquoi on se retrouve avec une interruption 9 alors que c'est l'interruption matérielle 1 ?
Et bien c'est tous simple ! Les 9 autres interruptions en dessous (0..8) sont dédiée au interruption du processeur et du coprocesseur.
C'est a dire les interruptions du genre erreur de divisions etc.
Voilà !
@+
18 mai 2004 à 17:03
la verité, ca claque !
par contre, je suis au regret de te dire que ca ne marche pas comme ca dans les OS.
en effet, tu te base sur l'interuption 9 du bios, mais ca fait depuis longtemps que les OS fonctionnent en mode protégé, ce qui leurs interdit l'acces au bios (et meme que c'est tres chiant, ca m'aurait bcp arrangé :-) )
mais chapeau !
ZiNoTrOn
7 mai 2004 à 12:45
J'suis en train de faire un driver clavier en C/ASM pour apprendre le C et en même temps m'entraîner à faire un driver.
Heu... Je fais pas un driver pour DOS, je précise...
C'est un driver pour programme en gros...
Enfin à suivre quoi...
Je mettrais sur le site quand ce sera fini.
@+
7 mai 2004 à 10:18