Accès à la souris en mode réel

Résolu
cs_jud83 Messages postés 9 Date d'inscription mardi 30 septembre 2003 Statut Membre Dernière intervention 19 février 2011 - 18 févr. 2011 à 10:50
cs_jud83 Messages postés 9 Date d'inscription mardi 30 septembre 2003 Statut Membre Dernière intervention 19 février 2011 - 19 févr. 2011 à 18:51
Jud83
Bonjour,

Je souhaite (pour culture générale) développer un OS. Dans un premier temps, en mode réel. Je réalise donc un boot loader en ASM (NASM).
Je fais différents essais dans ce boot loader pour m'assurer que je peux interagir avec les matériels suivants :
Ecran : Réalisé. Pas de pb pour écrire des caractères ou des pixels => OK
Disque : Non réalisé, mais je pense pouvoir le faire sans trop de pb
Clavier : Idem Disque
Souris : Là, je bloque complètement.

D'où ma question : Comment peut-on accéder et programmer la souris ? L'interruption 33h n'est pas disponible pour le faire (car aucun OS n'est chargé).
Mon but est de détecter la présence de la souris, les clicks sur les boutons et la position de la souris. Pour l'affichage du curseur, à la limite, je pourrai créer une routine qui affiche un curseur, mais comment accéder aux informations de click et de position ? Via un accès à une zone mémoire ? laquelle ? par un autre moyen ? lequel ?

Pour info, j'utilise NASM sur Windows 7, et je crée ma disquette de boot via Linux (émulé dans VirtualBox sous Windows 7) et je lance mon OS via Bochs.

Merci de vos réponses, surtout si elles s'adressent à la compréhension d'un "débutant" dans le domaine.

3 réponses

ToutEnMasm Messages postés 587 Date d'inscription jeudi 28 novembre 2002 Statut Membre Dernière intervention 13 décembre 2022 3
18 févr. 2011 à 11:02
Il faut écrire une procédure de dialogue avec le port usb ou se trouve la souris.
google 'usb souris asm' et on trouve un paquet de sujets et d'exemples.
3
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
19 févr. 2011 à 16:48
salut,


Il n'y a rien au niveau du bios pour acceder à la souris, au mieux, elle sera émulée en PS/2 et si le matos est vraiment vieux, elle sera en interface serie (COM) .

L'interruption 33h est une interruption du DOS. Le dos charge un driver pour activer cette interruption.

Si tu veux parler d'O.S., il faudra que tu fasses tes propres pilotes pour les différents materiels existants. Inutile de te dire que plus le temps avance, plus le nombre devient important et donc l'O.S. a plus de travail pour determiner le materiel présent.

Creer un pilote USB serait ce qui me paraîtrait le plus d'actualité. Pour ce faire, il faut de la doc sur le materiel et sa manière de s'interfacer (zones memoires, acces E/S, ...), ses spécifications d'une manière générale.

Les pilotes sont la partie changeante de l'O.S. mais son vrai travail sera de partager les ressources entre les différents élements (memoire, temps processeur, ...)

Je ne te conseille pas de continuer sur le mode réel. Trop limité et beaucoup moins fun. Ne serait-ce que les instructions d'acces à la mémoire, le mode protégé permet que tous les registres généraux puissent servir de base ou de déplacement, le mode réel est limité aux registres bx, si et di. Dans tous les cas, ton O.S. sera obligé de passer en mode protégé à certains moments. Le bios dispose d'une interruption pour cela mais c'est ton O.S. ou c'est le bios qui est l'O.S. ?

Sur le net, tu trouveras un document PDF qui a été écrit par le prof de Linus Torvalds si mes souvenirs sont bons. Il indique les spécifications d'un O.S., il est excellent et téléchargeable gratuitement mais je ne me rappelles plus ni où ni son nom et je ne l'ai pas sous les yeux. Tu ne trouveras que des docs en anglais donc, tu peux t'y coller dès maintenant.

Pour finir, l'assembleur n'est pas un language portable. Si tu veux que ton O.S. puisse s'executer sur différentes machines sans devoir tout reprogrammer, tu devras programmer en C ou C++. Cela te permettra de compiler pour des machines différentes

@++
0
cs_jud83 Messages postés 9 Date d'inscription mardi 30 septembre 2003 Statut Membre Dernière intervention 19 février 2011
19 févr. 2011 à 18:51
Jud83
Bonjour,
et tout d'abord merci pour vos conseils.
Je précise l'objet de ma demande : Je ne cherche pas à faire un OS qui rivalise avec Win 7 ou Linux. Je cherche juste à comprendre comment ça marche. Le mode protégé je le ferai aussi (plus tard). Pour l'instant j'en suis au mode réel.
Avant de faire un mini noyau en C, je fais un boot loader en ASM. Dans ce boot loader j'en profite pour faire des tests pour savoir comment accéder uniquement aux matériels suivants : écran, clavier,dd et souris. Et donc je n'arrive pas à savoir comment accéder à la souris (USB ou PS/2). Dois utiliser les int (lesquelles ?), ou par les ports (lesquels et quelles adresses ?) par un autre moyen que j'ignore ?
Je ne cherche pas à écrire des drivers et surtout pas pour des matériels autres que ceux que j'ai cités.
Mais forcément et même sans OS chargé, il se passe quelque chose quand une souris est connectée au PC. Quoi ? Où ? et comment accéder à ce quelque chose est mon problème.
0
Rejoignez-nous