cs_jud83
Messages postés9Date d'inscriptionmardi 30 septembre 2003StatutMembreDernière intervention19 février 2011
-
18 févr. 2011 à 10:50
cs_jud83
Messages postés9Date d'inscriptionmardi 30 septembre 2003StatutMembreDernière intervention19 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.
ToutEnMasm
Messages postés587Date d'inscriptionjeudi 28 novembre 2002StatutMembreDernière intervention13 décembre 20223 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.
cs_patatalo
Messages postés1466Date d'inscriptionvendredi 2 janvier 2004StatutModérateurDernière intervention14 février 20142 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
cs_jud83
Messages postés9Date d'inscriptionmardi 30 septembre 2003StatutMembreDernière intervention19 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.