アドイン Casio Basic - トップページ

C:Basic - アドイン Casio Basic
<Top Page>

内容の更新や修正を随時行います.

初版 2015/12/18
C.Basic アップデート 2017/10/14


[2017/10/14] Ver 1.64 beta マイナーアップデート。

<目 次>
 - C:Basicとは?
 - 最新バージョン
 - オーバークロック・アドイン
 - C.BasicC:Basic の潜在能力
 - C.Basicの使い方とコマンドリファレンス
 - C.Basic 英語版Webマニュアル



C:Basic とは?


C:Basic は Casio Basic の上位互換で、Casio fx-9860GII USB POWER GRAPHIC 2 (SH4A CPU model) のアドインとして開発しているものです。C:Basic は 最終的には高速インタープリタとコンパイラを提供する予定ですが、今のところインタープリタのアルファ版(テスト版) を開発中です。インタープリター版を C.Basic (ドットが1個) と呼んでいます。

CasioオリジナルのCasio Basic は限られたハードウェアの電卓で動作するプログラミング言語で、「構造化プログラミング」が可能な実用的なものです。Casio Basic は簡単に使えて、電卓のみでプログラムを作成したり編集ができ、パソコンが不要です。なお、Casio Basic以外には、パソコン上でC言語でアドインプログラムを開発して、fx-9860GII に転送して使うこともできます。

Casio Basic は楽に開発できるものの、計算量の大きな複雑な処理を行ったり、ビットマップをグラフィックスで描くのは非常に時間がかかります。このような 純正Casio Basic の弱点を補う目的で開発が始まった C.Basic (インタープリタ版) は、Casio Basicとソースレベルで互換でありながら、10~20倍のスピードがあり、今のところ C:Basic (コンパイラ版) はさらに C.Basic (インタープリタ) の10倍の程度の処理速度になりそうなことが確認できています。

この C:Basic プロジェクトを進めているのは、sentaro21 氏(本アドインの作者), Krtyski (当ブログの管理人、テスト実施、サンプルプログラム作成、ユーザーズガイドとコマンドリファレンス作成)、さらに有志のユーザーの方です。

C:Basic プロジェクト



▋ C.Basic 最新バージョン
注意: 万一に備えて、電卓内のプログラムやデータをバックアップしておくことを勧めます。

C.Basicのインストール
ダウンロードしたZIPファイルに含まれている CBASIC.g1a を fx-9860GII シリーズのストレージメモリに転送します。

C.Basicの使い方とコマンドリファレンス
ダウンロードしたZIPファイルに含まれている、Manual_J.txtReadme_j.txtCommand_List.txt を参照してください。

C.Basicの独自拡張機能とCasio Basic互換コマンド
Manual_J.txt にまとめられているので、参照してください。


 チューンアップツール - アドイン: Ftune2

電卓の内部動作をオーバークロックするチューンアップツール Ftuen2 を C.Basic と一緒に使うと、さらに高速化が可能です。
このプログラムの評判については、下記参照ください;
- @ Unversal Casio Forum
- @ CEMETECH
- @ TI-Planet

私は1年以上使っていますが、今のところ問題は起きていません。Ftuen2 は安全対策がよく考えられていて、おそらく電卓を壊すことは無いでしょう。但し、念のため電卓のデータバックアップは行って下さい。

Ftune2 は、Casio fx-9860GII POWER GRAPHIC 2 (SH4A model),用をダウンロードし、他の機種用をダウンロードしないでください。



C.Basic と C:Basic の潜在能力

サンプルプログラムを使って、C.BasicC:Basic の潜在能力を見てみましょう。.

 ライフゲーム (Conway's Game of Life)

C.Basic は純正 Casio Basic の上位互換であり、拡張コマンドや言語機能があります。

高速なビットマッププログラムを純正Casio Basic で作ろうと考えるのは無謀なことだと言えます。しかし C.Basic を使えば、例えばライフゲームを楽しめます。



- ダウンロード: ライフゲーム Ver 0.74

これには、C.Basic Ver 0.63 以降のバージョンが必要です。.


以下の動画では、Ftune2 を使って クロックを 236MHz にチューンしています。

- ダウンロード: Ftune2
   Casio fx-9860GII USB POWER GRAPHIC 2 (SH4 model) 用をダウンロードしてください。
.
=====

コンパイラ版の C:Basic をシミュレートするため、ライフゲーム の繰り返し処理部分を、ネイティブコードの特別なコマンド "DotLife" に置き換えて実行したのが以下の動画です。 

・ダウンロード: ライフゲーム Ver 0.84



ご覧のように非常に高速で、517世代までの時間を測ると約10倍高速化しています。将来のコンパイラ版 C:Basic では、これよりも速くなるはずです。

ライフゲームの詳しい説明


2D迷路

以下のような画面全体のグラフィックス描画は、純正Casio Basicではとても時間がかかります。これを C.Basic で走らせると極めて短時間で描画が完了します。

Maze1 

2D迷路プログラムの詳しい説明


3D迷路ゲーム

3D_Maze 

左側の迷路マップの描画は、C.Basic を使うことで極めて高速化できます。右側の3D表示はポリライン処理により純正Casio Basic でも3D描画が軽くなるよう工夫されています。このプログラムでは、C.Basic の独自拡張機能を使いながら 純正 Casio Basicでも動作可能なようになっているのが特徴です。

3D迷路ゲームの詳しい説明


アクションゲーム - DRAGON



これは、C.Basic 独自拡張機能を活用したサンプルプログラムで、高速で多彩なビットマップ処理機能をうまく活用しています。
ゲームとしても飽きないチューニングがされています。このプログラムのソースは、C.Basic 独自拡張機能の理解に役立ちます。

アクションゲーム - DRAGON の詳しい説明



C.Basic の使い方とコマンドリファレンス

  C.Basic のインストール

  C.Basicマニュアルとコマンドリファレンス - Manual_J.txt

  C.Basic の紹介と更新履歴 - Readme_J.txt







Top に戻る



応援クリックをお願いします。励みになるので...
にほんブログ村 IT技術ブログ 開発言語へ



  


keywords: fx-9860GIICasioBasic、プログラミング入門グラフィックスプログラム関数電卓

リンク集 | ブログ内マップ



テーマ : プログラム関数電卓
ジャンル : コンピュータ

ゲーム ~ マスターマインド (C.Basic)

2017/10/09


グラフ関数電卓で遊べるゲーム:マスターマインド を C.Basic に移植する。


ツル様が作成した fx-9860GII 用のマスターマインドを紹介した。

ゲーム ~ マスターマインド (fx-9860GII)

これを sentaro様が C.Basic 用に移植されたので紹介する。

作者のツル様は、4桁入力後の判定時に、ブリンクさせるアニメに拘ってオリジナリティを演出している。ところが、Ftune2 のようなチューンアップツールで処理速度が向上するとアニメがきれいに表示されなくなる。加えて、ツル様オリジナルのマスターマインドはそのまま C.Basic で動作するが、処理速度が大幅に向上するのでせっかくのアニメがうまく表示されなくなる。

そこで、C.Basic の拡張機能であるウェイトコントロールコマンド (TicksWait) を使って、どのような設定でもオリジナルのアニメをきれいに表示させるための改変を行っている。

純正 Getkey のゲーム進行中に入力する時はループが回っていて、キースキャンの反応を早くするために C.Basic で拡張機能として導入されている Getkey3 (指定Wait機能付きGetkey) を用いて、Getkey3(U)⇒Break; (変数U はオリジナルから導入されているアニメ用ウェイト変数)として、キーウェイトしてキー入力されたら直ちにループを抜ける処理に置き換えることで、キーの反応を改善している。併せて消費電力の改善の効果も少しある。

C.Basic ~アドイン Casio Basic


プログラムのダウンロード

ツル様作成 マスターマインドの C.Basic 移植版 MASTMIN3 (fx-9860GII 用)
 (TicksWaitGetkey3 を用いたバージョン) 

ダウンロードしたファイル MASTMIN3.g1m ファイル転送ツール FA-124 を使って fx-9860GII のストレージメモリ転送後、C.Basic の Program List から実行する。



対応機種

◆ fx-9860GII





応援クリックをお願いします。励みになるので...
にほんブログ村 IT技術ブログ 開発言語へ



keywords: プログラム関数電卓、Casio Basic、ゲーム、マスターマインド、fx-9860GII、fx-CG20、fx-CG50

リンク集 | ブログ内マップ

テーマ : プログラム関数電卓
ジャンル : コンピュータ

C.Basic 英語版Webマニュアル

アドイン版 Casio Basic - 英語版Webマニュアル
<トップページ>


追記修正 2018/08/21

C.Basic の使い方は、配布ファイルに同梱されている readme_J.txt Manual_J.txt に記載されているので、これが参考になります。

2015年10月12日に作成された最初のテスト版以来、C.Basic は改良が進み、1年以上を経て安定性も増してきました。そこで、そろそろ海外デビューしても良いだろうと思い、英語版のマニュアルの準備を進めています。

C.Basic は 純正Casio Basic 互換のコマンドの実装から始まっていて、使い方の基本は 純正Casio Basic にあるので、上記の readme_J.txtManual_J.txt は、純正Casio Basic の機能以外を説明しているものです。

[2017/08/2- 追記・修正]
現在は、C.Basic の配布パッケージ (zipファイル) には、英語版の readme.E.txt と Manual_E.txt も同梱されるようになっています。

そこで、先ずはこれら2つのファイルの内容の英語化から始めています。テキストファイルだと表現に制限があるので、Webマニュアルとしました。

今後は、この英文マニュアルを元に、情報を探しやすいような英語版Webマニュアルを作ってこうと考えています。

C.Basic - 英語版Webマニュアル

所定のWebフォーマットに、上記2つのテキストファイルから日本語を流し込み、順に英語化しています。
まだ多くが日本語のままですが、あと1月程度で取りあえず完成の予定です。
[2017/08/20 追記]
私の作業が遅遅として進まないうちに、sentaro様が英文を準備なさっています。海外のユーザーさんが 英語版Webマニュアルに書いた私の英語を添削してくださったり大変有り難い状況になっています。そこで、上に書いたように 英文Webマニュアルでは検索性を考えて使いやすいマニュアルにしたいと思います。


応援クリックをお願いします。励みになるので...

人気ブログランキングへ


FC2ブログランキングへ






keywords: fx-9860GIICasioBasic、C.Basic英語版Webマニュアル

リンク集 | ブログ内マップ



テーマ : プログラム関数電卓
ジャンル : コンピュータ

ライフゲーム

アドイン版 Casio Basic 用サンプルプログラム
<トップページ>

誤字脱字・記載ミスや分かりにくい表現は随時追記・修正します

動画・説明追加 2015/11/15
更新 2016/05/02

[2015/11/16] プリセットした初期パターンを選べるようにバージョンアップ
[2015/11/17] 記事を大幅に追加して更新
[2015/11/20] C.Basic Ver 0.73 へのバージョンアップを反映した更新
[2016/02/11] C.Basic 最新版は アドイン Casio Basic - トップページ の最新バージョンから
[2016/05/02] ライフゲーム Ver 0.74 へバージョンアップ (C.Basic Ver 0.99m への対応) 



カシオ fx-9860GII の Casio Basic でライフゲームができました。

...とは言っても、純正 Casio Basic では無理なので、アドイン版 Casio Basic : C.Basic で作りました。

最初に作ったもので遊んでみると意外に面白いので、色々とネット検索してライフゲームについて調べたり、プリセットパターンを選べるように機能追加したりして、ハマってしまいました。

実際の動作画面の動画は、下に掲載していますので、その動作速度を見ていただき、C.Basic の能力の高さを実感していただけると思います。

 
ライフゲームのルール

ライフゲームは人工生命シミュレーションと言えるもので、1970年に Conway が発表したのが始まりです。そこで、Conway's Game of Life と呼ばれます。

画面の1ピクセルを1個の生命体(細胞、Cell)と見立てて、誕生、生存、死滅を繰り返す生命体の集団の変化(世代変化)を画面上で再現して、眺めて楽しみます。
ピクセル1個は細胞1個で、 (On:生きている) (Off:死んでいる) のどちらかの状態になります。そして以下の単純な3つの条件だけで次の世代の細胞の生死、つまりピクセルの On / Off  が決定されます。

<誕生>
周りに生きている細胞が3個あれば、次の世代でその場所に新たな細胞が生まれます。
つまり、 あるピクセルが Off の時、周りの8 個のピクセルのうち3個が On の場合、
Birth 
そのピクセルは次の世代で On になります。

<生存>
生きている細胞の周りに生きている細胞が2個あるいは3個あれは、その細胞は次の世代でも生き残ります。
つまり、あるピクセルが On の時、周りの8個のピクセルのうち2個か3個が On の場合、
Live1 LIVE_2 
そのピクセルは次の世代では On のままになります。

<死滅>
上以外の場合、細胞は次の世代で死にます。
つまり、あるピクセルが On の時、周りの8 個のピクセルが1個以下(過疎)、
Death6  Death7 
あるいは4個以上(過密)の場合、
Death1  Death2  Death3  Death4  Death5 
そのピクセルは次の世代で Off になります。

これを画面全てのピクセルについて計算して結果を表示すると、1世代進みます。次々に世代が進むと複雑なパターンに変化してゆきます。


ピクセル一個が極めて単純なルールに従うだけなのに、実際に動かしてみると予想もしない複雑なパターンが次々に現れるのが、ライフゲームの面白いところです。

ライフゲームを知らなかった方や知っていた方も、以下のサイトにある動画を是非ご覧ください。私が探した範囲で最高に分かり易く、面白いと思います;

 ライフゲームの世界, 人口知能に関する断創録

これをプログラム電卓で作るのは無理だと思っていましたが、C.Basic を使えば十分楽しめるスピードで実現できたのはチョット驚きです。

上の動画で紹介されている簡単なパターンは、以下で紹介するプログラム電卓用ライフゲーム LIFE074 で実際に試すことができます。また有名なパターンはプリセットパターンとして選択して使えるようにしています。

ソースコードを公開しているので、プリセットパターンを追加したり、改造したり自由にお使いください。




プログラム電卓でライフゲーム

fx-9860GII の 純正Casio Basic で、液晶全体をピクセル単位でグラフィックス描画するには非常に時間がかかります。一瞬でグラフィックス画面全体を更新・表示することは無理、という仕様になっています。それでも作ってみようとして、最も安易なアプローチとして、画面全体のビットマップ処理を2次元配列(行列)を使って行うのが、楽で分かりやすいのですが 画面全体のピクセルを扱うには行列の要素数が足らない仕様でもあります。そんなわけで、fx-9860GII の Casio Basic ではライフゲームは作れないと思っていました。

アドイン版 Casio Basic インタープリタ : C.Basic の開発が動き出し、テスト版を触っていると、動作は速いし、画面全体のピットマップを2次元配列で高速に処理できるようになり、C.Basic のベンチマークの目的も含めて、面白そうなので作ってみました。純正Casio Basic にはない C.Basic で独自拡張したビットマップ処理コマンドも使ってみました(これを使わないと無理です)。

多くのライフゲームは十分に広い世界を用意していて、無限大の広さが前提になることが殆どです。今回のプログラムは、127×63 ピクセルに限定された狭い世界でのライフゲームです。この狭い世界は、ライフゲームのルールと、高速化のロジックのため、2ピクセルの見えない壁で囲まれていることになり、123×59 ピクセルの領域から外へ出ようとすると、通常のライフゲームとは異なる結果が起こり得ます。

今回作ったライフゲームは、アドイン版 Casio Basic: C.Basic の能力を調べることも大きな目的で、C.Basic Ver 0.66 で作り始め、C.Basic Ver 0.73 で仕上げて、それ以降の最新バージョンで動作確認しています。C.Basic 最新版 (Ver 0.99m) 以降に合わせて ライフゲームを Ver 0.74 にバージョンアップしました。 

このライフゲーム・プログラムを含めて、以下の3セットのプログラムをダウンロードして fx-9860GII に導入すれば、快適にライフゲームが楽しめます。


 アドイン版 Casio Basic: C.Basic

※ 最新バージョンのダウンロード: アドイン Casio Basic - トップページ
  • ZIPファイルで提供
  • ソースファイル(C言語)を公開
  • ZIPファイル内にある CBASIC.G1A がアドインプログラム
C.Basic は、まだテスト版で、バグフィックスとバージョンアップが頻繁に行われています。


◆ オーバークロックツール(アドイン): Ftune2

より高速でスムーズな動きを楽しむには、オーバークロックツールの使用を勧めます。

※ 使い方とダウンロード: fx-9860GII の高速化 - Ftune2 の導入



 サンプルプログラム: ライフゲーム

ダウンロード:
  ライフゲーム Ver 0.74 (C.Basic Ver 0.63 以降に対応) [2016/05/02 バージョンアップ]
  • Ftune2 でオーバークロック (236MHz 以上) を推奨
  • 初期パターンは手入力かプリセットした15個の初期パターンから選択
  • ライフゲームについて:  興味深いサイトを以下に紹介しています。
  • 使い方: 起動画面に説明あり(読みにくくてスミマセン)
  • パターンが変化する様子は、見ていて面白くて飽きません。作ってみるまでは fx-9860GII でライフゲーム遊びが出来るとは、思いもしませんでした。
  • プリセットパターンに手書きでちょい足しもできます。
  • パターン更新中あるいは一旦停止中に [EXIT] を押すと0世代からの実質処理時間を表示してプログラム終了
   プリセット初期パターン

   <パターン1>
   pt1 
   174世代目で安定状態になる。

   <パターン2>
   pt2 
   こんなに小さい5ピクセルから、大きく広がりながらグライダーを5機発射する。
   6機目のグライダーは途中で消滅。一般にはかなり長寿命だが、 LIFE073 の狭い世界では
   652世代目で安定状態になる。

   <パターン3>
   pt3 
   たまたま見つけた面白いパターン。
   大きく広がらないのに、安定状態になるまで517世代と長寿命なのが特徴。
   
   このように、十分な実用的な速度で実行できる(オーバークロック236MHz)。

変化がなくなる517世代までの時間: [時間(相対速度)]

C.Basic Ver0.74C.Basic Ver 0.99m
ノーマルクロック (29MHz)796秒 (0.4)330 (1.0)
オーバークロック (236MHz)115秒 (3.0)52秒 (6.4)
オーバークロック (280MHz)95秒 (3.5)44秒 (7.6)
C.Basic の Ver 0.74 に比べて、最近のバージョンでは機能追加しているにもかかわらず、ほぼ倍の速度を維持している!

   <パターン4>
   pt4 
   たまたま見つけたパターン。横に広がり218世代目で安定状態になる。

   <パターン5>
   pt5 
   たまたま見つけた面白いパターン。
   途中から、画面全体のピクセルで計算と描画を行い負荷が最大になるので、
   プログラムのスピード評価に使える。
   グライダーを6機発射し、そのうち2機は途中で消滅。
   飛び去るグライダーを別にすれば、495世代目で安定状態になる。

   <パターン6>
   pt6 
   たまたま見つけた寿命の長いパターン(658世代)。
   但し、狭い画面よりも広がろうとするので、境界での特異現象あり。

   <パターン7>
   pt7 
   固定パターン(ブリンカー)の1つ。床屋さんのサインのようだ。

   <パターン8>
   pt8
   グライダーが反射を続けて往復移動する様子が面白い。

   <パターン9>
   pt9 
   グライダー: 回転しながら斜めに移動してゆく。

   <パターン10>
   pt10 
   小さい宇宙船と大きい宇宙船: 横に直進する。
   小さい宇宙船は壁に当たるとグライダーに変身する(画面端での特異ケース)。

   <パターン11>
   pt11 
   左右に往復運動するパターン(シャトル)。

   <パターン12>
   pt12 
   往復移動するパターン(シャトル)の1つ。
   壊れて消えそうで、消えずに往復運動するのが面白い。

   <パターン13>
   pt13 
   グライダー銃: MITのゴスペラーが最初に見つけた無限増殖するパターン。
   次々にグライダーが発射される。
   
   <パターン14>
   pt14 
   シュッシュポッポ列車 (Puffer Train): 煙(スパイク)を残しながら移動する。

   <パターン15>
   pt15 
   移動するパターン。ゴミ(スパイク)を残さないのが面白い。




ライフゲームに関するサイト

実際に作ってみると興味が出てきたので、色々と調べてみました。

ライフゲームの説明
人口知能に関する断創録 - ライフゲームの世界  一押し!ライフゲーム歴史と面白さが分かる
人口知能に関する断創録 - ライフゲーム
文系の人にこそ伝えたい!ハッカーを魅了してきたライフゲームの魅力
数字の難民 - ライフゲームを知っていますか?《機械仕掛けの生物》
・ ウィキペディア - ライフゲーム


ライフゲームを見てみる
ライフゲーム入門 (Introduction The Game of Life)
続・ライフゲーム入門 (Game of Life Demo)


fx-5800P でライフゲームを作った人が居た!
nimu.akhの日記: 関数電卓でライフゲーム


ライフゲームの数学的側面

ウィキペディア - ライフゲームの物体一覧
ウィキペディア - セル・オートマトン
ウィキペディア - チューリングマシン


ライフゲームの奥深さ [2016/02/11 追記]

C.Basic でライフゲームを作り始めた時は、ゲームのルールくらいしか知らず、今回 fx-9860GII + C.Basic で作ったのが初めてでした。その動きの複雑さや面白さは、実際に動かしてみないと分からないものです。ルールは単純なのでプログラム自体はそれほど難しくなく、ポイントは処理速度と画面の広さです。

fx-9860GII + C.Basic では、処理速度と画面の広さはスグに限界にきてしまいますが、ライフゲームの面白さを知るには十分です。上で紹介した色々なサイト、特に「一押し」と紹介したサイトにある動画を見て、その奥深さ知りました。

チューリングマシンについてちょっと調べてみると、コンピュータを作るための基本的な概念なんだと知りました。そしてチューリングマシンでチューリングマシンを作ることができる、完全チューリングマシンがあるというのも驚きです。ライフゲームで完全チューリングマシンを作れる、つまりライフゲームでライフゲームが作れることも、上の一押しの動画で紹介されています。

また、0と1だけの世界が、生命の成り立ちに迫ることをフォンノイマンが第二次世界大戦直後、今ほどライフサイエンスが進んでいなかった時代に既に考えていて、原理を証明していたことを知って、その先進性に驚きました。

生命は最初は1個の受精卵から始まり、そこからヒトのような複雑な生命システムができあがるわけですが、それが単に4つの塩基の並び方だけで記録されていて、細胞の分裂と分化に伴ってヒトの生命体としての機能を実現するという事実に迫るために、コンピュータ上の複雑系の研究が進んでいるのも、興味深いところです。

DNAに乗っている情報は、体の設計図だけでなく、タンパクや酵素の製造装置の設計図までも含んでいて、分子レベルでの全ての制御・調節機構を支配しています。生命を単に複製するのに必要な設計図を全てDNAに記録しているだけでなく、細胞分化に多様性を与えるための設計図まで含んでいる凄さも、ライフゲームで遊んでみて改めて実感します。

ライフゲームを実際に作って遊んでみると、複雑なパターンや機能が発現できる初期の単純なセルパターンを探すと、それなりに出てくるのを経験すると、一見単純なものを階層化して組み立てることで、自己複製までできてしまうことに納得します。プログラム電卓で作るライフゲームは、最も単純なウィルスレベルにも及ばないかも知れませんが、想像力をかきたててくれるには十分ですね。




ソースリスト

見やすくなると思ってソースを載せたら、意外に長かった...

ライフゲームの肝心な部分は、下のソースで;
 ・ '== Calc Next Map ==
 ・ '== Update Map ===
の部分で、大した量ではありません。
初期パターンを描いたり、使いやすくしたり、操作説明を入れたりで増えてしまっています(^^;

このプログラムでは1つだけ工夫しています。結構な量の配列計算を出来るだけ少なくするために、パターンの周りの最低限必要なビットマップ領域だけの配列計算をするようにしています。ビットマップ領域の拡大に伴ってフレキシブルに計算領域を拡大しているので、領域が広がるにつれて処理時間がかかるようになります。

fx-9860GII で C.Basic 内蔵のエディタを使ってゼロから作ったプログラムなので、実はこうやってプログラムソースを眺めるのは初めてです。このエディタは 純正Casio Basic の上位互換で、なかなか使いやすくなっていて、特に以下のようにソースを眺めなくてもプログラムが書けてしまいます。Casio Basic が構造化言語なのでブロック構造の分かりやすいプログラムが作れること、そしてエディタが使いやすいことは大きいと思います。


C.Basic 内蔵エディタの宣伝(^^;

そうか! C.Basic 内蔵エディタの使いやすさをアピールする良い機会かも知れません。
純正Casio Basic と同等の文字列検索機能だけでなく、このエディタには、変数や配列/行列の参照・編集機能があって、なかなか使えます。C.Basic Ver 0.99 以降は、ACBreak コマンドで強制終了させたり、ステップデバッグが可能で、コードや変数チェック後、動作復帰するなど、便利なデバッグ機能も搭載していて、とても便利です。


ファイル名: LIFE074.g1m (2472 byte)
'== LIFE Ver 0.74 ==
'        (c)Krtyski
'         e-Gadget
'
'Sample Program
'for CBasic Ver0.99m
'
'Flexible area
' Expanding model
'+Step Mode Option
'+Capture Enabled
'+Int Mode
'+Time Measurement
'+Support New DotP
'+Preset Pattern
'==

'== Execute Mode
'#CBint

'== Graphics Setting
ClrGraph
GridOff
AxesOff
LabelOff
ViewWindow 1,127,0,63,1,0

'== Initial Setting
'= Initialze Matrix
ClrMat B:ClrMat C
{127,63}→Dim Mat B.b
{127,63}→Dim Mat C.b
'Initial Area
'setting temporaly
'as a center dot 
64→L:64→R:32→T:32→B
'= Initialze Gen
0→G
'Step mode flag
1→f:0→s:0→S

0→Z:Prog "LMAP1"

'== Disp Instruction
'Skip Instruction
Z≠0⇒Goto 0

Cls
Text 1,1,"== INSTRUCTION - LIFE Ver0.74"
Text 7,1,"▶DRAW BY REPEAT 2 And 3"
Text 13,15,"1-[EXE]"
Text 13,60,":Start Drawing"
Text 19,15,"2-→/↑/←/↓"
Text 19,60,":Move Cursor"
Text 25,15,"3-[EXE]"
Text 25,60,":Put Dot"Text 31,1,"#E69BRUN"
Text 31,28,"4-[DEL]"
Text 31,60,":Start Running!"
Text 37,28," [(-)]"
Text 37,60,":Step by Step Run"
Text 43,28," [EXE]"
Text 43,60,":Continuous Run"
Text 49,1,"▶Stop"
Text 49,28,"5-[EXIT]"
Text 49,60,":Stop Running"
Text 55,28,"6-[SHIFT][7] :Capture"
Text 59,1,"[F1]"
While Getkey
WhileEnd
Do
LpWhile Getkey≠79
Cls

Lbl 0

'== Draw Pattern ==
CoordOn
Text 2,3,"EXE/→/↑/←/↓: Make Pattern"
Text 8,3,"DEL: Go!"
If Z=0:Then 
64→X:32→Y:IfEnd

0→C
While 1
While Getkey
WhileEnd
Do
Getkey→K
Text 8,3,"DEL: Go!"
LpWhile K=0
K=44⇒Break
If K=31:Then 
Text 8,3,"    "
Plot X,Y◢
'= Flexible Map Area
' Initialze Area,
' starting w/ a dot
If C=0:Then 
If Z=0:Then 
X→L:X→R:Y→T:Y→B
IfEnd
Isz C:IfEnd
1→Mat B[X,Y]
1→Mat C[X,Y]
X≦L⇒X-1→L
X≧R⇒X+1→R
Y≦T⇒Y-1→T
Y≧B⇒Y+1→B
IfEnd
WhileEnd
CoordOff
'Expand Map Area
L→l:R→r:T→t:B→b
'Disp Operation Note
Text 2,3,"[EXIT]:Stop         "
Text 8,3,"[(-)]/[EXE]"

'== Timer Start
%s

'1st Loop
While 1

'== Calc Next Map ==
For T→Y To B
For L→X To R
0→C
CellSum(Mat B[X,Y])→C
If Mat B[X,Y]:Then 
If C≦1 Or C≧4:Then 
0→Mat C[X,Y]
IfEnd
Else 
If C=3:Then 
1→Mat C[X,Y]
IfEnd
IfEnd
'Expand Map Area
If C:Then 
If l≦2:Then 2→l
Else X≦l⇒Dsz l:IfEnd
If r≧126:Then 126→r
Else X≧r⇒Isz r:IfEnd
If t≦2:Then 2→t
Else Y≦t⇒Dsz t:IfEnd
If b≧62:Then 62→b
Else Y≧b⇒Isz b:IfEnd
IfEnd
Next:Next
l→L:r→R:t→T:b→B

'== Update Map ==
Mat C→Mat B
DotPut(Mat C[L,T],L,T,R,B)
'Update Generation
Isz G
Text 2,105,G

'== Key Operation ==
f⇒Goto K
Getkey→K
K=0⇒Goto Z:Goto K

Lbl K
'[(-)]→Pause
If K=41 Or f:Then 
(%-s)+S→S
While Getkey
WhileEnd
Do
Getkey→K
'[EXIT]→Finish up
K=47⇒Break
'[EXE]→Continue
If K=31:Then 0→f
%z:Break:IfEnd
If K=41:Then 1→f
%s:Break:IfEnd
LpWhile 1
IfEnd

'[EXIT]→Finish up
K=47⇒Break

Lbl Z
'[EXIT]→Finish up
K=47⇒Break
WhileEnd
'1st Loop end

'== Finish up ==
(%-s)+S→S
ClrMat B
ClrMat C
ClrText

'#CBasic
Locate 1,1,"Generation"
Locate 12,1,G%
S%÷128→s
Locate 1,3,"Time(s)"
Locate 13,3,S
Int (S÷60)→M
If M:Then 
S-60M→S
Int (log M)→D
Locate 1,4,"Time(m:s)"
Locate 11,4,M
Locate 12+D,4,":"
Locate 13+D,4,S
IfEnd
Locate 1,6,"[SHIFT][F6]"
Locate 8,7,"⇒Graphic Disp"

=====

赤文字は、C.Baisc 独自拡張機能である、ビットマップ関数配列小文字変数変数の型指定タイマーに関するもので、高速化を目指しました。C.Basic は 純正Casio Basic の上位互換なので、このような独自機能を使うと純正Casio Basic では動作しません。

C.Basic の独自拡張機能や簡単な使い方については、ダウンロードした C.Basic の圧縮ファイル内にある readme_J.txt に書かれているので、そこで確認してください。


あっ、サブルーチンの LMAP1.g1m も有った...これは 6520 byte もあります。ここでやっていることは極めて単純で、プリセットパターンを配列データとして作り、それをビットマップとして表示し、矢印キーを押すと別のパターンで同じことを行う...これを15パターン分似たような記述を繰り返しているだけで、その分長くなっています。

コーディングにはメインルーチンと同様にゼロから C.Basic のエディタを使い、コピー&ペーストを使ったので、実際の入力はかなり省略でき、気がついたら長くなっていました。

上と同様に、C.Basic の独自拡張機能を赤文字で示しておきます。

ファイル名: LMAP1.g1m (6524 byte)
'== LMAP Ver0.7x ==
'Bitmap I/O Function
' for LIFE Ver0.7
'==

Cls
While Getkey
WhileEnd

'== Menu
Text 1,1,"===== Set Initial Pattern ====="
Text 9,30,"For LIFE Ver0.7x"
Text 15,30,"-----------------"
Text 25,18,"[F1] Draw New Pattern"
Text 37,18,"[F6] Select Pattern"
Text 59,1,"[F1]"
Text 59,114,"[F6]"

Do
0→K:Getkey1→K
64→X:32→Y

If K=79:Then
'= Manual Draw
0→Z:Cls:Return

Else If K=29:Then
'= Select Pattern
'Preset Pattern#
15→Z
'Crrent Pattern#
1→z

Do
Cls
Text 1,1,"[↓]/[↑]:Select"
Text 1,110,"[ ]"
Text 1,113,z
Text 59,1,"[F1] Enter"

If z=1:Then
64→X:32→Y:0→Mat B
X-2→L:X+2→R
Y-2→T:Y+2→B
0→Mat B[X-1,Y-1]
1→Mat B[X,Y-1]
1→Mat B[X-1,Y]
1→Mat B[X,Y]
1→Mat B[X+1,Y]
1→Mat B[X-1,Y+1]
1→Mat B[X+1,Y+1]
X→X:Y-1→Y
DotPut(Mat B[L,T],L,T,R,B)

Else If z=2:Then
64→X:32→Y:0→Mat B
X-2→L:X+2→R
Y-2→T:Y+2→B
1→Mat B[X,Y-1]
1→Mat B[X+1,Y-1]
1→Mat B[X-1,Y]
1→Mat B[X,Y]
1→Mat B[X,Y+1]
X→X:Y-1→Y
DotPut(Mat B[L,T],L,T,R,B)

Else If z=3:Then
64→X:32→Y:0→Mat B
X-1→L:X+11→R
Y-2→T:Y+2→B
1→Mat B[X,Y-1]
1→Mat B[X+9,Y-1]
1→Mat B[X,Y]
1→Mat B[X+1,Y]
1→Mat B[X+2,Y]
1→Mat B[X+3,Y]
1→Mat B[X+4,Y]
1→Mat B[X+5,Y]
1→Mat B[X+6,Y]
1→Mat B[X+7,Y]
1→Mat B[X+8,Y]
1→Mat B[X+9,Y]
1→Mat B[X,Y+1]
1→Mat B[X+9,Y+1]
X→X:Y→Y
DotPut(Mat B[L,T],L,T,R,B)

Else If z=4:Then
64→X:32→Y:0→Mat B
X-2→L:X+2→R
Y-7→T:Y+7→B
1→Mat B[X-1,Y-6]
1→Mat B[X,Y-6]
1→Mat B[X+1,Y-6]
1→Mat B[X,Y-5]
1→Mat B[X,Y-4]
1→Mat B[X,Y-3]
1→Mat B[X,Y-2]
1→Mat B[X-1,Y-1]
1→Mat B[X,Y-1]
1→Mat B[X+1,Y-1]
1→Mat B[X-1,Y+6]
1→Mat B[X,Y+6]
1→Mat B[X+1,Y+6]
1→Mat B[X,Y+5]
1→Mat B[X,Y+4]
1→Mat B[X,Y+3]
1→Mat B[X,Y+2]
1→Mat B[X-1,Y+1]
1→Mat B[X,Y+1]
1→Mat B[X+1,Y+1]
X→X:Y+1→Y
DotPut(Mat B[L,T],L,T,R,B)

Else If z=5:Then
64→X:32→Y:0→Mat B
X-9→L:X+9→R
Y-11→T:Y+11→B
1→Mat B[X,Y-10]
1→Mat B[X-1,Y-9]
1→Mat B[X,Y-9]
1→Mat B[X+1,Y-9]
1→Mat B[X-1,Y-8]
1→Mat B[X+1,Y-8]
1→Mat B[X-7,Y+8]
1→Mat B[X-8,Y+9]
1→Mat B[X-7,Y+9]
1→Mat B[X-6,Y+9]
1→Mat B[X-8,Y+10]
1→Mat B[X-6,Y+10]
1→Mat B[X+7,Y+8]
1→Mat B[X+6,Y+9]
1→Mat B[X+7,Y+9]
1→Mat B[X+8,Y+9]
1→Mat B[X+6,Y+10]
1→Mat B[X+8,Y+10]
X+8→X:Y+10→Y
DotPut(Mat B[L,T],L,T,R,B)

Else If z=6:Then
64→X:40→Y:0→Mat B
X-4→L:X+5→R
Y-2→T:Y+2→B
1→Mat B[X-3,Y-1]
1→Mat B[X-3,Y]
1→Mat B[X-2,Y]
1→Mat B[X-1,Y]
1→Mat B[X,Y-1]
1→Mat B[X,Y]
1→Mat B[X,Y+1]
1→Mat B[X+1,Y]
1→Mat B[X+2,Y]
1→Mat B[X+3,Y]
1→Mat B[X+4,Y]
1→Mat B[X+4,Y+1]
X→X:Y+1→Y
DotPut(Mat B[L,T],L,T,R,B)

Else If z=7:Then
64→X:32→Y:0→Mat B
X-7→L:X+7→R
Y-7→T:Y+7→B
1→Mat B[X+5,Y-6]
1→Mat B[X+6,Y-6]
1→Mat B[X+6,Y-5]
1→Mat B[X+3,Y-4]
1→Mat B[X+5,Y-4]
1→Mat B[X+1,Y-2]
1→Mat B[X+3,Y-2]
1→Mat B[X-1,Y]
1→Mat B[X+1,Y]
1→Mat B[X-1,Y+2]
1→Mat B[X-3,Y+2]
1→Mat B[X-3,Y+4]
1→Mat B[X-3,Y+4]
1→Mat B[X-5,Y+4]
1→Mat B[X-6,Y+5]
1→Mat B[X-6,Y+6]
1→Mat B[X-5,Y+6]
X+1→X:Y→Y
DotPut(Mat B[L,T],L,T,R,B)

Else If z=8:Then
64→X:32→Y:0→Mat B
X-22→L:X+20→R
Y-5→T:Y+5→B
1→Mat B[X-21,Y+2]
1→Mat B[X-20,Y+2]
1→Mat B[X-19,Y+3]
1→Mat B[X-19,Y+2]
1→Mat B[X-19,Y+1]
1→Mat B[X-16,Y+3]
1→Mat B[X-16,Y+2]
1→Mat B[X-16,Y+1]
1→Mat B[X-15,Y+2]
1→Mat B[X-14,Y+2]
1→Mat B[X-13,Y+2]
1→Mat B[X-12,Y+2]
1→Mat B[X-11,Y+3]
1→Mat B[X-11,Y+2]
1→Mat B[X-11,Y+1]
1→Mat B[X-8,Y+3]
1→Mat B[X-8,Y+2]
1→Mat B[X-8,Y+1]
1→Mat B[X-7,Y+2]
1→Mat B[X-6,Y+2]
1→Mat B[X-4,Y+4]
1→Mat B[X-4,Y+3]
1→Mat B[X-3,Y+4]
1→Mat B[X-3,Y+2]
1→Mat B[X-2,Y+4]
1→Mat B[X+4,Y-2]
1→Mat B[X+5,Y-2]
1→Mat B[X+6,Y-1]
1→Mat B[X+6,Y-2]
1→Mat B[X+6,Y-3]
1→Mat B[X+9,Y-1]
1→Mat B[X+9,Y-2]
1→Mat B[X+9,Y-3]
1→Mat B[X+10,Y-2]
1→Mat B[X+11,Y-2]
1→Mat B[X+9,Y-2]
1→Mat B[X+12,Y-2]
1→Mat B[X+13,Y-2]
1→Mat B[X+14,Y-1]
1→Mat B[X+14,Y-2]
1→Mat B[X+14,Y-3]
1→Mat B[X+17,Y-1]
1→Mat B[X+17,Y-2]
1→Mat B[X+17,Y-3]
1→Mat B[X+18,Y-2]
1→Mat B[X+19,Y-2]
X-8→X:Y+3→Y
DotPut(Mat B[L,T],L,T,R,B)

Else If z=9:Then
64→X:10→Y:0→Mat B
X-2→L:X+2→R
Y-2→T:Y+2→B
1→Mat B[X-1,Y+1]
1→Mat B[X,Y-1]
1→Mat B[X,Y+1]
1→Mat B[X+1,Y]
1→Mat B[X+1,Y+1]
X+1→X:Y+1→Y
DotPut(Mat B[L,T],L,T,R,B)

Else If z=10:Then
5→X:32→Y:0→Mat B
X-3→L:X+5→R
Y-7→T:Y+7→B
1→Mat B[X-2,Y-4]
1→Mat B[X-2,Y+5]
1→Mat B[X-1,Y-3]
1→Mat B[X-1,Y+6]
1→Mat B[X,Y-3]
1→Mat B[X,Y+6]
1→Mat B[X+1,Y-3]
1→Mat B[X+1,Y-6]
1→Mat B[X+1,Y+6]
1→Mat B[X+2,Y-3]
1→Mat B[X+2,Y-4]
1→Mat B[X+2,Y-5]
1→Mat B[X+2,Y+6]
1→Mat B[X+3,Y+3]
1→Mat B[X+3,Y+6]
1→Mat B[X+4,Y+4]
1→Mat B[X+4,Y+5]
1→Mat B[X+4,Y+6]
X+4→X:Y+6→Y
DotPut(Mat B[L,T],L,T,R,B)

Else If z=11:Then
64→X:32→Y:0→Mat B
X-7→L:X+17→R
Y-4→T:Y+4→B
1→Mat B[X-6,Y]
1→Mat B[X-6,Y+1]
1→Mat B[X-5,Y]
1→Mat B[X-5,Y+1]
1→Mat B[X-2,Y-1]
1→Mat B[X-2,Y]
1→Mat B[X-2,Y+1]
1→Mat B[X-1,Y-1]
1→Mat B[X-1,Y]
1→Mat B[X-1,Y+1]
1→Mat B[X+3,Y-3]
1→Mat B[X+3,Y-2]
1→Mat B[X+3,Y+2]
1→Mat B[X+3,Y+3]
1→Mat B[X+4,Y-2]
1→Mat B[X+4,Y-1]
1→Mat B[X+4,Y]
1→Mat B[X+4,Y+1]
1→Mat B[X+4,Y+2]
1→Mat B[X+5,Y-1]
1→Mat B[X+5,Y]
1→Mat B[X+5,Y+1]
1→Mat B[X+6,Y]
1→Mat B[X+14,Y]
1→Mat B[X+14,Y+1]
1→Mat B[X+15,Y]
1→Mat B[X+15,Y+1]
X+6→X:Y→Y
DotPut(Mat B[L,T],L,T,R,B)

Else If z=12:Then
64→X:32→Y:0→Mat B
X-15→L:X+15→R
Y-6→T:Y+6→B
1→Mat B[X-14,Y-4]
1→Mat B[X-14,Y-3]
1→Mat B[X-14,Y+3]
1→Mat B[X-14,Y+4]
1→Mat B[X-13,Y-4]
1→Mat B[X-13,Y-3]
1→Mat B[X-13,Y+3]
1→Mat B[X-13,Y+4]
1→Mat B[X-1,Y-2]
1→Mat B[X-1,Y+2]
1→Mat B[X,Y-2]
1→Mat B[X,Y+2]
1→Mat B[X+3,Y-5]
1→Mat B[X+3,Y-4]
1→Mat B[X+3,Y-2]
1→Mat B[X+3,Y+2]
1→Mat B[X+3,Y+4]
1→Mat B[X+3,Y+5]
1→Mat B[X+4,Y-4]
1→Mat B[X+4,Y-3]
1→Mat B[X+4,Y-2]
1→Mat B[X+4,Y+2]
1→Mat B[X+4,Y+3]
1→Mat B[X+4,Y+4]
1→Mat B[X+5,Y-3]
1→Mat B[X+5,Y+3]
1→Mat B[X+13,Y-4]
1→Mat B[X+13,Y-3]
1→Mat B[X+13,Y+3]
1→Mat B[X+13,Y+4]
1→Mat B[X+14,Y-4]
1→Mat B[X+14,Y-3]
1→Mat B[X+14,Y+3]
1→Mat B[X+14,Y+4]
X→X:Y-2→Y
DotPut(Mat B[L,T],L,T,R,B)

Else If z=13:Then
64→X:32→Y:0→Mat B
X-19→L:X+18→R
Y-5→T:Y+5→B
1→Mat B[X-18,Y]
1→Mat B[X-18,Y+1]
1→Mat B[X-17,Y]
1→Mat B[X-17,Y+1]
1→Mat B[X-7,Y]
1→Mat B[X-7,Y+1]
1→Mat B[X-7,Y+2]
1→Mat B[X-6,Y-1]
1→Mat B[X-6,Y+3]
1→Mat B[X-5,Y-2]
1→Mat B[X-5,Y+4]
1→Mat B[X-4,Y-1]
1→Mat B[X-4,Y+3]
1→Mat B[X-3,Y]
1→Mat B[X-3,Y+1]
1→Mat B[X-3,Y+2]
1→Mat B[X-2,Y]
1→Mat B[X-2,Y+1]
1→Mat B[X-2,Y+2]
1→Mat B[X+3,Y-2]
1→Mat B[X+3,Y-1]
1→Mat B[X+3,Y]
1→Mat B[X+4,Y-3]
1→Mat B[X+4,Y-2]
1→Mat B[X+4,Y]
1→Mat B[X+4,Y+1]
1→Mat B[X+5,Y-3]
1→Mat B[X+5,Y-2]
1→Mat B[X+5,Y]
1→Mat B[X+5,Y+1]
1→Mat B[X+6,Y-3]
1→Mat B[X+6,Y-2]
1→Mat B[X+6,Y-1]
1→Mat B[X+6,Y]
1→Mat B[X+6,Y+1]
1→Mat B[X+7,Y-4]
1→Mat B[X+7,Y-3]
1→Mat B[X+7,Y+1]
1→Mat B[X+7,Y+2]
1→Mat B[X+12,Y]
1→Mat B[X+12,Y+1]
1→Mat B[X+16,Y-2]
1→Mat B[X+16,Y-1]
1→Mat B[X+17,Y-2]
1→Mat B[X+17,Y-1]
X+17→X:Y-1→Y
DotPut(Mat B[L,T],L,T,R,B)

Else If z=14:Then
40→X:38→Y:0→Mat B
X-4→L:X+3→R
Y-9→T:Y+10→B
1→Mat B[X-3,Y-6]
1→Mat B[X-3,Y-1]
1→Mat B[X-3,Y+8]
1→Mat B[X-2,Y-5]
1→Mat B[X-2,Y]
1→Mat B[X-2,Y+3]
1→Mat B[X-2,Y+9]
1→Mat B[X-1,Y-5]
1→Mat B[X-1,Y]
1→Mat B[X-1,Y+1]
1→Mat B[X-1,Y+2]
1→Mat B[X-1,Y+9]
1→Mat B[X,Y-8]
1→Mat B[X,Y-5]
1→Mat B[X,Y+6]
1→Mat B[X,Y+9]
1→Mat B[X+1,Y-7]
1→Mat B[X+1,Y-6]
1→Mat B[X+1,Y-5]
1→Mat B[X+1,Y+7]
1→Mat B[X+1,Y+8]
1→Mat B[X+1,Y+9]
X-1→X:Y→Y
DotPut(Mat B[L,T],L,T,R,B)

Else If z=15:Then
40→X:32→Y:0→Mat B
X-5→L:X+5→R
Y-5→T:Y+5→B
1→Mat B[X-4,Y-1]
1→Mat B[X-4,Y]
1→Mat B[X-4,Y+1]
1→Mat B[X-3,Y-1]
1→Mat B[X-3,Y]
1→Mat B[X-3,Y+1]
1→Mat B[X-2,Y]
1→Mat B[X,Y-3]
1→Mat B[X,Y-1]
1→Mat B[X,Y+1]
1→Mat B[X,Y+3]
1→Mat B[X+1,Y-4]
1→Mat B[X+1,Y+4]
1→Mat B[X+2,Y-4]
1→Mat B[X+2,Y+4]
1→Mat B[X+3,Y-4]
1→Mat B[X+3,Y-1]
1→Mat B[X+3,Y+1]
1→Mat B[X+3,Y+4]
1→Mat B[X+4,Y-4]
1→Mat B[X+4,Y-3]
1→Mat B[X+4,Y-2]
1→Mat B[X+4,Y+2]
1→Mat B[X+4,Y+3]
1→Mat B[X+4,Y+4]
X-2→X:Y→Y
DotPut(Mat B[L,T],L,T,R,B)

IfEnd:IfEnd:IfEnd
IfEnd:IfEnd:IfEnd
IfEnd:IfEnd:IfEnd
IfEnd:IfEnd:IfEnd
IfEnd:IfEnd:IfEnd

Getkey1→K
K=79⇒Break
K=37⇒z+1→z:z=Z+1⇒1→z
K=28⇒z-1→z:z=0⇒Z→z
LpWhile 1

Cls
Mat B→Mat C
DotPut(Mat B[L,T],L,T,R,B)
Return
IfEnd:IfEnd
LpWhile 1


=====






応援クリックをお願いします。励みになるので...

人気ブログランキングへ


FC2ブログランキングへ







keywords: fx-9860GIICasioBasic、プログラミング入門グラフィックスプログラム関数電卓

リンク集 | ブログ内マップ


テーマ : プログラム関数電卓
ジャンル : コンピュータ

C.Basic コマンドリファレンス

 目 次
< English | 日本語 > 

記載内容は fx-9860GII (OS 2.04)で確認したものです.
本プロジェクトは進行中のため、追記修正があるかも知れません.


 
基本仕様互換拡張
表示エリア
グラフィックス座標系
内部カーソル行の制御
 
 基本動作コマンド互換拡張
  (代入)
" " (出力)
(出力と一旦停止)
? (入力)
?→ (入力)
 
 入出力コマンド互換拡張
Getkey
Getkey1, Getkey2, Getkey3
Locate
Locate X,Y,<値>[,R]
LocateYX Y,X,<値>[,R]
 
 プログラムコマンド互換拡張
If... Then... [Else...] IfEnd
If... Then... ElseIf...[[ElseIf...]...] IfEnd
For... To... [Step...] Next
While... WhileEnd
Do... LpWhile
Switch... [[Case...]...] Default
 
 プログラム制御コマンド互換拡張
Break
Return
Stop
Prog
GoSub... Lbl... Return✔
 
 ジャンプコマンド互換拡張
Goto... Lbl
Isz
Dsz
  
 関係演算子互換拡張
=, ≠, <, >, ≤, 
 
 論理演算子互換拡張
And, Or, Not, Nor
 
 記述コード互換拡張
: (区切りコード)
' (コメント文指定)
'/<C.Basic でのみ実行するなコマンド>
  
 変数互換拡張
A - Z (大文字)
~
a - z (小文字)✔
#, %
Local
 
配列互換拡張
Dim Z, Z[ ], Dim A, A[ ]
行列互換拡張
Dim, Mat, Trn, Fill( )
{m,n}→Dim Mat A (初期化)
[[...][...]...]→Mat A (初期化)
ElmSize( ), ColSize( ), RowSize( )
Mat B, Mat C, Mat D, Mat W, Mat I, Mat L
Mat A.x (x = p, b, w, l, f)
Save, Load( ) 
Mat A.v
 
ビットマップコマンド互換拡張
DotGet( ), DotPut( ), DotTrim( )
ReadGraph( ), WriteGraph( )
DotLife (ライフゲーム専用)
 
 表示設定 (テキスト)互換拡張
Cls (テキスト)
ClrText (テキスト)
Eng
EngOn, EngOff
Norm
Sci
Fix
Deg, Rad, Gra✔
°, r (rad), g (gra), DMS✔
Rnd, RndFix( )
f, p, n, μ, m✔
k, M, G, T, P, E✔
 
数学関数互換拡張
主なキー入力関数✔
Abs, Int, Frac, !, MOD( )✔
sinh, cosh, tanh, sinh-1, cosh-1, tanh-1 ✔
 
乱数互換拡張
Ran#, RanInt#( )
 
文字列操作コマンド互換拡張
Str, '#Str✔
Str, StrJoin( ), StrLen( ), StrCmp( ), StrSrc( )✔
StrLeft( ), StrRight( ), StrMid( )✔
Exp▶Str( ), Exp( ), StrUpr( ), StrLwr( )✔
StrInv( ), StrShift( ), StrRotate( ), \, +
Sprintf( )✔
  
 グラフィックス設定互換拡張
ClrGraph
ViewWindow
Xmin, Xmax, Xdot, Xscl, Xfct
Ymin, Ymax, Yscl, Yfct
 AxesOn, AxesOff
 GridOn, GridOff
 LabelOn, LabelOff
CoordOn, CoordOff
S-L-Normal, S-L-Thick, S-L-Dot, S-L-Broken
  
 グラフィックス Sketch コマンド互換拡張
Cls (グラフィックス)
ClrGraph
Text Y,X,<値>
Text Y,X,<値>[,N/R/O/V]
PxlOn Y,X
PxlOff Y,X
PxlChg Y,X
PxlTest(Y,X)
Plot
Line
PlotOn X,Y
PlotOff X,Y
F-Line X2,Y2,X1,T1
F-Line X2,Y2,X1,Y1,C/X
Vertical X
Vertical X,C/X
Horizontal Y
Horizontal Y,C/X
Circle X,Y,R
Circle X,Y,R,C/X
SketchNormal, SketchThick, SketchDot, SketchBroken
StoPict, RclPict
Rect, FillRect
 
タイマーコマンド互換拡張
%, Ticks✔
 
デバッグコマンド互換拡張
ACBreak
 
実行モード互換拡張
'#CBINT, "#CBint
'#CBASIC, '#CBasic, '#CBDBL, '#CBdbl
 
ハードウェア制御互換拡張
 Backlight
 
 






Copyright (C) 2013 - 2016 Krtyski / egadget.blog.fc2.com  All Rights Reserved.



テーマ : プログラム関数電卓
ジャンル : コンピュータ

C:Basic - Top Page

C:Basic - Add-In Casio Basic

Update and correction may be made at any time without notice.

1st: 18th Dec. 2015
Updated: 27th Mar. 2016

About C:Basic

C:Basic is an upper comatible Casio Basic which is provided as an Add-In for Casio fx-9860GII USB POWER GRAPHIC 2 (SH4A CPU model). The C:Basic will provide fast interpreter and compiler version. At this moment only interpreter is ready as alpha version., so we call the interpreter version as C.Basic (single dot).

Casio original Casio Basic is a minimal programming language working in limited hardware of calculator, but it's a practical language allowing us to enjoy 'Structured Programming'. Old fans of Programmable calc and poket computer who used to enjoy Basic programming well know that the old Basic requires line number. Unlike such old Basic, current Casio Basic can be categorized as new Generration, so we define current Casio Basic is Caso Basic New Generation. The Casio Basic is very easy-to-use language and you can create programs on your calc only, no PC is required.

You can also create Add-In programs which can be built on your PC with C language SDK and the Add-In runs much faster than the original Casio Basic. Comparing with Add-In, the Casio Basic is very slow to compute complecated calculation with high comlexity and to draw bitmap graphics. In order to improve such weak point of original Casio Basic, we started development of C.Basic (interpreter first) which is compatible with Casio Basic. Currently it gives you much faster computing speed in factor of 10 or 20 than original Casio Basic. Now we know C:Basic (compiler version) is capable to run x10 or more fasterr than interpreter version of C.Basic.

The C:Basic Project is driven by sentaro21 (author of this Add-In), Krtyski (owner of this blog, testing, making sample programs, preparing User's Guide and Command Reference) and some fans of C.Basic.



▋ Latest Test Version of C.Basic
NOTE: This is still an alpha version, so it must includes bugs and there is a possibility to destroy data in your calc (in this case you may need to restart or reset your calc). So it's highly recommneded to make backup of your data before trying C.Basic.



Overclock Add-In: Ftune2

To enjoy fast operation, an over-clock Add-In,
Ftuen2 is recommended to use with C.Basic.
Review following pages for reputation of this program;
-
@ Unversal Casio Forum
-
@ CEMETECH
-
@ TI-Planet

I have used this Add-In over 1 year, there is no problem found so far. Ftuen2 has well considerred safwty features, so it unlikely damages your calc. But please make backup of data of your calc for sure.

Please download Ftune2 for Casio fx-9860GII POWER GRAPHIC 2 (SH4A model), not other editions.



Potential of C.Basic & C:Basic

Let me show you capability of C.Basic and C:Basic with sample program(s).

Conway's Game of Life

C.Basic is upper compatible with original Casio Basic, and has some extended commands and language functions.

If you want to make a fast bitmap graphics program with original Casio Basic, I can say it's reckless try. But with C.Basic you can enjoy programming of Conway's Game of Life as a good example.



- Download:
Game of Life Ver 0.73

To get this speeed, C.Basic Ver 0.83 or later version is requred.

- Download latest version of C.Basic:


In this video, clock is tuned up to 236MHz by Ftune2.

- Download:
Ftune2
   Please be careful to download an edition for Casio fx-9860GII USB POWER GRAPHIC 2 (SH4 model).

=====

To evalaute capability of C:Basic (compiler version), most frequently porcessd codes of Game of Live Ver 0.73 is replaced by a special command "DotLife" to make the codest run at native code speed. 



As you see, it's much faster in factor of 10 until getting to generation 517. Now we believe fully native code by C:Basic (compiler version) should acheive a bit faster computing speed than this case.



How to Use C.Basic

  Installtion of C.Basic
  Check C.Basic readme
  Check of C.Basic version
  Start up C.Basic
  Copy a program in Main Memory to Strage Memory to run in C.Basic
  Copy a program in Storage Memory to Main Memory to run in original Casio Basic
  Make a New program and Edit it
  Cut & Paste in program Editor
  Updating a program source of Prog01 to Prog02
  Setup function of C.Basic
  Run a program
  Use Favorite Program List function
  Refer and Initialze Variables
  Refer and Initialze Matrix/Array
  Refer and setup ViewWindow setting
  How to input commands



C.Basic Command Reference







▲Back to Top



テーマ : プログラム関数電卓
ジャンル : コンピュータ

Installation of C.Basic

C:Basic - Add-In Casio Basic
<Top Page>

Update and correction may be made at any time without notice.

27th Mar. 2016


How to Use C.Basic



Installation of C.Basic

For the first installation or updating to latest version of C.Basic, down load the C.Basic and transfer it to your fx-9860GII using PC Link software FA124A and USB cable which are included in your fx-9860GII package.

It's simple to transfer C.Basic to your fx-9860GII, Import the downloaded C.Basic to FA-124A and then transfer the C.Basic to your fx-9860GII.

- Download C.Basic

-
Install FA-124A to your PC

-
Import C.Basic at FA-124A
 ・
Start up FA-124A
 ・
Switch to Storage Memory Mode
 ・
Import C.Basic to FA-124A

-
Transfer C.Basic to fx-9860GII
 ・
Connect fx-9860GII to FA-124A
 ・
Transfer C.Basic
 ・
Check transferred C.Basic

-
Optimization of Memory




Download C.Basic

Download Latest Verion, store in proper folder and unzip the downloaded file (ZIP file). CBASIC.G1A in there is C.Basic Add-in File.


Install FA-124A to your PC

If you want to install FA-124A in your favorite launguage, you should use CD which is included in your fx-9860GII package and select your favorite language before the installation.

▲Back to Top


Import C.Basic at FA-124A

Start up FA-124A

When FA-124A is started up, Main Memory mode is selected, in this mode Calc icon button is pushed in.
When mouse cursor comes over the Calc icon button, "Main" is popped up.

FA124A_Start

Left pane shows files in Calc and right pane shows files imported in FA-124A of your PC. Now you use right pane to import C.Basic Add-In file (CBASIC.G1A) at FA-124A.

fx-9860GII has Main and Storage memory, so FA-124A has also Main and Storage memory mode which you can siwtch each other. At starting-up, FA-124A is in Main memory mode.

An add-in program is installed and used in Storage memory of fx-9860GII. Since C.Basic should be transferred to Storage memory, you should switch FA-124A to Storage memory mode.  


 Switch to Storage Memory Mode

In right pane, click "Storage " mode button (on the right side of Calc icon button) to switch to Storage mode.

FA124A_Storage


 Import C.Basic to FA-124A

Click on "Default" by right button of your mouse, then select "Import" at pop-uped menu.

FA124A_Import

Then Insert CASIO File dialog is shown, where,
- select folder where CBASIC.G1A is stored,
- select file type as G1A File(*.g1a),
- select CBASIC.G1A,
and click Open(O) button.

Then check if there is CBASIC.g1a in file list at right pane.

FA124A_CBASIC

▲Back to Top


Transfer C.Basic to fx-9860GII

Connect fx-9860GII to FA-124A

Connect fx-9860GII to PC by USB cable, you will see following pop up window (Select Connection Mode) at your calc.

SelectConnectionMode 

Then push [F1] (DataTrans), then click very left button ("Connect" button) in left pane of FA-124A.

FA124A_Connect

Waiting until connection is completed, then you will see "User1" in left pane.

FA124A_Connected


Transfer C.Basic

Push left button of your mouse on the Impoted CBASIC.g1a in right pane and drug to "User1" in left pane then drop it (Drug & Drop).

FA124A_Drag_Drop

Check if there is CBASIC.g1a in file list of left pane.

FA124A_Moved


Check Transferred C.Basic

With your fx-9860GII, push [MENU] key to show MAIN MENU and check if there is C.Basic icon.

MAIN_MENU_CBasic 

Select C.Basic ison and push [EXE] key to run C.Basic.

Starting up C.Basic, you will see File List screen and key in [SHIFT][MENU](SET UP), C.Basic Setup menu is shown.

CBasic_Setup 

In Function menu shown in bottom, push [F6](Ver.) key to show version of C.Basic and check is correct version is installed.

CBasic_Ver 

▲Back to Top


Optimization of Memory

C.Basic itself (add-in file) and Casio Basic source files should be installed in Storage memory. After meny times of file writing, files are fragmanted and actually usable memory size is getting descreased. Optimization solves the fragmentation to get back usable memory area. It's recommended to carry out memory Optimization at the installation or update of C.Basic.

Push [MENU] to show MAIN MENU and select Memory icon,

MENU_Memory 

Push [EXE] key to start Memory Manager.

MemoryManager 

Then push [F5] (F5: Optimization) key to run memory Optimizarion feature.

▲Back to Top








テーマ : プログラム関数電卓
ジャンル : コンピュータ

C.Basicのインストール

C:Basic - アドイン Casio Basic
<トップページ>

内容の更新や修正を随時行います.

2016/03/27


C.Basic の使い方



C.Basicのインストール

C.Basic の初めてのインストールや最新バージョンへのアップデートを行う時、ダウンロードした C.Basic のプログラムファイルを fx-9860GII に転送する。転送には、fx-9860GII に添付されている PCリンクソフト FA-124A とUSBケーブルを使う。

簡単に言えば、アドインプログラムである C.Basic プログラムファイル (CBASIC.g1a) を、一旦 FA-124A に登録した後(読み込んだ後)、FA-124A上の操作で PC へ転送するのが大きな作業の流れになる。

- C.Basic をダウンロードする

- FA-124A をインストールする

- C.Basic を FA-124A に登録する
 ・FA-124A を起動する
 ・FA-124A でストレージメモリに切り替える
 ・C.Basic を FA-124A にインポート (Import) する

- C.Basic を fx-9860GII へ転送する
 ・FA-124A を fx-9860GII に接続する
 ・C.Basic を転送する
 ・転送を確認する

- メモリを最適化する




C.Basicをダウンロードする

最初に、最新バージョンをダウンロードし、適当なフォルダに解凍して保存する。拡張子が G1A の CBASIC.G1A ファイルが C.Basic のプログラムファイルだ。


FA-124A をインストールする

FA-124Aの日本語マニュアルを併せてインストールするには、fx-9860GII に添付されているCDから言語に「日本語」を選んでインストールする。

▲Top に戻る


C.Basic を FA-124A に登録する

FA-124A を起動する

FA-124A を起動する。右ペインのツールバーに電卓のボタンが選択された状態になっている。
電卓のボタンにマウスを持ってくると、Main とポップアップされる。これは、メインメモリが選択されたことを示す。

FA124A_Start

左ペインが電卓内のファイルの状況を示し、右ペインがPCにあるファイルの状況を示す。今は右ペインに注目する。

fx-9860GII には、メインメモリとストレージメモリの2種類が内蔵されている。それに会わせて、FA-124A ではメインメモリとストレージメモリを切り替えて管理するようになっていて、起動した直後はメインメモリが選択されている。

アドインプログラムである C.Basic はストレージメモリに転送して使うので、ダウンロードした C.Basic はストレージメモリへ転送する必要がある。従って、起動時に メインメモリの状況を表示している FA-124A を、ストレージメモリの状況を示すように切り替える必要があるわけだ。 


 FA-124A でストレージメモリに切り替える

右ペインで、メインメモリの電卓ボタンの右にあるストレージメモリのボタンをクリックすると、ストレージメモリの状況を示す画面に切り替わる。

FA124A_Storage


 C.Basic を FA-124A へインポート(Import)する

右ペインに表示されている "Default" でマウスを右クリックして、メニューから "Import"をクリックする。

FA124A_Import

ここで現れる Insert CASIO File ダイアログで、

・ ファイルの場所(I): で CBASIC.G1A ファイルを保存したフォルダを選び、
・ ファイルの種類(T): で G1A File(*.g1a) を選び、
CBASIC.G1A を選んで、[開く(O)] ボタンをクリック。

FA124A_Select 

右ペインに、CBASIC.g1a が追加されていることを確認する。

FA124A_CBASIC

▲Top に戻る


C.Basic を fx-9860GII に転送する

fx-9860GII を FA-124A に接続する

fx-9860GII と PC をUSBケーブルで接続すると、fx-9860GII の画面に コネクションモードの選択画面 (Select Connection Mode) が現れる。

SelectConnectionMode 

ここで、[F1] (DataTrans) を押し、次にFA-124A のペイン (今度はペイン) に並んでいるボタンの一案左にある "Connect" ボタンをクリックすると、

FA124A_Connect

接続プロセスの進行状況が表示された後、fx-9860GII が FA-124A に接続される。

接続が完了すると、ペインに "User1" の表示が現れる。

FA124A_Connected


C.Basic を転送する

既に Import して 右ペインにある CBASIC.g1a にマウスカーソルを合わせてドラッグして、ペインの User1 でドロップする (ドラッグ&ドロップ)。

FA124A_Drag_Drop

初めてインストールした場合は、ペインの User1 をクリックして展開して、CBASIC.g1a が有れば、転送が成功している。

FA124A_Moved


転送を確認する

fx-9860GII で [MENU] キーを押して、MAIN MENU を表示してC.Basic アイコンが有ることを確認し、

MAIN_MENU_CBasic 

C.Basic アイコンを選んで [EXE] キーを押して、C.Basic を起動する。

起動すると、File List 画面になるので、そこで [SHIFT][MENU](SET UP) とキー操作すると、C.Basic のセットアップメニューが表示される。

CBasic_Setup 

一番下の行にあるファンクションメニューで、[F6](Ver.) を押して C.Basic のバージョンを表示し、正しいバージョンがインストールされていることを確認する。

CBasic_Ver 

▲Top に戻る


メモリを最適化する

C.Basic 本体や、C.Basic で使う Casio Basic プログラムファイルは、いずれもストレージメモリに格納して使う。メモリへの書き込みを繰り返すと、ファイルの断片化が進んで実際に使えるメモリ容量が減ってしまうので、定期的にメモリの最適化作業を行う必要がある。そこで、C.Basic 本体を転送するタイミングでのメモリの最適化を勧める。

[MENU] キーを押して、MAIN MENU から Memory アイコンを選び、

MENU_Memory 

[EXE] キーで、Memory Manager を起動する。

MemoryManager 

ここで、[F5] (F5: Optimization) を押して、メモリの最適化を実行する。

Top に戻る





応援クリックをお願いします。励みになるので...

人気ブログランキングへ


FC2ブログランキングへ







keywords: fx-9860GIICasioBasic、プログラミング入門グラフィックスプログラム関数電卓

リンク集 | ブログ内マップ




テーマ : プログラム関数電卓
ジャンル : コンピュータ

C:Basic プロジェクト

アドイン版 Casio Basic
<トップページ>

誤字脱字・記載ミスや分かりにくい表現は随時追記・修正します

動画追加 2015/11/15
改訂 2015/12/06
最終更新 2016/02/11


※ 最新バージョンは <トップページ>からダウンロードできます. 


C:Basic とは?

コーディングが楽な Casio Basic を使って、高速なプログラムを作りたい...
そんな望みに応えるために、Casio Basic が高速で動作する環境をアドインで提供する試みが C:Basic プロジェクトです。

C:Basic: アドインCasio Basic インタープリタ & コンパイラ

現在のところ、インタープリタ C.Basic (ドット1個) の開発段階です。C.BasicC:Basic の一部です。


1. 高速動作
グラフ関数電卓 fx-9860GII の 純正 Casio Basic のグラフィックス描画はとても遅く、127×63 ドットの画面を点で埋めるには、かなり待たされます。また、計算量の多いプログラムも、かなり遅くなります。純正 Casio Basic のプログラムソースをそのまま高速動作できるのがC:Basic です。


2. Casio Basic の上位互換の言語仕様
純正 Casio Basic のソースがそのまま使えることを基本に、より便利になるような機能や高速化を実現するような独自機能を追加してゆきます。


3. 電卓で完結する開発環境
プログラムの作成・編集の全てを電卓上で行えて、パソコン不要の開発環境です。C:Basic はアドインとして提供されます。純正 Casio Basic 準拠のエディタも内蔵して、むしろ純正よりも使いやすくなっていると思います。さらに、作ったプログラムを少ない手数で呼びだせる機能を持たせるなど、fx-5800P を超える利便性を fx-9860GII で実現する開発&実行環境です。
純正 Casio Basic にはないデバッグ機能も搭載 (Ver 0.99以降)。


4. 高速・高性能インタープリタ(+コンパイラ)
・インタープリタで高速動作させたい!
・ビットマップグラフィックスをプログラミングをしたい!
ライフゲーム Ver 0.73 (C.Basic Ver 0.70 ~ 0,99l に対応) / ライフゲーム Ver 0.74 (C.basic Ver 0.63 以降) を作って確認しました。

将来予定しているコンパイラ版の可能性を見るために、ライフゲーム のプログラム中、繰り返し処理で時間のかかる部分を sentaro様がごっそりとコマンド化してみたものを使ってライフゲーム Ver 0.83 (C.Basic Ver 0.73 ~ Ver 0.99l に対応) / ライフゲーム Ver 0.84 (C.Basic Ver 0.93 以降) を作りました。

コマンド化=ネイティブコード化、なのでコンパイラ版に近い処理速度になります。以下の動画で示している初期パターンで517世代までの時間を計ると、この動画(C.Basic Ver 0.73で撮影) の 20倍の高速化、C.Basic Ver 0.83 に対しては10倍の高速化となりました!
コンパイル版のさらなる高速化が期待できそうです。

※ 現在は、インタープリタのみ実装しているので、C.Basic です。コンパイラ実装時には、・が1個増えて C:Basic となります。


▋ プロジェクトメンバー
  • 設計&作成: sentaro様
  • サンプルプログラム作成&テスト、マニュアル&コマンドリファレンス作成: 管理人(私)
  • 有志の方 (2016/02/01時点でアクティブな方: ガノー様)
今のところ、細かいやりとりは e-Gadget 開設2周年 のコメント欄で行われています。
[2015/12/12 追記]
その後の流れで、このエントリーのコメント欄に移ってきた感じ...


C.Basic テスト版

安定(と思われる)最新バージョンはこちらから
  • ZIPファイルで提供
  • ソースファイル(C言語)を公開
  • ソースファイル中にある CBASIC.G1A がアドインプログラム
  • CBASIC.G1A を fx-9860GII へインストール
  • 基本的な使い方は、ソースファイル中にある README_J.txt を参照。大きなバージョンアップの際に更新される傾向。

C.Basic 用サンプルプログラム

 当ブログ掲載の fx-9860GII 用純正 Casio Basic 用プログラムは、C.Basicで動作すると思います。

ここでは、以下の2つのサンプルプログラムで、C.Basicの良さを紹介します。


多桁円周率計算
Casio Basic 互換で動作する

⇒ ダウンロード: 多桁円周率計算プログラム
  - メインプログラムとサブルーチンの2つをダウンロード。
  - 実行は、メインプログラム PICALC5 を起動。

※ 計算量の多い 純正 Casio Basic プログラムをそのまま使って、C.Basic での高速化を評価する事例です。

使い方:
1) Picalc5を起動
2) 計算したい桁数を入力
3) [EXE] で計算開始
4) 計算終了すると、結果表示
5) [EXE] 押すたびに10桁表示
6) 最後まで表示したら [EXIT] でプログラム終了

※ 計算量の多いプログラムを使って、処理速度を評価する事例です。
  • 円周率を100桁、1000桁 と多くの桁まで正しく計算するプログラム。
  • Casio Basic のプログラムは、そのまま c.Basic で動作します。
純正 Casio Basic に比べて C.Basic の高速性が分かります!

<< C.Basic Ver 0.74 >>
実行環境桁数ノーマルクロック
29MHz
オーバークロック
236MHz
Casio Basic10087秒16秒
C.Basic ver 0.741006秒1秒
C.Basic ver 0.741000360秒36秒
※ オーバークロックを併用した時の効果も一目瞭然です。

<< C.Basic Ver 0.80 >>
実行環境桁数ノーマルクロック
29MHz
オーバークロック
236MHz
Casio Basic10087秒16秒
C.Basic ver 0.801004.8秒<1秒 (測定不能)
C.Basic ver 0.801000219秒33秒
※ C.Basic Ver 0.80 で処理速度が向上しています!


ライフゲーム
C.Basic 独自拡張機能で動作する

ダウンロード:
  ライフゲーム Ver 0.74 (C.Basic Ver0.63 以降に対応)
  ※ 最新の C.Basic Ver 0.99m 以降でも動作するようにVer 0.73 からバージョンアップ
  ※ 実行速度は変わりません。
  
  - メインプログラムとサブルーチンの2つをダウンロード
  - 実行は、メインプログラム LIFE074 を起動。
  C.Basic の独自拡張機能を使っているので、純正 Casio Basic では動作しません。

※ 計算量が多く、さらにグラフィックス負荷の大きなプログラムを使って、処理速度を評価する事例です。

さらに高速化するオーバークロック・ツール Ftune2 を併用した結果をご覧いただく;

1. C.Basic Ver 0.74ライフゲーム Ver 0.73 を動作させた時
 
C.Basic Ver 0.74ライフゲーム Ver 0.73 を実行したとき

2. C.Basic Ver 0.83ライフゲーム Ver 0.73 を動作させた時

C.Basic Ver 0.83 に進化すると、約2倍高速化している

3. C.Basic Ver 0.83ライフゲーム Ver 0.83 を動作させた時

※ 一部ネイティブコードを採用したライフゲーム Ver 0.83 は、さらに10倍高速化
C:Basic (コンパイラ版) の高速化の可能性を示唆している。

ダウンロード:
  ライフゲーム Ver 0.84 (C.Basic Ver 0.63 以降に対応)
  ※ 最新版 C.Basic Ver 0.99m 以降でも動作するように Ver 0.83 からバージョンアップ
  ※ 実行速度は変わりません

※C-Basicの処理速度の変遷: 変化がなくなる517世代までの時間: [時間(相対速度)] 2016/05/02更新
C.Basic のバージョンVer0.74Ver 0.80Ver 0.83aVer 0.99m
ノーマルクロック (29MHz)796秒 (0.4)347秒 (0.94)325秒 (1.0)330秒
オーバークロック (236MHz)115秒 (2.8)51秒 (6.4)48秒 (6.8)52秒
オーバークロック (280MHz)95秒 (3.4)43秒 (7.5)40秒 (8.1)44秒

C.Basic のバージョンアップに伴う機能追加にも関わらず、今のところ大きな速度低下はみられない。
Ver 0.83a では過去最高速度を示したが、それ以外は概ね Ver 0.80 と同等レベルを維持している。

※ ライフゲーム Ver 0.74 の詳細は、ライフゲーム を参照してください。
※ このプログラムは、高速化ツール Ftune2 併用を推奨します。



グラフ関数電卓の高速化ツール

CPU の性能を引き出して、電卓そのものを高速化できる、オーバークロックツールを紹介します。

fx-9860GII の高速化 - Ftune2 の導入
fx-9860GII のオーバークロック - Ftune2 -

高速化を極めたい場合は、C.BasicFtune2 と併用すると良いでしょう。



Top へ戻る




応援クリックをお願いします。励みになるので...

人気ブログランキングへ


FC2ブログランキングへ







keywords: fx-9860GIICasioBasic、プログラミング入門グラフィックスプログラム関数電卓

リンク集 | ブログ内マップ



テーマ : プログラム関数電卓
ジャンル : コンピュータ

アクションゲーム - DRAGON

アドイン版 Casio Basic 用サンプルプログラム
<トップページ>

誤字脱字・記載ミスや分かりにくい表現は随時追記・修正します

2016/01/15


アクションゲーム - DRAGON

ガノー様から、C.Basic 独自拡張機能を活用したアクションゲーム - DRAGON をご紹介頂きました

どのようなゲームかは、以下をご覧下さい。

 

C.Basic の独自拡張機能をうまく使って、グラフィックスを活用したゲームです。

ゲーム自身、スピードや乱数利用のパラメータがうまく調整されていて、飽きない設計になっていると思います。
私は、とりあえずハマりました。

操作は、ドラゴンの上昇と下降を切り替えるのは、[AC][EXIT][0] 以外のキー(何でも良い)を押します。どうにも切り抜けられない際に [0] キーで BOM を発動します。ちなみに BOM は3回分しかありません。

このプログラムは、純正 Casio Basic では動作せず、C.Basic の独自拡張機能を用いた事例です。ソースファイルを見ると良い勉強になります。改変は認められているので、自分用に改造して遊ぶのも良いと思います。



プログラムのダウンロード

 ⇒ アクションゲーム - DRAGON by ガノー

ダウンロードしたZIPファイルには、DRAGON.g1m と説明のテキストファイル readme.txt が含まれています。
この g1m ファイルを fx-9860GII に転送し、DRAGON を実行するとゲームが始まります。



動作確認

なお、C.Basic Ver 0.93 で動作確認しています。


readmeファイルの紹介

----------------------------------------
DRAGON.G1M - Sorry, Japanese only!
twitter:garnot1
----------------------------------------
1.概要

C.Basic(sentaro様作)で動作する
横スクロールドット避けゲームです。

2.前振り

あなたは生まれたての伝説のドラゴン。
未来人はあなたの生まれることを察知して
いた。そんな彼らはあなたを捕えようと
空中に機雷を散布して待ち構えていた。

3.遊び方

AC/EXIT/0以外のキーを押すと、進行方向を
変更します。

ドラゴンであるあなたは、0キーを押して
「ドラゴンの咆哮」を使うことができます。
これは機雷はもちろん、周囲の山々をも
一掃する火力を持っています。
ただし、一生を通して3回しか行えません。

EXITで終了します。

4.添付のソースに関して

C.Basicでのみ動作します。
C.Basicはsentaro様により開発されて
います。最新の情報は、以下のサイト
(管理者:やす様)から得られます。

http://egadget.blog.fc2.com/

このゲームは再配布、改造、何でもあり
です。

解説はソースコード内部をご覧ください。








応援クリックをお願いします。励みになるので...


人気ブログランキングへ


FC2ブログランキングへ







keywords: fx-9860GIICasioBasic、プログラム関数電卓、C.Basic、C:Basic

リンク集 | ブログ内マップ



テーマ : プログラム関数電卓
ジャンル : コンピュータ

最新記事
最新コメント
カテゴリ
C# (3)
検索フォーム
Visitors
Online Counter
現在の閲覧者数:
プロフィール

やす (Krtyski)

Author:やす (Krtyski)
since Oct 30, 2013


プログラム電卓は、プログラムを使ってナンボ!

実際に触って気づいたこと、自作プログラム、電卓プログラミングについて書いています

おもしろい・役に立つならクリックしてください。励みになります。
にほんブログ村 IT技術ブログ 開発言語へ
にほんブログ村


人気ブログランキングへ


FC2ブログランキングへ


写真: 「4駆で泥んこ遊び@オックスフォード郊外」

リンク
月別アーカイブ
Sitemap

全ての記事を表示する

RSSリンクの表示
最新トラックバック
ブロとも申請フォーム

この人とブロともになる

QRコード
QR