Accès à la souris en mode réel [Résolu]

cs_jud83 9 Messages postés mardi 30 septembre 2003Date d'inscription 19 février 2011 Dernière intervention - 18 févr. 2011 à 10:50 - Dernière réponse : cs_jud83 9 Messages postés mardi 30 septembre 2003Date d'inscription 19 février 2011 Dernière intervention
- 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.
Afficher la suite 

Votre réponse

3 réponses

ToutEnMasm 552 Messages postés jeudi 28 novembre 2002Date d'inscription 26 mars 2016 Dernière intervention - 18 févr. 2011 à 11:02
+3
Utile
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.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de ToutEnMasm
cs_patatalo 1466 Messages postés vendredi 2 janvier 2004Date d'inscription 14 février 2014 Dernière intervention - 19 févr. 2011 à 16:48
0
Utile
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

@++
Commenter la réponse de cs_patatalo
cs_jud83 9 Messages postés mardi 30 septembre 2003Date d'inscription 19 février 2011 Dernière intervention - 19 févr. 2011 à 18:51
0
Utile
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.
Commenter la réponse de cs_jud83

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.