From e005a10e65a8b6516b85a708007fa1328f13b56e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20Hord=C3=A9?= Date: Mon, 2 Apr 2007 14:19:44 +0000 Subject: [PATCH] =?UTF-8?q?feat:=20initialisation=20de=20la=20souris=20D?= =?UTF-8?q?=C3=A9tection=20du=20processeur=20Affichage=20du=20logo=20au=20?= =?UTF-8?q?format=20ANSI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- system/system.c | 110 +++++++++++++++++++++++++++++++++++------------- 1 file changed, 80 insertions(+), 30 deletions(-) diff --git a/system/system.c b/system/system.c index e656776..64c8c9b 100644 --- a/system/system.c +++ b/system/system.c @@ -3,38 +3,88 @@ #include "idt.h" #include "timer.h" #include "keyboard.h" +#include "mouse.h" #include "asm.h" +#include "cpu.h" +#include "string.h" -u8 printok[]=" \033[37m\033[1m[ \033[32mOK\033[37m ]\033[0m\r\n"; +#include "ansi.c" + +static cpuinfo cpu; +static u8 noproc[]="\033[31mInconnu\033[0m\000"; + +void ok() +{ +static u8 okmsg[]="\033[99C\033[8D\033[37m\033[1m[ \033[32mOK\033[37m ]\033[0m\000"; +print(okmsg); +return; +} + +int _main(void) { + + cli(); + setvmode(0x02); + /* Efface l'ecran */ + print("\033[2J\000"); + printf(ansilogo); + print("\033[0mNoyau charge en memoire\000"); + ok(); + + print("Initilisation de la table d'interruption\000"); + initidt(); + ok(); + + print("Initialisation du controleur d'interruption\000"); + initpic(); + sti(); + ok(); + + print("Installation du handler timer\000"); + setidt((u32)timer, 0x20, INTGATE, 32); + ok(); + + print("Activation de l'IRQ 0\000"); + enableirq(0); + ok(); + + print("Installation du handler clavier\000"); + setidt((u32)keyboard, 0x20, INTGATE, 33); + ok(); + + print("Activation de l'IRQ 1\000"); + enableirq(1); + ok(); + + print("Installation du handler souris\000"); + setidt((u32)mouse, 0x20, INTGATE, 100); + ok(); + + print("Initialisation du controleur souris :\000"); + if (initmouse()==1) + print(" \033[1m\033[32mSouris Presente\033[0m\000"); + else + print(" \033[1m\033[31mSouris non detecte\033[0m\000"); + ok(); + + print("Activation de l'IRQ 2 (Controleur esclave)\000"); + enableirq(2); + ok(); + + print("Activation de l'IRQ 12\000"); + enableirq(12); + ok(); + + strcpy(&noproc,&cpu.detectedname); + getcpuinfos(&cpu); + + printf("Processeur detecte\r Revision \t:%d\r Modele \t:%d\r Famille \t:%d\r Nom cpuid\t:%s\rJeux\t:%s\000",cpu.stepping,cpu.models,cpu.family,&cpu.detectedname,&cpu.techs); + ok(); + u8 key=0; + while(1) + { + key=waitascii(); + putchar(key); + } -int _main(void) { - cli(); - setvmode(0x02); - /* Efface l'ecran */ - print("\033[2J"); - print("Noyau charge en memoire"); - print(printok); - print("Initilisation de la table d'interruption"); - initidt(); - print(printok); - print("Initialisation du controleur d'interruption"); - initpic(); - print(printok); - print("Activation logicielle des interruptions"); - sti(); - print(printok); - print("Installation du handler timer"); - setidt((u32)timer, 0x30, INTGATE, 32); - print(printok); - print("Activation de l'IRQ 0"); - enableirq(0); - print(printok); - print("Installation du handler clavier"); - setidt((u32)keyboard, 0x30, INTGATE, 33); - print(printok); - print("Activation de l'IRQ 1"); - enableirq(1); - print(printok); - while(1); }