Topic : « J'ai codé un OS minimaliste »

Avatar de SidiNoel SidiNoel
Salut, ça faisait longtemps que j'étais pas passé ici :noel:

J'ai passé mon temps libre à coder un OS (bootable) qui pour l'instant est très simpliste, j'ai à peine codé les fonctions de base pour afficher un message. Mon but était en fait de faire un OS (le mot est grand, ce sera un petit truc en ligne de commande :noel: ) où l'utilisateur pourrait modifier la VRAM à volonté. D'où son nom, Gnina-LSD :noel:

J'ai fais une liste des features que je devais implémenter :

Bootloader ✓
Chargement du kernel ✓ (bon là j'ai un peu repris un code existant mais y'avait pas 36 façons de faire ça aussi :noel: )
Fonction print ✓
Manipulations psychédéliques de la VRAM ✓ : J'ai écris une fonction lsd() qui remplit la vram de caca mais c'est pas encore implémenté :hap:

Ce qui reste à faire :

Rechargement de la GDT
Support du clavier
Shell minimaliste
Une vraie VRAM psychédélique, en donnant à l'utilisateur un accès complet sur les valeurs mémoire :hap:
Support d'au moins une autre architecture (powerpc sans doute)

Voici le code source sur Github : https://github.com/Aycaterae/Gnina-LSD
Apercite https://github.com/Aycaterae/Gnina-LSD


Aussi, je conseille à tous ceux qui voudraient peaufiner leur C ou leur ASM de se mettre au développement d'un petit OS, on apprends vraiment beaucoup de choses en faisant cela :oui:
Avatar de KEK KEK
GG BRO! :noelok:
Je vais l'essayer :D
Par contre je n'ai pas bien compris "modifier la VRAM" :question:
La VRAM dépend du hardware, pour la changer faut un tournevis, pas un OS :haha:
Dis-moi que je suis con, en m'expliquant toussa steuplé :)
Avatar de SidiNoel SidiNoel
Par contre comme tu peux le voir je suis très désordonné concernant les fichiers, y'a littéralement aucun dossier ni tri dans le projet :rire:
Je me retrouve bien comme ça, je sais pas pourquoi :noel:

Auto-édit :
>>KEK
GG BRO! :noelok:
Je vais l'essayer :D
Par contre je n'ai pas bien compris "modifier la VRAM" :question:
La VRAM dépend du hardware, pour la changer faut un tournevis, pas un OS :haha:
Dis-moi que je suis con, en m'expliquant toussa steuplé :)

Je voulais dire, changer les valeurs de la VRAM. Ecrire du caca dedans ça fera de jolies couleurs. :hap:
#278574
Avatar de SidiNoel SidiNoel
>>SidiNoel
Par contre comme tu peux le voir je suis très désordonné concernant les fichiers, y'a littéralement aucun dossier ni tri dans le projet :rire:
Je me retrouve bien comme ça, je sais pas pourquoi :noel:
Auto-édit :
>>KEK
GG BRO! :noelok:
Je vais l'essayer :D
Par contre je n'ai pas bien compris "modifier la VRAM" :question:
La VRAM dépend du hardware, pour la changer faut un tournevis, pas un OS :haha:
Dis-moi que je suis con, en m'expliquant toussa steuplé :)
Je voulais dire, changer les valeurs de la VRAM. Ecrire du caca dedans ça fera de jolies couleurs. :hap:

Ah et si tu veux l'essayer prends le fichier Lomad. Par contre j'ai testé seulement sur QEMU, je sais pas si ça marchera sur autre chose :(

(oups, fail d'édit, je m'y retrouve vraiment pas dans cette interface)
#278575
Avatar de SidiNoel SidiNoel
Si tu comptes recompiler le truc (en supposant que tu sais programmer) tu peux ajouter un petit lsd(); dans le kernel, pour avoir un petit aperçu d'une manipulation aléatoire de la VRAM :noel:

Je te fais un screen attends :oui:
Avatar de KEK KEK
>>SidiNoel
Ah et si tu veux l'essayer prends le fichier Lomad. Par contre j'ai testé seulement sur QEMU, je sais pas si ça marchera sur autre chose :(
Ben je vais prendre un petit Raspberry, on verra bien :noel:
Avatar de SidiNoel SidiNoel
>>KEK
Citation de SidiNoel
Ah et si tu veux l'essayer prends le fichier Lomad. Par contre j'ai testé seulement sur QEMU, je sais pas si ça marchera sur autre chose :(
Ben je vais prendre un petit Raspberry, on verra bien :noel:

Ah mais non. Raspberry c'est sous processeur ARM, mon truc marche que sur x86 :hap:
Après comme je l'ai dis je projette de porter mon truc sur plusieurs architectures, mais faudrait que je finisse d'abord le plus important :noel:
#278580
Avatar de SidiNoel SidiNoel
<img> https://i.imgur.com/km5fvS7s.jpg</img>

Voilà un petit début de trip :noel:

En fait c'est tout simple comment ça fonctionne cette fonction :

#define FVM 0xAB913300
void lsd()
{
int fvm = FVM;
int gimel = 0xB8000;
while (gimel < 0xB8800){
*((int*)gimel) = fvm;
gimel++;
fvm++;
}
}

Voilà, ça fait que C/C du caca dans la VRAM :noel:
Avatar de KEK KEK
>>SidiNoel
Citation de KEK
Citation de SidiNoel
Ah et si tu veux l'essayer prends le fichier Lomad. Par contre j'ai testé seulement sur QEMU, je sais pas si ça marchera sur autre chose :(
Ben je vais prendre un petit Raspberry, on verra bien :noel:
Ah mais non. Raspberry c'est sous processeur ARM, mon truc marche que sur x86 :hap:
Après comme je l'ai dis je projette de porter mon truc sur plusieurs architectures, mais faudrait que je finisse d'abord le plus important :noel:
Bon..
Ben QEMU alors...
Avatar de SidiNoel SidiNoel
qemu-system-i386, fais pas d'erreur :noel:

Par contre pour le moment y'a un peu rien à tester, la seule chose que tu verras c'est un message de test affiché. Mais mine de rien y'a un minimum de boulot derrière ce message, c'est pas comme un vulgaire programme qui se contente de printf(), là y'a pas de printf possible c'est toi qui code les fonctions de base. :noel:

Maintenant le plus important c'est que j'arrive à mettre en place le support du clavier :(
#278585
Avatar de SidiNoel SidiNoel
>>Picsou
déçu pour le lsd, j'pensais que t'allais faire un truc stylé avec le vesa :-(

Hey mais c'est que le début mec :(
Je suis loin d'avoir fini avec les fonctions psychédéliques, y'a à peine 10 lignes là :hap:
Avatar de SidiNoel SidiNoel
>>KEK
Citation de SidiNoel
y'a un minimum de boulot
y'a à peine 10 lignes là :hap:
:noel:

Je parlais de la fonction lsd(). Pour le reste c'est peut-être pas très long mais j'ai quand même passé des jours et des jours à faire ça, je suis pas expert hein j'avais à peine un niveau acceptable en C et débutant en assembleur, mais grâce au développement d'un OS on apprends beaucoup de choses mine de rien :noel:
#278594
Liste des sujets