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、プログラミング入門グラフィックスプログラム関数電卓

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



関連記事

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

コメントの投稿

非公開コメント

Re: アドイン版 C.Basic ver.1.64ベータ版(行列を数値でアクセス、行番号改善、Monochromeライブラリ系コマンド増強版)

sentaro様、C.Basicユーザーの皆様

管理人のやすです。

バージョンアップ対応しました。

http://egadget2.web.fc2.com/CBasic/archives/programs/CBasic/CBasic_versions_JP.html

http://egadget2.web.fc2.com/CBasic/archives/programs/CBasic/CBasic_versions.html

http://egadget.blog.fc2.com/blog-entry-491.html


これから使ってみます。

アドイン版 C.Basic ver.1.64ベータ版(行列を数値でアクセス、行番号改善、Monochromeライブラリ系コマンド増強版)

管理人様、C.Basicユーザーの皆様、こんにちは!

Ver.1.61以降、Listが1000以上まで使えるように増量されましたが、実体は行列と共用しているので行列でも増量した部分へのアクセスが出来るように仕様追加しました。

あと、エディタの行番号表示ですが、従来の画面上の1行を1行と数えていく物理行はかなり無理があったので、改行コード(CR)を改行と数える論理行に変更しました。
この変更により、テキスト変換したソース・プログラムをPC上でテキストエディタで開いた場合の行番号とC.Basicのエディタでの行番号を一致させることができるようになります。

Monochromeライブラリ系コマンドの追加は、拡大縮小を一度に行うコマンドの追加と、任意箇所のスクロールが出来るように仕様追加しました。


アドイン版 C.Basic ver.1.64ベータ版(行列を数値でアクセス、行番号改善、Monochromeライブラリ系コマンド増強版)
http://pm.matrix.jp/CB/CBASIC164beta.zip
・エディタの行番号表示での行番号を画面上の物理的な行ではなく改行までを1行とする論理行に変更しました。

・行列名の指定を数値で出来るように拡張しました。
 行列のアクセスは純正同様にMat+英1文字以外に、Listと同じく数値で指定できるようになりました。
 (θ、r、Ansは数値指定できません。)
 Mat A = Mat 1
 Mat B = Mat 2
 Mat C = Mat 3
 Mat Z = Mat 26
 Mat a = Mat 27
 Mat z = Mat 52

 さらに"@"を付けると行列名を変数で指定することも出来ます。
 (コマンド入力方式がスタンダードモードでは[OPTN][F5]で"@"を入力できます。)
 (例)3->A
  Mat @A (Mat Cと同じです)

 Listの拡張で行列も同様に最大1040まで拡張されます。(Ver.1.61以降)

 この拡張により従来のバージョンでの小文字名の行列はList 1~26ではなくList 27~52に変更になります。
 Mat A~ZとList 1~26は互いに独立した領域に確保されます。
 小文字以降の行列はリストと共用するために27以降の行列=小文字行列はリストと同じ領域を使用します。(Ver.1.64以降)
 53以降の行列は数値のみ指定できます。
Mat 1 = Mat A ( List 1 と同じではありません。)
Mat 2 = Mat B ( List 2 と同じではありません。)
Mat 3 = Mat C ( List 3 と同じではありません。)
Mat 26 = Mat Z ( List 26 と同じではありません。)
Mat 27 = Mat a ( List 27 と同じです。 )
Mat 28 = Mat b ( List 28 と同じです。 )
Mat 29 = Mat c ( List 29 と同じです。 )
Mat 52 = Mat z ( List 52 と同じです。 )
Mat 100 = List 100
Mat 1000 = List 1000

 Mat a[5, 1] = Mat 27[5,1] = List 27[5]
 Mat b[5, 1] = Mat 28[5,1] = List 28[5]
 Mat c[5, 1] = Mat 29[5,1] = List 29[5]
 Mat z[5, 1] = Mat 52[5,1] = List 52[5]

 List 53[5] = Mat 53[5, 1]
 List 100[5] = Mat 100[5, 1]
 List 1000[5] = Mat 1000[5, 1]

 (例)100->A
  Mat @A (Mat 100、List 100と同じです)


・乱数の初期値を変数で指定できるようになりました。
(書式)Ran# #初期値
 (例)Ran# #12345
 (例)Ran# #A

・Monochromeライブラリ系コマンドに拡大縮小と回転処理を同時に加えてビットマップ表示する"_BmpZoomRotate"コマンドを追加しました
(Planet-CasioよりNinestars氏がMonochromeライブラリに機能追加したプログラムを利用させて頂いています)
(書式)_BmpZoomRotate &Mat , x, y, width, height [,横拡大幅] [,縦拡大幅] [,回転角(度)] [,color][,確率]
 (例) _BmpZoomRotate &Mat A, 0, 0, 20, 10, 1.5, 2.5, 90
 (例)_BmpZoomRotate &Mat A, 0, 0, 20, 10, %150, %250 , 15, 4, %50

・Monochromeライブラリ系コマンドのスクロールコマンドが範囲指定可能になりました。
(書式)_Hscroll スクロール量 [,x1,y1,x2,y2]
(書式)_Vscroll スクロール量 [,x1,y1,x2,y2]
(例)_Hscroll 1,32,16,47,95
 (32,16)-(47,95)のエリア内を右向きにスクロールします。
(例)_Vscroll -1,5,10,100,40
 (5,10)-(100,40)のエリア内を上向きにスクロールします。

Re:Re: アドイン版 C.Basic ver.1.63ベータ版(シリアル通信コマンド追加版)

管理人様、こんにちは!

>取り急ぎ、最新版 Ver 1.63 beta のダウンロードリンクを作りました。
http://egadget.blog.fc2.com/blog-entry-495.html
>併せて、英語版 / 日本版 のWebページも改訂しておきました。
http://egadget2.web.fc2.com/CBasic/archives/programs/CBasic/CBasic_versions.html
http://egadget2.web.fc2.com/CBasic/archives/programs/CBasic/CBasic_versions_JP.html

早速にありがとうございます!


>おっと、以前私もハマったことがありますが、完全に忘れていました。これは追記した方が良いかもしれませんね。

はい、ちょっと危ないコマンド集という感じで、よろしくです。(^^;


>トップページにもこの感じで変更しておきました。
>ついでに、Ftune2、Ptune2、Ptune3 の記事へのリンクも追加しています。

ありがとうございます!
Ptune3は早いとこ正式バージョンにしないといけないのですがまだちょっと機能的に中途半端なので留まっています。(^^;


>彼に fx-CG50 を買ってきてもらうのが最初のプランでしたが、eBayの方が遙かに早かったわけです。

一ヶ月早かったわけですね。(^^)


>なので、アップデート内容の説明は、「行番号機能を修正しました」とお書きになったほうが良いですね。

はい、そのように修正しておきました。(^^)

行番号機能については、ミニフォント対応でドット単位で改行位置を算出する必要があって、行数が増えるに従って負荷が高くなるので、長い行数のプログラムだとちょっと表示に遅れが出てきます。
で、1.60より一応試験的に実装してましたが、ページ移動やカット&ペースト等で行番号が合わなくなる不具合があったので正式サポートにはしてませんでした。(^^;
今回1.63でやっとその不具合が修正できた(と思われる)ので正式にという形でした。

まだフォルダのリネーム等、簡単に実装出来ると思ったら出来なかった等で実装出来ていない機能もありますので、それらは今後のバージョンアップで実装していきます。(^^;

[訂正] 行番号について

sentaro様

追記訂正です(^^;


>今改めてじっくりと行番号機能を使ってみたのですが、

>SET UP で EditTopLine を on にすると、行番号は 1: から始まりますが、EditTopLine を off にすると 2: から始まります。

>これは仕様ですか?
>仕様とすれば、背景をお聞かせください。


スミマセン、1.62 beta では上記の症状がありましたが、1.63 beta では修正されていました。

行番号の表記も コロンが無くなっていますね!

失礼しました。

なので、アップデート内容の説明は、「行番号機能を修正しました」とお書きになったほうが良いですね。



Re: Re:アドイン Casio Basic - トップページを修正・更新しました

sentaro様


> 引数の型が合ってないとシステムエラーになるSprintf(コマンドやメモリアクセスコマンドがあるので危険性は多々ありますが、通常コマンドレベルではほぼ100%安全と言えると思います。(^^)
>

おっと、以前私もハマったことがありますが、完全に忘れていました。これは追記した方が良いかもしれませんね。



> いいですね。賛成です。(^^)


トップページにもこの感じで変更しておきました。
ついでに、Ftune2、Ptune2、Ptune3 の記事へのリンクも追加しています。

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



> >掲示板 (http://egadget.bbs.fc2.com/) に書いたように、このブログの右のメニューが出なくなっている問題の対処に時間がかかってしまい、以前からアップしようと思っていた記事を一気に公開してこの盆休みは終わってしまいました。
>
> なんと…ひょんなところに伏兵が…という感じですね。
> 無事直って何よりです。


最初はチョット焦りました(^^;
ブログは、既にあるテンプレートの html があって、その上で書き込む記事の html がテンプレートに悪影響を与える可能性があることがよく分かりました。


> 今年は海外からの提案&要望で進化してきたところが多いので、リンクは助かります。


そうなんです、自分のためもしっかりあるんです。


> >来週は、一週間の長期出張のためチョット沈みがちになります -> 編集長への業務連絡(^^;
>
> 了解です!(^^ゞ


来週は、ドイツ人と一緒に国内を出張するのですが、彼を今日空港まで迎えに行きました。連休最後の日ということもあって、空港は凄く混雑していて、駐車場に入るのに結構待たされました。

彼に fx-CG50 を買ってきてもらうのが最初のプランでしたが、eBayの方が遙かに早かったわけです。


Re: アドイン版 C.Basic ver.1.63ベータ版(シリアル通信コマンド追加版)

sentaro様、C.Basicユーザーの皆様


取り急ぎ、最新版 Ver 1.63 beta のダウンロードリンクを作りました。
http://egadget.blog.fc2.com/blog-entry-495.html

併せて、英語版 / 日本版 のWebページも改訂しておきました。

http://egadget2.web.fc2.com/CBasic/archives/programs/CBasic/CBasic_versions.html

http://egadget2.web.fc2.com/CBasic/archives/programs/CBasic/CBasic_versions_JP.html




> 昨年、ガノー様よりfx-9860GIIとラズパイの通信の話題があった時に、C.Basicにも通信コマンドをという課題があったのですが、管理人様も複数台になりましたし、Emex氏からも追加で通信コマンドのリクエストがありましたので、一年越しでやっとこ実装することが出来ました。


これは、大変お疲れ様でした。



> .エディタの行番号表示をサポートしました。

これは既に実装されていませんか?

アドイン版 C.Basic ver.1.63ベータ版(シリアル通信コマンド追加版)

管理人様、C.Basicユーザーの皆様、こんにちは!

昨年、ガノー様よりfx-9860GIIとラズパイの通信の話題があった時に、C.Basicにも通信コマンドをという課題があったのですが、管理人様も複数台になりましたし、Emex氏からも追加で通信コマンドのリクエストがありましたので、一年越しでやっとこ実装することが出来ました。
通信コマンドは関連するシステムコールが用意されているとはいうものの、単体でのデバッグやSDKでのデバッグが出来ないので通常コマンドに比べて動作確認がちょっとやっかいでしたけど、なんとか動作する形で実装できました。
CasioBasicにも純正の通信コマンドがありますが、CasioBasicでの通信プログラムが動作確認できていないのと、どういう形で通信しているかが分かってないので、C.Basic独自の実装となっております。(^^;


アドイン版 C.Basic ver.1.63ベータ版(シリアル通信コマンド追加版)
http://pm.matrix.jp/CB/CBASIC163beta.zip
・シリアル通信をサポートしました。(純正と同名コマンドですが純正との互換はありません。)
(書式)Send( 変数[,ボーレート])
(書式)Recv( 変数[,ボーレート])
(書式)Send38K 変数[,転送バイト数]
(書式)Receive38k 変数[,転送バイト数]
(書式)OpneComport38K[,ボーレート][,転送モード]
(書式)CloseComport38K
 転送できるデータは変数、行列、リストとなります。
 転送元と転送先でデータの型を合わせる必要があります。
 Send38K/Receive38kはOpneComport38Kにて[転送モード]に0を指定するとバイナリデータの転送になります。
 [ボーレート値]:0=300, 1=600, 2=1200, 3=2400, 4=4800, 5=9600, 6=19200, 7=38400(デフォルト), 8=57600, 9=115200 baud
 [転送モード] 0:バイナリ転送モード  1:データ形式自動判別モード(デフォルト)
 Send(とRecv(はコマンド単独で転送出来ますが、Send38K/Receive38kはOpneComport38K/CloseComport38Kが必要です。

(例)Send(A)
(例)Recv(A)
(例)Send(Mat A)
(例)Recv(Mat A)

(例)OpneComport38K,9,0
   Send38K List 1
   CloseComport38K
(例)OpneComport38K,9,0
   Receive38k List 1
   CloseComport38K

.エディタの行番号表示をサポートしました。

簡単な通信サンプルプログラムはC.Basic_sampleフォルダ下にあります。

Re:アドイン Casio Basic - トップページを修正・更新しました

管理人様、こんにちは!

>アドイン Casio Basic - トップページ を更新しました。
http://egadget.blog.fc2.com/blog-entry-495.html

毎度お手数おかけしております。


>C.Basic が電卓に与える危険性はほぼ無くなったと思うので、使用上の注意点について、バックアップ推奨、とだけ記述するように変更しました。

引数の型が合ってないとシステムエラーになるSprintf(コマンドやメモリアクセスコマンドがあるので危険性は多々ありますが、通常コマンドレベルではほぼ100%安全と言えると思います。(^^)


>あと、Ftune2 については、オーバークロックツールというよりはチューンアップツールという表現に変えました。当ブログでは今後徐々にこの表現に変更してゆくつもりです。
>CPUコアクロックだけに着目するよりも、特にBFCなど他に目を配った方が高速化することから、このような表現のシフトを考えています。

いいですね。賛成です。(^^)


>掲示板 (http://egadget.bbs.fc2.com/) に書いたように、このブログの右のメニューが出なくなっている問題の対処に時間がかかってしまい、以前からアップしようと思っていた記事を一気に公開してこの盆休みは終わってしまいました。

なんと…ひょんなところに伏兵が…という感じですね。
無事直って何よりです。


>トップページも、少しスッキリさせました。そして、アドインCasio Basic のところで、C.Basic 国際デビュー の項目を追加して、UCF の C.Basic トピックへのリンクを新設しました。このリンク自体にあまり意味は無いのですが、国際デビューして海外のユーザーの要望をどしどし取り入れていることを示す意味があります。
何かの時に、このリンクが役立つかも知れないと思っています。

ありがとうございます!
今年は海外からの提案&要望で進化してきたところが多いので、リンクは助かります。


>来週は、一週間の長期出張のためチョット沈みがちになります -> 編集長への業務連絡(^^;

了解です!(^^ゞ

アドイン Casio Basic - トップページを修正・更新しました

sentaro様

アドイン Casio Basic - トップページ を更新しました。

http://egadget.blog.fc2.com/blog-entry-495.html

C.Basic が電卓に与える危険性はほぼ無くなったと思うので、使用上の注意点について、バックアップ推奨、とだけ記述するように変更しました。

あと、Ftune2 については、オーバークロックツールというよりはチューンアップツールという表現に変えました。当ブログでは今後徐々にこの表現に変更してゆくつもりです。

CPUコアクロックだけに着目するよりも、特にBFCなど他に目を配った方が高速化することから、このような表現のシフトを考えています。


掲示板 (http://egadget.bbs.fc2.com/) に書いたように、このブログの右のメニューが出なくなっている問題の対処に時間がかかってしまい、以前からアップしようと思っていた記事を一気に公開してこの盆休みは終わってしまいました。

トップページも、少しスッキリさせました。そして、アドインCasio Basic のところで、C.Basic 国際デビュー の項目を追加して、UCF の C.Basic トピックへのリンクを新設しました。このリンク自体にあまり意味は無いのですが、国際デビューして海外のユーザーの要望をどしどし取り入れていることを示す意味があります。
何かの時に、このリンクが役立つかも知れないと思っています。

来週は、一週間の長期出張のためチョット沈みがちになります -> 編集長への業務連絡(^^;


Re: セットアップ画面の日付時刻表示の不具合

sentaro様

> セットアップ画面での日付時刻表示が関係ないところに表示されることのある不具合を修正しました。(と思います(^^;
>
> 例によって差し替え修正しております。
> http://pm.matrix.jp/CB/CBASIC162beta.zip


早速頂きました。DATE/TIME表示の表示の問題は解消されているようです。
ありがとうございます。


セットアップ画面の日付時刻表示の不具合

管理人様、こんにちは!

セットアップ画面での日付時刻表示が関係ないところに表示されることのある不具合を修正しました。(と思います(^^;

例によって差し替え修正しております。
http://pm.matrix.jp/CB/CBASIC162beta.zip

Re: Re:Re: アドイン版 C.Basic ver.1.62ベータ版(ヒストリー機能+行列ドットエディタ+α増強版)

管理人様、こんにちは!

>前掲の3つのページには、本日日付けでマイナーアップデートとして更新しました。

早速にありがとうございます!(^^)


>Force Return 項目で EXE を指定して、望みの動作になることを確認しました。

当面は、こんな感じでだいじょうぶでしょうか。(^^)


>面倒なので、すました顔して新たにRegisterしてみようかな、と...

何はともあれログインできないことには始まらないので、新規で何も問題ないと思います。(^^)


>実は、本日 fx-9860GII SD が届きまして、早速SD機の利便性を実感しました。
>...というのは、C.Basic Ver 1.61beta と 1.62 beta の両方の g1a ファイルをSDにコピーしておけば、バージョンの切り替えが簡単にできます。

そうなんです。アドインをたんまり置いておけるのでPC接続無しで使うのに便利ですよね。


>で、一旦 1.61 beta に戻してお気に入りの正常動作を確認後、1.62 betaに切り替えてお気に入りの動作を確認したところ正常でした。
>何か私が勘違いしたのか、どうもよく分からないのですが、問題なさそうです。

とりあえず、バグでは無さそうで一安心です。(^^)


>1つ妙な現象に出くわしました。
>SET UP 画面にして、各項目を見ていたとき、DATE / TIME が画面に表示されていない時なのですが、TIME の項目が画面の中に突然現れました。[EXIT] を押して、再度 SET UP に戻り、再現を試みたのですが、再現できていません。
>何らかの条件が揃って、確実に発生した現象ではあるので、可能性をご調査頂けませんか?

これは私も確認済みなのですが、致命的ではなさそうなのでバグ潰しが後回しになってます。(^^;
おそらくセットアップ画面に入った段階で時刻表示に関する割り込みが余計に動作していると思うのですが、次回バージョンまでには修正してみます。


>ところで、fx-9860GII SD のシルバーの色使いは高級感がありますね。あとシルバーの上のシルク印刷の文字はSD無しに比べて細いフォントですが、見やすい感じがします。

同感です。
ノーマルの日本版をあの価格で販売するならば、SD版を中心に売って欲しかったところですね。


>私の手元に来たものの製造日は、6Y なので 2016年11月 のようです。

うちのはAW69なので2016年9月でした。2ヶ月違いですね。


>手元の3台の9860GII機を共にチューンアップしたところ、いずれも上限が
>となり、ROM Wait と RAM Wait もこれが上限でした。
>なので、300MHz は難しそうです。
>どう思われますか?

うちのSD版も280MHzで打ち止めなのでほとんどそっくりな感じです。
300MHz超えたのはCG10が2013年3月、fx-9860GIIが2014年5月版なのでそれ以外は全滅です。(275MHZ~290MHz)
ある時期から動作限界が280MHz周辺で安定したと見るべきなのか、どうなのかというところですね。
とはいえ、今年の省電力になったCG50でも2017年3月版で300MHz超えしているのでこれはまた別の考察が必要なのですが、CPUの製造プロセスが改良されて省電力になったと考えるとCG50の最高動作周波数の平均は280MHzより上がる可能性もありますね。
fx-9860GIIシリーズのSH4Aの平均的な動作限界が280MHz付近だとするとそこから上下にバラつくと考えられますが、280MHz±30MHzと考えると、最低でも250MHzで動くわけで、
Ftune2のプリセット最速236MHzは超安定的に動作することが期待できると思われます。(^^)

Re: Re:Re: アドイン版 C.Basic ver.1.62ベータ版(ヒストリー機能+行列ドットエディタ+α増強版)

sentaro様

> アップデートの度に差し替えが頻発するのが常なので、直リンクにしていただいた方が何かと都合が良いですね。
> ってことで、早速に修正版を差し替えしております。(^^;


早速、利用頂きありがとうございます(゚_゚;

前掲の3つのページには、本日日付けでマイナーアップデートとして更新しました。



> [>F1]で従来の実行、[EXE]では、AC Break後、実行したファイルにカーソルが乗った状態の File List に戻る、というのは如何でしょうか。
> >で、[F1] と [EXE] の動作をSET UPで規定できるようになれば、当面は助かります。
>
> はい、その方向で動作設定を追加してみました。(^^)


Force Return 項目で EXE を指定して、望みの動作になることを確認しました。


> 私の場合だけかもですがPlanet-Casio方面からメールが届かないことが多々あるので、(^^;
> 連絡メールが届いていないという可能性もあります。
> ログインしてチャットやフォーラムに書き込みできれば即対応してもらえますから、ログイン出来てしまえばだいじょうぶです。(^^)


面倒なので、すました顔して新たにRegisterしてみようかな、と...


> >1.61 beta でお気に入りを設定していましたが、Ver 1.62 beta で引き継がれす、お気に入りが表示されないようです。
> >ご確認頂けませんか?
>
> んと、うちではその現象が確認できないのですが、
> 1.62になって設定保存の変更はしてないので、お気に入りが表示されないのはちょっと変ですね。
> 1.62で表示されない状態で1.61を起動するとお気に入りが復活しますでしょうか?


実は、本日 fx-9860GII SD が届きまして、早速SD機の利便性を実感しました。

...というのは、C.Basic Ver 1.61beta と 1.62 beta の両方の g1a ファイルをSDにコピーしておけば、バージョンの切り替えが簡単にできます。

で、一旦 1.61 beta に戻してお気に入りの正常動作を確認後、1.62 betaに切り替えてお気に入りの動作を確認したところ正常でした。

何か私が勘違いしたのか、どうもよく分からないのですが、問題なさそうです。


1つ妙な現象に出くわしました。

SET UP 画面にして、各項目を見ていたとき、DATE / TIME が画面に表示されていない時なのですが、TIME の項目が画面の中に突然現れました。[EXIT] を押して、再度 SET UP に戻り、再現を試みたのですが、再現できていません。

何らかの条件が揃って、確実に発生した現象ではあるので、可能性をご調査頂けませんか?

 

ところで、fx-9860GII SD のシルバーの色使いは高級感がありますね。あとシルバーの上のシルク印刷の文字はSD無しに比べて細いフォントですが、見やすい感じがします。

私の手元に来たものの製造日は、6Y なので 2016年11月 のようです。

- fx-9860GII 1台目: OS 2.04 2014年4月 製造
- fx-9860GII 2台目: OS 2.09 2017年4月 製造
- fx-9860GII SD:  OS 2.09 2016年11月 製造

手元の3台の9860GII機を共にチューンアップしたところ、いずれも上限が

- FLL: x900
- PLL: x38
- IFC: 1/2 CPU  280.17MHz
- SFC: 1/4 RoR 8 140.08 MHz
- BFC: 1/4 RaR 6 140.08 MHz (黒背景)
- PFC: /32

となり、ROM Wait と RAM Wait もこれが上限でした。
なので、300MHz は難しそうです。

どう思われますか?

Re:Re: アドイン版 C.Basic ver.1.62ベータ版(ヒストリー機能+行列ドットエディタ+α増強版)

管理人様、こんにちは!

>今後、以下の3カ所で、最新バージョンのダウンロードができるようにします。
>最新版については、sentaro様のホームページのアドレスのまま掲載します。サクッと差し替えの際、そのまま有効になる効果を狙っています。

ありがとうございます!
アップデートの度に差し替えが頻発するのが常なので、直リンクにしていただいた方が何かと都合が良いですね。
ってことで、早速に修正版を差し替えしております。(^^;


[>F1]で従来の実行、[EXE]では、AC Break後、実行したファイルにカーソルが乗った状態の File List に戻る、というのは如何でしょうか。
>で、[F1] と [EXE] の動作をSET UPで規定できるようになれば、当面は助かります。

はい、その方向で動作設定を追加してみました。(^^)


>対応してもらえるかどうか、しばらく待ってみます。Planetがどんなところか、これで少し分かるかも知れませんし...

私の場合だけかもですがPlanet-Casio方面からメールが届かないことが多々あるので、(^^;
連絡メールが届いていないという可能性もあります。
ログインしてチャットやフォーラムに書き込みできれば即対応してもらえますから、ログイン出来てしまえばだいじょうぶです。(^^)


>1.61 beta でお気に入りを設定していましたが、Ver 1.62 beta で引き継がれす、お気に入りが表示されないようです。
>ご確認頂けませんか?

んと、うちではその現象が確認できないのですが、
1.62になって設定保存の変更はしてないので、お気に入りが表示されないのはちょっと変ですね。
1.62で表示されない状態で1.61を起動するとお気に入りが復活しますでしょうか?

C.Basic ver.1.62 beta - お気に入りの不具合?

sentaro様


1.61 beta でお気に入りを設定していましたが、Ver 1.62 beta で引き継がれす、お気に入りが表示されないようです。

ご確認頂けませんか?


Re: Re: Re:C.Basic 英語ページの修正

sentaro様

消えたフォルダが戻りました。
やはり、FC2で障害など何かあって、消えたフォルダを元に戻してくれたようです。

お騒がせ致しました。

Re: Re:C.Basic 英語ページの修正

sentaro様


> 細かな表現の違いになると私にはもはやちんぷんかんぷんなので、管理人様がそうおっしゃるならば間違いないですね。(^^)

冠詞や前置詞の使い方、言い回しなど、日本語にない感覚の部分が助かります。

Lephenixnoir氏の修正は、ある程度私の英語のスタイルやカジュアルさの度合い(わりあい堅い感じ)に合わせて修正して下さっているので、かなりネイティブに近いのではないかと感じています。私が敢えて避けた堅い表現を敢えて使って修正してくれたりしていますので、私が出したい雰囲気を感じて貰っているのではないかと思っています。

そもそも修正を買って出てくださるのだから、ある程度文章に自信をお持ちなのでしょう。殆どそのまま採用しました。

> はい、私の英文が伝わるかどうかいつも汗たらたらですが、お伝えしてきました。(^^)
> http://www.planet-casio.com/Fr/forums/lecture_sujet.php?id=14738&page=2

早々のご対応、ありがとうございます。


今、続きの修正をしようと思ったら、サーバーから C.Basic のフォルダがごっそり消えて無くなっていることを発見。自分で消したとは思えません、そんな操作はしていないし、手が滑ったこともありません。今日修正した分はバックアップを取っていないので、1からやり直しの可能性があります。

しばらく様子を見てみます。サーバートラブルならしばらくして、サーバー側のバックアップを使って元に戻っている可能性がありますので...FC2はたまにやらかしますが、大抵は元に戻ります。特に eGadget2 は有料なのでキチンと対応する筈...して欲しい...するといいなぁ...お願い元に戻して....

ま、最悪やり直せば良いのですが、お礼を言って頂いた直後に 404 Error で見れないということになってしまって申し訳ないです。


> そういう場合は、一時的に名前を変えて一から最初から登録し直すという手もありますね。
> そして以前の登録前を削除してもらうかそちらにアカウント移動してもらうか、
> コンタクトさえとれればそのあたりはサクッと処理してもらえると思います。(^^)


対応してもらえるかどうか、しばらく待ってみます。Planetがどんなところか、これで少し分かるかも知れませんし...


Re: Re:[追記] g1mファイルの起動

sentaro様

> セットアップでエディタに戻らない実行専用モードを付けるというのはどうでしょう?
> それだと切り替えが煩雑になる可能性があるので、
> [F1]での実行と[EXE]での実行でAC Break後の動作を変える(セットアップで選択)という手もありそうですね。


[F1]で従来の実行、[EXE]では、AC Break後、実行したファイルにカーソルが乗った状態の File List に戻る、というのは如何でしょうか。

で、[F1] と [EXE] の動作をSET UPで規定できるようになれば、当面は助かります。



> 今のところコンパイラは全プログラムのフルコンパイルではなく実行前に指定Progだけコンパイルする限定版を予定しています。


Prog 単位での指定する予定なんですね。合理的だと思います。



> C.Basicを実用的にするためにもどんどん便利な形にしていきたいので、そこのあたりもう少し煮詰めて行きたいですね。(^^)

まだまだこの先が楽しみですね。

Re: アドイン版 C.Basic ver.1.62ベータ版(ヒストリー機能+行列ドットエディタ+α増強版)

sentaro様

最新バージョンを頂きました。ありがとうございます。

今後、以下の3カ所で、最新バージョンのダウンロードができるようにします。


・ブログページ (和文):http://egadget.blog.fc2.com/blog-entry-495.html

・Web (和文):http://egadget2.web.fc2.com/CBasic/archives/programs/CBasic/CBasic_versions_JP.html

・Web (英文):http://egadget2.web.fc2.com/CBasic/archives/programs/CBasic/CBasic_versions.html

最新版については、sentaro様のホームページのアドレスのまま掲載します。サクッと差し替えの際、そのまま有効になる効果を狙っています。

旧版については、e-Gadget Web からのリンクにします。万一の際のバックアップです。過去の全てのバージョンを保管しています(サーバーと私のPCそして、2つのHDDへのバックアップ、計4カ所)。


これから新規/修正箇所を確認してみます。


アドイン版 C.Basic ver.1.62ベータ版(ヒストリー機能+行列ドットエディタ+α増強版)

管理人様、C.Basicユーザーの皆様、こんにちは!

実用的に使えるかどうか実験的実装ですがコマンドのヒストリー機能を追加してみました。
あとは、BMP対応、行列のドットエディタ等、Emex氏の提案に基づく機能拡張です。(^^)

アドイン版 C.Basic ver.1.62ベータ版(ヒストリー機能+行列ドットエディタ+α増強版)
http://pm.matrix.jp/CB/CBASIC162beta.zip

・コマンド入力時ににコマンド使用履歴が表示できるようになりました。
 [MENU]キーを押すと過去32個分のコマンドが表示されます。
 さらにカーソル[←][→]を押すと使用頻度の高い順に並び替えて表示されます。

・行列編集でドット編集の出来るモードを追加しました。
 行列を表示している状態で[OPTN]キーを押すとドットエディタになります。
 行列の各要素の値が0の場合とそれ以外でドットの白黒が決まります。

・行列のデータをクリップボードにコピー&ペーストが可能になりました。
(C.Basic)形式なのでエディタにて行列データをペースト出来ます。

・BMP形式の読み書きに対応しました。(1ビット、モノクロのみ)
(例)BmpSave "TEST",Mat A
 行列AのデータをBMP形式で"TEST.bmp"に保存します。
(例)BmpLoad("TEST")->Mat A
 "TEST.bmp"のデータを行列Aに読み込みます。

・DrawMatコマンドを追加しました。
(書式)DrawMat Mat A[px,py], x, y, width, height [,横拡大幅][,縦拡大幅][,color][,確率]
(例) DrawMat Mat A, 0, 0, 128, 64
(例) DrawMat Mat A[10,5], 0, 0, 40, 30, %150, %250 , 4, %50

・Captureファイルをサポートしました。ストレージメモリ上への読み書きが出来ます。最大99までのファイルが利用できます。
(例)StoCapt 20
(例)RclCapt 20

・StrRepl(コマンドを追加しました。
(書式)StrRepl(文字列, 検索文字列, 置換文字列 [,検索開始位置])
(例)StrRepl("Hello World","World","Earth") -> "Hello Earth"
(例)StrRepl("abcabc","ab","ff",3) = "abcffc"
(例)StrRepl("abcabc","ab","ff") = "ffcffc"

・Matエディタで任意の行列を選択する場合、Baseが0の場合、0が選択できない不具合を修正しました。

・割り込み動作時に[MENU]キーでOSに戻ることを無効にしました。(カーソル点滅時等)


(2017.8.14 14:35追記)
・プログラム実行中の中断でエディタに戻らずにファイルリストに戻る設定を加えました。
 セットアップから設定出来ます。

ver1.62差し替えております。

Re:[追記] g1mファイルの起動

管理人様、こんにちは!

>[追記] そもそも g1mファイルの起動は、AC Break したとしてもエディタ画面にならない機能があった方が、普段使いには非常に有り難いという発想、つまり fx-5800P の [FILE]キーの利便性を グラフ関数電卓にもあって欲しいということから来ています。

セットアップでエディタに戻らない実行専用モードを付けるというのはどうでしょう?
それだと切り替えが煩雑になる可能性があるので、
[F1]での実行と[EXE]での実行でAC Break後の動作を変える(セットアップで選択)という手もありそうですね。


>コンパイラ版よりも先に g3m用C.Basicの登場を願うところですが、コンパイラ版を考えるとRUNMAT形式だとコンパイル/ビルドオプションをメニューから選んでコマンドラインで指定して実行...が出来ると開発上は便利だと思います。メニューは後から実装でも良いわけです。

今のところコンパイラは全プログラムのフルコンパイルではなく実行前に指定Progだけコンパイルする限定版を予定しています。
使い勝手はどこまでもインタプリタという感じがよさそうなので、ここだけ速度が必要というところだけのコンパイルというか…そういう感じで想定しています。(^^)
で、g3m用C.Basicとコンパイラと比較すると、コンパイラの方がちょっとややこしくなりそうな気はしていますのでg3m用C.Basicの方が先になる可能性は大です。(^^;

>fx-5800P のようにProgコマンドを RUNMAT形式で使えるのも良いわけで、となればバッチファイルを扱えるようにして、バッチファイル内で g1mファイルを起動したり、引数ファイルを別途作っておき、それを読み込んで g1mファイルを起動する、といった感じの昔の MS-DOS風の環境が出来て、面白くなりそうです。

C.Basicを実用的にするためにもどんどん便利な形にしていきたいので、そこのあたりもう少し煮詰めて行きたいですね。(^^)

Re:C.Basic 英語ページの修正

管理人様、こんにちは!

>対応する最初のWebページの修正を行いました。よりこなれた英語に直してもらってありがたいです。チョットした表現や単語の使い方、とても勉強になります。

細かな表現の違いになると私にはもはやちんぷんかんぷんなので、管理人様がそうおっしゃるならば間違いないですね。(^^)


>このページからリンクしているコマンドファレンスの修正はこれからです。
お手数おかけします。m(_ _)m


>で、Planet-Casioの Lephenixnoir氏にお礼を言いたいところなのですが、Planet-Casio にログイン入れない状態が何が月の続いていて最近はもう放置しています。パスワードを何度か間違えたためか、IDそのものが無効化されているようで、administratorにメッセージを入れていますが全く無視されている様子。

そういう場合は、一時的に名前を変えて一から最初から登録し直すという手もありますね。
そして以前の登録前を削除してもらうかそちらにアカウント移動してもらうか、
コンタクトさえとれればそのあたりはサクッと処理してもらえると思います。(^^)


>なので、sentaro様から、Lephenixnoir氏 に Krtyski がお礼を言っているとお伝え頂けませんか?

はい、私の英文が伝わるかどうかいつも汗たらたらですが、お伝えしてきました。(^^)
http://www.planet-casio.com/Fr/forums/lecture_sujet.php?id=14738&page=2

[追記] g1mファイルの起動

sentaro様

[追記] そもそも g1mファイルの起動は、AC Break したとしてもエディタ画面にならない機能があった方が、普段使いには非常に有り難いという発想、つまり fx-5800P の [FILE]キーの利便性を グラフ関数電卓にもあって欲しいということから来ています。

広く考えて、g1mファイルの起動というカテゴリで考えると、

1. C.Basic で起動するか、PROGRAM で起動するか、その両方を切り替えられるか?

2. 独立したアドインで提供するか、C.Basic の機能として提供するか?

3. RUNMATのようなコマンドプロンプトにするか、メニュー形式にするか?

といった感じの組み合わせが考えられます。

コンパイラ版よりも先に g3m用C.Basicの登場を願うところですが、コンパイラ版を考えるとRUNMAT形式だとコンパイル/ビルドオプションをメニューから選んでコマンドラインで指定して実行...が出来ると開発上は便利だと思います。メニューは後から実装でも良いわけです。

fx-5800P のようにProgコマンドを RUNMAT形式で使えるのも良いわけで、となればバッチファイルを扱えるようにして、バッチファイル内で g1mファイルを起動したり、引数ファイルを別途作っておき、それを読み込んで g1mファイルを起動する、といった感じの昔の MS-DOS風の環境が出来て、面白くなりそうです。


> というか、C.Basicの起動時のデフォルトをファイルリストでなくRUNMAT形式にするとか…。(^^;

但し、RUNMATかメニューかどちらが良いかは、メモリ許容量次第かも知れませんし、コマンドプロンプト形式にすると C.Basicの処理速度に影響が出る心配もありますよね。速度は犠牲にしたくないですし...



> >ところで、fx-9860GII SD は、8/12 の午前0時頃に、川崎郵便局で税関処理が終わったので、今日か明日には配達されそうです。
>
> いよいよですね。
> SD版は価格なりの値打ちはあると思うので、管理人様による新たな可能性発見に期待です。(^^)


今日あたり届けば良いなと思っています。
SD絡みで要望が出てきたりするかも知れません(゚_゚;


C.Basic 英語ページの修正

sentaro様

このエントリーのコメントを最初から読み返して、記憶を呼び覚ましています。

ところで、次の件;

>#管理人様、業務連絡です。
 http://www.planet-casio.com/Fr/forums/topic14738-6-C.Basic.html#148967
 C.Basicの英語サイトの最初のページをPlanet-CasioのLephenixnoir氏に修正していただきました。
 README_EN.txtの最初の部分をその修正版に差し替えていただいております。m(_ _)m


対応する最初のWebページの修正を行いました。よりこなれた英語に直してもらってありがたいです。チョットした表現や単語の使い方、とても勉強になります。

http://egadget2.web.fc2.com/CBasic/Interpreter/CBasic_interpreter.html

このページからリンクしているコマンドファレンスの修正はこれからです。


で、Planet-Casioの Lephenixnoir氏にお礼を言いたいところなのですが、Planet-Casio にログイン入れない状態が何が月の続いていて最近はもう放置しています。パスワードを何度か間違えたためか、IDそのものが無効化されているようで、administratorにメッセージを入れていますが全く無視されている様子。

なので、sentaro様から、Lephenixnoir氏 に Krtyski がお礼を言っているとお伝え頂けませんか?


Dear Lephenixnoir

I do appreciate for your help on my translation. I have been extremely busy, so it took long time to come back to C.Basic project. I'm currently changing almost all sentences based on your advise.

Re:Re: Re:Re: Re:Re: Re:SET UP と 整数演算モードについて

管理人様、こんにちは!

>アドインプログラムを、外部から起動したり外部から終了させるのは、今のところ良い手段が見つかっていないとも言えるのでしょうね?

アドインは普通に終了すると同じアドインが再度起動しない状態になるのですが、きちっと終了させる手段はあります。
実は、C.Basicでも内部パラメータの保存等ではアドインをきちっと終了させる方が何かと都合が良いのですが、純正のPRGMが一旦MENUに行ってPRGMでまた元の状態に戻ってこれるのでその使い勝手を引き継ぐと今の形になってしまいますね。


>というのは、何かアドインプログラムを作る時、特定のプログラムを引数としてC.Basicを起動するといったいわゆるランチャー機能を作る方法が分かると、面白いと思うんです。fx-5800P の [FILE] キーと同じような機能のアドインを作るイメージです。

アドインからアドインを呼び出すというのは実際にやったことはないのですが、OSの仕組みとしてはできそうな感じです。
C.Basicのプログラムを呼び出すランチャー機能が使えるとたしかに便利に使えそうですね。
C.BasicはPRGMの置き換えといえるアドインですけど、電卓機能のRUNMATの置き換えアドインを作成すれば、[FILE]みたく呼び出して使えそうですね。
というか、C.Basicの起動時のデフォルトをファイルリストでなくRUNMAT形式にするとか…。(^^;


>ところで、fx-9860GII SD は、8/12 の午前0時頃に、川崎郵便局で税関処理が終わったので、今日か明日には配達されそうです。

いよいよですね。
SD版は価格なりの値打ちはあると思うので、管理人様による新たな可能性発見に期待です。(^^)

Re: Re:Re: Re:Re: Re:SET UP と 整数演算モードについて

sentaro様


> C.Basicでメモリ不足になった場合には一度C.Basicアドインを終了させて(他のアドインを一旦起動する)再起動が必要ですが、割り込みも同様にC.Basicの割り込みとして活動しているので、そういう感じですね。


アドインプログラムを、外部から起動したり外部から終了させるのは、今のところ良い手段が見つかっていないとも言えるのでしょうね?

というのは、何かアドインプログラムを作る時、特定のプログラムを引数としてC.Basicを起動するといったいわゆるランチャー機能を作る方法が分かると、面白いと思うんです。fx-5800P の [FILE] キーと同じような機能のアドインを作るイメージです。


ところで、fx-9860GII SD は、8/12 の午前0時頃に、川崎郵便局で税関処理が終わったので、今日か明日には配達されそうです。

Re:fx-9860GII の扱い

管理人様、こんにちは!

>価格動向のページを約一ヶ月ぶりに更新しました。すると、fx-9860GII の国内正規品の Amazon Japan での取り扱いが無くなっていました。OS 2.04 を搭載した日本向けのパッケージがいよいよ品薄になってきたということなんだろ思います。
>そこで、価格動向のページに、fx-9860GII と fx-CG50 の Amazon USA の価格情報を追加することにしました。
http://egadget.blog.fc2.com/blog-entry-172.html

日本で普通に売られなくなると輸入というのも現実的な選択肢ですよね。
Amazon USA の価格情報はタイムリーだと思います。(^^)


>あと、sentaro様の Amazonからの fx-CG50 の迅速配達のケースの考察を "Casio fx-CG50 の概要" に追記しておきました。
http://egadget.blog.fc2.com/blog-entry-594.html

今回の場合、最良の好条件が重なって最速での配送を経験できたわけなので、これが当たり前と思ってはいけないですけど、アメリカから数日で届くことを知ってしまうと、日本の並行輸入物件より海外直送という感じになりますね。(^^;


>C.Basic の存在は、fx-9860GII をとても魅力的な製品に変えてくれています。なので fx-9860GII は私には最高のプラットフォームです。SD版が到着したら、SD奈良出刃の遊び方を考える楽しみが増えるので、楽しみです。

ありがとうございます!
C.Basic漬けになっているとfx-9860GIIが本来はグラフ電卓であることを忘れてしまいがちな状況ですが、これだけ潜在的なポテンシャルの高い電卓はそうそうないですね。
元々動作が軽い上に、そこから速度もメモリも数倍にアップする電卓はそうそうありません。(^^)


>SD版ですが、ソウルで日本郵政に引き渡されたのが、8/9 だと分かりました。まさか船便ではないと思うので、そろそろ日本に到着でしょうか? 今週中に届けば良いなぁ...と

10日に韓国発としても明日あたり届きそうですね。(^^)

Re:Re: Re:Re: Re:SET UP と 整数演算モードについて

管理人様、こんにちは!

>よく考えてみると、SET UP で DATE/TIME を表示した状態だと、MAIN MENU に戻っても C.Basicのアドイン自体が終了しないから、このようになるってことですよね。従って、MAIn MANU でC.Basic 以外のアドインを起動すると、C.Basic が終了するから DATE/TIME の表示が終わるわけですね。

はい、おっしゃるとおりです。
C.Basicでメモリ不足になった場合には一度C.Basicアドインを終了させて(他のアドインを一旦起動する)再起動が必要ですが、割り込みも同様にC.Basicの割り込みとして活動しているので、そういう感じですね。


>ところで、Ver 1.61 の全てのコマンドを書き出してみました。銃声のグラフ、リスト関係のコマンドなどがかなり追加されていて、拡張コマンドはMLを除けば、意外に少ないようです。というかMLや小フォント表示がかなり大がかりな変更を伴うことがよくわかります。

コマンドに関してはML系のコマンドの拡張がほとんどですね。
コマンドの拡張に関しては従来からの互換性を保った上での拡張なので建て増し的な拡張ですがなんとかなっています。(^^;
あとは、リスト数やPict数の拡張や、ファイル関連でフォルダの作成、削除の追加やエディタ関連の機能追加というところでしょうか。


>あとは、各コマンドの動作をを1つづつ確認してゆきたいと思います。
>私なりに、全ての機能のサンプルプログラムを作ってみたいと思います(そうしないと気が済まないという困った性格です)。

ありがとうございます。
一つ一つのコマンドの動作確認は大変なお手数をおかけしてしまいますけど、私の気付かなかったバグの発見に繋がるのでよろしくお願いいたします。(^^)


>そうしながら、ボチボチと英語版と日本語版のリファレンスを作ろうと思います。
>あと、今考えているアプローチですが、SET UP の設定の説明で、それに対応するコマンドの解説を併記したいと思います。
>並行して、Manual_E.txt に手をつけようと思います。

毎度ながらお手数おかけします。
よろしくお願いいたします。m(_ _)m

fx-9860GII の扱い

sentaro様

> >カシオの日本語のサイトでは生産終了となっているので、OS 2.04 版が製造中止で、OS 2.09 は継続ということなんだろうと思います。
>
> 日本語サイトでダウンロードできる日本語マニュアルはOS2.09になっているのですが、2.09へのOSのアップデータが無いのでそういう感じですね。(^^;


価格動向のページを約一ヶ月ぶりに更新しました。すると、fx-9860GII の国内正規品の Amazon Japan での取り扱いが無くなっていました。OS 2.04 を搭載した日本向けのパッケージがいよいよ品薄になってきたということなんだろ思います。

そこで、価格動向のページに、fx-9860GII と fx-CG50 の Amazon USA の価格情報を追加することにしました。
http://egadget.blog.fc2.com/blog-entry-172.html


あと、sentaro様の Amazonからの fx-CG50 の迅速配達のケースの考察を "Casio fx-CG50 の概要" に追記しておきました。
http://egadget.blog.fc2.com/blog-entry-594.html


C.Basic の存在は、fx-9860GII をとても魅力的な製品に変えてくれています。なので fx-9860GII は私には最高のプラットフォームです。SD版が到着したら、SD奈良出刃の遊び方を考える楽しみが増えるので、楽しみです。

SD版ですが、ソウルで日本郵政に引き渡されたのが、8/9 だと分かりました。まさか船便ではないと思うので、そろそろ日本に到着でしょうか? 今週中に届けば良いなぁ...と

しっかし、EMSは本当に時間がかかります。


なお、既にとおくに配達が済んでいる SDに移動無し版の 9860GII ですが Amazon USAのトラッキングページでは、まだ未配達になっています。かなりいい加減だと分かりました。

Re: Re:Re: Re:SET UP と 整数演算モードについて

sentaro様

> ということでちょっとドッキリする仕様は解消した方がよさそうということで、
> 割り込みを使用している間は[MENU]キーで電卓のMAIN MENUに戻らないようにした方がいいかもしれませんね。
> 次期バージョンで修正してみます。


ありがとうございます。

よく考えてみると、SET UP で DATE/TIME を表示した状態だと、MAIN MENU に戻っても C.Basicのアドイン自体が終了しないから、このようになるってことですよね。従って、MAIn MANU でC.Basic 以外のアドインを起動すると、C.Basic が終了するから DATE/TIME の表示が終わるわけですね。


ところで、Ver 1.61 の全てのコマンドを書き出してみました。銃声のグラフ、リスト関係のコマンドなどがかなり追加されていて、拡張コマンドはMLを除けば、意外に少ないようです。というかMLや小フォント表示がかなり大がかりな変更を伴うことがよくわかります。

あとは、各コマンドの動作をを1つづつ確認してゆきたいと思います。
私なりに、全ての機能のサンプルプログラムを作ってみたいと思います(そうしないと気が済まないという困った性格です)。

そうしながら、ボチボチと英語版と日本語版のリファレンスを作ろうと思います。

あと、今考えているアプローチですが、SET UP の設定の説明で、それに対応するコマンドの解説を併記したいと思います。

並行して、Manual_E.txt に手をつけようと思います。

...そんな感じでボチボチと...

Re:Re: Re:SET UP と 整数演算モードについて

管理人様、こんにちは!

>MAIN MENU で DATE/TIMEが表示されている時、PCと9860GIIをUSBで繋いでも、電卓が自動的にリンク状態にならないのも仕様に含まれてます?

はい、そういう感じになってしまってます。(^^;


>ドッキリする仕様ですね(゚_゚;
>何かいきさつがあれば、教えてください。

時間表示に割り込みを使っている関係上、その割り込みを解除しないとUSBが繋がらないみたいです。
これは後で気がついたのですがそのままになってしまっています。(^^;

ということでちょっとドッキリする仕様は解消した方がよさそうということで、
割り込みを使用している間は[MENU]キーで電卓のMAIN MENUに戻らないようにした方がいいかもしれませんね。
次期バージョンで修正してみます。

Re: Re:SET UP と 整数演算モードについて

sentaro様


> んと、MENUで重なる表示が年月日と時間であればそれは仕様です。(^^;

SET UP 画面で DATE と TIME が表示されている時に [MENU] を押すと、DATE/TIMEが上書きされるのは、仕様なんですか...

MAIN MENU で DATE/TIMEが表示されている時、PCと9860GIIをUSBで繋いでも、電卓が自動的にリンク状態にならないのも仕様に含まれてます?

ドッキリする仕様ですね(゚_゚;
何かいきさつがあれば、教えてください。



> この部分は以前より変更がないので小文字でも認識されるはずで、うちのfx-6860GIIにてVer.1.61でアップされているLIFE074を実行してみたところ、'#CBintでも整数モードで実行しているので、管理人様の動作状況が再現できずなのですが、誤動作しているプログラムはアップされているLIFE074と同一でしょうか?

ええっと、改めてDLして実行したところ、この問題は発生されませんでした。手元でプログラムがどこか変更されてしまっていたようです。お騒がせしました。

Re:SET UP と 整数演算モードについて

管理人様、こんにちは!

>カシオの日本語のサイトでは生産終了となっているので、OS 2.04 版が製造中止で、OS 2.09 は継続ということなんだろうと思います。

日本語サイトでダウンロードできる日本語マニュアルはOS2.09になっているのですが、2.09へのOSのアップデータが無いのでそういう感じですね。(^^;


>SET UP の Command Input で Standard か C.Basic かを選べるようになっているのも、この一連の要望なんですね!

あ、コマンドの入力方法に関してはPlanet-CasioでのCakeisalie5氏の提案でした。
Ver.1.56以降がUCFでのEmex氏の提案ですね。


>Editor画面で、CMD となっているはずのキーが MENU になっていて、最初面食らいました(^^;
>しかし、しばらく Standard で使ってみると、純正に慣れていると このほうが使い易いかも知れません。拡張コマンドやMLコマンドが使いやすくなった感じですね。

fx-5800Pを触ったことがなく標準の入力方法に慣れていると純正の入力方法がしっくり来る場合も多いと思ってそちらをデフォルトに変更しました。
ので、まっさらなインストールだと最初は純正入力になります。(^^;
純正の大量のコマンド群から比較すると無効な箇所が多くなりますが、そこを拡張コマンドで使用しています。


>SET UP 画面が表示されている時に [MENU] キー押すと、MAIN MENU と SET UP が混じった表示になってしまいます。
>もう一度 C.Basic に戻ると SET UP 画面になるので、そこで [EXIT] キーを押せば回復します。
>単に表示だけの問題のように思いますが、ご調査お願いします。

んと、MENUで重なる表示が年月日と時間であればそれは仕様です。(^^;


>しばらくブランクがあるので、わりと新鮮な感じで C.Basic で遊んでいます。
>Refresh DD を All 3/128 にして、ライフゲーム  LIFE0.74 で例のパターン #3 で 517世代までの時間を調べてみると、ここ最近の機能追加の影響も無く同じ速度だというのは、素晴らしいと思います。

ありがとうございます!
バージョンアップの度に多少(数%)遅くなったり速くなったりはするのですが、平均するとあまり変わらない感じできていますね。
インタプリタの実行速度を決める一番大きな要因は数式評価の手間なので、そこで遅くなっていかないように、実数動作部分と整数動作部分、さらに実数リストと整数リストと4つの数式評価に分けて多少冗長な構成になっていたりしますが、アドイン最大サイズの512KBまではまだ余裕なのでファイルサイズは二の次で拡張しています。(^^;


>LIFE074 はプログラム冒頭で 整数演算モード '#CBint を設定しています。
>ところが、SET UP の Execute mode を DBL# にすると プログラム上の宣言を無視するようで、速度が半分程度に落ちます。これを INT% にすると以前と同じ速度で実行されます。
>ここで、冒頭の宣言を '#CBInt と書き換えます (小文字の i を大文字の I に変える)。すると SET UP で DBL# 指定していても 整数演算モードで速く実行してくれます。
>宣言のアルファベットの頭から3文字で判断しているようですが、以前は小文字/大文字関係無く判断していましたが、大文字のみに変更されているのでしょうか?

この部分は以前より変更がないので小文字でも認識されるはずで、うちのfx-6860GIIにてVer.1.61でアップされているLIFE074を実行してみたところ、'#CBintでも整数モードで実行しているので、管理人様の動作状況が再現できずなのですが、誤動作しているプログラムはアップされているLIFE074と同一でしょうか?

SET UP と 整数演算モードについて

sentaro様


> なんと!CG50よりも新しい最新版ですね。

私が保有している中で、最も製造が新しい電卓になっています。


> 日本では終了してしまいましたがまだまだ欧米ではfx-9860GIIは現役なんですよね。(^^)

カシオの日本語のサイトでは生産終了となっているので、OS 2.04 版が製造中止で、OS 2.09 は継続ということなんだろうと思います。


> 同じ機種が複数あるとOSのバージョン違いの確認にも便利ですし、比較するにしても何かと都合がよいです。
理想は、異なるOSバージョンを全て揃えて、同時に比較できることでしょうね。


> >・矢印キーのギシギシ感が有りません。どれも最初はOKで使ってるうちにギシギシし出すのでしょうか?或いは地道な改善を行った結果なのかも知れません...

> 製造上のバラツキの範囲なのか、改善されたのか、とりあえずギシギシしないのは◎ですね。(^^)
> もし地道に改善されたのであれば、CG50のキー反応も次のロット以降、改善に向かうかもしれません。

CG50のキーの件と 9860GII の矢印キーの件を、カシオお客様センターに同時にぶつけて、地道な改善の話を引き出してみようかな、とふと思ったりしています。


> はい、純正コマンドにはなぜか数値から文字列に変換するコマンドが無いのでStr()コマンドを追加しています。
> 昔のBASICでいうところのSTR$コマンドですね。


純正コンパチが、Str で、C.Basic拡張が Str( と ( が付いていて区別している...今思い出しました。


> >その他 SET UP にあるコマンド類は大幅に増えており、エディタの操作も少し変更されていますね。
>
> はい、このひと月のバージョンアップはEmex氏からの提案&要望がほとんどですが、以前の問題点を見直して改善することができた所も多いので有用なアップデートが多いです。(^^)


SET UP の Command Input で Standard か C.Basic かを選べるようになっているのも、この一連の要望なんですね!
Editor画面で、CMD となっているはずのキーが MENU になっていて、最初面食らいました(^^;

しかし、しばらく Standard で使ってみると、純正に慣れていると このほうが使い易いかも知れません。拡張コマンドやMLコマンドが使いやすくなった感じですね。

私もしばらく Stanrad で使ってみようと思います。


妙な動作を見つけました。

SET UP 画面が表示されている時に [MENU] キー押すと、MAIN MENU と SET UP が混じった表示になってしまいます。
もう一度 C.Basic に戻ると SET UP 画面になるので、そこで [EXIT] キーを押せば回復します。
単に表示だけの問題のように思いますが、ご調査お願いします。


しばらくブランクがあるので、わりと新鮮な感じで C.Basic で遊んでいます。
Refresh DD を All 3/128 にして、ライフゲーム  LIFE0.74 で例のパターン #3 で 517世代までの時間を調べてみると、ここ最近の機能追加の影響も無く同じ速度だというのは、素晴らしいと思います。

但し、1点気になることがあります。
LIFE074 はプログラム冒頭で 整数演算モード '#CBint を設定しています。
ところが、SET UP の Execute mode を DBL# にすると プログラム上の宣言を無視するようで、速度が半分程度に落ちます。これを INT% にすると以前と同じ速度で実行されます。

ここで、冒頭の宣言を '#CBInt と書き換えます (小文字の i を大文字の I に変える)。すると SET UP で DBL# 指定していても 整数演算モードで速く実行してくれます。

宣言のアルファベットの頭から3文字で判断しているようですが、以前は小文字/大文字関係無く判断していましたが、大文字のみに変更されているのでしょうか?


Re:[追記] Re2:アドイン版 C.Basic ver.1.61ベータ版 - Sprintf(

管理人様、こんにちは!

>・OS 02.09.0201 がインストールされています。
>・OSに関連してか、MAIN MENU に電池残量のアイコン表示が追加されています。
>・2017年4月製造のようです

なんと!CG50よりも新しい最新版ですね。
日本では終了してしまいましたがまだまだ欧米ではfx-9860GIIは現役なんですよね。(^^)
同じ機種が複数あるとOSのバージョン違いの確認にも便利ですし、比較するにしても何かと都合がよいです。


>・矢印キーのギシギシ感が有りません。どれも最初はOKで使ってるうちにギシギシし出すのでしょうか?或いは地道な改善を行った結果なのかも知れません...

製造上のバラツキの範囲なのか、改善されたのか、とりあえずギシギシしないのは◎ですね。(^^)
もし地道に改善されたのであれば、CG50のキー反応も次のロット以降、改善に向かうかもしれません。


>文字列コマンドの Str と拡張コマンドのとの Str は別ものなんですね!

はい、純正コマンドにはなぜか数値から文字列に変換するコマンドが無いのでStr()コマンドを追加しています。
昔のBASICでいうところのSTR$コマンドですね。


>その他 SET UP にあるコマンド類は大幅に増えており、エディタの操作も少し変更されていますね。

はい、このひと月のバージョンアップはEmex氏からの提案&要望がほとんどですが、以前の問題点を見直して改善することができた所も多いので有用なアップデートが多いです。(^^)



>コマンドの説明ですが、9860GII Slim のページにある感じというのを見つけました。
http://edu.casio.com/products/graphic/fx9860gslim/
>こんな感じということですね。

はい、これです!

>但し、小さなフォントだと読み辛いし、大きなホントだと文字数制限があって、ましてアルファベットしか使えないのは厳しいですね。

CG10/20/50だとミニフォントが普通に使えそうですし、これはCG版で生きてくる機能かもしれません。


>一つのアイディアですが、fx-CG50 の進化したカタログ機能のような感じが良いかも知れません。そのまま入力できてしまうのも便利。
>元々9860GII にもカタログ機能がありますが、ある意味このレベルのものは既に C.Basic には実装済みです。なので、fx-CG50 のようにカテゴリーや説明から絞り込む感じの進化したのが良さそうかと...

現在使えるカタログ機能はOS標準そのままなので、追加コマンドには対応できないのですが、新規に加えるとするならば管理人様のおっしゃるようにCG50のような形でもいいかもしれませんね。

[追記2] Re2:アドイン版 C.Basic ver.1.61ベータ版 - Sprintf(

sentaro様

2台目の 9860GII ですが、どうやら正常動作するようで、一安心です。

気付いた点がいくつか...

・3Pinケーブルが付属していません

・OS 02.09.0201 がインストールされています。

・OSに関連してか、MAIN MENU に電池残量のアイコン表示が追加されています。

・2017年4月製造のようです

・矢印キーのギシギシ感が有りません。どれも最初はOKで使ってるうちにギシギシし出すのでしょうか?或いは地道な改善を行った結果なのかも知れません...


> >さて、Sprintf( ですが、
> >EngOn3 指定時に3桁区切りに対応させるのは、どうでしょうか?
>
> 書式文字列の解析をすれば追加可能なので、前向きに善処してみます。(^^)

ありがとうございます。



> とりあえずの代替えとして、Str()コマンドを使って3桁出力を文字列化すれば、
> Sprintf("%s digits",Str(D))
> これで一応3桁区切りでのSprintf出力が
可能です。(^^)


文字列コマンドの Str と拡張コマンドのとの Str は別ものなんですね!

その他 SET UP にあるコマンド類は大幅に増えており、エディタの操作も少し変更されていますね。


[追記]
コマンドの説明ですが、9860GII Slim のページにある感じというのを見つけました。
http://edu.casio.com/products/graphic/fx9860gslim/
こんな感じということですね。

但し、小さなフォントだと読み辛いし、大きなホントだと文字数制限があって、ましてアルファベットしか使えないのは厳しいですね。

一つのアイディアですが、fx-CG50 の進化したカタログ機能のような感じが良いかも知れません。そのまま入力できてしまうのも便利。

元々9860GII にもカタログ機能がありますが、ある意味このレベルのものは既に C.Basic には実装済みです。なので、fx-CG50 のようにカテゴリーや説明から絞り込む感じの進化したのが良さそうかと...


Re:アドイン版 C.Basic ver.1.61ベータ版 - Sprintf(

管理人様、こんにちは!

>まだ出張中ですが、トラッキング情報を見ると、2台目の fx-9860GII が配達されたようです (まだ現物を見ていませんが...).

お!無事届いて何よりです。(^^)


>2台のうち1台は高速化を追求したいと思っています。

2台あるとちょっと危ない冒険も出来ますね。(^^;


>さて、Sprintf( ですが、そもそもC言語風のコマンドを追加してみる意味で、実装されたと思っていますが、チョット注文していいですか?
>EngOn3 指定時に3桁区切りに対応させるのは、どうでしょうか?

書式文字列の解析をすれば追加可能なので、前向きに善処してみます。(^^)

とりあえずの代替えとして、Str()コマンドを使って3桁出力を文字列化すれば、
Sprintf("%s digits",Str(D))
これで一応3桁区切りでのSprintf出力が可能です。(^^)

アドイン版 C.Basic ver.1.61ベータ版 - Sprintf(

sentaro様

まだ出張中ですが、トラッキング情報を見ると、2台目の fx-9860GII が配達されたようです (まだ現物を見ていませんが...).

2台のうち1台は高速化を追求したいと思っています。

さて、Sprintf( ですが、そもそもC言語風のコマンドを追加してみる意味で、実装されたと思っていますが、チョット注文していいですか?

EngOn3 指定時に3桁区切りに対応させるのは、どうでしょうか?
出力フォーマットを指定できるので、数値を指定して、文字列と一緒に出力できる便利なコマンドですが、これと同等なことを EngOn3 と Locateで行うと結構面倒です。

取り敢えず次のようなプログラム (階乗計算した結果の桁数を表示するもの) を作ってみました。

'#CBDBL
EngOff
ClrText
" What's digit of X!"
"X="?->C
0->S
For 1->I To C
S+log I->S
Next
Locate 3,2,C
EngOn3
1+Int S->D
Locate 1,3,D
Sprintf("%d digits",%D)
EngOff


これを起動して、X=? と表示されたとき、1000 を入力すると、

===================================
 What's digit of X!
X=1000
2,568
2568 digits

==================================

と表示されます。

最後の行を 2,568 digits と表示できると、Sprintf( の Usability がとても向上すると思うわけです。

如何でしょうか?

アドイン版 C.Basic ver.1.61ベータ版(Pict&List増量、Monochromeライブラリ系コマンド増強版)

管理人様、C.Basicユーザーの皆様、こんにちは!

Ver.1.60に引き続きMonochromeライブラリ系コマンドの機能追加として、
円弧の描画と、拡大縮小回転処理を加えたビットマップ表示コマンドと、ドットをカウントするコマンドを追加しました。
あと、キーの同時入力結果をリスト形式で返すGetkeyMを追加しました。


アドイン版 C.Basic ver.1.61ベータ版(Pict&List増量、拡大縮小、回転コマンド追加版)
http://pm.matrix.jp/CB/CBASIC161beta.zip

・隠しRAM使用時に99までのPictファイルと1040までのListを使うことが出来ます。セットアップで指定します。
・ListとMatの一文字短縮表示が出来るようになりました。セットアップでLとMの反転文字とボールド体が選択できます。

・Monochromeライブラリ系コマンドの"_Circle"コマンドに角度指定と頂点指定を追加しました。
(書式)_Circle x,y,radius,color[,chance][,width][,角度初期値][,角度終了値][,頂点数]
(例) _Circle 64,32,20,4,0.5,3
3x3dot 50% circle
(例) _Circle 64,32,20,1,,3,0,90
to draw 3x3dot 1/4 circle
(例)_Circle 64,32,20,1,,,0,360,5
to draw pentagon ( to have an effect on setting of Draw Type )
(例) _Circle 64,32,20,1,,,20,380,5
to draw shifted pentagon

・Monochromeライブラリ系コマンドに図形の内部の黒ドット数をカウントする"_Test"コマンドオプションを追加しました。
(サポートコマンド) _Point _Line _Rectangle _Circle _Polygon
 サポートコマンドの前に"_Test"を付けると機能します。
(例)_Test_Rectangle 0,0,127,63
 (0,0)-(127,63)エリアにおける黒ドットの数を返します。
(例)_Test_Circle 62,32,20
(例)_Test_Point 10,10,5
(例)_Test_Line 10,10,100,30

・Monochromeライブラリ系コマンドに拡大縮小、回転処理を加えてビットマップ表示する"_BmpZoom"と"_BmpRotate"コマンドを追加しました。
(Planet-CasioよりNinestars氏がMonochromeライブラリに機能追加したプログラムを利用させて頂いています)
(書式)_BmpZoom &Mat , x, y, width, height, 横拡大幅, 縦拡大幅 [,color][,確率]
(書式)_BmpRotate &Mat , x, y, width, height, 回転角(度) [,color][,確率]
(例)_BmpZoom &Mat A, 0, 0, 20, 10, 1.5, 2.5
(例)_BmpZoom &Mat A, 0, 0, 20, 10, %150, %250 , 4, %50
(例)_BmpRotate &Mat A, 0, 0, 20, 10, 45

・Getkeyコマンドに複数キー同時読み込みの"M"オプションを追加しました。結果はリスト形式で返ります。
(例)GetkeyM->List 1
[EXE]と[F1]を同時押しした場合、 {79,31}が返ります。

・リスト同志の比較コマンド"ListCmp("を追加しました。
 リストとリスト、リストと値の比較ができます。
(例)ListCmp({1,2,3},{1,2,3})
 1が返ります。
(例) ListCmp({1,2,3},{1,3})
 0が返ります。
(例) ListCmp({1,2,3},{1,3,2})
 0が返ります。
(例) ListCmp({1,2,3},2)
 1が返ります。
(例) ListCmp({1,2,3},4)
 0が返ります。

・リストを並べ替えるSortA(,SortD(コマンドが数式の中でも使えるようになりました。

アドイン版 C.Basic ver.1.60ベータ版(進数変換+新描画色追加+バグ修正版)

管理人様、C.Basicユーザーの皆様、こんにちは!

進数変換とMonochromeライブラリ系コマンドに新しい描画色を追加しました。
モノクロのLCDなので限界はありますが、
https://www.youtube.com/watch?v=lZvR6-WUbJo
Emex氏の動画は使い方次第でその可能性を示してくれています。(^^)


アドイン版 C.Basic ver.1.60ベータ版(進数変換+新描画色追加+バグ修正版)
http://pm.matrix.jp/CB/CBASIC160beta.zip
・任意の進数変換コマンドとしてStrBase( コマンドを追加しました。
(書式) StrBase( N進数文字列, 変換前の進数N, 変換後の進数M)
進数の範囲は2~64までです。
   使用キャラクタは{ 0-9 A-Z a-z <theta><pi>}
N進数の文字列からM進数の文字列に変換します。
(例) StrBase("579",15,12) -> "873"
StrBase("100",13,10) -> "169"
StrBase("123",16,3) -> "101210"
StrBase("43981",10,16) -> "ABCD"
StrBase("12A345AFZ",36,10) -> "2999794422815"
StrBase("AZaz",62,10) -> "2520113"

・"Graph Y=" で コマンド前のラインスタイルが設定できなかったバグを修正しました。
・_PixelTest( が行頭にあった場合に動作しなかったバグを修正しました。

・Monochromeライブラリ系コマンドの描画色に2x2ドット柄を追加しました。
 Colorの値:10 11   12   13   14 (1ドット描画)
 Colorの値:20   21   22   23   24 (2x2ドット描画)
      □□  ■□  ■□  ■■  ■■
      □□  □□  □■  ■□  ■■
(例)_FillCircle 64,32,30,21

・Monochromeライブラリ系コマンドの描画色にランダムカラーを追加しました。
 Colorの値に4を指定した場合、Colorに続くパラメータは黒ドットとなる確率(0~1)を指定できます。
(例) _Rectangle 0,0,127,63,0,0,4,0.5
 画面全体が半分の確率でランダムに黒ドットで埋まります。
(例) _Rectangle 0,0,127,63,0,0,4,0.1
 画面全体が10%の確率でランダムに黒ドットで埋まります。
(例)_FillCircle 64,32,30,4,0.5
 円の内側が50%の確率で黒ドットで埋められます。
(例) _FillCircle #0,0,3,4,0.5
 円の内側が半分の確率でランダムに黒ドットで埋まります。

・Monochromeライブラリ系コマンドの"_Line"コマンドにおいて線の太さ指定を追加しました。
(書式)_Line x1,y1,x2,y2,color[,確率][,幅]
(例)_Line 0,0,127,63,1,,10
 画面を斜めに10ドットの太さの直線が描かれます。

アドイン版 C.Basic ver.1.59ベータ版(エディタに置換機能追加版)

管理人様、C.Basicユーザーの皆様、こんにちは!

Ver.1.57よりエディタとファイルモードの機能追加とバグ潰しを行っているところですが、
Ver.1.58のミニフォント表示に続いて置換機能を追加しました。
あとはエンバグしていた機能の復活とバグ潰しです。(^^;


アドイン版 C.Basic ver.1.59ベータ版(エディタに置換機能追加版)
http://pm.matrix.jp/CB/CBASIC159beta.zip
・エディタの検索に置換機能を追加しました。検索入力時に[F2]を押すと置換文字列入力が出来ます。
 置換には確認しながら置換[F2]と一気に置換するモード[F4]があります。
・フォルダ上でにカーソルがある状態で新規ファイルを作成することが出来るようになりました。
・クリップ選択から検索に文字列が入力できなくなっていた不具合を修正しました。
・StrInv(が上手く動作しなかったバグを修正しました。

アドイン版 C.Basic ver.1.58ベータ版(ミニフォントエディタ追加版)

管理人様、C.Basicユーザーの皆様、こんにちは!

Ver.1.57での積み残しのミニフォント表示によるエディタを追加しました。
標準フォントに比較するとカーソル形状が変わらない等の差異がありますが、
一度に見渡せるリストが増えるので便利に使えることもあるかと思います。(^^)

アドイン版 C.Basic ver.1.58ベータ版(ミニフォントエディタ追加版)
http://pm.matrix.jp/CB/CBASIC158beta.zip
・ミニフォント表示のエディタが使えるようになりました。

(2017.7.14追記)
・実行中断時にデバッグモードにならない設定を追加しました。
・ファイルモードの[DEL]でフォルダの削除も出来るようになりました。

差し替えアップしております。(^^;

アドイン版 C.Basic ver.1.57ベータ版(いろいろと追加進行版)

管理人様、C.Basicユーザーの皆様、こんにちは!

UCFの方で大量のお題をいただきましたので、出来るところから追加しています。
例によって、バグも多数残っていると思われるのでバグ見つかりましたらよろしくお願いいたします。


アドイン版 C.Basic ver.1.57ベータ版(いろいろと追加中版)
http://pm.matrix.jp/CB/CBASIC157beta.zip

・エディタ画面の最上部一行をエディタとして使う設定を加えました。Setupから設定します。
・カット&ペースト画面で削除だけをするボタンを追加しました。
・エディタ終了時の強制自動保存に対応しました。Setupで設定します。
・If~Then~IfEndにおいてThenが無くてもエラーにしないようにしました。
・Screenコマンドに画面全体を反転するRオプションを追加しました。"Screen"+"R"
(例)ScreenR
・論理座標系から物理座標を求めるScreenコマンドの"#"オプションを追加しました。
 結果はListAnsに返ります。
(使い方) Screen#X,Y[,Xmin][,Xmax][,Ymin][,Ymax]
(例)Screen#1,1,-6.3,6.3,-3.1,3.1
  ListAns{74,22}
・Monochromeライブラリ系のコマンドを論理座標で使うことのできる"#"オプションを追加しました。
support ML command,
_Point
_Pixel
_PixelTest(
_Line
_Rect
_Horizontal
_Vertical
_Circle
_FillCircle
_Elips
_FillElips
_ElipsInRct
_FElipsInRct

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

・繰り返し文字列を返すStrChar(コマンドを追加しました。
(例)StrChar("ABC",5)
 文字列、"ABCABCABCABCABC"が得られます。

・文字列を真ん中に埋め込むStrCentr(を追加しました。
(使い方)StrCenter("文字列",length[,"周辺を埋めるキャラクタ"])
(例) StrCenter("Test",8)
 文字列、" Test "が得られます。
(例) StrCenter("Test",8,"*")
 文字列、"**Test**"が得られます。

・16進数と2進数の文字列に変換するHex(とBin(コマンドを追加しました。
(例)Hex(12345)->Str 1
 "3039"がStr 1に入ります。
 数値に戻すは、
(例) Exp("0X"+Str 1)->A

 2進数では、
(例)Bin(12345)->Str 1
 "11000000111001"がStr 1に入ります。
(例)Exp("0B"+Str 1)->A

・リストが1~52まで使えるようになりました。

・ファイルモードでフォルダ作成[MK.F]キーを追加しました。
 [[RN.F]は将来的な実装となります。


(2017.7.5追記)
増量リストのバグ修正と以下の機能追加です。差し替えアップしております。

・物理座標系から論理座標を求めるScreenコマンドの"%"オプションを追加しました。
 結果はListAnsに返ります。
(使い方) Screen%X,Y[,Xmin][,Xmax][,Ymin][,Ymax]
(例)Screen%74,22,-6.3,6.3,-3.1,3.1
 ListAns{1,1}

(2017.7.8追記)
StrCenter(の仕様修正です。差し替えアップしております。
現在エディタのミニフォント表示対応を進めております。
ちょっと時間かかってます。(^^;

アドイン版 C.Basic ver.1.56ベータ版(TicksWaitコマンド追加版)

管理人様、C.Basicユーザーの皆様、こんにちは!

隔週刊?C.Basic編集長?のsentaroです。(^^;

システムタイマー値を取得する%およびTicksコマンドは以前より実装済みですが、
1/128s単位で時間待ちをするTicksWaitコマンドを追加しました。
CPU速度に関係なく一定の時間待ちする場合やフレームレートのコントロールに使えると思います。(^^)


アドイン版 C.Basic ver.1.56ベータ版(TicksWaitコマンド追加版)
http://pm.matrix.jp/CB/CBASIC156beta.zip
・LCD描画のリフレッシュコントロールにおいて、RefrshTime値に0を指定することで画面更新しなくなる設定を追加しました。
 セットアップ、およびコマンドで指定可能です。
(例)RefrshCtrl 2
   RefrshTime 0
 テキスト、グラフィックス全ての描画コマンドでコマンド実行直後での画面が更新されなくなります。

・1/128秒単位で時間待ちをするTicksWaitコマンドを追加しました。
 (TicksとWaitコマンドの連続合わせ技です。関連してコマンド入力キーアサインを一部変更しました。)
(例)TicksWait 128
 1秒間待ちます。
(例)TicksWait -128
 前回のTicksWaitコマンド実行時より1秒間待ちます。すでに1秒を越えていた場合は待ち時間無しで次の処理に移ります。
(例)TicksWait -4
 前回のTicksWaitコマンド実行時より4/128秒待ちます。ループ内にこのコマンドを一つ記述するだけで毎秒32回のループが作れます。

アドイン版 C.Basic ver.1.55ベータ版(?コマンド拡張版)

管理人様、C.Basicユーザーの皆様、こんにちは!

週刊C.Basic編集長?のsentaroです。(^^;

今週のバージョンアップは、もっと早くに実装すべきだった”?”コマンドの拡張です。
数値や文字列の任意の箇所で任意の桁数での入力がC.Basic上で使えるようになります。


アドイン版 C.Basic ver.1.55ベータ版(?コマンド拡張版)
http://pm.matrix.jp/CB/CBASIC155beta.zip
・?コマンドにオプションパラメータを追加しました。
 このオプションを付けると直前のカーソル位置から改行されません。入力プロンプトの"?"も表示されません。
(書式)?([x][,y][,width][,"空白キャラクタ"][,R])
 各パラメータは省略できます。
(例)"A="?()->A
 "A="に続いて入力待ちになります。
(例)"A="?(,,,,R)->A
 "A="に続いて反転表示で入力待ちになります。
(例)"A="?(,,8,,R)->A
 "A="に続いて反転入力待ちになります。入力範囲は8桁分のみです。それを超える入力では横スクロールします。
(例)?(3,4,5,">")A
 X=3,Y=4の位置でAの値を表示して入力待ちになります。入力範囲は5桁分のみ、空白は">"で埋められます。
(例)?(3,4,5,,R)A
 X=3,Y=4の位置でAの値を反転表示して入力待ちになります。入力範囲は5桁分のみ、それを超える入力では横スクロールします。

・AxesOnにおいてグラフの目盛りが描画されないことがある不具合を修正しました。



(2017.6.12追記)

akatuki様のサイトにて公開されている面白プログラムの移植で_PixelTest(が動作しなかったバグが見つかりました。(^^;
https://akatuki-724.blogspot.jp/2017/06/hpgcc-3-wannacry.html

http://pm.matrix.jp/CB/WANACRY1.txt
http://pm.matrix.jp/CB/wanacry1.gif

一列転送の高速版
http://pm.matrix.jp/CB/WANACRY2.txt
http://pm.matrix.jp/CB/wanacry2.gif


ver.1.55beta差し替えております。m(_ _)m

Re:Re: アドイン版 C.Basic ver.1.54ベータ版(地道にバグ修正+α版)

管理人様、こんにちは!

毎週届く部品を組み立ててれば完成するというわけではないのですが、(^^;
毎週バグが見つかり修正&機能追加という状況がほぼ習慣化して週刊C.Basic創刊?と相成りました。(^^;


>継続的なアップデート、大変お疲れ様です。

バグが次々と出て来る状況に恐縮するばかりですが、CasioBasicプログラムがそのまま動かせるという基本目標に少しずつ近づいている感じでしょうか。
実装コマンドの範囲では出来るだけ100%の互換を持たせたいと思っています。
さらにその上でプラスαの部分があるのがC.Basicなので、これからも最終目標に向けて更新を頑張ってまいります。(^^)


>単機能追加でなくて、広範囲に影響のある機能追加は、なかなか大変ですね。

はい、一度に大量に追加&変更をするとエンバグの可能性が増えるので、少しずつ機能追加して様子を見ていくのが最善かなと最近は思っています。(^^;


>まだまだ supoer busyな状態ですが、少しずつキャッチアップしたいと思っています。

CasicBasicの細かな仕様は私の調べ方が悪いのか一度に全部洗い出せないのでバグ潰しも少しずつという状況になっていたりしてます。
CasicBasic最強の探索隊長の管理人様のお早い復帰を願っております。(^^)

Re: アドイン版 C.Basic ver.1.54ベータ版(地道にバグ修正+α版)

編集長のsentaro様(^^;)

継続的なアップデート、大変お疲れ様です。

単機能追加でなくて、広範囲に影響のある機能追加は、なかなか大変ですね。

まだまだ supoer busyな状態ですが、少しずつキャッチアップしたいと思っています。

アドイン版 C.Basic ver.1.54ベータ版(地道にバグ修正+α版)

管理人様、C.Basicユーザーの皆様、こんにちは!

週刊C.Basic編集長?のsentaroです。(^^;

今週のバージョンアップは、
実数での行列乗算が整数演算になっていたという単純ミスによる重大なバグに汗出まくりですが、
Plot-LineとPictファイル関連と時間のかかるテキスト変換時のプログレスバー追加の更新です。


アドイン版 C.Basic ver.1.54ベータ版(地道にバグ修正+α版)
http://pm.matrix.jp/CB/CBASIC154beta.zip
・実数時の行列の乗算が整数演算になっていたバグを修正しました。
・Plotコマンド2つとLineコマンドでライン描画されなかった不具合を修正しました。
・隠しRAM使用時にPictファイルをHeapエリアではなく隠しRAMエリアに保存するようにしました。行列と同様に起動時の初期化をしない仕様が適用出来ます。
・PictファイルをHeap(隠しRAM)エリアで使用する場合、保存時にストレージメモリに保存する設定(セットアップ)とコマンドオプションを追加しました。
(例)Pict #20
 ヒープ(隠しRAM)領域とストレージメモリに同時に保存します。

・テキストから変換時にプログレスバーを表示するようにしました。



今週のC.Basic移植版です。
Planet-Casioより、Riptor氏作成の純正CasioBasicで動作する難解パズルゲームTokitoriです。
http://www.planet-casio.com/Fr/programmes/programme1693-1-toki-tori-riptor-.html

http://pm.matrix.jp/CB/CB_Tokitori.zip(C.Basic移植版)

6面で壁にぶつかって先に進めてないので、その後の動作確認が取れていません。(^^;

アドイン版 C.Basic ver.1.53ベータ版(地道にバグ修正版)

管理人様、C.Basicユーザーの皆様、こんにちは!

相変わらず日々バグを発見してしまう状況が続いています。(^^;


アドイン版 C.Basic ver.1.53ベータ版(地道にバグ修正版)
http://pm.matrix.jp/CB/CBASIC153beta.zip
・StrRightコマンドのバグを修正しました。
(例)StrRight("12345",0)
 この結果はヌルストリングになるはずが"5"になっていました。

・List演算時にacosがcosになっていたバグを修正しました。
・Grpah Y=コマンドでYn変数が使えなかった不具合を修正しました。
(例)"sin X"->Y1
   Graph Y=Y1
・文字列内にエスケープ文字でクォーテーションマークが使用されている場合、テキスト変換がおかしくなる不具合を修正しました。
(これはfx-CG10/20でもおかしくなるようです。)

・Lblコマンドでラベル名に英小文字が使用できるようになりました。

アドイン版 C.Basic ver.1.52ベータ版(バグ修正版)

管理人様、こんにちは!

>すっかりご無沙汰しており、すみません。
>どんどん C.Basic が進化していますね。

互換性チェックをするたびにあちらこちらで綻びが出てきてしまっているので、
その度にCasioBasicの奥深さを感じるとともに、互換を取るというのは簡単なことではないなと実感する毎日です。(^^;


>仕事のため、殆どブログのための時間が取れていません。
>業務連絡の件、放置していて申し訳ありません。
>なんとか時間を見つけて対処したいと思っていますが、もう少しお待たせする可能性大です。

了解しました。

日々バグを発見してしまう状況は相変わらずなので、進歩状況が予定より遅れ気味なのですが、
今年の夏頃までにはなんとかコンパイラとCG10/20/50への移植を形にしたいと思っています。(^^)

ってことで、1.51のバグ修正版です。

アドイン版 C.Basic ver.1.52ベータ版(バグ修正版)
http://pm.matrix.jp/CB/CBASIC152beta.zip
・LocateやTextコマンドにおいて””ダブルクォーテーションが閉じていない場合、以降のプログラムが文字列扱いになってしまう不具合を修正しました。
・RanNorm#(とRanBin#(関数を追加しました。


akatuki様のサイトにて公開されている面白プログラムを移植してみました。(^^)
https://akatuki-724.blogspot.jp/2017/04/hpgcc-2.html
http://pm.matrix.jp/CB/BLIPWORK.txt
http://pm.matrix.jp/CB/BlipWorks.gif

Re: アドイン版 C.Basic ver.1.51ベータ版(ファンクションキーを純正アイコンに変更版)

sentaro様

すっかりご無沙汰しており、すみません。
どんどん C.Basic が進化していますね。

仕事のため、殆どブログのための時間が取れていません。

業務連絡の件、放置していて申し訳ありません。
なんとか時間を見つけて対処したいと思っていますが、もう少しお待たせする可能性大です。

取り敢えず、生存証明をさせて頂きます。

アドイン版 C.Basic ver.1.51ベータ版(ファンクションキーを純正アイコンに変更版)

管理人様、C.Basicユーザーの皆様、こんにちは!

ver.1.5ベータ版でfx-9860Gシリーズの純正のコマンド入力をサポートした結果、
ファンクションキーのアイコン表示がかなり増えたので純正のアイコン表示に変更してみました。
純正アイコンが存在しない拡張コマンドのアイコンは従来のままです。
これで、パッと見た目、純正CasioBasicっぽくなりました。(^^)

アドイン版 C.Basic ver.1.5ベータ版(ファンクションキーを純正アイコンに変更版)
http://pm.matrix.jp/CB/CBASIC151beta.zip
・ファンクションキーのアイコンをシステムのアイコンに変更しました。
・GCD(とLCM(関数を追加しました。

アドイン版 C.Basic ver.1.5ベータ版(純正コマンド入力方式サポート版)

管理人様、C.Basicユーザーの皆様、こんにちは!

初期よりずっとfx-5800P準拠のコマンド入力方式で続いてきているC.Basicですけど、
fx-9860Gシリーズでのコマンド入力方式に慣れている方も多くいると思われますので、
遅ればせながら純正のコマンド入力を追加実装してみました。
ここのところはコマンドレベルでの互換性アップのバージョンアップでしたけど、
今回はコマンド入力における互換性アップのバージョンアップとなります。
セットアップでfx-5800P準拠のコマンド入力方式と切り替え可能ですので、入力しやすい方が選択できます。(^^)


アドイン版 C.Basic ver.1.5ベータ版(純正コマンド入力方式追加版)
http://pm.matrix.jp/CB/CBASIC150beta.zip
・純正同様のコマンド入力をサポートしました。セットアップにてC.Basic(fx-5800P)方式とStandard(fx-9860G)方式を選択できます。
 入力可能なコマンドはCommand_List.txtを参照して下さい。

・行列コマンドとして*Row,*Row+,Row+コマンドをサポートしました。


#管理人様、業務連絡です。
 http://www.planet-casio.com/Fr/forums/topic14738-6-C.Basic.html#148967
 C.Basicの英語サイトの最初のページをPlanet-CasioのLephenixnoir氏に修正していただきました。
 README_EN.txtの最初の部分をその修正版に差し替えていただいております。m(_ _)m

アドイン版 C.Basic ver.1.42ベータ版(List演算バグ+修正版)

管理人様、C.Basicユーザーの皆様、こんにちは!

相変わらずバグが次々と発覚して焦っております。(^^;


アドイン版 C.Basic ver.1.42ベータ版(List演算バグ+修正版)
http://pm.matrix.jp/CB/CBASIC142beta.zip
・Lbl名にrとθが使えなかったのを修正しました。
・メインとサブプログラムで同じLbl名を使っていた場合、飛び先が不正になることがある不具合を修正しました。
・?->Aコマンドで未入力で[EXE]を押した場合にフリーズすることがあったのを修正しました。
・Listを含む演算でスカラーが後に来る場合のバグを修正しました。
(例)List 1 + 5 -> List 2


今回のバグの発見に寄与したプログラムです。
純正ではかなり重いプログラムですが、C.Basicで100MHz以上にオーバークロックするとGIFアニメ並に動きます。(^^)

Graph 3D (by Neuronix)
http://www.planet-casio.com/Fr/programmes/programme53-1-graph-3d-neuronix-programme-graphisme.html

C.Basic最適化版
http://pm.matrix.jp/CB/CB_Graph3D.zip

アドイン版 C.Basic ver.1.41ベータ版(Mat行列初期化無し版)

管理人様、C.Basicユーザーの皆様、こんにちは!

細かな修正というか、行列&Listが再起動する度に初期化されて消えてしまうのがもったいないので、消えないように出来るようにしてみました。
セットアップで設定して下さい。

アドイン版 C.Basic ver.1.41ベータ版(Mat行列初期化無し版)
http://pm.matrix.jp/CB/CBASIC141beta.zip
・隠しRAM使用時に、Mat行列&ListをC.Basic起動時に初期化しない設定を加えました。(要セットアップ設定)
 その場合、C.Basicを終了して他の機能やアドインを使用後、再度C.Basicを起動した場合に前回終了時点でのMat行列&Listが復活します。
 (他のアドインが隠しRAMを使用していない場合)
・MENUコマンドにおいて数字キーによる入力が出来なかったのを修正しました。

#管理人様の翻訳を元に添付文書の英語版を含めました。
#追加の私の翻訳は…というか半分以上、機械翻訳頼りなので変てこなところは後で修正します。(^^;

アドイン版 C.Basic ver.1.40 ベータ版(Mat行列乗算対応版)

管理人様、C.Basicユーザーの皆様、こんにちは!

UCFの方で、行列同士の乗算ができれば、というコメントがありましたのでサクッと対応してみました。
配列同士の乗算から行列同士への演算への仕様変更なので、従来バージョンからは純正仕様に近づく変更ということになります。

アドイン版 C.Basic ver.1.40 ベータ版(Mat行列乗算対応版)
http://pm.matrix.jp/CB/CBASIC140beta.zip
・純正仕様の行列の乗算をサポートしました。
 Mat行列を配列とみなしたMat配列同士の乗算は、小文字Mat行列を使うことでList同士の乗算にすることで可能です。(Listは実体が小文字Matと同じため)
(例)Mat a × Mat b
 行列乗算
(例)List 1 × List 2
 配列乗算


Mat行列を操作するコマンドは今のところはまだ未実装です。
とりあえず行列乗算のみです(^^;


(2017-04-16 17:15追記)
行列乗算のエラーチェックに不具合がありました。差し替え修正しております。(^^;

アドイン版 C.Basic ver.1.31 ベータ版(非互換バグ修正版)

管理人様、C.Basicユーザーの皆様、こんにちは!

毎度のことながら、後から後からバグというか、純正非互換仕様が見つかって焦っております。(^^;


今回バグ出しに役立ったプログラムとして、

Maze Generator (by Forabby)
http://www.planet-casio.com/Fr/programmes/programme3189-1-Maze-Generator-ForAbby-jeu-reflexion.html

迷路をバックトラック法によって作成するプログラムです。
オリジナルそのままでも動きますが、
C.Basicの整数モードでも動くバージョンを作成してみました。
http://pm.matrix.jp/CB/MAZEGEN.txt


それと、

数独(by friend of Gollum)
http://www.planet-casio.com/Fr/programmes/programme3153-1-Sudoku-Anonyme-jeu-reflexion.html

これは2進実数の精度の問題なのか、そのままでは上手く動作しないようで、(原因究明中...)
C.Basicの整数モードでも動くバージョンにしたら動くようになりました。
http://pm.matrix.jp/CB/SUDOKU.txt


これらのプログラムはノーマルクロック時、純正CasioBasicではちょっと遅さを感じてしまうプログラムですがC.Basicではちょうどいい感じになります。(^^)



アドイン版 C.Basic ver.1.31 ベータ版(非互換バグ修正版)
http://pm.matrix.jp/CB/CBASIC131beta.zip
・ Listの要素を一つずつ増やしていく再確保仕様を純正互換に修正しました。

・整数モードにおけるビット演算の[ not ]が論理演算の[ Not ]のままだったのを修正しました。

・Stopコマンドでプログラム終了時にDone表示が出なかったことのを修正しました。

アドイン版 C.Basic ver.1.30 ベータ版(And,Or純正非互換バグ修正版)

管理人様、C.Basicユーザーの皆様、こんにちは!

海外の方でアップされているCasioBasicのゲームプログラムを試していると気が付いてなった非互換仕様が続々見つかって焦ります。(^^;

今回発見の、And , Or , Xor が純正仕様では論理式評価になるべきところがビット演算仕様になっていたというのは今の今までに間違えていたと気が付かずお恥ずかしい限りです。(^^;

(A<5) And (B>3)
のような式であればビット演算仕様でも不具合は出ないのですが、
(A<5) And B
という式になると式の結果が純正非互換になる可能性が出てきます。

というわけで、かなり大きなバグというか仕様ミスという事で今回の修正となります。


今回の互換ミス発見となったCasioBasicのゲームプログラムです。
(Waitコマンドで遅くするだけで互換動作します。)

Patipat' (by Hydrielax)
http://www.planet-casio.com/Fr/programmes/programme3231-1-Patipat--Hydrielax.html

Parachute (by Alexot)
http://www.planet-casio.com/Fr/programmes/programme3238-1-Parachute-alexot-jeu-action-sport.html

BasicPlatformer (by Matt36230)
http://www.planet-casio.com/Fr/programmes/programme3226-1-BasicPlatformer-matt36230.html




アドイン版 C.Basic ver.1.30 ベータ版(And,Or純正非互換バグ修正版)
http://pm.matrix.jp/CB/CBASIC130beta.zip
・ And , Or , Xor の評価式がビット演算になっていたために純正非互換だったのを修正しました。
 従来:C言語の&,|同等でビット演算後の数値が返ります。
 今回:C言語の&&,||、返り値は0か1のみとなります。
・この変更でビット演算が出来なくなったので、ビット演算子として純正のBASEモードで使う[ and , or , xor, not ]を追加しました。

・”文字列”が横幅ちょうど21文字で終わった場合に(余分に?)改行されてなかった非互換性を修正しました。

・Menuコマンド実行中に[MENU]キーでメインメニューに戻ってしまう非互換性を修正しました。

#README_J.txtより変更履歴をCHANGE_J.txtに独立させました。



Monoclome.libサンプルゲームBallGame移植版
http://pm.matrix.jp/CB/CB_BallGame.zip

”And”コマンドの仕様が”and”に変わったので新たに修正版を追加しました。


(2017-04-10 23:10追記)
重大なバグが見つかりました。
・StrMidコマンドにおいて、3つめのパラメータを省略した場合にシステムエラーになる不具合を修正しました。
ということで、ver.1.30を差し替え修正しました。(^^;

Asprin (C.Basic移植版)

管理人様、C.Basicユーザーの皆様、こんにちは!

オリジナルはPierrotll氏作成のAspirineです。
http://www.planet-casio.com/Fr/programmes/voir_un_programme_casio.php?showid=1068&page=2

fx-CG10/20(LuaZM)版をflyingfisch氏が移植されています。。
http://community.casiocalc.org/topic/7074-aspirin-for-prizm/

http://www.casiopeia.net/forum/downloads.php?view=detail&df_id=97
さらにそこからfx-9860Gシリーズのアドイン移植版をCasimo氏が作成されているので、それをまたC.Basic版として移植してみました。

Monoclome.lib装備のC.Basic1.00以降で動作します。

遊び方は、大きい丸に小さい丸を接触させることで次々と縦横ラインが増えていき、小さい丸の移動時にラインに接触するとゲームオーバーです。

Asprin (C.Basic移植版)
http://pm.matrix.jp/CB/CB_Aspirin.zip


↑のプログラム移植で気がつくという単純バグですが、(^^;
Monoclome.libコマンドのNon-Fill系コマンドとFill系コマンドが逆になっていたので差し替え修正です。

アドイン版 C.Basic ver.1.20 ベータ版(配列演算+バグ修正版)
http://pm.matrix.jp/CB/CBASIC120beta1.zip

(2017-03-21 22:15追記)
・Mat行列表示時に[OPTN]でリスト表示できなくなっていました。ので差し替え修正です。(^^;

(2017-03-23 23:15追記)
Aspirinのオリジナル作者を間違えてましたので修正しました。m(_ _)m

(2017-04-9 21:45追記)
AspirinゲームはTI-84シリーズで2005年に発表されているのを見つけました。m(_ _)m
こちらが大元のオリジナルでしょうか?

アドイン版 C.Basic ver.1.20 ベータ版(配列演算+バグ修正版)

管理人様、C.Basicユーザーの皆様、こんにちは!

純正互換仕様の確認作業中で発覚した細かなバグ潰し+配列演算+αというところですが、
一応バージョン上げておきます。(^^;


アドイン版 C.Basic ver.1.20 ベータ版(配列演算+バグ修正版)
http://pm.matrix.jp/CB/CBASIC120beta1.zip
・リストの四則演算の延長で配列(行列)の演算が一部可能になりました。
 純正行列と互換のあるのは行列同士の加減算、および行列とスカラー演算のみとなります。
(例)Mat A + Mat B
(例)Mat A * B + Int Mat C

・BG-None、BG-Pictコマンドの互換性を改善しました。

・テキストソースからの変換においてExp(-)の変換ミスを修正しました。
(誤)Exp(-)9 -> Exp(-)9
(正)Exp(-)9 -> e-9

・Getkey1,Getkey2コマンドで[MENU]キーでメインメニューに戻ってしまっていたのを純正Getkeyと同じく戻らないようにしました。

アドイン版 C.Basic ver.1.10 ベータ2版(リスト機能追加+バグ潰し版)再々(^^;

管理人様、C.Basicユーザーの皆様、こんにちは!

整数モードでのリスト機能が上手く動かなかったので一部修正しました。
あとは、バグ潰しと、細かな機能拡張等々、ここまでの拡張&バグ潰しで純正Basicとの互換性はかなり上がったと思いますが、
各所でアップされているCasioBasicプログラムがまだまだそのままで動作するというわけにはいかないのがCasioBasicの奥深さですね。


アドイン版 C.Basic ver.1.10 ベータ2版(リスト機能追加+バグ潰し版)
http://pm.matrix.jp/CB/CBASIC110beta2.zip

・整数モードのリスト機能に対応しました。

・Mat行列表示時に[OPTN]キーでリスト表示に変わります。[VARS]キーで文字列表示&入力が出来るようになりました。

・#'CBINT、#'CBDBLがプログラム中で複数使われた場合に機能しない不具合を修正しました。

・”Char”が含まれる文字列のテキスト変換ミスを修正しました。

・Pictをヒープ領域に設定している時に、カレントディレクトリもしくはPictフォルダに同じNoのPict画像ファイルが存在する場合は自動的に読み込むようにしました。
 PictをS.Mem領域に設定している場合にはカレントドライブのPictフォルダしかアクセスしません。
(例)Pict10.g1mファイルがカレントディレクトリもしくはPictフォルダに存在すれば、Pict10を最初にアクセスした時にその画像がヒープのPict領域に自動的に読み込まれます。
   存在しない場合はメモリエラーとなります。
   画像が存在した場合は、次回のPict10アクセスからはヒープアクセスのみとなります。

・ファイルリスト画面にてPictファイルで[EXE]を押すと画像の確認ができます。



リスト&Graph(X,Y)=(コマンドテスト用ゲーム Block Tower移植版
http://pm.matrix.jp/CB/CB_BlockTower.zip
・タイトルバックの画像ファイルを含めました。
の画像ファイルは元々のオリジナルファイルに存在していたものですが、C.Basicで利用するためにはPictモードをS.MemにしてPictフォルダに画像ファイルを入れておく必要がありました。
今回のバージョンより、プログラム本体のあるフォルダ、もしくはPictフォルダに画像ファイルを入れておけば、PictモードはHeapのままで画像が自動的に読み込まれるようになります。



(2017-03-11 17:30追記)
Pictファイルの読み込みでシステムエラーが出ることがあったのを修正しました。ってことで、差し替えました。(^^;


(2017-03-11 23:40追記)
・For~Nextコマンドにおいて初期値が終値を超えている場合にループ内を通過してしまう非互換性を修正しました。

この仕様ミスは今の今まで気が付いてませんでした。ってことで、またまた差し替えております。(^^;

アドイン版 C.Basic ver.1.10 ベータ版(リスト機能追加版)再び(^^;

管理人様、こんにちは!

書き込む場所を間違えてました。(^^;

C.Basic ver.1.10としては一区切りのつもりだったのですが、
Listに絡む使用頻度の高いコマンドとしてDrawStatを追加したので、仕切り直しです。(^^;

DrawStatはGraph(X,Y)=同様に統計グラフ描画コマンドですが、純正CasioBasicでの高速描画コマンドとして使用されている例が多いので追加しました。
あと、またちょこちょこバグが見つかったので修正しております。


アドイン版 C.Basic ver.1.10 ベータ版(リスト機能追加版)再び(^^;
http://pm.matrix.jp/CB/CBASIC110beta1.zip

・リスト機能をサポートしました。
・サポートコマンド
 List Ans
 {1,2,3,4,5}->List 1
 10->Dim List 1
 Dim List 1
 Seq( X^2, X, 1, 10, 2 )->List 2
 Argument(List1,List2)->List3
 Mat>List( Mat A, 2) -> List 1
 List>Mat( List 1, List 2,..) -> List 9
 Fill(3,List1)
 Min(List1)
 Max(List1)
 Mean(List 1)
 SortA(List1)
 SortB(List1)
 Sum List1
 Prod List1
 Sigma(数式、制御変数、初期値、終値、刻み)

・リストを含む演算(四則演算と関数演算)をサポートしています。
 サポート済 A + List 1[B-1] * List 2[C+1]
 サポート済 A + List 1 + A - B * Cos C * List 2
 サポート済 Sin List 1 + Cos List 2 * log List 3

・DrawStatコマンドとGraph(X,Y)=(コマンドを一部サポートしました。
 関連コマンドとして、
 BG-None、BG-Pict、G-Connect、G-Plot
 S-Gph1、S-Gph2、S-Gph3、DrawOn、DrawOff、Scatter、xyLine、Square、Cross、Dot
 コマンドの追加と、
 TθMin
 TθMax
 TθPtch
 これらのViewWindow設定変数の読み書きに対応しました。

・ファイルのDeleteコマンド追加しました。
(例)Delete "TEST.txt"
 "TEST.txt"を削除します。
(例)Delete "TEST.txt"、1
 削除前に確認します。

・デバッグモード時に、[F1] (JUMP) ジャンプサブメニュー[F6]スキップダウンが動作しなかったのを修正しました。

・For~Nextコマンドにおいて制御変数の終値が超過していたのを修正しました。

・Ansの値が常に式の結果になっていたところを(→)代入がある場合はAnsを更新しない純正仕様に合わせました。

・行頭のスペースにおいて、If~ThenコマンドのThenの前がスペースの場合にエラーになる不具合を修正しました。

・一行内にループ構造があるとで[AC]ブレークが効かない不具合を修正しました。
(例)While GetKey<>31:WhileEnd

・サブプログラム内でStopコマンドで終了しない不具合を修正しました。

・文字列変数に使われるデフォルト行列をs(小文字)から追加変数ののrに変更しました。

・全体の実行速度を遅くするウエイト機能を追加しました。セットアップおよびWaitコマンドで設定します。
 セットアップで設定した場合は全部のプログラムが影響を受けます。
 個々のプログラムで調整したい場合はWaitコマンドを使用します。
 (例)Wait 100
  ウエイト値に100を設定します。
  SH3機でもSH4機でも同じ程度の速度低下となっています。
  ウエイト値、10で約1/2,100前後で速度1/10になります。(速度低下の程度はプログラムによって異なります。)


#README_J.txtはセットアップと更新履歴の更新となっています。
#Manual_J.txtはセットアップとDeleteコマンドとWaitコマンド追加、行列の表示についての項目にリスト表示の追加、リストの項目、純正コマンドのサポートリストの更新となっています。



DrawStatの動作チェックはこちらの純正CasioBasicで動くテトリスゲームが互換動作するようにコマンド追加したところですが、
純正Basicでも普通に動くので、C.Basicで動かすとゲームになりませんのでウエイト必須です。(^^;
http://www.planet-casio.com/Fr/programmes/programme377-1-tetris-pll-pierrotll-jeu.html
ソース修正無しで動きますが、描画抜けが発生するのでリフレッシュコントロールはオフにしてください。


リスト&Graph(X,Y)=(コマンドテスト用ゲーム Block Tower移植版
http://pm.matrix.jp/CB/CB_BlockTower.zip

Monoclome.libサンプルゲームBallGame移植版
http://pm.matrix.jp/CB/CB_BallGame.zip

Re:Re: アドイン版 C.Basic ver.1.10 ベータ1版(リスト機能追加版)

管理人様、こんにちは!

>おそらく今度の土日にUFC対応となりそうです。

ここのところのC.Basicのバージョンアップは純正互換度アップの拡張なので、互換性確認で日々バグ発見の連続です。
なので、Ver.1.10バグフィックス版は土日あたりまでにはなんとかフィックス出来ればというところです。(^^;

Re: アドイン版 C.Basic ver.1.10 ベータ1版(リスト機能追加版)

sentaro様

かなりバタバタモードで、沈んでいます。

かなり根本的な改造となったようですね。お疲れ様です。

おそらく今度の土日にUFC対応となりそうです。

とりあえず、生存証明ということで...

アドイン版 C.Basic ver.1.10 ベータ1版(リスト機能追加版)

管理人様、こんにちは!

リストを含む関数演算サポート完了しましたので、今回で正式の1.10ベータ版となります。(^^;
リスト機能については、互換性重視での実装となりますが、不足している機能については逐次追加していきたいと思います。(^^)


アドイン版 C.Basic ver.1.10 ベータ1版(リスト機能追加版)
http://pm.matrix.jp/CB/CBASIC110beta1.zip

・リスト機能をサポートしました。
・サポートコマンド
 List Ans
 {1,2,3,4,5}->List 1
 10->Dim List 1
 Dim List 1
 Seq( X^2, X, 1, 10, 2 )->List 2
 Argument(List1,List2)->List3
 Mat>List( Mat A, 2) -> List 1
 List>Mat( List 1, List 2,..) -> List 9
 Fill(3,List1)
 Min(List1)
 Max(List1)
 Mean(List 1)
 SortA(List1)
 SortB(List1)
 Sum List1
 Prod List1
 Sigma(数式、制御変数、初期値、終値、刻み)

・リストを含む演算は四則演算と関数演算をサポートしています。
 サポート済 A + List 1[B-1] * List 2[C+1]
 サポート済 A + List 1 + A - B * Cos C * List 2
 サポート済 Sin List 1 + Cos List 2 * log List 3

・Graph(X,Y)=(コマンドを一部サポートしました。
 関連コマンドとして、
 BG-None、BG-Pict、G-Connect、G-Plotコマンドの追加と、
 TθMin
 TθMax
 TθPtch
 これらのViewWindow設定変数の読み書きに対応しました。

・ファイルのDeleteコマンド追加しました。
(例)Delete "TEST.txt"
 "TEST.txt"を削除します。
(例)Delete "TEST.txt"、1
 削除前に確認します。

・デバッグモード時に、[F1] (JUMP) ジャンプサブメニュー[F6]スキップダウンが動作しなかったのを修正しました。

・For~Nextコマンドにおいて制御変数の終値が超過していたのを修正しました。

・Ansの値が常に式の結果になっていたところを(→)代入がある場合はAnsを更新しない純正仕様に合わせました。

・行頭のスペースにおいて、If~ThenコマンドのThenの前がスペースの場合にエラーになる不具合を修正しました。

・一行内にループ構造があるとで[AC]ブレークが効かない不具合を修正しました。
(例)While GetKey<>31:WhileEnd

・全体の実行速度を遅くするウエイト機能を追加しました。セットアップおよびWaitコマンドで設定します。
 セットアップで設定した場合は全部のプログラムが影響を受けます。
 個々のプログラムで調整したい場合はWaitコマンドを使用します。
(例)Wait 100
 ウエイト値に100を設定します。
 SH3機でもSH4機でも同じ程度の速度低下となっています。
 ウエイト値、10で約1/2,100前後で速度1/10になります。(速度低下の程度はプログラムによって異なります。)


#README_J.txtはセットアップと更新履歴の更新となっています。
#Manual_J.txtはセットアップとDeleteコマンドとWaitコマンド追加、行列の表示についての項目にリスト表示の追加、リストの項目、純正コマンドのサポートリストの更新となっています。



リスト機能テスト用ゲーム Block Tower移植版
http://pm.matrix.jp/CB/CB_BlockTower.zip

Monoclome.libサンプルゲームBallGame移植版
http://pm.matrix.jp/CB/CB_BallGame.zip


(2017-02-26 21:45追記)
Fillコマンドとテキスト変換でバグが見つかりましたので差し替え修正です。(^^;

(2017-02-27 23:28追記)
Waitコマンドの設定値をSH3とSH4機で同程度に調整しました。ので差し替え修正です。(^^;

ver.1.10ベータ1版差し替え修正です。(^^;

管理人様、こんにちは!

またまたちょいバグ発見で、差し替えております。(^^;
変数リスト表示時に小文字に切り替えた時にrとθが不正な値になっていたのを修正しました。

Mat表示画面にて[OPTN]キーを押すと一応リスト名表示に変わります。

#README_J.txtはセットアップと更新履歴の更新となっています。
#Manual_J.txtはセットアップとDeleteコマンド、行列の表示についての項目にリスト表示の追加、純正コマンドのサポートリストの更新となっています。

(2017-02-22(18:53)追記)
SortAとSortDが仕様確認ミスしてました。(^^;
ListAnsに結果が残る仕様となっていたのを修正、差し替えです。

純正仕様はSortA(List1)はList1を直接ソートし、ListAnsには結果が残りません。

アドイン版 C.Basic ver.1.10 ベータ1版(リスト機能追加途中経過版)

管理人様、こんにちは!

C.Basicの方はリスト+Graph(X,Y)コマンド実装において一応目標であるところの、このプログラムがなんとか動作するところまでこぎつけました。

Block Tower
https://www.youtube.com/watch?v=gT2nNHGaWIc
http://www.planet-casio.com/Fr/programmes/programme3082-1-Block-Tower-ninestars-jeu-direction-tir.html

途中からは、このゲームが動作することが目的になりつつあったところですけど、(^^;
CasioBasicの高等テクニックがふんだんに使われていて、
C.Basicのいくつかのバグも発見できたりとかなり収穫の多いゲームプログラムでした。

ということで、このゲームが動作するC.Basicを途中経過版として一応アップしておきます。


アドイン版 C.Basic ver.1.10 ベータ1版(リスト機能追加途中経過版)
http://pm.matrix.jp/CB/CBASIC110beta1.zip

・リスト機能を一部サポートしました。
・サポートコマンド
 List Ans
 {1,2,3,4,5}->List 1
 Dim List 1
 Seq( X^2, X, 1, 10, 2 )->List 2
 Argument(List1,List2)->List3
 Fill(3,List1)
 Min(List1)
 Max(List1)
 SortA(List1)
 SortB(List1)
 Sum List1
 Prod List1
 Sigma(数式、制御変数、初期値、終値、刻み)

・一要素に関する演算は行列同等ですが、リスト全体を含む演算に関しては四則演算のみのサポートとなっています。

 サポート済 A + List 1[B-1] * List 2[C+1]
 サポート済 A + List 1 + A - B * Cos C * List 2
 未サポート Sin ( List 1 ) + Cos ( List 2 )

・Graph(X,Y)=(コマンドを一部サポートしました。
 関連コマンドとして、
 BG-None、BG-Pict、G-Connect、G-Plotコマンドの追加と、
 TθMin
 TθMax
 TθPtch
 これらのViewWindow設定変数の読み書きに対応しました。

・ファイルのDeleteコマンド追加しました。
(例)Delete "TEST.txt"
 "TEST.txt"を削除します。
(例)Delete "TEST.txt"、1
 削除前に確認します。

・デバッグモード時に、[F1] (JUMP) ジャンプサブメニュー[F6]スキップダウンが動作しなかったのを修正しました。

・For~Nextコマンドにおいて制御変数の終値が超過していたのを修正しました。

・全体の実行速度を遅くするウエイト機能を追加しました。セットアップおよびWaitコマンドで設定します。
 SH4機では5000以上のウエイト値で純正CasioBasicの速度に近付きます。(プログラムによって異なります。)

・Ansの値が常に式の結果になっていたところを(→)代入がある場合はAnsを更新しない純正仕様に合わせました。

・行頭のスペースにおいて、If~ThenコマンドのThenの前がスペースの場合にエラーになる不具合を修正しました。

・一行内にループ構造があるとで[AC]ブレークが効かない不具合を修正しました。
(例)While GetKey<>31:WhileEnd


Block Towerのプログラムはソースそのままで動けばよかったのですが、一部変更が必要なので、変更済みのソースをこちらにアップしておきます。
Block Tower(最新C.Basic ver.1.10で動作する版)
http://pm.matrix.jp/CB/BlockTower.zip

MyClock Ver 1.17.3a

sentaro様

MyClock Ver 1.17.3a
邪魔にならないデジタル時計(アラーム機能付き)
http://egadget2.web.fc2.com/archives/Src_files/C_Sharp/MyClock_Ver1.17.3a.html

MyClock.exeのコピーだけなら設定は引き継がれます。


以上お知らせまで...

MyClock Ver 1.17.3 でほぼバグが無くなったと思います

sentaro様


アップグレードで設定を引き継ぐ対応を進めている際、複数のバグと仕様外の挙動が見つかったので修正しました。外観の設定で、致命的なバグや、亜r-編む発動時の挙動が妙な感じになるなど、結構エンバグしていました。

初期の頃から二重起動を禁止しているので、ソースを弄っている時は MyClockを起動させないようにしていました。ところがソースを触っていてアラーム時刻を見逃すことが何度かかったので、全くもって本末転倒です。そこで、デバッグモードでは二重起動可能にしました。

MyClock Ver 1.17.3
邪魔にならないデジタル時計(アラーム機能付き)

http://egadget2.web.fc2.com/archives/Src_files/C_Sharp/MyClock_Ver1.17.3.html



C.Basic のコメントなのに、MyClockネタばかりになってしまってすみません。

MyClock や scClock に関するコメントを 以下で頂けると助かります。
http://egadget.blog.fc2.com/blog-entry-583.html


この記事では、アップデート情報を更新しているので、私がコメントで同じ内容をアップするのは、何だか妙な感じなので、よろしくお願い致します。

MyClock Ver 1.17.2 でさらに改善しました

sentaro様

実際に日常的に自分で使っていると、見落とした問題が見つかるものです。

外観のプロパティを動的にカスタマイズする"外観の設定"ダイアログでは、ボタンを押して外観が切り替わるのに少し時間がかかります。実際に切り替わるタイミングよりも速くボタンを連打すると、そのうち表示されるプロパティが2つの外観が混在するような異常が発生することがあります。一旦ダイアログを閉じて再び表示すると問題が解消されるので、表示だけの問題です。

そこで、切り替わりが速くなるわけでは無いのですが、ボタン連打でも異常にならないように改善しました。

MyClock Ver 1.17.2
邪魔にならないデジタル時計(アラーム機能付き)
http://egadget2.web.fc2.com/archives/Src_files/C_Sharp/MyClock_Ver1.17.2.html


なんだかバタバタしていてすみません。結果的にロジックがスッキリと改善されました。

既に保存されている外観設定を、プログラムのアップデートで保持する方法は、色々と調査中です。

最有力候補は、設定内容が書かれた ini ファイルをプログラム終了時に書き出すことです。テキストベースで人が見ても分かり易いフォーマットなので、最悪それを見ながら設定をやり直してもらえます。

現在の MyClock.exe.config のような XMLファイルはプラウザなどで開いて読めないことはないですが、可読性が悪いので ini ファイルかな...

で、iniファイルを読み込み機能を追加すれば、自動あるいはボタンクリックでユーザーのお好みの設定を読み込ませられます。

他に良い方法があるかどうか、色々と調査中...

MyClock Ver 1.17.1 でバグが取れました

sentaro様


外観のカスタマイズを追加したことで、アラーム発動時の見え方や挙動が元の仕様外の動きをしていたので、修正しました。

自分で使っていて、これで一息ついた感じです。やはり最後に 1 が付かないとダメですね。


MyClock Ver 1.17.1
邪魔にならないデジタル時計(アラーム機能付き)
http://egadget2.web.fc2.com/archives/Src_files/C_Sharp/MyClock_Ver1.17.1.html


ところで、既に Ver 1.17.0 を使って外観のカスタマイズをしている場合は、MyClock.exe だけを上書きコピーすれば設定は引き継がれます。MyClock.exe.config ファイルをコピーしてしまうと既定値に戻ってしまいます。


外観カスタマイズができるようになったので、バージョンアップの時に設定を引き継げるように何か考えて次のアップデートに反映させようと思っています。


MyClock Ver 1.17.0 にアップテート

sentaro様


こんばんは、


外観のカスタマイズの際に、通常の外観とアラーム設定時の外観をボタンで切り替えられるように改善しました。前バージョンは、やはり使いにくかったので改善したところ、とても使い易くなりましたよ。

あと、外観のプロパティで、展開した項目を変更しても反映されなかったのを修正しました。


MyClock Ver 1.17.0
邪魔にならないデジタル時計(アラーム機能付き)
http://egadget2.web.fc2.com/archives/Src_files/C_Sharp/MyClock_Ver1.17.0.html


あとは、scClockの機能を付与して、選択して使えるようにするかどうか、チョット考え中です。

MyClock Ver 1.16.9 公開

sentaro様


こんばんは、

MyClock Ver 1.16.9 を公開しました。
http://egadget2.web.fc2.com/archives/Src_files/C_Sharp/MyClock_Ver1.16.9.html

外観のカスタマイズ機能が付きました。

カスタマイズの様子は、以下のページでご覧頂けます。
http://egadget.blog.fc2.com/blog-entry-583.html

大きめにした例と、scClockと同じ外観にした例も紹介しています。

これまでの機能追加の中では、外観カスタマイズはかなり苦労しましたが、C#らしいコードに少しはなったかな?という感じです。

外観のプロパティを変更するスタイルで、何か変更すればリアルタイムで外観が変わります。リアルタイム変更に拘ったのですが、なんとか出来ました。

今用意しているプロパティでは、scClock のような外観にも変更できます(但しキャプションバーへの張り付き機能はありません)。

MyClockについて... 画面にあるクイックマニュアルにはカスタマイズの方法を簡単に追加していますが、何も見なくても使えるといいな、と思って作りました。

プロパティのカスタマイズ画面は、徹底的に受け身になるようになっています。今表示されている時計に対する外観を変えます。

つまり、通常表示の時とアラーム設定時の2つの外観のうち、カスタマイズしたい方を先ずは表示してから、カスタマイズします。

[F1] を押して、続いて[S] を押せば [外観の設定]画面が出ます。

徹底的に受け身にしたので、プロパティ画面が表示されているときに、[Esc]キーでアラーム設定出来て、そこで通常時とアラーム設定時の画面が切り変われば、切り替わった外観のプロパティに自動的に切り替わります。

プロパティ画面が出ている時に、アラームが発動すれば、追従して表示されているプロパティが変更されます。アラーム発動で点滅している時は、半透明度は1になり、クリックで点滅を止めたら半透明度はカスタマイズした値に戻りますが、この過程にも追従します...というか、拘って追従させました...(^^;


しかしながら、プロパティ画面から [通常時] / [アラーム設定時] の時計の切利り換えはできません。

これもできるようになると、かなりややこしいことになるので、能動的切替機能は保留中です。

現バージョンを仕上げて Ver 1.7 にしたあたりで MyClock の機能追加は卒業かな...と思っています。


最新版 MyClock について意見をお聞かせ頂けると嬉しいです。


[追記] フォントを色々と変えてみると面白いですね。


Re: Re:緊急アップデート MyClock Ver 1.16.8 と scClock Ver 3.01 へアップデート

sentaro様

こんばんは、


> MyClock Ver 1.16.8 & scClock Ver 3.01 いただいております。
>
> アラーム未発動は実害は何も無かったのでOkでした。(^^;

良かったです!


> 最小化してもポップアップ内で表示更新し続けるアプリが存在しているので、何かしら方法はあるものだと思ってますが、ここのあたりは、なかなか深いところなのですね。

はい、そうなんです。やり方はあるはずなんですね。
私自身がまだよく分かっていないだけなのかも知れません。な~んだ、そうか!という結末かも知れません。

色々と他のことをしていると、ハッと気がつくってことがよくあるので、それに期待です(^^;



> MyClockに纏わり付かなくなったのはよいですね。
> MyClockとscClockで常に時刻が目立って確認できる状況はなかなか便利です。(^^)

私も日常的に2つ併用しています。


動的に外観を変更する機能ですが、今日ようやく糸口が見えて、動的な背景色の変更ができました\(^_^)/

いくつかクリアする課題が残っていますが、これが出来ればあとは一気に実装できそうです。

やりたい細かなコーディングの方法が分かったとしても、弄りたい対象へどうやって参照を通すか、これがC#初心者の私には最大の課題なんです。

背景色変更の場合、時刻表示のラベルという部品(コントロール)を使っていて、その状態の読み書きをすればOKです。

そして、このコントロールへの正しい参照方法が分かればあとはコードを書くだけなのですが、その参照を得るための正しい道筋が分かるのに苦労しています。

特定のクラスの中に守られているコントロールに、外部にある別のクラスから正しく、そして動的にアプローチするのは、きっちりと守られている深窓の令嬢にアプローチするのに似た感じです。

自由に外へ出歩けるクラス(執事ですね!)を作って、執事とお嬢様が自由にコンタクトできるようにしておいて、執事に色々と頼むことで、お嬢様とやりとりをする...そんな雰囲気です。これができれば、お嬢様の服を着替えさせたりできます。今日は服の色を変更する方法が見つかったわけです。

こんな手間をかける必要があるから、C#で書いたコードは安全なのかも知れません...そんな感じがしています。


> >ところで、時刻表示機能までの作り方は、昨日アップしております。
> >http://egadget.blog.fc2.com/blog-entry-587.html
>
> ありがとうございます!

> 一段落したらじっくり試させていただきます。(^^)

sentaro様が始められたら、一気に使いこなしてしまう感じがしています。
チョット期待です...



> 現在、C.Basicのリスト仕様追加とDrawStatの実装中ですが、純正でもあまり使ったこと無い機能ばかりなので、仕様確認作業がもう少しかかりそうなので…

確かにリスト機能は奥が深そうです。使いこなしの情報を提供できずにすみません。


Windowsプログラミングをしていると、Casio Basic のなんと分かり易いことか...改めて実感してしまいます。

Re:緊急アップデート MyClock Ver 1.16.8 と scClock Ver 3.01 へアップデート

管理人様、こんにちは!

MyClock Ver 1.16.8 & scClock Ver 3.01 いただいております。

アラーム未発動は実害は何も無かったのでOkでした。(^^;


>最小化せずに見えなくすれば良い筈で、最小化しないで見えなくする(Hide属性を利用)という作戦を考えたのですが、これは WinXPでは有効なのに Win10 ではダメでした。
>どうも OSの細かな仕様を調べないとダメそうなので、今回は暫定策で逃げました(^^;

最小化してもポップアップ内で表示更新し続けるアプリが存在しているので、何かしら方法はあるものだと思ってますが、ここのあたりは、なかなか深いところなのですね。


>このコメントを頂いたので、MyClock 1.16.8 には 新しい scClock を同梱しました。
>但し、上のように MyClock へ纏わり付くのを禁止しました。

MyClockに纏わり付かなくなったのはよいですね。
MyClockとscClockで常に時刻が目立って確認できる状況はなかなか便利です。(^^)


>ところで、時刻表示機能までの作り方は、昨日アップしております。
http://egadget.blog.fc2.com/blog-entry-587.html

ありがとうございます!

現在、C.Basicのリスト仕様追加とDrawStatの実装中ですが、純正でもあまり使ったこと無い機能ばかりなので、仕様確認作業がもう少しかかりそうなので…
それが一段落したらじっくり試させていただきます。(^^)

緊急アップデート MyClock Ver 1.16.8 と scClock Ver 3.01 へアップデート

sentaro様


◆ MuClock 1.16.7 はアラームが発動しないという致命的なバグが入り込んでました。

スミマセン<(_ _)>


そこで、Ver 1.16.8 をアップします。

http://egadget2.web.fc2.com/archives/Src_files/C_Sharp/MyClock_Ver1.16.8.html



◆ scClock も Ver 3.01 へアップデートしました。

http://egadget2.web.fc2.com/archives/Src_files/C_Sharp/scClock_Ver3.01.html


MyClock にまとわりついてうっとおしいので、MyClockは無視するようにしました。

これのバージョンアップネタの1つとして、他にまとわりつかれるとうっとおしいアプリを事前登録する機能が便利かな...と思ったりしています。



> MyClock Ver 1.16.7 いただいております。(^^)
>
> 時刻表示が最小化時のscClockと同様になりましたね。(^^)
> この最小化時のポップアップのデジタル時計も動いていれば、ということになると、インアクティブ時にも時計更新を止めずに動かしておく必要があるということでしょうか?

基本的には、おっしゃる通りです。

但し、アクティブか非アクティブと、ウィンドウ状態(最小化/最大化/通常) はOS側では別管理になっています。

最小化せずに見えなくすれば良い筈で、最小化しないで見えなくする(Hide属性を利用)という作戦を考えたのですが、これは WinXPでは有効なのに Win10 ではダメでした。

どうも OSの細かな仕様を調べないとダメそうなので、今回は暫定策で逃げました(^^;

最小化してマウスでポップアップする時、アプリの画像の上に文字列がありますが、こではキャプションバーに表示される文字列がそのままココに表示されています。
なので、

通常は、

MyClock

で、最小化の時だけ、

MyClock - 12:34:56

と、キャプションバーへの表示内容を変更しました。



> そして、scClock Ver 3.0もいただいております。(^^)
>
> 以前のscClockよりも文字が大きくなっているので見易くて◎です。
> タイトルバーに張り付くscClockは最小化することがほぼ無いのでこちらがメインでもいいかもしれません。(^^;

> >そこで、最小/最大/終了 ボタンの並びの寸法を確保した位置に変更しています。
> >フォントも見やすく大きめになったと思います。
> >張り付く対象のウィンドウが小さい場合は上にずらして表示するように変更しました。
>
> この変更はすごく良いです。(^^)

このコメントを頂いたので、MyClock 1.16.8 には 新しい scClock を同梱しました。

但し、上のように MyClock へ纏わり付くのを禁止しました。



> 私的にはもう少し大きくても構わない感じですけど、文字の大きさの調整とか透明度の調整とかも出来るようになるでしょうか?

新しい scClock の 時刻表示の内部実装は、MyClock と同一です。そのままコピペして作っています。

サイズと、アクティブウィンドウへの対応が違うだけです。

従って、scClock には、MyClock とほぼ同じアラーム機能が簡単に(ほぼコピペで)実装できます(^^;

或いは、MyClock のプロパティ設定の変更だけで scClock の外観になります。

MyClock をアクティブウィンドウに張り付かせるのも簡単です。


そんなわけで、表示サイズや背景色などのカスタマイズは、同時に実装可能です。ユーザーがプロパティ設定を変更できて、それが動的に反映できるような設定機能を作ろうと、色々試しているところです。


ところで、時刻表示機能までの作り方は、昨日アップしております。

http://egadget.blog.fc2.com/blog-entry-587.html



Re:MyClock Ver 1.16.7 & scClock Ver 3.0

管理人様、こんにちは!

MyClock Ver 1.16.7 いただいております。(^^)

>最小化している時の時刻表示ですが、暫定的に対応してみました。

確認しました。
時刻表示が最小化時のscClockと同様になりましたね。(^^)
この最小化時のポップアップのデジタル時計も動いていれば、ということになると、インアクティブ時にも時計更新を止めずに動かしておく必要があるということでしょうか?


そして、scClock Ver 3.0もいただいております。(^^)

以前のscClockよりも文字が大きくなっているので見易くて◎です。
タイトルバーに張り付くscClockは最小化することがほぼ無いのでこちらがメインでもいいかもしれません。(^^;


>そこで、最小/最大/終了 ボタンの並びの寸法を確保した位置に変更しています。
>フォントも見やすく大きめになったと思います。
>張り付く対象のウィンドウが小さい場合は上にずらして表示するように変更しました。

この変更はすごく良いです。(^^)

私的にはもう少し大きくても構わない感じですけど、文字の大きさの調整とか透明度の調整とかも出来るようになるでしょうか?

MyClock Ver 1.16.7 & scClock Ver 3.0

sentaro様

最小化している時の時刻表示ですが、暫定的に対応してみました。


邪魔にならないデジタル時計 (アラーム機能付き)
MyClock Ver 1.16.7
http://egadget2.web.fc2.com/archives/Src_files/C_Sharp/MyClock_Ver1.16.7.html


アイコンにマウスを持ってきて表示される時計のフォームは相変わらず静止画像ですが、その上の黒い背景でデジタル時計が時刻を刻まます。
チョット苦し紛れですが、このあたりの Windows の仕組みがまだよく分からないので、将来可能なら対応ということで...

ついでに、scClock が最小化するとユーザーインターフェースが消えてしまって、対応できないプロセスがいくらでも増やせるという問題は、MyClock で対応していますが、これを強化しました。

scClockはMyClockと一緒に使えば全く問題無いと言えます。





但しそれでは面白くないので、scClock Ver 3.0 をC#で作ってみました。


小さな時計
Ver 3.0
http://egadget2.web.fc2.com/archives/Src_files/C_Sharp/scClock_Ver3.0.html

これまでの Ver 2.1 では、張り付く位置が最小化ボタンの上にきたりして使いづらい、フォントが見づらい、プロパティグリッドで選択肢の上に時計が張り付いて邪魔になる、といったのが気になっていました。

そこで、最小/最大/終了 ボタンの並びの寸法を確保した位置に変更しています。
フォントも見やすく大きめになったと思います。
張り付く対象のウィンドウが小さい場合は上にずらして表示するように変更しました。

その他の基本動作は同じ筈なのですが、微妙に異なっています。

最小/最大/中止ボタンのあるキャプションバーと、その下にクライアント領域のある普通のウィンドウでは、両者の動作の違いはありませんが、キャプションバーの無いウィンドウや単なる四角い領域のウィンドウについては、張り付く対象になるかどうかが微妙に異なります。

キャプションバーに張り付く動作というのは、

1)起動しているプロセスからウィンドウがアクティブになっているものを探す、
2)その位置を調べる、
3)所定の位置に時計を移動する

の3段階で、単純なものです。

ところが、アクティブになっている外部アプリケーションを探す機能がC#では準備されていないようでして、Ver 2.1 と同じように Win32 API を使ったロジックで作りました。

同じように作った筈ですが、アクティブなウィンドウとして検出されるものが微妙に違っています。その違いの理由がまだよく分からないのですが、おそらく Windows の仕様の違いに起因するとしか考えられないのです。

Windows は機能が格段に増えているにも係わらず、ほぼ上位互換である点には本当に感心させられますが、それでも完全互換は難しいのでしょう。まぁ、そりゃそうでしょうね。

Win32 API もプログラムから使う時のインターフェースは殆ど一緒ですが、内部機構は変わっている筈ですし...
それに、以前はVC++から今はC#から使っているので、そのあたりの違いがひょっとして有るかも知れません。


scClockもソース付きです。
Win32 API を オリジナルの WinAPIクラスにまとめて、少しはC#らしく、OOP的にクラスを使ったコードになってきました。

MyClock も同様にC#らしいソースになって、自分でも可読性が向上しました。クラスは関数と変数のパッケージ(関数も含められる構造体といった感じ)なので、まとまると将来の拡張性も少しは良くなると思います。

蛇足ですが、struct といえば構造体ですが、C#では struct と class は実は殆ど同じで、struct に関数(メソッド)を含められます。C#では、これらの違いは、値型 (struct) か参照型 (class) の違いなんだということが分かってきました。

C/C++ と同じつもりで、大きな勘違いをしていました。


できれば、新しい scClock のご感想をお聞かせください。

MyClock には、以前の scClock Ver 2.1 を同梱して、変えていません。

Re:Re: Re:[追記編集] Ver 1.16.6 にアップデート

管理人様、こんにちは!

>そちらのOSは、ひょっとして Win7 (64bit) でしょうか?

んと、fx-9860GのSDKが動いてるパソコンがWin7(32)機なのでそれで検証していました。
別のWin10(64)機でも、Win7と同じというか、、、


>Win10 では前面でも最小化でも表示が同じになります。
>Win10 では、前面でも最小化でもアイコン自身は丸いアナログ時計のままで、そこにマウスを持ってくると四角いデジタル時計がポップアップします前面表示の時は、このポップアップの中で時刻を刻みますが、最小化化すると、最小化した時の時刻で固定されたままの表示になります。

まさにこの状態で同じです!

最小化している時のポップアップでも時計が動けばということですね。(^^)

Re: Re:[追記編集] Ver 1.16.6 にアップデート

sentaro様


> 緊急アップデート Ver 1.16.6、早速にいただいております。(^^)


> うわ、なんと…
> でも、うちでは再起動を頻繁にしているのでメモリリークは気が付きにくいというか、ほとんど影響が無かったです。(^^;

これは、なかなかまずい状況なので、Win 10 で確実に動く scClock2 を作った方が良いかも知れません。



> 最小化時には、1.16.5までは丸時計のアイコンで、1.16.6で前面時のデジタル時計が止まった感じで表示されますよね。
> ここがリアルタイムで動く時刻表示になればということであれば、それはかなり有りかもしれません。(^^)

そちらのOSは、ひょっとして Win7 (64bit) でしょうか?

Win10 では前面でも最小化でも表示が同じになります。

Win10 では、前面でも最小化でもアイコン自身は丸いアナログ時計のままで、そこにマウスを持ってくると四角いデジタル時計がポップアップします前面表示の時は、このポップアップの中で時刻を刻みますが、最小化化すると、最小化した時の時刻で固定されたままの表示になります。

ひょっとして、なにかOSの設定で変わるのでしょうか?

Re:[追記編集] Ver 1.16.6 にアップデート

管理人様、こんにちは!

緊急アップデート Ver 1.16.6、早速にいただいております。(^^)

>scClock を右クリックすると、異常終了してメモリーリークすることがあることが判明しました (Win 10です)。そうなると、プロセスには残っっていても、タスクマネージャーで終了させるくらいしかなくなります。

うわ、なんと…
でも、うちでは再起動を頻繁にしているのでメモリリークは気が付きにくいというか、ほとんど影響が無かったです。(^^;


>ところで、MyClock を使って頂いてる際、最小化した状態で、アイコンにマウスを持ってくると時刻を表示させたい、ということはありますでしょうか?

最小化時には、1.16.5までは丸時計のアイコンで、1.16.6で前面時のデジタル時計が止まった感じで表示されますよね。
ここがリアルタイムで動く時刻表示になればということであれば、それはかなり有りかもしれません。(^^)

[追記編集] Ver 1.16.6 にアップデート

sentaro様


緊急アップデートです。


scClock を右クリックすると、異常終了してメモリーリークすることがあることが判明しました (Win 10です)。そうなると、プロセスには残っっていても、タスクマネージャーで終了させるくらいしかなくなります。

Win XP (32bit) で作った時にはこんな問題は無かったのですが...

そこで、MyClockからy呼び出す時、scClockのプロセスを1つだけにするようにしました。MyClockとセットで使ってもらえれば、確実です。


MyClock Ver 1.16.6
http://egadget2.web.fc2.com/archives/Src_files/C_Sharp/MyClock_Ver1.16.6.html

今回の変更は、いくらでも多重起動できるが全部が重なって表示される scClock の多重起動をより厳格に適用したと、良い方向で表現することもできますね。


ところで、MyClock を使って頂いてる際、最小化した状態で、アイコンにマウスを持ってくると時刻を表示させたい、ということはありますでしょうか?

私は、その必要を殆ど感じないのですが、使い方は人それぞれですから、時計の外観変更機能を追加する時に、必要ならこの機能の追加もできると思います。




Re:MyClock Ver 1.16.5 にアップデート

管理人様、こんにちは!

MyClock Ver 1.16.5頂きました。


>で、時計の外観変更のための練習として、アラーム設定されている時は背景色が変わるようにしてみました。

これはとっても◎な変更点です!(^^)


>時計の外観変更については、ちょっと苦労しています。
...というのも、設定を変更したらリアルタイムに外観が変わるようにしたいのですが、これがなかなか手強いです。
>外観変更が一段落したら、MyClock は卒業しようと思います。

今のままでも実使用上はすでに必要にして十分なところですけど、外観変更が出来れば完成度Maxですね。


>C#はポインタが使えないという話を聞いていました。実際 Cな感じのコードを書いてエラーになっていました。
>配列の扱いなど不便だなぁ...と感じていたのですが、ナントC#でしっかりポインタを使えることが分かりました。
>unsafe という物騒なキーワードを使えば、そのスコープの中だけで Cライクなポイント操作がしっかりできます。

Cの特徴が活かせないならC#は別系統の言語という感じでしたけど、一安心です。



C.Basicへのリスト機能追加ですが、ちょっと苦戦中なのであと少しかかりそうです。(^^;

MyClock Ver 1.16.5 にアップデート

sentaro様

今日は移動が多くて、結構パソコンを触れました。

アラームが設定されていることが分かれば良いなぁ...とずっと思ってきました。

で、時計の外観変更のための練習として、アラーム設定されている時は背景色が変わるようにしてみました。

ソースコードでバレるのですが、設定画面のほんの最初の準備も始めています(見えていないだけ...)


邪魔にならないデジタル時計 (アラーム機能付き)
MyClock Ver 1.16.5

http://egadget2.web.fc2.com/archives/Src_files/C_Sharp/MyClock_Ver1.16.5.html


よろしければどうそ...

Re: MyClock Ver 1.16.4 にアップデート

sentaro様


Ver 1.16.4 にアップデートしました。
http://egadget2.web.fc2.com/archives/Src_files/C_Sharp/MyClock_Ver1.16.4.html


基本動作には手を付けていませんので、既に Ver 1.16.3 をお使いの場合はアップデートの必要はないとは思います。

・MyClock についての画面で、少し使いやすく変更:
 - [Esc] キーで閉じる
 - クリックマニュアルをスクロールして見ていても、[Esc] や [Enter] キーが効きます

・Alarm.exe の削除について、事前に許可を求めるダイアログを追加
・Alarm.exe 削除直前に、より確実にエラーを捕まえるように改善

...と、そんな感じです。


時計の外観変更については、ちょっと苦労しています。
...というのも、設定を変更したらリアルタイムに外観が変わるようにしたいのですが、これがなかなか手強いです。

外観変更が一段落したら、MyClock は卒業しようと思います。

そして、エディタに必要な要素を学習する予定です。いまだに Casio Basic Editor を C#かVC++かどちらで進めるか、迷っています。

先ずはC#をもっと知ることから...


一応、プログラム電卓のための Windows プログラミングなので...

MyClock Ver 1.16.3 にアップデート

sentaro様

こんにちは


> MyClock Ver 1.16.1差し替え分、早速にいただいております。


あはは、バージョンを正しく表記頂き、恐縮です。

バグ修正は別として、アップデートのたびに、C#プログラミングの面で必ず何か新しいテーマを試しています。


早速ですが、Ver 1.16.3 にアップデートしました。
http://egadget2.web.fc2.com/archives/Src_files/C_Sharp/MyClock_Ver1.16.3.html


・見かけ上は、[F1] で現れる画面を変更しました。

・内部的には、全体のクラス構造を変更しました。

その結果、アラーム設定を MyClock 本体に埋め込んで、Alarm.exe 不要にしました。
時計表示の設定を変更する機能を追加したら、また exe ファイルが増えないようにしたいので、内部的にチョット整理しました。
IDE の使い方がよく分かっていなくて、Alarm.exe が出来てしまったというのが正直なところで、少しは分かってきました。

MyClockは、シンプルなだけにユーザーインターフェースが限られています。表示設定変更のウィンドウをどうやって出すのか、ちょっと悩んでいます。[F1]キーで About MyClock と共用できないかと思案中です。


> scClock 呼び出し機能は何気に便利ですね。これは重宝しそうです。(^^)

自分で作ったのに変な話ですが、scClock をスタートアップから外して、MyClock を残しました。その方が scClock の多重起動を防げて、かつ便利なことに後から気がつきました(^^;


> >C#学習中としては、それでは面白くないのでC#で使えるライブラリだけで出来るかどうかを確かめてみました。
> >で...できました。
>
> ぉ!、さすが、管理人様です。(^^)

C#の良さが少しづつ分かってきました。

C#はポインタが使えないという話を聞いていました。実際 Cな感じのコードを書いてエラーになっていました。
配列の扱いなど不便だなぁ...と感じていたのですが、ナントC#でしっかりポインタを使えることが分かりました。

unsafe という物騒なキーワードを使えば、そのスコープの中だけで Cライクなポイント操作がしっかりできます。




> >I Love C.Basic というコードが何か意味のある動作をしたら、たまりません...
> >公開したら、大変なことになりそうですが、海外だと誰かが気付いて、やってしまいそうな感じもしますね。
>
> 英小文字変数が使える上に乗算省略が出来るので、仕様上、英単語はエラーになることがありません。
> 問題はスペースとドットですが、ここらあたりは正式版になる頃には何か考えておきます。(^^;
> とはいえ、何か仕込んでもソース公開なので全部バレてしまいますね…(^^;

確かに、そうですね。そこまで読み込む人は少ないとは思いますが...

Re:C.Basic List機能実装 & MyClock Ver 1.16 アップデート

管理人様、こんにちは!

MyClock Ver 1.16.1差し替え分、早速にいただいております。


>時計が最小化の状態からアラームで最大化した時、クリックで元に戻らないバグがありましたので、修正です。

最大化で試してなかったので気が付きませんでした。(^^;


scClock 呼び出し機能は何気に便利ですね。これは重宝しそうです。(^^)

>C#学習中としては、それでは面白くないのでC#で使えるライブラリだけで出来るかどうかを確かめてみました。
>で...できました。

ぉ!、さすが、管理人様です。(^^)




>I Love C.Basic というコードが何か意味のある動作をしたら、たまりません...
>公開したら、大変なことになりそうですが、海外だと誰かが気付いて、やってしまいそうな感じもしますね。

英小文字変数が使える上に乗算省略が出来るので、仕様上、英単語はエラーになることがありません。
問題はスペースとドットですが、ここらあたりは正式版になる頃には何か考えておきます。(^^;
とはいえ、何か仕込んでもソース公開なので全部バレてしまいますね…(^^;


>純正コンパチを狙う以上、必要かも知れません。Listよりも行列の方がアクセス速度が速いことが確認できたら、私自身 List 機能はあまり使ったことがありません。

配列的な使い方であれば、Listは無用の長物なのですが、リストは一括りのデータの塊をコマンド一つで全要素に対する操作が出来ることがポイントでしょうか。
Mat行列では出来ないリスト操作コマンドが多数存在するので、これを利用することで純正CasioBasicでも比較的高速なデータ処理ができる可能性がありますね。


>しっかり Casio Basic的解析も必要そうです。
>興味の無いことはさっぱり使わないもので、ちょっと努力が必要そうです。

リストを効果的に使用している例として、CasioBasicで動くゲームを見つけました。
とりあえず、このゲームがC.Basicでそのまま動かせるレベルを目指したいと思います。(^^)

Block Tower Basic Casio
https://www.youtube.com/watch?v=gT2nNHGaWIc
http://www.planet-casio.com/Fr/programmes/programme3082-1-Block-Tower-ninestars-jeu-direction-tir.html

MyClock Ver 1.16 差し替え

sentaro様

すみません、MyClock Ver 1.16 を差し替えました。


[F12]キーで scClock 起動するとき、同じフォルダに scClock.exe が無い時のエラー対応していませんでした。
こういうのって、ついつい忘れてしまうんですね...


いつもは、Ver 1.16.1 と「点1」でなんとか落ち着くところですが、今回はアップしてスグなので差し替えにしました。


失礼しました。

C.Basic List機能実装 & MyClock Ver 1.16 アップデート

sentaro様

> 起動時の状態表示も、アラームの挙動設定も私的にはとっても便利になりました。
> まさに「邪魔にならないデジタル時計 」で、ほぼ完成形ですね。(^^)

ありがとうございます。励みになります。

で、まだ見つかっていなかったようですが、バグがありましたので修正と試験的な機能追加です。


邪魔にならないデジタル時計 (アラーム機能付き)
MyClock Ver 1.16

http://egadget2.web.fc2.com/archives/Src_files/C_Sharp/MyClock_Ver1.16.html


時計が最小化の状態からアラームで最大化した時、クリックで元に戻らないバグがありましたので、修正です。

それから、[F12] を押すと面白いことが起こります。
小さな時計 scClockが起動します。

単に、scClock を同じフォルダに入れておき、それを外部起動するだけです(^^;
ただ、プログラミング的には scClock の二重起動禁止というテーマが面白かったです。

scClock は本体には二重起動禁止の機能はありませんので、いくらでも起動できちゃいますが、その機能のために全て重なって表示されてしまいます。ある意味たちが悪いです。

そこで、MyClock側で、現在起動しているプロセスを全部調べて、scClock が無ければ起動、そうれなければ起動しないという感じです。私的には、VC++ ではやり方が分かっていているので、Win32 API を呼び出したら実装可能です。

C#学習中としては、それでは面白くないのでC#で使えるライブラリだけで出来るかどうかを確かめてみました。

で...できました。




> >う~む、これは本気でカオスなソースを書いて遊べそう...むふふ
>
> あ゛…そこは内緒の仕様ですから…(^^;


I Love C.Basic というコードが何か意味のある動作をしたら、たまりません...

公開したら、大変なことになりそうですが、海外だと誰かが気付いて、やってしまいそうな感じもしますね。


> で、現在、リスト機能を実装中です。
> 現在のMat行列で使える範囲での実装は終わりましたが、

そこは行列機能が売りの C.Basicrしいですね。実行速度も速そうです。


>純正CasioBasic仕様ではList専用のコマンドが使えるのでそこのあたりの実装がこれからとなります。
> あと、Listの四則演算等も追加で実装しないといけないのでちょっとかかりそうです。(^^;

純正コンパチを狙う以上、必要かも知れません。Listよりも行列の方がアクセス速度が速いことが確認できたら、私自身 List 機能はあまり使ったことがありません。

しっかり Casio Basic的解析も必要そうです。

興味の無いことはさっぱり使わないもので、ちょっと努力が必要そうです。


Re:MyClock Ver 1.15

管理人様、こんにちは!

MyClock Ver 1.15、いただいております。(^^)

>そういうことでしたら、前画面表示からアラームが発動させる場合に、前面中央、つまり前面表示のままスクリーンの真ん中で点滅させる選択肢を追加しました。点滅している時計をクリックすると、元の位置に戻ります。
>最小化からのアラーム発動で前面中央を選んだ場合は、点滅をクリックすると、最小化する前の時計に位置にも戻るようにしました。右クリックでまた最小化できます。
>ここで、点滅をクリックしたら、敢えて元の最小化に戻るようにはしませんでした。

起動時の状態表示も、アラームの挙動設定も私的にはとっても便利になりました。
まさに「邪魔にならないデジタル時計 」で、ほぼ完成形ですね。(^^)



>う~む、これは本気でカオスなソースを書いて遊べそう...むふふ

あ゛…そこは内緒の仕様ですから…(^^;


で、現在、リスト機能を実装中です。
リストはList 1~26までとちょうど26個なので、これは小文字のMat行列をそっくり利用するとして、
List 1[n] = Mat a[n,1]
List 26[n] = Mat z[n,1]
という実装になります。
現在のMat行列で使える範囲での実装は終わりましたが、純正CasioBasic仕様ではList専用のコマンドが使えるのでそこのあたりの実装がこれからとなります。
あと、Listの四則演算等も追加で実装しないといけないのでちょっとかかりそうです。(^^;

MyClock Ver 1.15

sentaro様

こんばんは、


> 修正確認しました。
> 私的には全画面よりは前画面で点滅の方がいい感じなのでその設定にしています。(^^)


そういうことでしたら、前画面表示からアラームが発動させる場合に、前面中央、つまり前面表示のままスクリーンの真ん中で点滅させる選択肢を追加しました。点滅している時計をクリックすると、元の位置に戻ります。

最小化からのアラーム発動で前面中央を選んだ場合は、点滅をクリックすると、最小化する前の時計に位置にも戻るようにしました。右クリックでまた最小化できます。

ここで、点滅をクリックしたら、敢えて元の最小化に戻るようにはしませんでした。


邪魔にならないデジタル時計
MyClock Ver 1.15

http://egadget2.web.fc2.com/archives/Src_files/C_Sharp/MyClock_Ver1.15.html


ソースコードも読みやすくなったかなと思います。

機能追加を続けて、ここまできて気がついたのは、全然C#的でないプログラミングになっていることです。

チョット仕切り直しが必要かも知れません。




> エイリアスは内部2バイトコードの一文字キャラクタを置き換えるつもりで実装したら、
> コマンドも2バイトコードなので…、(仕様外としてエラーとするのも面倒なので)副作用としてコマンドも変数名に出来ます。
>
> ということで、[CATALOG]で出てくるコマンドがすべてエイリアス出来るので
> 変数名をコマンド名にするとプログラムリストがカオス化します。(^^;


う~む、これは本気でカオスなソースを書いて遊べそう...むふふ


Re:MyClock Ver 1.14.2

管理人様、こんにちは!

>あ"、すみません、初歩的ミスでエンバグしてました。

修正確認しました。
私的には全画面よりは前画面で点滅の方がいい感じなのでその設定にしています。(^^)




>さっそく、UCFにアップしておきました。

いつもお手数おかけしています。


>おぉ、なんか遊べそうですね...

エイリアスは内部2バイトコードの一文字キャラクタを置き換えるつもりで実装したら、
コマンドも2バイトコードなので…、(仕様外としてエラーとするのも面倒なので)副作用としてコマンドも変数名に出来ます。

ということで、[CATALOG]で出てくるコマンドがすべてエイリアス出来るので
変数名をコマンド名にするとプログラムリストがカオス化します。(^^;

Re: Re:Re: アドイン版 C.Basic ver.1.00 ベータ7版(変数名エイリアス追加版)

sentaro様


> 毎度ながらやはり詰めが甘かったようで、(^^;
> Mat行列とローカル変数でエイリアス変数が使用出来ないバグというか不具合が残っていたようで、早速に修正版を差し替えしました。

さっそく、UCFにアップしておきました。


> エイリアスは一文字キャラ以外にもC.Basic未使用コマンドでも割り当てることが可能ですが、そこは内緒です。(^^;

おぉ、なんか遊べそうですね...

MyClock Ver 1.14.2

sentaro様


> 早速にMyClock Ver 1.14.1いただいております。(^^)

ありがとうございます。

> 時計を最小化させていると、アラームの設定が、最小化:前面でもアラーム時に全画面で最大化してしまうようなのですが。?(^^;

あ"、すみません、初歩的ミスでエンバグしてました。

Ver 1.14.2 をお使いください。
http://egadget2.web.fc2.com/archives/Src_files/C_Sharp/MyClock_Ver1.14.2.html


機能は一緒でソースの配置を換えたり、効率化した時に、うっかり "else" 1ワードのみを消してしまったのが原因でした。

これを修正すると同時に、ソースをもう一度見直したら、初期化が曖昧な変数が2つほど見つかったので、この潜在的バグも修正。

で、今後ウッカリミスを防ぐ目的で、MyClockについて... での表示にアプリに埋め込まれている情報から取得して使うように、新しい方法を使ってみました。これはアセンブリ情報といって、exeファイルのプロパティで表示されるものなんです。
C#だと、このあたりが結構簡単にできるので、改めて感心しています。

Casio Basic Editor も作りかけのVC++でなくて、C#で作り直してみようかという気になっています。




Re:MyClock Ver 1.14.1

管理人様、こんにちは!

早速にMyClock Ver 1.14.1いただいております。(^^)

>時計の表示状態によらず、アラーム時の外観を自由に設定できるようにしました。

時計を最小化させていると、アラームの設定が、最小化:前面でもアラーム時に全画面で最大化してしまうようなのですが。?(^^;

Re:Re: アドイン版 C.Basic ver.1.00 ベータ7版(変数名エイリアス追加版)

管理人様、こんにちは!

>いつもながら素早いアップデート、お疲れ様です!
>アドイン版 Casio Basic インタープリタのトップページ、
>そして、Get a New Version
>を更新しました。
>ついでに、UCFでもポストしておきました。

いつもありがとうございます!
毎度ながらやはり詰めが甘かったようで、(^^;
Mat行列とローカル変数でエイリアス変数が使用出来ないバグというか不具合が残っていたようで、早速に修正版を差し替えしました。
エイリアスは一文字キャラ以外にもC.Basic未使用コマンドでも割り当てることが可能ですが、そこは内緒です。(^^;

アドイン版 C.Basic ver.1.00 ベータ7版(変数名エイリアス追加版)差し替えです。
http://pm.matrix.jp/CB/CBASIC100beta7.zip

MyClock Ver 1.14.1

sentaro様


MyClock Ver 1.14.1 にアップ
http://egadget2.web.fc2.com/archives/Src_files/C_Sharp/MyClock_Ver1.141.html


一応のお知らせです。

時計の外観調整機能を作るにあたり、コントロールパネルを作る必要があります。そこでコントロールパネルの代わりに取り敢えず MyClock について ... を表示します。[F1]キーで現れます。

機能は同じ(+α)ですが、これまでの学習の成果を反映させ、無駄なコードの排除、コードの配置変更、コメントの見直しと、ソースレベルでは割と変わっています。ほぼ一日使って問題ないので公開します。



Re: アドイン版 C.Basic ver.1.00 ベータ7版(変数名エイリアス追加版)

sentaro様

いつもながら素早いアップデート、お疲れ様です!


アドイン版 Casio Basic インタープリタのトップページ、

そして、Get a New Version

を更新しました。

ついでに、UCFでもポストしておきました。


MyClock Ver 1.14

sentaro様

こんばんは

> 一目瞭然に分かりやすくてよいですね!
> 私のようにC#超初心者にとって最初の最初でC#迷宮の路頭に迷わなくて済みます。

ありがとうございます。励みになります。
いずれ、トライしてみてください。


> >これは「プログラム電卓のための Windows プログラミング」といった感じの位置づけです。
> >http://egadget.blog.fc2.com/blog-entry-582.html
>
> プロ電は使えていても今時のWindowsパソコンでのプログラミングに慣れてない人(=私)にはバイブルのような記事になりそうな気がしています。(^^)

私もかなり忘れていて、動けばいいやではなくて、記事にするためにキチンと理解する良い機会になりそうです。



> >私の手元では、前画面表示に失敗しなくなっていますが、sentaro様のところでは如何でしょうか?
>
> はい、アラームで全画面表示になっています。
> 通常では窓の裏には隠れること無く常に前面にあって、最小化して隠れるという状況ですね。

良かったです。


> で、1.13も早速にいただいてます。
> 最小化して再起動しても設定が引き継がれるのは◎です。(^^)

MyClock Ver 1.14 リリースしました。
http://egadget2.web.fc2.com/archives/Src_files/C_Sharp/MyClock_Ver1.14.html

時計の表示状態によらず、アラーム時の外観を自由に設定できるようにしました。

あと、Alarm.exe は MyClock.exe から呼び出さないといけない作りになっていますが、MyCLock.exe が起動している時に Alarm..exe を直接起動すると例外エラーになって気持ち悪かったので、その例外エラーを捕まえてキチント「単独では起動できません」とメッセージを出して終了するように修正しました。

これで、アラーム機能については一段落にして、時計の前面表示の時の外観を変更できるようにしてみようと思います。

アドイン版 C.Basic ver.1.00 ベータ7版(変数名エイリアス追加版)

管理人様、C.Basicユーザーの皆様、こんにちは!

CasioBasic仕様の変数名、A~Z、a~z、r、θを任意の一文字キャラクタで置き換えることが出来るようにしてみました。
置き換えるだけなので機能的には全く同じです。


アドイン版 C.Basic ver.1.00 ベータ7版(変数名エイリアス追加版)
http://pm.matrix.jp/CB/CBASIC100beta7.zip
・既定の変数を違う変数名でもアクセスできるようにしました。
 AliasVarコマンドを追加しました。
 このコマンドを使うことで最大10個までエイリアス変数を利用できます。
 置き換え使用可能な変数名は[CHAR]で選択できる一文字キャラクターのみです。
 変数名、行列名ともに同時に変更されます。
 同一変数に違う変数名を割り当てた場合は、後に実行されたAliasVarコマンドの変数名が有効になります。
(例)AliasVar A=α
   α+100→α
 AliasVarコマンド実行後は、変数Aをαとして使用できます。
 αの実体はAなので
 A+100→Aと同じです。


#README_J.txt 更新履歴を追加しました。
#Manual_J.txt その他拡張コマンド、AliasVarコマンドド追記しました。

アドイン版 C.Basic ver.1.00 ベータ6版(r、θ、分数追加版)

管理人様、こんにちは!

>UCFでのコメントで、SDでもサクサク動いたとの報告がありました。

よかったです。
もしこれでサクサクにならなかったらちょっとお手上げでした。(^^;


>で、分数文字 (多分 "/" と思われる)や 角度を示すオメガ (多分 "ω" と思われるが "Ω" も使うかも) を変数で使えるようにならないだろうか、という話が出ています。
>純正 Casio Basic でエラーになるが、C.Basic では、これら文字を変数宣言して使えるものだろうか? 
>という内容が挙がっています。パソコンか他のプロ電で作ったプログラムの移植の話のようにも読めますが、Compatibility に関する質問という書き方なので、frankmar98さんの背景事情はよく分かりません。

純正CasioBasicではアルファベットとrとθの28変数が基本仕様なので、オメガ変数というのがどれなのかちょっと謎ですね。
変数不足には、行列の短縮形(A1,B2等)を使ってもらうとしても、変数名が固定されているというところは高速化に寄与しているところもあるので、任意の変数名は現状仕様ではなかなか敷居が高いかもです。


>例えば、
>Type Ω &A
>とすると、実数変数A の変わりにΩをエイリアスとして使う。その代わり字数変数 A は使えない...
>といった実装は可能でしょうか?
>或いは、既にある Dim コードを流用する方が楽かも知れませんが、このような変数エイリアスは、厄介でしょうか?
>実行前の解釈で、ωを &A に読み替え、中間コードの実態は &Aとして実行するのと同じ、といった感じなんですが...

一文字変数の範囲内であればエイリアスは出来ないことはないかもしれません。
ちょっと検討してみます。


とりあえず、r、θの変数と分数表記を追加してみました。
互換度アップのバージョンアップになります。(^^;


アドイン版 C.Basic ver.1.00 ベータ6版(r、θ、分数追加版)
http://pm.matrix.jp/CB/CBASIC100beta6.zip
・変数名としてrとθを追加サポートしました。グローバル変数だけでなく、ローカル変数としても使えます。
 さらに行列名としても追加しているので、θ1、θ5等の数字添字型変数(Mat行列の省略形)も使えます。
・数式における分数表記(ラインモード)を追加しました。

Re: MyClock Ver 1.13

管理人様、こんにちは!

>なんせ始めてC#を触るので、理解したと思ったら違っていたり、忘れたりとドタバタしているので、全部記録することにしました。
>MyClock作成については、こちらです。
http://egadget.blog.fc2.com/blog-entry-583.html
>sentaro様に読んで頂くつもりで書いています(^^;

一目瞭然に分かりやすくてよいですね!
私のようにC#超初心者にとって最初の最初でC#迷宮の路頭に迷わなくて済みます。
どうもありがとうございます。(^^)


>これは「プログラム電卓のための Windows プログラミング」といった感じの位置づけです。
http://egadget.blog.fc2.com/blog-entry-582.html

プロ電は使えていても今時のWindowsパソコンでのプログラミングに慣れてない人(=私)にはバイブルのような記事になりそうな気がしています。(^^)


>私の手元では、前画面表示に失敗しなくなっていますが、sentaro様のところでは如何でしょうか?

はい、アラームで全画面表示になっています。
通常では窓の裏には隠れること無く常に前面にあって、最小化して隠れるという状況ですね。


で、1.13も早速にいただいてます。
最小化して再起動しても設定が引き継がれるのは◎です。(^^)

MyClock Ver 1.13

sentaro様

MyClock Ver 1.13 にアップデートしました。
http://egadget2.web.fc2.com/archives/Src_files/C_Sharp/MyClock_Ver1.13.html

最小化した状態で終了した時には設定内容が保存できなかったのを保存できるようになりました。
最小化して使っている場合、この状態でPCを再起動しても、設定内容が引き継がれます。スタートアップに登録して使っている場合は、何もしなくても良くなります。

Re: アドイン版 C.Basic ver.1.00 ベータ5a版(テキストファイルだけで実行できる版その2)

sentaro様

UCFでのコメントで、SDでもサクサク動いたとの報告がありました。

で、分数文字 (多分 "/" と思われる)や 角度を示すオメガ (多分 "ω" と思われるが "Ω" も使うかも) を変数で使えるようにならないだろうか、という話が出ています。

純正 Casio Basic でエラーになるが、C.Basic では、これら文字を変数宣言して使えるものだろうか? 


という内容が挙がっています。パソコンか他のプロ電で作ったプログラムの移植の話のようにも読めますが、Compatibility に関する質問という書き方なので、frankmar98さんの背景事情はよく分かりません。

例えば、

Type Ω &A

とすると、実数変数A の変わりにΩをエイリアスとして使う。その代わり字数変数 A は使えない...

といった実装は可能でしょうか?

或いは、既にある Dim コードを流用する方が楽かも知れませんが、このような変数エイリアスは、厄介でしょうか?

実行前の解釈で、ωを &A に読み替え、中間コードの実態は &Aとして実行するのと同じ、といった感じなんですが...


sentaro様のコードを完全に把握していないので、とんでもない話をしている可能性大で、そこはご容赦ください。


Re: Re:MyClock Ver 1.12

sentaro様

なんせ始めてC#を触るので、理解したと思ったら違っていたり、忘れたりとドタバタしているので、全部記録することにしました。

MyClock作成については、こちらです。
http://egadget.blog.fc2.com/blog-entry-583.html

sentaro様に読んで頂くつもりで書いています(^^;


これは「プログラム電卓のための Windows プログラミング」といった感じの位置づけです。
http://egadget.blog.fc2.com/blog-entry-582.html


そうそう、常に前面表示がうまくいかなくて対策をした件ですが、色々と調べてゆくと Windows の問題 (或いは仕様) らしいという情報が出てきました。情報は複数の異なるケースで、それぞれ違うのですが...

で、とった対策は、1秒ごとに表示を更新するたびに、前面表示の設定を繰り返す、というもので、当面これしかなさそうです。

私の手元では、前画面表示に失敗しなくなっていますが、sentaro様のところでは如何でしょうか?


頂いた追加機能案は、そのうち実現させたいと思います。


Re: アドイン版 C.Basic ver.1.00 ベータ5a版(テキストファイルだけで実行できる版その2)

sentaro様


> アドイン版 C.Basic ver.1.00 ベータ5a版(テキストファイルだけで実行できる版その2)
> http://pm.matrix.jp/CB/CBASIC100beta5a.zip
> ・SD版においてファイルリスト画面の移動が遅くなる不具合に対処しました。(してないかもしれません。(^^;
>
>
> θ変数に関しては次バージョンで対処できると思います。
> List機能に関しては、行列の行だけ利用する形で以前より実装するつもりで伸び伸びになってましたけど、次の次くらいで実装にこぎつけたいです。(^^)

UCF でのアップデートのお知らせとコメント、Get a New Version と Quick Manual の修正をしておきました。


Re:MyClock Ver 1.12

管理人様、こんにちは!

>MyClock のアラーム時刻が アプリを再起動するたびに再設定しなければならないのは、どうにも不便なので、起動時に保存した設定を読み込んで復元するようにしました。

こういったアプリの場合、設定保存はやっぱり必要ですよね。(^^)


>必要なものはインストールフォルダだけにあって、どこかのフォルダやレジストリを使うのはチョット好みでないので、こんな感じにしました。

個人的にはインストールフォルダだけでっていうのがベストなので◎です。(^^)


>実はファイル入出力のコードを書かなくても、予め準備されてるクラスとメンバを使うだけで、20行程度のコーディングでとても簡単です。C#ってのは凄いもんだと思います。

まさに部品を組み立てるっていう感覚ですね。


>次は、アラーム発動時の時計の表示方法を選択できるようにします。
>あと、ご要望があればお聞かせください。

通常表示のフォントや大きさ、透明度も自由に変えれるようにして、
さらにscClockのようにメインの窓のタイトルバーに張り付くという形も選択できると面白いかもしれません。
1ユーザーの立場になるとあれこれ出てきてしまいますね。すみません。(^^;

MyClock Ver 1.12

sentaro様

MyClock のアラーム時刻が アプリを再起動するたびに再設定しなければならないのは、どうにも不便なので、起動時に保存した設定を読み込んで復元するようにしました。

ついでに、アラーム解除状態、時計の表示位置も保存・復元するようにしました。

設定ファイルは MyClock.exe.config で中身はXMLファイルです。MyClock.exe と同じフォルダにないと MyClockがエラーで起動できません。

必要なものはインストールフォルダだけにあって、どこかのフォルダやレジストリを使うのはチョット好みでないので、こんな感じにしました。

実はファイル入出力のコードを書かなくても、予め準備されてるクラスとメンバを使うだけで、20行程度のコーディングでとても簡単です。C#ってのは凄いもんだと思います。

次は、アラーム発動時の時計の表示方法を選択できるようにします。

あと、ご要望があればお聞かせください。

一つひとつの機能実装がとても勉強になっています。

MyClock Ver 1.12 (C#ソース付き) のダウンロード
http://egadget2.web.fc2.com/archives/Src_files/C_Sharp/MyClock_Ver1.12.html


アドイン版 C.Basic ver.1.00 ベータ5a版(テキストファイルだけで実行できる版その2)

管理人様、こんにちは!

今さっきUCFを見たら早速にバグレポートが!
ということで、すぐに修正できる範囲を修正してみました。


アドイン版 C.Basic ver.1.00 ベータ5a版(テキストファイルだけで実行できる版その2)
http://pm.matrix.jp/CB/CBASIC100beta5a.zip
・SD版においてファイルリスト画面の移動が遅くなる不具合に対処しました。(してないかもしれません。(^^;


θ変数に関しては次バージョンで対処できると思います。
List機能に関しては、行列の行だけ利用する形で以前より実装するつもりで伸び伸びになってましたけど、次の次くらいで実装にこぎつけたいです。(^^)





>今確認したところ、中身だけアップデートした yClock Ver 1.11 は無事に新しい内容でダウンロードできました。

確認できました!(^^)
アップデートバージョンでは裏に隠れず常に前面に出ている感じでしょうか?



>こういうのって、自分で使っていると結構色々機能を追加したくなりますよね。

はい!
自分でいじくれる状態であれば、いいのですが、まだそこまでいってないので…(^^;


>C.Basic のような大化けではないと思いますが、MyClock も今後進化するかも、です。

次々とあれもこれもと機能追加していくとどんどんすごくなると思います。(^^)
でも、そうなってくるとどのあたりで止めるかが難しいところですね。(^^;

Re: Re: Re:Re: Re: Re: アドイン版 C.Basic ver.1.00 ベータ5版(テキストファイルだけで実行できる版)

sentaro様

今確認したところ、中身だけアップデートした yClock Ver 1.11 は無事に新しい内容でダウンロードできました。

FC2のホームページサーバーは、以前もあったのですがファイルを更新しても、実際の更新に時間がかかることがあるので、今回もそれに引っかかった可能性も考えられます。

内容のチェックでもしているのかも知れませんが、そんな親切な機能があるとは公には聞いていません。
内緒でチェックしていたら、分かりませんが...

Re: Re:Re: Re: Re: アドイン版 C.Basic ver.1.00 ベータ5版(テキストファイルだけで実行できる版)

sentaro様


> いっこだけ、サンプルプログラムの文字列のところが#になってます。(^^;
> Text @16,1,#TextString"
> ↓
> Text @16,1,"TextString"

今修正しました。ご指摘ありがとうございます。


> >ご要望の「最大化」ですが、本当に画面一杯に広がっても良いのですか?
>
> あ、全画面の最大化…それはちょっと行き過ぎかもですが、(^^;
> 元の大きさで戻るノーマルの最大化と選択できるとよいかもしれません。

半透明の最大化としてみました。
選択できるようにした方が良いですね。いずれ追加しますね。


> 今ダウンロードできるのはVer 1.11で↑と同じみたいです…(^^;

同じバージョン表示ですが、中身はアップデートされています。
ここだけのアップデートなもんですから...

ちなみに、ReadMe.txt をご覧頂くと最大化機能が追加されている説明があると思います。ReadMe.txt もマイナーアップデートです。

C.Basic みたいに Ver 1.11a とかすれば良かったですね。失礼しました。


> scClockは常にフォーカスされている窓に張り付きますが、現在のMyClockだとフォーカスが無くなった時点で窓の裏に隠れてしまうので、タイマー時間になってもタスクバーで点滅しているだけになるので最大化があればいいなという感じです。(^^)

実は前面表示に失敗するケースがあったので、その点も対策をして手元では直った感じですが、如何でしょうか?


こういうのって、自分で使っていると結構色々機能を追加したくなりますよね。

C.Basic のような大化けではないと思いますが、MyClock も今後進化するかも、です。


Re:Re: Re: Re: アドイン版 C.Basic ver.1.00 ベータ5版(テキストファイルだけで実行できる版)

管理人様、こんにちは!

>Get a New Version への反映が済んだところで、UCFにポストしておきました。

毎度お手数おかけしてます。m(_ _)m

いっこだけ、サンプルプログラムの文字列のところが#になってます。(^^;
Text @16,1,#TextString"

Text @16,1,"TextString"


>ご要望の「最大化」ですが、本当に画面一杯に広がっても良いのですか?

あ、全画面の最大化…それはちょっと行き過ぎかもですが、(^^;
元の大きさで戻るノーマルの最大化と選択できるとよいかもしれません。

scClockは常にフォーカスされている窓に張り付きますが、現在のMyClockだとフォーカスが無くなった時点で窓の裏に隠れてしまうので、タイマー時間になってもタスクバーで点滅しているだけになるので最大化があればいいなという感じです。(^^)


>サクッと、最小化からアラーム発動したら、半透明最大化+点滅に対応しました。

お!早いです!
今ダウンロードできるのはVer 1.11で↑と同じみたいです…(^^;

Re: Re: Re: アドイン版 C.Basic ver.1.00 ベータ5版(テキストファイルだけで実行できる版)

sentaro様


> > アラーム機能は◎です!(^^)
> > 最小化している時にアラーム時間で一番手前に出てきて最大化すると尚良いかもです。

サクッと、最小化からアラーム発動したら、半透明最大化+点滅に対応しました。


MyClock Ver 1.11 (暫定版):
http://egadget2.web.fc2.com/archives/Src_files/C_Sharp/MyClock_Ver1.11.html

Re: Re: アドイン版 C.Basic ver.1.00 ベータ5版(テキストファイルだけで実行できる版)

sentaro様

Get a New Version への反映が済んだところで、UCFにポストしておきました。


> アラーム機能は◎です!(^^)
> 最小化している時にアラーム時間で一番手前に出てきて最大化すると尚良いかもです。

ありがとうございます。
ご要望まで頂いて、なんか嬉しいです\(^_^)/


ご要望の「最大化」ですが、本当に画面一杯に広がっても良いのですか?

手元では、アラーム設定ウィンドウが、時計の周りに重ならないように現れるように変更しています。
あと、アラーム時刻を設定する時に、現在時刻を取り込むボタンを追加しています。

ここまでのところは、以下からダウンロードできますので、よろしければどうぞ!

MyClock Ver 1.11 (暫定版):
http://egadget2.web.fc2.com/archives/Src_files/C_Sharp/MyClock_Ver1.11.html


で、アラーム時刻の設定をファイルに保存して、MyClock を再起動しても設定を拾えるようにしたいと思ってます。

これに加えて、最小化からのアラーム発動のアピールの仕方(最大化?)を追加したら、記事でアップしようと思います。

Re: アドイン版 C.Basic ver.1.00 ベータ5版(テキストファイルだけで実行できる版)

管理人様、こんにちは!

>先ず最初に、C.Basic のアップデート対応は明日行いますので、ご容赦を...

了解です。(^^)
今のところ、ベータ5版で致命的なバグは見つかってないですが、こればっかしは油断できません。(^^;


>取り敢えず、MyClock にアラーム機能を追加してしまいました。
http://egadget.blog.fc2.com/blog-entry-581.html
>ソース付き実行ファイルのダウンロード:
http://egadget2.web.fc2.com/archives/Src_files/C_Sharp/MyClock_Ver1.10.html

早速にダウンロードさせていただいています!


>次は、アラーム機能のDLL化を試す予定。C#で作りやすい部分をDLLにして、VC++から使えたら、Casio Basic Editor へ一歩近づきそうな感じがしています。

ぉお!着実にステップアップされてますね。(^^)


>ところで、コーディングしていると、ついつい時間を忘れてしまうので、アラーム機能は重要ですよね(^^;

アラーム機能は◎です!(^^)
最小化している時にアラーム時間で一番手前に出てきて最大化すると尚良いかもです。

Re: アドイン版 C.Basic ver.1.00 ベータ5版(テキストファイルだけで実行できる版)

sentaro様

先ず最初に、C.Basic のアップデート対応は明日行いますので、ご容赦を...

というのも、C#の使い勝手が思った以上に良いので、ついつい触っていました。

取り敢えず、MyClock にアラーム機能を追加してしまいました。
http://egadget.blog.fc2.com/blog-entry-581.html

ソース付き実行ファイルのダウンロード:
http://egadget2.web.fc2.com/archives/Src_files/C_Sharp/MyClock_Ver1.10.html


実際に MyClock を使っていて、scClockには無かったアラーム機能が欲しくなったのもあります。
ついでに、幾つかの実装ポイントの勉強ができました。

次は、アラーム機能のDLL化を試す予定。C#で作りやすい部分をDLLにして、VC++から使えたら、Casio Basic Editor へ一歩近づきそうな感じがしています。


ところで、コーディングしていると、ついつい時間を忘れてしまうので、アラーム機能は重要ですよね(^^;

是非バグ出しを兼ねて、お試しください。

...と、こんな時間になってしまいました。

もう朝やん...

アドイン版 C.Basic ver.1.00 ベータ5版(テキストファイルだけで実行できる版)

管理人様、C.Basicユーザーの皆様、こんにちは!

テキストファイルからも実行できるC.Basicの特徴をさらに推し進めるために、
g1mファイル無しでテキストファイルだけでの運用が出来るように仕様変更してみました。

デフォルトではg1mファイルを実行/編集する場合は従来通りg1mファイルしか変更されません。
テキストファイルから実行/編集した場合はテキストファイルしか変更されません。g1mファイルが保存されることはありません。
セットアップでForce g1m saveの項目をonにするとg1mファイルも同時に保存されるようになります。
その場合、g1mファイルを実行/編集する場合はg1mファイルしか変更されずテキストファイルが同時に保存されることはありません。
新規ファイルは設定によらずg1mでの保存となっています。

このあたりの仕様はまだ流動的なのでこうするのがいいのではという仕様案ありましたらよろしくです。(^^)


アドイン版 C.Basic ver.1.00 ベータ5版(テキストファイルだけで実行できる版)
http://pm.matrix.jp/CB/CBASIC100beta5.zip
・テキストファイルから実行/編集した場合は、テキストファイルのみ変更されるように仕様変更しました。
 その場合、CasioBasic標準ファイル形式(g1m)を同時に保存するかどうかの設定をセットアップより選択できます。

・上記の仕様変更によりサブプログラムも含めすべてテキストファイルだけでのC.Basic運用が出来るようになりました。


#README_J.txt 更新履歴&セットアップ項目を追記しました。
#Manual_J.txt セットアップ項目、追記しました。

サンプルゲームBallGame移植版

管理人様、C.Basicユーザーの皆様、

元となるゲームはUCFにアップされているPierrotLL氏作成のBallGameですが、
Cのソースが付属しているので、ほぼそのまま移植してみました。
GIIの液晶が残像で玉が見えにくいので1ドット大きくしてあります。

最新バージョン1.00beta4対応版として、KeyRowコマンドとMonochromeLibコマンド使用版と、以前のバージョンでも動作する2パターン作成してみました。

1.00以前のコマンド対応バージョンはBALLG99.txt
http://pm.matrix.jp/CB/BALLG099.txt

1.00以降対応バージョンはBALLG100.txtとなってます。
http://pm.matrix.jp/CB/BALLG100.txt

遊び方は、真ん中のゲートを上下に動かして、左と右の部屋に黒と白の玉を振り分けるという単純なゲームですが、数が増えてくると激ムズ状態になります。(^^;

※フレームレート調整はコメントアウトして、
※左上にフレームレートが表示されるようにしています。

Re:Re: アドイン版 C.Basic ver.1.00 ベータ4版(色々修正版)

管理人様、こんにちは!

>積極的にやりとりしている人には高校生や大学生が多いようですが、大人の方も結構いらっしゃる感じもしています。
中には、学校の試験対策としか思えないような「オームの法則のプログラムの作り方を教えて」なんてのもありますので、そのあたりは日本と一緒ですね。

なるほどです。
学生時代にネットがあったらたぶん同じことしてます。(^^;


>これは、UCFが頼りですね。海外のSNSで公開して正解だったかも知れません。
>まぁ、でもしばらくは忙しくなりそうですね。

はい、SD機に関しては分からないことが多いので実機チェックが欠かせないです。
fx-9860GIISDの並行輸入品がもう少し下がってくれればと昨年より思っているうちに値上がりしてしまいました。(^^;


>ところで、UCFで最初のファイル保存で失敗するというバグレポートについて、これの発信者から一報が入っています。
http://community.casiocalc.org/topic/7637-cbasic-international-release/?p=61030
>これはバグではなくて仕様だと分かったとのこと。Textファイルを開いて、編集、保存すると、編集内容はTextファイルに反映されず g1mファイルに反映されることに気がついたとのことです。
>以前私も疑問に思った点ではあります。
>なお、PCでTextファイルでプログラムを書くのが楽なので Text ファイルの更新ができると嬉しいとも言っています。

g1mの中間コード形式ではなくテキストファイルメインでの運用ってことですね。


>この人のプロファイルを見ると、C.Basic公開の記事にコメントすると同時に登録し、C.Basic への投稿しかしていないようです。確実に C.Basicの新たなファンになりそうな(もうなっている?)方です。

とてもありがたいことですね。海外進出してよかったと思える瞬間です。(^^)


>さて、Textファイルを保存する際には、Text ファイルの更新の許可を尋ねるポップアップを表示して ([F1]/[F6]) 許可すればテキストも更新する、といった機能追加を行うのは、如何でしょうか?
実は、私も以前からあったらいいな、と思っていましたが、優先度は低いと感じていたので、とくに要望としてあげませんでした。

了解です。
追加仕様としては、セットアップで従来通りg1mだけ保存するかテキストだけ保存するか、両形式で保存するかを選択するという感じになるかなと思います。
難しいことではないですから、次版で保存形式の選択仕様を追加してみようと思います。(^^)


>> ・””ダブルクォーテーションに囲まれた文字列が複数行に渡る場合に、特殊文字が規定通りにテキスト変換できない不具合を修正しました。
>これが、もう一つの張るレポポートへの対応なんですね。

んと、これはたまたま長い文字列を入力して気が付きました。(^^;
””ダブルクォーテーションに囲まれた文字列が改行無しで複数行になる状態はあまりないとは思いますが、C.Basicではエディタがいきなり重くなるので推奨外となっております。(^^;


>> ・Getkeyコマンドで、[3]キーを押したまま[1]キーを押すと[1]になってしまう非互換性を修正しました。
>この[3]を押したまま[1]を押すと [1] になってしまう現象は、OS2.04の純正と C.Basic Ver1.00β2では発生しないようです。β3で発生したということでしょうか?
>ちなみに、
http://egadget.blog.fc2.com/blog-entry-138.html
>にある fx-9860GII 用の KeyCode.g1m で確認しています。

はい、最新のβ4以前ではすべて発生します。(^^;
[1]キーを押したまま[3]キーを押すと[3]にはならず、[3]キーを押したまま[1]キーを押すと[1]になってしまうのですが、
これはキースキャンを順番にしていく中で後でチェックするキーの状態が優先されてしまうプログラムになっていた結果、起きていた現象です。



>これは、Bug Fix の副産物のコマンドのように感じます。

Getkeyでは単一キーの状態しか読み取れないので、複数キーの同時押し状態を読み取れるKeyRow()コマンドを追加したのですが、
バグ潰しのついでに思いついたところだったので副産物といえば副産物ですね。(^^;


>ところで、同じ Row にある複数キー押下の認識に使えるが、[SHIFT][1]のようにRowが違う複数キー押下の判別には使えないということで良いでしょうか?

あ、その場合は複数のKeyRow()コマンドを使います。
KeyRow(9)→A
KeyRow(8)→B
変数Aにはファンクションキーの状態が、変数Bにはシフトキーと同じ列のキーの押下状態が返ります。
Row1から9まで全部チェックすれば全部のキーの同時押し判定が可能だと思われます。(^^;

CasioBasic標準装備のGetkeyではキーコード値が返るのですが、そのためには全部のRowを順番にチェックしないといけないので、あるキーの状態だけをチェックするには幾分無駄な処理となりますが、KeyRow()では必要な箇所だけで済むので高速化も期待できるわけですね。
キースキャンがハード的に行われてるSH4Aではその差は微々たるものですがソフトスキャンのSH3機では結構効いてきます。


>> ・Menuコマンド(純正互換)を追加サポートしました。
>おお、ついに...

ほとんど使ったことがなく、なんやかんやで後回しになってしまいました。(^^;


>scClock は WinXP で ActiveBasic というフリーの開発環境を使って10年以上前に作ったものです。いまだにWin10でも使えるというのは、Win API を直に使っているからなんです。但し、Norton Internet Security では多数決判断で怪しい実行ファイルと判定されるので、自分で「安全だから実行する」と宣言しないといけないのが面倒です。多数決の暴力ですね。

互換性に関してはWindowsはさすがというか、きっちりしてますね。
怪しい実行ファイルとされるのはとんでもない話ですね。
うちで使っているカス○ルスキーでは怪しいとは判断されてないので、よかったです。(^^)

Re: アドイン版 C.Basic ver.1.00 ベータ4版(色々修正版)

sentaro様


> >モデレーターの frankmar98さんは、なんとマドリッドの大学生、18歳、化学専攻でプログラング好きな青年だそうな。私も化学専攻だったので、チャットで声かけてみました。いや、その若さがうらやましいです。
>
> やっぱり海外では学生さんがメインでしょうか。(^^)

積極的にやりとりしている人には高校生や大学生が多いようですが、大人の方も結構いらっしゃる感じもしています。
中には、学校の試験対策としか思えないような「オームの法則のプログラムの作り方を教えて」なんてのもありますので、そのあたりは日本と一緒ですね。


> SD版への対策ですが、初期ディレクトリの読み込みワイルドカードをちょこっと変更してみましたが、
> SD実機での効果のほどは不明ということで、SD実機お持ちの方頼みの検証となっております。(^^;

これは、UCFが頼りですね。海外のSNSで公開して正解だったかも知れません。
まぁ、でもしばらくは忙しくなりそうですね。

ところで、UCFで最初のファイル保存で失敗するというバグレポートについて、これの発信者から一報が入っています。

http://community.casiocalc.org/topic/7637-cbasic-international-release/?p=61030

これはバグではなくて仕様だと分かったとのこと。Textファイルを開いて、編集、保存すると、編集内容はTextファイルに反映されず g1mファイルに反映されることに気がついたとのことです。

以前私も疑問に思った点ではあります。

なお、PCでTextファイルでプログラムを書くのが楽なので Text ファイルの更新ができると嬉しいとも言っています。

この人のプロファイルを見ると、C.Basic公開の記事にコメントすると同時に登録し、C.Basic への投稿しかしていないようです。確実に C.Basicの新たなファンになりそうな(もうなっている?)方です。

さて、Textファイルを保存する際には、Text ファイルの更新の許可を尋ねるポップアップを表示して ([F1]/[F6]) 許可すればテキストも更新する、といった機能追加を行うのは、如何でしょうか?
実は、私も以前からあったらいいな、と思っていましたが、優先度は低いと感じていたので、とくに要望としてあげませんでした。


> アドイン版 C.Basic ver.1.00 ベータ4版(色々修正版)
> http://pm.matrix.jp/CB/CBASIC100beta4.zip
> ・テキストファイルのコピー及びリネームの不具合を修正しました。
>
> ・””ダブルクォーテーションに囲まれた文字列が複数行に渡る場合に、特殊文字が規定通りにテキスト変換できない不具合を修正しました。

これが、もう一つの張るレポポートへの対応なんですね。



> ・Getkeyコマンドで、[3]キーを押したまま[1]キーを押すと[1]になってしまう非互換性を修正しました。

この[3]を押したまま[1]を押すと [1] になってしまう現象は、OS2.04の純正と C.Basic Ver1.00β2では発生しないようです。β3で発生したということでしょうか?

ちなみに、
http://egadget.blog.fc2.com/blog-entry-138.html
にある fx-9860GII 用の KeyCode.g1m で確認しています。



> ・キースキャンコマンドとしてKeyRow(コマンドを追加しました。
>
>     返り値対応ビット(2進数)
>     bit6 bit5 bit4 bit3 bit2 bit1
>   Row--------------------------------------
>   09  F1 F2 F3 F4 F5 F6
>   08  SHIFT OPTN VARS MENU ← ↑
>   07  ALPHA ^2 ^ EXIT ↓ →
>   06  XTT log ln sin cos tan
>   05  ab/c F<>D ( ) , →
>   04  7 8 9 DEL
>   03  4 5 6 x div
>   02  1 2 3 + -
>   01  0 . EXP (-) EXE
>   Row--------------------------------------
>
> (例)KeyRow(9)
>   F4とF6を同時に押した場合は、bit3とbit1が1になり、返り値としては
>   2^3 + 2^1 = 10 が返ります。

これは、Bug Fix の副産物のコマンドのように感じます。

ところで、同じ Row にある複数キー押下の認識に使えるが、[SHIFT][1]のようにRowが違う複数キー押下の判別には使えないということで良いでしょうか?



> ・Menuコマンド(純正互換)を追加サポートしました。

おお、ついに...




> #scCLockとMyClockですが、これは便利ですね。実用的に使わせていただいています。(^^)

ありがとうございます。
scClock は WinXP で ActiveBasic というフリーの開発環境を使って10年以上前に作ったものです。いまだにWin10でも使えるというのは、Win API を直に使っているからなんです。但し、Norton Internet Security では多数決判断で怪しい実行ファイルと判定されるので、自分で「安全だから実行する」と宣言しないといけないのが面倒です。多数決の暴力ですね。

アドイン版 C.Basic ver.1.00 ベータ4版(色々修正版)

管理人様、こんにちは!

>モデレーターの frankmar98さんは、なんとマドリッドの大学生、18歳、化学専攻でプログラング好きな青年だそうな。私も化学専攻だったので、チャットで声かけてみました。いや、その若さがうらやましいです。

やっぱり海外では学生さんがメインでしょうか。(^^)

SD版への対策ですが、初期ディレクトリの読み込みワイルドカードをちょこっと変更してみましたが、
SD実機での効果のほどは不明ということで、SD実機お持ちの方頼みの検証となっております。(^^;



アドイン版 C.Basic ver.1.00 ベータ4版(色々修正版)
http://pm.matrix.jp/CB/CBASIC100beta4.zip
・テキストファイルのコピー及びリネームの不具合を修正しました。

・””ダブルクォーテーションに囲まれた文字列が複数行に渡る場合に、特殊文字が規定通りにテキスト変換できない不具合を修正しました。

・CasioBasic仕様の描画系コマンドにおいて、コマンド名の直後に"@"アットマークを付けると描画モードがテキストモードやグラフィックモードに関わらず現在のVRAMに描画するようにしました。
(例)Locate 2,2,"String"
   Text @16,1,"TextString"
 Textコマンドは現在のVRAM=テキストVRAMに描画します。

・FkeyMenu(、ReadGraph(、WriteGraphコマンドのデフォルト描画対象を現在のVRAMに変更しました。

・Getkeyコマンドで、[3]キーを押したまま[1]キーを押すと[1]になってしまう非互換性を修正しました。

・キースキャンコマンドとしてKeyRow(コマンドを追加しました。

    返り値対応ビット(2進数)
    bit6 bit5 bit4 bit3 bit2 bit1
  Row--------------------------------------
  09  F1 F2 F3 F4 F5 F6
  08  SHIFT OPTN VARS MENU ← ↑
  07  ALPHA ^2 ^ EXIT ↓ →
  06  XTT log ln sin cos tan
  05  ab/c F<>D ( ) , →
  04  7 8 9 DEL
  03  4 5 6 x div
  02  1 2 3 + -
  01  0 . EXP (-) EXE
  Row--------------------------------------

(例)KeyRow(9)
  F4とF6を同時に押した場合は、bit3とbit1が1になり、返り値としては
  2^3 + 2^1 = 10 が返ります。

・Menuコマンド(純正互換)を追加サポートしました。


#README_J.txt 更新履歴を追加しました。
#Manual_J.txt 拡張グラフィックコマンド、キースキャンコマンド追記しました。

#scCLockとMyClockですが、これは便利ですね。実用的に使わせていただいています。(^^)

Re: Re:Re:Re: fx-9860G D でうまく動かないとの一報あり

sentaro様

頂いたコメント、殆どそのまま post しちゃいました。

モデレーターの frankmar98さんは、なんとマドリッドの大学生、18歳、化学専攻でプログラング好きな青年だそうな。私も化学専攻だったので、チャットで声かけてみました。いや、その若さがうらやましいです。

We...なんて書いてますが、ホントはsentaro様におんぶにだっこ、よろしくお願い致します。

Re:Re:Re: fx-9860G D でうまく動かないとの一報あり

管理人様、こんにちは!

>UCFでのコメント;

SD版の挙動は初めて分かることなのでありがたいですね。
動作に問題のないアドインのEDIT1.60とソースを見比べてみて、原因を調べてみます。
これはちょっと時間かかるかもしれません。(^^;
>frankmar98さんは、中古の fx-9860G SD を安く買ったとのことなので、OSが古いとか、あり得ますか?

EDIT1.60はSH3のSD版で開発されていると思われるので無問題ですね。
SH3機とSH4A機で多少違っている可能性がありますが、まずはSD版での読み込みの不具合を何とかせねばです。(^^;


>C.BasicをSDにインストールしたとのこと。
>インストール先はSDで良いのでしょうか?
>私はてっきりストレージメモリにインストールすべきだと思っていました。

C.Basicアドイン自体は、本体のストレージメモリにしかインストール出来ない、はずです。
ソースファイルの置き場としてSDが対象になるはずなので、そこは問題ないと思います。


>また、別の方から( kfftfuftur さん)、C.Basicをインストールしたてでのトラブル報告がありました。
>・テキストへ変換すると、最初の数文字が消える。

現象を確認しました。
フォルダ対応の時にエンバグしてたようです。(^^;
これはすぐに修正できます。


>・編集後保存しようとしても保存されないか、編集前に戻る。これは最初の1回だけ起こる
>この方の機種は、多分 fx-9860GII のようです(所有機種がこれだけとプロファイルに書かれています)。

この現象が確認できないのでちょっとよくわからないのですが、ある条件下でしか再現しないバグが残っている可能性がありますね。
編集前に戻るというのは、純正ではプログラム編集をすると保存作業なしに編集結果が即ファイルに反映されますが、C.Basicでは保存作業をしないとファイルが変更されないので、そこのあたりの使い勝手の違いもあるかもです。


>長らく使ってきた我々では見落としがちですね。

本当にそうですね。(^^;
使い方がある程度固定化してしまうので、そこでエラーがなければ大丈夫と思ってしまいます。(^^;

Re: Re: fx-9860G D でうまく動かないとの一報あり

sentaro様

frankmar98さんから写真付きの状況レポートがアップされました。

http://community.casiocalc.org/topic/7637-cbasic-international-release/?p=61022

C.BasicをSDにインストールしたとのこと。
インストール先はSDで良いのでしょうか?
私はてっきりストレージメモリにインストールすべきだと思っていました。


また、別の方から( kfftfuftur さん)、C.Basicをインストールしたてでのトラブル報告がありました。

http://community.casiocalc.org/topic/7637-cbasic-international-release/?p=61024

・テキストへ変換すると、最初の数文字が消える。
・編集後保存しようとしても保存されないか、編集前に戻る。これは最初の1回だけ起こる
この方の機種は、多分 fx-9860GII のようです(所有機種がこれだけとプロファイルに書かれています)。

長らく使ってきた我々では見落としがちですね。



Re: fx-9860G D でうまく動かないとの一報あり

sentaro様


業務連絡...

UCFでのコメント;

C.Basic doesn't read *.g1m files in my fx-9860G SD, but the files are read by Edit v1.60 or memory mode

The SD is a 2GB Transcend SD, the OS version is 01.02.0000, and the C.Basic version is 1.00 beta 3.

Also, C.Basic menus are extremely slow when it is in the SD mode


だそうな...

frankmar98さんは、中古の fx-9860G SD を安く買ったとのことなので、OSが古いとか、あり得ますか?

Re: Re: Re:Re: Re:Re: ベータ3版、差し替えです。(^^;

sentaro様

http://egadget2.web.fc2.com/archives/exe_files/CBedit/CBedit.html

これは、本当に見かけだけで、扱えるファイルは、Unicode UTF-16 のテキストファイルだけです。

出来ているのは、画面やアイコンへのDrag&Dropでのファイル扱い、ツールバーのカスタマイズ、複数の子ウィンドウ、子ウィンドウの並べて表示、ショートカットキーのカスタマイズとか、見かけのインターフェースだけで、ほとんど自動作成されるものです。

今は、ファイル読み込みの処理をどうするか検討中です。先ずはansiテキストファイルの読み込みからやってみる予定です。

ベータ2版&ベータ3版修正です。(^^;

管理人様、こんにちは!

>アドインCasio Basic トップページで、アルファ・バージョンとの表記のままだったところを修正しておきました。
>併せて、純正 Casio Basic を走らす場合には問題は無いと思われるが、拡張・オリジナルのコマンドはまだバグ有りで要注意と、注意書きも変更しておきました。

いつもありがとうございます!
バグ有りという状況はまさにその通りで、ちょこちょこいじってるとまたバグというかエンバグというか、勘違いミスと言うか初歩的なバグが見つかりましたので、修正です。(^^;

アドイン版 C.Basic ver.1.00 ベータ2版(Textコマンド非互換修正版)
http://pm.matrix.jp/CB/CBASIC100.zip

アドイン版 C.Basic ver.1.00 ベータ3版(SD対応版)
http://pm.matrix.jp/CB/CBASIC100beta3.zip
・StrLeft(コマンドが使えなくなっていた不具合を修正しました。
・ScreenG→Screen.G マニュアル&サンプルプログラムの間違いを修正しました。

次のベータ4版はまたちょっとコマンド追加&修正入る予定なのですが手間取りそうなので、とりあえず現在の最新バージョンの差し替え修正です。(^^;



>sentaro様が作られるのなら、間違いなくそれを使わせて頂くつもりです。というか、是非作ってください。

はい、といいたいところなんですが…(^^;
Windowsプログラムは未だに勝手がわからない状況なので、ここは管理人様の方が遥かに慣れていると思います。(^^)


>ただ欲しいものが無ければ自分で作ろうということで、実は Casio Basic Editor なるものを作り始めています。色々と付加したい機能が沢山あるので、キチンとコードを書きたいと(動けばいいや、でなくて...)じっくりと取りかかっています。>昨年くらいから、作りたいとは思っていたのですが、開発環境をインストールすると必要なアプリが使えなくなるという問題で延び延びになっていたんです。
>今のところ VC++ (MFC)でドキュメントビュー アーキテクチャを利用する方法に挑戦中!

ぉお!Casio Basic Editorいいですね!
純正仕様で完成すればC.Basicコマンドを追加するのは容易いと思われるので、これは期待大です。(^^)


>なお、肝心のコード変換部分は、sentaro様の C.Basicコードをしっかりと参考にさせて頂きたいと思っています。理想は丸ごとコピーで使えることですが、今のIDEでは例えば strcpy を使うと安全でないという警告がでて、代わりに strcpy_s を使えとか、とにかく昔の標準ライブラリ関数を素直に使わせてくれないことが多くて、めんどくさいです。

C.Basicのソースはアセンブラよりはましくらいのレベルのソースになってしまっているので、C#に持っていくとなると修正点が結構有りそうですね。(^^;


>C# のサンプルプログラムのデジタル時計は、取り敢えずの完成ということで、チョット恥ずかしいのですが、ソース付きでダウンロードできるようにしました。

ソース付きというのはやはりすごくありがたいです。
何も無いところから作成するのは最初の最初のまず何から始めればいいのかというところさえ分からないことが多いですから助かります。(^^)

Re: Re:Re: Re:Re: ベータ3版、差し替えです。(^^;

sentaro様

> 早速にありがとうございます!
> CasioBasic相当の使い方だとほぼバグは無くなっているかもですが、SD拡張および複雑化した拡張コマンド系はまだまだ油断できません。(^^;

アドインCasio Basic トップページで、アルファ・バージョンとの表記のままだったところを修正しておきました。
併せて、純正 Casio Basic を走らす場合には問題は無いと思われるが、拡張・オリジナルのコマンドはまだバグ有りで要注意と、注意書きも変更しておきました。


> Win版のG1M←→>テキストコンバーターなど、手っ取り早く作成したいと思いつつC.Basicにかかりきりで伸び伸びになってるのですが、(^^;

sentaro様が作られるのなら、間違いなくそれを使わせて頂くつもりです。というか、是非作ってください。

ただ欲しいものが無ければ自分で作ろうということで、実は Casio Basic Editor なるものを作り始めています。色々と付加したい機能が沢山あるので、キチンとコードを書きたいと(動けばいいや、でなくて...)じっくりと取りかかっています。

昨年くらいから、作りたいとは思っていたのですが、開発環境をインストールすると必要なアプリが使えなくなるという問題で延び延びになっていたんです。

今のところ VC++ (MFC)でドキュメントビュー アーキテクチャを利用する方法に挑戦中!

VC++ (MFC) でダイアログベースで作れば、「取り敢えず動けばいいや」的なノリで、取り敢えず開発はパッパと進むと思うのですが、最終的に盛り込みたい機能がとても多いので、データと表示をきっちりと分けて扱うという「ドキュメントビュー アーキテクチャ」が優れているのでは...と思っています。

コード変換がメインのデータのハンドリング(ドキュメントの処理)と、樹種な表示を行う(ビューの処理)を意図的に分けたアーキテクチャーなので、機能追加も楽そうだし、エンバグも少なそう...かな?と、そんな感じです。まだ理解が足りないので、違っている可能性もありますけど...

なので、先ずは急がば回れで、あまり勉強してこなかったドキュメントビューで作ろうかと...


今の流れで行き詰まったら、VCのダイアログベースを使うくらいなら、使いやすそうなC#に乗り換えられるように、C#のサンプルプログラムも作ってみています。

なお、肝心のコード変換部分は、sentaro様の C.Basicコードをしっかりと参考にさせて頂きたいと思っています。理想は丸ごとコピーで使えることですが、今のIDEでは例えば strcpy を使うと安全でないという警告がでて、代わりに strcpy_s を使えとか、とにかく昔の標準ライブラリ関数を素直に使わせてくれないことが多くて、めんどくさいです。

現状はまだ入れ物を作っているだけで、肝心のコード変換などはこれからです。
ご参考までに、こんな感じです。
http://egadget2.web.fc2.com/archives/exe_files/CBedit/CBedit.html

sentaro様に助けてもらいながら進めるのもアリかも...



> C#超初級者の私からすれば、すごく参考になるところなので今後のプログラム例等に期待しております!(^^)

C# のサンプルプログラムのデジタル時計は、取り敢えずの完成ということで、チョット恥ずかしいのですが、ソース付きでダウンロードできるようにしました。

以前、e-Gadget2周年記念に「アクティブウィンドウのタイトルバーに張り付くデジタル時計:scClock」を紹介しています。
http://egadget.blog.fc2.com/blog-entry-488.html

実際に10年以上愛用しているのですが、1つ問題があります。

私の目玉が、特に夕方の疲れた時には小さい字が見づらくなる問題です。

もっとフォントを大きくしたいが、それだとタイトルバーに張り付かない。ならばいっそフォントを大きくして半透明すれば良いのでは?...ということで、C#で始めて作るアプリの題材に採用。

今私のPCのデスクトップで scCLock と MyClock の両方が動いています。

時計の下をクリックしたい時などは、一手間かかりますが、
◆移動する
◆右クリックで最小化する
◆ダブルクリックで終了する(タスクバーにピン止めしるから、スグに再起動できる)
のいずれかでOK

欲しかったものを作ったので、自分では気に入っています。

Re:Re: Re:Re: ベータ3版、差し替えです。(^^;

管理人様、こんにちは!

>Get New Version を改訂して、UCF にポストしておきました。

早速にありがとうございます!
CasioBasic相当の使い方だとほぼバグは無くなっているかもですが、SD拡張および複雑化した拡張コマンド系はまだまだ油断できません。(^^;


>あはは、C#の勧めになりそうですね(^^;
>今の私の知識と経験に対して、Windows プログラムを作るのに、VCとC#のどちらが良いのか見極めるために、しばらく色々とプログラムを作ってみたいと思っています。

Win版のG1M←→>テキストコンバーターなど、手っ取り早く作成したいと思いつつC.Basicにかかりきりで伸び伸びになってるのですが、(^^;
C#超初級者の私からすれば、すごく参考になるところなので今後のプログラム例等に期待しております!(^^)

Re: Re:Re: ベータ3版、差し替えです。(^^;

sentaro様


> はい、テストしてくださる方が多いほど想定外のバグも見つかりやすくなりますし、よろしくお願いいたします。(^^)

Get New Version を改訂して、UCF にポストしておきました。



> あ、UCFの管理人様のコメントでMontecar.zipが403エラーになってダウンロードできない状態が続いているようです。(^^;

いつも、ご指摘ありがとうございます。
再発防止を兼ねて、サンプルプログラム用のページを作って、そこへリンクするように変更しました。

今使っているサーバーは、セキュリティを厳しく設定しているのですが、そのせいで html以外へのリンクが 403 エラーになるのです。それを、ついつい忘れてしまってエラーになっていました。

なので、一旦経由する htmlページを作ったというわけです。



> >余計なこととは、
> >http://egadget.blog.fc2.com/blog-entry-580.html
> >です(^^;
>
> うわ!これは私的にはとっても役立ちそうなエントリです。(^^)

あはは、C#の勧めになりそうですね(^^;

今の私の知識と経験に対して、Windows プログラムを作るのに、VCとC#のどちらが良いのか見極めるために、しばらく色々とプログラムを作ってみたいと思っています。

Re:Re: ベータ3版、差し替えです。(^^;

管理人様、こんにちは!

>公開の方法をどうしようか、考えているうちにデバッグできて良かったです。
>お試しとして公開して、UCF の有志に動作確認をお願いする、といった感じでも良いでしょうか?

はい、テストしてくださる方が多いほど想定外のバグも見つかりやすくなりますし、よろしくお願いいたします。(^^)

あ、UCFの管理人様のコメントでMontecar.zipが403エラーになってダウンロードできない状態が続いているようです。(^^;


>余計なこととは、
http://egadget.blog.fc2.com/blog-entry-580.html
>です(^^;

うわ!これは私的にはとっても役立ちそうなエントリです。(^^)

Re: ベータ3版、差し替えです。(^^;

sentaro様、ガノー様、皆様

公開の方法をどうしようか、考えているうちにデバッグできて良かったです。

お試しとして公開して、UCF の有志に動作確認をお願いする、といった感じでも良いでしょうか?


チョット余計な事で時間をかけてしまったので、明日公開しようかと...

余計なこととは、
http://egadget.blog.fc2.com/blog-entry-580.html
です(^^;


ベータ3版、差し替えです。(^^;

管理人様、ガノー様、皆様、こんにちは!

SDKのエミュレータ上でのチェックでフォルダ下での編集/実行時にフォルダ名とファイル名が合計7文字を超えるとアクセス不能になる不具合が見つかりましたが、最新のfx-Maneger Plusのエミュでも同様なので、これがアドイン側の不具合なのか、エミュの不具合なのかがちょっと分からないので、ちょっと微妙な状況になっております。(^^;

アドイン版 C.Basic ver.1.00 ベータ3版(SD対応修正版)
http://pm.matrix.jp/CB/CBASIC100beta3.zip
・4Gバイト以上のSD使用時に空容量表示がおかしかったのを修正しました。

アドイン版 C.Basic ver.1.00 ベータ3版(SD対応版)

管理人様、ガノー様、皆様、こんにちは!

fx-CG50の外観にちょっとびっくりしたところですが、とりあえず、SD対応してみました。
SH3版のSD機は2GBまで対応なので(これはSDKのエミュでチェックできます。)
SH4A版のSD機は32GBまで対応しているそうなのですが、
実機での動作確認できないので正常に動くかどうかわからないので…(^^;
別バージョンファイルにしました。

SD版お持ちのガノー様、動作チェックよろしくお願いいたします。(^^)

SD機ではないノーマル機ではSD選択出来ないようになっているので、今まで通り問題なく動作します。


アドイン版 C.Basic ver.1.00 ベータ3版(SD対応版)
http://pm.matrix.jp/CB/CBASIC100beta3.zip
・SD版において、実行/編集対象ファイルをSD上で使えるようになりました。
 セットアップより指定して下さい。(SD版のみSD指定可)

#README_J.txt 更新履歴他、セットアップ項目、そして序文にSH3,SH4、SD版対応表記を追加しました。
#Manual_J.txt セットアップ項目を追加しました。

Re: Re:SDカード内のプログラムを使えるんでしたっけ?

sentaro様

> C.Basic上からはSD内のファイルを直には使えないのでメモリマネージャでSDからストレージメモリへ転送して、という形になるかと思います。
> SD対応させると、ストレージメモリとSDと切り替えて使えるようになるので、SDメモリ内での運用というか、本体ストレージメモリを一切使わずにC.Basicということができると思います。

> 元々のWSCのソースからSDでのデバッグ対応されていた模様なので、プログラム的にはヘッダファイル(CB_file.h)のコメントを外せば(デバッグモード)SD対応というかSD専用状態になります。
> C.BasicではストレージとSDの切り替えが自在にできないと使えないので、セットアップメニューよりストレージとSDとの運用切り替えをできるようにしてみます。(^^)

ありがとうございます。UCF にコメント入れておきました。



Re:SDカード内のプログラムを使えるんでしたっけ?

管理人様、

>SDモデルで使う時、現バージョンでは、SD内のプログラムを扱えて、走るのでしたっけ?

C.Basic上からはSD内のファイルを直には使えないのでメモリマネージャでSDからストレージメモリへ転送して、という形になるかと思います。
SD対応させると、ストレージメモリとSDと切り替えて使えるようになるので、SDメモリ内での運用というか、本体ストレージメモリを一切使わずにC.Basicということができると思います。


>以前、sentaro様が、やり方は分かってると言われたのは覚えていますが、実装されていますか?

元々のWSCのソースからSDでのデバッグ対応されていた模様なので、プログラム的にはヘッダファイル(CB_file.h)のコメントを外せば(デバッグモード)SD対応というかSD専用状態になります。
C.BasicではストレージとSDの切り替えが自在にできないと使えないので、セットアップメニューよりストレージとSDとの運用切り替えをできるようにしてみます。(^^)

SDカード内のプログラムを使えるんでしたっけ?

ガノー様
sentaro様

SDモデルで使う時、現バージョンでは、SD内のプログラムを扱えて、走るのでしたっけ?

以前、sentaro様が、やり方は分かってると言われたのは覚えていますが、実装されていますか?

Re: Re: Re:Re:バグかも知れない報告

管理人様、

>状況がわかりました。
>そこで、Get New Version を改訂し、UCF にコメントしておきました。

速いですね。さすが!管理人様です。(^^)


さらに次のレスポンスでSD対応の話がちょろっと出てますが、SD対応は難しくない模様なので次のバージョンで対応させます。
というか、SD対応させるとSDKエミュでプログラム検証が思いっきり楽になることがわかって、ちょっと焦っています。(^^;

プログラムソースフォルダに出来るSDCardフォルダにG1Mファイルやテキストファイルを入れておけば、それがそのままSDKエミュで使えるんですね…。
もっと早くに気がついておけばよかったです。(^^;

Re: Re: Re:Re:バグかも知れない報告

sentaro様

状況がわかりました。

そこで、Get New Version を改訂し、UCF にコメントしておきました。

ありがとうございます。

クイックレスポンスで、C.Basis への興味が増せば良いな、と思います。私も頑張らなくっちゃ...

Re:Re: Re:Re:バグかも知れない報告

管理人様、こんにちは!

>ClrGraph
>SketchThick Horizontal 3◢
>Text 1,1,"ABCDEFGHIJKLMNOPSY"
>を実行する場合、特にフォントの上端1ピクセルが消えるようなことにならないです。

Text 2,1,"ABCDEFGHIJKLMNOPSY"

TextコマンドのY座標を2にすると、CasioBasicでは消えない一番上のラインがC.Basicでは消えます。
この違いかと思います。(^^;

Re: Re:Re:バグかも知れない報告

sentaro様


> これは、今確かめたのですが、黒バックの画面でTextコマンドを実行するとフォントの上端一ドット分クリアされてしまうということで、Textのフォントが縦6ドットで描画されるかどうかということではないでしょうか?
>
> SDKのPrintMiniでは上端一ドットも描画されるので、7ドット描画仕様なわけで、それをそのまま使ってたのでCasioBasicとの仕様が違ってしまってた可能性大です。(^^;


スミマセン、まだよく分からないです。

例えば、

ClrGraph
SketchThick Horizontal 3◢
Text 1,1,"ABCDEFGHIJKLMNOPSY"

を実行する場合、特にフォントの上端1ピクセルが消えるようなことにならないです。

何が分かっていないのか、分からないので悲しい...


アドイン版 C.Basic ver.1.00 ベータ版(Textコマンド非互換修正版)

管理人様、

とりあえず、非互換な部分を修正してみました。

アドイン版 C.Basic ver.1.00 ベータ版(Textコマンド非互換修正版)
http://pm.matrix.jp/CB/CBASIC100.zip
・Textコマンドで描画されるフォントの上端1ドットラインが描画されてしまう非互換性を修正しました。
(SDKのPrintMini表示仕様になっていました。)

Re:Re:バグかも知れない報告

管理人様、こんにちは!

>こんな症状はまだ見たことがないのですが、そちらでは如何でしょうか?

これは、今確かめたのですが、黒バックの画面でTextコマンドを実行するとフォントの上端一ドット分クリアされてしまうということで、Textのフォントが縦6ドットで描画されるかどうかということではないでしょうか?

SDKのPrintMiniでは上端一ドットも描画されるので、7ドット描画仕様なわけで、それをそのまま使ってたのでCasioBasicとの仕様が違ってしまってた可能性大です。(^^;

Re: バグかも知れない報告

sentaro様

書き忘れましたが、画面リフレッシュやVRAM設定あたりが、関係しそうな感じです。


> この方が作ったプログラムのバグの可能性が無いとも言えませんが、チョット気になるので、先ずは相談です。

つまり、仕様の可能性です。まだ全部英訳できてないから、気になります。

バグかも知れない報告

sentaro様

UCFで、kfftfufturさんからのコメントで、Textコマンドを使うと、画面一番上の1ラインが消える、とあります。

こんな症状はまだ見たことがないのですが、そちらでは如何でしょうか?

この方が作ったプログラムのバグの可能性が無いとも言えませんが、チョット気になるので、先ずは相談です。

その上で、問題が再現するコードを教えて貰うようにコメントを付けようかと思います!


> MonochromeLib系コマンドは互換仕様にする必要がない分、整数モードではかなり速くなります。
> 逆にいえば、純正仕様は 描画以外で座標系等、色々中間処理が挟まっているってことですね。(^^;

MLコマンド、つかってみないと...

Re:Re: Re:カシオペアにコメントがついていますね

管理人様、

>Ver 1.00 の修正対応、サクッとしておきました。

早速にありがとうございます!(^^)


>ところで、fx-9750GII の純正OSでも動くかどうか、ちょっと興味がでてきました。

んと、純正状態ではPC-LINKは使えるもののアドインは不可なのでfx-5800Pとほぼ変わりません。(^^;
なので、アドインを使うには密かに上位版へアップグレードすることが必須なわけですね。


>アハハ、しっかり背中を押してますね!

MonochromeLib系コマンドは互換仕様にする必要がない分、整数モードではかなり速くなります。
逆にいえば、純正仕様は 描画以外で座標系等、色々中間処理が挟まっているってことですね。(^^;

Re: Re:カシオペアにコメントがついていますね

sentaro様


Ver 1.00 の修正対応、サクッとしておきました。


> CasioBasicからはサポートコマンドの範囲内でしか互換動作は出来ないのですが、そのまま動作できたというのはやっぱり嬉しいです。(^^)

UCF で frankmar98 さんにOSを尋ねたところ、fx-9860GII のOSにアップグレードしたものだと分かりました。
まさに、説明されたことをやっていたのですね!

ところで、fx-9750GII の純正OSでも動くかどうか、ちょっと興味がでてきました。


> もしくはCasioBasic仕様と関連しないMonochromeLib系コマンドに置き換えるのも一つの方法ですね。

アハハ、しっかり背中を押してますね!

Re: UCFでのコメント

管理人様、こんにちは!

>UCFのポストに書いた私の気持ちを、1行で表すならば、
>The C.Basic, an awesome program made me crazy.
>(凄いプログラム C.Basic が私を夢中にさせた。)
>なんですよ、ホント

なんか、思いっきり恐縮してしまいますけど、管理人様のCasioBasicへの深い洞察からC.Basicが生まれて育ち、そしてガノー様に新たなアイデアを頂いてさらに育てていただいた、そんな感じですね。(^^)
いつもありがとうございます!!


>機種名の最後に "II" が付くと、SH4A搭載って傾向がありそうです。

これは現在のバックライト装備のスタイルになったのがIIなので、最初はSH3機で始まってCG10/20が出てきた頃からSH4A機に変わりました。
今売られているのものはほぼSH4A機で間違い無さそうです。


>UCF でのコメントで、upgraded fx-9750GII でもC.Basicが動いたとのコメント(ガノー様ポストの件)がありますが、fx-CG10/20 では同じSH4Aでも動かないのですよね?

はい、CG10/20では動かないです。
互換性があればCG10/20版を別に作る手間が省けて都合が良いのですがなかなかそうはいかなくて…(^^;
で、fx-9860Gシリーズでは元祖fx-9860Gから現在のfx-9860GII(SH4A)までは共通で同じプログラムが動くというのが大前提です。
ただ、アドインに関してはSH4Aになってから従来のSH3機で動いていたアドインがキー入力関連の非互換によって動かなくなったということがあるので完全な互換性はありません。
C.Basicはそこのあたりは自動対応で初代SH3から最新SH4Aモデルまで動作するようになっています。(^^)


>Casio Basic自体はOSの一部ですから、中間コードなどの仕様はにかなりOSに依存する筈です。

はい、そこは完全な後方互換が保たれています。
OS1.0x→OS2.0x Ok
OS2.0x→OS1.0x NG


>で、少なくとも fx-9860 Series とされているもの (https://wiki.planet-casio.com/en/Main_Page)
>がOSが似ていて、少なくとも SysCall が同じだから、今の C.Basic が動くという感じでしょうか?

その通りです。MS-DOSみたいなものなので、ハード構成が同じで共通のSysCallが使えるfx-9860Gシリーズであれば、C.Basicは互換動作可能です。


>で、fx-9750GII も同じシリーズの仲間だから動く?

はい、ハードはバックライトLCD以外は同じでソフト的に機能制限された下位機種という位置づけなので、(裏技で)アップグレードするとfx-9860GIIシリーズ同等になります。


>実は、私も fx-9860GII SD の Amazonでの並行輸入品の価格をチェックしています。
>ひょっとしたら、数ヶ月ごにアメリカ出張するかも知れないので、その時に現地で安いのをゲットしたいな、と思案中だったりします。

ちょっと前に米アマゾンで価格を調べたときは120$だったのでアメリカでも結構高価格路線ですね。
CG50が発売されていたらCG50の方が安いということにも…(^^;



昨日で一段落かと思ったver.1.00ベータ版ですが、またまたバグが見つかったので修正差し替えです。(^^;

アドイン版 C.Basic ver.1.00 ベータ版(その2)
http://pm.matrix.jp/CB/CBASIC100.zip
・_Verticalがバグっていたのを修正しました。
・OS2.09において最初のプログラム実行時にシステムエラーが出ることがあったのを修正しました。

あと…バージョン表示にβを付けました。(^^;
これが取れたら一応正式版です。

Re:カシオペアにコメントがついていますね

ガノー様、こんにちは!

>正式リリースの英語アナウンスにコメントがついていますね!電卓だけでCasioBasic→C.Basicにコードをメモリーマネージャーからコピペしたら動いた。
15倍早くなった。すんばらしい!とべた褒めのようですw
>私も触発されます。

CasioBasicからはサポートコマンドの範囲内でしか互換動作は出来ないのですが、そのまま動作できたというのはやっぱり嬉しいです。(^^)

グラフィックスの高速化はMonochromeLib系コマンドがベストだと思われますし、計算速度が足りない場合は今後のコンパイラでというところですけど、専用コマンド化するのが手っ取り早いので、拡張コマンドのアイデアもお待ちしております。(^^)


>>>お二方
>正式リリースおめでとうございます!

ありがとうございます!!
ここまでこれたのも管理人様はじめ、ガノー様の的確なサポートのおかげですね。
こちらこそ感謝しています。
これからVer2.00に向けて、まだまだ先は長いですが、今後もよろしくお願いいたします。


>ヨコリス

これは、ラインスタイルをデフォルトで指定しておくか、コマンド毎に指定しておけば問題ないでしょうか。
もしくはCasioBasic仕様と関連しないMonochromeLib系コマンドに置き換えるのも一つの方法ですね。

Re: UCFでのコメント

sentaro様

UCF でのコメントで、upgraded fx-9750GII でもC.Basicが動いたとのコメント(ガノー様ポストの件)がありますが、fx-CG10/20 では同じSH4Aでも動かないのですよね?

Casio Basic自体はOSの一部ですから、中間コードなどの仕様はにかなりOSに依存する筈です。

で、少なくとも fx-9860 Series とされているもの (https://wiki.planet-casio.com/en/Main_Page)
がOSが似ていて、少なくとも SysCall が同じだから、今の C.Basic が動くという感じでしょうか?

で、fx-9750GII も同じシリーズの仲間だから動く?

UCFでのコメント

ガノー様

情報ポストありがとうございます。

> 正式リリースの英語アナウンスにコメントがついていますね!電卓だけでCasioBasic→C.Basicにコードをメモリーマネージャーからコピペしたら動いた。
> 15倍早くなった。すんばらしい!とべた褒めのようですw

はい、見ました。
欧米では、SH4A搭載機のバリエーションが多いので、このような情報は海外リリースしないと分からないですよね。

機種名の最後に "II" が付くと、SH4A搭載って傾向がありそうです。



> ヨコリス。それは試したことがありませんでした。見直してみます。

よろしくお願い致します。



> >>お二方
> 正式リリースおめでとうございます!

ありがとうございます。
UCFのポストに書いた私の気持ちを、1行で表すならば、

The C.Basic, an awesome program made me crazy.

(凄いプログラム C.Basic が私を夢中にさせた。)

なんですよ、ホント

カシオペアにコメントがついていますね

お早うございます。取り急ぎ。
正式リリースの英語アナウンスにコメントがついていますね!電卓だけでCasioBasic→C.Basicにコードをメモリーマネージャーからコピペしたら動いた。
15倍早くなった。すんばらしい!とべた褒めのようですw

私も触発されます。

>>管理人様
ヨコリス。それは試したことがありませんでした。見直してみます。

>>お二方
正式リリースおめでとうございます!

Re:C.Basic - International Release

管理人様、こんにちは!

英語版サイト、大変お手数おかけしました。m(_ _)m
これほどの大量の英訳となると私ではちょっとお手上げなので、すごく感謝しています。


>ついに、International Release しちゃいました。
http://community.casiocalc.org/topic/7637-cbasic-international-release/

いよいよリリースなんですね。(^^)
ちょっとドキドキです。

1.00はまだ道半ばですが、致命的バグが出ないことを祈るのみですね。

Re: No title

ガノー様

> >Wiki
> こちらはまだまだ触れる時間を割けそうにありません(汗)
コマンドの使いこなしを、ゲームと共に解説なさると、私個人としてはとても楽しみです。
特に、Ver 1.00 で導入されたMLコマンドなどは、注目度高いです!



> >YOKOLITH
> YOKOLITHの画面乱れは体験したことがないので
> お教えいただけると助かりますΣ(・∀・;)

[SHIFT][MENU](Setup) でSketch Line を Normal 以外に設定されていると、描画がおかしくなります。
特に Thick にすると影響が大きい感じです。



> >.Netの公開
> ターゲットOSを明確に設定すれば、特段の問題は無いと思います。
> むしろ、一番アプリ公開がし易い環境だと考えています。

よくわかりました。ありがとうございます。
Windows に限れば、ある意味今は過渡期なのかも知れませんね。



> Fx-9860GIIのSDカード対応機種を入手しており、そちらをネットワーク対応SDカードで
> 電卓からネットワークへ通信することを試しています。
> 具体的には、最終的にC.Basic用のNTPを構想しています。

これは、なかなかに魅力的ですね!

実は、私も fx-9860GII SD の Amazonでの並行輸入品の価格をチェックしています。
ひょっとしたら、数ヶ月ごにアメリカ出張するかも知れないので、その時に現地で安いのをゲットしたいな、と思案中だったりします。

C.Basic - International Release

sentaro様、ガノー様、皆様


ついに、International Release しちゃいました。

http://community.casiocalc.org/topic/7637-cbasic-international-release/


Re: Re:Re: アドイン版 C.Basic ver.1.00 ベータ版(限りなくベータ版に近いテスト版)

sentaro様、ガノー様、皆様

こんばんは、

ご指摘頂いた Typo やアドバイスに助けられて、英語版 C.Basic のサイトが、リリース用にやっとこさ形を整えてみました。

http://egadget2.web.fc2.com/CBasic/Interpreter/CBasic_interpreter.html

e-Gadget の日本語さえバグだらけなので、気がついた時に修正してゆくとして、これから Universal Casio Forum の Your Projet のコーナーにアップしようと思います。

なお、サイトのバグについては、いつでもご指摘頂ければ有り難いです<(_ _)>


Re:Re: アドイン版 C.Basic ver.1.00 ベータ版(限りなくベータ版に近いテスト版)

管理人様、こんにちは!

>ついに Ver 1.00 になりましたね。お疲れ様です。最初の想像以上(失礼ながら)に完成度が上がるとは、もう驚きです。
>そこで昨晩は、取り敢えず、ブログと Web の両方で、Ver 1.00 をダウンロードできるようにしました。
>あとは今晩の作業で、UFC で発表できるように、Webの英語版ページの体裁を整えてみます。

いつもありがとうございます!
やっとこ1.00に辿り着いた感じですけど、まだまだ半完成状態なので、今までの流れで行くと日々更新は変わらなそうです。(^^;


>> アドイン版 C.Basic ver.1.00 ベータ版(限りなくベータ版に近いテスト版)
>この控えめな表現は、英語版 Webでは beta version としました。スミマセン
>控えめ感をだしたいというご希望があれば、そのように変更しますが、如何ですか?
>欧米向けでは、「まだバグがあるに違いないから気をつけてね」の一言があれば良いような気がしますけど...

実質的にベータ版なので、管理人様のおっしゃるとおりbeta version で無問題です。(^^)
Ver.2.00でバグがゼロになればと思いますが、CG10/20への移植も含めて先はまだ長いですね。


>**********
>C.Basic トップページ(英語版)
http://egadget2.web.fc2.com/CBasic/Interpreter/CBasic_interpreter.html

>C.Basic ダウンロードサイト(英語版)
http://egadget2.web.fc2.com/CBasic/archives/programs/CBasic/CBasic_versions.html
>こんな感じで、さらに以下は英語版ができていますが、他は日本語のままです;

>C.Basic 拡張コマンド概要(英語版)
http://egadget2.web.fc2.com/CBasic/Interpreter/ExtCom.html
>※但し、Ver 1.00 で追加されたコマンド類についての記述の追加が今晩できるかどうか...自信ありません(´ω`)

互換コマンドでも拡張仕様になっているので、かなり複雑化してしまいました。
毎度お手数おかけしています。m(_ _)m

新規追加のMonochromeLib系コマンドは海外製ライブラリに基づくコマンド実装なので海外の方はすでに使い方を分かっている方も多いかもしれません。
サンプルプログラムがいくつかあれば、MonochromeLibライブラリにマニュアルが付属してますのでとりあえずそれでいけるかなと思います。(^^;


>取り敢えず、英語版で「これは見過ごせない」というのが有れば、教えて頂けますと助かります。

ほとんど大丈夫かと思います。(^^)

いっこだけ気がついたところではGetkeyの項目の最後で、
>* In case Getkey1 does not properly work in SH3 version, use Getkey3 instrad of Getkey1.
ここはGetkey3ではなくてGetkey2が正解です。(^^;




ガノー様、こんにちは!

>ゲームではありません(;・∀・)

グラフィックスはMonochromeLib系コマンドで倍以上速くなるので何か使えるかもしれません。


>Fx-9860GIIのSDカード対応機種を入手しており、そちらをネットワーク対応SDカードで
>電卓からネットワークへ通信することを試しています。
>具体的には、最終的にC.Basic用のNTPを構想しています。

おお!SD版!
以前から入手しようと画策していたところですが並行輸入版でもFD10Proと変わらない価格なのでなかなか踏み出せずにいました。
ネットワークに繋がるとなるとかなり凄いことが出来そうですね。(^^)


>一点だけ。FillPorgonはタイポかもしれません。

うわ、思いっきりタイポでした。(^^;

ってことで、例によって、差し替え修正しておきました。
MonochromeLib系コマンドの一部コマンド名も修正しました。(^^;
併せて行列の短縮形、A1が一部使えなくなるというエンバグしていたのも修正です。


アドイン版 C.Basic ver.1.00 ベータ版
http://pm.matrix.jp/CB/CBASIC100.zip

No title

お早うございます。

TO:管理人様

>Wiki
こちらはまだまだ触れる時間を割けそうにありません(汗)

>YOKOLITH
YOKOLITHの画面乱れは体験したことがないので
お教えいただけると助かりますΣ(・∀・;)

>.Netの公開

.Netの公開はフレームワーク込みで公開するか、
個人レベルならフレームワークは無しでアプリだけ公開するか、
ClickOneceで公開するとか、ストアアプリケーションとして公開するとか、
色々選択肢がありますね。

またフレームワークはWindows7なら3.5が、
Windows8なら4.5がWindows10なら4.6が最初から入っています。
Windows Updateをすればチェックボックスを操作してボタンを押すだけで簡単にインストールできます。
またユーザーがアプリを起動して、起動時に未インストールのフレームワークが必要になっても、
起動時にアラートされるボタンを押すだけでネットワーク経由で自動的にインストールできます。

ターゲットOSを明確に設定すれば、特段の問題は無いと思います。
むしろ、一番アプリ公開がし易い環境だと考えています。

TO:sentaro様

>新ネタ

ゲームではありません(;・∀・)

Fx-9860GIIのSDカード対応機種を入手しており、そちらをネットワーク対応SDカードで
電卓からネットワークへ通信することを試しています。
具体的には、最終的にC.Basic用のNTPを構想しています。

>新グラフィック命令

一点だけ。FillPorgonはタイポかもしれません。

Re: アドイン版 C.Basic ver.1.00 ベータ版(限りなくベータ版に近いテスト版)

sentaro様、皆様

こんにちは、

> 日々バグが発見される状況なので、今後もベータ版のまま続く可能性大有りですが、とりあえず今回のバージョンにて1.00ベータ版といたします。(^^;

ついに Ver 1.00 になりましたね。お疲れ様です。最初の想像以上(失礼ながら)に完成度が上がるとは、もう驚きです。

そこで昨晩は、取り敢えず、ブログと Web の両方で、Ver 1.00 をダウンロードできるようにしました。

あとは今晩の作業で、UFC で発表できるように、Webの英語版ページの体裁を整えてみます。


> アドイン版 C.Basic ver.1.00 ベータ版(限りなくベータ版に近いテスト版)

この控えめな表現は、英語版 Webでは beta version としました。スミマセン
控えめ感をだしたいというご希望があれば、そのように変更しますが、如何ですか?
欧米向けでは、「まだバグがあるに違いないから気をつけてね」の一言があれば良いような気がしますけど...

**********

C.Basic トップページ(英語版)
http://egadget2.web.fc2.com/CBasic/Interpreter/CBasic_interpreter.html

C.Basic ダウンロードサイト(英語版)
http://egadget2.web.fc2.com/CBasic/archives/programs/CBasic/CBasic_versions.html

こんな感じで、さらに以下は英語版ができていますが、他は日本語のままです;

C.Basic クイックマニュアル(英語版)
http://egadget2.web.fc2.com/CBasic/Interpreter/QuickManual.html

C.Basic リファレンス(英語版)
http://egadget2.web.fc2.com/CBasic/Interpreter/Reference.html

C.Basic 拡張コマンド概要(英語版)
http://egadget2.web.fc2.com/CBasic/Interpreter/ExtCom.html
※但し、Ver 1.00 で追加されたコマンド類についての記述の追加が今晩できるかどうか...自信ありません(´ω`)


取り敢えず、英語版で「これは見過ごせない」というのが有れば、教えて頂けますと助かります。




アドイン版 C.Basic ver.1.00 ベータ版(限りなくベータ版に近いテスト版)

管理人様、ガノー様、皆様、こんにちは!

日々バグが発見される状況なので、今後もベータ版のまま続く可能性大有りですが、とりあえず今回のバージョンにて1.00ベータ版といたします。(^^;


アドイン版 C.Basic ver.1.00 ベータ版(限りなくベータ版に近いテスト版)
http://pm.matrix.jp/CB/CBASIC100.zip

・小文字の行列の省略形( a[1] 、a2等)が使えなかったのを修正しました。

・文字列変数のStrにおいて、インデックス開始値が0の場合にはStr 0が使えるようになりました。
(例)'#Mat 0
   "String"→Str 0

・行列のインデックス開始値を返す"MatBase("関数を追加しました。
(例)'#Mat 0
   10→Mat A
   MatBase( Mat A )
0が返ります。

・"ElemSize("、"RowSize("、"ColSize(" コマンドがテキスト変換できなかった不具合を修正しました。

・"DotPut("および、"Sprintf("コマンドが純正コマンドと重複していたので中間コード変更しました。
DotPut( = DotP : 0xF94B -> 0xF74B
Sprintf( = Vct : 0xF73E -> 0xF743

 今回のバージョンでは、ソースを読み込んだ時点で自動的にコード変更されるので以前のバージョンで作成したソースはそのまま実行、編集できます。
 "DotTrim(" および"DotGet("も自動変更に対応します。

・fx-9860Gシリーズの超高速グラフィックスライブラリのMonochromeLibをサポートしました。
 https://wiki.planet-casio.com/fr/MonochromeLib
 _ClrVram
 _ClrScreen
 _DispVram
 _Pixel
 _Point
 _PixelTest(
 _Line
 _Horizontal
 _Vertical
 _Rectangle
 _Polygon
 _FillPorgon
 _Circle
 _Fcircle
 _Elips
 _Felips
 _ElipsInRct
 _FelipsInRct
 _Hscroll
 _Vscroll
 _Bmp
 _Bmp8
 _Bmp16

 CasioBasicのグラフィックスコマンド仕様とは独立したハードに密着した別系統のコマンドとなります。
 これらのコマンドは現在のVRAMを操作するだけなので描画結果を表示するにはPutoDispDD等のコマンドでLCD転送(画面更新)をする必要があります。
 コマンドの使い方はマニュアルを参照して下さい。

Re:お久しぶりです!

ガノー様、こんにちは!
おひさしぶりです!

>C#のIDEは便利ですよね~。
>積み木のように画面が作れるので楽ですよ!
http://ganohr.net/blog/the-elaborater-bee-will-be-coming-soon/
>C#で一から開発を初めたのですが、3時間ぐらいで画面を作って、ちょっとした機能を搭載させることができます。

さ、3時間!
一から初めて数時間である程度形になるなら、なかなかですね。
まとまった時間が取れたら挑戦してみます!


>そして、C.BasicはVer1.0が近いんですね!!

現在のバージョンでほぼ1.00となる予定ですが、今後は2.00で晴れてC:Basicとなれるべく更新を頑張ります!


>FX-5800Pは、プログラミング電卓として知名度は高いと思うので、
>その方々へC.Basicは絶対に受け入れられると思います!!

ガノー様にそうおっしゃっていただけると心強いです。(^^)


>実はコソコソと、自分のサイトでもコンテンツ準備中なので正式バージョンが待ち遠しい限りです。

ぉお!新ゲームとか期待してもいいのでしょうか。
楽しみにしております!(^^)

Re:Re: Re:Re: Re:Re: アドイン版 C.Basic ver.0.99v テスト版 その9.9v(行列の一部を通常変数として使える版)

管理人様、こんにちは!

>純正 Casio Basic がメチャ速くなるので、まずはそれで遊んでね...みたいに言っちゃえば良いですね(^^;

最初のスタートがCasioBasic完全互換だったので、とりあえず、入り口としてはそういう感じでいけますね。
そこから少しずつ深く掘り下げて使い込んでもらえたら言うことなしです。(^^)


> C.Basicの行列の拡張仕様はちょっとややこしくなってしまったので、マニュアルが多く大変になってしまってすみません。(^^;
>はい、なかなか大変ですが、これをクリアすれば、文字列配列なんかも分かりますよね!

文字列の実装とかはC言語方面から見ればすんなり理解してもらえそうなことでも、CasioBasic方面から見ると難解仕様に見えるかもしれないので、日本語で説明するのでも結構難しいところなので、大変お手数おかけしてます。m(_ _)m


>sentaro様が、その気になって始められたら、きっとあっという間に使いこなせるようになるのではありませんか?そうしたら、色々と質問できて良いな...と...

あ、いや…今まで使おうとしてこなかったツケが一気に出てきそうで…(^^;
でも、まあ、とりあえずはまず慣れていかないとですよね。


>ヨコリスなどは好評だと思いますが、電卓としての設定により画面表示が乱れたりするので、ユーザーでプログラムを修正してもらうか、設定を変えて貰うか...といった感じで注意書きも併せて紹介しようかな、と思案中です。

画面表示が乱れるというのは未経験かもなのですが、どういう設定条件で出てくるでしょうか?
C.Basicのバグの可能性もありますし…(^^;

Re: お久しぶりです!

ガノー様

お久しぶりです。

Twitterではチョコチョコお見かけしてますが、色々と幅広く発信されていますね。

C.Basic Wiki も楽しみにしています(^^;
http://egadget.blog.fc2.com/blog-entry-527.html


C.Basic海外正式リリースに向けて、英語のWebの準備をしています。
既に予告していて、ガノー様が C.Basicで作ったゲームの動画を紹介したところ、反応があったのでお知らせします。
http://community.casiocalc.org/topic/7620-inside-casio-basic-is-now-to-be-prepared/

C.Basic メインでなくて、Inside Casio Basic 英語版発表の流れで C.Basic の紹介です。

今月に(多分)C.Basic のアナウンスをする流れになっています...

多分読者の興味として、ガノー様のゲームへの要望が高いと思うので、紹介したいな、と思っています。
ヨコリスなどは好評だと思いますが、電卓としての設定により画面表示が乱れたりするので、ユーザーでプログラムを修正してもらうか、設定を変えて貰うか...といった感じで注意書きも併せて紹介しようかな、と思案中です。



C#は、確かに積み木を積み上げるだけで楽なのですが、積み木の種類と在処が分からないと、かなり大変ですね。慣れるのには時間がかかりそうです。

でも、最初から覚えるのなら、VCとMFCを使った開発よりはC#の方が遙かに楽なように思います。

組み込み系では、C/C++ は必要なので、無くなることは無いと思いますが、今後はよりプロ用のツールとなる感じがしています。

ところで、今持っている疑問の1つに、VBやC#のようにネイティブコードを配布しないというスタイルで、Windowsのバージョンだけでなく、別のプラットフォームでも対応できるという利点の代わりに、ユーザーサイドで必要なランタイムライブラリをインストールさせなければならないのが、果たしてどうか?という点です。

最近、私自身が新しいランタイムライブラリを導入したせいで、10年以上愛用してきたアプリが使えなくなったという経験をしています。

※実は、これは普段放置しているパス設定を見直すことで殆どが解決しました。しかしVS2015のインストールだけはどうにもならなかったのでが、偶然解決しました。

※VS2015インストール直後にこの問題が発生したのですが、Win32向けVC開発環境とMFCを追加インストールしたら、この問題が解消しました。色々調べてみると、ランタイムライブラリが原因としか思えない状況でした。

※以前インストールした時は、どうしても問題解決しなくて一旦VS2015をアンインストールしたのですが、今回はなんだか問題が解決してしまっています。


昔、VBのラインタイムでこの問題がかなり広く大きくなったことがあって、ランタイム教に入信してたこともあります。

しかし今のように複数のWinのバージョンや別のプラットフォームが普通に出回っているのでランタイム教は信じなくなっていますが、それでも自分が最近実害に遭っているので、C#で作ったアプリの配布で一番間違いの無い方法は何だろうか?と気になっています。

なにかアドバイス頂けると有り難いです。

お久しぶりです!

TO:管理人様、sentaro様。

お久しぶりです。

C#の話題が出ているので久々にカキコします。

C#のIDEは便利ですよね~。

積み木のように画面が作れるので楽ですよ!

http://ganohr.net/blog/the-elaborater-bee-will-be-coming-soon/

C#で一から開発を初めたのですが、3時間ぐらいで画面を作って、ちょっとした機能を搭載させることができます。

まあ、何にせよ、
機能の拡充やブラッシュアップが大変なのは全ての言語に共通していますけどね(;´∀`)。

そして、C.BasicはVer1.0が近いんですね!!
FX-5800Pは、プログラミング電卓として知名度は高いと思うので、
その方々へC.Basicは絶対に受け入れられると思います!!

実はコソコソと、自分のサイトでもコンテンツ準備中なので正式バージョンが待ち遠しい限りです。

これからも応援しております!!!

Re: Re:Re: Re:Re: アドイン版 C.Basic ver.0.99v テスト版 その9.9v(行列の一部を通常変数として使える版)

sentaro様

> あ、一箇所、最初のA1 and B5,のところがA1 and B1になってます(^^;
>
> (example) A1+123→B5
>  Since Mat A and Mat B are not alocated yet at timing of access to the variables A1 and B1,

ありがとうございます。あと、ready が deady になっていたり、表現をチョット変えてみました。



> CasioBasicとC.Basicの相違点が分かってもらえれば、後はCasioBasicの作法というか文法そのままなので敷居はかなり低くなると思われます。(^^)

純正 Casio Basic がメチャ速くなるので、まずはそれで遊んでね...みたいに言っちゃえば良いですね(^^;



> >行列の拡張が、C.Basicの目玉の1つだと思うので、せめて行列関連だけでも間に合わせたいと思っています。
>
> C.Basicの行列の拡張仕様はちょっとややこしくなってしまったので、マニュアルが多く大変になってしまってすみません。(^^;

はい、なかなか大変ですが、これをクリアすれば、文字列配列なんかも分かりますよね!



> >試しにデジタル時計を作ってみましたが、実際のコーディング(手入力)は1行だけで済んじゃいました!
>
> おお!
>
>
> >「現在の時間を取得して文字列に変換して返す」
> >ま、1行で済むのですが、この1行を書くのに、とても時間がかかりました...
> >DATETIMEクラスというのを見つけて、それに含まれる各種メソッド(要は関数です)を調べて、使えるものがあるいかどうか、使えるとしたらどうやって正しく使えるのか、など楽ではありませんでした。
>
> う~ん…この最初のハードルを越えられるかどうかが使えるかどうかの分かれ道なのですよね。

そうなんですね。VBやVCでWinなプログラムを作ったことがあれば、なんとか...って感じですが、それでも私には敷居は以前として高いです。


> つまるところ、最初のハードルを越えて慣れてしまえば、最新の使い易さが手に入るということですよね。
> 私の場合、まっさらの一からというのが苦手なので、改造元の雛形ソースがいっぱいあれば、ということろですけど、まずは踏み出してみないとです。(^^;

まさに、おっしゃる通りです。


今、試しに、C#とVC++で、同じプログラムを比較しながら書いてみています。
VCは分かっていると思っていたら、IDEの使い勝手がVC6から変わっていて、微妙なところで躓いています。

一番嫌らしいのは、リソースファイルをテキストエディタでチョイチョイと書くと、コンパイル出来なかったりします。
VSが自動作成するので、勝手に触るな!という姿勢です。するとIDEの使い方を間違えると、どうにもコンパイルできなくてハマリます。

嫌になったので、しばらく放置になりそうです。

一度IDEの使い方を、どこかでしっかり読んだほうが良さそうです...って説明無しで結構使えたので、ここで引っかかるのがチョット面白くないというか...

あと、安全なコードを強制的に書かせる傾向が、以前よりも圧倒的に強い感じなので、いい加減なコードで良しとしてきたツケが回ってきています(゜Д゜)

VCといっても舐めてかったら、トンでもなかったというお話です。


なので、同じプログラムを、C#と並行してVCでも作れば、同じ匂いがするので、両方まとめて、改めてキチンと勉強し直しです。

まぁでも、電卓のように通勤電車で...というわけねいも行かず、進みは遅くなりそうだし、間があくと忘れてしまいそうなので、何が分からなくて、何が分かったのかについての学習メモを取りながら、勧めています。


sentaro様が、その気になって始められたら、きっとあっという間に使いこなせるようになるのではありませんか?そうしたら、色々と質問できて良いな...と...


Re:Re: Re:Re: アドイン版 C.Basic ver.0.99v テスト版 その9.9v(行列の一部を通常変数として使える版)

管理人様、こんにちは!

>いつもの、Get a New Version のページを更新しました。
http://egadget2.web.fc2.com/CBasic/archives/programs/CBasic/CBasic_versions.html

毎度お手数おかけしています。m(_ _)m

あ、一箇所、最初のA1 and B5,のところがA1 and B1になってます(^^;

(example) A1+123→B5
 Since Mat A and Mat B are not alocated yet at timing of access to the variables A1 and B1,



>英訳が多分間に合わない気がしますので、私の方が焦ってます。
>ちなみに、2/12 が娘の誕生日なので、そこへ延期させてもらうかも知れません。
>節分までに完成の見通しはかなり低くなってしまいました。
>もう一人の娘が3月、家内が4月なので、あと3回納期設定があったりして...(^^;

1,2,3,4月と毎月誕生月があるのはちょっとすごいです!(^^)
ver 1.00といえども完成ではなく通過点なので、そこからver 2.00までの道のりを考えると、納期に関しては全然急がなくてだいじょうぶです。(^^)


>> C.Basicは基本的にCasioBasic互換なので、クイックマニュアルだけでも何とかなるでしょうか。(^^)
>あ、そういう手もありますね。取り敢えず必要なページは日本語でフォーマットとしては出来ていて、リンクもできていますので、あとはこれを英訳するだけです。

CasioBasicとC.Basicの相違点が分かってもらえれば、後はCasioBasicの作法というか文法そのままなので敷居はかなり低くなると思われます。(^^)


>行列の拡張が、C.Basicの目玉の1つだと思うので、せめて行列関連だけでも間に合わせたいと思っています。

C.Basicの行列の拡張仕様はちょっとややこしくなってしまったので、マニュアルが多く大変になってしまってすみません。(^^;



>C#をチョット触ったところだと、開発スタイルはVBに極めて近くて、これから作るウインドウの設定などは、プロパティ画面で設定するだけでコーデイング無しでかなりのことまで出来ます。
>試しにデジタル時計を作ってみましたが、実際のコーディング(手入力)は1行だけで済んじゃいました!

おお!


>「現在の時間を取得して文字列に変換して返す」
>ま、1行で済むのですが、この1行を書くのに、とても時間がかかりました...
>DATETIMEクラスというのを見つけて、それに含まれる各種メソッド(要は関数です)を調べて、使えるものがあるいかどうか、使えるとしたらどうやって正しく使えるのか、など楽ではありませんでした。

う~ん…この最初のハードルを越えられるかどうかが使えるかどうかの分かれ道なのですよね。


>コーディング以外は、プロパティ画面での設定でかなりのことができ、さらに IDEが自動でコードを補完してくれます。VCでもMFC (Microsoftのクラスライブラリ)を使うとIDEが入力を手伝ってくれましたが、それ以上の親切さでした。
>独自のC#クラスライブラリを持っている企業や長年C#でコーディングしてきてコードの資産を持っている個人なら、C#の生産性が高いというのは、嘘ではないと感じます。
>VC++で作っていていつも使い回していたコードをDLL化して C#でオリジナルのクラスとして取り込むことができれば、或いは資産を活かせるのかも知れません...そのための手間がどの程度なのか....が問題です。

つまるところ、最初のハードルを越えて慣れてしまえば、最新の使い易さが手に入るということですよね。
私の場合、まっさらの一からというのが苦手なので、改造元の雛形ソースがいっぱいあれば、ということろですけど、まずは踏み出してみないとです。(^^;


>改めて、電卓プログラミングが如何に楽チンで、覚えることが少ないかを実感しました!

C++やC$に比べて段違いに敷居が低いのは間違いないですね。(^^)

Re: Re:Re: アドイン版 C.Basic ver.0.99v テスト版 その9.9v(行列の一部を通常変数として使える版)

sentaro様


> 領域確保は変数がアクセスされたタイミングなので、読み出し前、代入前、というタイミングになります。
> 通常の行列では未確保時にエラーになる箇所で、自動的に領域確保されるという感じですね。
> サンプルをReadme.txtとManual.txtに追加してみました。

いつもの、Get a New Version のページを更新しました。
http://egadget2.web.fc2.com/CBasic/archives/programs/CBasic/CBasic_versions.html


> >Ver 1.00 - beta version が coming soon! と準備だけしておきました。
>
> いよいよ近づいてきましたね。
> ちょっと焦ります。(^^;

英訳が多分間に合わない気がしますので、私の方が焦ってます。
ちなみに、2/12 が娘の誕生日なので、そこへ延期させてもらうかも知れません。
節分までに完成の見通しはかなり低くなってしまいました。

もう一人の娘が3月、家内が4月なので、あと3回納期設定があったりして...(^^;


> C.Basicは基本的にCasioBasic互換なので、クイックマニュアルだけでも何とかなるでしょうか。(^^)

あ、そういう手もありますね。取り敢えず必要なページは日本語でフォーマットとしては出来ていて、リンクもできていますので、あとはこれを英訳するだけです。

行列の拡張が、C.Basicの目玉の1つだと思うので、せめて行列関連だけでも間に合わせたいと思っています。


> >はい、さっそく Visual Studio Community 2015 をインストールしました。
> >VC++ で Win32 Windowsアプリとコンソールアプリを作れるようにしました。

> お!さすが、管理人様です!
> C++はClassPadのSDKで触れたくらいで、なかなかPC用ソフトのプログラミングまで手が伸ばせない状態ですが、なんとか使えるようにしたいです。(^^)

C#をチョット触ったところだと、開発スタイルはVBに極めて近くて、これから作るウインドウの設定などは、プロパティ画面で設定するだけでコーデイング無しでかなりのことまで出来ます。

試しにデジタル時計を作ってみましたが、実際のコーディング(手入力)は1行だけで済んじゃいました!

「現在の時間を取得して文字列に変換して返す」

ま、1行で済むのですが、この1行を書くのに、とても時間がかかりました...

DATETIMEクラスというのを見つけて、それに含まれる各種メソッド(要は関数です)を調べて、使えるものがあるいかどうか、使えるとしたらどうやって正しく使えるのか、など楽ではありませんでした。

コーディング以外は、プロパティ画面での設定でかなりのことができ、さらに IDEが自動でコードを補完してくれます。VCでもMFC (Microsoftのクラスライブラリ)を使うとIDEが入力を手伝ってくれましたが、それ以上の親切さでした。

独自のC#クラスライブラリを持っている企業や長年C#でコーディングしてきてコードの資産を持っている個人なら、C#の生産性が高いというのは、嘘ではないと感じます。

私などは、これまでの資産と言えば VC 6 (Visual Studio 6) の大昔のコード資産しかなく、これが今のC#に活かせるかどうか?
多分そんなことは無いのでしょう。

VC++で作っていていつも使い回していたコードをDLL化して C#でオリジナルのクラスとして取り込むことができれば、或いは資産を活かせるのかも知れません...そのための手間がどの程度なのか....が問題です。

ま、いくつかサンプルプログラムを作ってみようと思います。



いずれにせよ、C#プログラミングは、.NET のクラスライブラリを覚えなければ、どうにも使えないのが無いのが辛いところです。
あとWindowsの仕組みというかコンセプトの理解も必要です(幸い、私はこれはOKで助かりました)。

強引にAPIを呼び出して使うことができるので(以前VBでこれをやった経験あり)、C#上で昔ながらのロジックで書けなくもありませんが、せっかくならC#流のコーデイングを覚えなきゃ損でしょう。

改めて、電卓プログラミングが如何に楽チンで、覚えることが少ないかを実感しました!

Re:Re: アドイン版 C.Basic ver.0.99v テスト版 その9.9v(行列の一部を通常変数として使える版)

管理人様、こんにちは!

>> A0~A9表記の行列変数ですが、通常変数同様に使えるように自動的に行列を確保するようにしてみました。
>これですが、readme_J.txt では、
>「・A0~A1変数の実体となる行列が確保されてない場合には自動的に確保するようにしました。」
>とあります。ここで A0~A1 は、A0~A9 の間違いでしょうか?

はい、思いっきり間違いです。(^^;


>また、領域の自動確保は、どのタイミングで行われるのでしょうか?サンプルコードを添えて説明があった方が良いと思います。
>なお、英文では A0 ~ A9 とし、A0 ~ A9 を使う時に領域確保されていない場合は自動的に確保する、と表現しておきました。

お手数おかけしています。
領域確保は変数がアクセスされたタイミングなので、読み出し前、代入前、というタイミングになります。
通常の行列では未確保時にエラーになる箇所で、自動的に領域確保されるという感じですね。
サンプルをReadme.txtとManual.txtに追加してみました。


>Ver 1.00 - beta version が coming soon! と準備だけしておきました。

いよいよ近づいてきましたね。
ちょっと焦ります。(^^;


>肝心のマニュアルが、まだ終わってませんが...(^^;
http://egadget2.web.fc2.com/CBasic/archives/programs/CBasic/CBasic_versions.html

C.Basicは基本的にCasioBasic互換なので、クイックマニュアルだけでも何とかなるでしょうか。(^^)


>はい、さっそく Visual Studio Community 2015 をインストールしました。
>VC++ で Win32 Windowsアプリとコンソールアプリを作れるようにしました。
>インストールして眺めてみると、C# を使わせたい雰囲気が濃厚です。VC++ を使えるようにするには、さらにインストール作業を要求されます。
>C# は、C++ とは全く別モノですが、ひょっとしてコーディングが楽かも知れない感じがしていますので、チョット味見をしてみようと思っています。

お!さすが、管理人様です!
C++はClassPadのSDKで触れたくらいで、なかなかPC用ソフトのプログラミングまで手が伸ばせない状態ですが、なんとか使えるようにしたいです。(^^)



アドイン版 C.Basic ver.0.99v テスト版 その9.9v(行列の一部を通常変数として使える版)
http://pm.matrix.jp/CB/CBASIC099v.zip
・A0~A9表記の変数の実体となる行列が確保されてない場合には自動的に確保するようにしました。
(例)A1+123→B5
 もし、Mat AおよびMat Bが確保されていない場合は、変数がアクセスされた時点で
 9→Dim A
 9→Dim B
 と同じ初期化が自動的に実行され、A1~A9およびB1~B9までが使えます。

(例)'#Mat 0
 A1+123→B5
 の場合、もし、Mat AおよびMat Bが確保されていない場合は、
 10→Dim A
 10→Dim B
 と同じ初期化が自動的に実行され、A0~A9およびB0~B9までが使えます。

(例)'#Mat 0
 2→Dim B
 A1+123→B5
 の場合は、
 10→Dim A
 Mat Aのみ初期化され、Mat Bは再確保されないのでB5にアクセスした時点でエラーになります。
 この場合はA0~A9およびB0~B1までが使えます。

Re: アドイン版 C.Basic ver.0.99v テスト版 その9.9v(行列の一部を通常変数として使える版)

sentaro様

> A0~A9表記の行列変数ですが、通常変数同様に使えるように自動的に行列を確保するようにしてみました。

これですが、readme_J.txt では、

「・A0~A1変数の実体となる行列が確保されてない場合には自動的に確保するようにしました。」

とあります。ここで A0~A1 は、A0~A9 の間違いでしょうか?
また、領域の自動確保は、どのタイミングで行われるのでしょうか?サンプルコードを添えて説明があった方が良いと思います。

なお、英文では A0 ~ A9 とし、A0 ~ A9 を使う時に領域確保されていない場合は自動的に確保する、と表現しておきました。


Ver 1.00 - beta version が coming soon! と準備だけしておきました。
肝心のマニュアルが、まだ終わってませんが...(^^;

http://egadget2.web.fc2.com/CBasic/archives/programs/CBasic/CBasic_versions.html




> 管理人様のリカバリーの件で私も今年最初のバックアップを取りました。(^^)

お、それは良いことをなさいましたね\(^_^)/


> 慣れ親しんだソフトの代わりを探すといってもなかなか難しいことですよね。
> 見つかってよかったです。(^^)

はい、さっそく Visual Studio Community 2015 をインストールしました。
VC++ で Win32 Windowsアプリとコンソールアプリを作れるようにしました。

インストールして眺めてみると、C# を使わせたい雰囲気が濃厚です。VC++ を使えるようにするには、さらにインストール作業を要求されます。

C# は、C++ とは全く別モノですが、ひょっとしてコーディングが楽かも知れない感じがしていますので、チョット味見をしてみようと思っています。

アドイン版 C.Basic ver.0.99v テスト版 その9.9v(行列の一部を通常変数として使える版)

管理人様、こんにちは!

>例によって、更新履歴を追加しました。
http://egadget2.web.fc2.com/CBasic/archives/programs/CBasic/CBasic_versions.html

ありがとうございます!
いつもお手数おかけしています。m(_ _)m


>Windowsが起動できなくなるトラブルは昨日イメージバックアップを使ったリカバリーで解決しましたが、今日は引き続き気に入らない症状の解決にかなり時間をかけてしまいました。

管理人様のリカバリーの件で私も今年最初のバックアップを取りました。(^^)


>複数の特定のソフトをインストールすると、私にとって必要なソフトが起動できなくなる問題が以前からあって、PATH設定を見直すことでほぼ解決していました(過去にメモ代わりに記事を書いています)。
>ところが、開発環境の Visual Studio 2015 Community をインストールすると同じ問題があったのですが、これだけは解決が出来ずにいて、今日はこの問題の原因と回避方法を探し回りました。まだハッキリと解明できませんでした。
>並行して、起動できなくなるうソフトの代替えも探して、良さそうなものがようやく見つかりました。そこで、この代替えソフトをしばらく使ってみて、良ければ本格的に乗り換えることにします。
>そうすると、晴れて 開発環境をインストールできるかも知れません。
>...関係ないことでスミマセン。
>もう1年以上探して、ようやく良さそうな代替えソフトが見つかったのが嬉しいもので...

慣れ親しんだソフトの代わりを探すといってもなかなか難しいことですよね。
見つかってよかったです。(^^)


>英訳の納期が迫ってきているのに、困ったものです(^^;

今のところ、ver.0.99vのバグ潰しを経てインタプリタは正式版1.00となる感じです。(^^)


A0~A9表記の行列変数ですが、通常変数同様に使えるように自動的に行列を確保するようにしてみました。

アドイン版 C.Basic ver.0.99v テスト版 その9.9v(行列の一部を通常変数として使える版)
http://pm.matrix.jp/CB/CBASIC099v.zip
・A0~A9表記の変数の実体となる行列が確保されてない場合には自動的に確保するようにしました。

Re: Re:Re: アドイン版 C.Basic ver.0.99v テスト版 その9.9v(行列を通常変数風に使える版)

sentaro様

こんばんは、

アップデートありがとうございます。

例によって、更新履歴を追加しました。
http://egadget2.web.fc2.com/CBasic/archives/programs/CBasic/CBasic_versions.html


Windowsが起動できなくなるトラブルは昨日イメージバックアップを使ったリカバリーで解決しましたが、今日は引き続き気に入らない症状の解決にかなり時間をかけてしまいました。

複数の特定のソフトをインストールすると、私にとって必要なソフトが起動できなくなる問題が以前からあって、PATH設定を見直すことでほぼ解決していました(過去にメモ代わりに記事を書いています)。

ところが、開発環境の Visual Studio 2015 Community をインストールすると同じ問題があったのですが、これだけは解決が出来ずにいて、今日はこの問題の原因と回避方法を探し回りました。まだハッキリと解明できませんでした。

並行して、起動できなくなるうソフトの代替えも探して、良さそうなものがようやく見つかりました。そこで、この代替えソフトをしばらく使ってみて、良ければ本格的に乗り換えることにします。

そうすると、晴れて 開発環境をインストールできるかも知れません。

...関係ないことでスミマセン。

もう1年以上探して、ようやく良さそうな代替えソフトが見つかったのが嬉しいもので...

英訳の納期が迫ってきているのに、困ったものです(^^;








> 管理人様、こんにちは!
>
> マニュアルバグチェックありがとうございます(^^)
>
> >※スペースの変更です
>
> ちょっとスペースのバランスがおかしかったですね。(^^;
> ってことで、C.Basic側も修正しておきました。
>
>
> >※公開予定の日付け 2017/01/17 は MON でなくて TUE です(^^;
>
> プログラム側のバグ曜日をそのまま記述してしまってました(^^;
>
>
> >細かくてすみません。
> >なかなか英訳が進んでいません(´Д`)
>
> いえいえ、細かなほど助かります。(^^)
> 公開予定日が近づいているというのにC.Basic本体仕様が流動的なのでお手数おかけしています(^^;
>
>
>
>
> アドイン版 C.Basic ver.0.99v テスト版 その9.9v(行列を通常変数風に使える版)
> http://pm.matrix.jp/CB/CBASIC099v.zip
> ・行列のアクセス方法として、変数に直に数字を添字として記述することが出来るようにしてみました。
>  Mat A[1,1]をA[1]と表記する形のさらなる省略形です。ただし添字は数字の0~9のみです。
>
>  A[1,1]→A[1]→A1
>  A[2,1]→A[2]→A2
>  A[3,1]→A[3]→A3
>  A[4,1]→A[4]→A4
>  A[5,1]→A[5]→A5
>  A[6,1]→A[6]→A6
>  A[7,1]→A[7]→A7
>  A[8,1]→A[8]→A8
>  A[9,1]→A[9]→A9
>
> (例)10→Dim A
>  10→A1
>  20→A2
> A1+A2
>
>
>  添字に0が使えるのは行列インデックスの初期値を0に指定している場合のみです。
>
>  A[0,0]→A[0]→A0
>  A[1,0]→A[1]→A1
>  A[2,0]→A[2]→A2
>  A[3,0]→A[3]→A3
>  A[4,0]→A[4]→A4
>  A[5,0]→A[5]→A5
>  A[6,0]→A[6]→A6
>  A[7,0]→A[7]→A7
>  A[8,0]→A[8]→A8
>  A[9,0]→A[9]→A9
>
> (例)'#Mat 0
> 10→Dim A
>  10→A0
>  20→A1
> A0+A1
>
>
> ※Readme.txtは更新履歴のみ変更です。
> ※Manual.txtはセットアップの項目と誤記バグ修正しました。

Re:Re: アドイン版 C.Basic ver.0.99v テスト版 その9.9v(行列を通常変数風に使える版)

管理人様、こんにちは!

マニュアルバグチェックありがとうございます(^^)

>※スペースの変更です

ちょっとスペースのバランスがおかしかったですね。(^^;
ってことで、C.Basic側も修正しておきました。


>※公開予定の日付け 2017/01/17 は MON でなくて TUE です(^^;

プログラム側のバグ曜日をそのまま記述してしまってました(^^;


>細かくてすみません。
>なかなか英訳が進んでいません(´Д`)

いえいえ、細かなほど助かります。(^^)
公開予定日が近づいているというのにC.Basic本体仕様が流動的なのでお手数おかけしています(^^;




アドイン版 C.Basic ver.0.99v テスト版 その9.9v(行列を通常変数風に使える版)
http://pm.matrix.jp/CB/CBASIC099v.zip
・行列のアクセス方法として、変数に直に数字を添字として記述することが出来るようにしてみました。
 Mat A[1,1]をA[1]と表記する形のさらなる省略形です。ただし添字は数字の0~9のみです。

 A[1,1]→A[1]→A1
 A[2,1]→A[2]→A2
 A[3,1]→A[3]→A3
 A[4,1]→A[4]→A4
 A[5,1]→A[5]→A5
 A[6,1]→A[6]→A6
 A[7,1]→A[7]→A7
 A[8,1]→A[8]→A8
 A[9,1]→A[9]→A9

(例)10→Dim A
 10→A1
 20→A2
A1+A2


 添字に0が使えるのは行列インデックスの初期値を0に指定している場合のみです。

 A[0,0]→A[0]→A0
 A[1,0]→A[1]→A1
 A[2,0]→A[2]→A2
 A[3,0]→A[3]→A3
 A[4,0]→A[4]→A4
 A[5,0]→A[5]→A5
 A[6,0]→A[6]→A6
 A[7,0]→A[7]→A7
 A[8,0]→A[8]→A8
 A[9,0]→A[9]→A9

(例)'#Mat 0
10→Dim A
 10→A0
 20→A1
A0+A1


※Readme.txtは更新履歴のみ変更です。
※Manual.txtはセットアップの項目と誤記バグ修正しました。

Re: アドイン版 C.Basic ver.0.99v テスト版 その9.9v(行列を通常変数風に使える版)

sentaro様

Ver 0.99v に併せて、更新履歴とダウンロードファイルを追加しました。
http://egadget2.web.fc2.com/CBasic/archives/programs/CBasic/CBasic_versions.html


さて、マニュアルのバグです。

<< readme_J.txt >>

Pict mode:S.Mem/Heap
 ⇒ Pict mode :S.Mem/Heap
※スペースの変更です

DATE: 2017/01/17 MON
 ⇒ DATE: 2017/01/17 TUE
※公開予定の日付け 2017/01/17 は MON でなくて TUE です(^^;


<< Manual_J.txt >>

・Locate
 'CBINT ⇒ '#CBINT
 Log ⇒ log
 #移行 ⇒ #以降

・Gosub
 Label ⇒ Lbl


細かくてすみません。

なかなか英訳が進んでいません(´Д`)

アドイン版 C.Basic ver.0.99v テスト版 その9.9v(行列を通常変数風に使える版)

管理人様、こんにちは!

>最初の CTL は STD の間違いですね。次回、Readme_J.txt の修正をお願いします。

あ゛…思いっきり間違えてました。(^^;
ってことで、修正しておきました。


>また、Ver 0.99u の説明で、
>> ・テキストファイル(*.txt)からの読み込みでファイル名に".txt"が残るバグを修正しました。
>これは、具体的にどの操作での問題だったのか、よく分かりませんので、教えて頂けませんか?

↓の操作と関連しています。


>これと関連するかどうか分かりませんが、テキストファイルを fx-9860GII に転送した後、これを開いて改行と[DEL]でファイル変更した時に現れる Save File? ウィンドウで、".txt" が表示されません。テキストファイルとして保存できません。.txt を追記するとプログラムリストでファイル名に拡張子が追加されるだけで、.txt となりません。
>テキストファイルのまま変更できないのは仕様ですか?そうならプログラムリストで拡張子が追加されるのは具合が悪そうです。

テキストファイルを読み込んだ時点で中間コードのg1m形式に変換されて、エディタでは中間コードで扱われているので、再保存ではg1mファイルとなります。
そのためにg1mとして扱わなければいけないファイルなのにファイル名に".txt"が残っていたという不具合です。
テキストファイルを編集してテキストファイルで保存するのは出来ないので、g1mファイルから再度テキスト変換をする必要があります。

ということで、テキストファイルのまま変更できないのは仕様ということになっています(^^;



英文字一文字だけのグローバル変数の少なさというのが以前から気になっていたので、行列を変数風にアクセス出来るようにしてみました。
内部的に若干変更点が多いのでバージョン上げておきます。(^^;

アドイン版 C.Basic ver.0.99v テスト版 その9.9v(行列を通常変数風に使える版)
http://pm.matrix.jp/CB/CBASIC099v.zip
・行列のアクセス方法として、変数に直に数字を添え字として記述することが出来るようにしてみました。
 Mat A[1,1]をA[1]と表記する形のさらなる省略形です。ただし添字は数字の0~9のみです。

 A[0,1]→A[0]→A0
 A[1,1]→A[0]→A1
 A[2,1]→A[0]→A2
 A[3,1]→A[0]→A3
 A[4,1]→A[0]→A4
 A[5,1]→A[0]→A5
 A[6,1]→A[0]→A6
 A[7,1]→A[0]→A7
 A[8,1]→A[0]→A8
 A[9,1]→A[0]→A9

(例)10→Dim A
 10→A1
 20→A2
A1+A2


※Readme.txtはバージョン表記と更新履歴のみ変更です。
※Manual.txtはバージョン表記と行列の項目で、行列の初期化でfx-5800P形式の加筆と行列へのアクセスを追加しました。

Re: アドイン版 C.Basic ver.0.99u テスト版 その9.9u(OS2.09調整版)

sentaro様

取り敢えず、バージョンアップと更新履歴を修正しました。
http://egadget2.web.fc2.com/CBasic/archives/programs/CBasic/CBasic_versions.html

なお、readme_J.txt でのVer 0.99t の説明で、[F3]で現れるコマンドリストでのグループ間ジャンプ機能の説明で間違いがありました。
> CTL : 基本的なコマンド
> GR : グラフィック系コマンド
> FN : 関数系コマンド
> STR : 文字列系コマンド
> EX : 拡張コマンド

最初の CTL は STD の間違いですね。次回、Readme_J.txt の修正をお願いします。


また、Ver 0.99u の説明で、
> ・テキストファイル(*.txt)からの読み込みでファイル名に".txt"が残るバグを修正しました。

これは、具体的にどの操作での問題だったのか、よく分かりませんので、教えて頂けませんか?

これと関連するかどうか分かりませんが、テキストファイルを fx-9860GII に転送した後、これを開いて改行と[DEL]でファイル変更した時に現れる Save File? ウィンドウで、".txt" が表示されません。テキストファイルとして保存できません。.txt を追記するとプログラムリストでファイル名に拡張子が追加されるだけで、.txt となりません。

テキストファイルのまま変更できないのは仕様ですか?そうならプログラムリストで拡張子が追加されるのは具合が悪そうです。


アドイン版 C.Basic ver.0.99u テスト版 その9.9u(OS2.09調整版)

管理人様、皆様、こんにちは!

fx-9860GIIの最新OSの2.09で若干遅かったので若干調整しました。
それでも、2.04よりは遅いので、C.BasicとしてはOSは2.04推奨です(^^;

後は細かなバグ潰しと[OPTN][VARS][PRGM]キーによるコマンド選択を若干改善?しました。


アドイン版 C.Basic ver.0.99u テスト版 その9.9u(細かなバグ潰し版)
http://pm.matrix.jp/CB/CBASIC099u.zip

・テキストファイル(*.txt)からの読み込みでファイル名に".txt"が残るバグを修正しました。

・[OPTN][VARS][PRGM]コマンド選択でのカーソル←→でグループ移動させるようにしました。

※Readme.txtはバージョン表記と更新履歴のみ変更です。
※Manual.txtはバージョン表記以外、本文は変更なしです。

Re: Re:Re: 年初からバグです(^^;

sentaro様

> グレゴリオ暦の最初の1582年10月15日が金曜日というのがまた間違えていたので修正&差し替えアップしました。(^^;

はい、動作確認できました。

ありがとうございます。

Re:Re: 年初からバグです(^^;

管理人様、こんにちは!

>念のためですが、
> 1) 閏年
> 2) 日数の引き算の結果
>も大丈夫ですか?

ツェラーの公式に基づいているのでたぶん大丈夫とは思うのですが…

と思ったら、グレゴリオ暦の最初の1582年10月15日が金曜日というのがまた間違えていたので修正&差し替えアップしました。(^^;

Re: 年初からバグです(^^;

sentaro様


> 年明けて1月1日が水曜日になってて、あれ?って思ったら、日付の曜日計算で1月2月の計算をミスしていました(^^;
> ってことで、年初より修正です。

はい、修正を確認しました(^^;

念のためですが、
 1) 閏年
 2) 日数の引き算の結果
も大丈夫ですか?

年初からバグです(^^;

管理人様、皆様、こんにちは!

年明けて1月1日が水曜日になってて、あれ?って思ったら、日付の曜日計算で1月2月の計算をミスしていました(^^;
ってことで、年初より修正です。

アドイン版 C.Basic ver.0.99t テスト版 その9.9t(日付時刻設定+バッファ増量版)
http://pm.matrix.jp/CB/CBASIC099t.zip
・DATEの曜日計算(ツェラーの公式)をミスしていたのを修正しました。

さらに若干速度調整版です。

管理人様、こんにちは!

ハイパースレッドもといスーパースカラのSH4A版で表示速度が1割程遅くなっていた0.99tですが、速度調整の結果、ほぼ元通りになったので更新です。

ついでにセットアップの時間表示をリアルタイム表示にしてみました。
セットアップ中に[MENU]で戻ると…バグってる感じになりますが、時計代わりになります(^^;


アドイン版 C.Basic ver.0.99t テスト版 その9.9t(日付時刻設定+バッファ増量版)差し替えです。
http://pm.matrix.jp/CB/CBASIC099t.zip
・セットアップでのDATE/TIME表示を逐次更新するようにしました。

Re:Re: Re:Re: 日時設定対応してみました。

管理人様、こんにちは!

>1つお願いがあります。
>readme_J.txt や Manual_J.txt で変更したところを教えて頂けると、英文への対応が楽になるので、お願いできませんか?

了解です(^^)

ver.0.99sからver.0.99tでの変更点は、readme_J.txtはセットアップのDATE/TIMEと更新履歴のみ、
Manual_J.txtについては、

最初の方で、
・使用可能メモリ
・内蔵エディタでの編集可能サイズ
・内蔵デバッグモード
の項目が増えています。

それから
EngOnコマンドを別に設けて3桁区切りの説明を独立させました。
後は、DATE/TIMEコマンドとセットアップの追加です。


ちょっと前のバージョンとの比較になると細かな変更点が全部把握出来なくなるので、こちらのソフトのお世話になっていたりします。(^^;

WinMerge
http://www.geocities.co.jp/SiliconValley-SanJose/8165/winmerge.html



>fx-9860GIIでも [SHIFT][4](CATALOG)でコマンドリストが出ますが、ここで種別ごとの表示機能がありますので、C.Basicに実装されているコマンド類だけでこれが出来るのは、とても便利だと思います。
>実際に使ってみると、その利便性はとても高いですね。Goof Job! です

ありがとうございます!
これはもっと早くに気が付くべきでした。


>そうですか...これは以前からある現象ですから、うまい具合に速くなったところで、ベータ版 Ver 1.0 としておくしか無さそうってことですね。

はい、今のところは速度に関する部分は変更無しなので他よりも速いバージョンが出来たとしてもそれはたまたまということになりますので、そうならないようにするのが以前から継続中の課題です。(^^;

とりあえず、1%ほど速度が戻ったので差し替えです(^^;

アドイン版 C.Basic ver.0.99t テスト版 その9.9t(日付時刻設定+バッファ増量版)
http://pm.matrix.jp/CB/CBASIC099t.zip

Re: Re:Re: 日時設定対応してみました。

sentaro様

1つお願いがあります。
readme_J.txt や Manual_J.txt で変更したところを教えて頂けると、英文への対応が楽になるので、お願いできませんか?


> ベンチマーク系?はすごく興味深いのでじっくり拝見させていただきました。(^^)
> フラッシュ系メモリのリードライト特性は個性ありすぎですけど、今時のUSBメモリはUSB3でないと本来の速度は出せなくなってますね。

そうですね。私としては、あいていればUSB3ポートを使うと良さそうということと、SDは編集が必要なデータを入れるには結構使えるということが、今回の成果です。

新しくメディアを買った時に興味本位でスピードテストをすることがありますが、今回のように、測定対象メディアを空にするとか、同じ環境条件のPCで一気に比較するなど、できるだけ条件を揃えてテストする機会はそんなに無いので、それなりに信憑性はあるかな?と...

なによりも、自分でやってみないと分からないものですよね!


> 現在の選択可能コマンド数がかなり多くなっているのでコマンドに辿り着く手間が少しでも短くなればと思っていたところに、TI-84シリーズのコマンド選択がそういう感じになっていたのでサクッと取り入れました。(^^;
> 新旧コマンドがごちゃごちゃ入り組んでいた従来のコマンド順よりも若干すっきり分けたつもりですが、何かお気づきの点がありましたらどんどんよろしくです(^^)

fx-9860GIIでも [SHIFT][4](CATALOG)でコマンドリストが出ますが、ここで種別ごとの表示機能がありますので、C.Basicに実装されているコマンド類だけでこれが出来るのは、とても便利だと思います。

実際に使ってみると、その利便性はとても高いですね。Goof Job! です


スピードベンチマークについて...

> SH3機ではほぼ同じか誤差2%以内に収まっています。

> 毎回結構な速度差が出てしまうのがSH4A機の場合なのですが、今回のバージョン0.99tではLocateで数値表示すると1割程度遅くなったりしてはいるのですが、ライフゲームは以前とほぼ同じで、円周率が3%ほど遅くなってしまっています(^^;
> これは文字列バッファサイズを広げたのが原因というよりは、機能追加でアドインのプログラムサイズが変わってライブラリ配置がずれた関係でハイパースレッドのSH4A機のみ発生する問題と考えています。
> SH4A機ではバージョンアップの度に遅くなったり速くなったりしているので最終バージョンでは何とか遅くならないようにしたいと思っています。(^^;

そうですか...これは以前からある現象ですから、うまい具合に速くなったところで、ベータ版 Ver 1.0 としておくしか無さそうってことですね。


今日の午後は会社の大掃除で、そのあと一杯やります。

Re:Re: 日時設定対応してみました。

管理人様、こんにちは!

>明日まで電卓が手元にない状態が続きます。
>なので、ブログの C.Basic トップページの最新版ダウンロードのリンクを変更しました。
>C.Basic Web の方はあとで対応予定。

毎度お手数おかけしています。


>個人と会社で使っているPCの大掃除とファイル整理をパソコン3台分と手持ちの全ての外付けストレージでやりだしたら、恐ろしく時間がかかってしまいました。で、メディアの素ピーとテストをチョコッと実験してみたら面白い結果が出たので、おもわず記事アップしてしまったという...そんな暇ないのですが、記録用の意味で...

ベンチマーク系?はすごく興味深いのでじっくり拝見させていただきました。(^^)
フラッシュ系メモリのリードライト特性は個性ありすぎですけど、今時のUSBメモリはUSB3でないと本来の速度は出せなくなってますね。


>おかげで、翻訳がお留守になってしまいました(^^;

マニュアルもちょこちょこ追加修正入ってたりしますので、毎度お手数おかけしまくりです。m(_ _)m


>なお、今回の更新点で、コマンド選択での種別表示は良さそうですね。あとで試したいと思いますが、これは便利になること間違いないと思います。

現在の選択可能コマンド数がかなり多くなっているのでコマンドに辿り着く手間が少しでも短くなればと思っていたところに、TI-84シリーズのコマンド選択がそういう感じになっていたのでサクッと取り入れました。(^^;
新旧コマンドがごちゃごちゃ入り組んでいた従来のコマンド順よりも若干すっきり分けたつもりですが、何かお気づきの点がありましたらどんどんよろしくです(^^)


>表示コマンドの文字列バッファ増強が、速度にどの程度影響あるのかがチェックどころだと思います。
>ライフゲームでベンチマークされました?

SH3機ではほぼ同じか誤差2%以内に収まっています。
毎回結構な速度差が出てしまうのがSH4A機の場合なのですが、今回のバージョン0.99tではLocateで数値表示すると1割程度遅くなったりしてはいるのですが、ライフゲームは以前とほぼ同じで、円周率が3%ほど遅くなってしまっています(^^;
これは文字列バッファサイズを広げたのが原因というよりは、機能追加でアドインのプログラムサイズが変わってライブラリ配置がずれた関係でハイパースレッドのSH4A機のみ発生する問題と考えています。
SH4A機ではバージョンアップの度に遅くなったり速くなったりしているので最終バージョンでは何とか遅くならないようにしたいと思っています。(^^;

Re: 日時設定対応してみました。

sentaro様

バージョンアップ、お疲れ様です。

明日まで電卓が手元にない状態が続きます。

なので、ブログの C.Basic トップページの最新版ダウンロードのリンクを変更しました。
C.Basic Web の方はあとで対応予定。

個人と会社で使っているPCの大掃除とファイル整理をパソコン3台分と手持ちの全ての外付けストレージでやりだしたら、恐ろしく時間がかかってしまいました。で、メディアの素ピーとテストをチョコッと実験してみたら面白い結果が出たので、おもわず記事アップしてしまったという...そんな暇ないのですが、記録用の意味で...

おかげで、翻訳がお留守になってしまいました(^^;


なお、今回の更新点で、コマンド選択での種別表示は良さそうですね。あとで試したいと思いますが、これは便利になること間違いないと思います。

表示コマンドの文字列バッファ増強が、速度にどの程度影響あるのかがチェックどころだと思います。
ライフゲームでベンチマークされました?


日時設定対応してみました。

管理人様、こんにちは!

純正CasioBasicではサポートされていない内蔵RTCですが、TI-84シリーズでは日付時刻がBASICでサポートされているみたいなので、
C.Basicでもコマンドで設定&読み出しを出来るようにしてみました。

それと、コマンド選択メニューをカーソル左右でショートカット移動できるようにしてみました。


アドイン版 C.Basic ver.0.99t テスト版 その9.9t(日付時刻設定+バッファ増量版)差し替えです(^^;
http://pm.matrix.jp/CB/CBASIC099t.zip

・内蔵RTCの日付時刻の設定及び読出コマンドとしてDATE,TIMEを追加しました。
 文字列型の変数形式となります。
(セットアップからも設定できます)
(例)"2016/12/26"→DATE
(例)DATE
 2016/12/26 MON
 と表示されます。曜日は自動計算されます。

(例)"23:59:59"→TIME
(例)TIME
 23:59:59
 と表示されます。

・エディタ等におけるコマンドメニュー入力においてカーソル←→でショートカット移動出来るようにしました。
 STD : 基本的なコマンド
 GR : グラフィック系コマンド
 FN : 関数系コマンド
 STR : 文字列系コマンド
 EX : 拡張コマンド

-- 2016.12.26 訂正
ちょいバグあったので修正差し替えしてます(^^;

アドイン版 C.Basic ver.0.99t テスト版 その9.9t(バッファ増量版)

管理人様、こんにちは!

文字列バッファや内部バッファを増量してみました。
機能的な変更ではないのですが、バッファサイズ変更による影響が出てくるかもしれないので一応バージョンを進めてみました(^^;


アドイン版 C.Basic ver.0.99t テスト版 その9.9t(バッファ増量版)
http://pm.matrix.jp/CB/CBASIC099t.zip
・文字列処理バッファサイズを128バイトから256バイトに倍増しました。
・テキストファイルへ変換する場合に確保されるバッファサイズを元ソースサイズの1.5倍から2倍に増やしました。
・編集可能な1プログラムのサイズが最大32KBまでだった制限を最大62KBまでになりました。
 (最大編集サイズは空きエリアに依存します。)

Re:Sprintf

管理人様、こんにちは!

>階乗計算の絡みの質問が、実はSprintfの話だったのですね!

はい、そういうことになりますね(^^;


>階乗計算つまり整数計算の精度は、計算結果の桁数で決まると理解しました。

いえ、内部は倍精度実数計算なので整数範囲でも精度は16桁しかありません(^^;
ので、全桁求めるとなると円周率計算のような多桁演算する必要があります。

CAS電卓のように整数は精度が無限桁という実装も面白いところなのですが、それはまた先の話に(^^;


>で、階乗計算をできるだけ整数として表示させようとして、
>Sprintf("%d!=%.0f",%A,#A!)
>このようなフォーマット指定子も良さそうです。と、いうかCのままなんですね!

はい、SprintfはCのsprintfです(^^;


>で、これをループで、Aをインクリメントしながらグルグル回してみると、文字列バッファは6行分+1文字分までで、これを超えるとString too long とエラー表示!
>A=82 の時に発生。
>ソース見てませんが(聞いた方が早くて確実なので)、文字列バッファーが128byte 確保されているんですね、スッキリしました。
>数字の多桁表示をさせる唯一の便利な関数であるSrintf( ということですが、EngOn3 設定時に、Locate のように、3桁区切りができたらさらに利便性が上がるのではないか?

数字の多桁表示出力といっても精度的には16桁までなので(^^;
文字列を含めた出力形式の利便性ということでのSprintfですね。

Sprintfで3桁区切りは、通常CasioBasicの数値出力形式を文字列化するためにStr(コマンドがあるので、それを使うと3桁区切りをSprintfで使えます。(^^)

EngOn3
Sprintf("%d!=%s",%A,Str(A!))

これで3桁区切りで出力されます。
もちろん通常形式もEng形式も可です。


>ところが、▲の代わりに
>While Getkey1=0
>WhileEnd
>とすれば、1画面である7行分をフルに使えるから、1画面分の文字列を一度に表示するには、148byte分のバッファが必要になります。

一画面分の文字列を使うという想定が無かったので…とりあえず128バイト制限になってたのですが(^^;
これは文字列バッファの最大制限値を増やせばいいだけなので、256バイトくらいにしておけばいいかもですね。


>Sprintf( の機能拡張は、厄介でしょうか?

拡張するとなると書式指定文字列をデコードする必要があるので、そこまでするとなるとSprintf処理ルーチンを専用に用意する形になるかもです(^^;



>関連しますが別の件です。
>実行時に整数モードになる特殊なコマンドが、いまのところ
>Locate, Text, Sprintf( の3つだけで、だからこれらのコマンド自体にはプレフィックス#の効果はなくて、引数を#で実数化させる必要性が結構ある、という理解でよいですね?

同じ表示系のDispとLocateYXも同様ですね。
で、SprintfだけはCのライブラリに値を渡すところで実数か整数かという指定が必須になってくるので別物になってしまうのですが、
Locate系のコマンドでは出力部分は実数扱いで処理されていて引数が実数か整数かの違いなので、管理人様がご理解されている形で問題はないと思います(^^)

Sprintf

sentaro様

階乗計算の絡みの質問が、実はSprintfの話だったのですね!

階乗計算つまり整数計算の精度は、計算結果の桁数で決まると理解しました。

で、階乗計算をできるだけ整数として表示させようとして、
Sprintf("%d!=%.0f",%A,#A!)
このようなフォーマット指定子も良さそうです。と、いうかCのままなんですね!

で、これをループで、Aをインクリメントしながらグルグル回してみると、文字列バッファは6行分+1文字分までで、これを超えるとString too long とエラー表示!
A=82 の時に発生。
ソース見てませんが(聞いた方が早くて確実なので)、文字列バッファーが128byte 確保されているんですね、スッキリしました。

数字の多桁表示をさせる唯一の便利な関数であるSrintf( ということですが、EngOn3 設定時に、Locate のように、3桁区切りができたらさらに利便性が上がるのではないか?

まぁでも、Cの関数をそのままもってきているシンプルさを汚したくない、とも思えますし、微妙なところです。

さらに欲張ると、上のサンプルプログラムでSprintf( に▲で一旦停止+表示とすれば、- Disp - の表示で1行使われるから、文字列バッファが128byteでも1画面分をカバーできます。

ところが、▲の代わりに
While Getkey1=0
WhileEnd
とすれば、1画面である7行分をフルに使えるから、1画面分の文字列を一度に表示するには、148byte分のバッファが必要になります。

Sprintf( の機能拡張は、厄介でしょうか?


関連しますが別の件です。
実行時に整数モードになる特殊なコマンドが、いまのところ
Locate, Text, Sprintf( の3つだけで、だからこれらのコマンド自体にはプレフィックス#の効果はなくて、引数を#で実数化させる必要性が結構ある、という理解でよいですね?

Re:階乗計算について

管理人様、こんにちは!

>A=13あたりまで良さそうなのでふが、その後は妙な値になったりします。

Sprintf(で整数指定なので、そこで整数に丸められているというか精度落ちしている気配ですね(^^;

実数出力するには、

Sprintf("%d %g",%A,#A!)

とする必要ありです。

階乗計算 補足

sentaro様

Norm設定を変えてみましたが、A=12までは正しく、13以降は計算値が違ってくるようです。

階乗計算について

sentaro様

ふと思い付いて、C.Basic で階乗計算をやってみました。

0->A
Lbl 0
Sprintf("%d %d",%A,%A!)
Isz A
Goto 0

A=13あたりまで良さそうなのでふが、その後は妙な値になったりします。

階乗計算は、ちなみに純正だと0から69までOK。

このあたりは、仕様上とうなっていますか?

Re:Re: Re: Re:Re: Re:整数モードでのLocate

管理人様、こんにちは!

>しかし、四則演算 123+0.456 とするとエラーになります。

プレフィックス#無しの場合は整数演算になるので、式評価全体が整数値を前提として扱われます。
つまり、少数や指数を含む実数表記形式は整数モード仕様外ということでそこでエラーになってしまうということですね。
なので、
123+0.456
は整数モードではエラーになり、
Log 123+A
は実数表記がなくかつLogは整数モードでも有効な関数ゆえに整数モードでもエラーにはならないということになります。


>細かいことのようですが、プレフィックス#のような演算子は珍しいと思うので、他言語を普通に使う方には、このあたりの整合性が気になるのではないかと(私もそうなので...)お付き合い頂ければうれしいです。

了解です(^^)

基本的にプレフィックス#は整数モードにおける強制的実数計算という演算子として機能するわけなのですが、
Locate等での#は実数表示をするという機能切り替えなので、ちょっとややこしくなりますね(^^;

例えば、
Locate 1, 2, ##123.456
という表記も出来るわけで、
最初の#は整数モードで実数表示するために一時的実数演算モードへの切り替えとして働き、2つ目の#は整数モードで実数計算をする演算子になります。。
ですので、2つ目の#は必要なく省略出来るという形になります。

Re: Re: Re:Re: Re:整数モードでのLocate

sentaro様


> >整数モードにおいて、プレフィックス#無しで実数計算になる式、関数の仕様ですが、
> >1) Locate、Sprintf、Text については、整数モードかつプレフィックス#無しの時、関数の計算結果が実数表現での表示を*例外的*に許容する。
> >2) 上記の例外のケース以外では、整数モードかつプレフィックス#無しの時、変数、式、関数の計算結果が整数でない場合は、エラーになる。
> >、ということで、設計仕様として正しいdしょうか?
>
>
> はい、その通りです。 
> 1)はプレフィックス#有りですね(^^;
> 通常の数式はプレフィックス#有りでも結果は整数になるので、例外仕様ということになります。
> 例外仕様は文法的にはスマートではないですが、利便性重視ということで(^^;

ええっと、上に書いたように、プレフィックスなしでの挙動についての質問なんです。

プレフィックスなしで Locate の第3引数にLog 123+A (10→A としてある)は整数モードで自動的に丸められて、エラーにならずに動作します。
しかし、四則演算 123+0.456 とするとエラーになります。

例えば以下のコードでこれが確認できました;

'#CBint
10→A
Locate 1,2,log 123+A◢
Locate 1,3,#log 123+A◢
'#CBdbl
Locate 1,4,log 123+A

このような挙動の違いについて、改めて理解を整理したいというのが趣旨です。

細かいことのようですが、プレフィックス#のような演算子は珍しいと思うので、他言語を普通に使う方には、このあたりの整合性が気になるのではないかと(私もそうなので...)お付き合い頂ければうれしいです。


> あ、Dispコマンドも同じく#で実数表示になりますので修正しておきました。

ありがとうございます。あとで確認致します。


Re:Re: Re:整数モードでのLocate

管理人様、

>整数モードにおいて、プレフィックス#無しで実数計算になる式、関数の仕様ですが、
>1) Locate、Sprintf、Text については、整数モードかつプレフィックス#無しの時、関数の計算結果が実数表現での表示を*例外的*に許容する。
>2) 上記の例外のケース以外では、整数モードかつプレフィックス#無しの時、変数、式、関数の計算結果が整数でない場合は、エラーになる。
>、ということで、設計仕様として正しいdしょうか?


はい、その通りです。 
1)はプレフィックス#有りですね(^^;
通常の数式はプレフィックス#有りでも結果は整数になるので、例外仕様ということになります。
例外仕様は文法的にはスマートではないですが、利便性重視ということで(^^;

あ、Dispコマンドも同じく#で実数表示になりますので修正しておきました。

Re: Re:整数モードでのLocate

sentaro様

修正説明文を拝見しました。

改めて、仕様の確認です。

整数モードにおいて、プレフィックス#無しで実数計算になる式、関数の仕様ですが、

1) Locate、Sprintf、Text については、整数モードかつプレフィックス#無しの時、関数の計算結果が実数表現での表示を*例外的*に許容する。

2) 上記の例外のケース以外では、整数モードかつプレフィックス#無しの時、変数、式、関数の計算結果が整数でない場合は、エラーになる。

、ということで、設計仕様として正しいdしょうか?

よろしくお願い致します。


Re:整数モードでのLocate

管理人様、こんにちは!

>整数モードで Locate 1,1,123+0.456 は正常動作して、123 と出力するように読めます。実際はエラーになります。
>これは、説明のバグと思って良いですね。

はい、
整数モードでは実数表記はエラーになってしまうので、
これは完全にマニュアルのバグです(^^;

ってことで、例をLogに変更して修正しました。

>あと、この例は、= DISP - の影響で何も表示されないので、
>Locate 1,2,#123+0.456
>が良いと思います。

試す場合には◢を付ける場合も多そうですので、ここも管理人様の仰せの通り修正しておきました。

訂正

sentaro様


> あと、この例は、= DISP - の影響で何も表示されないので、
>
> Locate 1,2,#123+0.456
>
> が良いと思います。

これは、私の手元のサンプルプログラムで、Locateの行末に◢をつけていたためです。
なのて、撤回させてください。



整数モードでのLocate

sentaro様

整数モードでの Locate の動作について、確認です。


--------------
Locate
-------
・Locateコマンドの表示で反転表示が可能です。
 コマンドの最後に[,R]で反転表示となります。
(例)Locate 1,2,"Test",R
  "Test"がグラフィック座標(1,2)に反転表示で表示されます。

・Sprintf、Locate、Textでの#プレフィックスは実数式評価としました。
 整数モードでは常に整数値しか得られないので、#プレフィックスを付けた式では実数式評価で実数値が返ります。
 整数モードでしか意味は無いのですが整数モードにおけるSprintfやLocate、Textコマンドで実数値を扱うことが出来ます。
(例)Locate 1,1,123+0.456
 整数モードでは整数値に丸められて123となってしまうのですが、
(例)Locate 1,1,#123+0.456
 #プレフィックスを付けると実数で123.456と表示されます。
 式評価は実数式として行われますが、変数は整数変数のまま扱われます。%を付ける必要はありません。
================================

この後半部分、#プレフィックスについて、確認があります。

この説明ですと

整数モードで Locate 1,1,123+0.456 は正常動作して、123 と出力するように読めます。実際はエラーになります。

これは、説明のバグと思って良いですね。


あと、この例は、= DISP - の影響で何も表示されないので、

Locate 1,2,#123+0.456

が良いと思います。

ご検討ください。


Prog, Gosub、マニュアル修正

sentaro様

Prog、Gosub, マニュアル修正ついて確認しました。

ありがとうございます。

マニュアル若干修正(^^;

管理人様、こんにちは!

ver.0.99sでGosubの引数修正した折にProgのローカル変数がエンバグしていたので差し替え修正しました(^^;

あと、マニュアルのVRAMのところの記述を若干修正しました。

Re: 引数ありGosub修正版

sentaro様


> アドイン版 C.Basic ver.0.99s テスト版 その9.9s(中間コード変更+α+修正版)
> http://pm.matrix.jp/CB/CBASIC099r.zip
> ・引数ありのGosubが動作しなかったのを修正しました。
>
> マニュアルにGosubの簡単なサンプルプログラムを加えました。


このリンクですが、Ver0.99r になっています。
rをsに書き換えて、無事 0.99s をダウンロードし、中身は最新版だと確認しました。

引数ありGosub修正版

管理人様、こんにちは!

使い道はあまりないかもですが…(^^;
GosubもProg同様に引数ありで使えるようになりました。
Gosubでも引数を使うにはLocalコマンドが必要ですが、ローカル変数になった変数はそのプログラム実行時はずっとローカル変数のままになります。


アドイン版 C.Basic ver.0.99s テスト版 その9.9s(中間コード変更+α+修正版)
http://pm.matrix.jp/CB/CBASIC099s.zip
・引数ありのGosubが動作しなかったのを修正しました。

マニュアルにGosubの簡単なサンプルプログラムを加えました。


-- 2016.12.17 編集
0.99r→0.99sリンク修正しました(^^;

Re:Gosubについて

管理人様、こんにちは!

>==========
>(例)Gosub A,123,456
> 引数もProgコマンド同様に使えますが、同じプログラム内なので大域変数と同じ扱いです。
>==========

これは…
引数ありだと期待i通りの動作にならない模様です(^^;

ってことで、マニュアルのバグですね…、

というわけにもいかないので、ちょっと修正してみます。

基本的にはローカル変数扱いにならないだけで、引数は使えるつもりだったので、
そのように修正してみます。

Gosubについて

sentaro様


Gosub の使い方が分からなくなりました。


==========
(例)Gosub A,123,456
 引数もProgコマンド同様に使えますが、同じプログラム内なので大域変数と同じ扱いです。
==========

具体的に、どのようなコードになるのか混乱中です...(^^;

お助けを...

Re:プレフィックス#について、さらに...

管理人様、こんにちは!

>整数モードで、
>Locate 1,1,#123+0.456
>を実行すると、123 と表示され、上記のように 123.456 とはなりません。

ver.0.99rでは問題ないのでver.0.99sでエンバグしました(^^;



>一方、Sprintf については、
>'#CBdbl
>1234->A
>45.678->B
>'#CBint
>Sprintf("A=%4d B=%3.2f",%A,#B)
>を実行すると、
>A=1234 B=45.00
>と表示され、ここでも B=45.678 とはなりません。

これは…思いっきりバグですね(^^;


ということで、サクッと修正版です。

アドイン版 C.Basic ver.0.99s テスト版 その9.9s(中間コード変更+α+修正版)
http://pm.matrix.jp/CB/CBASIC099s.zip
・整数モードでSprintfの実数表示が出来なかったバグを修正しました。
(例)Sprintf("A=%3.2f",#12.345)

・Sprintf、Locate、Textでの#プレフィックスの実数式評価で、
 整数モードでも変数は整数変数のままになります。
(変更前)
 式評価は実数で行われるために整数変数には%指定を付ける必要があります。
(変更後)
 式評価は実数式として行われますが、変数は整数変数のまま扱われます。%を付ける必要はありません。

Re: #Frac 100x1.23 の件, 再び

管理人様、こんにちは!

Manual_J.txtでの例は
#Frac (1.23×100)
と思ってしまった勘違い間違いでした(^^;

#を使う想定としては管理人様のおっしゃるとおり、三角関数や対数などの関数計算を整数モードでも行いたいということなので、例は三角関数か対数にした方がよさそうだったのですが、少数部分の結果がすぐ分かる関数としてFracを使ったと思います(^^;
#における数式解釈は管理人様のおっしゃるとおりです。

Manual_J.txtでの例では二項演算になっているので一項加えてみると、

実数モードでは
#100×Frac 1.23 +5 → 28
100×#Frac 1.23 +5 → 523

整数モードでは
#100×Frac 1.23 +5 → 28
100×#Frac 1.23 +5 → 500

となって違いが出ます。


つまり、式評価では
#(100×Frac 1.23 +5)
100×#(Frac 1.23 +5)

こういう形になるわけで、式の頭に#がある場合は特に問題ないとしても、途中に#がある場合はちょっと分かりにくい数式になってしまいます(^^;

一応、#を使う最初の想定は式の頭に記述して一つの式まるごと全部を実数計算処理するということだったので、途中から#を使う事もできるというオプション仕様ですね(^^;


>最後に、説明文では、# の有効範囲は行末まで、と追記すると良いように思いますが、如何でしょうか?

はい、行末というか区切り記号までということで、式の終了までということで、有効範囲を記述しておきます。




>F7 で始まるのが正しいのですよね?

はい、F7で始まるのが正解です。


>コマンドリファレンスの英訳の時に、結構細かく確認することになると思いますので、良い機会になりそうです。
>場合によっては、公開を延長した方が良いかもですね!

現状仕様でもそれなりに多機能化してしまっているので、追加機能の部分でまだ未見の隠れたバグがありそうな気がします(^^;
もし、1月17日時点で重大なバグが見つかって未解決のままだったら、延長ということも有りえますね(^^;
でも、管理人様のバグ出しがCasioBasic探索以上にとっても強力なので、おそらくだいじょうぶかと思います(^^)


>ところで、現行バージョンはアルファバージョンですよね。
>Ver 1.00 は、ベータバージョンですか?
http://egadget2.web.fc2.com/CBasic/archives/programs/CBasic/CBasic_versions.html

はい、そのような形になると思います。


>F-Line の直線だけを消したいがどうやって良いのか分からないという質問に、妙な回答が付いたので、思わずコメントして、C.Basic の宣伝をしてしまいました。
http://community.casiocalc.org/topic/7622-can-i-clear-only-lines-in-a-program-if-not-is-there-an-alternative/#entry60862

恐縮です。
純正で対処が難しいプログラムには、ぜひC.Basicをということですね(^^)

プレフィックス#について、さらに...

sentaro様

プレフィックス#については、Frac や Int についてコメントしていますが、さらに Locate について確認させてください。

Manual_J.txt の下記の記載についてですが...

==========
・Sprintf、Locate、Textでの#プレフィックスは実数式評価としました。
 整数モードでは常に整数値しか得られないので、#プレフィックスを付けた式では実数式評価で実数値が返ります。
 整数モードでしか意味は無いのですが整数モードにおけるSprintfやLocate、Textコマンドで実数値を扱うことが出来ます。
(例)Locate 1,1,123+0.456
 整数モードでは整数値に丸められて123となってしまうのですが、
(例)Locate 1,1,#123+0.456
 #プレフィックスを付けると実数で123.456と表示されます。
 式評価は実数で行われるために整数変数には%指定を付ける必要があります。
==========

整数モードで、

Locate 1,1,#123+0.456

を実行すると、123 と表示され、上記のように 123.456 とはなりません。

Text 1,1,#123+0.456

も同様に 123 と表示されてしまいます。

一方、Sprintf については、

'#CBdbl
1234->A
45.678->B
'#CBint
Sprintf("A=%4d B=%3.2f",%A,#B)

を実行すると、

A=1234 B=45.00

と表示され、ここでも B=45.678 とはなりません。

プレフィックス # まわりの使い方で、少々分からなくなっています。





Re: Re: Re:Re: Re:Re: Re:その他、セットアップ画面の項目について

sentaro様

F-Line の直線だけを消したいがどうやって良いのか分からないという質問に、妙な回答が付いたので、思わずコメントして、C.Basic の宣伝をしてしまいました。

http://community.casiocalc.org/topic/7622-can-i-clear-only-lines-in-a-program-if-not-is-there-an-alternative/#entry60862

Re: Re:Re: Re:Re: Re:その他、セットアップ画面の項目について

sentaro様

お疲れ様です。

> >この # の機能ですが、ひょっとして#以降行末までの式を評価して、整数モードで、この式だけは実数で計算して、計算結果の値を整数に丸める...という動作をする...これで正しいでしょうか?
>
> はい、そういう仕様になっています。
> 左括弧(と同様で強制的に実数評価になるという仕様ですので式の終わりまでが有効になります。

この# については、、別コメント(2つ)で改めて質問しています。



中間コード修正については、

> 7FがF7になっていたのはREADME_J.TXTに記述する時に間違えました(^^;

F7 で始まるのが正しいのですよね?



> 非互換になるソースファイルの修正方法も分かりやすくてよいですね(^^)

そう感じてもらえて、良かったです。



> あっという間にあとひと月ですね。
> 現在のバージョンで致命的なバグは無いことを祈りますが、細かなバグはちらほら出てくるのでちょっと焦ります(^^;

コマンドリファレンスの英訳の時に、結構細かく確認することになると思いますので、良い機会になりそうです。
場合によっては、公開を延長した方が良いかもですね!



> アドイン版 C.Basic ver.0.99s テスト版 その9.9s(中間コード変更+α+修正版)
> http://pm.matrix.jp/CB/CBASIC099s.zip
> ・エディタ編集後のファイル名入力時に隠れる画面が編集ファイルと無関係な画面になる不具合を修正しました。

この現象は確認して、修正も確認しました、C.Basic ダウンロードページにある更新履歴で、追記しました。
http://egadget2.web.fc2.com/CBasic/archives/programs/CBasic/CBasic_versions.html



UCF で、作成中の Web を新たに紹介しておきました。
http://community.casiocalc.org/topic/7620-inside-casio-basic-is-now-to-be-prepared/#entry60861


ところで、現行バージョンはアルファバージョンですよね。
Ver 1.00 は、ベータバージョンですか?
http://egadget2.web.fc2.com/CBasic/archives/programs/CBasic/CBasic_versions.html

Re: #Frac 100x1.23 の件, 再び

sentaro様

# について、追記です。

もし、現在の説明文を最大に活かすには、以下のような説明は、如何でしょうか?
(既に、英文マニュアルに記載している内容です。)

 '#CBdbl
 100×Frac 1.23
 '#CBint
 100×#Frac 1.23

In double-precision running mode Flac 1.23 returns 0.23, but #Frac 1.23 in integer running mode returns 0,
since 1.23 is rounded to 0. Then 100xFrac 1.23 gives 23, and 100x#Frac 1.23 gives 0.

実数モードで Flac 1.23 は 0.23 を返すが、整数モードでの #Frac 1.23 は 0.23 が丸められて 0 を返す。そこで、100XFrac 1.23 は 23 になり、100x#Frac 1.23 は 0 になる。


但し、この説明には、# の有効範囲の記載がまだありません。


如何でしょうか?

#Frac 100x1.23 の件, 再び

sentaro様

Manual_J.txt で修正された、下記の部分で、再び混乱しています。

=================
整数モードで実数を扱いたい場合は、式の前に#を付けると#以降の式を実数モードで計算します。ただし式の結果は整数値に丸められます。
(例)#Frac 1.23×100
 通常整数モードではFlac 1.23は整数値範囲に丸められて結果になって1になってしまいますが、#を付けると実数計算されて123になります。
  この例では式全体が実数計算を行い、結果を整数で返します。

(例)100×#Frac 1.23
 この例ではFrac 1.23のみ実数計算を行い結果を整数で返します。
=================

> 通常整数モードではFlac 1.23は整数値範囲に丸められて結果になって1になってしまいますが、

この文脈ですと、丸められて結果が1になるのは、Frac でなくて Int ではないでしょうか?

では、Int だとすると、

整数モードで

'#CBint
#Int 1.23x100

を実行すると、結果は説明に書いてあるような 123 でなくて、100 になります。
演算優先度を考えると、

Int 1.23x100

は、

Int (1.23x100)

ではなくて、

(Int 1.23) x 100

ですよね?ならば、結果が 100 になるのは正しく、(Frac でなくて Int とすると)説明がおかしいことになります。


では、説明通りに Frac を使った説明だとすると、

#Frac 1.23x100

は、23 になります。説明にあるように 123 にはなりません。

では、100x#Frac 1.23 は、23 になり、上の例との違いを示せていません。

#Frac 1.23x100 と 100x#Frac 1.23 は演算優先度を考えると、同じになっていると思います。


#の後の式を実数計算するという話が、演算優先度の話になってしまっていて、# の良さを示せていないように思います。

私の頭では混乱しています。


改めて、# の効用を考えると、整数モードにしている時に実数演算する関数を使うとエラーになるが、関数の値を強制的に整数に丸める(内部的に Int と同じ?)ことでエラーを回避する点にあるように思えます。

この頭で、例を考えると、

Deg
'#CBint
#cos 60

は、0 になり、一方

Deg
'#BDdbl
cos 60

は、0.5 になります。つまり 整数モードで cos が使えることに # の良さがある...このような理解です。

最後に、説明文では、# の有効範囲は行末まで、と追記すると良いように思いますが、如何でしょうか?



ver.0.99s差し替えです(^^;

Dispコマンド仕様が完全にバグってたので修正&差し替えです。

仕様では
Disp A
のはずが、
A Disp
になってました(^^;

Re:Re: Re:Re: Re:その他、セットアップ画面の項目について

管理人様、こんにちは!

>この # の機能ですが、ひょっとして#以降行末までの式を評価して、整数モードで、この式だけは実数で計算して、計算結果の値を整数に丸める...という動作をする...これで正しいでしょうか?

はい、そういう仕様になっています。
左括弧(と同様で強制的に実数評価になるという仕様ですので式の終わりまでが有効になります。


>もし正しければ、説明にも#以降の式を評価する、と追記しては如何でしょうか?

了解です(^^)



> ・RefreshCtrl コマンドの中間コードが誤っていたので修正しました。
> RefreshCtrl = DotG : 0xF7F9 -> 0xF7F8
>
> ・純正コマンド"Dot" "DotG"と中間コードが重なっていた"DotTrim(" および"DotGet("コマンドの中間コードを変更しました。
> DotGet( = DotG : 0xF73F -> 0xF73E
> DotTrim( = Dot : 0xF74F -> 0xF73D
> RefreshCtrl = DotG : 0xF7F9 -> 0xF7F8

>このコードの頭が、7F になっていたのを、F7 に修正された、ということですね!

DotGet( と DotTrim( はすでに存在しているコマンドと同じ中間コードを使用していたので重複しないように変更して、
RefreshCtrlはF9が使ってはいけないコードだったので修正しました。

7FがF7になっていたのはREADME_J.TXTに記述する時に間違えました(^^;



>・英語版 C.Basic Webマニュアル
http://egadget2.web.fc2.com/CBasic/Interpreter/CBasic_interpreter.html
>・Ver0.99r から 0.99s へのバージョンアップ時の注意
>英語版: http://egadget2.web.fc2.com/CBasic/Interpreter/Note/AppNote.html
>日本語版: http://egadget2.web.fc2.com/CBasic/Interpreter/Note/AppNote_j.html
>この「注意」は重要なので、日本語版も一緒に作っておきました。
>そろそろ、Ver0.99s が安定してきた感じなので、ブログで、最新版としてダウンロードリンクを作って、同時にこの注意へのリンクも貼る予定です。

ありがとうございます!
非互換になるソースファイルの修正方法も分かりやすくてよいですね(^^)


>以下で、英文マニュアル作成のアナウンスをしました。
http://egadget.blog.fc2.com/blog-entry-569.html

あっという間にあとひと月ですね。
現在のバージョンで致命的なバグは無いことを祈りますが、細かなバグはちらほら出てくるのでちょっと焦ります(^^;



アドイン版 C.Basic ver.0.99s テスト版 その9.9s(中間コード変更+α+修正版)
http://pm.matrix.jp/CB/CBASIC099s.zip
・エディタ編集後のファイル名入力時に隠れる画面が編集ファイルと無関係な画面になる不具合を修正しました。


この不具合を再現するには、まず任意のプログラムを実行途中で中断させます。
そして別のファイルを編集、保存する時のファイル名入力の段階で下に隠れる画面が前のプログラムの中断時のテキスト画面になります(^^;

Re: Re:Re: Re:その他、セットアップ画面の項目について

sentaro様

こんばんは



> 中間コードの修正抜けがありました(^^;
>
>
> >中間コードの件ですが、DotGet も大丈夫でしょうか?
>
> はい、更新履歴のコード値を間違えてしまってたのですが(^^;
> 動作はたぶん、だいじょうぶかと思います。

RefreshCtrl の正常動作を確認しました。




> >'#CBdbl
> >Frac 100x1.23◢
> >'#CBint
> >#Frac 100x1.23
> >は正常動作しますが、
>
> >'#CBdbl
> >#Frac 100x1.23
> >はエラーを返します。これは想定動作でしょうか?
> >このエラーのために、実は混乱しているんです。
>
> 実数モードでのプレフィックス#の式評価が出来てなかったので修正しました。

この # の機能ですが、ひょっとして#以降行末までの式を評価して、整数モードで、この式だけは実数で計算して、計算結果の値を整数に丸める...という動作をする...これで正しいでしょうか?

もし正しければ、説明にも#以降の式を評価する、と追記しては如何でしょうか?


#Frac 1.23x100

とした場合、Frac 1.23 のみを評価するものだと思っていたので、ワケワカメでした。

なお、

'#CBdbl
#Frac 100x1.23

が正常動作するように、無事修正されていることを確認しました。




> >ところで、
> >Disp "Right"
> >とすると、右端でなくて左端に表示されました。
> >数値の表示は、引数に変数や即値を指定しても右端に表示されます。
> >想定動作でしょうか?
>
> それは、想定通りなのですが、コマンドの説明を間違えていました(^^;
> ▲一時停止コマンドと同様の表示形式で、一時停止しないコマンドということになります。


説明の記述と、記述通りの動作を確認しました。



> ・RefreshCtrl コマンドの中間コードが誤っていたので修正しました。
> RefreshCtrl = DotG : 0xF7F9 -> 0xF7F8
>
> ・純正コマンド"Dot" "DotG"と中間コードが重なっていた"DotTrim(" および"DotGet("コマンドの中間コードを変更しました。
> DotGet( = DotG : 0xF73F -> 0xF73E
> DotTrim( = Dot : 0xF74F -> 0xF73D
> RefreshCtrl = DotG : 0xF7F9 -> 0xF7F8

このコードの頭が、7F になっていたのを、F7 に修正された、ということですね!


お疲れ様です。

・英語版 C.Basic Webマニュアル
http://egadget2.web.fc2.com/CBasic/Interpreter/CBasic_interpreter.html

・Ver0.99r から 0.99s へのバージョンアップ時の注意
英語版: http://egadget2.web.fc2.com/CBasic/Interpreter/Note/AppNote.html
日本語版: http://egadget2.web.fc2.com/CBasic/Interpreter/Note/AppNote_j.html

この「注意」は重要なので、日本語版も一緒に作っておきました。
そろそろ、Ver0.99s が安定してきた感じなので、ブログで、最新版としてダウンロードリンクを作って、同時にこの注意へのリンクも貼る予定です。


以下で、英文マニュアル作成のアナウンスをしました。
http://egadget.blog.fc2.com/blog-entry-569.html



Re:Re: Re:その他、セットアップ画面の項目について

管理人様、こんにちは!

>更新された Ver0.99s をインストールすると、RefreshCtrl のところでエラーになります。但しエディット画面での編集での問題は解消されています。
>一方、同じソースを Ver 0.99r で実行すれば問題なく動作します。このバージョンでは RefreshCtrl の編集で問題があったわけです。
>ご確認頂けませんか?

中間コードの修正抜けがありました(^^;


>中間コードの件ですが、DotGet も大丈夫でしょうか?

はい、更新履歴のコード値を間違えてしまってたのですが(^^;
動作はたぶん、だいじょうぶかと思います。


>'#CBdbl
>Frac 100x1.23◢
>'#CBint
>#Frac 100x1.23
>は正常動作しますが、

>'#CBdbl
>#Frac 100x1.23
>はエラーを返します。これは想定動作でしょうか?
>このエラーのために、実は混乱しているんです。

実数モードでのプレフィックス#の式評価が出来てなかったので修正しました。



>追加した Disp コマンドの説明は、まだ追記されていませんよね?

あ、まだ未記述でした(^^;
ので、追加しておきました。


>ところで、
>Disp "Right"
>とすると、右端でなくて左端に表示されました。
>数値の表示は、引数に変数や即値を指定しても右端に表示されます。
>想定動作でしょうか?

それは、想定通りなのですが、コマンドの説明を間違えていました(^^;
▲一時停止コマンドと同様の表示形式で、一時停止しないコマンドということになります。


以上の点を修正した差し替え版です。

アドイン版 C.Basic ver.0.99s テスト版 その9.9s(中間コード変更+α版)
http://pm.matrix.jp/CB/CBASIC099s.zip
・実数モードで#プレフィックスを付けた場合に動作しなかったバグを修正しました。
(例)#123.56+100

・Dispコマンドを追加しました。
(例)Disp A
 ▲一時停止コマンドと同様の数値&文字列表示コマンドですが、表示毎に改行され一時停止すること無くプログラムは続行されます。

・RefreshCtrl コマンドの中間コードが誤っていたので修正しました。
RefreshCtrl = DotG : 0xF7F9 -> 0xF7F8

・純正コマンド"Dot" "DotG"と中間コードが重なっていた"DotTrim(" および"DotGet("コマンドの中間コードを変更しました。
DotGet( = DotG : 0xF73F -> 0xF73E
DotTrim( = Dot : 0xF74F -> 0xF73D
RefreshCtrl = DotG : 0xF7F9 -> 0xF7F8

Disp コマンド

sentaro様

追加した Disp コマンドの説明は、まだ追記されていませんよね?

ところで、

Disp "Right"

とすると、右端でなくて左端に表示されました。


数値の表示は、引数に変数や即値を指定しても右端に表示されます。

想定動作でしょうか?

追伸: #Frac 100x1.23 について

sentaro様

'#CBdbl
Frac 100x1.23◢
'#CBint
#Frac 100x1.23

は正常動作しますが、

'#CBdbl
#Frac 100x1.23

はエラーを返します。これは想定動作でしょうか?

このエラーのために、実は混乱しているんです。

#Frac 100x1.23 の件ほか...

sentaro様

sentaro様が例に挙げられている

#Frac 100x1.23

ですが、例えば次のコードで確認すると、

'#CBdbl
Frac 100x1.23◢
'#CBint
#Frac 100x1.23

いずれの出力も 0 になります。

式につけるプレフィックス#の効果を比較して示すには、

'#CBdbl
100xFrac 1.23◢
'#CBint
100x#Frac 1.23

とすれば良さそうです。

1つめの出力は、23 となり、2つめは Fracの値が丸められて 0 になるので出力が 0 になります。

英文では、この4行コードを(例)として示してみました。


> #CBDBL
> #CBdbl
> でもOkなのでその記述にしました。
> 実はここは最初の英文字三文字(CBD、CBd)しかチェックしていません。(これは内緒です(^^;)

了解です(内緒の部分も含めて...)


> なんかすごい本格的で海外サイトみたいになってきてすごいです(^^)

まだ格好だけです(^^;

基本コンセプトは「シンプルデザイン」...というか手抜きしているだけだったりします。


> あ、ちょっと気になった点ですが、e-mailはメアド収集ロボットに読み取られると広告いっぱい来てしまってまずいかもなので、偽装しておいた方がいいかもしれませんね(^^;

はい、@を (at) に置き換えておきました。被害が発生する前にさっさとやりました。



> >「テキストファイルを読み込み&再保存する」とは具体的にどのような操作を行えば良いのでしょうか?
>
> 電卓上にC.BasicのVer.0.99rとVer.0.99sを両方置いておいて、
> Ver.0.99rにてテキストファイル化します。
> そしてVer.0.99sを起動してそのテキストファイルを読み込み再保存します。
> 再保存するには何か編集作業をして修正保存する必要があります。
> (再保存しなくてもテキストファイルのままで実行可能なのでテキストファイルのままで特に再保存する必要はないかもしれません。)

異なるバージョンの C.Basic を複数同時に置くには、片一方の g1a ファイルをリネームしました。

既に報告してあり RefreshCtrl の異常については、ご検討お願い致します。


> 全部がローカル化していた時の名残ですね(^^;
> 修正しておきました。

確認致しました。


中間コードの件ですが、DotGet も大丈夫でしょうか?

Re: Re:その他、セットアップ画面の項目について

sentaro様


更新された Ver0.99s をインストールすると、RefreshCtrl のところでエラーになります。但しエディット画面での編集での問題は解消されています。

一方、同じソースを Ver 0.99r で実行すれば問題なく動作します。このバージョンでは RefreshCtrl の編集で問題があったわけです。

ご確認頂けませんか?


あと、メールアドレスを競うしておきました。

Re:その他、セットアップ画面の項目について

管理人様の細かなチェックに助けられています。ありがとうございます!


>Matrix base で 0 を指定するときの説明ですが、液晶の左端だけでなく上端のピクセルが有効になって、物理座標系(デバイス座標系)で、左上のピクセルが有効になって、左表 (0, 0) として使える...ということですよね?
>なので、こんな感じの英文にしてしました。
>もしこの理解が正しければ、日本語版でも液晶上端が使えるようになることにも触れては如何でしょうか?

はい、左端だけじゃなく上端も有効でした(^^;


>Execute mode の関連コマンドですが、'#CBdouble や '#CBDOUBLE も有効ですよね?
>これを敢えて説明されないのには、何か思うところがあるのでしょうか?

あ、完全に抜け落ちていました(^^;

#CBDBL
#CBdbl
でもOkなのでその記述にしました。
実はここは最初の英文字三文字(CBD、CBd)しかチェックしていません。(これは内緒です(^^;)




>取りあえず、リンクは正常に復帰したみたいです。
http://egadget2.web.fc2.com/CBasic/Interpreter/CBasic_interpreter.html
>これが、C.Basic のトップページで、基本的なリンク構造ができて、順に英訳作業を進めるだけになりました。

なんかすごい本格的で海外サイトみたいになってきてすごいです(^^)

あ、ちょっと気になった点ですが、e-mailはメアド収集ロボットに読み取られると広告いっぱい来てしまってまずいかもなので、偽装しておいた方がいいかもしれませんね(^^;



>「テキストファイルを読み込み&再保存する」とは具体的にどのような操作を行えば良いのでしょうか?

電卓上にC.BasicのVer.0.99rとVer.0.99sを両方置いておいて、
Ver.0.99rにてテキストファイル化します。
そしてVer.0.99sを起動してそのテキストファイルを読み込み再保存します。
再保存するには何か編集作業をして修正保存する必要があります。
(再保存しなくてもテキストファイルのままで実行可能なのでテキストファイルのままで特に再保存する必要はないかもしれません。)


>また、RefreshCtrl ですが、Ver 0.99r で一旦書き込むと、このコマンドが正常に削除できません。
>これは、Ver 0.99s で解消しているのでしょうか?

これは使ってはいけない中間コードになってました。ありがとうございます!
Ver.0.99sでの修正となります(^^;


>また、Manual_J.txt の Local コマンドの説明で、小文字変数はデフォルトでグローバル変数の筈ですが、ローカル変数と記載されています。修正が必要なようです。

全部がローカル化していた時の名残ですね(^^;
修正しておきました。



アドイン版 C.Basic ver.0.99s テスト版 その9.9s(中間コード変更+α版)差し替え版
http://pm.matrix.jp/CB/CBASIC099s.zip
・Dispコマンドを追加しました。
(例)Disp A
 Locateと同様の数値&文字列表示コマンドですが、Locateと違い右端固定表示で表示毎に改行されます。
 
・RefreshCtrl コマンドの中間コードが誤っていたので修正しました。
RefreshCtrl = DotG : 0xF7F9 -> 0xF7F8

Re:Setup での Skip Up/Down の設定について

管理人様、こんにちは!

>Ver 0.99r でこれを実行すると
>実数モードでは、Frac 1.23x100 がエラーになり、
>整数モードでは、#Frac 1.23x100 がエラーになってしまいます。
>なんだか予期しない動作のような気がしますが、ご確認頂けますか?


Ver 0.99rでプログラム内で実行すると動作に問題ないような感じなのですが、エラーの起きるサンプルリストお願いできますでしょうか?
(変数画面では整数モードでも実数モードで式を評価→整数化するのでどちらも同等になってます。)


>セットアップ画面の説明ですが、README_J.txt に記載した方が、内容の整合性(C.Basic の操作方法)が合うように思うので、ぜひこちらにも記載をお願いします。

了解しました。
ってことで、README_J.txt を追加修正、Ver0.99s差し替えしました。


>で、Setup画面での Skip Up/Down の設定は、[SHIFT][Up] や [SHIFT][Down] を押した時のページスキップで、何ページ飛ばすかの設定ですよね?
>Ver 0.99r ではこの設定が動作に反映されないようです。ご確認ください。

んと、Skip Up/Down の設定はファンクションキーの
-[F1] (JUMP) ジャンプサブメニューを表示します。
  [F5] (Skip↑) (セットアップで設定された)ページ数スキップアップします。
  [F6] (Skip↓) (セットアップで設定された)ページ数スキップダウンします。
ここだけで有効になっています。

[SHIFT][Up]と[SHIFT][Down] は1ページ固定となっています。

なのですが、同じにした方がよいでしょうか?


>Ver0.99s はまだ試していません(^^;

今のところはVer0.99rと内部コードの差があるだけで仕様上は全く同じなので動作検証はVer0.99rでも大丈夫です(^^;

Re: Re:首を絞める

sentaro様

> ver.0.99rで一旦テキストファイル化した後、ver.0.99sでそのテキストファイルを読み込み&再保存することで修正することが出来ます。

「テキストファイルを読み込み&再保存する」とは具体的にどのような操作を行えば良いのでしょうか?


また、RefreshCtrl ですが、Ver 0.99r で一旦書き込むと、このコマンドが正常に削除できません。
これは、Ver 0.99s で解消しているのでしょうか?

これを削除すると、Break コマンドに化けるといった現象も発生します。

コマンドのコードのかち合いが原因なんだろうか?などと想像しています。


また、Manual_J.txt の Local コマンドの説明で、小文字変数はデフォルトでグローバル変数の筈ですが、ローカル変数と記載されています。修正が必要なようです。

その他、セットアップ画面の項目について

sentaro様

Matrix base で 0 を指定するときの説明ですが、液晶の左端だけでなく上端のピクセルが有効になって、物理座標系(デバイス座標系)で、左上のピクセルが有効になって、左表 (0, 0) として使える...ということですよね?

なので、こんな感じの英文にしてしました。
もしこの理解が正しければ、日本語版でも液晶上端が使えるようになることにも触れては如何でしょうか?


Execute mode の関連コマンドですが、'#CBdouble や '#CBDOUBLE も有効ですよね?
これを敢えて説明されないのには、何か思うところがあるのでしょうか?

Quick Manual と Reference の Execute mode の関連コマンドには、これらの表記も追加してみています。


よろしくお願い致します。



取りあえず、リンクは正常に復帰したみたいです。
http://egadget2.web.fc2.com/CBasic/Interpreter/CBasic_interpreter.html

これが、C.Basic のトップページで、基本的なリンク構造ができて、順に英訳作業を進めるだけになりました。

Setup での Skip Up/Down の設定について

sentaro様

セットアップ画面の説明ですが、README_J.txt に記載した方が、内容の整合性(C.Basic の操作方法)が合うように思うので、ぜひこちらにも記載をお願いします。


英語版 html はチョコチョコ表現を見直しています。

で、Setup画面での Skip Up/Down の設定は、[SHIFT][Up] や [SHIFT][Down] を押した時のページスキップで、何ページ飛ばすかの設定ですよね?

Ver 0.99r ではこの設定が動作に反映されないようです。ご確認ください。

Ver0.99s はまだ試していません(^^;

Re: Re: 英文クイックマニュアル

sentaro様

コメントありがとうございます。

1つ質問です。

#Frac 1.23x100

の説明ですが、

Ver 0.99r でこれを実行すると

実数モードでは、Frac 1.23x100 がエラーになり、
整数モードでは、#Frac 1.23x100 がエラーになってしまいます。

なんだか予期しない動作のような気がしますが、ご確認頂けますか?

Re: 英文クイックマニュアル

管理人様、こんにちは!

>Manual_J.txt をhtmlにしてみました。

http://egadget2.web.fc2.com/CBasic/Interpreter/CBasic_interpreter.html

html版、なかなかよいですね(^^)
どうもありがとうございます!



>2.ファイルリストのコーナー
>これの下に
>  [EXE] プログラムを実行します
>を追加してみました。C.Basic で異なる部分を解説するのが目的なのは、分かっているのですが、なんだか気になったので、追加してみました。そして英文もこれを反映させています。

了解です。



>3.エディタ編集画面のコーナー
>「・ファイルの現在位置を示すガイドマーカーがドットで右端に表示されます。」
>これは以下のように変更すると良いと思いますが如何でしょうか?
>「・ファイル内のカーソルの現在位置を示すガイドマーカーがドットで右端に表示されます。」
>英文は、この変更を反映させてあります。

了解です。




>4.エディタ画面とデバッグモードのコーナー
>「-[EXIT] サブメニューからメインメニュー、クリップモードのキャンセル、またはファイルリスト画面に戻ります。」
>ここで、「サブメニューからメインメニューへ戻る」という説明ですが、チョットぴんと来ず、これはきっと「1つ前の画面に戻る」という意味だだろと考え、取りあえず英文では「Go Back to previous page」としました。
>英訳しようと思わないと気がつかない細かい点ですが、日本語版ではうまく書き換えた方が良いと思うのですが、如何でしょうか?

はい、その方が機能的に合っている感じですね。


>5.プログラム実行時のコーナー
>「エディタに戻ります。カーソルは中断箇所を示します。」の説明ですが、「デバッグモードのエディット画面に戻ります。」とすべきと思います。英文ではこの変更を反映しています。
了解です。それが正しいですね。



>それから、
>「▲一時停止コマンドで停止した時」
>の説明は、他の一旦停止のコマンドもあって、▲の時だけの機能の筈なので、以下のようにすれば分かり易いと思います。
>「▲一時停止コマンドで停止した時(- Disp - 表示の時)」
>英文では、これを反映させています。

了解です。



>6.Casio Basicとの相違点のコーナー
>で、旧来の命令 " " についても、C.Basic は fx-5800P 仕様になっているので、この点も英文で追加しました。
>String output command " " is exactly compatible with fx-5800P in its detailed function, but not with fx-9860G/fx-986GII.
>日本語版に追記するなら、
>「文字列出力コマンド " " は詳細動作まで fx-5800P 完全準拠で、fx-9860G/fx-9860GIIには準拠しない」
>といった感じでしょうか?
>sentaro様の言葉で日本語版に追記されませんか?
>それに併せて英訳も変更します。

fx-5800Pから取り入れた仕様を分けてみました。



>7.設定画面について
>Casio Basicと共通しない部部ににつては、Manual_J.txt に加筆なさいませんか?
>設定画面の動作に関連する拡張コマンドを併せて紹介すると、とても分かり易くなるように思います。
>加筆されたら、それを英訳したいと思うのですが、如何でしょうか?


設定画面についてはManual_J.txtの最後にまとめてありますが、関連コマンドを追加してみました。
この部分はReadme_j.txtにも有った方がよいでしょうか?


とりあえず、上記のReadme_j.txt、Manual_J.txt変更版をver.0.99s差し替えてみました。
http://pm.matrix.jp/CB/CBASIC099s.zip



>あとは、コマンドリファレンスの英訳にとりかかろうと思います。

毎度お手数おかけします。m(_ _)m



>なお、取りあえずの公開を 2017年1月17日にしようと思っています。これ私の誕生日なんです(^^;

了解です(^^)

Re: 英文クイックマニュアル

sentaro様



> Manual_J.txt をhtmlにしてみました。

英訳したのは、readme_J.txt でした。


> あとは、コマンドリファレンスの英訳にとりかかろうと思います。

これからとりかかるのが、Manual_J.txt ですね。

うっかり間違えました。

英文クイックマニュアル

sentaro様

Manual_J.txt をhtmlにしてみました。

http://egadget2.web.fc2.com/CBasic/Interpreter/CBasic_interpreter.html

このページの左のメニューで、Quick Manual と Command Reference は、別の html にジャンプし、他はページ内にリンクしています。

FC2のWeb内で htmlを作っているのですが、リンク先を変更すると、なんだか反映に時間がかかることが以前からあり、Quick Manual へのリンクがページ内のリンクのまま変更が反映されていません(これを投稿時点)。

そこで、Quick Manual は以下にアクセスしてください。
http://egadget2.web.fc2.com/CBasic/Interpreter/QuickManual.html

さて、Ver 0.99r の Manual_J.txt ベースに作成していて、オリジナルの日本語版の内容について質問があります。

1.C.Basic の起動のコーナー

「- [MENU] でMAIN MENUへ戻る」は、元は [EXIT] 2回押しになっていましたが、sentaro様のコメントを拝見して、これは [MENU] 一発でも良いように思います。英文は [MENU] 一発に変更しています。

1) アドインのメモリマネージャを使う;
- [MENU]キーでメモリマネージャを起動
- [F1] (F1:Memory Manager) でメインメモリのファイルリスト表示
- カーソルを<PROGRAM.へ移動し [EXE]
- コピーしたいファイルを選ぶ
- [F1] (SEL) に続いて [F2] (COPY)
- "ROOT"が反転したウィンドウが現れるので、そこで [EXE]
- Fle Name 画面になるので、そこで適当なファイル名(例えば"A")を入力して [EXE]
- [MENU] でMAIN MENUへ戻る
- C.Basic起動
- ファイル "A" を選択して [F6]そして[F2] REN)
- 元のCasio Basicファイル名が表示されたウィンドウが表示される
- ここで [EXE] を押すと、元のファイル名に変化する。



2.ファイルリストのコーナー

-[F1] (EXE) 選択ファイルを実行します。
-[F2] (EDIT) 選択ファイルを編集します。
-[F3] (NEW) 新規ファイルを作成します。
-[F4] (COPY) ファイルをコピーします。
-[F5] (DEL) 選択ファイルを削除します。
-[F6] ( > ) 次のメニューに移動します。
  [F1] (Text) 選択されたBasicソースファイルをテキストファイルへ変換します。
  [F2] (REN) ファイル名を変更します。
  [F3] (Fav.) 選択ファイルをお気に入りに追加、解除します。
  [F4] (Fv.↑) お気に入りを一つ上に移動します。
  [F5] (Fv.↓) お気に入りを一つ下に移動します。
  [F6] ( > ) 前のメニューに移動します。

これの下に
  [EXE] プログラムを実行します

を追加してみました。C.Basic で異なる部分を解説するのが目的なのは、分かっているのですが、なんだか気になったので、追加してみました。そして英文もこれを反映させています。



3.エディタ編集画面のコーナー

「・ファイルの現在位置を示すガイドマーカーがドットで右端に表示されます。」

これは以下のように変更すると良いと思いますが如何でしょうか?

「・ファイル内のカーソルの現在位置を示すガイドマーカーがドットで右端に表示されます。」
英文は、この変更を反映させてあります。



4.エディタ画面とデバッグモードのコーナー

「-[EXIT] サブメニューからメインメニュー、クリップモードのキャンセル、またはファイルリスト画面に戻ります。」

ここで、「サブメニューからメインメニューへ戻る」という説明ですが、チョットぴんと来ず、これはきっと「1つ前の画面に戻る」という意味だだろと考え、取りあえず英文では「Go Back to previous page」としました。

英訳しようと思わないと気がつかない細かい点ですが、日本語版ではうまく書き換えた方が良いと思うのですが、如何でしょうか?



5.プログラム実行時のコーナー

「エディタに戻ります。カーソルは中断箇所を示します。」の説明ですが、「デバッグモードのエディット画面に戻ります。」とすべきと思います。英文ではこの変更を反映しています。


それから、

「▲一時停止コマンドで停止した時」

の説明は、他の一旦停止のコマンドもあって、▲の時だけの機能の筈なので、以下のようにすれば分かり易いと思います。

「▲一時停止コマンドで停止した時(- Disp - 表示の時)」

英文では、これを反映させています。



6.Casio Basicとの相違点のコーナー

これは、クイックマニュアルではなくて、
http://egadget2.web.fc2.com/CBasic/Interpreter/CBasic_interpreter.html
に書いてあります。

Difference from original Casio Basic of fx-9860G / fx-9860GII

と表題を付けています。

で、旧来の命令 " " についても、C.Basic は fx-5800P 仕様になっているので、この点も英文で追加しました。
String output command " " is exactly compatible with fx-5800P in its detailed function, but not with fx-9860G/fx-986GII.

日本語版に追記するなら、
「文字列出力コマンド " " は詳細動作まで fx-5800P 完全準拠で、fx-9860G/fx-9860GIIには準拠しない」

といった感じでしょうか?
sentaro様の言葉で日本語版に追記されませんか?

それに併せて英訳も変更します。

具体的には、下記ご参照;
http://egadget.blog.fc2.com/blog-entry-170.html



7.設定画面について

Casio Basicと共通しない部部ににつては、Manual_J.txt に加筆なさいませんか?

設定画面の動作に関連する拡張コマンドを併せて紹介すると、とても分かり易くなるように思います。

加筆されたら、それを英訳したいと思うのですが、如何でしょうか?



あとは、コマンドリファレンスの英訳にとりかかろうと思います。

なお、取りあえずの公開を 2017年1月17日にしようと思っています。これ私の誕生日なんです(^^;


ご検討お願い致します。

Re:Re: Re:Re: Re:Re: Re:首を絞める

管理人様、こんにちは!

>この方法は、manual_J.txt のクイックマニュアルのところに追加しては如何でしょうか?

了解です!


>あと、manual_J.txt のC.Basicの起動のところで、「1) アドインのメモリマネージャを使う;」の項目で、[EXE] を2回押して...とありますが、これは [EXIT]を2回押すに変更ですね。

あ、そうですね。
でも、ここはファイル名確定済み後なので[EXIT]2度押しすることなく[MENU]で戻るでもいいのかもしれません。

以上2点、README_J.txt修正版をver.0.99s差し替えました。
http://pm.matrix.jp/CB/CBASIC099s.zip


>再度に同じファイル内の「CasioBasicとの相違点」のところで、「コメント文の終了は改行と出力コマンドのみです。:(区切りコード)では終了となりません。」とは、どういうことか、忘れてしまいました。チョット解説をお願いできませんか?

ここで管理人様が検証されたコメントアウト内に:(区切りコード)がある場合のバグ?を、C.Basicでは不具合とみなして解消しているということですね。

楽屋裏 - Casio Basic コメントアウト ' のバグ
http://egadget.blog.fc2.com/blog-entry-233.html

Re: Re:Re: Re:Re: Re:首を絞める

sentaro様

バージョン表示の方法、ありがとうございます。

この方法は、manual_J.txt のクイックマニュアルのところに追加しては如何でしょうか?

あと、manual_J.txt のC.Basicの起動のところで、「1) アドインのメモリマネージャを使う;」の項目で、[EXE] を2回押して...とありますが、これは [EXIT]を2回押すに変更ですね。

再度に同じファイル内の「CasioBasicとの相違点」のところで、「コメント文の終了は改行と出力コマンドのみです。:(区切りコード)では終了となりません。」とは、どういうことか、忘れてしまいました。チョット解説をお願いできませんか?


Re:Re: Re:Re: Re:首を絞める

管理人様、こんにちは!

>UCFでのコメント、ありがとうございます。

あ、いえいえ、恐縮です。
英文はいつまでたっても合っているのかどうか分からずじまいなのでお恥ずかしい限りです…(^^;

で、UCFのキャラクターコードのコメントから思いついたのですが、
C.Basicでの拡張キャラクターフォント(カナ文字等)は任意に変更できるようにすると良いかもしれません。



>さっそく、Ver0.99s を改めて触りながら、英文の見直しと作成をしています。

毎度お手数おかけしますm(_ _)m



>ところで、バージョン情報表示は、どこから行けますか?

[SHIFT]-[MENU]でセットアップに入って[F6]です。

Re: Re:Re: Re:首を絞める

sentaro様


UCFでのコメント、ありがとうございます。


さっそく、Ver0.99s を改めて触りながら、英文の見直しと作成をしています。
ところで、バージョン情報表示は、どこから行けますか?

Re:Re: Re:首を絞める

>実は、C.Basic の公式アナウンスの予告編という感じです。
>C.Basic が Ver 1.00 になった時に、英文の Manual と Readme を完成させ、同梱してもらって、正式パッケージにして頂こうかと...
>で、英文の Manual と Readme は、テキストファイルだと表現しにくいキャラクタがあるので、html にしようかと思案中です。こうすると、Web での作成と共通するメリットもありそうなので...

了解です(^^)


>実は、インタープリタ版が fx-CG20 に対応して頂くのも望んでいますが、多分 fx-9860GII 用のコンパイラ版の方がやり方をお分かりで、相対的には早くできるといった感じでしょうか?

んと、CG20版は初期移植段階で若干つまづいてしまって、試行錯誤中のまま停滞している状況なのですが、このあたりは公式SDKの有る無しは大きな違いとなって出てきてしまっています。
SH3/SH4のマシン語も一筋縄ではいかないのでインタプリタよりはデバッグが大変ですが、SDKでのマシン語デバッグが出来る分だけこっちの方が早く進みそうな気配です。



>すると、例えばガノー様のように、精力的に魅力的なプログラムを作ってこられた方のためには、このコード移行の案内は、重要ですね。

はい、
コードの変更となるとソース修正が大変となりますが、プログラムソースのテキスト化を実装できていたおかげでソースの修正作業の必要は無く移行は割と簡単と思います。


>公開しているプログラムも、Ver 0,99r と 0,99s のそれぞれに対応したものを公開しておいた方が良いかも知れません...
>ちょっと時間がかかりますが、このあたりが整備できたところで、0,99s 公開のアナウンスをしようと思います。

よろしくお願いいたします。m(_ _)m



>ところで、UCF のコメントで、出てきたキャラクターコードのコメントですが、ハッキリいってこの人は何が言いたいのか、何をアドバイスしているのか、実はよく分かっていません。
>C.Basicが掃き出すテキストファイルのキャラクターが、電卓画面と異なること言っているでしょうか?
>そして、彼のプロジェクトが、我々の C.Basic にどう貢献するのかも、よく分かりません。
>お分かりなら、教えて頂けませんか?

おそらく電卓で使われているキャラクターコードと中間コードの対応の一覧表を作成されているのではと思われるのですが、純正のコード以外にもC.Basicでの拡張コマンドもリスト化されているみたいなので、もしかしたらC.Basicでの拡張コマンドを本体標準実装の未発見コード(OSのバージョンアップによって新たに実装されていた未公開コマンド等)と思われたのかもしれません。

Re: Re:首を絞める

sentaro様

> いったい何が?!とコメントタイトルでびっくりしてしばし数秒……(^^;

アハハ...

失礼しました(^^;


> いよいよInside Casio Basic海外進出ですね!

実は、C.Basic の公式アナウンスの予告編という感じです。

C.Basic が Ver 1.00 になった時に、英文の Manual と Readme を完成させ、同梱してもらって、正式パッケージにして頂こうかと...

で、英文の Manual と Readme は、テキストファイルだと表現しにくいキャラクタがあるので、html にしようかと思案中です。こうすると、Web での作成と共通するメリットもありそうなので...


> コンパイラ版はver.2.00とするとして、インタプリタ版でとりあえずver.1.00と思ってますが、かなり尻に火がついてまいりました(^^;

実は、インタープリタ版が fx-CG20 に対応して頂くのも望んでいますが、多分 fx-9860GII 用のコンパイラ版の方がやり方をお分かりで、相対的には早くできるといった感じでしょうか?



> UCFでのコメントでキャラクタコードの話題が出ていたのでハタと気がついて、純正と拡張コマンドの中間コードが一部重なっているのを思い出したので修正版です(^^;
>
> アドイン版 C.Basic ver.0.99s テスト版 その9.9s(純正と重なっていた中間コード変更版)
> http://pm.matrix.jp/CB/CBASIC099s.zip
> ・純正コマンド"Dot" "DotG"と中間コードが重なっていた"DotTrim(" および"DotGet("コマンドの中間コードを変更しました。
> DotGet( = DotG : 0x7F3F -> 0x7F3F
> DotTrim( = Dot : 0x7F4F -> 0x7F3E
>
> 最初の頃に純正コマンドを流用したために純正と動作の違う拡張コマンドの中間コードが同じになってしまっていました。
> その後、任意の中間コードでコマンド拡張が出来るようになったために空いている(と思われる)中間コードを拡張コマンドに使うことで純正と重なることは無くなりましたけど、初期の2つのコマンドが重なったままでした。
> ということで、今回の変更で以前のC.Basic独自プログラムで"DotTrim(" および"DotGet("コマンドを使用していた場合はそのままでは動かないので、
> ver.0.99rで一旦テキストファイル化した後、ver.0.99sでそのテキストファイルを読み込み&再保存することで修正することが出来ます。
>
> 現状C.Basicとしては中間コードが純正と重なっていても何に困ることはないのですが、将来的に"Dot" "DotG"を実装する可能性もゼロではないかもしれないので、重なっているところは今のうちに修正しておこうというところですね。


すると、例えばガノー様のように、精力的に魅力的なプログラムを作ってこられた方のためには、このコード移行の案内は、重要ですね。

公開しているプログラムも、Ver 0,99r と 0,99s のそれぞれに対応したものを公開しておいた方が良いかも知れません...

ちょっと時間がかかりますが、このあたりが整備できたところで、0,99s 公開のアナウンスをしようと思います。


ところで、UCF のコメントで、出てきたキャラクターコードのコメントですが、ハッキリいってこの人は何が言いたいのか、何をアドバイスしているのか、実はよく分かっていません。

C.Basicが掃き出すテキストファイルのキャラクターが、電卓画面と異なること言っているでしょうか?
そして、彼のプロジェクトが、我々の C.Basic にどう貢献するのかも、よく分かりません。

お分かりなら、教えて頂けませんか?


Re:首を絞める

管理人様、こんにちは!

いったい何が?!とコメントタイトルでびっくりしてしばし数秒……(^^;


>ついに自分で自分の首を絞めました...

http://community.casiocalc.org/topic/7620-inside-casio-basic-is-now-to-be-prepared/


いよいよInside Casio Basic海外進出ですね!

>これで、C.Basic の manual.txt と readme.txt の英訳が加速するかも...

英訳は管理人様にお世話になりっぱなしなので恐縮するばかりなのですが、C.Basicも早いとこ正式版ver.1.00にしないとですね。
コンパイラ版はver.2.00とするとして、インタプリタ版でとりあえずver.1.00と思ってますが、かなり尻に火がついてまいりました(^^;


UCFでのコメントでキャラクタコードの話題が出ていたのでハタと気がついて、純正と拡張コマンドの中間コードが一部重なっているのを思い出したので修正版です(^^;

アドイン版 C.Basic ver.0.99s テスト版 その9.9s(純正と重なっていた中間コード変更版)
http://pm.matrix.jp/CB/CBASIC099s.zip
・純正コマンド"Dot" "DotG"と中間コードが重なっていた"DotTrim(" および"DotGet("コマンドの中間コードを変更しました。
DotGet( = DotG : 0x7F3F -> 0x7F3F
DotTrim( = Dot : 0x7F4F -> 0x7F3E

最初の頃に純正コマンドを流用したために純正と動作の違う拡張コマンドの中間コードが同じになってしまっていました。
その後、任意の中間コードでコマンド拡張が出来るようになったために空いている(と思われる)中間コードを拡張コマンドに使うことで純正と重なることは無くなりましたけど、初期の2つのコマンドが重なったままでした。
ということで、今回の変更で以前のC.Basic独自プログラムで"DotTrim(" および"DotGet("コマンドを使用していた場合はそのままでは動かないので、
ver.0.99rで一旦テキストファイル化した後、ver.0.99sでそのテキストファイルを読み込み&再保存することで修正することが出来ます。

現状C.Basicとしては中間コードが純正と重なっていても何に困ることはないのですが、将来的に"Dot" "DotG"を実装する可能性もゼロではないかもしれないので、重なっているところは今のうちに修正しておこうというところですね。

首を絞める

sentaro様

ついに自分で自分の首を絞めました...

http://community.casiocalc.org/topic/7620-inside-casio-basic-is-now-to-be-prepared/

これで、C.Basic の manual.txt と readme.txt の英訳が加速するかも...

Re: Re:HPGCCのアニメーション・プログラム移植版

sentaro様
akatuki様


> >当方は、と言いますと、計算しながら描図ではかなりのオーバーヘッドなので、予めグラフィクスを作成して、アニメーション表示、という方式で、TI-83+でプログラムをやってみようか、などと計画しております。この方式ならば、C.Basicで爆速になるかも ?
>
> アニメーション方式だと20画面までなら純正CasioBasicでもいけそうです(^^)

純正 Casio Basicの、画面 StoV-Win / RclV-Win コマンドは描画が結構遅かった記憶があります。

Casio Basic入門G08: http://egadget.blog.fc2.com/blog-entry-458.html

Re:HPGCCのアニメーション・プログラム移植版

akatuki様、こんにちは!

>Sentaro様、早速の移植、有難う御座居ます。C.Basicのパワー、恐るべしですネ !

移植作業が遅くなってすみません(^^;
HPのPrimeにもやっと移植して試すことが出来たのですが、計算削減版でも1画面描くのに1秒程度かかるのでちょっと予想外の結果でびっくりでした。
ノーマルクロック29MHzのC.Basicでは1画面2秒かかるのでクロック比が13倍違うことからするとPrimeはちょっと遅いのですが、2進演算のC.Basicに比べると10進演算のPrimeは分が悪そうです。
C.Basicの結果は2進演算による高速性が上手く活かせた感じですね。


>当方は、と言いますと、計算しながら描図ではかなりのオーバーヘッドなので、予めグラフィクスを作成して、アニメーション表示、という方式で、TI-83+でプログラムをやってみようか、などと計画しております。この方式ならば、C.Basicで爆速になるかも ?

アニメーション方式だと20画面までなら純正CasioBasicでもいけそうです(^^)

HPGCCのアニメーション・プログラム移植版

親分様、Sentaro様。お久しぶりです。

先日、親分様からお知らせを戴きまして、遅まきながらのコメントポストです。
Sentaro様、早速の移植、有難う御座居ます。C.Basicのパワー、恐るべしですネ !

当方は、と言いますと、計算しながら描図ではかなりのオーバーヘッドなので、予めグラフィクスを作成して、アニメーション表示、という方式で、TI-83+でプログラムをやってみようか、などと計画しております。この方式ならば、C.Basicで爆速になるかも ?

Re:Re: HPGCCのアニメーション・プログラム移植版

管理人様、皆様、こんにちは!

C.Basic版の
globe.g1m
globe2.g1m
globe3.g1m
に対応したアドイン版です。差し替えです(^^;
http://pm.matrix.jp/CB/GlobeANM.zip

[F1]:オリジナルそっくり移植版      globe.g1m相当
[F2]:座標計算半減版           globe2.g1m相当
[F3]:座標計算半減 + 三角関数計算削減版  globe3.g1m相当


>globe4.g1m でかなり高速化していますね!

はい、globe4はglobe3と同じソースながらカッコで2項演算化を徹底させた結果、現行C.Basic特有の2項演算の速さが効いています(^^)

アドイン版の[F3]にしてもC.Basicのglobe4.g1mから3倍速にもならないので実数演算はかなり重いですね。
ここから劇的に高速化するには座標演算を整数化する必要がありそうです。

Re: HPGCCのアニメーション・プログラム移植版

sentaro様

面白いネタのご提供、ありがとうございます。

取りあえず、

globe.g1m
globe2.g1m
globe3.g1m
globe4.g1m

を比べて動かしてみています。

globe4.g1m でかなり高速化していますね!

ソースをこれからじっくり拝見して、からくりを理解してみます。

ありがとうございます。

HPGCCのアニメーション・プログラム移植版

管理人様、皆様、こんにちは!

http://akatuki-724.blogspot.jp/2016/10/hpgcc.html
akatuki様のサイトにアップされたHPGCCのプログラムをC.Basicへ移植してみました。

http://pm.matrix.jp/CB/globe_C.BASIC.zip

元のプログラムはARMバイナリなので無謀ながらC.Basicでどこまで動くかと思って移植してみたところ、
計算量を削減した最適化版で236MHzクロックアップでなんとか本家並みに動きました(^^)


それから、そっくりそのまま移植のアドイン版
http://pm.matrix.jp/CB/GlobeANM.zip

ソースそのまま移植で最適化はしてないのでC.Basic版のGLOBE.g1mと同じですが、
アドインとはいえ実数は遅く236MHzクロックアップで本家同等に動きます(^^;

Re:Re: Re:C.Basic WiKi 発見

管理人様、こんにちは!


>興味深い考察がなされていますよね。

>このネタは、当ブログでも是非紹介したいところです。

>ゲーム作りをきっかけに、C.Basic x fx-9860GII で遊ぶ人が増える....といった感じがします。


どちらかというと実用面よりもホビー面の方向で進化してきているC.Basicですから、ゲーム作りに活かしてくださる方が増えると嬉しいですね(^^)

CasioBasic完全準拠から始まったC.Basicの最初に頃には、速いCasioBasicというだけ、というところでしたけど、
管理人様、ガノー様のおかげでゲームでもそこそこ使えるかもしれない言語に進化できてきたかなと思います。

まだまだ足りないところ、進化させないといけないところが多々ありますが、今後ともよろしくお願いいたします。

Re: Re:C.Basic WiKi 発見

sentaro様
ガノー様

> ってことで、ふとYoutubeのガノー様のアカウントをチェックしてみると、最新動画がアップされてますね!(ずっと気が付いてなくてすみません)
> https://www.youtube.com/watch?v=8wODoNhX9jg


興味深い考察がなされていますよね。

このネタは、当ブログでも是非紹介したいところです。

ゲーム作りをきっかけに、C.Basic x fx-9860GII で遊ぶ人が増える....といった感じがします。


Re:C.Basic WiKi 発見

管理人様、ガノー様、こんにちは!

>ガノー様には Twitter message入れておきましたが、なんとC.Basic WiKiが立ち上がっているのを発見しました。
http://www65.atwiki.jp/garnot/pages/1.html
>元ネタの当ブログがサボっているので、入り口だけになっていますが、なんだかうれしいですよね。


うわうわうわっ!!!
なんと!C.Basic WiKiが!!
管理人様、発見ありがとうございます!!

ガノー様、どうもありがとうございます!!
ってことで、ふとYoutubeのガノー様のアカウントをチェックしてみると、最新動画がアップされてますね!(ずっと気が付いてなくてすみません)
https://www.youtube.com/watch?v=8wODoNhX9jg

ここのところバージョンアップが滞っている状態なので(汗)
早くに開発ペースを取り戻さねば、です(^^;

C.Basic WiKi 発見

ガノー様
sentaro様

ガノー様には Twitter message入れておきましたが、なんとC.Basic WiKiが立ち上がっているのを発見しました。

http://www65.atwiki.jp/garnot/pages/1.html

元ネタの当ブログがサボっているので、入り口だけになっていますが、なんだかうれしいですよね。

ボチボチと拡充しないと...

Re: ver.0.99rまたまた差し替えです(^^;

sentaro様

デバッグ、ありがとうございます。


> 万が一、隠しRAM領域で足りなくなった場合にはヒープメモリからも確保できるように変更しました。
> プログラムエリアと行列エリアのメモリ確保の順番は隠しRAM→ヒープメモリとなります。

余裕がでて良いですね。ビットマップをガンガン使うプログラムだと、有用だと思います。


お疲れ様

ver.0.99rまたまた差し替えです(^^;

管理人様、こんにちは!

隠しRAM領域を積極的に使うように変更した現在のバージョンですが、
万が一、隠しRAM領域で足りなくなった場合にはヒープメモリからも確保できるように変更しました。
プログラムエリアと行列エリアのメモリ確保の順番は隠しRAM→ヒープメモリとなります。

アドイン版 C.Basic ver.0.99r テスト版 その9.9r(隠しメモリ使用によるプログラムエリア拡大版)
http://pm.matrix.jp/CB/CBASIC099r.zip


追記:2016-07-24(19:22)
致命的なエンバグしていたので修正、再々々差し替えしました(^^;

Re:Re: ver.0.99r差し替えです(^^;

管理人様、こんにちは!

>PiCal5 でなくて、PiCalc6A + PiDisp3 なので事情が異なりますが、私の環境では以前は最大280桁だったので、77000桁いけますね。これは画期的ですね。

どこまでいけるかやってみたところ9294桁までいけそうですが、
計算時間は2乗で増えるのでちょっとかかりそうです(^^;


>ところで、1万桁を指定してみると、"Not enoughMemory" とエラーが表示され、[EXIT] で抜け、再び実行すると
>"Not enough Memory, Please Restart" とメッセージが現れます。
>こうなると C.Basic上では何もできなくなるので、[MENU]でメニューを表示させ、何か他のアドインを実行させて、一旦C.Basicを解放してあげる必要があります。
>これは、想定動作でしょうか?

あ、すみません…(^^;
ずばり、そこのところを修正したのが差し替え版です(^^;


>C.Basicが自分自身で終了させるのができなさそうなので、回避が難しそうな感じですが...

"Not enough Memory, Please Restart" が出た場合はは回復不可能エラーなので、[MENU]に戻っての復帰作業が必須となってます。
これはC.Basic単独でのリスタートが今のところ出来ないので仕様ですね(^^;


>...と、ここで ver0,99r 差し替え版を導入してみると、Restart を要求されることなく、[EXIT] で復帰すれば、問題無くプログラムを実行できるようになりました。
>行列での隠しメモリ処理の修正をした結果のようですね。

はい、行列確保に失敗した場合にリスタート必須になるのはさすがに想定外なので修正しました(^^;

ちなみに隠しRAMの行列エリアは行列名指定無しのClrMat単独で初期化出来ます。
プログラムエリアはファイルリストに戻った時点ですべて開放、初期化されます。

Re: ver.0.99r差し替えです(^^;

sentaro様

多桁円周率計算プログラムを試してみました。

PiCalc6A: http://egadget2.web.fc2.com/archives/PiCalc6A.html
PiDisp3: http://egadget2.web.fc2.com/archives/PiDisp3.html

PiCal5 でなくて、PiCalc6A + PiDisp3 なので事情が異なりますが、私の環境では以前は最大280桁だったので、77000桁いけますね。これは画期的ですね。


ところで、1万桁を指定してみると、"Not enoughMemory" とエラーが表示され、[EXIT] で抜け、再び実行すると

"Not enough Memory, Please Restart" とメッセージが現れます。

こうなると C.Basic上では何もできなくなるので、[MENU]でメニューを表示させ、何か他のアドインを実行させて、一旦C.Basicを解放してあげる必要があります。

これは、想定動作でしょうか?
C.Basicが自分自身で終了させるのができなさそうなので、回避が難しそうな感じですが...


...と、ここで ver0,99r 差し替え版を導入してみると、Restart を要求されることなく、[EXIT] で復帰すれば、問題無くプログラムを実行できるようになりました。

行列での隠しメモリ処理の修正をした結果のようですね。

ありがとうございます。

ver.0.99r差し替えです(^^;

隠しメモリ使用時に行列が確保できなかった場合の処理に不具合があったのを修正しました。

アドイン版 C.Basic ver.0.99r テスト版 その9.9r(隠しメモリ使用によるプログラムエリア拡大版)
http://pm.matrix.jp/CB/CBASIC099r.zip

Re:Re: アドイン版 C.Basic ver.0.99r テスト版 その9.9r(隠しメモリ使用によるプログラムエリア拡大版)

管理人様、こんにちは!

>Intg関数って、何でしたっけ?

これは最初に仕様をよく確認していなかったのがいけなかったのですが(^^;
Int関数は単純に数値の整数部分だけを取り出して整数化する関数、
Intg関数はC言語で言うところのfloor()関数で、その引数の値を超えない最大の整数を求める関数です。
正の数の場合は違いは無いのですが、負数の場合に違いが出てきます。

Int(-1.5)→ -1
Intg(-1.5)→ -2
floor(-1.5)→ -2

つまり、今まではInt関数をFloor()と同じと思って処理していたのでIntがIntgになっていたのですが、
負数を扱うことが無かったのでそのことに今まで気が付きませんでした(^^;


>これで、Out of Memoryになることが激減しそうですね!

はい!
プログラムソースと行列エリア合計で256KBなので、
サブプログラムてんこ盛りの大作プログラムでもOkになりますし、
大量の行列データを扱うことも可能になりました


>例えば、多桁円周率計算で計算できる桁数が増えるということなのですよね?

PICALC5で8000桁以上いけるようになります(^^)


>このあたりは以前と変わらないと理解して良いでしょうか?

はい、使い勝手の面では何も変わらないと思います。
ファイルリストバッファやプログラムエリア、行列エリアそれぞれで使用領域を固定化することで、
メモリ確保開放に伴う致命的なシステムエラーを根絶という狙いもあります。


>最適化のタイミングを知るにも有効そうですね。

リネームでもどんどん減っていくので知らず知らずのうちにフリーエリアが無くなっていて、
新規プログラム作成やプログラム編集で保存時エラーにならないようにという感じですね(^^;

Re: アドイン版 C.Basic ver.0.99r テスト版 その9.9r(隠しメモリ使用によるプログラムエリア拡大版)

sentaro様

更新ありがうございます。

> Int関数がIntgになっていた致命的?バグが見つかったのと、一括ClrMatができなかったバグ修正と、
> ・Int関数がIntg関数になっていたので、Intg関数を追加して、Int関数を修正しました。

チョット時間が取れないので(まだ仕事中だったりします)、安直に伺います。

Intg関数って、何でしたっけ?



> 隠しRAMを使用する場合、プログラム+行列エリアで隠しRAM領域を使うように変更してみました。
> プログラムエリアと行列エリアで丸々256KB使えるので今までに比べて8倍ほどに増えます。

これで、Out of Memoryになることが激減しそうですね!

例えば、多桁円周率計算で計算できる桁数が増えるということなのですよね?



> その代わり、ファイルリストバッファは以前のようにヒープ領域で確保されるようになります。
>  ファイルリストバッファはヒープ領域固定となります。
>  ストレージメモリはプログラムの保存、およびコピー、リネーム等で減っていきますので、残り少なくなったら最適化が必要になります。

このあたりは以前と変わらないと理解して良いでしょうか?


> ・隠しRAMをプログラムとMat行列領域で使用するようにしました。
>  プログラム領域、行列領域合計で256KBの割当になります。

行列をより多く使えるのは、プログラムの幅が広がってありがたいです。


> それからストレージメモリの残量が分かるようにフリーエリアを常時表示するようにしてみました。
> ・ファイルリスト表示の上部にストレージメモリのフリーエリアとファイルリスト数を表示するようにしました。

最適化のタイミングを知るにも有効そうですね。


アドイン版 C.Basic ver.0.99r テスト版 その9.9r(隠しメモリ使用によるプログラムエリア拡大版)

管理人様、こんにちは!

ちょこっと更新が滞ってしまってすみません(^^;

Int関数がIntgになっていた致命的?バグが見つかったのと、一括ClrMatができなかったバグ修正と、
隠しRAMを使用する場合、プログラム+行列エリアで隠しRAM領域を使うように変更してみました。
プログラムエリアと行列エリアで丸々256KB使えるので今までに比べて8倍ほどに増えます。
その代わり、ファイルリストバッファは以前のようにヒープ領域で確保されるようになります。

それからストレージメモリの残量が分かるようにフリーエリアを常時表示するようにしてみました。



アドイン版 C.Basic ver.0.99r テスト版 その9.9r(隠しメモリ使用によるプログラムエリア拡大版)
http://pm.matrix.jp/CB/CBASIC099r.zip

・隠しRAMをプログラムとMat行列領域で使用するようにしました。
 プログラム領域、行列領域合計で256KBの割当になります。
 ファイルリストバッファはヒープ領域固定となります。

・ファイルリスト表示の上部にストレージメモリのフリーエリアとファイルリスト数を表示するようにしました。
 ストレージメモリはプログラムの保存、およびコピー、リネーム等で減っていきますので、残り少なくなったら最適化が必要になります。

・ClrMatで行列全部の消去が出来なかったのを修正しました。

・Int関数がIntg関数になっていたので、Intg関数を追加して、Int関数を修正しました。

Re: Re:Re: Re: 3桁区切りについて

sentaro様


> 今週はバタバタ続きでほとんど更新が出来ない状況でしたが、
> デバッグモードにてバグが見つかりましたので差し替え修正です(^^;

ありがとうございます。


> 3桁区切りのサブルーチンですが、出来るだけ軽くする方向で3桁ずつまとめて処理するようにした左詰め3桁区切り表示サブルーチンです。
> (負数も小数点も考慮してない正の整数だけバージョンです。)

> 数値を表示してから区切り文字を上書きするので処理過程が見えてしまうことが難点ですが、fx5800Pでもなんとかいける感じでしょうか(^^?

このロジックは考えつきませんでした。これだと Locate の使用回数を劇的に減らせるので理に適った高速化です。

とても面白いので、Casio Basic入門で、取り上げたいと思います。

これまた、ありがとうございます。



Re:Re: Re: 3桁区切りについて

管理人様、こんにちは!

今週はバタバタ続きでほとんど更新が出来ない状況でしたが、
デバッグモードにてバグが見つかりましたので差し替え修正です(^^;

アドイン版 C.Basic ver.0.99q テスト版 その9.9q(3桁区切り+メモリ操作対応版)
http://pm.matrix.jp/CB/CBASIC099q.zip

・デバッグモードにおいてプログラムの再開、トレース実行する場合に画面が復帰しないことがあった不具合を修正しました。



3桁区切りのサブルーチンですが、出来るだけ軽くする方向で3桁ずつまとめて処理するようにした左詰め3桁区切り表示サブルーチンです。
(負数も小数点も考慮してない正の整数だけバージョンです。)
--------------------------------------
入力数値->N
X座標->X
Y座標->Y

ワーク変数 A:下3桁
ワーク変数 B:中3桁
ワーク変数 C:上3桁
ワーク変数 D:最上位1桁
ワーク変数 K:数値の桁数
ワーク変数 I:三桁区切り文字の数
--------------------------------------
Int (log N)+1->K
(K>=4)+(K>=7)+(K>=10)->I
Frac (N/1Exp3)*1Exp3->A
Int (Frac (N/1Exp6)*1Exp3)->B
Int (Frac (N/1Exp9)*1Exp3)->C
Int (N/1Exp9)->D

If K<=8:Then
Locate X,Y,1Exp8*C+1Exp4*B+A
I>=1=>Locate X+K-2-(I=1),Y,","
I>=2=>Locate X+K-6,Y,","
Else
Locate X+3+2*(I>=3),Y,1Exp7+1Exp4*B+A
Locate X+0,Y,D*1Exp4+C
Locate X+K-2+(I>=3),Y,","
Locate X+K-6+(I>=3),Y,","
I>=3=>Locate X+1,Y,","
IfEnd
--------------------------------------

数値を表示してから区切り文字を上書きするので処理過程が見えてしまうことが難点ですが、fx5800Pでもなんとかいける感じでしょうか(^^?

Re: Re: 3桁区切りについて

sentaro様

> 31行目のLocate 7,2,Bで問題ないのは、サブルーチン"INP"が呼ばれないループの時に3桁区切り有効のままでLocate 7,2,Bが実行されたからというところですね。

ありがとうございます。

そして、大変失礼しました。Engのバグ修正が続いていたので、ろくに調べずにおりました。

おっしゃるとおりです(^^;


INP の最初での EngOff は必須なので、複利計算プログラム側で、Locate を使う時に

EngOn3:Locate ...

とすべきですね。

お恥ずかしい限りです...

Re: 3桁区切りについて

管理人様、こんにちは!

http://egadget.blog.fc2.com/blog-entry-553.html
>この Casio Basic入門51 のエントリーでは、複利計算プログラムを紹介しています。
>これを3桁区切りで表示させるために、サブルーチンを使って fx-5800P で実装、続いて fx-9860GII の純正Casio Basicに同じサブルーチンを使って移植しました。これらは後日 Casio Basic入門52 の記事にする予定です。
>fx-5800P では、3桁区切りの表示が、上の桁から下の桁まで、パラパラと表示されるのが目で見えます。fx-9860GII の純正Casio Basic でもノーマルクロックでは 表示が多少速くなってはいますが、依然として表示がパラパラとなります。
>これをそのまま C.Basicで実行すると、ノーマルクロックでもかなり高速化され、1息つくくらいでパッと表示されます。

fx-5800Pで一桁一桁の処理になるとさすがに少々荷が重いですよね(^^;
fx-9860GIIでも表示が絡むとさほど速くならないですから、C.Basicでも文字列処理を使わないと劇的な改善とはいかない感じでしょうか(^^;


>さて、EngOn3 による3桁区切りを利用するために、上のエントリーで紹介したソースを fx-9860GII に移植し、サブルーチンを使わずに EngOn3 のみで実装してみました。
http://egadget2.web.fc2.com/archives/fx-9860GII/CompInt3.html

早速、ダウンロードさせていただきました。
複利計算プログラム、入力ボックスが便利で使い勝手がよいですね(^^)


>最初、22行目に、コメントアウトしてある Locate X,Y,B を置いたのですが、出力が3桁区切りになりません。
>そこで、31行目に Locate 7,2,B を置くと出力が無事3桁区切りになりました。

あり?(^^;


>22行目の Locate コマンドが3桁区切りにならない理由について、使い方に問題がありますでしょうか?

ソースを見ても特に問題は無さそうなのですが…
と思って、サブルーチン"INP"を見るとその先頭で
EngOff
があるので、ここで3桁区切り表示がクリアされているのが原因のようです(^^;

31行目のLocate 7,2,Bで問題ないのは、サブルーチン"INP"が呼ばれないループの時に3桁区切り有効のままでLocate 7,2,Bが実行されたからというところですね。

3桁区切りについて

sentaro様

http://egadget.blog.fc2.com/blog-entry-553.html

この Casio Basic入門51 のエントリーでは、複利計算プログラムを紹介しています。

これを3桁区切りで表示させるために、サブルーチンを使って fx-5800P で実装、続いて fx-9860GII の純正Casio Basicに同じサブルーチンを使って移植しました。これらは後日 Casio Basic入門52 の記事にする予定です。

fx-5800P では、3桁区切りの表示が、上の桁から下の桁まで、パラパラと表示されるのが目で見えます。fx-9860GII の純正Casio Basic でもノーマルクロックでは 表示が多少速くなってはいますが、依然として表示がパラパラとなります。

これをそのまま C.Basicで実行すると、ノーマルクロックでもかなり高速化され、1息つくくらいでパッと表示されます。


さて、EngOn3 による3桁区切りを利用するために、上のエントリーで紹介したソースを fx-9860GII に移植し、サブルーチンを使わずに EngOn3 のみで実装してみました。

http://egadget2.web.fc2.com/archives/fx-9860GII/CompInt3.html


'File name COMPINT3

Locate 1,1,"=Compound Interest="
Locate 1,2,"1_(-)_Cap:"
Locate 1,3,"2_(-)_Rat:"
Locate 12,3,"3_(-)_Yrs:"
Locate 1,5,"Total"
Locate 1,6,"Month"

0->B:0->R:0->N:0->T:0->M

Do

EngOn3
Locate 15,7,"<EXIT>"

0->K:Do
Getkey->K
LpWhile K=0

If K=72:Then
7->X:2->Y:9->D:2->E
Prog "INP":Z->B
'_Locate _X,Y,B
Else If K=62:Then
7->X:3->Y:4->D:2->E
Prog "INP":Z->R
Else If K=52:Then
18->X:3->Y:3->D:2->E
Prog "INP":Z->N
IfEnd:IfEnd:IfEnd

Locate 7,2,B
If BRN:Then
Int (B(1+R/100)^N)->T

Locate 7,5," "
Locate 7,5,T
Int (T/N/12)->M
Locate 7,6," "
Locate 7,6,M
IfEnd
EngOff

LpWhile K<>47
ClrText
Locate 9,4,"Bye!"

外側のDoループで、Do の直後で EngOn3 とし、LpWhile の直前で EngOff としています。

最初、22行目に、コメントアウトしてある Locate X,Y,B を置いたのですが、出力が3桁区切りになりません。

そこで、31行目に Locate 7,2,B を置くと出力が無事3桁区切りになりました。

なお、36行目と39行目の Locate では問題無く3桁区切りになります。

22行目の Locate コマンドが3桁区切りにならない理由について、使い方に問題がありますでしょうか?

Re: Re:Re: Re:Re: Re:Re: アドイン版 C.Basic ver.0.99q テスト版 その9.9q(3桁区切り+メモリ操作対応版)

sentaro様


> >初期設定画面の起動は、[SHIFT][MENU] だと思いますが、[SHIFT][VARS] と記述されています。
> >ご確認ください。
>
> 確認しました。
>
> ってことで、Readme_J.txtを修正、Ver 0.99q差し替えしておきました(^^;

早々に、ありがとうございます。


3桁区切り機能を、fx-5800P 向けに作ってみました。
これを fx-9860GII に移植する際、高速化しようとトライしていますが、純正Casio Basicにあるコマンド、そして実行速度(29MHzにおいて)の制限のため、あまり高速化が出来ずにいます。

高速化のポイントは、Locate コマンドを使う回数をどれだけ減らすかになる筈ですが、仮に Locate を1回のみ使う場合は、文字列処理でが必要になりますが、数値から文字列に変換するコマンドが純正に無いことから、あまり効果的な高速化ができそうにないですね。

同じプログラムを C.Basic で動作(@29MHz)で走らせると劇的に高速化しますね。C.Basic の良さが際立ちます。

さらに、数値から文字列に変換するコマンド+3桁表示機能 を使ってみようと思っています。高速化への寄与はあるでしょうが(既に十分速い)、それに加えてコードの簡潔化が大きなポイントになると思います。これから作ってみます。

C.Basicをゲームやグラフィックスプログラミングだけでなくて、実用プログラムにも大きく役立つ良い事例になりそうです。





Re:Re: Re:Re: Re:Re: アドイン版 C.Basic ver.0.99q テスト版 その9.9q(3桁区切り+メモリ操作対応版)

管理人様、こんにちは!

>Readme_J.txt で記述のバグらしきものが見つかりました。
>初期設定画面の起動は、[SHIFT][MENU] だと思いますが、[SHIFT][VARS] と記述されています。
>ご確認ください。

確認しました。

ってことで、Readme_J.txtを修正、Ver 0.99q差し替えしておきました(^^;

Re: Re:Re: Re:Re: アドイン版 C.Basic ver.0.99q テスト版 その9.9q(3桁区切り+メモリ操作対応版)

sentaro様

Readme_J.txt で記述のバグらしきものが見つかりました。

初期設定画面の起動は、[SHIFT][MENU] だと思いますが、[SHIFT][VARS] と記述されています。

ご確認ください。



> Ver 0.99qですが、案の定、バグというか、Exp()コマンドがエンバグしていたのが見つかりましたので差し替えです(^^;
> 修正ついでに、行列の文字列化は$だけとしました。
> あと、SysCallとCallコマンドは関数コマンド化しました。

了解しました。C.Basic Command Reference (英文)の項目を変更しておきました。


Re:Re: Re:Re: アドイン版 C.Basic ver.0.99q テスト版 その9.9q(3桁区切り+メモリ操作対応版)

管理人様、こんにちは!

>Ver 0.99q に同梱されている Manual_J.txt を久しぶりに拝見すると、ほぼ完成されたマニュアルであることに、今更ながら気がつきました。

恐縮です。
細かな部分ではまだまだ手直し必要だと思いますけど、初期版からするとそこそこマニュアルらしく?なってきたのでしょうか(^^;


>こうしてみると、C.Basic を海外へ紹介するには、先ずは Manual_J.txt を英訳するのが先で、その翻訳を優先させるように考えを変えました。次の優先度は Inside Basic の英語版にします。

毎度お手数おかけします。m(_ _)m



Ver 0.99qですが、案の定、バグというか、Exp()コマンドがエンバグしていたのが見つかりましたので差し替えです(^^;
修正ついでに、行列の文字列化は$だけとしました。
あと、SysCallとCallコマンドは関数コマンド化しました。

アドイン版 C.Basic ver.0.99q テスト版 その9.9q(3桁区切り+メモリ操作対応版)
http://pm.matrix.jp/CB/CBASIC099q.zip

・アドレス演算子&の追加により、Mat行列の文字列化は$のみに変更しました。

・SysCallとCallコマンドをSysCall(),Call()のように関数コマンドとしました。
(書式)SysCall( システムコール番号, [引数1,][引数2,][引数3,][引数4] )
(例)SysCall( 0x763,A,B,C,D )→R
 A→R4レジスタ、A→R5レジスタ、A→R6レジスタ、A→R7レジスタ、システムコール0x30を呼び出し返り値がRに入ります。
 システムコール0x30はSDKのBdisp_DrawLineVRAMと同じです。

(書式)Call(マシン語アドレス, [引数1,][引数2,][引数3,][引数4] )
(例)Call( 0x8802F000,A,B,C,D )→R
 A→R4レジスタ、A→R5レジスタ、A→R6レジスタ、A→R7レジスタ、0x8802F000番地にあるマシン語プログラムを呼び出し返り値がRに入ります。

Re: Re:Re: アドイン版 C.Basic ver.0.99q テスト版 その9.9q(3桁区切り+メモリ操作対応版)

sentaro様

Ver 0.99q に同梱されている Manual_J.txt を久しぶりに拝見すると、ほぼ完成されたマニュアルであることに、今更ながら気がつきました。

そこで、アドインCasio Basic のトップページを修正して、C.Basic の使い方については、このマニュアルを殺傷するように変更し、併せて Readme_J.txt も参照してみあるようにしました。

http://egadget.blog.fc2.com/blog-entry-495.html


併せて、英語版コマンドリファレンスのトップページに、新たに追加されたコマンドを、先ずは項目だけ追加しました。

http://egadget.blog.fc2.com/blog-entry-529.html


こうしてみると、C.Basic を海外へ紹介するには、先ずは Manual_J.txt を英訳するのが先で、その翻訳を優先させるように考えを変えました。次の優先度は Inside Basic の英語版にします。


Re:Re: アドイン版 C.Basic ver.0.99q テスト版 その9.9q(3桁区切り+メモリ操作対応版)

管理人様、こんにちは!

>根本的な部分を触ると、意外なバグが見つかるものですね(^^;

はい、同じ箇所で堂々巡りしていたようで、全体的に見直さないと気が付きにくいこともありますね(^^;


>この機能を早速使わせて頂こうと思います。

バグが潜んでる可能性もありますので例によって厳しいチェックお願いします(^^;


>Casio Basic入門で、久々に fx-5800P 用プログラムのネタを書こうと思っています。
>最近の低金利(マイナス金利)のおかげで、高額な買い物のローンやローンの借り換えを検討している人が身の回りに結構いて、その一人が fx-5800P を持っているので、複利計算のプログラムを作って差し上げました。
>元金、金利、返済年数から、返済総額や月々の返済額をパッパと表示するプログラムで、条件を変えた時に見やすいようにしたので、好評です。
>そこで、そのプログラムをネタにしようと思っています。

fx-5800Pを最大限に活かした管理人様のプログラムがポイントですね(^^)


>さらに、C.Basic で3桁区切り機能を付加してみようと思っています。Casio Basic入門で、C.Basicを導入できないかと、考え中です。

C.Basicが実用領域で守備範囲が広がるとしたら嬉しいです(^^)
3桁区切りに関してはC.Basicでは3桁区切りはサクッと文字列処理で済ましてるのですが、Locateコマンドがあればfx-5800Pでも力技で3桁区切り表示は実現可能だと思われるので、CasioBasicの出力サブルーチンとしても面白い題材になるかもですね。


>これは、Str コマンドとは別に Str( ) ということですね!

はい、昔のBasicで言うところの数値を文字列化するSTR$()なのですが、これは本来は純正CasioBasicで標準装備されてるべき関数のはずですが、Exp>Str()関数がSTR$()と違うと知ってがっかりした人が少なからずいたと思われます(^^;


>N88 Basic でバリバリプログラムを作っていた人には朗報かも知れませんね。

コンパイラ前提CPUのSH3/4でオリジナルのマシン語サブルーチンを作成するのはかなり骨が折れそうですけど、OS内蔵システムコールが使えるようになったことで、Cで作るアドイン並の自由度が確保できると思われます(^^)


>個人的には、サブルーチン呼び出しを 配列を使ってインデックスで指定できると面白いと思います。

配列の参照渡しですよね?
アドレス演算子&と間接演算子*でポインタ渡しが出来るようになった今、どう実装するかしばし悩み中です(^^;


>文字列指定の $ と & が両立するのであれば良いのですが、そうでない場合は、早めに文字列指定の & を廃止するのが良いかも知れませんね。

そうですね。
現状ではコマンドや文字列が必要な箇所に&がある場合は文字列指定となり、数式内であればアドレス演算子となる仕様ですが、&を使う場所で違う機能になるのはかなりややこしいので、今後は文字列指定は$だけということにしたいと思います(^^)

Re: アドイン版 C.Basic ver.0.99q テスト版 その9.9q(3桁区切り+メモリ操作対応版)

sentaro様

遅くなってすみません。

着々と開発を進めて頂いて、本当にありがとうございます。


> CG20版は相変わらず進歩状況が遅れ気味ですけど(汗)移植の傍らいくつかのバグが見つかったので修正です(^^;

根本的な部分を触ると、意外なバグが見つかるものですね(^^;


> 負数で正常に動かなかったEngモードのバグはお恥ずかしい限りですけど、修正ついでに3桁区切りを仕込んでみました。
> ENGの拡張仕様となっていますのでセットアップで設定できます。
> 3桁区切り表示は区切り文字でまるまる1キャラ分使ってしまうのでJP900に比較すると若干間延びした表示になっています(^^;

この機能を早速使わせて頂こうと思います。

Casio Basic入門で、久々に fx-5800P 用プログラムのネタを書こうと思っています。
最近の低金利(マイナス金利)のおかげで、高額な買い物のローンやローンの借り換えを検討している人が身の回りに結構いて、その一人が fx-5800P を持っているので、複利計算のプログラムを作って差し上げました。
元金、金利、返済年数から、返済総額や月々の返済額をパッパと表示するプログラムで、条件を変えた時に見やすいようにしたので、好評です。

そこで、そのプログラムをネタにしようと思っています。

さらに、C.Basic で3桁区切り機能を付加してみようと思っています。Casio Basic入門で、C.Basicを導入できないかと、考え中です。


> それからCasioBasic仕様で文字列化するStr()コマンドを追加しました。

これは、Str コマンドとは別に Str( ) ということですね!



> あと、実用性は微妙なところですが、コンパイラ等への実験も兼ねてマシン語関連コマンドを実装してみました。
> これでちょっと危ない言語と化してしまいますが、コマンド化されていないシステムコールがC.Basicで利用できることになります。

N88 Basic でバリバリプログラムを作っていた人には朗報かも知れませんね。

個人的には、サブルーチン呼び出しを 配列を使ってインデックスで指定できると面白いと思います。


> それに関連してC言語仕様のアドレス演算子&と間接演算子*を追加したので、行列の文字列化の&とかぶってしまいますので、文字列化は$だけとして区別した方がよいかもしれませんが今のところは文字列&も従来仕様のままです。

文字列指定の $ と & が両立するのであれば良いのですが、そうでない場合は、早めに文字列指定の & を廃止するのが良いかも知れませんね。

今回のバージョンアップの新機能を全部触れていませんが、取り急ぎお礼とともに、コメントさせて頂きます。

アドイン版 C.Basic ver.0.99q テスト版 その9.9q(3桁区切り+メモリ操作対応版)

管理人様、ガノー様、こんにちは!

CG20版は相変わらず進歩状況が遅れ気味ですけど(汗)移植の傍らいくつかのバグが見つかったので修正です(^^;
負数で正常に動かなかったEngモードのバグはお恥ずかしい限りですけど、修正ついでに3桁区切りを仕込んでみました。
ENGの拡張仕様となっていますのでセットアップで設定できます。
3桁区切り表示は区切り文字でまるまる1キャラ分使ってしまうのでJP900に比較すると若干間延びした表示になっています(^^;

それからCasioBasic仕様で文字列化するStr()コマンドを追加しました。

あと、実用性は微妙なところですが、コンパイラ等への実験も兼ねてマシン語関連コマンドを実装してみました。
これでちょっと危ない言語と化してしまいますが、コマンド化されていないシステムコールがC.Basicで利用できることになります。
それに関連してC言語仕様のアドレス演算子&と間接演算子*を追加したので、行列の文字列化の&とかぶってしまいますので、文字列化は$だけとして区別した方がよいかもしれませんが今のところは文字列&も従来仕様のままです。


CG20版の開発は新しいOS2.02に対応したエミュレータの90日体験版が使えるようになったので少しは便利になりそうです。
https://www.cemetech.net/forum/viewtopic.php?t=12855

例のシステムエラーはCG移植のためにソースを見直しているうちに原因らしきものが見つかったのでおそらく解消できたのではと思ってますが、まだ油断は出来ません(^^;



アドイン版 C.Basic ver.0.99q テスト版 その9.9q(3桁区切り+メモリ操作対応版)
http://pm.matrix.jp/CB/CBASIC099q.zip

・ENGモードで負数の場合、動作しなかったのを修正しました。
・ENGモードの拡張で3桁区切り表示に対応しました。
 セットアップで[F4](Eng)を押すと、ENGオフ、ENGオン(/E)、3桁区切り(/3)と切り替わります。
 コマンドで3桁区切りを指定するには、EngOn直後に数字の3を付けて、
 EngOn3
 以後3桁区切り出力になります。
 その時のENGの返す値は3になります。(ENGオフ:0 ENGオン:1 3桁区切り:3)

・数値をC.Basic書式で文字列化するStr()コマンドを追加しました。
 Sprintf()コマンドはC言語仕様での書式出力となりますが、Str()ではC.Basic設定(Fix,Sci,Norm,ENG等)によって出力書式が決定されます。
(例)Str(-123.4567)→Str 1
-123.4567を文字列化"-123.4567"して文字列変数Str 1に代入します。

・変数リスト表示で16進数表示に対応しました。
 整数変数はそのまま16進数表示になりますが、実数変数はその値が整数32ビット範囲に収まる場合のみ16進数表示にできます。


・マシン語を直接扱うためのコマンドとしてPeek(、Poke(、Call、SysCall、
 変数とソースアドレスを返すVarPtr(、ProgPtr(コマンド、
 C言語同様のアドレス演算子&、間接演算子*をサポートしました。

(例)Peek(0x8802E000).B→A%
(例)*(0x8802E000).B→A%
 0x8802E000番地の内容をバイト(1バイト)で読み出し、整数変数A%に代入します。
(例)Peek(0x8802E000).W→A%
 0x8802E000番地の内容をワード(2バイト)で読み出し、整数変数A%に代入します。
(例)Peek(0x8802E000).L→A%
 0x8802E000番地の内容をロングワード(4バイト)で読み出し、整数変数A%に代入します。
(例)Peek(0x8802E000).F→A
 0x8802E000番地の内容を倍精度実数(8バイト)で読み出し、変数Aに代入します。

(例)Poke(0x8802E000).B,A%
(例)A%→Poke(0x8802E000).B
(例)A%→*(0x8802E000).B
 整数変数A%の値を、0x8802E000番地にバイト(1バイト)書き込みします。
(例)Poke(0x8802E000).W,A%
 整数変数A%の値を、0x8802E000番地にワード(2バイト)書き込みします。
(例)Poke(0x8802E000).L,A%
 整数変数A%の値を、0x8802E000番地にロングワード(4バイト)書き込みします。
(例)Poke(0x8802E000).F,A
 実数変数Aの値を、0x8802E000番地に倍精度実数(8バイト)書き込みします。

(例)Call 0x8802F000,A,B,C,D
 A→R4レジスタ、A→R5レジスタ、A→R6レジスタ、A→R7レジスタ、0x8802F000番地にあるマシン語プログラムを呼び出します。

(例)SysCall 0x30,A,B,C,D
 A→R4レジスタ、A→R5レジスタ、A→R6レジスタ、A→R7レジスタ、システムコール0x30を呼び出します。
 システムコール0x30はSDKのBdisp_DrawLineVRAMと同じです。画面にラインを描きます。

(例)VarPtr(A%)
(例)&A%
 整数変数A%の変数のアドレスが返ります。
(例)VarPtr(Mat A)
(例)&Mat A
 行列Aの先頭アドレスが返ります。
(例)VarPtr(Mat A[20,10])
 行列A[20,10]の値が格納されているアドレスが返ります。

(例)Poke VarPtr(A%),B%
(例)*(&B%)→*(&A%)
 B%→A%と同じです。

(例)ProgPtr()
 現在のプログラムが格納されているアドレスを返します。

Re:Re: Re:Re: Re:Re: アドイン版 C.Basic ver.0.99p テスト版 その9.9p(パスワード対応版)

管理人様、こんにちは!

>自分のソースにプロテクトかけることが全く無いので、これについては私は知りませんでした。

見られると困るようなデータが含まれている場合とか、盗まれると困るような斬新なアルゴリズム採用のプログラムだったりとか、ゲームだと他の人に遊んでもらう場合にプログラムを勝手に改造されないようにプロテクトする意味もあるでしょうけど、個人レベルで使う限りはプロテクトはほとんど必要無いですよね(^^;


>話は脱線しますが、以前PCソフトでプロテクトかけてシェアウェアを公開していたことがあります。warez とかなんとかいうサイトで、パッケージソフトや有名シェアウェアのパスワードをクラックして公開しているところがあって、そこに私のシェアウェアのパスワードもクラックされ公開されていました。妙なことに有名ソフトに入れてもらってありがとう!って思って全然腹が立ちませんでした。

パスワード外して使いたいくらい値打ちがあるソフトに仲間入りということすよね(^^)


>そうですか、厄介そうですが、そのうち解決するまで楽しみにお待ち申し上げます。

見当違いのバグ探しをしている可能性もあるので、とりあえず完全解決は後回しになっているのですが、バージョンアップのついでに何かの拍子にバグが見つかる可能性にかけてます(^^;


>話は変わりますが、個人的には、fx-9860GII のコンパイラ版よりも、fx-CG20/10 のインタプリタ版が先に登場して欲しいと思っています。

コンパイラはまだ実験中の域を出てないですし、SDKがあっても敷居がかなり上がるので、間違いなく、fx-CG20/10のインタプリタ版が先になると思います。
fx-CG20/10にはSDKがないのでデバッグ作業が実機での検証頼みで想像以上に大変というか手間なのですが、なんとか早々に動く版を仕上げたいと思っています(^^)


>ところで、来週チョット無茶ぶりの仕事が入っているので、しばらく沈んでいると思います。

おつかれさまです!
私の方もちょこちょこバタバタしている状況ではありますが、
fx-CG20/10版の作業を重点的にスピードアップしていきますね(^^)

Re: Re:Re: Re:Re: アドイン版 C.Basic ver.0.99p テスト版 その9.9p(パスワード対応版)

sentaro様

> fx-9860GIIの場合は、新規入力時にパスワードを設定してしまったらデバッグや編集する都度パスワード入力が求められるようになってしまうので、これが自在に解除できないとなるとイマイチですよね。
> このあたりはバージョンアップで修正されてもいい部分だと思うのですが、これもCG10/20との差別化の一貫ということなのでしょう(^^;

自分のソースにプロテクトかけることが全く無いので、これについては私は知りませんでした。
シェアウェアや有償プログラムとして配布する際にプロテクトかける可能性はありますが、今のところそんなプログラムを作っていないので...

話は脱線しますが、以前PCソフトでプロテクトかけてシェアウェアを公開していたことがあります。warez とかなんとかいうサイトで、パッケージソフトや有名シェアウェアのパスワードをクラックして公開しているところがあって、そこに私のシェアウェアのパスワードもクラックされ公開されていました。妙なことに有名ソフトに入れてもらってありがとう!って思って全然腹が立ちませんでした。

一方で、fx-9860GII のCasio Basicプログラムにプロテクトかける意味は殆どないかも知れないので、fx-CG20/10で仕様変更したのは正しい判断だと思います。


> システムエラーは以前からちょこちょこ出ていたので、たぶんC.basicのどこかでエラーが起きているのは間違いないです。
> SDKのステップ実行でエラーになるまで追いかけてみるとメモリ解放がバグってるような動作をするので、はっきりした原因が未だに掴みきれていません(^^;
> ですので、とりあえずはメモリ解放が怪しいということで、メモリ解放を出来るだけ避けるようにしてみたのが最新バージョンとなっています。

そうですか、厄介そうですが、そのうち解決するまで楽しみにお待ち申し上げます。


話は変わりますが、個人的には、fx-9860GII のコンパイラ版よりも、fx-CG20/10 のインタプリタ版が先に登場して欲しいと思っています。

ところで、来週チョット無茶ぶりの仕事が入っているので、しばらく沈んでいると思います。

Re:Re: Re:Re: アドイン版 C.Basic ver.0.99p テスト版 その9.9p(パスワード対応版)

管理人様、こんにちは!

>fx-CG10/20互換ということなのですね。

はい!
以前からパスワード機能は使わないので何も気にしてなかったのですが、後で設定/解除が出来るようになっていたのはCG10/20からでした(^^;

fx-9860GIIの場合は、新規入力時にパスワードを設定してしまったらデバッグや編集する都度パスワード入力が求められるようになってしまうので、これが自在に解除できないとなるとイマイチですよね。
このあたりはバージョンアップで修正されてもいい部分だと思うのですが、これもCG10/20との差別化の一貫ということなのでしょう(^^;


>ひょっとして、OSか純正アドインが、何かお行儀の悪いことをして、本来使うべきでないメモリ領域にアクセスしているということが有るというような可能性が考えられるのでしょうか?

システムエラーは以前からちょこちょこ出ていたので、たぶんC.basicのどこかでエラーが起きているのは間違いないです。
SDKのステップ実行でエラーになるまで追いかけてみるとメモリ解放がバグってるような動作をするので、はっきりした原因が未だに掴みきれていません(^^;
ですので、とりあえずはメモリ解放が怪しいということで、メモリ解放を出来るだけ避けるようにしてみたのが最新バージョンとなっています。

Re: Re:Re: アドイン版 C.Basic ver.0.99p テスト版 その9.9p(パスワード対応版)

sentaro様

> ちなみにfx-9860GIIでは純正でもパスワードの後からの設定や解除が出来ないので、そこのあたりの仕様はCG10/20互換となっています(^^)

fx-CG10/20互換ということなのですね。


> システムエラーになる原因のメモリの確保/解放を出来るだけ減らすような対策をしてみました。

ひょっとして、OSか純正アドインが、何かお行儀の悪いことをして、本来使うべきでないメモリ領域にアクセスしているということが有るというような可能性が考えられるのでしょうか?

Re:Re: アドイン版 C.Basic ver.0.99p テスト版 その9.9p(パスワード対応版)

管理人様、出張おつかれさまです!

>互換性確保が確実にまた一歩進みましたね!

パスワードはg1mをバイナリエディタで開けば一目瞭然なので簡単なパスワードロジックですけど、g1mファイルの互換性の観点からはやはり外せませんね。
ちなみにfx-9860GIIでは純正でもパスワードの後からの設定や解除が出来ないので、そこのあたりの仕様はCG10/20互換となっています(^^)


>以前頻発していたエラーですが、Use Hidn RAM を off にして、文法エラーが発生するプログラムファイルの保存やリネームで、今のところシステムエラーが発生していません。確実に改善しているようです。

まだはっきりとした原因が分からないので根本的な対策ではないのですが、(^^;
システムエラーになる原因のメモリの確保/解放を出来るだけ減らすような対策をしてみました。

管理人様のところでもシステムエラーが発生しなくなったとのことなので、まずは一安心です(^^)


>もう少し触ってみてからまた報告致しますね。

よろしくお願いいたします(^^)

Re: アドイン版 C.Basic ver.0.99p テスト版 その9.9p(パスワード対応版)

sentaro様

0.99pへのバージョンアップ、ありがあとうございます。

昨日から出張に出かけていて、この1週間はおそらく電卓でプログラミングをする機会がなさそうです。



> 現状あまり意味が無い機能といえますが、純正同様のパスワード機能に対応しました。
> 純正互換ファイルが扱えるので一応です…(^^;

互換性確保が確実にまた一歩進みましたね!



> あと、隠しメモリを使わない場合のシステムエラーがなるべく出ないように対策してみたのですが、どうでしょうか?

以前頻発していたエラーですが、Use Hidn RAM を off にして、文法エラーが発生するプログラムファイルの保存やリネームで、今のところシステムエラーが発生していません。確実に改善しているようです。

もう少し触ってみてからまた報告致しますね。


アドイン版 C.Basic ver.0.99p テスト版 その9.9p(パスワード対応版)

管理人様、ガノー様、こんにちは!

>YOKOLITHプレイして頂きありがとうございます。レベル10は・・・実はこれでも簡単にしてあるんですよぉ(小声)。レベル10の調整前21000点前後→95最終版26000点前後までいけるようにしました(笑)。

な、なんと!最高26000点まで!!
今のところ平均12000点くらいで、ピースの運が良ければ15000点超えというところなので、20000点を超えるにはレベル10をなんとか乗り越えないとですね(^^;


>で、最近触り直してみて、キーリピート制御辺りが気に食わないので、その調整を絡めて、ついでにレベル9と10の差を減らそうと思います。また、EXITですが、開発当初は特に自分は遭遇したことは無かったのですが、最近触り直したらやられました(笑)。

レベル10がレベル9に近づく方向になってくれるとありがたいです(^^;

[EXIT]はカーソルキーの横で[sin]の上なので微妙な位置にありますね(^^;



それでは、oの次はpということで…
現状あまり意味が無い機能といえますが、純正同様のパスワード機能に対応しました。
純正互換ファイルが扱えるので一応です…(^^;
あと、隠しメモリを使わない場合のシステムエラーがなるべく出ないように対策してみたのですが、どうでしょうか?


アドイン版 C.Basic ver.0.99p テスト版 その9.9p(パスワード対応版)
http://pm.matrix.jp/CB/CBASIC099p.zip
・純正CasioBasic互換仕様のパスワードに対応しました。
 新規ファイル名の入力時に[F1]でパスワード入力できます。
 ファイルリストモードで[SHIFT]+[F4]でパスワードの設定/解除が出来ます。
 パスワードの設定されたファイルは、実行時は何も影響ありませんが、
 編集時およびデバッグ時はパスワード入力が必要となります。

No title

管理人様、sentaro様

YOKOLITHプレイして頂きありがとうございます。レベル10は・・・実はこれでも簡単にしてあるんですよぉ(小声)。レベル10の調整前21000点前後→95最終版26000点前後までいけるようにしました(笑)。

※アクションゲームは苦手でも、実はテトリスだけは得意だったりします(スーパーマリオで1面をノーミスで一度もクリアした記憶が無い)

で、最近触り直してみて、キーリピート制御辺りが気に食わないので、その調整を絡めて、ついでにレベル9と10の差を減らそうと思います。また、EXITですが、開発当初は特に自分は遭遇したことは無かったのですが、最近触り直したらやられました(笑)。

やっぱり、自分以外の第三者の意見はありがたいですね!

KEYWAITをGetkey3に置き換えたり、描画を見なおしたり、キー制御を変えたり結構変えているので、名称もYOKOLITH99に変更しようと思います。

Re:Re: インデックスベースの個別設定+テキストFKeyMenu()

管理人様、こんにちは!

>わぉ、さすがですね。私は昔からゲームを殆どやらない上に、ド下手なので我が家のゲーマー達とたまにゲームをやっても話になりません。レーシングゲームをやるよりは実車でサーキット走ったり(下手ですがA級ライセンス持ってました、今は失効中ですが(^^;)、荒野を四駆で走り回る(e-Gadgetのプロフィールの写真はイギリスでLand Roberで泥んこ遊びをやった時のもの)とか、射撃ゲームよりは実際に射撃をしたり(アメリカ出張時のお楽しみ)...指先は不器用ではないと思うのですが、肌で感じられないのは苦手というか、どうもゲームとなるとダメです。

昔からビデオゲーム系はとりあえず一通りはやってましたがあまり得意とは言えないレベルだったです(^^;
管理人様はリアル派なのですね。
A級ライセンスでサーキットや本物射撃はちょっとすごすぎますね!(^^)


>一方、C.Basic では、前のバージョンではエラーになったのですが、今回の最新バージョンではエラーになりません。

>これは、意図的に修正されたのでしょうか?それとも何か設定によるものなのでしょうか?
>エラーにならないのは純正との互換ということで、問題無いと思うのですが、以前はエラーになっていたので、チョット質問です。

行列は出来る限り互換という感じで完全互換ではないのでちょこちょこ互換性のない部分がありますね(^^;

現在のC.Basicでは
Mat B→Mat A
の部分でも互換が無くなっているわけなのですが、
この例ではMat Aの方がインデックスサイズが小さいのでMat Bからコピーする時に以前のバージョンではエラーになっていました(^^;
今のバージョンではそこのところをコピーできる範囲だけのコピー出来るようにしたのでエラーは出なくなりましたが、行列の拡張をしないので完全互換ではないです(^^;
これは行列の開放と確保を繰り返すとメモリ断片化が起きてしまうので、出来るだけ再確保しないようにしているためです。
ちなみに行列の確保を繰り返した場合は、再確保時のインデックスサイズが増えない限り前に確保されていた領域をを開放/再確保することなく再利用します。
ということで、この場合の対処としては予想される最大サイズの行列を最初に確保しておけばいいだけなので…、
そういう仕様になっています(^^;

Re: インデックスベースの個別設定+テキストFKeyMenu()

sentaro様

バージョンアップ、ありがとうございます。

取りあえず、LIFE074 でのTextコマンドの現象を確認の上、Setupかプログラム中で RefshCtrl 0 によりリフレッシュの問題が回避されることを確認致しました。

また、FKeyFincのテキスト画面対応もありがとうございます。


> >ところで、YOKOLITH95完成版ですが、今更ではありますがハマってます。
> >ハイスコアー 8947 までいきましたが、LEVEL10 になると殆ど追従不可能な速さで落ちてきます。なのでLEVEL9までの間にいかにポイントを稼ぐか...ですね(^^;
>
> YOKOLITH95は面白いですね。
> 毎度、動作チェックで起動したらついついハマってしまってデバッグになりません(^^;
> ハイスコアはLEVEL10になるまでにほぼ4段消しの連続でやっとこ15000点くらいまで行きましたがLEVEL10になった途端あっけなく終了です(^^;


わぉ、さすがですね。私は昔からゲームを殆どやらない上に、ド下手なので我が家のゲーマー達とたまにゲームをやっても話になりません。レーシングゲームをやるよりは実車でサーキット走ったり(下手ですがA級ライセンス持ってました、今は失効中ですが(^^;)、荒野を四駆で走り回る(e-Gadgetのプロフィールの写真はイギリスでLand Roberで泥んこ遊びをやった時のもの)とか、射撃ゲームよりは実際に射撃をしたり(アメリカ出張時のお楽しみ)...指先は不器用ではないと思うのですが、肌で感じられないのは苦手というか、どうもゲームとなるとダメです。


> それからスピードが上がったり積み上がってきた時に焦って間違えて[EXIT]キーに触ってしまって、Bye!…ってことが(^^;

それ、たくさん経験しています(^^;



ところで、1つ質問があります。

{2,2}→Dim Mat A
{5,5}→Dim Mat B
Fill(2,Mat A)
Fill(5,Mat B)
Mat B→MatA

を純正で実行すると、Mat A が 5x5行列に拡張され全ての要素が 5 になります。

一方、C.Basic では、前のバージョンではエラーになったのですが、今回の最新バージョンではエラーになりません。

これは、意図的に修正されたのでしょうか?それとも何か設定によるものなのでしょうか?
エラーにならないのは純正との互換ということで、問題無いと思うのですが、以前はエラーになっていたので、チョット質問です。

Ver.0.99o差し替えです(^^;

ファイルの読み込み、書き込みのファイル名部分が拡張子込で8文字を超えると正常に動作しないバグを修正しました(^^;

SAMPLE.DAT
というファイル名だと10文字になってNGに…。

インデックスベースの個別設定+テキストFKeyMenu()

管理人様、ガノー様、こんにちは!

>ところで、YOKOLITH95完成版ですが、今更ではありますがハマってます。
>ハイスコアー 8947 までいきましたが、LEVEL10 になると殆ど追従不可能な速さで落ちてきます。なのでLEVEL9までの間にいかにポイントを稼ぐか...ですね(^^;

YOKOLITH95は面白いですね。
毎度、動作チェックで起動したらついついハマってしまってデバッグになりません(^^;
ハイスコアはLEVEL10になるまでにほぼ4段消しの連続でやっとこ15000点くらいまで行きましたがLEVEL10になった途端あっけなく終了です(^^;
それからスピードが上がったり積み上がってきた時に焦って間違えて[EXIT]キーに触ってしまって、Bye!…ってことが(^^;


>・Mat A.v で (0, 0) ~ (127, 63) 対応のビットマップ行列にするか

元々、VRAMは(0,0)-(127,63)なので1から始まるのはちょっと無理がありましたね。
0から固定したのでそこのあたりは何も悩むことは無くなりました(^^)

>・'#Mat 0 or '#Mat 1 を行列ごとに設定可能にするか、

行列ごとに確保時にベースを設定することが出来るようにしてみました。
行列確保時に末尾に0をつけると0ベース、1を付けると1ベースとなるので、デフォルトのベース設定を変更すること無く個別設定が出来ます。
(例){128,64}→Mat A.P0
 0ベースの行列を確保します。[0,0]-[127,63]
(例){128,64}→Mat A.P1
 1ベースの行列を確保します。[1,1]-[128,64]
0ベースと1ベースではインデックス範囲が1ずれるのでややこしいのですが、そこのところのエラーチェックはしっかりしているのでインデックス範囲外指定でメモリ破壊ということにはならないようになっています(^^;


>ところで、FKeyFunc() ですが、テキスト画面への描画機能を追加できませんか?
>これがやりたくて、前回のサンプルプログラムを作ったという側面もあったりします。

なんか、そういう感じがしてました(^^)
ということで、FKeyMenu()をテキスト画面にも描画できるように拡張してみました。


アドイン版 C.Basic ver.0.99o テスト版 その9.9o(リフレッシュコントロール設定可能+α2版)
http://pm.matrix.jp/CB/CBASIC099o.zip
・ファンクションメニュー描画コマンドFkeyMenu(をテキスト画面にも使えるようにしました。
 描画オプションの項目でTを指定すればテキスト画面描画となります。
(例)FkeyMenu(1,"ABC",T)
 テキスト画面の一番左側のファンクションメニューエリアにABCが描画されます。
(例)FkeyMenu(6,"ABC",TR)
 テキスト画面の一番右側のファンクションメニューエリアにABCが反転モードで描画されます。
(例)FkeyMenu(6,"",TC)
 テキスト画面の一番右側のファンクションメニューエリアを消去します。

・行列ごとに確保時にインデックスベースを設定することが出来るようにしました。
 行列確保時に末尾に0をつけると0ベース、1を付けると1ベースとなるので、デフォルトのベース設定を変更すること無く個別設定が出来ます。
(例){128,64}→Mat A.P0
 0ベースの行列を確保します。インデックスの範囲は[0,0]-[127,63]
(例){128,64}→Mat A.P1
 1ベースの行列を確保します。インデックスの範囲は[1,1]-[128,64]

Re: VRAM割当時の行列インデックスベースを0に固定化

sentaro様


VRAM周りを色々と触わりながら、どのような仕様が便利なのだろうか? とサンプルプログラムを色々と作っていました。

・Mat A.v で (0, 0) ~ (127, 63) 対応のビットマップ行列にするか

・'#Mat 0 or '#Mat 1 を行列ごとに設定可能にするか、

どちらかが良さそうだな...と私なりの感触をやっとこさ掴んだまさにそのタイミングで、sentaro様によるバージョンアップ!

今回の機能変更と .vT / .vG の機能追加のおかげで、全体がとても分かり易くなったと思います。

ありがとうございます!


ところで、FKeyFunc() ですが、テキスト画面への描画機能を追加できませんか?

これがやりたくて、前回のサンプルプログラムを作ったという側面もあったりします。

実用サイドから考えますと、テキストベースのプログラムが多いのではないかと感じております。私自身が日常に使う新しいプログラムを C.Basic で作って使っていますが、殆どがテキストベース。たまに簡単なビットマップパターンをテキスト画面に追加して使う感じです。なので、FKeyFinc( )をテキストベースで使えるかどうかは、プログラム利便性に大きくかかわるような気がしております。

ご検討をお願い致します。

Ver 0.99o はこれからダウンロードして検証致します。

YOKOLITH

ガノー様

> >電子工作
> 門外漢なのですが、現在挑戦中です^^;
> また、GIIの方が成功すればUSB/GPIOケーブルなるものがあるので、
> もしかしたらやれるかもしれませんので心に留めておきます。

うれしいです。ひよっとしたら...と思うと楽しみです(^_^)/
ありがとうございます。



> >YOKOLITH
> ソースを見なおした所、変数の説明(記録)が一部間違っているので(^^;)、
> 英訳・Matの開放処理等も含めて私がやろうと思います。
> ちょっと時間がかかるかもしれませんが、お待ち下さい。
>
> また、日本語の解説も私が作るのも吝かではありません(笑)ので、
> 気軽にお申し付け下さい。
> (英語は・・・日本語の解説を作ってからお願いするかもしれませんが・・・^^;)。

はい、ではしばらく成り行きを追いかけることに致します。

ところで、YOKOLITH95完成版ですが、今更ではありますがハマってます。
ハイスコアー 8947 までいきましたが、LEVEL10 になると殆ど追従不可能な速さで落ちてきます。なのでLEVEL9までの間にいかにポイントを稼ぐか...ですね(^^;

このようにハイスコアを保存してくれるのは、ハマる最大のポイントのように感じます。


VRAM割当時の行列インデックスベースを0に固定化

管理人様、ガノー様、こんにちは!

VRAMは128x64固定ということで、VRAM割当時の行列インデックスベースを0にして128x64の行列として固定化してみました。
それから、テキストとグラフィックのVRAM領域を行列に割り当てられるようにしてみました。
インデックスベースはデフォルトの1のままでも、VRAM行列だけが0から使えるだけで何も変わりはありませんが、VRAM行列を扱う場合は全体のベースを0にした方が何かと都合は良いかもしれません。

管理人様の先のテストプログラムはかなりすっきりします(^^)
------------------------------------------
 {128,64}→Mat T.vT  // テキスト専用VRAM領域を行列に割当
 {128,64}→Mat G.vG  // グラフィック専用VRAM領域を行列に割当
 {128,64}→Mat V.v   // VRAM領域を行列に割当
 ・・・
 グラフィック画面に描画する
 ・・・
 Mat Vから特定領域をMat Tに追加する。(演算処理)
 ・・・
 Screen.T     // VRAMをテキストに設定。(内部ではVRAMをグラフィックVRAMに転送保存してテキストVRAMをVRAMに転送)
 PutDispDD    // VRAMをLCDに転送=表示
------------------------------------------

次のようにすることもできます。
------------------------------------------
 {128,64}→Mat T.vT  // テキスト専用VRAM領域を行列に割当
 {128,64}→Mat G.vG  // グラフィック専用VRAM領域を行列に割当
 {128,64}→Mat V.v   // VRAM領域を行列に割当
 ・・・
 グラフィック画面に描画する
 ・・・
 Screen.T     // VRAMをテキストに設定。(内部ではVRAMをグラフィックVRAMに転送保存してテキストVRAMをVRAMに転送)
 Mat Gから特定領域をMat Vに追加する。(演算処理)
 ・・・
 PutDispDD    // VRAMをLCDに転送=表示
------------------------------------------

さらに、こういう形でも出来ます。
------------------------------------------
 {128,64}→Mat T.vT  // テキスト専用VRAM領域を行列に割当
 {128,64}→Mat G.vG  // グラフィック専用VRAM領域を行列に割当
 {128,64}→Mat V.v   // VRAM領域を行列に割当

 Screen.G     // VRAMをグラフィックに設定。(内部ではVRAMをテキストVRAMに転送保存してグラフィックVRAMをVRAMに転送)
 Mat T→Mat V   // テキスト専用VRAM領域を現在のVRAM(=グラフィック)にコピーします。グラフィック画面はテキスト画面と同じになります。
 ・・・
 画面モードはグラフィック画面なので通常のグラフィックコマンドでグラフィックを描きます!
 ・・・
 Mat V→Mat T   // 現在のVRAM(=グラフィック)をテキスト専用VRAM領域にコピーします。
 Screen.T     // VRAMをテキストに設定。(内部ではVRAMをグラフィックVRAMに転送保存してテキストVRAMをVRAMに転送)
 PutDispDD    // VRAMをLCDに転送=表示
------------------------------------------

グラフィックコマンドをテキスト画面に描画させる形になるので便利かもしれません(^^)

ちなみに、
Screen.Tは
Mat V→Mat G
Mat T→Mat V
Screen.Gは
Mat V→Mat T
Mat G→Mat V
と同じ処理をしていることになります。




>おおお、ありがとうございます!早速ダウンロードさせて頂きます!
>というか、YOKOLITHはグラフィック制御を最新の事情に合わせて
>改造しようと思います。せっかくですし!

グラフィック制御は、自在に出来るようになりましたけど、
全モード共通の構文として、
「:」(コロン)で画面更新無し、
「;」(セミコロン)で強制リフレッシュコントロール、
となっていますが、
画面更新したいタイミングでPutDispDDを使う方式ならば、すべての描画コマンドは「:」(コロン)付加で良いと思われます(^^)

例によってバグ残ってる可能性大なので厳しいチェックお願いします(^^;


GetKey3でバグも見つかりましたので、ver.0.99o差し替えです。

アドイン版 C.Basic ver.0.99o テスト版 その9.9o(リフレッシュコントロール設定可能+α版)
http://pm.matrix.jp/CB/CBASIC099o.zip
・行列にVRAMを割り当てる場合は、常にインデックスは0から始まりサイズを{128,64}固定としました。
 さらに、テキストVRAM保存領域とグラフィックVRAM保存領域を行列に割り当てることができるようになりました。
 (例){128,64}→Dim Mat T.vT
  テキストVRAM保存エリアをMat Tに割り当てます。インデックスのとる値は0~127、0~63となります。
  現在のVRAMがグラフィックVRAMの場合、Mat Tに演算処理してScreen.TコマンドでVRAMをテキスト画面にするとMat Tの内容がVRAMに転送されます。
 (例){128,64}→Dim Mat G.vG
  グラフィックVRAM保存エリアをMat Gに割り当てます。インデックスのとる値は0~127、0~63となります。
  現在のVRAMがテキストVRAMの場合、Mat Tに演算処理してScreen.GコマンドでVRAMをグラフィック画面にするとMat Gの内容がVRAMに転送されます。
  表示をするにはPutDispDDコマンドを使用して下さい。

・GetKey3でキー入力が上手くいかない不具合があったのを修正しました。

No title

TO:管理人様

>電子工作
門外漢なのですが、現在挑戦中です^^;
また、GIIの方が成功すればUSB/GPIOケーブルなるものがあるので、
もしかしたらやれるかもしれませんので心に留めておきます。

>YOKOLITH
ソースを見なおした所、変数の説明(記録)が一部間違っているので(^^;)、
英訳・Matの開放処理等も含めて私がやろうと思います。
ちょっと時間がかかるかもしれませんが、お待ち下さい。

また、日本語の解説も私が作るのも吝かではありません(笑)ので、
気軽にお申し付け下さい。
(英語は・・・日本語の解説を作ってからお願いするかもしれませんが・・・^^;)。


TO sentaro様
おおお、ありがとうございます!早速ダウンロードさせて頂きます!
というか、YOKOLITHはグラフィック制御を最新の事情に合わせて
改造しようと思います。せっかくですし!

以上、よろしくお願いします。

アドイン版 C.Basic ver.0.99o テスト版 その9.9o(リフレッシュコントロール設定可能+α版)

管理人様、こんにちは!

昨日のレスで抜けていたのですが(^^;

>仕様の統一性を考えれば、おっしゃるように Locate/Text も他と同じにリフレッシュコントロール任せが良いかも知れませんね。

一度全部リフレッシュコントロールにしてみたところ、ライフゲームの最初のTextコマンドの説明が未完となる不具合が出ました(^^;
ということで、どうにも決めかねるので自由に設定できるようにしてみました(^^;


>で、まとめての質問になりますが、実数モードでのグラフィックスコマンドは純正互換で、整数モードでは PxlOn, PxlOff, PxlChg のみが、プロットのみで X, Y の計算無し、ということでよろしいでしょうか?

はい、互換の無くなるのは絶対座標系のPxl系コマンドのみとなってます。


>そこで、以下のようなサンプルプログラムを作ってみたところ、妙な動作に出くわしました。グラフィックスVRAMから 1bit仮想行列へのコピー で、VRAMの1番上のラインのビットデータが正しくコピーされていないような現象があるかも知れません。ご確認頂けますか?
確認しました。
これはたしかに妙な動作です(^^;

ですが、妙な動作の原因はこの部分です。
-----------------------------------------------------------
//ファンクションキーで、テキスト/グラフィックス画面の切替
//[EXIT]で終了
While 1
Getkey1→K
If K=59:Then
 Mat G→Mat V // テキスト画面のままVRAM転送(上書き)したのでテキスト上の1ラインが残ってしまった。
 PutDispDD //念のため
ElseIf K=69:Then
 Mat T→MatV // ここは問題ありません。
 PutDispDD //念のため
ElseIf K=70:Then
 ClrMat T:ClrMat G
 ClrText:ClrGraph
 Return
IfEnd
WhileEnd
-----------------------------------------------------------

つまり画像の書き換え範囲が[0,0]-[127,63]ではなくて[1,1]-[127,63]なので左端と最上部の1ラインが書き換え範囲対象外となります。
ここが肝なのですがテキストコマンドは[0,0]-[127,63]の全部の範囲で描画するので[1,1]-[127,63]の範囲だけが描画エリアのグラフィック画面とは上と左の1ラインだけ大きさが違うということですね。
この妙な動作を解消するには
Mat G→Mat V の前に、
Screen.Gが必要というわけです(^^)




ガノー様、おひさしぶりです!

>最近はRaspberry Piという小型LinuxPCに浮気をしていました。
>現状は純正CasioBasicの通信とRaspberry Piを通信させて遊ぼうと奮闘しています(ケーブル自作から始めてます)。
>最終的にはfx-9860GII→MML→Raspberry PiでBGM再生をしたいと思っています^^;

RasPiいいですね~(^^)
いずれ手を出そうと思っているうちにどんどん新バージョンが出てちょっと焦ってます(^^;
通信となるとRS232Cの通信コマンドも純正同様にサポートしないといけないですね。
次回以降バージョンで検討してみます(^^)


>1.前回検索したワードを、次に検索するときにも引き継ぐようにして欲しいです

検索開始時に検索文字列を初期化していたので、それを初期化しないようにしてみました。


>2.検索ワードに、C.Basicのコマンドも設定して検索できるとありがたいです。

これは、隠し機能というわけではなかったのですが、以前より文字列入力時に[F3]を押せばコマンドが入力できます(^^)


>3.検索時に、編集画面で設定している「小文字/大文字」の状態も引き継いで欲しいです。

C.Basic起動時に大文字に設定される以外は大文字小文字切り替えを初期化しないようにしてみました。
ということでC.Basic起動中は設定が維持されます。


>4.ファイルの読み込み、書き込みの拡張子を設定できたらいいなー(ボソ)

んと、これは…Ver.0.96ぐらいから任意の拡張子が使えるようになってました(^^;
Ver.0.99n以降で任意のフォルダを含めた指定も可能になりました。
(例)Load("SUB/SAMPLE.dat")



ということで、
Ver.0.99nのシステムエラーバグがまだ残っている上に行列引数対応もまだなのですが、とりあえずバージョンを上げました(^^;


アドイン版 C.Basic ver.0.99o テスト版 その9.9o(リフレッシュコントロール設定可能+α版)
http://pm.matrix.jp/CB/CBASIC099o.zip
・画面のリフレッシュをマニュアル設定できるようになりました。セットアップとコマンドで設定できます。
 Off:リフレッシュコントロール無し。表示においては純正互換仕様です。
 Grp:グラフィックコマンドのみリフレッシュコントロール有り。ClrText,Locate,Text,LocateYX、””は無しで以前のバージョン互換です。
 All:すべての描画コマンドがリフレッシュコントロールされた表示となります。必要に応じてPutDispDDコマンドが必須となります。
 Time:リフレッシュコントール時間を設定します。n/128秒単位で画面更新します。デフォルトは3で約1/42秒での更新となっています。

・画面のリフレッシュをコマンドで設定できるRefrshCtrlとRefrshTimeコマンドを追加しました。
(例)RefrshCtrl 0
 リフレッシュコントロール無し。Off
(例)RefrshCtrl 1
 リフレッシュコントロール有り。Grpモードに設定します。
(例)RefrshCtrl 2
 すべてのリフレッシュコントロール有り。Allモードに設定します
(例)RefrshTime 5
 リフレッシュコントール時間を5に設定します。
 RefreshCtrlとRefrshTimeコマンドは式の中で使うと現在の値を返します。

・入力時のアルファベットの大文字小文字切り替えを初期化しないようにしました。起動時に大文字に設定される他は初期化されることがありません。。
・エディタのサーチ機能において、前回の検索文字列が再度表示されるように変更しました。[AC]でクリアできます。
・Save/Loadコマンドのファイル名の拡張子は任意に設定できます。省略した場合は[.bin]になります。

Re: お久しぶりです

ガノー様

お久しぶりです。

TwitterやAmazonのfx-9860GIIのレビューでお見かけしておりました。

Raspberry Piというと、とても安いので有名な基板むき出しのボードPCですよね。
これが、Linuz PCとは知りませんでした。子供向けと聞いていたので Basicだとばかり思っていました。


> 現状は純正CasioBasicの通信とRaspberry Piを通信させて遊ぼうと奮闘しています(ケーブル自作から始めてます)。
> 最終的にはfx-9860GII→MML→Raspberry PiでBGM再生をしたいと思っています^^;

電子工作も守備範囲なのですね。うらやましいです。

ならば、是非 fx-5800P とPCリンクするインターフェースなど開発されませんか?
ガッツリ要望むき出しですみません(^^;
just kidding...


実は、個人的にはご要望の4番が一番実現して欲しいと思ったりしています>sentaro様

あと、Yokolithの紹介が遅れています。
すみません。

実は、自作プログラムと同一あるいは類似のファイル名があるため、チョット面倒なことになっており、最近ようやくフォルダ対応をして頂いたところで、今頃ですが ほぼ毎日Yokolithで遊んでいます。
紹介ページについては、そろそろ作成致します。


現在、C.Basic Command Reference を英文で作成中だったりします。広く海外に伝えて、すばらしさを共有したいと思っているんですが、その際 Yokolithがとても良いサンプルプログラムになると思っています。なので、Yokolith95完成版 と拙作 ライフゲームを先ずはサンプルとして英文ページでも紹介したいと思っています。

そこで、お願いがありまして、コメント文を英訳してしまってよろしいでしょうか?

最近コードを拝見して勉強させてもらっていますが、英語版では、ついでにプログラム最後でClrMat で行列解放しちゃっても構いませんか?


お久しぶりです

管理人様、sentaro様、お久しぶりです。

最近はRaspberry Piという小型LinuxPCに浮気をしていました。
現状は純正CasioBasicの通信とRaspberry Piを通信させて遊ぼうと奮闘しています(ケーブル自作から始めてます)。
最終的にはfx-9860GII→MML→Raspberry PiでBGM再生をしたいと思っています^^;



さて、久々にC.Basicを利用していて少し要望が出てきたので書かせて下さいませ。要望は、主に検索関連です。

以前作ったYOKOLITHのコードを改造しようと久々にコードを見てみると、変数の用途をコメントに残しているとはいえ、使っている変数が多すぎて解析が大変(←おい^^;)でした。

↓↓↓以下要望↓↓↓

1.前回検索したワードを、次に検索するときにも引き継ぐようにして欲しいです
→例えば「a」を検索していて、目的の箇所にたどり着いて、修正し、その後改めて下方にある第二の目的の箇所を探す際に、再度検索ワードを設定し直す必要があり面倒です。そのため、再検索時に以前の検索ワードを引き継ぎつつ、F1等に検索ワードクリアを割り当てていただけると嬉しいです。

2.検索ワードに、C.Basicのコマンドも設定して検索できるとありがたいです。
→例えば「Prog」等と入れてコマンドのProgも検索できたらありがたいです。

3.検索時に、編集画面で設定している「小文字/大文字」の状態も引き継いで欲しいです。
→検索ワードで変更した「小文字/大文字」の切り替えが編集画面/検索画面で共通になってくれたら嬉しいです。大量の変数を使う人は少ないでしょうけど、この仕様なら大文字だけ使う人でも問題ないでしょうし、小文字も使っちゃう人でも問題ないと思うのです。


4.ファイルの読み込み、書き込みの拡張子を設定できたらいいなー(ボソ)
→拡張子に応じて自動でどうこうしてとは言いませんので(笑)

以上、4番目以外ご検討頂ければ幸いです。

Re: Re:2つのVRAM

sentaro様

VRAMまわりの詳細の解説を頂き、ありがとうございます。

スッキリと分かりました。

そこで、以下のようなサンプルプログラムを作ってみたところ、妙な動作に出くわしました。グラフィックスVRAMから 1bit仮想行列へのコピー で、VRAMの1番上のラインのビットデータが正しくコピーされていないような現象があるかも知れません。ご確認頂けますか?


' Matrix base: 1

{127,63}→Dim Mat T.p
{127,63}→Dim Mat G.p
{127,63}→Dim Mat V.v

'一旦テキスト画面
ClrText
"Text"
Screen.T //念のため
Mat V→Mat T

ClrGraph
Circle 0,0,2
Text 1,1,"Graphics"
FKeyMenu(1,"EXIT")
FKeyMenu(2,"TxtT")
FKeyMenu(3,"Grph")
Screen.G //念のため
Mat V→Mat G // ここで、Mat V と Mat G の一番上のラインのビットマップデータが違っている

//ファンクションメニューのビットマップをテキストVRAM用仮想行列へコピー
For 56→Y To 63
 For 1→C To 127
  //回りくどいが、実験のため仮想行列から仮想行列へコピー
  G[X,Y]→T[X,Y] //下から8ライン分のビットマップデータのみをコピー
 Next
Next
Screen.T
Mat T→Mat V // ここでは異常なし?

//ファンクションキーで、テキスト/グラフィックス画面の切替
//[EXIT]で終了
While 1
Getkey1→K
If K=59:Then
 Mat G→Mat V
 PutDispDD //念のため
ElseIf K=69:Then
 Mat T→MatV
 PutDispDD //念のため
ElseIf K=70:Then
 ClrMat T:ClrMat G
 ClrText:ClrGraph
 Return
IfEnd
WhileEnd

グラフィックス画面に切り替えると、テキスト画面の1ライン目が、グラフィック画面で表示されています。
[SHIFT][F2](Mat)の表列ビュワーで、各行列を調べてみると、VRAMバッファ行列から1bit仮想行列へのコピーでこの異常が発生しているように見えています。

調べてみて頂けませんか?


ところで...

> こうしてみると、
> VRAMの割当がテキスト、グラフィックで個別に出来るとなれば、
> ------------------------------------------
> {127,63}→Mat T.vT  // テキスト専用VRAM領域を行列に割当
> {127,63}→Mat G.vG  // グラフィック専用VRAM領域を行列に割当
> ・・・
> Mat Gから特定領域をMat Tに追加する。(専用コマンドは無いので行列要素のプログラムでの演算処理が必要です)
> ・・・
> Screen.T     // VRAMをテキストに設定。(内部ではVRAMをグラフィックVRAMに転送保存してテキストVRAMをVRAMに転送)
> PutDispDD    // VRAMをLCDに転送=表示
> ------------------------------------------
>
> VRAM間の転送のオーバーヘッドが無くなってすっきりしますね(^^)

これは、良いですね(^_^)/


Re:2つのVRAM

管理人様、こんにちは!

>テキストとグラフィクスのVRAMへのアクセスを個別に自由にできるのでしょうか?

んと、
C.BasicでのVRAMの実装としては一つしかありません。これを単にVRAMと呼ぶことにします。
テキストVRAMとグラフィックVRAMはそれぞれ別に専用の保存エリアを設けています。
テキストコマンドが実行された場合はVRAMにテキストVRAMを転送して描画して表示という段取りになります。
次もテキストコマンドであれば、そのまま描画して表示、
グラフィックコマンドの場合はVRAMをテキストVRAMに転送保存した後にグラフィックVRAMをVRAMに転送してからグラフィック描画、表示となります。
その次がグラフィックコマンドの場合は、そのままVRAMに描画して表示、
テキストコマンドであれば、VRAMをグラフィックVRAMに保存した後にテキストVRAMをVRAMに転送してからテキスト描画、表示となります。
テキスト表示が続く場合は、VRAMは常にテキストVRAMと同じ状態を保ちます。
グラフィックの場合も同じです。
コマンドの描画対象は常にVRAMです。テキスト専用VRAMやグラフィック専用VRAMに描画されることはなく単なるバックアップ領域となっています。

そこで、
{127,63}→Mat A.v
ですが、
これはVRAMの実体を行列Aに割り当てるだけなので、その時点でのVRAMがテキストかグラフィック、どちらを意味しているかは直前の描画コマンドによって変化するということです。
これを描画コマンド無しで変更するのがScreenコマンドです。
ということを前提にすると、


>例えば、グラフィックスVRAMから Mat A.v で特定範囲を取得しておいて、テキストVRAMに その特定領域のデータを追加してから、テキストVRAMをLCDに転送するといったことを、例題として考えてみています。

同じサイズの1ビット型行列を仮想メモリとして確保して、
------------------------------------------
{127,63}→Mat A.v // VRAMを行列に割当
{127,63}→Mat T.p // テキストVRAMを転送するテキスト仮想メモリ
{127,63}→Mat G.p // グラフィックVRAMを転送するグラフィック仮想メモリ
Screen.G     // VRAMをグラフィックに設定。(内部ではVRAMをテキストVRAMに転送保存してグラフィックVRAMをVRAMに転送)
Mat A→Mat G   // VRAM(=グラフィックVRAM)をグラフィック仮想メモリに転送
Screen.T     // VRAMをテキストに設定。(内部ではVRAMをグラフィックVRAMに転送保存してテキストVRAMをVRAMに転送)
Mat A→Mat T   // VRAM(=テキストVRAM)をテキスト仮想メモリに転送
・・・
Mat Gから特定領域を切り出しMat Tに追加する。(専用コマンドは無いので行列要素のプログラムでの演算処理が必要です)
・・・
Mat T→Mat A   // 仮想メモリからVRAMに転送
PutDispDD    // VRAMをLCDに転送=表示
------------------------------------------

ちょっと手順多いですがこういう形でとりあえず実現可能です(^^;

こうしてみると、
VRAMの割当がテキスト、グラフィックで個別に出来るとなれば、
------------------------------------------
{127,63}→Mat T.vT  // テキスト専用VRAM領域を行列に割当
{127,63}→Mat G.vG  // グラフィック専用VRAM領域を行列に割当
・・・
Mat Gから特定領域をMat Tに追加する。(専用コマンドは無いので行列要素のプログラムでの演算処理が必要です)
・・・
Screen.T     // VRAMをテキストに設定。(内部ではVRAMをグラフィックVRAMに転送保存してテキストVRAMをVRAMに転送)
PutDispDD    // VRAMをLCDに転送=表示
------------------------------------------

VRAM間の転送のオーバーヘッドが無くなってすっきりしますね(^^)


>ところで、先ほどの質問と関連するのですが、PutDispDD は SDKではグラフィックスVRAM用ですよね?
>それともテキストVRAMアクセスも可能あるいは、両方区別無しなのでしょうか?

はい、テキストVRAMという概念が無いのでグラフィックVRAMだけとなります。
C.Basicでは上記のように実装の都合上、グラフィックと同等のVRAM構造になってるのですが、
純正ではテキストVRAMはグラフィック同等構造ではなく、本当に21x8行のテキストだけのVRAMですね。
CG10/20への移植を考えるとテキストVRAMのグラフィック同等はちょっと厳しいかなと思ってます(^^;

整数モードでのコマンド互換性について

sentaro様


> ところで、Locate/Textは今のままの純正同様の強制表示仕様でよいでしょうか?
> 強制表示のPutDispDDコマンドが新設されたのでグラフィック同様のリフレッシュコントロールにしてもよいかもとちょっと考えています。

仕様の統一性を考えれば、おっしゃるように Locate/Text も他と同じにリフレッシュコントロール任せが良いかも知れませんね。

ところで、先ほどの質問と関連するのですが、PutDispDD は SDKではグラフィックスVRAM用ですよね?
それともテキストVRAMアクセスも可能あるいは、両方区別無しなのでしょうか?

このあたりで、Locate/Textの扱いをどうすれば良いのか、私としては変わるような気がします。

どうも深いところが分からずに居ります。



> ということで、整数モードの速度差は座標値取得時間の差、
> 実数モードでは、それプラス純正互換処理が加わるということでさらに差が開くということですね。

とても分かり易いご説明、ありがとうございます。

で、まとめての質問になりますが、実数モードでのグラフィックスコマンドは純正互換で、整数モードでは PxlOn, PxlOff, PxlChg のみが、プロットのみで X, Y の計算無し、ということでよろしいでしょうか?


ところで、

ClrGraph
ViewWindow 1,127,0,1,63,0
For 1→X To 63
For 1→Y To 127
PxlOn Y,X
Next
Next

の挙動が、整数モードと実数モードで異なりますので、サンプルプログラムとして面白いかも知れませんね。


2つのVRAM

sentaro様

VRAMの内部実装についての質問です。


> >Mat A.v 確保の前に、テキストかグラフィックスかを決めておく必要があるので、Screen.G を先に実行するように、サンプルプログラムを修正しました。
>
> これはまたちょっとややこしいことなのですが(^^;
> 今の仕様ではMat A.Vはその時点でのVRAMにアクセス出来るということでテキストVRAMとグラフィックVRAMどっちにもなり得るので、最初にテキストで確保したからテキストVRAM専用のアクセスになるというわけではないです。
> ということで、プログラム中でアクセス対象は自由に変更出来るということになっています(^^;

テキストとグラフィクスのVRAMへのアクセスを個別に自由にできるのでしょうか?
例えば、グラフィックスVRAMから Mat A.v で特定範囲を取得しておいて、テキストVRAMに その特定領域のデータを追加してから、テキストVRAMをLCDに転送するといったことを、例題として考えてみています。

お書きになっている説明では、Mat A.v を確保した場合、時々によって対応するVRAMがテキストだったりグラフィックスだったりするような印象をもったので、使いこなすのは面倒だと感じました。

そこで、上記の質問を改めて致しました。







Re:Re: Re:Re: Re: 行列の型について

管理人様、こんにちは!

>あ、そうですね。バッファと書くと自動的に連動するようなイメージを与える可能性がありそうですね。「仮装メモリとしても使える」といった感じ、或いは「全画面ビットマップデータの仮装メモリとして利用できる」なんてのも良いでしょうか?

了解です!
「全画面ビットマップデータの仮想メモリとして利用できる」というのが解釈の間違いが無さそうでよい感じですね(^^)


>VRAMアクセスの Mat A.v の説明ページを別途作るつもりで、そこでは全画面描画(ドットで埋め尽くす)サンプルプログラムを、VRAMアクセスで作って、その高速描画速度を示すとか(Casio Basicとの比較を入れるかも...)、ストライブ処理みたいなサンプルプログラムも示せたら、C.Basic の特徴をアピールできるかも知れないと思っています。

VRAM直アクセスはCやマシン語でプログラムすることに近づいていきますが、C.Basicでも高速化技としても利用価値があるかもしれませんね(^^)


>この説明は分かり易いので、行列の省略表記について別途ページを作って、そこで使わせて頂きました。
http://egadget.blog.fc2.com/blog-entry-551.html

早速にありがとうございます!(^^)


>Mat A.v 確保の前に、テキストかグラフィックスかを決めておく必要があるので、Screen.G を先に実行するように、サンプルプログラムを修正しました。

これはまたちょっとややこしいことなのですが(^^;
今の仕様ではMat A.Vはその時点でのVRAMにアクセス出来るということでテキストVRAMとグラフィックVRAMどっちにもなり得るので、最初にテキストで確保したからテキストVRAM専用のアクセスになるというわけではないです。
ということで、プログラム中でアクセス対象は自由に変更出来るということになっています(^^;


>通常の行列は、領域確保した段階で、位置的に初期化しなければ、全要素が 0になるのですが、Mat A.v では領域確保すれば即VRAMのビットマップが反映されること、サンプルプログラムで確認しました。
>なかなか面白いですね。

はい、行列の領域確保というよりはすでにあるVRAM領域を行列に割り当てるという形になるので、通常の初期化処理は無いですね。


>純正に合わせると間違いなく描画が遅くなるので、デフォルトでリフレッシュコントロールに任せることにした方が良いような気がしております。で、オプションの「:」で一旦VRAM転送に留めるという仕様が、私の肌にはしっくりくるんです。

了解です(^^)
ところで、Locate/Textは今のままの純正同様の強制表示仕様でよいでしょうか?
強制表示のPutDispDDコマンドが新設されたのでグラフィック同様のリフレッシュコントロールにしてもよいかもとちょっと考えています。


>29MHz で動作させると、Sample 1 の方が描画に時間がかかります。
>これについては、どのように理解すれば良いでしょうか?

これは実数モードと整数モードでそれぞれ速度差が違うのですが、
実数モードで速度差の生じる一番の要因として、
Pxl系コマンドは純正仕様に則ってコマンド終了時にX,YにViewWindow座標値を代入しないといけないのでちょっとだけ計算時間がかかってます。
純正のようにドットを打つ度に毎回LCD転送していればそれは無視できるくらいの時間なのですが、ドットを打つ作業に比較すると実数処理は結構重いので時間がかかってしまいます。
そのために整数モードのPxl系コマンドでは、ただドットを打つだけのコマンドになっていて純正互換では無くなっています。
これは整数モード自体が速度向上を目的とした拡張仕様なのでPxl系は互換無くてもよいだろうという判断です(^^;
(Line/Plotは整数モードでも純正互換仕様になっています。)

では、整数モードでは2つのリストが同じ処理をしているはずなのに差がでるのはなぜかというと、
PxlOn B,A
では座標値取得で式評価が2回必要なところなのですが、
A[X,Y]のようなインデックスの単純な行列では式評価すること無しでインデックス計算をしているので座標計算が簡略化されているためです。

ということで、整数モードの速度差は座標値取得時間の差、
実数モードでは、それプラス純正互換処理が加わるということでさらに差が開くということですね。

Re: Re:Re: Re: 行列の型について

sentaro様

> はい、たぶん、初期値を0にした場合のつもりで書いてしまったのだと思うのですが、
> {127,63}→Dim Mat A.P
> ということですね(^^;

あ、私も書き間違ってしまいました(^^;


C.Basic Command Reference では書き間違っていないので、ご容赦を...


> >> {128,64}→Dim Mat A.P
> >> LCD画面のバッファとして確保します。但し自動的にLCDのバッファにはなりません。
> >といった感じに修正するのはどうでしょうか?
>
> 了解です。
> 出来るだけ誤解のないようにしていきたいので、修正しておきます(^^)

お手数をおかけしますが、よろしくお願い致します。


> あ、バッファという表現は仮想メモリとかの方がよいでしょうか?

あ、そうですね。バッファと書くと自動的に連動するようなイメージを与える可能性がありそうですね。「仮装メモリとしても使える」といった感じ、或いは「全画面ビットマップデータの仮装メモリとして利用できる」なんてのも良いでしょうか?




> >http://egadget.blog.fc2.com/blog-entry-550.html
>
> >にサンプルプログラムで紹介しました。
>
> 分かりやすいサンプル付きでよいですね。
> ありがとうございます(^^)

VRAMアクセスの Mat A.v の説明ページを別途作るつもりで、そこでは全画面描画(ドットで埋め尽くす)サンプルプログラムを、VRAMアクセスで作って、その高速描画速度を示すとか(Casio Basicとの比較を入れるかも...)、ストライブ処理みたいなサンプルプログラムも示せたら、C.Basic の特徴をアピールできるかも知れないと思っています。



> あ、いっこだけ気がついた点として、
> Example 1の
> A→Dim A.w
> と、
> Mat A→Dim Mat A.w
> では構文の意味が違います(^^;

完全に勘違いしていました。ご指摘ありがとうございます。早々に修正しておきました。



> Mat表記を省略出来るところと出来ないところがあるのでちょっとややこしくなるのですが(^^;
> 基本的にはMat A[2,3]のように[]が付いているところでは省略して配列のように使えるという感じでお願いします(^^)

この説明は分かり易いので、行列の省略表記について別途ページを作って、そこで使わせて頂きました。

http://egadget.blog.fc2.com/blog-entry-551.html


>>実行画面では、画面が真っ黒になった上に Done が表示され、Doneの行が上書きされるので、テキスト画面に描画されている可能性がありませんか?

>はい、テキスト画面に描画されています。
>これはプログラムスタート時のVRAMがテキスト画面ということになっているためです。
>グラフィック画面を選択する場合は、管理人様ご提案で導入されたScreenコマンドで切り替えるか、グラフィックコマンドを使ってグラフィックモードにする必要があります(^^)

>C.Basicではプログラム終了時には必ず最後に実行されたコマンドの結果が画面に表示されるのでプログラム最後ではPutDispDDは無くても結果は同じということですね。
>PutDispDDが必要となる状況は、PutDispDD以降に表示に関わらないコマンドばかりが続いてしまって画面が更新されることがない時に強制的に画面更新させたい場合となります。
>ガノー様の3D迷路でライン描画がリフレッシュタイミングの都合上、転送未遂になるために強制表示コマンドとしてTextコマンドを使う必要がありましたが、この状況ではPutDispDDが必須のコマンドになりますね(^^)

ありがとうございます。プログラムの最初と最後は注意が必要ですね。


>>本来、どのような動作を意図されているのでしょうか?

>仕様としてはアドインのSDKで用意されているPutDispDD()と全く同じ動作になります。

最初がテキスト画面になるということが、ポイントですね。
Mat A.v 確保の前に、テキストかグラフィックスかを決めておく必要があるので、Screen.G を先に実行するように、サンプルプログラムを修正しました。

通常の行列は、領域確保した段階で、位置的に初期化しなければ、全要素が 0になるのですが、Mat A.v では領域確保すれば即VRAMのビットマップが反映されること、サンプルプログラムで確認しました。

http://egadget.blog.fc2.com/blog-entry-550.html

なかなか面白いですね。



>描画コマンドすべてをリフレッシュコントロールしない純正仕様と同じにすれば強制表示は必要ないのですが、コマンド末尾の「:」で転送しない選択も出来るので、デフォルトでは純正に合わせるのがよいのかどうなのか、画面表示の仕様はまだ実験的未確定状態です(^^;

純正に合わせると間違いなく描画が遅くなるので、デフォルトでリフレッシュコントロールに任せることにした方が良いような気がしております。で、オプションの「:」で一旦VRAM転送に留めるという仕様が、私の肌にはしっくりくるんです。

ところで、以下の2つのプログラムを比較してみました。

'<Sample 1>
Cls
For 1→B To 63
 For 1→A To 127
  PxlOn B,A:
 Next
Next


'<Sample 2>
Cls
Screen.G
{127,63}→Mat A.v
For 1→Y To 63
 For 1→X To 127
  1→A[X,Y]
 Next
Next
PutDispDD


29MHz で動作させると、Sample 1 の方が描画に時間がかかります。
これについては、どのように理解すれば良いでしょうか?


Re: PutDispDD

管理人様、こんにちは!

>実行画面では、画面が真っ黒になった上に Done が表示され、Doneの行が上書きされるので、テキスト画面に描画されている可能性がありませんか?

はい、テキスト画面に描画されています。
これはプログラムスタート時のVRAMがテキスト画面ということになっているためです。
グラフィック画面を選択する場合は、管理人様ご提案で導入されたScreenコマンドで切り替えるか、グラフィックコマンドを使ってグラフィックモードにする必要があります(^^)


>本来、どのような動作を意図されているのでしょうか?

仕様としてはアドインのSDKで用意されているPutDispDD()と全く同じ動作になります。
つまり、現在のVRAMをLCD画面に転送する、というだけの機能になるのですが、
C.Basicでこれを当てはめると、管理人様のサンプルプログラムではプログラム終了時に使われているので、
PutDispDDが実行されてからすぐにプログラムが終了となったことでDone表示がされたということになります。

C.Basicではプログラム終了時には必ず最後に実行されたコマンドの結果が画面に表示されるのでプログラム最後ではPutDispDDは無くても結果は同じということですね。
PutDispDDが必要となる状況は、PutDispDD以降に表示に関わらないコマンドばかりが続いてしまって画面が更新されることがない時に強制的に画面更新させたい場合となります。
ガノー様の3D迷路でライン描画がリフレッシュタイミングの都合上、転送未遂になるために強制表示コマンドとしてTextコマンドを使う必要がありましたが、この状況ではPutDispDDが必須のコマンドになりますね(^^)

描画コマンドすべてをリフレッシュコントロールしない純正仕様と同じにすれば強制表示は必要ないのですが、コマンド末尾の「:」で転送しない選択も出来るので、デフォルトでは純正に合わせるのがよいのかどうなのか、画面表示の仕様はまだ実験的未確定状態です(^^;

Re:Re: Re: 行列の型について

管理人様、こんにちは!

>いずれ Manual_J.txt も英訳する予定なので、細かい記述が気になります。

お手数おかけしてますm(_ _)m


>{128,64}→Dim Mat A.P
>は、
>{128,64}→Dim Mat A.P
>ですね(^^;

はい、たぶん、初期値を0にした場合のつもりで書いてしまったのだと思うのですが、
{127,63}→Dim Mat A.P
ということですね(^^;



>> {128,64}→Dim Mat A.P
>> LCD画面のバッファとして確保します。但し自動的にLCDのバッファにはなりません。
>といった感じに修正するのはどうでしょうか?

了解です。
出来るだけ誤解のないようにしていきたいので、修正しておきます(^^)

あ、バッファという表現は仮想メモリとかの方がよいでしょうか?



>逆に、Mat A.v は面白いですね。
>この宣言の後、Mat A に書き込み、PutDispDD を実行するとLCDに描画されます。

>このあたりを

http://egadget.blog.fc2.com/blog-entry-550.html

>にサンプルプログラムで紹介しました。

分かりやすいサンプル付きでよいですね。
ありがとうございます(^^)


あ、いっこだけ気がついた点として、
Example 1の
A→Dim A.w
と、
Mat A→Dim Mat A.w
では構文の意味が違います(^^;

A→Dim A.w
これは、fx-5800P準拠の配列初期化構文を取り入れたもので、

Mat A→Dim Mat A.w
こちらが要素の型変更構文となっていますのでMatは省略出来ないです。

Mat表記を省略出来るところと出来ないところがあるのでちょっとややこしくなるのですが(^^;
基本的にはMat A[2,3]のように[]が付いているところでは省略して配列のように使えるという感じでお願いします(^^)

PutDispDD

sentaro様


PutDispDD について質問があります。

以下のプログラムが終了すると、右上にDoneと表示が現れます。

{127,63}→Dim Mat A.v
For 1→Y To 63
 For 1→X To 63
  1→A[X,Y]
 Next
Next
PutDispDD

VRAM上の全てのピクセルをONにしてから、LCDに転送する筈ですね。
実行画面では、画面が真っ黒になった上に Done が表示され、Doneの行が上書きされるので、テキスト画面に描画されている可能性がありませんか?

そこで、PutDispDD の前に Text 1,1,"" を追加して、グラフィックス画面に切り替えるようにします。
この場合、何も表示しない画面が表示され、[EXE] を押すと Text を追加する前と同じ画面になって やはりDoneが表示されます。

どうも PutDispDD の動画が理解できません。

本来、どのような動作を意図されているのでしょうか?

Re: Re: 行列の型について

sentaro様

> エラーの現象は確認できました。
> ですが、確実に再現する手順がまだはっきりと掴めてないので、ちょっと手間取ってます(^^;
> これはVer.0.99nでの新たな不具合なのでVer.0.99nのうちに修正しておきたいです。

よろしくお願い致します。


いずれ Manual_J.txt も英訳する予定なので、細かい記述が気になります。

===============================================================================
行列の要素サイズ変更
===============================================================================
行列の型(1ビット、バイト、ワード、ロングワード、実数)は行列確保後でも任意に変更できます。
(例)[[1,2,3,4][5,6,7,8]]→Mat A.B
   Mat A→Dim Mat A.W
 バイト型のMat A行列をワード型に変更できます。
 要素数は変更後の型サイズに応じて変化します。
 [[0x12,0x34][0x56,0x78]]→Mat A.W
 と同じ結果になります。

(注意)1ビット型行列からの変更、また1ビット型行列への変更は行と列が反転します。
 これは1ビット型行列はX,Y型で実装しているために通常のm,n型行列とは転置行列の関係になります。
 {128,64}→Dim Mat A.P
 LCD画面のバッファとして確保します。
 Mat A→Dim Mat A.B
 バイト型行列に変更すると、
 要素サイズは{64,16}になります。

----------ここまで-----------

この中の後半部分

> {128,64}→Dim Mat A.P
> LCD画面のバッファとして確保します。
> Mat A→Dim Mat A.B
> バイト型行列に変更すると、
> 要素サイズは{64,16}になります。

ですが、先ず

{128,64}→Dim Mat A.P

は、

{128,64}→Dim Mat A.P

ですね(^^;


それから、

> {128,64}→Dim Mat A.P
> LCD画面のバッファとして確保します。

この記述だと、Mat A.P を確保すると Mat A.V と同様に LCD のビットマップパターンが自動的に行列に反映されるようにも読み取れます。一応確認しましたが、そのようなことは無いので、

> {128,64}→Dim Mat A.P
> LCD画面のバッファとして確保します。但し自動的にLCDのバッファにはなりません。

といった感じに修正するのはどうでしょうか?


逆に、Mat A.v は面白いですね。
この宣言の後、Mat A に書き込み、PutDispDD を実行するとLCDに描画されます。

このあたりを

http://egadget.blog.fc2.com/blog-entry-550.html

にサンプルプログラムで紹介しました。



Re: 行列の型について

管理人様、こんにちは!

>必ずシステムエラーが発生する条件は、以下の2つです。
>・Setupで Use Hidn RAM を Off
>・Syntax エラーのあるファイルを保存
>Use Hidn RAM を On にすると、エラーのあるファイルを保存してもシステムエラーになりません。

エラーの現象は確認できました。
ですが、確実に再現する手順がまだはっきりと掴めてないので、ちょっと手間取ってます(^^;
これはVer.0.99nでの新たな不具合なのでVer.0.99nのうちに修正しておきたいです。


>Casio Basic では、要素に応じて実数行列と整数行列が切り替わるように読めますが、これは私の認識と違っていました。
>多分Casio Basic では常に実数行列ではないでしょうか?

んと、実数モードでは型指定しない場合はデフォルトで実数行列です。
整数行列になるのはC整数モードで起動した場合で、
動作モードに応じて行列のデフォルトの型が切り替わるということですね。
分かりにくくてすみません(^^;

ですので、行列の型指定のないCasioBasic互換ソースの場合、
{10,5}→Dim Mat A
実数モードでは Mat A.Fと同じで実数行列が確保されます。
整数モードで起動するとMat A.Lと同じで整数行列が確保されます。

行列の型について

sentaro様

Manual_J.txt に以下の記述があります。

===============================================================================
行列の拡張について
===============================================================================
純正CasioBasicのMatrix行列との違いについて説明します。

通常モードでは純正と同じく実数モードでは実数の行列、整数モードでは整数の行列として使用できますが、

-------ここまで--------


Casio Basic では、要素に応じて実数行列と整数行列が切り替わるように読めますが、これは私の認識と違っていました。
多分Casio Basic では常に実数行列ではないでしょうか?


Re: Re:Re: Re:Re: Re: Re:行列初期化について

sentaro様


> CasioBasicの知られざる高性能な部分はぜひとも広く知っていただきたいところですね。
> C.BasicもCasioBasic互換ということでどこまで受け入れられるのか未知数ですけど、速度面も含めて新たな可能性が広がることを期待したいです。

そうですね。広く公開してみないと分からないことがあるかも知れませんね。



> 文字列はC言語仕様からなので末尾にゼロが付加されます。
> 純正互換の範囲ではそれは意識しなくてもよいのですが、行列を流用しているので格納形式を把握しておくのは重要ですね。

そうなんですよ。ひょっとして末尾が0かな?と思ったらそうだった....で、以前末尾が0だというコメントがあったな...と思い出しました。



> 昨日でとりあえず打ち止めと思った0.99nですが、何かの勘違いでSprintfが使えなくなっていたのでVer.0.99n再アップしました(^^;

あ、まだ確認していませんでした。



> そして、これは実験的実装ですが、Locate/Textコマンドでも末尾に「;」(セミコロン)を付加すると1/40sリフレッシュコントール描画になるようにしてみました。
> ループ内でLocate/Textを使う場合には表示速度の向上が期待できます。

はい、これも確認してみます。



> それから隠しRAMを使わない状況で頻発するシステムエラーですが、エラーが必ず発生する状況が再現可能でしょうか?

必ずシステムエラーが発生する条件は、以下の2つです。

・Setupで Use Hidn RAM を Off
・Syntax エラーのあるファイルを保存

Use Hidn RAM を On にすると、エラーのあるファイルを保存してもシステムエラーになりません。

よろしくお願い致します。

Re:Re: Re:Re: Re: Re:行列初期化について

管理人様、こんにちは!

>有用な情報は海外発のものなんですね。プログラム電卓の現状を現している好例ですね。

グラフ電卓のユーザー数が桁違いと思われるので致し方ないところでしょうか(^^;


>カシオのお膝元の日本人としては、C.Basic と Inside Casio Basic を是非とも海外に発信したいですね。

はい!
CasioBasicの知られざる高性能な部分はぜひとも広く知っていただきたいところですね。
C.BasicもCasioBasic互換ということでどこまで受け入れられるのか未知数ですけど、速度面も含めて新たな可能性が広がることを期待したいです。


>早速、C.Basic ommanf Reference で対応機種として fx-9860G Series と変更しました。

ありがとうございます(^^)


>あと、文字列を使って直接「領域確保」や「初期化」を行うと、文字列の末尾に対応する要素に0(ゼロ)が付加されるんですね。
>以前、コメント欄でちらっと読んだ記憶がありましたが、忘れていました。そこで、これについても Note に説明を追加しておきました。

文字列はC言語仕様からなので末尾にゼロが付加されます。
純正互換の範囲ではそれは意識しなくてもよいのですが、行列を流用しているので格納形式を把握しておくのは重要ですね。


昨日でとりあえず打ち止めと思った0.99nですが、何かの勘違いでSprintfが使えなくなっていたのでVer.0.99n再アップしました(^^;
そして、これは実験的実装ですが、Locate/Textコマンドでも末尾に「;」(セミコロン)を付加すると1/40sリフレッシュコントール描画になるようにしてみました。
ループ内でLocate/Textを使う場合には表示速度の向上が期待できます。

それから隠しRAMを使わない状況で頻発するシステムエラーですが、エラーが必ず発生する状況が再現可能でしょうか?

Re: Re:Re: Re: Re:行列初期化について

sentaro様

> 1ファイルあたり24バイトが必要なので管理人様の場合は約1700バイトほどがファイルバッファに必要となります。
> それくらいだとメモリ不足が問題になるほどではないので何かファイルバッファ関連でエンバグしている可能性大ですね(^^;
> 隠しRAMを使うことでシステムエラーから開放されるとのことなので、そこのあたりちょっと見直してみます。

よろしくお願い致します。



> C.BasicはFtune2に比較すると格段に安全で安心度の高いアドインだとは思うのですが、やはり通常では存在しないことになっている領域に手を出す以上は最大限の注意をという感じですね(^^)
> それとちょっと前に海外サイトで隠しRAMを使うトピックをちょっと見かりしけたので、自作アドインではごく普通に使われている可能性もありますし(^^;

有用な情報は海外発のものなんですね。プログラム電卓の現状を現している好例ですね。
カシオのお膝元の日本人としては、C.Basic と Inside Casio Basic を是非とも海外に発信したいですね。



> はい、SDKのエミュで動く以上、SH3機も含めてfx-9860G初代からシリーズ全機種で同じように動かせるようにということで作成してあります。
> 最適対応という意味ではSH4A機になるのですが、SH3機に関しては速度面とか若干不利なことがあるかもしれないけど同様に使えますという感じですね(^^)
>
> 純正CasioBasicではSH3機の方が速かったりするのですが、C.BasicではCPUの能力差そのままにSH4A機の方が確実に速いので、SH4A機の実力を100%活かせるアドインと言えます。(若干自画自賛モード(^^;

早速、C.Basic ommanf Reference で対応機種として fx-9860G Series と変更しました。


あと、文字列を使って直接「領域確保」や「初期化」を行うと、文字列の末尾に対応する要素に0(ゼロ)が付加されるんですね。
以前、コメント欄でちらっと読んだ記憶がありましたが、忘れていました。そこで、これについても Note に説明を追加しておきました。

http://egadget.blog.fc2.com/blog-entry-547.html

http://egadget.blog.fc2.com/blog-entry-548.html


Re:Re: Re: Re:行列初期化について

管理人様、こんにちは!

>私の電卓のストレージメモリには、71ファイルあります。
>おかげさまで、Use Hidn RAM を On にしてから、一度もエラーが発生していません。

1ファイルあたり24バイトが必要なので管理人様の場合は約1700バイトほどがファイルバッファに必要となります。
それくらいだとメモリ不足が問題になるほどではないので何かファイルバッファ関連でエンバグしている可能性大ですね(^^;
隠しRAMを使うことでシステムエラーから開放されるとのことなので、そこのあたりちょっと見直してみます。


>さすが、良いお作法で作られていますね。ますます安心感が増してきます。

恐縮です。
C.BasicはFtune2に比較すると格段に安全で安心度の高いアドインだとは思うのですが、やはり通常では存在しないことになっている領域に手を出す以上は最大限の注意をという感じですね(^^)
それとちょっと前に海外サイトで隠しRAMを使うトピックをちょっと見かりしけたので、自作アドインではごく普通に使われている可能性もありますし(^^;


>以前から伺いたかったのですが、C.Basic は fx-9860G にも制式対応しているのでしょうか?
>そうだとすれば、C.Basic Reference には、fc-9860G Series 対応と書き直すことにします。

はい、SDKのエミュで動く以上、SH3機も含めてfx-9860G初代からシリーズ全機種で同じように動かせるようにということで作成してあります。
最適対応という意味ではSH4A機になるのですが、SH3機に関しては速度面とか若干不利なことがあるかもしれないけど同様に使えますという感じですね(^^)

純正CasioBasicではSH3機の方が速かったりするのですが、C.BasicではCPUの能力差そのままにSH4A機の方が確実に速いので、SH4A機の実力を100%活かせるアドインと言えます。(若干自画自賛モード(^^;


>解説ありがとうございます。こちらも、Prog のリファレンスにさらっと追記しておきました。
http://egadget.blog.fc2.com/blog-entry-540.html

早速にありがとうございます(^^)


>なお、Manual_J.txt は、サンプルプログラムの一部でデバッグが必要な感じです。
>そのまま入力して悩んでしまうことが何回かありました。
>気がついたら、改めて連絡します。

あ、すみません(^^;
仕様と実際が一致してないことと、あと勘違いもあるかもしれません(^^;
こちらでも再度確認してみます。


>どうやって整理すれば、分かり易いのか...考え込むことが多いです...
>多分、今後も書き直しが多いと思います。

行列の拡張部分とかはかなり複雑化してしまっているので、多分まだ確実にバグが残っていると思われます(^^;
お手数おかけしますけどよろしくお願いします。


>不具合解消を確認しました。その成果を以下にまとめています。
http://egadget.blog.fc2.com/blog-entry-547.html

ありがとうございます!
管理人様に見つけていただいてやっと見つかるバグが続々でお恥ずかしい限りですけど、今後もどんどんバグ出しよろしくです(^^)



>["ABCDEF"]→Mat A
>が正しいですよね。

はい、そうです。
ありがとうございます!

アップしている0.99n内のManual_J.txtを更新しておきました(^^)

Re: Re: Re:行列初期化について

sentaro様


Manual_J.txt の下記のサンプルプログラムのデバッグですが...

===============================================================================
文字列について
===============================================================================
純正CasioBasicと同じくStr文字変数や文字列関数が使えますが、文字列の実体は行列として実装しています。

プレフィックスとして$または&を付けることでMat行列は文字列として認識されます。
(例)[["ABCDEF"]]→Mat A
   Locate 3,3,$Mat A
 画面座標(3,3)に"ABCDEF"が表示されます。

---------- ここまで ------------

["ABCDEF"]→Mat A

が正しいですよね。



Re: Re:行列初期化について

sentaro様


> いよいよ行列の拡張部分ですね。
> どうもありがとうございます!

どうやって整理すれば、分かり易いのか...考え込むことが多いです...

多分、今後も書き直しが多いと思います。



> アドイン版 C.Basic ver.0.99n テスト版 その9.9n(フォルダ対応+再々々々々々々修正+α版)
> http://pm.matrix.jp/CB/CBASIC099n.zip
> ・16進定数の不具合を修正しました。
> ・文字列で行列を初期化する場合に空白と改行をスキップ出来なかった不具合を修正しました。

不具合解消を確認しました。その成果を以下にまとめています。

http://egadget.blog.fc2.com/blog-entry-547.html


Re: Re:Prog 引数に文字列変数

sentaro様

> ということは、本体メモリの不足でエラーになっていた可能性大ですね(^^;
> もしかして、ストレージメモリ上のファイル数がかなり多い状態でしょうか?
> 今だけの暫定機能ですが、ファイルモードで[SHIFT]押した時にファイルリスト数がF4の位置に表示されます。
> こちらでも隠しRAM不使用だとシステムリセットになる状況が多々あるのでまだまだ詰めが甘いようです(^^;

私の電卓のストレージメモリには、71ファイルあります。
おかげさまで、Use Hidn RAM を On にしてから、一度もエラーが発生していません。



> >この項目は触った自覚が無いので、不思議です。
>
> 最新版でデフォルトでオフにしたので…
> 新たに設定し直す必要がありました(^^;

それで納得です。


> >この項目を On/Off切替できるようにしているのは、どのような目的なのでしょうか?
>
> C.Basicだけしか使わないというのであれば今のところは隠しRAMは自由に使える領域といえますが、
> もし、他のアドインでも隠しRAMを使用していた場合とか、OSのバージョンアップで使えなくなったりした場合に、
> デフォルトで使える状態だと不都合が起きることが予想されるので使う使わないの設定を設けました。

さすが、良いお作法で作られていますね。ますます安心感が増してきます。



> あと、GII以前の初期fx-9860Gでは隠しRAMが無いので、9860Gシリーズ互換のためというのもあります(^^;

以前から伺いたかったのですが、C.Basic は fx-9860G にも制式対応しているのでしょうか?
そうだとすれば、C.Basic Reference には、fc-9860G Series 対応と書き直すことにします。



> >Return <local variable> といったパラメータを指定すると意図的にサブルーチン対応にする、
> >パラメータ無しなら、現状の構文解析で自動判定させる、
> >このローカル変数は、Prog / Local で指定する変数のいずれかを利用する
> >といった感じだと、面白いかも知れませんね。サブルーチンにローカル変数を渡せるなら、戻り値も設定できたら良いなぁ、と思っていました。
>
> 返り値については、CasioBasicの仕様に準じた形で現在の数式の値がAnsに自動的に入ってることを利用してサブルーチン側で
> a:Return
> とすれば
> 変数xの内容が返り値としてAnsに入ります。
>
> 呼び出す側では
> Prog "TEST",a,b,c
> Ans→N
> とするか、
> Prog "TEST",a,b,c→N
> とすれば返り値を受け取れるわけなのですが、
> Return a
> という形を追加することは難しいことではないので、サクッと追加してみました(^^)

解説ありがとうございます。こちらも、Prog のリファレンスにさらっと追記しておきました。

http://egadget.blog.fc2.com/blog-entry-540.html



> >Prog に Str N や &A[N] を引数として渡せると、応用が広がると思いますが、如何でしょうか?
> >このように、プログラムを配列で扱えると、面白そうですね。
>
> 文字列や行列の引数渡しは以前より実装を考えていたところでしたけど今のところ未実装ということで、次バージョンで取り入れてみたいと思います(^^)

楽しみです。


なお、Manual_J.txt は、サンプルプログラムの一部でデバッグが必要な感じです。
そのまま入力して悩んでしまうことが何回かありました。

気がついたら、改めて連絡します。

Re:行列初期化について

管理人様、こんにちは!

>行列初期化について、C.Basic Reference に追加しました。
http://egadget.blog.fc2.com/blog-entry-547.html

いよいよ行列の拡張部分ですね。
どうもありがとうございます!


>下から2行目の末尾の , は不要ですね。

はい、不要です(^^;


>あと、OB でなくて OX が使えますか?

使えるはず…と思ったらバグってて使えませんでした(^^;


>といった、記法がエラーにならないと、使いやすくなるのですが、速度が遅くなるなど、実現に何か障害がありますか?

文字列の行列初期化で空白と改行を読み飛ばすのが抜けてました(^^;


ってことで、そこのあたり修正した差し替え版です(^^;

アドイン版 C.Basic ver.0.99n テスト版 その9.9n(フォルダ対応+再々々々々々々修正+α版)
http://pm.matrix.jp/CB/CBASIC099n.zip
・16進定数の不具合を修正しました。
・文字列で行列を初期化する場合に空白と改行をスキップ出来なかった不具合を修正しました。

Re:Prog 引数に文字列変数

管理人様、こんにちは!

>これを On にすると、System ERROR が発生しなくなりました。

ということは、本体メモリの不足でエラーになっていた可能性大ですね(^^;
もしかして、ストレージメモリ上のファイル数がかなり多い状態でしょうか?
今だけの暫定機能ですが、ファイルモードで[SHIFT]押した時にファイルリスト数がF4の位置に表示されます。
こちらでも隠しRAM不使用だとシステムリセットになる状況が多々あるのでまだまだ詰めが甘いようです(^^;


>この項目は触った自覚が無いので、不思議です。

最新版でデフォルトでオフにしたので…
新たに設定し直す必要がありました(^^;


>この項目を On/Off切替できるようにしているのは、どのような目的なのでしょうか?

C.Basicだけしか使わないというのであれば今のところは隠しRAMは自由に使える領域といえますが、
もし、他のアドインでも隠しRAMを使用していた場合とか、OSのバージョンアップで使えなくなったりした場合に、
デフォルトで使える状態だと不都合が起きることが予想されるので使う使わないの設定を設けました。

あと、GII以前の初期fx-9860Gでは隠しRAMが無いので、9860Gシリーズ互換のためというのもあります(^^;


>ええっと、特に Returnの機能拡張をお願いしたつもりはなく、Gosub のところに記載したサンプルプログラムに、メインプログラムに戻る Returnを1個追加したという意味です。構文解析で、Return が Gosubに対応したものかどうかを判定しているのでえすよね。

あ、そういうことだったのですね(^^;
了解です(^^)


>Return <local variable> といったパラメータを指定すると意図的にサブルーチン対応にする、
>パラメータ無しなら、現状の構文解析で自動判定させる、
>このローカル変数は、Prog / Local で指定する変数のいずれかを利用する
>といった感じだと、面白いかも知れませんね。サブルーチンにローカル変数を渡せるなら、戻り値も設定できたら良いなぁ、と思っていました。

返り値については、CasioBasicの仕様に準じた形で現在の数式の値がAnsに自動的に入ってることを利用してサブルーチン側で
a:Return
とすれば
変数xの内容が返り値としてAnsに入ります。

呼び出す側では
Prog "TEST",a,b,c
Ans→N
とするか、
Prog "TEST",a,b,c→N
とすれば返り値を受け取れるわけなのですが、
Return a
という形を追加することは難しいことではないので、サクッと追加してみました(^^)


>ええっと、2次元行列のままでも、文字列操作には有効だと思います。

了解です(^^)


>Prog に Str N や &A[N] を引数として渡せると、応用が広がると思いますが、如何でしょうか?
>このように、プログラムを配列で扱えると、面白そうですね。

文字列や行列の引数渡しは以前より実装を考えていたところでしたけど今のところ未実装ということで、次バージョンで取り入れてみたいと思います(^^)


Return 戻り値
だけの更新なので差し替えです(^^;

アドイン版 C.Basic ver.0.99n テスト版 その9.9n(フォルダ対応+再々々々々修正+α版)
http://pm.matrix.jp/CB/CBASIC099n.zip
・Returnコマンドにて返り値指定が出来るようになりました。
(例)Return 式
 式の値がAnsに入ります。

行列初期化について

sentaro様

行列初期化について、C.Basic Reference に追加しました。
http://egadget.blog.fc2.com/blog-entry-547.html


そこで、気がついたのですが、

Manual_J.txt にある以下の記述ですが、

 [[0B11001100,
  0B00110011,
  0B11001100,
  0B00110011,
 ]]→Mat A.B

下から2行目の末尾の , は不要ですね。

あと、OB でなくて OX が使えますか?

例えば、

[
[0X1234,0X2345,0X3456]
[0X4567,0X5678,0X6789]
[0X789A,0X89AB,0X9ABC]
]->Mat A.L

といった感じです。現状だとエラーになってしまいます。


あと、上記で紹介したサンプルプログラム

["1:ABC","2:DEF","3:GHI"]->Mat S
Locate 1,1,&Mat S[1]
Locate 1,2,&Mat S[2]
Locate 1,3,&S[3]
Locate 1,4,&S[1,3]

ですが、行列初期化で、

[
"1:ABC",
"2:DEF",
"3:GHI"
]->Mat S

といった、記法がエラーにならないと、使いやすくなるのですが、速度が遅くなるなど、実現に何か障害がありますか?


Prog 引数に文字列変数

sentaro様

Prog に Str N や &A[N] を引数として渡せると、応用が広がると思いますが、如何でしょうか?

例えば、以下のようなプログラムが可能になります。

"Press [1] - [9] key"
["1","2","3","4","5","6","7","8","9"]->Mat S
Getkey1->K

'Keycode to Ten key
Int (K÷10)->A
K-10A->B
3B-A+2->N

Prog &A[N]

このように、プログラムを配列で扱えると、面白そうですね。

Re: Re:System ERROR再び

sentaro様

> ひょっとしてセットアップの新設項目のUse Hidden RAMがOffになってませんでしょうか?

はい、Off になっています。

これを On にすると、System ERROR が発生しなくなりました。

この項目は触った自覚が無いので、不思議です。

この項目を On/Off切替できるようにしているのは、どのような目的なのでしょうか?


> C.Basicのヒープメモリの断片化は電卓のメインメニューに戻ってC.Basic以外のアプリを一度起動してからC.Basicに戻って再起動すればOkなので、メモリの最適化はストレージメモリのフリーエリアが減った時だけでよいです。

はい、Use Hidden RAM を On にすると、最適化は瞬時に終了します。



> とりあえず、Screenコマンドにバグが残っていたので差し替えです。

了解です。



> >Gosub対応のReturn とサブルーチンから戻る Return がそれぞれあると、面白いですね。
>
> Progの中のGosubサブルーチンから直に元のメインプログラムに戻るReturnがあればということですね。
> 実現可能かどうか調べてみます。

ええっと、特に Returnの機能拡張をお願いしたつもりはなく、Gosub のところに記載したサンプルプログラムに、メインプログラムに戻る Returnを1個追加したという意味です。構文解析で、Return が Gosubに対応したものかどうかを判定しているのでえすよね。

もし Return の機能を Gosub対応か、サブルーチン対応かを意図的に指定するように拡張するには、例えば Cのように

Return <local variable> といったパラメータを指定すると意図的にサブルーチン対応にする、
パラメータ無しなら、現状の構文解析で自動判定させる、
このローカル変数は、Prog / Local で指定する変数のいずれかを利用する

といった感じだと、面白いかも知れませんね。サブルーチンにローカル変数を渡せるなら、戻り値も設定できたら良いなぁ、と思っていました。




> >ただ、複数文字列を1つの行列=2次元配列で管理できると、ソースのスッキリ度合いがかなり異なる感じがしますよね。
>
> 文字配列が2次元で使えるとたしかにすっきりしますね。
> 行列を3次元化するか、文字配列を新設するかというところでしょうか。

ええっと、2次元行列のままでも、文字列操作には有効だと思います。



> >私が真っ先に思いつくのは、テキスト画面にビットマップ表示をするテクニックとして使えそうな点です。
> >既に、LocateYX があるので、グラフィックス画面にLocateと同等な文字表示が出来るので、その逆が可能になるのは面白いと思うんですね。
>
> なるほどです。
> テキスト画面も実質はグラフィック画面と同じなのでビットマップが表示できると面白そうです(^^)

そうなんです!


Re:System ERROR再び

管理人様、こんにちは!

>最新の Ver 0.99n で、ファイルを保存する際の System ERROR が再び頻発すます。

うわ…汗
ひょっとしてセットアップの新設項目のUse Hidden RAMがOffになってませんでしょうか?


>プログラム実行ごとに頻繁に最適化を行うと、毎回時間がかかることから、断片化が激しい感じでです。

C.Basicのヒープメモリの断片化は電卓のメインメニューに戻ってC.Basic以外のアプリを一度起動してからC.Basicに戻って再起動すればOkなので、メモリの最適化はストレージメモリのフリーエリアが減った時だけでよいです。


>プログラムが終了してファイルリストに戻る時にも System ERROR が頻発します。
>プログラム起動時にも System ERROR が発生するようです。
>これといった再現条件がはっきりしないですね。

それはちょっと尋常ではないエラー発生状況ですよね。
こちらでも今でもたまにシステムエラーは出るには出るんですが、そこまで頻繁ではないのでちょっと調べてみます。


とりあえず、Screenコマンドにバグが残っていたので差し替えです。

アドイン版 C.Basic ver.0.99n テスト版 その9.9n(フォルダ対応+再々々々々修正+α版)
http://pm.matrix.jp/CB/CBASIC099n.zip



>Lbl の下の Locate 1,1,"One" が2回、正しい位置に表示されているので、2度書されていますね。
>Locateを使うから同じ位置に上書きしていて、単純に "One" なら sentaro様の言われるようになってしまいます。

あ゛、Locateなのでそうでした!(^^;
手抜きでLocateを省いてリスト入力してたのでちゃんとしたリストチェックになってませんでした。すみません(^^;


>Gosub対応のReturn とサブルーチンから戻る Return がそれぞれあると、面白いですね。

Progの中のGosubサブルーチンから直に元のメインプログラムに戻るReturnがあればということですね。
実現可能かどうか調べてみます。


>ただ、複数文字列を1つの行列=2次元配列で管理できると、ソースのスッキリ度合いがかなり異なる感じがしますよね。

文字配列が2次元で使えるとたしかにすっきりしますね。
行列を3次元化するか、文字配列を新設するかというところでしょうか。


>私が真っ先に思いつくのは、テキスト画面にビットマップ表示をするテクニックとして使えそうな点です。
>既に、LocateYX があるので、グラフィックス画面にLocateと同等な文字表示が出来るので、その逆が可能になるのは面白いと思うんですね。

なるほどです。
テキスト画面も実質はグラフィック画面と同じなのでビットマップが表示できると面白そうです(^^)

System ERROR再び

sentaro様

最新の Ver 0.99n で、ファイルを保存する際の System ERROR が再び頻発すます。

プログラム実行ごとに頻繁に最適化を行うと、毎回時間がかかることから、断片化が激しい感じでです。

プログラムが終了してファイルリストに戻る時にも System ERROR が頻発します。

プログラム起動時にも System ERROR が発生するようです。

これといった再現条件がはっきりしないですね。



ご検討頂けませんか?

Re: Re:行列

sentaro様


> >これから、しばらくは行列関係を、じっくり触ってみたいと思っています。おそらく C.Basic の最大の拡張機能ですね。
> >フォルダ関係も、Save, Load, IsExist 絡みで、確認していきますね。
>
> このあたりはまだバグが潜んでいる可能性大なのでバグあぶり出しよろしくお願いします(^^)

はーい、気をつけて調べてみますね。


> >取りあえず、どうやってまとめるかチョット考えて、項目分けをしてみました。
> >http://egadget.blog.fc2.com/blog-entry-529.html
>
> どんどん充実していってますね(^^)

そうですね!
改めて、C.Basic は、よくできていると思います。



> あ、ひとつ気がついた点として、
> Gosub... Lbl... Return
> のサンプルプログラムは
> Lbl Aからのサブルーチンが2回呼ばれるので
>
> One
> Two
> One
> Three
>
> となります(^^;

私のところでは、

One
Tow
Three

となりますが...

...というか、

Lbl の下の Locate 1,1,"One" が2回、正しい位置に表示されているので、2度書されていますね。
Locateを使うから同じ位置に上書きしていて、単純に "One" なら sentaro様の言われるようになってしまいます。

で、それでは面白くないし、Return が Gosub と サブルーチンからのリターンの2つの動作をすることを強調して、

サブルーチンを以下のように書き換えてみます。

Gosub A
Locate 1,2,"Two"
Return
Lbl A
Locate 1,1,"One"
Return

Gosub対応のReturn とサブルーチンから戻る Return がそれぞれあると、面白いですね。



> >なお、IsExist は、*.bin のチェック専用ですか?
>
> 拡張子を省略した場合は*.binですが、
> 任意のフォルダのファイルでチェックできます。
> Basicソースファイルの場合は、
> IsExist("TEST.g1m")
> とすればよいです。
> 見つかった場合はファイルサイズ、見つからない場合は0が返ります。

ありがとうございます。すっきりしました。



> はい、管理人様案をそっくり採用させていただきました(^^)
> ・Screenコマンドを追加しました。
>  VRAMへ直アクセスする場合に、
>  Screen.tまたはScreen.TでテキストVRAM、
>  Screen.gまたはScreen.GでグラフィックVRAMが描画対象になります。
>  またScreen nでnの値が0の場合はテキストVRAM、1の場合はグラフィックVRAMとなります。
>  Screen単独で使うと描画対象が(テキストVRAM⇔グラフィックVRAM)切り替わります。
>  式の中でScreenを使うと現在のアクセス対象VRAM(0:テキストVRAM、1:グラフィックVRAM)が返ります。

ありがとうございます。


> >ポインタ的な文字列操作と、VRAMアクセスに行列を応用するあたりは、C言語を Casio Basic に持ち込む画期的な拡張だと思うのですが、逆にCを知らない人には、敷居が高いかも知れませんね。
>
> そうですね。Basicを始めたばかりだとポインタはなかなか分かりにくいポイントです(^^;
> 文字列関連はとりあえずは純正の延長で使っていただくのがよいかもですね。

はい、そのための Basic コマンドですからね!
ただ、複数文字列を1つの行列=2次元配列で管理できると、ソースのスッキリ度合いがかなり異なる感じがしますよね。

あっ、C使いのための C.Basic という新たなキャッチフレーズも出来ましたね(^_^)/

このあたりは、色々と面白そうなプログラムが作れそうに思います。



> VRAM直アクセスは実用的な使い道がちょっとどうかなというのはあります(^^;

私が真っ先に思いつくのは、テキスト画面にビットマップ表示をするテクニックとして使えそうな点です。

既に、LocateYX があるので、グラフィックス画面にLocateと同等な文字表示が出来るので、その逆が可能になるのは面白いと思うんですね。

Re:行列

管理人様、こんにちは!

>これから、しばらくは行列関係を、じっくり触ってみたいと思っています。おそらく C.Basic の最大の拡張機能ですね。
>フォルダ関係も、Save, Load, IsExist 絡みで、確認していきますね。

このあたりはまだバグが潜んでいる可能性大なのでバグあぶり出しよろしくお願いします(^^)


>取りあえず、どうやってまとめるかチョット考えて、項目分けをしてみました。
http://egadget.blog.fc2.com/blog-entry-529.html

どんどん充実していってますね(^^)

あ、ひとつ気がついた点として、
Gosub... Lbl... Return
のサンプルプログラムは
Lbl Aからのサブルーチンが2回呼ばれるので

One
Two
One
Three

となります(^^;



>なお、IsExist は、*.bin のチェック専用ですか?

拡張子を省略した場合は*.binですが、
任意のフォルダのファイルでチェックできます。
Basicソースファイルの場合は、
IsExist("TEST.g1m")
とすればよいです。
見つかった場合はファイルサイズ、見つからない場合は0が返ります。


>ところで、グラフィック画面とテキスト画面選択に、Text や Locate を使うことに加えて、それ専用のコマンドを増設するというのは、如何でしょう?
>例えば、Screen コマンドを用意して、
>Screen.g でグラフィクスへ切り替え、
>Screen.t でテキストひ切り返し、
>Screen で、グラフィクスとテキストを入れ替える
>といった感じは、どうでしょうか?

はい、管理人様案をそっくり採用させていただきました(^^)


>ポインタ的な文字列操作と、VRAMアクセスに行列を応用するあたりは、C言語を Casio Basic に持ち込む画期的な拡張だと思うのですが、逆にCを知らない人には、敷居が高いかも知れませんね。

そうですね。Basicを始めたばかりだとポインタはなかなか分かりにくいポイントです(^^;
文字列関連はとりあえずは純正の延長で使っていただくのがよいかもですね。
VRAM直アクセスは実用的な使い道がちょっとどうかなというのはあります(^^;



アドイン版 C.Basic ver.0.99n テスト版 その9.9n(フォルダ対応+再々々々々々修正版)
http://pm.matrix.jp/CB/CBASIC099n.zip
・Screenコマンドを追加しました。
 VRAMへ直アクセスする場合に、
 Screen.tまたはScreen.TでテキストVRAM、
 Screen.gまたはScreen.GでグラフィックVRAMが描画対象になります。
 またScreen nでnの値が0の場合はテキストVRAM、1の場合はグラフィックVRAMとなります。
 Screen単独で使うと描画対象が(テキストVRAM⇔グラフィックVRAM)切り替わります。
 式の中でScreenを使うと現在のアクセス対象VRAM(0:テキストVRAM、1:グラフィックVRAM)が返ります。
 
・セットアップにて隠しRAMを使用するかどうか設定ができます。
 (現状ではファイルバッファのみの使用ですが将来的にはプログラムファイル等でも使用予定です。)

行列

sentaro様

> もし、他の理由で不具合が起きていたらちょっと悩むところでした。
> 今回のバージョンはフォルダ対応での拡張でバグの入り込む余地が多々あったのでまだ油断はできませんが、ほぼファイル系での不具合は解消したのではと思います(^^)

これから、しばらくは行列関係を、じっくり触ってみたいと思っています。おそらく C.Basic の最大の拡張機能ですね。
フォルダ関係も、Save, Load, IsExist 絡みで、確認していきますね。

取りあえず、どうやってまとめるかチョット考えて、項目分けをしてみました。

http://egadget.blog.fc2.com/blog-entry-529.html


ところで、グラフィック画面とテキスト画面選択に、Text や Locate を使うことに加えて、それ専用のコマンドを増設するというのは、如何でしょう?


なお、IsExist は、*.bin のチェック専用ですか?

例えば、Screen コマンドを用意して、

Screen.g でグラフィクスへ切り替え、
Screen.t でテキストひ切り返し、
Screen で、グラフィクスとテキストを入れ替える

といった感じは、どうでしょうか?

> CasioBasicは基本形がfx-5800P内蔵言語として普通に高級言語ですよね。
> グラフ電卓はその高機能拡張系、C.Basicは高速拡張系という感じでしょうか(^^)

ポインタ的な文字列操作と、VRAMアクセスに行列を応用するあたりは、C言語を Casio Basic に持ち込む画期的な拡張だと思うのですが、逆にCを知らない人には、敷居が高いかも知れませんね。

行列を援用したビットマップ操作も、もう一つの目玉ですが、こちらば昔 N88 BASIC の感覚でいけそうなので、往年のプログラマには懐かしいでしょうね!


C.Basic Referenceも佳境に入ってゆきます!


Re: Re:Re: Re:メインメモリの謎

管理人様、こんにちは!

>保存しなおしたらOKになりました。

よかったです(^^)
もし、他の理由で不具合が起きていたらちょっと悩むところでした。
今回のバージョンはフォルダ対応での拡張でバグの入り込む余地が多々あったのでまだ油断はできませんが、ほぼファイル系での不具合は解消したのではと思います(^^)


>コマンドが値を持つことも含めて、Casio Basic が普通の高級言語であることを示す狙いもあります。

いいですね(^^)
CasioBasicは基本形がfx-5800P内蔵言語として普通に高級言語ですよね。
グラフ電卓はその高機能拡張系、C.Basicは高速拡張系という感じでしょうか(^^)

Re: Re:Re: Re:メインメモリの謎

sentaro様


> 本体メモリにコピー出来なくなったファイルは、C.Basic上で保存し直すかRenameかCopyして純正互換ファイルに修正する必要があります。
> それでもNGでしょうか?

保存しなおしたらOKになりました。

そうですよね、今回の修正内容から、これに気付くべきでした。
お騒がせ致しました。
そして、ありがとうございます。

Re:Re: Re:メインメモリの謎

管理人様、こんにちは!

>改めてダウンロードしたのですが、私の手元では改善されません。
>C.Basicの問題だけではない可能性はありますが、アップロードファイルをもう一度ご確認頂けませんか

本体メモリにコピー出来なくなったファイルは、C.Basic上で保存し直すかRenameかCopyして純正互換ファイルに修正する必要があります。
それでもNGでしょうか?

Re: Re:メインメモリの謎

sentaro様


> 純正互換の範囲ですしコマンドサンプルとして分かりやすいですね(^^)

コマンドが値を持つことも含めて、Casio Basic が普通の高級言語であることを示す狙いもあります。


> >ところで、Memory Manager で、Storage メモリから、Main メモリへプログラムファイルをコピーしようとすると、Memory Full と出てコピーできない現象が、私の手元で発生しています。
>
> 現象を確認しました。
> RenameとCopyでファイル保存に問題があって純正互換から外れてしまってエラーになっていました(^^;
> 本体にコピーしてみないと発見しにくいバグだったので助かりました。ありがとうございます!
>
> コピー時にエラーになるので、メインメモリには問題は起きてないと思います(^^)

改めてダウンロードしたのですが、私の手元では改善されません。
C.Basicの問題だけではない可能性はありますが、アップロードファイルをもう一度ご確認頂けませんか


Re:メインメモリの謎

管理人様、こんにちは!

>サインカーブを描き、十字カーソルを左右に動かして X の値を決めてから [EXE] を押すと
>そのXの値に対して、sin X の値を表示して、縦横の点線を描くといったプログラムです。

>色々なコマンドのサンプルになりそうですので、C.Basic Reference に使おうかな、と...

純正互換の範囲ですしコマンドサンプルとして分かりやすいですね(^^)



>ところで、Memory Manager で、Storage メモリから、Main メモリへプログラムファイルをコピーしようとすると、Memory Full と出てコピーできない現象が、私の手元で発生しています。

現象を確認しました。
RenameとCopyでファイル保存に問題があって純正互換から外れてしまってエラーになっていました(^^;
本体にコピーしてみないと発見しにくいバグだったので助かりました。ありがとうございます!

コピー時にエラーになるので、メインメモリには問題は起きてないと思います(^^)


Ver.0.99nで新たに発生したバグなので例によって差し替えです(^^;

アドイン版 C.Basic ver.0.99n テスト版 その9.9n(フォルダ対応+再々々々々修正版)
http://pm.matrix.jp/CB/CBASIC099n.zip
・Rename,Copyするとファイルが純正仕様から外れていたのを修正しました。(v0.99n以前は問題ありません。)

メインメモリの謎

sentaro様


> あ、最後がcomamndになってます(^^;


おっと、修正しておきました。ご指摘感謝です。

他の C.Basic Reference でもおかしなところや、疑問点があれば、お知らせください。


あと、グラフ関係のご説明、ありがとうございます。


簡単なサンプルプログラムを作って、理解できました。


ClrGraph
AxesOn
CoordOn
GridOff
LabelOff
ViewWindow -189,189,30,-1,1,0.5
Deg

"sin X"->Y1
Graph Y=Y1
Plot◢

Exp▶Str(Y1,Str 1)
Exp(Str 1)->Y
S-L-Dot
Vertical X
Horizontal Y
Text 1,1,"X = "
Text 1,16,X
Text 7,1,Str 1
Text 7,22,"- "
Text 7,28,Y

サインカーブを描き、十字カーソルを左右に動かして X の値を決めてから [EXE] を押すと
そのXの値に対して、sin X の値を表示して、縦横の点線を描くといったプログラムです。

色々なコマンドのサンプルになりそうですので、C.Basic Reference に使おうかな、と...


ところで、Memory Manager で、Storage メモリから、Main メモリへプログラムファイルをコピーしようとすると、Memory Full と出てコピーできない現象が、私の手元で発生しています。

ちなみに、Main Mem の残りは 34764 Btye Free となっています。
メモリ最適化をしています。

私の電卓固有の問題が原因にあるのかも知れませんが、C.Basic でメインメモリへのアクセスをしていると思うので、チョット確認頂けませんか?


グラフメモリ関係

管理人様、こんにちは!

>ようやく根本的対策ができて、ユーザーへの安心感が高まりそうですね。

はい!
管理人様の細かなデバッグのおかげですね。ありがとうございます(^^)


>ちらつき (blinking) についての説明も追加しておきました。
>ありがとうございます。

早速にありがとうございます!
あ、最後がcomamndになってます(^^;


>ところで、グラフメモリ関係は以前から C.Basic に実装されていますが、これを追加した時の何か積極的な理由がもしあれば、教えて頂けませんか?

んと、グラフ機能に関してはPlotでのグラフィックカーソルが使えるコマンドとして一番基本的なグラフ描画コマンドを実装しただけなので、コマンド追加の積極的な理由はなく、現状のC.Basicにおいてはグラフ描画関連コマンドの実用性はほとんど無いと思います(^^;
現状のグラフ描画コマンド程度だと、PlotコマンドとLineコマンドだけでプログラムとしてグラフ機能は組むことは出来そうですし(^^;

一応純正互換仕様なので、
Graph Y=sin X
とすればグラフが描かれますが、
グラフメモリ(太字のY)を使って、
"sin X"→Y1
Graph Y=Y1
とすると同じグラフが描けます。

グラフメモリは文字列メモリではなく数式を記憶させるメモリなので、
"sin X + cos Y"→Y1
Y1→A
これは
sin X + cos Y →A
と同じになります。

グラフメモリY1を使って、
Exp(Y1)
とするとエラーになるので、文字列に変換してから
Exp>Str(Y1,Str1)
Exp(Str 1)
という風にしなければいけません(^^;

Re: Re:Goto や Gosub のラベル仕様

sentaro様


> 以前から出ていたシステムエラーもファイルバッファの確保で出ていたっぽいので、それもおそらく直ったのではないかと思います(^^)

ようやく根本的対策ができて、ユーザーへの安心感が高まりそうですね。


> >C.Basic Command Reference の下記の説明を、(多分)分かり易く書き換えました。
> >: Multi-Statement Command & Refresh Suppression
> >http://egadget.blog.fc2.com/blog-entry-541.html
>
> 早速にありがとうございます!(^^)
> 「:」による描画抑制は現在の1/40sリフレッシュコントール描画とは実行時間ではあまり大きな差は出ないのですが、LocateやTextでは結構な差が出ます。
> あと、描画過程を見せないようにしたり描画時のちらつきを無くせることにも効果的ですね。

ちらつき (blinking) についての説明も追加しておきました。
ありがとうございます。



> >このラベルの記述について、仕様としてどうなっていますか?
>
> んと、0~9の数字とA~Zのアルファベット1文字が飛び先として認識されます。
> ここは純正仕様と同様のはずです。
>
> ですが、純正と違うのはラベル名のエラーチェックが緩いというか、コマンドが成立したらそれでOkということで、1文字以上のラベルのエラーチェックがされてないというか…(^^;


高速化を優先させるために、実害のないチェックを甘くしていたとのこと、よく分かりました。ありがとうございます。



> ということで、
> Goto A1B2の場合は
> Goto Aという認識で解釈されてジャンプした後は、その後の1B2は実行されることがありません。
> Gosub A1B2
> という場合には
> Gosub A
> でサブルーチンから返って来て1B2を数式として解釈して実行するのでたまたまエラーにならないということになります…(^^;

これは、たまたま 1B2 が式として評価されるからエラーにならなかったということ、確認できました。



> 前の0.99mからグラフ式メモリーの仕様を変更していたのを元に戻しました。
>
> 変更が少ないのでVer.0.99n差し替えです(^^;


グラフ式メモリについては、純正でも全く手つかずです。ちょっと触ってみようと思います。

ところで、グラフメモリ関係は以前から C.Basic に実装されていますが、これを追加した時の何か積極的な理由がもしあれば、教えて頂けませんか?

Re:Goto や Gosub のラベル仕様

管理人様、こんにちは!

>System ERROR が発生しなくなりました。

以前から出ていたシステムエラーもファイルバッファの確保で出ていたっぽいので、それもおそらく直ったのではないかと思います(^^)


>C.Basic Command Reference の下記の説明を、(多分)分かり易く書き換えました。
>: Multi-Statement Command & Refresh Suppression
http://egadget.blog.fc2.com/blog-entry-541.html

早速にありがとうございます!(^^)
「:」による描画抑制は現在の1/40sリフレッシュコントール描画とは実行時間ではあまり大きな差は出ないのですが、LocateやTextでは結構な差が出ます。
あと、描画過程を見せないようにしたり描画時のちらつきを無くせることにも効果的ですね。


>このラベルの記述について、仕様としてどうなっていますか?

んと、0~9の数字とA~Zのアルファベット1文字が飛び先として認識されます。
ここは純正仕様と同様のはずです。

ですが、純正と違うのはラベル名のエラーチェックが緩いというか、コマンドが成立したらそれでOkということで、1文字以上のラベルのエラーチェックがされてないというか…(^^;

ということで、
Goto A1B2の場合は
Goto Aという認識で解釈されてジャンプした後は、その後の1B2は実行されることがありません。
Gosub A1B2
という場合には
Gosub A
でサブルーチンから返って来て1B2を数式として解釈して実行するのでたまたまエラーにならないということになります…(^^;

この他にも純正よりも構文チェックが緩い箇所がありますが、実行速度に密接に関わってくるので実使用上問題ないところは仕様ということで…(^^;
今のところ純正よりも構文チェックが厳しくなるのはIfEndチェックが有効になった時のIfEndだけですね。


前の0.99mからグラフ式メモリーの仕様を変更していたのを元に戻しました。

変更が少ないのでVer.0.99n差し替えです(^^;

アドイン版 C.Basic ver.0.99n テスト版 その9.9n(フォルダ対応+再々々々修正版)
http://pm.matrix.jp/CB/CBASIC099n.zip
・グラフ式(Yn)から文字列メモリー(Str n)への変換を文字列のコピー構文でも可能にしてましたが純正と仕様が違ってしまったために純正仕様に戻しました。
(例)Y1→Str 1
 これは純正同様にエラーになります。
・グラフ式(Yn)メモリーは式として評価するので返り値は数値になります。(純正仕様)
(例)Y1→A

System ERROR 解消

sentaro様

C.Basic Command Reference の下記の説明を、(多分)分かり易く書き換えました。

: Multi-Statement Command & Refresh Suppression

http://egadget.blog.fc2.com/blog-entry-541.html

Goto や Gosub のラベル仕様

sentaro様


今日気付いたのですが、Gosub や Goto で使うラベルに数値を使う場合、かなり大きな数字まで使えます。

純正では、0~9に限定されていますので、上記は Casio Basic の拡張機能ですね。

ラベルに 例えば A1B2 としても動作します。

...ということは、文字列として認識されているようですね。


このラベルの記述について、仕様としてどうなっていますか?

System ERROR 解消

sentaro様

早々のご対応、ありがとうございます。

System ERROR が発生しなくなりました。

> >ところで、強制リフレッシュコマンドは、有ると良いと思います。
>
> 了解です。
> とりあえず強制リフレッシュコマンドとして、「PutDispDD」コマンドを(SDKそのまんまですけど)追加しておきました(^^)
>
> すべての画面描画コマンドの最後に「:」を付けておいて、表示したい箇所で「PutDispDD」コマンドを使うとSDKで組む時と同じ描画システムになります。

そこで、C.Basic Command Reference に、以下を追加しました。PutDispDD を利用したサンプルコードを紹介しています。

: Multi-Statement Command & Refresh Suppression

http://egadget.blog.fc2.com/blog-entry-541.html

説明が元分かり易いような書き方があるかも知れませんが...

そのうち書き直すかも知れません。

Re:System ERROR 頻発

管理人様、こんにちは!

>メモリ最適化は頻繁に行っているのですが、ファイルをリネームしたり保存するたびに、かなりの確率で System ERROR のためリスタートになっています。
どうもファイル書き込み時に何かありそうな感じです。
>そちらでは如何でしょうか?

なんか妙にシステムエラーが出るようになったなぁとは思っていたのですが、あろうことかメモリ解放する必要が無いのにメモリ解放していたのがエラーの原因でした(^^;
隠しメモリにバッファを移した際にエンバグしていた模様です。
ってことで致命的バグということで再度差し替え修正です(^^;


>ところで、強制リフレッシュコマンドは、有ると良いと思います。

了解です。
とりあえず強制リフレッシュコマンドとして、「PutDispDD」コマンドを(SDKそのまんまですけど)追加しておきました(^^)

すべての画面描画コマンドの最後に「:」を付けておいて、表示したい箇所で「PutDispDD」コマンドを使うとSDKで組む時と同じ描画システムになります。


アドイン版 C.Basic ver.0.99n テスト版 その9.9n(フォルダ対応+再々々修正版)
http://pm.matrix.jp/CB/CBASIC099n.zip

・隠しメモリ領域を使うファイルバッファ関連で致命的バグがあったのを修正しました。
・強制画面書き換えコマンドとしてPutDispDDコマンドを追加しました。

System ERROR 頻発

sentaro様


メモリ最適化は頻繁に行っているのですが、ファイルをリネームしたり保存するたびに、かなりの確率で System ERROR のためリスタートになっています。
どうもファイル書き込み時に何かありそうな感じです。

そちらでは如何でしょうか?

ところで、強制リフレッシュコマンドは、有ると良いと思います。

Re: : (区切りコード)について

>1) 表示/描画コマンドは、リフレッシュサイクル 約(1/40)秒で表示を行うが、例外のコマンドは何か?
  例外は、Locate, Text, ClrText, ClrGraph, Cls で、これらは実行時に画面書き換えを行う...で良いですか?

はい。
ただ、Clr系はClrTextはコマンド実行時に即画面書き換えですが、Clrと ClrGraphは内部のVRAMだけの消去で次のグラフィックコマンドが実行された時に画面書き換えされる形になってます。


>2) ビジーマーカーの書き換えタイミングは、リフレッシュサイクルと例外コマンドの実行の両方のタイミングで発生?

はい、どちらもコマンド実行後にビジーマーカーを描画します。


>3) :の表示/描画抑制は、全ての表示/描画コマンドに有効か?

はい、Locate, Textを含めて全てのコマンドで有効です。

ということなので、
本来は強制的に画面書き換えをする専用コマンドも用意するのが自然な形なような気がしていますがどうしましょうか?(^^)

またまたまたVer.0.99n差し替えです(^^;

管理人様、こんにちは!

>このような力作では、多くのサブルーチンファイルがあるので、別フォルダへ格納して使うのが良いという良い例だと思います。

プログラムが複数に分かれた場合はサブフォルダ単位で管理、運用するのが一番ですね。
その観点で使えるようにフォルダ対応していたのがVer.0.99mまでだったのですが、お気に入りが消えるのが欠点でした(^^;
Ver.0.99nでやっと消えないようになったので結果としてサブフォルダにほぼ完全対応となりました(^^)


>ところで、何階層まで深いフォルダへのアクセスが可能でしょうか?

OSの仕様では1層までとなっていますのでC.Basicでも1層までの対応です(^^;


>この仕様ですが、サブフォルダに移行した時、サブフォルダ内の最初のファイルがファイルリストの一番上に来るようにできませんか?
>或いは、==== Favorites ===== の表示を1行目に持ってくるというのもアリで、この場合はお気に入りが有るけど、その下にサブフォルダのファイルを表示しています...ということが伝わると思います。

実装を考えた場合、管理人様のこの案が簡単かつ分かりやすいので、この仕様をそっくり採用させていただきました(^^)


>GoSub で指定する引数ですが、
>引数の渡し方は、Local を使うのではないですよね?

Ver.0.93でProgコマンドに引数が付く拡張時にGosubも追加したのですが、この時の引数仕様が小文字のaから順に代入される仕様でした。
それがVer.0.94でローカル変数導入で、Gosubは…引数が受け取れなくなってしまってます、って今気が付きました(^^;
今のところ、引数は使えない仕様のままです(^^;


>また、サブルーチン中で GoSub を使う場合、GoSub に戻る際の Return で、サブルーチンが終了してメインへ戻る心配はありませんか?

サブプログラムのProg~ReturnよりもGosub~Returnが優先するのでその心配はありません(^^)


アドイン版 C.Basic ver.0.99n テスト版 その9.9n(フォルダ対応+再々修正版)
http://pm.matrix.jp/CB/CBASIC099n.zip
・サブフォルダに移動する場合にリストの一番上にサブフォルダの先頭ファイルが来るようにしました。
・お気に入りリストのプログラムがカレントフォルダ以外にある場合はフォルダ名から表示されるようにしました。(但し先頭5文字までです。)
・今回より、隠しメモリ領域にファイルリストのバッファを移動してみました。(fx-9860GII以降)
 これによりフォルダ移動を繰り返してもヒープメモリの断片化は発生しなくなります。

: (区切りコード)について

sentaro様

区切りコードのもう一つの「表示/描画抑制機能」について、教えてください。

1) 表示/描画コマンドは、リフレッシュサイクル 約(1/40)秒で表示を行うが、例外のコマンドは何か?
  例外は、Locate, Text, ClrText, ClrGraph, Cls で、これらは実行時に画面書き換えを行う...で良いですか?

2) ビジーマーカーの書き換えタイミングは、リフレッシュサイクルと例外コマンドの実行の両方のタイミングで発生?

3) :の表示/描画抑制は、全ての表示/描画コマンドに有効か?


以上、確認させてください。


GoSub について

sentaro様

GoSub で指定する引数ですが、

GoSub A, 123,456
.......
.......
Lbl A
'どうやって、123と456を受け取る?
return


引数の渡し方は、Local を使うのではないですよね?

また、サブルーチン中で GoSub を使う場合、GoSub に戻る際の Return で、サブルーチンが終了してメインへ戻る心配はありませんか?


Re: またまたVer.0.99n差し替えです(^^;

sentaro様

移動中にフォルダ関係を触ってみています。

先ずは、ガノー様のYOKOLOTH3連作、YOKOLOTH, YOKOLITH95, YOKOLITH最終版を、それぞれ別のフォルダにガサッとコピーし、そこで遊んでみています。フォルダ内で、フォルダを跨がない条件だと問題ないことが確認できました。

このような力作では、多くのサブルーチンファイルがあるので、別フォルダへ格納して使うのが良いという良い例だと思います。

=====

次に、サブフォルダ内のメインファイルをお気に入り追加してみたところ、正常に追加され正常動作することも確認しました。


=====

このあと、プログラム上でサブフォルダアクセスまわりを、色々と触ってみようと思います。
ところで、何階層まで深いフォルダへのアクセスが可能でしょうか?

=====

ユーザーインターフェースについて、要望があります。

お気に入りに6個~7個のファイルを指定している時、サブフォルダに移行してもお気に入りが頭から表示されます。これは仕様通りの動作です。

この仕様ですが、サブフォルダに移行した時、サブフォルダ内の最初のファイルがファイルリストの一番上に来るようにできませんか?

というのも、サブフォルダに移行するときは、フォルダ内のファイルを実行させるか編集するという目的が必ずあります。なのでこのような仕様変更ができれば、ありがたいと思うわけです。如何でしょうか?

或いは、==== Favorites ===== の表示を1行目に持ってくるというのもアリで、この場合はお気に入りが有るけど、その下にサブフォルダのファイルを表示しています...ということが伝わると思います。まぁ、この例外的な処理はコードに無駄な負担をかけるような気がするので、そこはシンプルに「サブフォルダ先頭ファイルを1行目に表示」で全然問題無いとは思います。

なお、サブフォルダ表示の際にもお気に入り表示があるのはとても有り難くて、[EXIT]キーを押せば、スグにお気に入り先頭までスクロールされるので便利です。

ご検討ください。

またまたVer.0.99n差し替えです(^^;

管理人様、こんにちは!

>で、Memory Manager 或いは FA-124A でストレージメモリにフォルダを作ったのですが、C.Basicではフォルダとして認識されません。
>0,99m ではフォルダとして認識していたと思います。
>いきなり、ここで躓いています。

なんと、あろうことか、フォルダを認識しない仕様になっていたというかバグが入り込んでしまってて、フォルダ未対応になってしまってました(^^;

ってことで速攻修正差し替えです。
これでフォルダ機能を試せると思います(^^;


>式の中で使う場合、( )を使わなくても、以下のものだとOKです。

あ、確かに、この場合は大丈夫ですね。
区切り直後とか、コマンドでなく式しか認識ない箇所ではカッコは必要ないということになります(^^)

Re: Re:Re:Re: アドイン版 C.Basic ver.0.99n テスト版 その9.9n(フォルダ対応+ElseIf修正版)

sentaro様


最新版 0.99n で、フォルダ関連を触ってみました。

で、Memory Manager 或いは FA-124A でストレージメモリにフォルダを作ったのですが、C.Basicではフォルダとして認識されません。

0,99m ではフォルダとして認識していたと思います。

いきなり、ここで躓いています。


> WSC On-calc C Compiler はファイルリスト関連のベースでそっくり参考にさせていただいたプログラムですけど、

そういえば、以前そのようにおっしゃっていたのを思い出しました。


> 3年前くらいからFastbasicのプロジェクトトピックもありますね。

正直、アドインを試すのが、チョット怖いと思うことがあります。



> ってことで再度修正しておきました。

確認しました。



> >ところで、1つ前の Ver 0.99m ですが、色々とテストしていて、期待した動作でないと思うソースファイルを保存する時、Syntax ERRORで、リスタートすることが結構あります。File List で Can't find File エラーが出ることもありました。最近は C.Basic のテストではノーマルクロックにしています。それで上記のようなエラーにそく遭遇していました。
>
> これは同じ現象がこちらでもたまに確認できてます。
> おそらく内部でメモリ領域不足が起きているからだろうと思われるのですが、いつも発生するわけで対策が後回しになってしまっています(^^;
> 0.99n以降でのフォルダ移動はその都度ファイルリスト更新でメモリ断片が起きやすいので、さらに発生頻度が増える可能性有りです(^^;
> リスタートで電卓が壊れる可能性はほぼ無いと思われますが、リスタートになるのはさすがに精神衛生上よろしくないのでエラーの発生メカニズムが掴めたらすぐに対策したいと思います。


確かに断片化が激しいのは体感しています。C.Basic肥大化の限界が近づいてきているのかも知れませんね。

フォルダを超えたファイルアクセスは、取りあえず置いておいて、フォルダ内にあるメインとサブルーチンだけで確実に実行できるようにするのを優先させませんか?これだと、一旦最適化すれば断片化が進むことを抑えられると思いますが、如何でしょうか?

他の方が作ったプログラムには、自分が作ったものと同じファイル名があって使いづらいという問題を、サブフォルダへ逃がして解決するだけでも、大きな意味があると思います。


> >おそらく Getkey1 や Getkey2 がプログラムの最後に来ることは想定していないことから、そしてこれらのコマンドは後ろにスペースを伴わない作りだからだろうと思いますが、改善できますか?
>
> 確認しました。おっしゃるとおりプログラムの最後というのが想定外でした(^^;
> ってことで、ちゃんと動作するように修正しておきました。

正常動作を確認しました。


> >Engコマンドで、EngOn と EngOff の切替えがうまく動作していないようです。
>
> これはEngコマンドサポート時(Ver.0.66)にEng状態を読みだすシステム変数扱いになっていました(^^;
> ということで、コマンドとして純正互換になるように仕様を戻しました。
>
> Eng単独で使うと切り替えコマンドとして作用し、式の中で使うとEng状態を示すシステム変数となります。
> 式の中で使うには()で挟んで(Eng)とすればよいです。


修正を確認しました。

式の中で使う場合、( )を使わなくても、以下のものだとOKです。

If Eng=1:Then "1"
Else "0"
IfEnd
Eng
0,001



> >アンケートコーナーで新しい項目を追加しました。
> >http://egadget.blog.fc2.com/blog-entry-506.html
>
> これはまた興味深いアンケートですね。

はい、皆さんの回答が楽しみです。



> その昔、電卓やポケコン、8ビットPCの時代は目的のプログラムは自作するのが当たり前でしたが、WinPC時代になってからはどこかに目的のプログラムが存在しているという理由でほぼ自作する必要が無くなりました(^^;
> そして今、また電卓、それも高機能グラフ電卓ですが、必要な物はやっぱり自作するしかない世界なので、プログラミングの楽しみが蘇ったわけですね(^^)

このような考え方は、面白いですね。そのとおりだと思います。


> 管理人様のCasioBasic探索は非常に興味深い内容が多く、C.Basicの互換仕様には必須の「インサイド Casio Basic」にはとっても期待しています(^^)

期待に応えられるように、努力しますね(^_^)/


Re:Re:Re: アドイン版 C.Basic ver.0.99n テスト版 その9.9n(フォルダ対応+ElseIf修正版)

管理人様、こんにちは!

>UCFでは、Your Project で On Calc Language, compiler の話題が出ています。これを見たもので、C.Basicも早く紹介できるようにしたいと思っています。

WSC On-calc C Compiler はファイルリスト関連のベースでそっくり参考にさせていただいたプログラムですけど、3年前くらいからFastbasicのプロジェクトトピックもありますね。


>ありがとうございます。ちょっと伝え方が悪かったと思いますが、Full Favorites にすることを提案したつもりでした。これが最も自然な英語ですよね。

あ゛…なるほどです(^^)
ってことで再度修正しておきました。


>C.Basic Command Reference に ElseIf Statement の説明を追加しました。
http://egadget.blog.fc2.com/blog-entry-529.html

分かりやすくていいですね。
ありがとうございます(^^)


>ところで、1つ前の Ver 0.99m ですが、色々とテストしていて、期待した動作でないと思うソースファイルを保存する時、Syntax ERRORで、リスタートすることが結構あります。File List で Can't find File エラーが出ることもありました。最近は C.Basic のテストではノーマルクロックにしています。それで上記のようなエラーにそく遭遇していました。

これは同じ現象がこちらでもたまに確認できてます。
おそらく内部でメモリ領域不足が起きているからだろうと思われるのですが、いつも発生するわけで対策が後回しになってしまっています(^^;
0.99n以降でのフォルダ移動はその都度ファイルリスト更新でメモリ断片が起きやすいので、さらに発生頻度が増える可能性有りです(^^;
リスタートで電卓が壊れる可能性はほぼ無いと思われますが、リスタートになるのはさすがに精神衛生上よろしくないのでエラーの発生メカニズムが掴めたらすぐに対策したいと思います。


>おそらく Getkey1 や Getkey2 がプログラムの最後に来ることは想定していないことから、そしてこれらのコマンドは後ろにスペースを伴わない作りだからだろうと思いますが、改善できますか?

確認しました。おっしゃるとおりプログラムの最後というのが想定外でした(^^;
ってことで、ちゃんと動作するように修正しておきました。


>Engコマンドで、EngOn と EngOff の切替えがうまく動作していないようです。

これはEngコマンドサポート時(Ver.0.66)にEng状態を読みだすシステム変数扱いになっていました(^^;
ということで、コマンドとして純正互換になるように仕様を戻しました。

Eng単独で使うと切り替えコマンドとして作用し、式の中で使うとEng状態を示すシステム変数となります。
式の中で使うには()で挟んで(Eng)とすればよいです。



>アンケートコーナーで新しい項目を追加しました。
http://egadget.blog.fc2.com/blog-entry-506.html

これはまた興味深いアンケートですね。


>というのも、これまでにメールやコメントで頂く内容を見ると、過去にプログラミングの経験があって、色々な理由で長らく中断した後に電卓でプログラミングをやってみよう、という方が結構いらっしゃいます。私自身も同じでして、そのような人向けに作ろうと思ったのが、「Casio Basic辞典」のような「インサイド Casio Basic」なんですね。

その昔、電卓やポケコン、8ビットPCの時代は目的のプログラムは自作するのが当たり前でしたが、WinPC時代になってからはどこかに目的のプログラムが存在しているという理由でほぼ自作する必要が無くなりました(^^;
そして今、また電卓、それも高機能グラフ電卓ですが、必要な物はやっぱり自作するしかない世界なので、プログラミングの楽しみが蘇ったわけですね(^^)
管理人様のCasioBasic探索は非常に興味深い内容が多く、C.Basicの互換仕様には必須の「インサイド Casio Basic」にはとっても期待しています(^^)



それでは0.99n差し替えです(^^;
フォルダ関連で多少のバグ修正しました。

アドイン版 C.Basic ver.0.99n テスト版 その9.9n(フォルダ対応+ElseIf修正+バグ修正版)
http://pm.matrix.jp/CB/CBASIC099n.zip

・Engコマンドを純正CasioBasic同様のEngモード切り替えとしました。
 Engモードの状態を知るには(Eng)で読み出せます。
 返り値0:EngOff
 返り値1:EngOn

・Getkey1、Getkey2がプログラムの最後に来た時にコマンドが二回繰り返される不具合を修正しました。
・お気に入りの最大数を超えた場合のエラーメッセージをFull Favoritesに変更しました。

Re: Re: アドイン版 C.Basic ver.0.99n テスト版 その9.9n(フォルダ対応+ElseIf修正版)

sentaro様


アンケートコーナーで新しい項目を追加しました。
http://egadget.blog.fc2.com/blog-entry-506.html


というのも、これまでにメールやコメントで頂く内容を見ると、過去にプログラミングの経験があって、色々な理由で長らく中断した後に電卓でプログラミングをやってみよう、という方が結構いらっしゃいます。私自身も同じでして、そのような人向けに作ろうと思ったのが、「Casio Basic辞典」のような「インサイド Casio Basic」なんですね。

このような方向性を紹介したエントリーもアップしました。

http://egadget.blog.fc2.com/blog-entry-537.html


Re: アドイン版 C.Basic ver.0.99n テスト版 その9.9n(フォルダ対応+ElseIf修正版)

sentaro様

お疲れ様です。


> 実数の扱いが2進数だったりで100%互換にはならないですけど、細かなクセについては管理人様のCasioBasic探索の成果がすごく大きいですね。
> いつもありがとうございます(^^)

見つけた詳細仕様をきっちり実装してくださるのは、凄いと思います。こんな形で実を結ぶとは思いもよりませんでした。

頑張ってコマンドリファレンスとマニュアル(実はこれも重要ですね)を作ってゆきます。

UCFでは、Your Project で On Calc Language, compiler の話題が出ています。これを見たもので、C.Basicも早く紹介できるようにしたいと思っています。



> >これを超える場合のエラーメッセージが、Favorites Over ですが、over flow とか over max とかの意味と思いますが、Favorites Full の方がスグに分かる英語なような気がします。
>
> 了解です。今回バージョンで修正しました(^^)

ありがとうございます。ちょっと伝え方が悪かったと思いますが、Full Favorites にすることを提案したつもりでした。これが最も自然な英語ですよね。


> >テキスト変換操作で気がついたことがあります。
> >File List で [SHIFT]を押して [F1](Text) が表示されている状態で、[EXE]キーを押すとテキスト変換されます。
> >おそらく[F1](EXE)と表示されているときに[EXE]キーを押すとプログラム実行するので、同じになっていると思います。
> >[EXE]キーを押してテキスト変換されない方が良いと思いますが、如何でしょうか?
>
> はい、これは管理人様のおっしゃる通りでした(^^;
> ってことで修正しました。

確認致しました。[F1](Text)が表示されているときは、[EXE]キーが効かないようになりましたね。



> >文法的には間違いですが、純正では許容されます。
> >最近、文法チェックを厳しくされましたか?
>
> ver0.89から導入されたIfとIfEndの対応チェックが有効になっている状態です。
> デフォルトでは無効になっているはずが…何かの間違いで有効になっていました(^^;
> 管理人様が設定ファイルを削除初期化された時にIfEndの対応チェックが有効になったものと思われます。
> この状態だとCasioBasicよりも厳しい状況なので、今回バージョンより、デフォルトでは無効にしておきました。

わっ、そうか Setup で確認して変更すれば良かったのでですね!

C.Basic Command Reference に ElseIf Statement の説明を追加しました。
http://egadget.blog.fc2.com/blog-entry-529.html




> ということで、Ver.0.99nですが、
> 今回はファイル関連の変更点が多いのでバグが残ってる可能性大です(^^;

はい、バグ出しにいそしみます(^^;


ところで、1つ前の Ver 0.99m ですが、色々とテストしていて、期待した動作でないと思うソースファイルを保存する時、Syntax ERRORで、リスタートすることが結構あります。File List で Can't find File エラーが出ることもありました。最近は C.Basic のテストではノーマルクロックにしています。それで上記のようなエラーにそく遭遇していました。

Ver 0.99n でどうなるか、様子を見ようと思います。


サブフォルダ関係については、これからテストさせて頂きますね。


ところで、今日は2点ほど確認があります。

値渡しのサブルーチン機能のテストのための、以下のプログラムを試してみてください。

<メインプログラム>
*File Name: "-PROGTEST"
"Press key"
Prog "-PROGB",Getkey1

<サブルーチン>
*File Name: "-PROGB"
Local k
Switch k
Case 72
"ONE"
Break
Case 62
"TWO"
Break
Case 52
"THREE"
Break
Default
"ELSE"
SwitchEnd


メインプログラムで、Getkey1 や Getkey2 の後に改行や:が有る時は、期待した通りの動作をします。
一方、Getkey1 や Getkey2 の後に改行や:が無い時は、上のプログラムだと1回目のキー入力には応答せず、2回目のキー入力に応答します。

おそらく Getkey1 や Getkey2 がプログラムの最後に来ることは想定していないことから、そしてこれらのコマンドは後ろにスペースを伴わない作りだからだろうと思いますが、改善できますか?


次は、Eng コマンドです。

Engコマンドで、EngOn と EngOff の切替えがうまく動作していないようです。

純正Casio Basicでは以下のコードが正常動作しますが、C.Basic Ver 0.99m や 0.99n では切替が出来ていないようです。

Eng
0.001

これを繰り返すたびに、表示が 0.001 と 1m と切り替わることは。純正で確認しています。


よろしくお願い致します。



Ver.0.99n差し替えです(^^;

フォルダ間呼び出しのバグ残ってました。
まだまだバグありそうです(^^;

アドイン版 C.Basic ver.0.99n テスト版 その9.9n(フォルダ対応+ElseIf修正版)

管理人様、こんにちは!

>私が言うのもなんですが、純正Casio Basic の細かなクセまで見事に互換になっていますね
>そうなると、Inside Casio Basic もしっかり完成させないとダメですね。

実数の扱いが2進数だったりで100%互換にはならないですけど、細かなクセについては管理人様のCasioBasic探索の成果がすごく大きいですね。
いつもありがとうございます(^^)


>ところで、お気に入りに設定できるのは最大7個ですよね?

はい、今の仕様では最大7個になってます。

>これを超える場合のエラーメッセージが、Favorites Over ですが、over flow とか over max とかの意味と思いますが、Favorites Full の方がスグに分かる英語なような気がします。

了解です。今回バージョンで修正しました(^^)


>テキスト変換操作で気がついたことがあります。
>File List で [SHIFT]を押して [F1](Text) が表示されている状態で、[EXE]キーを押すとテキスト変換されます。
>おそらく[F1](EXE)と表示されているときに[EXE]キーを押すとプログラム実行するので、同じになっていると思います。
>[EXE]キーを押してテキスト変換されない方が良いと思いますが、如何でしょうか?

はい、これは管理人様のおっしゃる通りでした(^^;
ってことで修正しました。


>文法的には間違いですが、純正では許容されます。
>最近、文法チェックを厳しくされましたか?

ver0.89から導入されたIfとIfEndの対応チェックが有効になっている状態です。
デフォルトでは無効になっているはずが…何かの間違いで有効になっていました(^^;
管理人様が設定ファイルを削除初期化された時にIfEndの対応チェックが有効になったものと思われます。
この状態だとCasioBasicよりも厳しい状況なので、今回バージョンより、デフォルトでは無効にしておきました。


ということで、Ver.0.99nですが、
今回はファイル関連の変更点が多いのでバグが残ってる可能性大です(^^;


アドイン版 C.Basic ver.0.99n テスト版 その9.9n(フォルダ対応+ElseIf修正版)
http://pm.matrix.jp/CB/CBASIC099n.zip

・お気に入りリストがフォルダに対応しました。フォルダ移動してもお気に入りリストが消えることがありません。
 サブフォルダからルートへの移動は[SHIFT]+[EXIT](QUIT)ですが、カーソルがリストの先頭にある場合は[EXIT]でルートに移動するように変更しました。

・ファイルネーム入力時ににフォルダを指定すると別のフォルダ内のファイルにアクセスで
 フォルダ区切り文字は"/"もしくは"\"(バックスラッシュ)になります。
(例)Save "/SUB/TEST",Mat A
(例)Load("SUB/TEST")→Mat A

・ファンクションメニュー描画コマンドを追加しました。
(例)Fkey(1,"ABC")
 一番左側のファンクションメニューエリアにABCが描画されます。
(例)FkeyMenu(6,"ABC",R)
 一番右側のファンクションメニューエリアにABCが反転モードで描画されます。
(例)FkeyMenu(6,"",C)
 一番右側のファンクションメニューエリアを消去します。

・If~ElseIfの動作を修正しました。
・テキスト変換が[EXE]キーでも動作していたのを修正しました。
・小文字行列名が整数モードで使えなかったのを修正しました。
・お気に入りの最大数を超えた場合のエラーメッセージをFavorites Fullに変更しました。

・今回のバージョンより設定保存ファイルが変更になりますので以前のバージョンまでとは設定ファイルの互換性が無くなります。

IfEnd の扱いについて

sentaro様

最近のバージョンで IfEnd の扱いが変化しているようです。

以下のプログラムは、以前のバージョンではエラーにならなかったのですが、現在のバージョンではエラーになります。

"Press any key"->K
If K=1:Then
"ONE"
Else If K=2:Then
"TWO"
IfEnd

文法的には間違いですが、純正では許容されます。

最近、文法チェックを厳しくされましたか?

...というのは、以前純正Casio Basicで作ったゲームがあって、上記のように IfEndが一個足りなかったのです。純正でも少し前までの C.Basic で動いていましたが、現在のC.Basic ではエラーになります。

おかげで、文法ミスに気がついたという話しではあります(^^;


純正の拘るのか、文法チェックをしっかりやるのか、悩ましいところですね。

以前の C.Basic では動いていたのは、きちんと分かって許していたのなら、最新バージョンでも許すことは出来ませんか?

ElseIf と関連がありそうですが、どうでしょうか?


テキスト変換

sentaro様


テキスト変換操作で気がついたことがあります。

File List で [SHIFT]を押して [F1](Text) が表示されている状態で、[EXE]キーを押すとテキスト変換されます。

おそらく[F1](EXE)と表示されているときに[EXE]キーを押すとプログラム実行するので、同じになっていると思います。

[EXE]キーを押してテキスト変換されない方が良いと思いますが、如何でしょうか?




> 管理人様、こんにちは!
>
> >ElseIf は複数重ねて使えないのでしょうか?
>
> エラーの原因が分かりました。
> ElseIfコマンドには問題がなく飛越先キャッシュの不具合でした(^^;
> 最初の実行ではOkでも、2度め以降のキャッシュされた状態ではエラーになってました。
> 次回バージョンで修正しておきます。
>
>
> >取りあえず、公開するために、コマンドリファレンスとして、独自拡張機能だけ簡単に作ろうと思います。
> >http://egadget.blog.fc2.com/blog-entry-529.html
> >2つ3つ追加しました。
>
> CasioBasic互換部分はほぼ99%同じなので拡張機能だけでよいですね(^^)
>
>
> >あ、そうですか...readme_J.txt に書いてありましたっけ?
>
> あ゛…すみません、Ver.0.99jからQUITを追加したのでつい最近でした(^^;
>
>
> >先ずは、サブフォルダへ行って戻ったらお気に入りが消えない対処からお願い致します。
>
> お気に入りの消えてしまう仕様はこれはさすがになんとかしないといけないですね(^^;
>
>
> >サブフォルダ内で完結するなら、仕様として良いと思います。
> >フォルダまたぎは、その後でも良いと思います。
>
> ファイルの扱いがフォルダ固定前提の仕様になっていたので若干の増築が必要ですが、根本的な使い勝手に関わる部分なのでフォルダアクセスもちゃんと出来るように対応してみます(^^)

Re: Re: ElseIf

sentaro様


> >ElseIf は複数重ねて使えないのでしょうか?
>
> エラーの原因が分かりました。
> ElseIfコマンドには問題がなく飛越先キャッシュの不具合でした(^^;
> 最初の実行ではOkでも、2度め以降のキャッシュされた状態ではエラーになってました。
> 次回バージョンで修正しておきます。

ありがとうございます。


> >取りあえず、公開するために、コマンドリファレンスとして、独自拡張機能だけ簡単に作ろうと思います。
> >http://egadget.blog.fc2.com/blog-entry-529.html
> >2つ3つ追加しました。
>
> CasioBasic互換部分はほぼ99%同じなので拡張機能だけでよいですね(^^)

私が言うのもなんですが、純正Casio Basic の細かなクセまで見事に互換になっていますね

そうなると、Inside Casio Basic もしっかり完成させないとダメですね。


> >先ずは、サブフォルダへ行って戻ったらお気に入りが消えない対処からお願い致します。
>
> お気に入りの消えてしまう仕様はこれはさすがになんとかしないといけないですね(^^;

> ファイルの扱いがフォルダ固定前提の仕様になっていたので若干の増築が必要ですが、根本的な使い勝手に関わる部分なのでフォルダアクセスもちゃんと出来るように対応してみます(^^)

よろしくお願い致します。



ところで、お気に入りに設定できるのは最大7個ですよね?

これを超える場合のエラーメッセージが、Favorites Over ですが、over flow とか over max とかの意味と思いますが、Favorites Full の方がスグに分かる英語なような気がします。


Re: ElseIf

管理人様、こんにちは!

>ElseIf は複数重ねて使えないのでしょうか?

エラーの原因が分かりました。
ElseIfコマンドには問題がなく飛越先キャッシュの不具合でした(^^;
最初の実行ではOkでも、2度め以降のキャッシュされた状態ではエラーになってました。
次回バージョンで修正しておきます。


>取りあえず、公開するために、コマンドリファレンスとして、独自拡張機能だけ簡単に作ろうと思います。
http://egadget.blog.fc2.com/blog-entry-529.html
>2つ3つ追加しました。

CasioBasic互換部分はほぼ99%同じなので拡張機能だけでよいですね(^^)


>あ、そうですか...readme_J.txt に書いてありましたっけ?

あ゛…すみません、Ver.0.99jからQUITを追加したのでつい最近でした(^^;


>先ずは、サブフォルダへ行って戻ったらお気に入りが消えない対処からお願い致します。

お気に入りの消えてしまう仕様はこれはさすがになんとかしないといけないですね(^^;


>サブフォルダ内で完結するなら、仕様として良いと思います。
>フォルダまたぎは、その後でも良いと思います。

ファイルの扱いがフォルダ固定前提の仕様になっていたので若干の増築が必要ですが、根本的な使い勝手に関わる部分なのでフォルダアクセスもちゃんと出来るように対応してみます(^^)

Re: Re:Re: Re:Exp▶Str( ) コマンドとエラー

sentaro様


> はい、C.Basicにおけるグラフ機能はViewWindowやPlotコマンドでグラフィックカーソルを実装したことにより、それが使えるコマンドとして一番シンプルなグラフ機能のみを組み込んだものなのでこれ以上のグラフ機能に対応することはたぶん無いと思います(^^;

了解です。


> プログラミングの観点から言えば基本的なグラフィックスコマンドがストレス無く使えることの方が大事ですよね。

私も同じように思います。


> USBを挿している時が危ないというのは、通常はストレージメモリ領域だけが書き換え可能になっているところが、USB挿している時だけはROM領域全体が書き込み可能な状態になっている可能性があります。
> もし、ROMのブート&OS領域が書き換えから保護されている状態だと、例えCPUやメモリアクセスの異常が起きても保護された領域は書き換えされないので、壊れることは無いと思われます。
> ですので、USBを繋いだ状態、これが電卓にとって一番危険な状態だというのが今のところの認識です。
> これは確実な情報ではなく、あくまで経験上での話なので参考に留めておいて下さい(^^;

貴重な経験談をありがとうございます。


> >{127,63}→Dim Mat B
> >{127,63}→Dim Mat C
> >で、Mat B と Mat C は整数行列になっている筈なので、この領域確保でエラーがなぜ出るのでしょうか?
>
> C.Basicの起動時に使えるメモリが約40KB、そこからファイルリストのバッファ(ファイル数で変化します)を差し引くと、約38KBがプログラムや行列確保に使える領域になります。
> ライフゲームはメインとサブプログラム合計で9KB、編集エリアの付け足し分を足すと11KBほど必要なので残りは27KBほどになります。
> この27KBが行列確保に使える領域ですが、{127,63}の整数行列に必要なサイズは127×63×4=32004バイト必要なので足りないということです(^^;
> バイト行列やビット行列にするとそれぞれ必要な確保サイズが激減するのでやっと確保出来ることとなります。

ようやく理解できました。最初のメモリ割り付けの前にエラーになってしまうということですね。
あわせて、ご苦労が分かりました。



> あ、一応、[SHIFT]+[EXIT](QUIT)でルートフォルダに戻れます。

あ、そうですか...readme_J.txt に書いてありましたっけ?


> >これに関連して、メインプログラムから、フォルダ内にあるサブルーチンを呼び出せると助かります。
> >例えば、ルートにはサブルーチンにあるプログラムを呼び出すメニュープログラムを作れるようになります。
>
> 現状では単一フォルダでの動作が基本ということで、サブフォルダに移動するとそこがデフォルトのディレクトリということになって、次回もそのサブフォルダで起動するようになっています。
> これはフォルダの目的が、同じプログラムのメイン/サブプログラムをフォルダにまとめて格納というつもりの仕様だったので、メインプログラムから別のサブフォルダにあるファイルを呼び出すのは想定外でした(^^;
> ですので、今の仕様だとお気に入りも新たにそのフォルダで設定し直す仕様で、フォルダ移動するとお気に入りもリセットされてしまうことで、フォルダ間を行ったり来たりするとちょっと不便な仕様になってしまってます(^^;
>
> サブフォルダにあるプログラムを呼び出すことは可能なので、次回バージョンで取り入れてみたいと思います(^^)

先ずは、サブフォルダへ行って戻ったらお気に入りが消えない対処からお願い致します。
サブフォルダ内で完結するなら、仕様として良いと思います。

フォルダまたぎは、その後でも良いと思います。



ところで、以前から思っていたことなのですが、ファンクションメニューを出力するコマンドを追加できませんか?


よろしくお願い致します。

Re: Re: 気が早いですが、世界公開用 Web のひな形です

sentaro様

> >http://egadget2.web.fc2.com/index_e.html
>
> うわ!これは超カッコいい!です!
> カッコ良すぎます!!
> こういうCasio電卓サイトが日本で生まれるなんて、さすが管理人様です!!
> まるで海外のサイトを見ている感覚になりますね(^^)


ありがとうございます。

FC2 が用意してくれているテンプレートをチョコッと弄っただけです。


> ライフゲームは動画で見ると速度変化が一目瞭然なサンプルプログラムですよね(^^)

そうですね。いずれ動画を入れようと思いますが、現在の動画が手ぶれがあるので、きれいに取り直そうと思っています。


> なんてったって基本はCasioBasicですね(^^)

実は、これは最初から楽に使える秘訣だと思います。


> C.BasicのCG対応にコンパイラもありますし、これからも出来るだけご期待に添えるように頑張ってまいります(^^)

よろしくお願い致します。

取りあえず、公開するために、コマンドリファレンスとして、独自拡張機能だけ簡単に作ろうと思います。

http://egadget.blog.fc2.com/blog-entry-529.html

2つ3つ追加しました。


> あ、Ver.0.99mの29MHzの数値がライフゲームのページの数値よりも倍くらい遅くなってます(^^;

ありがとうございます。修正しておきました。

ElseIf

sentaro様

取り急ぎ、質問です。

ElseIf は複数重ねて使えないのでしょうか?

例えば、

While 1
ClrText
?->A
If A=1:Then
"ONE"◢
ElseIf A=2:Then
"TWO"◢
ElseIf A=3:Then
"THREE"◢
Else
"ELSE"◢
IfEnd
WhileEnd

これで、エラーが発生します。

仕様はどうなっています?

Re: 気が早いですが、世界公開用 Web のひな形です

管理人様、こんにちは!

>かなり気の早い話ですが、世界公開の時は、こなん感じかな?という入り口ページを作ってみました。
>英語で恐縮ですが、英語でないとダメなんで...
http://egadget2.web.fc2.com/index_e.html

うわ!これは超カッコいい!です!
カッコ良すぎます!!
こういうCasio電卓サイトが日本で生まれるなんて、さすが管理人様です!!
まるで海外のサイトを見ている感覚になりますね(^^)


>なぜ今?ということなのですが、トップページに sentaro21 様の紹介をしっかりと載せてみたからです。
>先ず、Sharing Resources! では、ここで共有するコンテンツをざっと紹介
>で、C.Basic の紹介では、sentaro様に登場願って、誕生秘話をチョコッと...

なんかもう汗出るくらい恐縮するばかりですけど、どうもありがとうございます!!(^^)


>そして C.Basic の最後の方で、先日紹介した C.basic のページへ誘導。さらにライフゲームのページへも誘導。まだコマンドリファレンスも無いのですが、先ずは使ってもらうことは出来る、という感じ...まあ今後の細かいコンテンツの構造をチョコット試してみました。ライフ関数を実装したコンパイラ版シミュレーション版 Ver 0,84 (これも Ver 0.83からバージョンアップ)も紹介してます。

ライフゲームは動画で見ると速度変化が一目瞭然なサンプルプログラムですよね(^^)


>チョット下へいって Viva Casio Basic! では、Casio Basicってええもんやで、とその簡便さ、できの良さ、互換性の高さをメインに紹介。

なんてったって基本はCasioBasicですね(^^)


>で、次の Make Your Calc Faster! では、オーバークロックツールを紹介!
>一連のプロジェクトは sentaro様抜きでは語れないというアピールになっております。

C.BasicのCG対応にコンパイラもありますし、これからも出来るだけご期待に添えるように頑張ってまいります(^^)


>で、過去の C.Basic と最新のもので、ライフゲームでのベンチマークを更新しました。
>最新版 Ver 0.99m は Ver 0..80 とほぼ同じですね。一瞬 Ver 0.83 で速くなったのが少し戻っていたわけですが、結果的に速度低下無しに維持していることが分かりました。

今のところバージョンアップで速度に大きな影響のある変更は無いのですが、プログラムソースを書き換えてビルドする度に微妙に速度の違うバージョンが出来るのが悩みの種ですね。
以前のバージョンから出来るだけ変化の無いようにするのがちょっと一苦労だったりしています(^^;

あ、Ver.0.99mの29MHzの数値がライフゲームのページの数値よりも倍くらい遅くなってます(^^;

Re:Re: Re:Exp▶Str( ) コマンドとエラー

管理人様、こんにちは!

>C.Basic コマンドリファレンス(まだコマンドリストだけですが...)で、このコマンドを純正対応ということで変更しておきました。

最初から純正対応になっていたので、そのままでよかったですね(^^;
お手数おかけしました。


>いくつかの考え方がありそうですが、私の勝手な推測ですと、純正Casio Basicを使っている人のなかで、文字列操作をどの程度使うのか?ということ。そしてしれほど居ないのではないかと...

最初から文字列が装備されていればある程度使われることはあると思いますが、CasioBasicは電卓のプログラム言語なので文字列が使えなくても特に困らなかったというのはあると思います。
fx-9860GIIのVer2.00以降で文字列対応したといえども、何か微妙に中途半端な感がするので、今でもあまり使われて無いかもしれませんね(^^;


>Casio Basicプログラミングに、グラフ機能をとれhど使っているのか?という話もあって、学校の先生なら授業用にしっかり使い込んでいる可能性はありそうですが、先生でない一般人は、はたしてどうでしょうか?これまた私の勝手な想像では、それほど居ないだろう...と

グラフ電卓におけるCasioBasicは本体の各種機能を一連の流れで自動実行させるためのスクリプト言語みたいな感じなので、使いこなせばそれなりに便利なものだと思いますが、そこまで使うかというとなかなか使わないですよね(^^;


>従って、今のままでも特に困らないのではないかと...そんな感じで必要になったら、そしてsentaro様がその気になったら実装するといった感じで如何でしょうか?

はい、C.Basicにおけるグラフ機能はViewWindowやPlotコマンドでグラフィックカーソルを実装したことにより、それが使えるコマンドとして一番シンプルなグラフ機能のみを組み込んだものなのでこれ以上のグラフ機能に対応することはたぶん無いと思います(^^;
プログラミングの観点から言えば基本的なグラフィックスコマンドがストレス無く使えることの方が大事ですよね。


>このようなケースでROMへの異常発生(一番避けたい問題)の可能性は、どの程度あるものでそうか?

CPUやメモリの動作がギリギリでない限りはプログラムのバグや何かでROMへの異常発生はほぼ皆無と言えると思います。
メモリの読み出しや書き込みがギリギリのタイミングだと想定外の数値が書き込まれたり読み出されたりで、ROMへの書き込み時に全然違うアドレスに書き込んでしまうのが危ないです。
それがOS格納領域ならまだいいのですが、ブート領域を破壊してしまえばもう二度と起動しなくなります。
今までの経験上、電卓単体で使っているときはOS領域への異常が起きたことは無くて、過去CG10のROM破損は2度ともUSBを挿していた時に起きた可能性大なので、
USBを挿している時にストレージメモリへの書き込みがあった場合にCPUの動作異常やメモリアクセス異常が起きるとほぼ確実にROMへの異常書き込みに繋がります。
運が良ければリセット程度で事なきを得ますが、運が悪いとブート領域破損で永遠におしゃかに…(^^;

USBを挿している時が危ないというのは、通常はストレージメモリ領域だけが書き換え可能になっているところが、USB挿している時だけはROM領域全体が書き込み可能な状態になっている可能性があります。
もし、ROMのブート&OS領域が書き換えから保護されている状態だと、例えCPUやメモリアクセスの異常が起きても保護された領域は書き換えされないので、壊れることは無いと思われます。
ですので、USBを繋いだ状態、これが電卓にとって一番危険な状態だというのが今のところの認識です。
これは確実な情報ではなく、あくまで経験上での話なので参考に留めておいて下さい(^^;


>{127,63}→Dim Mat B
>{127,63}→Dim Mat C
>で、Mat B と Mat C は整数行列になっている筈なので、この領域確保でエラーがなぜ出るのでしょうか?

C.Basicの起動時に使えるメモリが約40KB、そこからファイルリストのバッファ(ファイル数で変化します)を差し引くと、約38KBがプログラムや行列確保に使える領域になります。
ライフゲームはメインとサブプログラム合計で9KB、編集エリアの付け足し分を足すと11KBほど必要なので残りは27KBほどになります。
この27KBが行列確保に使える領域ですが、{127,63}の整数行列に必要なサイズは127×63×4=32004バイト必要なので足りないということです(^^;
バイト行列やビット行列にするとそれぞれ必要な確保サイズが激減するのでやっと確保出来ることとなります。


>ところで、話は全く変わりますが、C.Basicのファイルリストで、フォルダも表示されますよね。このフォルダの中には入れるのですが、外に出るのはどうすれば良いでしょうか?
>操作が分からず、外に出られなかったので、Memory アイコンから、メインメモリにある @CBASIC フォルダを消去して外に出ました。

あ、一応、[SHIFT]+[EXIT](QUIT)でルートフォルダに戻れます。


>これに関連して、メインプログラムから、フォルダ内にあるサブルーチンを呼び出せると助かります。
>例えば、ルートにはサブルーチンにあるプログラムを呼び出すメニュープログラムを作れるようになります。

現状では単一フォルダでの動作が基本ということで、サブフォルダに移動するとそこがデフォルトのディレクトリということになって、次回もそのサブフォルダで起動するようになっています。
これはフォルダの目的が、同じプログラムのメイン/サブプログラムをフォルダにまとめて格納というつもりの仕様だったので、メインプログラムから別のサブフォルダにあるファイルを呼び出すのは想定外でした(^^;
ですので、今の仕様だとお気に入りも新たにそのフォルダで設定し直す仕様で、フォルダ移動するとお気に入りもリセットされてしまうことで、フォルダ間を行ったり来たりするとちょっと不便な仕様になってしまってます(^^;

サブフォルダにあるプログラムを呼び出すことは可能なので、次回バージョンで取り入れてみたいと思います(^^)

気が早いですが、世界公開用 Web のひな形です

sentaro様

かなり気の早い話ですが、世界公開の時は、こなん感じかな?という入り口ページを作ってみました。

英語で恐縮ですが、英語でないとダメなんで...

http://egadget2.web.fc2.com/index_e.html

まだまだ、これから大幅な変更は必至ですが、取りあえずです。


なぜ今?ということなのですが、トップページに sentaro21 様の紹介をしっかりと載せてみたからです。

先ず、Sharing Resources! では、ここで共有するコンテンツをざっと紹介

で、C.Basic の紹介では、sentaro様に登場願って、誕生秘話をチョコッと...
そして C.Basic の最後の方で、先日紹介した C.basic のページへ誘導。さらにライフゲームのページへも誘導。まだコマンドリファレンスも無いのですが、先ずは使ってもらうことは出来る、という感じ...まあ今後の細かいコンテンツの構造をチョコット試してみました。ライフ関数を実装したコンパイラ版シミュレーション版 Ver 0,84 (これも Ver 0.83からバージョンアップ)も紹介してます。

チョット下へいって Viva Casio Basic! では、Casio Basicってええもんやで、とその簡便さ、できの良さ、互換性の高さをメインに紹介。

で、次の Make Your Calc Faster! では、オーバークロックツールを紹介!

一連のプロジェクトは sentaro様抜きでは語れないというアピールになっております。


ライフゲーム Ver 0.74 は、起動したらいきなり手動でのパターン作りの説明が登場してしまっていたので、手入力かプリセットの選択かの画面を最初に表示して、手入力の場合に説明を表示。。。とチョコット変更して、そのままアップし直しています。

ダウンロードファイルには、以前お勧め頂いたようにテキストも同梱しました。


アドイン Casio Basic のページ
http://egadget.blog.fc2.com/blog-entry-491.html

で、過去の C.Basic と最新のもので、ライフゲームでのベンチマークを更新しました。

最新版 Ver 0.99m は Ver 0..80 とほぼ同じですね。一瞬 Ver 0.83 で速くなったのが少し戻っていたわけですが、結果的に速度低下無しに維持していることが分かりました。


やっとこさ、進行中のプロジェクト全体の進め方が見えてみて、枠組みも試しに作れたので、あとはコツコツと内容を各だけ,,,といったところに落ち着いてきました。

全体として英語版はあっさり味付けになりそうです。

Re: Re:Exp▶Str( ) コマンドとエラー

sentaro様

> ということで、そこのところのバグと、Exp▶Str( )コマンドをグラフ式(Yn)から文字列メモリー(Str n)への変換だけですが、一応純正互換の範囲で実装してみました。

C.Basic コマンドリファレンス(まだコマンドリストだけですが...)で、このコマンドを純正対応ということで変更しておきました。

http://egadget.blog.fc2.com/blog-entry-522.html


> 数値から文字列への変換コマンドとしてはSprintf()コマンドを追加しているので、それを使うか、純正コマンドの範囲で組み立てるかというところですね。

いくつかの考え方がありそうですが、私の勝手な推測ですと、純正Casio Basicを使っている人のなかで、文字列操作をどの程度使うのか?ということ。そしてしれほど居ないのではないかと...

Casio Basicプログラミングに、グラフ機能をとれhど使っているのか?という話もあって、学校の先生なら授業用にしっかり使い込んでいる可能性はありそうですが、先生でない一般人は、はたしてどうでしょうか?これまた私の勝手な想像では、それほど居ないだろう...と

従って、今のままでも特に困らないのではないかと...そんな感じで必要になったら、そしてsentaro様がその気になったら実装するといった感じで如何でしょうか?




> >ところで、Ver 0.99m にしたところ、これまで 280MHz で殆どトラブルが無かったのですが、頻繁にエラーが発生して [EXIT] でリスタートとなってしまいます。

これについては、中身が実装されていない Exp▶Str( )を使おうとしてエラーが発生していたようで、CPU負荷が瞬間増大していたという説が納得できそうです。

このようなケースでROMへの異常発生(一番避けたい問題)の可能性は、どの程度あるものでそうか?
あまり関係ないと思っていたのですが...何のため伺いたいと思います。



> Ver.0.93ではビット行列が加わりまして、サフィックス指定できるようになったのはVer.0.63からなので割と早かったですね(^^;

あ、本当だ...バージョンアップ履歴を改めて確認すると、そうですね。
これに合わせて、記事も変更しておきました。



> >ライフゲームの場合は、これまでの Ver 0.73 で、冒頭に '#CBint を書います。
> >或いは、Setup で Execute mode を Int% にしても、行列は整数行列になりますよね?
>
> はい、動作モードでデフォルトの行列仕様が変わるので整数モードであれば整数行列となります(^^)
>
>
> >C.Basic Ver 0.99m の整数モードでライブゲーム 0.73 を実行させると、行列の領域確保のところで、Not enough Memoryエラーが出ます。
>
> 行列確保できないので正常なエラー反応です。


ここで、質問です。

C.Basic 0.99m で ライフゲーム Ver 0.73 (古いバージョン)を動かそうとするとき、

ライフゲームでは、'#CBint と記述していて、さらにC.BasicのSetupで整数モードにします。この時,

{127,63}→Dim Mat B
{127,63}→Dim Mat C

で、Mat B と Mat C は整数行列になっている筈なので、この領域確保でエラーがなぜ出るのでしょうか?

デフォルトで Double行列になっていることが、'#CBint や Setupでの動作モードを Intにすることより優先されるということなのでしょうか?


ところで、話は全く変わりますが、C.Basicのファイルリストで、フォルダも表示されますよね。このフォルダの中には入れるのですが、外に出るのはどうすれば良いでしょうか?

操作が分からず、外に出られなかったので、Memory アイコンから、メインメモリにある @CBASIC フォルダを消去して外に出ました。

これにはチョットした背景があって、結構なプログラムを書いて使っているうちに、他の方が作ったプログラム、特にサブルーチンのファイル名がかち合うようになっています。まあ、人が考えるのは似たようなのでしょうね、似たような目的のサブルーチンなら同じ名前になって当然です。

そこで、ファイル名が重複するプログラムは、フォルダに入れて使えば良いだろう...というわけです。


これに関連して、メインプログラムから、フォルダ内にあるサブルーチンを呼び出せると助かります。
例えば、ルートにはサブルーチンにあるプログラムを呼び出すメニュープログラムを作れるようになります。


ご検討お願い致します。


Re:Exp▶Str( ) コマンドとエラー

管理人様、こんにちは!

>Exp▶Str( )コマンドがありますが、これは純正とコンパチでなくて拡張コマンドという理解でいいのでしょうか?

これは最初は互換実装するつもりでコマンドリストに加えていたのですが、結局現状のC.Basicでは互換仕様ではあまり意味が無いということで未実装ですのでエラーになってしまいます(^^;
Exp▶Str( )の純正仕様は、いわゆる数値から文字列への変換コマンドではなく、グラフ式(Yn)や数式メモリーから文字列メモリー(Str n)への変換コマンドなのですが、C.Basicでは、
Yn→Str n
で同等機能が実現できるようになっているので…、と思ったら出来てませんでした(^^;

ということで、そこのところのバグと、Exp▶Str( )コマンドをグラフ式(Yn)から文字列メモリー(Str n)への変換だけですが、一応純正互換の範囲で実装してみました。
数値から文字列への変換コマンドとしてはSprintf()コマンドを追加しているので、それを使うか、純正コマンドの範囲で組み立てるかというところですね。


>ところで、Ver 0.99m にしたところ、これまで 280MHz で殆どトラブルが無かったのですが、頻繁にエラーが発生して [EXIT] でリスタートとなってしまいます。

んと、うちのfx-9860GIIでは限界付近でもエラーが出ないようなのですが、ノーマルクロックでもたまに原因不明のOSエラーでリセットになることがあるのでそれかもしれません(^^;
一段階下げてエラーが出ないようでしたら、280MHz時にCPUの動作異常が起きている可能性も有りかもです。
プログラムのコード配置でCPU動作マージンがぎりぎりになってしまった可能性がありますね。
今回差し替えアップしたVer.0.99mではどうでしょうか?


>行列のサフィックス .p / .b / .f / .l が登場したのは Ver 0.93 なので、今回バージョンアップしたライフゲーム Ver 0.74 は、C.Basic Ver 0.93 以降で動作するということですね。

Ver.0.93ではビット行列が加わりまして、サフィックス指定できるようになったのはVer.0.63からなので割と早かったですね(^^;


>ライフゲームの場合は、これまでの Ver 0.73 で、冒頭に '#CBint を書います。
>或いは、Setup で Execute mode を Int% にしても、行列は整数行列になりますよね?

はい、動作モードでデフォルトの行列仕様が変わるので整数モードであれば整数行列となります(^^)


>C.Basic Ver 0.99m の整数モードでライブゲーム 0.73 を実行させると、行列の領域確保のところで、Not enough Memoryエラーが出ます。

行列確保できないので正常なエラー反応です。


>ここで、[F4](S.ot)で進めると、次に Mat B→Mat C のところで、No Matrix array エラー。

行列が確保出来てないまま続行したので、行例が存在しないエラーに。


>さらに [F4] (S.ot) で進めると、1→Mat C[X,Y] のところで、Dimension ERROR 発生。

純正CasioBasicでもDimension ERRORになりますが、C.Basicではエラーの出る箇所が行列の要素のところなのでちょっと違ってます(^^;
Mat Cが存在しないので、本来はNo Matrix array エラーにならないといけないところなのでここはちょこっと修正しました。


>さらに強引に [F4] (S.ot) で進めると、同じところで今度は Syntax ERROR 発生。

カーソル位置から再スタートなのでSyntax ERROR ということに。


>何か根本で勘違いしているかも知れず、ご教示頂けませんか?

エラーを無視して進めた場合ですから、これは現在のC.Basic仕様では正常な動作状況となります(^^;


ということで、Yn→Str nバグ修正とExp▶Str( )コマンド追加と行列エラーの出方を修正したバージョンです。
Ver.0.99m差し替えです。

アドイン版 C.Basic ver.0.99m テスト版 その9.9m(XORバグ修正&行列名デフォルト削除+Exp>Strバグ修正版)
http://pm.matrix.jp/CB/CBASIC099m.zip
・Exp>Str()コマンドをグラフ式(Yn)から文字列メモリー(Str n)への変換だけですが実装しました。
(例)Exp>Str(Y1, Str 1)
 尚、グラフ式(Yn)から文字列メモリー(Str n)への変換は、文字列のコピー構文でも可能です。
(例)Y1→Str 1
・行列への代入で、行列が確保されていなかった場合はNo Matrix array に変更しました。

Re: アドイン版 C.Basic ver.0.99m テスト版 その9.9m(XORバグ修正&行列名デフォルト削除版)

sentaro様


Ver 0.99m ですが、

> ・Circle,F-LineのXorモードでの描画に不具合があったのを修正しました。

修正を確認できました。


> ・行列名における要素の型のデフォルト指定(Mat B, Mat C, Mat D, Mat W, Mat I, Mat L)を廃止しました。

行列のサフィックス .p / .b / .f / .l が登場したのは Ver 0.93 なので、今回バージョンアップしたライフゲーム Ver 0.74 は、C.Basic Ver 0.93 以降で動作するということですね。


>  デフォルトでは実数モードではすべて実数行列、整数モードではすべて整数行列となります。

ここも、ポイントですね!

ライフゲームの場合は、これまでの Ver 0.73 で、冒頭に '#CBint を書います。
或いは、Setup で Execute mode を Int% にしても、行列は整数行列になりますよね?

私の勘違いの可能性濃厚ですが...


C.Basic Ver 0.99m の整数モードでライブゲーム 0.73 を実行させると、行列の領域確保のところで、Not enough Memoryエラーが出ます。

ここで、[F4](S.ot)で進めると、次に Mat B→Mat C のところで、No Matrix array エラー。

さらに [F4] (S.ot) で進めると、1→Mat C[X,Y] のところで、Dimension ERROR 発生。

さらに強引に [F4] (S.ot) で進めると、同じところで今度は Syntax ERROR 発生。


何か根本で勘違いしているかも知れず、ご教示頂けませんか?


Exp▶Str( ) コマンドとエラー

sentaro様

Ver 0.99m をインストールしました。

Exp▶Str( )コマンドがありますが、これは純正とコンパチでなくて拡張コマンドという理解でいいのでしょうか?

ところで、Ver 0.99m にしたところ、これまで 280MHz で殆どトラブルが無かったのですが、頻繁にエラーが発生して [EXIT] でリスタートとなってしまいます。

多くの場合が、コマンド選択画面でコマンドを選択する際に起きています。

一度ご確認頂けませんか?

アドイン版 C.Basic ver.0.99m テスト版 その9.9m(XORバグ修正&行列名デフォルト削除版)

管理人様、こんにちは!

Xor描画の不具合と行列名でのデフォルト型指定廃止版です。

アドイン版 C.Basic ver.0.99m テスト版 その9.9m(XORバグ修正&行列名デフォルト削除版)
http://pm.matrix.jp/CB/CBASIC099m.zip
・Circle,F-LineのXorモードでの描画に不具合があったのを修正しました。
・行列名における要素の型のデフォルト指定(Mat B, Mat C, Mat D, Mat W, Mat I, Mat L)を廃止しました。
 デフォルトでは実数モードではすべて実数行列、整数モードではすべて整数行列となります。
・キャラクタ入力でアルファベットのミニキャラクタ(F5)のTextコマンド対応文字が表示されなかった不具合を修正しました。

Re:Re: Re: Ptune2 Ver 1.01

管理人様、こんにちは!

>但し、これをブログで公開するのはやめておきます。5年後にこれを参考にすると、その時点での使用部品が違っていたりするので、そんなことを考えると....

たしかに将来的な部品の変更はあり得ますね。
いつの間にか速いチップに変更されていたとなれば嬉しいところですが、確かめるには定期的に買ってみるしか分からないというのが悩ましいところです(^^;

ところで、
Ptune2/Ftune2においてデフォルトマージンを10%以上に設定するとメモリチェックに失敗することがある不具合が見つかりました(^^;
これは確実に不具合が起きるというのではなくメモリチップの個体差で起きる不具合なので確認不足でした。
10%以上のマージン設定は通常では使わないと思われるので実使用上で問題になることは無いと思われますが、もしマージンを10%以上に設定する場合には注意されて下さい(^^;

Re: Re: Ptune2 Ver 1.01

sentaro様

詳細なご説明、とても参考になります。

ありがとうございます。

とりあえず私の手元では、別ファイルにして記録を残しています。

但し、これをブログで公開するのはやめておきます。5年後にこれを参考にすると、その時点での使用部品が違っていたりするので、そんなことを考えると....

Re: Ptune2 Ver 1.01

管理人様、こんにちは!

>私のfx-CG20 では、プリセットの[F5]を選ぶと、CPU 191.69MHzで、PFC 23.96MHz となります。これって、問題かも知れませんね?

んと、PFCは出来るだけデフォルト近辺を推奨ということからすれば若干問題なのですが、
初期版でもPFCは24MHzくらいまではほぼ確実に安全に使えるという前提での設定なので今のところ問題はないと考えてます。
さらに最新版であれば1割余裕がありますからPFCで問題が起きる可能性は無いといえます。
もし、この設定で問題が起きるとすればメモリのウエイト設定がぎりぎりのタイミングになっているか(レッドゾーンに入ってるか)どうかの方が重要かもしれません。


>なので、「→]を何回か(6回)押して、CPU 235.93MHz, PFC 14.75MHz の方がROMを飛ばすリスクが低いということはありませんか?

CPUクロックは236MHzで確実に動作は可能ですから、PFCがデフォルトと同じになる236MHzの方がリスクは低いといえます。
メモリウエイトにおいてもプリセットの[F5]よりレッドゾーンに入ってしまう可能性が低く余裕がありますから、安定度ではたぶん上だと思われます。
ただ、PFCが低いことでCasioBasic等のパフォーマンスは[F5]の192MHzが若干上回ると思います。
ということで、[F5]のプリセットとなっているわけです。


Ptune2におけるオーバークロックのリスクは、CPUコアクロックの動作限界付近はもちろんのこと、メモリウエイトに余裕があるかどうか(レッドゾーンに入っているかどうか)で決まります。

ちなみにPtune2でのメモリウエイト表示の色分けですが、
ホワイト: マージンが10%以上。 (安全に使えるレベル)
グリーン: マージンが一段上のウエイトから5%以内。(余裕を持って安全に使えるレベル)
イエロー: マージンが5%~10%以内。(ほぼ安全に使えるレベル)
レッド:  マージンが5%以内。(通常は問題なくともCPUの限界近くだったりした場合はちょっと不具合が起きるかもしれないレベル)
となっています。
デフォルトマージン3%でのレッド表示はマージンが3%~5%の範囲に入った時なので、セットアップでデフォルトマージンを5%以上に設定すればレッド表示は出なくなります。
オーバークロックでのリスクを減らすためにはデフォルトマージンを上げれば上げるほどに安全性が増すということになります。

レッドゾーンについては即NGというわけではなくCPUの動作クロックに余裕があればまず不具合は出ないと思われるのですが、管理人様の258MHzでの異常動作は、おそらくCPUの動作限界近くでライトウエイトのraWがレッドゾーンに入っていたためにその相乗効果で不具合が起きたのではないかと推測されます。

Ptune2/Ftune2では本体の性能をぎりぎり引き出すためにデフォルトマージン設定が3%になっているのですが、リスクを少しでも減らして動作的余裕を持たせるためにはマージン設定をレッドが出ない5%、さらにはイエローも出ない10%に設定するのが安心設定といえます。
メモリ速度に余裕のあるfx-9860GIIの場合は現状で特に問題ないとしても、CG10/20の場合はデフォルトよりもマージン設定を上げておくのがよいのかもしれません(^^)

Ptune2 Ver 1.01

sentaro様

Ptune2 でチョット気付いたことがあります。

私のfx-CG20 では、プリセットの[F5]を選ぶと、CPU 191.69MHzで、PFC 23.96MHz となります。これって、問題かも知れませんね?

なので、「→]を何回か(6回)押して、CPU 235.93MHz, PFC 14.75MHz の方がROMを飛ばすリスクが低いということはありませんか?

なお、Ptune2 のバージョンは 1.01 です。


Re:Re: Re: Re: Re: fx-CG20

管理人様、こんにちは!

>これで、かなりフェアな感じになったでしょうか?

あ゛…最初からアンフェアなことは何も無かったですし、高価な電卓を壊すことなく安全に使うための注意書きはいくらあっても構わないと思うので無問題です(^^)

プリセット設定は旧版でも安定的に使えるところでの設定なのでまずはプリセット値から試してもらって、
そこから上げるに従ってリスクも上がっていくということはその通りですからすごく良い説明ですね。

Ftune2/Ptune2でのオーバークロックが99%安全だとしても動作限界に近づけばフリーズ/動作異常のリスクが確実にあるわけなので、
そこのところを理解されて上手く使ってもらえればというところです(^^)

Re: Re: Re: Re: fx-CG20

sentaro様

ちょっと、ブレブレなんですが、Ptune2、Ftune2 に関して、さらに追記しました。


自己責任で使用するものだが、[F5]のプリセット値を選べば、リスクが低いと思われる...と

そして、それより上げるに従って、リスクが上がってゆくから要注意!


といった感じです。

これで、かなりフェアな感じになったでしょうか?

Re: Re: Re: fx-CG20

管理人様、こんにちは!

>今のところ、慣れるために fx-CG20 を普段使いにしています。ふだん使いのプログラムは全てテキストベースなので、9860GII からサクッと移植できて、即使えるのはありがたいです。
>Ptune2 は、3段落としの CPU:243MHz、PFU:15.21MHz で様子見ですが、普段はノーマルクロックのもっさり版で使っています。

カラー版でもほぼ同じ仕様、そして若干上がった使い勝手が利点といえますね。
これでfx-9860GII並にサクサク動けば言う事なしなのですが、ノーマルクロックでもぎりぎり許せる範囲でしょうか(^^;


>fx-CG20 の記事は、オーバークロックの説明部分を大幅に変更して、私が経験したトラブル書いて、自己責任で使うことを強調しておきました。

マスクROMの時代にはオーバークロックで無茶しても壊れることは皆無と言っていい状況でしたけど、書き換え可能なフラッシュROMになってからのオーバークロックは細心の注意が必要ですね(^^;
CG10を2台潰してしまった経験からPtune2/Ftune2は簡単に壊れることのないオーバークロックツールとして作られたものですけど、それでも万が一壊れる可能性はあるわけで、ツールを使う上での管理人様のご配慮に感謝です(^^)

>ROMやってしまったら再起不能、と追記してしまいましたので、機会を減らしたかも知れません。申し訳ありませんが、それで良いと思っています。

多少はあるかもしれません(^^;
ま、でも、安全に使える指針として235MHzくらいで止めておけば99.9%は安全に使えるというのはほぼ間違いないのではと思っています。


>そうなんですか!
>なら、言われるように、OSバージョンアップに期待以上です。

CAS電卓のCP400では同じSH4Aでデフォルトクロックが118MHzということなので、そのあたりまでは上げても何も問題は無いといえますね。
CG10/20がデフォルトで118MHzに上がれば、SH4Aのfx-9860GIIが理不尽に遅い設定にされてることも解消されますし、CASIOのグラフ電卓全体にとってもいいことではないかと思われます。


>配布方法の1つで、標準になるかも知れないという感じですね。e-Gdget のホームページのアーカイブズを、プログラムファイルの配布の保存だけでなく、配布も視野に入れて構成を見直そうかと思います。
>併せて、C.Basic の英文情報をここに入れようと考え直しています。

FD10Proのコマンドを見渡すと、C.Basicでサポートしている範囲のグラフィックコマンドは存在しているのでモンテカルロ法のプログラムも含めて今回の管理人様のプログラムは9860GII互換ですべて動作するのではないかと思われます。
このあたりはFD10Proお持ちの方にチェックしてもらうしか無いのですが…(^^;


>危機一髪だったようです。
>fx-CG20/10 は、fx-9860GII よりもちょっとリスキーなんでしょうか?
>ROM のクロックについてリスクを説明いただきましたが、どこをどう見てわかるのでしょうか?

ROMのリスクは飛ばした経験上分かったことなので、詳細に調べたというわけではないのでここからが危険というはっきりしたものがありません(^^;
ただ、はっきり言えることは、fx-9860GIIよりは明らかにROMのアクセス速度が遅いので、危険度は高いといえます。

Ptune2とFtune2でのメモリチェックの数値を比較すると、同じウエイトでの動作周波数限界がROM読み込みで3割、RAM読み込みで2割、RAM書き込みで5割ほど低くなっているのが分かると思います。
これがメモリアクセスの差なので、同じ動作クロックならウエイトが増えてしまうことになります。
さらに、ROMの書き込みクロックはPFCクロックが関係しているのは間違いないのでPFCは9860GII比で2~3割以上、マージンを考えれば5割以上下げないと危ない(かもしれない)というわけです。
なので、PFCのクロックをfx-9860GII並に上げてしまうのは厳禁ですね。


>これを伺って、3段落としの 243MHz (PFC 15.21MHz)よりさらに1段下の 236MHz (14.75MHz)にしよう、と思いました!

元々のクロックからちょうど4倍ですし、PFCがデフォルトのままなので3Pin通信も問題ないので236MHzはお薦めです(^^)


>どのみちモッサリ感は、大して変わりませんしね

モッサリ感やBasicの動作速度はPFCクロックの影響がそこそこ出てくるようなので、最大パフォーマンスを引き出すには本当は2倍の29.5MHz程度までは上げたいところですが、このクロックまで上げると旧版のCG10/20では完全に危険範囲に入ってしまうので、24MHz制限になっています。
新板のCG10/20では少し余裕があるので30MHzまではぎりぎり安全な範囲といえそうなのですが、旧版に比較して1割ほどしか速くないので、旧版の推奨範囲で合わせておけば間違いないと思います(^^)
9860GIIも(カーソルが消える現象等で)PFCは上げないのが安定性に寄与するのが分かってきたところですし、デフォルトから離れないクロックでの運用が推奨です。


>二年後くらいに、もう一台買って調査ですしょうか?

欧州方面では試験モードLEDが付いた試験対応版が出てきたとのことなので何か変化があればというところですね(^^;

Re: Re: fx-CG20

sentaro様

テキストソースファイルの件、少し対応しました。

fx-CG20の概要
http://egadget.blog.fc2.com/blog-entry-511.html

で、複数のプログラムファイルをzipファイルで提供する場合にのみ、テキストソースファイルをzipファイルに同梱しました。

Re: Re: fx-CG20

sentaro様


> これを読めばCASIOのプロ電の性能差が丸わかりですから、とても参考になる記事だと思います(^^)

> オーバークロックしての比較は世界で初めての記事かもしれないのでとても貴重です。
> C.Basicも加えていただきまして恐縮です。
> 私的にはこういう記事を目にしたら速攻でCG20まで一揃えしてしまう勢いになります(^^)

ありがとうございます。ここまで言って頂けると、公開したかいがあります。

今のところ、慣れるために fx-CG20 を普段使いにしています。ふだん使いのプログラムは全てテキストベースなので、9860GII からサクッと移植できて、即使えるのはありがたいです。

Ptune2 は、3段落としの CPU:243MHz、PFU:15.21MHz で様子見ですが、普段はノーマルクロックのもっさり版で使っています。

fx-CG20 の記事は、オーバークロックの説明部分を大幅に変更して、私が経験したトラブル書いて、自己責任で使うことを強調しておきました。


> CG20は遅いと思われていた方でもそこそこ速くなるとなれば購入機会が増えるかもしれません

ROMやってしまったら再起不能、と追記してしまいましたので、機会を減らしたかも知れません。申し訳ありませんが、それで良いと思っています。


> ノーマルで使うのにはちょっと重たいソフトを動かす非力なPCみたいな感じでやはりちょっとテキパキ感が無いですよね。

Main Menuでのカーソル移動でもたつく感じが、なにより重いとおもわせてくれますよね。

> CG20はハード的に余裕があるので

そうなんですか!
なら、言われるように、OSバージョンアップに期待以上です。


> あ、一点だけ気がついた点としては…積分計算のCG20の激速状態はたぶんオーバクロック状態のではないかと(^^;

はい、仰せの通りでしたので、修正しました。あと、ダウンロードファイルの設定ミスも修正しました。


> >「CG20で変換したテキスト版のソースファイル」は、どのような使い方を想定して、有った方が良いとおっしゃっているのでしょうか?
>
> んと、FD10ProがテキストファイルでBasicソースが公開されている機種なので、FD10Proでも互換が取れそうなところでテキストファイルもあったらという感じです(^^)

配布方法の1つで、標準になるかも知れないという感じですね。e-Gdget のホームページのアーカイブズを、プログラムファイルの配布の保存だけでなく、配布も視野に入れて構成を見直そうかと思います。

併せて、C.Basic の英文情報をここに入れようと考え直しています。


> 初期版のCG20だったらROMが遅いのでアウトだったかもしれません(^^;

危機一髪だったようです。

fx-CG20/10 は、fx-9860GII よりもちょっとリスキーなんでしょうか?

ROM のクロックについてリスクを説明いただきましたが、どこをどう見てわかるのでしょうか?


> え~っと…Ptune2作成過程で2台飛ばしてしまいました(^^; 今よりも円高で安かった時期だとはいえ電卓をお釈迦にしたのは初めてでした。
> 壊れた時は無理なオーバークロック状態だったのは間違いないので、絶対に無理は禁物です(^^;


これを伺って、3段落としの 243MHz (PFC 15.21MHz)よりさらに1段下の 236MHz (14.75MHz)にしよう、と思いました!

どのみちモッサリ感は、大して変わりませんしね


> はい、新たなバージョンが出るとその都度確認が必要ですが、現バージョンでしばらくは変わらなそうな気配ですね。

二年後くらいに、もう一台買って調査ですしょうか?

Re: fx-CG20

>fx-CG20 について、Casio Basic環境としての概要を、fx-9860GII との比較を中心にして、まとめてみました。

早速に拝見させていただきました。管理人様ならではの力作レビューですね。
これを読めばCASIOのプロ電の性能差が丸わかりですから、とても参考になる記事だと思います(^^)


>こういう切り口のファーストインプレションは、e-Gadget オリジナルなものだと思います。かなり偏った切り口ですけど...
>ついつい、爆即 C.Basic に触れてしまいました(^^;

オーバークロックしての比較は世界で初めての記事かもしれないのでとても貴重です。
C.Basicも加えていただきまして恐縮です。
私的にはこういう記事を目にしたら速攻でCG20まで一揃えしてしまう勢いになります(^^)
CG20は遅いと思われていた方でもそこそこ速くなるとなれば購入機会が増えるかもしれませんね。


>実際問題として、Ptune2 無しでは動きがモッサリしてしまいますね。fx-9860GII の Ftune2 と違って、fx-CG20 には Ptne2 が必須なように思えます。
>但し、先ほど申し上げたような電源周りのトラブルに出くわしているので、あまり Ptune2 に触れずにいます。

ノーマルで使うのにはちょっと重たいソフトを動かす非力なPCみたいな感じでやはりちょっとテキパキ感が無いですよね。
fx-9860GIIを使ってなければそこまで感じないにしても、やはり、Ptune2必須というのは仕方ないところなのですが(^^;
CG20はハード的に余裕があるのでTI-NspireみたいにOSのバージョンアップで2倍速位に純正オーバークロックしてもよいのではないかというところですね。


>突っ込みどころがあれば、思いっきり指摘しちゃってください。お願い致します。

あ、一点だけ気がついた点としては…積分計算のCG20の激速状態はたぶんオーバクロック状態のではないかと(^^;



>「CG20で変換したテキスト版のソースファイル」は、どのような使い方を想定して、有った方が良いとおっしゃっているのでしょうか?

んと、FD10ProがテキストファイルでBasicソースが公開されている機種なので、FD10Proでも互換が取れそうなところでテキストファイルもあったらという感じです(^^)


>わ、ROMが飛んでないので、ギリギリセーフってことですね。危ない危ない...

初期版のCG20だったらROMが遅いのでアウトだったかもしれません(^^;


>えっと、USB接続の場合は、オーバークロックでも正常にPCとリンクできています。3pin 接続とは事情が違っているようですね。

USBは専用の発振器が内蔵されているので影響されないようです。
シリアル系はCPU系と統一クロックなので影響出まくりです。というか、シリアルクロックが基本でその倍数がCPUクロックになっているので29.5MHzという中途半端なクロックになっています(^^;


>これで、sentaro様は1台お釈迦にしたんですね(-_-;)

え~っと…Ptune2作成過程で2台飛ばしてしまいました(^^; 今よりも円高で安かった時期だとはいえ電卓をお釈迦にしたのは初めてでした。
壊れた時は無理なオーバークロック状態だったのは間違いないので、絶対に無理は禁物です(^^;


>今後も、ロットによって状況が変わる可能性があるので、要注意ですね。

はい、新たなバージョンが出るとその都度確認が必要ですが、現バージョンでしばらくは変わらなそうな気配ですね。

Re: Re:Ptune

sentaro様


> CG20用のg3mファイルが着実に増えていっているのがよいです。
> さらにCG20で変換したテキスト版のソースファイルもあれば完璧かもですね(^^)

「CG20で変換したテキスト版のソースファイル」は、どのような使い方を想定して、有った方が良いとおっしゃっているのでしょうか?



> うわ…電池抜いてやっと復活ということはRAMデータが異常になっていただけなので、ROM異常にならなくて良かったです。
> もし、ROMが消えていたり異常になっていたりしたら再起不能でお手上げでした…(^^;

わ、ROMが飛んでないので、ギリギリセーフってことですね。危ない危ない...


> CG20でも2段下げての異常は起きてないことなのでfx-9860GII同様に2段下げで大丈夫といえる状況ですが、fx-9860GIIに比べると2割ほどROMが遅いので常用安定性を考えるともう1~2段くらい下げて(通信の互換性も考えると)235MHzあたりで抑えておくのがよいかもしれません。

念のため、3段落としの 243MHzを最大とすることにします。


> 管理人様のCG20のメモリ速度データからみると新しい速いバージョンのROMが使われていますね(^^)
> うちの速い方のCG10とほぼ同じ感じです。
> 遅い方のCG10はROMが10%程遅いです。



> PFCクロックがシリアルクロックの元になっているので3pinの通信する場合はPFCクロックが一致していなければなりません。
> これは私もオーバークロックしたての頃に通信出来なくてハマりました(^^;
> 何か動作上の不具合が起きた場合は、とりあえずノーマルに戻してみるというのは基本ですね(^^)
> 一致させないといけないのはPFCだけなのでBFC、SFC、IFCはノーマルよりも上げても大丈夫です。

えっと、USB接続の場合は、オーバークロックでも正常にPCとリンクできています。3pin 接続とは事情が違っているようですね。



> 注意点としてはCG10/20はROMの限界が低いのでROMアクセスの不具合でのROM破損を防ぐためにPFCクロックは24MHz以下がデフォルトとなってますが、出来るだけデフォルトの14.75MHzから大幅に上げないのを推奨しています。

これで、sentaro様は1台お釈迦にしたんですね(-_-;)

今後も、ロットによって状況が変わる可能性があるので、要注意ですね。

Re:Ptune

管理人様、こんにちは!

>今のところは、fx-CG20 で fx-9860GII との違いを色々と調べているところです。
>部分的に、過去の記事に fx-CG20 対応について追記して再アップしたりしています。

CG20用のg3mファイルが着実に増えていっているのがよいです。
さらにCG20で変換したテキスト版のソースファイルもあれば完璧かもですね(^^)


>ところで、Ptune2 で電源まわりのトラブルがありました。最大クロックが 265.42MHzなので、2段階落として 250.68MHzが安全と考えて、普段はそれで使っています。試しに 1段だけ落とした 258.05MHzにして使っていたところ、[SHIFT][AC]で電源が落ちなくなることがあります。筐体裏にある Restartで復帰できる場合と出来ない場合があります。
>最後の手段として電池を抜いて再起動しようとして、再起動しないこともありました。チョット焦りましたが、しばらく置いておくと再起動できました。

うわ…電池抜いてやっと復活ということはRAMデータが異常になっていただけなので、ROM異常にならなくて良かったです。
もし、ROMが消えていたり異常になっていたりしたら再起不能でお手上げでした…(^^;


管理人様のCG20のメモリ速度データからみると新しい速いバージョンのROMが使われていますね(^^)
うちの速い方のCG10とほぼ同じ感じです。
遅い方のCG10はROMが10%程遅いです。


>fx-9860GII でFtune2を使っている時も、最大から2段落として使っていますが、1段だけ落とした場合でも電源まわりのトラブルは経験していません。

CG20でも2段下げての異常は起きてないことなのでfx-9860GII同様に2段下げで大丈夫といえる状況ですが、fx-9860GIIに比べると2割ほどROMが遅いので常用安定性を考えるともう1~2段くらい下げて(通信の互換性も考えると)235MHzあたりで抑えておくのがよいかもしれません。


>3Pinシリアルケーブルでのデータ転送ですが、エラーになる原因が分かりました。
>オーバークロックしているとダメなようです。接続までは問題なのですが、転送時にエラーになる問題なのですが、受信、送信両機をノーマルクロックに戻すと、転送の成功することが分かりました。

PFCクロックがシリアルクロックの元になっているので3pinの通信する場合はPFCクロックが一致していなければなりません。
これは私もオーバークロックしたての頃に通信出来なくてハマりました(^^;
何か動作上の不具合が起きた場合は、とりあえずノーマルに戻してみるというのは基本ですね(^^)
一致させないといけないのはPFCだけなのでBFC、SFC、IFCはノーマルよりも上げても大丈夫です。
注意点としてはCG10/20はROMの限界が低いのでROMアクセスの不具合でのROM破損を防ぐためにPFCクロックは24MHz以下がデフォルトとなってますが、出来るだけデフォルトの14.75MHzから大幅に上げないのを推奨しています。

fx-CG20

sentaro様

fx-CG20 について、Casio Basic環境としての概要を、fx-9860GII との比較を中心にして、まとめてみました。

こういう切り口のファーストインプレションは、e-Gadget オリジナルなものだと思います。かなり偏った切り口ですけど...
ついつい、爆即 C.Basic に触れてしまいました(^^;

実際問題として、Ptune2 無しでは動きがモッサリしてしまいますね。fx-9860GII の Ftune2 と違って、fx-CG20 には Ptne2 が必須なように思えます。

但し、先ほど申し上げたような電源周りのトラブルに出くわしているので、あまり Ptune2 に触れずにいます。


突っ込みどころがあれば、思いっきり指摘しちゃってください。お願い致します。

Re: Ptune2

sentaro様

3Pinシリアルケーブルでのデータ転送ですが、エラーになる原因が分かりました。

オーバークロックしているとダメなようです。接続までは問題なのですが、転送時にエラーになる問題なのですが、受信、送信両機をノーマルクロックに戻すと、転送の成功することが分かりました。

Ptune2

sentaro様

ありがとうございます。

この土日は、色々忙しくてまだ試していません。

来週あたりじっくりと試してみようと思います。

今のところは、fx-CG20 で fx-9860GII との違いを色々と調べているところです。
部分的に、過去の記事に fx-CG20 対応について追記して再アップしたりしています。

ところで、Ptune2 で電源まわりのトラブルがありました。最大クロックが 265.42MHzなので、2段階落として 250.68MHzが安全と考えて、普段はそれで使っています。試しに 1段だけ落とした 258.05MHzにして使っていたところ、[SHIFT][AC]で電源が落ちなくなることがあります。筐体裏にある Restartで復帰できる場合と出来ない場合があります。
最後の手段として電池を抜いて再起動しようとして、再起動しないこともありました。チョット焦りましたが、しばらく置いておくと再起動できました。

ちょっと怖いので、2段落とし以上にはしておらず、今のところ問題なく動作しています。

fx-9860GII でFtune2を使っている時も、最大から2段落として使っていますが、1段だけ落とした場合でも電源まわりのトラブルは経験していません。

2段落としでの状況は以下です。
roRw0: 17.88MHz  raRw0: 19.12MHz
roRw1: 29.80MHz  raRw1: 38.02MHz
roRw2: 41.74MHz  raRw2: 56.97MHz
roRw3: 53.60MHz  raRw3: 76.12MHz
roRw4: 65.40MHz  raRw4: 95.06MHz
roRw5: 77.28MHz  raRw5:113.94MHz
roRw6: 89.10MHz  raRw6:132.93MHz
roRw8:112.97MHz  raRw8:170.98MHz
roR10:136.62MHz
roR12:160.35MHz

raWw0: 32.48MHz
raWw1: 64.78MHz
raWw2: 96.99MHz
raWw3:129.73MHz
raWw4:162.04MHz
raWw5:171.98MHz
raWw6:172.16MHz


=====

あと、fx-9860GII と fx-CG20 を3Pin シリアルケーブルで繋いでデータ転送を試みているのですが、一度も成功していません。
とりあえず、マニュアル通りに操作をしていることを何度も確認していますが、ダメです。
PC経由でのデータ転送は一度も失敗していないので、プログラム転送は出来ています。接続する9860GIIとCG20の両方とも UCBケーブルでなくて、3Pinケーブルに設定変更はしています。

3Pinケーブルで失敗した経験はお持ちですか?

カシオに直接相談する前に、相談させて頂きたく、よろしくお願い致します。

SDKで外部Basicプログラムを利用する方法

管理人様、こんにちは!

>SDKで C.Basicが動作しました(^_^)/

お、よかったです!(^^)


>Ver. 0.99 以降速度低下が見られましたが、Ver 0.99l 最新版では、Ver 0.80と同じ程度に高速化しています。

SH4A機ではバージョン毎に毎回速度が微妙に違うのが難点ですけど、SH4Aには非対応のSDKですから致し方ないところです(^^;


>ところで、SDK で起動した C.Basic で何か Basicプログラムを実行させるには、どうなさっていますか?

短いプログラムであればSDK上で打ち込むという方法が簡単ですが、ある程度大きなプログラムになると打ち込むのは大変なので(^^;
プログラム内にソースファイルを内蔵プログラムとして組み込むことでSDKのエミュレータに簡単に取り込めるようにしています。

その方法は、
バイナリファイルをCのソースファイルに変換するフリーソフト(BIN2C_TBL)がありましたのでそれを使って、
Cのソースファイルを作成してそれをC.Basic本体内に初期プログラムとして組み込みます。
http://www.vector.co.jp/soft/dl/winnt/util/se363967.html

BIN2C_TBLを起動して、
入力バイナリファイル:G1MのBasicソースファイルを指定します。(ファイルの種類で全てのファイルを選択して下さい。)
出力ソースファイル:任意のファイル名を指定します。

データ型:1バイトデータ(char)
変数名:任意の名前

「実行」でソースファイルが出来ます。
そのソースファイルのうち、{ }で挟まれた16進データ部分を、
C.BasicのソースファイルにあるCB_Sample.cに上書きコピーします。
CB_Sample.cの中にはbas_src[]からbas_src5[]までありますが、一番最初のbas_src[]の16進データの所に上書きコピーします。

後は、完全ビルドしてからプログラムを起動して、
ファイルモードで[SHIFT]+[^]でコピーしたプログラムがエディタに自動的に読み込まれますので、
[EXIT]を押して保存すればSDKのエミュレータの内部ストレージメモリにプログラムが保存されます。
エミュレータの内部ストレージはINITフォルダのROMファイルに保存されますので、次回SDK起動時にはそのプログラムファイルが最初からストレージ上に存在しています。

現在の初期内蔵プログラムとして、
bas_src:SAMPLE (総和を求めるプログラム)
bas_src1:8QUEEN (N-Queenベンチマークプログラム 構造化バージョン)
bas_src2:8QUN (N-Queenベンチマークプログラム 非構造化バージョン)
の三種類のプログラムがテスト用として組み込まれています。

ちなみにこの初期内蔵プログラムは(現状は隠し機能ですが)電卓本体でも有効です。


ちょいバグが見つかりましたので修正版差し替えです(^^;

アドイン版 C.Basic ver.0.99l テスト版 その9.9l(60進数入出力追加+バグ修正版+)
http://pm.matrix.jp/CB/CBASIC099l.zip

・?入力コマンドにおいて#や%のサフィックスがエラーになっていたのを修正しました。

Re: SDKでのエラーの原因が分かりました(^^;

sentaro様


> SDKでエラーになっていたのはストレージファイルが無い場合にそのエラー処理が回避されてないために起きていたバグでした(^^;

SDKで C.Basicが動作しました(^_^)/


> 発見が遅れたのはコンパイルオプションで -speed指定をしていてバグがなぜか出なかったためで、これをデフォルトの-size指定に戻すと管理人様のバグが出現しました。
>
> -speedオプションは、SDKインストールフォルダの
> \CASIO\fx-9860G SDK\Build\MakeOptC.txt
> の中ほどにある、
> -size
> を
> -speed
> に書き換えればOkです。
> 効果は1割ほどスピードアップします。

はい、高速化効果も確認できました。
いつも、ベンチマークとして、ライフゲーム Ver 0.73 を使っています。
http://egadget.blog.fc2.com/blog-entry-491.html

Ver. 0.99 以降速度低下が見られましたが、Ver 0.99l 最新版では、Ver 0.80と同じ程度に高速化しています。

> 今回の管理人様のエラー出現で致命的バグを修正することが出来ました。
> どうもありがとうございます(^^)

こちらこそ、ありがとうございます。

ところで、SDK で起動した C.Basic で何か Basicプログラムを実行させるには、どうなさっていますか?

SDKでのエラーの原因が分かりました(^^;

管理人様、こんにちは!

SDKでエラーになっていたのはストレージファイルが無い場合にそのエラー処理が回避されてないために起きていたバグでした(^^;

発見が遅れたのはコンパイルオプションで -speed指定をしていてバグがなぜか出なかったためで、これをデフォルトの-size指定に戻すと管理人様のバグが出現しました。

-speedオプションは、SDKインストールフォルダの
\CASIO\fx-9860G SDK\Build\MakeOptC.txt
の中ほどにある、
-size

-speed
に書き換えればOkです。
効果は1割ほどスピードアップします。

で、コンパイルオプションでエラーが出たり出なかったりするのは根本的にはバグがあったということなので、
そこを修正したバージョンの差し替えアップです。
今回の管理人様のエラー出現で致命的バグを修正することが出来ました。
どうもありがとうございます(^^)


アドイン版 C.Basic ver.0.99l テスト版 その9.9l(60進数入出力追加+バグ修正版+)
http://pm.matrix.jp/CB/CBASIC099l.zip

Re:Re: Re:Re: Re:SDKとWin10

管理人様、こんにちは!

>前回のアドバイスで、パスに () があるとダメなのが確認され、パスに () が無いフォルダに SDKをインストールしたら、ビルドまでは出来るようになっています。

SDKは日本語に未対応なようで、フォルダ名、ファイル名に「英文字+数字」以外を使ってしまうとエラーの原因になるようですね。


>INITフォルダだけでなく、Debugフォルダと SDCardフォルダも削除した上で、All Build を実行してみました。
>ビルドは成功しました。
>しかし同じエラーが出て、SDKでのプログラム実行ができないのは同じでした。
>私が以前作ったのもは、実行できます。
>それから、以前も Win8.1 64bit でうまく実行できていました。

ということはOSの問題ではなくC.Basicの問題ですね(^^;


>何か、純正SDK以外のライブラリファイルなど、追加する必要のものって、有りませんか?

zip内のソースファイルだけで問題なくビルド実行できているので、追加ファイルは必要無いですが、
C.Basicの過去バージョンでも同様のエラーが出るかどうかちょっと試していただけますでしょうか?


>わ、思わぬ伏兵が居たんですね。少しはお役にたったようでうれしいです(^_^)/

はい、管理人様がSDKでエラーを出して下さらなかったらしばらく気が付かなかったかもしれないバグでした(^^;
最新のVer.0.99lのzipから解凍しての真っ更なソースファイルをビルドして実行させたらC.Basicで新規ファイルが作れないので焦りました(^^;
これはVer.0.97から発生していたバグでした。

Re: Re:Re: Re:SDKとWin10

sentaro様

前回のアドバイスで、パスに () があるとダメなのが確認され、パスに () が無いフォルダに SDKをインストールしたら、ビルドまでは出来るようになっています。


> もし以前のメモリファイルが残っていたらINITフォルダを削除してから実行してみてください。
> 新たなフォルダにソースを展開してビルドしてエラーが出たとなると…ちょっと謎なのですが(^^;
> うちSDKの環境はWin7(32ビット)なのでWin10(64ビット)環境固有の問題かもしれません。

INITフォルダだけでなく、Debugフォルダと SDCardフォルダも削除した上で、All Build を実行してみました。
ビルドは成功しました。

しかし同じエラーが出て、SDKでのプログラム実行ができないのは同じでした。

[▶] (Run) ボタンをクリックすると、
System ERROR
REBOOT :[EXIT]
INITIALIZE:[EXE]
TBL ERROR!!
TARGET=01300240
PC =88023F20

全く同一のメッセージです。

私が以前作ったのもは、実行できます。
それから、以前も Win8.1 64bit でうまく実行できていました。

なので、Win10 64bit が必ずしも直接の原因ではなさそうで、なにか固有の問題のような感じです。

何か、純正SDK以外のライブラリファイルなど、追加する必要のものって、有りませんか?


> というところを検証していたら、ストレージメモリがクリアされた状態で新規ファイルが作成できないバグが見つかったので差し替え修正です(^^;

わ、思わぬ伏兵が居たんですね。少しはお役にたったようでうれしいです(^_^)/


Re:Re: Re:SDKとWin10

管理人様、こんにちは!

>[▶] (Run) ボタンをクリックすると、
>System ERROR
>REBOOT :[EXIT]
>INITIALIZE:[EXE]
>TBL ERROR!!
>TARGET=01300240
>PC =88023F20
>とエラーメッセージが出てしまいました。

もし以前のメモリファイルが残っていたらINITフォルダを削除してから実行してみてください。
新たなフォルダにソースを展開してビルドしてエラーが出たとなると…ちょっと謎なのですが(^^;
うちSDKの環境はWin7(32ビット)なのでWin10(64ビット)環境固有の問題かもしれません。

というところを検証していたら、ストレージメモリがクリアされた状態で新規ファイルが作成できないバグが見つかったので差し替え修正です(^^;

アドイン版 C.Basic ver.0.99l テスト版 その9.9l(60進数入出力追加+バグ修正版)
http://pm.matrix.jp/CB/CBASIC099l.zip

Re: Re:SDKとWin10

sentaro様

> フォルダ名にカッコが入っているとSDKが上手く動作しないようです。
> x64環境でしたらSDKのインストールフォルダを変更してみるといけるかもしれません。

ありがとうございます。フォルダ名に () が入らないフォルダにインストールすることで、ビルドに成功するようになりました。

で、CBasic をSDKで実行させてみました。

初期の頃にじっくりとソースを拝見したことがありますが、久しぶりに拝見して勉強しようと思ったわけです。

[▶] (Run) ボタンをクリックすると、

System ERROR
REBOOT :[EXIT]
INITIALIZE:[EXE]
TBL ERROR!!
TARGET=01300240
PC =88023F20

とエラーメッセージが出てしまいました。

何か設定が必要な感じですが、まだ分かりません。

それともSDKの設定の問題が残っているのかも知れません。

何か、推測可能でしょうか?

Re:SDKとWin10

管理人様、

フォルダ名にカッコが入っているとSDKが上手く動作しないようです。
x64環境でしたらSDKのインストールフォルダを変更してみるといけるかもしれません。

http://www.casiopeia.net/forum/viewtopic.php?f=21&t=1382&sid=0cb51bd9eb5dc08ed2a1631e2c77ca5f

Re:SDKとWin10

管理人様、

>久しぶりに SDKでチョコとアドインを作ってみると、ビルドで失敗したので、以前作ったものを再度ビルドすると、やはりビルドに失敗したと英語で表示されました。

うわ、これは初耳でした。


>これまでは、Win8.1 で動作させていたのですが、今回は Win10 です。おそらく Win10 で問題が発生しているようです。
>このあたり、何か情報をお持ちでしょうか?

うちの環境はWin7のままだったので全然気がついてませんでした(^^;

ちょっと調査してみます。

Re:9860GII vs cg20 with Ptune2

管理人様、こんにちは!

>一応ひと揃え、というところでしょうが、fx-FD10 Pro が気になってはいます。

あ゛、FD10Proがありました!
アドインが使えないことで圏外に出てしまってましたが(^^;
CasioBasic機として考えると正当なfx-5800P路線の高級機種という感じですね。


>来年の今頃は、FD10 Pro が手元にあったりして...

ぉ! 最新のCasioBasicを網羅するにはやはり必須の機種といえますから、これは間違いなく?!


>先ず外観でチョット気になったのは、液晶のカバーというか外装の透明樹脂の板ですが、これって傷つき易くありませんか?
>sentaro様の cg10 は、今どんな感じでしょうか?
>場合によっては、スマホなどの保護シートを貼った方が良いような気もしています。

うちにあるCG10は結構小キズが付いてしまってるので(^^;(気になるほどの程度ではないのでそのまま放置ですが…)
新品の傷が付いてないうちに早めに貼った方が間違いなく良さそうです。


>3) やっぱり遅い(-_-;
>で、いくつかを動かしてみましたが、遅いです...

fx-5800PからCG20だと確実に速さを感じられるところですが、
fx-9860GIIからだとちょっと厳しいところですよね(^^;
グラフィックコマンドにおいてはもはや我慢大会ですし…(^^;
いくらカラーで高精細といってももう少しなんとかしないとというレベルですね。
このあたりはC.Basicで解消出来ればと思っています(^^)


>私の個体では、265MHz程度で上限となってしまいました。そこで、常用最高クロックを2段下の 250.68MHz となるように、[SHIFT][MENU] (setup) で CPU Clock上限を 255MHz に設定しました。
>これで、大分速くなりました!

fx-9860GIIに比較するとメモリスピードが遅いので、BFCが100MHz超=CPUクロック200MHz超での高クロックでのパフォーマンスの伸びがかなり鈍るので、安定的に250MHzまでいければ十分かと思います(^^)


>画面表示の色指定とグラフィックスコマンドについて、確認すれば、あとは 9860GII とほぼコンパチのような気がしました。
>線のStyle設定が、一番のネックのような感じですね。

Style設定はThinが増えてますし、ドットの太さも3倍で互換ではないのでちょっとややこしいです(^^;


>逆に言えば、fx-9860GII の Casio Basic をきちんと抑えて、詳細リファレンスが出来れば、cg20対応は、少しの追記で対応できそうです。

はい、画面コマンドの違いくらいでほぼ同じといえますね。

SDKとWin10

sentaro様

久しぶりに SDKでチョコとアドインを作ってみると、ビルドで失敗したので、以前作ったものを再度ビルドすると、やはりビルドに失敗したと英語で表示されました。

HMAKE MAKE UTILITY Ver. 1.1
Copyright (C) Hitachi Micro Systems Europe Ltd. 1998
Copyright (C) Hitachi Ltd. 1998


ERROR: Process failed with return code: 1
Build was not successful.


これまでは、Win8.1 で動作させていたのですが、今回は Win10 です。おそらく Win10 で問題が発生しているようです。

このあたり、何か情報をお持ちでしょうか?


9860GII vs cg20 with Ptune2

sentaro様


> おっ!ついに管理人様もCG20ユーザーに!!!
> ご購入おめでとうございます!
> これでfx-5800Pから始まるCasioBasicは完全制覇ですね(^^)

一応ひと揃え、というところでしょうが、fx-FD10 Pro が気になってはいます。

来年の今頃は、FD10 Pro が手元にあったりして...


先ほどから少し fx-cg20 を触っています。

1) 外装の透明樹脂板
先ず外観でチョット気になったのは、液晶のカバーというか外装の透明樹脂の板ですが、これって傷つき易くありませんか?
sentaro様の cg10 は、今どんな感じでしょうか?
場合によっては、スマホなどの保護シートを貼った方が良いような気もしています。


2) 9860GII から移植
> CasioBasicは上位互換なので3Pinケーブルで繋いで転送すればそのまま動かせるのが便利ですね。

転送すると、ファイル拡張子も g1m から g3m へ変換され、Text コマンドの引数も自動的に (x3)が付加され3倍になるんですね!


3) やっぱり遅い(-_-;
で、いくつかを動かしてみましたが、遅いです...

> たぶんちょっといじっていると…すぐにPtune2必須になってくると思われます(^^;


4) Ptune2
...で、早速 Ptune2 をインストール!

私の個体では、265MHz程度で上限となってしまいました。そこで、常用最高クロックを2段下の 250.68MHz となるように、[SHIFT][MENU] (setup) で CPU Clock上限を 255MHz に設定しました。
これで、大分速くなりました!

で、9860GII も同じクロックに設定して、比較してみました。画面表示の分だけ cg20 は遅くなるのが確認できました。


画面表示の色指定とグラフィックスコマンドについて、確認すれば、あとは 9860GII とほぼコンパチのような気がしました。
線のStyle設定が、一番のネックのような感じですね。

逆に言えば、fx-9860GII の Casio Basic をきちんと抑えて、詳細リファレンスが出来れば、cg20対応は、少しの追記で対応できそうです。


Re:Re: アドイン版 C.Basic ver.0.99l テスト版 その9.9l(60進数入出力追加版)

管理人様、こんにちは!

>細かなところで、まだまだ有るんですね!

はい、純正コマンドをどこまで取り入れるかというのは結構悩みどころなのですが、
60進数は角度だけでなく時間表示でも使える機能になると思われるの入れておかないとという感じです。


>確認はまだですが、°のキャラクターの違いは、入力時にどのように区別しているのでしょうか?

fx-9860GII上では丸いのと四角いのでキャラクターが区別されているので無問題です(^^)
丸いのがDegree角度単位入力で、四角いのが60進数入力時の区切りとなっています。



>ついに、fx-CG20を買ってしまいました。

おっ!ついに管理人様もCG20ユーザーに!!!
ご購入おめでとうございます!
これでfx-5800Pから始まるCasioBasicは完全制覇ですね(^^)


>まだ何もしてません(その暇がありません)が、fx-9860GII からの移植をやってみようと思っています。

CasioBasicは上位互換なので3Pinケーブルで繋いで転送すればそのまま動かせるのが便利ですね。
転送してしまえば後はCG20独自機能を使っていじくり回すだけです(^^)


>Ptuneのインストールもまだだったりします...(^^;

たぶんちょっといじっていると…すぐにPtune2必須になってくると思われます(^^;


>ライブゲームがカラーで動くと楽しそうですね...

https://www.cemetech.net/programs/index.php?mode=file&id=579
ライフゲームのアドインはすでに出てるのですが、
色が付くと見た目のインパクトが凄そうです。

早くCG20版のC.Basicを動くようにしないとですね(^^)

Re: アドイン版 C.Basic ver.0.99l テスト版 その9.9l(60進数入出力追加版)

sentaro様

Ver 0.99l を、ダウンロードできるように変更しました。

細かなところで、まだまだ有るんですね!


> アドイン版 C.Basic ver.0.99l テスト版 その9.9l(60進数入出力追加版)
> http://pm.matrix.jp/CB/CBASIC099l.zip
> ・ °(deg) r (rad) g (gra)の角度単位入力を追加しました。
> ・60進数の入出力に対応しました。
> (例)12°34°56.78°→A
>  Aの値は12.582438888889となります。
> (例)A >DMS
>  画面右詰めで「12°34′56.78″」表示されます。
>  純正CasioBasicでは表示のみの変換に対してC.Basicでは文字列への変換が出来ます。
> (例)A >DMS→Str 1
>  Str 1 に「12°34′56.78″」が入ります。
>
> *角度単位入力の「°(deg)」と60進数の区切り「°」はキャラクタが違います。

確認はまだですが、°のキャラクターの違いは、入力時にどのように区別しているのでしょうか?
やってみれば分かるのかも知れませんが....スミマセン


で、ニュースです!

ついに、fx-CG20を買ってしまいました。
まだ何もしてません(その暇がありません)が、fx-9860GII からの移植をやってみようと思っています。
Ptuneのインストールもまだだったりします...(^^;


ライブゲームがカラーで動くと楽しそうですね...

アドイン版 C.Basic ver.0.99l テスト版 その9.9l(60進数入出力追加版)

管理人様、こんにちは!

今回は60進数入出力対応をしたバージョンです。
60進数入出力は現状のコマンドを組み合わせても実現出来る機能ですが、
純正仕様に基づいて追加してみました(^^)


アドイン版 C.Basic ver.0.99l テスト版 その9.9l(60進数入出力追加版)
http://pm.matrix.jp/CB/CBASIC099l.zip
・ °(deg) r (rad) g (gra)の角度単位入力を追加しました。
・60進数の入出力に対応しました。
(例)12°34°56.78°→A
 Aの値は12.582438888889となります。
(例)A >DMS
 画面右詰めで「12°34′56.78″」表示されます。
 純正CasioBasicでは表示のみの変換に対してC.Basicでは文字列への変換が出来ます。
(例)A >DMS→Str 1
 Str 1 に「12°34′56.78″」が入ります。

*角度単位入力の「°(deg)」と60進数の区切り「°」はキャラクタが違います。

Re:Re: 0.99k 差し替えです。

管理人様、こんにちは!

>こういうのが、結構重要ですよね。

はい、今のところ致命的なバグは出てない(露見してない?)ですけど、純正CasioBasicとの細かな差異に(今頃)気がついてたりと、バグ出しはあらゆる方向から試してみる必要ありなので、もうしばらくはVer.0.99シリーズが続きそうです(^^;


>私のところで、最近じっくりとバグだしプログラミングができていないので、すみません。

あ、いえいえ、
細かなバグ出しとなるとかなり大変な作業なので、このあたりは地道にバグを潰していくしか無いですね(^^;

こちらこそ、いつもありがとうございます(^^)

Re: 0.99k 差し替えです。

sentaro様

> 細かなバグがちょこちょこ見つかりましたので修正です。

こういうのが、結構重要ですよね。
私のところで、最近じっくりとバグだしプログラミングができていないので、すみません。

ありがとうございます。

0.99k 差し替えです。

管理人様、こんにちは!

ここのところバタバタしてて更新ペースが滞っております(^^;

細かなバグがちょこちょこ見つかりましたので修正です。

機能的な変化のない修正なのでバージョン据え置きで差し替えアップです(^^;

アドイン版 C.Basic ver.0.99k テスト版 その9.9k(エディタにジャンプ機能追加+バグ修正版)
http://pm.matrix.jp/CB/CBASIC099k.zip

・実数表示で正の指数値で(+)表示されてなかったのを修正しました。
・負数の実数表示で指数桁が表示しきれなかった不具合を修正しました。
・タイマー変数Ticksへの代入が出来なかったのを修正しました。

Re:Re: アドイン版 C.Basic ver.0.99k テスト版 その9.9k(エディタジャンプ機能に現在行番号表示追加版)

管理人様、こんにちは!

>以前、コメントアウトのバグ(?)について、カシオに問い合わせをした時、この動作は仕様通りで、むしろマニュアルにバグがあるとの見解でした。さらに、次の改訂でマニュアルのバグを修正するとのことでした。そして 2.09 のマニュアルを見ると、きちんと修正されていました。

マニュアルのバグ(?)が修正されてますね(^^;

純正仕様は「:」も改行も同じ区切りになるので仕様としては一貫しているところですけど、実使用上、コメントアウトは改行することで終わりとするのが自然な感じはしますよね。

このコメントアウトの仕様は「:」を区切りとしないC.Basicでは独自仕様となってしまいました(^^;


>Ver 0.99k を頂きました。現在のカーソル行の表示は地味ですが、確かに便利ですね。

エディタはこれで一段落かなというところですけど、まだ他にもあったらいいな的な便利機能のご提案ありましたらよろしくです(^^)

Re: アドイン版 C.Basic ver.0.99k テスト版 その9.9k(エディタジャンプ機能に現在行番号表示追加版)

sentaro様

> インストールマニュアルはすごく分かりやすくてなかなかよいです(^^)
> アドインの電卓への転送方法は一度分かってしまえば何てこと無いことでも、最初の段階でつまづくとどうしたらよいのか分からないことも多いので、導入マニュアルが整備されることでアドイン使用の敷居がかなり下がってきますね。

そうなんです。だからきちんとまとめたエントリーを作ろうと思いつつ、結構遅くなってしまいました。


> 英語版エントリーもさすが管理人様ですね(^^)
> どうもありがとうございます!

ちょっとした時に読み直して、少しづつ修正を入れてます。



> そういえば、fx-9860GIIの日本語マニュアルが最新の試験モード対応の2.09バージョンになっていることに気が付いたのですが、日本の公式サイトでは2.09のアップデートはまだありません(^^;

以前、コメントアウトのバグ(?)について、カシオに問い合わせをした時、この動作は仕様通りで、むしろマニュアルにバグがあるとの見解でした。さらに、次の改訂でマニュアルのバグを修正するとのことでした。そして 2.09 のマニュアルを見ると、きちんと修正されていました。


Ver 0.99k を頂きました。現在のカーソル行の表示は地味ですが、確かに便利ですね。

ありがとうございます。

アドイン版 C.Basic ver.0.99k テスト版 その9.9k(エディタジャンプ機能に現在行番号表示追加版)

管理人様、こんにちは!

>Prog List が File List に変更されたところで、Manual.txt, readme_J.txt の英訳、そして英文エントリーを少しづつ進めています。
>今日のところは、
>・C.Basicのインストール (http://egadget.blog.fc2.com/blog-entry-509.html):これはどこかでまとめておきたいと思っていました。
>・Installation of C.Basic (http://egadget.blog.fc2.com/blog-entry-510.html):英語エントリー
>を新たに作り、それに合わせて、以下のトップページ/Top Page を更新しました。

毎度大変お手数おかけしています。m(_ _)m

インストールマニュアルはすごく分かりやすくてなかなかよいです(^^)
アドインの電卓への転送方法は一度分かってしまえば何てこと無いことでも、最初の段階でつまづくとどうしたらよいのか分からないことも多いので、導入マニュアルが整備されることでアドイン使用の敷居がかなり下がってきますね。
英語版エントリーもさすが管理人様ですね(^^)
どうもありがとうございます!

そういえば、fx-9860GIIの日本語マニュアルが最新の試験モード対応の2.09バージョンになっていることに気が付いたのですが、日本の公式サイトでは2.09のアップデートはまだありません(^^;

今回のC.Basicのバージョンアップは大した変更では無いのですが、エディタのジャンプで現在行番号を表示するようにしてみました。
ただ、プログラムが長くなると行番号を算出するために若干時間がかかってもっさりになるので、任意行へのジャンプの時のみ表示となっています(^^;

アドイン版 C.Basic ver.0.99k テスト版 その9.9k(エディタジャンプ機能に現在行番号表示追加版)
http://pm.matrix.jp/CB/CBASIC099k.zip

・エディタのジャンプ機能の任意行へのジャンプ([F1][F3])で現在の行番号を表示するようにしました。

Re: Re:Re: 前のファイルが残ってました(^^;

sentaro様

Prog List が File List に変更されたところで、Manual.txt, readme_J.txt の英訳、そして英文エントリーを少しづつ進めています。

今日のところは、

・C.Basicのインストール (http://egadget.blog.fc2.com/blog-entry-509.html):これはどこかでまとめておきたいと思っていました。

・Installation of C.Basic (http://egadget.blog.fc2.com/blog-entry-510.html):英語エントリー

を新たに作り、それに合わせて、以下のトップページ/Top Page を更新しました。

http://egadget.blog.fc2.com/blog-entry-495.html
http://egadget.blog.fc2.com/blog-entry-493.html


Re: Re:Re: 前のファイルが残ってました(^^;

sentaro様

> ってことで、またまた再アップです。
> ダウンロードして確認したので今度こそだいじょうぶです(^^;

はい、確認致しました。

ありがとうございます。



Re:Re: 前のファイルが残ってました(^^;

管理人様、こんにちは!

>これをダウンロードしたところ、ZIPファイルが壊れているようです。ご確認頂けませんか?

うわ、たびたびすみません(^^;

ってことで、またまた再アップです。
ダウンロードして確認したので今度こそだいじょうぶです(^^;

Re: 前のファイルが残ってました(^^;

sentaro様

ダウンロードしたZIPファイルの中にある CBASICフォルダ内の CBASIC.g1aを転送して試していたのが問題だったのですね。
このフォルダの外にある CBASIC.g1a では、Fine List に変更されていました。

ところで、
> あ゛、すみません(^^;
> CBASIC.G1AファイルがCBASICフォルダ内にも残っていたので、それだと差し替え前のProg List のままでした(^^;
> それを削除してCBASIC099j.zipファイルを再アップしました。

これをダウンロードしたところ、ZIPファイルが壊れているようです。ご確認頂けませんか?




前のファイルが残ってました(^^;

管理人様、こんにちは!

>先ほど、ダウンロードしたのですが、fx-9860GIIに C.Basic を転送したところ、Prog List のままで、File List になっていません。これを File List にすると思っていたのですが、勘違いでしょうか?
どこか他を変更されました?

あ゛、すみません(^^;
CBASIC.G1AファイルがCBASICフォルダ内にも残っていたので、それだと差し替え前のProg List のままでした(^^;
それを削除してCBASIC099j.zipファイルを再アップしました。

Re: Re:Re: Re:Re: アドイン版 C.Basic ver.0.99j テスト版 その9.9j(エディタにジャンプ機能追加版)

sentaro様

> あ、そういえばマニュアルではファイルリストという表記ばかりになってますね(^^;
> 今後コンパイラ等でのファイルが増えることも考えるとファイルリストで統一した方が良さそうですね。
> ってことで、ここはサクッと表記変更しました(^^)

先ほど、ダウンロードしたのですが、fx-9860GIIに C.Basic を転送したところ、Prog List のままで、File List になっていません。これを File List にすると思っていたのですが、勘違いでしょうか?
どこか他を変更されました?



>
>
> >C.Basicの特徴に、上位互換で独自拡張機能を随時追加してゆく...というのを追加しては如何でしょうか?
>
> 了解です(^^)
>
>
> >メニューで、[F6]で戻る機能の説明で、[F6]( < ) と"( < )"を追加してはどうでしょうか?
>
> これも了解です(^^)
>
>
> >これは、Jump機能に関連する説明で見当たらないのですが、どこに追加されました?
>
> 編集画面の[EXIT]のところでちょっろっと記述してあります(^^;
>
> ってことで、File Listへの表記変更とreadme_j.txt更新でVer.0.99j差し替えました。
>
>
> >私がこれまで作った最長のもの(ライフゲームのサブルルーチン)は、508行もありました(^^;
> >これを触っていて気がついたのですが、Setupで SkipUp/Down の設定がデフォルトで 1 になっていました。
> >[SHIFT][UP] や [SHIFT][DOWN] と同じ設定なわけです。
> >メニューで表示されるのは、Skp↓ と Skp↑ なので、ある意味合理的で、ユーザーに分かり易い配慮ですね。
> >sentaro様の個性が、このようなところで垣間見えます。
>
> スキップ機能は管理人様のご提案があったからこそなので、恐縮しまくりです(^^;
> デフォルトでは同じ1ページになってしまってますけど、ファンクションキーは[SHIFT]を押す必要がないのでPageUp/Downとして使っても使いやすいかもですね。

Re:Re: Re:Re: アドイン版 C.Basic ver.0.99j テスト版 その9.9j(エディタにジャンプ機能追加版)

管理人様、こんにちは!

>readmeの英訳をチョビチョビやっています.毎週欠かさず少しずつやってゆけば、Ver 0.99z になるまでに、なんとか終わりそうです。

毎度お手数おかけしています。m(_ _)m


>「ファイルリスト」という表現があります。実際に電卓上では Prog List となっています。
>当初は Prog List で良かったのですが、フォルダやテキストがサポートされるようになっているので、いっそ電卓上で、File List に表記を変更するのはどうでしょうか?

あ、そういえばマニュアルではファイルリストという表記ばかりになってますね(^^;
今後コンパイラ等でのファイルが増えることも考えるとファイルリストで統一した方が良さそうですね。
ってことで、ここはサクッと表記変更しました(^^)


>C.Basicの特徴に、上位互換で独自拡張機能を随時追加してゆく...というのを追加しては如何でしょうか?

了解です(^^)


>メニューで、[F6]で戻る機能の説明で、[F6]( < ) と"( < )"を追加してはどうでしょうか?

これも了解です(^^)


>これは、Jump機能に関連する説明で見当たらないのですが、どこに追加されました?

編集画面の[EXIT]のところでちょっろっと記述してあります(^^;

ってことで、File Listへの表記変更とreadme_j.txt更新でVer.0.99j差し替えました。


>私がこれまで作った最長のもの(ライフゲームのサブルルーチン)は、508行もありました(^^;
>これを触っていて気がついたのですが、Setupで SkipUp/Down の設定がデフォルトで 1 になっていました。
>[SHIFT][UP] や [SHIFT][DOWN] と同じ設定なわけです。
>メニューで表示されるのは、Skp↓ と Skp↑ なので、ある意味合理的で、ユーザーに分かり易い配慮ですね。
>sentaro様の個性が、このようなところで垣間見えます。

スキップ機能は管理人様のご提案があったからこそなので、恐縮しまくりです(^^;
デフォルトでは同じ1ページになってしまってますけど、ファンクションキーは[SHIFT]を押す必要がないのでPageUp/Downとして使っても使いやすいかもですね。

Re: Re:Re: アドイン版 C.Basic ver.0.99j テスト版 その9.9j(エディタにジャンプ機能追加版)

sentaro様

readmeの英訳をチョビチョビやっています.毎週欠かさず少しずつやってゆけば、Ver 0.99z になるまでに、なんとか終わりそうです。

で、気がついた点がいくつかあります。

1)
「ファイルリスト」という表現があります。実際に電卓上では Prog List となっています。

当初は Prog List で良かったのですが、フォルダやテキストがサポートされるようになっているので、いっそ電卓上で、File List に表記を変更するのはどうでしょうか?


2)
C.Basicの特徴に、上位互換で独自拡張機能を随時追加してゆく...というのを追加しては如何でしょうか?


3)
メニューで、[F6]で戻る機能の説明で、[F6]( < ) と"( < )"を追加してはどうでしょうか?


4)
> [EXIT]でサブメニューからメインメニューに戻るというのもreadme_j.txtに追加しておきました。

これは、Jump機能に関連する説明で見当たらないのですが、どこに追加されました?


===============

ところで、

> CasioBasicのソースでは改行で行の区切りなのですが、行数指定の行は画面上での見た目上の物理行数なので行数をカウントするのに若干手間がかかってしまうのですが、行数を把握できるのは便利だと思って取り入れてみました。
> 今回のジャンプ機能は長いプログラムになると使い勝手の上で差が出てきますね(^^)

私がこれまで作った最長のもの(ライフゲームのサブルルーチン)は、508行もありました(^^;
これを触っていて気がついたのですが、Setupで SkipUp/Down の設定がデフォルトで 1 になっていました。
[SHIFT][UP] や [SHIFT][DOWN] と同じ設定なわけです。

メニューで表示されるのは、Skp↓ と Skp↑ なので、ある意味合理的で、ユーザーに分かり易い配慮ですね。
sentaro様の個性が、このようなところで垣間見えます。


Re:Re: アドイン版 C.Basic ver.0.99j テスト版 その9.9j(エディタにジャンプ機能追加版)

管理人様、こんにちは!

>Ver 0.99j におけるスクロール機能の新実装、とても使いやすいです。
>サブメニューからメインメニューに戻るために [EXIT] を押すというのを見落としていました。とても自然な操作ですね。

ありがとうございます(^^)
操作性に関しては出来るだけ純正CasioBasicに準拠する使い勝手のままがよいですね。
[EXIT]でサブメニューからメインメニューに戻るというのもreadme_j.txtに追加しておきました。


>さらに、Gotoでジャンプ先の行数指定ですが、1~147 といったような全行数を表示することで、繰り返しデバッグや書き直しをする場合にとても便利です。

CasioBasicのソースでは改行で行の区切りなのですが、行数指定の行は画面上での見た目上の物理行数なので行数をカウントするのに若干手間がかかってしまうのですが、行数を把握できるのは便利だと思って取り入れてみました。
今回のジャンプ機能は長いプログラムになると使い勝手の上で差が出てきますね(^^)


>Ver 0.99j に同梱されている readme_j.txt のクイックマニュアルがスクロール&ジャンプ機能の操作について更新されていませんでした。

readme_j.txtを更新してVer.0.99j差し替えアップしました(^^;
(プログラム本体もちょいバグ修正済みです)

Re: アドイン版 C.Basic ver.0.99j テスト版 その9.9j(エディタにジャンプ機能追加版)

sentaro様

Ver 0.99j に同梱されている readme_j.txt のクイックマニュアルがスクロール&ジャンプ機能の操作について更新されていませんでした。

C.Basic のトップページ(下記)に、manual_j.txt と readme_j.txt を参照するように追記しました。
http://egadget.blog.fc2.com/blog-entry-495.html


Re: アドイン版 C.Basic ver.0.99j テスト版 その9.9j(エディタにジャンプ機能追加版)

sentaro様


Ver 0.99j におけるスクロール機能の新実装、とても使いやすいです。

サブメニューからメインメニューに戻るために [EXIT] を押すというのを見落としていました。とても自然な操作ですね。

さらに、Gotoでジャンプ先の行数指定ですが、1~147 といったような全行数を表示することで、繰り返しデバッグや書き直しをする場合にとても便利です。


> ファンクションキーの[F1](TOP)と[F2](BTM)を裏に回して、
> [F1]をジャンプメニューの入り口としてメニューを1階層増やしてみました。

これがサブメニューに移っても、あまり不便には思わないので、[F1](JUMP)に関連機能をまとめたのは、却って分かり易くなったと思います。


> (本体の表計算機能の[EDIT]で[JUMP]があるのでちょっと真似てみました。)
> 空いた[F2]には(純正でも表にあるので)検索機能を割り当ててみました。

純正Casio Basicに合わせたことは、ユーザーには優しいと思います。

> >そう考えますと、ロールアップやロールダウンは、感覚的に「1ページごと」というような感じを、私は持、この1ページごとは固定してしまうのが良いと、言葉の感じからそんなように思うのですが、sentaro様は如何でしょうか?
>
> 私もそう思います(^^)
> ってことで、[SHIFT]+[↑][↓]は「1ページごと」固定にして、
> 新規に任意ページのスキップ(アップ/ダウン)を加えてみました。

ご賛同頂いてありがとうございます。


> キーアサインに付いてはまだ固まってないので改善の余地ありです(^^;

今回の変更については、満足です。

...ということで、C.Basicトップページの C.Basicダウンロードのバージョンも更新しておきます。

アドイン版 C.Basic ver.0.99j テスト版 その9.9j(エディタにジャンプ機能追加版)

管理人様、こんにちは!

>ファンクションキーを使うとすれば、またファンクションキーのメニュー配置を変えることになりますよね。

はい、ファンクションキー以外は使えそうにないので、とりあえずの一案ということで、
ファンクションキーの[F1](TOP)と[F2](BTM)を裏に回して、
[F1]をジャンプメニューの入り口としてメニューを1階層増やしてみました。
(本体の表計算機能の[EDIT]で[JUMP]があるのでちょっと真似てみました。)
空いた[F2]には(純正でも表にあるので)検索機能を割り当ててみました。


>そう考えますと、ロールアップやロールダウンは、感覚的に「1ページごと」というような感じを、私は持、この1ページごとは固定してしまうのが良いと、言葉の感じからそんなように思うのですが、sentaro様は如何でしょうか?

私もそう思います(^^)
ってことで、[SHIFT]+[↑][↓]は「1ページごと」固定にして、
新規に任意ページのスキップ(アップ/ダウン)を加えてみました。

キーアサインに付いてはまだ固まってないので改善の余地ありです(^^;



アドイン版 C.Basic ver.0.99j テスト版 その9.9j(エディタにジャンプ機能追加版)
http://pm.matrix.jp/CB/CBASIC099j.zip

・エディタにジャンプ機能を追加しました。
 それによりファンクションキーアサインを一部変更しました。

 -[F1] (TOP) ファイル先頭にジャンプします。
 -[F2] (BTM) ファイル末尾にジャンプします。

 ↓↓↓↓↓↓↓↓

 -[F1] (JUMP) ファイルのジャンプメニューを表示します。
  [F1] (TOP) ファイル先頭にジャンプします。
  [F2] (BTM) ファイル末尾にジャンプします。
   [F3] (GOTO) ファイルの任意の行にジャンプします。
   [F5] (Skip↑) (セットアップで設定された)ページ数だけスキップアップします。
   [F6] (Skip↓) (セットアップで設定された)ページ数だけキップダウンします。
 -[F2] (SRC) 文字列サーチモードに入ります。

・ジャンプ機能に任意のページ数スキップする機能を加えたのでPageUp/Down機能を一部変更です。
 
 [SHIFT]+{UP]  1ページ(6行)だけPageUpします。
 [SHIFT]+[DOWN] 1ページ(6行)だけPageDownします。

・[AC]キーでのブレークした時のポップアップから再開可能になりました。
[F1][EXE]キーで再開できます。

Re: Re:Re: アドイン版 C.Basic ver.0.99i テスト版 その9.9i(PageUp/Down任意設定に変更版)

sentaro様


> >次のバージョンアップの際には、以下もご検討頂けると良いかな、と思います。
> >・[SHIFT][->]でより大きなスキップ量で下にスクロール
> >・[SHIFT][<-]でより大きなスキップ量で上にスクロール
> >「より大きなスキップ量」は思案のしどころですが、デフォルトで PageUp/PageDown の2倍あたりでどうでしょうか?
> >これもSetupで設定変更できるようにすれば良いと思います。
>
> じつは…[SHIFT][->]と[SHIFT][<-]は、OSの仕様でコントラスト調整となってしまっているので(^^;
> 他のキーに割り当てれば可能です。
> 現状ファンクションキーしか使えそうにないですが、[F1][F2]あたりを拡張するのが良さそうでしょうか。

コントラスト調整については、気づきませんでした。
ファンクションキーを使うとすれば、またファンクションキーのメニュー配置を変えることになりますよね。

現在のEDIT画面で[SHIFT]キーを押した時に現れるファンクションメニューは、6個とも必要不可欠なように思えます。
これを頻繁に変えるのはあまり良くないように思うので、悩ましいですね。


例えば、[F1] (VAR) はサブメニュー呼び出しにして、そのサブメニューに [F1] (Var)、[F2] (Mat)、[F3] (V-W) を展開する。
[F1] (VAR)の隣に例えば [F2](Scrl)を設け、そのサブメニューに例えば、

[F1] (Rol↓)、[F2] (Rol↑)、[F3](Skp↓)、[F4](Skp↑)、[6](<) を追加(敢えて [F5] を飛ばす)、

[F2](Scrl)のサブメニューが表示されている時は、そのメニュー表示は [F6](<)を押すまでは表示し続ける。
そして現行の [SHIFT][↓] と [SHIFT][↑] は ロールダウン(Rol↓)とロールアップ(Rol↑)のショートカット操作として残し、メニュー表示を戻す動作も現行のまま...という感じもアリかな?と思います...というか、こっちの方が直感的に分かりやすいかも知れないと思いますが、如何でしょう?

ユーザーが直感的に分かりやすいのは何か?という視点で考えますと、ここではスクロール (Scrl)という動作を示す言葉には、ロール(アップ/ダウン)とスキップ(アップ/ダウン)という2つの異なる動作が属すると定義しているわけです。直感的に受け入れられるかどうかが、ポイントになりそうです。

そう考えますと、ロールアップやロールダウンは、感覚的に「1ページごと」というような感じを、私は持、この1ページごとは固定してしまうのが良いと、言葉の感じからそんなように思うのですが、sentaro様は如何でしょうか?

そして、スキップはデフォルト値をもうけた上で、スキップ量(ページ単位)でSetupでユーザーが変更できるもの...とするのが自然なように感じます。

これらは、機能名や表示から直感的に理解できるのが最良だという前提で、私が言葉から受ける印象に基づく案です。私の感覚が多くのユーザーと同じかどうか、そこが確信を持てないのですが、sentaro様は如何でしょうか?


将来の拡張を見据えて、今変更しても後々使い勝手に影響する変更を最小にする考え方に立って、必要な変更ってことで致し方ないという感じでしょうか...


実は、Ftune2のように [+] や [-] キーを使うことも思ったのですが、C.Basic全体で [+] [-] キーを使うのであれば良いとしても、今回の追加機能のみにこれらのキーを使うと、返って操作性の一貫性が損なわれ、分かりにくい、使い方を忘れて思い出せない、といった感じになるので、これも提案しづらい感じです。


私は、良いソフトウェアはヘルプや解説を読まなくても直感的に使えるもの...と昔から思っているので、上記はその延長線上での議論になってしまっています。

作り手の利便性は、この際考えていません(-_-;
どうお考えでしょうか?

Re:Re: アドイン版 C.Basic ver.0.99i テスト版 その9.9i(PageUp/Down任意設定に変更版)

管理人様、こんにちは!

>EDIT画面での現在位置の表示は、地味ですが役立ちますね。
>ページ単位でスクロールのスキップを設定できるのも分かり易くて、迷わず使えるのが気に入りました。
>ある程度の行数のプログラムでは、とてもありがたいです。

そう言っていただけると機能追加した甲斐がありますね。
ありがとうございます(^^)


>次のバージョンアップの際には、以下もご検討頂けると良いかな、と思います。
>・[SHIFT][->]でより大きなスキップ量で下にスクロール
>・[SHIFT][<-]でより大きなスキップ量で上にスクロール
>「より大きなスキップ量」は思案のしどころですが、デフォルトで PageUp/PageDown の2倍あたりでどうでしょうか?
>これもSetupで設定変更できるようにすれば良いと思います。

じつは…[SHIFT][->]と[SHIFT][<-]は、OSの仕様でコントラスト調整となってしまっているので(^^;
他のキーに割り当てれば可能です。
現状ファンクションキーしか使えそうにないですが、[F1][F2]あたりを拡張するのが良さそうでしょうか。


>と最後に大文字の N が付いているのは、何かわけでもあるのでしょうか?
>もしついつい余計についていたというのなら、サクッと Ver 0.99i の更新をなさっては如何でしょうか?

あ゛、特に意味はなくPageUp/PageDown Numberの略のつもりでしたけど、逆に意味不明になってましたね(^^;
ってことで、サクッと0.99iの差し替え更新しました。

Re: アドイン版 C.Basic ver.0.99i テスト版 その9.9i(PageUp/Down任意設定に変更版)

sentaro様

EDIT画面での現在位置の表示は、地味ですが役立ちますね。

ページ単位でスクロールのスキップを設定できるのも分かり易くて、迷わず使えるのが気に入りました。
ある程度の行数のプログラムでは、とてもありがたいです。

次のバージョンアップの際には、以下もご検討頂けると良いかな、と思います。
・[SHIFT][->]でより大きなスキップ量で下にスクロール
・[SHIFT][<-]でより大きなスキップ量で上にスクロール

「より大きなスキップ量」は思案のしどころですが、デフォルトで PageUp/PageDown の2倍あたりでどうでしょうか?
これもSetupで設定変更できるようにすれば良いと思います。

ところで、Setup ページでの PageUp/PageDown の表記ですが、

PageUp/PageDownN

と最後に大文字の N が付いているのは、何かわけでもあるのでしょうか?

もしついつい余計についていたというのなら、サクッと Ver 0.99i の更新をなさっては如何でしょうか?


アドイン版 C.Basic ver.0.99i テスト版 その9.9i(PageUp/Down任意設定に変更版)

管理人様、おつかれさまです。

>より安定したバージョンということで、以下では、Ver 0.99h に変更しました。
http://egadget.blog.fc2.com/blog-entry-495.html

毎度お手数おかけしてます。
今のところは致命的なバグは無さそうですが、ひょんなところからバグが見つかるので油断できません(^^;


>これ、試してみるのが楽しみです(^_^)/

CG10/20には右端にスクロールバーがあって現在位置が分かりやすいのでちょこっと取り入れてみました。
といっても全体の中で現在位置が把握出来るだけなのでCG10/20のようなスクロールバーではないです(^^;


>RollUp/RollDown の行数ですが、Cのソースでグローバル変数にすることで、Setup画面で行数を変更し保存できると良いような気がしています。1画面分のスクロールが良いと思うケースもありそうな気もするので...

RollUp/RollDownする行数はどのあたりが適当なのかちょっと悩んだところなので任意に変更出来た方が確実によいですね(^^)
ってことで、セットアップで1ページ(6行)単位で任意変更できるようにしてみました。



アドイン版 C.Basic ver.0.99i テスト版 その9.9i(PageUp/Down任意設定に変更版)
http://pm.matrix.jp/CB/CBASIC099i.zip

・エディタのRollUp/Down機能をPageUp/Down機能に名称変更しました。
・セットアップにて一度の改ページ数を1ページ(6ライン)単位で自由に設定可能になりました。
 [SHIFT]+{UP]   指定ページ数PageUpします。
 [SHIFT]+[DOWN]  指定ページ数PageDownします。

Re: アドイン版 C.Basic ver.0.99h テスト版 その9.9h(バグ修正+α版)

sentaro様

ちょっとバタバタしていました。


> ちょこちょこと潜在バグが露見してきましたので修正です(^^;

こういうのが、大変ですが重要ですよね。

ありがとうございます。

より安定したバージョンということで、以下では、Ver 0.99h に変更しました。
http://egadget.blog.fc2.com/blog-entry-495.html

e-Gadgetでは、ここのコメント欄と、上記のページからのみ C.Basicをダウンロードできるようにしています。
上記を更新するだけで済むようにしている訳でです。

なお、まだ 0.99h を試していないので、本来のポリシーには逆らうのですが、利便性を考えて問題ないだろうということで更新しました...


> あと、エディタで現在位置が分かりやすいように右端にマーカー表示するようにして、RoolUpとRoolDown機能を追加してみました。

これ、試してみるのが楽しみです(^_^)/

RollUp/RollDown の行数ですが、Cのソースでグローバル変数にすることで、Setup画面で行数を変更し保存できると良いような気がしています。1画面分のスクロールが良いと思うケースもありそうな気もするので...

実際に使ってみて、改めてレポートいたします。



アドイン版 C.Basic ver.0.99h テスト版 その9.9h(バグ修正+α版)

管理人様、ガノー様、こんにちは!

ちょこちょこと潜在バグが露見してきましたので修正です(^^;

あと、エディタで現在位置が分かりやすいように右端にマーカー表示するようにして、RoolUpとRoolDown機能を追加してみました。


アドイン版 C.Basic ver.0.99h テスト版 その9.9h(バグ修正+α版)
http://pm.matrix.jp/CB/CBASIC099h.zip

・ファイルリスト読み込み時にポップアップ&右上ビジーマーカー表示を追加しました。

・エディタでファイルの現在位置を示すガイドマーカーを右端に追加しました。
・エディタの検索の最後でフリーズすることがあるバグを修正しました。
・エディタでRollUp,RollDown機能追加しました。
 [SHIFT]+{UP]  50行程RollUpします。
 [SHIFT]+[DOWN] 50行程RollDownします。

・カッコ同士の乗算と関数の組み合わせがエラーになっていたバグを修正しました。
(例) (1+2)(3+4)^3

・グラフ表示で画面外に出てしまうグラフが描画されないバグを修正しました。

No title

管理人様、こんにちは!

>拡張配列変数の導入は、インパクトが大きいと思います(^_^)/
>過去に作った fx-5800P のプログラムの移植がかなり楽になります。

fx-9860GIIの場合、Mat行列かリストを配列として代用しなければならないのでプログラムリストが冗長になるのが大きな欠点でしたけど、C.Basicで普通に配列のように使えるようになったので、配列に関してもやっとfx-5800Pとの差異を無くすことが出来ました(^^)


>プログラム電卓の投票は、今のところ fx-5800P が第一位になっていて、fx-9860GII 2 が1票差で迫っています。
C.Basic が fx-5800Pからの移植性が上がれば、fx-9860GII (価格の問題はありますが...)に興味を持つ人が増えるのではないかと思えます。

今見ると3票差でまた引き離してますね(^^;
fx-5800Pのプロ電としての完成度の高さが伺えます(^^)
C.Basicがfx-5800Pのいいとこ取りをしてきたことは大正解だったと思うところですけど、ここまで来ると3ピンケーブルで直接転送できればさらに便利にというところですが、fx-5800P側がブラックボックスなのが難点でしょうか。


>開発を始める前には、プログラムサイズがメモリに収まらないと難しいということを言われていましたが、見事に解決されていますよね。カナの扱いなども含めて、当初は難しいと考えられたことが、今は次々に実現されてきています。

アドインとしてのファイルサイズは初期予想ではインタプリタ段階で100KBくらいかなと想像していたのですが、現在インタプリタで200KBを超えてしまいました(^^;
ま、それだけ多機能化してきたことの証なのですが、最初の頃には難しく思われた部分での拡張が実現できたのも管理人様やガノー様の貴重なアドバイスのおかげです(^^)


>コンパイラ版の期待も大きいところですね。

まだちょっと怪しげなバグが出ることがあるので(^^;それらのバグ潰しとともにコンパイラ実装に向けての実験を進めていってみたいと思います。

Re: 0.99g 差し替えです(^^;

sentaro様

拡張配列変数の導入は、インパクトが大きいと思います(^_^)/
過去に作った fx-5800P のプログラムの移植がかなり楽になります。

プログラム電卓の投票は、今のところ fx-5800P が第一位になっていて、fx-9860GII 2 が1票差で迫っています。
C.Basic が fx-5800Pからの移植性が上がれば、fx-9860GII (価格の問題はありますが...)に興味を持つ人が増えるのではないかと思えます。


> >・プログラム読み込み時にメモリが足りないエラー&サブルーチンが見つからない場合のエラー処理が上手くいってなかったのを修正しました。
>
> ここにバグが残っていたために修正です(^^;

開発を始める前には、プログラムサイズがメモリに収まらないと難しいということを言われていましたが、見事に解決されていますよね。カナの扱いなども含めて、当初は難しいと考えられたことが、今は次々に実現されてきています。

コンパイラ版の期待も大きいところですね。

0.99g 差し替えです(^^;

>・プログラム読み込み時にメモリが足りないエラー&サブルーチンが見つからない場合のエラー処理が上手くいってなかったのを修正しました。

ここにバグが残っていたために修正です(^^;

アドイン版 C.Basic ver.0.99g テスト版 その9.9g(バグ修正&fx-5800P配列仕様取り込み版)

管理人様、こんにちは!

>fx-5800P で配列変数の領域確保のための記法 50->DimZ がありますが、これを許す機能の追加は如何でしょうか?

了解です(^^)

>C.Basic ではZ 以外の強烈変数も使えることあkら、50->DimA 或いは 10->Dim A といった記法も許すというアイディアです。
>この場合、Dim と A の間にスペースを要求しなければ fx-5800P 完全互換になりますが、ここは動作速度の犠牲の少ない方を採用よいうことでどうでしょうか?

C.Basic上では内部コードの都合上スペースのくっついたDim Aをそのまま使うことにして、テキスト変換ではスペースのないDimA仕様でもいけるようにしました。

管理人様のfx-5800Pサンプルプログラム
<フィボナッチ数列の1項から50項までの総和を計算する事例>
でテキスト変換と実行が出来ることを確認済みです(^^)


アドイン版 C.Basic ver.0.99g テスト版 その9.9g(バグ修正&fx-5800P配列仕様取り込み版)
http://pm.matrix.jp/CB/CBASIC099g.zip

・fx-5800P同様の配列初期化コマンドが使えるようになりました。
(例)100→Dim Z
 {100,1}→Dim Mat Z
 と同じになります。
(例)0→Dim Z
 ClrMat Zと同じです。

 テキストからの変換ではfx-5800P同様に
 100→DimZ
 と記述してもOkです。

・プログラム読み込み時にメモリが足りないエラー&サブルーチンが見つからない場合のエラー処理が上手くいってなかったのを修正しました。

Re: Re:Re: アドイン版 C.Basic ver.0.99f テスト版 その9.9f(変数一覧表示ローカル変数区別版)

sentaro様


> >fx-5800Pの配列変数は、Z[] と書けたのに、fx-9860GII に移植すると、Mat Z[] といちいち記述しなければならないのは、移植のストレスの1つでした。でも要望するのを忘れていたので、とてもありがたいです。
> >C.Basicのコンセプトの1つである、fx-5800Pの良いところを採用するという点で、大正解だと思います。
>
> グラフ電卓のCasioBasicでは配列が存在しないというのがfx-5800Pとの大きな違いだったので、fx-5800Pの良いとこ取りのC.Basicとしてはこれでやっと配列表記の互換性が確保できます(^^)
> まだfx-5800PのCasioBasicの全機能の完全上位互換とはいえないので、実装しておいた方がよい機能がありましたらよろしくお願いします。

fx-5800P で配列変数の領域確保のための記法 50->DimZ がありますが、これを許す機能の追加は如何でしょうか?
C.Basic ではZ 以外の強烈変数も使えることあkら、50->DimA 或いは 10->Dim A といった記法も許すというアイディアです。

この場合、Dim と A の間にスペースを要求しなければ fx-5800P 完全互換になりますが、ここは動作速度の犠牲の少ない方を採用よいうことでどうでしょうか?

ご参考までに、fx-5800P の配列変数のコマンドリファレンスは以下です;
http://egadget.blog.fc2.com/blog-entry-104.html


Re:Re: アドイン版 C.Basic ver.0.99f テスト版 その9.9f(変数一覧表示ローカル変数区別版)

管理人様、こんにちは!

>これは、仕方ない部分はあって、C.Basicで全部対応するのは大変だと思います。

本体だけで操作する場合に不具合が出ると困るところですけど、テキスト変換も本体内蔵している以上は、本体での不具合発生は出来るだけ根絶していかないとですね(^^;


>fx-5800Pの配列変数は、Z[] と書けたのに、fx-9860GII に移植すると、Mat Z[] といちいち記述しなければならないのは、移植のストレスの1つでした。でも要望するのを忘れていたので、とてもありがたいです。
>C.Basicのコンセプトの1つである、fx-5800Pの良いところを採用するという点で、大正解だと思います。

グラフ電卓のCasioBasicでは配列が存在しないというのがfx-5800Pとの大きな違いだったので、fx-5800Pの良いとこ取りのC.Basicとしてはこれでやっと配列表記の互換性が確保できます(^^)
まだfx-5800PのCasioBasicの全機能の完全上位互換とはいえないので、実装しておいた方がよい機能がありましたらよろしくお願いします。

Re: アドイン版 C.Basic ver.0.99f テスト版 その9.9f(変数一覧表示ローカル変数区別版)

sentaro様

> 普通の言語で必要の無いところにスペースをいちいち入れないといけないというのは結構面倒ですよね(^^;

そうなんです。

> エディタは想定外のコードがあった場合は怪しい動作になることがあるので、まだまだ微調整というかバグ出しが必要です(^^;

これは、仕方ない部分はあって、C.Basicで全部対応するのは大変だと思います。


> とりあえず、ローカル変数の場合には=を反転表示することで見分けられるようにしてみました。

ありがとうございます。


> ・数式でのMat行列の表記において、Matを省略することが出来るようになりました。
> (例)A[X]+B[Y]→X[Z]
>  Mat A[X,1]+Mat B[Y,1]→X[Z,1]と同じになります。

fx-5800Pの配列変数は、Z[] と書けたのに、fx-9860GII に移植すると、Mat Z[] といちいち記述しなければならないのは、移植のストレスの1つでした。でも要望するのを忘れていたので、とてもありがたいです。

C.Basicのコンセプトの1つである、fx-5800Pの良いところを採用するという点で、大正解だと思います。

アドイン版 C.Basic ver.0.99f テスト版 その9.9f(変数一覧表示ローカル変数区別版)

管理人様、こんにちは!

>テキスト変換で、スペース対応をして頂いたおかげで、手間が劇的に減って、大変便利になりました。

普通の言語で必要の無いところにスペースをいちいち入れないといけないというのは結構面倒ですよね(^^;


>ところで、テキスト読み込みの際に空白処理をする前のバージョンで、正しくコマンドにならず単なる文字列になっていたコードで、デバッグをしながら文字列を正しいコマンドに置き換える作業を、C.Basic上で行っていた時、チョクチョクフリーズしたり、リセットかリスタートを要求されることがありました。
>空白処理に対応したバージョンでは、フリーズが無くなっています。これはまぁ、当然のことですが、一応報告まで...
なお、「▶」などの特殊記号がソースに残っている時にどうなるかは、まだあまり試していません。

エディタは想定外のコードがあった場合は怪しい動作になることがあるので、まだまだ微調整というかバグ出しが必要です(^^;


>変数一覧表示において、ローカル指定したものが、ローカルであることが分かれば便利だと思うのですが、如何でしょうか?

以前から実装しようと思って後回しになってました(^^;
とりあえず、ローカル変数の場合には=を反転表示することで見分けられるようにしてみました。



アドイン版 C.Basic ver.0.99f テスト版 その9.9f(変数一覧表示ローカル変数区別版)
http://pm.matrix.jp/CB/CBASIC099f.zip

・変数一覧表示にて通常グローバル変数とローカル変数を区別することが出来るようになりました。
 ローカル変数は=が反転キャラクター表示されます。

・数式でのMat行列の表記において、Matを省略することが出来るようになりました。
(例)A[X]+B[Y]→X[Z]
 Mat A[X,1]+Mat B[Y,1]→X[Z,1]と同じになります。

 

Re: Ver.0.99e差し替えです(^^;

sentaro様

テキスト変換で、スペース対応をして頂いたおかげで、手間が劇的に減って、大変便利になりました。

お気に入りの修正も確認しました。

ありがとうございます。


ところで、テキスト読み込みの際に空白処理をする前のバージョンで、正しくコマンドにならず単なる文字列になっていたコードで、デバッグをしながら文字列を正しいコマンドに置き換える作業を、C.Basic上で行っていた時、チョクチョクフリーズしたり、リセットかリスタートを要求されることがありました。

空白処理に対応したバージョンでは、フリーズが無くなっています。これはまぁ、当然のことですが、一応報告まで...
なお、「▶」などの特殊記号がソースに残っている時にどうなるかは、まだあまり試していません。
何か出てきたら、報告致します。

1つ質問があります。
変数一覧表示において、ローカル指定したものが、ローカルであることが分かれば便利だと思うのですが、如何でしょうか?

Ver.0.99e差し替えです(^^;

管理人様、ガノー様、こんにちは!

>sentaro様の頭の中では fx-CG10への展開を常に意識されていると思うのですが、テキストに書き出す際には対応機種名がコメントアウトするように出来れば間違い無く、FtuneとPtuneのように C:Basicそのものをそれぞれ専用に準備するのが良いように思います。

CG10/20への移植に関しては、CG10/20の開発環境がいまいち整っていないこともあってほとんど進んでいません(^^;
Ftune2の時はfx-CG10からの移植だったので割と楽だったですけど、今回はそう簡単にはいかなそうです(^^;
CG10/20に移植する場合は、おっしゃるようにアドインも専用版になりますし、テキスト変換もそれに合わせた拡張は必須ですね。


>但し、C:Basicで機種の判別が出来るかどうかで、自動化するのか、ユーザーが正しいバージョンを選択することに依存するかの違いは出てくると思いますけど、機種の判別が例えば CPU情報から得られるかどうか、その当たりはどう