Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » Projet FiXos (OS pour casio fx-9860/Prizm)
Kristaba Hors ligne Membre Points: 614 Défis: 22 Message

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



Précédente 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 Suivante
Dark storm Hors ligne Labélisateur Points: 11634 Défis: 176 Message

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
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Dark storm Hors ligne Labélisateur Points: 11634 Défis: 176 Message

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 ?

Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Lephenixnoir En ligne Administrateur Points: 24235 Défis: 170 Message

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.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Btl Hors ligne Ancien modérateur Points: 3879 Défis: 107 Message

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...
Un excellent tuto video qui vous explique comment transférer des fichiers de l'ordinateur vers la calculatrice et vice versa ma chaine youtube
mes jeux
mes jeux

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
Thomatos Hors ligne Ancien administrateur Points: 3495 Défis: 39 Message

Citer : Posté le 19/08/2014 16:25 | #


ABC+ !
Eiyeron Hors ligne Ancien modérateur Points: 5525 Défis: 57 Message

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...
Dark storm Hors ligne Labélisateur Points: 11634 Défis: 176 Message

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
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Cartix Hors ligne Membre Points: 2748 Défis: 98 Message

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* ?
Dark storm Hors ligne Labélisateur Points: 11634 Défis: 176 Message

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 :
ASalutS,A il est S12Ah et je m'appelle AToto S!

Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Cartix Hors ligne Membre Points: 2748 Défis: 98 Message

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 ?
Lephenixnoir En ligne Administrateur Points: 24235 Défis: 170 Message

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 ?
AASAAalutS,AA il est S12Ah et je m'appelle AATAAoto S!

Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Dark storm Hors ligne Labélisateur Points: 11634 Défis: 176 Message

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
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Lephenixnoir En ligne Administrateur Points: 24235 Défis: 170 Message

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 ?
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Dark storm Hors ligne Labélisateur Points: 11634 Défis: 176 Message

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)
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Lephenixnoir En ligne Administrateur Points: 24235 Défis: 170 Message

Citer : Posté le 25/08/2014 22:03 | #


Ben oui mais si j'appuie sur SHIFT pour mettre une parenthèse... ?
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Dark storm Hors ligne Labélisateur Points: 11634 Défis: 176 Message

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.
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Lephenixnoir En ligne Administrateur Points: 24235 Défis: 170 Message

Citer : Posté le 25/08/2014 22:08 | #


Dark storm a écrit :
[...] pour taper "Salut, il est 12h et je m'appelle Toto !", il faudra appuyer sur shift et alpha de la manière suivante :
ASalutS,A il est S12Ah et je m'appelle AToto S!

Dans ce cas, il faut utiliser deux fois alpha pour mettre la majuscule à Toto non ?
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Dark storm Hors ligne Labélisateur Points: 11634 Défis: 176 Message

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
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Lephenixnoir En ligne Administrateur Points: 24235 Défis: 170 Message

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 !
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Dark storm Hors ligne Labélisateur Points: 11634 Défis: 176 Message

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
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Julese50 Hors ligne Gourou Points: 315 Défis: 16 Message

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.
Précédente 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 Suivante

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 143 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd