COMMENT PROGRAMMER UN OS SIMPLE EN C ET SOUS WINDOWS
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019
-
19 août 2005 à 23:48
oh1234
Messages postés15Date d'inscriptionmercredi 28 janvier 2009StatutMembreDernière intervention27 mars 2018
-
15 juil. 2009 à 23:00
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
oh1234
Messages postés15Date d'inscriptionmercredi 28 janvier 2009StatutMembreDernière intervention27 mars 2018 15 juil. 2009 à 23:00
Merci Pour Ce Guide
abdoulax
Messages postés875Date d'inscriptionsamedi 17 mai 2003StatutMembreDernière intervention22 juin 20121 5 déc. 2008 à 16:04
Quand j'ai dis de google, j'ai abusé, ptite correction de ma part :p
abdoulax
Messages postés875Date d'inscriptionsamedi 17 mai 2003StatutMembreDernière intervention22 juin 20121 5 déc. 2008 à 15:57
Regarde aussi cloud gOS de google, c'est vraiment ce que tu recherches, enfin au niveau du concept. Cette OS démarre en 1 seconde et te donne accès à des outils. Après tu peu directement lancer Windows ou Linux sans redémarrer la machine.
Have fun
mitsh666
Messages postés46Date d'inscriptiondimanche 10 octobre 2004StatutMembreDernière intervention13 juin 20081 5 déc. 2008 à 14:08
hello,
Merci pour toutes ces précisions.
Je pensais pas qu'il fallait réinventer TOUT SUR TOUT. Ce n'est donc pas ce que je recherche(ou du moins pour l'instant). Je pensais qu'on pouvait faire son OS en assemblant des composants déjà existants et ses propres composants, pour arriver à une vitesse de démarrage de l'ordre de la seconde. hum.
LFS... ça m'a l'air intéressant... vais creuser dans ce sens.
Merci.
A+
Angel
abdoulax
Messages postés875Date d'inscriptionsamedi 17 mai 2003StatutMembreDernière intervention22 juin 20121 5 déc. 2008 à 12:13
D'ailleur si tu veux comprendre le fonctionnement d'un système Linux, essaye LFS. C'est un peu hard mais si tu y arrives tu pourras réaliser ton mini OS.
Have fun
victorcoasne
Messages postés1101Date d'inscriptionjeudi 24 avril 2003StatutMembreDernière intervention23 juillet 20237 5 déc. 2008 à 12:06
Salut,
Si t'as envie de passer ta vie à écrire des "drivers" pour tous tes périphériques (écran, clavier, souris, enceintes), réécrire des libraires vidéos, audio utiliser les interuptions correctement afin d'afficher point par point sur ton écran des graphiques pas évolué, vas-y.
Un OS demande de TOUT réinventer.
Si c'était aussi facile tout le monde aurait son propre OS et on se baserait pas sur un DOS ou un UNIX pour en un créer un nouveau.
Bonne chance et bonne prog,
@++,
Victor
abdoulax
Messages postés875Date d'inscriptionsamedi 17 mai 2003StatutMembreDernière intervention22 juin 20121 5 déc. 2008 à 11:52
Je pense que "Cloud" va te permettre de faire ce genre de chose et en plus de te connecter à internet!
mitsh666
Messages postés46Date d'inscriptiondimanche 10 octobre 2004StatutMembreDernière intervention13 juin 20081 5 déc. 2008 à 11:44
Hello,
Suis un peu débutant, mais envie de me former surtout que maintenant j'ai un but. J'aimerai faire un OS qui démarre en 1 seconde. Un OS avec le minimum de programmes vitaux. Le but : ecouter rapidement musique, film, ... sans avoir à attendre 2min le démarrage de Windows.
Dans un premier temps, je veux pas de connexion internet, mais juste pouvoir mettre des fichiers depuis un autre pc (disque en documents partagés).
J'imagine donc que je dois m'orienté sur la programmation d'un OS. Qu'en pensez-vous? Ton tutorial est fait pour...
cs_lucky84
Messages postés7Date d'inscriptionjeudi 21 décembre 2000StatutMembreDernière intervention14 janvier 2009 12 nov. 2008 à 14:54
Oui je crois
crazy lapinou
Messages postés22Date d'inscriptiondimanche 26 novembre 2006StatutMembreDernière intervention18 août 2008 12 juil. 2008 à 19:03
Si je ne me trompe pas, il y a un lien vers ce site dans le tuto
Monyisageek
Messages postés18Date d'inscriptionvendredi 5 octobre 2007StatutMembreDernière intervention 5 février 2008 12 juil. 2008 à 17:54
Monyisageek
Messages postés18Date d'inscriptionvendredi 5 octobre 2007StatutMembreDernière intervention 5 février 2008 29 févr. 2008 à 15:33
Tu l'utilise dans les bonnes conditions ?
Les répertoires sont crées et les fichiers existes, etc... ?
cs_Picsou9
Messages postés1Date d'inscriptionlundi 8 octobre 2007StatutMembreDernière intervention26 février 2008 26 févr. 2008 à 19:31
Impossible d'exécuter le programme chez moi :(
smasher81
Messages postés63Date d'inscriptionjeudi 16 janvier 2003StatutMembreDernière intervention28 janvier 2009 23 févr. 2008 à 23:33
S'il vous plait la suite !!--Monyisageek
Je ne pourrais pas mieu dire ;) La suite !C'est vraiment le seul tutorial compréhensibile que j'ai trouvé ;)..
smasher81@hotmail.com
Monyisageek
Messages postés18Date d'inscriptionvendredi 5 octobre 2007StatutMembreDernière intervention 5 février 2008 5 janv. 2008 à 14:45
S'il vous plait la suite !!
gamemonde
Messages postés336Date d'inscriptionsamedi 9 août 2003StatutMembreDernière intervention 9 juillet 20112 20 oct. 2007 à 02:21
je sais ce suject est mort mais je voudrais juste le chapitre 4 pour le kernel en c car le reste j'ai reussir a faire mais je comprend pas comment faire un kernel en c
crazy lapinou
Messages postés22Date d'inscriptiondimanche 26 novembre 2006StatutMembreDernière intervention18 août 2008 21 févr. 2007 à 19:01
Pourquoi le site http://gameos.fb.bz/ ne marche pas? J'essai depuis plusieurs jours mais ça ne marche pas!!!
cs_yoshito
Messages postés1Date d'inscriptiondimanche 27 novembre 2005StatutMembreDernière intervention30 décembre 2006 30 déc. 2006 à 17:03
Vous sauriez pas où est ce qu'on peut avoir les chapitres manquants (vu qu'ici ca n'est plus a jour), ce serait bien :)
RPGman
Messages postés6Date d'inscriptionjeudi 27 avril 2006StatutMembreDernière intervention28 octobre 2007 24 déc. 2006 à 17:58
euh pourquoi ça commence au chapitre 2
jack_ryan
Messages postés14Date d'inscriptionvendredi 17 novembre 2000StatutMembreDernière intervention26 mai 2007 26 sept. 2006 à 20:25
salut,
Avant tu avais mis un chapitre traitant rapidement de l'affichage à l'ecran...
peut tu les remettre quelque part car il contenait certaines informations utiles.
merci d'avance.
cs_samana
Messages postés8Date d'inscriptionvendredi 7 mai 2004StatutMembreDernière intervention12 septembre 2006 2 août 2006 à 01:01
Cours de BTS Info identiques...l'OS ou programmation système reste qqchose de complexe ms accessible pr qui maîtrise le C. Beaucoup de théorie aussi pr comprendre la gestion de la mémoire (physique et virtuelle) du boot jusqu'au chargement du système en mémoire. Bonne continuation et achetez un bon bouquin de théorie des OS pr maîtriser ts les différents aspects de la gestion mémoire, des interruptions systèmes/logicielles, des sémaphores...très intéressant.
CyberP
Messages postés283Date d'inscriptionmercredi 8 janvier 2003StatutMembreDernière intervention 4 juillet 20072 19 juin 2006 à 11:01
oui mais ils s'arrête un peu vite le bosokernel c'est ça le problème (et pas très précis vers la fin)
Quel est l'adresse du bon site ?
Celle qui est donnée me dit que la page n'existe plus quand je clique sur tutoriaux,pareil pour les autres lien.
CyberP
Messages postés283Date d'inscriptionmercredi 8 janvier 2003StatutMembreDernière intervention 4 juillet 20072 6 févr. 2006 à 19:57
CS veut bien dire Code Segment mais ça n'a rien à voir avec la clé USB, c'est en rapport avec la RAM
peut être que c'est un problème de compilation
personnelement je suis passé sous linux pour continuer à programmer mon o/s parce que sous windows entre les compilateurs qui compilent pas bien, le rawwrite qui a parfois aussi des problèmes d'écriture....
cs_DragonHeart
Messages postés38Date d'inscriptionmercredi 26 décembre 2001StatutMembreDernière intervention16 octobre 2008 6 févr. 2006 à 11:55
Je dis ca un peu sans trop savoir j'apprend tous comme toi :P .Mais il me semble que cela vien de la taille des Segments qui est trop grande(pour une clé USB à mons avis) CS étant me semble t'il le Code Segment (Dans le tuto les segments ont une taille de 128 Mo chacun si je ne me trompe pas!)
goutbouyo
Messages postés429Date d'inscriptionmardi 6 juillet 2004StatutMembreDernière intervention12 janvier 2008 6 févr. 2006 à 00:20
J'ai réussi à booter depuis une clé USB mais maintenant quand j'essaye de charger le kernel ça me met une erreur : CS limit
cs_bloom1
Messages postés328Date d'inscriptionjeudi 26 août 2004StatutMembreDernière intervention 8 mars 2007 5 févr. 2006 à 20:53
Teste avec Bochs !!! Moi aussi j'ai le même problème lol!
goutbouyo
Messages postés429Date d'inscriptionmardi 6 juillet 2004StatutMembreDernière intervention12 janvier 2008 5 févr. 2006 à 20:51
Salut,
Le tuto est très intéressant, mais comment faire si je n'ai pas de lecteur de disquette ???
cs_DragonHeart
Messages postés38Date d'inscriptionmercredi 26 décembre 2001StatutMembreDernière intervention16 octobre 2008 3 févr. 2006 à 20:19
Je vais jeter un oeil a ce tuto ca ma l'air fort interessant dommage que sur le site beaucoup de lien ne marche pas ...
La suite du tuto est-elle prévu?
cs_bloom1
Messages postés328Date d'inscriptionjeudi 26 août 2004StatutMembreDernière intervention 8 mars 2007 22 janv. 2006 à 03:52
Hey merci hein ca m'a beaucoup aidé :)
georges023
Messages postés24Date d'inscriptionvendredi 23 décembre 2005StatutMembreDernière intervention 7 septembre 2006 30 déc. 2005 à 14:58
CyberP
Messages postés283Date d'inscriptionmercredi 8 janvier 2003StatutMembreDernière intervention 4 juillet 20072 4 nov. 2005 à 20:16
pour continuer sur mes compilateurs : la seule possibilitée, à part prendre objcpy, est d'utiliser cygwin par exemple, sauf que je me suis énervé sur ce truc au bout de 30 secondes et que je n'ai plus jamais essayé de le faire marcher
sinon sur mon site c'est rubrique "Votre O/S" dans "Autres" directement dans le menu à gauche
CyberP
Messages postés283Date d'inscriptionmercredi 8 janvier 2003StatutMembreDernière intervention 4 juillet 20072 4 nov. 2005 à 20:12
pour anonyme_man_in_this_world:
ce n'est pas impossible : déjà Visual Studio ne propose pas que des Windows mais aussi pour le mode console, qui équivaut à MS-DOS
le problème de cela est que les exécutables (le programme final) créé est dans un format reconnu par windows (ou ms-dos) alors qu'il faudrait du binaire plat (premier octet du fichier = première instruction et ainsi de suite)
il y a un petit utilitaire founis avec gcc qui est objcpy et qui permet de transformer ces fichiers vers le binaire plat (en fait c'est pas pour ça qu'il a été conçu mais en théorie ça marche tout aussi bien)
de toutes manières si tu prends Dev-C++ qui utilise le compilateur MinGW (pas sûr du nom mais c'est quelque chose qui ressemble) il a un petit bug qui fait que quand on essaye de linker en binaire plat, il met une erreur (j'ai regardé sur plusieurs forum et personne n'a trouvé de solution, ou plutôt tout le monde dit que c'est un bug du compilateur)
sinon sur mon site AAP (regardez dans mon profil ça évitera de toutes manières de faire un lien mort ici au cas où) j'ai mis des tutos faits par moi-même sur comment créer son o/s, vu que je suis allé un peu plus loin dans le sujet
mais à partir d'un moment ça devient très compliqué (un moment où je ne suis pas encore arrivé dans les tutoriaux mais dans le développement de mon o/s)
junior300
Messages postés55Date d'inscriptiondimanche 16 novembre 2003StatutMembreDernière intervention19 décembre 2006 3 nov. 2005 à 17:45
quelqu'un connaitrait il des site où sont expliqué les lidt ?
merci d'avance
anonyme_man_in_this_world
Messages postés161Date d'inscriptionsamedi 25 juin 2005StatutMembreDernière intervention 1 août 2006 3 nov. 2005 à 10:28
superbe merçi pour tes explications CyberP :)).j'ai une nouvelle
petite remarque : tu crois pas qu'il est impossible de faire un
kernel avec Visual Studio puisque tous les types de projets qui
sont proposés au debut sont des projets Windows donc ....?
merçi d'avance,@++.
ana_adil
Messages postés52Date d'inscriptiondimanche 7 décembre 2003StatutMembreDernière intervention 4 juillet 2006 24 oct. 2005 à 16:00
Bonjour,
joli travail continue comme ca.
J'attend la suite avec impatience.
;)
CyberP
Messages postés283Date d'inscriptionmercredi 8 janvier 2003StatutMembreDernière intervention 4 juillet 20072 23 oct. 2005 à 08:30
on ne peut pas utiliser de librairie toute faite tout simplement parce que c'est fait pour windows/msdos et que ce sera pas compatible avec un autre o/s (il y a sûrement des fonctions en plus sous msdos par exemple que la librairie appelle et qu'elle ne trouvera pas autrement)
recréer le getch c'est beaucoup plus compliqué car pour gérer le clavier il faut programmer les interruptions, puis le PIC, et après chaque fois qu'on appuie sur une touche du clavier, le PIC génèrera une interruption
c'est que après cette interruption qu'on peut lire sur un port quelle touche a été enfoncée/relâchée
victorcoasne
Messages postés1101Date d'inscriptionjeudi 24 avril 2003StatutMembreDernière intervention23 juillet 20237 22 oct. 2005 à 21:39
Bonjour,
Comment fais-tu pour trouver les fonctions qui sont "indépendantes" zippro4012 ?
Pourrais tu faire en C le getch() car j'arrive pas à l'avoir
Merci !
victorcoasne
Messages postés1101Date d'inscriptionjeudi 24 avril 2003StatutMembreDernière intervention23 juillet 20237 22 oct. 2005 à 12:02
Comment on peut par exemple inclure la libraire libconio.a pour la compilation/linkage ?
zippro4012
Messages postés216Date d'inscriptionmardi 15 juin 2004StatutMembreDernière intervention26 février 20061 22 oct. 2005 à 11:50
//Pour écrire une chaine complète
void printl(char *pString,int iXPos, int iYPos)
{
int iIndex = 0;
while (pString[iIndex] != 0)
{
printc(pString[iIndex],iXPos + iIndex , iYPos);
iIndex++;
}
}
CyberP
Messages postés283Date d'inscriptionmercredi 8 janvier 2003StatutMembreDernière intervention 4 juillet 20072 22 oct. 2005 à 08:16
on en a parlé plus haut...
sinon il suffit de recréer la fonction printf qui prend un char* en paramètre par exemple et qui, avec un petit for, prend chaque caractère de la phrase et l'écrit dans la mémoire vidéo, jusqu'à arriver à un 0
après il vaut mieux avoir d'autres fonctions déjà prévues comme par exemple pour faire défiler l'écran (comme ça s'il y a un retour chariot dans la phrase et qu'on est tout en bas de l'écran on peut défiler l'écran sans problème)
victorcoasne
Messages postés1101Date d'inscriptionjeudi 24 avril 2003StatutMembreDernière intervention23 juillet 20237 21 oct. 2005 à 23:07
OK mais je voulais savoir comment faire pour afficher un message à l'écran en C avec une fonction du genre printf() ?
CyberP
Messages postés283Date d'inscriptionmercredi 8 janvier 2003StatutMembreDernière intervention 4 juillet 20072 21 oct. 2005 à 06:38
pour charger le kernel en entier il faut changer le nombre de secteurs chargés quand on fait l'interruption 13 du bios (ça doit être 3 puisque chaque secteur fait 512 octets) donc pour 5 ko par exemple, il faut mettre 10 secteurs
sinon le C++ c'est plus compliqué à mettre en place, il faut écrire plein de fonctions spéciales je crois
victorcoasne
Messages postés1101Date d'inscriptionjeudi 24 avril 2003StatutMembreDernière intervention23 juillet 20237 20 oct. 2005 à 19:33
Bonjour,
Je tiens à te féliciter pour ta superbe source !
Comment utiliser par exemple prinft() ?
Comment utiliser du C++ ?
Merci
10/10 !
zippro4012
Messages postés216Date d'inscriptionmardi 15 juin 2004StatutMembreDernière intervention26 février 20061 19 oct. 2005 à 18:30
C écrit dans le chapitre 5 :
<< Notre kernel ne doit pas dépasser pour l'instant 1,5 Ko sinon le secteur de boot ne le chargeras pas en entier...(on verras pourquoi après) >>
Comment peut on faire pour charger le kernel complet ???
Sinon merci pour ces explications CyberP, j'ai enfin réussi a écrire une fonction pour écrire une chaine complète à l'écran, en c.
CyberP
Messages postés283Date d'inscriptionmercredi 8 janvier 2003StatutMembreDernière intervention 4 juillet 20072 18 oct. 2005 à 17:38
C'est un peu plus compliqué : il te faut une idt (interruption descriptors table) cad une liste des interruptions, un peu comme pour la gdt.
Par exemple, pour l'interruption numéro 2, il ira chercher l'entrée n°2 de l'idt et lancera l'interruption vers l'offset spécifié.
Chaque entrée de l'idt fait 8 octets, pour plus d'infos cherche sur internet (je crois que du plus haut au plus bas, ie de gauche à droite, c'est 16 bits haut de l'offset, 16 bits du segment, un petit descripteur de 16 bits à mettre à 0x8E00 pour un truc normal, et 16 bits bas de l'offset)
Pour initialiser tout ça c'est un peu comme pour la gdt : un petit truc de 48 bits avec limite et base et à la fin l'instruction "lidt" à la place de "lgdt"
Vu que le tuto est mort il vaut mieux chercher sur internet pour l'instant
junior300
Messages postés55Date d'inscriptiondimanche 16 novembre 2003StatutMembreDernière intervention19 décembre 2006 17 oct. 2005 à 20:53
dans le tutorial on est apsser en pmode donc il faudrait réécrire le gestionnaire d'interruption je crois. Si quelqu'un sait comment faire se serai une grande avancé. merci d'avance
CyberP
Messages postés283Date d'inscriptionmercredi 8 janvier 2003StatutMembreDernière intervention 4 juillet 20072 17 oct. 2005 à 17:35
Pas forcément en asm, on peut très bien écrire dans la mémoire vidéo en C par exemple (il suffit de créer un pointeur vers la mémoire vidéo et d'accéder aux différents offsets).
Pour appeler interruptions, etc. on peut mettre de l'assembleur dans du C (il sera alors ajouté directement lors de la compilation). On peut même y mettre des noms de variable par exemple.
Personnelement, je trouve l'inclusion de l'asm plus facile et pratique avec visual studio qu'avec gcc. Avec gcc, pour appeler l'interruption 40 par exemple, il faut taper : asm("int $40"); comme si c'était une instruction en C (notez le dollar complètement stupide).
Avec Visual Studio, un petit _asm { int 40 } avec la possibilitée de mettre plusieurs instructions à la suite entre les accolades (avec un retour à la ligne à chaque fois comme dans un assembleur normal). De plus, on peut écrire directement le nom des variables sans avoir à mettre %0 et tout ça comme dans gcc.
Par ailleurs, avec gcc, on ne peut pas appeler d'interruption par l'intermédiaire du préprocesseur (par exemple faire "#define interrupt 40" et après "asm("int $interrupt");" car ça ne marche pas [au linkage il dit ne pas trouver le symbole $interrupt] même si on enlève le dollar). D'ailleurs si quelqu'un sait tout de même comment faire, j'aimerais bien le savoir...
zippro4012
Messages postés216Date d'inscriptionmardi 15 juin 2004StatutMembreDernière intervention26 février 20061 16 oct. 2005 à 09:40
Exactement... (enfin, je crois).
A ce propos, comment faut-il faire pour appeler une interruption et accéder au segment et a la mémoire en C ?
anonyme_man_in_this_world
Messages postés161Date d'inscriptionsamedi 25 juin 2005StatutMembreDernière intervention 1 août 2006 15 oct. 2005 à 21:03
meme si le C est plus simple que l'assembleur mais
tu vois pas que de toute façon ,on peut pas utiliser
les fonctions traditionnel par exemple printf
donc il faut les redefinir en ASM ?
merçi d'avance
CyberP
Messages postés283Date d'inscriptionmercredi 8 janvier 2003StatutMembreDernière intervention 4 juillet 20072 8 oct. 2005 à 20:58
Un OS n'est pas un programme du DOS. La preuve : DOS est un OS !
Mais le C gère de toutes manières lui-même toutes les structures de contrôle et les types par défaut (il ne gère pas les bool et les nombres à virgule je crois).
anonyme_man_in_this_world
Messages postés161Date d'inscriptionsamedi 25 juin 2005StatutMembreDernière intervention 1 août 2006 8 oct. 2005 à 19:59
un superbe tutorial .cepandant j'ai des question a vous poser :
puisqu'un OS est forcement un programme Dos , il faut qu'il ne
se serve pas des librairies standard du C.comment peut on le
programmer avec ce langage ?n'est il pas ça impossible sans ASM ?
si j'ai bien compris lors la reecriture des fonctions systemes on
doit les definir en assembleur ? enfin n'est il pas gcc ou Borland
C++ plus convenable que Dev-Cpp ?
merçi d'avance .
CyberP
Messages postés283Date d'inscriptionmercredi 8 janvier 2003StatutMembreDernière intervention 4 juillet 20072 7 oct. 2005 à 16:25
Si tu parles de :
mov ax, 0x6000
mov ss, ax
mov sp, 0xFFFF
il ne créé pas une nouvelle pile car il n'y en avait tout simplement pas avant, à mon avis si tu fais un "push" ou "pop" avant ces instructions, le système redémarre
Si tu parles de :
mov ax, 16
...
mov ss, ax
mov esp, 0x6FFFF
alors il n'en créé pas non plus une nouvelle mais met juste le segment de la pile à jour avec la GDT (si tu le laisses à 0x6000 il va te dire que l'offset 0x1800 de la GDT n'existe pas) et pour esp, c'est tout simplement le registre 32 bits correspondant à sp (comme eax correspond à ax) et il pointe vers 0x6FFFF, l'équivalent de l'adresse 0x6000:0xFFFF en mode réel (c'est la même adresse que précédemment)
abdoulax
Messages postés875Date d'inscriptionsamedi 17 mai 2003StatutMembreDernière intervention22 juin 20121 6 oct. 2005 à 16:21
En fait j'avais une autre question que j'ai oublié de posé :
Pourquoi le secteur de boot doit créer une nouvelle pile ??
Je tiens aussi à dire que ce tuto m'a permis de comprendre bcp de choses... Un grand merci
abdoulax
Messages postés875Date d'inscriptionsamedi 17 mai 2003StatutMembreDernière intervention22 juin 20121 6 oct. 2005 à 15:59
Oki merci...
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 6 oct. 2005 à 15:57
L'inverse, on y était presque:
mov al, 03h
mov ah, 00h
abdoulax
Messages postés875Date d'inscriptionsamedi 17 mai 2003StatutMembreDernière intervention22 juin 20121 6 oct. 2005 à 15:48
Donc si j'ai bien compris :
mov ax, 0003h ;ah contient le numero de fonction, al le paramètre
int 10h
revien à :
mov al, 00h
mov ah, 03h
int 10h
Ou un truc dans ce genre...
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 6 oct. 2005 à 15:41
AX est le 16 bits bas de EAX.
AH est le 8 bits haut de AX et AL est son 8 bits bas, donc quand tu affectes AX ça affecte implicitement AH et AL.
abdoulax
Messages postés875Date d'inscriptionsamedi 17 mai 2003StatutMembreDernière intervention22 juin 20121 6 oct. 2005 à 15:28
Bonjours, j'essaie de comprendre l'interruption 10h cependant j'ai qlq soucis :
mov ax, 0003h ;ah contient le numero de fonction, al le paramètre
int 10h
tu dit ah contient le numero de fonction et al le paramètre mais on ne voit ni ah et al dans ces deux lignes...
Qlq1 peut m'aider un peu...
Mci
boun85
Messages postés33Date d'inscriptionmercredi 29 janvier 2003StatutMembreDernière intervention29 novembre 2005 27 sept. 2005 à 13:57
Vachement ce tuto moi j'attend plus que la suite.
Tres bon boulot vinc1008881 !!
cs_Pingouin57
Messages postés67Date d'inscriptionsamedi 8 mai 2004StatutMembreDernière intervention16 décembre 2007 26 sept. 2005 à 22:34
Hmmm, le tuto serait-il mort ? Nous attendons la suite avec impatience :)
CyberP
Messages postés283Date d'inscriptionmercredi 8 janvier 2003StatutMembreDernière intervention 4 juillet 20072 19 sept. 2005 à 22:03
bah perso j'ai continué tout seul et j'ai déjà un petit shell là (en fait il prend que la commande "reboot" :p mais au moins ça marche)
mais j'attends quand même ton tuto parce que tu expliques quand même mieux que tout ce que j'ai pu trouver pour l'instant (sans compter les trucs qui se contredisent parfois)
DelphiCool
Messages postés455Date d'inscriptionmardi 24 juillet 2001StatutMembreDernière intervention10 mars 2009 19 sept. 2005 à 12:30
Laissez le respirer le pauvre,
Il se décarcasse assez comme ça.
CyberP
Messages postés283Date d'inscriptionmercredi 8 janvier 2003StatutMembreDernière intervention 4 juillet 20072 19 sept. 2005 à 09:14
euh bah alors ? :o
je pensais que tu avais déjà fini et qu'il restait plus qu'à le mettre en ligne
vinc1008881
Messages postés257Date d'inscriptiondimanche 22 août 2004StatutMembreDernière intervention29 septembre 20103 16 sept. 2005 à 20:06
Voilà, bah dimanche je vais poster un chapitre qui m'as pris pas mal de temps...Comme je fais une prepa mat sup/mat spé, j'ai peu de temps de libre (et je n'ai pas de PC ds ma chambre en +)
cs_thedestiny
Messages postés56Date d'inscriptionsamedi 3 juillet 2004StatutMembreDernière intervention30 juin 2008 16 sept. 2005 à 19:23
Il est vrai que la on attend toujours la suite :/
virlix
Messages postés17Date d'inscriptionjeudi 24 juillet 2003StatutMembreDernière intervention 9 septembre 2005 9 sept. 2005 à 09:10
bon la suite...
zippro4012
Messages postés216Date d'inscriptionmardi 15 juin 2004StatutMembreDernière intervention26 février 20061 3 sept. 2005 à 18:31
Très bon travail, très interressant. J'attend la suite avec impatience.^^
vinc1008881
Messages postés257Date d'inscriptiondimanche 22 août 2004StatutMembreDernière intervention29 septembre 20103 2 sept. 2005 à 17:47
bah la en ce momentj'ai pas tro le tps >>je doit enmanagé ms sa viendra
dd1840x
Messages postés33Date d'inscriptionjeudi 19 mai 2005StatutMembreDernière intervention 2 septembre 2005 2 sept. 2005 à 12:27
Pour mon problème c'est réglé !!!
J'ai copié le kernel au secteur 2, et c'est tt bon...
Sinon, qd est-ce que tu vas faire la mise a jour ?...
clem0338
Messages postés65Date d'inscriptionmercredi 19 juin 2002StatutMembreDernière intervention 9 mars 2008 2 sept. 2005 à 12:27
Franchement, je te dis chapeau, meme voir chapiteau
rappel des débuts ....
@+ et continue comme ca
CyberP
Messages postés283Date d'inscriptionmercredi 8 janvier 2003StatutMembreDernière intervention 4 juillet 20072 31 août 2005 à 17:54
mais la limite (tu as dit base je pense que tu voulais dire limite) fait 20 bits
l'adresse complète c'est donc :
0000 0100 0000 0000 0000 (20 bits)
les 16 premiers, c'est :
soit 0000 0100 0000 0000 (en commençant par la gauche)
soit 0100 0000 0000 0000 (en commençant par la droite)
et quoiqu'il en soit, les 4 derniers sont 0000
ce qui contredit ce que tu as écrit dans le tuto
vinc1008881
Messages postés257Date d'inscriptiondimanche 22 août 2004StatutMembreDernière intervention29 septembre 20103 31 août 2005 à 17:32
je voulais dire les 16 premier bits = 0000 0000 0000 0000 (qui sont en fait les 16 dernier de la base)
puis des autres bits
puis les 4 premier bits de la base
enfin le schéma l'indique clairement non ?
CyberP
Messages postés283Date d'inscriptionmercredi 8 janvier 2003StatutMembreDernière intervention 4 juillet 20072 31 août 2005 à 17:10
pourquoi 12 ?
dans ton tableau on voit que ce sont les 16 premiers bits en théorie ; si on fait le total des bits ça fait bien 64 bits (8 octets)
donc ça peut pas être 12 à la place de 16 sinon ça ferait 60 bits seulement
vinc1008881
Messages postés257Date d'inscriptiondimanche 22 août 2004StatutMembreDernière intervention29 septembre 20103 31 août 2005 à 16:29
cela represente donc 0100 0000 0000 0000
seulement dans la GDT tout est mélangé,
on a donc les douze dernier bits de la limite = 0000 0000 0000
suivit par des autre truk
suivit par les 4 premier bits = 0100
reregarde lz shéma pour verifier tu verras les entrée de la GDT c'est pire qu'un puzzle...
vinc1008881
Messages postés257Date d'inscriptiondimanche 22 août 2004StatutMembreDernière intervention29 septembre 20103 31 août 2005 à 16:24
oops, j'ai du faire une boulette d'inatention, le 64 Mo, c'est pas un 64 Mo mais un 128 Mo, je v corriger sa...
CyberP
Messages postés283Date d'inscriptionmercredi 8 janvier 2003StatutMembreDernière intervention 4 juillet 20072 31 août 2005 à 16:16
oui je suis passé en mode graphique
sinon je comprends pas dans le chapitre 4 tu dis que la limite du segment de 128 Mo (en fait 64 Mo, tu te contredis un peu plus loin) c'est :
0100 0000 0000 0000
jusque là je suis d'accord
mais après pour coder ça dans la gdt, les 16 premiers bit tu mets :
0x0, 0x0 et les 4 derniers tu mets 0001 (je parle des trucs que tu mets en violet clair)
pour moi les 16 premiers bits de "0100 0000 0000 0000" c'est "0100 0000 0000 0000" et les 4 derniers ce serait 0x0
vinc1008881
Messages postés257Date d'inscriptiondimanche 22 août 2004StatutMembreDernière intervention29 septembre 20103 31 août 2005 à 15:11
A0000 > mémoire graph en mode graph (en clait tu affiche des pixel)
B8000 > mémoire graf en mode TEXTE (affichage de caractères directement à l'écran)
c'est vraiment bizarre que l'int 13h n'est pas compatible avec ton lecteur disquette ? decompile un coup le secteur de boot de MS-DOS pour voir comment il s'y prend....
virlix
Messages postés17Date d'inscriptionjeudi 24 juillet 2003StatutMembreDernière intervention 9 septembre 2005 31 août 2005 à 14:42
Alors moi je comprends pas le 0XA0000 de CyberP
Je croyais qu'il fallait mettre 0xB8000?
virlix
Messages postés17Date d'inscriptionjeudi 24 juillet 2003StatutMembreDernière intervention 9 septembre 2005 31 août 2005 à 14:41
Alors moi je comprends pas le 0XA0000 de CyberP
Je croyais qu'il fallait mettre 0xB8000?
Moi j'ai compilé le code suivant dans kernel.c et ca fonctionne nickel:
void setPixelColor(unsigned int x, unsigned char color) {
unsigned char* video = (unsigned char*)0xB8000 + x ;
video[0] = color;
}
void kernel_start (void)
{
int i = 0;
unsigned char color = 0x00;
dd1840x
Messages postés33Date d'inscriptionjeudi 19 mai 2005StatutMembreDernière intervention 2 septembre 2005 31 août 2005 à 13:50
Je vais essayer en n'utilisant pas le int mais les ports...
C'est pas sur que ca marche !
dd1840x
Messages postés33Date d'inscriptionjeudi 19 mai 2005StatutMembreDernière intervention 2 septembre 2005 31 août 2005 à 13:47
deja fait.Je n'ai aucune idée de ce que ça peut être (Ca fait l'interrupt 13h, fonction 02h avec ts les arguments et ça reset).
vinc1008881
Messages postés257Date d'inscriptiondimanche 22 août 2004StatutMembreDernière intervention29 septembre 20103 31 août 2005 à 13:19
essaye avant la lecture des secteur de mettre ceci :
xor ax, ax ; ax = 0
int 13h ; reset du lecteur disquette
dd1840x
Messages postés33Date d'inscriptionjeudi 19 mai 2005StatutMembreDernière intervention 2 septembre 2005 31 août 2005 à 13:11
MOI PAR CONTRE CA BLOQUE !!!
J'ai compilé exactement le meme code (sur une machine d'epoque), ça reboote tt seul au niveau de la lecture des secteurs (pour savoir qd ça bloquait,j'ai fait une petite fonction "affichage").Je travaille sur un PC 486SX (Windows 3.11 et MS-DOS 6.2,NO COMMENT !).
Merci d'avance pour votre aide !
CyberP
Messages postés283Date d'inscriptionmercredi 8 janvier 2003StatutMembreDernière intervention 4 juillet 20072 30 août 2005 à 15:30
CA MARCHE !!!
en fait je compile et linke avec visual studio
sauf que je rajoute une commande "post-linkage" :
CyberP
Messages postés283Date d'inscriptionmercredi 8 janvier 2003StatutMembreDernière intervention 4 juillet 20072 30 août 2005 à 14:19
ah d'accord merci
je pensais que les .obj et les .o était exactement les mêmes
enfin faut voir
je vais essayer de compiler tout ça avec gcc (je crois que je vais laisser tomber visual studio et faire des .bat du coup)
vinc1008881
Messages postés257Date d'inscriptiondimanche 22 août 2004StatutMembreDernière intervention29 septembre 20103 30 août 2005 à 14:13
moi il compile tres bien le for !?
"((unsigned char*)(0xA0000 + x + 320 * y)) = color;">>nan ce sera une instruction asm de type mov memoire, constante.Pas de variables temporaire, d'ailleur sa existe meme pas en C.
ok pour la résolution de l'ecran je savais pas deviner...
>>kernel start n'est pas extern
voilà, apres un petit desassemblage, j'ai trouver le problème :(merci asm)
ld link mal mes fichier, il doi y avoir un problème...dassemble le binaire final pour t'en rendre compte (c'est au niveau des call, les adresse sont fausses)
il faut que tu link un fichier obj + un fichier o pas + car il doit certainement y avoir du problème...
CyberP
Messages postés283Date d'inscriptionmercredi 8 janvier 2003StatutMembreDernière intervention 4 juillet 20072 30 août 2005 à 13:32
il commence à m'énerver ce programme x_x
maintenant ça ne fonctionne même plus avec la fonction dans le même fichier :
void setPixelColor(unsigned int x, unsigned int y, unsigned char color) {
*((unsigned char*)0xA0000 + x + 320 * y) = color;
}
extern "C" void kernel_start() {
for (unsigned short i = 0; i < 320; ++i)
for (unsigned short j = 0; j < 200; ++j)
setPixelColor(i, j, 255 * i / 320);
//*((unsigned char*)0xA0000 + i + 320 * j) = 255 * i / 320;
while(1);
}
si j'enlève le commentaire dans la fonction kernel_start et que je commente à la place la ligne "setPixelColor(i, j, 255 * i / 320);" ça marche !
si je laisse comme c'est écrit là écran noir (mais pas de reset)
si je mets inline devant la fonction, reset
en plus le débuggeur de bochs me met des instructions en boucle, toutes au segment 0xf000, à se demander si ce sont bien les trucs qui se passent réellement
CyberP
Messages postés283Date d'inscriptionmercredi 8 janvier 2003StatutMembreDernière intervention 4 juillet 20072 30 août 2005 à 13:10
j'avais un bug avec le for mais je sais plus quoi (en tout cas j'avais mis un for et après je l'ai remplacé par un while)
sinon mon (255 * i / 320) fait un joli dégradé de couleurs
sinon le "((unsigned char*)(0xA0000 + x + 320 * y)) = color;"
créé de toutes manières des variables de manière temporaire comme je le fais
par contre mettre short et unsigned char pour moi c'est un bel exemple d'un bug qui se produira quand j'augmenterai la résolution de l'écran (ça fera peut être un petit warning à la compilation et c'est tout) parce que j'oublierai surement
de modifier le type des variables (mais bon c'est vrai qu'un unsigned short suffit)
sinon même avec extern ça ne fonctionne pas (j'avais déjà testé)
au final mon problème n'est pas reglé
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 30 août 2005 à 13:01
mais moins bon que si tu places la vérif du j en bas, le mettant à 0 en haut c'est inutile de le controler illico.
do {
} while(...);
vinc1008881
Messages postés257Date d'inscriptiondimanche 22 août 2004StatutMembreDernière intervention29 septembre 20103 30 août 2005 à 12:38
voilà quelques "betises pas bien méchante que je vois au premier coup d'oeil"
--> un while avec un variable++ à l'interrieur, pour moi c'est un for
--> dans ta fonction setpixelcolor, pourquoi s'emmerder à créer une variable "video", ((unsigned char*)(0xA0000 + x + 320 * y)) = color;
--> thériquement ta fonction setpixelcolor doit etre déclaré externe car elle appartient bien à un autre fichier *.obj (extern void Set...)
--> int i 0, j 0;
while (i < 320) {
while (j < 200) {
setPixelColor(i, j, 255 * i / 320);
++j;
}
++i;
j = 0;
}
>>crad
short i = 0;/*un short est suffisant*/
static unsigned char j = 0;/*un char est suffisant*/
for (;j<=200;j++)
{
for (i=0;i<=320;i++)setPixelColor (i,j,0x50);/*==>0x50 = couleur*/
}
>>plus propre non ?
CyberP
Messages postés283Date d'inscriptionmercredi 8 janvier 2003StatutMembreDernière intervention 4 juillet 20072 30 août 2005 à 10:09
euh petite connerie :
le
void video::setPixelColor(unsigned int x, unsigned int y, unsigned char color) {
c'est
void setPixelColor(unsigned int x, unsigned int y, unsigned char color) {
j'avais fait un test avec les namespaces et j'ai oublié d'enlever complètement
CyberP
Messages postés283Date d'inscriptionmercredi 8 janvier 2003StatutMembreDernière intervention 4 juillet 20072 30 août 2005 à 10:05
ben si j'enlève l'appel à la fonction tout marche (sauf qu'il y a rien à l'écran puisque c'est la fonction qui s'en occupe)
kernel.cpp (je programme en C++, mais j'ai essayé en C, c'est pareil) :
#include "include/video.h"
extern "C" void kernel_start() {
int i 0, j 0;
while (i < 320) {
while (j < 200) {
setPixelColor(i, j, 255 * i / 320);
++j;
}
++i;
j = 0;
}
while(1);
}
video.h :
void setPixelColor(unsigned int x, unsigned int y, unsigned char color);
video.cpp :
#include "include/video.h"
void video::setPixelColor(unsigned int x, unsigned int y, unsigned char color) {
unsigned char* video = (unsigned char*)0xA0000 + x + 320 * y;
video[0] = color;
}
j'ai essayé inline, extern "C" devant, etc. et ça fonctionne que si le corps de la fonction est dans le même fichier .obj que là d'où on l'appelle
si je mets "setPixelColor(i, j, 255 * i / 320);" en commentaire, ça marche (écran noir mais au moins ça reset pas)
je compile avec visual studio (d'ailleurs on peut tout faire à partir de visual studio, même formater la disquette et assembler les .asm) et voilà le .bat de linkage :
cd ..\ld
ld.exe -Ttext 0x20000 link.ld -o A:\kernel.bin --oformat binary ..\temp\start.o ..\temp\kernel.obj ..\temp\video.obj
link.ld c'est le même que sur ton site
vinc1008881
Messages postés257Date d'inscriptiondimanche 22 août 2004StatutMembreDernière intervention29 septembre 20103 30 août 2005 à 09:34
fais des break point et regarde ou sa foire...
sinon je ve bien jeter un coup d'oeil sur le code qui semblerai ne pas marcher
sa peut venir de minporte ou...montre moi aussi comment tu compile tu link et tu charge
CyberP
Messages postés283Date d'inscriptionmercredi 8 janvier 2003StatutMembreDernière intervention 4 juillet 20072 30 août 2005 à 08:18
non c'est pas 16 bits, on peut pas faire de 16 bits avec visual studio je pense
si je mets la fonction que j'appelle dans le même fichier .c (donc le même .obj au final) ça fonctionne
si je la mets dans un autre .obj (et que je rajoute le nom de cet .obj dans la ligne de commande pour linker), le linkage se passe bien sauf que ça reset
comment tu veux que je te le passe ?
vinc1008881
Messages postés257Date d'inscriptiondimanche 22 août 2004StatutMembreDernière intervention29 septembre 20103 29 août 2005 à 21:22
tu veut charger tes fichiers dynamiquement, c'est sa ?
.obj >>C'est pas 16 bits sa ?, si tu execute ça apres que tu passe en Pmode, pas étonnant que sa foire...une triple faute et hop reset...
sinon passe moi la partie qui foire, je vais essayer d'analyser sa...
CyberP
Messages postés283Date d'inscriptionmercredi 8 janvier 2003StatutMembreDernière intervention 4 juillet 20072 29 août 2005 à 15:34
oui ça résoud le problème (enfin je pense, j'ai pas testé) mais le but de créer plusieurs fichiers .c est justement de pouvoir les compiler séparément
sinon si j'en ai que 3 (le kernel, la petite partie en asm et un autre) ça fonctionne sauf que si j'appelle une fonction de l'autre fichier .obj à partir du kernel, ça reset (je ne sais pas exactement pourquoi, bochs ne le précise même pas)
vinc1008881
Messages postés257Date d'inscriptiondimanche 22 août 2004StatutMembreDernière intervention29 septembre 20103 29 août 2005 à 15:25
si je me souvient bien, la ligne de commande DOS ne doit pas dépasser 255 caractères...ou un truc dans le genre...
il faut compiler tout tes fichier .c en meme temps
pour cela tu fé un fichier main.c qui contient
#include "file.c"
#include".....c/h"
tu compile main.c
tu aura un seul fichier objet dans ce cas là. Donc se sera plus facil à linker...
cs_satellite34
Messages postés688Date d'inscriptionmercredi 6 avril 2005StatutMembreDernière intervention 2 juin 20061 29 août 2005 à 15:14
c' est vraiment super ! merci beacoup, je vais suivre ce tuto avec beaucoup d' interet 10/10
CyberP
Messages postés283Date d'inscriptionmercredi 8 janvier 2003StatutMembreDernière intervention 4 juillet 20072 29 août 2005 à 15:09
euh tu saurais pas s'il est possible de linker le kernel avec visual studio, parce que je sais pas pourquoi mais si je mets une ligne de commande trop longue il me dit "impossible d'exécuter la commande" (crois moi j'ai testé des dizaines de fois)
(ou alors tu m'expliques pourquoi ça dit impossible d'exécuter la commande)
le problème est que j'ai voulu créer des fonctions (affichage à l'écran, modification de la palette et tout ça, j'ai pris un peu d'avance en regardant sur d'autres sites) dans d'autres fichiers .c et comme ça m'en fait plusieurs, l'instruction pour linker devient assez longue
vinc1008881
Messages postés257Date d'inscriptiondimanche 22 août 2004StatutMembreDernière intervention29 septembre 20103 29 août 2005 à 14:01
J'espere que tu mettras comment reactiver les interruptions genre 13h (lecture/écriture)>> impossible : je suis d'accord peut peut réactiver tt les interruptions, mais il faur créer nous meme nos propres drivers ...
dd1840x
Messages postés33Date d'inscriptionjeudi 19 mai 2005StatutMembreDernière intervention 2 septembre 2005 29 août 2005 à 13:48
J'espere que tu mettras comment reactiver les interruptions genre 13h (lecture/écriture).
Sinon pour le moment joli travail !!!
vinc1008881
Messages postés257Date d'inscriptiondimanche 22 août 2004StatutMembreDernière intervention29 septembre 20103 29 août 2005 à 12:21
comme il n'y a plus de place dans le zip de cppfrance, je poste le chapitre 5 sur mon site
virlix
Messages postés17Date d'inscriptionjeudi 24 juillet 2003StatutMembreDernière intervention 9 septembre 2005 29 août 2005 à 08:28
A quand la suite?
ghostahjay
Messages postés12Date d'inscriptionlundi 9 février 2004StatutMembreDernière intervention28 août 2005 28 août 2005 à 13:42
Moi aussi je projetai de créer un 'mini os' et je suis tombé sur ta source, tout à fait géniale!
Bonne continuation pour la suite
vinc1008881
Messages postés257Date d'inscriptiondimanche 22 août 2004StatutMembreDernière intervention29 septembre 20103 27 août 2005 à 11:07
quelqu'un m'as demander : comment je peut connaitre la capacité de la mèmoire quand je passe en mode P. On mode P, on a fais des segment d'une taille de 128 Mo, mais j'orais bien pu mettre 4 Go à la place, de toute facon pour le moment je ne connais pas la capacité mémoire. Je qui m'interrese dans le mode protégé, c'est que les instructions sont 32 bits, donc je vais pouvoir executer un kernel en C. Par contre comme je ne connais pas la taille de la RAM, pour l'instant tout mes programme sont situé dans le premier Mo de mémoire.
J'espere que cela repond a ta question...
voilà, @+, vinc1008881
vinc1008881
Messages postés257Date d'inscriptiondimanche 22 août 2004StatutMembreDernière intervention29 septembre 20103 26 août 2005 à 17:18
on sa faire sa en mode graphique tu verras...c ce sera a la fin les jeux
CyberP
Messages postés283Date d'inscriptionmercredi 8 janvier 2003StatutMembreDernière intervention 4 juillet 20072 26 août 2005 à 17:00
tetris pardon
CyberP
Messages postés283Date d'inscriptionmercredi 8 janvier 2003StatutMembreDernière intervention 4 juillet 20072 26 août 2005 à 17:00
une question : le pong va être programmé en modifiant les couleurs d'arrière plan des espèces de gros pixels (où on écrit les caractères) ?
vinc1008881
Messages postés257Date d'inscriptiondimanche 22 août 2004StatutMembreDernière intervention29 septembre 20103 26 août 2005 à 15:45
merci bcp ça fais plaisir !
Voilà, j'ai fait un ptit site où il y a toutes les pages htm de mon tutorial (j'ai virer le mht). Dans la rubrique download, il y a les outils que j'utilise. je suis obliger de créer ce site car mon zip finir par devenir trop gros à la longue
en cas de pépin (problème de compilation, qqchose pas cler) => un petit message
virlix
Messages postés17Date d'inscriptionjeudi 24 juillet 2003StatutMembreDernière intervention 9 septembre 2005 26 août 2005 à 14:44
Heu... je reste bluffé. Faux deja avoir des connaissances poussées au niveau ASM et H/W pour faire cela alors moi je dit chapeau vinc1008881. Je vais suivre tout cela de près car c'est non seulement instructif mais aussi utile. Et en plus tu n'as que 18ans... je suis bluffé
vinc1008881
Messages postés257Date d'inscriptiondimanche 22 août 2004StatutMembreDernière intervention29 septembre 20103 26 août 2005 à 13:44
oui en effet, sans boucle infinie, le processeur execute nimporte quoi, des octets totalement aléeatoires ce qui finit par le faire planter...
cs_dan34
Messages postés28Date d'inscriptiondimanche 27 mars 2005StatutMembreDernière intervention13 mars 2012 26 août 2005 à 13:09
Mon pb est résolu
Le copié/merdé a encore frappé j'avais oublié la boucle infini à la fin du kernel.
Donc normal que ça reboote en permanence.
Merci à tous ceux qui se sont penchés sur mon pb.
vinc1008881
Messages postés257Date d'inscriptiondimanche 22 août 2004StatutMembreDernière intervention29 septembre 20103 26 août 2005 à 12:49
le fichier est trop gros mais voulus, j'ai donc du virer qques parties.., le tutoriel sera present en integralité procainement sur mon site...
CsM Skate
Messages postés60Date d'inscriptiondimanche 8 mai 2005StatutMembreDernière intervention20 mai 2007 26 août 2005 à 09:38
Tout simplement génial, :)
10/10 tout ça non ?
Nico
CyberP
Messages postés283Date d'inscriptionmercredi 8 janvier 2003StatutMembreDernière intervention 4 juillet 20072 26 août 2005 à 08:40
le "mov byte[0xB8000],'K'" ça écrit 'K' dans la mémoire vidéo, je me trompe ?
ce qui est aussi possible c'est que tu aies changé le nom du kernel pour je ne sais quelle raison et que tu as supprimé l'ancien (buggé) alors il faut formater la disquette sinon ça exécutera encore l'ancien même s'il est en théorie supprimé
vinc1008881
Messages postés257Date d'inscriptiondimanche 22 août 2004StatutMembreDernière intervention29 septembre 20103 26 août 2005 à 00:59
si tu as rajouté un sti, c'est normal que ça reboot, sinon je comprend pas : je viens de telecharger la source et je lé tester sous BOCHS et sous machine réelle cela marche...assure toi d'avoir télécharger la dervière ersion du chapitre 4 (yas 2 jours il y avais des bug...
cs_dan34
Messages postés28Date d'inscriptiondimanche 27 mars 2005StatutMembreDernière intervention13 mars 2012 26 août 2005 à 00:46
m'inqiète pas
mais je voudrais bien que ça marche quand c'est simple parce que quand ce sera plus compliqué oulala
vinc1008881
Messages postés257Date d'inscriptiondimanche 22 août 2004StatutMembreDernière intervention29 septembre 20103 26 août 2005 à 00:45
oui, c'est normal : il faut laisser le cli, en effet les interruption sont dereglée à cause du passage en Pmode, il faut donc les iniber jusqu'à nouvelle ordre : pas de sti.
vinc1008881
Messages postés257Date d'inscriptiondimanche 22 août 2004StatutMembreDernière intervention29 septembre 20103 26 août 2005 à 00:43
ne tinkiete pas dan34, dem1 je poste un chapitre qui va t'epliquer le sens de cette ligne mov byte[0xB8000],'K'...
cs_dan34
Messages postés28Date d'inscriptiondimanche 27 mars 2005StatutMembreDernière intervention13 mars 2012 26 août 2005 à 00:42
heu maintenant ça compille bien mais quand je le teste (j'eteind et ralume le PC) ça reset en boucle :-(
J'ai pu noté que dans le boot il y avait 2 CLI et un seul STI donc je suppose que la gestion des interruptions n'est pas réactivée en sortant du boot.
Est-ce normal ??
vinc1008881
Messages postés257Date d'inscriptiondimanche 22 août 2004StatutMembreDernière intervention29 septembre 20103 26 août 2005 à 00:30
voilà, encore des petite erreur de frappe corigé (le ' ' et le 01)
-------> mis a jour
ce n'est rien pour le 0x57
demain je poste l'annexe qui montre la compilation d'un kernel ecrit en C...+ un chapitre sur le driver console
junior300
Messages postés55Date d'inscriptiondimanche 16 novembre 2003StatutMembreDernière intervention19 décembre 2006 26 août 2005 à 00:25
pour que nasm le compil ajoute simplement sur la ligne
mov byte [0xB8001], 01
un x entre le 0 et le 1 et l'assemblage se fait tres bien
cs_dan34
Messages postés28Date d'inscriptiondimanche 27 mars 2005StatutMembreDernière intervention13 mars 2012 26 août 2005 à 00:18
ok merci
juki_webmaster
Messages postés947Date d'inscriptionmercredi 19 novembre 2003StatutMembreDernière intervention 5 avril 20083 25 août 2005 à 23:44
DAN34, c'est au sujet des guillements qui passe mal.
cs_dan34
Messages postés28Date d'inscriptiondimanche 27 mars 2005StatutMembreDernière intervention13 mars 2012 25 août 2005 à 23:30
Salut,
Ce tuto est super mais j'ai un petit soucis
NASM n'arrive pas à me compiler la ligne du kernel suivante :
mov byte[0xB8000],?K? ,je ne comprend pas pourquoi et contrairement au commentaire indiqué sur cette ligne j'aimerais bien comprendre ;)
Donc si tu a une idée je suis preneur
Merci et continu c'est super, je l'attendais depuis longtemps ce tuto.
Dan34
junior300
Messages postés55Date d'inscriptiondimanche 16 novembre 2003StatutMembreDernière intervention19 décembre 2006 25 août 2005 à 22:14
dsl pour le poste du dessu mais je voulais simplement dire qu'il fallait ajouter 0x devant 01 de la ligne en question et apres sa marche nikel
le valeur 57 change simplement la couleur de la lettre affiché
encore dsl
vinc1008881
Messages postés257Date d'inscriptiondimanche 22 août 2004StatutMembreDernière intervention29 septembre 20103 25 août 2005 à 22:08
???, pourquoi 0x57 ??
le bug du chapitre 4 est corriger javais fait 2 erreur :
oublie du cli
+
2 fois mov cr0, eax o lieu de 1 seule fois...
le 0x57 corespont à l'attribut couleur cela n'as rien à voir dsl
avec 01 --> on voit un K en bleu sur font noir
avec 0x57-> on voit un K gris sur font rose
junior300
Messages postés55Date d'inscriptiondimanche 16 novembre 2003StatutMembreDernière intervention19 décembre 2006 25 août 2005 à 21:41
pour corriger le bug soit même et que le kernel du chapitre 4 fonctionne il suffit de remplacer la ligne :
mov byte [0xB8001], 01
par :
mov byte [0xB8001],0x57
c vraiment génial ce tutorial
merci et continu on attend la suite
blasterantims
Messages postés2Date d'inscriptionlundi 13 octobre 2003StatutMembreDernière intervention25 août 2005 25 août 2005 à 13:42
Pas mal pour les 3 premiers chapitres...
J'espere que tu sera aussi clair pour les autres, car la gestion de la memoire et des processus dans un kernel est qqch d'assez dur comparé à ce que tu nous as deja servis.
Dans tous les cas BRAVO :-) et bonne continuation.
cs_Kirua
Messages postés3006Date d'inscriptiondimanche 14 avril 2002StatutMembreDernière intervention31 décembre 2008 25 août 2005 à 06:17
Tres tres tres interessant, merci bcp pour cette perle :)
vinc1008881
Messages postés257Date d'inscriptiondimanche 22 août 2004StatutMembreDernière intervention29 septembre 20103 24 août 2005 à 12:20
La chapitre 4 contient des bug attention je le remettrai a jour !!
vinc1008881
Messages postés257Date d'inscriptiondimanche 22 août 2004StatutMembreDernière intervention29 septembre 20103 23 août 2005 à 21:59
il est déja bien avancé ton OS ! Mzis ce qui est regrettable c'est le manque de documentation, c'est pourquoi je fais ce tuto !
Dans quelques heure le chap 4 sera dispo...
darkpoulpo
Messages postés76Date d'inscriptionlundi 21 mars 2005StatutMembreDernière intervention29 novembre 2009 23 août 2005 à 21:35
si ca peut interresser du monde, voila un site fait par mon hebergeur
http://boost.freezee.org/ (os sur x86)
Jarod1980
Messages postés273Date d'inscriptionsamedi 5 juillet 2003StatutMembreDernière intervention31 mars 20152 22 août 2005 à 17:05
Super génial. J'attends avec impatience moi aussi la suite. Encore Bravo. Juste une chose (Annexe B.mht n'est pas présent dans le zip)
Bonne continuation.
inge06
Messages postés1Date d'inscriptionmercredi 23 juillet 2003StatutMembreDernière intervention22 août 2005 22 août 2005 à 15:19
c'est super interressant!! vivement la suite!
CyberP
Messages postés283Date d'inscriptionmercredi 8 janvier 2003StatutMembreDernière intervention 4 juillet 20072 22 août 2005 à 13:23
c'est bizarre il y a écrit que le zip contient "Annexe B.mht" mais il n'est pas dans celui-ci quand on le dl
CyberP
Messages postés283Date d'inscriptionmercredi 8 janvier 2003StatutMembreDernière intervention 4 juillet 20072 22 août 2005 à 10:35
ça a l'air super, vivement la suite :)
on dit pas "cette partie est très compliquée..." mais plutôt "cette partie est plus compliquée que les précédentes" (sinon ça donne la grosse tête à ceux qui arrivent à comprendre facilement)
cosmobob
Messages postés700Date d'inscriptionmardi 30 décembre 2003StatutMembreDernière intervention27 janvier 20094 22 août 2005 à 10:32
c'est très bien, jte mets 10/10 ce qui je l'espere t'encourage a continuer a mettre a jour ton tuto !!
bravo!!!!!
cs_gomoz
Messages postés134Date d'inscriptionmardi 22 avril 2003StatutMembreDernière intervention23 décembre 2009 22 août 2005 à 02:55
à la vu des noubreux commentaire, je vais lire. J'apprendrai forcement quelque chose ;)
magic_Nono
Messages postés1878Date d'inscriptionjeudi 16 octobre 2003StatutMembreDernière intervention16 mars 2011 22 août 2005 à 01:26
ça me semble très bien ça,
bonne prog @ tous
magicalement
Nono
vinc1008881
Messages postés257Date d'inscriptiondimanche 22 août 2004StatutMembreDernière intervention29 septembre 20103 21 août 2005 à 22:05
arf, je v coriger sa en mm temps que les modif que ma demander RACPP
juki_webmaster
Messages postés947Date d'inscriptionmercredi 19 novembre 2003StatutMembreDernière intervention 5 avril 20083 21 août 2005 à 21:49
Ya un petit probleme de syntaxe qui vient peut etre du format mht :
;Un secteur de boot plus complet
[BITS 16]
jmp start
db ?GAMEOS01?
A propos des " "
vinc1008881
Messages postés257Date d'inscriptiondimanche 22 août 2004StatutMembreDernière intervention29 septembre 20103 21 août 2005 à 21:25
ok, je prendrai tes remarques en compte.
Pour ceux qui ont des difficulté en assembleur, ds le chapitre 2, j'ai mit un lien vers un tutoriel...
Je vais pensez à écrire une annexe à propos des interruption en gereral (BIOS, DOS>>n'existe plus) en mode réel.
Merci de tes remarques, @+
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 21 août 2005 à 21:17
vinc1008881 >> Je pense qu'il vaut mieux éviter les mots comme "malheureusement" et "cette partie est très compliquée". En fait dans un tutoriel tout doit être gai en encourageant. Moi je dirais plutôt "heureusement qu'il y'a l'assembleur pour arriver à notre fin." et "cette partie n'est pas très compliquée". Pour ceux qui n'ont pas d'expérience en assembleur, il est utile de leur fournir un lien qui donne des notions de bases. Idem pour les interruptions BIOS. Je trouve que tu expliques bien et avec de bons exemples.
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 21 août 2005 à 20:50
vinc1008881 >> Excellent travail! Il faut juste corriger quelques rares fautes d'orthographe qui gênent la lecture un petit peu. Tout cela me rappelle l'époque où on faisait des trucs comme ça. Que de la joie!
Patrice99 >> Pour tester l'OS il faut démarrer l'ordinateur à partir d'une disquette contenant cet OS. Ca viendra surement dans les prochains chapitres. Windows et sa machine virtuelle DOS ne devront pas être chargés.
vinc1008881
Messages postés257Date d'inscriptiondimanche 22 août 2004StatutMembreDernière intervention29 septembre 20103 21 août 2005 à 20:47
voila le chapitre 3, certain diront que ma méthode c'est du bricolage, moi je trouve + simple comme sa. Vous verrez le code est provisoire...si jamais vous comprenez pas un truk (si c'est mal expliquer..., fait le moi savoir merci)
guignol71
Messages postés29Date d'inscriptionjeudi 19 mai 2005StatutMembreDernière intervention10 janvier 2011 21 août 2005 à 15:48
J'attends aussi la suite avec impatience!
Vraiment nickel pour les débutants (comme moi!)
cs_wina
Messages postés2Date d'inscriptionsamedi 20 août 2005StatutMembreDernière intervention21 août 2005 21 août 2005 à 11:57
Pas mal ton tuto $
Pas très avancé , mais très bien pour les débutants.
Ok ! J'attends la suite. :)
Ciao !
cs_algori
Messages postés868Date d'inscriptiondimanche 26 décembre 2004StatutMembreDernière intervention26 février 20081 21 août 2005 à 11:04
Tout simplement génial !
Vivement la suite !
@++
EMSIEN
Messages postés194Date d'inscriptionlundi 26 juillet 2004StatutMembreDernière intervention11 juin 2009 21 août 2005 à 01:47
Un grand merci pour ce tuto,moi qui voulait comprendre le KERNEL de linux mais en vain,je vois en ton tuto une opportunité pour démarrer.
je trouve deja ces débuts bien expliqué et bref aussi et je trouve que c'est bien,comme ça les gens ne vont pas s'ennuyer en lisant de tonnes de pages,bref mais efficace,continue comme ça ey merci d'avance.
GOS is caming.
vinc1008881
Messages postés257Date d'inscriptiondimanche 22 août 2004StatutMembreDernière intervention29 septembre 20103 20 août 2005 à 17:45
les images sont contenues à l'interieur du fichier mht, pas de problème donc, à l'avenir j'essairai de faire du htlm classique.
Si vous trouver que mon tuto est pas clair, mal organisé ...
fait le moi savoir et je ferai des modifications !
cs_Urgo
Messages postés780Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention16 avril 20091 20 août 2005 à 17:28
Info: Foxit PDF Reader c'est rapide et gratuit.
Par contre je suis également contre l'idée de mettre ce tutorial en pdf. html devrait largement faire l'affaire.
juki_webmaster
Messages postés947Date d'inscriptionmercredi 19 novembre 2003StatutMembreDernière intervention 5 avril 20083 20 août 2005 à 17:19
A non desoler, je suis depasser par ce format!
juki_webmaster
Messages postés947Date d'inscriptionmercredi 19 novembre 2003StatutMembreDernière intervention 5 avril 20083 20 août 2005 à 16:53
Trés interessent!
J'attend la suite avec impatience, mon Compaq Presario 7106 va adorer.
Bonne continuation.
PS: Si tu pouvais ajouter en fin de route, toutes les images en cas-ou ces images ne soit plus disponible sur le net.
cs_Patrice99
Messages postés1221Date d'inscriptionjeudi 23 août 2001StatutMembreDernière intervention 9 septembre 2018 20 août 2005 à 14:20
Ok, et pour tester rapidement l'OS, la il faut une machine virtuelle, non ?
Pour Pdf, evitez à tout prix la version 6, elle rame trop. Les Pdf, c'est pratique justement pour éviter les modifications intempestives des autres ; si c'est pour modifier, mieux vaut choisir un autre format, puisque l'éditeur Pdf est payant.
abdoulax
Messages postés875Date d'inscriptionsamedi 17 mai 2003StatutMembreDernière intervention22 juin 20121 20 août 2005 à 13:31
Je suis d'accord le pdf c de la m***de, en plus avec mon pc ça rame à mort...
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 20 août 2005 à 12:44
Ce n'est pas l'OS sous Windows mais le créer, écrire son code et le compiler.
Pdf est définitivement de la m***de, va bon juste pour imprimer sur papier. Si on fait un copier coller, il a inséré des retours charriots nimporte où, à bannir pour éditer du code.
cs_Patrice99
Messages postés1221Date d'inscriptionjeudi 23 août 2001StatutMembreDernière intervention 9 septembre 2018 20 août 2005 à 12:30
Question bete : un OS sous Windows, c'est une machine virtuelle, non ?
Pour info, Doc2Pdf : www.vbfrance.com/code.aspx?ID=29662
cs_Joky
Messages postés1787Date d'inscriptionlundi 22 novembre 2004StatutMembreDernière intervention31 janvier 20092 20 août 2005 à 12:18
Il existe un super soft pour faire du pdf :o
Pdf Creator
Il s'installe dans les imprimantes, et sous word tu fais un enregistré, tu choisis l'imprimante Adobe et voilà tu as un beau pdf, certes avec une pub en bas mais bon ;)
Moi j'trouve quand même que c'est bien le mht, que j'arrive également à lire avec Firefox ;)
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 20 août 2005 à 12:17
Ah non pitié, pas de pdf, c'est trop la daube à consulter.
Fais don du html normal, Word les génère aussi et tout le monde peut les consulter confortablement.
vinc1008881
Messages postés257Date d'inscriptiondimanche 22 août 2004StatutMembreDernière intervention29 septembre 20103 20 août 2005 à 12:14
le format mht, c'est le format de microsoft word pour les pages htlm quand on met des photos, moi j'arive a le lire avec firefox ,c'est un peu comme du pdf, sauf que c'est du mht
Ok, je vois que ce format ne met pas tt le monde d'accord, je vais essayer de faire ceci en .pdf
@+, vinc1008881...
cashoverray
Messages postés26Date d'inscriptionmercredi 28 juillet 2004StatutMembreDernière intervention29 septembre 2005 20 août 2005 à 11:59
je trove sa super cool , ta souces
bonne continuation
o0Leo0o
Messages postés116Date d'inscriptionsamedi 19 juin 2004StatutMembreDernière intervention20 août 2005 20 août 2005 à 10:15
Dès le premier chapître, j'ai appris quelque chose.
Merci ;)
DelphiCool
Messages postés455Date d'inscriptionmardi 24 juillet 2001StatutMembreDernière intervention10 mars 2009 20 août 2005 à 07:16
Salut
J'attends aussi la suite
cs_eRoZion
Messages postés241Date d'inscriptionvendredi 23 mai 2003StatutMembreDernière intervention 8 octobre 20071 20 août 2005 à 02:16
Très intéressant, merci de prendre le temps.
Je regarde ça avec patience dès que j'ai le temps.
eRoZion
cs_Urgo
Messages postés780Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention16 avril 20091 20 août 2005 à 01:31
"vaintaine de chapitre pour aprendre a"
AÏE MES YEUX !!! DE L'EAU !!!
Heuresement, il y a beaucoup moins de fautes dans tes fichier mht. D'ailleurs d'où t'es venue l'idée de faire un tutorial dans ce format? C'est la première fois que je le vois...
Sur ce travaille bien, et essaye de ne pas faire trop de fautes d'orthographe ou d'étourderies, car cela ne fait pas trop sérieux.
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 20086 20 août 2005 à 01:27
Une question cependant, je le lis avec quoi ce fichier mht ?
D'accord pour ie, mais quand on ne l'a pas ?
L'ouvrir avec firefox ? apparemment impossible ou si quelqu'un peut m'expliquer, et avec Konqueror ? faut pas rever...
Donc est ce que ce serait possible d'avoir un format plus "lisible" :)
Bon ok, sur le titre, c'est marqué "pour windows", mais n'empeche :)
cs_dominion
Messages postés230Date d'inscriptionmardi 21 janvier 2003StatutMembreDernière intervention15 mai 2008 20 août 2005 à 01:02
Ca tombe bien, moi qui projettait de m'amuser à coder un kernel...
Merci ;-)
cs_Joky
Messages postés1787Date d'inscriptionlundi 22 novembre 2004StatutMembreDernière intervention31 janvier 20092 20 août 2005 à 00:42
En effet !!!
J'ai appris qu'un disquette avait 2 faces composées de 80 Disques concentriques composés de 18 Secteurs composés de 512 octets chacun
D'où la taille de la disquette 2*80*18*512 = 1474560 Octects
N'hésite pas à mettre des commentaires car lors d'une mise à jours, on est pas averti par email
J'attend le reste avec impatience :)
Mais va pas trop vite, faut que ça reste compréhensible ;)
cs_thedestiny
Messages postés56Date d'inscriptionsamedi 3 juillet 2004StatutMembreDernière intervention30 juin 2008 20 août 2005 à 00:21
Très interressant et très clair.
J'ai hate de voir le résultat final.
A bientot :)
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 19 août 2005 à 23:48
OK c'est prometteur, upgrade régulièrement le zip de la source et tiens nous informé de l'avancement.
Bonne continuation.
15 juil. 2009 à 23:00
5 déc. 2008 à 16:04
5 déc. 2008 à 15:57
Have fun
5 déc. 2008 à 14:08
Merci pour toutes ces précisions.
Je pensais pas qu'il fallait réinventer TOUT SUR TOUT. Ce n'est donc pas ce que je recherche(ou du moins pour l'instant). Je pensais qu'on pouvait faire son OS en assemblant des composants déjà existants et ses propres composants, pour arriver à une vitesse de démarrage de l'ordre de la seconde. hum.
LFS... ça m'a l'air intéressant... vais creuser dans ce sens.
Merci.
A+
Angel
5 déc. 2008 à 12:13
Have fun
5 déc. 2008 à 12:06
Si t'as envie de passer ta vie à écrire des "drivers" pour tous tes périphériques (écran, clavier, souris, enceintes), réécrire des libraires vidéos, audio utiliser les interuptions correctement afin d'afficher point par point sur ton écran des graphiques pas évolué, vas-y.
Un OS demande de TOUT réinventer.
Si c'était aussi facile tout le monde aurait son propre OS et on se baserait pas sur un DOS ou un UNIX pour en un créer un nouveau.
Bonne chance et bonne prog,
@++,
Victor
5 déc. 2008 à 11:52
5 déc. 2008 à 11:44
Suis un peu débutant, mais envie de me former surtout que maintenant j'ai un but. J'aimerai faire un OS qui démarre en 1 seconde. Un OS avec le minimum de programmes vitaux. Le but : ecouter rapidement musique, film, ... sans avoir à attendre 2min le démarrage de Windows.
Dans un premier temps, je veux pas de connexion internet, mais juste pouvoir mettre des fichiers depuis un autre pc (disque en documents partagés).
J'imagine donc que je dois m'orienté sur la programmation d'un OS. Qu'en pensez-vous? Ton tutorial est fait pour...
12 nov. 2008 à 14:54
12 juil. 2008 à 19:03
12 juil. 2008 à 17:54
29 févr. 2008 à 15:33
Les répertoires sont crées et les fichiers existes, etc... ?
26 févr. 2008 à 19:31
23 févr. 2008 à 23:33
Je ne pourrais pas mieu dire ;) La suite !C'est vraiment le seul tutorial compréhensibile que j'ai trouvé ;)..
smasher81@hotmail.com
5 janv. 2008 à 14:45
20 oct. 2007 à 02:21
21 févr. 2007 à 19:01
30 déc. 2006 à 17:03
26 déc. 2006 à 20:40
26 déc. 2006 à 18:17
26 déc. 2006 à 18:16
24 déc. 2006 à 17:58
26 sept. 2006 à 20:25
Avant tu avais mis un chapitre traitant rapidement de l'affichage à l'ecran...
peut tu les remettre quelque part car il contenait certaines informations utiles.
merci d'avance.
2 août 2006 à 01:01
19 juin 2006 à 11:01
8 juin 2006 à 18:41
8 juin 2006 à 15:35
En espérant une suite un de ces Quatres !
27 mai 2006 à 14:08
3 avril 2006 à 19:32
enjoy !
3 avril 2006 à 18:17
3 avril 2006 à 18:16
21 mars 2006 à 16:49
13 mars 2006 à 13:55
4 mars 2006 à 10:33
Sinon t'a avancé le tutorial en HTML ?
17 févr. 2006 à 12:21
8 févr. 2006 à 14:55
En français pas grand chose....
7 févr. 2006 à 22:37
Celle qui est donnée me dit que la page n'existe plus quand je clique sur tutoriaux,pareil pour les autres lien.
6 févr. 2006 à 19:57
peut être que c'est un problème de compilation
personnelement je suis passé sous linux pour continuer à programmer mon o/s parce que sous windows entre les compilateurs qui compilent pas bien, le rawwrite qui a parfois aussi des problèmes d'écriture....
6 févr. 2006 à 11:55
6 févr. 2006 à 00:20
5 févr. 2006 à 20:53
5 févr. 2006 à 20:51
Le tuto est très intéressant, mais comment faire si je n'ai pas de lecteur de disquette ???
3 févr. 2006 à 20:19
La suite du tuto est-elle prévu?
22 janv. 2006 à 03:52
30 déc. 2005 à 14:58
4 nov. 2005 à 20:16
sinon sur mon site c'est rubrique "Votre O/S" dans "Autres" directement dans le menu à gauche
4 nov. 2005 à 20:12
ce n'est pas impossible : déjà Visual Studio ne propose pas que des Windows mais aussi pour le mode console, qui équivaut à MS-DOS
le problème de cela est que les exécutables (le programme final) créé est dans un format reconnu par windows (ou ms-dos) alors qu'il faudrait du binaire plat (premier octet du fichier = première instruction et ainsi de suite)
il y a un petit utilitaire founis avec gcc qui est objcpy et qui permet de transformer ces fichiers vers le binaire plat (en fait c'est pas pour ça qu'il a été conçu mais en théorie ça marche tout aussi bien)
de toutes manières si tu prends Dev-C++ qui utilise le compilateur MinGW (pas sûr du nom mais c'est quelque chose qui ressemble) il a un petit bug qui fait que quand on essaye de linker en binaire plat, il met une erreur (j'ai regardé sur plusieurs forum et personne n'a trouvé de solution, ou plutôt tout le monde dit que c'est un bug du compilateur)
sinon sur mon site AAP (regardez dans mon profil ça évitera de toutes manières de faire un lien mort ici au cas où) j'ai mis des tutos faits par moi-même sur comment créer son o/s, vu que je suis allé un peu plus loin dans le sujet
mais à partir d'un moment ça devient très compliqué (un moment où je ne suis pas encore arrivé dans les tutoriaux mais dans le développement de mon o/s)
3 nov. 2005 à 17:45
merci d'avance
3 nov. 2005 à 10:28
petite remarque : tu crois pas qu'il est impossible de faire un
kernel avec Visual Studio puisque tous les types de projets qui
sont proposés au debut sont des projets Windows donc ....?
merçi d'avance,@++.
24 oct. 2005 à 16:00
joli travail continue comme ca.
J'attend la suite avec impatience.
;)
23 oct. 2005 à 08:30
recréer le getch c'est beaucoup plus compliqué car pour gérer le clavier il faut programmer les interruptions, puis le PIC, et après chaque fois qu'on appuie sur une touche du clavier, le PIC génèrera une interruption
c'est que après cette interruption qu'on peut lire sur un port quelle touche a été enfoncée/relâchée
22 oct. 2005 à 21:39
Comment fais-tu pour trouver les fonctions qui sont "indépendantes" zippro4012 ?
Pourrais tu faire en C le getch() car j'arrive pas à l'avoir
Merci !
22 oct. 2005 à 12:02
22 oct. 2005 à 11:50
void printc(char cLetter, int iXPos, int iYPos)
{
char * pWriteAdress;
pWriteAdress = (char *) (0xB8000 + (iXPos * 2) + (iYPos * 160));
*pWriteAdress = cLetter;
}
//Pour écrire une chaine complète
void printl(char *pString,int iXPos, int iYPos)
{
int iIndex = 0;
while (pString[iIndex] != 0)
{
printc(pString[iIndex],iXPos + iIndex , iYPos);
iIndex++;
}
}
22 oct. 2005 à 08:16
sinon il suffit de recréer la fonction printf qui prend un char* en paramètre par exemple et qui, avec un petit for, prend chaque caractère de la phrase et l'écrit dans la mémoire vidéo, jusqu'à arriver à un 0
après il vaut mieux avoir d'autres fonctions déjà prévues comme par exemple pour faire défiler l'écran (comme ça s'il y a un retour chariot dans la phrase et qu'on est tout en bas de l'écran on peut défiler l'écran sans problème)
21 oct. 2005 à 23:07
21 oct. 2005 à 06:38
sinon le C++ c'est plus compliqué à mettre en place, il faut écrire plein de fonctions spéciales je crois
20 oct. 2005 à 19:33
Je tiens à te féliciter pour ta superbe source !
Comment utiliser par exemple prinft() ?
Comment utiliser du C++ ?
Merci
10/10 !
19 oct. 2005 à 18:30
<< Notre kernel ne doit pas dépasser pour l'instant 1,5 Ko sinon le secteur de boot ne le chargeras pas en entier...(on verras pourquoi après) >>
Comment peut on faire pour charger le kernel complet ???
Sinon merci pour ces explications CyberP, j'ai enfin réussi a écrire une fonction pour écrire une chaine complète à l'écran, en c.
18 oct. 2005 à 17:38
Par exemple, pour l'interruption numéro 2, il ira chercher l'entrée n°2 de l'idt et lancera l'interruption vers l'offset spécifié.
Chaque entrée de l'idt fait 8 octets, pour plus d'infos cherche sur internet (je crois que du plus haut au plus bas, ie de gauche à droite, c'est 16 bits haut de l'offset, 16 bits du segment, un petit descripteur de 16 bits à mettre à 0x8E00 pour un truc normal, et 16 bits bas de l'offset)
Pour initialiser tout ça c'est un peu comme pour la gdt : un petit truc de 48 bits avec limite et base et à la fin l'instruction "lidt" à la place de "lgdt"
Vu que le tuto est mort il vaut mieux chercher sur internet pour l'instant
17 oct. 2005 à 20:53
17 oct. 2005 à 17:35
Pour appeler interruptions, etc. on peut mettre de l'assembleur dans du C (il sera alors ajouté directement lors de la compilation). On peut même y mettre des noms de variable par exemple.
Personnelement, je trouve l'inclusion de l'asm plus facile et pratique avec visual studio qu'avec gcc. Avec gcc, pour appeler l'interruption 40 par exemple, il faut taper : asm("int $40"); comme si c'était une instruction en C (notez le dollar complètement stupide).
Avec Visual Studio, un petit _asm { int 40 } avec la possibilitée de mettre plusieurs instructions à la suite entre les accolades (avec un retour à la ligne à chaque fois comme dans un assembleur normal). De plus, on peut écrire directement le nom des variables sans avoir à mettre %0 et tout ça comme dans gcc.
Par ailleurs, avec gcc, on ne peut pas appeler d'interruption par l'intermédiaire du préprocesseur (par exemple faire "#define interrupt 40" et après "asm("int $interrupt");" car ça ne marche pas [au linkage il dit ne pas trouver le symbole $interrupt] même si on enlève le dollar). D'ailleurs si quelqu'un sait tout de même comment faire, j'aimerais bien le savoir...
16 oct. 2005 à 09:40
A ce propos, comment faut-il faire pour appeler une interruption et accéder au segment et a la mémoire en C ?
15 oct. 2005 à 21:03
tu vois pas que de toute façon ,on peut pas utiliser
les fonctions traditionnel par exemple printf
donc il faut les redefinir en ASM ?
merçi d'avance
8 oct. 2005 à 20:58
Mais le C gère de toutes manières lui-même toutes les structures de contrôle et les types par défaut (il ne gère pas les bool et les nombres à virgule je crois).
8 oct. 2005 à 19:59
puisqu'un OS est forcement un programme Dos , il faut qu'il ne
se serve pas des librairies standard du C.comment peut on le
programmer avec ce langage ?n'est il pas ça impossible sans ASM ?
si j'ai bien compris lors la reecriture des fonctions systemes on
doit les definir en assembleur ? enfin n'est il pas gcc ou Borland
C++ plus convenable que Dev-Cpp ?
merçi d'avance .
7 oct. 2005 à 16:25
mov ax, 0x6000
mov ss, ax
mov sp, 0xFFFF
il ne créé pas une nouvelle pile car il n'y en avait tout simplement pas avant, à mon avis si tu fais un "push" ou "pop" avant ces instructions, le système redémarre
Si tu parles de :
mov ax, 16
...
mov ss, ax
mov esp, 0x6FFFF
alors il n'en créé pas non plus une nouvelle mais met juste le segment de la pile à jour avec la GDT (si tu le laisses à 0x6000 il va te dire que l'offset 0x1800 de la GDT n'existe pas) et pour esp, c'est tout simplement le registre 32 bits correspondant à sp (comme eax correspond à ax) et il pointe vers 0x6FFFF, l'équivalent de l'adresse 0x6000:0xFFFF en mode réel (c'est la même adresse que précédemment)
6 oct. 2005 à 16:21
Pourquoi le secteur de boot doit créer une nouvelle pile ??
Je tiens aussi à dire que ce tuto m'a permis de comprendre bcp de choses... Un grand merci
6 oct. 2005 à 15:59
6 oct. 2005 à 15:57
mov al, 03h
mov ah, 00h
6 oct. 2005 à 15:48
mov ax, 0003h ;ah contient le numero de fonction, al le paramètre
int 10h
revien à :
mov al, 00h
mov ah, 03h
int 10h
Ou un truc dans ce genre...
6 oct. 2005 à 15:41
AH est le 8 bits haut de AX et AL est son 8 bits bas, donc quand tu affectes AX ça affecte implicitement AH et AL.
6 oct. 2005 à 15:28
mov ax, 0003h ;ah contient le numero de fonction, al le paramètre
int 10h
tu dit ah contient le numero de fonction et al le paramètre mais on ne voit ni ah et al dans ces deux lignes...
Qlq1 peut m'aider un peu...
Mci
27 sept. 2005 à 13:57
Tres bon boulot vinc1008881 !!
26 sept. 2005 à 22:34
19 sept. 2005 à 22:03
mais j'attends quand même ton tuto parce que tu expliques quand même mieux que tout ce que j'ai pu trouver pour l'instant (sans compter les trucs qui se contredisent parfois)
19 sept. 2005 à 12:30
Il se décarcasse assez comme ça.
19 sept. 2005 à 09:14
je pensais que tu avais déjà fini et qu'il restait plus qu'à le mettre en ligne
16 sept. 2005 à 20:06
16 sept. 2005 à 19:23
9 sept. 2005 à 09:10
3 sept. 2005 à 18:31
2 sept. 2005 à 17:47
2 sept. 2005 à 12:27
J'ai copié le kernel au secteur 2, et c'est tt bon...
Sinon, qd est-ce que tu vas faire la mise a jour ?...
2 sept. 2005 à 12:27
rappel des débuts ....
@+ et continue comme ca
31 août 2005 à 17:54
l'adresse complète c'est donc :
0000 0100 0000 0000 0000 (20 bits)
les 16 premiers, c'est :
soit 0000 0100 0000 0000 (en commençant par la gauche)
soit 0100 0000 0000 0000 (en commençant par la droite)
et quoiqu'il en soit, les 4 derniers sont 0000
ce qui contredit ce que tu as écrit dans le tuto
31 août 2005 à 17:32
puis des autres bits
puis les 4 premier bits de la base
enfin le schéma l'indique clairement non ?
31 août 2005 à 17:10
dans ton tableau on voit que ce sont les 16 premiers bits en théorie ; si on fait le total des bits ça fait bien 64 bits (8 octets)
donc ça peut pas être 12 à la place de 16 sinon ça ferait 60 bits seulement
31 août 2005 à 16:29
seulement dans la GDT tout est mélangé,
on a donc les douze dernier bits de la limite = 0000 0000 0000
suivit par des autre truk
suivit par les 4 premier bits = 0100
reregarde lz shéma pour verifier tu verras les entrée de la GDT c'est pire qu'un puzzle...
31 août 2005 à 16:24
31 août 2005 à 16:16
sinon je comprends pas dans le chapitre 4 tu dis que la limite du segment de 128 Mo (en fait 64 Mo, tu te contredis un peu plus loin) c'est :
0100 0000 0000 0000
jusque là je suis d'accord
mais après pour coder ça dans la gdt, les 16 premiers bit tu mets :
0x0, 0x0 et les 4 derniers tu mets 0001 (je parle des trucs que tu mets en violet clair)
pour moi les 16 premiers bits de "0100 0000 0000 0000" c'est "0100 0000 0000 0000" et les 4 derniers ce serait 0x0
31 août 2005 à 15:11
B8000 > mémoire graf en mode TEXTE (affichage de caractères directement à l'écran)
c'est vraiment bizarre que l'int 13h n'est pas compatible avec ton lecteur disquette ? decompile un coup le secteur de boot de MS-DOS pour voir comment il s'y prend....
31 août 2005 à 14:42
Je croyais qu'il fallait mettre 0xB8000?
31 août 2005 à 14:41
Je croyais qu'il fallait mettre 0xB8000?
Moi j'ai compilé le code suivant dans kernel.c et ca fonctionne nickel:
void setPixelColor(unsigned int x, unsigned char color) {
unsigned char* video = (unsigned char*)0xB8000 + x ;
video[0] = color;
}
void kernel_start (void)
{
int i = 0;
unsigned char color = 0x00;
for(i=0;i<4000;i++){
setPixelColor (i,177);
i++;
setPixelColor (i,color);
color++;
}
while(1);
}
31 août 2005 à 13:50
C'est pas sur que ca marche !
31 août 2005 à 13:47
31 août 2005 à 13:19
xor ax, ax ; ax = 0
int 13h ; reset du lecteur disquette
31 août 2005 à 13:11
J'ai compilé exactement le meme code (sur une machine d'epoque), ça reboote tt seul au niveau de la lecture des secteurs (pour savoir qd ça bloquait,j'ai fait une petite fonction "affichage").Je travaille sur un PC 486SX (Windows 3.11 et MS-DOS 6.2,NO COMMENT !).
Merci d'avance pour votre aide !
30 août 2005 à 15:30
en fait je compile et linke avec visual studio
sauf que je rajoute une commande "post-linkage" :
objcopy -R .note -R .comment -S -O binary ..\temp\kernel.exe A:\kernel.bin
objcopy.exe c'est avec gcc
et ça appelle bien la fonction apparemment
30 août 2005 à 14:34
.o + .obj >marche (enfin je crois)
.o + .o >marche
.obj + obj>sa devrait marchait
des qu'il y a plus de 3 fichier objet>>foire
30 août 2005 à 14:19
je pensais que les .obj et les .o était exactement les mêmes
enfin faut voir
je vais essayer de compiler tout ça avec gcc (je crois que je vais laisser tomber visual studio et faire des .bat du coup)
30 août 2005 à 14:13
"((unsigned char*)(0xA0000 + x + 320 * y)) = color;">>nan ce sera une instruction asm de type mov memoire, constante.Pas de variables temporaire, d'ailleur sa existe meme pas en C.
ok pour la résolution de l'ecran je savais pas deviner...
>>kernel start n'est pas extern
voilà, apres un petit desassemblage, j'ai trouver le problème :(merci asm)
ld link mal mes fichier, il doi y avoir un problème...dassemble le binaire final pour t'en rendre compte (c'est au niveau des call, les adresse sont fausses)
il faut que tu link un fichier obj + un fichier o pas + car il doit certainement y avoir du problème...
30 août 2005 à 13:32
maintenant ça ne fonctionne même plus avec la fonction dans le même fichier :
void setPixelColor(unsigned int x, unsigned int y, unsigned char color) {
*((unsigned char*)0xA0000 + x + 320 * y) = color;
}
extern "C" void kernel_start() {
for (unsigned short i = 0; i < 320; ++i)
for (unsigned short j = 0; j < 200; ++j)
setPixelColor(i, j, 255 * i / 320);
//*((unsigned char*)0xA0000 + i + 320 * j) = 255 * i / 320;
while(1);
}
si j'enlève le commentaire dans la fonction kernel_start et que je commente à la place la ligne "setPixelColor(i, j, 255 * i / 320);" ça marche !
si je laisse comme c'est écrit là écran noir (mais pas de reset)
si je mets inline devant la fonction, reset
en plus le débuggeur de bochs me met des instructions en boucle, toutes au segment 0xf000, à se demander si ce sont bien les trucs qui se passent réellement
30 août 2005 à 13:10
sinon mon (255 * i / 320) fait un joli dégradé de couleurs
sinon le "((unsigned char*)(0xA0000 + x + 320 * y)) = color;"
créé de toutes manières des variables de manière temporaire comme je le fais
par contre mettre short et unsigned char pour moi c'est un bel exemple d'un bug qui se produira quand j'augmenterai la résolution de l'écran (ça fera peut être un petit warning à la compilation et c'est tout) parce que j'oublierai surement
de modifier le type des variables (mais bon c'est vrai qu'un unsigned short suffit)
sinon même avec extern ça ne fonctionne pas (j'avais déjà testé)
au final mon problème n'est pas reglé
30 août 2005 à 13:01
do {
} while(...);
30 août 2005 à 12:38
--> un while avec un variable++ à l'interrieur, pour moi c'est un for
--> dans ta fonction setpixelcolor, pourquoi s'emmerder à créer une variable "video", ((unsigned char*)(0xA0000 + x + 320 * y)) = color;
--> thériquement ta fonction setpixelcolor doit etre déclaré externe car elle appartient bien à un autre fichier *.obj (extern void Set...)
--> int i 0, j 0;
while (i < 320) {
while (j < 200) {
setPixelColor(i, j, 255 * i / 320);
++j;
}
++i;
j = 0;
}
>>crad
short i = 0;/*un short est suffisant*/
static unsigned char j = 0;/*un char est suffisant*/
for (;j<=200;j++)
{
for (i=0;i<=320;i++)setPixelColor (i,j,0x50);/*==>0x50 = couleur*/
}
>>plus propre non ?
30 août 2005 à 10:09
le
void video::setPixelColor(unsigned int x, unsigned int y, unsigned char color) {
c'est
void setPixelColor(unsigned int x, unsigned int y, unsigned char color) {
j'avais fait un test avec les namespaces et j'ai oublié d'enlever complètement
30 août 2005 à 10:05
kernel.cpp (je programme en C++, mais j'ai essayé en C, c'est pareil) :
#include "include/video.h"
extern "C" void kernel_start() {
int i 0, j 0;
while (i < 320) {
while (j < 200) {
setPixelColor(i, j, 255 * i / 320);
++j;
}
++i;
j = 0;
}
while(1);
}
video.h :
void setPixelColor(unsigned int x, unsigned int y, unsigned char color);
video.cpp :
#include "include/video.h"
void video::setPixelColor(unsigned int x, unsigned int y, unsigned char color) {
unsigned char* video = (unsigned char*)0xA0000 + x + 320 * y;
video[0] = color;
}
j'ai essayé inline, extern "C" devant, etc. et ça fonctionne que si le corps de la fonction est dans le même fichier .obj que là d'où on l'appelle
si je mets "setPixelColor(i, j, 255 * i / 320);" en commentaire, ça marche (écran noir mais au moins ça reset pas)
je compile avec visual studio (d'ailleurs on peut tout faire à partir de visual studio, même formater la disquette et assembler les .asm) et voilà le .bat de linkage :
cd ..\ld
ld.exe -Ttext 0x20000 link.ld -o A:\kernel.bin --oformat binary ..\temp\start.o ..\temp\kernel.obj ..\temp\video.obj
link.ld c'est le même que sur ton site
30 août 2005 à 09:34
sinon je ve bien jeter un coup d'oeil sur le code qui semblerai ne pas marcher
sa peut venir de minporte ou...montre moi aussi comment tu compile tu link et tu charge
30 août 2005 à 08:18
si je mets la fonction que j'appelle dans le même fichier .c (donc le même .obj au final) ça fonctionne
si je la mets dans un autre .obj (et que je rajoute le nom de cet .obj dans la ligne de commande pour linker), le linkage se passe bien sauf que ça reset
comment tu veux que je te le passe ?
29 août 2005 à 21:22
.obj >>C'est pas 16 bits sa ?, si tu execute ça apres que tu passe en Pmode, pas étonnant que sa foire...une triple faute et hop reset...
sinon passe moi la partie qui foire, je vais essayer d'analyser sa...
29 août 2005 à 15:34
sinon si j'en ai que 3 (le kernel, la petite partie en asm et un autre) ça fonctionne sauf que si j'appelle une fonction de l'autre fichier .obj à partir du kernel, ça reset (je ne sais pas exactement pourquoi, bochs ne le précise même pas)
29 août 2005 à 15:25
il faut compiler tout tes fichier .c en meme temps
pour cela tu fé un fichier main.c qui contient
#include "file.c"
#include".....c/h"
tu compile main.c
tu aura un seul fichier objet dans ce cas là. Donc se sera plus facil à linker...
29 août 2005 à 15:14
29 août 2005 à 15:09
(ou alors tu m'expliques pourquoi ça dit impossible d'exécuter la commande)
le problème est que j'ai voulu créer des fonctions (affichage à l'écran, modification de la palette et tout ça, j'ai pris un peu d'avance en regardant sur d'autres sites) dans d'autres fichiers .c et comme ça m'en fait plusieurs, l'instruction pour linker devient assez longue
29 août 2005 à 14:01
29 août 2005 à 13:48
Sinon pour le moment joli travail !!!
29 août 2005 à 12:21
http://membres.lycos.fr/vinc1008881/index.htm
29 août 2005 à 08:28
28 août 2005 à 13:42
Bonne continuation pour la suite
27 août 2005 à 11:07
J'espere que cela repond a ta question...
voilà, @+, vinc1008881
26 août 2005 à 17:18
26 août 2005 à 17:00
26 août 2005 à 17:00
26 août 2005 à 15:45
Voilà, j'ai fait un ptit site où il y a toutes les pages htm de mon tutorial (j'ai virer le mht). Dans la rubrique download, il y a les outils que j'utilise. je suis obliger de créer ce site car mon zip finir par devenir trop gros à la longue
en cas de pépin (problème de compilation, qqchose pas cler) => un petit message
26 août 2005 à 14:44
26 août 2005 à 13:44
mon site est là : http://membres.lycos.fr/vinc1008881/index.htm
26 août 2005 à 13:09
Le copié/merdé a encore frappé j'avais oublié la boucle infini à la fin du kernel.
Donc normal que ça reboote en permanence.
Merci à tous ceux qui se sont penchés sur mon pb.
26 août 2005 à 12:49
26 août 2005 à 09:38
10/10 tout ça non ?
Nico
26 août 2005 à 08:40
ce qui est aussi possible c'est que tu aies changé le nom du kernel pour je ne sais quelle raison et que tu as supprimé l'ancien (buggé) alors il faut formater la disquette sinon ça exécutera encore l'ancien même s'il est en théorie supprimé
26 août 2005 à 00:59
26 août 2005 à 00:46
mais je voudrais bien que ça marche quand c'est simple parce que quand ce sera plus compliqué oulala
26 août 2005 à 00:45
26 août 2005 à 00:43
26 août 2005 à 00:42
J'ai pu noté que dans le boot il y avait 2 CLI et un seul STI donc je suppose que la gestion des interruptions n'est pas réactivée en sortant du boot.
Est-ce normal ??
26 août 2005 à 00:30
-------> mis a jour
ce n'est rien pour le 0x57
demain je poste l'annexe qui montre la compilation d'un kernel ecrit en C...+ un chapitre sur le driver console
26 août 2005 à 00:25
mov byte [0xB8001], 01
un x entre le 0 et le 1 et l'assemblage se fait tres bien
26 août 2005 à 00:18
25 août 2005 à 23:44
25 août 2005 à 23:30
Ce tuto est super mais j'ai un petit soucis
NASM n'arrive pas à me compiler la ligne du kernel suivante :
mov byte[0xB8000],?K? ,je ne comprend pas pourquoi et contrairement au commentaire indiqué sur cette ligne j'aimerais bien comprendre ;)
Donc si tu a une idée je suis preneur
Merci et continu c'est super, je l'attendais depuis longtemps ce tuto.
Dan34
25 août 2005 à 22:14
le valeur 57 change simplement la couleur de la lettre affiché
encore dsl
25 août 2005 à 22:08
le bug du chapitre 4 est corriger javais fait 2 erreur :
oublie du cli
+
2 fois mov cr0, eax o lieu de 1 seule fois...
le 0x57 corespont à l'attribut couleur cela n'as rien à voir dsl
avec 01 --> on voit un K en bleu sur font noir
avec 0x57-> on voit un K gris sur font rose
25 août 2005 à 21:41
mov byte [0xB8001], 01
par :
mov byte [0xB8001],0x57
c vraiment génial ce tutorial
merci et continu on attend la suite
25 août 2005 à 13:42
J'espere que tu sera aussi clair pour les autres, car la gestion de la memoire et des processus dans un kernel est qqch d'assez dur comparé à ce que tu nous as deja servis.
Dans tous les cas BRAVO :-) et bonne continuation.
25 août 2005 à 06:17
24 août 2005 à 12:20
23 août 2005 à 21:59
Dans quelques heure le chap 4 sera dispo...
23 août 2005 à 21:35
http://boost.freezee.org/ (os sur x86)
22 août 2005 à 17:05
Bonne continuation.
22 août 2005 à 15:19
22 août 2005 à 13:23
22 août 2005 à 10:35
on dit pas "cette partie est très compliquée..." mais plutôt "cette partie est plus compliquée que les précédentes" (sinon ça donne la grosse tête à ceux qui arrivent à comprendre facilement)
22 août 2005 à 10:32
bravo!!!!!
22 août 2005 à 02:55
22 août 2005 à 01:26
bonne prog @ tous
magicalement
Nono
21 août 2005 à 22:05
21 août 2005 à 21:49
;Un secteur de boot plus complet
[BITS 16]
jmp start
db ?GAMEOS01?
A propos des " "
21 août 2005 à 21:25
Pour ceux qui ont des difficulté en assembleur, ds le chapitre 2, j'ai mit un lien vers un tutoriel...
Je vais pensez à écrire une annexe à propos des interruption en gereral (BIOS, DOS>>n'existe plus) en mode réel.
Merci de tes remarques, @+
21 août 2005 à 21:17
21 août 2005 à 20:50
Patrice99 >> Pour tester l'OS il faut démarrer l'ordinateur à partir d'une disquette contenant cet OS. Ca viendra surement dans les prochains chapitres. Windows et sa machine virtuelle DOS ne devront pas être chargés.
21 août 2005 à 20:47
21 août 2005 à 15:48
Vraiment nickel pour les débutants (comme moi!)
21 août 2005 à 11:57
Pas très avancé , mais très bien pour les débutants.
Ok ! J'attends la suite. :)
Ciao !
21 août 2005 à 11:04
Vivement la suite !
@++
21 août 2005 à 01:47
je trouve deja ces débuts bien expliqué et bref aussi et je trouve que c'est bien,comme ça les gens ne vont pas s'ennuyer en lisant de tonnes de pages,bref mais efficace,continue comme ça ey merci d'avance.
GOS is caming.
20 août 2005 à 17:45
Si vous trouver que mon tuto est pas clair, mal organisé ...
fait le moi savoir et je ferai des modifications !
20 août 2005 à 17:28
Par contre je suis également contre l'idée de mettre ce tutorial en pdf. html devrait largement faire l'affaire.
20 août 2005 à 17:19
20 août 2005 à 16:53
J'attend la suite avec impatience, mon Compaq Presario 7106 va adorer.
Bonne continuation.
PS: Si tu pouvais ajouter en fin de route, toutes les images en cas-ou ces images ne soit plus disponible sur le net.
20 août 2005 à 14:20
Pour Pdf, evitez à tout prix la version 6, elle rame trop. Les Pdf, c'est pratique justement pour éviter les modifications intempestives des autres ; si c'est pour modifier, mieux vaut choisir un autre format, puisque l'éditeur Pdf est payant.
20 août 2005 à 13:31
20 août 2005 à 12:44
Pdf est définitivement de la m***de, va bon juste pour imprimer sur papier. Si on fait un copier coller, il a inséré des retours charriots nimporte où, à bannir pour éditer du code.
20 août 2005 à 12:30
Pour info, Doc2Pdf : www.vbfrance.com/code.aspx?ID=29662
20 août 2005 à 12:18
Pdf Creator
Il s'installe dans les imprimantes, et sous word tu fais un enregistré, tu choisis l'imprimante Adobe et voilà tu as un beau pdf, certes avec une pub en bas mais bon ;)
Moi j'trouve quand même que c'est bien le mht, que j'arrive également à lire avec Firefox ;)
20 août 2005 à 12:17
Fais don du html normal, Word les génère aussi et tout le monde peut les consulter confortablement.
20 août 2005 à 12:14
Ok, je vois que ce format ne met pas tt le monde d'accord, je vais essayer de faire ceci en .pdf
@+, vinc1008881...
20 août 2005 à 11:59
bonne continuation
20 août 2005 à 10:15
Merci ;)
20 août 2005 à 07:16
J'attends aussi la suite
20 août 2005 à 02:16
Je regarde ça avec patience dès que j'ai le temps.
eRoZion
20 août 2005 à 01:31
AÏE MES YEUX !!! DE L'EAU !!!
Heuresement, il y a beaucoup moins de fautes dans tes fichier mht. D'ailleurs d'où t'es venue l'idée de faire un tutorial dans ce format? C'est la première fois que je le vois...
Sur ce travaille bien, et essaye de ne pas faire trop de fautes d'orthographe ou d'étourderies, car cela ne fait pas trop sérieux.
20 août 2005 à 01:27
D'accord pour ie, mais quand on ne l'a pas ?
L'ouvrir avec firefox ? apparemment impossible ou si quelqu'un peut m'expliquer, et avec Konqueror ? faut pas rever...
Donc est ce que ce serait possible d'avoir un format plus "lisible" :)
Bon ok, sur le titre, c'est marqué "pour windows", mais n'empeche :)
20 août 2005 à 01:02
Merci ;-)
20 août 2005 à 00:42
J'ai appris qu'un disquette avait 2 faces composées de 80 Disques concentriques composés de 18 Secteurs composés de 512 octets chacun
D'où la taille de la disquette 2*80*18*512 = 1474560 Octects
N'hésite pas à mettre des commentaires car lors d'une mise à jours, on est pas averti par email
J'attend le reste avec impatience :)
Mais va pas trop vite, faut que ça reste compréhensible ;)
20 août 2005 à 00:21
J'ai hate de voir le résultat final.
A bientot :)
19 août 2005 à 23:48
Bonne continuation.