Forums Casio - Projets de programmation

Index du Forum > Projets de programmation > MicroPython sur Graph 35/75+E
Zezombye
Hors ligne
Rédacteur
Points: 1531
Défis: 12
Message
Posté le 09/05/2018 17:27

MicroPython sur Graph 35/75+E :

Page du programme : https://www.planet-casio.com/Fr/programmes/voir_un_programme_casio.php?showid=3603

Todo list :

- Corriger le bug de sauvegarde lors de la sauvegarde d'un fichier vide
- Faire les menus en image
- Module graphique
- Plus de mémoire pour les SH4

Ancien message
Cliquer pour enrouler
Parce que le python est très conseillé pour l'année prochaine, il serait bien de faire un port de MicroPython pour les graph monochromes.

Niveau faisabilité, c'est faisable :
- MicroPython demande 256k d'espace (la limite est de 512k donc on a de la chance) et 16 ko de ram (même pas besoin de taper dans les 256 ko des SH4)
- L'éditeur de texte serait tout simplement une version modifiée d'Edit, avec l'interface adaptée au Python (catalogue intégré, fonctions disponibles avec les F-keys, comme l'appli pour graph 90).

Du coup j'aimerais bien faire le port moi même, mais j'aurai sûrement besoin de votre aide :
- MicroPython ne compile que sous linux (ou en tout cas sûrement pas avec le SDK casio), du coup pour moi ça va être chiant voire impossible de le compiler
- J'ai regardé le port minimal (https://github.com/micropython/micropython/tree/master/ports/minimal) et je comprends que dalle à ce qu'il faudrait modifier sûrement les trucs GPIO, mais quoi d'autre ?

Si vous êtes partant pour ce projet, votre aide est la bienvenue




Hackcell
Hors ligne
Membre
Points: 892
Défis: 6
Message
Dernier message de la page précédente :Posté le 15/06/2018 11:25 |
J'ai commencé à, regarder un peu plus en détails les sources du Micropython, et notamment le makefile dans /ports/minimals j'ai fait la liste des fichiers utilisé, ainsi que les outils nécessaire, cependant, j'ai un problème avec le fonctionnement des règles implicite de Make, en effet, les instruction commence par les fichiers objets, donc ces fichiers sont compiler par Make de manière implicite, mais dans ce cas, comment spécifier le compilateur à utiliser ? Et cela me parait étrange, aurais-je raté quelque chose ?
----------------------------------
I usually spend meow time cosplaying as a diligent student...
So it can get pretty stressful.
That's exactly why PC is such a happy place for meow to be ⭐



Pages: Précédente | 1, 2, 3, 4, 5, 6, 7, 8 | Suivante

Lephenixnoir
Hors ligne
Administrateur
Points: 13150
Défis: 136
Message
Citer : Posté le 15/06/2018 11:29 | #
Les règles implicites ne sont utilisées que si aucune règle du Makefile ne permet effectivement de compiler les fichiers. Là il y a forcément des règles, donc les implicites n'entrent pas en jeu.
----------------------------------
Rise.
Hackcell
Hors ligne
Membre
Points: 892
Défis: 6
Message
Citer : Posté le 15/06/2018 13:37 | #
Okay, je vais re-regarder plus en profondeur, j'ai peut-être raté quelque chose (un include qui m'aurais échappée, ou autre...)

Ajouté le 15/06/2018 à 23:24 :
J'avais belle et bien raté un include bon, je pense pouvoir rédiger un rapport sur le processus de compilation de microPython d'ici une semaine (le temps d'aller au bout du truc) ce serait utile que je le poste ou je le garde pour moi??

Par contre, je manque clairement de connaissances sur comment sont gérées les 'libs standard' sur Casio, du côté de fxlib et de gint, y aurait t'il un endroit qui en parle ? Car sans savoir cela, je ne peux pas mesurer correctement la quantité de travail nécessaire pour le portage..
----------------------------------
I usually spend meow time cosplaying as a diligent student...
So it can get pretty stressful.
That's exactly why PC is such a happy place for meow to be ⭐
Lephenixnoir
Hors ligne
Administrateur
Points: 13150
Défis: 136
Message
Citer : Posté le 16/06/2018 14:01 | #
La lib standard est dans fxlib, mais elle est incomplète.

- Poste ce que tu as compris du processus de compilation sur ce topic.

- Vois standard_libraries.pdf dans l'archive du SDK pour le subset supporté de la lib standard (pas beaucoup).

- Poste aussi les fonctions dont tu as besoin mais qui ne sont pas implémentées (open(), etc).
----------------------------------
Rise.
Hackcell
Hors ligne
Membre
Points: 892
Défis: 6
Message
Citer : Posté le 30/06/2018 00:00 | # | Fichier joint
Voilà ce que je pense avoir compris du processus de compilation.

Pour les fonctions nécessaire mais non implémenté, j'ai fais un script à la va vite, mais je n'ai pas encore regardé si elle sont réellement nécessaire.
----------------------------------
I usually spend meow time cosplaying as a diligent student...
So it can get pretty stressful.
That's exactly why PC is such a happy place for meow to be ⭐
Lephenixnoir
Hors ligne
Administrateur
Points: 13150
Défis: 136
Message
Citer : Posté le 30/06/2018 18:20 | #
Joli travail ! @Zezombye, est-ce que ça t'aide à comprendre la marche à suivre ?
----------------------------------
Rise.
Zezombye
Hors ligne
Rédacteur
Points: 1531
Défis: 12
Message
Citer : Posté le 30/06/2018 20:47 | #
J'ai pas encore regardé

Ajouté le 23/07/2018 à 08:26 :
Bon j'ai réussi à compiler, voici ma péripétie d'une heure :
- Je lis le truc d'hackcell en diagonale. J'installe cygwin, avec gcc, make, python, etc. J'exécute la commande "make cross=1" : plein d'erreurs.
- Je remplace l'arm-eabi-truc par le gcc normal, je vire les switchs spécifiques à ce truc arm, je corrige un bug de détection de version dans un script python, je vire le -werror parce que y'a 4324 warnings de cast, cette fois ci ça me fait une erreur, il ne trouve pas arm-eabi-truc-ld.
- Je me rends compte qu'il y a 2 sets de commande, et que je dois pas foutre cross=1 parce que je veux pas compiler pour leur pyboard.
- Je réessaye avec juste "make". Cette fois ci ça me fait une erreur d'escamotage. Je regarde la définition d'"escamotage" sur google, puis je cherche l'erreur sur internet, apparemment ce serait un problème de librairie 32-bits.
- Je vire le switch -m32, ça marche.
Pour l'instant j'ai fait ça avec le gcc pour PC, mais je suis en train de compiler le gcc pour casio.

Du coup j'ai un firmware.elf : je fais comment pour le linker avec mon code généré par le SDK ?
----------------------------------
Divers jeux : Puissance 4 - Chariot Wars - Sokoban
Ecrivez vos programmes basic sur PC avec BIDE
Lephenixnoir
Hors ligne
Administrateur
Points: 13150
Défis: 136
Message
Citer : Posté le 23/07/2018 18:46 | #
Tu balances à GCC avec d'autres fichiers objets. Oui, évite le SDK, c'est juste une cause d'erreurs en plus ; compile ton propre code avec GCC. Tu n'es plus à ça près il me semble.

Ensuite tu passes à objcopy une fois que tu as fini. Regarde les options utilisées par la règle de $(BUILD)/firmware.bin pour ne pas te planter.
----------------------------------
Rise.
Zezombye
Hors ligne
Rédacteur
Points: 1531
Défis: 12
Message
Citer : Posté le 27/07/2018 18:30 | #
Pour la compilation avec le sh3eb-elf-gcc, j'ai des problèmes au niveau du linkage :
Zezombye@Zez-PC2 ~/micropython/micropython-master/ports/minimal
$ make
Use make V=1 or set BUILD_VERBOSE in your environment to increase build verbosity.
LINK build/firmware.elf
/home/Zezombye/opt/sh3eb-elf/lib/gcc/sh3eb-elf/7.3.0/../../../../sh3eb-elf/bin/ld: cannot find -lc
collect2: error: ld returned 1 exit status
make: *** [Makefile:66: build/firmware.elf] Error 1


Une idée ?
----------------------------------
Divers jeux : Puissance 4 - Chariot Wars - Sokoban
Ecrivez vos programmes basic sur PC avec BIDE
Lephenixnoir
Hors ligne
Administrateur
Points: 13150
Défis: 136
Message
Citer : Posté le 28/07/2018 17:57 | #
Oui, il te faut une lib standard petit malin. Compile avec -nostdlib mais tu auras plein de fonctions manquantes au moment de linker.
----------------------------------
Rise.
Zezombye
Hors ligne
Rédacteur
Points: 1531
Défis: 12
Message
Citer : Posté le 29/07/2018 00:16 | #
Je compile déjà avec nostdlib, les arguments c'est :
CROSS_COMPILE = sh3eb-elf-
LD = sh3eb-elf-gcc
CFLAGS = $(INC) -Wall -std=c99 -m3 -mb -ffreestanding -nostdlib -lgcc $(COPT)
LDFLAGS = -Wl,-Map=$@.map,--cref -Wl,--gc-sections

Virer le std=c99 n'a aucun effet.
----------------------------------
Divers jeux : Puissance 4 - Chariot Wars - Sokoban
Ecrivez vos programmes basic sur PC avec BIDE
Lephenixnoir
Hors ligne
Administrateur
Points: 13150
Défis: 136
Message
Citer : Posté le 29/07/2018 21:03 | #
Cherche si l'option a bien été passée lors du linkage ; sinon ils ont peut-être ajouté -lc ailleurs pour obliger à linker avec la libc. Tu peux remplacer -lc par -lta_lib -lfx ou libta_lib.a est une archive où tu as compilé les fonctions standard que tu as du implémenter.
----------------------------------
Rise.
Zezombye
Hors ligne
Rédacteur
Points: 1531
Défis: 12
Message
Citer : Posté le 29/07/2018 21:15 | #
Cherche si l'option a bien été passée lors du linkage

J'ai mis -nostdlib dans les LDFLAGS et maintenant ça compile, mais je pense que le fichier elf est un peu vide :
Zezombye@Zez-PC2 ~/micropython/micropython-master/ports/minimal
$ make
Use make V=1 or set BUILD_VERBOSE in your environment to increase build verbosity.
LINK build/firmware.elf
/home/Zezombye/opt/sh3eb-elf/lib/gcc/sh3eb-elf/7.3.0/../../../../sh3eb-elf/bin/ld: warning: cannot find entry symbol start; not setting start address
   text    data     bss     dec     hex filename
      0       4       0       4       4 build/firmware.elf
----------------------------------
Divers jeux : Puissance 4 - Chariot Wars - Sokoban
Ecrivez vos programmes basic sur PC avec BIDE
Lephenixnoir
Hors ligne
Administrateur
Points: 13150
Défis: 136
Message
Citer : Posté le 29/07/2018 21:17 | #
Utilise V=1 ou BUILD_VERBOSE pour faire apparaître le détail des commandes, et cherche où les données se sont perdues :
- Les fichiers objets ont-ils été passés au linker ?
- Les fichiers objets sont-ils vides ?
- Quels sont les options de compilation ?
- Quel linker script as-tu utilisé ?
----------------------------------
Rise.
Zezombye
Hors ligne
Rédacteur
Points: 1531
Défis: 12
Message
Citer : Posté le 29/07/2018 21:26 | #
Les fichiers objets sont pas vides, voici l'output :

[...]
sh3eb-elf-gcc -I. -I../.. -Ibuild -Wall -std=c99 -m3 -mb -ffreestanding -nostdlib -lgcc  -Os -DNDEBUG -fdata-sections -ffunction-sections -c -MD -o build/lib/utils/stdout_helpers.o ../../lib/utils/stdout_helpers.c
CC ../../lib/utils/pyexec.c
sh3eb-elf-gcc -I. -I../.. -Ibuild -Wall -std=c99 -m3 -mb -ffreestanding -nostdlib -lgcc  -Os -DNDEBUG -fdata-sections -ffunction-sections -c -MD -o build/lib/utils/pyexec.o ../../lib/utils/pyexec.c
CC ../../lib/libc/string0.c
sh3eb-elf-gcc -I. -I../.. -Ibuild -Wall -std=c99 -m3 -mb -ffreestanding -nostdlib -lgcc  -Os -DNDEBUG -fdata-sections -ffunction-sections -c -MD -o build/lib/libc/string0.o ../../lib/libc/string0.c
CC ../../lib/mp-readline/readline.c
sh3eb-elf-gcc -I. -I../.. -Ibuild -Wall -std=c99 -m3 -mb -ffreestanding -nostdlib -lgcc  -Os -DNDEBUG -fdata-sections -ffunction-sections -c -MD -o build/lib/mp-readline/readline.o ../../lib/mp-readline/readline.c
MISC freezing bytecode
../../tools/mpy-tool.py -f -q build/genhdr/qstrdefs.preprocessed.h -mlongint-impl=none frozentest.mpy > build/_frozen_mpy.c
CC build/_frozen_mpy.c
sh3eb-elf-gcc -I. -I../.. -Ibuild -Wall -std=c99 -m3 -mb -ffreestanding -nostdlib -lgcc  -Os -DNDEBUG -fdata-sections -ffunction-sections -c -MD -o build/build/_frozen_mpy.o build/_frozen_mpy.c
LINK build/firmware.elf
sh3eb-elf-gcc -Wl,-Map=build/firmware.elf.map,--cref -Wl,--gc-sections -nostdlib -o build/firmware.elf build/py/mpstate.o build/py/nlr.o build/py/nlrx86.o build/py/nlrx64.o build/py/nlrthumb.o build/py/nlrxtensa.o build/py/nlrsetjmp.o build/py/malloc.o build/py/gc.o build/py/pystack.o build/py/qstr.o build/py/vstr.o build/py/mpprint.o build/py/unicode.o build/py/mpz.o build/py/reader.o build/py/lexer.o build/py/parse.o build/py/scope.o build/py/compile.o build/py/emitcommon.o build/py/emitbc.o build/py/asmbase.o build/py/asmx64.o build/py/emitnx64.o build/py/asmx86.o build/py/emitnx86.o build/py/asmthumb.o build/py/emitnthumb.o build/py/emitinlinethumb.o build/py/asmarm.o build/py/emitnarm.o build/py/asmxtensa.o build/py/emitnxtensa.o build/py/emitinlinextensa.o build/py/formatfloat.o build/py/parsenumbase.o build/py/parsenum.o build/py/emitglue.o build/py/persistentcode.o build/py/runtime.o build/py/runtime_utils.o build/py/scheduler.o build/py/nativeglue.o build/py/stackctrl.o build/py/argcheck.o build/py/warning.o build/py/map.o build/py/obj.o build/py/objarray.o build/py/objattrtuple.o build/py/objbool.o build/py/objboundmeth.o build/py/objcell.o build/py/objclosure.o build/py/objcomplex.o build/py/objdeque.o build/py/objdict.o build/py/objenumerate.o build/py/objexcept.o build/py/objfilter.o build/py/objfloat.o build/py/objfun.o build/py/objgenerator.o build/py/objgetitemiter.o build/py/objint.o build/py/objint_longlong.o build/py/objint_mpz.o build/py/objlist.o build/py/objmap.o build/py/objmodule.o build/py/objobject.o build/py/objpolyiter.o build/py/objproperty.o build/py/objnone.o build/py/objnamedtuple.o build/py/objrange.o build/py/objreversed.o build/py/objset.o build/py/objsingleton.o build/py/objslice.o build/py/objstr.o build/py/objstrunicode.o build/py/objstringio.o build/py/objtuple.o build/py/objtype.o build/py/objzip.o build/py/opmethods.o build/py/sequence.o build/py/stream.o build/py/binary.o build/py/builtinimport.o build/py/builtinevex.o build/py/builtinhelp.o build/py/modarray.o build/py/modbuiltins.o build/py/modcollections.o build/py/modgc.o build/py/modio.o build/py/modmath.o build/py/modcmath.o build/py/modmicropython.o build/py/modstruct.o build/py/modsys.o build/py/moduerrno.o build/py/modthread.o build/py/vm.o build/py/bc.o build/py/showbc.o build/py/repl.o build/py/smallint.o build/py/frozenmod.o build/main.o build/uart_core.o build/lib/utils/printf.o build/lib/utils/stdout_helpers.o build/lib/utils/pyexec.o build/lib/libc/string0.o build/lib/mp-readline/readline.o build/build/_frozen_mpy.o
/home/Zezombye/opt/sh3eb-elf/lib/gcc/sh3eb-elf/7.3.0/../../../../sh3eb-elf/bin/ld: warning: cannot find entry symbol start; not setting start address
sh3eb-elf-size build/firmware.elf
   text    data     bss     dec     hex filename
      0       4       0       4       4 build/firmware.elf


Les trucs de compilation, c'est ça :
CFLAGS = $(INC) -Wall -std=c99 -m3 -mb -ffreestanding -nostdlib -lgcc $(COPT)
LDFLAGS = -Wl,-Map=$@.map,--cref -Wl,--gc-sections -nostdlib


C'est quoi le symbole "start", pourquoi il le trouve pas ?
----------------------------------
Divers jeux : Puissance 4 - Chariot Wars - Sokoban
Ecrivez vos programmes basic sur PC avec BIDE
Lephenixnoir
Hors ligne
Administrateur
Points: 13150
Défis: 136
Message
Citer : Posté le 29/07/2018 21:32 | #
Ah oui, alors. start c'est là où le programme commence. C'est une fonction qui fait divers travaux d'initialisation et appelle main et est fournie en général par la lib standard, ou par exemple par gint.

Donc il ne sait pas où le programme commence, ce pauvre linker. Et c'est normal puisque tu n'as pas de lib standard !

Ce qui ne résout pas non plus le fait que le programme est vide...
----------------------------------
Rise.
Zezombye
Hors ligne
Rédacteur
Points: 1531
Défis: 12
Message
Citer : Posté le 29/07/2018 22:39 | #
J'ai remplacé toutes les occurences de initalize par start dans addin.ld et crt0.s, maintenant j'ai ces erreurs :
/home/Zezombye/opt/sh3eb-elf/lib/gcc/sh3eb-elf/7.3.0/../../../../sh3eb-elf/bin/ld: warning: section `.bss' type changed to PROGBITS
build/py/nlrsetjmp.o: In function `_nlr_jump':
nlrsetjmp.c:(.text.nlr_jump+0x28): undefined reference to `_longjmp'
build/py/mpprint.o: In function `_mp_print_int':
mpprint.c:(.text.mp_print_int+0x10c): undefined reference to `___udivsi3'
build/py/lexer.o: In function `_mp_lexer_new':
lexer.c:(.text.mp_lexer_new+0x88): undefined reference to `___movmemSI12'
build/py/runtime.o: In function `_mp_load_method_protected':
runtime.c:(.text.mp_load_method_protected+0x58): undefined reference to `_setjmp'
build/py/runtime.o: In function `_mp_parse_compile_execute':
runtime.c:(.text.mp_parse_compile_execute+0x88): undefined reference to `_setjmp'
build/py/runtime.o: In function `_mp_resume':
runtime.c:(.text.mp_resume+0x13c): undefined reference to `_setjmp'
build/py/runtime.o: In function `_mp_iternext':
runtime.c:(.text.mp_iternext+0x84): undefined reference to `_setjmp'
build/py/map.o: In function `_mp_map_lookup':
map.c:(.text.mp_map_lookup+0x204): undefined reference to `___udivsi3'
build/py/objgetitemiter.o: In function `_it_iternext':
objgetitemiter.c:(.text.it_iternext+0x64): undefined reference to `_setjmp'
build/py/objint.o: In function `_mp_int_format_size':
objint.c:(.text.mp_int_format_size+0x44): undefined reference to `___udivsi3'
build/py/objint.o: In function `_mp_obj_int_formatted':
objint.c:(.text.mp_obj_int_formatted+0x140): undefined reference to `___udivsi3'
build/py/objrange.o: In function `_range_len':
objrange.c:(.text.range_len+0x28): undefined reference to `___sdivsi3'
build/py/objstr.o: In function `_mp_obj_str_format_helper':
objstr.c:(.text.mp_obj_str_format_helper+0x2bc): undefined reference to `___movmemSI16'
build/py/builtinimport.o: In function `_do_execute_raw_code':
builtinimport.c:(.text.do_execute_raw_code+0x70): undefined reference to `_setjmp'
build/py/vm.o: In function `_mp_execute_bytecode':
vm.c:(.text.mp_execute_bytecode+0x1f4): undefined reference to `_setjmp'
build/py/smallint.o: In function `_mp_small_int_mul_overflow':
smallint.c:(.text.mp_small_int_mul_overflow+0x4c): undefined reference to `___sdivsi3'
build/py/smallint.o: In function `_mp_small_int_modulo':
smallint.c:(.text.mp_small_int_modulo+0x28): undefined reference to `___sdivsi3'
build/py/smallint.o: In function `_mp_small_int_floor_divide':
smallint.c:(.text.mp_small_int_floor_divide+0x24): undefined reference to `___sdivsi3'
build/lib/utils/pyexec.o: In function `_parse_compile_execute':
pyexec.c:(.text.parse_compile_execute+0x144): undefined reference to `_setjmp'
collect2: error: ld returned 1 exit status
make: *** [Makefile:66: build/firmware.elf] Error 1


C'est quoi toutes ces fonctions cheloues ?
----------------------------------
Divers jeux : Puissance 4 - Chariot Wars - Sokoban
Ecrivez vos programmes basic sur PC avec BIDE
Lephenixnoir
Hors ligne
Administrateur
Points: 13150
Défis: 136
Message
Citer : Posté le 29/07/2018 22:42 | #
Des procédures de copie de mémoire ou de calcul de divisions de la libgcc. Tu dois mettre -lgcc à la fin de la ligne de commande, je suis sûr que je te l'ai déjà dit. À la fin de la fin.

Il reste quelques fonctions qui ne sont pas dans libgcc et que tu devras implémenter toi-même. Pour setjmp() et longjmp(), tu peux piquer dans gint.
----------------------------------
Rise.
Zezombye
Hors ligne
Rédacteur
Points: 1531
Défis: 12
Message
Citer : Posté le 29/07/2018 22:46 | #
Dans ton tuto le -lgcc est pas à la fin, d'ailleurs l'ordre des arguments n'importe pas si ?

Bref, même en le mettant à la fin (du ld et du gcc) j'ai toujours les mêmes erreurs :
CFLAGS = $(INC) -Wall -std=c99 -m3 -mb -ffreestanding $(COPT) -lgcc
LDFLAGS = -Wl,-Map=$@.map,--cref -Wl,--gc-sections -nostdlib -T addin.ld crt0.s -L . -lfx -lgcc
----------------------------------
Divers jeux : Puissance 4 - Chariot Wars - Sokoban
Ecrivez vos programmes basic sur PC avec BIDE
Lephenixnoir
Hors ligne
Administrateur
Points: 13150
Défis: 136
Message
Citer : Posté le 29/07/2018 22:49 | #
Zezombye a écrit :
Dans ton tuto le -lgcc est pas à la fin, d'ailleurs l'ordre des arguments n'importe pas si ?

Parce qu'en l'occurrence je sais de quoi je parle et que libgcc et libfx « commutent » ?

Bien sûr qu'il importe, les symboles non résolus dans un fichier ne seront cherchés que dans les fichiers suivants. Il faut que tu révises tout ça...

Bref, même en le mettant à la fin (du ld et du gcc) j'ai toujours les mêmes erreurs[/quote]
Regarde les commandes générées par un Makefile verbose, pas les flags. (Et pas les commandes que tu penses avoir.)
----------------------------------
Rise.
Zezombye
Hors ligne
Rédacteur
Points: 1531
Défis: 12
Message
Citer : Posté le 29/07/2018 22:59 | #
En effet, le makefile ajoutait des trucs -o à la fin, j'ai ajouté le -lgcc à la fin de la commande de build :
$(BUILD)/firmware.elf: $(OBJ)
    $(ECHO) "LINK $@"
    $(Q)$(LD) $(LDFLAGS) -o $@ $^ $(LIBS) -lgcc
    $(Q)$(SIZE) $@


J'ai ajouté le setjmp.s de gint, et maintenant ça compile merci lephé !
----------------------------------
Divers jeux : Puissance 4 - Chariot Wars - Sokoban
Ecrivez vos programmes basic sur PC avec BIDE

Pages: Précédente | 1, 2, 3, 4, 5, 6, 7, 8 | Suivante

Index du Forum > Projets de programmation > MicroPython sur Graph 35/75+E

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2018 | Il y a 20 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire indépendant, géré bénévolement et n'est donc pas affilié à Casio | Toute reproduction de Planète Casio, même partielle, est interdite
Les fichiers, programmes et autres publications présents sur Planète Casio restent la propriété de leurs auteurs respectifs et peuvent être soumis à des licences ou des copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd