Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » C.Basic Projets
Sentaro21Hors ligneMembrePoints: 350 Défis: 0 Message

C.Basic Projets

Posté le 30/04/2017 11:08

Hello, everyone.

I am Sentaro21, and I am developing C.Basic, a Basic interpreter that allows high-speed execution of Basic programs while maintaining compatibility with genuine Casio Basic.

Here is an English site, by Krtyski, about the C.Basic project (I helped him with the translation, but it's still unfinished) :
https://egadget2.web.fc2.com/CBasic/Interpreter/CBasic_interpreter.html

The articles and various programs from this site served as a reference to evaluate the compatibility level of C.Basic. Results were not good every time I tested them, but compatibility increased over time.

These programs have been ported experimentally. Many thanks to their authors.

Block Tower (C.Basic version)
https://pm.matrix.jp/CB/CB_BlockTower.zip

Sudoku (C.Basic version)
https://pm.matrix.jp/CB/CB_Sudoku.zip

Maze Generator (C.Basic version)
https://pm.matrix.jp/CB/CB_Mazegene.zip

Graph 3D (C.Basic version)
https://pm.matrix.jp/CB/CB_Graph3D.zip

Ice slider (C.Basic version 25/11/2018)
https://pm.matrix.jp/CB/CB_IceSlider.zip
(added Save/Load feature)

Clonelab (C.Basic version 25/11/2018)
https://pm.matrix.jp/CB/CB_Clonlab.zip
(added Save/Load feature)

Arkenstone (C.Basic version 25/11/2018)
https://pm.matrix.jp/CB/CB_Arkenstone.zip
(added Save/Load feature)

Aventura (C.Basic version 25/11/2018)
https://pm.matrix.jp/CB/CB_Aventura.zip
(added Save/Load feature)

Electricity (C.Basic version 10/2/2019)
https://pm.matrix.jp/CB/CB_Electric.zip
(added Save/Load feature)

Here are examples of programs that reach near-C performance :

BallGame (C.Basic version)
https://pm.matrix.jp/CB/CB_BallGame.zip

Asprin (C.Basic version)
https://pm.matrix.jp/CB/CB_Aspirin.zip


The C.Basic project is still yet to be completed, thus I would like to get your feedback.

This is the latest beta version of C.Basic 1.95beta for Graph 35+USB/75/85/95 (SD)
https://pm.matrix.jp/CB/CBASIC195beta.zip (updated 17/2/2019)

This is the latest alpha version of C.Basic for Graph90+E/fx-CG10/20/50:
https://pm.matrix.jp/CB/CBASICCG070.zip (updated 17/2/2019)

C.Basic manuals
https://gitlab.com/sentaro21/cbasic

Currently C.Basic exists thanks to this site.
Thank you very much.


Pages : Précédente1 ... , 3, 4, 5, 6, 7, 8, 9Suivante
LephenixnoirHors ligneAdministrateurPoints: 14125 Défis: 136 Message

Citer : Posté le 05/02/2019 07:45 | #


From here to the end of the section is very unclear: https://gitlab.com/sentaro21/cbasic/blob/master/FX/Manual_EN.txt#L164

Other than this, I just suspect there may be a mistake here: https://gitlab.com/sentaro21/cbasic/blob/master/FX/Manual_EN.txt#L325
If you want to convert to word format, I think the correct equivalent is:
[[0x0102,0x0304][0x0506,0x0708]]->Mat A.W
Sentaro21Hors ligneMembrePoints: 350 Défis: 0 Message

Citer : Posté le 05/02/2019 08:17 | #


Lephenixnoir a écrit :
From here to the end of the section is very unclear: https://gitlab.com/sentaro21/cbasic/blob/master/FX/Manual_EN.txt#L164

I'm sorry for unclear.
The number of usable extended variables is 26, but it is 32 in the current version.
The CG version has been expanded to 99.
Because real(complex) and integer variables can hold different values, even the same variable names are independent of each other.
'#CBDBL        // double precision mode
123->_ABC    // double  variable
456->_ABC%    // integer variable
_ABC+_ABC%->B    // result of B(double) is 579

'#CBINT        // integer mode
123->_ABC#    // double  variable
456->_ABC    // integer variable
_ABC#+_ABC->B    // result of B(integer) is 579
It is a specification that can use two variable formats with the same name "_ABC".

Lephenixnoir a écrit :
Other than this, I just suspect there may be a mistake here: https://gitlab.com/sentaro21/cbasic/blob/master/FX/Manual_EN.txt#L325
If you want to convert to word format, I think the correct equivalent is:
[[0x0102,0x0304][0x0506,0x0708]]->Mat A.W

Oh, that is correct you.
I'm sorry, I made a mistake.

Je continue à développer C.Basic. (Il est compatible avec Basic Casio.)
Overclocking utilitaire Ftune/Ptune2/Ptune3 est également disponible.
Si vous avez des questions ou un rapport de bogue, n'hésitez pas à me le faire savoir.
DisperseurHors ligneMembrePoints: 1332 Défis: 0 Message

Citer : Posté le 05/02/2019 15:42 | #


@Sentaro21:
I use your program since a moment and it is really cool.
I would like to ask you how to use the RGB() command ? And if it's possible, to give us a little description of the commands that you have added to your programm and which are not in the Casio PRGM program like PutDispDD or _Contrast ?
Tanks to you
Planetarium

√(2+2-2+2-2+2+2-2-2-2) = 0
Sentaro21Hors ligneMembrePoints: 350 Défis: 0 Message

Citer : Posté le 06/02/2019 04:59 | # | Fichier joint


@Disperseur
Thanks for using C.Basic

RGB() command can directly set 16 bit color instead of color command of Basic Casio (Blue/Red/Green etc).
(format1)
RGB(R,G,B)
R:0~255
G:0~255
B:0~255
(format2)
RGB(#Color)
Color:0~65535

The following three samples are drawn in the same color.
Red Text 1,1,"String"  // Basic Casio Format

RGB(255,0,0) Text 1,1,"String"  // set each RGB value

RGB(#63488) Text 1,1,"String"   // set 16bit color directly

The color selection dialog opens with [SHIFT]+[6]


C.Basic's drawing method is basically the same specification as Basic Casio.
Even more, you can use the same method as when programming with C using SDK library or MonochromeLib.
C.Basic supports MonochromeLib or more.
https://wiki.planet-casio.com/fr/MonochromeLib

blibiothèque de fonctions en C.Basic(@Manolo)
C.Basic library(@Manolo)
will be helpful for RGB () and PutDispDD.

The basic usage of extended graphics commands looks like this.
Screen.G    // set Graphics screen
_ClrVram   //  instead of Cls
For 1-A To 1000
  RanInt#(50,300)->X
  RanInt#(50,150)->Y
  RanInt#(50,100)->R
  RanInt#(0,65535)->C
  RGB(#C)
  _FillCircle X,Y,R
  _DispVram        //  This is required for extended commands.
Next

[Fichier joint] ML_CIRCL.g3m
If "_DispVram" is omitted, it will not be displayed until the program is terminated.

"_Contrast" command is available for monochrome only.
In 90+E you can change the brightness of the backlight with "BackLight" command.

Je continue à développer C.Basic. (Il est compatible avec Basic Casio.)
Overclocking utilitaire Ftune/Ptune2/Ptune3 est également disponible.
Si vous avez des questions ou un rapport de bogue, n'hésitez pas à me le faire savoir.
DisperseurHors ligneMembrePoints: 1332 Défis: 0 Message

Citer : Posté le 06/02/2019 07:35 | #


Tank for your answer. I'll try those exemples later. It's really amazing To do that !

Ajouté le 06/02/2019 à 08:28 :
@Lephenixnoir : Je crois qu'il serait bien de mettre en avant l'add-in de sentaro21 de cette page (C basic). Il est incontournable sur Graph 90 !
Planetarium

√(2+2-2+2-2+2+2-2-2-2) = 0
LightmareHors ligneMembre de CreativeCalcPoints: 416 Défis: 0 Message

Citer : Posté le 06/02/2019 15:14 | #


@Disperseur : parfaitement d'accord !
While 1
WhileEnd

une boucle encore plus optimisée que celle de Kikoodx
DisperseurHors ligneMembrePoints: 1332 Défis: 0 Message

Citer : Posté le 06/02/2019 15:28 | #


Et deux voix déjà, qui veut signer la pétition ?
Planetarium

√(2+2-2+2-2+2+2-2-2-2) = 0
Sentaro21Hors ligneMembrePoints: 350 Défis: 0 Message

Citer : Posté le 09/02/2019 13:20 | #


Merci à tous!

This is an update that Pict will not disappear after execution.
for CG10/20/50/Graph90+E version.
https://pm.matrix.jp/CB/CBASICCG069.zip
-Changed specification that the Pict file is not initialized after program execution is completed.
-When using hidden RAM, the Pict function also supports full color even in g1m mode.
(In this case, the Pict file of g1m program (now only heap mode) will be full color.)

Je continue à développer C.Basic. (Il est compatible avec Basic Casio.)
Overclocking utilitaire Ftune/Ptune2/Ptune3 est également disponible.
Si vous avez des questions ou un rapport de bogue, n'hésitez pas à me le faire savoir.
LephenixnoirHors ligneAdministrateurPoints: 14125 Défis: 136 Message

Citer : Posté le 09/02/2019 17:41 | #


@Sentaro21 : I've made progress in the translation. I have currently translated more than half of FX/Manual_EN.txt and I think it won't be long before I reach the end. Can you help me on these few unclear sections?

(example) Getkey3(128,A)
  Pause until 128 Ticks count of current timer with initial timer as set by A (in Ticks count).

Here it is not clear which timers are running and how many of them. I also didn't understand the stopping condition.

* When validate Exec TimeDsp,
The time measurement stops during GetKey1/2, but can make reset & restart by setting.
I can set it by setup or the following control commands.
(format) '#GetKeyC
It is the stop of the timer of the default, a continuation mode.
(format) '#GetKeyR
Timer restarts reset & after GetKey1/2.

What is Exec TimeDsp here? I think the two modes are about whether you restart the timer at very call to Getkey, it this correct?

(example) PopUpWin(0)
  push screen.

(example) PopUpWin(9)
  return screen.

What is this function exactly? How does it related to the SDK's PopUpWin() function?

(example) IsExist("/ABC/TEST")
  if "/ABC/TEST.bin" exists, it becomes 0.

Are you sure this is not 1 instead of 0 when the file exists?
Sentaro21Hors ligneMembrePoints: 350 Défis: 0 Message

Citer : Posté le 10/02/2019 06:28 | # | Fichier joint


@Lephenixnoir
I greatly appreciate your translation work.
Lephenixnoir a écrit :
Here it is not clear which timers are running and how many of them. I also didn't understand the stopping condition.
Getkey3(128)
Getkey3(128,Ticks)
This two is the same.
While waiting 128 ticks(=1 second),
If there is a key input, it returns the key code.
Always wait one second even if there is a key input.
The key code entered last is valid.
If there is no key input for one second, 0 is returned.
The second parameter may not make much sense.

Lephenixnoir a écrit :
What is Exec TimeDsp here? I think the two modes are about whether you restart the timer at very call to Getkey, it this correct?
"Exec TimeDsp" is the function to measure the execution time of the program by setup setting.

You are right about '#GetKeyC and '#GetKeyR.

Lephenixnoir a écrit :
What is this function exactly? How does it related to the SDK's PopUpWin() function?
It is different from PopUpWin() of SDK.
It is only to save and restore the screen.
It is the same as SaveDisp and RestoreDisp of SDK.

Lephenixnoir a écrit :
Are you sure this is not 1 instead of 0 when the file exists?
I'm sorry. I made a mistake.
If there is the file, the file size is returned,
If there is none, 0 is returned.
Je continue à développer C.Basic. (Il est compatible avec Basic Casio.)
Overclocking utilitaire Ftune/Ptune2/Ptune3 est également disponible.
Si vous avez des questions ou un rapport de bogue, n'hésitez pas à me le faire savoir.
LightmareHors ligneMembre de CreativeCalcPoints: 416 Défis: 0 Message

Citer : Posté le 10/02/2019 08:42 | #


Hi Sentaro21 ! i downloaded the latest version of C.Basic, and i saw a small problem :
When a program ask the user to enter a Str ( for a pseudo for example ), the user must do [ALPHA LOCK] two times to really lock letters on the keyboard...
While 1
WhileEnd

une boucle encore plus optimisée que celle de Kikoodx
Sentaro21Hors ligneMembrePoints: 350 Défis: 0 Message

Citer : Posté le 10/02/2019 09:05 | #


Lightmare a écrit :
Hi Sentaro21 ! i downloaded the latest version of C.Basic, and i saw a small problem :
When a program ask the user to enter a Str ( for a pseudo for example ), the user must do [ALPHA LOCK] two times to really lock letters on the keyboard...

Thanks for download new version.

?->Str 1
Is the problem this input format?

Je continue à développer C.Basic. (Il est compatible avec Basic Casio.)
Overclocking utilitaire Ftune/Ptune2/Ptune3 est également disponible.
Si vous avez des questions ou un rapport de bogue, n'hésitez pas à me le faire savoir.
LephenixnoirHors ligneAdministrateurPoints: 14125 Défis: 136 Message

Citer : Posté le 14/02/2019 20:18 | #


I've finished translating FX/Manual_EN.txt !

I've only got a few things to mention. First a typo I found in StrSplit() :

  The result of MatAns becomes ["123","4567","89"] and can access it as follows if it retrieves individual factors.
$Mat Ans[1]="123"
$Mat Ans[1]="4567"
$Mat Ans[1]="89"

This should be $Mat Ans[1], $Mat Ans[2] and $Mat Ans[3].

Also, I think there is a gap between StrAsc() and what follows, which is about Ticks. It feels like a section of the document is missing.

I did not understand how the new 2x2-dot colors for MonochromeLib worked:

Added new color (2x2 dot matrix) in MonochromeLib command.
color value: 10    11    12    13     14 (2x2 dot matrix by 1dot width)
color value: 20    21    22    23     24 (2x2 dot matrix)
             oo    *o    *o    **     **
             oo    oo    o*    *o     **
(example) _FillCircle 64,32,30,21

Could you detail please? Especially "2x2 dot matrix by 1dot width". This doesn't make much sense because if the dot has size 2x2 then the width is 2... not 1. I'm confused.

After the description of the # options to use ViewWindow coordinates, I think there is a typo in the example:

(example) ViewWindow -6.3,6.3,0,-3.1,3.1,0
Screen.G
_Circle #0.5,1.2,1.2.1

The last command would be _Circle #0.5,1.2,1.2,1. Note the comma before the last argument, not a dot.

Another typo here:

_FElipsInRct x1, y1, x2, y2, color
Similar to _FElipsInRct, but draws a filled ellipse.

Maybe you mean "similar to _ElipsInRct", otherwise this is a circular reference!

Lastly, in RefrshCtl:

RefrshCtl DD: off / Grp / All
  Set how to refresh screen at running of display and draw command.
  Off: No extra refresh control is carried out, which is compatible with genuine Casio Basic.
  Grp: Only graphics draw commands make screen refreshed, excepting ClrText, Locate, Text, LocateYX, " " (this exception is compatible with former version of C.basic).
  All: All the display and draw commands male screen refreshed. PutDispDD should be used as may be necessary.
  Time: Set refresh control tme in interval of 1/128 sec. Defalt value is 3 then refresh control is every 1/42 sec.
        It is not refreshed when  0 is set.
  - Related command: RefrshCtrl, RefrshTime

I'm not sure, but I think there is a confusion. Some things seem contradictory:

  Off: No extra refresh control is carried out, which is compatible with genuine Casio Basic.

As you know in Casio Basic the screen is refreshed after every drawing function, this feels off.

  All: All the display and draw commands male screen refreshed. PutDispDD should be used as may be necessary.

If all display commands produce a refresh, why would there be a need to use PutDispDD?

Anyway, this has taken a long time (and 2300 lines!) but it should be alright now.
Sentaro21Hors ligneMembrePoints: 350 Défis: 0 Message

Citer : Posté le 15/02/2019 09:19 | #


@Lightmare
Here the [ALPHA LOCK] problem of Str's input is not reproduced.
Could you please show me the program where the problem occurred?


@Lephenixnoir
Lephenixnoir a écrit :
I've finished translating FX/Manual_EN.txt !

Wow!Great!!
Thanks very much for a lot of translation.
and I'm sorry for the inconvenience at typo.

Lephenixnoir a écrit :
I've only got a few things to mention. First a typo I found in StrSplit() :

Sorry,
There was a part which existed in the Japanese manual is not in the English manual.
I translated it for additional.
-------------------------------------------------------------------------------
StrAsc(        [Shift]+[VARS](PRGM)-[F6]-[F6]-[F3](ExStr)-[F6]-[F6]-[F2](StrAsc)
-------------------------------------------------------------------------------
Converts a character (in a string) into the corresponding ASCII code number.
(example) StrAsc("Ascii")
return value is 65(0x41).

-------------------------------------------------------------------------------------- -----------------------------
StoCapt [OPTN] - [F6] - [F6] - [F5] (CAPTURE) - [F1] (Store)
RclCapt [OPTN] - [F6] - [F6] - [F5] (CAPTURE) - [F2] (Recall)
-------------------------------------------------------------------------------------- -----------------------------
Read/write the Capt file on the storage memory. Up to 99 files can be used.
(Example) StoCapt 20
(Example) RclCapt 20

In relation to this, the file size of Pict file has been reduced by 1KB from 2KB.


===============================================================================
Other Extended Command Reference
===============================================================================
Carry it out as the command not comment after "'/".
Can describe the command to execute only  C.Basic running.

(example) '/Ticks->S
(example) '/Ticks-S->T
Measure time.



Lephenixnoir a écrit :
This should be $Mat Ans[1], $Mat Ans[2] and $Mat Ans[3].

Yes!
You are right.
Thanks!

Lephenixnoir a écrit :
I did not understand how the new 2x2-dot colors for MonochromeLib worked:

Added new color (2x2 dot matrix) in MonochromeLib command.
color value: 10    11    12    13     14 (2x2 dot matrix by 1dot width)
color value: 20    21    22    23     24 (2x2 dot matrix)
             oo    *o    *o    **     **
             oo    oo    o*    *o     **
(example) _FillCircle 64,32,30,21

Could you detail please? Especially "2x2 dot matrix by 1dot width". This doesn't make much sense because if the dot has size 2x2 then the width is 2... not 1. I'm confused.

The difference between (2x2 dot matrix by 1dot width) and (2x2 dot matrix) is as follows.




(2x2 dot matrix) always draws 2dot width.
(2x2 dot matrix by 1dot width) draws only 1dot width out of them.


Lephenixnoir a écrit :
The last command would be _Circle #0.5,1.2,1.2,1. Note the comma before the last argument, not a dot.

Yes!
Thanks!

Lephenixnoir a écrit :
Maybe you mean "similar to _ElipsInRct", otherwise this is a circular reference!

Sorry,
It looped infinitely in the manual.
Thanks!


Lephenixnoir a écrit :
  Off: No extra refresh control is carried out, which is compatible with genuine Casio Basic.

As you know in Casio Basic the screen is refreshed after every drawing function, this feels off.

(example1)
Locate 1,1,"Sample1"
Locate 1,2,"Sample3"
Locate 1,3,"Sample4"
Lbl 0
Goto 0

In the case of [Off]/[Grph] setting, this program will be displayed in the same way as Casio Basic.
In the case of [All] setting, this program will not display anything.

(example2)
Cls
For A->1 To 63
For B->1 To 127
  PxlOn A,B
Next
Next
Lbl 0
Goto 0

In the case of [Off] setting, this program will be displayed in the same way as Casio Basic.
In the case of [Grph]/[All] setting, the dot at the last part is not displayed.

Lephenixnoir a écrit :
  All: All the display and draw commands male screen refreshed. PutDispDD should be used as may be necessary.

If all display commands produce a refresh, why would there be a need to use PutDispDD?

By default, PutDispDD is executed if it is 3/128 ticks or more from the execution of the previous PutDispDD.
In the case of [All] setting,
all drawing commands (including Casio Basic commands) are under this refresh control.
Since it does not work reliably with a timer interrupt,
Therefore, PutDispDD is necessary to prevent it from not displaying like the example1/2.
This is similar to programming in C of SDK.

Lephenixnoir a écrit :
Anyway, this has taken a long time (and 2300 lines!) but it should be alright now.

Thanks very much again for many many translation work.

Je continue à développer C.Basic. (Il est compatible avec Basic Casio.)
Overclocking utilitaire Ftune/Ptune2/Ptune3 est également disponible.
Si vous avez des questions ou un rapport de bogue, n'hésitez pas à me le faire savoir.
LephenixnoirHors ligneAdministrateurPoints: 14125 Défis: 136 Message

Citer : Posté le 15/02/2019 13:25 | # | Fichier joint


Ooh, I understand. "Control" in "Refresh control" means "restriction" or "limit"! I interpreted it in an incorrect way.

So here it is, I've finished. I don't have an account on Gitlab, however, so the documentation is attached to this post.

Hope it helps!
Sentaro21Hors ligneMembrePoints: 350 Défis: 0 Message

Citer : Posté le 15/02/2019 14:02 | #


I'm convinced that the French version manual is very useful.
I think that the French version manual is easier to understand than my English manual.
Thanks so much !!

Ajouté le 17/02/2019 à 09:47 :
Here is new updated version.
It included French manual translated by @Lephenixnoir.

https://pm.matrix.jp/CB/CBASIC195beta.zip
-Added French manual.(Thanks so much Planet-Casio@Lephenixnoir for translation to French.)
-Fixed the "Fill" command bug that did not work properly when the second argument of the Fill command was only numbers.
(Example) Fill(123,1)
It was not to be the same result as Fill(123, List 1).

for CG10/20/50/Graph90+E version.
https://pm.matrix.jp/CB/CBASICCG070.zip
-Added French manual.(Thanks so much Planet-Casio@Lephenixnoir for translation to French.)
-Fixed the bug that garbage appears in the upper left of the screen when using hidden RAM.
-Changed specification that to be able to select intialize mode of the Pict file using heep by setup.
-The Pict file using heap is initialized with ClrMat command.
(format) ClrMat
Je continue à développer C.Basic. (Il est compatible avec Basic Casio.)
Overclocking utilitaire Ftune/Ptune2/Ptune3 est également disponible.
Si vous avez des questions ou un rapport de bogue, n'hésitez pas à me le faire savoir.
DisperseurHors ligneMembrePoints: 1332 Défis: 0 Message

Citer : Posté le 07/03/2019 16:31 | #


@Sentaro21 : I'd like to know if it's possible to create and modify files using the Cbasic commands?
Planetarium

√(2+2-2+2-2+2+2-2-2-2) = 0
LephenixnoirHors ligneAdministrateurPoints: 14125 Défis: 136 Message

Citer : Posté le 07/03/2019 16:38 | #


C'est possible ! Il y a tout dans le manuel.
DisperseurHors ligneMembrePoints: 1332 Défis: 0 Message

Citer : Posté le 07/03/2019 20:12 | #


Ok je regarde.. c'est vraiment une pépite cet add-in

Ajouté le 07/03/2019 à 20:25 :
Est-ce qu'il s'agit des commandes Peek() et Poke () ?
Planetarium

√(2+2-2+2-2+2+2-2-2-2) = 0
Sentaro21Hors ligneMembrePoints: 350 Défis: 0 Message

Citer : Posté le 08/03/2019 02:35 | #


@Disperseur
Disperseur a écrit :
@Sentaro21 : I'd like to know if it's possible to create and modify files using the Cbasic commands?
Yes. It is possible.
The entity of the data is the matrix.
Correspond by modifying and saving the matrix.

Disperseur a écrit :
Est-ce qu'il s'agit des commandes Peek() et Poke () ?
Yes.
It is possible to select the data type.(byte,word,long,double)
If nothing is selected, it becomes byte.


@Lephenixnoir
Thanks for your quick support.

Je continue à développer C.Basic. (Il est compatible avec Basic Casio.)
Overclocking utilitaire Ftune/Ptune2/Ptune3 est également disponible.
Si vous avez des questions ou un rapport de bogue, n'hésitez pas à me le faire savoir.
DisperseurHors ligneMembrePoints: 1332 Défis: 0 Message

Citer : Posté le 08/03/2019 06:58 | #


@Sentaro21 : Sorry but I dont understand how to select the data type. Using witch function ?
Planetarium

√(2+2-2+2-2+2+2-2-2-2) = 0
Pages : Précédente1 ... , 3, 4, 5, 6, 7, 8, 9Suivante

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2019 | Il y a 36 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