アドイン Casio Basic - トップページ
初版 2015/12/18
更新 2020/05/31
更新 2021/06/13
最終更新 2023/12/11
▶ C.Basic for FX 最新版: Ver 2.47 beta build 02 [2023/12/11]
▶ C.Basic for CG 最新版: Ver 1.47 beta build 02 [2023/12/11]
▋目 次
● C.Basicとは?
● 最新バージョンのダウンロード
● C.Basic のインストール
● C.Basic の使い方とコマンドリファレンスなど
● チューンアップツール・アドイン
● C.Basic と C:Basic の潜在能力 - サンプルプログラム
● C.Basic 英語版Webマニュアル [作成中]
● 最近のアップデート履歴
● サポートページ
▶ C.Basic for FX はこのページでサポートします
▶ C.Basic for CG は以下のページでサポートします
・C.Basic for CG ベータ版公開 - Part 1
・C.Basic for CG アルファ版公開 - Part 3 (旧版)
・C.Basic for CG アルファ版公開 - Part 2 (旧版)
・C.Basic for CG アルファ版公開 (旧版)
▋最近のアップデート履歴
▶ C.Basic for CG
[2023/12/11] C.Basic for CG Ver 1.47 beta build 02 にアップデート
⇒ 詳しくは C.Basic for CG サポートページへ
▶ C.Basic for FX
[2020/12/11] C.Basic for FX が Ver 2.47 beta build 02 にアップデート
▍C.Basic for FX Ver 2.47 の更新履歴
(build 02)
- C.Basicコマンド専用カタログ機能からヒストリーを起動して]EXIT]でカタログに戻らない不具合を修正しました。
- メインメモリ上のプログラムでLoad(コマンドを使った場合、フォルダ内のファイルにアクセスできない不具合を修正しました。
- ファイル表示の反転位置がずれていたのを修正しました。(FX版のみ)
(build 01)
- C.Basicコマンド専用カタログ機能を追加しました。(FX版は[SHIFT]+[5]で起動します)
- ファイルモードと変数表示のミニフォント表示に対応しました。(FX版、エディタのフォントサイズ変更と共通です)
- ?コマンドのミニフォント表示に対応しました。(FX版)
(書式)?([@][x][,y][,width][,"空白キャラクタ"][,入力桁数][,R])
(例)?(@30,40,5,">",5)A
現在のVRAMのピクセル座標(X=30,Y=40)の位置でAの値をミニフォントで表示して入力待ちになります。空白は">"で埋められます。 - 非対応のコマンド(内部コード0x7Fxx)でフリーズする不具合を修正しました。
- エラー表示を変更しました。"Missing WhileEnd" と "Missing Switch"等(ErrorCode_List.txtを参照してください)
- GIIモデル以外の隠しRAMの初期化機能を無効にしました。
- BeepコマンドがACキーで中断できるようにしました。
- 行列とリストの初期化でRGB()HSV()HSL()コマンドが最初にある場合にエラーになっていた不具合を修正しました。(1.45CGエンバグ)
(例){RGB(255,0,255),123,456} - LocateコマンドやText等の描画指定を括弧で記述することで数式指定できるようになりました。
(書式1)Locate x,y,Value/Strings[,N/O/R/V]
(書式2)Locate x,y,Value/Strings[,(描画指定)]
N:0 'normal
O:1 'or
R:2 'reverse
V:3 'reverse or
(例)Locate 2,3,"ABC",(2)
Locate 2,3,"ABC",(R) ' R=2
どちらも
Locate 2,3,"ABC",R
と同じです。 - FkeyMenuの描画指定を括弧で記述することで数式指定できるようになりました。
(書式1)FKeyMenu( n[~m], "文字列"/アイコン番号 [,C/M/N/R/I/S/U/L [,アイコン色 [,アイコン背景色]]] )
(書式2)FKeyMenu( n[~m], "文字列"/アイコン番号 [,(描画指定) [,アイコン色 [,アイコン背景色]]] )
基本描画指定における数値(0~4)
C:( 0)消去します。
N:( 1)ノーマル白アイコン。(省略可)
R:( 2)右下が欠けた黒アイコン
I:( 3)四角い黒アイコン
S:( 4)縁取りのある黒アイコン
以下の修飾は基本描画指定値に足して指定します。
U:( 16)文字列を1ドット上側に表示。
L:( 32)表示範囲を左右2ドット広げます。
M:( 64)マスク処理します。
m:(128)枠だけマスク処理します。(FX版のみ)
(例)FKeyMenu (1, "string",NULM)
FKeyMenu (1, "string",(1+16+32+64))
上記の2つは同じ結果になります。
▍C.Basic for FX Ver 2.46 の更新履歴
(build 03)
- メインメモリのお気に入り機能において大文字と小文字しか違わない同名ファイルの不具合を修正しました。
- TicksWaitのカウントが1多かったのを修正しました。
(修正前)TicksWait 4 が TicksWait 5 と同じでした。 - 同梱ソースファイルの不備でビルドできない不具合を修正しました。
- フォルダ位置に復帰できなくなっていた不具合を修正しました。(build01 エンバグ)
(build 02)
- ファイルリストにおいてフォルダ上にカーソルがあるときに新規ファイルを作成する場合にカレントフォルダに作成されるようにしました。
- ファイルを上書き保存する場合、以前のファイルよりもサイズが大きい場合は上書き保存するように書き込み方法を変更しました。(GIIIモデルのみ。)
※ ファイルサイズが小さくなる場合は以前のファイルを消去してから新規保存します。
(build 01)
- 初回起動時に[CBasic]フォルダを作成しそこをデフォルトの保存フォルダとするようにしました。(CG版とFXIII版のみ。)
- 整数モード時のFor~Nextの制御変数の終値が互換でなかったのを修正しました。
- 文字列の長さを制限した場合にそれ以上の長さの文字列の代入に失敗する不具合を修正しました。
(長さ -1 が最大格納文字数になります。) - Pol()Rect()関数において、MatBaseが0の場合にListAns[0]ListAns[1]に答えが返らない不具合を修正しました。
- ENG表示の丸め処理を修正しました。
- RefとRref関数を使用すると固まる不具合を修正しました。
- C.Basicコマンド入力で入力できなかったコマンドを追加修正しました。
▍C.Basic for FX Ver 2.45 の更新履歴
(build 20)
- If [Flase] ~ ElseIf 間の飛越キャッシュの不具合を修正しました。
- Syetem()コマンドでOSのマイナーバージョンが取得できるようになりました。
(書式)System(-22) - やす(Krtyski)様作成のSystem()コマンドサンプルプログラム(Graph90+E対応版)をアップデートしました。(System_sampleフォルダ)
- System(-1)での機種判定にfx-9750GIIIを追加しました。
0:fx-9860G
1:fx-9860G Slim
2:fx-9860GII(SH3)
3:fx-9860GII(SH4A)
4:Graph35+EII(SH4A)
5:fx-9860GIII(SH4A)
6:fx-9750GIII(SH4A) - やす(Krtyski)様作成のSystem()コマンドサンプルプログラム(fx-9750GIII対応版)をアップデートしました。(System_sampleフォルダ)
- Try~TryEndコマンドからBreakで脱出した場合、それ以後、[AC]中断もAcBreakも効かなくなる不具合を修正しました。
- ReadGraph/WriteGraph/DotGet/DotPutコマンドを現在のVRAMに作用するように仕様変更しました。
- 描画対象VRAMを退避されているテキストVRAM領域とグラフィックスVRAM領域に変更するScreen.Vコマンドを追加しました。
(書式)Screen.V
デフォルトのVRAMに戻します。
(書式)Screen.VT
テキストVRAMの退避領域を描画対象にします。
(書式)Screen.VG
グラフィックスVRAMの退避領域を描画対象にします。
- エディタのカーソル位置記憶がプログラム実行終了後にリセットされていいた不具合を修正しました。(build12でのエンバグです。)
- 行列表示を修正しました。
- セット・アップで隠しメモリのOn/Offは確認ポップアップを出すようにしました。
- プログラム開始時に?入力でアルファモードになっていた不具合を修正しました。(build16エンバグ)
- CPLXの行列表示が異常に遅かったのを修正し、3列から4列表示に変更しました。
- 隠しメモリの初期化を修正しました。
- System(-1)での機種判定にfx-9860GIIIを追加しました。
0:fx-9860G
1:fx-9860G Slim
2:fx-9860GII(SH3)
3:fx-9860GII(SH4A)
4:Graph35+EII(SH4A)
5:fx-9860GIII(SH4A) - やす(Krtyski)様作成のSystem()コマンドサンプルプログラム(fx-9860GIII対応版)をアップデートしました。(System_sampleフォルダ)
- 自動インデント機能でのSwitch~Case~SwitchEndの自動整形を改善しました。
- ElseIfコマンドの直後にコメントがある場合、次のコマンドがIfの場合に終了していた不具合を修正しました。
- 行列の初期化後に文字列から文字列への代入で代入されない不具合を再修正しました。
(コピーされない例)
ClrMat
"ABC"->Str 1
Str 1->Str 3 - Seqコマンドで刻み値が少数の場合に終値に到達しないことがある不具合を修正しました。
(例)Seq(X, X, 0.1, 1, 0.05 ) - CPLXモード以外で虚数を使うと無限ループになる不具合を修正しました。(build15でのエンバグです。)
- 省略乗算の不具合を修正しました。(build15でのエンバグです。)
- Colon様のサポートにより関数メモリの実装を開始しました。
- デフォルトのインデックス開始値が0の場合にListの自動確保が出来なかった不具合を修正しました。
- ファンクションメモリー(Fn)のStore/Recall/SEEのSEEをEditに変更しました。
- ファンクションメモリー(Fn)のStore/Recall/SEEのSEEで[F5](Edit)を追加し編集可能になりました。
- ファンクションメモリー(Fn)のStore/Recall/SEEの不具合を修正しました。
- ファンクションメモリー(Fn)およびグラフメモリー(Y)をデフォルトで数式評価とし、
文字列関数内および文字列に続く場合は文字列として評価するように変更しました。
(数式評価)
fn1->A
fn1(123)->A
Locate 1,1,fn1
Text 1,1,fn1(123)
(文字列評価)
"123"+fn1->Str 1
fn2->Str 2
StrJoin(fn1,Str 1)
- 文字列から文字列への代入で代入されない不具合を修正しました。
(fn3にコピーされない例)
ClrMat
"123"->fn1
"ABC"->Str 1
Str 1->fn3 - ファンクションメモリー(Fn)のStore/Recall/SEEを追加しました。
(※エディタではクリップボードの内容がストア対象です。1行入力では1行全体がストア対象になります。) - F_Start/F_End/F_pitchを独立変数に変更しました。
- ?コマンドで文字列が表示される場合にアスキーコードにデコードしないように修正しました。
- Screen#、Screen%を連続実行するとエラーになる不具合を修正しました。
- Screen#、Screen%からListAnsに転送した場合の不具合を修正しました。
(例)Screen#0,0→List Ans - ファイルモードの検索機能を改善しました。
アルファベットキーを押すと検索窓が開き検索モードになります。
検索窓では左右移動等、通常の入力が可能です。
検索窓を解除するには[EXIT]を押してください。
カーソル上下、[EXE] [F1](EXE) [F2](EDIT) [F3](NEW)キーは検索窓を閉じること無く実行できます。
- ファイルモードでアルファベットキーによるダイレクト選択時に[SHIFT]、[ALPHA]、小文字や数字が指定が出来るようになりました。
[F4](A<>a): 大文字小文字切り替えです。
[F5](CHAR)
[F5](→Folder): フォルダサーチに切り替わります。
[DEL]: 一文字戻ります。
[AC]: 全部消します。
[EXIT]: 元に戻ります。
[X^2]: ~
[^]: '
[(-)]: @
[・]: スペース
[EXP]: "
- ””コマンドの実行速度が遅かった不具合を修正しました。
- ファイルモードでアルファベットキーによるダイレクト選択時に2文字以上の指定が出来るようになりました。
[DEL]:一文字戻ります。
[AC]:全部消します。 - ファンクションメモリー(Fn)およびグラフメモリー(Y)に引数が無い場合は文字列として評価するようにしました。
- インデントの必要なコマンド(If,Else..)の直前で改行した場合にインデントが余分に付加される不具合を修正しました。
- エミュレータの判定方法をハードウェアID判定に変更しました。(0x8000FFD)
- ラベルの検索時にコメントでの'#に続くオプションの設定が変更されてしまう不具合を修正しました。
- VarPtr()コマンドで行列/List/Vctを指定した場合、その添字が常に実数評価されていた不具合を修正しました。
- FKeyMenuコマンドにカラー引数があってもエラーにならないように修正しました。
- SortA()/SortD()コマンドに文字配列のソートを追加しました。
(例)SortA($Mat A)
Mat Aの文字列が昇順にソートされます。 - ReadMe、マニュアル更新しました。
- 行列画面で53以降の拡張領域の一覧表示をサポートしました。
[←]:26戻ります。
[→]:26進みます。 - FkeyMenu(コマンドを拡張しました。
(書式)FKeyMenu( n[~m], "文字列"/アイコン番号 [,C/M/N/R/I/S/U/L [,アイコン色 [,アイコン背景色]]] )
※ "アイコン色" はデフォルトで黒い部分の色指定です。
※ "アイコン背景色" はデフォルトで白い部分の色指定です。
※ 3 番目以降の引数は省略可能です。引数を省略した場合でも”,"は必要です。
(書式)FKeyMenu( n[~m], "文字列"/アイコン番号 [,C/M/N/R/I/S/U/L] )
※ 3番目以降の引数は省略可能です。引数を省略した場合でも”,"は必要です。
3番目のオプションは順不同です。
C:消去します。
M:マスク処理します。
m:枠だけマスク処理します。
N:ノーマル白アイコン。(省略可)
R:右下が欠けた黒アイコン
I:四角い黒アイコン
S:縁取りのある黒アイコン
U:文字列を1ドット上側に表示。
L:表示範囲を左右2ドット広げます。
(例)FKeyMenu (1, "string")
(例)FKeyMenu (2~3, "longstring",R)
(例)FKeyMenu (4~5, "longstring",I) - やす(Krtyski)様 & CalcLoverHK様 & Colon様作成のFKeyMenu(コマンドのサンプルプログラムを同梱しました。(C.Basic_sample\FKeyMenu_sample)
- エディタで[SHIFT]を押したときに編集可能空きエリアのサイズをステータスエリアに表示するようにしました。
- System()コマンドにエミュレータ判定を追加しました。
(書式)System(-7)
実機では0、エミュレータでは1が返ります。 - DBL#モードにおいて、一時停止と変数表示での虚数表示がされていたのを修正しました。
- 変数表示をINT%,DBL#,CPLXで独立させました。
▋C.Basic とは?
C.Basic は Casio Basic で楽にコーデイングしたものを高速動作させようというコンセプトでスタートした Casio Basic 上位互換を目指したプログラミング環境で、アドインプログラムとして提供するものです。
fx-9860G 以降で Add-in 機能のある Casio グラフ関数電卓で動作し、純正 Casio Basic プログラムとの上位互換動作を目指し、さらに純正コマンドの機能を拡張したり、新規コマンドを追加しています。
[2020/05/31 追記]
以前は fx-9860G や fx-9860GII の Add-in プログラムを作成するための Casio純正 SDK が提供されていましたが、これらのモデルは国内では販売終了となっており、C言語で作成して高速動作する Add-in プログラムは過去のものになっています。2015年に開発が始まった C.Basic は 現在では Add-in プログラム並の処理能力を提供できるレベルにまで進化しています。海外の Planet Casio ではプログラミングコンテストの開発環境の1つに C.Basic が選ばれ、国際的に認知されています (CPC #26 - At the limit of pysics! 参照)。
▍C.Basic から C:Basic へ
一方、C.Basic for CG はアルファ版でスタートし、Ver 1.00 以降からベータ版としてリリースされています。
とは言っても Casio Basic は、ブロック構造の直線的組立てでプログラミング可能で、さらに実用的なプログラムを効率的に作成可能ですが、ローカル変数や関数作成をサポートしておらず、構造化プログラミング言語ではありません。しかし、ブロック構造を直線的に組み立てたコーディングが可能で、実際に実用的なプログラムを効率的に作成可能な、枯れた実用プログラミング言語と言えます。
Casio Basic は計算量の大きな処理を行ったり、グラフィックスでビットマップ描かせると、それらの処理が非常に遅いことに気づきます。C.Basic (現行インタープリタ版)は、Casio Basic とほぼソースレベル互換でありながら10~20倍の処理速度が得られます。C:Basic (将来のコンパイラ版) は、予備実験の結果、さらに C.Basic (インタープリタ) の10倍程度の処理速度になりそうな見通しが得られています。
⇒ C:Basic プロジェクト
▋ C.Basic 最新バージョンのダウンロード
▶ C.Basic for FX (fx-9860G / fx-9860GII / fx-9860GIII / fx-9750GIII 用)
⇒ C.Basic for FX Ver 2.47 beta build 02 (公式最新版)
⇒ C.Basic for FX Ver 2.46 beta build 03 (1つ前の公式最新版)
・ C.Basic for FX の入手 (少し前のバージョンも入手できます)
▶ C.Basic for CG (fx-CG10 / fx-CG20 / fx-CG50 用)
⇒ C.Basic for CG Ver 1.47 beta build 02 (公式最新版)
⇒ C.Basic for CG Ver 1.46 beta build 03 (1つ前の公式最新版)
・C.Basic for CG の入手 (少し前のバージョンも入手できます)
注意: 万一に備えて、電卓内のプログラムやデータをバックアップしておくことを勧めます。
▋C.Basicのインストール
▶ C.Basic for FX
詳しくは、C.Basicのインストール を参照。
▋C.Basicの使い方とコマンドリファレンスなど [最新バージョンに対応しています]
▶ C.Basic for FX
- プログラミング環境の使い方
- コマンドリファレンス と 内部仕様の特徴
- 更新履歴
- コマンドリストとコマンド呼び出しキー操作
- エラーコード一覧
- 行列・ベクトル・リスト
- 拡張・新規コマンドの中間コード
- 設定のフォーマット
▶ C.Basic for CG
- プログラミング環境の使い方
- コマンドリファレンスと内部仕様の特徴
- 更新履歴
- コマンドリストとコマンド呼び出しキー操作
- エラーコード覧
- 行列・ベクトル・リスト
- 拡張・新規コマンドの中間コード
- 設定フォーマット
- 漢字JISコードとGBコードの対応一覧表
※ これらのドキュメントは、ダウンロードしたZIPファイルに含まれているものです。
▋ チューンアップツール - アドイン
電卓内部のクロックを調整して高速動作させるチューンアップツールを C.Basic と一緒に使うと、さらに高速化が可能です。
このプログラムの評判については、下記参照ください;
- @ Unversal Casio Forum
- @ CEMETECH
- @ TI-Planet
管理人は2年以上使っていますが、今のところ問題は起きていません。安全対策がよく考えられていて、おそらく電卓を壊すことは無いでしょう。但し、念のため電卓のデータバックアップは行って下さい。
機種毎に用意されています。
- fx-9860G、fx-9860GII USB POWER GRAPHIC(前期バージョン SH3採用品): Ftune
- fx-9860GII USB POWER GRAPHIC 2(後期初期 SH4採用品): Ftune2
- fx-9860GIII、fx-9750GIII、Graph35+EII:Ftune3
- fx-CG10 / CG20: Ptune2
- fx-CG50、Graph90+E: Ptune3
※ 違う機種のものを利用しないよう注意してください。
▶ 充電池 / 充電器 の紹介
チューンアップすると消費電力が大幅に増えて、1日で電池が空になることもあります。そこで充電池が経済的です。カシオのグラフ関数電卓は、単4アルカリ電池(1.5V) と 単4ニッケル水素充電池(1.2V) が使える。そこでニッケル水素充電池と充電器のお勧めをまとめました。⇒ こちら
▋ C.Basic と C:Basic の潜在能力 - サンプルプログラム
サンプルプログラムを使って、C.Basic や C:Basic の潜在能力を見てみましょう。.
▍ライフゲーム (Conway's Game of Life) - 高速グラフィック描画
C.Basic は純正 Casio Basic の上位互換であり、拡張コマンドや言語機能があります。
ビットマップを素早く更新するようなプログラムを純正Casio Basic で作ろうと考えるのは無謀なことです。しかし C.Basic を使えば、高速ビットマップ更新が可能で、例えばライフゲームを楽しめます。
fx-9750GIII での実行例 - 517世代までの実行時間: 59.4秒
※ ダウンロード: ライフゲーム Ver 2.45
※ Ftune3 で 235.9MHz にチューンアップ
※ C.Basic for FX Ver 2.45 build 20 以降のバージョンを推奨
=====
コンパイラ版の C:Basic をシミュレートするため、ライフゲーム のパターンを1世代更新する処理部分を、ネイティブコードの関数 "DotLife()" に置き換えて実行したのが以下の動画です。
fx-9750GIII での実行例 - 517世代までの実行時間: 7.8秒
※ ダウンロード: ライフゲーム Ver 2.45F
※ Ftune3 で 235.9MHz にチューンアップ
※ C.Basic for FX Ver 2.45 build 20 以降のバージョンを推奨
517世代までの時間を見る限り 7.6倍高速化しています。将来のコンパイラ版 C:Basic では、これよりも速くなるはずです。
⇒ ライフゲームの詳しい説明
▍2D迷路
以下のような画面全体のグラフィックス描画は、純正Casio Basicではとても時間がかかります。これを C.Basic で走らせると極めて短時間で描画が完了します。
⇒ 2D迷路プログラムの詳しい説明とダウンロード
▍3D迷路ゲーム
左側の迷路マップの描画は、C.Basic を使うことで極めて高速化できます。右側の3D表示はポリライン処理により純正Casio Basic でも3D描画が軽くなるよう工夫されています。このプログラムでは、C.Basic の独自拡張機能を使いながら 純正 Casio Basicでも動作可能なようになっているのが特徴です。
⇒ 3D迷路ゲームの詳しい説明とダウンロード
▍アクションゲーム - DRAGON
これは、C.Basic 独自拡張機能を活用したサンプルプログラムで、高速で多彩なビットマップ処理機能をうまく活用しています。
ゲームとしても飽きないチューニングがされています。このプログラムのソースは、C.Basic 独自拡張機能の理解に役立ちます。
⇒ アクションゲーム - DRAGON の詳しい説明とダウンロード
▍シューティングゲーム - AlienCG
C.Basic の独自コマンドを使い、高精細カラー液晶を活かして、全画面表示、独自フォント、高速グラフィック描画が可能になる例です。
⇒ シューティングゲーム - AlienCG のダウンロード
▍疑似3Dゲーム - Triangle Fieled Ver 0.91 [2020/03/26 アップデート]
Planet Casio でのプログラムコンテスト CPC #26 において、アドイン作成用の C / C++ に加えて C.Basic も使用言語として認められた。そこで sentaro様が応募作品として発表したのが Triangle Field。fx-CGシリーズ用が本命だが、参考までに fx-9860Gシリーズ用にも作成された(液晶の応答性が低いのでゲームとしては難易度が高い)。
なお、類似のアドインゲーム CubeFiled があるが、アドインレベルのプログラムが C.Basic で提供できることを示している。
⇒ 疑似3Dゲーム - Triangle Field のダウンロード
▍カラー表示確認ツール - RGB
C.Basic の独自コマンドを使い、高精細カラー液晶を活かして、全画面表示、バッテリーモニタアイコン表示、16bit RGBカラー表示 (テキストとグラフィックス)、テキストのスクロール表示、QRコード表示が可能になる例です。但し、fx-CG50搭載のカラー液晶は見る角度で色合いが異なって見える廉価版液晶であり、さらに24bit(フル)カラーではなくて16bitカラー表示なので、設定したRGB値に対して実際の液晶上のカラー表示を確認するためのツールです。
⇒ カラー表示確認ツール - RGB の詳しい説明とダウンロード
▍日本語表示プログラム - YearConv
fx-CGシリーズ内蔵の GBフォントを用いて日本語風表示を可能にする例です。エディタ画面ではミニフォントが使えてソースコードの視認性が向上し、ソースコードで漢字フォントを表示してプログラミングできる例でもあります。
⇒ 日本語表示プログラム - Year Conv の説明とダウンロード
応援クリックをお願いします。励みになるので...
keywords: fx-9860GII、CasioBasic、プログラミング入門、グラフィックス、プログラム関数電卓
リンク集 | ブログ内マップ