Projet FiXos (OS pour casio fx-9860/Prizm)
Posté le 07/11/2011 20:11
maj 14/11/2013 :
un peu d'actualités
maj 03/03/2013 :
mon (presque) dernier pavé
maj 06/03/2015 :
Dépôts GitLab du projet.
Vu que le sujet d'OS unix-like pour nos chères G85 (fx-9860) et dérivées, ainsi que pour la Prizm (fx-cg20) fait réagir pas mal de gens, j'ouvre un topic pour en parler plus en détail
(début du sujet
sur ce topic)
Déjà, quelques précisions, mes posts précédent étaient simplement des idées pour montrer l'utilité et ma vision d'un possible OS, je n'avais pas vraiment pour projet de le concrétiser dans l'immédiat. L'idéal serait de bosser là dessus conjointement avec des gars d'omnimaga, cemetech, et les autres communautés.
Ceci dit, j'ai déjà quelques idées dans la tête, donc autant les faire partager
(au passage, j'en profite pour répondre un peu aux posts de l'ancien topic)
DJ_Omnimaga : sur Casio on a jamais eu l'occasion de créer un OS tiers jusqu'à la fx-9860 (excepté la Graph100 mais c'était loin d'être le modèle le plus répandu), les processeurs étant non documentés. Depuis que tous les nouveaux modèles de Casio utilisent la même architecture plus ouverte, il est possible de créer un OS custom, mais si il n'y a toujours pas eu de projet d'OS c'est entre autre par ce que les addins permettaient déjà de faire des programmes sympa, et probablement aussi à cause du manque de "programmeurs systèmes" dans le monde Casio.
Vdragon.b: Oui, un OS est généralement codé en C (pas une obligation, mais Linux en est un bon exemple ouaip). Ceci dit, vaut mieux "bien coder", par ce que l'expérience permet de d'optimiser le code, d'utiliser des syntaxes très barbares -mais pratiques-, de comprendre la structure générale de l'OS. Après, si il s'agit de code hors-noyau (un petit utilitaire ou autre) bien entendu les performances sont moins critiques, donc si tu te sens tu pourras aider j'imagine.
Pour les grayscales et le multitâche c'est prévu dans mon idée perso effectivement.
(dans un premier temps, multitâche coopératif avant d'écrire un vrai ordonnanceur)
Pour le moment, les idées que j'ai pour le kernel :
- une fonction init pour initialiser le MMU, le cache, créer la pile kernel, initialiser les interruptions, charger le système de fichiers...
- un FS type FAT par exemple, serait potentiellement créé en tant que fichier du FS de Casio (pour permettre la cohabitation des deux systèmes, en évitant de se tapper le FS de Casio complètement en carton *siflotte*)
- système de virtual FS pour permettre une uniformité des API d'écriture de fichiers
- possibilité de lancer un programme binaire "pur" (binaire sans header G*A), un binaire G1A, ou un fichier ELF (ce dernier permettrait l'utilisation de techniques avancées)
- gestion des bibliothèques dynamiques (du .so si le format est pas trop lourd, custom sinon), dont Newlib (lib stdc) pour alléger les addins, profiter de fonctions spécifiques à chaque calculatrice...
- gestion du MMU en mode activé et pour environnement multiprocessus (basculement en monoprocessus si nécessaire pour assurer la retro-compatibilité G*A?)
- évidemment, les addins seraient lancés en mode 'user' pour assurer la sécurité du kernel
- syscalls utilisant l'instruction TRAPA de l'assembleur SH3 (interruption logicielle), pour basculer en mode protégé et accéder à l'espace noyau
- des drivers d'affichage dépendant du modèle de la calculatrice, permettant de gérer un mode "terminal" et un mode "graphique"
Si vous avez des questions, des choses à proposer, des contacts avec des gens intéressés ou quoi que ce soit n'hésitez pas.
Je ne sais toujours pas si je vais vraiment me lancer là dedans (c'est un gros projet encore une fois, peu de chances d'être fini un jour si y'a que moi dessus
), mais dans le pire des cas, les idées présentées serviront bien à quelqu'un, un de ces quatres
Citer : Posté le 29/07/2014 15:09 | #
Je t'avais proposé mon aide, mais c'était pendant le bac, et depuis j'ai changé d'ordi donc il faut que je me retape la compil de GCC
Je fais ça dès que j'ai un peu de temps. Bref, je suis curieux de voir ce que ça donne
PS: j'ai du mal à cloner le projet, il me dit que j'ai pas les droits, c'est normal ?
Ajouté le 29/07/2014 à 15:13 :
Edit : pour le git, j'ai résolu le problème, ça venait de ma clé SSH
Ajouté le 29/07/2014 à 17:13 :
Finalement, le fichier bootldr.cfg est bien en UNIX-like, donc le problème vient bien de la lecture de la SMEM...
Pour rappel, j'ai une G35++ SH3 sous OS 02.01.2200
Citer : Posté le 19/08/2014 13:35 | # | Fichier joint
Suite au questions soulevées par le re-mappage du clavier - le repositionnement des touches pour taper (ergonomiquement) du texte -, plusieurs configurations ont été abordées, parmi lesquelles :
Clavier type ABC :
C'est celui que l'on a actuellement sur nos Graph.
Clavier type ABC+ :
L'accès aux caractère reste aux positions actuelles, mais voici quelques changements au niveaux du locking des touches :
En mode par défaut : minuscules
Appui simple sur shift : le prochain caractère est une majuscule
Appui simple sur alpha : le prochain caractère est un chiffre
Appui double sur shift : caplock (shift pour dévérouiller)
Appui double sur alpha : numlock (alpha pour dévérouiller)
Clavier de type 9K (9-keys) :
Accrochez vous, j'ai mis du temps à comprendre le fonctionnement exact. Ce clavier diffère totalement de ce qu'on a eu jusque là puisqu'il garde la configuration pour les chiffre actuelle, mais utilise les 9 touches de [Alpha] à [ ( ] (d'où le 9K) et les touches [cos] [tan] et [->] pour taper les caractères alphabétiques.
Le fonctionnement est semblable à celui d'un téléphone : les touches de [Alpha] à [ ( ] ont 3 caractères en commun à chaque fois :
Alpha -> ABC --- x² -> DEF --- ^ -> GHI
XTT -> JKL --- log -> MNO --- ln -> PQR
¤/¤ -> STU --- F<>D -> VWX --- ( -> YZ (espace)
On maintient une de ces touches, et [cos] [tan] [->] permettent de valider la saisie du caractère.
Pour les majuscules, un shift -> prochain caractère en maj, deux -> capslock
Vous trouverez en pièce-jointe un addin de test de ce système : ça fonctionne comme une console (les caractères numériques ne sont pas implémentés).
Lequel préférez-vous ? Avez-vous d'autres idées ?
Citer : Posté le 19/08/2014 14:04 | #
Le clavier ABC+ est à mon goût de loin le meilleur -- c'est la configuration à laquelle on est habitués, mais plus adaptée à la saisie.
Citer : Posté le 19/08/2014 14:09 | #
On s'est un peu tous habitué au clavier ABC. (
Et comme les programmeurs sont flemmards)Passer au ABC+ serait bénéfique je pense car il nous simplifierai la vie mais le 9K me semble trop différent pour s'y habituer...
Jouez à 6 sur une seule calto : Curve Fever
Un die and retry qui vous fera bieeeen rager Test Andropov
un très bon sokoban
le seul vrai jeu de foot en basic : FIFA 12
Ca c'est ce que j'appelle un jeu de reflexion jewel master
Qui vaincra l'intelligence artificielle de cet othello
Le célèbre pacman
Et tant d'autres BTL's games
Le jeu du mois de Novembre et award du jeu le plus dur de l'année 2013 MultiTask, testez-le
Citer : Posté le 19/08/2014 16:25 | #
ABC+ !
Citer : Posté le 21/08/2014 14:23 | #
Quoi qu'il en soit, depuis hier je bosse sur le support des codes d'échappement VT100. Jusque là le parsing devrait aller, il faudra juste remplacer ces grands switch/cases par les fonctions correspondantes. A terme, on pourra ainsi manipuler pas mal de choses comme la position du curseur, la couleur (lol, le jour où ça fonctionnera sur du monochrome), scroller et tout...
Citer : Posté le 25/08/2014 16:20 | #
Vu que le clavier ABC+ a beaucoup de succès ici, j'ai réfléchi à un système permettant d'avoir accès à +120 des caractères ASCII de base :
Le clavier sera composé de 4 "calques" séparés en 2 catégories : deux accessibles avec SHIFT, deux avec ALPHA. Je les appellerai S1, S2, A1 et A2.
Pour passer de S* à A1, un appui sur ALPHA suffit. De même pour passer de A* à S1, un seul appui sur SHIFT est requis.
Pour passer de *1 à *2 sans bloquer, il faut être dans le même mode et appuyer une fois sur SHIFT ou ALPHA (en fonction du mode dans lequel on se trouve). Pour bloquer, ce sera deux appuis consécutifs, un pour débloquer.
Je commence par les calques disponibles en ALPHA : pas de grand changements si ce n'est l'accès rapide aux symboles ', ", \t (tabulation) pour faciliter la saisie de code : le premier caractère correspond au calque A1, le deuxième au A2.
Pour ce qui est des calques S1 et S2, je n'ai pas encore totalement réfléchi à la disposition précise des touches, mais les symboles ASCII déjà présents ne changeront pas de place, seuls les caractères indisponibles pour le moment prendront la place des touches SIN, COS, etc. ainsi que le deuxième calque. Je suis en cours d'optimisation et de réflexion pour ça.
N'hésitez pas à donner votre avis sur ce système, FiXos doit être dévellopé par et pour la communauté
PS : Hehe, 6000 points, il aura fait du bruit ce commentaire
Citer : Posté le 25/08/2014 16:23 | #
Je trouve que c'est une bonne idée ce système de calques
Mais du coup, rien ne sera accessible sans être en S* ou en A* ?
Citer : Posté le 25/08/2014 16:28 | #
Comment ça ? En gros tu ne pourra pas accéder au S2 si tu n'est pas déjà en S1, et idem pour le A1 et A2. Ou alors faudra faire un système légèrement différent.
Par contre, si tu ne change que très peu de famille de calque, la saisie est (théoriquement) assez optimisée : pour taper "Salut, il est 12h et je m'appelle Toto !", il faudra appuyer sur shift et alpha de la manière suivante :
Citer : Posté le 25/08/2014 21:40 | #
Non, je voulais demander si on était pas en S1, S2, A1 ou A2, si on tape sur quelque chose ca fait rien ?
Citer : Posté le 25/08/2014 21:43 | #
D'ailleurs d'après ce que j'ai compris, les majuscules et minuscules sont pas sur le même calque. Je me trompe ?
Citer : Posté le 25/08/2014 21:55 | #
non, mais dans la même famille de calque :
minuscule -> 1x ALPHA -> majuscule -> minuscule
minuscule -> 2x ALPHA -> majuscule -> majuscule -> maj... -> 1x ALPHA -> minuscule.
T'es pas obligé de bloquer les maj
Citer : Posté le 25/08/2014 21:58 | #
Et dans ce cas, comment je fais si je veux pas mettre de majucule au début ?
Citer : Posté le 25/08/2014 22:00 | #
ben t'appuie pas sur alpha (par défaut, c'est le calque A1 qui est actif)
Citer : Posté le 25/08/2014 22:03 | #
Ben oui mais si j'appuie sur SHIFT pour mettre une parenthèse... ?
Citer : Posté le 25/08/2014 22:05 | #
Il faut ensuite appuyer une fois sur alpha pour revenir en A1. Je réfléchi à un raccourci pour éviter cela.
Citer : Posté le 25/08/2014 22:08 | #
[...] pour taper "Salut, il est 12h et je m'appelle Toto !", il faudra appuyer sur shift et alpha de la manière suivante :
Dans ce cas, il faut utiliser deux fois alpha pour mettre la majuscule à Toto non ?
Citer : Posté le 25/08/2014 22:10 | #
nope, car l'espace fait partie du clavier A1 : "T" fait partie du clavier A2, or pour passer de A1 à A2 sans bloquer il faut un seul appui sur ALPHA
Citer : Posté le 25/08/2014 22:14 | #
Ok, je vois (je pensais qu'on était en mode S1 à ce moment-là).
C'est vrai que c'est bien optimisé, il y a du potentiel !
Citer : Posté le 25/08/2014 22:21 | #
Ben l'apostrophe est en A1, les " en A2, donc pour ce genre de texte on est pas obligé de switcher sans arret entre les claviers
Citer : Posté le 21/09/2014 11:25 | #
Sinon, des nouvelles du projet? Le dernier message sur Omnimaga date de début Août, le dernier push du repo git de mi-Août… Ce projet est mort, en pause, ou l'auteur a décidé de ne plus travailler qu'en local? (ou alors je m'impatiente pour rien, ça fait qu'un mois après tout…)
Sinon, des nouvelles du support SH4 aussi?
Je suis prêt à aider pour les tests.