Qu'est-ce Cpcdos ?

Article complet sur developpez.net ici

Cpcdos est un projet de co-noyau modulaire multitâche 32 bits, visant à simplifier le développement de vos projet de système d'exploitation, tout en privilégiant l'interface graphique.

Ce projet grauit inclut principalement le langage de programmation CpcdosC+ pour simplifier la programmation d'OS et d'application, puis le, C/C++ 98,11, 14, 17 (Lua, python, et html/css à venir) pour les amateurs avertis. Le tout dans un style terminal/lignes de commandes et avec ou sans interface graphique, à votre choix!

Interface visuelle


Utilisant des procédés générique VESA, VGA, SVGA, vous pourrez attribuer des résolutions d'écran supportés par votre carte graphique et moniteur.

Les résolutions suivantes

  • Standard 4:3 comme 800x600, 1024x768 ...
  • Haute définition 16:9, 16:10 comme 1920x1080, 1600x900
  • 4K ... à voir ;)

Les profondeurs de couleurs

  • 16 bits (65 536 couleurs)
  • 24 bits (16 777 216 couleurs)
  • 32 bits (4 294 967 296 couleurs)

Vous pourrez créer des fenêtres, des boutons, des picturebox, des bloc de texte, des textbox, des checkbox, des slidebar, des progressbar... créer vos interactions graphiques, des évenements à la volée, des animations... c'est-à-dire tout ce dont un système d'exploitation a besoin pour interagir avec l'utilisateur. Il support nativement le format PNG, JPG/JPEG, JFIF et MJPG (Flux vidéo)
Nous avons en projet de rendre compatible le parsing des fichiers graphique XAML de Microsoft Visual Studio pour pouvoir la créer AUSSI depuis ce dernier.

Mémoire

Etant un système 32 bits, Cpcdos est théoriquement capable de supporter 4 Giga octets de RAM (Cela dépend de si vous avez une mémoire graphique dédiée ou non), ce qui suffit largement pour le moment. Le noyau seul en exécution consomme en moyenne 2 à 30 méga octets de RAM.

Ce noyau gère partiellement tout seule sa mémoire (En expérimentation).
En effet, en vue de la séparation avec le boot FreeDOS, l'allocation mémoire doit être gérée uniquement par Cpcdos. A ce jour, toute la partie interne (Shell, client, serveur tcp,udp, threads, processus, interface graphique, bitmaps RGBA, 3D engines) est soumise à l'allocation mémoire de cpcdos, excepté la LLVM.

Système

De manière approfondi, Cpcdos est capable de gérer une infinité de threads, processus, leur temps d'exécution se compte en microsecondes selon leur priorité d'execution, mais aussi changer dynamiquement les priorités, par exemple si vous exécutez un serveur TCP MAIS qu'il n'y a aucune activité, alors le système va prioriser les autres tâches. Et vice versa!
Il permet aussi d'exécuter du code natif "externe".

Executer du code natif externe.

Voilà d'où vient la notion du «noyau modulaire». Cpcdos est capable de charger et d'exécuter de manière dynamique une infinité de modules (Bloc de code/d'instruction x86) venant de l'extérieur du noyau et de créer des liaisons. Cela peut être des programmes dans des fichiers compilés tels que des exécutables Windows .EXE, .DLL, LLVM/Clang ou bien des drivers.
ATTENTION : La préemption est "désactivée" sur les modules externes. Sous-entendu que les .exe, .bc, et routines C++ sont exécutés en mode "Section critique" pour combler temporairement les crashs liés à une mauvaise gestion de la mémoire virtuelle de Cpcdos et sauvegardes/restaurations des contextes des tâches.

Il gère également son propre langage de programmation "à double syntaxe" sous le nom de CpcdosC+. C'est-à-dire qu'il est possible d'utiliser à la fois la syntaxe (FR) francophone et (EN) anglo-saxon ou bien les deux ! Il a la particularité de simplifier et d'automatiser l'exécution de séquences de code compliqué à gérer pour les débutants.

Petite innovation, Cpcdos est capable d'exécuter plusieurs OS en parallèle (Aucune virtualisation). Les performances restent correctes. Il est également possible de switcher entre les OS exécutés et à l'avenir de fenêtrer l'OS en arrière plan. Un processeur type PENTIUM 4 minimum et 254Mo de RAM est recommandée.

Cpcdos est actuellement capable de gérer de manière autonome

  • L'interface visuelle au pixel près
  • Multi-OS
  • Rendu 3D via GZE Engine/OpenGL
  • Curseur graphique
  • Lecture des images bmp, jpg, png, gif
  • Lecture et écriture des fichiers.
  • Caractères UTF-8
  • Polices d'écritures
  • Ping ICMP
  • Client/Serveur UDP/TCP, TELNET et HTTP
  • Protocoles Client/Serveur HTTP, FTP (en cours)
  • Langage CpcdosC+, POO, Fonction(), routines, variables, calculs, exécution de code
  • Mémoire RAM
  • Garbage collector
  • Gestionnaire des tâches
  • LLVM (Low-Level-Virtual-Machine)
  • Chargeur d'exécutable Win32 PE
  • Mémoire virtuelle
  • BIOS APM v1.0 v1.1 v1.2+ (Advanced Power Management)
  • Multi-threading
  • ISR
  • etc...

Réseau

Précisément la couche 3 du modèle OSI, le réseau est désormais géré par Cpcdos et non FreeDos/NDIS2. Une avancée majeure, notamment dans la répartition des tâches multi-thread et la possibilité de contrôler son système à distance depuis votre téléphone ou depuis votre PC ou bien depuis un port COM Série RS232. Vous pouvez ouvrir un serveur TCP/UDP en mode Normal, Telnet, Echo. Il est possible de télécharger des fichiers WEB depuis une URL via le protocole HTTP1.1 désormais nativement géré par Cpcdos. Vous pourrez donc faire des requêtes HTML, PHP, des WebServices.. Tout! Le protocole FTP sera très bientôt mis en place!
En plus du Telnet, vous pourrez également contrôler/débugger votre système depuis les ports COM Série RS232 avec putty ou un terminal quelconque!