C.Basic for CG ベータ版がリリース Part 1 (Ver 1.00α以降)

アドイン版 Casio Basic - C.Basic for CG ベータ版 - Part 1
<トップページ>

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

更新:2020/05/23


[2020/05/23] C.Basic for CG Ver 1.45 beta build 20 が差替えアップデート
- さらに使いやすく色々と変更していってみる版
※ お試し版なので正式版より実行速度が遅くなる部分があります。

目次へ


C.Basic for CG Ver 1.45 beta の更新履歴

(build 20)
  • System(コマンドの引数(-1)での機種判定にGraph90+Eを追加しました。
    (書式)System(-1)
     返り値:10 CG10
     返り値:20 CG20
     返り値:50 CG50
     返り値:90 Graph90+E
  • If [False] ~ ElseIf 間の飛越キャッシュの不具合を修正しました。
  • Syetem()コマンドでOSのマイナーバージョンが取得できるようになりました。
    (書式)System(-22)
  • やす(Krtyski)様作成のSystem()コマンドサンプルプログラム(Graph90+E対応版)をアップデートしました。(System_sampleフォルダ)
(build 19)
  • スタックエラーになる前にシステムエラーになっていた不具合を修正しました。
  • Try~TryEndコマンドからBreakで脱出した場合、それ以後、[AC]中断もAcBreakも効かなくなる不具合を修正しました。
  • ReadGraph/WriteGraph/DotGet/DotPutコマンドを現在のVRAMに作用するように仕様変更しました。
  • 描画対象VRAMを退避されているテキストVRAM領域とグラフィックスVRAM領域に変更するScreen.Vコマンドを追加しました。
    (書式)Screen.V
     デフォルトのVRAMに戻します。
    (書式)Screen.VT
     テキストVRAMの退避領域を描画対象にします。
    (書式)Screen.VG
     グラフィックスVRAMの退避領域を描画対象にします。
(build 18)
  • 行列表示を修正しました。
  • セット・アップで隠しメモリのOn/Offは確認ポップアップを出すようにしました。
(build 17)
  • RGB565形式の16ビットBMPのセーブ/ロードに対応しました。デフォルト形式は16ビットBMPになります。
  • CPLXの行列表示が異常に遅かったのを修正し、3列から4列表示に変更しました。
  • 隠しメモリの初期化を修正しました。
(build 16)
  • 自動インデント機能でのSwitch~Case~SwitchEndの自動整形を改善しました。
  • ElseIfコマンドの直後にコメントがある場合、次のコマンドがIfの場合に終了していた不具合を修正しました。
  • 行列の初期化後に文字列から文字列への代入で代入されない不具合を再修正しました。
    (コピーされない例)
        ClrMat
        "ABC"->Str 1
        Str 1->Str 3
  • Seqコマンドで刻み値が少数の場合に終値に到達しないことがある不具合を修正しました。
    (例)Seq(X, X, 0.1, 1, 0.05 )
  • CPLXモード以外で虚数を使うと無限ループになる不具合を修正しました。(build15でのエンバグです。)
  • 省略乗算の不具合を修正しました。(build15でのエンバグです。)
(build 15)
  • Colon様のサポートにより関数メモリの実装を開始しました。
  • デフォルトのインデックス開始値が0の場合にListの自動確保が出来なかった不具合を修正しました。
  • ファンクションメモリー(Fn)のStore/Recall/SEEのSEEをEditに変更しました。
(build 14)
  • ファンクションメモリー(Fn)のStore/Recall/SEEのSEEで[F5](Edit)を追加し編集可能になりました。
  • ファンクションメモリー(Fn)のStore/Recall/SEEの不具合を修正しました。
(build 13)
  • ファンクションメモリー(Fn)およびグラフメモリー(Y)をデフォルトで数式評価とし、
     文字列関数内および文字列に続く場合は文字列として評価するように変更しました。
     (数式評価)
      fn1->A
      fn1(123)->A
      Locate 1,1,fn1
      Text 1,1,fn1(123)
     (文字列評価)
      "123"+fn1->Str 1
      fn2->Str 2
      StrJoin(fn1,Str 1)
  • 文字列から文字列への代入で代入されない不具合を修正しました。
  • (fn3にコピーされない例)
      ClrMat
      "123"->fn1
      "ABC"->Str 1
      Str 1->fn3
  • ファンクションメモリー(Fn)のStore/Recall/SEEを追加しました。
     (※エディタではクリップボードの内容がストア対象です。1行入力では1行全体がストア対象になります。)
  • F_Start/F_End/F_pitchを独立変数に変更しました。
  • ?コマンドで文字列が表示される場合にアスキーコードにデコードしないように修正しました。
(build 12)
  • GraphYとfnの確保数と文字列の長さをStr変数と同等に変更しました。
  • GraphYの格納仕様を6バイトのプレフィックス付きに変更しました。
    (行列への直アクセス以外は以前と変更ありません。)
  • エディタでファイルモードの切替でファイルリストが更新されない不具合を修正しました。
  • セットアップで機能しない場合はアイコンをマスク化しました。
  • System()コマンドでメインメモリに保存されるC.Basicのシステムファイルを取得できるようになりました。
    (インデックス開始値は0で固定です。)
    (例)System(10000,1)
     @CBASIC/Cbasicの内容をListAnsに取得します。
    (例)System(10000,2)
     @CBASIC/Cbasic2の内容をListAnsに取得します。
(build 11)
  • CGモードでScreen#で座標変換した場合に2ドットずれる不具合を修正しました。
  • Screen#、Screen%を連続実行するとエラーになる不具合を修正しました。
  • ファイルモードの検索機能を改善しました。
     アルファベットキーを押すと検索窓が開き検索モードになります。
     検索窓では左右移動等、通常の入力が可能です。
     検索窓を解除するには[EXIT]を押してください。
     カーソル上下、[EXE] [F1](EXE) [F2](EDIT) [F3](NEW)キーは検索窓を閉じること無く実行できます。
(build 10)
  • ファイルモードでアルファベットキーによるダイレクト選択時に[SHIFT]、[ALPHA]、小文字や数字が指定が出来るようになりました。
     [F4](A<>a): 大文字小文字切り替えです。
     [F5](CHAR)
     [F5](→Folder): フォルダサーチに切り替わります。
     [DEL]: 一文字戻ります。
     [AC]: 全部消します。
     [EXIT]: 元に戻ります。
     [X^2]: ~
     [^]: '
     [(-)]: @
     [・]: スペース
     [x10x]: "
(build 09)
  • ファイルモードでアルファベットキーによるダイレクト選択時に2文字以上の指定が出来るようになりました。
     [DEL]:一文字戻ります。
     [AC]:全部消します。
  • ファンクションメモリー(Fn)およびグラフメモリー(Y)に引数が無い場合は文字列として評価するようにしました。
  • インデントの必要なコマンド(If,Else..)の直前で改行した場合にインデントが余分に付加される不具合を修正しました。
(build 08)
  • OS側のステータス表示フラグがONの場合はステータスエリアの書き換えをしないように変更しました。
(build 07)
  • エミュレータで隠しメモリが使えるようになりました。
(build 06)
  • 以下のコマンドでステータス表示が更新されるようにしました。
    '#CBASIC
    '#CBDBL
    '#CBINT
    '#CBCPLX
  • 一行入力時のステータスエリアの表示を改善しました。
  • エミュレータの判定方法をハードウェアID判定に変更しました。(0x8001FFD)
(build 05)
  • CHAR選択画面から戻る時にステータスエリアの表示が戻らない不具合を修正しました。
  • CG10/20でエディタのサーチ画面で[SHIFT]+[4](CATALOG)が使えなかった不具合を修正しました。(1.44build14でのエンバグです。)
(build 04)
  • GetHSV()/GetHSL()コマンドで変換できない色をエラーにするようにしました。
    (書式) GetHSV(16ビットカラー値[,N])
    (書式) GetHSL(16ビットカラー値[,N])
     Nオプションでエラーを無視します。
  • HSV() / HSL() での色飽和での反転を修正しました。
(build 03)
  • RGB→HSV/HSLのカラーコード変換の誤差を修正しました。
  • ラベルの検索時にコメントでの'#に続くオプションの設定が変更されてしまう不具合を修正しました。
(build 02)
  • VarPtr()コマンドで行列/List/Vctを指定した場合、その添字が常に実数評価されていた不具合を修正しました。
  • RGB()、HSV()、HSL()コマンドの引数がListの場合、インデックス開始値が0の場合の不具合を修正しました。
(build 01)
  • SortA()/SortD()コマンドに文字配列のソートを追加しました。
    (例)SortA($Mat A)
     Mat Aの文字列が昇順にソートされます。
  • ReadMe、マニュアル更新しました。
  • 行列表示の←→表示を修正しました。
  • g3mモードにおいてストレージメモリへのでのStoPictを無効にしました。


ついにアルファ版からベータ版になりました!

C.Basic for CG 開発が始動 - Part 3 (Ver 0.86アルファ版まで)
 
 の続きです



はじめに - Part 1 - C.Basic for CG ベータ版 (Ver 1.00β以降)

完成度の高い fx-CG50 が登場し、この機種で走る アドイン版 Casio Basic - C.Basic for CG がアルファ版がリリースされ国内外のユーザーの皆様のご協力でアップデートが繰り返され、ようやく安定してきたのでベータ版になりました。

作者の sentaro様を皆で応援し、作者とユーザーの情報交換を継続するために、ベータ版の Part 1 を作りました。



目 次

現行ベータ版について

最新版のダウンロードとインストール


操作法・コマンドの説明・更新履歴など

C.Basic for CG プログラミングのための役立ちツール
 

C.Basic for CG を活かしたプログラム 

 お勧めの充電池と充電器   

チューンアップツール - Ptune3



現行ベータ版について
C.Basic for CG は、ベータ版 (お試し版) です。現行バージョンは安定してきましたが、まだ未完成と考えて下さい。バグの可能性があります。作者 (sentaro様) に連絡して応援する...というのが当ブログのスタンスです。

<目次に戻る>


最新版のダウンロードとインストール

   C.Basic for CG Ver 1.45β build 20 (公式最終版)
  
C.Basic for CG Ver 1.44β build 16 (1つ前の公式最新版)
  • 解凍して得られる CBCGxxx.g3a ファイルを fx-CG20 / CG50 のストレージメモリに転送してアップデート完了!
  • 詳しいインストール方法はこちら 
  • 取扱説明書:同梱テキストファイルを参照。但し以下でも同じものが確認できます。マニュアルのデバッグも進行中です
  • 過去のバージョンこちら
   C.Basicのインストール
<目次に戻る>


操作法・コマンドの説明・更新履歴など [最新バージョンに対応しています]
以上のドキュメントは、ダウンロードしたZIPファイルに含まれています。
<目次に戻る>



C.Basic for CG プログラミングのための役立ちツール

  複数のフォントを使い分けるためのツール - Font File Manager
fx-CG20 / CG50 用 C.Basic for CG には、複数のフォントが同梱されており、これらを切り替えて使うことができる。これらのフォントを切り替えるツール - FFM (Font File Manager) が Colon様から提供されている。フォントの詳細情報を見ることもできる。標準的なシステムツールのような外観になっているが、C.Basicで書いたプログラムだ。詳しくは同梱のReadmeファイルを参照のこと。Ver 1.24 は C.Basic for CG Ver 1.44β build 2 以降で正常動作する。
C.Basic for CG Ver 1.44β build 5 以降に同梱されるようになった。

FFM_1  FFM_2 
  ⇒ ダウンロード (Ver 1.24)


  RGB指定による色確認プログラム - RGB
fx-CG20 / CG50 搭載のカラー液晶は見る角度が少し変わるだけで色合いが大きく変化する。そこで実際に RGB値を入力したときの実際の色合いを確認するためのツールを作成した。C.Basic for CG の様々独自コマンドや拡張コマンドを使っていて、バッテリーアイコン表示、アドインプログラムのように見える全画面表示(上部のステータスバーがない)、OS内蔵のファンクションメニュー利用、ポップアップウィンドウの表示、入力ボックス機能、長大な文字列を扱う文字列処理 (ヘルプ機能)、実用的な速度スクロールバーを動かせる高速グラフィックコマンド (ヘルプ機能)、QRコードのビットマップ表示、などを実現できる C.Basic for CG の機能デモンストレーションにもなっている。
   RGB4b_Graphics_Mode 
  ⇒ 説明とダウンロード


  カラー設定変換プログラム - ColConv Ver 1.1
C.Basic では、複数のカラー設定コマンドがあり、1つの同じ色を設定するためのパラメータも異なる。これらのパラメータを一覧で確認するプログラム - ColConv11 (Colon様作成)は、プログラミンツールとして有用で、さらにカラー設定コマンドの使い方を示す良いサンプルプログラムにもなっている。
ColConv_1 ColConv_2 
  ⇒ ダウンロード 


  OS内蔵ファンクションキー探索プログラム - SysFunc3
fx-CGシリーズやfx-9860Gシリーズには、ファンクションメニューの画像データがOSに内蔵されている。この内蔵データをプログラムで利用するにC.Basicには独自コマンド FKeyMenu( があり、各画像に対応した番号を渡すとその画像が表示できる。そこでOS内蔵のこの番号を調べるツールを作成した。アドインプログラムのような全画面表示(fx-CGシリーズのみ、fx-9860Gシリーズは元々全画面表示)、ファンクションメニュー表示、入力ボックス機能、ミニフォント表示など、C.Basic の独自コマンドや拡張コマンドの機能を使う簡単なサンプルプログラムにもなっている。なお、C.Basic for FX 版も作成した。
   SysFunc3_2_1_f  SysFunc3FX_1 
   ※ fx-CGシリーズで全画面表示をすると、より広いエリアを使えることが分かる。
  ⇒ 説明とダウンロード


  随時、追加・追記します。

<目次に戻る>


C.Basic for CG を活かしたプログラム

 ▶昔懐かしいインベーダーゲーム - Alien 
C.Basic for CG の独自コマンドや拡張コマンドを使えば、高速グラフィックス、独自フォントの利用、アドインプログラムのような全画面表示が可能になり、昔のアーケードゲームと同等レベルのゲームが実現できる。
   AlianCG3.png  
  ⇒ ダウンロード


  疑似3Dゲーム - Triangle Filed Ver 0.91 [2020/03/26 アップデート]
Planet Casio でのプログラムコンテスト CPC #26 において、アドイン作成用の C / C++ に加えて C.Basic も使用言語として認められた。そこで sentaro様が応募作品として発表したのが Triangle Field。fx-CGシリーズ用が本命だが、参考までに fx-9860Gシリーズ用にも作成された(液晶の応答性が低いのでゲームとしては難易度が高い)。
TriangleField-FirstScreen 
ダウンロード
なお、類似のアドインゲーム CubeFiled があるが、アドインレベルのプログラムが C.Basic で提供できることを示している。


 ▶ 日本語版 "あの人の歳はいくつ?" - 西暦・和暦換算 YearConve
C.Basic for CG では、fx-CGシリーズに内蔵されている GBフォントを呼び出して漢字、ひらがな、カタカナを表示できる。令和の御代替わりを言祝ぎ、漢字やかなを表示した実用プログラムを作成した。
   YC_cb4f 
  ⇒ 説明とダウンロード


  随時、追加・追記します。

<目次に戻る>



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


 



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

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


関連記事

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

コメントの投稿

非公開コメント

C.Basic filesystem bug investigation

Hi Krtyski

https://www.planet-casio.com/Fr/forums/topic16521-1-fx-9750giii-storage-memory-crash.html

I've documented what exactly happened to my fx-9750GIII's storage memory back in August 2020. It appears that C.Basic's file handling is problematic, probably because its file manager derives from WSC & FVM add-in which optimizes for CASIOWIN filesystem used in the previous generations of fx-9860G series, whereas the current GIII generation uses Fugue, the same filesystem with fx-CG series.

If you perform the steps I described in the above thread on your fx-9860GII, it won't pop up any error, but it's not the case for GIII as it shows "Can't delete file" error with error code -6 (not sure if it means illegal parameter or illegal filesystem, according to here: https://bible.planet-casio.com/yatis/software/fs/fugue.html#error-code). I think this is the crux of the storage bug.

Cheers
CalcLoverHK

Re: Re: Recent status

Hi Krtyski

I am sorry to hear about the passing of your relative. My apology for sounding a bit pushy a while ago. Take your time and hope you will feel better.

Cheers
CalcLoverHK

Re: Recent status

Hi, CalcLoverHK

My mother in law passed away, then I've been extremely busy and could not access here.
Funeral was over yesterday.

I will find time to comment later.

Re^3: Recent status

PS 3: I added French and Chinese pages of C.Basic Wiki and planned to open Japanese one too, but I need your help. Inform me on Gmail (that "Greeting"email in your Krtyski.egadget@gmail.com mail box is from me) when you are ready to edit the wiki.

Re^2: Recent status

PS 2: There is no problem on serial communication. Turns out I didn't fully insert the SB-62 cable into my fx-CG20CN as I didn't hear the click sound. I was unaware of this because my 2.5mm to 3.5mm converter didn't give out sound as well no matter how hard I pressed it, so I thought the port was quite loose.

Re: Recent status

PS: I tried to send some files from my fx-9750GIII to fx-CG20CN using SB-62, but failed to do so as I always get Transmit ERROR. It still gives me the same error even though I tried my best to tune it using Ftune3/Ptune2. It seems like both have different PFC parameters and timings despite having the same cpu and in the same frequency.

Recent status

Hi all

Well, another 15 months have passed since my last message (^^; but anyway I'm back! :D

First of all, I got a second-hand fx-CG20CN today for only HK$200. This is the first ever color calc I have and the fact that this CG20 is only available in China makes it special. Moreover, right now it still has the oldest OS version (2.00.4200) which has the original black main menu UI instead of the current white one.

However, it seems like this is where the problem begins. Immediately the first thing I did was to install the newest version of C.Basic CG, but when I tried to create a new program, the whole screen glitches, and it never came back to normal until I turn off and on the calc. I tried multiple times and got the same results. Interestingly, when I install C.Basio CG 0.47 instead, it works perfectly as normal. I'm not sure if the oldest CG OS in my calc causes such problem.

Anyway, regarding the C.Basic Wiki, it has a good progress, although I'll be inactive for the next 2 months as I have to prepare for HKDSE. The work will be resumed starting from mid-May. In fact, I bought CG20 for fact-checking C.Basic functions and documenting their properties thoroughly in the wiki. I found some interesting quirks from these commands, so you can check them out at https://cbasic.fandom.com/wiki/C.Basic_Wiki ^^

Another 15 months have passed, which means Sentaro21 has been missing for over 30 months. Looking back to some of his comments here, I'm not even sure what "state of fluttering" (google translate gives me this) really means from him. I hope he's still ok anyhow.

Cheers
CalcLoverHK

Re: The flash problem in my calc has been resolved

Hi CalcLoverHK

It has been 15 months since we talk here. Wao! Time flies.

Anyway, congratulations and thank you for shearing valuable information. I read the thread in UFC. As a root cause, you seemed change settings with syscall, maybe.

Abot senrato, to be honest I have no information at all. I also hope he is well.


See ya

The flash problem in my calc has been resolved

Hi all

It's been a long while again since I post here 15 months ago (^^; During these months I seldom opened my calc for programming as the storage memory is unusable and most of the time I just played around the calc for its graphics.

This was changed until 3 days ago, I randomly looked up UCF, checked a post (https://community.casiocalc.org/topic/8033-how-do-you-reset-a-casio-fx-9750-giii/#entry63963) that I followed for a year and found someone successfully resolved the similar storage problem by using a very simple syscall.

syscall(0x205)

According to this website (https://bible.planet-casio.com/yatis/software/syscall/index.html), this syscall is named "Bfile_SMEM_Read_File" and it does as the name suggests. However, somehow after using it in C.Basic and restarted the calc, the storage memory worked! On top of that, now the file with an impossible name can now also be deleted (in PC as the file was invisible in file list in calc). Interestingly, when I tried to recreate the situation by putting the same problematic name into the calc, it ignores the file and still works as usual.

This is a great news for C.Basic users who met the same problem but, there seems to be no solution for those without C.Basic as they don't have access to the syscalls. The only possible way to do that is, according to Lephenixnoir, a Planet-Casio administrator, to make an OS Update program that runs this syscall.

I am quite worried about the situation of sentaro21 as he has been offline for 15 months with completely no updates from him. I hope he is fine all the time.

Cheers
CalcLoverHK

Re^8: My fx-9750GIII storage memory is unusable and it is a huge problem

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

Hi, CalcLoverHK.

> Thanks for your help, but rather than getting a blank screen, I got into OS Error page and thus stucking at step 2. Are you sure these steps are correct?

I think that page is Emergency OS updater.

Apparently "Flash area erase" doesn't work on some models.

https://www.omnimaga.org/casio-prizm/secret-debug-menu/30/

> And [1] [3] [AC/ON] just use Initialize All function that is the same with the SYSTEM one, so it won't be probably working.

Oh, no. :(

以下、さほど重要でないので日本語で。

FX 版に関する情報が無いか探していたところ、上記リンクにたどり着きました。

恐らく、CG20 における [OPTN] + [EXP] + [AC/ON] + RESTART の機能は SD カード時代の名残なので、一部機種ではもう消されているということなのでしょう。

CG20 では以下のようなコードを実行することで、ユーザー領域消去に関するメッセージがブートローダ内にあることを確認できました。

0->R
0x20000->Dim Dim List 1.B0(0x80000000)
For 0->A To 0x20000
 StrSrc($List 1[A], "USER Area")->R
 R=>Break
Next
If R
 "0x"+Hex(0x80000000+A+R-1)
Else
 "Not Found"
IfEnd

FX 機でもこのようなコードを動かせば機能自体が (別のキープレスで) 残っている可能性を検証できますが、
だからと言ってキープレスを探していくのは現実的でない気がします。

ファイルかファイルシステムの少なくとも一方に問題があるはずですが、
問題のある (と思われる) ファイルをアップロードしていただき、私たちでも調査するという方法もあると思います。

もしファイルに問題がなければファイルシステムの問題なので、FAT がおかしくなっている可能性も考えられます。

どこかにファイルではなくファイルシステム自体をフォーマットするコマンドがあったと記憶しているので、ちょっと探してみます。

Re^7: My fx-9750GIII storage memory is unusable and it is a huge problem

Hi Colon

Thanks for your help, but rather than getting a blank screen, I got into OS Error page and thus stucking at step 2. Are you sure these steps are correct?

1. Press [OPTN] [EXP] [AC/ON] and RESTART button
2. Release RESTART button //It leads to OS Error
3. Release all keys
4. Press and hold [MENU]
5. Without releasing [MENU], press [F1]

And [1] [3] [AC/ON] just use Initialize All function that is the same with the SYSTEM one, so it won't be probably working.

Cheers
CalcLoverHK

Re^6: My fx-9750GIII storage memory is unusable and it is a huge problem

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

補足になりますが、
前回 / 今回の投稿内容は私が持っている fx-CG 20 における操作方法なので、他機種でそのまま行えるかは分かりません。

飽くまで参考までにお考えください。m(_ _)m

それから、訂正です。
> 1. [F2] + [4] + [AC/ON] + RESTART を長押し

これは、正しくは [OPTN] + [EXP] + [AC/ON] + RESTART です。
大変失礼しました。

> フラッシュの消去を行うと、OSも消えるのですよね?
> その場合、事前に行うOSバックアップの方法をご存じでしょうか?

あ、すみません。(^^;
「フラッシュ領域」ではなく「ユーザーフラッシュ領域」です。言葉足らずで失礼しました。

この操作で消去されるのは (CG 20 の場合) 0xA0C00000 から 0xA2000000 までの領域なので、
OS の領域 (0xA0020000 から 0xA0B5FFFF) への影響はありません。

以前私もファイルシステムがおかしくなったときにこれで対処したので CG20 では大丈夫だと思います。

それから、画面の表示内容を見れば何となく分かりますが、
[F2] + [4] + [AC/ON] + RESTART の画面から退出する場合は RESTART を使うべきです。
[EXIT] をうっかり押すとファイルシステムが破損する場合があります。
※ 私はこれで 1 回やらかしました。

> fx-9860G と fx-9860G Slim については、OSのバックアップデータを書き戻す/書き換える方法は確保していますが、fx-9750GIII のOSバックアップデータをもっておらず、確実なOSバックアップ方法が分からないので、他の型への紹介を躊躇しています。
>> いずれの方法も、バックアップをとってから試してみてください。

> OSバックアップの方法はご存じでしょうか?

バックアップはいわゆるメインメモリとストレージメモリ、すなわち USB ケーブルで PC に転送できる範囲だけで良いと思います。

私としては、OS はバックアップをとらなくてもおかしくなったらブートローダを起動して入れ直せば良いという程度の認識なので、そこまで気にはしていません。

一応 CG 20 における OS の緊急アップデートの方法は、
1. [F2] + [4] + [AC/ON] + RESTART
2. RESTART ボタンを離す
3. 数秒後、残り 3 つのキーを離す
4. [9] を押す
5. [×] を押す

です。
OS 緊急アップデートの方法については、確か OS アップデートのマニュアルに記載されていると思うので、そちらを読むのが確実だと思います。

Re: Re^4: My fx-9750GIII storage memory is unusable and it is a huge problem

Colon様、CalcLoverHK様様、sentaro様、iron2様、CGユーザーの皆様

管理人のやすです。


Colon様
情報をありがとうございます。


> 駄目であれば以下の方法も試してみてください。
> ただ、この方法で CalcLoverHK様の問題を解決できるか確信は持てません。
>
> 1. [F2] + [4] + [AC/ON] + RESTART を長押し
> 2. RESTART ボタンを離す
> 3. 画面が白くなったら残り 3 つのキーを離す
> 4. [MENU] を長押し
> 5. [F1]
>
> これでフラッシュ領域の消去ができます。

フラッシュの消去を行うと、OSも消えるのですよね?
その場合、事前に行うOSバックアップの方法をご存じでしょうか?

fx-9860G と fx-9860G Slim については、OSのバックアップデータを書き戻す/書き換える方法は確保していますが、fx-9750GIII のOSバックアップデータをもっておらず、確実なOSバックアップ方法が分からないので、他の型への紹介を躊躇しています。

ちなみに、以下のC.Baiscコードで

Getkey0
SysCall(0x248,2,0xC,0)
Getkey1

を実行すると、fx-9860Gシリーズ同様に fx-9750GIII でも OS UPDATE と画面表示されますが、このSysCall が 9750GIII で問題がある可能性もあり、なんとも不安です。

Colon様のご見解は如何でしょうか?


> いずれの方法も、バックアップをとってから試してみてください。

OSバックアップの方法はご存じでしょうか?



> > If yes, luckily I have installed C.Basic and I can use Syscall and would like you guys to figure out how to delete the problematic file.
>
> ファイル名に漢字が含まれていると、SysCall 自体が正常に動かない可能性が高いので、問題のあるファイルのみを消去するのは難しいと思います。

Re^4: My fx-9750GIII storage memory is unusable and it is a huge problem

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

CalcLoverHK様のストレージの不具合について、いくつか私の見解を書きます。

※ 翻訳の体力がないので、日本語にて失礼します。

> But is there anyway to reset the whole calc other than above ways?

[1] + [3] + [AC/ON] はお試しになりましたか?
これでリセット出来るかもしれません。

駄目であれば以下の方法も試してみてください。
ただ、この方法で CalcLoverHK様の問題を解決できるか確信は持てません。

1. [F2] + [4] + [AC/ON] + RESTART を長押し
2. RESTART ボタンを離す
3. 画面が白くなったら残り 3 つのキーを離す
4. [MENU] を長押し
5. [F1]

これでフラッシュ領域の消去ができます。

いずれの方法も、バックアップをとってから試してみてください。

> If yes, luckily I have installed C.Basic and I can use Syscall and would like you guys to figure out how to delete the problematic file.

ファイル名に漢字が含まれていると、SysCall 自体が正常に動かない可能性が高いので、問題のあるファイルのみを消去するのは難しいと思います。

Re: Re^2: My fx-9750GIII storage memory is unusable and it is a huge problem

Hi CalcLoverHK

Unfortunately I have no idea how to fix the problem.
Sorry for that.

The ony way that might be helpful is to try changing the file name with PC, but I'm not sure it helps.
So I think you would ask at Planet Casio or TI-Planet then you may have good idea.]

Re^2: My fx-9750GIII storage memory is unusable and it is a huge problem

Hi Krtyski and Sentaro21

I was waiting from your comments nervously and glad that finally you replied!

However, there is currently no way to delete that problematic file. I tried all reset settings in SYSTEM application (including Initialize All option!) but failed. Even the clear option in Diagnostic Mode did not work. Tried using PC to delete this file and even format it but also failed x_x

But is there anyway to reset the whole calc other than above ways? Or better, do you know how Graph 35+EII/9750GIII/9860GIII/CG10/CG20 filesystem (Fugue) works? If yes, luckily I have installed C.Basic and I can use Syscall and would like you guys to figure out how to delete the problematic file. Many thanks m(_ _)m

Cheers
CalcLoverHK

Re: ご無沙汰しておりますm(_ _)m

sentaro様

体調を崩されているのかも知れないと、チョット心配しておりました。

コメント頂き、一安心です。


> 開発再開までもうしばらくお待ちくださいませ。m(_ _)m

はい、気長にお待ちしております。

最近Casio Python を使ってみていますが、やはり C.Basic の方が優れています。

15桁対応素因数分解を Casio Python で作ってみてから、C.Basic で作りましたが、C.Basicの良さを再認識しています。

私も、仕事でバタバタしており、CPythonも仕事で使い始めています。

ご無沙汰しておりますm(_ _)m

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

大変ご無沙汰状態になってしまってすみません!

バタバタが重なって、てんてこ舞いの状態がまだ続いていたりしています。(^^;
C.Basicの宿題が大量に溜まっているというのに、時間だけが過ぎていってかなり焦っております。

Colon様にもサンプル作成していただいてるというのに申し訳ない限りです。

CalcLoverHK様のストレージメモリの問題もかなり気になりますが、すでに治ったでしょうか?

落ち着くまでもう少しかかりそうなので、
開発再開までもうしばらくお待ちくださいませ。m(_ _)m

Re: My fx-9750GIII storage memory is unusable and it is a huge problem

Hi alcLoverHK

Sorry for late reply.
I was so busy on my business.

The issue you claimed looks like because of file name with something wrong and also I'm afraid virus may come into calc system (I'm not sure, but possibility).

When I face to the same issue, I reset the calc and try to get back to a state of factory default (that would be as same as of brand new when you bought).

My fx-9750GIII storage memory is unusable and it is a huge problem

Hi sentaro21 and Krtyski

Things are getting complicated. Let me express the problem.

It started from when I tried to edit a text program in a folder using C.Basic but failed many times because C.Basic kept showing me "Can't delete file" and "Code:-6" error. Then bad things happened, at first I can't optimize the storage memory and it shows me "Memory ERROR", and then I got into storage memory and tried to delete, change and add files here but failed, too. Moreover, I connected it to pc and neither changing anything in calc nor formatting did not work. I even tried to delete files using Windows Subsystem on Linux (Ubuntu) with the help of Planet-Casio administrators but also failed.

The weird thing is that I found a file that contains Chinese character as the filename. Photo: https://ibb.co/2gN7VKD, maybe this is the culprit of the problem, but when I checked this file, it is the -CASSE subprogram of Calcraft's which is not the same with the text program I edited.

For now only main mem is usable and copying files from storage mem to main mem works. Backing up the storage mem files to pc also works, but other than those any change cannot be made to storage mem.

I am waiting a solution for this huge problem x_x. Do you guys have any clue?

Cheers
CalcLoverHK

Progress on C.Basic Fandom and recent situation in HK

Hi all

It's been a while that I posted here. Long time no see ;)

In HK, there is now a third wave of large-scale infection. My class was in suspension after this round had been started. We have now 100+ new cases and ~100 initial cases *6 days in a row*. These numbers seem not to be big compared to other countries, but considering the population of HK they are serious enough.

Regarding C.Basic Fandom, I have requested one of my close friend to help me edit some of the pages, but still C.Basic Fandom is in udnderstaff situation. So now I would like Sentaro21 and Krtyski or other members here to help me edit content about changelogs of C.Basic.

For example, for title, I formatted it to:
FX/CG x.xx (build xx)
- Distinguish the version type (FX/CG)
- Version number (x.xx)
- Build number (for FX 2.44/CG 1.44 onward)
E.g. FX 2.45 build 20

For content, check the vocabulary the changelog uses.
- Added ... -> Additions
- Changed/Removed/Improved ... -> Changes
- Fixed ... -> Fixes
If found other vocabs that aren't listed above, tell me ASAP.

I recommended use this page as a reference: type FX 2.45 build 19 in C.Basic Fandom search engine. You can copy the source of page and change the infobox and content.

If you have any further question, please ask in C.Basic Fandom forum. I will response every message ASAP.

Cheers
CalcLoverHK

Re: Grid/Axes/Scale 描画サンプル

Colon様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!


少しだけ、お久しぶりです(^_^

コロナウィルスに関して、色々なことが分かってきて、個人的には十分対応できると思えるようになりましたが、政府や都道府県レベルでの認識と具体的な施策については、東京ばい菌キャンペーンのため、なかなか難しい感じです。

コロナだけでなく、経済面でも地政学面での激変も、仕事への影響が大きくて、殆ど休みなし状態になっています。

皆様は、如何でしょうか?


> 取りあえず Grid/Axes/Scale の描画ルーチン (目盛りの数字部分以外) が出来たのでアップロードします。
>
> 目盛りの数字はまだ調整が必要なので、
> 完成し次第再度アップロードします。
>
> https://pm.matrix.jp/upload/upload.cgi?get=00119

sentaro様は、きっとめっちゃお忙しいのだろうと思います。

しばらくお待ちするしか無さそうかと...


私自身は、Casio Python で遊んで、息抜きをしています。


> ※ ソースコードが GoTo キャンペーンにならないように気を付けました。(笑)
これ、凄いど真ん中、大いに笑わせて頂きました!


Grid/Axes/Scale 描画サンプル

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

少しお久しぶりです。
皆様、いかがお過ごしでしょうか?

私は電卓を触れたり触れなかったりしていますが、
取りあえず Grid/Axes/Scale の描画ルーチン (目盛りの数字部分以外) が出来たのでアップロードします。

目盛りの数字はまだ調整が必要なので、
完成し次第再度アップロードします。

https://pm.matrix.jp/upload/upload.cgi?get=00119

こうしてコードを書いてみると、視認性を確保するために細かい調整がなされているのだな、と実感できました。

細かい調整が多いので、意識してコメントを多めに書いてみましたが、
わからない点があれば質問をください。m(_ _)m

※ ソースコードが GoTo キャンペーンにならないように気を付けました。(笑)

Re^4: C.Basic Fandom Project & Bugs found on C.Basic and Ftune3 and suggestions

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

@CalcLoverHK
Thanks for screen shot!

>C.Basic bug screenshot:
>https://ibb.co/r2kvHX2

Please be patient for a moment as this reproducibility is not certain.


>Ftune3 bug screenshot:
>https://ibb.co/7YtgScT
>
>You have to turn on "Start MemCK" in setup, then exit and run other application, enter Ftune3 again and press F1 to start memory check. After that, y>ou may see there are some abnormal pixels appearing in bottom.

This has been reproduced.
I don't think there's a glitch in operation, so I'll fix it in the next version.(^^)


>And also I found the most accurate (Up to C8 tone) setting of Ftune3 for fx-9750GIII to get pure tone.
>
>Pure tone generator tool: https://www.szynalski.com/tone-generator/
>
>FLL: x885
>PLL: x16
>IFC: 1/8
>SFC: 1/8, RoR 3
>BFC: 1/8, RaR 3
>PFC: 1/16, RaW=R
>
>I am not sure if this setting is also applicable to fx-9860GIII/Graph 35+EII and older models.

I don't think the CG version is affected by the operating clock.
The FX version is dependent on the operating clock.
It is optimized for the speed of the previous 9860GII, so the pitch was off on the GIII.
I will try to fix it in the next version.(^^)

Re^3: C.Basic Fandom Project & Bugs found on C.Basic and Ftune3 and suggestions

Hi sentaro21

C.Basic bug screenshot:
https://ibb.co/r2kvHX2

This happens only in Main mem file (not @MainMem in SMEM folder).

Ftune3 bug screenshot:
https://ibb.co/7YtgScT

You have to turn on "Start MemCK" in setup, then exit and run other application, enter Ftune3 again and press F1 to start memory check. After that, you may see there are some abnormal pixels appearing in bottom.

And also I found the most accurate (Up to C8 tone) setting of Ftune3 for fx-9750GIII to get pure tone.

Pure tone generator tool: https://www.szynalski.com/tone-generator/

FLL: x885
PLL: x16
IFC: 1/8
SFC: 1/8, RoR 3
BFC: 1/8, RaR 3
PFC: 1/16, RaW=R

I am not sure if this setting is also applicable to fx-9860GIII/Graph 35+EII and older models.

Cheers
CalcLoverHK

Re^2: C.Basic Fandom Project & Bugs found on C.Basic and Ftune3 and suggestions

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

いろいろと遅れていてすみません。m(_ _)m
少しずつ時間が取れるようになってきましたが、まだちょっとかかりそうです。


@CalcLoverHK
>I created C.Basic Fandom page (https://cbasic.fandom.com/) to replace my previously postponed C.Basic User's Guide Project.

Thanks for your great attempt to help for C.Basic.(^^)


>I found bug in C.Basic:
>1. Favorite-Add any file in main mem
>2. Favorite-Off the file
>3. Suddenly >txt (F1) becomes >g1m

I'm sorry, I can't reproduce it.
Can you give me more details on the situation?


>Another bug (maybe?)
>When you overclock the calc that support Beep command (which is SH4A), it changes to the higher tone and shorter p>eriod. And it is different from the website that gives real tone even in normal speed.

In the FX version, the pitch depends on the clock speed.
Sorry, GIII support was not complete.
Please try reducing the clock speed to 29MHz.


>In Ftune3, if you have done the memory check and go back to the main page, some extra pixels appear under the function bar.

Can you take a screenshot?

Re: C.Basic Fandom Project & Bugs found on C.Basic and Ftune3 and suggestions

Hi CalcLoverHK

I took a look the new site, it looks nice by consolidating info how to use C.Basic.

Anyway sentaro is now very busy on his real world business then I'm afraid it will take time until we get his reply. Let's just wait for his back.

C.Basic Fandom Project & Bugs found on C.Basic and Ftune3 and suggestions

Hi all

I created C.Basic Fandom page (https://cbasic.fandom.com/) to replace my previously postponed C.Basic User's Guide Project.
(Ref: https://www.planet-casio.com/Fr/forums/topic16344-1-cbasic-fandom-project.html/) Sorry for not telling this thing ASAP because I am quite busy for my academic work (next week exam). So now I need Sentaro21, Krtyski and other enthusiasts to help me prepare the C.Basic Fandom (Changelogs translations prior to v1.00 etc). ^^

@Sentaro21:
I found bug in C.Basic:
1. Favorite-Add any file in main mem
2. Favorite-Off the file
3. Suddenly >txt (F1) becomes >g1m

Another bug (maybe?)
When you overclock the calc that support Beep command (which is SH4A), it changes to the higher tone and shorter period. And it is different from the website that gives real tone even in normal speed.

Suggestion on C.Basic: remove >SD option in real fx-9750GIII/9860GIII/Graph 35+EII but not in emulator? (Because they do not support SD storage, but I am not sure if the emulator can use SD as the computer storage)

In Ftune3, if you have done the memory check and go back to the main page, some extra pixels appear under the function bar.

Cheers
CalcLoverHK

Re^8: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その20正式版

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

管理人様、
>for CG Build 20 差替えアップデートに対応致しました。

毎度素早い対応していただきまして感謝です!(^^)



Colon様、
>akatuki 様が紹介なさっていた fx-CG50 の機能紹介動画シリーズの中に、1 変数統計に関するものがありました。(^^)

>何か参考になるかもしれないのでリンクを貼っておきます。
https://youtu.be/OHoIEFpUSrE

ほぼ使ったことの無かった機能ですが、
手取り足取りな感じで分かりやすいですね。
ありがとうございます!(^^)



>If 文の入れ子と比べるとちょっと分かりにくいですが、
>従来の ElseIf と比べればだいぶ速くなっています。

>読みやすさ的にもこれからは ElseIf ですね。(^^)

飛越ジャンプのキャッシュは
If~ElseIf~Else~IfEnd
以外にも、
Switch~Case~SwitchEnd
が実装されてますが、
じつはC.Basicにおける条件判断で一番速い処理は、
条件式=>Goto ラベル
となってます。

Simple is fastなのですが、
Gotoだらけのスパゲッテイプログラムになってしまうので、
速さと引き換えに見易さは思いっきり犠牲になってしまいますね。(^^;

ギリギリの高速化をするでもなければ、
通常はIf~ElseIf~Else~IfEndでいいと思います。(^^)


Re^7: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その20正式版

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

akatuki 様が紹介なさっていた fx-CG50 の機能紹介動画シリーズの中に、1 変数統計に関するものがありました。(^^)

何か参考になるかもしれないのでリンクを貼っておきます。
https://youtu.be/OHoIEFpUSrE


それから、SIR プログラムに漸化式機能を利用することで高速化やメモリ削減ができたので、後程そちらのエントリーに投稿します。


sentaro様、
> 効果の程度はジャンプするバイト数に応じてなので、SHIDAの場合はかなり効果が微妙ですよね。(^^;
> ま、でも、これでElseIfの方が確実に速くなったので、今後はElseIf推奨です。(^^)

If 文の入れ子と比べるとちょっと分かりにくいですが、
従来の ElseIf と比べればだいぶ速くなっています。

読みやすさ的にもこれからは ElseIf ですね。(^^)

Re^6: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その20正式版

sentaro様、iron2様、Colon様、CalcLoverHK様、C.Basicユーザーの皆様、

管理人のやすです。

for CG Build 20 差替えアップデートに対応致しました。

Re^5: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その20正式版

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

管理人様、
>Colon様のテスト結果がなければ見過ごしていたわけで、これで確実に速くなりましたね!

はい、動作上の致命的なバグじゃないのでずっと気がついてませんでした。(^^;
Colon様の詳細なテストのおかげですね。(^^)


>この方が良いと私も思いますので、よろしくお願い致します。

>これも、build 20 の差替えアップデートになりますでしょうか?

はい、アップデートプログラムは、
Switchのインデントがうまく出来るようになったことで、
インデント付きで差し替えアップデートしておきました。(^^)

Re^4: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その20正式版

sentaro様、iron2様、Colon様、CalcLoverHK様、C.Basicユーザーの皆様、

管理人のやすです。


> 効果の程度はジャンプするバイト数に応じてなので、SHIDAの場合はかなり効果が微妙ですよね。(^^;
> ま、でも、これでElseIfの方が確実に速くなったので、今後はElseIf推奨です。(^^)

Colon様のテスト結果がなければ見過ごしていたわけで、これで確実に速くなりましたね!



> >ところで、SYS.g1m で Graph90+E に対応していなかったこと、readme.txt でも Graph90+E 対応のソースになっていなかったので、これらを修正して、アップしました。
> >http://pm.matrix.jp/upload/upload.cgi?get=00115
>
> ありがとうございます!
> 早速に差し替えておきました。(^^)

ありがとうございます。当方も裏方で対応しておきます。


> このSYSに関してはg1mもg3mも中身は一緒ということで、同一ファイルで動作Okなんですよね。
>
> ちなみに現行のFX版ではg3m形式のプログラムでも互換部分はそのまま動作可能なのですが、
> とりあえず共通ファイルとしてはg1m形式にしておいて、冒頭で
> '#G3M
> を入れておくというのはどうでしょう?
> CG上でSYS.g1mを実行してもg3mモードで動作する両対応ファイルになります。(^^)

この方が良いと私も思いますので、よろしくお願い致します。

これも、build 20 の差替えアップデートになりますでしょうか?


Re^3: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その20正式版

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

Colon様、
>build 20 もすぐにはダウンロード出来なかったので、
>ちょっとサーバの調子が悪いかもですね。

build20に関してはアップした先を間違えてました。
1時間くらい遅れたと思います。(^^;


>SHIDAFS1/2 を ElseIf に置き換えて動かしてみました。

>平均 0.01 秒未満の微妙な変化でしたが、確実に速くなっていたので、修正できたという認識で OK だと思います。(^^)

効果の程度はジャンプするバイト数に応じてなので、SHIDAの場合はかなり効果が微妙ですよね。(^^;
ま、でも、これでElseIfの方が確実に速くなったので、今後はElseIf推奨です。(^^)


>このグラフ画面についてですが、現状の C.Basic だと V-Win などの設定によって目盛りや方眼を書く段階でフリーズするようです。

あ゛…(^^;

>純正のグラフ機能では、V-Win の設定に応じて描画に関する場合分けがあり、処理が重くなったり見た目が悪くなったりしないようになっています。

>詳細な仕様は調査中です。

>というわけで、グラフの後ろ側の描画に関するルーチンの修正から入りたいのですが、よろしいでしょうか?

はい、Okです!
よろしくお願いします。(^^)



管理人様、
>build 20 へのアップデート対応致しました。

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


>SYS.g3m の修正を確認できました。
>ところで、SYS.g1m で Graph90+E に対応していなかったこと、readme.txt でも Graph90+E 対応のソースになっていなかったので、これらを修正して、アップしました。
http://pm.matrix.jp/upload/upload.cgi?get=00115

ありがとうございます!
早速に差し替えておきました。(^^)

このSYSに関してはg1mもg3mも中身は一緒ということで、同一ファイルで動作Okなんですよね。

ちなみに現行のFX版ではg3m形式のプログラムでも互換部分はそのまま動作可能なのですが、
とりあえず共通ファイルとしてはg1m形式にしておいて、冒頭で
'#G3M
を入れておくというのはどうでしょう?
CG上でSYS.g1mを実行してもg3mモードで動作する両対応ファイルになります。(^^)

Re^2: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その20正式版

sentaro様、iron2様、Colon様、CalcLoverHK様、C.Basicユーザーの皆様、

管理人のやすです。

build 20 へのアップデート対応致しました。


> ケーブルが最初から同梱されていないのか入れ忘れたのかというのは一つだけだと分からないですよね。
> とりあえず無いのが正解ということで分かってよかったです。(^^)

そうなんです、自分だけ? と思ってしまいますから...


> >そうそう、ゴム足の件ですが、白色の合成ゴム版を入手して、ポンチで打ち抜いてゴム足にしようと考えていますが、なかな

> 見つかりやすいかと思ったら案外無いものなんですね。(^^;

はい、意外に楽には見つからないものです。


> あ、一応差し替えてたんですが、サーバーでのファイル更新が遅れたかもです。(^^;

SYS.g3m の修正を確認できました。
ところで、SYS.g1m で Graph90+E に対応していなかったこと、readme.txt でも Graph90+E 対応のソースになっていなかったので、これらを修正して、アップしました。
http://pm.matrix.jp/upload/upload.cgi?get=00115


Re: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その20正式版

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
最新バージョン、いただきました! (^^)

> あ、一応差し替えてたんですが、サーバーでのファイル更新が遅れたかもです。(^^;

build 20 もすぐにはダウンロード出来なかったので、
ちょっとサーバの調子が悪いかもですね。

> build19で正式版ということでしたが、
If~ElseIfの修正がまだ残っていたのでそれを修正して、ついでにGraph90+Eの判定を加えてbuild20としました。
> 管理人様のSYS.g1mとSYS.g3mのバージョンを3桁表示にして、Graph90+E判定を追加して差し替えておきました。(^^)

SHIDAFS1/2 を ElseIf に置き換えて動かしてみました。

平均 0.01 秒未満の微妙な変化でしたが、確実に速くなっていたので、修正できたという認識で OK だと思います。(^^)


> 次からは、Ver 1.46 でグラフ機能増補版スタート、楽しみです。

このグラフ画面についてですが、現状の C.Basic だと V-Win などの設定によって目盛りや方眼を書く段階でフリーズするようです。

純正のグラフ機能では、V-Win の設定に応じて描画に関する場合分けがあり、処理が重くなったり見た目が悪くなったりしないようになっています。

詳細な仕様は調査中です。

というわけで、グラフの後ろ側の描画に関するルーチンの修正から入りたいのですが、よろしいでしょうか?

C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その20正式版

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

管理人様、
>いよいよ、最終の正式版ですね!

>次からは、Ver 1.46 でグラフ機能増補版スタート、楽しみです。

>ということで、アップデート対応しました。

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


>ケーブルが同梱されないので正常だと確認できて良かったです。
>フランスから買った 9860GIII のゴム足が無かった後なので、またババを掴んだのか? とチョット心配でした。

ケーブルが最初から同梱されていないのか入れ忘れたのかというのは一つだけだと分からないですよね。
とりあえず無いのが正解ということで分かってよかったです。(^^)


>そうそう、ゴム足の件ですが、白色の合成ゴム版を入手して、ポンチで打ち抜いてゴム足にしようと考えていますが、なかなか良いゴム版が入手できずにいます。昨今の状況>では、素材屋さんに出かけるのも気が引けるし、いったとしての店舗が閉まっている可能性あるので、通販で探していると限界があります。

>厚みが1.5mmなので、通販では 1mm や 2mm はあっても、1.5mm が見つからずにいます。
>半透明のシリコーンゴム版も 1.5mm厚は、サイズの小さなものはまだ見つかっていません。

>まぁ、のんびり探してみます。

見つかりやすいかと思ったら案外無いものなんですね。(^^;


>ありがとうございます!
>for FX だけ差替えされていますが、for CG は差替えされないのでしょうか?

あ、一応差し替えてたんですが、サーバーでのファイル更新が遅れたかもです。(^^;


>SYS.g3m はある意味中途半端でして、おフランスのCG50対応版の機種判定はしないのに、FX機の機種判定は含んでいるんですね。
>いっそ、おフランス版の判定を追加して、for CGに同梱するというのは如何でしょうか?
>でも、CG機で g1mプログラムを走らせると、せっかくの高精細液晶なのに、フォントがガタガタになりますので、g3mプログラムもアップデートした方が良いかな...と

build19で正式版ということでしたが、
If~ElseIfの修正がまだ残っていたのでそれを修正して、ついでにGraph90+Eの判定を加えてbuild20としました。
管理人様のSYS.g1mとSYS.g3mのバージョンを3桁表示にして、Graph90+E判定を追加して差し替えておきました。(^^)


C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その20
https://pm.matrix.jp/CB/CBASICCG145beta20.zip
・System(コマンドの引数(-1)での機種判定にGraph90+Eを追加しました。
(書式)System(-1)
 返り値:10 CG10
 返り値:20 CG20
 返り値:50 CG50
 返り値:90 Graph90+E

C.Basic for FX v1.45β (さらに使いやすく色々と変更していってみる版)その20
https://pm.matrix.jp/CB/CBASIC245beta20.zip

<共通の修正>
・If<False>~ElseIf間の飛越キャッシュの不具合を修正しました。
・Syetem()コマンドでOSのマイナーバージョンが取得できるようになりました。
(書式)System(-22)
・やす(Krtyski)様作成のSystem()コマンドサンプルプログラム(Graph90+E対応版)をアップデートしました。(System_sampleフォルダ)

Re: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その19正式版

sentaro様、iron2様、Colon様、CalcLoverHK様、C.Basicユーザーの皆様、

管理人のやすです。

> ということで、CG版とFX版のも1.45/2.45最終正式版をアップしておきます。

いよいよ、最終の正式版ですね!

次からは、Ver 1.46 でグラフ機能増補版スタート、楽しみです。

ということで、アップデート対応しました。



> >ところで、fx-9750GIII が昨日届きました。
>
> お!速いですね。無事に到着してよかったです!
> 私の方は、昨日羽田通過なので今日か明日になりそうって思っていたら今日届きました!(^^;

成田空港からの距離の違いで、追い越してしまったようですね。



> >USBケーブルと3Pケーブル共に、同梱されていませんでした。
> >sentaro様のところも同じでしょうか?
>
> 北米版はついに付属品は電池だけ?でコストをぎりぎりまで下げるということなんですね。
> ま、私の場合は、FXシリーズとCGシリーズ合計で10台以上あるので、その方が都合が良いかもなのですが…(^^;

ケーブルが同梱されないので正常だと確認できて良かったです。
フランスから買った 9860GIII のゴム足が無かった後なので、またババを掴んだのか? とチョット心配でした。

そうそう、ゴム足の件ですが、白色の合成ゴム版を入手して、ポンチで打ち抜いてゴム足にしようと考えていますが、なかなか良いゴム版が入手できずにいます。昨今の状況では、素材屋さんに出かけるのも気が引けるし、いったとしての店舗が閉まっている可能性あるので、通販で探していると限界があります。

厚みが1.5mmなので、通販では 1mm や 2mm はあっても、1.5mm が見つからずにいます。
半透明のシリコーンゴム版も 1.5mm厚は、サイズの小さなものはまだ見つかっていません。

まぁ、のんびり探してみます。


> >ついでに、あまり意味がありませんが、SYS.g3m も併せてアップデートし、readme.txt も修正しました。
>
> 早速に差し替えておきました。

ありがとうございます!
for FX だけ差替えされていますが、for CG は差替えされないのでしょうか?

SYS.g3m はある意味中途半端でして、おフランスのCG50対応版の機種判定はしないのに、FX機の機種判定は含んでいるんですね。
いっそ、おフランス版の判定を追加して、for CGに同梱するというのは如何でしょうか?

でも、CG機で g1mプログラムを走らせると、せっかくの高精細液晶なのに、フォントがガタガタになりますので、g3mプログラムもアップデートした方が良いかな...と

C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その19正式版

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

管理人様、
>ループ内のTryが有る時 ACBreakが効かなくなるバグの修正、ありがとうございます。

>1日遅れですが、昨日の日付で差替えアップデートに対応しました。

ありがとうございます!
とりあえずテスト版だったなので遅れても全然大丈夫です。(^^)
ということで、CG版とFX版のも1.45/2.45最終正式版をアップしておきます。


C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その19
https://pm.matrix.jp/CB/CBASICCG145beta19.zip
・スタックエラーになる前にシステムエラーになっていた不具合を修正しました。

C.Basic for FX v1.45β (さらに使いやすく色々と変更していってみる版)その19
https://pm.matrix.jp/CB/CBASIC245beta19.zip
・System(-1)での機種判定にfx-9750GIIIを追加しました。
 0:fx-9860G
1:fx-9860G Slim
2:fx-9860GII(SH3)
3:fx-9860GII(SH4A)
4:Graph35+EII(SH4A)
5:fx-9860GIII(SH4A)
6:fx-9750GIII(SH4A)
・やす(Krtyski)様作成のSystem()コマンドサンプルプログラム(fx-9750GIII対応版)をアップデートしました。(System_sampleフォルダ)

(共通の変更)
・Try~TryEndコマンドからBreakで脱出した場合、それ以後、[AC]中断もAcBreakも効かなくなる不具合を修正しました。
・ReadGraph/WriteGraph/DotGet/DotPutコマンドを現在のVRAMに作用するように仕様変更しました。
・描画対象VRAMを退避されているテキストVRAM領域とグラフィックスVRAM領域に変更するScreen.Vコマンドを追加しました。
(書式)Screen.V
 デフォルトのVRAMに戻します。
(書式)Screen.VT
 テキストVRAMの退避領域を描画対象にします。
(書式)Screen.VG
 グラフィックスVRAMの退避領域を描画対象にします。




>ところで、fx-9750GIII が昨日届きました。

お!速いですね。無事に到着してよかったです!
私の方は、昨日羽田通過なので今日か明日になりそうって思っていたら今日届きました!(^^;


>USBケーブルと3Pケーブル共に、同梱されていませんでした。
>sentaro様のところも同じでしょうか?

北米版はついに付属品は電池だけ?でコストをぎりぎりまで下げるということなんですね。
ま、私の場合は、FXシリーズとCGシリーズ合計で10台以上あるので、その方が都合が良いかもなのですが…(^^;


>で、System( コマンドで、System(-1)の戻り値が 6 が fx-9750GIII に対応していることを確認したので、SYS.g1m をアップデートしました。

>ついでに、あまり意味がありませんが、SYS.g3m も併せてアップデートし、readme.txt も修正しました。

早速に差し替えておきました。
ありがとうございます!(^^)

SYSプログラムのアップデート

sentaro様、iron2様、Colon様、CalcLoverHK様、C.Basicユーザーの皆様

管理人のやすです。

fx-9750GIII が手元に来たので、ボチボチと触っています。

で、System( コマンドで、System(-1)の戻り値が 6 が fx-9750GIII に対応していることを確認したので、SYS.g1m をアップデートしました。

ついでに、あまり意味がありませんが、SYS.g3m も併せてアップデートし、readme.txt も修正しました。

http://pm.matrix.jp/upload/upload.cgi?get=00113



http://pm.matrix.jp/upload/upload.cgi?get=00113

Re:^4 プログラムを中断できない不具合の発生条件

sentaro様、iron2様、Colon様、CalcLoverHK様、C.Basicユーザーの皆様

管理人のやすです。

ループ内にTryが有る時 ACBreakが効かなくなるバグの修正、ありがとうございます。

1日遅れですが、昨日の日付で差替えアップデートに対応しました。


ところで、fx-9750GIII が昨日届きました。
USBケーブルと3Pケーブル共に、同梱されていませんでした。
sentaro様のところも同じでしょうか?

fx-9860GIII の記事のコメント欄で、fx-9750GIII 向けチューンアップツールについて質問していますが、Ftune3 で良いのでしょうか?


よろしくお願い致します。

Re:^3 プログラムを中断できない不具合の発生条件

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

Colon様、
ちょこっとバタバタしてたので、遅くなりました。m(_ _)m


>今思い付いたのですが、以下に示す方法で Simul Graph の設定に対してはオプション不要にできそうです。

>リフレッシュレートが
>・ 3/128 s 以下の場合 → 途中経過を 3/128 s で表示
>・ 4/128 s 以上の場合 → 設定に応じたリフレッシュレートで途中経過を表示

>すなわち、

>SimulOn
>RefrshTime 0
>DrawGraph

>とすれば、途中経過を画面に表示しない仕様にすれば楽だと思います。

>この方式のほうが、描画の速度を必要に応じて速くすることも出来るのでよいと思います。

了解しました。
その方向で実装してみようと思います。(^^)


>修正確認しました! (^^)

Colon様チェック通過で一安心です。(^^)


>よろしくお願いします!

>いつもの C.Basic 風ルーチンとコマンドリファレンスです。

>"Median()" コマンドはデータ値と度数をそれぞれリストで指定するのが純正の仕様ですが、
>"1-Variable" コマンドの拡張に併せて度数を即値指定出来るようにしてはどうかと考えています。

>拡張する場合のコードの変更点は注釈に書いてあります。

仕様から何から何まで詳細にありがとうございます!(^^)

ってことで、これから実装にとりかかります!

Re:Re: プログラムを中断できない不具合の発生条件

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
> そういうことだったんですね。
> ってことは、何かオプションを付けるかでないとダメですね。

今思い付いたのですが、以下に示す方法で Simul Graph の設定に対してはオプション不要にできそうです。

リフレッシュレートが
・ 3/128 s 以下の場合 → 途中経過を 3/128 s で表示
・ 4/128 s 以上の場合 → 設定に応じたリフレッシュレートで途中経過を表示

すなわち、

SimulOn
RefrshTime 0
DrawGraph

とすれば、途中経過を画面に表示しない仕様にすれば楽だと思います。

この方式のほうが、描画の速度を必要に応じて速くすることも出来るのでよいと思います。


> で、対処してみましたが、うまく動作するかどうかはColon様チェックをパスしないとというわけで、よろしくです!

修正確認しました! (^^)

> とりあえず、今のバージョンは処理速度的に上手いことハマっている感じなので、
> (何か機能を追加するとあちこちで遅くなってきます。)
> 次の1.46で新機能を追加していきます。(^^)

よろしくお願いします!

いつもの C.Basic 風ルーチンとコマンドリファレンスです。

"Median()" コマンドはデータ値と度数をそれぞれリストで指定するのが純正の仕様ですが、
"1-Variable" コマンドの拡張に併せて度数を即値指定出来るようにしてはどうかと考えています。

拡張する場合のコードの変更点は注釈に書いてあります。

========================================
・ Cuml

(説明)指定したリストについて、各要素の累積度数をリスト形式で返すコマンド
(書式)Cuml List 〈リスト番号〉
※ 以下、リスト番号を _No として記述する。
※ 特に指定しない限り、結果は List Ans に返る。
※ 結果を返すリストを List _Result として記述する。

【ルーチン】
List _No[MatBase(List _No)]→List _Result[MatBase(List _No)]

For MatBase(List _No)+1→_Count To Dim List _No+MatBase(List _No)−1
 List _No[ _Count]+List _Result[ _Count−1]→List _Result[ _Count]
Next

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

・ Percent

(説明)指定したリストの各要素が、全体の何パーセントにあたるかをリスト形式で出力するコマンド
(書式)Percent List 〈リスト番号〉
※ 以下、リスト番号を _No として記述する。
※ 特に指定しない限り、結果は List Ans に返る。
※ 結果を返すリストを List _Result として記述する。

【ルーチン】
List _No÷Sum List _No×100→List _Result

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

・ ΔList

(説明)指定したリストの各要素について隣り合う要素との差を計算し、結果をリスト形式で返すコマンド
(書式)ΔList 〈リスト番号〉
※ 以下、リスト番号を _No として記述する。
※ 特に指定しない限り、結果は List Ans に返る。
※ 結果を返すリストを List _Result として記述する。

【ルーチン】
For MatBase(List _No)→_Count To Dim List _No+MatBase(List _No)−2
 List _No[ _Count+1]−List _No[ _Count]→List _Result[ _Count]
Next

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

・ Median

(説明)度数を指定してデータの中央値を求めるコマンド
(書式)Median(List 〈リスト番号(データ)〉, List 〈リスト番号(度数)〉)

※ 以下、第 1 引数のリスト番号を _Data、第 2 引数のリスト番号を _Freq として記す。
※ 特に指定しない限り、結果は Ans に返る。
※ 便宜的に、途中計算に使うリストを List 101~105 として記述する。


【ルーチン】
List _Data→List 101
List _Freq→List 102 // → 注釈

SortA(List 101, List 102)

MatBase(List 101)→_CountB


For MatBase(List 101)→_CountA To Dim List 101+MatBase(List 101)−1
 If List 102[ _CountA] : Then
  1→_Flag
  Try List 103[ _CountB−1]=List 101[ _CountA]⇒0→_Flag
  Except
  TryEnd
  
  If _Flag : Then
   List 101[ _CountA]→List 103[ _CountB]
   List 102[ _CountA]→List 104[ _CountB]
   _CountB+1→_CountB
  Else
   List 102[ _CountA]+List 104[ _CountB−1]→List 104[ _CountB−1]
  IfEnd
 IfEnd
Next


Cuml List 104÷Sum List 104→List 105

For MatBase(List 105)→_CountC To Dim List 105+MatBase(List 105)−1
 List 105[ _CountC]≧0.5⇒Break
Next

List 105[ _CountC]>0.5⇒Return List 103[ _CountC]
Return (List 103[ _CountC]+List 103[ _CountC+1])÷2

【注釈】
"1-Variable" コマンドと同様の追加機能として、度数を即値指定できるようにする場合は、

(書式)Median( List _Data, _Freq)

という書式を追加する。

また、この書式で入力が行われた場合、注釈を与えた行の代わりに次を実行するようにする。

List _Data→List 102
_Freq→List 102

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

Re:プログラムを中断できない不具合の発生条件

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

Colon様、
>純正に Simul Graph の設定がありますが、
>既存の順番に描画、同時に描画の設定の他に、描画している様子を表示せずに初めから完成形を表示する項目を追加してはどうか? ということです。

そういうことだったんですね。
ってことは、何かオプションを付けるかでないとダメですね。


>あ、ひとつ前のコメントにお気づきでないっぽいですが、(^^;
>確認お願いします。m(_ _)m

またまた見落としました。(^^;

>"1-Variable" コマンドのルーチンを作成中に出くわした不具合ですが、
>以下の "1VarTest.g3m" の最後のほうにある "ACBreak" が動作せず、無限ループ中の [AC] キー中断もできません。
https://pm.matrix.jp/upload/upload.cgi?get=00112

>メインメモリの "@CBASIC" フォルダを削除しても直りません。

>確認よろしくお願いします。m(_ _)m

確認できました!
AcBreakを省いても、Whileループが[AC]で止まらないのがちょっと謎なので、調べてみます!


>では、発生条件です。

>For 文、While 文、Do 文の中に Try 文があり、
>その Try 文の中から Break コマンドでループを退出した場合、
>その後は "ACBreak" コマンドや [AC] キーでの中断が不可能になります。

ということで、調査中の間に、
Colon様が早々に原因を突き止めてくれたようで大感謝です!(^^)
Tryコマンドを活用されてたColon様だから発見できた不具合ですね。

で、対処してみましたが、うまく動作するかどうかはColon様チェックをパスしないとというわけで、よろしくです!

C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その19(テスト版その2)
https://pm.matrix.jp/CB/CBASICCG145beta19.zip
・Try~TryEndコマンドからBreakで脱出した場合、それ以後、[AC]中断もAcBreakも効かなくなる不具合を修正しました。



>・ Median(
>・ Cuml
>・ Percent
>・ ΔList

>"1-Variable" のルーチンの記述に使いたいというのもありますが、
>折角なので、"1-Variable" に先立ってこれら 4 つのコマンドを実装してしまうのはどうでしょうか?

了解です!
実装しておくタイミングとしてはいいですね。(^^)

とりあえず、今のバージョンは処理速度的に上手いことハマっている感じなので、
(何か機能を追加するとあちこちで遅くなってきます。)
次の1.46で新機能を追加していきます。(^^)



管理人様、

>Colon様から報告のあった、ACBreakが効かない件ですが、"1-Variable" コマンドのルーチンを作成中のかなり特殊な状況なので、Colon様以外で出くわしすとは思えないのですが、念のために本文の最新版ダウンロードのところで、1つ前の build 18 も明示的にダウンロードできるようにしておきました。

Colon様の検証通り、これはTryのバグなので、Tryコマンド導入時の1.00βから存在する不具合でした、。(^^;

プログラムを中断できない不具合の発生条件

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

昨日お伝えした不具合の発生条件を特定できました。

> Colon様から報告のあった、ACBreakが効かない件ですが、"1-Variable" コマンドのルーチンを作成中のかなり特殊な状況なので、Colon様以外で出くわしすとは思えないのですが、念のために本文の最新版ダウンロードのところで、1つ前の build 18 も明示的にダウンロードできるようにしておきました。

気付いたきっかけは動作確認によく使用する "ACBreak" コマンドだったので、
ルーチン作成中という状況で出くわしやすい不具合であることは確かですが、
その後の調査で、ルーチン作成時に限らず Try 文を使用しているプログラムでは実行中断ができなくなることがあると分かりました。

なお、私が確認した範囲では、v1.43 β と v1.44 β の最終バージョンでもこの不具合が発生するようです。


では、発生条件です。

For 文、While 文、Do 文の中に Try 文があり、
その Try 文の中から Break コマンドでループを退出した場合、
その後は "ACBreak" コマンドや [AC] キーでの中断が不可能になります。

次の場合、不具合を確認できます。

〈Try 文でエラー判定になった場合〉
Do
 Try +
 Except
 Break
 TryEnd
LpWhile 1

ACBreak

〈Try 文でエラー判定にならなかった場合〉
Do
 Try 1
 Break
 Except
 TryEnd
LpWhile

ACBreak


参考までに、次のような場合は不具合が発生しません。

〈Break が Try 文の外にある場合〉
Do
 Try 1
 Except
 TryEnd
 Break
LpWhile

ACBreak


以上です。

sentaro様、確認よろしくお願いします。m(_ _)m

Re^8: プログラムが中断できない

Colon様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、


管理人のやすです。

Colon様から報告のあった、ACBreakが効かない件ですが、"1-Variable" コマンドのルーチンを作成中のかなり特殊な状況なので、Colon様以外で出くわしすとは思えないのですが、念のために本文の最新版ダウンロードのところで、1つ前の build 18 も明示的にダウンロードできるようにしておきました。

Re^7: Plot グラフ途中描画実験

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
> あ、"PopUpWin(0/9)" という手もありましたね。さすがです!

最初に思い付いたのがそれだったんですが、
退避後の画面への書き込みが難しいのと、256 回も退避・転送を行うのは重すぎだったので断念しました。

行列のアドレス指定でやろうとしましたが、
セキュリティ対策なのかバッファの開始アドレスが奇数なので簡単にいじれないようになっています。(^^;

> 途中経過というと、グラフのドットが描画されていく様子が見えるというのではなく、
> 数式が表示されないというのでしょうか?

純正に Simul Graph の設定がありますが、
既存の順番に描画、同時に描画の設定の他に、描画している様子を表示せずに初めから完成形を表示する項目を追加してはどうか? ということです。


あ、ひとつ前のコメントにお気づきでないっぽいですが、(^^;
確認お願いします。m(_ _)m

Re^6: Plot グラフ途中描画実験

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

Colon様、
>単に転送するだけなら速度面で "PopUpWin(0/9)" に軍配が上がりますが、

あ、"PopUpWin(0/9)" という手もありましたね。さすがです!


>バッファが実質 2 つ以上欲しい場合や、退避した画面への書き込みで転送回数を抑えられる場合は "Screen" の新機能が使えそうです。

裏画面にこっそり描画するというのは、今まで出来そうで出来てなかったので新たなアプリケーションの可能性も広がりそうですね。(^^)


>今回は「退避した画面への書き込みで転送回数を抑えられる場合」に該当しますが、
>ML コマンドの高速性と相性がよいみたいですね。(^^)

MLコマンドは純正互換仕様の縛りが無いので、その分、高速になっている場合が多いです。
ただ、アドイン同様に画面周りをすべて自分で管理しないといけないところだけが難点ですね。(^^;


>ところで、現在の C.Basic では、グラフ描画の途中経過を表示しませんが、これはこれで都合が良い場面もあります。
>グラフの同時描画に関する設定に「途中表示なし」を追加するのはどうでしょうか?

途中経過というと、グラフのドットが描画されていく様子が見えるというのではなく、
数式が表示されないというのでしょうか?

プログラムが中断できない

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、

"1-Variable" コマンドのルーチンを作成中に出くわした不具合ですが、
以下の "1VarTest.g3m" の最後のほうにある "ACBreak" が動作せず、無限ループ中の [AC] キー中断もできません。
https://pm.matrix.jp/upload/upload.cgi?get=00112

メインメモリの "@CBASIC" フォルダを削除しても直りません。

確認よろしくお願いします。m(_ _)m


ところで、現在実装されていないリスト機能に関するコマンドは次の 4 つです。

このうち "Median(" / "Cuml" コマンドは、
"1-Variable" コマンドの機能に関連しています。

・ Median(
・ Cuml
・ Percent
・ ΔList

"1-Variable" のルーチンの記述に使いたいというのもありますが、
折角なので、"1-Variable" に先立ってこれら 4 つのコマンドを実装してしまうのはどうでしょうか?

仕様は把握できているので、ルーチンはこちらで用意しようと思います。

Re^5: Plot グラフ途中描画実験

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

管理人様、
> 個人的には、仕事に埋もれてしまっており、色々と試せないだけでなく、C.Basic裏技集のネタのメモすらできない状況です。
> ここらあたりは、Colon様にお願いするしかなさそうな感じです...申し訳ありません。

お疲れさまです。

了解しました。
一応メモも取っておきます。(^^)


sentaro様、
> これは、以前から簡単に実装できるなぁとは思ってたんですが、
> その有用な使い道が思いつかなかったのでそのままになっていました。

単に転送するだけなら速度面で "PopUpWin(0/9)" に軍配が上がりますが、
バッファが実質 2 つ以上欲しい場合や、退避した画面への書き込みで転送回数を抑えられる場合は "Screen" の新機能が使えそうです。

今回は「退避した画面への書き込みで転送回数を抑えられる場合」に該当しますが、
ML コマンドの高速性と相性がよいみたいですね。(^^)

> 速度的にも問題ないですし、実装も難しくないのでOkです。(^^)

了解しました。(^^)
当初の想定よりもあっさり解決できたのでよかったです。

ところで、現在の C.Basic では、グラフ描画の途中経過を表示しませんが、これはこれで都合が良い場面もあります。
グラフの同時描画に関する設定に「途中表示なし」を追加するのはどうでしょうか?

Re^4:Plot グラフ途中描画実験

管理人様、
書き込みに気がつくのが遅れました。m(_ _)m

>Colon様の強力サポートで、隠れていたバグフィックスや、高速化にむけた新機能追加と、素晴らしい前進ですね。

>個人的には、仕事に埋もれてしまっており、色々と試せないだけでなく、C.Basic裏技集のネタのメモすらできない状況です。
>ここらあたりは、Colon様にお願いするしかなさそうな感じです...申し訳ありません。

グラフ描画系関連はそのコマンドの複雑な動作の確認や検証はなかなか一朝一夕というわけにはいかないですよね。(^^;
これまでずっとグラフ電卓として使いこなしてきているColon様の強力なサポートはとても心強いです。(^^)



>最近のアクセス状況を見ておりますと、C.Basic トップページやプログラムの記事へのアクセスが隔日に増えていますので、C.Basic のページを少し手直しました。

>そして、アップデート対応しました。

いつも素早い対応していただきまして感謝です。(^^)


>UCFでの速度比較プログラム、面白いですね。
>これも、いずれココで取り上げたいと思っています。

C.Basicの最適化は裏技集としてまとめると面白いネタになりそうですね。(^^)

Re^3: Plot グラフ途中描画実験

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

Colon様、

>昨日の私も全く同じことを考えていたのですが、
>毎回転送しないと上 1 行の途中経過の表示ができないんです。(^^;

>・ Y1 = 2.9
>・ Y2 = 3.0
>・ Y3 = 3.1

>これでお試しください。

あ、なるほど、重なる部分の描画の途中経過が見えないということですね。
了解です。(^^)


>はぁぁ……、知らない仕様でした。(^^;
>ご教授ありがとうございます。

なぜにこういう仕様になっているかと最初はかなり悩みましたが、
C.Basicへの互換実装とデバックで結構大変でした。(^^;


>かなりコアな要望に応えていただき、ありがとうございます。

これは、以前から簡単に実装できるなぁとは思ってたんですが、
その有用な使い道が思いつかなかったのでそのままになっていました。

今回、Colon様のおかげで、やっと日の目を見ることになりました。(^^)


>お陰で、"ReadGraph" / "WriteGraph" を使用せずに高速描画を実現できました。(^^)

>"SampleG4.g3m"
https://pm.matrix.jp/upload/upload.cgi?get=00111

>グラフを 1 つ描画し終えるごとに、退避用グラフィック VRAM から表示用 VRAM に転送することで、文字を出したり消したりを実現できました。
>VRAM 間の転送は、行列のアドレス指定の応用です。

VRAM間の転送で行列を使うのはC.Basicならではの裏技ですね。さすがです。


>所要時間は 1.5 秒程度で、目標の 1.8 秒以下を達成できました。
>この方法での実装、という方向でいかがでしょうか?

速度的にも問題ないですし、実装も難しくないのでOkです。(^^)

Re^3:Plot グラフ途中描画実験

sentaro様、iron2様、Colon様、CalcLoverHK様、C.Basicユーザーの皆様、こんにちは!


Colon様の強力サポートで、隠れていたバグフィックスや、高速化にむけた新機能追加と、素晴らしい前進ですね。

個人的には、仕事に埋もれてしまっており、色々と試せないだけでなく、C.Basic裏技集のネタのメモすらできない状況です。
ここらあたりは、Colon様にお願いするしかなさそうな感じです...申し訳ありません。


最近のアクセス状況を見ておりますと、C.Basic トップページやプログラムの記事へのアクセスが隔日に増えていますので、C.Basic のページを少し手直しました。

そして、アップデート対応しました。

> C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その19(テスト版)
> https://pm.matrix.jp/CB/CBASICCG145beta19.zip
> ・スタックエラーになる前にシステムエラーになっていた不具合を修正しました。
> ・ReadGraph/WriteGraph/DotGet/DotPutコマンドを現在のVRAMに作用するように仕様変更しました。
> ・描画対象VRAMを退避されているテキストVRAM領域とグラフィックスVRAM領域に変更するScreen.Vコマンドを追加しました。
> (書式)Screen.V
>  デフォルトのVRAMに戻します。
> (書式)Screen.VT
>  テキストVRAMの退避領域を描画対象にします。
> (書式)Screen.VG
>  グラフィックスVRAMの退避領域を描画対象にします。


UCFでの速度比較プログラム、面白いですね。
これも、いずれココで取り上げたいと思っています。


Re:Re: Plot グラフ途中描画実験

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
> 何でかなと思って調べてみたら、
> 描画毎に退避/復帰が発生しているわけですね。
> 結果として、PutDispDDがスキップされずに転送が増えていることで余計遅くなっているようです。
> で、PutoDispの制御をプログラムで行うようにしたら、
> 一気に高速化できましたので、
> "ReadGraph/WriteGraph"方式で大丈夫な感じです。(^^)

昨日の私も全く同じことを考えていたのですが、
毎回転送しないと上 1 行の途中経過の表示ができないんです。(^^;

・ Y1 = 2.9
・ Y2 = 3.0
・ Y3 = 3.1

これでお試しください。


> ClsとClrGraphが悪さをしてます。(^^;
純正コマンドのClsとClrGraphはその次の描画コマンドで実際の動作が行われるので、
> Screen.GでClsが発効されたということになります。

はぁぁ……、知らない仕様でした。(^^;
ご教授ありがとうございます。


> MLコマンドをいじるのはちょっと大変かもなので、
> Screenコマンドで描画対象VRAMを変更できるようにしてみました。
> とりあえず、不具合が出るかもなのでテスト版です。(^^;

かなりコアな要望に応えていただき、ありがとうございます。

お陰で、"ReadGraph" / "WriteGraph" を使用せずに高速描画を実現できました。(^^)

"SampleG4.g3m"
https://pm.matrix.jp/upload/upload.cgi?get=00111


まず、描画開始前に表示用 VRAM を退避用のグラフィック VRAM に転送します。

途中経過の描画中は、表示用 VRAM には途中経過の画面 (文字あり) を、退避用グラフィック VRAM には完成後の画面 (文字なし) を同時並行で描画します。

グラフを 1 つ描画し終えるごとに、退避用グラフィック VRAM から表示用 VRAM に転送することで、文字を出したり消したりを実現できました。
VRAM 間の転送は、行列のアドレス指定の応用です。

グラフ 1 つあたりの転送回数は "SampleG1" で 256 回だったのに対し、"SampleG4" では 1 回のみです。

所要時間は 1.5 秒程度で、目標の 1.8 秒以下を達成できました。
この方法での実装、という方向でいかがでしょうか?

Re:Plot グラフ途中描画実験

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

Colon様、

>例えば、ML コマンドをちょっといじって
>・ アドレス System(1) 番地から始まる VRAM に対して "_Point" で描画
>・ アドレス System(3) 番地から始まる VRAM に対して "_Point" で描画

>ということができれば速度が出せると思うのですが、
>こういうことは可能でしょうか?

MLコマンドをいじるのはちょっと大変かもなので、
Screenコマンドで描画対象VRAMを変更できるようにしてみました。
とりあえず、不具合が出るかもなのでテスト版です。(^^;


C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その19(テスト版)
https://pm.matrix.jp/CB/CBASICCG145beta19.zip
・スタックエラーになる前にシステムエラーになっていた不具合を修正しました。
・ReadGraph/WriteGraph/DotGet/DotPutコマンドを現在のVRAMに作用するように仕様変更しました。
・描画対象VRAMを退避されているテキストVRAM領域とグラフィックスVRAM領域に変更するScreen.Vコマンドを追加しました。
(書式)Screen.V
 デフォルトのVRAMに戻します。
(書式)Screen.VT
 テキストVRAMの退避領域を描画対象にします。
(書式)Screen.VG
 グラフィックスVRAMの退避領域を描画対象にします。




>現在使っている実験用ルーチンです。
https://pm.matrix.jp/upload/upload.cgi?get=00109

>・ Y1 = sin X
>・ Y2 = cos X
>・ Y3 = tan X

>これを描画する際の所要時間は、
>・ 純正 …… 1.8 秒
>・ 文字なし独自ルーチン (SampleG2) …… 1.2 秒
>・ 文字あり独自ルーチン (SampleG1) …… 8 秒以上

>でした。

ありがとうございます!
文字ありだとかなり負荷増大してますね。(^^;

何でかなと思って調べてみたら、
描画毎に退避/復帰が発生しているわけですね。
結果として、PutDispDDがスキップされずに転送が増えていることで余計遅くなっているようです。
で、PutoDispの制御をプログラムで行うようにしたら、
一気に高速化できましたので、
"ReadGraph/WriteGraph"方式で大丈夫な感じです。(^^)

https://pm.matrix.jp/upload/upload.cgi?get=00110



>ところで、SampleG2 の最後の "Screen.G" の箇所でグラフが消えてしまうのですが、
>これはなぜでしょうか?

ClsとClrGraphが悪さをしてます。(^^;
純正コマンドのClsとClrGraphはその次の描画コマンドで実際の動作が行われるので、
Screen.GでClsが発効されたということになります。
ので、
MLコマンドのみの描画では、
ClsとClrGraphを使った後には一度描画コマンド(Text,Plot等)でClsコマンドの発効を終了しておく必要があります。
もしくは、Clsは使わないで_ClrVramを使うのがトラブルを避けるコツですね。(^^)

Plot グラフ途中描画実験

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
> 画面転送しない場合は、裏で描画してても何も見えないので、
> テキストVRAMとグラフィックスVRAMを適宜切り替えて、描画対象VRAMは常に現在のVRAMということでいけるかと思います。(^^)

あ、その切り替えをしちゃうと時間がかかるんです。(^^;

> CG50なら3画面でも4画面でもバッファに持つことが可能ですが、CG20では2画面が精一杯なので、
> 処理的に重くならないのであればそれでいけそうな感じがしますね。(^^)

例えば、ML コマンドをちょっといじって
・ アドレス System(1) 番地から始まる VRAM に対して "_Point" で描画
・ アドレス System(3) 番地から始まる VRAM に対して "_Point" で描画

ということができれば速度が出せると思うのですが、
こういうことは可能でしょうか?

>> そこで、最上部の 1 行だけ処理できないかと "ReadGraph()" / "WriteGraph" での重ね合わせも試してみたのですが、
>> これでも処理が重すぎて現実的では無いようです。

> 現実的にはその方法しかないと思われるのですが、
> C.Basic上では若干重くても実装する段階で数倍速にはなると思われるので、
> ちょっと遅い程度ならだいじょうぶかと思います。(^^)

現在使っている実験用ルーチンです。
https://pm.matrix.jp/upload/upload.cgi?get=00109

・ Y1 = sin X
・ Y2 = cos X
・ Y3 = tan X

これを描画する際の所要時間は、
・ 純正 …… 1.8 秒
・ 文字なし独自ルーチン (SampleG2) …… 1.2 秒
・ 文字あり独自ルーチン (SampleG1) …… 8 秒以上

でした。

この SampleG1 で純正以上の速度が出ればよいのですが、どこまで速くできるかというところですね。(^^;


ところで、SampleG2 の最後の "Screen.G" の箇所でグラフが消えてしまうのですが、
これはなぜでしょうか?

Re^21: SIR モデルグラフ描画プログラム その 2

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

Colon様、
>確認できました。
>中々気づきにくい不具合なので、発見できてよかったです。

今まで気が付かなかったのは今回のように厳密なベンチマークをしてなかったからですね。(^^;
ElseIfの後の読み飛ばしはキャッシュ動作しているので、
If~ElseIfまでの間が抜けてました。(^^;
修正にちょこっと手間取りそうなので、しばしお待ち下さいませ。


>Screen.O と Screen.OT での重ね合わせをテストしてみたのですが、
>重ね合わせの処理に時間が掛かりすぎて描画途中には使えなそうです。

重ね合わせで10fpsまで落ちてしまうので、高速描画するにはちょっと厳しいですね。(^^;


>そこで、最上部の 1 行だけ処理できないかと "ReadGraph()" / "WriteGraph" での重ね合わせも試してみたのですが、
>これでも処理が重すぎて現実的では無いようです。

現実的にはその方法しかないと思われるのですが、
C.Basic上では若干重くても実装する段階で数倍速にはなると思われるので、
ちょっと遅い程度ならだいじょうぶかと思います。(^^)


>予備実験として、ループ内で実際に図形を描画している部分だけを 2 回ずつ繰り返したところ、所要時間はあまり変わらなかったので、
>VRAM の切り替えを行わずにアドレス指定で 2 つの画面に平行して描画するのが処理の重さやメモリ的にベストだと思います。

CG50なら3画面でも4画面でもバッファに持つことが可能ですが、CG20では2画面が精一杯なので、
処理的に重くならないのであればそれでいけそうな感じがしますね。(^^)


>今考えている処理方法は、
>表示 VRAM に実際に表示する画面を描きつつ、グラフィック VRAM (退避用) に完成後の画面をどうにか並行して描画する、というものです。

>描画が終わったら、退避用の VRAM にあるものを表示用の VRAM に転送し、個々のグラフを順に描画する場合は、続けて次のグラフを描くことができます。

>この方法の場合、複数のグラフを同時描画する際は裏の VRAM への描画が必要なくなるので、若干速くなります (CG50 の挙動と同じ?)。

>具体的に裏の VRAM にどうやって効率的に描画するかということについては検討が必要ですが、
>この案を軸にもう少し考えてみようと思います。


画面転送しない場合は、裏で描画してても何も見えないので、
テキストVRAMとグラフィックスVRAMを適宜切り替えて、描画対象VRAMは常に現在のVRAMということでいけるかと思います。(^^)

Re^20: SIR モデルグラフ描画プログラム その 2

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
> 最初の
> If 1=0
> と
> Else If
> ElseIf
> の間に、文字かコマンドを入れてみてください。
> その場合、If~Elseの入れ子は文字/コマンドの長さに関係なく実行時間に影響が無いのに対して、
> ElseIfだと間に入る文字/コマンドの数に応じてどんどん遅くなります。
> ってことで、ElseIfでは飛越キャッシュがなぜか動作していませんでした。(^^;

確認できました。
中々気づきにくい不具合なので、発見できてよかったです。

> 白の影付きだとちょっとやっかいですね。(^^;
> あ、でも、白の影の色を65535でなく65534とかにしておけば、白抜きでの重ね合わせ処理は出来ないでしょうか?

Screen.O と Screen.OT での重ね合わせをテストしてみたのですが、
重ね合わせの処理に時間が掛かりすぎて描画途中には使えなそうです。

そこで、最上部の 1 行だけ処理できないかと "ReadGraph()" / "WriteGraph" での重ね合わせも試してみたのですが、
これでも処理が重すぎて現実的では無いようです。

重ね合わせ処理が無理そうなので、画面 2 枚にそれぞれ描画する方法が一番オーバーヘッドが少ないと思うのですが、
Screen コマンドで VRAM を切り替えるにも転送時間の加減で無理そうです。

(なお、リアルタイム描画前に完成形の画面を作っておくと、グラフ描画部分だけで 3 枚の画面が必要なので、メモリを食います。)

予備実験として、ループ内で実際に図形を描画している部分だけを 2 回ずつ繰り返したところ、所要時間はあまり変わらなかったので、
VRAM の切り替えを行わずにアドレス指定で 2 つの画面に平行して描画するのが処理の重さやメモリ的にベストだと思います。

今考えている処理方法は、
表示 VRAM に実際に表示する画面を描きつつ、グラフィック VRAM (退避用) に完成後の画面をどうにか並行して描画する、というものです。

描画が終わったら、退避用の VRAM にあるものを表示用の VRAM に転送し、個々のグラフを順に描画する場合は、続けて次のグラフを描くことができます。

この方法の場合、複数のグラフを同時描画する際は裏の VRAM への描画が必要なくなるので、若干速くなります (CG50 の挙動と同じ?)。


具体的に裏の VRAM にどうやって効率的に描画するかということについては検討が必要ですが、
この案を軸にもう少し考えてみようと思います。

Re^19: SIR モデルグラフ描画プログラム その 2

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

Colon様、
>入れ子と ElseIf のどちらが速いのかは場合によるようなので、
>構文解析レベルではなく、仰るように飛び先キャッシュの加減っぽいですね。

Colon様のサンプルプログラムの
最初の
If 1=0

Else If
ElseIf
の間に、文字かコマンドを入れてみてください。
読み飛ばすだけなのでエラーチェックはないので埋める文字やコマンドは何でもいいです。

その場合、If~Elseの入れ子は文字/コマンドの長さに関係なく実行時間に影響が無いのに対して、
ElseIfだと間に入る文字/コマンドの数に応じてどんどん遅くなります。
ってことで、ElseIfでは飛越キャッシュがなぜか動作していませんでした。(^^;
ElseIfではIf~ElseIf間を単に読み飛ばすだけだったので、Colon様のサンプルだとElseIfの方が速くなっていたということですね。


>それも試してみたのですが、
>グラフ回りに表示する文字列は可読性の点からすべて白の影つきなので (不等式の網掛けのときは特に重要)、
>重ね合わせ機能を使うのは難しそうです。(^^;

白の影付きだとちょっとやっかいですね。(^^;
あ、でも、白の影の色を65535でなく65534とかにしておけば、白抜きでの重ね合わせ処理は出来ないでしょうか?

Re^18: SIR モデルグラフ描画プログラム その 2

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
> Ifの後で分岐するところで飛び先キャッシュを導入しているのですが、
> Ifの入れ子の方が、それが効率よく動作しているのかもしれません。(^^;

If 文を 10,000 回ループさせるだけのプログラムを作ってみましたが、
この場合は If の入れ子より ElseIf のほうが速かったです。

入れ子と ElseIf のどちらが速いのかは場合によるようなので、
構文解析レベルではなく、仰るように飛び先キャッシュの加減っぽいですね。

〈If 入れ子バージョン〉
For 1→A To 10000
If 1=0
Else If 1
IfEnd
IfEnd
Next

〈ElseIf バージョン〉
For 1→A To 10000
If 1=0
ElseIf 1
IfEnd
Next


> はい、そのとおりです。
> コロン":"が強制的に画面転送しない、とするならば、
> セミコロン";"は強制的に画面転送をリフレッシュレート指定値で行うということになっています。(^^)

ありがとうございます。(^^)


> グラフ描画ではパラパラ描画でも問題ないので、それでいきましょう。(^^)

了解しました。


> とりあえず、グラフィックスとテキストVRAMの重ね合わせ機能を使うというのはどうでしょう?

それも試してみたのですが、
グラフ回りに表示する文字列は可読性の点からすべて白の影つきなので (不等式の網掛けのときは特に重要)、
重ね合わせ機能を使うのは難しそうです。(^^;

Re^17: SIR モデルグラフ描画プログラム その 2

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

Colon様、
>これはアルファ版だった頃から何度も調べていますが、
>一貫して ElseIf のほうが遅いという結果になっております。

>何らかの原因により、構文解析の段階で時間がかかっているということなのでしょうか?

Ifの後で分岐するところで飛び先キャッシュを導入しているのですが、
Ifの入れ子の方が、それが効率よく動作しているのかもしれません。(^^;


>おおっ、更に高速化してこれは感動ものです。(^^)
>数値より変数のほうが速いんですね。

はい、数値は内部2進数への変換が入るのでその分、遅くなります。
変数読み出しが速くなるのは、奥義炸裂、というわけではないですが、
オーソドックスなインタプリタの基本的高速化技が使えますね。(^^)


>"PutDispDD;" や "_DispVram;" のセミコロンは知らないオプションでした。
>リフレッシュレートの時間が経過しているならば画面転送を行う、という認識でよろしいでしょうか?

はい、そのとおりです。
コロン":"が強制的に画面転送しない、とするならば、
セミコロン";"は強制的に画面転送をリフレッシュレート指定値で行うということになっています。(^^)


>CG20 では、Ptune2 の [F3] の設定で、
>・ SHIDAFS1.g3m → 3.5882 秒
>・ SHIDAFS2.g3m → 4.1988 秒

>でした。いずれも 10 回平均です。

画面転送の影響が無くなってくるとやはりCG20が速いですね。(^^)


>純正 Casio Basic では 40 分超でしたっけ?

>そこから考えると約 600 倍 の高速化ですね。(^^)

600倍というと一昔前ならアドインでないと実現不可能でしたけど、
こういう純正では途方も無い時間のかかるグラフィックスが、
待ち時間がほとんど感じさせないレベルで実行させることが出来るのがC.Basicの得意分野ですね。(^^)


>ただ、もし純正でその仕様だったとしても、
>C.Basic に実装する際はコーディングやメンテナンス、動作確認が面倒ですし、描画時に転送ラインの計算というオーバーヘッドがかかること>になって逆に低速化しそうなので、
>"SHIDAFS2.g3m" のようにリフレッシュレートを落として "PutDispDD;"、というのはどうでしょうか?

>Plot グラフの描画について、CG20 純正のグラフ機能と実験用の自作ルーチン (3/128 s) とで描画にかかる時間を比較してみました。

>"Y=X" では CG20 純正と自作 (3/128 s) でちょうど同じくらいの描画速度になりました。
>また、"Y=sin X" のように計算量が多くなると自作ルーチンのほうが若干速いです。

>というわけで、個人的には「3/128 s の "PutDispDD;" で良いかなぁ」と思います。

グラフ描画ではパラパラ描画でも問題ないので、それでいきましょう。(^^)


>CG50 の速度との兼ね合いもあるので、最終的にはルーチンがしっかりした段階で皆さんにサンプルを提示し、ご意見を頂戴した上で微調整しようと思います。

お手数おかけしますがよろしくお願いします。(^^)


>トレース時の数式表示は普通に PopUpWin(0/9) を使っていればどうにかなるでしょうが、
>リアルタイムで計算と描画を実行しながらバッファうんぬんとなると話が違ってくるのでくせ者ですね。

とりあえず、グラフィックスとテキストVRAMの重ね合わせ機能を使うというのはどうでしょう?

Screen.O
で、テキスト画面がグラフィック画面の上に合成後VRAM転送されます。
VRAMには合成画像が残ります。

Screen.OT
で、テキスト画面がグラフィック画面の上にオーバーレイされる形でVRAM転送されます。
転送時のみ合成されるので、VRAMの実体には変化ありませんが若干重いです。(^^;

Re^16: SIR モデルグラフ描画プログラム その 2

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

管理人様、
> リストの最大値を求める部分のスピードアップに対応して、差替えアップデートしました。
> 実は昨晩のうちにダウンロードファイルは差し替えしておりましたが、記事本文は先ほど修正しました。

> グラフデータを準備している間、空白画面で待たされるのが気になっていたので、この間

>  = Processing data =

> と表示するようにしてみました。

素早い対応をありがとうございます。(^^)


sentaro様、
> ElseIfが速いのかと思ったら微妙に遅かったというのがちょっとびっくりでした。(^^;

これはアルファ版だった頃から何度も調べていますが、
一貫して ElseIf のほうが遅いという結果になっております。

何らかの原因により、構文解析の段階で時間がかかっているということなのでしょうか?

> で、このColon様の最適化版をさらに最適化することは可能かどうかと考えたところ、
> iron2様のリフレッシュレート削減というのを思い出して、実験したところさらなる高速化が出来ました。

> ポイントは、
> ・リフレッシュレートを1/8sに設定して画面転送削減。
> ・数値をすべて変数で置き換える。
> ・_Pixel前の座標計算をオペランド化。
> ・Tの計算をまとめて括弧削減。

おおっ、更に高速化してこれは感動ものです。(^^)

数値より変数のほうが速いんですね。

"PutDispDD;" や "_DispVram;" のセミコロンは知らないオプションでした。
リフレッシュレートの時間が経過しているならば画面転送を行う、という認識でよろしいでしょうか?

リフレッシュレートを落としたかったのですが、やり方が分からなかったもので……。

> ・ SHIDAFS1.g3m → 画面転送なし (3.79秒) CG50ノーマル
> ・ SHIDAFS2.g3m → 画面転送あり (4.34秒) CG50ノーマル

CG20 では、Ptune2 の [F3] の設定で、
・ SHIDAFS1.g3m → 3.5882 秒
・ SHIDAFS2.g3m → 4.1988 秒

でした。いずれも 10 回平均です。

> 若干描画にパラパラ感が出るものの、転送版でも転送無し並の速度になりました。
> 初版の実数版で44秒かかっていたことを考えると最適化効果で10倍速まできました。(^^)

純正 Casio Basic では 40 分超でしたっけ?

そこから考えると約 600 倍 の高速化ですね。(^^)


> これは一応、使ってみたいという方=私がいるということで、導入するということでよろしいでしょうか?(^^;

了解しました。(^^)
やってみます。

> 画面の更新された箇所だけ、数ライン転送しているという可能性はどうでしょうか?

確かに、それはありそうですね。

Plot タイプなら点の集合、Connect タイプなら線分の集合というのが実際のところなので、ラインの指定は技術的に出来そうです。

ただ、もし純正でその仕様だったとしても、
C.Basic に実装する際はコーディングやメンテナンス、動作確認が面倒ですし、描画時に転送ラインの計算というオーバーヘッドがかかることになって逆に低速化しそうなので、
"SHIDAFS2.g3m" のようにリフレッシュレートを落として "PutDispDD;"、というのはどうでしょうか?

Plot グラフの描画について、CG20 純正のグラフ機能と実験用の自作ルーチン (3/128 s) とで描画にかかる時間を比較してみました。

"Y=X" では CG20 純正と自作 (3/128 s) でちょうど同じくらいの描画速度になりました。
また、"Y=sin X" のように計算量が多くなると自作ルーチンのほうが若干速いです。

というわけで、個人的には「3/128 s の "PutDispDD;" で良いかなぁ」と思います。

CG50 の速度との兼ね合いもあるので、最終的にはルーチンがしっかりした段階で皆さんにサンプルを提示し、ご意見を頂戴した上で微調整しようと思います。

> 数式表示のときの退避バッファがスタック上にありそうな感じですね。
> このあたりは実装上でなんとかするので、特に重ね合わせの処理は考えなくてもいいと思います。(^^)

トレース時の数式表示は普通に PopUpWin(0/9) を使っていればどうにかなるでしょうが、
リアルタイムで計算と描画を実行しながらバッファうんぬんとなると話が違ってくるのでくせ者ですね。

描画速度や計算のタイミングとの兼ね合いもあるので、色々と実験へのご協力をお願いするかもしれません。

うーん、やっぱり途中経過の表示はなしで一旦暫定実装して、
途中描画は後から付け足したほうがよいのかなぁ……。(-_-;

Re^15: SIR モデルグラフ描画プログラム その 2

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

管理人様、
最新版、いただいております。(^^)

>グラフデータを準備している間、空白画面で待たされるのが気になっていたので、この間

> = Processing data =

>と表示するようにしてみました。

通常アプリならプログレスバーが出るような案件なので、これはすごく大事ですね。(^^)




Colon様、
>最大値や最小値、平均値の計算が楽になるので "1-Variable" コマンドは先駆けて実装してほしいのですが、お願いできますか? > sentaro様
>仕様は今週中に調べてお伝えします。

>こんなことを書きましたが、"Max()" コマンドで List の最大値が求められるのをすっかり忘れていました。(^^;

>ただ、導入すれば現在の C.Basic に無い機能として、
>・ 度数を設定しての平均値、最小値、最大値、総和、データの個数の計算
>・ 二乗和の計算
>・ 標本標準偏差、母標準偏差の計算
>・ 中央値、四分位数の計算
>・ 最頻値の計算

>が出来るようになるので、
>もし使ってみたいという方がいればルーチンを作成します。

これは一応、使ってみたいという方=私がいるということで、導入するということでよろしいでしょうか?(^^;



>Ptune2 で [F3] の設定にした CG20 (80 fps 程度) よりも、CG50 デフォルト (90 fps 程度) のほうが高速なんですね。

画面転送速度はCG20のときから懸案事項でしたので、CG50で若干改良された気配ですね。


>以前グラフ同時描画関連のコマンドを保留にさせてください、というお願いをしましたが、純正でどのように画面転送をしているかが分からないのが理由です。(^^;

>どなたか解決策をお持ちでしょうか?

画面の更新された箇所だけ、数ライン転送しているという可能性はどうでしょうか?


>他には、グラフ描画時に左上に式を表示しますが、VRAM とは関係なく表示しなければいけないという問題もあります。
>(一度完成後のグラフ画面を作ったあと、バッファに退避してからグラフィック VRAM を消して、途中経過を別に逐次描画する、とかかなぁ……。)

数式表示のときの退避バッファがスタック上にありそうな感じですね。
このあたりは実装上でなんとかするので、特に重ね合わせの処理は考えなくてもいいと思います。(^^)

Re:SHIDA 最適化

Re:SHIDA 最適化

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

Colon様、
>最新バージョンの C.Basic で計測したところ、SHIDACGH.g3m の実行時間 (10 回平均) は、
>画面転送デフォルトの場合は 12.7789 秒、画面転送なしの場合は 6.4835 秒です。

画面転送があるとそこで若干足引っ張られる感じですが、
内部演算だけだとCG20が速いですね。(^^)


>では、私が最適化したもののダウンロードリンクです。
>以前作ったものを更に高速化して、現バージョンで最速 (?) で動くパターンをアップしました。
https://pm.matrix.jp/upload/upload.cgi?get=00105

>ML コマンドに切り替えたので、画面転送の有無で別ファイルになっています。
>・ SHIDAFC1.g3m → 画面転送なし (4.2204 秒)
>・ SHIDAFC2.g3m → 画面転送あり (7.6356 秒)

1.5倍以上になっているので、最適化効果炸裂ですね!


>また、ElseIf よりも現在の If の入れ子のほうが速いのでこれはそのままです。
>速度優先なら If の入れ子、見た目優先なら ElseIf と使い分ければよさそうです。(←ココ裏技記載ポイント?)

ElseIfが速いのかと思ったら微妙に遅かったというのがちょっとびっくりでした。(^^;


>"_Pixel" コマンドは範囲外でエラーにならないので、直前のエラー回避部分を消しました。

意外とコストのかかる範囲外判定が不要になるのはMLコマンドの有利な点ですね。


>画面転送には "_DispVram" の "@" オプションを使いましたが、"PutDispDD@" よりも速いようです。
>数バージョン前では、逆に "_DispVram@" のほうが遅かったと記憶しています。

処理速度的には、ステータスライン分の転送がない分、PutDispDDが速くなってもいいはずなのですが、
右上のウォーターマークを表示するので微妙なところですね。
これは、バージョンが変わるごとに速度差が入れ替わるのかもしれません。(^^;


>とし、実行時に通る If の数の期待値は
>(0.85×1 + 0.08×2 + (0.06+0.01)×3) × 30000
>より、36,600 回になりました。

>これで条件分岐の回数を 4 割削減でき、1 - 2 秒の削減に繋がりました。

>以上です。

さすがですね。手作業の分岐予測と最適化という感じで凄まじい効果ですね。
_DispVramのエラー回避でTryコマンドを使われるあたりもさすがとしか言いようがありません。(^^)

で、このColon様の最適化版をさらに最適化することは可能かどうかと考えたところ、
iron2様のリフレッシュレート削減というのを思い出して、実験したところさらなる高速化が出来ました。

ポイントは、
・リフレッシュレートを1/8sに設定して画面転送削減。
・数値をすべて変数で置き換える。
・_Pixel前の座標計算をオペランド化。
・Tの計算をまとめて括弧削減。

https://pm.matrix.jp/upload/upload.cgi?get=00108

・ SHIDAFS1.g3m → 画面転送なし (3.79秒) CG50ノーマル
・ SHIDAFS2.g3m → 画面転送あり (4.34秒) CG50ノーマル

若干描画にパラパラ感が出るものの、転送版でも転送無し並の速度になりました。
初版の実数版で44秒かかっていたことを考えると最適化効果で10倍速まできました。(^^)

Re: Some of C.Basic versions archives have problems

Hi CalcLoverHK

> I noticed CBASIC032 and CBASIC040 in https://egadget2.web.fc2.com/archives/fx-9860GII/Addin/Cbasic_Change_Log.html are empty files. Did they exist far before? (^^;

Thank you for bringing this to my attention.

I checked CBASIC folder in the zip is empty, so I Uploaded original files again. However the issue won't be solved. I'm not sure why it happens.

So please download from this link;

Ver 0.32: http://pm.matrix.jp/upload/upload.cgi?get=00106
Ver 0.40: http://pm.matrix.jp/upload/upload.cgi?get=00107




Re: "Max()" コマンドの存在を忘れていました……

Colon様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、

管理人のやすです。


> というわけで、SIR プログラムの
>
> > 1-Variable List 2,1
> > maxX→A
> > 1-Variable List 3,1
> > maxX→B
> > 1-Variable List 4,1
> > maxX→C
> >
> > A→M
> > M<B⇒B→M
> > M<C⇒C→M
>
> の部分は
>
> > Max(List 2)→A
> > Max(List 3)→B
> > Max(List 4)→C
> >
> > Max({A,B,C})→M
>
> にしたほうが高速動作します。
>
> 恐れ入りますが、SIR2 の修正をお願いします。> 管理人様


リストの最大値を求める部分のスピードアップに対応して、差替えアップデートしました。
実は昨晩のうちにダウンロードファイルは差し替えしておりましたが、記事本文は先ほど修正しました。

グラフデータを準備している間、空白画面で待たされるのが気になっていたので、この間

 = Processing data =

と表示するようにしてみました。


Some of C.Basic versions archives have problems

Hi all

I noticed CBASIC032 and CBASIC040 in https://egadget2.web.fc2.com/archives/fx-9860GII/Addin/Cbasic_Change_Log.html are empty files. Did they exist far before? (^^;

Cheers
CalcLoverHK

"Max()" コマンドの存在を忘れていました……

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

すみません、"1-Variable" の仕様を調査し終えてから気付いたのですが、

> 最大値や最小値、平均値の計算が楽になるので "1-Variable" コマンドは先駆けて実装してほしいのですが、お願いできますか? > sentaro様

こんなことを書きましたが、"Max()" コマンドで List の最大値が求められるのをすっかり忘れていました。(^^;

というわけで、SIR プログラムの

> 1-Variable List 2,1
> maxX→A
> 1-Variable List 3,1
> maxX→B
> 1-Variable List 4,1
> maxX→C

> A→M
> M<B⇒B→M
> M<C⇒C→M

の部分は

> Max(List 2)→A
> Max(List 3)→B
> Max(List 4)→C

> Max({A,B,C})→M

にしたほうが高速動作します。

恐れ入りますが、SIR2 の修正をお願いします。> 管理人様


知っているコマンドが増えたとして前向きに捉えようと思いますが、

> 最大値や最小値、平均値の計算が楽になるので

こうした利点はありません。(^^;

ただ、導入すれば現在の C.Basic に無い機能として、
・ 度数を設定しての平均値、最小値、最大値、総和、データの個数の計算
・ 二乗和の計算
・ 標本標準偏差、母標準偏差の計算
・ 中央値、四分位数の計算
・ 最頻値の計算

が出来るようになるので、
もし使ってみたいという方がいればルーチンを作成します。

SHIDA 最適化

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

https://pm.matrix.jp/CB/SHIDACG2.zip
当時作成していた最速プログラムはSHIDACGH.g3mですが、
> CG50ノーマルで12.7秒かかります。
画面更新を抑制すると、7.15秒になりますが、
> そこからさらに最適化されるとはさすがです。
> ぜひColon様、最適化版もアップしてくださいませ。(^^)

二項演算化の結果が私と同じだったので一安心しました。(^^)

最新バージョンの C.Basic で計測したところ、SHIDACGH.g3m の実行時間 (10 回平均) は、
画面転送デフォルトの場合は 12.7789 秒、画面転送なしの場合は 6.4835 秒です。

クロックは Ptune2 の [F3] の設定で、C.Basic の速度に関わる設定項目は以下のようにしています。

・ Break Stop: on
・ Edit +Indent: off
・ IfEnd Check: off


では、私が最適化したもののダウンロードリンクです。
以前作ったものを更に高速化して、現バージョンで最速 (?) で動くパターンをアップしました。
https://pm.matrix.jp/upload/upload.cgi?get=00105

ML コマンドに切り替えたので、画面転送の有無で別ファイルになっています。
・ SHIDAFC1.g3m → 画面転送なし (4.2204 秒)
・ SHIDAFC2.g3m → 画面転送あり (7.6356 秒)

FC の F は "Fast"、C は "Colon" のつもりです。
決してサッカーチームではありません。


> 実数モードでは倍くらいの差が出ますが、整数モードで動作する場合でも、
> _Pixelの方が微妙に速いはずですが、何かの不都合があったかもしれません。(^^;

最新バージョンではちゃんと ML コマンドの方が速かったです。(^^)


以下、最適化の要点を説明します。

まず、'#Break0 で高速化を図りました。
C.Basic 自体の設定を変えると、他のプログラムの実行時に中断できなくなるのが怖いので、プログラムの中で変更するように書きました。

ML コマンドに変更することでグラフの設定が必要なくなるので除去。

乱数の範囲や数式など、結果が同じでも若干高速になるようにちょっといじっています。

If 文の Then は C.Basic では省略可で、無いほうが速いので消しました。

また、ElseIf よりも現在の If の入れ子のほうが速いのでこれはそのままです。
速度優先なら If の入れ子、見た目優先なら ElseIf と使い分ければよさそうです。(←ココ裏技記載ポイント?)

"Int" コマンドは、整数モードではあっても無くても同じなので速くなるように除去。

"_Pixel" コマンドは範囲外でエラーにならないので、直前のエラー回避部分を消しました。

画面転送には "_DispVram" の "@" オプションを使いましたが、"PutDispDD@" よりも速いようです。
数バージョン前では、逆に "_DispVram@" のほうが遅かったと記憶しています。

ML 座標系と純正の座標系が違いますが、今回のプログラムでは考慮していません (とにかく高速化するため)。

気になるようであれば、若干遅くなりますが "_Pixel" と "_DispVram" の "G" / "H" を "G+2" / "H+2" に置き換えればよいです (代入の式をいじるよりこっちのほうが速い)。


そして、一番大きなロジックの変更点が If 文の入れ子に関するものです。

従来は、If 文を通過する回数が
・ 1 % の確率で 1 回
・ 6 % の確率で 2 回
・ 8 % の確率で 3 回
・ 85 % の確率で 3 回
でした。

ループは 30,000 回なので、実行時に通る If の数の期待値は、
(0.01×1 + 0.06×2 + (0.08+0.85)×3) × 30000
より、87,600 回です。

最適化にあたり、判定の順序を逆にすることで、
・ 1 % の確率で 3 回
・ 6 % の確率で 3 回
・ 8 % の確率で 2 回
・ 85 % の確率で 1 回

とし、実行時に通る If の数の期待値は
(0.85×1 + 0.08×2 + (0.06+0.01)×3) × 30000
より、36,600 回になりました。

これで条件分岐の回数を 4 割削減でき、1 - 2 秒の削減に繋がりました。

以上です。


数か月前は "_Pixel" より "PxlOn" のほうが速かったり、"_DispVram@" より "PutDispDD@" のほうが速かったりしたので、
そのバージョンは何らかの原因で ML コマンドが低速化していたのだと思います。

Re^14: SIR モデルグラフ描画プログラム その 2

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

>> 即値として指定できるのは "1" だけなので、
>> 実際にこの引数に設定できるのは各 List または "1" ということになります。

> ふむ、他のグラフコマンドについても、しっかりと調べないとですね。

"1-Variable" / "2-Variable" コマンドはグラフコマンドではなく統計コマンドなのですが、
私が "1" を設定できると知ったのは、リスト機能から {CALC} → {SET} で入れる設定画面からでした。

Casio Basic の各機能を呼び出して使うマクロ的なコマンドは、コマンドの仕様より機能の仕様を先に覚えたほうがよいです (経験上)。

これらのコマンドは説明書でも詳しく説明されていないので、元の機能の仕様が分かっていると手探りでも使いこなしやすくなります。

> 即値の指定が使えそうなコマンドとしては他にどんなのがありそうでしょうか?

私が把握している範囲では先程挙げた 2 つですが、
私自身統計コマンドはあまり使ったことがないのでよくわかりません。(^^;

むしろ、今回の SIR プログラムで初めて使いました。


最大値や最小値、平均値の計算が楽になるので "1-Variable" コマンドは先駆けて実装してほしいのですが、お願いできますか? > sentaro様

仕様は今週中に調べてお伝えします。


> CG50では同時描画で時間短縮されるようなので、リフレッシュ時間が律速になっている可能性が考えられます。

> CGシリーズとFXシリーズで大きく違うのが画面転送速度です。
> FXシリーズでは元祖オリジナルでも600fps出るのに対して、
CGシリーズではCG20はデフォルトで35fps程度、CG50でも90fps程度ですから桁違いです。
> この画面転送が実行速度にてきめんに効いてくる状況の中、それが無駄に多いのが純正の描画コマンドですが、
> まとめて描画した後で画面転送するDrawStatのようなコマンドは比較的高速に動作しますね。
> ということで、この場合は、
> 3グラフ同時描画で画面転送の頻度が減っている可能性がありそうです。

Ptune2 で [F3] の設定にした CG20 (80 fps 程度) よりも、CG50 デフォルト (90 fps 程度) のほうが高速なんですね。

グラフ描画の画面転送頻度については既に実験しているのですが、どうやら X 座標をひとつずらすごとに画面転送しているわけではないっぽいです。

これは C.Basic でのグラフ描画実装のために行った実験で、X 座標をひとつずらして PutDispDD というルーチンと純正のグラフ描画速度を比較すると、
"Y=X" のような単純な式の場合は純正に比べて自作ルーチンが何倍も遅いという結果になりました。
(複雑な式の場合は計算が高速な C.Basic の自作ルーチンのほうが速くなります。)

以前グラフ同時描画関連のコマンドを保留にさせてください、というお願いをしましたが、純正でどのように画面転送をしているかが分からないのが理由です。(^^;

どなたか解決策をお持ちでしょうか?

他には、グラフ描画時に左上に式を表示しますが、VRAM とは関係なく表示しなければいけないという問題もあります。
(一度完成後のグラフ画面を作ったあと、バッファに退避してからグラフィック VRAM を消して、途中経過を別に逐次描画する、とかかなぁ……。)


> はい、そうなんです。
> Casio Basicの進化は、G ⇒ GII という流れです。なので G でまともに使える最終OSバージョン に比べて、GII の方が実装されているコマンドや関数が増えています。

ありがとうございます。

コマンドの以外でも、9860G/GII よりも GIII や GRAPH 35E+II のほうが高機能 (CG シリーズ互換) になっていることがありますよね。

> Colon様オリジナルのグラフ描画部分には、MENUコマンドが使われています。
実は、MENUコマンドは、fx-9860G OS1.xx には実装されていないことを忘れていました。

> そこで、動作可能機種は、fx-9860G OS2.00 以降と修正致します。
> ⇒ 本文とダウンロード時のポップアップ画面での記述を修正しました。

> fx-9860G OS2.00以降には、fx-9860GII、fx-9860GIII を含みます。

了解しました。(^^)


長くなったので、SHIDA プログラムの改善については投稿を分けます。m(_ _)m

Re^13: SIR モデルグラフ描画プログラム その 2

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

管理人様、Colon様、
>これは、いつも忘れてしまうTipsです。永久保存版にしなければ...
>速度優先の場合は二項演算化していたので三項演算のことはあまり意識していませんでしたが、そのような違いがあるのですね。

通常の何もない場合にかかる時間を100とすると、
この最適化機構を組み込んでない場合と比較すると、
三項以上の複雑な数式では3割~5割くらい遅くなりますが、
括弧を使って二項演算化するとそれが倍速近くなるので、
結果的に何もない場合に比較して3割位速くなるという仕組みです。

ノーマル:100
C.Basic:130
最適化:70

ということで、三項以上の演算が多い場合は最適化しないと効果は出ないですが、
二項だけの演算が多い場合は、単純に倍速程度になるので、
トータルとしては速くなるかなという感じです。(^^)


>C.Basic 裏技集みたいなのがあると面白いかもしれませんね。
>実行速度を上げたい場合、ソースコードを見やすくしたい場合 (Switch 文のフォールスルー時の ":" など) のように目的別に探せると便利そうです。

裏技集、いいですね!
私の知らない裏技もあるかもしれませんし、ちょっと楽しみだったりします。


>当面は C.Basic の同梱 TXT ファイルにざっくりまとめておいて、
>コロナが収まってからでも管理人様に記事にしていただくのもありかも?

>その企画、面白ろそうですね!
>是非とも、アングラでお進め頂き、時期をみて公開すると良さそうですね!

全面的に賛成です。(^^)
UCFで動作モードを切り替えて自動的にベンチマークするプログラムのサンプルをアップしてますが、
ベンチマークプログラムにすると裏技を使う使わないの効果がはっきり見えるので面白そうです。(^^)


>> Casio Basic入門の新たなネタができました!
>>
>> Colon様のご協力の元、ボチボチやってみようと思います。

>おっ、いいですね!
>是非是非!! (^^)

これも全面的に賛成です。(^^)


>各グラフの描画にかかる時間が 3 倍になって、かつ同時に描画しているためだと思います。
>CG50では同時描画で時間短縮されるようなので、リフレッシュ時間が律速になっている可能性が考えられます。
>このあたりは、以下のコメントに関して 実態を調べるサンプルプログラムを sentaro様が検討なさっているとのことなので、いずれ分かってくると思われます。
https://egadget.blog.fc2.com/blog-entry-718.html

CGシリーズとFXシリーズで大きく違うのが画面転送速度です。
FXシリーズでは元祖オリジナルでも600fps出るのに対して、
CGシリーズではCG20はデフォルトで35fps程度、CG50でも90fps程度ですから桁違いです。
この画面転送が実行速度にてきめんに効いてくる状況の中、それが無駄に多いのが純正の描画コマンドですが、
まとめて描画した後で画面転送するDrawStatのようなコマンドは比較的高速に動作しますね。
ということで、この場合は、
3グラフ同時描画で画面転送の頻度が減っている可能性がありそうです。


>なお、fx-9750GIII で動作可能かは、実機が届いてから確認予定ですが、多分動きますよね?>sentaro様

欧州のGraph35+EIIや9860GIIIと機能的な差がほぼ無さそうなので、間違いなく動作します。(^^)




Colon様、
>即値として指定できるのは "1" だけなので、
>実際にこの引数に設定できるのは各 List または "1" ということになります。

>これに関しては、C.Basic で他の即値も指定できるように改善する余地がありそうですね。

即値の指定が使えそうなコマンドとしては他にどんなのがありそうでしょうか?


>そういえば、(多分ここには報告していない)
>数か月前に SHIDACGI をいじって遊んでいたのですが、二項演算化で 3 秒近く短縮できたのでびっくりしました。

>他に、条件分岐のアルゴリズムを改善したり、C.Basic 独自の文法や甘いエラー判定を利用したりしたところ、
>従来の 11.74 秒から最大で 5.29 秒まで短縮できました (数か月前のバージョンで測定)。

>これは途中の画面更新なしという条件ですが、5 秒台というのは sentaro様によるアドインと同レベルなので、
>C.Basic の隠れ仕様のポテンシャルの高さが伺えます。

https://pm.matrix.jp/CB/SHIDACG2.zip
当時作成していた最速プログラムはSHIDACGH.g3mですが、
CG50ノーマルで12.7秒かかります。
画面更新を抑制すると、7.15秒になりますが、
そこからさらに最適化されるとはさすがです。
ぜひColon様、最適化版もアップしてくださいませ。(^^)


>そういえば、"_Pixel" コマンドよりも "PixelOn" コマンドを使うほうが高速だった記憶があるのですが、これは何か理由があるのでしょうか?

実数モードでは倍くらいの差が出ますが、整数モードで動作する場合でも、
_Pixelの方が微妙に速いはずですが、何かの不都合があったかもしれません。(^^;

Re^12: SIR モデルグラフ描画プログラム その 2

Colon様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、

管理人のやすです。

SIR2.g1m の動作可能機種について、再度修正致します。

Colon様オリジナルのグラフ描画部分には、MENUコマンドが使われています。
実は、MENUコマンドは、fx-9860G OS1.xx には実装されていないことを忘れていました。

そこで、動作可能機種は、fx-9860G OS2.00 以降と修正致します。
⇒ 本文とダウンロード時のポップアップ画面での記述を修正しました。

fx-9860G OS2.00以降には、fx-9860GII、fx-9860GIII を含みます。



なお、fx-9750GIII で動作可能かは、実機が届いてから確認予定ですが、多分動きますよね?>sentaro様


[追記あり] Re^11: SIR モデルグラフ描画プログラム その 2

Colon様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、

管理人のやすです。

> > なるほど、即値での設定が出来るということなのですね。よく分かりました。
>
> 即値として指定できるのは "1" だけなので、
> 実際にこの引数に設定できるのは各 List または "1" ということになります。

ふむ、他のグラフコマンドについても、しっかりと調べないとですね。


> これに関しては、C.Basic で他の即値も指定できるように改善する余地がありそうですね。

なるほど...例えば、式や関数の戻り値として Ture / False の指定が出来るようになると、応用が広がりそうですね!


> 体感短く感じますが、私の CG20 では実際に測ってみるとあまり変わっていません (CG50 ではどうかわからない)。
>
> 各グラフの描画にかかる時間が 3 倍になって、かつ同時に描画しているためだと思います。

CG50では同時描画で時間短縮されるようなので、リフレッシュ時間が律速になっている可能性が考えられます。
このあたりは、以下のコメントに関して 実態を調べるサンプルプログラムを sentaro様が検討なさっているとのことなので、いずれ分かってくると思われます。
https://egadget.blog.fc2.com/blog-entry-718.html



>
> そういえば、(多分ここには報告していない)
> 数か月前に SHIDACGI をいじって遊んでいたのですが、二項演算化で 3 秒近く短縮できたのでびっくりしました。
>
> 他に、条件分岐のアルゴリズムを改善したり、C.Basic 独自の文法や甘いエラー判定を利用したりしたところ、
> 従来の 11.74 秒から最大で 5.29 秒まで短縮できました (数か月前のバージョンで測定)。
>
> これは途中の画面更新なしという条件ですが、5 秒台というのは sentaro様によるアドインと同レベルなので、
> C.Basic の隠れ仕様のポテンシャルの高さが伺えます。

たしか、sentaro様により最速ケースのコードが公開されていたような気がします。


> C.Basic 裏技集みたいなのがあると面白いかもしれませんね。
>
> 実行速度を上げたい場合、ソースコードを見やすくしたい場合 (Switch 文のフォールスルー時の ":" など) のように目的別に探せると便利そうです。
>
> 当面は C.Basic の同梱 TXT ファイルにざっくりまとめておいて、
> コロナが収まってからでも管理人様に記事にしていただくのもありかも?

その企画、面白ろそうですね!
是非とも、アングラでお進め頂き、時期をみて公開すると良さそうですね!


>
> > グラフ関連コマンドは、9860G、GII では実装されているコマンド数が違います。SIR2 は G では動作しません。
> > このあたりの整理も含めて、各機種でのすり合わせ作業も必要になりそうです。
>
> 代替コマンドを検討しなければなりませんね。
> GII は G の上位互換という感じなんでしょうか?

はい、そうなんです。
Casio Basicの進化は、G ⇒ GII という流れです。なので G でまともに使える最終OSバージョン に比べて、GII の方が実装されているコマンドや関数が増えています。


> また、動かないコマンドはどれでしょうか?
SIR2については、私のミス、勘違いでした。
描画の色設定の部分を削除すればGでもGIIでも動くことを確認しました。

描画スタイルを変えようとして、試行錯誤しているままにしていたので、おかしなことになっていました。
ダウンロードファイルに含まれる SIR2.G1M を修正して、差替えアップしようと思います。

失礼しました。

[追記]
結果として、Colon様のコードは、2005年発売のfx-9860G 以降の全てのグラフ関数電卓のモデルに搭載されているダイナグラフ機能で動きます。

これは、ある意味凄い互換性だと思います。
sentaro様の受け売りですが、プログラム電卓の進化は10年単位と遅いので、このようなことが可能で、fx-9860G に搭載された Casio Basic はそれだけ完成度が高いと言えると思います。

なので、グラフ機能コマンドを系統的に調べるのは、有用で意味のあることだと再認識しているところです。

Re^10: SIR モデルグラフ描画プログラム その 2

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

管理人様、sentaro様、

> なるほど、即値での設定が出来るということなのですね。よく分かりました。

即値として指定できるのは "1" だけなので、
実際にこの引数に設定できるのは各 List または "1" ということになります。

これに関しては、C.Basic で他の即値も指定できるように改善する余地がありそうですね。

> 描画時間が短くなって(多分1/3?)、良いですね!

体感短く感じますが、私の CG20 では実際に測ってみるとあまり変わっていません (CG50 ではどうかわからない)。

各グラフの描画にかかる時間が 3 倍になって、かつ同時に描画しているためだと思います。

> 乗算省略がC.Basicで遅くなるのは二項演算最適化が働かないためなので、
> 例えば、三項演算になる場合は、
> A×B×C
> と
> ABC
> では、
> 乗算省略のABCの方が若干速くなります。

速度優先の場合は二項演算化していたので三項演算のことはあまり意識していませんでしたが、そのような違いがあるのですね。

そういえば、(多分ここには報告していない)
数か月前に SHIDACGI をいじって遊んでいたのですが、二項演算化で 3 秒近く短縮できたのでびっくりしました。

他に、条件分岐のアルゴリズムを改善したり、C.Basic 独自の文法や甘いエラー判定を利用したりしたところ、
従来の 11.74 秒から最大で 5.29 秒まで短縮できました (数か月前のバージョンで測定)。

これは途中の画面更新なしという条件ですが、5 秒台というのは sentaro様によるアドインと同レベルなので、
C.Basic の隠れ仕様のポテンシャルの高さが伺えます。

そういえば、"_Pixel" コマンドよりも "PixelOn" コマンドを使うほうが高速だった記憶があるのですが、これは何か理由があるのでしょうか?

> これは、いつも忘れてしまうTipsです。永久保存版にしなければ...

C.Basic 裏技集みたいなのがあると面白いかもしれませんね。

実行速度を上げたい場合、ソースコードを見やすくしたい場合 (Switch 文のフォールスルー時の ":" など) のように目的別に探せると便利そうです。

当面は C.Basic の同梱 TXT ファイルにざっくりまとめておいて、
コロナが収まってからでも管理人様に記事にしていただくのもありかも?

> Casio Basic入門の新たなネタができました!

> Colon様のご協力の元、ボチボチやってみようと思います。

おっ、いいですね!
是非是非!! (^^)

> グラフ関連コマンドは、9860G、GII では実装されているコマンド数が違います。SIR2 は G では動作しません。
> このあたりの整理も含めて、各機種でのすり合わせ作業も必要になりそうです。

代替コマンドを検討しなければなりませんね。
GII は G の上位互換という感じなんでしょうか?

また、動かないコマンドはどれでしょうか?

Re^9: SIR モデルグラフ描画プログラム その 2

sentaro様、iron2様、Colon様、CalcLoverHK様、C.Basicユーザーの皆様、

管理人のやすです。


> 乗算省略がC.Basicで遅くなるのは二項演算最適化が働かないためなので、
> 例えば、三項演算になる場合は、
> A×B×C
> と
> ABC
> では、
> 乗算省略のABCの方が若干速くなります。
>
> C.Basic的な最適化だと、この場合は、
> (A×B)×C
> または
> A×(B×C)
> とすると倍くらい速くなりますね。(^^)

これは、いつも忘れてしまうTipsです。永久保存版にしなければ...



> >グラフの可視化能力による「理解のしやすさ」という要素が加わって、魅力倍増ですね! (^^) (←グラフ機能の沼に引きずり込もうとする
>
> 高精細カラーグラフ電卓が効果的に活きてくる場面なので、
> 私も管理人様に続いて、引きずり込まれつつあります。(^^;

> ということで、Colon様の強力な実践的経験値と、管理人様のコマンド探索パワーに大いに期待しています。(^^)

Casio Basic入門の新たなネタができました!

Colon様のご協力の元、ボチボチやってみようと思います。
グラフ関連コマンドは、9860G、GII では実装されているコマンド数が違います。SIR2 は G では動作しません。
このあたりの整理も含めて、各機種でのすり合わせ作業も必要になりそうです。



> >グラフ電卓で観る感染症数理モデル
> >https://egadget.blog.fc2.com/blog-entry-721.html
>
> こういうサンプルプログラム例&解説があるとグラフ電卓の敷居は一気に下がりそうですね。
> グラフ電卓の清く正しい使い方の好記事だと思います!(^^)

私も結構ハマってしまいました。


> なにぶん、本人が純正のグラフ機能をほとんど使ってなかったという初心者マーク全開のグラフ電卓ユーザーなので、(^^;

これは、私も全く同じ状況です。それだけに Colon様のサンプルプログラムは目からうろこです。


> 今回のSIR2のような実践的なプログラムがあると、まずはそこからということで、とても参考になります。

C.Basicで実行可能になると、次の改造計画を進められそうで、楽しみです。


ちなみに、政治経済は日常的な私の関心事ではありますが、当ブログでは一体封印する方針できました。
でも、新型コロナ感染症拡大の昨今、どうしても黙っていられず、我慢できずに「管理人の独り言」を追記してしまいました。時期をみて削除するかも知れませんが、今は言わせて下さい...という感じです。




> >ところで、fx-9860GIII の記事のコメントで、液晶の応答性について意外な結果になっていることをアップしていますが、その後何かお分かりになったでしょうか?
> >あちらのコメント欄にて、お待ちしております。
>
> しっかり確認させていただいてますが、少し疑問点が出てきたので、
> 確実に差が出る検証プログラムの作成で若干手間取ってます。
> ので、それが出来次第再度参上いたします。(^^;

sentaro様の分析結果を楽しみにしてお待ちしております。


Re^8: SIR モデルグラフ描画プログラム その 2

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

Colon様、

>これは完全に私の癖ですね。(^^;

>Frac や Int などのコマンドを使う際に、分数記号を使うと括弧を削減できることがあるので、
>関係ない場面でも "÷" ではなく "⌟" を使っていることが多いです。

そういえば、以前、ウラム螺旋のプログラムでも分数記号を使われていたことがあったのを思い出しました。(^^)


>純正 Casio Basic のみを使っていた時期からの癖は、他にも乗算記号や閉じ括弧の省略があります。
>乗算記号は C.Basic では省略しないほうが速い、閉じ括弧は他の人にソースを見せるときに汚いので省略しないように気を付けていますが、
>分数記号は TXT 変換したとき以外はあまり害がない (と思っている) ので癖を直していません。(^^;

分数記号や乗算省略や閉じ括弧省略は純正ならではのバイト節約最適化手法ですね。(^^)

乗算省略がC.Basicで遅くなるのは二項演算最適化が働かないためなので、
例えば、三項演算になる場合は、
A×B×C

ABC
では、
乗算省略のABCの方が若干速くなります。

C.Basic的な最適化だと、この場合は、
(A×B)×C
または
A×(B×C)
とすると倍くらい速くなりますね。(^^)

C.Basicでの分数記号は関数よりも優先順位の高い除算という意味しかないので、括弧が節約できるくらいの利点しかなさそうです。(^^;


>電卓の一番の強み「いつでもどこでも」だけでなく、
>グラフの可視化能力による「理解のしやすさ」という要素が加わって、魅力倍増ですね! (^^) (←グラフ機能の沼に引きずり込もうとする

高精細カラーグラフ電卓が効果的に活きてくる場面なので、
私も管理人様に続いて、引きずり込まれつつあります。(^^;

>とりあえず dY/dX のルーチンが大体完成したらグラフ描画部分に戻ります。

グラフ機能も微分もColon様に頼りっぱなしですみません!(^^;
どうかよろしくお願いします。(^^)




管理人様、

>グラフ電卓で観る感染症数理モデル
https://egadget.blog.fc2.com/blog-entry-721.html

こういうサンプルプログラム例&解説があるとグラフ電卓の敷居は一気に下がりそうですね。
グラフ電卓の清く正しい使い方の好記事だと思います!(^^)


>プログラムを改造して、色々なグラフを描かせようと思う時、8行使えてメモリがたっぷり使える C.Basic で動かしたいという気持ちが益々膨れています。
>ご対応に期待しておりますので、よろしくお願い致しますm(_ _)m

グラフ機能はもともとサンプル実装の域を出ないものだったので、
今回、やっとリニューアルというか本格実装を進めていければと思っていますが、
なにぶん、本人が純正のグラフ機能をほとんど使ってなかったという初心者マーク全開のグラフ電卓ユーザーなので、(^^;
多種多様なグラフ機能の豊富さにどこから手をつけていいものか路頭に迷うような状況だったのですが、
今回のSIR2のような実践的なプログラムがあると、まずはそこからということで、とても参考になります。
ということで、Colon様の強力な実践的経験値と、管理人様のコマンド探索パワーに大いに期待しています。(^^)


>ところで、fx-8760GIII の記事のコメントで、液晶の応答性について意外な結果になっていることをアップしていますが、その後何かお分かりになったでしょうか?
>あちらのコメント欄にて、お待ちしております。

しっかり確認させていただいてますが、少し疑問点が出てきたので、
確実に差が出る検証プログラムの作成で若干手間取ってます。
ので、それが出来次第再度参上いたします。(^^;

Re^7: SIR モデルグラフ描画プログラム その 2

Colon様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

管理人のやすです。

> 1-Variable では何をやっているのでしょうか?
>
> あ、確かにマニュアルに書いてありませんね。
> "1-Variable" コマンドの 2 つ目の引数は度数を指定するものですが、

なるほど、即値での設定が出来るということなのですね。よく分かりました。


> > 現在SIR2で使っているコードには、かけ算を明示的に書いているのは、C.Basicでの動作を完全に意識しているということですね!!
>
> その通りです。(^^)

やっぱり...


> 縦軸の目盛りが表示されるようになっていい感じですね。(^^)
> 管理人様が V-Win と縦軸の数値の表示を調整してくださったので、

Colon様が考えていたのと同じことをやれたみたいです。良かったです。


> 取り敢えず現時点では、グラフの各種設定時に "SimulOn" を追加、"Reset Parameter" がタイポなのでそこを修正すればよいと考えています。

あっ、g1m、g3m 両方とも修正して、ダウンロードするzipファイルを差し替えました。

記事で使っている画像は、そのうち修正します。



> "SimulOn" は、複数のグラフを同時に描画するようにするコマンドです。
> 意味的には 1 つずつグラフを描くよりも同時並行で描いたほうがよいと思います。

描画時間が短くなって(多分1/3?)、良いですね!


> 何パーセント削減すると、何日後の感染者数がどうなっている、みたいな説明はたまにやっているのを見かけますが、
> 70 % より 80 % の方が望ましいことは分かるんですが、んじゃあ何故 90 % じゃないのか、とか、最低 7 割・目標 8 割のその 10 % の幅は何なんだ、などと突っ込みどころが満載なわけです。
> 今回の管理人様のシミュレーションで 8 割という数字にこんな根拠があったのか、と理解できました。

普通そうですよね!
私もそうでしたが、調べてみて納得したわけです。


> 何で 9 割とかじゃないんだと疑問に思っていた私は、人と会ったり外に出たりするのがあまり得意ではないので、ここぞとばかりに通院以外の外出をゼロにしていました。(笑)

私の場合は、マスク、手洗いと消毒、外出50%削減で十分だと考えて、実行しています。
今日までは、ちょっと憚られるところがありましたが、明日からは大手を振って、この方針を続けられそうです。


> よく「数値を根拠として示す」と言いますが、その数値はどこから出てくるものなのかも説明しないと十分な説得力は生まれないケースは多くあると思います。
> 報道や記者会見では、理由を十分に説明せずに「こうして下さい、お願いします」と言っているだけのことが多いと感じていますが、
> これは歯磨きが嫌いな子供に理由も説明せずに「歯を磨きなさい」と言ったり、野菜が苦手な子供に理由を説明せずに「野菜を食べなさい」と言っているのと同じ状況だと思います。

本当にそうですよね。

昨日の安倍総理の会見、東京都知事の会見は、精神論ばかりで、数値に基づいた話が一切ありませんでした。
これでは、ダメだと思います。

一方、大阪府知事の会見は、明確な数値で指針を示していました。こうあるべきだと思います。

でも、個人レベルで数値で納得すれば、それに従って行動できるのが、日本では可能です。
というのも、強制力のない要請レベルしかできないのが日本なので、それを逆手にとれば我々個人レベルで自由に行動できると思います。


> 電卓の一番の強み「いつでもどこでも」だけでなく、
> グラフの可視化能力による「理解のしやすさ」という要素が加わって、魅力倍増ですね! (^^) (←グラフ機能の沼に引きずり込もうとする

えと、既に引きずり込まれてしまっています(^_^;


> PDF の文章を見てもまだピンと来ていない部分がありましたが、キーワードや具体例を分かりやすくまとめていただいてより噛み砕いて理解できました。

それをお聞きして、嬉しいです。


> あっ、最近微分に気をとられ過ぎて私がサボっていたから……。(^^;
>
> とりあえず dY/dX のルーチンが大体完成したらグラフ描画部分に戻ります。

よろしくお願い致します。


Re^6: SIR モデルグラフ描画プログラム その 2

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

管理人様、
> 1つ、完全に分からないコマンド 1-Variable があります。
> 1つめの引数に List N を使い、2つめの引数に整数を使っています。マニュアルを見る限り、2つめの引数にも List を使う例しかありません。これに続く maxX コマンドはリストの2つめ以降 (List 2[1] 以降) の要素の最大値を返すものだとは分かりますが、1-Variable では何をやっているのでしょうか?

あ、確かにマニュアルに書いてありませんね。
"1-Variable" コマンドの 2 つ目の引数は度数を指定するものですが、

1-Variable List 1, List 2

とすれば List 1[1] の値の度数が List 2[1]、List 1[2] の値の度数が List 2[2]、……、List 1[k] の値の度数が List 2[k] となります。
一方、

1-Variable List 1, 1

とすれば List 1[1] の値の度数が 1、List 1[2] の値の度数が 1、……、List 1[k] の値の度数が 1 となります。


> 現在SIR2で使っているコードには、かけ算を明示的に書いているのは、C.Basicでの動作を完全に意識しているということですね!!

その通りです。(^^)

> 実は、ViewWindow 設定のところは、私も変更してみています。
> あと、パラメータリストの一覧/入力画面に、Re値の表示を追加してみています。

縦軸の目盛りが表示されるようになっていい感じですね。(^^)

> Colon様の改善版を拝見して、良いところはそのまま頂こうと思います。

管理人様が V-Win と縦軸の数値の表示を調整してくださったので、
取り敢えず現時点では、グラフの各種設定時に "SimulOn" を追加、"Reset Parameter" がタイポなのでそこを修正すればよいと考えています。

"SimulOn" は、複数のグラフを同時に描画するようにするコマンドです。
意味的には 1 つずつグラフを描くよりも同時並行で描いたほうがよいと思います。


> 政府の80%抑制という、良く分からない指針は、このように正しく置き換えて理解すべきだと思います。私がTVのコメンテーターなら、SIRモデルの概要を説明した上で、このような具体的な指針例を提示すると思います。

何パーセント削減すると、何日後の感染者数がどうなっている、みたいな説明はたまにやっているのを見かけますが、
70 % より 80 % の方が望ましいことは分かるんですが、んじゃあ何故 90 % じゃないのか、とか、最低 7 割・目標 8 割のその 10 % の幅は何なんだ、などと突っ込みどころが満載なわけです。

今回の管理人様のシミュレーションで 8 割という数字にこんな根拠があったのか、と理解できました。

何で 9 割とかじゃないんだと疑問に思っていた私は、人と会ったり外に出たりするのがあまり得意ではないので、ここぞとばかりに通院以外の外出をゼロにしていました。(笑)


よく「数値を根拠として示す」と言いますが、その数値はどこから出てくるものなのかも説明しないと十分な説得力は生まれないケースは多くあると思います。

報道や記者会見では、理由を十分に説明せずに「こうして下さい、お願いします」と言っているだけのことが多いと感じていますが、
これは歯磨きが嫌いな子供に理由も説明せずに「歯を磨きなさい」と言ったり、野菜が苦手な子供に理由を説明せずに「野菜を食べなさい」と言っているのと同じ状況だと思います。


> 電卓でSIRモデルのグラフを描けるのは、いつでもどこでも人に説明ができて良いかも知れず、これぞプログラム電卓の出番だと思います。

電卓の一番の強み「いつでもどこでも」だけでなく、
グラフの可視化能力による「理解のしやすさ」という要素が加わって、魅力倍増ですね! (^^) (←グラフ機能の沼に引きずり込もうとする


> そこで、とりあえずSIRモデルの Casio Basic への移植記事をアップしました。

> グラフ電卓で観る感染症数理モデル
https://egadget.blog.fc2.com/blog-entry-721.html

大変勉強になります。
PDF の文章を見てもまだピンと来ていない部分がありましたが、キーワードや具体例を分かりやすくまとめていただいてより噛み砕いて理解できました。

> sentaro様、
> プログラムを改造して、色々なグラフを描かせようと思う時、8行使えてメモリがたっぷり使える C.Basic で動かしたいという気持ちが益々膨れています。

> ご対応に期待しておりますので、よろしくお願い致しますm(_ _)m

あっ、最近微分に気をとられ過ぎて私がサボっていたから……。(^^;

とりあえず dY/dX のルーチンが大体完成したらグラフ描画部分に戻ります。

Re^5: SIR モデルグラフ描画プログラム その 2

Colon様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

管理人のやすです。

私の休みは今日まで、明日から仕事です。
また、今日は政府の非常事態宣言の最初の期限で、今月末まで延長された句切りの日でもあります。

そこで、とりあえずSIRモデルの Casio Basic への移植記事をアップしました。

グラフ電卓で観る感染症数理モデル
https://egadget.blog.fc2.com/blog-entry-721.html

プログラムファイルについては、この記事からダウンロードできるようにしていますが、同じリンクは以下です。
https://egadget2.web.fc2.com/archives/fx-CG50/SIR_Model2.html


エクセルファイルには、誤記があったので訂正しています。
初期値 S(0) と S(1) を書くところが、R(0) と R(1) にしてしまっていたのを訂正。

あと、g1mファイルも同梱しました。線種を Normal、Broken、Dot と使い分けしたかったのですが、分からないので全部 Normal になっています。

5.おわりに の項目で、さらなる改造プログラムの募集もしました。


sentaro様、
プログラムを改造して、色々なグラフを描かせようと思う時、8行使えてメモリがたっぷり使える C.Basic で動かしたいという気持ちが益々膨れています。

ご対応に期待しておりますので、よろしくお願い致しますm(_ _)m


ところで、fx-9860GIII の記事のコメントで、液晶の応答性について意外な結果になっていることをアップしていますが、その後何かお分かりになったでしょうか?
あちらのコメント欄にて、お待ちしております。

[追記あり]Re^4: SIR モデルグラフ描画プログラム その 2

Colon様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、

管理人のやすです。

Colon様、


> 正しく動いたようで安心しました。(^^)

1つ、完全に分からないコマンド 1-Variable があります。
1つめの引数に List N を使い、2つめの引数に整数を使っています。マニュアルを見る限り、2つめの引数にも List を使う例しかありません。これに続く maxX コマンドはリストの2つめ以降 (List 2[1] 以降) の要素の最大値を返すものだとは分かりますが、1-Variable では何をやっているのでしょうか?


> > グラフ表示後ファンクションキーで様々な数値の確認が出来るのはとても良いですね!
> これは一時停止コマンドを使用した際の Casio Basic 自体の仕様なので、
> プログラム内でグラフを分析したい場合は Disps コマンドを付けるだけで OK です。
> 使う側としては非常に助かる仕様なのですが、
> これは C.Basic にグラフ機能を導入する際に一時停止時の動作を分けて定義しなければならないことも意味しています。(^^;

このあたりは、Plot コマンドと DIspコマンドの組み合わせの機能に近いですね。C.Basicでは実装済みなので、グラフ描画では応用編として実装できれば良いかな? と想像しています >ですよね sentaro様(^_^;


> > 当初の SIR.g3m は無かったことにしました。
> 当初のやつはそもそも式が違ったので、私としても無かったことにして OK だと思います。(^^)

では、現在作成中のものを Ver 2 ということにしましょう。


> "INPI" と "bye!" は管理人様が追加してくれるだろうと思ってほっといたのは内緒です (内緒とは)。(^^;

わっはっは、完全に行動を読まれていますね!
会社でも家庭でも、私は分かりやすいことを信条にしており、周りの人達は私がミスをしそうなところを熟知していて、フォローしてくれて、私としてはとても助かっています。


> > ところで、グラフ設定に関する式で、÷ の代わりに 分数記号を使っておられますが、除算記号とは計算結果に違いが出るのでしょうか? 以前、Colon様作の何かのプログラムでも 分数記号を使っているのを見たことがあって、いつか聞こうと思っていました。
> これは完全に私の癖ですね。(^^;
> C.Basic を使っていなかった時期に作ったプログラムは、容量が少ないメインメモリに格納していたので、
> 出来るだけソースコードのバイト数を削減できるような書き方をしていました。

なるほど、よく分かりました。

現在SIR2で使っているコードには、かけ算を明示的に書いているのは、C.Basicでの動作を完全に意識しているということですね!!

...と、いうことでよろしくお願い致します>sentaro様


> ところで、グラフ画面の表示をもう少し改善できそうだと分かったので、明日になると思いますが改善案をアップロードします。
>
> グラフの仕様は難しい…… (T_T)

実は、ViewWindow 設定のところは、私も変更してみています。
あと、パラメータリストの一覧/入力画面に、Re値の表示を追加してみています。
http://pm.matrix.jp/upload/upload.cgi?get=00104


Colon様の改善版を拝見して、良いところはそのまま頂こうと思います。


今、SIRモデルに関する記事を書いています。
この記事は、新型コロナウィルスを "正しく恐れる" ことを目的とし、数理モデルの概要が分かれば、日本政府の施策を正しく理解でき、従うところは従い、そうでない所は自分で工夫するための考え方を提示できれば良いという思いから、書いています。

[2020/05/05 追記]
80%の接触抑制という、よく考えたらよく分からず定量的でない指針があります。これは、R0 は変わらないけど、行動変容により、結果的に Re あるいは Rt をを小さくするのが目的だとは分かります。でもどこから80%が出てくるのか、適当に言っているのではないか?と思えてきます。
感染には簡単にいって、ヒト-ヒト感染とモノーヒト感染の2モードがあります。
仮に外出を50%抑制したとすると、2人が接触する確率は 0.5 × 0.5 = 25%となり、75%の抑制ができたことになります。

ヒト-ヒト感染モードでは、50%の外出抑制で75%の感染確率抑制が達成されたことになるわけですね。でもこれでは当初期待されただけの効果が出ていないわけです、ならばモノ-ヒト感染の抑制にもっと力を入れないとダメということになります。

接触率の抑制目標80%は、人同士の出会いの抑制でなく、人が何かに触る頻度の抑制だと読み替えるべきで、自分の手で自分の顔を触る行動の抑制も含まれます。これこそ "正しく恐れる" ことです。

政府の80%抑制という、良く分からない指針は、このように正しく置き換えて理解すべきだと思います。私がTVのコメンテーターなら、SIRモデルの概要を説明した上で、このような具体的な指針例を提示すると思います。

専門家会議の数理統計分析の結果からさだれる指針を政治家や官僚が正しく理解していない可能性が大いに疑われます。

私自身は、会社や家庭で実行済みで、それなりに理解を得られています。

==== 追記終わり ====


電卓でSIRモデルのグラフを描けるのは、いつでもどこでも人に説明ができて良いかも知れず、これぞプログラム電卓の出番だと思います。


Re^3: SIR モデルグラフ描画プログラム その 2

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

> 正しく動くプログラムを見るのが、良い勉強になる典型です。分かりやすいサンプルプログラムですね!

正しく動いたようで安心しました。(^^)

> グラフ表示後ファンクションキーで様々な数値の確認が出来るのはとても良いですね!

これは一時停止コマンドを使用した際の Casio Basic 自体の仕様なので、
プログラム内でグラフを分析したい場合は Disps コマンドを付けるだけで OK です。

使う側としては非常に助かる仕様なのですが、
これは C.Basic にグラフ機能を導入する際に一時停止時の動作を分けて定義しなければならないことも意味しています。(^^;

> さて、少し改造させてもらいました。
http://pm.matrix.jp/upload/upload.cgi?get=00103

> 但し、ファイル名は SIR2 のままにしました。
> Clone様オリジナルの SIR2 は サンプルプログラムとして SIR のファイル名にして保存しています。

ありがとうございます!

> 当初の SIR.g3m は無かったことにしました。

当初のやつはそもそも式が違ったので、私としても無かったことにして OK だと思います。(^^)

"INPI" と "bye!" は管理人様が追加してくれるだろうと思ってほっといたのは内緒です (内緒とは)。(^^;

> 4)
> 感染者数のグラフが最も重要だと思ったので、R を List 3、I を List 4 に入れ替えて、赤の I のグラフが一番上に表示されるように変更しました。グラフ部分については、この点だけを変更し、あとは全く触っていません。

あっ、ここ結構重要ですね。
そこまで気が回りませんでした。

> ところで、グラフ設定に関する式で、÷ の代わりに 分数記号を使っておられますが、除算記号とは計算結果に違いが出るのでしょうか? 以前、Colon様作の何かのプログラムでも 分数記号を使っているのを見たことがあって、いつか聞こうと思っていました。

これは完全に私の癖ですね。(^^;

Frac や Int などのコマンドを使う際に、分数記号を使うと括弧を削減できることがあるので、
関係ない場面でも "÷" ではなく "⌟" を使っていることが多いです。

・ Frac (A÷B) …… (6 バイト)
・ Frac A⌟B …… (4 バイト)

これは "A÷B" だと "A", "B" がオペランドで "÷" がオペコードという扱いになりますが、
"A⌟B" はこれ全体でオペランド扱いなので括弧が省略できるということだと思います。

C.Basic を使っていなかった時期に作ったプログラムは、容量が少ないメインメモリに格納していたので、
出来るだけソースコードのバイト数を削減できるような書き方をしていました。

純正 Casio Basic のみを使っていた時期からの癖は、他にも乗算記号や閉じ括弧の省略があります。
乗算記号は C.Basic では省略しないほうが速い、閉じ括弧は他の人にソースを見せるときに汚いので省略しないように気を付けていますが、
分数記号は TXT 変換したとき以外はあまり害がない (と思っている) ので癖を直していません。(^^;

寧ろ、長い式を書くときは括弧が多くなりすぎると読みにくいので、括弧が不要な場合が多い分数記号を好んで使っています。

あとは、Math モードにしているとグラフ式の入力に "÷" を使っても自動で分数に変換されるので、なら初めから分数記号を使おう、という動機もあります。

> 純正では分数記号を使うと内部で分数の形で数値を保持しているので、
> 複数の分数同士の計算となった場合に、計算の正確さにおいて差が出ることがあるかと思いますが、

そこまでは気にしていませんでしたが、確かに微妙な誤差が出ることはあるかもしれませんね。


ところで、グラフ画面の表示をもう少し改善できそうだと分かったので、明日になると思いますが改善案をアップロードします。

グラフの仕様は難しい…… (T_T)


sentaro様、
> FX版では正常動作するので気がつくのが遅れました。(^^;
> 超初歩的なミスなので修正版、というか1.45build18を差し替えております。

了解しました。
差し替えありがとうございます。(^^)

Re:Re: SIR モデルグラフ描画プログラム その 2

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

管理人様のExcelグラフとColon様のプログラムを比較しながら、

>正しく動くプログラムを見るのが、良い勉強になる典型です。分かりやすいサンプルプログラムですね!

ここ、すごく大事ですね。(^^)

管理人様、Colon様、ありがとうございます!


Colon様、
>計算部分だけでも C.Basic で動かしてみよう (速いだろうから) と思って試してみましたが、Seq() のところでエラーが出ました。
>詳しく調べてみたところ、DBL# / CPLX モードの時に F Start / F End / F pitch の値の呼び出しが上手く行っていないっぽいです。

FX版では正常動作するので気がつくのが遅れました。(^^;
超初歩的なミスなので修正版、というか1.45build18を差し替えております。


管理人様
>ところで、グラフ設定に関する式で、÷ の代わりに 分数記号を使っておられますが、除算記号とは計算結果に違いが出るのでしょうか? 以前、Colon様作の何かのプログラムでも 分数記号を使っているのを見たことがあって、いつか聞こうと思っていました。

純正では分数記号を使うと内部で分数の形で数値を保持しているので、
複数の分数同士の計算となった場合に、計算の正確さにおいて差が出ることがあるかと思いますが、
実際の計算結果で差が出るかどうかは場合によりけりでしょうか。(^^)

Re: SIR モデルグラフ描画プログラム その 2

Colon様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!


Colon様

> 取り敢えず修正版です。
> 管理人様の Excel ファイルの値で試しましたが、上手く行ったっぽいです。(^^)
>
> https://pm.matrix.jp/upload/upload.cgi?get=00102
>
> 入力項目変更、計算式修正、終了時のメモリ解放を行いました。
> c も変更可能にしておきました。
> また、グラフの色とグリッド線を管理人様の Excel ファイルと同じようにしてみました。

ありがとうございます。
早速頂き、遊びました。
プログラムでのグラフの描画方法について勉強になります。

正しく動くプログラムを見るのが、良い勉強になる典型です。分かりやすいサンプルプログラムですね!

グラフ表示後ファンクションキーで様々な数値の確認が出来るのはとても良いですね!

今日と明日は久しぶりに休みなので、もう少しグラフについてマニュアルを見ながら勉強してみようと思います。


さて、少し改造させてもらいました。
http://pm.matrix.jp/upload/upload.cgi?get=00103

但し、ファイル名は SIR2 のままにしました。
Clone様オリジナルの SIR2 は サンプルプログラムとして SIR のファイル名にして保存しています。
当初の SIR.g3m は無かったことにしました。


改造点:

1)
条件を変えながらグラフがどう変わるのかを眺めたいと思ったので、パラメータ入力部分について、1画面内で一覧表示にし、"入力ボックス"サブルーチン:INP と INPI を、そして"3桁区切り"サブルーチン:3DS を使って使いやすくすると同時に、グラフ描画後にも表示される MENUコマンドを用いたメニューに、Reset Parameter を追加して、パラメータ一覧表示に戻るようにしました。

2)
パラメータ設定については、Δt を 1 に固定することにし、入力は省略しました。
エクセルでは横軸の範囲を簡単に変更できないので Δt を変えるようにしたのですが、電卓では パラメータ入力で範囲を簡単に変えられるのが、Δt 固定の理由です。

3)
私のプログラムでおなじみの bey! 表示をプログラム終了時に表示するようにしてみました。

4)
感染者数のグラフが最も重要だと思ったので、R を List 3、I を List 4 に入れ替えて、赤の I のグラフが一番上に表示されるように変更しました。グラフ部分については、この点だけを変更し、あとは全く触っていません。

5)
プログラム冒頭にファイル名とプログラム名を追加し、さらに
 Coded by Colon
 Planed & modified by Krtyski/e-Gadget
も追加しました。


ところで、グラフ設定に関する式で、÷ の代わりに 分数記号を使っておられますが、除算記号とは計算結果に違いが出るのでしょうか? 以前、Colon様作の何かのプログラムでも 分数記号を使っているのを見たことがあって、いつか聞こうと思っていました。

電卓でグラフを使うメリットが結構あるように思えてきました。

SIR モデルグラフ描画プログラム その 2

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

取り敢えず修正版です。
管理人様の Excel ファイルの値で試しましたが、上手く行ったっぽいです。(^^)

https://pm.matrix.jp/upload/upload.cgi?get=00102

入力項目変更、計算式修正、終了時のメモリ解放を行いました。

> あ、そうでした。cも変更可能にしてもらえますか?

c も変更可能にしておきました。

また、グラフの色とグリッド線を管理人様の Excel ファイルと同じようにしてみました。


sentaro様、
> C.Basicでもなんとか動作するようにしたいところですね。(^^;
> とはいえ、まだちょっと遠い道のりですね。(^^;

計算部分だけでも C.Basic で動かしてみよう (速いだろうから) と思って試してみましたが、Seq() のところでエラーが出ました。

詳しく調べてみたところ、DBL# / CPLX モードの時に F Start / F End / F pitch の値の呼び出しが上手く行っていないっぽいです。

次をお試しください。

1→F Start◢
2→F End◢
3→F pitch◢
F Start◢
F End◢
F pitch◢

Re: Re^4: 微分関係経過報告 + SIR モデルグラフ描画プログラム

Colon様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、

管理人のやすです。

Colon様、

係数の勘違いだったのですね!


> 可能な範囲でプログラム内で使用したデータをクリアしてから終了するように変更しておきます。

それは助かります。


> さて、最初に入力を求める項目ですが、
> R₀ / p / N / I(Δt) / Δt に変更すれば良いでしょうか?

はい。


> 管理人様の Excel ファイルだと c の値が 0.5 で固定になっていますが、c の値も入力を求めるようにしたほうがよいですか?

あ、そうでした。cも変更可能にしてもらえますか?


よろしくお願い致します。

Re^4: 微分関係経過報告 + SIR モデルグラフ描画プログラム

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

管理人様、
> ちなみに、私がエクセルで差分方程式を使って、複数のパラメータを変更してグラフの変化を確認する時に作ったファイルをアップロードしたので、ご参照ください。

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


> 差分を利用するとして、最低でも感染率と快復率(隔離率)の2つのパラメータは入力して変更できるようにしてもらった方が良い感じです。

あ、β = I(t)/N, γ = R(t)/N かと思っていたんですが、また違う値なんですね。(^^;

というわけで、

> チョコッと遊ばせて頂きましたが、感染ピークがうまく現れません。
> Colon様の式とチョット違っているように思いますので、よろしければ一度ご覧頂ければうれしいです。

これは β, γ に関する勘違いが原因です。(^^;


> あと結構メモリを食いますね。プログラム終了時にテーブル関係のメモリをクリアできると良いかな、とも思いました。

可能な範囲でプログラム内で使用したデータをクリアしてから終了するように変更しておきます。


さて、最初に入力を求める項目ですが、
R₀ / p / N / I(Δt) / Δt に変更すれば良いでしょうか?

管理人様の Excel ファイルだと c の値が 0.5 で固定になっていますが、c の値も入力を求めるようにしたほうがよいですか?

Re^3: 微分関係経過報告 + SIR モデルグラフ描画プログラム

Colon様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、

管理人のやすです。

SIRモデルのエクセルグラフについて、再度アップロードしましたので、こちらをご利用ください。
http://pm.matrix.jp/upload/upload.cgi?get=00101

Re^2: 微分関係経過報告 + SIR モデルグラフ描画プログラム

Colon様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、

管理人のやすです。


> この状況の中でもご尽力くださっている皆様のお陰で私たちの生活が成り立っているので、感謝の一言に尽きます。

発病者スクリーニングのための機器開発や医療機器用の部品や素材を提供するようなビジネスをたまたまやっていたので、with Corona や after Corona の厳しいビジネス環境を考えますと、今貢献できるものでビジネスを成立させないと今後の世界的な経済状況の悪化に飲み込まれて、沈没する可能性大だったりします。

世の中に貢献したいという気持ちと、ビジネスを成立させて儲けをどうやって生み出すかの狭間でなんとかやっているといった状況です。胸にてを当てて、後ろめたい気持ちになるようなことはやりたくありません。でも生きるためには何かやらなければならないという感じでやっています。

実際に医療現場で日々戦っている方々、物流や日常生活に必要不可欠な仕事をやって下さっている方々には、感謝するしかありません。

> Wikipedia で SIR モデルを調べて、サクッとグラフ表示プログラムを書いてみました。
> https://pm.matrix.jp/upload/upload.cgi?get=00099
>
> 純正 Casio Basic 用プログラムで、C.Basic では動きません。

さすが、仕事が速いです。ありがとうございます。

差分を利用するとして、最低でも感染率と快復率(隔離率)の2つのパラメータは入力して変更できるようにしてもらった方が良い感じです。

チョコッと遊ばせて頂きましたが、感染ピークがうまく現れません。あと結構メモリを食いますね。プログラム終了時にテーブル関係のメモリをクリアできると良いかな、とも思いました。

ちなみに、私がエクセルで差分方程式を使って、複数のパラメータを変更してグラフの変化を確認する時に作ったファイルをアップロードしたので、ご参照ください。

http://pm.matrix.jp/upload/upload.cgi?get=00101

このzipファイルにSIRモデルの解説のPDFも一緒に入れております。

ここで使っているエクセルの計算式は、100%の自信はありませんが、多分それほど間違ったものではないと思います。このエクセルファイルは、専門家会議の方々がやろうとしていることを理解するために作ってみたもので、私としてはそれなりの理解に役だったと思っています。

※ エクセルの表にはかなりの行数に数値が入っていますが、グラフ表示には100行のみを使っています。

Colon様の式とチョット違っているように思いますので、よろしければ一度ご覧頂ければうれしいです。

Re:微分関係経過報告 + SIR モデルグラフ描画プログラム

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

Colon様、
>微分の件なんですが、
>純正の二階微分の式をテイラー展開により調べたところ、6 次精度であることがわかりました (有効桁数とかはまだ)。
>というわけで、まずは一階微分を同精度の 6 次精度で実装できないか、アルゴリズムの検討をしているところです。

積分もまだ純正並みとは言えないので修正点は多々ありそうですが、
微分に関してもColon様頼りになってしまってすみません!(^^;



>16 ビット形式も対応していただけるのは非常に助かります! (^^)

>これまでは純正の画面構成をドット単位で調べる際、
>BMP でキャプチャ → PC に転送 → ペイント 3D で適当に点を描いてビット数を変換 → 電卓に転送 → 行列のドットエディタで確認
>という面倒なことをやっていたので、作業がかなり楽になりそうです。(^^)

あ゛…そういうことでしたらもっと早くに実装しておくべきでしたね。
最初は16ビットBMPは規格がいくつかあるので互換の面から対象外ということにしてたのですが、
今実装している16ビットBMP形式で他アプリとの互換が問題ないようなので、最初から実装しておけばよかったです。(^^;


>Wikipedia で SIR モデルを調べて、サクッとグラフ表示プログラムを書いてみました。
https://pm.matrix.jp/upload/upload.cgi?get=00099

お!さすがColon様!(^^)
私としては内蔵機能の使いこなし経験値がとっても低いのでどの機能をどう使うかというところで迷うレベルなのですごく助かります。(^^)


>純正 Casio Basic 用プログラムで、C.Basic では動きません。

C.Basicでもなんとか動作するようにしたいところですね。(^^;

>将来的に C.Basic にグラフ・テーブル機能が導入された際は、テストプログラムとして働くかもしれません。

とはいえ、まだちょっと遠い道のりですね。(^^;

微分関係経過報告 + SIR モデルグラフ描画プログラム

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

コメントの確認とレスが遅れており、申し訳ございません。

微分の件なんですが、
純正の二階微分の式をテイラー展開により調べたところ、6 次精度であることがわかりました (有効桁数とかはまだ)。

というわけで、まずは一階微分を同精度の 6 次精度で実装できないか、アルゴリズムの検討をしているところです。

しかし、尖点の判定方法が調べても出てこないので、ここでかなり苦戦しています。(^^;

ところで、精度の計算をしていて驚いたのですが、
6 次精度の式を使うと、5 次以下の代数関数の一階微分を計算した際の打ち切り誤差がゼロになるらしいです (刻み幅がいくつでも)。


sentaro様、
> あと、16ビット形式のBMPにも新たに対応してみました。
> g3pでの書き込みができないので、将来的にはPNG形式に対応したいところですが、それはまだ先の予定です。(^^;

16 ビット形式も対応していただけるのは非常に助かります! (^^)

これまでは純正の画面構成をドット単位で調べる際、
BMP でキャプチャ → PC に転送 → ペイント 3D で適当に点を描いてビット数を変換 → 電卓に転送 → 行列のドットエディタで確認
という面倒なことをやっていたので、作業がかなり楽になりそうです。(^^)


管理人様、
> COVID-19 感染関連のビジネスをやっている関係で、休みなしだったりします(^_^;

お疲れさまです。m(_ _)m

この状況の中でもご尽力くださっている皆様のお陰で私たちの生活が成り立っているので、感謝の一言に尽きます。

> 正直なところ、電卓でグラフを描く機能は、使ったことが無く、未だにさっぱり分かりません。C.Basicでもグラフ描画関数が追加されていることから、このあたりの計算やグラフ化を電卓でできないものだろうか? というのがもう一つの目的だったりします。
> というのも反応速度論もSIRモデルも微分方程式なので、難しくて困っていたのですが、差分方程式に置き換えればエクセルの表を使ってグラフ化できます。数値を色々と変えてみると、グラフの形が変化して、感染拡大と収束の様子がビジュアル化できて興味深いわけです。当ブログとしては、このあたりを電卓でやってみたいというわけです。
> どなたかが電卓でやってくだされば、大歓迎です。

Wikipedia で SIR モデルを調べて、サクッとグラフ表示プログラムを書いてみました。
https://pm.matrix.jp/upload/upload.cgi?get=00099

純正 Casio Basic 用プログラムで、C.Basic では動きません。

微分だと難しいので取り敢えず差分でやってみましたが、
計算式の部分は何となくで自信がないので、間違っていたら教えてください。(^^;


使い方は以下の通りです。

起動すると、S/I/R の初期値の入力を求められます。
続いて、時間の刻み幅 (差分なので) の入力です。
最後に、時刻の最終値を入力します。

すると、計算の後にグラフタイプの選択画面が表示されるので、お好きな方を選んでください。

S は青、I は緑、R は赤でグラフが表示されます。
横軸は時間 (0 開始固定)、縦軸は人数です。
V-Win は自動でいい感じに調整します。

この画面ではトレースやスクロール、ズームを行うことができます。

[EXE] を押すと、グラフタイプ選択画面に戻ります。


内部動作的なことを説明すると、時刻/S/I/R を List に格納していますが、
Stat グラフを使うと画面がごちゃごちゃになるので Table 機能でグラフを書いています。

また、V-Win の自動調整のために統計計算コマンドで人数の最大値を求めています。

将来的に C.Basic にグラフ・テーブル機能が導入された際は、テストプログラムとして働くかもしれません。

[余談] 感染症拡大収束の数理モデル

sentaro様、iron2様、Colon様、CalcLoverHK様、C.Basicユーザーの皆様、

管理人のやすです。

仕事の関係で COVID-19パンデミック対策にちょっとだけ近いポジションにいるものですから、身の回りの人達の健康だけでなく、東京とか日本とか近隣諸国での感染拡大と収束の数理モデルに興味があったりしています。

以前の余談で、化学反応の反応速度論を適用した数理モデルを考えてみたと書きましたが、なんと100年も前に発表されたSIRモデルについて調べて見ました。これが今でも使われているので、多分役立つものだと思われます。

で、反応速度論で作ったモデルとほぼ等価だということが分かったので、ちょっとだけ気分が良い今日この頃です。

S + I → SI
I → R

という反応の速度を考える時、S、I、Rの濃度 [S]、[I]、[R]の変化、d[S]/dt、d[I]/dt、d[R]/dt を式で表すと、SIRモデルと同じになるんです。

S分子濃度は未感染者数、I分子濃度は感染者数、R分子濃度は回復者数に置き換えられました。

えっと、単なる私の自己満足で済みません。

正直なところ、電卓でグラフを描く機能は、使ったことが無く、未だにさっぱり分かりません。C.Basicでもグラフ描画関数が追加されていることから、このあたりの計算やグラフ化を電卓でできないものだろうか? というのがもう一つの目的だったりします。

というのも反応速度論もSIRモデルも微分方程式なので、難しくて困っていたのですが、差分方程式に置き換えればエクセルの表を使ってグラフ化できます。数値を色々と変えてみると、グラフの形が変化して、感染拡大と収束の様子がビジュアル化できて興味深いわけです。当ブログとしては、このあたりを電卓でやってみたいというわけです。

仕事が結構立て込んでいるので、いつになるのか見通しが立っていません。

どなたかが電卓でやってくだされば、大歓迎です。

Re:Re: C.Basic for CG v1.45β FX v2.45β (さらに使いやすく色々と変更していってみる版)その18

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


管理人様、
>アップデート対応しました。

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


>但し、以下のリンクは、Build 17 のままなので、build 18 にてアップデート対応しております。
>これは、再コメントなさった方が良いかも知れませんが、以下に修正した形にしておきます。

うわ…思いっきりミスってました。(^^;
お手数おかけしました。


>COVID-19 感染関連のビジネスをやっている関係で、休みなしだったりします(^_^;

あ、そうだったんですね。
連日おつかれさまです。

Re: C.Basic for CG v1.45β FX v2.45β (さらに使いやすく色々と変更していってみる版)その18

sentaro様、iron2様、Colon様、CalcLoverHK様、C.Basicユーザーの皆様、

sentaro様、

アップデート対応しました。


但し、以下のリンクは、Build 17 のままなので、build 18 にてアップデート対応しております。


> https://pm.matrix.jp/CB/CBASIC245beta17.zip
> https://pm.matrix.jp/CB/CBASICCG145beta17.zip

これは、再コメントなさった方が良いかも知れませんが、以下に修正した形にしておきます。


====== リンク修正 ======
C.Basic for FX v2.45β (さらに使いやすく色々と変更していってみる版)その18
https://pm.matrix.jp/CB/CBASIC245beta18.zip
・エディタのカーソル位置記憶がプログラム実行終了後にリセットされていいた不具合を修正しました。(build12でのエンバグです。)

C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その18
https://pm.matrix.jp/CB/CBASICCG145beta18.zip

(共通の修正)
・行列表示を修正しました。
・セット・アップで隠しメモリのOn/Offは確認ポップアップを出すようにしました。
=========================



> >※意外と忙しくしていたりします(^_^;
>
> 今年は静かなGW突入ですが、どうでしょうか?

COVID-19 感染関連のビジネスをやっている関係で、休みなしだったりします(^_^;


C.Basic for CG v1.45β FX v2.45β (さらに使いやすく色々と変更していってみる版)その18

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

前回に引き続き、UCFのHlib2様より見つけていただいたバグ修正版です。(^^)

C.Basic for FX v2.45β (さらに使いやすく色々と変更していってみる版)その18
https://pm.matrix.jp/CB/CBASIC245beta17.zip
・エディタのカーソル位置記憶がプログラム実行終了後にリセットされていいた不具合を修正しました。(build12でのエンバグです。)

C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その18
https://pm.matrix.jp/CB/CBASICCG145beta17.zip

(共通の修正)
・行列表示を修正しました。
・セット・アップで隠しメモリのOn/Offは確認ポップアップを出すようにしました。




管理人様、
>アップデート対応しました。

毎度素早い対応していただきまして感謝です!(^^)


>※意外と忙しくしていたりします(^_^;

今年は静かなGW突入ですが、どうでしょうか?

Re: C.Basic for CG v1.45β FX v2.45β (さらに使いやすく色々と変更していってみる版)その17

sentaro様、iron2様、Colon様、CalcLoverHK様、C.Basicユーザーの皆様、

管理人のやすです。

アップデート対応しました。

※意外と忙しくしていたりします(^_^;

C.Basic for CG v1.45β FX v2.45β (さらに使いやすく色々と変更していってみる版)その17

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

UCFのHlib2様より見つけていただいたバグのうち、
CPLXの行列で数値が実数と虚数で2行表示になる場合のスクロールが非常に遅いというところの改善と、
ついでに、指数表示のバグを修正しました。

あと、16ビット形式のBMPにも新たに対応してみました。
g3pでの書き込みができないので、将来的にはPNG形式に対応したいところですが、それはまだ先の予定です。(^^;


C.Basic for FX v2.45β (さらに使いやすく色々と変更していってみる版)その17
https://pm.matrix.jp/CB/CBASIC245beta17.zip
・プログラム開始時に?入力でアルファモードになっていた不具合を修正しました。(build16エンバグ)

C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その17
https://pm.matrix.jp/CB/CBASICCG145beta17.zip
・RGB565形式の16ビットBMPのセーブ/ロードに対応しました。デフォルト形式は16ビットBMPになります。

(共通の修正)
・CPLXの行列表示が異常に遅かったのを修正し、3列から4列表示に変更しました。
・隠しメモリの初期化を修正しました。



管理人様、
>再度ダウンロードして確認したところ、マスクされたアイコンが[A↔a]になっていることを確認でました。
>私の操作に何か間違いがあったのか、あるいはダウンロードファイルが以前のままだったのか(あまり考えにくいです)のか、はたまたマスクされて見づらいアイコンを見間違ったのか、おそらく最後の可能性が一番高い感じがしています(-_-;)が、うまくいきました。

差し替えアップロードはすぐに変更が反映されないことがあるので、お手数おかけしました。
とりあえず、上手くいってよかったです。(^^)



Colon様、
>久しぶりのアップデートありがとうございます!! (^^)
>後程インストールしておきます。

なんやかんやで久々のアップデートになってしまいました。(^^;
いじくっていると、バグがちらほら見つかるので、
週イチでのアップデートペースは続けていきたいと思います。(^^)

Re^9: C.Basic for CG v1.45β FX v2.45β (さらに使いやすく色々と変更していってみる版)その16

Colon様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、

管理人のやすです。


私の思い違いから、1つ訂正がありますm(_ _)m


> 一般的には、モノから人への感染を減らさない限り、「経路不明」の感染者はいなくならないでしょうね。
> 「三密」を連呼するあまり、心理的にその他の対策が疎かになっているのではないかと心配でなりません。

これが、まさに私が今気になっている点なんです。



> この対策の目的は「これまでより感染者数ないし感染者数の増加を減らす」ことではなく、「『何もしない』場合より感染者数の増加を遅らせる」ことなので、
> 「三密」対策をしてなお感染者数や感染者数の増加が増えることは当たり前、それは専門家側も承知の上でやっているのだろうと思います (行政側は分かっているのか未知数ですが……)。

新型コロナウィルスによる患者数のグラフが下記にあります;
https://toyokeizai.net/sp/visual/tko/covid19/

感染者数の経時変化と良い相関が見られますが、人数の絶対値が2倍程度異なります。同時にPCR法検査人数の推移ともある程度の相関が見られます。


さて、PCR検査の現状について、大学病院で内科医をやっている友人から、現状について教えて貰いました。その結果、興味深い話を聞けました。さらに前のコメントに書いた内容に訂正が必要だと分かりました。


PCRで使うプライマの設定を間違わないことが非常に大切なのは間違いないけれど、今は新型コロナだけの特徴を持った塩基配列に対応したプライマがあるそうで、正しく検体を取ってこられたら、99%の感度で検出できるそうです。← ココ訂正です。

で、実際の感度はよくて70%と低いのが現状で、その理由は検体を取るのが難しいのが理由なのだそうです。新型コロナが増えるのは肺の奥深くにある肺胞なので、そこから検体を取るのが理想的だけど、気管に内視鏡を入れて検体採取をする必要があり、一方で喉から取ってくることが多いとのこと。

PCR自体は正しく使えば、現状では最も感度の高い方法とのことです。検体採取については、病院の個室で採取する場合は、ドクターやナースは防護服を着て採取しますが、その部屋や防護服や部屋の機材が汚染される可能性があり、それが検体の汚染の問題と、非感染者が感染するリスク(患者と医者の両方)の問題の両方を孕んでいて、手間がかかって大変なのだそうです。

その友人は、これらの問題を解決するには、ドライブスルー検査が良い方法だと言っていました。ゴム手袋が付いたアクリル板越しに検体採取をすることで、医療従事者の感染リスクは抑えられ、手袋とアクリル板を毎回交換するのが理想的。

で、感染拡大の要因として一番気になるのは、無症状感染者の存在だそうです。なので、行動制限は無症状感染者の行動抑制のメリットが大きいとのことです。

モノ-人感染については、院内感染の現場では最大の注意が必要ですが、一般人も消毒することに感心を持ち続けてく欲しい、と心配していました。


医者の判断でPCRをすぐに使えるように、検査能力をもっと増やすことも重要で、血液を採ればできる抗体検査も感度はそれほど良くないけれど、現状で70%程度のPCR検査の対応能力が低い状況を補うには良い方法だと言っていました。

現場では、今年は肺炎の患者数が異常に多く、異常事態だそうです。現場ではその対処に追われていて、ICUが不要な人は病院外で静養してもらわないと、重傷者の救命ができないそうです。スタッフの手が足りないのが問題だと言っていました。


Re^8: C.Basic for CG v1.45β FX v2.45β (さらに使いやすく色々と変更していってみる版)その16

sentaro様、iron2様、Colon様、CalcLoverHK様、C.Basicユーザーの皆様、こんにちは!

管理人のやすです。


> FX版でのマスクはほぼ半分消えてしまうので、何がなんだか状態になってますが、(^^;
> [A↔a]のマスクで間違いないです。
>
> もしかしたらファイルがアップデートされてない可能性もあるので、
> ファイルサイズが506,504バイトが今回差し替えたものなのでご確認くださいませ。

再度ダウンロードして確認したところ、マスクされたアイコンが[A↔a]になっていることを確認でました。
私の操作に何か間違いがあったのか、あるいはダウンロードファイルが以前のままだったのか(あまり考えにくいです)のか、はたまたマスクされて見づらいアイコンを見間違ったのか、おそらく最後の可能性が一番高い感じがしています(-_-;)が、うまくいきました。

ひょっとして、お騒がせしただけかも知れません...

ご確認頂き、ありがとうございます。

Re^7: C.Basic for CG v1.45β FX v2.45β (さらに使いやすく色々と変更していってみる版)その16

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
久しぶりのアップデートありがとうございます!! (^^)

後程インストールしておきます。


管理人様、sentaro様、
> このように、人同士が接触することをメインに考えた上の式を眺めていると、人-人感染に限定した式だと気づきました。もうひとつ考えなければならない重要因子は、人-モノ感染とモノ-人感染の組み合わせだろうと...つまり、保菌者が机を触り、その机を触った人が感染するという図式が結構ありそうだと...

実際に、タブレット端末経由での院内感染が確認されていますね。
この病院ではモノに対する消毒はしていたものの、タブレット端末は盲点になっていて消毒していなかったらしいです。

一般的には、モノから人への感染を減らさない限り、「経路不明」の感染者はいなくならないでしょうね。
「三密」を連呼するあまり、心理的にその他の対策が疎かになっているのではないかと心配でなりません。

> 日本で行動規制を厳しくするたびに、感染者数が増えていることに、政府のクラスター対策班は気づいていないのか不思議です。
> 三密抑制策の効果が現れるばかりか、悪化している傾向が明らかなのに、まだ同じことを繰り返すのが、チョット不思議に思います。

この対策の目的は「これまでより感染者数ないし感染者数の増加を減らす」ことではなく、「『何もしない』場合より感染者数の増加を遅らせる」ことなので、
「三密」対策をしてなお感染者数や感染者数の増加が増えることは当たり前、それは専門家側も承知の上でやっているのだろうと思います (行政側は分かっているのか未知数ですが……)。

とは言え、「人と人との接触を最低 7 割減らせば」というのに対し、ビッグデータからも削減出来ている人出は 3 - 7 割程度ということなので、いずれにせよ「三密」対策で目標程度の効果は出せないんだろうとは思います。

> すると陽性になっても新型コロナである確率は決して高くありません。
> もし、新型コロナウィルスだけを特異的に見分ける塩基配列のプライマが見つかれば、ニュースになると思います。しかしそのようなニュースは聞いたことがありません。

確かにプライマに関するニュースは見たことがありませんよね。

> この分野はド素人なので、何が正解なのか見当も付かないのですが、
> PCRでのコロナ判定の確度が怪しいとなれば一体何をもって判定しているのかっていうことですよね。
> 疑わしきはすべて陽性にという感じなのかもですが、

参考までに、日本プライマリ・ケア連合学会によると、
新型コロナウイルスの PCR 検査について、特異度は 99 % 以上、感度は 30 - 70 % 程度だということらしいです。

すなわち、非感染者に検査を行った場合、偽陽性になるのは 1 % 以下であるのに対し、感染者に検査を行った場合、偽陰性となるのは 30 - 70 % 程度です。

PCR 検査の確度に関する報道はあまり見ませんが、メディアはこの辺りもしっかり伝えるべきだと思います。

> お医者様が患者だと診断した人だけ、PCRにかけてコロナウィルスだと確認できれば、新型コロナによる患者だとほぼ確定できます。お医者様の診断無しにPCR法で増幅しても、新型コロナ以外も一緒に増幅しちゃいますから、結果はあてになりません(ココ重要なので、もう一度書きます)。

管理人様の仰る通りです。
韓国やアメリカでは希望者に対するドライブスルー検査が行われていますが、私はこの検査方法に大いに疑問を持っています。

ニュースを見る限り、日本では一次感染者 (と言っていいのかな?) に対しては医者が必要と判断した場合のみに検査、という対応を取れているのかな、とは思います。
ただ、濃厚接触者に対しての検査をどうするかの判断は自治体によって対応が分かれているように見えます。

濃厚接触者全員に検査をするのか、あるいは自宅待機要請をした上で症状がある人のみに検査をするのか、などということですが、ここら辺ははっきりして欲しいです。

ベイズ確率の問題なので医者は分かっているはずですが、自治体なり行政なりが理解しているのかについてはちょっと怪しいですね。(^^;

Re^6: C.Basic for CG v1.45β FX v2.45β (さらに使いやすく色々と変更していってみる版)その16

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

管理人様、

>GIII で、この [F6] のアイコンが特に変更されていないようです。

>ご確認頂けますか?

FX版でのマスクはほぼ半分消えてしまうので、何がなんだか状態になってますが、(^^;
[A↔a]のマスクで間違いないです。

もしかしたらファイルがアップデートされてない可能性もあるので、
ファイルサイズが506,504バイトが今回差し替えたものなのでご確認くださいませ。



>特定の新型コロナウィルスを他のコロナウィルスから特異的に区別するに足る塩基配列だけをコピーできるプライマがまだ無いのではないかと思っています。このようなプライマが無いなら、新型コロナと普通の風邪のコロナを区別無しに増幅します。すると陽性になっても新型コロナである確率は決して高くありません。

この分野はド素人なので、何が正解なのか見当も付かないのですが、
PCRでのコロナ判定の確度が怪しいとなれば一体何をもって判定しているのかっていうことですよね。
疑わしきはすべて陽性にという感じなのかもですが、
そういう状況だと、管理人様のおっしゃることはすごく頷けます。

人から人以外の感染経路もあるとしたら、これはなかなか終息は難しいですね。
より有効な対策がとられることを切に願いたいです。

Re: Re^4: C.Basic for CG v1.45β FX v2.45β (さらに使いやすく色々と変更していってみる版)その16

sentaro様、iron2様、Colon様、CalcLoverHK様、C.Basicユーザーの皆様、

管理人のやすです。


sentaro様;

> >9860GIII では、[F6]の表示が 他の2機種と異なり [A↔a] と [x・y] のグレー表示の2つの表示パターンがあります。
> >両方とも特殊な機種ではありますが、これは想定された動作なのでしょうか?
> >一方、GIII の行列リストで、[F6]に表示される内容は、9860Gシリーズ、CGシリーズいずれでも観られない独特なものです。ここは前のコメントから変わりません。何かの準備をされているのでしょうか?
> 本来は、CG版同様に[A↔a]のグレー表示のはずだったものがなぜか">A-z"のグレー表示のままになってました。(^^;
> 更新途中で仕様が二転三転した時の名残ですね。

> ってことで、FX版のみ修正して差し替えしておきました。

早速再ダウンロードしてインストールしました。

GIII で、この [F6] のアイコンが特に変更されていないようです。

ご確認頂けますか?


=====

日本で行動規制を厳しくするたびに、感染者数が増えていることに、政府のクラスター対策班は気づいていないのか不思議です。
三密抑制策の効果が現れるばかりか、悪化している傾向が明らかなのに、まだ同じことを繰り返すのが、チョット不思議に思います。

当初の想定と異なるデータを見た時、普通の技術者なら、想定が間違っているかも知れないと疑うのは普通です。そして、想定と違っているなら、現在の対策をさらに突き詰めるのではなくて、別の要素を考えるべきではないかと思うわけです。

人-人感染よりもモノ-人感染に、今よりも焦点を当てるべきだという仮説は、実は上のようなデータの見方から出てきたものなんです。

そもそも、感染者数で整理するのではなくて、患者数で整理すべきだと思うのは私だけでしょうか?

特定の塩基配列をコピーするプライマを2~3種類用いて、それらの特定の塩基配列を100万倍程度に増幅するのがPCR法です。特定遺伝子の増幅手法でしかないのがPCR法です。遺伝子=塩基配列を特定するには、それ専用のプライマが必要です。

特定の新型コロナウィルスを他のコロナウィルスから特異的に区別するに足る塩基配列だけをコピーできるプライマがまだ無いのではないかと思っています。このようなプライマが無いなら、新型コロナと普通の風邪のコロナを区別無しに増幅します。すると陽性になっても新型コロナである確率は決して高くありません。

もし、新型コロナウィルスだけを特異的に見分ける塩基配列のプライマが見つかれば、ニュースになると思います。しかしそのようなニュースは聞いたことがありません。

お医者様は、症状から考えて新型コロナにより発病していると判断できます。その患者をカウントして患者数として公表すべきです。

お医者様が患者だと診断した人だけ、PCRにかけてコロナウィルスだと確認できれば、新型コロナによる患者だとほぼ確定できます。お医者様の診断無しにPCR法で増幅しても、新型コロナ以外も一緒に増幅しちゃいますから、結果はあてになりません(ココ重要なので、もう一度書きます)。

私はPCR法による特定遺伝子増幅をやったことがあるので、分かる話なのですが、殆どの人はご存じないし、マスコミの方もご存じないでしょうから、こんな辺鄙なところですが、このような事を書かせて頂きます。

Re^4: C.Basic for CG v1.45β FX v2.45β (さらに使いやすく色々と変更していってみる版)その16

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

管理人様、

>急ぎのアップデートにかかわらず、遅くなってすみません。
>先ほど、アップデート対応しました。但し日付はsentaro様のアップデート日と同じ 4/16 にしております。

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


>Build 16 が 4/16 に公開というのは、良く出来ていますね!

これは、たまたま一致してしまいました。(^^;
build15では実験的に少し改変したところ、案の定エンバグがてんこ盛りだったので、修正にちょっと手間取ってしまいました。(^^;


>つまり、行動制限よりも、一般人の身の回りの消毒がとてつもなく重要かも知れない、などと勝手な事を考えたりする今日この頃です。

そうだと思います。
以前よりも積極的な消毒が重要かつ必須になってきてますね。



>但し、G (SH3) と GII (SH3) で違いが出るのは、何故でしょうか?

これは、
G (SH3) では、64KBしか使えないのに対して、
GII (SH3)では、さらに256KBの未使用領域が追加で使えるので、
行列の確保数に違いが出ます。(^^)
ということで、
GII (SH3)でもセット・アップでUse Hidn RAMをOffにすれば、G (SH3) と同じ動作になります。


>9860GIII では、[F6]の表示が 他の2機種と異なり [A↔a] と [x・y] のグレー表示の2つの表示パターンがあります。
>両方とも特殊な機種ではありますが、これは想定された動作なのでしょうか?
>一方、GIII の行列リストで、[F6]に表示される内容は、9860Gシリーズ、CGシリーズいずれでも観られない独特なものです。ここは前のコメントから変わりません。何かの準備をされているのでしょうか?

本来は、CG版同様に[A↔a]のグレー表示のはずだったものがなぜか">A-z"のグレー表示のままになってました。(^^;
更新途中で仕様が二転三転した時の名残ですね。
ってことで、FX版のみ修正して差し替えしておきました。

Re^3: C.Basic for CG v1.45β FX v2.45β (さらに使いやすく色々と変更していってみる版)その16

sentaro様、iron2様、Colon様、CalcLoverHK様、


管理人のやすです。


> Slim では、[←] と [→] でページ送りにならず、同じところを行ったり来たりする動作になります。

この現象は、9860G 全体で共通します。同じところを行ったり来たに見えますが、そうでなくページ送りがされていて、表示される項目が少ないだけでした。[SHIFT][MENU] のSETUPで、Max Lisr が 52x 1 しか設定できないので、表示項目が少なかったということが分かりました。9860G (SH3)共通の現象でした。

9860GIIになると、SH3 でも SH4 でも、Max List が デフォルトで 52x 6 に設定できるようになり、行列リストの項目が増えます。

但し、G (SH3) と GII (SH3) で違いが出るのは、何故でしょうか?


一方、GIII の行列リストで、[F6]に表示される内容は、9860Gシリーズ、CGシリーズいずれでも観られない独特なものです。ここは前のコメントから変わりません。何かの準備をされているのでしょうか?

Re^2: C.Basic for CG v1.45β FX v2.45β (さらに使いやすく色々と変更していってみる版)その16

sentaro様、iron2様、Colon様、CalcLoverHK様、C.Basicユーザーの皆様、

管理人のやすです。


新型コロナウィルスは接触感染が主だとして、昔習った反応速度論から得られる分子同士の衝突確率と衝突した時の反応確率を思い出し、分子を人に置き換えたとき、人と人が一定範囲内に近づく確率を衝突確率から置換え、このような接触時の感染確率を反応確率から置き換えて、出歩く人の人数と感染確率の関係を定式化してみたりしました。

このように、人同士が接触することをメインに考えた上の式を眺めていると、人-人感染に限定した式だと気づきました。もうひとつ考えなければならない重要因子は、人-モノ感染とモノ-人感染の組み合わせだろうと...つまり、保菌者が机を触り、その机を触った人が感染するという図式が結構ありそうだと...

今の三密を避けるスローガンは、モノ・人感染については何も言っていません。と、言うかそれ以前に身の回りのモノの消毒など当たり前ということなのかも知れませんが、実はこれが感染拡大の重要因子になっているのではないかと?

つまり、行動制限よりも、一般人の身の回りの消毒がとてつもなく重要かも知れない、などと勝手な事を考えたりする今日この頃です。


=====

さて、アップデート頂いたC.Basicでは、[SHIFT]-[F2]で表示される行列リストでの動作が、fx-CG50、fx-9860G Slim、fx-9860GIII で異なることが分かりました。

Slim では、[←] と [→] でページ送りにならず、同じところを行ったり来たりする動作になります。

9860GIII では、[F6]の表示が 他の2機種と異なり [A↔a] と [x・y] のグレー表示の2つの表示パターンがあります。

両方とも特殊な機種ではありますが、これは想定された動作なのでしょうか?

fx-9860GII については、後から確認します(今、会社で感染拡大対策製品の実験中だったりします。待ち時間でアップデート対応しました。工学は絞り込んだ前提条件に従ったモノの考え方をするので、冒頭のようなことも仕事の一部として妄想してみた次第...)。

Re: C.Basic for CG v1.45β FX v2.45β (さらに使いやすく色々と変更していってみる版)その16

sentaro様、iron2様、Colon様、CalcLoverHK様、C.Basicユーザーの皆様、

管理人のやすです。


> 少しアップデート間隔が空いてしまいましたが、見つかったバグ修正のアップデートです。(^^)
> build15でかなり重大な省略演算系のエンバグをしていたので(汗)
> build15をインストールされている方は早急にアップデートをお願いします。

急ぎのアップデートにかかわらず、遅くなってすみません。
先ほど、アップデート対応しました。但し日付はsentaro様のアップデート日と同じ 4/16 にしております。

Build 16 が 4/16 に公開というのは、良く出来ていますね!

C.Basic for CG v1.45β FX v2.45β (さらに使いやすく色々と変更していってみる版)その16

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

少しアップデート間隔が空いてしまいましたが、見つかったバグ修正のアップデートです。(^^)
build15でかなり重大な省略演算系のエンバグをしていたので(汗)
build15をインストールされている方は早急にアップデートをお願いします。


C.Basic for FX v2.45β (さらに使いやすく色々と変更していってみる版)その16
https://pm.matrix.jp/CB/CBASIC245beta16.zip
・System(-1)での機種判定にfx-9860GIIIを追加しました。
 0:fx-9860G
1:fx-9860G Slim
2:fx-9860GII(SH3)
3:fx-9860GII(SH4A)
4:Graph35+EII(SH4A)
5:fx-9860GIII(SH4A)
・やす(Krtyski)様作成のSystem()コマンドサンプルプログラム(fx-9860GIII対応版)をアップデートしました。(System_sampleフォルダ)


C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その16
https://pm.matrix.jp/CB/CBASICCG145beta16.zip
(共通の修正)
・自動インデント機能でのSwitch~Case~SwitchEndの自動整形を改善しました。
・ElseIfコマンドの直後にコメントがある場合、次のコマンドがIfの場合に終了していた不具合を修正しました。
・行列の初期化後に文字列から文字列への代入で代入されない不具合を再修正しました。
(コピーされない例)
ClrMat
  "ABC"->Str 1
  Str 1->Str 3
・Seqコマンドで刻み値が少数の場合に終値に到達しないことがある不具合を修正しました。
(例)Seq(X, X, 0.1, 1, 0.05 )
・CPLXモード以外で虚数を使うと無限ループになる不具合を修正しました。(build15でのエンバグです。)
・省略乗算の不具合を修正しました。(build15でのエンバグです。)



あと、疑似3Dゲーム-Triangle Filedもアップデートしてみました。(^^)

https://www.planet-casio.com/Fr/programmes/programme4029-1-triangle-field-sentaro21-jeux-actionsport.html
-タイムトライアルモードを追加しました。[MENU]キーで切り替えます。デフォルトはタイムトライアルモードです。
-ゲートの出現位置をパターン化しました。(固定パターン1種類とランダムパターン9種類があります。)
-ゲート外を通過した時の減点を大きくしました。
-ゲートに衝突した時のダメージレベルを下げました。
-ターボ機能を追加しました。デフォルトでオンになっています。
 [OPTN]キーを押すとターボはオンになります。オフにするには[SHIFT]を押します。。
-画面表示を変更しました。
-ゲーム起動時に選べるのは3レベルまで。
(得点モードで10000点以上、タイムトライアルモードでは指定タイム以下になれば、次のレベルが選択可能になります。)
-セーブデータのファイル名を変更しました。

Re: Sorry for long slience!

Hello CalcLoverHK

I was a little bit worried about health condition of you and your acquaintance, but I'm grad to hear you are well and very energetic.

Please tale your time for whatever you have fun, and come back in a mean while.

Ciao

Re:Sorry for long slience!

@CalcLoverHK
I'm relieved that you are doing well.
Thank you very much for your support to C.Basic as always.(^^)

I'm very worried about the global coronavirus epidemic.
For a while, everyday life seems to be hindered,
However, I would like to do what I can.
I would like to evolve things related to C.Basic little by little.(^^)

Sorry for long slience!

Hi all

I am back after the end of online lessons, woo! Actually it ended few days ago (^^;

Due to the amount of homework and mon-fri online lessons, I was not very active in calc community and no time to develop my UA whatsoever. Beside, me and my friends started playing Minecraft (There are 7 active players as for now) and also krunker.io ever since the start of the online lessons. So, the time for researching calc is very limited. (My GuideFX/CG_EN is still not finished, currently I decided to rewrite whole document, including style and content)

This free time is actually the Easter Holiday, which means when this ends I will be back to unactive very likely and continue to attend online lessons.

The coronavirus are getting serious these days, the U.S. suddenly became no.1 infected country which made me speechless... In Hong Kong, the number of infected patient is continued to rise that the school suspension will very likely extended after 4/20.

Anyway, I will continue the progress I had left. Thanks for reading!

Cheers
CalcLoverHK

Re: Re:Re: 業務連絡 - コロナ蔓延の折、皆様如何お過ごしですか?

sentaro様、iron2様、Colon様、CalcLoverHK様、C.Basicユーザーの皆様、

管理人のやすです。

> ご心配おかけして申し訳ありません。(汗)
> 私の方は今のところは問題ない感じですが、ニュースを目にするたびにちょっと滅入ってしまうような状況ではありますね。

sentaro様もご無事でしたか、良かったです。

明日、緊急事態宣言が発令される見通しですが、対象区域内に済んでいて仕事をしているので、色々と考えることが多いです。


ところで、昨日 GIII の概要をまとめた記事をアップしました。
https://egadget.blog.fc2.com/blog-entry-718.html

表示の更新がテキストでもグラフィックスでも高速化しています。

Re:Re: 業務連絡 - コロナ蔓延の折、皆様如何お過ごしですか?

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

管理人様、

>ここしばらく、皆様の書き込みが少ないのですが、如何お過ごしでしょうか?
>お元気になさっておられますか?

ご心配おかけして申し訳ありません。(汗)
私の方は今のところは問題ない感じですが、ニュースを目にするたびにちょっと滅入ってしまうような状況ではありますね。


>私自身は、少し前に色々あって、私を含めて家族全員が味覚異常と発熱程度、咳もなく普通の風邪か?と思われる程度の体調不良を経て、現在は元気100%になっております。恐らく特定コロナウィルスの免疫を獲得した模様で、発症リスクが低くなっております。

大事に至らずの免疫獲得は良かったです。(^^)
国民の大多数が集団免疫を獲得するまでは終息しないといわれているので、ワクチンが出来るのが先か、感染してしまうのが先か、ということで戦々恐々な状況がしばらく続きそうです。



Colon様、

>眠気は新型コロナの症状じゃないよな、とか、最近あまり起きておらずしかも食欲がないので 1 日 1 食、体力と体重の低下が著しいので免疫がやばいな、とか色々考えつつ外に出ないことだけを徹底しています。
>今進めている微分関係のテイラー展開と精度の評価も遅れぎみですが、計算が終わり次第またコメントします。m(_ _)m

C.Basicの方は、当面はバグフィックスでの修正アップデートとする方向なので、
新機能追加は何時までにとかの期限も無いので、決して無理はされないでくださいませ。(^^)

Re: Re: 業務連絡 - コロナ蔓延の折、皆様如何お過ごしですか?

Coolon様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、


管理人のやすです。

> すみません、私は特別具合が悪いところはありません!

良かったです。


> ただ、最近ものすごい眠気で睡眠時間が増えていて、自動的に電卓をさわる時間が減っています。(^^;
> 昨日は 16 時に寝て、夜中に一旦目が覚めたもののそのまま寝落ちして先程 15 時に起きました。
> 流石に母が「死んでるんじゃないか」と心配して覗きに来たほどです。(^^;

それは、春眠暁を覚えずの典型例ではありませんか?
それだけぶっと強いで寝られるのは、ある意味凄いことです。


> 眠気は新型コロナの症状じゃないよな、とか、最近あまり起きておらずしかも食欲がないので 1 日 1 食、体力と体重の低下が著しいので免疫がやばいな、とか色々考えつつ外に出ないことだけを徹底しています。

美味しいものをしっかり召し上がってくださいね!


> 今進めている微分関係のテイラー展開と精度の評価も遅れぎみですが、計算が終わり次第またコメントします。m(_ _)m

どうぞ、ごゆっくり...

Re: 業務連絡 - コロナ蔓延の折、皆様如何お過ごしですか?

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

> ここしばらく、皆様の書き込みが少ないのですが、如何お過ごしでしょうか?
> お元気になさっておられますか?

すみません、私は特別具合が悪いところはありません!

ただ、最近ものすごい眠気で睡眠時間が増えていて、自動的に電卓をさわる時間が減っています。(^^;
昨日は 16 時に寝て、夜中に一旦目が覚めたもののそのまま寝落ちして先程 15 時に起きました。
流石に母が「死んでるんじゃないか」と心配して覗きに来たほどです。(^^;

眠気は新型コロナの症状じゃないよな、とか、最近あまり起きておらずしかも食欲がないので 1 日 1 食、体力と体重の低下が著しいので免疫がやばいな、とか色々考えつつ外に出ないことだけを徹底しています。

以上、近況報告でした。


今進めている微分関係のテイラー展開と精度の評価も遅れぎみですが、計算が終わり次第またコメントします。m(_ _)m

業務連絡 - コロナ蔓延の折、皆様如何お過ごしですか?

sentaro様、iron2様、Colon様、CalcLoverHK様、C.Basicユーザーの皆様、


管理人のやすです。

ここしばらく、皆様の書き込みが少ないのですが、如何お過ごしでしょうか?
お元気になさっておられますか?


私自身は、少し前に色々あって、私を含めて家族全員が味覚異常と発熱程度、咳もなく普通の風邪か?と思われる程度の体調不良を経て、現在は元気100%になっております。恐らく特定コロナウィルスの免疫を獲得した模様で、発症リスクが低くなっております。

仕事では、本業ではないのですが、医療関係の検査機・部品・素材に関して待ったなしの忙しさになっております。


皆様から、何かコメントを頂けると嬉しいです!

Re: Re^30: "GraphXt/Yt" へのヌル文字列代入不具合

sentaro様、iron2様、Colon様、CalcLoverHK様、C.Basicユーザーの皆様、

管理人のやすです。

sentaro様

> 調べてみました。
>
> [CY835A MAIN]
> OS Ver 03.10.2200
> DateO 2019.0423.0414
> DateA 2019.0318.1507
>
> 35+EIIとGIIIは同じ系統の兄弟機種ということが分かりますね。(^^)

35+EIIの派生版だということがよく分かりますよね。

ところで、GIIIの加算、関数計算、テキスト更新、グラフィックス更新のスピードをベンチマークしてみましたが、GIIやCG50よりは確実に高速化していますし、テキスト&グラフィックス描画速度も確実に高速化していました。


Re^30: "GraphXt/Yt" へのヌル文字列代入不具合

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

管理人様、

>35+EIIの機種コードはどうなっていますか?

調べてみました。

[CY835A MAIN]
OS Ver 03.10.2200
DateO 2019.0423.0414
DateA 2019.0318.1507

35+EIIとGIIIは同じ系統の兄弟機種ということが分かりますね。(^^)

Re: Re^28: "GraphXt/Yt" へのヌル文字列代入不具合

sentaro様、iron2様、Colon様、CalcLoverHK様、C.Basicユーザーの皆様、

管理人のやすです。

sentaro様、

> うわ、クーポン=ギフト券?での払い戻しだったのですか。
> 他のAmazonと共通だったら使いみちが広がりますね。(^^)

そうなんです。USAもFrも Prime会員でないのですが、ヘルプをたどってゆくと、回答を得るのにPrime会員を求められるので、別経路での質問を探索中です。

> >もし、Amazon Frでしか使えないクーポンなら、fx-7400GIII でも買ってみようかとも思いますが、コロナ騒ぎがある程度落ち着くまで、Amaazonから日本への出荷は難しそうなので、まぁゆっくり考えてみます。
>
> せっかくなのでついでにGraph90+EとかGraph35+EIIとかもどうでしょう?(^^)

うはっ、フランス版まで完全制覇ですか...
めっちゃ低い優先度で検討します...(^_^;



> Graph90+EとCG50を比較すると色の違い以外ではUSB端子の横に試験用のLEDがあるのがGraph90+Eです。
> これはGraph35+EIIにも付いているのでここが国際版との唯一の違いかなと思われますが、他にもあるかどうかっていうところですね。

あ、そうでしたね!

そうそう、GIII のVersion情報ですが、

[CY837A MAIN]
OS Ver 03.21.0200
DateO 2019.1220.1151
DateA 2019.0318.1507

となっていました。

35+EIIの機種コードはどうなっていますか?

9860GIIシリーズは、以下のように近いところになっています。
- fx-9860GII   OS 2.04: GY499AZ
- fx-9860GII   OS 2.09: GY499AX
- fx-9860GII SD OS 2.09: GY497AX

機種コードが 35+EIIとGIIIで近いかどうか、興味あります。

Re^28: "GraphXt/Yt" へのヌル文字列代入不具合

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

管理人様、
>Colon様ご紹介の DeepL は本当に役立ちます。さっそく仕事で付き合いのあるモントリオール(フランス語)の会社から送られてきた謎のフランス語メールの翻訳で役立ちました(結構重要でした)。いつもは英語で送り直すよう依頼するところ、時間の節約になりました。日本語への翻訳精度はColon様がおっしゃるように、無料サービスの中では現状では最も精度が良いですね。

本当にそうですね。私も実感中です。(^^)
これでフランス語版ドキュメントもなんとかなりそうな気がしてくるくらい精度が良さそうです。


>で、Amazon Fr から来ていたフランス語メールを放置していたのを思い出し、DeepLで翻訳したところ、20%払い戻しの具体的内容でした。
>なんと、Amazonのクーポンでの払い戻しでした(-_-;
>アカウント情報やログイン情報は、Amazon USAと共通なので、ひょっとしてAmazon USAでも使えるのかどうか、調べる予定です。

うわ、クーポン=ギフト券?での払い戻しだったのですか。
他のAmazonと共通だったら使いみちが広がりますね。(^^)


>もし、Amazon Frでしか使えないクーポンなら、fx-7400GIII でも買ってみようかとも思いますが、コロナ騒ぎがある程度落ち着くまで、Amaazonから日本への出荷は難しそうなので、まぁゆっくり考えてみます。

せっかくなのでついでにGraph90+EとかGraph35+EIIとかもどうでしょう?(^^)


>ハード面では、違いが無さそうですよね。バックライト機能も無いし、商品情報やマニュアルを見る限り、バッテリー性能もキー周りの印字も同一ですし、メモリ仕様も同じで、サイズも重量も同じです。

Graph90+EとCG50を比較すると色の違い以外ではUSB端子の横に試験用のLEDがあるのがGraph90+Eです。
これはGraph35+EIIにも付いているのでここが国際版との唯一の違いかなと思われますが、他にもあるかどうかっていうところですね。


>ソフト面では、Casio Basic はこれまで作ってきたものはほぼ全て同じ動作をしているようです。アドインは最初からGeometryのみがインストールされていますが、イタリア語対応にみわれるように、OSバアップデートで違いが無くなる可能性大ですね。

デフォルトでフランス語か英語かという違いくらいでしょうかね。


>Pythonがどうなのかは、まだ未知数です。

次のアップデートでグラフィックス描画が追加されるのですが、ここは違いが出る可能性はないですね。(^^;

Re: Re^26: "GraphXt/Yt" へのヌル文字列代入不具合

sentaro様、iron2様、Colon様、CalcLoverHK様、C.Basicユーザーの皆様、

管理人のやすです。


sentaro様、Colon様、

Colon様ご紹介の DeepL は本当に役立ちます。さっそく仕事で付き合いのあるモントリオール(フランス語)の会社から送られてきた謎のフランス語メールの翻訳で役立ちました(結構重要でした)。いつもは英語で送り直すよう依頼するところ、時間の節約になりました。日本語への翻訳精度はColon様がおっしゃるように、無料サービスの中では現状では最も精度が良いですね。

但し、チョットした技術専門用語が混ざっている文章については、英語への翻訳のほうが確実だというのも分かりました。

で、Amazon Fr から来ていたフランス語メールを放置していたのを思い出し、DeepLで翻訳したところ、20%払い戻しの具体的内容でした。

なんと、Amazonのクーポンでの払い戻しでした(-_-;
アカウント情報やログイン情報は、Amazon USAと共通なので、ひょっとしてAmazon USAでも使えるのかどうか、調べる予定です。

もし、Amazon Frでしか使えないクーポンなら、fx-7400GIII でも買ってみようかとも思いますが、コロナ騒ぎがある程度落ち着くまで、Amaazonから日本への出荷は難しそうなので、まぁゆっくり考えてみます。

DeepLのお陰で、とても助かっています。



> あと気になるところは、GIIIと35EIIにハード/ソフトでの違いがあるかどうかというところです。
私も、気になっています。

ハード面では、違いが無さそうですよね。バックライト機能も無いし、商品情報やマニュアルを見る限り、バッテリー性能もキー周りの印字も同一ですし、メモリ仕様も同じで、サイズも重量も同じです。

ソフト面では、Casio Basic はこれまで作ってきたものはほぼ全て同じ動作をしているようです。アドインは最初からGeometryのみがインストールされていますが、イタリア語対応にみわれるように、OSバアップデートで違いが無くなる可能性大ですね。

Pythonがどうなのかは、まだ未知数です。

Re^26: "GraphXt/Yt" へのヌル文字列代入不具合

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

Colon様、管理人様、

>翻訳と言えば最近ニュースになっていたのですが、"DeepL 翻訳" という高精度の翻訳システムが日本語と中国語に新たに対応したらしいです。
https://www.deepl.com/translator
>早速使ってみました。とても精度が高いです。
>併せてWindowsアプリをインストールすると、とても便利になります。

私も早速にインストールしてみました。
機械翻訳の進化は私的にはとっても助かります。(^^)
ありがとうございます!!


>フランス専用機なので何とも言えませんが、CG20/50 のように OS アップデートでイタリア語が追加される可能性はあるかもですね。(^^)

>ところで、購入した fx-9860GIII はイタリア語にも対応しています。
>OS 3.21 となっています。

35EIIの最新バージョンが3.10なので、次回アップデートで追加されそうですね。(^^)

あと気になるところは、GIIIと35EIIにハード/ソフトでの違いがあるかどうかというところです。

Re^25: "GraphXt/Yt" へのヌル文字列代入不具合

Colon様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、

管理人のやすです。

Colon様;

> 翻訳と言えば最近ニュースになっていたのですが、"DeepL 翻訳" という高精度の翻訳システムが日本語と中国語に新たに対応したらしいです。
> https://www.deepl.com/translator

早速使ってみました。とても精度が高いです。
併せてWindowsアプリをインストールすると、とても便利になります。

> 事前に翻訳の種類を伏せて調査したところによると、Google や Amazon、Microsoft の翻訳よりも高い評価を得たそうで、
> 私も少し試してみましたが Google 翻訳よりも自然な文章が出力されました。

その通りです。非常に役立つアプリをご紹介頂き、大変ありがとうございます。\(^_^)


ところで、購入した fx-9860GIII はイタリア語にも対応しています。
OS 3.21 となっています。

ところが、CASIO WORLDWIDE EDUCATION WEBSITE ではOSアップデート版が Ver 3.10 になっていて、妙なことになっています。

おそらく、fx-CGの最新OSアップデートのように、最新の Ver.3.21 ででイタリア語対応し、Pythonがアップデートされたのではないかと推測しています。

Re^24: "GraphXt/Yt" へのヌル文字列代入不具合

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

> ところで、Amazon Fr への問い合わせの際、"英語でやりとりする"という項目が選択できるようになっていて、今回それを使いました。これはとても助かります。注文時の画面はGoogle翻訳で英語にできるので問題なし。一番面倒なのが、Amazon Frから送られてくる各種確認メールです。フランス語で書かれています。翻訳にはチョット手間がかかってしまいます。でもこれが唯一の問題というのは、世の中ずいぶんと便利になったと思わざるを得ません。

> 問い合わせは英語でできるというのは知りませんでしたが、
> サイトでのポチるときもメールも全部フランス語でしたね。(^^;

翻訳と言えば最近ニュースになっていたのですが、"DeepL 翻訳" という高精度の翻訳システムが日本語と中国語に新たに対応したらしいです。
https://www.deepl.com/translator

事前に翻訳の種類を伏せて調査したところによると、Google や Amazon、Microsoft の翻訳よりも高い評価を得たそうで、
私も少し試してみましたが Google 翻訳よりも自然な文章が出力されました。

ご参考までに……。


>> GRAPH35+EII で選べる言語は、デフォルトでフランス語でしょうか?
>> そのほかの言語は選べるのでしょうか?

> デフォルトではフランス語ですが、
> 英語、スペイン語、ドイツ語、フランス語、ポルトガル語が選択可能です。(^^)
> GIIIと比較すると、イタリア語が無いようです。

フランス専用機なので何とも言えませんが、CG20/50 のように OS アップデートでイタリア語が追加される可能性はあるかもですね。(^^)

Re^23: "GraphXt/Yt" へのヌル文字列代入不具合

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

管理人様、
2>5%分の払い戻し手続きを既に済ませたという連絡が来たのですが、1つミスをしました。払い戻しの際、クレジットカード請求を変更してくれたのなら良いのですが、別途振り込みとなると振込手数料がどちら持ちになるかで、かなり変わってきます。
>「私は振り込み手数料を払いたくないから、よろしく!」と言うのを忘れていました。
>カード決済額の変更なら問題ないのですが...

>結果は、カードの請求をみてからになります。あぁ、うっかりしてました...

一度満額引き落とされた後で、手数料先方持ちで25%戻ってくる感じではないでしょうか?
税金の払い戻しと同じならそういう感じになるかと思います。(^^)


>ところで、Amazon Fr への問い合わせの際、"英語でやりとりする"という項目が選択できるようになっていて、今回それを使いました。これはとても助かります。注文時の画面はGoogle翻訳で英語にできるので問題なし。一番面倒なのが、Amazon Frから送られてくる各種確認メールです。フランス語で書かれています。翻訳にはチョット手間がかかってしまいます。でもこれが唯一の問題というのは、世の中ずいぶんと便利になったと思わざるを得ません。

問い合わせは英語でできるというのは知りませんでしたが、
サイトでのポチるときもメールも全部フランス語でしたね。(^^;


>そうそう、Amazon Fr の担当者から、いきなり私の携帯に国際電話があったんですよ!
>事実確認の電話だったのですが、これは親切というべきなのでしょうか?
>お金が関わることなので、やりとりはメールにして記録に残したい旨伝えたら、速攻でメールが来ました。
>総じて、Amazon Frの対応は良いと思いました。

うわ、国際電話がかかってくるとなると、それはちょっと焦りますね。(^^;


>普通の日本人だったら、読み書きは別として、外国語でいきなり電話があって対応できる人は少ないと思うわけで、日本人の特性を理解していません。それだけAmazon Frで買い物をする日本人は少ないってことでしょうか?

ほとんどがフランス国内からの購入でしょうから日本からの購入は微々たるものでしょうし、
問い合わせの事実確認はまず電話でするというマニュアルがある可能性もありますね。



>GRAPH35+EII で選べる言語は、デフォルトでフランス語でしょうか?
>そのほかの言語は選べるのでしょうか?

デフォルトではフランス語ですが、
英語、スペイン語、ドイツ語、フランス語、ポルトガル語が選択可能です。(^^)
GIIIと比較すると、イタリア語が無いようです。


>良い情報を頂きました。ゴム足の素材は、fx-CG50は半透明のシリコーンゴムっぽい素材で、fx-9860GIII は真っ白の合成ゴムと、色は異なっています。但し接着面となる平らな面はリング状になっていて、接着面積が少なめです。
>素材によって選ぶ接着剤が異なりますので、取れたゴム足をサイド接着する場合と、買ってきたゴム足を接着する場合を分けた方が良いかも知れません。

あ、GIIIのゴムは真っ白でしょうか?
Graph35+EIIはパッと見、CG50と変わらない半透明ゴムに見えます。(^^;
となると、GIIIで何か部品が変わった可能性ありますね。

Re^22: "GraphXt/Yt" へのヌル文字列代入不具合

sentaro様、iron2様、Colon様、CalcLoverHK様、C.Basicユーザーの皆様、

管理人のやすです。

sentaro様、

> 昨年、Graph35+EIIは60ユーロ前後で販売されていましたけど、
> よくよく考えると、フランスではGraph35+EIIが公式モデルなので、9860GIIIが売られているというのはちょっと変ではありますね。(^^;

GRAPH35+EII で選べる言語は、デフォルトでフランス語でしょうか?
そのほかの言語は選べるのでしょうか?

fx-9860GIII では、デフォルトが英語、その他選択できるのは、スペイン語、ドイツ語、フランス語、ポルトガル語、イタリア語の5カ国語になっています。



> >ゴム足は、どこかで調達して修理しようと思います。
> >そして、GRAPH 35+E II と fx-9860GIII 共通の問題点としてゴム足が取れやすいこと、その具体的修理方法を記事にすれば、読者の参考になると思います。
> CG50のも取れてどっかにいってしまってるのがあるのですが、このゴム足の修理法もしくは代わりになるものがあればかなり重宝するかもです。

良い情報を頂きました。ゴム足の素材は、fx-CG50は半透明のシリコーンゴムっぽい素材で、fx-9860GIII は真っ白の合成ゴムと、色は異なっています。但し接着面となる平らな面はリング状になっていて、接着面積が少なめです。
素材によって選ぶ接着剤が異なりますので、取れたゴム足をサイド接着する場合と、買ってきたゴム足を接着する場合を分けた方が良いかも知れません。

最初に使われているゴム足の素材が分かれば良いのですが...

まぁ、ゴム足の素材や接着剤についてジックリと調べて見ることにします。

Re^21: "GraphXt/Yt" へのヌル文字列代入不具合

sentaro様、iron2様、Colon様、CalcLoverHK様、C.Basicユーザーの皆様、

管理人のやすです。

sentaro様、Colon様

25%分の払い戻し手続きを既に済ませたという連絡が来たのですが、1つミスをしました。払い戻しの際、クレジットカード請求を変更してくれたのなら良いのですが、別途振り込みとなると振込手数料がどちら持ちになるかで、かなり変わってきます。
「私は振り込み手数料を払いたくないから、よろしく!」と言うのを忘れていました。
カード決済額の変更なら問題ないのですが...

結果は、カードの請求をみてからになります。あぁ、うっかりしてました...

ところで、Amazon Fr への問い合わせの際、"英語でやりとりする"という項目が選択できるようになっていて、今回それを使いました。これはとても助かります。注文時の画面はGoogle翻訳で英語にできるので問題なし。一番面倒なのが、Amazon Frから送られてくる各種確認メールです。フランス語で書かれています。翻訳にはチョット手間がかかってしまいます。でもこれが唯一の問題というのは、世の中ずいぶんと便利になったと思わざるを得ません。

そうそう、Amazon Fr の担当者から、いきなり私の携帯に国際電話があったんですよ!
事実確認の電話だったのですが、これは親切というべきなのでしょうか?
お金が関わることなので、やりとりはメールにして記録に残したい旨伝えたら、速攻でメールが来ました。
総じて、Amazon Frの対応は良いと思いました。

まぁ、仕事でも連絡先を個人の携帯にしているので、英語での電話は珍しくありません。かけるのは会社の携帯、受けるのは個人の携帯ってわけです。
で、掛かってきたとき通勤電車で眠りこけていた時だったので、寝起きで一瞬誰からの何の電話か理解できず、まして電車の中なので、チョット困りました。

普通の日本人だったら、読み書きは別として、外国語でいきなり電話があって対応できる人は少ないと思うわけで、日本人の特性を理解していません。それだけAmazon Frで買い物をする日本人は少ないってことでしょうか?

Re^20: "GraphXt/Yt" へのヌル文字列代入不具合

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

管理人様、
>Amazon Franceから2つの現実的対応オプションが提示されました。
>ハードカバーやゴム足だけを送るころが出来ないので、
>1. 25%払い戻しするから、そのまま受け取る。
>2. 全額払い戻しするから、全て返送する。

>迷わずオプション#1を選択しました。
>メーカーではないので、部材のみを送るのが無理だというのは当然だと思います。
>すると25%払い戻しは€24.16 = \2,900 なので、総額¥12,200 で入手できた計算になります。これはお得です。

価格が少し高かっただけに25%引きになったのはとってもお得でしたね。(^^)

昨年、Graph35+EIIは60ユーロ前後で販売されていましたけど、
よくよく考えると、フランスではGraph35+EIIが公式モデルなので、9860GIIIが売られているというのはちょっと変ではありますね。(^^;


>ゴム足は、どこかで調達して修理しようと思います。
>そして、GRAPH 35+E II と fx-9860GIII 共通の問題点としてゴム足が取れやすいこと、その具体的修理方法を記事にすれば、読者の参考になると思います。

CG50のも取れてどっかにいってしまってるのがあるのですが、このゴム足の修理法もしくは代わりになるものがあればかなり重宝するかもです。



Colon様、
>2 階微分の計算式は分かっているので、これと同程度の精度が確保できればよいと考えていますが、
http://wes.casio.com/math/index.php?q=I-75503110201+U-laXVBQkW+M-X007072+K-7F27101

>上記式の精度はこれから計算してみます。

毎度Colon様頼みになってしまってますが、よろしくお願いします。(^^)

Re^19: "GraphXt/Yt" へのヌル文字列代入不具合

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

管理人様、
> 1. 25%払い戻しするから、そのまま受け取る。
> 2. 全額払い戻しするから、全て返送する。

> 迷わずオプション#1を選択しました。

なんと 4 分の 1 も!!
問い合わせてみるものですね。(^^)


sentaro様、
> ということで、精度を考えると、今の実装方法でも構わないという感じでしょうか?

2 階微分の計算式は分かっているので、これと同程度の精度が確保できればよいと考えていますが、
http://wes.casio.com/math/index.php?q=I-75503110201+U-laXVBQkW+M-X007072+K-7F27101

上記式の精度はこれから計算してみます。

Re^18: "GraphXt/Yt" へのヌル文字列代入不具合

sentaro様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、

管理人のやすです。

> > ところで、到着した製品のハードカバーのゴム足が1つ付いていませんでした。輸送中に取れたのではなく、パッケージに入れた段階で付いていなかった状況です。
> > 今回のゴム足問題で、さらに "やべー" となるかも知れません。
> > さーて、どのような対応をして貰えるのか、チョット楽しみです。

Amazon Franceから2つの現実的対応オプションが提示されました。
ハードカバーやゴム足だけを送るころが出来ないので、
1. 25%払い戻しするから、そのまま受け取る。
2. 全額払い戻しするから、全て返送する。

迷わずオプション#1を選択しました。
メーカーではないので、部材のみを送るのが無理だというのは当然だと思います。
すると25%払い戻しは€24.16 = \2,900 なので、総額¥12,200 で入手できた計算になります。これはお得です。

ゴム足は、どこかで調達して修理しようと思います。
そして、GRAPH 35+E II と fx-9860GIII 共通の問題点としてゴム足が取れやすいこと、その具体的修理方法を記事にすれば、読者の参考になると思います。

Re^17: "GraphXt/Yt" へのヌル文字列代入不具合

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

Colon様、
>"DrawGraph" のサポートにより重ね描きを正式サポートすることになるのと、
>トレースは 127 段階でなく Xmin から XMax までの任意の X について実行するので、
>トレースの実装の方針としては逐次値を計算するというのが現実的だと思います。

了解です。(^^)
従来はYグラフだけに最適化していた状態だったので、
今回のグラフ描画の全面拡張に対応していかないとですね。


>えぇと、これは 2 次精度の中央差分近似ですね。(^^;

あ、そうだったんですね。(^^;


>「n-次精度」の意味についてちょっとご説明します。

ありがとうございます!
なんとなく理解できました!(^^)

ということで、精度を考えると、今の実装方法でも構わないという感じでしょうか?

Re^16: "GraphXt/Yt" へのヌル文字列代入不具合

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

管理人様、
> 昨日帰宅した時、届いておりました。
> で、今朝から色々と触ってみています。

入手おめでとうございます!! (^^)

> ところで、到着した製品のハードカバーのゴム足が1つ付いていませんでした。輸送中に取れたのではなく、パッケージに入れた段階で付いていなかった状況です。
> 今回のゴム足問題で、さらに "やべー" となるかも知れません。
> さーて、どのような対応をして貰えるのか、チョット楽しみです。

電卓に限らず、ゴム足が元々取れていることってありますよね。(^^;
微妙に気になるか気にならないかという箇所なので、どのような対応になるのか気になりますね。


sentaro様、
> んと、グラフ描画は基本的にYグラフが描ければいいということでの実装なので、
> まず、グラフ描画のX方向に127分割で関数の値を計算しておいてから、それを利用してTrace等で描画するのですが、

"DrawGraph" のサポートにより重ね描きを正式サポートすることになるのと、
トレースは 127 段階でなく Xmin から XMax までの任意の X について実行するので、
トレースの実装の方針としては逐次値を計算するというのが現実的だと思います。

> 微分係数に関しては、前後の2値から傾きを計算してるので、
> (f(x-1)+f(x+1))/(2*Xdot*3)
> となっているので、1 次精度の前進差分近似ということなのでしょうか?(^^)

えぇと、これは 2 次精度の中央差分近似ですね。(^^;

「n-次精度」の意味についてちょっとご説明します。

まず、前進差分近似というのは f(a+h) をテイラー展開し、f'(a) について解くことで導出できます。

詳しい計算は省きますが、
f'(a) = (f(a+h)−f(a))/h + O(h)
となり、
Δf(a) = (f(a+h)−f(a))/h として近似を行うため、打ちきり誤差は
f'(a)−Δf(a) = O(h)
よって、誤差は h の 1 乗に比例することが分かります。
→ これを「1 次精度」と呼ぶ

次に、中心差分近似というのは f(a+h) と f(a−h) をテイラー展開して連立し、f'(a) について解くことで導出できます。

f'(a) = (f(a+h)−f(a−h))/2h + O(h^2)
となり、
Δf(a) = (f(a+h)−f(a−h))/2h として近似を行うため、打ちきり誤差は
f'(a)−Δf(a) = O(h^2)
よって、誤差は h の 2 乗に比例することが分かります。
→ これを「2 次精度」と呼ぶ

以下、打ちきり誤差が h の n 乗に比例する場合に「n-次精度」と呼びます。

|h| < 1 の場合は n が大きいほど誤差が少なくなることが分かると思います。

Re^15:"GraphXt/Yt" へのヌル文字列代入不具合

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

管理人様、
>それは、あり得そうですね!
>今、"fx-9860GII の概要" の記事を書いているところです。

日本初のGIII記事、楽しみです!


>うまく認識できました。Sys.g1m をアップしました。
http://pm.matrix.jp/upload/upload.cgi?get=00097
>9860GIII認識機能を追加するとき、サンプルプログラムもこれに差し替えてください。

ありがとうございます!
次のアップデートで差し替えます。(^^)


>あ、取れやすいのですね。CG50と違ってキー入力の問題ないのに、今度はゴム足ですか...必ずどこかに問題ありますよね。

はい、うちのGraph35+EIIのゴム足もずれて取れる寸前なので、油断すると無くなってしまいそうです。(^^;


>日本での販売が予定されているのなら、国内にもあるかも知れませんよ!

早期販売ということになればすでに入ってる可能性はありますね。(^^)

Re: Re^13:"GraphXt/Yt" へのヌル文字列代入不具合

sentaro様、iron2様、Colon様、CalcLoverHK様、C.Basicユーザーの皆様、

管理人のやすです。


> (おそらく)日本初の9860GIIIゲットおめでとうございます!(^^)
それは、あり得そうですね!

今、"fx-9860GII の概要" の記事を書いているところです。


> GIII判定はGraph35+EIIとハードの違いが全く無いものと推測してOSのバージョンから判定しています。(^^)
>
> https://pm.matrix.jp/CB/CBASIC245beta15.zip
> 9860GIIIの判定を追加したテスト版です。

うまく認識できました。Sys.g1m をアップしました。
http://pm.matrix.jp/upload/upload.cgi?get=00097

9860GIII認識機能を追加するとき、サンプルプログラムもこれに差し替えてください。

> うわ、なんと…(^^;
> あのゴム足は取れやすいのでパッケージング段階のどこかで無くなったっぽいですね。

あ、取れやすいのですね。CG50と違ってキー入力の問題ないのに、今度はゴム足ですか...必ずどこかに問題ありますよね。


> 日本への発送が無事完了したまでは良かったものの、(また想定外の)オチが付いた感じですね。(^^;
> まだ9860GIIIは日本に入ってきてないかもしれませんし、交換部品も無いかもしれませんね。(^^;

日本での販売が予定されているのなら、国内にもあるかも知れませんよ!

Re^13:"GraphXt/Yt" へのヌル文字列代入不具合

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

管理人様、

>昨日帰宅した時、届いておりました。
>で、今朝から色々と触ってみています。

(おそらく)日本初の9860GIIIゲットおめでとうございます!(^^)


>Ftune3 と C.Basic をインストールしました。Ftune3 はこれから触ってどこまで高速化できるのか、やってみようと思います。Ftune2 のエントリーで質問するかも知れませんので、その際はよろしくお願い致します。

了解です!


>さ、C.Baisc で以前作成し、サンプルプログラムとして同梱頂いている Sys.g1m で使っている System( コマンドについて1つ要望があります。Ftune3 では、計算機個体が fx-9860GIII であることが認識され、この機種名が表示されます。個体の識別が出来ているのだろうと思います。なので、System(-1) でも fx-9860GIII の場合は戻り値 5 を返すようにできないでしょうか?

GIII判定はGraph35+EIIとハードの違いが全く無いものと推測してOSのバージョンから判定しています。(^^)

https://pm.matrix.jp/CB/CBASIC245beta15.zip
9860GIIIの判定を追加したテスト版です。


>ところで、到着した製品のハードカバーのゴム足が1つ付いていませんでした。輸送中に取れたのではなく、パッケージに入れた段階で付いていなかった状況です。

うわ、なんと…(^^;
あのゴム足は取れやすいのでパッケージング段階のどこかで無くなったっぽいですね。


>私も、ツボっています。
>今回のゴム足問題で、さらに "やべー" となるかも知れません。

日本への発送が無事完了したまでは良かったものの、(また想定外の)オチが付いた感じですね。(^^;


>さーて、どのような対応をして貰えるのか、チョット楽しみです。
>これで、゙ダメなら日本のカシオに相談してみようかと思います。一応ゴム足がなかったことは、ブログに書いておこうと思います(チョットだけ影響があるかも知れませんので...)。

まだ9860GIIIは日本に入ってきてないかもしれませんし、交換部品も無いかもしれませんね。(^^;

Re^12:"GraphXt/Yt" へのヌル文字列代入不具合

sentaro、iron2様、Colon様、CalcLoverHK様、C.Basicユーザーの皆様、こんにちは!

sentaro様、

> 本日中ということはすでに到着されたのですね!
> C.BasicやFtune3はすでに対応済みなので、動作確認の方、よろしくお願いします。(^^)

昨日帰宅した時、届いておりました。
で、今朝から色々と触ってみています。

Ftune3 と C.Basic をインストールしました。Ftune3 はこれから触ってどこまで高速化できるのか、やってみようと思います。Ftune2 のエントリーで質問するかも知れませんので、その際はよろしくお願い致します。

さ、C.Baisc で以前作成し、サンプルプログラムとして同梱頂いている Sys.g1m で使っている System( コマンドについて1つ要望があります。Ftune3 では、計算機個体が fx-9860GIII であることが認識され、この機種名が表示されます。個体の識別が出来ているのだろうと思います。なので、System(-1) でも fx-9860GIII の場合は戻り値 5 を返すようにできないでしょうか?


ところで、到着した製品のハードカバーのゴム足が1つ付いていませんでした。輸送中に取れたのではなく、パッケージに入れた段階で付いていなかった状況です。


> >「日本から注文来たぞ、やべー忘れてた、注意書き追加しとけ」という可能性も……? (Colon様談)
> ここ、何度見てもツボります。(^^)

私も、ツボっています。
今回のゴム足問題で、さらに "やべー" となるかも知れません。

一応、Amazonへ問い合わせを入れました。ハードカバーか最悪ゴム足だけでも送って貰えないか?と依頼しています。
私は日本に住んでいるので、製品全体の返送と再発送は輸送費が問題になりそうで、良い方法ではないと思う、とも付け加えております。

さーて、どのような対応をして貰えるのか、チョット楽しみです。
これで、゙ダメなら日本のカシオに相談してみようかと思います。一応ゴム足がなかったことは、ブログに書いておこうと思います(チョットだけ影響があるかも知れませんので...)。


Re^11:"GraphXt/Yt" へのヌル文字列代入不具合

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

Colon様、
タッチの差で(といっても11分差(^^;)で見逃してしまいました。m(_ _)m

>遅れましたが、修正確認しました。
>これで多分関数式への代入は OK です。

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


>これらのコマンドの動作確認に作成中のグラフ関数式一覧を使っています。

>現時点では選択・非選択、削除、グラフタイプ設定・変更、線種選択、4 ビットカラーの指定が出来るようになっています。
>[SHIFT] + [5] のポップアップも、無事純正互換で実装できました。(^^)

>現時点では Param を 1 行に表示する形式なので、2 行での表示に対応することと (ここが最難関?)、
>関数式の編集が出来るようになれば大体完了です (代入後の処理がプログラムコマンドと異なるため別実装になります) ので、
>近いうちに公開できればと考えています。

ありがとうございます!
C.Basicのプログラムとして実装できるというのがすごいですね。(^^)


>設定項目に関してですが、"Graph Func" (グラフ関数式表示) と "Ineq Type" (不等式の塗りつぶし) の追加をお願いします。

了解しました!


>"Simul Graph" (グラフ同時描画) については、"DrawGraph" コマンドでグラフを一斉に描画するか順番に描画するかの設定なのですが、これはグラフ描画の途中経>過を表示する前提の項目です。
>普通に 1 ステップずつ画面表示する実験をしてみたのですが、純正よりかなり遅くなってしまう + 関数式の表示部の加減で処理が難しいので悩み中です。

>というわけで、"Simul Graph" は保留でお願いします。(^^;

了解です!


>現在 "Y=" のグラフの微分係数は現在どのようなアルゴリズムで計算しているでしょうか?

んと、グラフ描画は基本的にYグラフが描ければいいということでの実装なので、
まず、グラフ描画のX方向に127分割で関数の値を計算しておいてから、それを利用してTrace等で描画するのですが、
微分係数に関しては、前後の2値から傾きを計算してるので、
(f(x-1)+f(x+1))/(2*Xdot*3)
となっているので、1 次精度の前進差分近似ということなのでしょうか?(^^)

Re^9:"GraphXt/Yt" へのヌル文字列代入不具合

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

管理人様、
>riangle Filed Ver 0.91 へのアップデート対応は、昨晩しております。

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


>誠意のある対応は、有り難いです。
>成田での輸入許可も下りており、あとは自宅への配送を待っているところです。一応本日中配達予定となっているので、明日はチョコッといじってみようと思います。

本日中ということはすでに到着されたのですね!
C.BasicやFtune3はすでに対応済みなので、動作確認の方、よろしくお願いします。(^^)


>「日本から注文来たぞ、やべー忘れてた、注意書き追加しとけ」という可能性も……? (Colon様談)

ここ、何度見てもツボります。(^^)


>ところで、fx-7400GIII も新発売になっておりますが、この機種は、fx-5800Pの後継機として見る場合は、面白いと思っています。

fx-5800Pの価格で日本でも発売されると面白くなりそうですね。

Re^9:"GraphXt/Yt" へのヌル文字列代入不具合

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

管理人様、
> 今のセラーからは、最初であるだけでなく、最後のケースになりそうです(-_-;
> 誠意のある対応は、有り難いです。
> 成田での輸入許可も下りており、あとは自宅への配送を待っているところです。一応本日中配達予定となっているので、明日はチョコッといじってみようと思います。

おっ、楽しみです。
無事届きそうで良かったですね。(^^)


sentaro様、
> build15を修正&差し替えアップしました。(^^)

遅れましたが、修正確認しました。
これで多分関数式への代入は OK です。

これらのコマンドの動作確認に作成中のグラフ関数式一覧を使っています。

現時点では選択・非選択、削除、グラフタイプ設定・変更、線種選択、4 ビットカラーの指定が出来るようになっています。
[SHIFT] + [5] のポップアップも、無事純正互換で実装できました。(^^)

現時点では Param を 1 行に表示する形式なので、2 行での表示に対応することと (ここが最難関?)、
関数式の編集が出来るようになれば大体完了です (代入後の処理がプログラムコマンドと異なるため別実装になります) ので、
近いうちに公開できればと考えています。


設定項目に関してですが、"Graph Func" (グラフ関数式表示) と "Ineq Type" (不等式の塗りつぶし) の追加をお願いします。

"Simul Graph" (グラフ同時描画) については、"DrawGraph" コマンドでグラフを一斉に描画するか順番に描画するかの設定なのですが、これはグラフ描画の途中経過を表示する前提の項目です。
普通に 1 ステップずつ画面表示する実験をしてみたのですが、純正よりかなり遅くなってしまう + 関数式の表示部の加減で処理が難しいので悩み中です。

というわけで、"Simul Graph" は保留でお願いします。(^^;


ところで、トレース機能やテーブル機能に "Derivative" (微分係数表示) の設定が関わってくるようです。

現在 "Y=" のグラフの微分係数は現在どのようなアルゴリズムで計算しているでしょうか?


CASIO のマニュアルには、純正では 1 次精度の前進差分近似 (※) を用いているという趣旨の記述があります。
http://wes.casio.com/math/index.php?q=I-75503110201+U-laXVBQkW+M-X007072+K-7F26101

(※) x = a+Δx, x の 2 点を用いるアルゴリズム

しかし、有効 10 桁以上の精度で計算できているようなので、この記述が本当かは怪しいです。(^^;

倍精度浮動小数点数で 1 次精度の差分近似を行った際に有効桁数がどうなるか計算してみたところ、関数式にもよりますが 7 桁程度であることが分かりました。
仮数部 15 桁、指数部 2 桁の 10 進数で計算した場合でも、これと同程度の精度になるようです。

ちなみに、これより精度が高いアルゴリズムだとどうなるか計算してみたところ、
・ x = a±Δx の 2 点を用いる 2 次精度の差分近似では有効桁数 10 程度
・ x = a±Δx, a±2Δx の 4 点を用いる 4 次精度の差分近似では有効桁数 12 程度
・ x = a±Δx, a±2Δx, a±3Δx の 6 点を用いる 6 次精度の差分近似では有効桁数 13 程度

であることが分かりました。
これらは左辺が Y の場合の dY/dX についてのものです。

Re^8:"GraphXt/Yt" へのヌル文字列代入不具合

sentaro様、iron2様、Colon様、CalcLoverHK様、C.Basicユーザーの皆様、

管理人のやすです。

Triangle Filed Ver 0.91 へのアップデート対応は、昨晩しております。



> >>Colon様の
> >  >「日本から注文来たぞ、やべー忘れてた、注意書き追加しとけ」という可能性も……? (妄想)
> >は、可能性でなく、妄想でもなくて、実際の話っぽいです!
>
> セラーの方からすれば予想外の事とはいえ、実際に発送してくれたのは良かったです。

誠意のある対応は、有り難いです。
成田での輸入許可も下りており、あとは自宅への配送を待っているところです。一応本日中配達予定となっているので、明日はチョコッといじってみようと思います。


> イタリアもセカイモン対応であればよかったのですが、ドイツのみですね。(^^;
そうなんです。

以下の記事に書いていますが、Amazon Franceのセラーからの総額が結構お得に見えてきます。
https://egadget.blog.fc2.com/blog-entry-715.html


> とりあえず、Graph35+EIIの手持ちがあるので、GIIIに関してはAmazon.frで公式販売されるまで待ってみようと思います。(^^)
それはそうですね。

ところで、fx-7400GIII も新発売になっておりますが、この機種は、fx-5800Pの後継機として見る場合は、面白いと思っています。

Re^7:"GraphXt/Yt" へのヌル文字列代入不具合

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

管理人様、
>昨日の差替えアップデートですが、昨日の日付で今対応しました。

いつもありがとうございます!!


>トラッキングをチェックしたら、今中国のシンセンまで来ていて、天候が悪いので配達が少し遅れるが、明日の配達予定は守れそう...というよく分からない状況が表示されました。

>今のセラーからは、最初であるだけでなく、最後のケースになりそうです(-_-;

最初で最後というパターンはかなり貴重ではないでしょうか。(^^)


>>Colon様の
>  >「日本から注文来たぞ、やべー忘れてた、注意書き追加しとけ」という可能性も……? (妄想)
>は、可能性でなく、妄想でもなくて、実際の話っぽいです!

セラーの方からすれば予想外の事とはいえ、実際に発送してくれたのは良かったです。


>今、eBayとセカイモンを調べて見ると、fx-9860GIII が有りました!

>eBay には、ドイツとイタリアのセラーがあって、イタリアがダントツで安くなっています。
>セカイモンは、ドイツのセラーのみ出品されています。

イタリアもセカイモン対応であればよかったのですが、ドイツのみですね。(^^;

とりあえず、Graph35+EIIの手持ちがあるので、GIIIに関してはAmazon.frで公式販売されるまで待ってみようと思います。(^^)



疑似3Dゲーム - Triangle Filed アップデートしました。(^^)

https://www.planet-casio.com/Fr/programmes/programme4029-1-triangle-field-sentaro21-jeux-actionsport.html
-fps表示が間違えていたのを修正し、最高25fpsで固定しました。
-FX版の表示位置調整、CG版にバッテリー残量メータを追加しました。
-[EXIT]でゲームを終了します。

ゲーム内容に変化はありません。

Re: Re^5:"GraphXt/Yt" へのヌル文字列代入不具合

sentaro様、iron2様、Colon様、CalcLoverHK様、C.Basicユーザーの皆様、

管理人のやすです。
昨日の差替えアップデートですが、昨日の日付で今対応しました。



> コロナはまだまだ終息しそうにないので大変な状況が続きますね。
今日常的にやりとりしている、欧米の国々の人達は、テレワークが殆どです。ネットワークのお陰と言えますね。
でも生産や研究に携わる人達は、移動が必要なので結構大変です。



> もしキャンセルになってもAmazonですから安心といえば安心ですね。
> 無事届いたとしたら、日本で最初にfx-9860GIIIを入手したということになるのは間違いないですね。(^^)

トラッキングをチェックしたら、今中国のシンセンまで来ていて、天候が悪いので配達が少し遅れるが、明日の配達予定は守れそう...というよく分からない状況が表示されました。

今のセラーからは、最初であるだけでなく、最後のケースになりそうです(-_-;

Colon様の
  >「日本から注文来たぞ、やべー忘れてた、注意書き追加しとけ」という可能性も……? (妄想)
は、可能性でなく、妄想でもなくて、実際の話っぽいです!


今、eBayとセカイモンを調べて見ると、fx-9860GIII が有りました!

eBay;
https://www.ebay.com/sch/i.html?_from=R40&_trksid=m570.l1313&_nkw=fx-9860GIII&_sacat=0
最後の1つ、と表示されましたが、本当でしょうか?

セカイモン;
https://www.sekaimon.com/s/fx-9860GIII/-/all


eBay には、ドイツとイタリアのセラーがあって、イタリアがダントツで安くなっています。
セカイモンは、ドイツのセラーのみ出品されています。

アメリカのeBayのイタリアから出品されているのは結構安いですが、Last One となっています。
日本語でOKのセカイモンがお勧めかも知れませんね。

Re^5:"GraphXt/Yt" へのヌル文字列代入不具合

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

管理人様、
>昨晩のうちに、差替えアップデート対応しておきました。

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

>#海外とのやりとりが日常の仕事をしていますが、昨今のコロナ騒ぎで、欧米の会社と連日連夜イレギュラーな対応のため、ストレスフルで忙しい状況なので、やるべきことはやって、連絡が後回しになっちゃいます(-_-;

おつかれさまです。
コロナはまだまだ終息しそうにないので大変な状況が続きますね。


>受注確認のメールが届いているし、Tracking状況も確実に進んでいるので、私の注文分はひょっとして配達されるかも知れないと期待しています。もし日本への輸出ができない場合は、注文したものはヨーロッパから外に出ないと踏んでいますので、ごめんなさいメールがきたところで、キャンセルと払い戻しを要求すれば良いかな? という作戦でしばらく様子見しています。

もしキャンセルになってもAmazonですから安心といえば安心ですね。

無事届いたとしたら、日本で最初にfx-9860GIIIを入手したということになるのは間違いないですね。(^^)


>以前 Amazon USAで古いプログラム電卓の英文マニュアルを注文したら、1ヶ月以上たってから注文したのとは違うものが届いたことがあります。そのときは、注文と違うからどうしたらよいか?とセラーに問い合わせたところ、キャンセル扱いにするけど、返送しないで良い、そのまま受け取ってくれ、ということになりました。

世界に一つしか無いマニュアルだったりしたらそうもいかないでしょうけど、良いセラーさんでしたね。(^^)

Re:Re:Re: "GraphXt/Yt" へのヌル文字列代入不具合

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

Colon様、
>GraphYt のアルゴリズムのうち、

>$Mat 53[1]+StrChar(0xF6)+〈代入する関数式〉→$Mat θ[ _FuncNo, 7]

>の直前に、
>$Mat 53[2]=0⇒0→$Mat 53[1]

>の追加をお願いします。
>GraphXt は変更不要です。

build15を修正&差し替えアップしました。(^^)

Re^3:"GraphXt/Yt" へのヌル文字列代入不具合

sentaro様、iron2様、Colon様、CalcLoverHK様、C.Basicユーザーの皆様、

管理人のやすです。

昨晩のうちに、差替えアップデート対応しておきました。

#海外とのやりとりが日常の仕事をしていますが、昨今のコロナ騒ぎで、欧米の会社と連日連夜イレギュラーな対応のため、ストレスフルで忙しい状況なので、やるべきことはやって、連絡が後回しになっちゃいます(-_-;


sentaro様、Colon様
>「日本から注文来たぞ、やべー忘れてた、注意書き追加しとけ」という可能性も……? (妄想)

多分そんなところだと思います(笑)
欧米の人達は結構大雑把ですから...

受注確認のメールが届いているし、Tracking状況も確実に進んでいるので、私の注文分はひょっとして配達されるかも知れないと期待しています。もし日本への輸出ができない場合は、注文したものはヨーロッパから外に出ないと踏んでいますので、ごめんなさいメールがきたところで、キャンセルと払い戻しを要求すれば良いかな? という作戦でしばらく様子見しています。

以前 Amazon USAで古いプログラム電卓の英文マニュアルを注文したら、1ヶ月以上たってから注文したのとは違うものが届いたことがあります。そのときは、注文と違うからどうしたらよいか?とセラーに問い合わせたところ、キャンセル扱いにするけど、返送しないで良い、そのまま受け取ってくれ、ということになりました。

Re:Re: "GraphXt/Yt" へのヌル文字列代入不具合

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
> ということで、サクッと修正済み差し替え版です。

修正確認しました。(^^)

そして、すみません、

"X"→GraphY1
"Y"→GraphYt1
$Mat θ[1,7]

は正しくは ",Y" ですが、"X,Y" になってしまっており、これは私のミスです。

GraphYt のアルゴリズムのうち、

$Mat 53[1]+StrChar(0xF6)+〈代入する関数式〉→$Mat θ[ _FuncNo, 7]

の直前に、
$Mat 53[2]=0⇒0→$Mat 53[1]

の追加をお願いします。
GraphXt は変更不要です。

Re:"GraphXt/Yt" へのヌル文字列代入不具合

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

Colon様、
>"GraphXt/Yt" への代入に不具合があります。
>以下に示す箇所を正しく実装できているかご確認いただけますか?

不具合が確認できました!

以下の部分が未実装というか処理抜けしてました。(^^;

> ""+StrChar(0xF6)+$Mat 53[2]→$Mat θ[ _FuncNo, 7]
> $Mat 53[1]+StrChar(0xF6)+""→$Mat θ[ _FuncNo, 7]

ということで、サクッと修正済み差し替え版です。

C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その15再々修正版
https://pm.matrix.jp/CB/CBASICCG145beta15.zip
C.Basic for FX v2.45β (さらに使いやすく色々と変更していってみる版)その15再々修正版
https://pm.matrix.jp/CB/CBASIC245beta15.zip

"GraphXt/Yt" へのヌル文字列代入不具合

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
"GraphXt/Yt" への代入に不具合があります。

"X"→Xt1
"Y"→Yt1
""→Xt1
$Mat θ[1,7]

の結果、正しくは ",Y" ですが、"X,Y" となってしまっています。

私が提出したルーチンで確かめたところ、異常は見られませんでした。

以下に示す箇所を正しく実装できているかご確認いただけますか?

"→GraphXt" は

 If (Mat θ[ _FuncNo, 1]×256+Mat θ[ _FuncNo, 2]=0x0409) And Mat 53[2] : Then
  ""+StrChar(0xF6)+$Mat 53[2]→$Mat θ[ _FuncNo, 7]
 Else
  For 1→_Counter To 7
   0→Mat θ[ _FuncNo, _Counter]
  Next
 IfEnd

の部分で、
"→GraphYt" は

 If (Mat θ[ _FuncNo, 1]×256+Mat θ[ _FuncNo, 2]=0x0409) And Mat 53[1] : Then
  $Mat 53[1]+StrChar(0xF6)+""→$Mat θ[ _FuncNo, 7]
 Else
  For 1→_Counter To 7
   0→Mat θ[ _FuncNo, _Counter]
  Next
 IfEnd

の部分です。

よろしくお願いします。m(_ _)m

Re:Re:Re: Planet-CasioのCPC#26に参加してみました。

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

管理人様、

>これは快挙ですね!
>素晴らしいです。
>...ということで、この記事にプログラム紹介として追加しました。
https://egadget.blog.fc2.com/blog-entry-685.html

恐縮です。ありがとうございます!

バージョンが0.9なので、詰めの甘さが残るところで、あと少し追加修正しないといけないのですが、
コンテストの応募期間が終了して審査期間なので、とりあえずはそのままです。(^^;
変なバグらしき挙動があってもそれは仕様です。(^^;


>はい、 CubeFieldですよね!
>私のCG50にも入っています。

もろバレですね。(^^;
最初はそっくり移植版を作成しようかと思ったんですが、ちょっとスピードが足りかったので路線変更しました。(^^;
そしたら、昔のPC9801用のRolling 95っぽくなってしまったかもです。(^^;


>上記のプログラム紹介でも、CubeField も紹介した上で、アドインレベルのプログラムが C.Basicで作れることを強調しました。

ありがとうございます!
処理を欲張らなければ画面全体を動かすゲームも作成できますね。(^^)




Colon様、
>修正確認しました。(^^)

通常の1インデックスだとバグではないのでなかなか見つかりにくいバグでした。
見つけてくださって助かりました。ありがとうございます!(^^)


>おっ、遂に準アドイン扱い、おめでとうございます!! (^^)
>短期間に一定数の方が C.Basic を使う可能性があるとなると、バグ出しの観点からも絶好の機会ですね。

そうですね。
隠れたバグが少しでも多くあぶり出されることを期待したいです。




管理人様、Colon様、

>ところで、Amazon Franceで fx-9860GIII を2日前にポチッとし、国際貨物輸送として Amazon Global Eclair が選択できました。ところが、今日見たら「日本への出荷はできません」と赤文字で記載が追加されていました。
>本当に私の手元に配達されるのか、チョット気になっています。
>なお、この機種は日本やアメリカの Amazon ではまだ販売されていないようです。

まさか日本からの早々の注文が入るとは思わなかったので、私もColon様と同じく、

>「日本から注文来たぞ、やべー忘れてた、注意書き追加しとけ」という可能性も……? (妄想)

これが真相かと思いますが、管理人様の注文だけは特別に発送してくれるのでしょうか。(^^)

Re:Re: Planet-CasioのCPC#26に参加してみました。

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
> ・インデックス開始値が0の場合に要素数が64を超えるListの初期化が出来なかった不具合を修正しました。

修正確認しました。(^^)

> Planet-CasioのCPC#26においてC.Basicが使用言語として認定されたので参加してみました。(^^)

おっ、遂に準アドイン扱い、おめでとうございます!! (^^)

短期間に一定数の方が C.Basic を使う可能性があるとなると、バグ出しの観点からも絶好の機会ですね。


管理人様、
> ところで、Amazon Franceで fx-9860GIII を2日前にポチッとし、国際貨物輸送として Amazon Global Eclair が選択できました。ところが、今日見たら「日本への出荷はできません」と赤文字で記載が追加されていました。
> 本当に私の手元に配達されるのか、チョット気になっています。
> なお、この機種は日本やアメリカの Amazon ではまだ販売されていないようです。

あっ、これは……。(^^;

「日本から注文来たぞ、やべー忘れてた、注意書き追加しとけ」という可能性も……? (妄想)

この場合どこへ行ってしまうかが心配ですね。

Re: Planet-CasioのCPC#26に参加してみました。

sentaro様、iron2様、Colon様、CalcLoverHK様、C.Basicユーザーの皆様、

管理人のやすです。

> Planet-CasioのCPC#26においてC.Basicが使用言語として認定されたので参加してみました。(^^)
> https://www.planet-casio.com/Fr/forums/topic16209-1-le-cpc-26-aux-limites-de-la-physique.html

これは快挙ですね!
素晴らしいです。

> Triangle Field
> https://www.planet-casio.com/Fr/programmes/programme4029-1-triangle-field-sentaro21-jeux-actionsport.html

...ということで、この記事にプログラム紹介として追加しました。
https://egadget.blog.fc2.com/blog-entry-685.html


> どっかで見たようなデジャブ感満載ゲームですが、C.BasicCG用のゲームプログラムとしてそこそこ高速に動きます。(^^)
はい、 CubeFieldですよね!
私のCG50にも入っています。

上記のプログラム紹介でも、CubeField も紹介した上で、アドインレベルのプログラムが C.Basicで作れることを強調しました。


ところで、Amazon Franceで fx-9860GIII を2日前にポチッとし、国際貨物輸送として Amazon Global Eclair が選択できました。ところが、今日見たら「日本への出荷はできません」と赤文字で記載が追加されていました。
本当に私の手元に配達されるのか、チョット気になっています。
なお、この機種は日本やアメリカの Amazon ではまだ販売されていないようです。

Planet-CasioのCPC#26に参加してみました。

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

Planet-CasioのCPC#26においてC.Basicが使用言語として認定されたので参加してみました。(^^)
https://www.planet-casio.com/Fr/forums/topic16209-1-le-cpc-26-aux-limites-de-la-physique.html

Triangle Field
https://www.planet-casio.com/Fr/programmes/programme4029-1-triangle-field-sentaro21-jeux-actionsport.html

どっかで見たようなデジャブ感満載ゲームですが、C.BasicCG用のゲームプログラムとしてそこそこ高速に動きます。(^^)

C.Basic for CG v1.45β FX v2.45β (さらに使いやすく色々と変更していってみる版)その15再修正版

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

List初期化のバグとファイルモードのサーチのバグを修正しました。(^^)

C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その15再修正版
https://pm.matrix.jp/CB/CBASICCG145beta15.zip
C.Basic for FX v2.45β (さらに使いやすく色々と変更していってみる版)その15再修正版
https://pm.matrix.jp/CB/CBASIC245beta15.zip
(build15.)
・インデックス開始値が0の場合に要素数が64を超えるListの初期化が出来なかった不具合を修正しました。
・ファイルモードで検索文字列が空の場合に[F4]がCOPYになる不具合を修正しました。

Re:Re: C.Basic for CG v1.45β FX v2.45β (さらに使いやすく色々と変更していってみる版)その15修正版

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


Colon様、
>それぞれ修正確認しました。

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


>視覚的に分かりやすい例です。
https://pm.matrix.jp/upload/upload.cgi?get=00096

>Ptune の FKey Icon 作成時に使ったサンプルプログラムを削ったもので、
>[F1] に {+} のアイコンが表示されれば正解です。


確認できました!
ありがとうございます!!
インデックスベースが1ずれて初期化されているっぽいのですが、これから調査してみます。

Re: C.Basic for CG v1.45β FX v2.45β (さらに使いやすく色々と変更していってみる版)その15修正版

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
> ファンクションメニューが {[A]<>a} になっています。(^^;
>> ・ G SelOn
>> ・ G SelOff
>> ・ T SelOn
>> ・ T SelOff
> 0xBC→Mat θ[ _FuncNo, 3]

それぞれ修正確認しました。

> エラーの出る例をお願いできれば幸いです。(^^)

視覚的に分かりやすい例です。
https://pm.matrix.jp/upload/upload.cgi?get=00096

Ptune の FKey Icon 作成時に使ったサンプルプログラムを削ったもので、
[F1] に {+} のアイコンが表示されれば正解です。

C.Basic for CG v1.45β FX v2.45β (さらに使いやすく色々と変更していってみる版)その15修正版

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


Colon様、
>ファンクションメニューが {[A]<>a} になっています。(^^;

うわ、修正したと思ったら間違えてました。(^^;


>これはまだ直っていません。
>長いリストでお試しください。

エラーの出る例をお願いできれば幸いです。(^^)


>テストする項目が多いので、完璧なチェックまでは暫くお時間をください。

了解です。
よろしくお願いします。(^^)


>とりあえず、
>> ・ G SelOn
>> ・ G SelOff
>> ・ T SelOn
>> ・ T SelOff
>> これらの記法で、すべての関数式の選択 / 非選択が出来ます。

>こちらの実装をお願いします。

一応実装してたのですが、機能してませんでした。(^^;


>また、GraphY/r/Yt/Xt/X のそれぞれについて

> 0x84→Mat θ[ _FuncNo, 3]

>とした箇所がありますが、正しくは
>0xBC→Mat θ[ _FuncNo, 3]
>です。

ありがとうございます!
修正しました。(^^)

ということで修正版です。


C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その15修正版
https://pm.matrix.jp/CB/CBASICCG145beta15.zip
C.Basic for FX v2.45β (さらに使いやすく色々と変更していってみる版)その15修正版
https://pm.matrix.jp/CB/CBASIC245beta15.zip



管理人様、
素早い対応をいつもありがとうございます!(^^)

Re^2: C.Basic for CG v1.45β FX v2.45β (さらに使いやすく色々と変更していってみる版)その15

sentaro様、iron2様、Colon様、CalcLoverHK様、C.Basicユーザーの皆様、

管理人のやすです。

Build 15 へのアップデート対応しました。

Re: C.Basic for CG v1.45β FX v2.45β (さらに使いやすく色々と変更していってみる版)その15

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
> 簡単に実装できるかと思ったんですが、色々と変更点が多いので、今回はまだ実装前段階です。(^^;
> とりあえず、コマンドのみ入力できるようにしてます。

ファンクションメニューが {[A]<>a} になっています。(^^;

> 了解です!
> ってことで、再修正しました。(^^)
> 修正しました。(^^)

修正確認しました。

> ・デフォルトのインデックス開始値が0の場合にListの自動確保が出来なかった不具合を修正しました。

これはまだ直っていません。
長いリストでお試しください。

> ・Colon様のサポートにより関数メモリの実装を開始しました。

テストする項目が多いので、完璧なチェックまでは暫くお時間をください。

とりあえず、
> ・ G SelOn
> ・ G SelOff
> ・ T SelOn
> ・ T SelOff
> これらの記法で、すべての関数式の選択 / 非選択が出来ます。

こちらの実装をお願いします。

また、GraphY/r/Yt/Xt/X のそれぞれについて

> 0x84→Mat θ[ _FuncNo, 3]

とした箇所がありますが、正しくは
0xBC→Mat θ[ _FuncNo, 3]
です。

大変失礼しました。m(_ _)m

修正よろしくお願いします。

C.Basic for CG v1.45β FX v2.45β (さらに使いやすく色々と変更していってみる版)その15

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


管理人様、
>対応しました。

いつもありがとうございます!(^^)

>実は、一旦 Readme_J.txt 等に対応していたのですが、今後もこのファイル名にされるのかどうかを確認したかったのです。
>で、また README_J.txt 等に戻されたので、またそれに合わせたという次第。

あ、そうだったんですね。(^^;


>今後は、for FX については現状でお願い致します。

了解です。(^^)



Colon様、
>少し遅れました。m(_ _)m

こちらこそ少し遅れました。m(_ _)m


>そうですね。
>一応 "Seq(" + α みたいな感じかと思います。
>エラー処理もそうなんですが、変数への代入が挟まるのでその辺りは変更必須です。

簡単に実装できるかと思ったんですが、色々と変更点が多いので、今回はまだ実装前段階です。(^^;
とりあえず、コマンドのみ入力できるようにしてます。


>あ、[OPTN] - [F6] - [F6] - [F3] (FUNCMEM) - [F4] (SEE) を {EDIT} (黒) に変更がよいかも、ということです。(^^;
>それから、一覧画面に入ってから編集するアイコンは {EDIT} (白) です。

了解です!
ってことで、再修正しました。(^^)


>今のところは不具合が出ていないので、引き続き様子を見てみます。

よろしくお願いします。(^^)


>ところで、セットアップ画面の Display [F3] (Norm) で出るポップアップですが、"Norm" となるべき所が "Nrm" のままになっているので、修正お願いします。

修正しました。(^^)


ファンクションメモリー関連はColon様のC.Basic版を実装してありますが、DspF-Tblはまだ未実装です。(^^;

C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その15
https://pm.matrix.jp/CB/CBASICCG145beta15.zip
C.Basic for FX v2.45β (さらに使いやすく色々と変更していってみる版)その15
https://pm.matrix.jp/CB/CBASIC245beta15.zip
(build15)
・Colon様のサポートにより関数メモリの実装を開始しました。
・デフォルトのインデックス開始値が0の場合にListの自動確保が出来なかった不具合を修正しました。
・ファンクションメモリー(Fn)のStore/Recall/SEEのSEEをEditに変更しました。

Re^5: C.Basic for CG v1.45β FX v2.45β (さらに使いやすく色々と変更していってみる版)その14その1

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
少し遅れました。m(_ _)m

> テーブル機能の詳細が明らかになるにつれて、徐々にその仕組が分かりかけてますが、
> 内部的にはSeq()のような感じで実装できる感じでしょうか。

そうですね。
一応 "Seq(" + α みたいな感じかと思います。

エラー処理もそうなんですが、変数への代入が挟まるのでその辺りは変更必須です。

> あ、そういうことだったのですね。
> ってことで、変数画面と同様に変更してみました。(^^)

ありがとうございます。(^^)

>> ところで、編集が出来るようになったので [F4] を {SEE} から「黒」アイコンの {EDIT} に変更した方がよいかもしれません。

> 変更しました。(^^)

あ、[OPTN] - [F6] - [F6] - [F3] (FUNCMEM) - [F4] (SEE) を {EDIT} (黒) に変更がよいかも、ということです。(^^;

それから、一覧画面に入ってから編集するアイコンは {EDIT} (白) です。

> ところで、行列の編集が白アイコンなのですが、黒アイコンが本来のアイコンですよね?

[F1] (EDIT) のことでしたら、そこは白が正しいです。

> とりあえず、ちょっといじくってみましたが、直ったかどうか、というところのSEE部分だけの修正版です。(^^;

今のところは不具合が出ていないので、引き続き様子を見てみます。


ところで、セットアップ画面の Display [F3] (Norm) で出るポップアップですが、"Norm" となるべき所が "Nrm" のままになっているので、修正お願いします。

Re: Re^4: C.Basic for CG v1.45β FX v2.45β (さらに使いやすく色々と変更していってみる版)その14その1

sentaro様、iron2様、Colon様、CalcLoverHK様、C.Basicユーザーの皆様、

管理人のやすです。

> そのついでに、FX版でのREADME→Readmeに変更しましたが、
> マニュアルリンクがあることをすっかり忘れておりました!
> ということで、README系は元に戻しました。(^^;

対応しました。

実は、一旦 Readme_J.txt 等に対応していたのですが、今後もこのファイル名にされるのかどうかを確認したかったのです。
で、また README_J.txt 等に戻されたので、またそれに合わせたという次第。

私の書き込みが言葉足らずでした。

今後は、for FX については現状でお願い致します。


Re^4: C.Basic for CG v1.45β FX v2.45β (さらに使いやすく色々と変更していってみる版)その14その1

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

管理人様、
>となっていますが、今後この新しいファイル名になるということでよろしいでしょうけ?
>マニュアルへのリンクを張っているので、気になりました。

CalcLoverHK様の要請に応じてsetup_format.rxtは大文字から始めるように変更しました。

そのついでに、FX版でのREADME→Readmeに変更しましたが、
マニュアルリンクがあることをすっかり忘れておりました!
ということで、README系は元に戻しました。(^^;



Colon様、
>前回のコメントで漏れていた分の補足です。

私の方こそ、気がつくのが遅れました。(^^;

テーブル機能の詳細が明らかになるにつれて、徐々にその仕組が分かりかけてますが、
内部的にはSeq()のような感じで実装できる感じでしょうか。


>左右キーのほうの [→] キーが、改ページしたり 1 つ上に行ったりカーソルが消えたりしていたので、
>変数画面のようなイメージで [→] を使えるようにしてはどうかという考えでした。

あ、そういうことだったのですね。
ってことで、変数画面と同様に変更してみました。(^^)


>ところで、編集が出来るようになったので [F4] を {SEE} から「黒」アイコンの {EDIT} に変更した方がよいかもしれません。

変更しました。(^^)
ところで、行列の編集が白アイコンなのですが、黒アイコンが本来のアイコンですよね?


>まだ直っていないようです。
>バイナリエディタで確認したところ、0xFF が大量に貼り付けられています。

うわ、その現象を再現できてないのですが、大量というのはまずいです。(^^;


>少なくとも Mat θ の範囲外にある番号を RECALL するときに発生しているようです。

とりあえず、ちょっといじくってみましたが、直ったかどうか、というところのSEE部分だけの修正版です。(^^;

C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その14その1修正版
https://pm.matrix.jp/CB/CBASICCG145beta14.zip
C.Basic for FX v2.45β (さらに使いやすく色々と変更していってみる版)その14その1修正版
https://pm.matrix.jp/CB/CBASIC245beta14.zip

Re^3: C.Basic for CG v1.45β FX v2.45β (さらに使いやすく色々と変更していってみる版)その14その1

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
> [,]の横の[→] で編集に入るようにしたのですが、あり?(^^;
> [→] は左右キーの[→]だったでしょうか?

あ、[→] は 2 つありましたね。(^^;

左右キーのほうの [→] キーが、改ページしたり 1 つ上に行ったりカーソルが消えたりしていたので、
変数画面のようなイメージで [→] を使えるようにしてはどうかという考えでした。

ところで、編集が出来るようになったので [F4] を {SEE} から「黒」アイコンの {EDIT} に変更した方がよいかもしれません。

> 再度修正してみましたがどうでしょうか?

まだ直っていないようです。
バイナリエディタで確認したところ、0xFF が大量に貼り付けられています。

ポップアップからの RECALL では発生せず、一覧画面からの RECALL でのみ発生する不具合なので、何とも不思議な感じですね。(^^;
しかも発生したりしなかったりするようです。(^^;

少なくとも Mat θ の範囲外にある番号を RECALL するときに発生しているようです。

Re^2: C.Basic for CG v1.45β FX v2.45β (さらに使いやすく色々と変更していってみる版)その14その1

sentaro様、iron2様、Colon様、CalcLoverHK様、C.Basicユーザーの皆様、

管理人のやすです。

アップデート対応しました。

ところで、添付テキストファイルですが、

for FX:
REASME.J.txt が Readme.J.txt にファイル名変更
REASME.EN.txt が Readme.EN.txt にファイル名変更
REASME.FR.txt が Readme.FR.txt にファイル名変更

setup_format.rxt が Setup_format.txt にファイル名変更

for CG:
setup_format.rxt が Setup_format.txt にファイル名変更

となっていますが、今後この新しいファイル名になるということでよろしいでしょうけ?
マニュアルへのリンクを張っているので、気になりました。

Re: C.Basic for CG v1.45β FX v2.45β (さらに使いやすく色々と変更していってみる版)その14その1

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

Colon様、
>> で、[→] キーでの編集はいい案だと思いましたので試しに取り入れました。
>これまで通りの動作になっています。(^^;

[,]の横の[→] で編集に入るようにしたのですが、あり?(^^;
[→] は左右キーの[→]だったでしょうか?


>> また、"SEE" 画面からの RECALL で NULL 文字列の場合に、エディタに貼り付けられる文字列が NULL 文字列にならないことがある不具合があります。

>これがまだ直っておりません。>これがまだ直っておりません。

再度修正してみましたがどうでしょうか?
(再アップしてます。)


>その他は修正確認しました。

ありがとうございます!


>というわけで、以下に関数式への代入ルーチンを列挙します。

ありがとうございます!!
これから実装していってみます。(^^)


>ところで、UCF での "DispF-Tbl" に関する話題ですが、
>"DispF-Tbl" は関数式周りの仕様が固まらないことには動作させられないので、今後の順序としては次のようになると思います。

ありがとうございます!
とりあえず完全互換にはならずとも使える状態まで持っていきたいと思います。(^^)

前回のコメントに補足

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
前回のコメントで漏れていた分の補足です。

まず、テーブル機能はグラフ機能のサブセットであるため、複素数が利用できません。

次に、Hlib2 様のコメントで気がつきましたが、
・ VarRange
・ VarList

というコマンドがあり、これらを利用するには "Variable" という項目をセットアップに追加する必要があります。

設定の内部値は、0 が "Range"、1 以上は List n に対応します。

数表を作成する際の X / <r> / T の値は、
"Variable" の設定が "Range" の場合は F Start から F End までを F pitch 刻みで変化させ、
"List n" の場合は対応するリストに含まれる値を使用します。
この場合、List に複素数が含まれていてはいけません。


私が知らなかった文法です。(^^;
・ G SelOn
・ G SelOff
・ T SelOn
・ T SelOff

これらの記法で、すべての関数式の選択 / 非選択が出来ます。

これらのコマンドは既に、関数式が登録されていない場合はプレフィックスを操作しないようになっているはずなので、
例えば "G SelOn" であれば

For 1→_Counter To 127
 G SelOn _Counter
Next

と同じです。


なお、"F Result" は代入先の行列を指定しない場合は Mat Ans に出力します。

Re: C.Basic for CG v1.45β FX v2.45β (さらに使いやすく色々と変更していってみる版)その14その1

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
> で、[→] キーでの編集はいい案だと思いましたので試しに取り入れました。

これまで通りの動作になっています。(^^;

> また、"SEE" 画面からの RECALL で NULL 文字列の場合に、エディタに貼り付けられる文字列が NULL 文字列にならないことがある不具合があります。

これがまだ直っておりません。

その他は修正確認しました。


> これは貴重な発見ですね!
> カラー化での機能強化で細部の細かなところまではバグ取りが行き届かなかったのでしょう。(^^;
> はい、それでいいと思います。(^^)

了解しました。(^^)

というわけで、以下に関数式への代入ルーチンを列挙します。

ルーチンは C.Basic で記述し、インデントを全角スペースで入れています。


仕様としては、代入により強制的に各種描画選択が On になります。
Graph と Table 以外のフラグも立てていますが、万が一機能拡張が必要になった場合にスムーズに対応できるよう、OS 通りのフラグの立て方にしています。

また、"→GraphY" と "→GraphX" は "Func Type" の設定により等号になったり不等号になったりするので、そこの条件分岐があります。

ヌル文字列を代入する場合は基本的に関数式とプレフィックスをクリアし、
ヌル文字列へ代入する場合はプレフィックスをデフォルトの設定に変更するようにしています。

Xt と Yt はどうしても複雑になってしまいますが、OS 互換の動作になるように条件分岐を入れています (バグの箇所を除く)。
なお、"If RowSize(Mat 53)=1" の部分はエラーを回避するための処理です。


以下の全てについて、"Switch MOD( _FuncNo, 5)" から "SwitchEnd" まではグラフ色に関わる部分なので FX 版では除去して構いません。
勿論、あっても問題ないのでそのままでも良いです。

========================================
・ GraphY

【書式】
〈代入する関数式〉→GraphY_FuncNo

【ルーチン】
If StrLen(〈代入する関数式〉)=0 : Then
 For 1→_Counter To 7
  0→Mat θ[ _FuncNo, _Counter]
 Next
Else
 0x01→Mat θ[ _FuncNo, 1]
 Switch System(10001)
  Case 4
  0x98→Mat θ[ _FuncNo, 2]
  Break
  Case 5
  0x88→Mat θ[ _FuncNo, 2]
  Break
  Case 6
  0xB8→Mat θ[ _FuncNo, 2]
  Break
  Case 7
  0xA8→Mat θ[ _FuncNo, 2]
  Break
  Default
  0x08→Mat θ[ _FuncNo, 2]
 SwitchEnd
 0x84→Mat θ[ _FuncNo, 3]
 If StrLen($Mat θ[ _FuncNo, 7])=0 : Then
  0x02→Mat θ[ _FuncNo, 4]
  Switch MOD( _FuncNo, 5)
   Case 1
   0x001F→Poke(VarPtr(Mat θ[ _FuncNo, 5])).W
   Break
   Case 2
   0xF800→Poke(VarPtr(Mat θ[ _FuncNo, 5])).W
   Break
   Case 3
   0x07E0→Poke(VarPtr(Mat θ[ _FuncNo, 5])).W
   Break
   Case 4
   0xF81F→Poke(VarPtr(Mat θ[ _FuncNo, 5])).W
   Break
   Case 5
   0x0000→Poke(VarPtr(Mat θ[ _FuncNo, 5])).W
   Break
  SwitchEnd
 IfEnd
 〈代入する関数式〉→$Mat θ[ _FuncNo, 7]
IfEnd
Return

========================================
・ Graphr

【書式】
〈代入する関数式〉→Graphr_FuncNo

【ルーチン】
If StrLen(〈代入する関数式〉)=0 : Then
 For 1→_Counter To 7
  0→Mat θ[ _FuncNo, _Counter]
 Next
Else
 0x04→Mat θ[ _FuncNo, 1]
 0x0A→Mat θ[ _FuncNo, 2]
 0x84→Mat θ[ _FuncNo, 3]
 If StrLen($Mat θ[ _FuncNo, 7])=0 : Then
  0x02→Mat θ[ _FuncNo, 4]
  Switch MOD( _FuncNo, 5)
   Case 1
   0x001F→Poke(VarPtr(Mat θ[ _FuncNo, 5])).W
   Break
   Case 2
   0xF800→Poke(VarPtr(Mat θ[ _FuncNo, 5])).W
   Break
   Case 3
   0x07E0→Poke(VarPtr(Mat θ[ _FuncNo, 5])).W
   Break
   Case 4
   0xF81F→Poke(VarPtr(Mat θ[ _FuncNo, 5])).W
   Break
   Case 5
   0x0000→Poke(VarPtr(Mat θ[ _FuncNo, 5])).W
   Break
  SwitchEnd
 IfEnd
 〈代入する関数式〉→$Mat θ[ _FuncNo, 7]
IfEnd
Return

========================================
・ GraphXt

【書式】
〈代入する関数式〉→GraphXt_FuncNo

【ルーチン】
StrSplit($Mat θ[ _FuncNo, 7], StrChar(0xF6))
Mat Ans→Mat 53
If RowSize(Mat 53)=1 : Then
 {2, ColSize(Mat 53)}→Dim Dim Mat 53.B
 0→Mat 53[2]
IfEnd

If StrLen(〈代入する関数式〉)=0 : Then
 If (Mat θ[ _FuncNo, 1]×256+Mat θ[ _FuncNo, 2]=0x0409) And Mat 53[2] : Then
  ""+StrChar(0xF6)+$Mat 53[2]→$Mat θ[ _FuncNo, 7]
 Else
  For 1→_Counter To 7
   0→Mat θ[ _FuncNo, _Counter]
  Next
 IfEnd
Else
 0x04→Mat θ[ _FuncNo, 1]
 0x09→Mat θ[ _FuncNo, 2]
 0x84→Mat θ[ _FuncNo, 3]
 If StrLen($Mat θ[ _FuncNo, 7])=0 : Then
  0x02→Mat θ[ _FuncNo, 4]
  Switch MOD( _FuncNo, 5)
   Case 1
   0x001F→Poke(VarPtr(Mat θ[ _FuncNo, 5])).W
   Break
   Case 2
   0xF800→Poke(VarPtr(Mat θ[ _FuncNo, 5])).W
   Break
   Case 3
   0x07E0→Poke(VarPtr(Mat θ[ _FuncNo, 5])).W
   Break
   Case 4
   0xF81F→Poke(VarPtr(Mat θ[ _FuncNo, 5])).W
   Break
   Case 5
   0x0000→Poke(VarPtr(Mat θ[ _FuncNo, 5])).W
   Break
  SwitchEnd
 IfEnd
 〈代入する関数式〉+StrChar(0xF6)+$Mat 53[2]→$Mat θ[ _FuncNo, 7]
IfEnd
Return

========================================
・ GraphYt

【書式】
〈代入する関数式〉→GraphYt_FuncNo

【ルーチン】
StrSplit($Mat θ[ _FuncNo, 7], StrChar(0xF6))
Mat Ans→Mat 53
If RowSize(Mat 53)=1 : Then
 {2, ColSize(Mat 53)}→Dim Dim Mat 53.B
 0→Mat 53[2]
IfEnd

If StrLen(〈代入する関数式〉)=0 : Then
 If (Mat θ[ _FuncNo, 1]×256+Mat θ[ _FuncNo, 2]=0x0409) And Mat 53[1] : Then
  $Mat 53[1]+StrChar(0xF6)+""→$Mat θ[ _FuncNo, 7]
 Else
  For 1→_Counter To 7
   0→Mat θ[ _FuncNo, _Counter]
  Next
 IfEnd
Else
 0x04→Mat θ[ _FuncNo, 1]
 0x09→Mat θ[ _FuncNo, 2]
 0x84→Mat θ[ _FuncNo, 3]
 If StrLen($Mat θ[ _FuncNo, 7])=0 : Then
  0x02→Mat θ[ _FuncNo, 4]
  Switch MOD( _FuncNo, 5)
   Case 1
   0x001F→Poke(VarPtr(Mat θ[ _FuncNo, 5])).W
   Break
   Case 2
   0xF800→Poke(VarPtr(Mat θ[ _FuncNo, 5])).W
   Break
   Case 3
   0x07E0→Poke(VarPtr(Mat θ[ _FuncNo, 5])).W
   Break
   Case 4
   0xF81F→Poke(VarPtr(Mat θ[ _FuncNo, 5])).W
   Break
   Case 5
   0x0000→Poke(VarPtr(Mat θ[ _FuncNo, 5])).W
   Break
  SwitchEnd
 IfEnd
 $Mat 53[1]+StrChar(0xF6)+〈代入する関数式〉→$Mat θ[ _FuncNo, 7]
IfEnd
Return

========================================
・ GraphX

【書式】
〈代入する関数式〉→GraphX_FuncNo

【ルーチン】
If StrLen(〈代入する関数式〉)=0 : Then
 For 1→_Counter To 7
  0→Mat θ[ _FuncNo, _Counter]
 Next
Else
 0x02→Mat θ[ _FuncNo, 1]
 Switch System(10001)
  Case 8
  0x98→Mat θ[ _FuncNo, 2]
  Break
  Case 9
  0x88→Mat θ[ _FuncNo, 2]
  Break
  Case 10
  0xB8→Mat θ[ _FuncNo, 2]
  Break
  Case 11
  0xA8→Mat θ[ _FuncNo, 2]
  Break
  Default
  0x08→Mat θ[ _FuncNo, 2]
 SwitchEnd
 0x84→Mat θ[ _FuncNo, 3]
 If StrLen($Mat θ[ _FuncNo, 7])=0 : Then
  0x02→Mat θ[ _FuncNo, 4]
  Switch MOD( _FuncNo, 5)
   Case 1
   0x001F→Poke(VarPtr(Mat θ[ _FuncNo, 5])).W
   Break
   Case 2
   0xF800→Poke(VarPtr(Mat θ[ _FuncNo, 5])).W
   Break
   Case 3
   0x07E0→Poke(VarPtr(Mat θ[ _FuncNo, 5])).W
   Break
   Case 4
   0xF81F→Poke(VarPtr(Mat θ[ _FuncNo, 5])).W
   Break
   Case 5
   0x0000→Poke(VarPtr(Mat θ[ _FuncNo, 5])).W
   Break
  SwitchEnd
 IfEnd
 〈代入する関数式〉→$Mat θ[ _FuncNo, 7]
IfEnd
Return

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


ところで、UCF での "DispF-Tbl" に関する話題ですが、
"DispF-Tbl" は関数式周りの仕様が固まらないことには動作させられないので、今後の順序としては次のようになると思います。


1. GraphY / Graphr / GraphXt / GraphYt / GraphX の実装を完了させる
 ・ 多分このコメントの内容で全て

2. DispF-Tbl を実装する
 ・ 行列画面を改変の上流用可能な箇所も

3. F Result を実装する
 ・ DispF-Tbl と連動して初めて動作する

4. マニュアルグラフの描画を実装する
 ・ ここからが最難関
 ・ 完成は来月以降 (?)

5. DrawGraph コマンドを実装する
 ・ ここまで出てきたルーチンを使い回しながら


"DispF-Tbl" は、関数式の内容を計算 → 一時停止の場合は結果を表示、というコマンドです。

計算に使用する式には「選択されている」という前提の他に、
・ "Func Type" が "Y=" の場合は "Y=" の式のみ
・ "Func Type" が "r=" の場合は "r=" の式のみ
・ "Func Type" が "Param" の場合は "Param" の式のみ

という条件があります。

これらの条件に当てはまる式について計算結果を行列 (のようなもの) に格納するのですが、数値の他に "ERROR" というのがあって、この実装形式の検討が必要です。

結果の表示部分は既存の行列表示ルーチンを大部分で利用できそうですが、
表の上側の文字列が中央揃えであったり、関数式によって色分けが必要であったりするので、
これらの部分などでは変更が必要になります。

C.Basic for CG v1.45β FX v2.45β (さらに使いやすく色々と変更していってみる版)その14その1

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

Colon様、
>ありがとうございます。
>頭痛は若干残っていますが何とか活動できるレベルまで持ち直しました。

>毎年この時期は体調を崩しますが、今年は新型コロナウイルスが流行っている分より気を付けねばなりません。(^^;

少し回復されたということで良かったです。(^^)
新型コロナはまだまだ先が見えませんが気をつけていかないとですね。


>[→] キーの動作が微妙なんですが、いっそのこと [→] キーで編集が出来るようにしてしまってはどうでしょうか?

キーの動作がちょっとおかしくなってましたね。(^^;
で、[→] キーでの編集はいい案だと思いましたので試しに取り入れました。
分かりやすいところで[F5](Edit)も一応追加してあります。(^^)


>また、"SEE" 画面からの RECALL で NULL 文字列の場合に、エディタに貼り付けられる文字列が NULL 文字列にならないことがある不具合があります。
>Function Memory が空の場合、[F2] (RECALL) のポップアップが出ません。
>STORE / RECALL のポップアップ時に [EXIT] を押すと、"1" と表示されてしまいます。
>また、STORE / RECALL のポップアップの 2 行目の割り付けを純正と同じにしたほうが見映えが良いと思います。

ありがとうございます!
修正しました。(^^)


>ところで、プログラムの最初のほうで List への代入が上手くいかない場合があります。
>"Matrix base" が 0 の場合に発生する不具合のようですが、詳しい原因はよく分かりません。
>可能でしたら確認お願いします。

一応チェックしてみたのですが、

'#Mat 1
123->List 1[1]

これはエラーにならないのですが、

'#Mat 0
123->List 1[0]

これがエラーになりますね。(^^;
これは次回までに修正します。(^^)



>純正 Casio Basic にバグ (?) を見つけました。

これは貴重な発見ですね!
カラー化での機能強化で細部の細かなところまではバグ取りが行き届かなかったのでしょう。(^^;


>この現象を C.Basic の実装方法で再現しようとすると却って面倒なので、ヌル文字列を代入した際は一律で色をリセットする仕様にしても良いでしょうか?

はい、それでいいと思います。(^^)


>さて、Graphr, GraphXt, GraphYt, GraphX のうち、既に実装できる範囲の内容をお伝えします。
>具体的には "→Graphr" のような書式以外を実装することができるので、これについてお伝えします。

>「エラー処理はスキップして良い」とのことでしたので、Graphr, GraphX については GraphY と全く同じルーチンで構いません。

>GraphXt, GraphYt については、
>StrSplit($Mat θ[ _FuncNo, 7], StrChar(0xF6))
>の前半を GraphXt, 後半を GraphYt として扱う他は、GraphY と同じルーチンで構いません。

ありがとうございます!
同じ領域にX,Y両方の式を詰め込むとはなかなかに純正仕様も複雑仕様ですよね。
ってことで、次回実装してみます。(^^)


ってことで、とりあえず、ファンクションメモリー(Fn)の修正版です。

C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その14その1
https://pm.matrix.jp/CB/CBASICCG145beta14.zip

C.Basic for FX v2.45β (さらに使いやすく色々と変更していってみる版)その14その1
https://pm.matrix.jp/CB/CBASIC245beta14.zip
(build14 共通です。)
・ファンクションメモリー(Fn)のStore/Recall/SEEのSEEで[F5](Edit)を追加し編集可能になりました。
・ファンクションメモリー(Fn)のStore/Recall/SEEの不具合を修正しました。

GraphXt / GraphYt について

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
純正 Casio Basic にバグ (?) を見つけました。

GraphY / Graphr / GraphX にヌル文字列を代入した場合は色がデフォルトに戻るのですが、
GraphXt / GraphYt にヌル文字列を代入しても色はデフォルトに戻りません。

純正のプログラム機能で以下をお試しください。

〈サンプル 1〉
"TEST"→GraphY1
SetG-Color Cyan , 1
""→GraphY1

〈サンプル 2〉
"TEST"→GraphXt1
SetG-Color Cyan , 1
""→GraphXt1

上記についてそれぞれ、実行後にグラフ機能に入ってみると、
〈サンプル 1〉の実行後は Y1 が青になっているのに対し、
〈サンプル 2〉の実行後は Y1 がシアンになっているのがわかると思います。

この現象を C.Basic の実装方法で再現しようとすると却って面倒なので、ヌル文字列を代入した際は一律で色をリセットする仕様にしても良いでしょうか?


さて、Graphr, GraphXt, GraphYt, GraphX のうち、既に実装できる範囲の内容をお伝えします。
具体的には "→Graphr" のような書式以外を実装することができるので、これについてお伝えします。

「エラー処理はスキップして良い」とのことでしたので、Graphr, GraphX については GraphY と全く同じルーチンで構いません。

GraphXt, GraphYt については、
StrSplit($Mat θ[ _FuncNo, 7], StrChar(0xF6))
の前半を GraphXt, 後半を GraphYt として扱う他は、GraphY と同じルーチンで構いません。

Re:Re: C.Basic for CG v1.45β FX v2.45β (さらに使いやすく色々と変更していってみる版)その13その5再

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
> ここのところ連日のアップデートだったので、チェックも大変だったと思います。
> 体調が回復されるまで無理はされないでくださいませ。(^^)

ありがとうございます。
頭痛は若干残っていますが何とか活動できるレベルまで持ち直しました。

毎年この時期は体調を崩しますが、今年は新型コロナウイルスが流行っている分より気を付けねばなりません。(^^;


さて、Function Memory の一覧についてです。

[→] キーの動作が微妙なんですが、いっそのこと [→] キーで編集が出来るようにしてしまってはどうでしょうか?

また、"SEE" 画面からの RECALL で NULL 文字列の場合に、エディタに貼り付けられる文字列が NULL 文字列にならないことがある不具合があります。

Function Memory が空の場合、[F2] (RECALL) のポップアップが出ません。

STORE / RECALL のポップアップ時に [EXIT] を押すと、"1" と表示されてしまいます。

また、STORE / RECALL のポップアップの 2 行目の割り付けを純正と同じにしたほうが見映えが良いと思います。

以上、よろしくお願いします。


ところで、プログラムの最初のほうで List への代入が上手くいかない場合があります。

"Matrix base" が 0 の場合に発生する不具合のようですが、詳しい原因はよく分かりません。

可能でしたら確認お願いします。

Re:Progress on C.Basic Update Agent

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

管理人様、
>build 13 差替えに対応しました。

いつもありがとうございます!(^^)
fnのRecallでポップアップがStore Fromになっていたのをこっそり直しています。(^^;



@CalcLoverHK
I'm happy to see the progress of Update Agent.(^^)

>(So sentaro21, you can now abandone the constant link ^^)

Ok,Thanks!


>https://pm.matrix.jp/CB/CBASICxxxbeta{x/xx}
>https://pm.matrix.jp/CB/CBASICxxxbeta{x/xx}
>
>The build number is not going to sync with CG build number. Instead, it has its own version system. Every update just add 1 to the build number.
>
>And remember don't use version number like "01" or "06" because they cause some troubles on UA. I managed to fix it hardly. (^^;


Ok.(^^)
I'll change that from 1.46beta1.


>Last optional request, can you capitalize setup_format.txt -> Setup_format.txt It just looks inconsistant as it is the only one that don't follow other documents' format (^^;

I fixed it and re-uploaded.(^^)

Progress on C.Basic Update Agent

Hi sentaro21

After another 6 days developments on my C.Basic Update Agent (FOR statement is a mess in CMD, I must say), I've made it more useful and even less dependent.

Things I have done:
- Finally no need constant link
- More friendly GUI
- Ability to output all logs
More features are descripted in UA_ReadmeFX.txt and UA_ReadmeCG.txt

FX:
http://www.mediafire.com/file/ghstr9sb0jcb6jb/UA_ReadmeFX.txt/file
http://www.mediafire.com/file/5v6z76lko810d4w/UpdateAgentFX.cmd/file

CG:
http://www.mediafire.com/file/eseh3k3hrl9gggv/UA_ReadmeCG.txt/file
http://www.mediafire.com/file/0k9eoynrjsb53jc/UpdateAgentCG.cmd/file

(So sentaro21, you can now abandone the constant link ^^)

This version is more close to be stable and probably I will release final version within 2~3 days (maybe more). But I have few questions and requests:

1. Version formats
Because UA are very sensitive of the download link, if you don't follow the formats, it will not work properly. So I want to set up following formats:

FX/CG offical version: https://pm.matrix.jp/CB/CBASICxxxbeta
No problem.

FX/CG beta version:
Do you prefer the current one (which sometimes skips build number and sync to CG build number, which is not good for UA because it will have to check every builds), or the one I suggest below?

https://pm.matrix.jp/CB/CBASICxxxbeta{x/xx}
https://pm.matrix.jp/CB/CBASICxxxbeta{x/xx}

The build number is not going to sync with CG build number. Instead, it has its own version system. Every update just add 1 to the build number.

And remember don't use version number like "01" or "06" because they cause some troubles on UA. I managed to fix it hardly. (^^;

Last optional request, can you capitalize setup_format.txt -> Setup_format.txt It just looks inconsistant as it is the only one that don't follow other documents' format (^^;

Thanks for your supports. ^^

Cheers
CalcLoverHK

Re: C.Basic for CG v1.45β FX v2.45β (さらに使いやすく色々と変更していってみる版)その13その5再

sentaro様、iron2様、Colon様、CalcLoverHK様、C.Basicユーザーの皆様、

管理人のやすです。

build 13 差替えに対応しました。

C.Basic for CG v1.45β FX v2.45β (さらに使いやすく色々と変更していってみる版)その13その5再

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

Colon様、
>略し方も問題ないでしょうか? >管理人様、sentaro様

私的には完璧だと思います。(^^)
実装された暁にはC.Basicのメニューを見て純正機能かと勘違いされることもあるかもしないくらい完璧です!(^^)


>動作に何箇所か不具合があるようですが、
>体調を崩してしまったので回復してから調査・報告します。(^^;

うわ、やはり、バグが…(^^;
ということで、
エディタでStore/Recallでファンクションメニューが戻ってしまうバグは見つけました。(^^;
あと、SEE表示を純正に近づけておきました。(^^)
それ以外の不具合は見つかり次第修正します。(^^;

ここのところ連日のアップデートだったので、チェックも大変だったと思います。
体調が回復されるまで無理はされないでくださいませ。(^^)


C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その13その5再
https://pm.matrix.jp/CB/CBASICCG145beta13.zip
https://pm.matrix.jp/CB/CBASICCG.zip

C.Basic for FX v2.45β (さらに使いやすく色々と変更していってみる版)その13その5再
https://pm.matrix.jp/CB/CBASIC245beta13.zip
https://pm.matrix.jp/CB/CBASICFX.zip
(build13 共通です。)
・ファンクションメモリー(Fn)およびグラフメモリー(Y)をデフォルトで数式評価とし、
 文字列関数内および文字列に続く場合は文字列として評価するように変更しました。
 (数式評価)
  fn1->A
  fn1(123)->A
  Locate 1,1,fn1
  Text 1,1,fn1(123)
 (文字列評価)
  "123"+fn1->Str 1
  fn2->Str 2
  StrJoin(fn1,Str 1)

・文字列から文字列への代入で代入されない不具合を修正しました。
(fn3にコピーされない例)
  ClrMat
  "123"->fn1
  "ABC"->Str 1
  Str 1->fn3
・ファンクションメモリー(Fn)のStore/Recall/SEEを追加しました。
 (※エディタではクリップボードの内容がストア対象です。1行入力では1行全体がストア対象になります。)
・F_Start/F_End/F_pitchを独立変数に変更しました。
・?コマンドで文字列が表示される場合にアスキーコードにデコードしないように修正しました。

Re:Re: C.Basic for CG v1.45β FX v2.45β (さらに使いやすく色々と変更していってみる版)その13その5

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
> CG20で試したら私のところでも不具合が出なかったです。(^^;
> CG50だけの不具合というのも変なのですが、なんかそんな感じです。
> で、何が原因かとしばらく試行錯誤してしまったんですが、なんと、F Start等の変数の位置を移動したら出なくなりました。(^^;
> すっきりしない感じですが、そんな感じでとりあえず治りました。(^^)

不思議ですが取り敢えず直って良かったです。

> なかなかいい感じではないでしょうか。(^^)

略し方も問題ないでしょうか? >管理人様、sentaro様

> ・ファンクションメモリー(Fn)のStore/Recall/SEEを追加しました。

動作に何箇所か不具合があるようですが、
体調を崩してしまったので回復してから調査・報告します。(^^;

Re:Re: C.Basic for CG v1.45β FX v2.45β (さらに使いやすく色々と変更していってみる版)その13その5

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

管理人様、
>C.Basic for FX Ver 2.45 buil13 / C.Basic for CG Ver1.45 build13 のアップデート対応しました。

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

新たなバグが無ければいいのですが、おそらく見つかると思うのでそれは次のbuild14で直します。(^^;

Re: C.Basic for CG v1.45β FX v2.45β (さらに使いやすく色々と変更していってみる版)その13その5

sentaro様、iron2様、Colon様、CalcLoverHK様、C.Basicユーザーの皆様、

管理人のやすです。

C.Basic for FX Ver 2.45 buil13 / C.Basic for CG Ver1.45 build13 のアップデート対応しました。

C.Basic for CG v1.45β FX v2.45β (さらに使いやすく色々と変更していってみる版)その13その5

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

Colon様、
>私のところでは正常です。
>ただ、この前私が出くわした不具合に似ているので何か関係があるかもしれませんね。

CG20で試したら私のところでも不具合が出なかったです。(^^;
CG50だけの不具合というのも変なのですが、なんかそんな感じです。
で、何が原因かとしばらく試行錯誤してしまったんですが、なんと、F Start等の変数の位置を移動したら出なくなりました。(^^;
すっきりしない感じですが、そんな感じでとりあえず治りました。(^^)


>行列のようです。
>C.Basic 的に言えばほぼ同じですが。(^^;

了解です。
とりあえず、F Start / F End / F pitch の仕様が分かるまではこれらは普通の変数状態ですね。(^^;


>FKey Icon のサンプル第 5 弾です。

https://pm.matrix.jp/upload/upload.cgi?get=00094
https://pm.matrix.jp/upload/upload.cgi?get=00095

>「入」アイコンは {Base} から {Transp} までの 105 個で、そのうち 80 個が作成済みです。
>画像 2 つ目の最後に追加分の 白 / 黒 アイコンを入れました。

>当初 {>GphFunc} としようとしていたものは、見辛いというのともっとシンプルで良いだろうという理由で {>GRAPH} に変更しました。

なかなかいい感じではないでしょうか。(^^)


>#1381 以降のアイコンですが、以前アップしていただいた png から読み取って流用できました。(^^)

さすがですね!
お役に立てて何よりです。(^^)


ということで、build13を一段落とします。(^^)

C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その13その5
https://pm.matrix.jp/CB/CBASICCG145beta13.zip
https://pm.matrix.jp/CB/CBASICCG.zip

C.Basic for FX v2.45β (さらに使いやすく色々と変更していってみる版)その13その5
https://pm.matrix.jp/CB/CBASIC245beta13.zip
https://pm.matrix.jp/CB/CBASICFX.zip
(build13 共通です。)
・ファンクションメモリー(Fn)およびグラフメモリー(Y)をデフォルトで数式評価とし、
 文字列関数内および文字列に続く場合は文字列として評価するように変更しました。
 (数式評価)
  fn1->A
  fn1(123)->A
  Locate 1,1,fn1
  Text 1,1,fn1(123)
 (文字列評価)
  "123"+fn1->Str 1
  fn2->Str 2
  StrJoin(fn1,Str 1)

・文字列から文字列への代入で代入されない不具合を修正しました。
(fn3にコピーされない例)
  ClrMat
  "123"->fn1
  "ABC"->Str 1
  Str 1->fn3
・ファンクションメモリー(Fn)のStore/Recall/SEEを追加しました。
 (※エディタではクリップボードの内容がストア対象です。1行入力では1行全体がストア対象になります。)
・F_Start/F_End/F_pitchを独立変数に変更しました。
・?コマンドで文字列が表示される場合にアスキーコードにデコードしないように修正しました。

Fkey 相談用資料 第 5 弾

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

FKey Icon のサンプル第 5 弾です。

https://pm.matrix.jp/upload/upload.cgi?get=00094
https://pm.matrix.jp/upload/upload.cgi?get=00095

「入」アイコンは {Base} から {Transp} までの 105 個で、そのうち 80 個が作成済みです。


画像 2 つ目の最後に追加分の 白 / 黒 アイコンを入れました。

当初 {>GphFunc} としようとしていたものは、見辛いというのともっとシンプルで良いだろうという理由で {>GRAPH} に変更しました。


sentaro様、
#1381 以降のアイコンですが、以前アップしていただいた png から読み取って流用できました。(^^)

Re^3: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その13その4

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
> 1.45その13その4での新規作成で妙なエラーになってプログラムが入力できないる現象が発覚しました。(^^;
> 既存のプログラムの実行&中断編集は可能ですが、最初からの編集が出来ないと思います。(^^;
> ということで、原因究明中です。(^^;

私のところでは正常です。

ただ、この前私が出くわした不具合に似ているので何か関係があるかもしれませんね。

> ということは、これはリストに関連するコマンドでしょうか?

行列のようです。
C.Basic 的に言えばほぼ同じですが。(^^;



あっ、そういえば「入」アイコンのサンプルを出すと言って出し忘れていたので、これから慌てて準備します。(^^;

Re:Re: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その13その4

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

1.45その13その4での新規作成で妙なエラーになってプログラムが入力できないる現象が発覚しました。(^^;
既存のプログラムの実行&中断編集は可能ですが、最初からの編集が出来ないと思います。(^^;
ということで、原因究明中です。(^^;


Colon様、
>修正確認しました。

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


>"F Result" は変数ではないので、申し訳ありませんが戻してください。(^^;

あ、そうなんですね。
ということで、それは独立変数から戻します。(^^;


>いや、分からん。
> しかも説明はこれだけ。

> 注釈もよく分からん。

ちょっとツボりました!(^^;
Colon様をもってしても分からないコマンドが存在するというのがCasioBasicの複雑怪奇なところですね。(^^;


>テーブル機能の計算結果が入っているようですが、どうやら単独では使えない (= エラーになる) コマンドらしいので実装する順番としてはかなり最後の方になると思います。

ということは、これはリストに関連するコマンドでしょうか?


>良いアイデアですね!
>{ExStr} にも加えておくに一票です。(^^)

了解です。(^^)


>純正では出来ない構文ですから、拡張機能扱いになるので OK だと思います。(^^)
>これらは私も C.Basic に出会う前から欲しいと思っていた機能です。

お!そうだったんですね。(^^)
この仕様変更でちょっと何やら変なバグが発生したので、(^^;
それが落ち着いたら、仕様固定したいと思います。

Re: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その13その4

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
> "X=" が小文字になっています。
> また、"Func Type" が "Param" の時に入力できる文字が "T" になっていません。

修正確認しました。


> Y,θ,Tは変わらないので[F1] (x), [F2] (X)だけでいいかと思います。(^^)

了解しました。(^^)


> ついでなので、F Resultも独立変数にしましたが、これってどういう使われ方なのでしょう?

"F Result" は変数ではないので、申し訳ありませんが戻してください。(^^;

CASIO の取扱説明書では次のように説明されています。

==【引用】=========================
・ {Result*1} … 数表内容の行列
 *1 Run-Matrix または Program モードで TABLE メニューが表示されているときのみ “Result” 項目が表示されます。
==================================

いや、分からん。
しかも説明はこれだけ。

注釈もよく分からん。


とか言ってても仕方ないので調べてみました。(^^;

実態は確かに行列っぽいんですが、代入や呼び出し方法が特殊なので素直には実装できないと思います。
構文や使い方の説明がなされていないので、全体の機能を把握しきった上でまた報告します。m(_ _)m

テーブル機能の計算結果が入っているようですが、どうやら単独では使えない (= エラーになる) コマンドらしいので実装する順番としてはかなり最後の方になると思います。


> すでに2年以上の実績があるので、公式的にStrReplのところが埋まらない限りはこのままで構わない気もします。
> ExStrのカテゴリーにも加えておくというのも一つの手ですね。(^^)

良いアイデアですね!
{ExStr} にも加えておくに一票です。(^^)


> この修正ですが、
> fnやGraphYは基本的に数式評価ですが、
> 例外として、(Hlib2様のリクエストを満たすために)転送先が文字変数の場合のみ、文字列として扱います。
> さらに文字列関数内で使う場合と文字列が最初にある式では文字列評価になってますが問題無ければこの仕様でいきたいと思います。(^^)

純正では出来ない構文ですから、拡張機能扱いになるので OK だと思います。(^^)

これらは私も C.Basic に出会う前から欲しいと思っていた機能です。

C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その13その4

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

Colon様、
>"X=" が小文字になっています。
>また、"Func Type" が "Param" の時に入力できる文字が "T" になっていません。

修正しました。(^^)


>あ、私のイメージだと [F1] (x), [F2] (X), [F3] (x,Y,θ,T), [F4] (X,Y,θ,T) でしたが、
>これだと単に x↔️X の切り替えなので、アイコンは現状のままで良さそうでしょうか?

Y,θ,Tは変わらないので[F1] (x), [F2] (X)だけでいいかと思います。(^^)


>はい、倍精度 / 整数の区別も不要ですし、V-Win 関係の変数のような形式で良いと思います。

ついでなので、F Resultも独立変数にしましたが、これってどういう使われ方なのでしょう?


>どうしましょうか?

すでに2年以上の実績があるので、公式的にStrReplのところが埋まらない限りはこのままで構わない気もします。
ExStrのカテゴリーにも加えておくというのも一つの手ですね。(^^)


ということで、

>現段階で修正して欲しい点があります。
>Hlib2 様からもご指摘があったかと思いますが、"Locate", "Text", "◢" などに >"GraphY1" などを指定した場合、GraphY1 などを数式として計算した結果が表示されるのが正しい仕様です。

この修正ですが、
fnやGraphYは基本的に数式評価ですが、
例外として、(Hlib2様のリクエストを満たすために)転送先が文字変数の場合のみ、文字列として扱います。
GraphY→fn1
GraphY→Stt 1

さらに文字列関数内で使う場合と文字列が最初にある式では文字列評価になってますが問題無ければこの仕様でいきたいと思います。(^^)
(例)StrJoin("123"+GraphY1)->Str 1
(例)"123"+GraphY1->Str 1


C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その13その4
https://pm.matrix.jp/CB/CBASICCG145beta13.zip
https://pm.matrix.jp/CB/CBASICCG.zip

Re: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その13その3

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
> 純正の唯一の設定項目がFunc Typeだったのですよね。って今再確認しました。(^^;
> ということで、修正しました。(^^)

"X=" が小文字になっています。


> 修正しました。(^^)

"SetupRecover" の修正確認しました。


> 追加しました。(^^)

あ、私のイメージだと [F1] (x), [F2] (X), [F3] (x,Y,θ,T), [F4] (X,Y,θ,T) でしたが、
これだと単に x↔️X の切り替えなので、アイコンは現状のままで良さそうでしょうか?

また、"Func Type" が "Param" の時に入力できる文字が "T" になっていません。


> これは新たに3つの変数が増えるということですよね?

はい、倍精度 / 整数の区別も不要ですし、V-Win 関係の変数のような形式で良いと思います。


> 必要ならば、エラー判定は後付出来ますし、省いて大丈夫です。(^^)

了解しました。(^^)


> ってことは、build09以前の仕様で問題なかったんですね。(^^;
> これは次で直します。

よろしくお願いします。m(_ _)m


> たしかに拡張コマンドなので場所が違ってますね。
> ただ、置換機能なので、検索の隣が空いていたのでそこにしたと思います。(^^)

どうしましょうか?

C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その13その3

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

Colon様、
>{MENU} - {TABLE} の [F6] (GPHCLR) 追加、"G SelOff" / "T SelOn" の修正をそれぞれ確認しました。
>確認しました。値は正しいようです。

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


>設定画面での表示内容としては、"Y=Type" や "ParamType" ではなく、"Y=" や "Param" のようになります。
>また、使用するアイコンは #61, #62, #63, #723; #65, #66, #67, #68; #724, #725, #726, #727 です。
>純正プログラム機能の設定画面を参照してください。

純正の唯一の設定項目がFunc Typeだったのですよね。って今再確認しました。(^^;
ということで、修正しました。(^^)


>"Y=Type" など各コマンドの正常動作も確認できましたが、SetupRecover が効かないようです。

修正しました。(^^)


>System(10001) ですが、ルーチンを書くときに使いやすいので暫く残していただけると助かります。

了解です!
というか、別の読み出し方法が無いのでずっと残ることになると思います。(^^)


>"FuncType" が導入できたので、
>次は "[x]character" に [X,Y,θ,T] と [x,Y,θ,T] を追加していただければと思います。

追加しました。(^^)


>次は、F Start / F End / F Pitch を Alias ではなく独立実装にしていただければこの 3 つは OK です。

これは新たに3つの変数が増えるということですよね?


>これについてですが、純正ではデータが無い番号を指定した場合に "No Data"、Y1 に対して X1 を指定した場合に "Syntax ERROR" になります。
>C.Basic ではこれらのエラー判定を省いても大丈夫でしょうか?

必要ならば、エラー判定は後付出来ますし、省いて大丈夫です。(^^)


>現段階で修正して欲しい点があります。
>Hlib2 様からもご指摘があったかと思いますが、"Locate", "Text", "◢" などに "GraphY1" などを指定した場合、GraphY1 などを数式として計算した結果が表示されるのが正しい仕様です。

あ゛…(汗)
ってことは、build09以前の仕様で問題なかったんですね。(^^;
Hlib2様のリクエストは、
fn1→Str 1
のところだけ修正すれば良かったということですね。(^^;
これは次で直します。


>ところで、"StrRepl(" は {ExSTR} ではなく {STR} に入っていますが、これは大丈夫なんでしょうか?

たしかに拡張コマンドなので場所が違ってますね。
ただ、置換機能なので、検索の隣が空いていたのでそこにしたと思います。(^^)


C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その13その2
https://pm.matrix.jp/CB/CBASICCG145beta13.zip
https://pm.matrix.jp/CB/CBASICCG.zip


@CalcLoverHK
I tried new script, it seems to works well.(^^)

Improved C.Basic Update Agent

Hi sentaro21

Yes, exactly! Thank you so much!

By the way, I've made some big overhaul on C.Basic Update Agent to make it more compact. ^^

The difference between archive and with update agent folder has decreased to only two files. You now only have to download two files of FX and CG versions below. Then, put them on the archive file (C.Basic file with version number). Finally rename the whole folder to "CBASICFX" or "CBASICCG". You don't need to change the source file name. ^^

FX version:
https://www.mediafire.com/file/21nsjke0qx2zp1k/UpdateAgentFX.cmd/file
https://www.mediafire.com/file/ltxiz1o2uvw3yop/UA_ReadmeFX.txt/file

CG version:
https://www.mediafire.com/file/porx5t9csxqxqzb/UpdateAgentCG.cmd/file
https://www.mediafire.com/file/bqeqckgcsttx24c/UA_ReadmeCG.txt/file

(Actually, even without UA_Readme, the update agent still works. This file is just to inform new users. Once read, they can remove it.)

Cheers
CalcLoverHK

Re: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その13その2

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
{MENU} - {TABLE} の [F6] (GPHCLR) 追加、"G SelOff" / "T SelOn" の修正をそれぞれ確認しました。


> SETUPの三番目に追加しました。
> 内部値は互換になっていると思いますが、確認する手段がありませんので、
> 仮としてSystem(10001)で取得できるようにしてます。(^^;

確認しました。値は正しいようです。

設定画面での表示内容としては、"Y=Type" や "ParamType" ではなく、"Y=" や "Param" のようになります。
また、使用するアイコンは #61, #62, #63, #723; #65, #66, #67, #68; #724, #725, #726, #727 です。

純正プログラム機能の設定画面を参照してください。

"Y=Type" など各コマンドの正常動作も確認できましたが、SetupRecover が効かないようです。

System(10001) ですが、ルーチンを書くときに使いやすいので暫く残していただけると助かります。

"FuncType" が導入できたので、
次は "[x]character" に [X,Y,θ,T] と [x,Y,θ,T] を追加していただければと思います。

[x,θ,T] キーで入力できる文字は、"FuncType" が
・ 0, 4, 5, 6, 7 の場合 …… 0x90 / "X"
・ 1 の場合 …… "θ" ([ALPHA] + [^] と同じ)
・ 2 の場合 …… "T" (ASCII 文字の "T")
・ 3, 8, 9, 10, 11 の場合 …… "Y" (ASCII 文字の "Y")

です。
この辺りも純正プログラム機能でご確認いただければ分かりやすいかと思います。


> ?コマンドで文字列を表示する場合にアスキーコードに戻してたのを戻さないようにしてみました。
> これで大丈夫だと思います。(^^)

ありがとうございます! (^^)
正常動作を確認しました。


さて、新規コマンドも残るは以下の 23 個になりました。

===============
GraphY
Graphr
GraphXt
GraphYt
GraphX
F Start
F End
F Pitch
F Result
DrawGraph
DispF-Tbl
Graph Y=
Graph r=
Graph(X,Y)=(
Graph ∫
Graph Y>
Graph Y<
Graph Y>=
Graph Y<=
Graph X>
Graph X<
Graph X>=
Graph X<=
===============

次は、F Start / F End / F Pitch を Alias ではなく独立実装にしていただければこの 3 つは OK です。

その間に、私は GraphY から GraphX までへの代入ルーチンを考えておきます。

これについてですが、純正ではデータが無い番号を指定した場合に "No Data"、Y1 に対して X1 を指定した場合に "Syntax ERROR" になります。
C.Basic ではこれらのエラー判定を省いても大丈夫でしょうか?

現段階で修正して欲しい点があります。
Hlib2 様からもご指摘があったかと思いますが、"Locate", "Text", "◢" などに "GraphY1" などを指定した場合、GraphY1 などを数式として計算した結果が表示されるのが正しい仕様です。

"X"→GraphY1
0→X
Locate 1, 1, GraphY1

の場合は、"0" と表示されるべきです。


ところで、"StrRepl(" は {ExSTR} ではなく {STR} に入っていますが、これは大丈夫なんでしょうか?

C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その13その2

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


@CalcLoverHK
I upload CBASICFX.zip / CBASICCG.zip.
Is this Ok?(^^)


Colon様、
>キープレス変更、GraphYn(<数式>) の修正を確認しました。

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


>追加コマンドについては、"G SelOff" と "T SelOn" の処理が逆になっています。
>その他は正常に動作しました。

あ、間違えてました!
ってことで、修正しました。(^^;


>さて、次は SETUP に "Func Type" を追加していただければ、以下のコマンドが導入できます。

SETUPの三番目に追加しました。
内部値は互換になっていると思いますが、確認する手段がありませんので、
仮としてSystem(10001)で取得できるようにしてます。(^^;


>ところで、グラフ関数式リストの作成において "?GraphY1" のような書式を使いたいのですが、sin などのコマンドがアルファベットになってしまいます。
>何か対策は取れませんか?

?コマンドで文字列を表示する場合にアスキーコードに戻してたのを戻さないようにしてみました。
これで大丈夫だと思います。(^^)


C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その13その2
https://pm.matrix.jp/CB/CBASICCG145beta13.zip

Re: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その13その1

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
キープレス変更、GraphYn(<数式>) の修正を確認しました。

{MENU} - {TABLE} の [F6] は {MENU} - {GRAPH} の [F6] (GPHCLR) と全く同じなので、ここも追加お願いします。

追加コマンドについては、"G SelOff" と "T SelOn" の処理が逆になっています。
その他は正常に動作しました。


さて、次は SETUP に "Func Type" を追加していただければ、以下のコマンドが導入できます。

・ Y=Type
・ r=Type
・ ParamType
・ X=Type
・ Y>Type
・ Y<Type
・ Y>=Type
・ Y<=Type
・ X>Type
・ X<Type
・ X>=Type
・ X<=Type

これらは SETUP の内部値を対応する値に変更するだけのコマンドです。
よろしくお願いします。m(_ _)m


ところで、グラフ関数式リストの作成において "?GraphY1" のような書式を使いたいのですが、sin などのコマンドがアルファベットになってしまいます。
何か対策は取れませんか?

C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その13その1

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

Colon様、
>色々いじってたら直りました。
>文字の入力が出来なくなったりカタログが効かなくなったりしていたので、私のほうで何か変になってたっぽいです。(^^;

良かったです。(^^)
一瞬エンバグかと焦りました。(^^;


>{MENU} は純正で空いている [F6] - [F3~F5] に {CONVNTL} / {#} / {%} を割り当てれば良さそうですが、{VARS} は少し工夫が必要かもですね。

'%'は「ALPHA]+[(-)]のショートカットが使えるので、そこを本来の[TABLE]に変えました。(^^)


>ところで、ManualCG_J.txt が文字化けしています。

BOMの入ってないファイルになっていたようです。
ってことで、差し替えました。(^^)


>修正確認しました。
>抜けていましたが、GraphYn(<数式>) で X=<数式> の時の GraphYn の値が求められると思います。
>これの式評価が従来通りになっているので、こちらも 6 バイトプレフィックスへの対応をお願いします。m(_ _)m

あ、ここもありました!(^^;
ありがとうございます!(^^)

ということで、とりあえず、G SelOn~SetG-Color まで実装終了です。(^^)

C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その13その1
https://pm.matrix.jp/CB/CBASICCG145beta13.zip
(build13)
...

Re^4: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その12.再

Hi sentaro21

Download my modified C.Basic files below.
FX: https://www.mediafire.com/file/xv6qn5hnlvgx7cw/CBASICFX.zip/file
CG: https://www.mediafire.com/file/ol6k8y4nu8631bc/CBASICCG.zip/file

Then upload them to your website pm.matrix.jp
The link name should be like this:
https://pm.matrix.jp/CB/CBASICFX
https://pm.matrix.jp/CB/CBASICCG
You can see there is no version number after FX or CG.

You can continue to upload the link with the version number, but please do remember to upload the link without the version number just like above. From now on, if you upload the newer C.Basic zip file with update agent using the C.Basic file with version number, please first copy "C.Basic_update" to it, change "CBASIC***beta" or "CBASICCG***beta" file inside the zip both to "Source" (This is more clear than before, I think) then zip it and rename the whole zip file to CBASICFX or CBASICCG to finally upload to pm.matrix.jp.

I hope you can understand my meaning. (^^;

Cheers
CalcLoverHK

Re^4: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その12.再

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、

>> とりあえず、
>> ?コマンドだけの修正です。(^^;

> ありがとうございます。(^^)
> 後程確認します。

修正確認しました。

抜けていましたが、GraphYn(<数式>) で X=<数式> の時の GraphYn の値が求められると思います。
これの式評価が従来通りになっているので、こちらも 6 バイトプレフィックスへの対応をお願いします。m(_ _)m

Re^3: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その12.再

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
> 確認したら上手くいってるっぽいのですが、
> どこでおかしくなってるでしょう?

色々いじってたら直りました。

文字の入力が出来なくなったりカタログが効かなくなったりしていたので、私のほうで何か変になってたっぽいです。(^^;

> ファンクションキーの修正もありますが、順次実装していってみます。(^^)

{MENU} は純正で空いている [F6] - [F3~F5] に {CONVNTL} / {#} / {%} を割り当てれば良さそうですが、{VARS} は少し工夫が必要かもですね。

> とりあえず、
> ?コマンドだけの修正です。(^^;

ありがとうございます。(^^)
後程確認します。


ところで、ManualCG_J.txt が文字化けしています。

Re:Re: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その12.再

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

管理人様、
>以下の差替えアップデートに対応しました。
早速にありがとうございます!(^^)



@CalcLoverHK
How do I satisfy your request?(^^)



Colon様、
>"?" コマンドも対応お願いします。

あ、抜けてました。(^^;


>直っていないようです。(^^;

確認したら上手くいってるっぽいのですが、
どこでおかしくなってるでしょう?
-------------------
ClrMat θ
'#GraphY θ,256,512
"123+456"->GraphY256
-------------------


>というわけで、お伝えできるものから内部動作をお伝えするので、実装の方をお願いします。m(_ _)m
>以下のコマンドは DrawGraph など描画時の挙動に影響するものですが、描画する側のコマンドの変更はまだ行わないので内部値の変更のみになります。

ありがとうございます!
ファンクションキーの修正もありますが、順次実装していってみます。(^^)

とりあえず、
?コマンドだけの修正です。(^^;

C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その12.再々
https://pm.matrix.jp/CB/CBASICCG145beta12.zip

Re: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その12.再

sentaro人様、iron2様、Colon様、CalcLoverHK様、C.Basicユーザーの皆様、

管理人のやすです。

以下の差替えアップデートに対応しました。

> C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その12.再
> https://pm.matrix.jp/CB/CBASICCG145beta12.zip
> (build12.)
> ・GraphYとfnの確保数と文字列の長さをStr変数と同等に変更しました。
> ・GraphYの格納仕様を6バイトのプレフィックス付きに変更しました。
> (行列への直アクセス以外は以前と変更ありません。)

Re: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その12.再

Hi sentaro21

Thank you for testing my script! ^^

But my purpose of this script is to automatically fetch the C.Basic update and replace the old one without changing the download link by myself. Although your link can update C.Basic to latest 2.45 build, but it cannot download versions that are newer than this one, for example, 2.46.

I found out your storage website pm.matrix.jp matches my requirements perfectly. You can upload the replacement to replace the version without changing the already existed link. That's why I need a constant link of C.Basic update.

Cheers
CalcLoverHK

Re: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その12.再

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

管理人様、
グラフ関係のサンプルプログラムは、一通りコマンドの実装が完了してから作成したいと思います。


sentaro様、
> 了解です!
> ってことで、そこだけの修正アップデートしてみました。(^^)

"?" コマンドも対応お願いします。

> ・GraphYとfnの確保数と文字列の長さをStr変数と同等に変更しました。

直っていないようです。(^^;

というわけで、お伝えできるものから内部動作をお伝えするので、実装の方をお願いします。m(_ _)m

以下のコマンドは DrawGraph など描画時の挙動に影響するものですが、描画する側のコマンドの変更はまだ行わないので内部値の変更のみになります。

なお、ルーチンは C.Basic で記述し、便宜的に Mat θ を使って説明することとします。
Y1, r2, Xt3 などの数字部分は〈関数式の番号〉/ "_FuncNo" とします。
また、16 ビットカラー値は "_Color16" と表します。

========================================
・ G SelOn
(書式)G SelOn 〈関数式の番号〉

【ルーチン】
Mat θ[ _FuncNo, 7] ⇒ Mat θ[ _FuncNo, 3] or 0x80→Mat θ[ _FuncNo, 3]

========================================
・ G SelOff
(書式)G SelOff 〈関数式の番号〉

【ルーチン】
Mat θ[ _FuncNo, 7] ⇒ Mat θ[ _FuncNo, 3] and 0x7F→Mat θ[ _FuncNo, 3]

========================================
・ T SelOn
(書式)T SelOn 〈関数式の番号〉

【ルーチン】
Mat θ[ _FuncNo, 7] ⇒ Mat θ[ _FuncNo, 3] or 0x20→Mat θ[ _FuncNo, 3]

========================================
・ T SelOff
(書式)T SelOff 〈関数式の番号〉

【ルーチン】
Mat θ[ _FuncNo, 7] ⇒ Mat θ[ _FuncNo, 3] and 0xDF→Mat θ[ _FuncNo, 3]

========================================
・ NormalG
(書式)NormalG 〈関数式の番号〉

【ルーチン】
Mat θ[ _FuncNo, 7] ⇒ 0x02→Mat θ[ _FuncNo, 4]

========================================
・ ThickG
(書式)ThickG 〈関数式の番号〉

【ルーチン】
Mat θ[ _FuncNo, 7] ⇒ 0x03→Mat θ[ _FuncNo, 4]

========================================
・ BrokenThickG
(書式)BrokenThickG 〈関数式の番号〉

【ルーチン】
Mat θ[ _FuncNo, 7] ⇒ 0x05→Mat θ[ _FuncNo, 4]

========================================
・ DotG
(書式)DotG 〈関数式の番号〉

【ルーチン】
Mat θ[ _FuncNo, 7] ⇒ 0x08→Mat θ[ _FuncNo, 4]

========================================
・ ThinG 【CG 版のみ】
(書式)ThinG〈関数式の番号〉

【ルーチン】
Mat θ[ _FuncNo, 7] ⇒ 0x12→Mat θ[ _FuncNo, 4]

========================================
・ SetG-Color 【CG 版のみ】
(書式)SetG-Color 〈色指定コマンド〉,〈関数式の番号〉

【ルーチン】
Mat θ[ _FuncNo, 7] ⇒ _Color16→Poke(VarPtr(Mat θ[ _FuncNo, 5])).W

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


内部フォーマットは以下の通りです。
今後提案するルーチンはこれらに基づくものとなります。

〈01 - 02 バイト目〉
グラフ式のタイプを格納します。

・ 0x0108 …… Y=
・ 0x0198 …… Y>
・ 0x0188 …… Y<
・ 0x01B8 …… Y≧
・ 0x01A8 …… Y≦
・ 0x0208 …… X=
・ 0x0298 …… X>
・ 0x0288 …… X<
・ 0x02B8 …… X≧
・ 0x02A8 …… X≦
・ 0x040A …… <r>=
・ 0x0409 …… Param

〈03 バイト目〉
関数式の選択状況を格納します。
実際の値は以下の Or となります。

・ 0x01 …… 不明
・ 0x02 …… 不明
・ 0x04 …… 不明
・ 0x08 …… DefG
・ 0x10 …… Dyna
・ 0x20 …… Table
・ 0x40 …… グラフ右
・ 0x80 …… グラフ左

〈04 バイト目〉
グラフの線種の設定を格納します。

・ 0x02 …… Normal
・ 0x03 …… Thick
・ 0x05 …… Broken
・ 0x08 …… Dot
・ 0x12 …… Thin

〈05 - 06 バイト目〉
16 ビットカラー値です。

C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その12.再

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

Colon様、
>はい、それだけやっていただければ、
>テストした上で各コマンドのルーチンと詳細な仕様をお伝えします。(^^)

了解です!
ってことで、そこだけの修正アップデートしてみました。(^^)


>詳細は調査中ですが、少なくとも "DrawGraph" コマンドと Func Type は関係ありません。(^^;

あ、そうなんですね。(^^;


>ASCII 文字の "," が括弧の外に使われることがあるからだと思いますが、
>"StrSplit()" で一発で分けられるのでルーチンは組みやすそうです。

分けるには確実に便利ですね。(^^)


>内部データの例示をするので "×" を使います、ということでした。(^^;

了解です。(^^)


>「そうしなければいけない」ではなく「そうなれば便利」という提案なので、FX 版はそのままでも良いと思います。(^^;

了解です。(^^)
とりあえず、r、Xt、Yt、Xはすぐに実装状態になりそうなので、そのままにしておきます。(^^;


>まぁ、独自発見の SysCall を使いすぎると FX 版への移植に支障が出るので、普段の SysCall 以外で使うのは移植の心配がほぼ無い [SHIFT] + [5] だけになると思います。

FX版とSysCallが違うとなればそれはまた難題ですね。(^^;


C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その12.再
https://pm.matrix.jp/CB/CBASICCG145beta12.zip
(build12.)
・GraphYとfnの確保数と文字列の長さをStr変数と同等に変更しました。
・GraphYの格納仕様を6バイトのプレフィックス付きに変更しました。
(行列への直アクセス以外は以前と変更ありません。)



@CalcLoverHK
I tried your script, it seems to works well.(^^)

I have no build number CBASIC245beta.zip has been updated.
https://pm.matrix.jp/CB/CBASIC245beta.zip
(build11)


I made a batch script to automatically (mostly) update C.Basic

Hi all Japanese members

I've made a script to replace old version with the current version. ;)
You can test the script by downloading my modified C.Basic version folder.

https://www.mediafire.com/file/ncr8fpniktz82cr/CBASIC243beta.zip/file

Open the folder and you will see the odd "Update_agent" folder. Click it, and you will see "UpdateAgent.cmd". Run it without running as administrator.

You need to accept the licenses opened in website. (I use wget.exe for downloading C.Basic new version much faster and unzip.exe for unzipping the file.)

There are some problems in this script:

1. You can only download the specific file by the specific link (which means if C.Basic has newer version, it cannot download that file), so I request sentaro21 to open the *constant* link for me to make it functioning. (e.g. pm.matrix.jp/CB/CBASICFX.zip)

2. The bitsadmin command is very slow at start, but becomes quicker over time.

3. I can't rename the old C.Basic folder to CBASICFX.

4. This script mainly consists of goto (^^; I can't understand the for statement in batch.

5. When the program replace the older C.Basic files with newer one, it pops out the confirmation. I want to make it totally automatic by auto-fill the choice and enter itself.

This is my first time to properly write a batch script. I've done a lot of research to get all things works. This is quite hard.

If you have improvements or find bugs, please tell me immediately.
Thank you for testing my script.

Cheers
CalcLoverHK

Re^8: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その12

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
> 形式変更というのは6バイト付けた形式のことですね。(^^)

はい、それだけやっていただければ、
テストした上で各コマンドのルーチンと詳細な仕様をお伝えします。(^^)

> DrawGraphのデフォルトが決まるわけですね。(^^)

詳細は調査中ですが、少なくとも "DrawGraph" コマンドと Func Type は関係ありません。(^^;

> ","でも支障は無さそうですが、あえて0xF6になってる理由は文字列の切れ目判定が確実になるということでしょうかね。

ASCII 文字の "," が括弧の外に使われることがあるからだと思いますが、
"StrSplit()" で一発で分けられるのでルーチンは組みやすそうです。

> あ、テキスト変換では"×"は"*" になるので…(^^;

内部データの例示をするので "×" を使います、ということでした。(^^;

> CGシリーズは緑でいいですが、FX版はどうしましょうか?(^^;

「そうしなければいけない」ではなく「そうなれば便利」という提案なので、FX 版はそのままでも良いと思います。(^^;

> おお!何やら楽しみです。(^^)

SetG-Color や G-Normal などのコマンドを使えば、各コマンドのバグ出しもしやすくなると考えています。

> SysCallが使える部分がどれだけあるかわからないですが、ほとんど独自実装になりそうですね。(^^;

まぁ、独自発見の SysCall を使いすぎると FX 版への移植に支障が出るので、普段の SysCall 以外で使うのは移植の心配がほぼ無い [SHIFT] + [5] だけになると思います。

Re^8: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その12

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

管理人様、
>以下の差替えアップデートへの対応をしました。

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



Colon様、
>'#GraphYθ, 256, 256
>を試してみましたが、Y128~256 への代入はおろか、Y1 への代入も出来なくなってしまいます。(^^;
>確認お願いします。

fnとGraphYは必要性が薄いと思って最大確保数が127まで、文字列の長さが最大32767となってました。(^^;
Strは確保数が32767、長さ2147483648、となってましたので、これは同じサイズに仕様変更しないとですね。


>まずは形式変更と変数周りのバグ出しになりそうですね。
>形式変更が完了すればまず以下のコマンドが実装できます。

形式変更というのは6バイト付けた形式のことですね。(^^)


>次に、セットアップ項目に "Graph Func" を追加していただければ、以下のコマンドが実装できます (同じく内部値の変更のみで描画への反映はまだ)。

DrawGraphのデフォルトが決まるわけですね。(^^)


>テストしやすいよう、OS と同じ値 ("Y=": 0, "<r>=": 1, ……) で実装していただけると助かります。
>値は次のページにある表の Index: 24 のところに書いてあります。
https://prizm.cemetech.net/index.php/Setup

了解しました。(^^)


>そうなんですが、ちょっと特殊です。
>例えば、

>cos T → Xt1
>sin T→Yt1

>の場合、1 番目の関数式の文字列部分は "8254F6815400" / "cos T,sin T" となります。

つまり、Xt,Ytペアで一つ分ということなんですね。


>このとき、"," は 0xF6 を使います。
>ASCII 文字の "," では動作しないのが正しい仕様です。

","でも支障は無さそうですが、あえて0xF6になってる理由は文字列の切れ目判定が確実になるということでしょうかね。


>タイポでしょうが、例に使いやすいので ("*" は "×" に変えた上で) 頂きます。(^^;

あ、テキスト変換では"×"は"*" になるので…(^^;


>ところで、[VARS] + [F4] (GRAPH) で [F2]~[F5] を追加したんですね。(^^)

はい、追加できるところから追加していってます。(^^)


>正式サポートでないコマンドのアイコンは緑で表示してはどうでしょうか?
>入力 / 実行できない → マスク化、実装中 → 緑という感じです。

CGシリーズは緑でいいですが、FX版はどうしましょうか?(^^;


>[SHIFT] + [,] でサポート予定のグラフ関数式リスト画面へのジャンプですが、[VARS] + [F4] (GRAPH) - [F6] が空いているのでそこにも割り当てるのはどうでしょうか?
>アイコンも {>GphFunc} などで作ってみます。

ショートカットだけでなく、アイコンメニュー上に機能が存在するのもありですね。
ってことで、了解です。(^^)


>グラフ関数式リスト画面ですが、私が発見した SysCall が絡んでくるので一旦私のほうで作ってみようと思います。

おお!何やら楽しみです。(^^)


>それから、ポップアップでない通常の画面の右側に表示する線種のアイコンですが、これの表示方法がよく分かっていません。(^^;
>16 ビットカラーで表示したいのいうのもあるので、ここのアイコン表示だけは独自実装ということでお願いします。

SysCallが使える部分がどれだけあるかわからないですが、ほとんど独自実装になりそうですね。(^^;

Re^7: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その12

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
> '#GraphY
> はあります。(^^)

'#GraphYθ, 256, 256
を試してみましたが、Y128~256 への代入はおろか、Y1 への代入も出来なくなってしまいます。(^^;

確認お願いします。


> その感じだと実装は難しくは無さそうですね。
> ありがとうございます!(^^)

まずは形式変更と変数周りのバグ出しになりそうですね。
形式変更が完了すればまず以下のコマンドが実装できます。
描画 ("DrawGraph") に反映できるのはまだで内部値の変更が出来るようになるだけですが、これらのコマンドは元々内部値の変更だけなので問題ありません。

・ G SelOn
・ G SelOff
・ NormalG
・ ThickG
・ BrokenThickG
・ DotG
・ ThinG
・ SetG-Color
・ T SelOn
・ T SelOff

次の変数は独立確保に変更すれば良いだけです。

・ F Start
・ F End
・ F Pitch

次に、セットアップ項目に "Graph Func" を追加していただければ、以下のコマンドが実装できます (同じく内部値の変更のみで描画への反映はまだ)。

・ Y=Type
・ r=Type
・ ParamType
・ X=Type
・ Y>Type
・ Y<Type
・ Y>=Type
・ Y<=Type
・ X>Type
・ X<Type
・ X>=Type
・ X<=Type

テストしやすいよう、OS と同じ値 ("Y=": 0, "<r>=": 1, ……) で実装していただけると助かります。
値は次のページにある表の Index: 24 のところに書いてあります。
https://prizm.cemetech.net/index.php/Setup


以下のコマンドは一見実装できそうですが、説明書に詳細な仕様が記載されておらず、まだ調査が必要です。

・ GraphY
・ Graphr
・ GraphXt
・ GraphYt
・ GraphX


> ところで、XtとYtも同じ領域を共有してますか?

そうなんですが、ちょっと特殊です。
例えば、

cos T → Xt1
sin T→Yt1

の場合、1 番目の関数式の文字列部分は "8254F6815400" / "cos T,sin T" となります。

このとき、"," は 0xF6 を使います。
ASCII 文字の "," では動作しないのが正しい仕様です。

> "sin (A*T)"->Xt1
> "cos (B*T)"->Yt2

タイポでしょうが、例に使いやすいので ("*" は "×" に変えた上で) 頂きます。(^^;

この場合、
1 番目の関数式の文字列部分は "812841A95428F600" / "sin (A×T)," になり、
2 番目の関数式の文字列部分は "F6822842A9542900" / ",cos (B×T)" になります。

> Graph(X,Y)=(Xt1,Yt1)

"Graph(X,Y)=" コマンドに限り、Xt1 と Yt1 の間の "," は ASCII 文字でも 0xF6 でも可です。

その他のコマンドで 0xF6 を使うと "Syntax ERROR" になる仕様です。


ところで、[VARS] + [F4] (GRAPH) で [F2]~[F5] を追加したんですね。(^^)

正式サポートでないコマンドのアイコンは緑で表示してはどうでしょうか?
入力 / 実行できない → マスク化、実装中 → 緑という感じです。

[SHIFT] + [,] でサポート予定のグラフ関数式リスト画面へのジャンプですが、[VARS] + [F4] (GRAPH) - [F6] が空いているのでそこにも割り当てるのはどうでしょうか?
アイコンも {>GphFunc} などで作ってみます。


グラフ関数式リスト画面ですが、私が発見した SysCall が絡んでくるので一旦私のほうで作ってみようと思います。

[SHIFT] + [5] (FORMAT) で Line Style / Line Color のポップアップ (SysCall) を出し、[SHIFT] + [6] で 16 ビットカラーポップアップを出すことになるかと思います。
"2: Line Color" の右には 4 ビットカラーが表示されますが、現在設定されている色が 4 ビットカラー以外の場合は、色を "-3" に設定することでカラーバーのアイコンを表示させることができます。

それから、ポップアップでない通常の画面の右側に表示する線種のアイコンですが、これの表示方法がよく分かっていません。(^^;
16 ビットカラーで表示したいのいうのもあるので、ここのアイコン表示だけは独自実装ということでお願いします。

Re: Re^5: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その12

sentaro様、iron2様、Colon様、CalcLoverHK様、C.Basicユーザーの皆様、

管理人のやすです。

以下の差替えアップデートへの対応をしました。


> とりあえず、System()コマンドの0固定の件を追加したので、そこだけお願いします。(^^)
>
>
> C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その12
> https://pm.matrix.jp/CB/CBASICCG145beta12.zip
> (build12)
> ・エディタでファイルモードの切替でファイルリストが更新されない不具合を修正しました。
> ・セットアップで機能しない場合はアイコンをマスク化しました。
> ・System()コマンドでメインメモリに保存されるC.Basicのシステムファイルを取得できるようになりました。
>  (インデックス開始値は0で固定です。)
> (例)System(10000,1)
>  @CBASIC/Cbasicの内容をListAnsに取得します。
> (例)System(10000,2)
>  @CBASIC/Cbasic2の内容をListAnsに取得します。

Re^5: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その12

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

管理人様、
>差替えアップデート対応しましたが、表示上は特になにもしていません。

いつもありがとうございます!(^^)

とりあえず、System()コマンドの0固定の件を追加したので、そこだけお願いします。(^^)


C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その12
https://pm.matrix.jp/CB/CBASICCG145beta12.zip
(build12)
・エディタでファイルモードの切替でファイルリストが更新されない不具合を修正しました。
・セットアップで機能しない場合はアイコンをマスク化しました。
・System()コマンドでメインメモリに保存されるC.Basicのシステムファイルを取得できるようになりました。
 (インデックス開始値は0で固定です。)
(例)System(10000,1)
 @CBASIC/Cbasicの内容をListAnsに取得します。
(例)System(10000,2)
 @CBASIC/Cbasic2の内容をListAnsに取得します。

Re^4: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その12

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

Colon様、
>0 固定に関しては更新履歴にも明記したほうが良いと思います。

了解です。(^^)


>それぐらい高機能という証拠でしょうが、
>CASIO 関係者以外で説明書 600 ページ近くにわたる全機能を把握している人っているんでしょうかね。(^^;

マニュアルの全機能を試すだけでも大変ですよね。(^^;


>説明書に記載されていない仕様も沢山あるわけですから、もう OS のみぞ知るという世界ですね。

全記載になると分厚いマニュアルになりそうですね。(^^;


>つまり、純正のグラフ機能では、(メモリが許せば) 関数式リストの 20 個に加え、G-MEM 1~20 の計 420 個の関数式を記憶できることになります。

グラフメモリーは関数式リストも含む総合的なメモリなんですね。
ちょっとずつわかってきました。ありがとうございます!(^^)


>…… あれ? '#Str や '#fn に相当するコマンドってありましたっけ?? (^^;

'#GraphY
はあります。(^^)


>構造体として記憶されていて、そのメンバーの 1 つが関数式 (文字列) という感じかと思います。
>結果的に行列として実装できるのは構造体だからです。

なるほどです。


>現在はデフォルトで Y1 が Mat θ[1,1~256] に格納されていますが、
>プレフィックス形式だと

>Mat θ[1,1~4] …… 色以外の情報
>Mat θ[1,5~6] …… 16 ビットカラー
>Mat θ[1,7~262] …… 関数式 (文字列)

>となります。
>色はどっち道「どうせならフルカラーに」となりそうなので、初めから 16 ビット確保しておけば良いという考えです。

その感じだと実装は難しくは無さそうですね。
ありがとうございます!(^^)

ところで、XtとYtも同じ領域を共有してますか?

----------------------
ClrGraph
Deg
1->TThetamin
360->TThetamax
1->Tthetaptch
2->A
3->B
"sin (A*T)"->Xt1
"cos (B*T)"->Yt2
Graph(X,Y)=(Xt1,Yt1)
----------------------

Re: Re:Re: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その12

sentaro様、iron2様、Colon様、CalcLoverHK様、C.Basicユーザーの皆様、

管理人のやすです。

> >管理人様案で既に考慮してくださっているようですが、
> >CG10/20 では [x10^x] ではなく [EXP] なので、機種ごとに分けて頂ければと思います。
>
> あ゛…配慮不足でした!
> ってことで、修正再アップしました。(^^)

差替えアップデート対応しましたが、表示上は特になにもしていません。

Re^3: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その12

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
> はい、一応戻るのがデフォルトの仕様ということでした。
> はい、0で固定です。(^^)

了解しました。(^^)
0 固定に関しては更新履歴にも明記したほうが良いと思います。

> ってことで、修正再アップしました。(^^)

修正確認しました。


> なんかグラフ電卓を初めて手にしたときのような完全に初心者モードになってしまっています。(^^;

それぐらい高機能という証拠でしょうが、
CASIO 関係者以外で説明書 600 ページ近くにわたる全機能を把握している人っているんでしょうかね。(^^;

説明書に記載されていない仕様も沢山あるわけですから、もう OS のみぞ知るという世界ですね。


> 「グラフメモリー」と「関数式リスト」との違いは何でしょう?(^^;

はい、まず正式名称としては、
[5] (Graph) を起動したときに現れる式の一覧は「グラフ関数式リスト」と言います。
同様に、[6] (Dyna Graph) では「ダイナミックグラフ関数式リスト」、[7] (Table) では「テーブル関数式リスト」と言います。

これら 3 つは実態としては同じなので、勝手に「関数式リスト」と呼ばせてもらいます。(^^;

「グラフメモリー」というのは、関数式 20 個とビューウインドウ設定、各関数式の線種と色、選択有無をまとめて記憶しておく機能で、G-MEM 1~20 の 20 セットが記憶可能です (メインメモリ容量が許せば)。

つまり、純正のグラフ機能では、(メモリが許せば) 関数式リストの 20 個に加え、G-MEM 1~20 の計 420 個の関数式を記憶できることになります。

ただし、C.Basic では関数式リストに格納する関数式の数を増やせるので、「グラフメモリー」については特段の事情が無い限り実装しなくても良いと思います……

…… あれ? '#Str や '#fn に相当するコマンドってありましたっけ?? (^^;


> そもそも関数式リストの実体が何なのかまだ良くわかってません。(^^;

構造体として記憶されていて、そのメンバーの 1 つが関数式 (文字列) という感じかと思います。

結果的に行列として実装できるのは構造体だからです。

> 実体が数式の文字列であれば、一番最初にあった方が良さそうな感じはしますが、
> それって、関数式リストのひとつずつそれぞれに付加されるわけですよね?

以前書きましたが、OS では各関数式が "色以外の情報 4 バイト" + "文字列" というフォーマットで、グラフの色 (4 ビットカラー) はまた別の箇所にあります (CG 版の開発時に付け足したからだと思います)。

C.Basic では初めから色も関数式と一緒に格納しておけば良いと思いますので、

> 数式は可変長ですし、6バイトの固定長ならばのプレフィックスの方がいいかと思います。(^^)

現在はデフォルトで Y1 が Mat θ[1,1~256] に格納されていますが、
プレフィックス形式だと

Mat θ[1,1~4] …… 色以外の情報
Mat θ[1,5~6] …… 16 ビットカラー
Mat θ[1,7~262] …… 関数式 (文字列)

となります。
色はどっち道「どうせならフルカラーに」となりそうなので、初めから 16 ビット確保しておけば良いという考えです。

この場合、文字列系コマンドと →Yn での読み出し / 書き込みアドレスは 6 バイト後ろに変更になりますね。

(例)&Mat θ[1,1] → &Mat θ[1,1+6]

Re:Re: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その12

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

管理人様、
連日の素早い対応をありがとうございます!(^^)


Colon様、
>「グラフメモリー」という機能はまた別のものらしいです。

なんかグラフ電卓を初めて手にしたときのような完全に初心者モードになってしまっています。(^^;
「グラフメモリー」と「関数式リスト」との違いは何でしょう?(^^;


>あっ、そういうことでしたか。
>ならば仕様ということで大丈夫ですね。

はい、一応戻るのがデフォルトの仕様ということでした。
設定を戻さないこともセットアップで出来ます。(^^)


>了解しました。(^^)
>まず "Y=" の描画から始めようと思います。

まずはYですね。
直感的に分かりやすいので助かります。(^^)


>取得さえできればあとは自由に使えますね。(^^)
>インデックス開始値は 0 で固定でしょうか?
>(とは言え、ファイルを弄るときに 1 開始にすることはありませんが……)

はい、0で固定です。(^^)


>管理人様案で既に考慮してくださっているようですが、
>CG10/20 では [x10^x] ではなく [EXP] なので、機種ごとに分けて頂ければと思います。

あ゛…配慮不足でした!
ってことで、修正再アップしました。(^^)


>まずは関数式リストのフォーマットを決めないと始まらないので、追加 6 バイトをどのように確保しましょうか?

そもそも関数式リストの実体が何なのかまだ良くわかってません。(^^;
実体が数式の文字列であれば、一番最初にあった方が良さそうな感じはしますが、
それって、関数式リストのひとつずつそれぞれに付加されるわけですよね?
数式は可変長ですし、6バイトの固定長ならばのプレフィックスの方がいいかと思います。(^^)

Re: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その12

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
これまで私が「グラフメモリー」と言っていたものですが、「関数式リスト」と言うべきでした。

「グラフメモリー」という機能はまた別のものらしいです。


> プログラム終了時=デバッグモード退出時にはプログラム開始前の状態に戻るので、
> プログラム実行中/デバッグ中の変更は元に戻ってしまいますが、そこのところでしょうか?

あっ、そういうことでしたか。
ならば仕様ということで大丈夫ですね。

> 再読み込みされてなかったですね。
> マスク化が可能になった効果ですね。

修正確認しました。

> 最初からまとめると、おそらくバグ取りが大変になるので、
> とりあえず最初は独立した専用ルーチンでいきたいと思います。(^^;

了解しました。(^^)
まず "Y=" の描画から始めようと思います。

> ・System()コマンドでメインメモリに保存されるC.Basicのシステムファイルを取得できるようになりました。

取得さえできればあとは自由に使えますね。(^^)
インデックス開始値は 0 で固定でしょうか?
(とは言え、ファイルを弄るときに 1 開始にすることはありませんが……)

> [x10^x] / [EXP]:Input """"
>          Folder Top

管理人様案で既に考慮してくださっているようですが、
CG10/20 では [x10^x] ではなく [EXP] なので、機種ごとに分けて頂ければと思います。


> Colon様の進捗状況に合わせて必要なところから実装できるところから実装していく感じでいきたいと思います。(^^)

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

まずは関数式リストのフォーマットを決めないと始まらないので、追加 6 バイトをどのように確保しましょうか?

Re: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その12

sentaro様、iron2様、Colon様、CalcLoverHK様、C.Basicユーザーの皆様、


管理人のやすです。

Build 12 へのアプデー徒対応しました。

C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その12

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

Colon様、
>まず、ML / Screen での座標ずれ、Screen#/% から List への代入、ヘルプの文言それぞれ修正確認しました。

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


>デバッグモード時に SETUP を変更してもデバッグモード退出時に元に戻ってしまう項目があります (例えば "RefrshCtr DD")。

プログラム終了時=デバッグモード退出時にはプログラム開始前の状態に戻るので、
プログラム実行中/デバッグ中の変更は元に戻ってしまいますが、そこのところでしょうか?


>また、エディタで Storage mode を切り替えると、ファイルリストに出たときに動作がおかしくなります。

再読み込みされてなかったですね。
ってことで、修正しました。(^^)


>SETUP のうち、無効になっている項目はファンクションメニューをマスク化していただくのが良いかもしれません。
>・ エディタにおける "HeapRAM Size"
>・ CG10/20 における "Use Hidn RAM"
>・ 同 "HidnRAM Init"
>・ CG シリーズにおける "Max Pict No"

マスク化が可能になった効果ですね。
ってことで、修正しました。(^^)


>グラフ機能の試験を行うにあたり、C.Basic 内での SETUP 項目を取得する関数があると助かります。
>"System()" コマンドの追加オプションでも良いと思います。

>(例)System(xx, P1, P2)
>   P1: 1 (CBasic) / 2 (CBasic2)
>   P2: offset ("setup_format.txt" に基づく)

これはUCFでのHlib2様のリクエスト物件と同じ感じですね。(^^)
Hlib2様のリクエストではビット単位でまとめて圧縮するというのもありますが、
とりあえず、ファイルまるごと読み出せるようにしてみました。(^^;


>読みやすさよりコンパクトさ重視ということで、
>If 文や Switch 文を使って描画部分はひとつの関数にまとめましょうか?

最初からまとめると、おそらくバグ取りが大変になるので、
とりあえず最初は独立した専用ルーチンでいきたいと思います。(^^;


>構文解析は私が手をつけにくいので、
>・ 私 (Colon) …… 仕様調査、描画ルーチン作成、サンプルプログラム作成
>・ sentaro様 …… 私の調査を元に構文解析変更

>という分担だと助かるのですが、いかがでしょうか?

了解です!
コマンド仕様さえ分かれば実装面はなんとかするので、よろしくお願いします。(^^)


>まぁ、同一ルーチンの使い回しで行けるので、実質 8 コマンド / 8 変数くらいだと思います。(^^;
>引数無しのコマンドが多いので、その分多くなっている感じですね。


まだ仕様がイマイチ把握できていないのですが、8コマンド/8変数くらいならなんとかなりそうです。(^^)


>グラフ・テーブル関係ですが、私の日程としては、最低でも
>・ 仕様調査:1 週間以下
>・ ルーチン設計:2 週間
>・ コーティング・デバッグ:3 週間

>くらいは欲しいです (FKey Icon のこともあるので……)。

>昨日ちょっと弄ってみましたが、素直にプログラムすると倍精度実数の誤差が For 文で増幅されたり (グラフのノイズに繋がりかねない)、異常に描画時間がかかって実質フリーズする場合があったり、非連続点の処理の検討が必要だったりと一筋縄では行かなそうなので、その辺りの対策も考えながらということになります。(^^;

>バグやエラーは私の方で出来る限り除去してからお渡しすることとし、その後は最低でも

>・ C.Basic for CG への移植・デバッグ:2 週間
>・ C.Basic for FX への移植・デバッグ:1 週間

>くらいはかかると思います (経験則)。

了解です!
グラフ関連は結構大掛かりな実装になるので、Colon様の進捗状況に合わせて必要なところから実装できるところから実装していく感じでいきたいと思います。(^^)


>時間がかかるので、
>v1.46/v2.46 までは溜まっている変更が必要な点 (Mat エディタの TOOL、強制 GB オプション変更、List のフォント読み出し変更、外部フォントファイル差し替え、etc……) を消化していただき、>v1.47/v2.47 以降でグラフ関係を C.Basic に移植し始めるというのはどうでしょうか?

未実装の宿題がどんどん溜まる一方なので、順番に片付けていかないとですね。(^^;
ってことで、了解です!(^^)


>ところで、FKeyIcon「入」についてです。
>この土日で「入」アイコンのデザイン案を半分程度作成するまで行けたので、また今週中にサンプルを出します。

お!早いですね!(^^)




管理人様、
>Build 11 の差替えアップデート対応、昨晩対応しております。

いつも素早い対応に感謝です!

>例えば、以下の2行を追加し、

>[x10^x] / [EXP]:Input """"
>         Folder Top

>8行目に Press: [EXIT]
>とする案です。
>入力記号に "" を付けると分かりにくくなるので、いっそ "" は外すと良いかも知れませんね。

修正してみました。(^^)



C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その11.再
https://pm.matrix.jp/CB/CBASICCG145beta12.zip
(build12)
・セットアップで機能しない場合はアイコンをマスク化しました。
・System()コマンドでメインメモリに保存されるC.Basicのシステムファイルを取得できるようになりました。
(例)System(10000,1)
 @CBASIC/Cbasicの内容をListAnsに取得します。
(例)System(10000,2)
 @CBASIC/Cbasic2の内容をListAnsに取得します。

Re^3: C.Basic for CG v1.45β & for FX v2.45β (さらに使いやすく色々と変更していってみる版)その11.再

sentaro様、iron2様、Colon様、CalcLoverHK様、C.Basicユーザーの皆様、

== File mode Help ===
ですが、[x10^x] / [EXP] キーは、
アルファモードでは "" の入力、
アルファモードでない時にフォルダのトップに移動する
ので、それを追加するのはどうでしょうか?

例えば、以下の2行を追加し、

[x10^x] / [EXP]:Input """"
         Folder Top

8行目に Press: [EXIT]
とする案です。

入力記号に "" を付けると分かりにくくなるので、いっそ "" は外すと良いかも知れませんね。


Re^2: C.Basic for CG v1.45β & for FX v2.45β (さらに使いやすく色々と変更していってみる版)その11.再

sentaro様、iron2様、Colon様、CalcLoverHK様、C.Basicユーザーの皆様、

Build 11 の差替えアップデート対応、昨晩対応しております。

Re: C.Basic for CG v1.45β & for FX v2.45β (さらに使いやすく色々と変更していってみる版)その11.再

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
まず、ML / Screen での座標ずれ、Screen#/% から List への代入、ヘルプの文言それぞれ修正確認しました。


次に、バグ報告その他提案事項です。

デバッグモード時に SETUP を変更してもデバッグモード退出時に元に戻ってしまう項目があります (例えば "RefrshCtr DD")。

また、エディタで Storage mode を切り替えると、ファイルリストに出たときに動作がおかしくなります。

SETUP のうち、無効になっている項目はファンクションメニューをマスク化していただくのが良いかもしれません。
・ エディタにおける "HeapRAM Size"
・ CG10/20 における "Use Hidn RAM"
・ 同 "HidnRAM Init"
・ CG シリーズにおける "Max Pict No"

グラフ機能の試験を行うにあたり、C.Basic 内での SETUP 項目を取得する関数があると助かります。
"System()" コマンドの追加オプションでも良いと思います。

(例)System(xx, P1, P2)
   P1: 1 (CBasic) / 2 (CBasic2)
   P2: offset ("setup_format.txt" に基づく)


> グラフごとにサブルーチンを用意するとなると結構容量食いそうですね。(^^;

読みやすさよりコンパクトさ重視ということで、
If 文や Switch 文を使って描画部分はひとつの関数にまとめましょうか?

> DynaGraphとか一度も使ったことがありません。(^^;

係数などを変化させるとグラフがどう変わるかをアニメーションで見られる教育目的の便利機能ですが、重いのが難点です。(^^;

Graph や Table は実用上便利なのでよく使いますが、DynaGraph は私もあまり使いません。

> そんなオプションがあったとは…初めて知りました。(^^;
> Yグラフだけ(それも一部)しか把握出来ていなかったので、初めてということがいっぱい出てきそうです。(^^;

構文解析は私が手をつけにくいので、
・ 私 (Colon) …… 仕様調査、描画ルーチン作成、サンプルプログラム作成
・ sentaro様 …… 私の調査を元に構文解析変更

という分担だと助かるのですが、いかがでしょうか?

> さすがグラフ電卓と言うべきかなんというか多機能過ぎですね。(^^;

まぁ、同一ルーチンの使い回しで行けるので、実質 8 コマンド / 8 変数くらいだと思います。(^^;
引数無しのコマンドが多いので、その分多くなっている感じですね。


グラフ・テーブル関係ですが、私の日程としては、最低でも
・ 仕様調査:1 週間以下
・ ルーチン設計:2 週間
・ コーティング・デバッグ:3 週間

くらいは欲しいです (FKey Icon のこともあるので……)。

昨日ちょっと弄ってみましたが、素直にプログラムすると倍精度実数の誤差が For 文で増幅されたり (グラフのノイズに繋がりかねない)、異常に描画時間がかかって実質フリーズする場合があったり、非連続点の処理の検討が必要だったりと一筋縄では行かなそうなので、その辺りの対策も考えながらということになります。(^^;

バグやエラーは私の方で出来る限り除去してからお渡しすることとし、その後は最低でも

・ C.Basic for CG への移植・デバッグ:2 週間
・ C.Basic for FX への移植・デバッグ:1 週間

くらいはかかると思います (経験則)。

時間がかかるので、
v1.46/v2.46 までは溜まっている変更が必要な点 (Mat エディタの TOOL、強制 GB オプション変更、List のフォント読み出し変更、外部フォントファイル差し替え、etc……) を消化していただき、
v1.47/v2.47 以降でグラフ関係を C.Basic に移植し始めるというのはどうでしょうか?

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

ところで、FKeyIcon「入」についてです。

この土日で「入」アイコンのデザイン案を半分程度作成するまで行けたので、また今週中にサンプルを出します。

C.Basic for CG v1.45β & for FX v2.45β (さらに使いやすく色々と変更していってみる版)その11.再

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

Colon様、

>ところで、"Y=" 以外のグラフ導入となると、セットアップの "Func Type" の状態によって [x,θ,T] で入力される文字を切り替えることになります。

かなり複雑化してきますね。(^^;


>FX 機では X, Y, θ, T の切り替えになるのでしょうか?
>C.Basic では "[x] character" の設定項目を追加して、{x}/{X}/{x,Y,θ,T}/{X,Y,θ,T} とすれば良いと考えています。

そうなりますね。(^^)


>ML コマンドで直っていません。
>Screen# コマンドでは、本来の座標より 0.5 大きい値が出力されます。

修正抜けてました。(^^;


>取り敢えず大丈夫そうです。
>上下キーで検索モードから退出しないのも使いやすくて良いですね。(^^)

ありがとうございます!
ステータス関連が絡むので、Colon様チェックで合格だとかなり安心できます。(^^)


>"[x^2]: Input "~"" などとしたほうが分かりやすいと思います。

変更してみました。(^^)

ということで、修正再アップ版です。

C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その11.再
https://pm.matrix.jp/CB/CBASICCG145beta11.zip
(build11)
・CGモードでScreen#で座標変換した場合に2ドットずれる不具合を修正しました。

C.Basic for FX v2.45β (さらに使いやすく色々と変更していってみる版)その11
https://pm.matrix.jp/CB/CBASIC245beta11.zip
(build11)(同じ修正)
・Screen#、Screen%を連続実行するとエラーになる不具合を修正しました。
・Screen#、Screen%からListAnsに転送した場合の不具合を修正しました。
(例)Screen#0,0→List Ans

・ファイルモードの検索機能を改善しました。
 アルファベットキーを押すと検索窓が開き検索モードになります。
 検索窓では左右移動等、通常の入力が可能です。
 検索窓を解除するには[EXIT]を押してください。
 カーソル上下、[EXE] [F1](EXE) [F2](EDIT) [F3](NEW)キーは検索窓を閉じること無く実行できます。



>さて、グラフのアルゴリズムについてです。

>構文解析の他に、
>・ Y グラフ描画
>・ X グラフ描画
>・ Param グラフ描画
>・ <r> グラフ描画

>・ 一時停止時アルゴリズム
> ・ TRACE
> ・ ZOOM
> ・ スクロール
> etc ……

>のようにサブルーチンを用意し、
>実行するコマンドに応じて呼び出せれば良い感じでしょうか?

グラフごとにサブルーチンを用意するとなると結構容量食いそうですね。(^^;


>UCF における Hlib2 様からのご報告を確認しました。
>テーブル機能に関する要望もありましたが、私はテーブル関係のプログラミングコマンドを使ったことがないので、一旦遊びながら仕様を調べてみようと思います。

ありがとうございます!
グラフ関連はそんな機能が存在していたとは???状態なので、助かります!(^^)


>Graph, DynaGraph, Table では数式を共有していますが、選択有無を別々に設定出来ることは知りませんでした。(^^;

DynaGraphとか一度も使ったことがありません。(^^;


>角括弧で描画する閉区間を指定できますが、区間指定をサポートしていないのが原因ですね。

そんなオプションがあったとは…初めて知りました。(^^;


>グラフ式には色々と特別な構文があるので、一旦私の方で仕様を調査します。
>その後、構文解析に取り込むという段取りでどうでしょうか?

よろしくお願いします。(^^)

Yグラフだけ(それも一部)しか把握出来ていなかったので、初めてということがいっぱい出てきそうです。(^^;


>では、関係するコマンドについて、現時点で把握できている 45 個を列挙します。

さすがグラフ電卓と言うべきかなんというか多機能過ぎですね。(^^;
描画機能はPlotやLineだけあれば十分というのが一番ですが、グラフ電卓の互換なのでそうもいかないですね。(^^;

グラフ・テーブル関係 - 情報整理、必要なコマンドなど

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
UCF における Hlib2 様からのご報告を確認しました。
テーブル機能に関する要望もありましたが、私はテーブル関係のプログラミングコマンドを使ったことがないので、一旦遊びながら仕様を調べてみようと思います。

以下、紛らわしさ防止のため、[VARS] - [F4] (GRAPH) で入力できる "Y", "<r>", "Xt" などはそれぞれ "GraphY", "Graphr", "GraphXt" のように txt 変換後の書き方をします。

> G SelOn, G SelOff (they need for drawing selected graphics by DrawGraph)

これは追加する 6 バイトの中の情報を切り替えることにより可能になります。

> T SelOn, T SelOff

Graph, DynaGraph, Table では数式を共有していますが、選択有無を別々に設定出来ることは知りませんでした。(^^;

内部フォーマットを再調査しましたが、Table の選択有無も追加する 6 バイトの中にあるようです。

> DispF-Tbl

これはただ単にテーブルをサポートしていないだけですね。

> F Result (although ➝F Start, ➝F End and ➝F pitch works)

これもサポートしていないだけですね。

→F Start, →F End, →F pitch works は Alias として実装しているので可能ですが、
プログラム実行開始時に初期化されるので、Alias ではなく独立して確保する必要がありそうです。

> ➝Xt1, ➝Yt1, Graph(x,y)=(Xt1,Yt1),

これは GraphXt, GraphYt をサポートしていないからですね。

> Graph=0.2X^2,[1,2] (but without [1,2] works)

角括弧で描画する閉区間を指定できますが、区間指定をサポートしていないのが原因ですね。

グラフ式には色々と特別な構文があるので、一旦私の方で仕様を調査します。

その後、構文解析に取り込むという段取りでどうでしょうか?


では、関係するコマンドについて、現時点で把握できている 45 個を列挙します。

・ G SelOn
・ G SelOff
・ Y=Type
・ r=Type
・ ParamType
・ X=Type
・ Y>Type
・ Y<Type
・ Y>=Type
・ Y<=Type
・ X>Type
・ X<Type
・ X>=Type
・ X<=Type
・ NormalG
・ ThickG
・ BrokenThickG
・ DotG
・ ThinG
・ SetG-Color
・ T SelOn
・ T SelOff
・ GraphY
・ Graphr
・ GraphXt
・ GraphYt
・ GraphX
・ F Start
・ F End
・ F Pitch
・ F Result
・ DrawGraph
・ DispF-Tbl
・ Graph Y=
・ Graph r=
・ Graph(X,Y)=(
・ Graph ∫
・ Graph Y>
・ Graph Y<
・ Graph Y>=
・ Graph Y<=
・ Graph X>
・ Graph X<
・ Graph X>=
・ Graph X<=

Re^3: C.Basic for CG v1.45β & for FX v2.45β (さらに使いやすく色々と変更していってみる版)その11

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
> 割当番号は10000以上はColon様にすべておまかせします。(^^)

了解しました。(^^)

ところで、"Y=" 以外のグラフ導入となると、セットアップの "Func Type" の状態によって [x,θ,T] で入力される文字を切り替えることになります。

FX 機では X, Y, θ, T の切り替えになるのでしょうか?

C.Basic では "[x] character" の設定項目を追加して、{x}/{X}/{x,Y,θ,T}/{X,Y,θ,T} とすれば良いと考えています。


> 1 番上にいるときのみ、検索モードに入って出ると問答無用でアルファロックになってしまうので、ここの対策をお願いします。
> 間違ってキーを押したときに退出してしまうことがあるので、デフォルトの動作では検索モードを退出しないようにして、退出できるのは [EXIT] と [SHIFT] + [EXIT] (QUIT) のみにしていただけませんか?
> メインメモリで検索モードに入ったとき、[F6] を消せていません。また、[÷] も不要だと思います。
> 5 回以上のループでエラーになるようです

修正確認しました。


> 仕様想定外なので、ちょっと調査してみます。(^^;

よろしくお願いします。


> ・CGモードでScreen#で座標変換した場合に2ドットずれる不具合を修正しました。

ML コマンドで直っていません。
Screen# コマンドでは、本来の座標より 0.5 大きい値が出力されます。


> バグが無ければファイル検索はこれで一段落でしょうか。(^^)

取り敢えず大丈夫そうです。
上下キーで検索モードから退出しないのも使いやすくて良いですね。(^^)


> CG版のファイルモードのみ簡単なヘルプを実装しているところです。(^^;

"[x^2]: Input "~"" などとしたほうが分かりやすいと思います。


さて、グラフのアルゴリズムについてです。

構文解析の他に、
・ Y グラフ描画
・ X グラフ描画
・ Param グラフ描画
・ <r> グラフ描画

・ 一時停止時アルゴリズム
 ・ TRACE
 ・ ZOOM
 ・ スクロール
 etc ……

のようにサブルーチンを用意し、
実行するコマンドに応じて呼び出せれば良い感じでしょうか?

Re:Re: C.Basic for CG v1.45β & for FX v2.45β (さらに使いやすく色々と変更していってみる版)その11

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

管理人様、
>Build 11 へのアップデート対応しました。

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


>ファイル検索機能は、とても使いやすくなりました。ありがとうございます。

バグが無ければファイル検索はこれで一段落でしょうか。(^^)


>CATALOG機能は、純正のを呼び出すだけになっているようですが、先ずはこれで、ということでしょうか?

んと、まだ純正のままです。(^^;
CG版のファイルモードのみ簡単なヘルプを実装しているところです。(^^;

Re: C.Basic for CG v1.45β & for FX v2.45β (さらに使いやすく色々と変更していってみる版)その11

sentaro人様、iron2様、Colon様、CalcLoverHK様、C.Basicユーザーの皆様、

管理人のやすです。


Build 11 へのアップデート対応しました。


sentaro様、Colon様、
ファイル検索機能は、とても使いやすくなりました。ありがとうございます。

CATALOG機能は、純正のを呼び出すだけになっているようですが、先ずはこれで、ということでしょうか?



> Colon様、
> >まず、{>FOLDER} と {>FILE} のアイコンを作ってみました。
> >文字数なども問題なさそうです。
>
> お、いい感じみたいですね!(^^)
>
> >ところで、現在「入」アイコンを製作中ですが、OS アイコンの分析に時間がかかっているため、当初の見込みより 3 週間程度の遅れが発生しています。(^^;
> >また、「入」アイコンはその他のアイコンと性格が異なるため、機能追加があってもアイコンが探しやすいよう、#11001 以降に割り当てたいと考えているのですが、いかがでしょうか?
>
> 割当番号は10000以上はColon様にすべておまかせします。(^^)
>
>
> >1 番上にいるときのみ、検索モードに入って出ると問答無用でアルファロックになってしまうので、ここの対策をお願いします。
> >間違ってキーを押したときに退出してしまうことがあるので、デフォルトの動作では検索モードを退出しないようにして、退出できるのは [EXIT] と [SHIFT] + [EXIT] (QUIT) のみにしていただけませんか?
>
> 修正しました。(^^)
>
>
> >後程チェックします。(^^)
> >現状、"Y=X^2" のグラフでノイズが出るなどしているので、その辺りも含めてアルゴリズムをチェックして行きたいと思います。
>
> お手数おかけします。m(_ _)m
>
>
> >ML コマンド (多分 "Screen" コマンドも?) の # オプションで出力される座標が、本来の位置よりも上に 2 ドット、左に 2 ドットずれています。
>
> CG版は詰めが甘いですね。(^^;
>
>
> >メインメモリで検索モードに入ったとき、[F6] を消せていません。また、[÷] も不要だと思います。
>
> 修正しました。(^^)
>
>
> >ML コマンドで色 (青、赤など) を指定した場合に、コマンド実行後にもその色が残っていますが、これは仕様ということで良いでしょうか?
> >
> >私は「インタプリタでの実行を高速化するための仕様」であると理解しています。
>
> MLコマンドは余分な処理をしないというのが仕様で、色変更は各コマンドに付随しているものではないので、そのとおりです。(^^)
>
>
> >For 1→A To 5
> >Screen#0, 0
> >Next
> >
> >5 回以上のループでエラーになるようです
>
> 修正しました。(^^)
>
>
> >また、次の 2 つで List Ans の中身が異なりますが、原因はわかりますか?
> >
> >・ Screen#0, 0
> >・ Screen#0, 0→List Ans
>
> 仕様想定外なので、ちょっと調査してみます。(^^;
>
>
>
> C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その11
> https://pm.matrix.jp/CB/CBASICCG145beta11.zip
> (build11)
> ・CGモードでScreen#で座標変換した場合に2ドットずれる不具合を修正しました。
>
> C.Basic for FX v2.45β (さらに使いやすく色々と変更していってみる版)その11
> https://pm.matrix.jp/CB/CBASIC245beta11.zip
> (build11)(同じ修正)
> ・Screen#、Screen%を連続実行するとエラーになる不具合を修正しました。
> ・ファイルモードの検索機能を改善しました。
>  アルファベットキーを押すと検索窓が開き検索モードになります。
>  検索窓では左右移動等、通常の入力が可能です。
>  検索窓を解除するには[EXIT]を押してください。
>  カーソル上下、[EXE] [F1](EXE) [F2](EDIT) [F3](NEW)キーは検索窓を閉じること無く実行できます。

C.Basic for CG v1.45β & for FX v2.45β (さらに使いやすく色々と変更していってみる版)その11

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

Colon様、
>まず、{>FOLDER} と {>FILE} のアイコンを作ってみました。
>文字数なども問題なさそうです。

お、いい感じみたいですね!(^^)

>ところで、現在「入」アイコンを製作中ですが、OS アイコンの分析に時間がかかっているため、当初の見込みより 3 週間程度の遅れが発生しています。(^^;
>また、「入」アイコンはその他のアイコンと性格が異なるため、機能追加があってもアイコンが探しやすいよう、#11001 以降に割り当てたいと考えているのですが、いかがでしょうか?

割当番号は10000以上はColon様にすべておまかせします。(^^)


>1 番上にいるときのみ、検索モードに入って出ると問答無用でアルファロックになってしまうので、ここの対策をお願いします。
>間違ってキーを押したときに退出してしまうことがあるので、デフォルトの動作では検索モードを退出しないようにして、退出できるのは [EXIT] と [SHIFT] + [EXIT] (QUIT) のみにしていただけませんか?

修正しました。(^^)


>後程チェックします。(^^)
>現状、"Y=X^2" のグラフでノイズが出るなどしているので、その辺りも含めてアルゴリズムをチェックして行きたいと思います。

お手数おかけします。m(_ _)m


>ML コマンド (多分 "Screen" コマンドも?) の # オプションで出力される座標が、本来の位置よりも上に 2 ドット、左に 2 ドットずれています。

CG版は詰めが甘いですね。(^^;


>メインメモリで検索モードに入ったとき、[F6] を消せていません。また、[÷] も不要だと思います。

修正しました。(^^)


>ML コマンドで色 (青、赤など) を指定した場合に、コマンド実行後にもその色が残っていますが、これは仕様ということで良いでしょうか?

>私は「インタプリタでの実行を高速化するための仕様」であると理解しています。

MLコマンドは余分な処理をしないというのが仕様で、色変更は各コマンドに付随しているものではないので、そのとおりです。(^^)


>For 1→A To 5
>Screen#0, 0
>Next

>5 回以上のループでエラーになるようです

修正しました。(^^)


>また、次の 2 つで List Ans の中身が異なりますが、原因はわかりますか?

>・ Screen#0, 0
>・ Screen#0, 0→List Ans

仕様想定外なので、ちょっと調査してみます。(^^;



C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その11
https://pm.matrix.jp/CB/CBASICCG145beta11.zip
(build11)
・CGモードでScreen#で座標変換した場合に2ドットずれる不具合を修正しました。

C.Basic for FX v2.45β (さらに使いやすく色々と変更していってみる版)その11
https://pm.matrix.jp/CB/CBASIC245beta11.zip
(build11)(同じ修正)
・Screen#、Screen%を連続実行するとエラーになる不具合を修正しました。
・ファイルモードの検索機能を改善しました。
 アルファベットキーを押すと検索窓が開き検索モードになります。
 検索窓では左右移動等、通常の入力が可能です。
 検索窓を解除するには[EXIT]を押してください。
 カーソル上下、[EXE] [F1](EXE) [F2](EDIT) [F3](NEW)キーは検索窓を閉じること無く実行できます。

Re^3: C.Basic for CG v1.45β & for FX v2.45β (さらに使いやすく色々と変更していってみる版)その10再々々

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
何度もすみません。

グラフ描画の実験に ML コマンドを使っていたのですが、この中で次の不具合を見つけました。

For 1→A To 5
Screen#0, 0
Next

5 回以上のループでエラーになるようです。


また、次の 2 つで List Ans の中身が異なりますが、原因はわかりますか?

・ Screen#0, 0
・ Screen#0, 0→List Ans

Re:Re: C.Basic for CG v1.45β & for FX v2.45β (さらに使いやすく色々と変更していってみる版)その10再々々

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
バグ報告です。
細切れになってすみません。

ML コマンド (多分 "Screen" コマンドも?) の # オプションで出力される座標が、本来の位置よりも上に 2 ドット、左に 2 ドットずれています。

メインメモリで検索モードに入ったとき、[F6] を消せていません。また、[÷] も不要だと思います。


それから、1 つ確認です。

ML コマンドで色 (青、赤など) を指定した場合に、コマンド実行後にもその色が残っていますが、これは仕様ということで良いでしょうか?

私は「インタプリタでの実行を高速化するための仕様」であると理解しています。

Re: C.Basic for CG v1.45β & for FX v2.45β (さらに使いやすく色々と変更していってみる版)その10再々々

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
まず、{>FOLDER} と {>FILE} のアイコンを作ってみました。
文字数なども問題なさそうです。

ところで、現在「入」アイコンを製作中ですが、OS アイコンの分析に時間がかかっているため、当初の見込みより 3 週間程度の遅れが発生しています。(^^;

※ 現在、分析は半分程度終了しています。

パソコンが近くに無くても作業を進められるようにするなど、今後の進捗に向けて工夫して参ります。m(_ _)m

また、「入」アイコンはその他のアイコンと性格が異なるため、機能追加があってもアイコンが探しやすいよう、#11001 以降に割り当てたいと考えているのですが、いかがでしょうか?


> 先頭に戻る動作では検索解除だけにしました。(^^)
> 先頭でもう一度押すとファイルモードが再起動します。

1 番上にいるときのみ、検索モードに入って出ると問答無用でアルファロックになってしまうので、ここの対策をお願いします。

>> また、検索モード時に [SHIFT] で文字が被るのと、[SHIFT] → [SHIFT] で検索モードを退出してしまうバグがあるので修正お願いします。

> 修正しました。(^^)

すみません、[SHIFT] → [SHIFT] に限らず、動作を個別に定義していないキーを押すと退出してしまうようでした (アルファモード解除時の [x, θ, T] など)。

間違ってキーを押したときに退出してしまうことがあるので、デフォルトの動作では検索モードを退出しないようにして、退出できるのは [EXIT] と [SHIFT] + [EXIT] (QUIT) のみにしていただけませんか?


> 一瞬、それは大変かなと思いましたが、ファイルモードは1バイト文字だけなので、次回アップデートで修正してみます。(^^)

お手数お掛けしますがよろしくお願いします。m(_ _)m


> ファイルリスト画面で「アルファモード」または「アルファロック」の時に [F2] (EDIT) でエディタに入り、[F4] または [SHIFT] + [F5] を押すとアルファロックが有効になってしまいます。
> また、エディタの検索画面を「アルファロック」で出た場合に [F4] または [SHIFT] + [F5] を押すと「アルファモード」になってしまいます (これは以前からあったバグのようです)。
> 最後に、エディタの検索画面でアルファロックの大文字と小文字のアイコンが切り替わりません。

すべて修正確認しました。


> CBP_interpreterVRAM.cpp
> の2588行以降がグラフファンクションの構文解析で、実際の動作は、
> CBP_glib2.cpp
> のほぼ全体がグラフ描画に関するサブルーチンになります。

後程チェックします。(^^)

現状、"Y=X^2" のグラフでノイズが出るなどしているので、その辺りも含めてアルゴリズムをチェックして行きたいと思います。


> 複数グラフ等への対応をまるで考えてなかったために、拡張するのはちょっと難問かもしれません。(^^;

動作を見る限りそうっぽいですね。

追加する 6 バイトの実装方法さえ決まれば、g3m である程度のアルゴリズムを書いてテスト出来るかもしれません。

多分、"DrawGraph" コマンドの動作を他のコマンドを使って記述するとかは出来ると思います。

C.Basic for CG v1.45β & for FX v2.45β (さらに使いやすく色々と変更していってみる版)その10再々々

C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その10再々々

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

Colon様、
>私の見解をひとつ前のコメントに書きました。

了解です。(^^)
ってことで、とりあえず、仕様は現状のままですが構わないでしょうか? >管理人様


>思ったよりも "== SEARCH MODE ==" のおさまりが良いですね。
>窓の位置もこっちのほうが分かりやすいです。(^^)

ありがとうございます!
いい提案をしていただいたおかげですね。(^^)


>[EXIT] でファイルリストの先頭に戻る動作をしたときにアルファロックになるのは期待した動作でしょうか?

先頭に戻る動作では検索解除だけにしました。(^^)
先頭でもう一度押すとファイルモードが再起動します。


>また、検索モード時に [SHIFT] で文字が被るのと、[SHIFT] → [SHIFT] で検索モードを退出してしまうバグがあるので修正お願いします。

修正しました。(^^)


>ところで、細切れでの提案になって申し訳ありませんが、いっそのこと [→] / [←] でカーソル移動できるようにしてしまってはいかがでしょうか?
>こうすれば純正の {SEARCH} で行える操作の完全上位互換になると思います。


一瞬、それは大変かなと思いましたが、ファイルモードは1バイト文字だけなので、次回アップデートで修正してみます。(^^)


>基本のアルゴリズムさえ調えば難しくはないと思いますが、規模がそれなりに大きい変更にはなりそうですね。
>バグ出ししやすいよう、ソースが入っているファイルをこの段階で教えていただけますか?

んと、
CBP_interpreterVRAM.cpp
の2588行以降がグラフファンクションの構文解析で、実際の動作は、
CBP_glib2.cpp
のほぼ全体がグラフ描画に関するサブルーチンになります。
最初の頃からYグラフだけは実装していたのですが、
複数グラフ等への対応をまるで考えてなかったために、拡張するのはちょっと難問かもしれません。(^^;


>ファイルリスト画面で「アルファモード」または「アルファロック」の時に [F2] (EDIT) でエディタに入り、[F4] または [SHIFT] + [F5] を押すとアルファロックが有効になってしまいます。
>また、エディタの検索画面を「アルファロック」で出た場合に [F4] または [SHIFT] + [F5] を押すと「アルファモード」になってしまいます (これは以前からあったバグのようです)。
>最後に、エディタの検索画面でアルファロックの大文字と小文字のアイコンが切り替わりません。

修正できたかと思いますが、チェックの方よろしくです。(^^)


C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その10再々
https://pm.matrix.jp/CB/CBASICCG145beta10.zip
(build10)
・ファイルモードでアルファベットキーによるダイレクト選択時に[SHIFT]、[ALPHA]、小文字や数字が指定が出来るようになりました。



@CalcLoverHK
Here is the same update as the CG version.
There may still be bugs.(^^;

C.Basic for FX v2.45β (さらに使いやすく色々と変更していってみる版)その10
https://pm.matrix.jp/CB/CBASIC245beta10.zip

入力モード不具合追加報告

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
すみません、いくつかのバグを見落としていました。(^^;

ファイルリスト画面で「アルファモード」または「アルファロック」の時に [F2] (EDIT) でエディタに入り、[F4] または [SHIFT] + [F5] を押すとアルファロックが有効になってしまいます。

また、エディタの検索画面を「アルファロック」で出た場合に [F4] または [SHIFT] + [F5] を押すと「アルファモード」になってしまいます (これは以前からあったバグのようです)。

最後に、エディタの検索画面でアルファロックの大文字と小文字のアイコンが切り替わりません。

以上、確認お願いします。

Re: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その10再々

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
コメントが競合してしまいましたね。(^^;

> このアイコンはまたColon様に作成していただければということで仮アイコンです。(^^;

了解しました。

> 現在は、ALPHAモードで[(-)](@)、[X^2](~)、[^](')を押してもALPHAモードは解除されないので、その時点でのモードを維持する仕様ですが、
> ALPHAモードを解除している場合にもALPHAモードに戻すということでしょうか?

私の見解をひとつ前のコメントに書きました。

> 1ページ目に固定にしました。(^^)

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

> 了解です!
> それから、FX版にはステータスエリアがないので、検索モードに入ったことがより分かりやすい形として、
> 検索窓をCATALOGと同じ表示位置に変更してみました。(^^)

思ったよりも "== SEARCH MODE ==" のおさまりが良いですね。

窓の位置もこっちのほうが分かりやすいです。(^^)


> 追加してみました。(^^)
> 修正しました。(^^)

確認しました。

[EXIT] でファイルリストの先頭に戻る動作をしたときにアルファロックになるのは期待した動作でしょうか?

また、検索モード時に [SHIFT] で文字が被るのと、[SHIFT] → [SHIFT] で検索モードを退出してしまうバグがあるので修正お願いします。


ところで、細切れでの提案になって申し訳ありませんが、いっそのこと [→] / [←] でカーソル移動できるようにしてしまってはいかがでしょうか?
こうすれば純正の {SEARCH} で行える操作の完全上位互換になると思います。


> あ、そういうことだったんですね。
> 現状、Yグラフしかサポートしていないので、そこのところから始めないとですね。(^^;

基本のアルゴリズムさえ調えば難しくはないと思いますが、規模がそれなりに大きい変更にはなりそうですね。

バグ出ししやすいよう、ソースが入っているファイルをこの段階で教えていただけますか?

Re^5: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その10

@sentaro21
Can you import the feature which gives the ability to type numbers, ~, " and ' to search programs in FX version?

C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その10再々

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

再アップした直後にColon様の書き込みを発見してちょっと焦ってしまいました。(^^;

Colon様、
>次のようなキープレスに固定してはどうでしょうか?

>・ [EXIT] → 検索モードから退出
>・ [F1] → {EXE} に固定 (よく使うから)
>・ [F2] → {EDIT} に固定 (よく使うから)

1ページ目に固定にしました。(^^)


>その上で、当初 [F1] ~ [F3] に表示してはどうかと思っていましたが、ステータスエリアに == SEARCH MODE == と表示していただけると分かりやすいです。

了解です!
それから、FX版にはステータスエリアがないので、検索モードに入ったことがより分かりやすい形として、
検索窓をCATALOGと同じ表示位置に変更してみました。(^^)


>[+] と [-] もダイレクトで入力できるようにしていただけたのですね。(^^)

[ALPHA]モード解除で入力できるようになったので、許可してみました。(^^)


>となると、ファイル名に使う以下の文字も入力できるようにしていただければ整合性が取れると思います。
>・ ,
>・ (
>・ )
>・ ^

追加してみました。(^^)


>最初に小文字を入力したいこともあるので、検索モードから出たあとも大文字小文字の設定をリセットせずに保持してほしいです。
>また、アルファロックないしアルファモードの状態で、[SHIFT] → [SHIFT] → [ALPHA] と押すとアルファモードになるべきがなりません。

修正しました。(^^)


>要望してくださった方は、例えば "DrawGraph" コマンドで "Y=" 以外のタイプのグラフを書きたいときに互換動作しないということを仰いたいのではないでしょうか?

あ、そういうことだったんですね。
現状、Yグラフしかサポートしていないので、そこのところから始めないとですね。(^^;


C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その10再々
https://pm.matrix.jp/CB/CBASICCG145beta10.zip
(build10)
・ファイルモードでアルファベットキーによるダイレクト選択時に[SHIFT]、[ALPHA]、小文字や数字が指定が出来るようになりました。
 [F4](A<>a):大文字小文字切り替えです。
 [F5](CHAR)
 [F5](→):フォルダ/ファイルサーチを切り替えます。
 [DEL]:一文字戻ります。
 [AC]:全部消します。
 [EXIT]:元に戻ります。
 [X^2]:~
 [^]:' or ^
 [(-)]:@

Re^4: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その10

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

管理人様、
>[F5](/) については、最初使い方でチョット悩みました。
>フォルダ名を入力した後に [F5](/) を押すのが正しい方法と気が付くのに、色々試行錯誤しました。
>文字列入力後にそれをフォルダ指定するために [F5] を押すのですから、FKeyアイコンは "/" でなくて "Folder" の方が分かりやすくないでしょうか?

そういえば、そうかもですね。
フォルダ/ファイル検索に移行するので、"→Folder"と"→File"というのでもいいのでしょうか?
ってことで、変更してみました。(^^)
このアイコンはまたColon様に作成していただければということで仮アイコンです。(^^;



>[(-)](@)、[X^2](~)、[^](') を押した後は、自動的にALPHAモードに戻った方が良いと思います。

現在は、ALPHAモードで[(-)](@)、[X^2](~)、[^](')を押してもALPHAモードは解除されないので、その時点でのモードを維持する仕様ですが、
ALPHAモードを解除している場合にもALPHAモードに戻すということでしょうか?


>ヘルプ機能を表示するための分かりやすいショートカットキーを設定できませんか?
>例えば、[SHIFT] + [4] (CATALOG) をヘルプキーにして、ファイルリストでは そこで使えるショートカットの一覧、エディタ画面では純正Casio Basic の CATALOG機能のようなものを 現存の ~~HELP.g3m をベースに表示できると便利だと思います。

HELP機能はあった方がいいですね。
ファイルモードでは[SHIFT]+[4]は使われていないので、ぴったりかもです。(^^)


とりあえず、アイコン変更だけ修正再アップです。

C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その10再
https://pm.matrix.jp/CB/CBASICCG145beta10.zip
・ファイルモードでアルファベットキーによるダイレクト選択時に[SHIFT]、[ALPHA]、小文字や数字が指定が出来るようになりました。
 [F4](A<>a):大文字小文字切り替えです。
 [F5](CHAR)
 [F5](→):フォルダ/ファイルサーチを切り替えます。
 [DEL]:一文字戻ります。
 [AC]:全部消します。
 [EXIT]:元に戻ります。
 [X^2]:~
 [^]:'
 [(-)]:@

Re^4: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その10

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

管理人様、sentaro様、
> フォルダ名を入力した後に [F5](/) を押すのが正しい方法と気が付くのに、色々試行錯誤しました。

[F6] (/) を押すのはどのタイミングでも (途中でも) 良いようです。

最初から [F6] で入力するのは不可能なので、そこを見越して [÷] にも割り当てるという提案をしました。

初めから入力したい場合は、[ALPHA] → [÷] で可能です。

> [(-)](@)、[X^2](~)、[^](') を押した後は、自動的にALPHAモードに戻った方が良いと思います。

それらのキーは元々アルファモードで入力が出来るのではないでしょうか?

その都度アルファモードに戻るようにしてしまうと、数字等の入力に支障が出てしまいます。(^^;

> 例えば、[SHIFT] + [4] (CATALOG) をヘルプキーにして、ファイルリストでは そこで使えるショートカットの一覧、エディタ画面では純正Casio Basic の CATALOG機能のようなものを 現存の ~~HELP.g3m をベースに表示できると便利だと思います。

賛成します。
エディタないし一行入力画面では、従来のカタログ機能に C.Basic のコマンドを追加、という感じにも出来ますね。


sentaro様、
検索終了後に検索終了のつもりで [EXIT] を押したらファイルリストの先頭に戻ったり、ファンクションメニューのページ数によって [F1] ~ [F3] の機能が変わってしまったりで直感的に操作しにくいです。


次のようなキープレスに固定してはどうでしょうか?

・ [EXIT] → 検索モードから退出
・ [F1] → {EXE} に固定 (よく使うから)
・ [F2] → {EDIT} に固定 (よく使うから)

その上で、当初 [F1] ~ [F3] に表示してはどうかと思っていましたが、ステータスエリアに == SEARCH MODE == と表示していただけると分かりやすいです。

[+] と [-] もダイレクトで入力できるようにしていただけたのですね。(^^)

となると、ファイル名に使う以下の文字も入力できるようにしていただければ整合性が取れると思います。
・ ,
・ (
・ )
・ ^


> シフトとアルファ表示が絡むだけに、よろしくお願いします。(^^)

最初に小文字を入力したいこともあるので、検索モードから出たあとも大文字小文字の設定をリセットせずに保持してほしいです。

また、アルファロックないしアルファモードの状態で、[SHIFT] → [SHIFT] → [ALPHA] と押すとアルファモードになるべきがなりません。

確認お願いします。


> グラフ式メモリとして実体が同じで名前が違うだけの感じがするので、
> すべてGraphYで代用できないかということでした。(^^;

名前が違うと他コマンドでの動作が変わってきますので、数式の実態としては従来と何ら変わりませんが、その他に "Y=" なのか "X=" なのかパラメトリックグラフなのかといった情報などを格納する必要があります (この点、グラフメモリーは単に文字列を格納しているわけではないと言えます)。

要望してくださった方は、例えば "DrawGraph" コマンドで "Y=" 以外のタイプのグラフを書きたいときに互換動作しないということを仰いたいのではないでしょうか?

Re^3: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その10

sentaro様、iron2様、Colon様、CalcLoverHK様、C.Basicユーザーの皆様、

管理人のやすです。

sentaro様、

ファイルモードでのファイル名/フォルダ名入力機能ですが、いくつか提案があります。

1) フォルダ名入力
[F5](/) については、最初使い方でチョット悩みました。
フォルダ名を入力した後に [F5](/) を押すのが正しい方法と気が付くのに、色々試行錯誤しました。
文字列入力後にそれをフォルダ指定するために [F5] を押すのですから、FKeyアイコンは "/" でなくて "Folder" の方が分かりやすくないでしょうか?

2) ALPHAモードの設定
[(-)](@)、[X^2](~)、[^](') を押した後は、自動的にALPHAモードに戻った方が良いと思います。


さて、C.Basic では色々なショートカットキーがあります。
たとえは、ファイルリストで [x10^x] / [EXP] を押せば、フォルダの最初にジャンプする、[SHIFT] + [6] でカラーピッカが現れる、などです。

ヘルプ機能を表示するための分かりやすいショートカットキーを設定できませんか?
例えば、[SHIFT] + [4] (CATALOG) をヘルプキーにして、ファイルリストでは そこで使えるショートカットの一覧、エディタ画面では純正Casio Basic の CATALOG機能のようなものを 現存の ~~HELP.g3m をベースに表示できると便利だと思います。

如何でしょうか?




Re:Re: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その10

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

Colon様、
>後程動作確認しておきます。

シフトとアルファ表示が絡むだけに、よろしくお願いします。(^^)


>ん、どういうことでしょうか? (^^;

グラフ式メモリとして実体が同じで名前が違うだけの感じがするので、
すべてGraphYで代用できないかということでした。(^^;

Re: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その10

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
> まずはアルファモードが分かりやすいCG版からということで動作チェックの方、よろしくお願いします。(^^)

ありがとうございます!

後程動作確認しておきます。


> となると、今の所Yのグラフしかサポートして無いのでYだけでいいような気がしますが、どうなんでしょう?(^^;

ん、どういうことでしょうか? (^^;

C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その10

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


Colon様、
>エディタのみのショートカットにせずに、ファイルリストからもファンクションメモリーの内容が見られるほうが便利そうなので、取り敢えず次のようになるでしょうか。

ありがとうございます!
了解しましたです。(^^)


>仰る通りの仕様です。
>sin X→Y1 のあとに、cos Y→X1 を実行すれば Y1 のデータは消えます。

ってことは、実体は一つで共有してるってことなんですね。(^^)
となると、今の所Yのグラフしかサポートして無いのでYだけでいいような気がしますが、どうなんでしょう?(^^;



管理人様、Colon様、
>アルファベット大文字と "~" のみ使用可能の現状に対して、
>[ALPHA] のトグル動作でアルファベットモードのON/OFF と "'" の入力方法が確保できれば、さらに良いかと思います。
>新規ファイル名設定の時のような FKey 表示 (鍵マークのFKeyは不要?)、つまり [F4](A↔a) と [F5](CHAR) になり、それらが使えると、操作の一貫性があってより良いと思いますが、如何でしょうか?
>管理人様の提案に賛成します。
>純正のファイルリストでは「アルファロック」がデフォルトなので、C.Basic でもファイルリストに入った時に「アルファロック」にしていただき、その上で他モードと切り替えられると良いと思います。

了解です!
ということで、[SHIFT][ALPHA]が効くようにしてみました。(^^)


>それから、[F6] や [÷] に {/} を割り当てて、これを押すとフォルダの検索も出来る、というのはいかがでしょうか?
>(例)"/CBa" → "CBasic" というフォルダが検索できる

いいアイデアです!
ってことで、即採用させていただきました!(^^)


まずはアルファモードが分かりやすいCG版からということで動作チェックの方、よろしくお願いします。(^^)

C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その10
https://pm.matrix.jp/CB/CBASICCG145beta10.zip
(build10)
・ファイルモードでアルファベットキーによるダイレクト選択時に[SHIFT]、[ALPHA]、小文字や数字が指定が出来るようになりました。
 [F4](A<>a):大文字小文字切り替えです。
 [F5](CHAR)
 [F5](/):フォルダサーチに切り替わります。
 [DEL]:一文字戻ります。
 [AC]:全部消します。
 [EXIT]:元に戻ります。
 [X^2]:~
 [^]:'
 [(-)]:@



> ところで、ここまでサンプルプログラムが増えてくると、同梱サンプルプログラムの簡単な説明と格納フォルダの一覧のテキストファイルが有ると良いかと思いますが、如何でしょうか?
>目的のサンプルプログラムが探しやすくなって良さそうですね。(^^)

たしかに有った方が良さそうですね。(^^)

Re^8: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その9

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

管理人様、sentaro様、
> 新規ファイル名設定の時のような FKey 表示 (鍵マークのFKeyは不要?)、つまり [F4](A↔a) と [F5](CHAR) になり、それらが使えると、操作の一貫性があってより良いと思いますが、如何でしょうか?

管理人様の提案に賛成します。

何か入力したら左詰めミニフォント青で "== SEARCH MODE ==" などと表示し、[F4] (A<>a), [F5] (CHAR) となれば分かりやすいと思います。

> シフトやアルファモードを切り替えられるようにしておいた上で、

> [ALPHA] のトグル動作でアルファベットモードのON/OFF と "'" の入力方法が確保できれば、さらに良いかと思います。

純正のファイルリストでは「アルファロック」がデフォルトなので、C.Basic でもファイルリストに入った時に「アルファロック」にしていただき、その上で他モードと切り替えられると良いと思います。

私はテストプログラムに数字をつけていることが多いので、アルファモードを解除したら数字を入力できる、みたいにしていただけると助かります。

それから、[F6] や [÷] に {/} を割り当てて、これを押すとフォルダの検索も出来る、というのはいかがでしょうか?

(例)"/CBa" → "CBasic" というフォルダが検索できる


> まぁ、グラフメモリ以外は変わらないことが理想です。

その方向での機能拡張が可能だと思います。(^^)

> これは必須ですが、旧仕様と新仕様で、同じ内容を実行する簡単なサンプルコードをマニュアルに書き、このサンプルプログラムを同梱して貰えると、完璧だと思います。特にサンプルプログラム同梱は一番有り難いです。

了解しました。
仕様が固まってみたら作ってみます。

> ところで、ここまでサンプルプログラムが増えてくると、同梱サンプルプログラムの簡単な説明と格納フォルダの一覧のテキストファイルが有ると良いかと思いますが、如何でしょうか?

目的のサンプルプログラムが探しやすくなって良さそうですね。(^^)

Re^7: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その9

sentaro様、iron2様、Colon様、CalcLoverHK様、C.Basicユーザーの皆様、

管理人のやすです。

sentaro様、

> >ファイルリストでの Search 機能ですが、余計なリソースを使わずうまいやり方ですね。

> ただ、純正の検索と比べると、アルファベット大文字+'~'しか検索文字に使えないので、

> シフトやアルファモードを切り替えられるようにしておいた上で、
> [X^2]と[^]のキーを使うようにするのが良さそうでしょうか?(^^)

アルファベット大文字と "~" のみ使用可能の現状に対して、
[ALPHA] のトグル動作でアルファベットモードのON/OFF と "'" の入力方法が確保できれば、さらに良いかと思います。
新規ファイル名設定の時のような FKey 表示 (鍵マークのFKeyは不要?)、つまり [F4](A↔a) と [F5](CHAR) になり、それらが使えると、操作の一貫性があってより良いと思いますが、如何でしょうか?


Colon様、
>> Matθへの直アクセスは、私の手元では結構使っています。というか、この方が分かりやすいので多用しています。

>これまでの仕様と比べてこれ以上変わると困る、みたいなラインはありますか?

まぁ、グラフメモリ以外は変わらないことが理想です。

>> どこまで互換性を担保するかですが、行列への直アクセスする濃いユーザー向けには、マニュアルで注意書きを明記するので良いと思いますが、如何でしょうか?

>一応グラフメモリーのフォーマットは載せておく必要がありそうですね。

これは必須ですが、旧仕様と新仕様で、同じ内容を実行する簡単なサンプルコードをマニュアルに書き、このサンプルプログラムを同梱して貰えると、完璧だと思います。特にサンプルプログラム同梱は一番有り難いです。


ところで、ここまでサンプルプログラムが増えてくると、同梱サンプルプログラムの簡単な説明と格納フォルダの一覧のテキストファイルが有ると良いかと思いますが、如何でしょうか?

Re^6: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その9

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

管理人様、
> Matθへの直アクセスは、私の手元では結構使っています。というか、この方が分かりやすいので多用しています。

これまでの仕様と比べてこれ以上変わると困る、みたいなラインはありますか?

> どこまで互換性を担保するかですが、行列への直アクセスする濃いユーザー向けには、マニュアルで注意書きを明記するので良いと思いますが、如何でしょうか?

一応グラフメモリーのフォーマットは載せておく必要がありそうですね。


sentaro様、
> ここでまた独立したメニューが現れるわけですね。(^^)

そうですね。
エディタのみのショートカットにせずに、ファイルリストからもファンクションメモリーの内容が見られるほうが便利そうなので、取り敢えず次のようになるでしょうか。

〈ファイルリスト画面〉
・ [SHIFT] + [,] …… ポップアップ、サポート機能への切り替え
・ [SHIFT] + [→] …… 最後に使ったサポート機能に戻る

〈エディタ画面〉
・ [SHIFT] + [,] …… ポップアップ、サポート機能への切り替え
・ [SHIFT] + [→] …… 最後に使ったサポート機能に戻る

〈各サポート機能画面〉
・ [SHIFT] + [,] …… ポップアップ、サポート機能同士の切り替え
・ [SHIFT] + [→] …… サポート機能に入る前の画面に応じて、ファイルリスト / エディタに戻る


> 例えば、Y1に数式を記憶していて、別途X1を記憶させるとそれはY1がX1の内容で書き換わるとかでしょうか?

あ、そこが一番大事ですね (特に FX 版では)。

仰る通りの仕様です。
sin X→Y1 のあとに、cos Y→X1 を実行すれば Y1 のデータは消えます。

また、sin X→Y1 のあとに cos Y→X2 を実行すれば、Y1 と X2 のデータが残ることになります。

ここは純正グラフ機能で [F3] (TYPE) を色々弄ってみたほうが理解しやすいと思います。


あとは、等号不等号うんぬんは別のコマンドで指定する必要があったりしますが、
最近グラフ関係を使っておらず結構忘れているので、きちんと思い出してから説明します。(^^;

Re^5: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その9

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

Colon様、
>[SHIFT] + [,] は今のところ
>・ Var
>・ Mat/List/Vct
>・ Graph Memory
>・ Function Memory
>・ Str

>のような感じでしょうか。

ここでまた独立したメニューが現れるわけですね。(^^)


>実装に関しては、同一 Mat 内でも独立でもどちらでも構わないと思います。

んと、ここがまだちょっとわかってないのですが、
グラフメモリは同じ領域を共有しているということでしょうか?
例えば、Y1に数式を記憶していて、別途X1を記憶させるとそれはY1がX1の内容で書き換わるとかでしょうか?

ここのあたりの純正仕様に関してはまだまだ分からないことが多いです。(^^;



管理人様、
>再アップした for FX と for CG build 09 でアップデート対応しました。

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


>ファイルリストでの Search 機能ですが、余計なリソースを使わずうまいやり方ですね。
>これで、大分楽になります。ありがとうございます。

純正の[CATALOG]の検索機能が参考になりました。(^^)
ただ、純正の検索と比べると、アルファベット大文字+'~'しか検索文字に使えないので、
純正同様のアポストロフィーも追加しておかねばというところですが、
シフトやアルファモードを切り替えられるようにしておいた上で、
[X^2]と[^]のキーを使うようにするのが良さそうでしょうか?(^^)

Re^4: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その9

Colon様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

再アップした for FX と for CG build 09 でアップデート対応しました。

ファイルリストでの Search 機能ですが、余計なリソースを使わずうまいやり方ですね。
これで、大分楽になります。ありがとうございます。


> [SHIFT] + [,] は今のところ
> ・ Var
> ・ Mat/List/Vct
> ・ Graph Memory
> ・ Function Memory
> ・ Str
>
> のような感じでしょうか。

私も最後の Str も追加したこのような機能で、先ずは実装頂いて、使ってみたいと思います。


> 実装に関しては、同一 Mat 内でも独立でもどちらでも構わないと思います。
>
> 例えば Mat θ の数式前に 6 バイト確保しても良いですし、最後に 6 バイト確保しても良いと思います。
>
> 行列のバイト数を増減するときのことを考えると最初に 6 バイトのほうが簡単そうです が、従来との互換性を考えたときにどうかということですね (Mat θ 直アクセスのプログラムはまだ少ないでしょうが)。

Matθへの直アクセスは、私の手元では結構使っています。というか、この方が分かりやすいので多用しています。
但し fn は一度も使ったことがありません。

どこまで互換性を担保するかですが、行列への直アクセスする濃いユーザー向けには、マニュアルで注意書きを明記するので良いと思いますが、如何でしょうか?


Re^3: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その9

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
> ついでにStrも一覧表示できると便利かもしれません。

そうですね。

[SHIFT] + [,] は今のところ
・ Var
・ Mat/List/Vct
・ Graph Memory
・ Function Memory
・ Str

のような感じでしょうか。


> ん?これは別の独立したメモリーではないということでしょうか?

あ、すみません、Mat θ の勘違いです。(^^;

実装に関しては、同一 Mat 内でも独立でもどちらでも構わないと思います。

例えば Mat θ の数式前に 6 バイト確保しても良いですし、最後に 6 バイト確保しても良いと思います。

行列のバイト数を増減するときのことを考えると最初に 6 バイトのほうが簡単そうです が、従来との互換性を考えたときにどうかということですね (Mat θ 直アクセスのプログラムはまだ少ないでしょうが)。

ちなみに、OS では色指定以外が〈4バイト〉+〈数式〉+〈パディング〉の形式で一緒になっていて、色指定のみは別ファイルになっています (CG 版の実装は後付けだからだと思います)。

Re: Re:C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その9

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

管理人様、
>It may be useful function.
>In my fx-CG50, there are 39 files starting with letter S. In order to search Sys.g3m, I always push [T] then scroll up to reach at Sys.g3m. It's a bit frustrating.

先の文字を選択して遡るのは同じでした。(^^;
複数文字での検索はもっと早くに実装しておくべきでしたね。


Colon様、
>e-Activity での動作を再度調べてみましたが、
>・ [SHIFT] + [,] …… 呼び出しているアプリケーション同士での切り替え
>・ [SHIFT] + [→] …… エディタと最後に呼び出したアプリケーション間の切り替え

>となっているようです。
>言い換えれば、前者は同階層、後者は異なる階層間での移動です。

e-Activityを使ったことがほぼ皆無だったので、
[,]と[→]の印字が何を意味していたのか、Colon様の説明で初めてわかりました!
ありがとうございます!(^^)

それらのショートカットはC.Basic独自に設定することになると思いますが、
e-Activity に準じた操作体系ならユーザー側の戸惑いが無いのでその方向でいきたいと思います。(^^)


>なるほど、その手がありましたね。

ファンクションキーをどこに設定しようかと考えていたら、CATALOGでの選択方法があった!と思いつきました。(^^)
これは、純正にも取り入れて欲しいかもですね。


>何も入力していない状態で [DEL] を押すと画面がちらついてしまうので、確認お願いします。

あ、何やらバグっていたようです。
ってことで、修正再アップしました。(^^)


>修正確認しました。
>UCF にてグラフ関係の要望があったのを確認しました。

ありがとうございます!


>将来的には、ファンクションメモリー一覧などと一緒に、グラフメモリーの一覧にもショートカットで跳べるようにしてしまえば便利かもしれません。

ついでにStrも一覧表示できると便利かもしれません。
基本的に同じ実装なのでやることは一緒ですし。(^^)


>それから、もしもグラフメモリーで X, <r>, Param に対応するのであれば、必要な仕様追加箇所は (OS を参考に) 把握できているのでいつでもお伝えできます。

助かります!


>一応現仕様の Mat z ベースというのは存続可能で、各グラフ式ごとに 6 バイトだけ追加確保できれば良さそうです。

ん?これは別の独立したメモリーではないということでしょうか?

Re: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その9

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
> I improved it in the same way as "CATALOG".(^^)

なるほど、その手がありましたね。

何も入力していない状態で [DEL] を押すと画面がちらついてしまうので、確認お願いします。

> ・インデントの必要なコマンド(If,Else..)の直前で改行した場合にインデントが余分に付加される不具合を修正しました。

修正確認しました。

> ・ファンクションメモリー(Fn)およびグラフメモリー(Y)に引数が無い場合は文字列として評価するようにしました。

UCF にてグラフ関係の要望があったのを確認しました。

将来的には、ファンクションメモリー一覧などと一緒に、グラフメモリーの一覧にもショートカットで跳べるようにしてしまえば便利かもしれません。

それから、もしもグラフメモリーで X, <r>, Param に対応するのであれば、必要な仕様追加箇所は (OS を参考に) 把握できているのでいつでもお伝えできます。

一応現仕様の Mat z ベースというのは存続可能で、各グラフ式ごとに 6 バイトだけ追加確保できれば良さそうです。

Re^7: fn機能について。

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
> 今まで使われていなかったショートカット機能なので、
> さて、どのようにしましょうか?

e-Activity での動作を再度調べてみましたが、
・ [SHIFT] + [,] …… 呼び出しているアプリケーション同士での切り替え
・ [SHIFT] + [→] …… エディタと最後に呼び出したアプリケーション間の切り替え

となっているようです。
言い換えれば、前者は同階層、後者は異なる階層間での移動です。

一方、エディタからアプリケーション呼び出しをする機能は [F2] (STRIP) が担っています。


さて、C.Basic においてエディタからサポート機能へのショートカットを導入するにあたり、切り替える階層の対応関係を優先するか、ポップアップが出るキーを揃えるかということになるかと思います。

前者にするとエディタ → サポート機能の切り替え (ポップアップ) が [SHIFT] + [→] になり、サポート機能同士の切り替え (ポップアップ) が [SHIFT] + [,] になります。
この場合、純正にある [SHIFT] + [→] でのトグルは出来なくなります。

後者の場合、エディタ → サポート機能の切り替え、サポート機能同士の切り替え共に [SHIFT] + [,] でポップアップを出すこととし、[SHIFT] + [→] は純正同様になります。
この場合、[SHIFT] + [,] に別階層の切り替えも一部割り当てることにはなりますが、「純正の機能プラスアルファ」という感じで体系を説明することは可能だと考えます。

e-Activity 自体あまり馴染みが無い方も多いでしょうから、それを考慮すると「ポップアップは [SHIFT] + [,] 」とはっきりする後者案のほうが分かりやすいように思います。


> はい、そういうことです。
> 順番が変わるのはジャンプしたりリターンしたりの実行の流れが変わる箇所なのですが、それが命令ごとに異なるのでマニュアル必須です。(^^;

ありがとうございます。(^^)


> 最初はC.Basicに部分的なコンパイル(=サブプロラムのコンパイル機能)を付加できればと思ってますが、
> コンパイルはシステムエラーとの戦いになるので、
> g3mで出来るところまでやって、バグ取りしつつ本体に実装していくという形がいいのかなと考えてたりしてます。(^^)

了解しました。
そのつもりで心の準備をしておきます。(^^)


管理人様、sentaro様、
> [F6](▷) + [F6](▷) + [F3] can be candidate for the new Search function in file list screen.

以前 FKey Icon の整理について相談していた際に [F6] - [F6] - [F2] の {RENFLDR} を廃止して {RENAME} に統合する方向になっていたので、{SEARCH} を導入するとしたら初めから [F6] - [F6] - [F2] に入れてしまっても良いかと思います。

:C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その9

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

とりあえずバグが見つかっているのでそれを修正してアップデートしておきます。(^^)

@CalcLoverHK
Thanks for a very useful point!
I improved it in the same way as "CATALOG".(^^)


C.Basic for CG v2.45β (さらに使いやすく色々と変更していってみる版)その9
https://pm.matrix.jp/CB/CBASIC245beta09.zip
(build09)
・””コマンドの実行速度が遅かった不具合を修正しました。

C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その9
https://pm.matrix.jp/CB/CBASICCG145beta09.zip
(※同じ変更箇所)
(build09) 
・ファイルモードでアルファベットキーによるダイレクト選択時に2文字以上の指定が出来るようになりました。
 [DEL]:一文字戻ります。
 [AC]:全部消します。
・ファンクションメモリー(Fn)およびグラフメモリー(Y)に引数が無い場合は文字列として評価するようにしました。
・インデントの必要なコマンド(If,Else..)の直前で改行した場合にインデントが余分に付加される不具合を修正しました。

Re: Missing ability to search program by up to 8 characters in C.Basic

Hi CalcLoverHK and sentaro

[F6](▷) + [F6](▷) + [F3] can be candidate for the new Search function in file list screen.

It may be useful function.
In my fx-CG50, there are 39 files starting with letter S. In order to search Sys.g3m, I always push [T] then scroll up to reach at Sys.g3m. It's a bit frustrating.

Missing ability to search program by up to 8 characters in C.Basic

Hi sentaro21

A user from cnCalc has reported that C.Basic do not have SRC button unlike Casio Basic for searching program by up to 8 characters. Currently only pressing key corresponding to alphabet works similar but less versatile. Can you try to implement this feature?

Cheers
CalcLoverHK

Re^6: fn機能について。

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

Colon様、
>自動インデントを on にしているときに If や For などの直前などで改行を行うとインデントが増えるんですが、これは仕様でしょうか? バグでしょうか?

うわ、たしかに増えますね。(^^;
仕様的にはバグとしかいえないので直してみます。


>空きキーとしては [SHIFT] + [,] や [SHIFT] + [→] があり、これらのキーは e-Activity のエディタでプロセスの切り替えに使われます。

あ、その2つが使われていないままですね!(^^)


>もしこうするのであれば、色々とショートカットを追加できるキーであるだけに、体系をしっかりと検討しておく必要がありそうです。

今まで使われていなかったショートカット機能なので、
さて、どのようにしましょうか?


>C.Basic では行列をだいぶ拡張しているので、"ClrMat A~Z" / "ClrMat @A~@B" / "ClrList 53~1040" のような構文もできるとよいなと思います。

構文解釈だけの問題なので、すべて出来ると思います。(^^)


>頂いたサンプルプログラムでは、1 行目 → 3 行目 → 2 行目という実行順になるということよいですか?

はい、そういうことです。
順番が変わるのはジャンプしたりリターンしたりの実行の流れが変わる箇所なのですが、それが命令ごとに異なるのでマニュアル必須です。(^^;


>例を頂けると安心して挑戦できるので助かります! (^^)

条件判断やループとかになってくるとまた難度が上がっていきますが、Colon様なら難なくこなせそうですね。(^^)


>逆アセンブラ、基礎部分はもう出来てます。(^^;
>昨夜 SH4A のソフトウェアマニュアルを見つけたんですが、"Call()" 関数で遊ぼうと思ったときに List の中身だけでは混乱するので即作りました。(^^;

うわ!すでに出来てるとか、やはりColon様は只者ではないですね!(^^)


>逆アセンブラは Visual Studio でもデバッグ機能として実装されているようですし、C:Basic でも使えれば便利だと考えています。
>コンパイラの実装形式はともかく、コンパイル後のマシン語コードをファイルに出力するのは出来るでしょうから、
>逆アセンブラは C:Basic の標準仕様にまではしなくとも g3m のサポートツールとして提供できそうですね。 

C:Basicではアセンブラ/逆アセンブラも実装する予定だったところですが、想定よりも早くに実装することになるかもですね。(^^;

g3mレベルで出来るできることといえば、逆アセンブラのみならず、アセンブラも出来ますし、さらにはコンパイラも不可能ではないですね。(^^)

最初はC.Basicに部分的なコンパイル(=サブプロラムのコンパイル機能)を付加できればと思ってますが、
コンパイルはシステムエラーとの戦いになるので、
g3mで出来るところまでやって、バグ取りしつつ本体に実装していくという形がいいのかなと考えてたりしてます。(^^)

Re^5: fn機能について。

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
自動インデントを on にしているときに If や For などの直前などで改行を行うとインデントが増えるんですが、これは仕様でしょうか? バグでしょうか?

> 右と左で別機能にするとか…
> これはまた要相談ということで…(^^;

ファンクションメモリー一覧に行くためのキープレスが面倒なので、ショートカットは欲しいですね。

空きキーとしては [SHIFT] + [,] や [SHIFT] + [→] があり、これらのキーは e-Activity のエディタでプロセスの切り替えに使われます。

これに似たような感じで、例えば [SHIFT] + [,] を押すと "Var", "Mat/List/Vct", "Function Mem" などとポップアップが出てサポート機能に跳べる、というのもアリだと思います。

もしこうするのであれば、色々とショートカットを追加できるキーであるだけに、体系をしっかりと検討しておく必要がありそうです。

> お!これはまたナイスな新機能です!次のアップデートで取り入れたいと思います。

C.Basic では行列をだいぶ拡張しているので、"ClrMat A~Z" / "ClrMat @A~@B" / "ClrList 53~1040" のような構文もできるとよいなと思います。

無理のない範囲でご検討ください。

> 気をつけないといけないのが、遅延スロットという命令実行順が入れ替わるやっかいな仕組みがありますので、
> そこでハマならないようにお気をつけください。(^^;

頂いたサンプルプログラムでは、1 行目 → 3 行目 → 2 行目という実行順になるということよいですか?

> 超簡単なマシン語の例として、整数足し算です。

例を頂けると安心して挑戦できるので助かります! (^^)

> なんだか、Colon様が神様に見えてきますね。(^^)

いえいえ、そんな恐縮です……。(^^;

> その気になれば、C.Basicでコンパイラプログラムも書けてしまいそうですが、
> アセンブラや逆アセンブラならサクッと作れてしまいそうですね。(^^)

逆アセンブラ、基礎部分はもう出来てます。(^^;

昨夜 SH4A のソフトウェアマニュアルを見つけたんですが、"Call()" 関数で遊ぼうと思ったときに List の中身だけでは混乱するので即作りました。(^^;

まだ対応していない命令がありますが、そこはソースコードに付け足しすればよいだけです。

逆アセンブラは Visual Studio でもデバッグ機能として実装されているようですし、C:Basic でも使えれば便利だと考えています。

コンパイラの実装形式はともかく、コンパイル後のマシン語コードをファイルに出力するのは出来るでしょうから、
逆アセンブラは C:Basic の標準仕様にまではしなくとも g3m のサポートツールとして提供できそうですね。 

> プログラムが自分自身でサブプログラムを増殖していったりということも出来ます。(^^;

Save コマンドとの合わせ技ですね。

Re^4: fn機能について。

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

Colon様、
>現在コマンド入力履歴が割り当てられていますが、大丈夫でしょうか?

右と左で別機能にするとか…
これはまた要相談ということで…(^^;


>直アクセスで文字列を扱えるのが C.Basic の強みなので行列ベースというのは残してほしい気持ちはあります。

メモリ容量的にはCGシリーズならばさほど大した問題ではないのですが、元祖FXシリーズで独立エリアとなるとちょっと厳しくなってきますね。
ってことで、現行通り行列仕様でいきたいと思います。(^^)


>現在も ClrMat で Str が消えてしまう状況ではありますし、逆に Mat θ 以外を消去できる、みたいな機能があれば問題を解決できると思います。
>・ ClrMat → 全行列を消去
>・ ClrMat A → Mat A を消去
>・ ClrMat -θ → Mat θ (ファンクションメモリー) 以外を消去
>・ ClrMat -θ, <r> → Mat θ と Mat <r> (文字列変数) 以外を消去

お!これはまたナイスな新機能です!次のアップデートで取り入れたいと思います。
ありがとうございます!(^^)


>バリバリマシン語でプログラミングするというよりは、簡単な計算とかを動かして動作を理解しておきたいという感じです。

なるほどです!
整数の「加減乗」算までなら1命令で出来る命令が備わってますのでかなり簡単に出来ると思います。(^^)
気をつけないといけないのが、遅延スロットという命令実行順が入れ替わるやっかいな仕組みがありますので、
そこでハマならないようにお気をつけください。(^^;

超簡単なマシン語の例として、整数足し算です。
---------------------------
---------------------------
0x6043 MOV.L R4,R0 // R4→R0
0x000B rts     // 
0x305C ADD R5,R0 // R5+R0→R0 遅延スロットによりrtsより先に実行される。
---------------------------
マシン語をワードのリストに書き込んで実行すれば結果が返ります。

{0x6043,0x000B,0x305C}-List 1.W
123→A%
456→B%
Call(VarPtr(List 1),A%,B%)


>単なる興味本意でもありますが、
>C:Basic になったときにどうしてもコンパイル段階でのバグが出てくる可能性はゼロになりませんから、
>現段階で "Call()" 関数のテストをしておけばデバッグ等でサポートしやすくなるかな? という考えもあります。

なんだか、Colon様が神様に見えてきますね。(^^)

その気になれば、C.Basicでコンパイラプログラムも書けてしまいそうですが、
アセンブラや逆アセンブラならサクッと作れてしまいそうですね。(^^)


>ということは、うまく使えばサブプログラム判定もできそうですね。
>あとは、プログラム内でプログラム名を取得するとかも出来ますね。

アドレスがわかれば、どうにでもなりますね。(^^;
それから、今はその都度サブプログラムを読み込む仕様になったので、
プログラムが自分自身でサブプログラムを増殖していったりということも出来ます。(^^;


>なかなかに応用が利きそうなコマンドなので、今後使う場面は出てきそうです。
>ただ、今無理をして仕様を固める必要も無いと思います。

了解です。
必要な時に必要な仕様に改めていきたいと思います。(^^)

Re^3: fn機能について。

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro樣、
> クリップボードに何かあれば、クリップボードに入っている文字をSTOREで指定されたfnに入れます。
> クリップボードに何も無ければ純正同様プログラムの頭から入る分だけ入れて、(もしくは一行分だけ)
> という感じで考えています。

C.Basic はプログラムが長くなりがちなので、そのような対応も必要になってきますね。

> ショートカットとして、[MENU]+[←][→]でfn一覧を呼び出そうかと考えています。(^^)

現在コマンド入力履歴が割り当てられていますが、大丈夫でしょうか?

> 難点は、行列の流用なので行列初期化で消えてしまうということなんですが、
> この際、独立したメモリエリアにするというのもありかもですね。

直アクセスで文字列を扱えるのが C.Basic の強みなので行列ベースというのは残してほしい気持ちはあります。
現在も ClrMat で Str が消えてしまう状況ではありますし、逆に Mat θ 以外を消去できる、みたいな機能があれば問題を解決できると思います。

・ ClrMat → 全行列を消去
・ ClrMat A → Mat A を消去
・ ClrMat -θ → Mat θ (ファンクションメモリー) 以外を消去
・ ClrMat -θ, <r> → Mat θ と Mat <r> (文字列変数) 以外を消去


> 5~12はスタック渡しになるので、スタックに積まれて呼び出す形になります。
> はい、そのとおりです。(^^)

ありがとうございます。(^^)

> ぉお!
> もしかして自作マシン語を動かすとかでしょうか?(^^)

そうですね。
バリバリマシン語でプログラミングするというよりは、簡単な計算とかを動かして動作を理解しておきたいという感じです。

単なる興味本意でもありますが、
C:Basic になったときにどうしてもコンパイル段階でのバグが出てくる可能性はゼロになりませんから、
現段階で "Call()" 関数のテストをしておけばデバッグ等でサポートしやすくなるかな? という考えもあります。


> レジスタの使われ方はSHシリーズにおけるC言語での関数呼び出し規則そのものなので、
> アドレスはスタックに返り先として積まれて、
> 1番目の引数:R4
> 2番目の引数:R5
> 3番目の引数:R6
> 4番目の引数:R7
> 返り値;R0
> となっています。

> 実行先で自由に使える=壊してもいいレジスタはR0~R7まで、R8~R13を使う場合は適宜保存復帰する必要があります。
> R14はフレームポインタ
> R15はスタックポインタ
> なので基本的にはいじくってはいけません。(^^;

詳細な解説ありがとうございます! (^^)


> このコマンドは本来は読み込み済みのプログラムの先頭アドレスやサブプログラムの先頭アドレスを取得するためのコマンドだったのですが、その有効な使い道が思いつかないので、仕様が不定状態になっています。(^^;

ということは、うまく使えばサブプログラム判定もできそうですね。

あとは、プログラム内でプログラム名を取得するとかも出来ますね。

8→Dim Dim List1.B(ProgPtr(0)+60)
$List 1→Str 1

なかなかに応用が利きそうなコマンドなので、今後使う場面は出てきそうです。
ただ、今無理をして仕様を固める必要も無いと思います。

Re:Re: fn機能について。

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

Colon様、
>FEINT / FFM / SYSMNG での動作は大丈夫そうです。(^^)

ありがとうございます!
ということで、他のアプリでも問題なければ今後も08の仕様で構わないということになりますね。(^^)


>STORE ではそのようになりますね。

ですよね。(^^;


>その場合、具体的にはどのような仕様になるでしょうか?

クリップボードに何かあれば、クリップボードに入っている文字をSTOREで指定されたfnに入れます。
クリップボードに何も無ければ純正同様プログラムの頭から入る分だけ入れて、(もしくは一行分だけ)
という感じで考えています。
そして、
ショートカットとして、[MENU]+[←][→]でfn一覧を呼び出そうかと考えています。(^^)
難点は、行列の流用なので行列初期化で消えてしまうということなんですが、
この際、独立したメモリエリアにするというのもありかもですね。


>ところで、"SysCall()" コマンドについてですが、引数 1 - 4 が R4 - R7 に対応しているのはマニュアルに記載があります。
>引数 5 - 12 は R8 - R15 に対応しているという認識でよいでしょうか?

んと、R4~R7まではレジスタで直に渡されますが、
5~12はスタック渡しになるので、スタックに積まれて呼び出す形になります。
ですので、~12までという制限は無いのですが、SysCallの最大引数に対応している形です。


>また、OS の挙動から実行開始時にシステムコール番号を R0 に格納し、終了時に戻り値が R0 に入るのだろうと認識していますが、これは合っていますか?

はい、そのとおりです。(^^)


>"Call()" 関数もぼちぼち試してみたいのですが、実行開始時にアドレスはどのレジスタに格納され、終了時に戻り値はどのレジスタに入るでしょうか?

ぉお!
もしかして自作マシン語を動かすとかでしょうか?(^^)
レジスタの使われ方はSHシリーズにおけるC言語での関数呼び出し規則そのものなので、
アドレスはスタックに返り先として積まれて、
1番目の引数:R4
2番目の引数:R5
3番目の引数:R6
4番目の引数:R7
返り値;R0
となっています。

実行先で自由に使える=壊してもいいレジスタはR0~R7まで、R8~R13を使う場合は適宜保存復帰する必要があります。
R14はフレームポインタ
R15はスタックポインタ
なので基本的にはいじくってはいけません。(^^;


>"ProgPtr()" 関数ですが、マニュアルにあるような使い方だとエラーが出ます。
>このコマンドの仕様はどうなっているでしょうか?

このコマンドは本来は読み込み済みのプログラムの先頭アドレスやサブプログラムの先頭アドレスを取得するためのコマンドだったのですが、その有効な使い道が思いつかないので、仕様が不定状態になっています。(^^;
現在の仕様は、
(書式)ProgPtr(プログラムNo)
プログラムNoが1の場合は最初に読み込まれたプログラムの先頭アドレス。
(書式)ProgPtr("プログラム名")
"プログラム名"を持つサブプログラムの先頭アドレス。

ここでいう先頭アドレスはバイナリエディタでのアドレスよりさらにヘッダ部分の先頭まで遡ったアドレスになっています
(先頭アドレス+0x58=プログラム格納アドレス)

Re: fn機能について。

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
> ってことで、そこだけ仕様変更したbuild08をアップしました。(^^)

FEINT / FFM / SYSMNG での動作は大丈夫そうです。(^^)

> プログラムのエディタでfnメモリーに記憶する場合、プログラム全体がまるごと入ってしまうようですが、そういう仕様なのでしょうか?(^^;

STORE ではそのようになりますね。

> 第二のクリップボードとして利用できそうな機能なので、
> クリップボードの内容を記憶するようにした方がよさそうな気がするのですがどうでしょうか?(^^)

その場合、具体的にはどのような仕様になるでしょうか?


ところで、"SysCall()" コマンドについてですが、引数 1 - 4 が R4 - R7 に対応しているのはマニュアルに記載があります。

引数 5 - 12 は R8 - R15 に対応しているという認識でよいでしょうか?
また、OS の挙動から実行開始時にシステムコール番号を R0 に格納し、終了時に戻り値が R0 に入るのだろうと認識していますが、これは合っていますか?

"Call()" 関数もぼちぼち試してみたいのですが、実行開始時にアドレスはどのレジスタに格納され、終了時に戻り値はどのレジスタに入るでしょうか?

"ProgPtr()" 関数ですが、マニュアルにあるような使い方だとエラーが出ます。
このコマンドの仕様はどうなっているでしょうか?

fn機能について。

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

管理人様、
いつも素早い対応していただきまして感謝です。(^^)


ところで、UCFでリクエストありましたところの、fn機能に関することなのですが、
プログラムのエディタでfnメモリーに記憶する場合、プログラム全体がまるごと入ってしまうようですが、そういう仕様なのでしょうか?(^^;

第二のクリップボードとして利用できそうな機能なので、
クリップボードの内容を記憶するようにした方がよさそうな気がするのですがどうでしょうか?(^^)

Re: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その8

sentaro様、iron2様、Colon様、CalcLoverHK様、C.Basicユーザーの皆様、

アップデート対応しました。

C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その8

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

Colon様、
>弊害が無ければ OK だと思います。

了解しました!
ってことで、そこだけ仕様変更したbuild08をアップしました。(^^)

build07は従来仕様=C.Basicのステータス表示モードがONの場合に更新。(OSのフラグは無関係)
build08はC.Basicのステータス表示がONでOSの表示モードがOFFの場合にだけ更新。
という仕様になります。


>CHAR 画面出入り、連続入力のちらつき共に修正確認しました。(^^)

ありがとうございます!
これでとりあえず、ステータスエリア関連は一安心できますね。(^^)


C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その8
https://pm.matrix.jp/CB/CBASICCG145beta08.zip
(build08)
・OS側のステータス表示フラグがONの場合はステータスエリアの書き換えをしないように変更しました。

Re^3: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その7

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
> 仕様変更で従来アプリに弊害が無ければ変更してもというところですが、どうでしょうか?(^^)

弊害が無ければ OK だと思います。

> ってことで、アップし直してます。m(_ _)m

CHAR 画面出入り、連続入力のちらつき共に修正確認しました。(^^)

Re:Re: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その7

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

Colon様、
>おっ、それは良かったです。(^^)
>GetKey でのステータスエリア転送に少し癖があるのがミソですね。

仕様変更で従来アプリに弊害が無ければ変更してもというところですが、どうでしょうか?(^^)


>> C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その7
>G3A ファイルが build 06 のままになっております。(^^;
>確認お願いします。

うわ、ファイルアップしたところが間違えてました!(^^;

ってことで、アップし直してます。m(_ _)m


>興味深い資料をありがとうございます。(^^)

今回、ソースを見てもらった方が原因究明には早いというのが分かりましたので、
そのままg3aで確認できた方が何かと便利かもしれませんね。(^^)

Re: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その7

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
> ステータス非表示モードからの?コマンド(=一行入力)の開始時にアルファ表示ができない問題が解消されました。(^^)

おっ、それは良かったです。(^^)
GetKey でのステータスエリア転送に少し癖があるのがミソですね。

> 最初の2文字は大文字の"CB"でないとコマンドとして認識されません。(^^;
> その後の文字は大文字でも小文字でも可というところですね。

ありがとうございます!

> C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その7

G3A ファイルが build 06 のままになっております。(^^;

確認お願いします。

> もし、ビルドまで試したい場合にはこちらのビルドパックをお使いください。

興味深い資料をありがとうございます。(^^)

C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その7

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

Colon様、
>コマンド終了時にステータスエリア表示を戻すという観点で言うと、
>無効で入った場合は無効、C.Basic 有効で入った場合は C.Basic で有効でコマンド終了しますが、
>OS 有効で入った場合に無効で出てしまう = 戻せないので中途半端な仕様ということにはなってしまうと思います。(^^;

あらためてC.BasiでのステータスエリアのOSフラグの無効/有効を考えてみると、基本的にOSフラグは常に無効な状態で走ってたわけです。
有効になるのはステータス表示が必要な?コマンドかGetKey1/2のときだけですね。
で、
プログラム実行時はステータス表示が有効でもOS側のフラグは常に無効になっているので、
?コマンドを出る場合も無効にして出るという感じになってました。


>変わるとはいえ、元々 OS 有効でコマンドに入った場合のみ処理が変わるので、あまり影響はないと思います。

あ、よく考えたら、そうでした!
OS有効/無効を維持する方向での仕様変更でステータス表示に影響が出そうなアプリがあるかと考えれば、
Colon様のアプリしか無いですので、ここは変えても特に問題無さそうですね!(^^)


>ちょっとややこしいですが、SysCall(0x2B7, 1) の返り値は、
>・ 無効 = 0
>・ 有効 = 1

>ですので、SysCall(0x2B7, 0) / SysCall(0x2B7, 2) / SysCall(0x2B7, 3) とは異なる値になります。

>WikiPrizm や Simon の文書にはここまでの記載はありませんでしたね。(^^;

うわ……
すみません!!
設定時の値がそのまま返っているとばかり…思いっきり間違えてました!(^^;


>上の処理ってなんでしょうか?

そこは、返り値を逆に考えた間違いなので、すべて取り消しです。(^^;


>私も最初はここの仕様で苦戦しました。(^^;

Colon様でも苦戦されてたんですね。(^^;
じゃ、私が混乱してたのも当然といえば当然の結果ですね。(^^;


>タイミング的にも PutDispDD は全く関係ありません。
>ちょっと実験してみます。

詳細な実験プログラムをありがとうございます!(^^)
表示の条件が分かったことが大きな収穫です。
ステータス非表示モードからの?コマンド(=一行入力)の開始時にアルファ表示ができない問題が解消されました。(^^)


>すみません、これまたそこではなくて、(^^;
>例えば '#CBDBL ではデフォルトに戻る、'#cbdbl ではデフォルトに戻らない、大文字小文字混在では戻ったり戻らなかったりするという動作をしているので、その基準が知りたいです。

最初の2文字は大文字の"CB"でないとコマンドとして認識されません。(^^;
その後の文字は大文字でも小文字でも可というところですね。


>ソースコードを読んでみましたが、多分誤動作の原因が分かりました。
>というわけで、引数の順番が違うのが誤動作の原因ではないでしょうか?

おおおおお!
ビンゴです!大当たりです!!!
なんとまぁ、初歩的なポカというかなんというかお恥ずかしい限りです。(^^;


ってことで、修正版のアップデートです。(^^)

C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その7
https://pm.matrix.jp/CB/CBASICCG145beta07.zip
(build07)
・エミュレータで隠しメモリが使えるようになりました。


もし、ビルドまで試したい場合にはこちらのビルドパックをお使いください。
https://pm.matrix.jp/CB/fxCG_miniSDK_1_09_for_C.BasicCG.zip
今回のbuild07がビルドできる状態の完パケです。(^^)

CHAR 画面 誤動作の原因判明?

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
ソースコードを読んでみましたが、多分誤動作の原因が分かりました。

CHAR 画面からの復帰時にメッセージが元に戻らないことについて、ぱっと見では問題点が見当たりません。
フラグは戻せていますから、可能性が高いのは SysCall 0x2B9 が実行できていないということです。
そして、SysCall 0x2B9 には "SysCalljmp" 関数が使われています。

ソースコード内を "SysCalljmp" で検索をかけてみたところ、3952 行目に

SysCalljmp( 4,5,6,7,0x17E6); // CAPTURE

という記述がありました。キャプチャを撮る操作は正常に動作します。

また、"CG_SysCall.asm" には

;int SysCalljmp( int r4, int r5, int r6, int r7, int No);

という記述があります。

これらは SysCalljmp( 引数 1, 引数 2, 引数 3, 引数 4, システムコール番号) という文法ですが、
"CBP_inp.cpp" の 653 行目、660 行目、1153 行目、3474 行目、3510 行目では、SysCalljmp( システムコール番号, 引数 1, 引数 2, 引数 3, 引数 4) という順番になっています。

というわけで、引数の順番が違うのが誤動作の原因ではないでしょうか?

システムエラーにならなかったのは、最後の引数を 0 にしていたからかな、と思います。(^^;


確認よろしくお願いします。

Re^11: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その6復活版

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
> 1.44までの仕様ではOS側の表示モードは常に無効になってます。(^^;

コマンド終了時にステータスエリア表示を戻すという観点で言うと、
無効で入った場合は無効、C.Basic 有効で入った場合は C.Basic で有効でコマンド終了しますが、
OS 有効で入った場合に無効で出てしまう = 戻せないので中途半端な仕様ということにはなってしまうと思います。(^^;

> ?コマンドでこの処理を付け加えると、仕様が変わってしまうということですよね?

変わるとはいえ、元々 OS 有効でコマンドに入った場合のみ処理が変わるので、あまり影響はないと思います。

> ここは入る前に無効=3ならばC.Basicは無効でOS側を有効=0にして出るということで合ってるでしょうか?

いいえ、入る前に OS 有効 = 1 ならば C.Basic 無効、OS 有効 = 0 にして出るということです。

ちょっとややこしいですが、SysCall(0x2B7, 1) の返り値は、
・ 無効 = 0
・ 有効 = 1

ですので、SysCall(0x2B7, 0) / SysCall(0x2B7, 2) / SysCall(0x2B7, 3) とは異なる値になります。

WikiPrizm や Simon の文書にはここまでの記載はありませんでしたね。(^^;


> 上の処理がなんかおかしい気がするのですが?

上の処理ってなんでしょうか?

ともかく、連続入力時はカーソルがちらっと表示されれば良いだけなので、ステータスエリアはほっとけば良いような気はするんですが、そう上手くはいかないんでしょうか? (^^;


> CBP_inp.cppの
> 652行目からがCHAR選択での入る前処理、
> 1152行目からが出る処理です。

> で、一行入力は、3447行目から始まりますが、従来仕様に戻してるので前処理はありません。
> 3575で〈ステータスエリアに重ならない部分で ? コマンドが実行された場合)にステータスイネーブルになってます。
> 出るときは、4110行からです。

ありがとうございます!! (^^)
後程じっくり読んでみます。


> あ、やっぱりそうなんですね。(^^;
> ありがとうございます!
> 表示の仕組みがやっと分かりかけました。(^^)

私も最初はここの仕様で苦戦しました。(^^;


> ステータスエリアは16色表示なので、VRAM内容とは無関係に表示されているわけですよね。

後述するように、ステータスエリアが VRAM に転送される場合もあるようなので、これまた難しいです。

> EnableStatusArea と DisplayStatusAreaでステータス有効にして、
> PutDispDDのタイミングでVRAMとは別に転送されるという解釈でよろしいでしょうか?

タイミング的にも PutDispDD は全く関係ありません。

ちょっと実験してみます。

========================================
'#CBINT
Screen.T
{216, 384}→Dim Dim Mat T.W(System(2))
_ClrVram
_DispVram

Locate 1, 1, "DISABLE"

Do
SysCall(0x0EAB, &K%) // GetKey
LpWhile K≠0x7534 // [EXE]

SysCall(0x2B7, 0) // EnableStatusArea
SysCall(0x1D81) // DisplayStatusArea

Locate 1, 1, "ENABLE□"

SysCall(0x0EAB, &K%) // GetKey 2 回目
'SysCall(0x0EAB, &K%) // GetKey 3 回目
'SysCall(0x1D81) // DisplayStatusArea 2 回目

Do
PutDispDD
LpWhile 1
========================================

2 回目の GetKey で [SHIFT] を押してみてください。

PutDispDD で転送されると仮定すれば、無限ループ時に [S] のアイコンが表示されるはずですが、実際は表示されていません。

また、VRAM の内容を確認するために Mat T を見ても、[S] が転送されていないのが分かります。

これは、PutDispDD を _DispVram に置き換えても同様です。


では、DisplayStatusArea 2 回目 のコメントアウトを解除して同じことをしてみます。

すると、[S] が表示されます。
Mat T を確認しても [S] が表示されているのが分かります。


次に、GetKey 3 回目 をコメント解除、DisplayStatusArea 2 回目 をコメント化します。
GetKey 2 回目 で [SHIFT]、3 回目で [ALPHA] を押してみましょう。

すると、画面には [S] が表示され、VRAM にも [S] が転送されているのが分かります。


最後に、GetKey 3 回目 をコメント解除、DisplayStatusArea 2 回目 もコメント解除します。
GetKey 2 回目 で [SHIFT]、3 回目で [ALPHA] を押してみます。
すると、画面・VRAM ともにアルファロックアイコンが表示されるのが分かります。


これらの結果からまとめると、次のようになります。
・ PutDispDD はステータスエリアの表示タイミングに関係ない
・ DisplayStatusArea は、ステータスエリアを "即" LCD と VRAM に転送する
・ GetKey はステータスエリアを LCD と VRAM に転送するが、そのタイミングは次の GetKey 実行時である

[訂正 16:44] PutDispDD をコメント化して確かめるのを忘れていました。正しくは
・ DisplayStatusArea は、ステータスエリアを "即" VRAM に転送する

です。失礼しました。

> それはC.Basicのステータス表示モードによって戻る戻らないが決定されます。
> _DispVram実行後の全画面モード=ステータス非表示であればステータスは変更されない仕様です。(^^)

すみません、これまたそこではなくて、(^^;
例えば '#CBDBL ではデフォルトに戻る、'#cbdbl ではデフォルトに戻らない、大文字小文字混在では戻ったり戻らなかったりするという動作をしているので、その基準が知りたいです。

Re^10: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その6復活版

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

Colon様、
>? コマンドに入る前に OS 側で有効にしていた場合、コマンド終了後にステータスエリアが無効になってしまっているようです。

1.44までの仕様ではOS側の表示モードは常に無効になってます。(^^;


>コマンドに入る際は以下の処理が必要だと以前お伝えしましたが、出る際の処理を忘れていました。(^^;

?コマンドでこの処理を付け加えると、仕様が変わってしまうということですよね?


>? コマンド終了時に次の処理が必要になります。
>If a% : Then
>_DispVram
>SysCall(0x02B7, 0)

ここは入る前に無効=3ならばC.Basicは無効でOS側を有効=0にして出るということで合ってるでしょうか?


>まだチラチラしていますので、別の原因があるかと思います。

上の処理がなんかおかしい気がするのですが?


>取り敢えず、"?" コマンドと CHAR 画面、ステータスエリアに関する部分がソースのどのファイルに入っているか教えていただけませんか?
>電卓上だけで調べるのは無理がありそうなので、ソースを直接確認したいです。(^^;

すみません!
最初からソースで検討した方が早かったですね。(^^;

CBP_inp.cppの
652行目からがCHAR選択での入る前処理、
1152行目からが出る処理です。

で、一行入力は、3447行目から始まりますが、従来仕様に戻してるので前処理はありません。
3575で〈ステータスエリアに重ならない部分で ? コマンドが実行された場合)にステータスイネーブルになってます。
出るときは、4110行からです。


>OS の動作としては、原則として PutDispDD は関係ありません。

あ、やっぱりそうなんですね。(^^;


>以下、サンプルプログラムです。
>非表示から表示に切り替える際に EnableStatusArea と DisplayStatusArea を実行すれば、その後は GetKey の度に自動で更新されます。

ありがとうございます!
表示の仕組みがやっと分かりかけました。(^^)

ステータスエリアは16色表示なので、VRAM内容とは無関係に表示されているわけですよね。

>SysCall(0x2B7, 0) // EnableStatusArea
>SysCall(0x1D81) // DisplayStatusArea

EnableStatusArea と DisplayStatusAreaでステータス有効にして、
PutDispDDのタイミングでVRAMとは別に転送されるという解釈でよろしいでしょうか?


>連動していないのってそのせいでしたか。(^^;

はい、なぜか最初からOSののステータス非表示がデフォルトになっていたようです。(他人事モード(^^;
で、表示させるときだけ有効にするだけだったので、
この前にそれを連動させたらColon様アプリで動作がおかしくなったので元に戻した次第です。(^^;


>あ、そこではなくて、デフォルトに戻る場合と戻らない場合の判定方法です。(^^;

それはC.Basicのステータス表示モードによって戻る戻らないが決定されます。
_DispVram実行後の全画面モード=ステータス非表示であればステータスは変更されない仕様です。(^^)

Re^9: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その6復活版

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
> 従来よりステータス表示モードの場合はデフォルトのステータス表示に戻ることになっています。
> ステータス非表示モードでは何もしない仕様です。
> ので、ここを完全に抜くと以前と仕様が変わってしまいます。(^^;

すみません、別の不具合を勘違いしていました。

? コマンドに入る前に OS 側で有効にしていた場合、コマンド終了後にステータスエリアが無効になってしまっているようです。

コマンドに入る際は以下の処理が必要だと以前お伝えしましたが、出る際の処理を忘れていました。(^^;

========================================
SysCall(0x02B7, 1)→a%
System(−8)→b%

If a%=0 And b%=0 And 〈ステータスエリアに重ならない部分で ? コマンドが実行された場合〉: Then

PutDispDD

IfEnd
========================================

? コマンド終了時に次の処理が必要になります。

========================================
If a% : Then
_DispVram
SysCall(0x02B7, 0)

ElseIf b% : Then
PutDispDD

Else
_DispVram
SysCall(0x02B7, 3)

IfEnd
========================================

追加よろしくお願いします。


> ステータス表示を戻すためにPutDispDDを入れてました。
> このせいでまた連続入力モードのチラチラが復活してますね。(^^;
> とりあえず、CHAR選択の出口のPutDispDDを外した版です。(^^)

まだチラチラしていますので、別の原因があるかと思います。

> で、これを外すと、今度はステータス表示が元に戻らないようなので、さて?どうしたものかというところです。(^^;
> これはメッセージが完全に復帰していないからということでしょうか?(^^;

私が確認する限り不具合の発生箇所は変わっていません。

取り敢えず、"?" コマンドと CHAR 画面、ステータスエリアに関する部分がソースのどのファイルに入っているか教えていただけませんか?
電卓上だけで調べるのは無理がありそうなので、ソースを直接確認したいです。(^^;

> 0x1D81で表示オン
> ステータスエリアをPutDispDDすれば表示される。

> と認識してますが、これって合ってますか?

OS の動作としては、原則として PutDispDD は関係ありません。

以下、サンプルプログラムです。

========================================
_ClrVram
_DispVram

Locate 1, 1, "DISABLE"

Do
SysCall(0x0EAB, &K%) // GetKey
LpWhile K≠0x7534 // [EXE]

SysCall(0x2B7, 0) // EnableStatusArea
SysCall(0x1D81) // DisplayStatusArea

Locate 1, 1, "ENABLE□"

Do
SysCall(0x0EAB, &K%) // GetKey
LpWhile K≠0x7534 // [EXE]

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

非表示から表示に切り替える際に EnableStatusArea と DisplayStatusArea を実行すれば、その後は GetKey の度に自動で更新されます。


> C.Basicではステータスエリアの書き換えのあとは、
> 0x02B7を3にしてディスエーブル状態になっています。

連動していないのってそのせいでしたか。(^^;


> 判定は
> '#CB
> に続く文字が、
> "B","b","D",d"ならば実数モード
> "I","i"ならば整数モード
> "C","c"ならCPLXモードとなっています。(^^)

あ、そこではなくて、デフォルトに戻る場合と戻らない場合の判定方法です。(^^;


以上、よろしくお願いします。

Re^8: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その6復活版

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

管理人様、
>差替えアップデート、対応しました。

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



Colon様、
>Getkey1/2 の度にステータスエリアが C.Basic デフォルトになるので、
>そこの処理を抜いていただくようお願いします。

従来よりステータス表示モードの場合はデフォルトのステータス表示に戻ることになっています。
ステータス非表示モードでは何もしない仕様です。
ので、ここを完全に抜くと以前と仕様が変わってしまいます。(^^;


>フラグの復帰は正常です。

>しかし、ステータスメッセージ関係が戻せていないようです。
>一応メッセージ内容復帰ルーチンは正しく動くようなので、復帰時に私のルーチン以外の箇所で DefineStatusMassage を実行していませんか?
>もしそうでしたら抜いてください。

CHAR選択でのコードは入口も出口も全く同様にしたつもりなのですが、
ステータス表示を戻すためにPutDispDDを入れてました。
このせいでまた連続入力モードのチラチラが復活してますね。(^^;

で、これを外すと、今度はステータス表示が元に戻らないようなので、さて?どうしたものかというところです。(^^;
これはメッセージが完全に復帰していないからということでしょうか?(^^;


ところで、
ステータス表示されてない状態から表示するための段取りは、

0x1D81で表示オン
ステータスエリアをPutDispDDすれば表示される。

と認識してますが、これって合ってますか?


で、ステータスエリアの書き換えはこうなっています。

0x02B7でステータスイネーブルにして、
0x02B8でフラグを設定して、
0x1D77で文字列転送
0x1D7Bでグリフ転送
0x1D81で表示オン //これは要らないかも?
ステータスエリアをPutDispDDすれば表示される。


C.Basicではステータスエリアの書き換えのあとは、
0x02B7を3にしてディスエーブル状態になっています。


元々はCHAR画面に入ったあとで表示が戻らないことを修正するためだったはずが、なかなか一筋縄ではいきませんね。(^^;



>この通りに入力しても動作しませんが、タイポではないでしょうか? (^^;
>冒頭に ' が付くのが正しいという認識でよいですか?

はい、
これは、C.Basicの動作モードを変更するコマンドと同じです。(^^)

判定は
'#CB
に続く文字が、
"A","a","D",d"ならば実数モード
"I","i"ならば整数モード
"C","c"ならCPLXモードとなっています。(^^)
それ以上はあってもなくてもコマンド判定に関係ありません。(^^;


ってことで、
とりあえず、CHAR選択の出口のPutDispDDを外した版です。(^^)

C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その6復活再修正版
https://pm.matrix.jp/CB/CBASICCG145beta06b.zip

Re^7: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その6復活版

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
Getkey1/2 の度にステータスエリアが C.Basic デフォルトになるので、
そこの処理を抜いていただくようお願いします。

> Colon様のCHAR画面の出入りルーチンをやっとこ組み込みました。(と思います)(^^)

フラグの復帰は正常です。

しかし、ステータスメッセージ関係が戻せていないようです。
一応メッセージ内容復帰ルーチンは正しく動くようなので、復帰時に私のルーチン以外の箇所で DefineStatusMassage を実行していませんか?
もしそうでしたら抜いてください。

※ 先日ルーチンを載せた際に、"While" に対して "WhileEnd" とすべきところが "LpWhile" となっていました。失礼しました。m(_ _)m


ところで、連続入力モードでのチラチラが再発しています。(^^;


> それ以外は同じ仕様ですが、デフォルトのステータス表示にする機能が必要かもということで、追加してみました。(^^)

助かります! (^^)

> #CBASIC
> #CBDBL
> #CBINT
> #CBCPLX

この通りに入力しても動作しませんが、タイポではないでしょうか? (^^;
冒頭に ' が付くのが正しいという認識でよいですか?

また、' を付けた上で、これ以外の大文字小文字混在時にも C.Basic デフォルトに戻るときがあります。
判定はどのようになっているでしょう?

Re^6: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その6復活版

sentaro様、iron2様、Colon様、CalcLoverHK様、C.Basicユーザーの皆様、

差替えアップデート、対応しました。

Re^5: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その6復活版

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

お待たせです。
Colon様のCHAR画面の出入りルーチンをやっとこ組み込みました。(と思います)(^^)

それ以外は同じ仕様ですが、デフォルトのステータス表示にする機能が必要かもということで、追加してみました。(^^)

C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その6復活再修正版
https://pm.matrix.jp/CB/CBASICCG145beta06.zip
(build06)
・以下のコマンドでステータス表示が更新されるようにしました。
#CBASIC
#CBDBL
#CBINT
#CBCPLX

Re^4: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その6復活版

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

Colon様、
>FEINT で、"Showing current font" の後、{LOAD} に入って、CHAR 画面を出入りすると分かりますが、CHAR 画面の前後で表示内容が変わっています。

>CHAR 画面から出る際に、C.Basic デフォルトに戻す動作が入っていませんか?
>もしくは、私が出した復帰ルーチンを入れる箇所が誤っていませんか?

はい、C.Basic デフォルトに戻す動作が入ってました。(^^;
ってことで、Colon様のアプリでの書き換えへの対応が全然出来てませんでした。(^^;

そもそもCHAR画面はステータスエリアを書き換えていたんですよね。(^^;
元に戻すにはCHAR画面に入る前にステータスエリア情報を全部取得した上で、出る時に復帰しないと駄目だったんですね。
ということで、
しばしお待ち下さい。(^^;

Re^3: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その6復活版

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
> CHAR選択から戻すために一行入力でC.Basicデフォルトにしてました。(^^;
> ということで、そのまま表示するように戻しました。(^^)

FEINT で、"Showing current font" の後、{LOAD} に入って、CHAR 画面を出入りすると分かりますが、CHAR 画面の前後で表示内容が変わっています。

CHAR 画面から出る際に、C.Basic デフォルトに戻す動作が入っていませんか?
もしくは、私が出した復帰ルーチンを入れる箇所が誤っていませんか?

確認お願いします。


> 行ったり来たり状態ですね。(^^;
> あ゛…判定ミスでした。
> ってことで、修正版です。(^^)

修正確認しました。(^^)

Re:Re: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その6復活版

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

Colon様、
>今回のバージョンの動作が正しい、ということにすれば良いと思います。(^^)

了解です。(^^)


>"Power Properties" で動作確認しましたが、ちゃんと入力前後でステータスエリアの表示状態が戻っていますね。(^^)
>ところで、"?" コマンドに入る度にステータスエリアのフラグを建て直していますか?

んと、入力時にOSとC.Basicのステータスフラグを一時保存しておいて、出る時に状態を復帰する感じですね。
復帰といっても、一行入力ではステータス表示するのがデフォですから、
ステータスエリアが非表示だった場合にだけ元の非表示にOSもC.Basicも両方戻すというところです。
最初から表示状態だった場合は表示フラグはそのままで、ステータスラインの内容は戻りません。(^^;


>"Power Properties" の入力時、v1.44 以前では私がカスタマイズしたステータスラインの内容でしたが、今回のバージョンでは C.Basic のデフォルトになっているようです。
>見た目的には従来の方が良いと思います。

CHAR選択から戻すために一行入力でC.Basicデフォルトにしてました。(^^;
ということで、そのまま表示するように戻しました。(^^)


>それから、CHAR 画面の連続入力時にステータスラインが変になるので、そこを直していただければと思います。

行ったり来たり状態ですね。(^^;


>FEINT / FFM では大丈夫そうです。
>SYSMNG は次の理由により動作確認できていません。
>これですが、System(−7) の戻り値が従来の逆になってしまっています。
>従って、"Display Settings" の動作確認ができていません。(^^;

あ゛…判定ミスでした。
ってことで、修正版です。(^^)

C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その6復活再修正版
https://pm.matrix.jp/CB/CBASICCG145beta06.zip
(build06)
・一行入力時のステータスエリアの表示を改善しました。
・エミュレータの判定方法をハードウェアID判定に変更しました。(0x8001FFD)

Re: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その6復活版

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
> 了解です!
> ってことで、とりあえず元仕様に戻しました。(^^;

確認しました。


> 今回のアップデートでアルファモードが表示するようになったんですが、これはひょっとしてエンバグでしょうか?(^^;

あ、見落としておりました。(^^;
私が出した以下のルーチンで、元々ステータスエリア表示が無い場合に "PutDispDD" を挟むようにしたためですね。

となると、この部分に関して FEINT の修正は必要なくなります。

今回のバージョンの動作が正しい、ということにすれば良いと思います。(^^)

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

SysCall(0x02B7, 1)→a%
System(−8)→b%

If a%=0 And b%=0 And 〈ステータスエリアに重ならない部分で ? コマンドが実行された場合〉: Then

PutDispDD

IfEnd

// それ以外の場合はいじらない

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

> 一行入力時に入り口と出口で元のステータス表示状態に戻るようにしてみました。

"Power Properties" で動作確認しましたが、ちゃんと入力前後でステータスエリアの表示状態が戻っていますね。(^^)

ところで、"?" コマンドに入る度にステータスエリアのフラグを建て直していますか?

"Power Properties" の入力時、v1.44 以前では私がカスタマイズしたステータスラインの内容でしたが、今回のバージョンでは C.Basic のデフォルトになっているようです。

見た目的には従来の方が良いと思います。

それから、CHAR 画面の連続入力時にステータスラインが変になるので、そこを直していただければと思います。

> FEINT/FFM/SYSMNGでの動作チェックでは上手くいったような気配ですが、どうでしょうか?(^^;

FEINT / FFM では大丈夫そうです。
SYSMNG は次の理由により動作確認できていません。

> ・エミュレータの判定方法をハードウェアID判定に変更しました。(0x8001FFD)

これですが、System(−7) の戻り値が従来の逆になってしまっています。
従って、"Display Settings" の動作確認ができていません。(^^;

C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その6復活版

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

Colon様、
>"Showing current font" でステータスラインが出なくなります。

不具合出まくりですね。(^^;

>私としてはどっちでもいいです。
>ただ、楽なのは従来通りかと。(^^;

了解です!
ってことで、とりあえず元仕様に戻しました。(^^;


>あ、それは FEINT 側の仕様です。(^^;
>? コマンドの CHAR 画面の不具合があったので、「『表示する』にしない」という動作にしていました。
>※ 「表示しない」ではありません。

今回のアップデートでアルファモードが表示するようになったんですが、これはひょっとしてエンバグでしょうか?(^^;


>すみません、ちょっと質問の意図がわかりませんでしたが、(^^;
>完璧に合わせるように修正をかける、というのでしたら FEINT / FFM / SYSMNG のソースは変更必須です。

アプリ側の修正で従来のC.Basicで動作がおかしくなってしまうようなことがなければいいのですが、その影響は必至ですし、
今回のC.Basic側の修正だけで従来アプリも含めて全部が動作Okになれば、ということだったんですが、
どちらにしてもアプリ側での修正が必要となれば、従来からの動作互換性を保ったままで、より少ない修正で済ますのが吉ですね。(^^)

という観点からBulild06は一致させることはせずに、
一行入力時に入り口と出口で元のステータス表示状態に戻るようにしてみました。

FEINT/FFM/SYSMNGでの動作チェックでは上手くいったような気配ですが、どうでしょうか?(^^;



管理人様、
>そこで、UTF-8 を UTF-8(BOM付き)に変換してアップロードしました。
>できれば、UTF-8(BOM付き) にして頂けると助かります。ANSIでも問題ありません。
>ご検討頂けませんか?

了解です!
BOM付きにして同梱し直しました。(^^)


>C.basic for FX に、次のファイルが同梱されています;
>Command_List_CG.txt
>これは、何か意図があるのでしょうか?

同梱ミスでした。(^^;


>さて、C.Basic 最新版と旧版ダウンロードのページに "マニュアル" / "Instruction" の項目を追加して、このページからも同梱テキストファイルを参照できるようにリンクを追加しました。
ありがとうございます!(^^)



C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その6復活版
https://pm.matrix.jp/CB/CBASICCG145beta06.zip
(build06)
・一行入力時のステータスエリアの表示を改善しました。
・エミュレータの判定方法をハードウェアID判定に変更しました。(0x8001FFD)


C.Basic for FX v2.45β (さらに使いやすく色々と変更していってみる版)その6
https://pm.matrix.jp/CB/CBASIC245beta06.zip
(build06)
・エミュレータの判定方法をハードウェアID判定に変更しました。(0x8000FFD)

同梱のテキストファイルについて

sentaro様、Colon様、iron2様、CalcLoverHK様、CGユーザーの皆様、

管理人のやすです。

ところで、同梱されているテキストファイルですが、殆どが ANSI は UTF-8 (BOM付き) ですが、最新の Manual_J.txt が UFT-8 になっているのに気がつきました。

というのは、このエントリーでは、コマンドリファレンスとして、ManuL_J.txt にリンクして表示するようにしていますが、UTF-8 だと文字化けしてしまう仕様のようなのです。UFT-8(BOM付き)かANSIなら文字化けしないようです。

そこで、UTF-8 を UTF-8(BOM付き)に変換してアップロードしました。
できれば、UTF-8(BOM付き) にして頂けると助かります。ANSIでも問題ありません。

ご検討頂けませんか?


C.basic for FX に、次のファイルが同梱されています;

Command_List_CG.txt

これは、何か意図があるのでしょうか?


さて、C.Basic 最新版と旧版ダウンロードのページに "マニュアル" / "Instruction" の項目を追加して、このページからも同梱テキストファイルを参照できるようにリンクを追加しました。

本エントリーでは既にテキストファイルへのリンクを掲載していますが、英語版テキストファイルへのリンクはしていません。

そこで、海外からのアクセスを考慮して、Get Latest Version のページからマニュアルを参照できるようにしたわけです。

https://egadget2.web.fc2.com/CBasic/archives/programs/CBasicCG/Versions/CBasicCG_versions_JP.html

https://egadget2.web.fc2.com/CBasic/archives/programs/CBasicCG/Versions/CBasicCG_versions.html

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

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




Re^3: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その6

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
> FEINTでチェックしたときは上手く行ったと思ったんですが、

"Showing current font" でステータスラインが出なくなります。

> 表示状態は一致させた方がいいかなと思ったんですが、
> 一致させようとすると従来のアプリで不具合が出るとなると、
> 従来どおりの別々でも特に不都合はなさそうでしょうか?(^^;

私としてはどっちでもいいです。
ただ、楽なのは従来通りかと。(^^;

> 前の合わせない仕様だと、FEINTでアルファモード表示がされない不具合が残ってたんですよね。

あ、それは FEINT 側の仕様です。(^^;
? コマンドの CHAR 画面の不具合があったので、「『表示する』にしない」という動作にしていました。
※ 「表示しない」ではありません。

CHAR 画面からの復帰を直して貰ってかつステータスエリアの仕様が固まってから修正をかけようと思っていました。
というわけで、従来の仕様でも ? コマンドの直前に "PutDispDD" を割り込ませれば直ります。

> 今度はFFM/SYSMNGでステータスエリアが表示されなくなります。(^^;

私がソース内で毎回 "_DispVram" を入れているのが原因です。

従来の仕様だと "_DispVram" を実行しても OS 側のステータスエリアの表示有無に影響はなかったので、今回の変更で不具合が出たという感じです。

> これは、現在の合わせる仕様を修正していくことで、プログラム変更なしで不具合なく動作させることが可能でしょうか?

すみません、ちょっと質問の意図がわかりませんでしたが、(^^;

完璧に合わせるように修正をかける、というのでしたら FEINT / FFM / SYSMNG のソースは変更必須です。

別々に戻す、ということであれば FFM / SYSMNG のソースは変更不要、FEINT は修正により正常動作するようになります。

C.Basic と OS で別々に動いているな、というのは以前から気づいていたので、"_DispVram" を割り込ませて OS 側で制御できるようにしていました。
言い換えれば別々に動く前提で作ったアプリなので、OS と C.Basic で同期させるとなると正常動作しなくなるわけです。

私としては直せばいいだけですが、各ユーザーに再インストールを強いることにはなりますね。(^^;

Re:Re: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その6

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

Colon様、
>一致しておりません。(^^;

あ゛…まだまだ甘かったようです。(^^;


>FEINT / FFM / SYSMNG の動作が色々とおかしくなってしまったようですが、

FEINTでチェックしたときは上手く行ったと思ったんですが、
FFMとSYSMNGがステータスエリアが思いっきり消えちゃってますね。(^^;


>ステータスエリア表示状態が一致しているかどうかで私の対応が変わってくるので、まずそこの確認をお願いします。
>それから、私の出したルーチンも OS と C.Basic で別々の設定になっている前提だったので、一致させるなら一致させるで再検討ということになります。(^^;

表示状態は一致させた方がいいかなと思ったんですが、
一致させようとすると従来のアプリで不具合が出るとなると、
従来どおりの別々でも特に不都合はなさそうでしょうか?(^^;

前の合わせない仕様だと、FEINTでアルファモード表示がされない不具合が残ってたんですよね。
で、合わせる仕様にするとすれば、それは解消できても、
今度はFFM/SYSMNGでステータスエリアが表示されなくなります。(^^;

これは、現在の合わせる仕様を修正していくことで、プログラム変更なしで不具合なく動作させることが可能でしょうか?

Re: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その6

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
> OSとC.Basicでのステータスエリア表示情報を一致させるようにした上で、

一致しておりません。(^^;

> まだ不十分かもしれないので、チェックの方、よろしくお願いします。(^^)

FEINT / FFM / SYSMNG の動作が色々とおかしくなってしまったようですが、
ステータスエリア表示状態が一致しているかどうかで私の対応が変わってくるので、まずそこの確認をお願いします。

それから、私の出したルーチンも OS と C.Basic で別々の設定になっている前提だったので、一致させるなら一致させるで再検討ということになります。(^^;

C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その6

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

管理人様、
連日の更新対応ありがとうございます!(^^)
またまた今日も更新です。(^^;


Colon様、
OSとC.Basicでのステータスエリア表示情報を一致させるようにした上で、
一行入力前の処理をColon様の仰せの通り修正したところ、
非表示からの入力でも、とりあえず上手くいったようなのですが、
まだ不十分かもしれないので、チェックの方、よろしくお願いします。(^^)


C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その6
https://pm.matrix.jp/CB/CBASICCG145beta06.zip
(build06)
・一行入力時のステータスエリアの表示を改善しました。
・OSとC.Basic内のステータスエリア表示情報を一致させました。



@CalcLoverHK
Fixed the bug that does not work with the emulator.(^^)
https://pm.matrix.jp/ftune2e.html

Re^4: CHAR 画面からの復帰方法

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
> 一行入力に入った時点でステータスエリアをイネーブルにしてますのでステータス表示するのが前提です。(^^;

あ、それだと OS 側のステータスエリアが有効だったときに、? コマンドに入った段階でステータスエリアの状態が変わってしまいます。(^^;

? コマンドに入る段階で次の処理を追加できますか?

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

SysCall(0x02B7, 1)→a%
System(−8)→b%

If a%=0 And b%=0 And 〈ステータスエリアに重ならない部分で ? コマンドが実行された場合〉: Then

PutDispDD

IfEnd

// それ以外の場合はいじらない

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

OS 側と C.Basic 側を切り替えたときにステータスエリアのフラグなどが変わっているっぽいのですが、こうすれば切り替えが必要ないはずです。

これで上手くいかなければまた改善します。

Re^3:CHAR 画面からの復帰方法

sentaro様、iron2様、Colon様、CalcLoverHK様、C.Basicユーザーの皆様、

管理人のやすです。

C.Basic for CG Ver 1.45 build 05 のアップデート対応、昨晩行っております。

仕事で、夜中のフィールド実験があったため、余裕がなくて対応だけしました。

Re:Disable Ftune/Ptune completely in some emulators?

@CalcLoverHK

The old FX emulator is SH3. They work with Ftune.
The CG10/20/50 and 35+EII is SH4A. They work with Ptune2/Ftune2.

The old FX emulator cannot work voltage display.
This is the cause of the system error.
It is not an error in SH4 emulator.

I'll fix them.(^^)

Re:CHAR 画面からの復帰方法

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

Colon様、
>修正確認しました。

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


>現状次のような動作になっているようです。

>まず、"PutDispDD" を実行すると C.Basic 側では有効になり、OS 側では無効固定となります。

>また、"SysCall(0x2B7, 0)" を実行すると OS 側では有効になり、C.Basic 側では無効固定になります。

全然合ってませんね。(^^;


>CHAR 画面が絡んでくるので私の方で事前に動作確認しきれていませんが、(^^;
>C.Basic のコードでサンプルが出来ました。

おお!ありがとうございます!!


>流れとしては、

>1. ? コマンドに入る (ステータスエリアは弄らない)

一行入力に入った時点でステータスエリアをイネーブルにしてますのでステータス表示するのが前提です。(^^;
(ただし、ステータスエリアに重なる部分でで?コマンドが実行された場合は非表示です。)

>2. {CHAR} が押されたら現在のステータスエリアの状態を取得する。
>3. CHAR 画面に入る
>4. CHAR 画面から出る際、2. で得た情報をもとに復帰する。
>5. ? コマンドを出る

CHAR画面の対応はそれで良さそうですね。
試してみます!(^^)

Disable Ftune/Ptune completely in some emulators?

Hi sentaro21

Well as we tested, overclocking doesn't have effects on most emulators except CG10/20 one, thus making the Ftune/Ptune useless on these emulators. More importantly, when I installed Ftune with fx-9860GII emulator, it gave me "System ERROR Interrupt" message, which is not a good thing at all as somewhere may be changed and even may affect the emulators (I guess). Could you tell the new users about this and/or disable the overclocking feature on these emulators to prevent misoperations?

Messages in manuals:
Note: Ftune/Ptune will not work in most emulators except CG10/20 emulator. To prevent misoperations, Ftune/Ptune is disabled in these emulators. Please consider using Ftune/Ptune in actual models.

Messages in add-in:
"Emulator detected."
"Please use actual"
"models."

Cheers
CalcLoverHK

CHAR 画面からの復帰方法

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、

CHAR 画面が絡んでくるので私の方で事前に動作確認しきれていませんが、(^^;
C.Basic のコードでサンプルが出来ました。

流れとしては、

1. ? コマンドに入る (ステータスエリアは弄らない)
2. {CHAR} が押されたら現在のステータスエリアの状態を取得する。
3. CHAR 画面に入る
4. CHAR 画面から出る際、2. で得た情報をもとに復帰する。
5. ? コマンドを出る

ということになります。

変数は以下の通りですので、名前をつけるなり領域を解放するなりは適宜お願いします。

// A% …… OS でステータスラインが有効か
// B% …… C.Basic でステータスラインが有効か
// C% …… ステータスエリアのアイコンに関するフラグ
// D% …… ステータスメッセージの開始アドレス
// E% …… ステータスメッセージのバイト数
// List 53[0] …… ステータスエリアの背景色 1
// List 53[1] …… ステータスエリアの背景色 2
// List 54 …… ステータスメッセージに関する情報
// List 55 …… メッセージのアドレス範囲の参照
// Str 1 …… メッセージ内容のコピー

========================================
〈CHAR 画面に入る直前〉

SysCall(0x02B7, 1)→A%
System(−8)→B%

2→Dim List 53.B0
12→Dim List 54.B0

SysCall(0x02B8, 2, 0, &List 53[0], &List 53[1])→C%
SysCall(0x02B9, 1, 0, &List 54)→D%

0→E%
While Peek(D%+E%).B
E%+1→E%
LpWhile

E%+1→Dim Dim List 55.B1(D%)
$List 55→Str 1

ClrList 55

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

〈CHAR 画面〉

========================================
〈CHAR 画面から復帰する〉

SysCall(0x02B8, 3, C%, &List 53[0], &List 53[1])
SysCall(0x02B9, 2, &Str 1, &List 54)

If A% : Then
_DispVram
SysCall(0x02B7, 0)

ElseIf B% : Then
PutDispDD

Else
_DispVram
SysCall(0x02B7, 3)

IfEnd

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

Re: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その5修正版

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
> ・CG10/20でエディタのサーチ画面で[SHIFT]+[4](CATALOG)が使えなかった不具合を修正しました。(1.44build14でのエンバグです。)

修正確認しました。


> C.Basic内では表示/非表示の管理は出来てますが、OS側と上手く連動していないっぽいのでこれがよくわからなかったりします。(^^;
> とりあえず、現在のC.Basic内でのステータスエリア表示フラグをSystem(-8)で取得できるようにしてみました。(^^)

ありがとうございます。
これで常に表示状態を監視できるようになりましたね。

プログラム内でいじるのは私ぐらいでしょうし、実害が無ければこのままでもまぁ大丈夫かとは思います。(^^;


現状次のような動作になっているようです。

まず、"PutDispDD" を実行すると C.Basic 側では有効になり、OS 側では無効固定となります。

また、"SysCall(0x2B7, 0)" を実行すると OS 側では有効になり、C.Basic 側では無効固定になります。


表示状態を変更するには、次のようにします。

有効 (SysCall(0x2B7, 1) = 0 かつ System(-8) = 1) から無効に切り替える場合、"_DispVram" を実行します。

有効 (SysCall(0x2B7, 1) = 1 かつ System(-8) = 0) から無効に切り替える場合、"SysCall(0x2B7, 3)" を実行します。

無効から有効に切り替える場合、"SysCall(0x2B7, 0)" または "PutDispDD" を実行します。


これに基づいて CHAR 画面からの復帰方法を検討してみます。

C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その5修正版

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

Colon様、
>ビットマップ形式で保存されている場所は無いと思います。

ですよね。(^^;


>表示・非表示は _DispVram や PutDispDD に依存していると思うのですが、これらから有効かどうか判定できませんか?

C.Basic内では表示/非表示の管理は出来てますが、OS側と上手く連動していないっぽいのでこれがよくわからなかったりします。(^^;
とりあえず、現在のC.Basic内でのステータスエリア表示フラグをSystem(-8)で取得できるようにしてみました。(^^)


>連続入力モードでステータスエリアの表示が上手くいかなくなっています。

あ゛…修正ミスが残ってました。(^^;


>また、もともとステータスエリアが非表示だった場合にアルファ表示を更新できないなど上手く動作しないようなので、別の方法をとる必要があると思います。

ステータスエリアの表示/非表示はVRAM管理外でのことなので一筋縄ではいかなそうなので、難題ですね。(^^;


>ところで、検索画面でカタログ機能が使えなくなっています。
"@" が入力できるように修正した時とかのエンバグでしょうか?

>確認お願いします。

今までのバージョンを調べたら1.44build14でエンバグしてたようです。(^^;
デフォルトの編集サイズをちょこっといじくったのですが、なんでかCG20だけカタログが使えなくなってました。
CG50では使えてたので空きメモリが関連してたっぽいですね。(^^;

ってことで、そこのあたり修正版です。

C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その5修正版
https://pm.matrix.jp/CB/CBASICCG145beta05.zip
(build05)
・CHAR選択画面から戻る時にステータスエリアの表示が戻らない不具合を修正しました。
・CG10/20でエディタのサーチ画面で[SHIFT]+[4](CATALOG)が使えなかった不具合を修正しました。(1.44build14でのエンバグです。)

Re: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その5

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
> はい、それが出来れば簡単なので、
> ステータスラインのビットマップ情報がどこかに保存されてないかと調べてみたのですがいまいち不明でした。

ビットマップ形式で保存されている場所は無いと思います。

> おお!と思って、0x2B7を試してみましたが、こちらでも上手く行かないようです。(^^;

表示・非表示は _DispVram や PutDispDD に依存していると思うのですが、これらから有効かどうか判定できませんか?

> いろいろ試した結果、ステータスエリアをイネーブルにしたあとに、
> PutDispDDでステータスエリア部分を転送すると表示が更新されるみたいなので、アップデートしてみました。(^^)

連続入力モードでステータスエリアの表示が上手くいかなくなっています。

また、もともとステータスエリアが非表示だった場合にアルファ表示を更新できないなど上手く動作しないようなので、別の方法をとる必要があると思います。


ところで、検索画面でカタログ機能が使えなくなっています。
"@" が入力できるように修正した時とかのエンバグでしょうか?

確認お願いします。

C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その5

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

Colon様、
>それです。
>どうやら "?→Str 1" だけのプログラムを実行してもこうなるようですね。
>私がプログラム内でステータスエリアをいじっていることもややこしくしている一因ではあるでしょうが、(^^;

あ、いえ、
CHAR画面で書き換えして元に戻ってないのが原因なので、これはC.Basic側の問題といえます。(^^;


>要するに、CHAR 画面に入る直前のステータスエリアの状態を取得しておいて、CHAR 画面から出るときにそのまま復帰すれば良いわけですよね。

はい、それが出来れば簡単なので、
ステータスラインのビットマップ情報がどこかに保存されてないかと調べてみたのですがいまいち不明でした。
VRAM上にはステータスラインの描画データがないので、VRAMからの転送だけでは復帰ができないということになりますよね。(^^;


>先程の投稿内容のうち、以下について SysCall で取得する方法がわかりました。
>・ 表示内容のフラグ
>・ ステータスエリアの背景色
>・ メッセージの内容
>・ メッセージの表示位置
>・ メッセージの表示色

>「ステータスエリア表示の有無」については、一応 "SysCall(0x02B7, 1)" でわかるはずなのですが、ちょっと上手くいかないようです。

おお!と思って、0x2B7を試してみましたが、こちらでも上手く行かないようです。(^^;

いろいろ試した結果、ステータスエリアをイネーブルにしたあとに、
PutDispDDでステータスエリア部分を転送すると表示が更新されるみたいなので、アップデートしてみました。(^^)


C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その5
https://pm.matrix.jp/CB/CBASICCG145beta05.zip
(build05)
・CHAR選択画面から戻る時にステータスエリアの表示が戻らない不具合を修正しました。

Re:Ptune2 best setting

@CalcLoverHK
>Can you show your procedure to let me reach your setting? (^^;

https://pm.matrix.jp/upload/upload.cgi?get=00093
Please increase the maximam frequency in setup.(^^)

Ptune2 best setting

Hi sentaro21

Currently I can only reach two settings that matches sort of your best setting, but neither of them is perfect.

https://i.ibb.co/x630kYK/Ptune2-setting1.jpg
If FLL is x20, then PLL will be stucked on x1678.

https://i.ibb.co/QnYHcnp/Ptune2-setting2.jpg
If FLL is x16, then PLL can be reached to x2047, but FLL will not be able to reach x20..

Setting 1 is the best setting I can reach according to the benchmark.

Can you show your procedure to let me reach your setting? (^^;

Cheers
CalcLoverHK

Re^8: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その4

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
先程の投稿内容のうち、以下について SysCall で取得する方法がわかりました。

・ 表示内容のフラグ
・ ステータスエリアの背景色
・ メッセージの内容
・ メッセージの表示位置
・ メッセージの表示色

「ステータスエリア表示の有無」については、一応 "SysCall(0x02B7, 1)" でわかるはずなのですが、ちょっと上手くいかないようです。
「ステータスエリア表示の有無」について C.Basic 側で把握できていますか?

Re^7: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その4

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
> CHAR 画面ではHELP表示のためにステータスラインを書き換えているので、それがそのまま残ってる状況ですよね?

それです。
どうやら "?→Str 1" だけのプログラムを実行してもこうなるようですね。

> エディタと同様に再度表示するようにすれば良さそうですが、
> この前のアルファモードのアルファロックの表示のときもあれこれと試行錯誤したのですが、
> ステータスラインの挙動がはっきり掴めていないので、
> ここはまた要調査ということになりそうです。(^^;

私がプログラム内でステータスエリアをいじっていることもややこしくしている一因ではあるでしょうが、(^^;
要するに、CHAR 画面に入る直前のステータスエリアの状態を取得しておいて、CHAR 画面から出るときにそのまま復帰すれば良いわけですよね。

具体的には、
・ ステータスエリア表示の有無
・ 表示内容のフラグ
・ ステータスエリアの背景色
・ メッセージの内容
・ メッセージの表示位置
・ メッセージの表示色

あたりが分かれば良さそうです。

これらの情報を SysCall で取得する方法はないか調べてみます。

Re^6: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その4

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

管理人様、
>ColConv ver 1.1 と、C.Basic for CG Ver 1.45 build 04 のアップデートタイプしました。

いつもありがとうございます!(^^)


Colon様、
>両方とも修正確認しました。

ありがとうございます!
一安心ですね。(^^)


>まず、フォントファイルの保存後にステータスラインが消えない不具合については、
>メインループの Getkey1 の直前に "_DispVram" を割り込ませることで解消できました。

>次に、保存画面やカレントフォント参照画面から出た後に {SET} / {LOAD} に入るとステータスラインが表示されないことについては、"?" コマンドの直前に "PutdispDD" を割り込ま>せることで解消できるようです。

>ただ、"PutdispDD" があると ("?" コマンドの方の) CHAR 画面 に入る前と出た後でステータスエリアの表示内容が変わってしまうようです。
>これについて何か対策はありますか?

CHAR 画面ではHELP表示のためにステータスラインを書き換えているので、それがそのまま残ってる状況ですよね?

前回のステータスエリアの表示/非表示の切り替えの補足ですが、
デフォルトでは表示モードで、ステータスラインの-1~-24ライン分を転送すると非表示モードになるのですが、
"PutdispDD"は引数なしでは0~191ラインの転送、
"_DispVram"は引数無しで-24~191ラインの全転送となっています。
で、一度非表示モードになってしまった後に再び表示モードに戻すには
0~191ラインの範囲での"PutdispDD"を実行するというのが仕様となっています。
ということで、"PutdispDD"を実行することでステータスラインがまた表示されるようになる仕様です。(^^)

で、CHAR 画面の前後でのステータスラインの違いですが、
エディタからCHAR 画面に出入りしてもステータスラインは戻るので、
エディタと同様に再度表示するようにすれば良さそうですが、
この前のアルファモードのアルファロックの表示のときもあれこれと試行錯誤したのですが、
ステータスラインの挙動がはっきり掴めていないので、
ここはまた要調査ということになりそうです。(^^;

Re^5: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その4

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

管理人様、
> ColConv ver 1.1 と、C.Basic for CG Ver 1.45 build 04 のアップデートタイプしました。

対応ありがとうございます。(^^)


sentaro様、
FEINT のステータスエリアの件です。

まず、フォントファイルの保存後にステータスラインが消えない不具合については、
メインループの Getkey1 の直前に "_DispVram" を割り込ませることで解消できました。

次に、保存画面やカレントフォント参照画面から出た後に {SET} / {LOAD} に入るとステータスラインが表示されないことについては、"?" コマンドの直前に "PutdispDD" を割り込ませることで解消できるようです。

ただ、"PutdispDD" があると ("?" コマンドの方の) CHAR 画面 に入る前と出た後でステータスエリアの表示内容が変わってしまうようです。

これについて何か対策はありますか?

Re: Re^3: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その4

Colon様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

お疲れ様です。

ColConv ver 1.1 と、C.Basic for CG Ver 1.45 build 04 のアップデートタイプしました。

Re^3: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その4

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
> あ゛…何かの勘違いでバグってました。(^^;
> ってことで、修正版再アップです。(^^;

両方とも修正確認しました。

> ステータスエリアの表示はGetkey1/2のキー待ちで再表示されるようになっています。
> ただし、ステータス領域へのVRAM転送を一度でもするとそれは無くなります。
> 画面転送で-1から-24ラインの転送をしない限りはステータスエリア表示は続くはずです。(^^)

ありがとうございます。(^^)
上手い具合に試してみます。

Re:Re:C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その4

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

Colon様、
>今回のアップデートを受け、ColorConv もバージョンアップです。(^^)
>HSV/HSL で対応できない 4 色について、RGB/HEX/DEC を赤で表示するように変更しました。

赤表示は分かりやすくていいですね。(^^)


>GetHSL(" でエラーポップアップが出ないようです。

あ゛…何かの勘違いでバグってました。(^^;


>C.Basic で現在ステータスエリアの表示・非表示はどのような動作になっているでしょうか?

ステータスエリアの表示はGetkey1/2のキー待ちで再表示されるようになっています。
ただし、ステータス領域へのVRAM転送を一度でもするとそれは無くなります。
画面転送で-1から-24ラインの転送をしない限りはステータスエリア表示は続くはずです。(^^)


>また、g1m モードで Text コマンドを使用時、外部フォントを表示できません。
>確認お願いします。

確認できました!
ありがとうございます!
ってことで、修正版再アップです。(^^;


C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その4修正再アップです。
https://pm.matrix.jp/CB/CBASICCG145beta04.zip

Re: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その4

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

今回のアップデートを受け、ColorConv もバージョンアップです。(^^)
HSV/HSL で対応できない 4 色について、RGB/HEX/DEC を赤で表示するように変更しました。

ColorConv v1.10
https://pm.matrix.jp/upload/upload.cgi?get=00092


sentaro様、
> Colon様のGetHSV()/GetHSL()コマンドでのエラーポップアップ導入と、カラーピッカーでの色反転を修正しました。(^^)

"GetHSL(" でエラーポップアップが出ないようです。


ところで、気分転換に FEINT をいじっていたらバグが 5 つほど見つかったのでバージョンアップの準備をしているのですが、ステータスエリアに関する調整も行う予定です。

C.Basic で現在ステータスエリアの表示・非表示はどのような動作になっているでしょうか?

また、g1m モードで Text コマンドを使用時、外部フォントを表示できません。
確認お願いします。

C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その4

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

お待たせしました!
Colon様のGetHSV()/GetHSL()コマンドでのエラーポップアップ導入と、カラーピッカーでの色反転を修正しました。(^^)
この色反転ですが、分かってしまえば簡単なことなのですが、原因に気づくのにしばし時間がかかってしまいました。(^^;

C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その4
https://pm.matrix.jp/CB/CBASICCG145beta04.zip
(build04)
・GetHSV()/GetHSL()コマンドで変換できない色をエラーにするようにしました。
(書式) GetHSV(16ビットカラー値[,N])
(書式) GetHSL(16ビットカラー値[,N])
 Nオプションでエラーを無視します。
・HSV()/HSL()での色飽和での反転を修正しました。


(21:05 再アップです)
GetHSV()/GetHSL()コマンドのエラーポップアップを[OK]で解除したときに2度押す必要があったので修正再アップしてます。(^^;

ちなみにエラーコードは以下のとおりで個別になってますが、まとめた方が良いでしょうか?
CanNotSupport_003F_ERR 73
CanNotSupport_041F_ERR 74
CanNotSupport_F820_ERR 75
CanNotSupport_FC00_ERR 76

Re^7: HSV(, HSL( のエラー処理の提案

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

管理人様、Colon様、
レスがごっちゃになってしまってすみません!(^^;

>内部動作をよく知らないユーザーのためには、デフォルトで出るようにしたほうが優しいと思います。
>そもそも内部計算を変更しているので、その一貫としての変更、ということにすれば良いのではないでしょうか。

>なので、提案を180度変えて、デフォルトでエラーメッセージを出し、オプションでエラーを出さないという仕様が良いと思います。

了解しました!
"GetHSV()" / "GetHSL()"が必要なプログラムは色にこだわったプログラムだと思われますので、
その精度を担保する観点から、デフォルトでエラーを出すようにしてみます。(^^)


>ちなみに、ColConv では Try 文を使って HSV/HSL で対応していない色を指定した際に例外処理を入れようと考えています。

既存のエラーコードを使うか、
新規にエラーコードを増設するかですが、どうしましょ?(^^)

とか思っていたら、Colon様から!

>エラーメッセージですが、こんなのはどうでしょうか?
https://pm.matrix.jp/upload/upload.cgi?get=00091

この場合、エラーポップアップは"GetHSV()" / "GetHSL()"専用という形になりますね。
ってことで、了解しました。
その方向でアップデートしてみます。(^^)

で、
カラーピッカーの動作ですが、
キー操作のリピート時に数値の移動が速くなるようになっていました。
そして、16ビットカラー値が変更される単位での移動になっていましたので、
下の方だとかなり大きな移動になっていました。
これも、
Colon様推奨の固定値での移動に変えてみます。(^^)

Re^6: HSV(, HSL( のエラー処理の提案

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

エラーメッセージですが、こんなのはどうでしょうか?
https://pm.matrix.jp/upload/upload.cgi?get=00091

Re^5: HSV(, HSL( のエラー処理の提案

Colon様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、

管理人のやすです。

Colon様、
5分違いで、Colon様のコメントを知らずに、コメントアップしてしまいました。

で、前回の私のコメント
"なので、圧倒的多くの使い方(と思われる)では、エラーは不要ではないでしょうか?
デフォルトでは今のまま、オプション設定でエラーを出すというのが良いと思われます。"

は撤回します。

GetHSV( や GetSHL( をどの程度使われるのか?
改めて考えると、これらを使うのは、かなり意図的に細かい値を取得したいというケースが多いと思います。

そもそも CGシリーズのカラー液晶は、視角が少し変わるだけで色の見え方が大きく変わるような代物ですから、HSV や HSL の精度の高い値を取得するのは、特殊でしょう。

なので、提案を180度変えて、デフォルトでエラーメッセージを出し、オプションでエラーを出さないという仕様が良いと思います。

そして、この内部動作についての説明をマニュアルに追記して頂きたいと思います。


Re: Re:Re: HSV(, HSL( のエラー処理の提案

sentaro様、iron2様、Colon様、CalcLoverHK様、C.Basicユーザーの皆様、

管理人のやすです。


エラーメッセージの出し方ですが、ColConv で RGB, HSV, HSL を行ったり来たりといった特殊なことをやらない限りは、24ビットカラー前提ではカラーコードが1ずれる、16ビットカラーでもせいぜい7ずれるだけですから、Colon様が言われるように、見た目の違いは殆ど分からないと思います。

なので、圧倒的多くの使い方(と思われる)では、エラーは不要ではないでしょうか?
デフォルトでは今のまま、オプション設定でエラーを出すというのが良いと思われます。

如何でしょうか?

Re^3: HSV(, HSL( のエラー処理の提案

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、

> ふと思ったんですが、デフォルトではエラーを出すということですよね?
> もしくはデフォルトではエラーにならず、エラーを出す新たなオプション追加の方が良いでしょうか?
> 従来の仕様ではエラーが出ないので、どっちが良いかというところです。

内部動作をよく知らないユーザーのためには、デフォルトで出るようにしたほうが優しいと思います。

そもそも内部計算を変更しているので、その一貫としての変更、ということにすれば良いのではないでしょうか。


ちなみに、ColConv では Try 文を使って HSV/HSL で対応していない色を指定した際に例外処理を入れようと考えています。

Re:Re: HSV(, HSL( のエラー処理の提案

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

その3差し替えのタイトルがNo titleになってしまってました。(^^;

管理人様、いつも素早いアップデート対応に感謝です。(^^)

>ところで、カラーピッカーの HSV / HSL の [F5] / [F6] の動作についてですが、現在は値の変化量の規則性がよく分かりません。
>そこで、取りうる値を順に移動するように変更してはどうでしょうか?

んと、これはカラー値が変わらない数値をすっ飛ばして変化させるようになっています。
で、今チェックすると何やら変な感じになってますね。(^^;


管理人様、Colon様、

>HSV( 、HSL( で 上記4つのカラーコードを使おうとしたところで、使えないカラーコードと共にエラーメッセージを出すというのは、どうでしょうか?
>例えば、

>"Cannot support #0x003F. Use RGB( "

>といった感じです。

>サポートできない色があるというのは実際に計算しないと分からないことなので、
>エラーメッセージを出すのは親切で良いですね。

エラーメッセージを出すというのは思いつきませんでした。(^^;


>HSV や HSL を使う場合というのは厳密な RGB 値ではなく見え方が重要というケースが多いと思うので、コマンドにエラーメッセージ禁止オプションも実装していただけるとありがたいです。

"GetHSV(" / "GetHSL(" だけにエラーを出さないオプションを付加すれば良さそうですね。(^^)

ふと思ったんですが、デフォルトではエラーを出すということですよね?
もしくはデフォルトではエラーにならず、エラーを出す新たなオプション追加の方が良いでしょうか?
従来の仕様ではエラーが出ないので、どっちが良いかというところです。

例えば、引数の後に、",E"を追加して、
GetHSV(H,S,V [,E])
GetHSL(H,S,L [,E])
みたいな感じです。


>日本語版の修正が出来たら、英語版はお手伝いします。

助かります。よろしくお願いします。(^^)

Re: HSV(, HSL( のエラー処理の提案

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

管理人様、sentaro様、
> HSV( 、HSL( で 上記4つのカラーコードを使おうとしたところで、使えないカラーコードと共にエラーメッセージを出すというのは、どうでしょうか?

サポートできない色があるというのは実際に計算しないと分からないことなので、
エラーメッセージを出すのは親切で良いですね。

これら 4 色は相当する HSV と HSL カラーが無いので、実際にエラーメッセージの実装が必要なのは "HSV(" / "HSL(" ではなく "GetHSV(" / "GetHSL(" ということになりましょうか。

内部動作としては、"GetHSV(" / "GetHSL(" にこれらの色を指定すると、近い別の色に変わるようになっています (変更前後の色を肉眼で区別できる人はほぼいないでしょう)。
具体的には、S や V/L が同じで H の差が 1 未満の別の色に変わります。

というわけで、

> "Cannot support #0x003F. Use RGB( "

「HSV (HSL) ではこの色をサポートできません、続けると別の色 (#0xXXXX) に変わります。続けますか?」という内容になれば良いかと思います。

HSV や HSL を使う場合というのは厳密な RGB 値ではなく見え方が重要というケースが多いと思うので、コマンドにエラーメッセージ禁止オプションも実装していただけるとありがたいです。

HSV 値や HSL 値を使って内部演算を行う場合などは、バグ回避の意味でエラーメッセージが効いてくると思います。(^^)

HSV(, HSL( のエラー処理の提案

sentaro、iron2様、Colon様、CalcLoverHK様、C.Basicユーザーの皆様、

「追記あり]

管理人のやすです。

Colon様、
素晴らしいサポート、ありがとうございます。
おかげで、ColConvの妙な動作も解消したようです。


sentaro様、
ManualCG_J.txt に記載の下記について、
> (※HSVとHSLで指定できない色)
> 以下の4色はHSV,HSLで指定できないのでRGBを使ってください。
> #0x003F: RGB( 0, 4, 248)
> #0x041F: RGB( 0, 128, 248)
> #0xF820: RGB(248, 4, 0)
> #0xFC00: RGB(248, 128, 0)

HSV( 、HSL( で 上記4つのカラーコードを使おうとしたところで、使えないカラーコードと共にエラーメッセージを出すというのは、どうでしょうか?
例えば、

"Cannot support #0x003F. Use RGB( "

といった感じです。

それから、このエラーを見てた後の対応については、マニュアルに エラー発生時の対処として、RGB(#0x003F) とする旨追記するとユーザーに優しいマニュアルにあると思います。

如何でしょうか?

日本語版の修正が出来たら、英語版はお手伝いします。


なお、アップデート対応しました。

Re: No title

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
> ってことで、修正差し替えしました。(^^)

"TestHSV" / "TestHSL" にて修正確認しました。

"ColConv" での異常動作も直ったようです。

ところで、カラーピッカーの HSV / HSL の [F5] / [F6] の動作についてですが、現在は値の変化量の規則性がよく分かりません。

そこで、取りうる値を順に移動するように変更してはどうでしょうか?

HSV は 0, 4, 8, 12, ……, 248, 252 、
HSL は 0, 2, 4, 6, 8, ……, 248, 250 です。

No title

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

Colon様、
>C.Basic によるサンプルです。(^^)
>これを C に移植していただければ大丈夫です。
https://pm.matrix.jp/upload/upload.cgi?get=00090

>"TestHSV.g3m" / "TestHSL.g3m" はコマンドでの変換が上手くいかない色をカウントするプログラムです。

ありがとうございます!!
テストプログラムまで完備でとっても助かります!(^^)


>4 色だけなので、マニュアルに「次に示す色は使えない」と色指定で書けば良いですね。(^^)

了解しました。(^^)


>ソースを見ると RGB にするときに概数を戻す処理を取ってくださっているのがわかりましたが、
>その処理が半分の色に対して無効だったようです。(^^;
>RGB → HSV/HSL が切り捨て処理なので、戻すときは四捨五入ではなく切り上げ処理が必要になります。

微妙に中途半端になっていたのですね。(^^;

ってことで、修正差し替えしました。(^^)


C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その3差し替えです。
https://pm.matrix.jp/CB/CBASICCG145beta03.zip
(build03)
・Colon様のサポートによりRGB→HSV/HSLのカラーコード変換の誤差を修正しました。

色空間変換アルゴリズム

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
> よろしくお願いします。(^^)

C.Basic によるサンプルです。(^^)
これを C に移植していただければ大丈夫です。
https://pm.matrix.jp/upload/upload.cgi?get=00090

"TestHSV.g3m" / "TestHSL.g3m" はコマンドでの変換が上手くいかない色をカウントするプログラムです。

1 行目にはチェック済みの色の数が表示されます。
また、3, 4 行目に変換が上手く出来た色とそうでない色をカウントします。

⭕ 65532
❌ 4

となるのが目標です。

"RGB-HSV.g3m" / "RGB-HSL.g3m" には改善後のアルゴリズムが入っています。

変換が上手くいかない色については一時停止して内容を表示します。
4 色で止まるのが確認できます。

"Lbl _rgb2hsv" / "Lbl _hsv2rgb" / "Lbl _rgb2hsl" / "Lbl _hsl2rgb" が変換部分です。


> うわ…思いっきり勘違いしちゃいました。(^^;
> その4色が直ればOKじゃなくて、直らないのが正解なのですね…(^^;

4 色だけなので、マニュアルに「次に示す色は使えない」と色指定で書けば良いですね。(^^)


> ほとんど半分間違えていたってことですか?(^^;

ソースを見ると RGB にするときに概数を戻す処理を取ってくださっているのがわかりましたが、
その処理が半分の色に対して無効だったようです。(^^;

RGB → HSV/HSL が切り捨て処理なので、戻すときは四捨五入ではなく切り上げ処理が必要になります。

Re: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その3

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

Colon様、
>それであれば、もうアルゴリズムは出来上がっているので、OK であればもうアップロードします。(^^)

よろしくお願いします。(^^)


>すみません、私の書き方が良くなかったですね。(^^;
>その 4 色は、最終的に正しく変換できてはいけないということです。
>つまり、変換が上手くいかないのが正しい動作です。

うわ…思いっきり勘違いしちゃいました。(^^;
その4色が直ればOKじゃなくて、直らないのが正解なのですね…(^^;


>現在 (build 02 時点) 変換が上手くいっていないのは、HSV が33,288 色、HSL が 36,354 色です。

ほとんど半分間違えていたってことですか?(^^;


>C.Basic と変換方法が違いますので、違う値になるのが正しいです。(^^;
>それから、その修正を行っても別の色の変換が上手く行かなくなるはずです。

4色のみ、元のRGBに戻るように239とかに1ずらした値にしてみたので、それ4色以外は元のままです。(^^;


>また、変換方法がどうあろうが、65536 色の内 4 色は正しく動作しないという計算になります。
>他のカラーピッカーでも変換できない色がありますが、これは 240/(MAX - MIN) が MAX - MIN > 240 の場合に 1 未満の値を取るためで、 HSV/HSL 色空間の特性です。

色指定の方法の違うと、なかなかに奥が深いですね。(^^;

Re: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その3

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
> はい、変換計算そのものは8ビット精度(Hは0~359まで)ですが、結果はRGB565の16ビットカラーで返すので、そうなっています。(^^)
> 精度が同じならば切り捨てが簡単になりますね。(^^)

それであれば、もうアルゴリズムは出来上がっているので、OK であればもうアップロードします。(^^)

> これは、HSVでは数値の精度をもっとあげないとRGBの8ビット精度に対応できないということですよね。

HSV / HSL は整数値で表すため、これ以上精度を上げると別の色の変換が上手くいかなくなります。

> HSVとHSLで元に戻らないのが上の4種類だけということなので、そこのところを対策してみました。(^^)

すみません、私の書き方が良くなかったですね。(^^;
その 4 色は、最終的に正しく変換できてはいけないということです。
つまり、変換が上手くいかないのが正しい動作です。

現在 (build 02 時点) 変換が上手くいっていないのは、HSV が33,288 色、HSL が 36,354 色です。

すなわち、現状 → 目標としては、
・ HSV: 33,288 色 → 4 色
・ HSL: 36,354 色 → 4 色

となります。

> "カラーピッカー" で検索したところでの結果に補正してみたのですが、とりあえず上手くいったようでしょうか?(^^)

C.Basic と変換方法が違いますので、違う値になるのが正しいです。(^^;
それから、その修正を行っても別の色の変換が上手く行かなくなるはずです。

また、変換方法がどうあろうが、65536 色の内 4 色は正しく動作しないという計算になります。
他のカラーピッカーでも変換できない色がありますが、これは 240/(MAX - MIN) が MAX - MIN > 240 の場合に 1 未満の値を取るためで、 HSV/HSL 色空間の特性です。

C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その3

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

Colon様、
HSV&HSL精度調査、おつかれさまです!
そしてありがとうございます!(^^)

>また、私としては、変換の度に 16 ビットカラー値に丸めるのが望ましいと考えます。
>イメージとしては、

>・ RGB (入力値) → RGB (16 ビット) → HSV/HSL (16 ビット)
>・ HSV/HSL (入力値) → RGB (16 ビット)
>・ HSV/HSL (入力値) → RGB (16 ビット) → HSL/HSV (16 ビット)

>という感じです。
>現在もこうなっているという認識でよいですか?

はい、変換計算そのものは8ビット精度(Hは0~359まで)ですが、結果はRGB565の16ビットカラーで返すので、そうなっています。(^^)


>ところで、現在は HSV/HSL の値は切り捨てになっているようですが、
>アルゴリズム製作時に切り捨てのままか四捨五入に変更かどちらに致しましょう?

精度が同じならば切り捨てが簡単になりますね。(^^)


>例として、Google で "カラーピッカー" と検索し、次の操作を行ってみてください。

>1. RGB に "255, 0, 0" と指定。このとき、HSV が "0°, 100%, 100%" となっているのを確認。
>2. RGB に "255, 1, 0" と指定。このとき、HSV が "0°, 100%, 100%" となっているのを確認。
>3. HSV にカーソルを合わせて編集モードにし、何も入力せずに決定。すると、RGB が "255, 0, 0" に戻る。

>"ColConv" でこれと同様の動作になることが最終目標になると思います。

>整数での実装とし、マニュアルには「RGB と HSV の値は 1 対 1 で対応しないので、色を確実に指定する必要がある場合は RGB か 16 ビットカラー値を使うこと」という趣旨の記述をすればよいかと思います。
>文面は後程要検討です。

これは、HSVでは数値の精度をもっとあげないとRGBの8ビット精度に対応できないということですよね。


>おっ、私が見ている所と同じです。(^^)

同じで良かったです。(^^)


>実際に全 65536 色ついて調べた結果、RGB → HSV → RGB で異なる値になってしまうのは次の 4 色だとわかりました。

>・ #0x003F: RGB(0, 4, 248)
>・ #0x041F: RGB(0, 128, 248)
>・ #0xF820: RGB(248, 4, 0)
>・ #0xFC00: RGB(248, 128, 0)

>これ以外の色は問題ありません。

>言い換えれば、上記 4 色以外の精度の問題は解決できます。

>RGB → HSL → RGB で異なる値になってしまうのは次の 4 色です。
>HSV のときと全く同じ色ですね。

>・ #0x003F: RGB(0, 4, 248)
>・ #0x041F: RGB(0, 128, 248)
>・ #0xF820: RGB(248, 4, 0)
>・ #0xFC00: RGB(248, 128, 0)

>その他の色は問題ありませんので、上記以外の色は精度の問題が解消できます。

>従って、
>・ HSV や HSL では 65532 色が使用できる
>・ 使用できる色は RGB 値と 1 対 1 で対応する

>というのが目標とする仕様になるかと思います。


RGB(__0,__4,248)→ HSV(240,255,248) → RGB(__0,__0,248)
RGB(__0,128,248)→ HSV(210,255,248) → RGB(__0,124,248)
RGB(248,__4,__0)→ HSV(__0,255,248) → RGB(248,__0,__0)
RGB(248,128,__0)→ HSV(_30,255,248) → RGB(248,124,__0)

RGB(__0,__4,248)→ HSL(240,255,124) → RGB(__0,__0,248)
RGB(__0,128,248)→ HSL(210,255,124) → RGB(__0,124,248)
RGB(248,__4,__0)→ HSL(__0,255,124) → RGB(248,__0,__0)
RGB(248,128,__0)→ HSL(_30,255,124) → RGB(248,124,__0)

HSVとHSLで元に戻らないのが上の4種類だけということなので、そこのところを対策してみました。(^^)

"カラーピッカー" で検索したところでの結果に補正してみたのですが、とりあえず上手くいったようでしょうか?(^^)

RGB(__0,__4,248)→ HSV(239,255,248) → RGB(__0,__4,248)
RGB(__0,128,248)→ HSV(209,255,248) → RGB(__0,128,248)
RGB(248,__4,__0)→ HSV(__1,255,248) → RGB(248,__4,__0)
RGB(248,128,__0)→ HSV(_31,255,248) → RGB(248,128,__0)

RGB(__0,__4,248)→ HSL(239,255,124) → RGB(__0,__4,248)
RGB(__0,128,248)→ HSL(209,255,124) → RGB(__0,128,248)
RGB(248,__4,__0)→ HSL(__1,255,124) → RGB(248,__4,__0)
RGB(248,128,__0)→ HSL(_31,255,124) → RGB(248,128,__0)


C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その3
https://pm.matrix.jp/CB/CBASICCG145beta03.zip
(build03)
・RGB→HSV/HSLのカラーコード変換の誤差を修正しました。
・ラベルの検索時にコメントでの'#に続くオプションの設定が変更されてしまう不具合を修正しました。

C.Basic for FX v2.45β (さらに使いやすく色々と変更していってみる版)その3
https://pm.matrix.jp/CB/CBASIC245beta03.zip
(build03)
・ラベルの検索時にコメントでの'#に続くオプションの設定が変更されてしまう不具合を修正しました。

HSL 精度調査結果

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
HSL の調査も完了しました。

HSV の時よりも式が複雑なので、いきなり全 65536 色についての計算を行いました。

RGB → HSL → RGB で異なる値になってしまうのは次の 4 色です。
HSV のときと全く同じ色ですね。

・ #0x003F: RGB(0, 4, 248)
・ #0x041F: RGB(0, 128, 248)
・ #0xF820: RGB(248, 4, 0)
・ #0xFC00: RGB(248, 128, 0)

その他の色は問題ありませんので、上記以外の色は精度の問題が解消できます。

従って、
・ HSV や HSL では 65532 色が使用できる
・ 使用できる色は RGB 値と 1 対 1 で対応する

というのが目標とする仕様になるかと思います。

HSV 精度調査結果

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、

>> 変換のたびに、
>> R:5ビット
>> G:6ビット
>> B:5ビット
>> の16ビットカラーに丸めてしまうのが大きな原因かと思いますが、どうなんでしょう?(^^;

> 精査していないので今のところでは明言を避けますが、
> RGB↔️カラー値 はすでに全単射のはずなので、HSV↔️RGB と HSL↔️RGB の精度が確保できれば解決ということですね。

結論から言いますが、HSV↔️RGB では全単射にできないことがわかりました (HSL↔️RGB は未調査)。

また、私としては、変換の度に 16 ビットカラー値に丸めるのが望ましいと考えます。
イメージとしては、

・ RGB (入力値) → RGB (16 ビット) → HSV/HSL (16 ビット)
・ HSV/HSL (入力値) → RGB (16 ビット)
・ HSV/HSL (入力値) → RGB (16 ビット) → HSL/HSV (16 ビット)

という感じです。
現在もこうなっているという認識でよいですか?


>> 整数値への丸め方は C.Basic の INT% モードと同じと考えてよろしいですか?

> はい、同じです。

了解しました。

ところで、現在は HSV/HSL の値は切り捨てになっているようですが、
アルゴリズム製作時に切り捨てのままか四捨五入に変更かどちらに致しましょう?


> 16ビットカラーになると、差がなかったようなので、整数にしたような記憶です。(^^;

整数実装だと前述の通り HSV↔️RGB は全単射になりませんが、
Google のカラーピッカーは整数実装かつ全単射でないようなので、これを参考に行ければと思います。

例として、Google で "カラーピッカー" と検索し、次の操作を行ってみてください。

1. RGB に "255, 0, 0" と指定。このとき、HSV が "0°, 100%, 100%" となっているのを確認。
2. RGB に "255, 1, 0" と指定。このとき、HSV が "0°, 100%, 100%" となっているのを確認。
3. HSV にカーソルを合わせて編集モードにし、何も入力せずに決定。すると、RGB が "255, 0, 0" に戻る。

"ColConv" でこれと同様の動作になることが最終目標になると思います。

整数での実装とし、マニュアルには「RGB と HSV の値は 1 対 1 で対応しないので、色を確実に指定する必要がある場合は RGB か 16 ビットカラー値を使うこと」という趣旨の記述をすればよいかと思います。
文面は後程要検討です。


> たぶんここのサイトがメインだったと思います。(^^)
https://www.peko-step.com/tool/hsvrgb.html

おっ、私が見ている所と同じです。(^^)

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

では、HSV の精度について詳しく説明します。
途中計算は書くと長くなるので省略します。(^^;

前提条件として、RGB は R, B が 32 段階、G が 64 段階です。
HSV は H が 360 段階、S, V が 256 段階です。

H の 360 段階、S, V の 256 段階で 16 ビットカラーを表現しきれるか考えます。

まず、V の精度について。
V = MAX なので、V の精度は無問題です。

次に、S の精度について。
S = (MAX - MIN) ÷ MAX × 255
ですが、MAX = V により、MIN のみを考慮すればよいことがわかります。
MIN を 4 だけ変化させたとき、S は 1020/V だけ変化します。
1020/V の最小値は、V=252 の時の 1020/252 = 4.0476…… ≧ 1です。
したがって、S の精度も無問題です。

最後に、H の精度について。
これまでの議論より MAX と MIN は考慮する必要がありません。
(R, G, B) のうち 2 番目に大きい値のみ考慮する必要がありますが、これを 4 だけ変化させると、H は 240/(MAX - MIN) だけ変化します。
240/(MAX - MIN) < 1 の場合は精度が保証できません。すなわち、MAX - MIN > 240 の場合、H の精度が保証できないということです。

実際に全 65536 色ついて調べた結果、RGB → HSV → RGB で異なる値になってしまうのは次の 4 色だとわかりました。

・ #0x003F: RGB(0, 4, 248)
・ #0x041F: RGB(0, 128, 248)
・ #0xF820: RGB(248, 4, 0)
・ #0xFC00: RGB(248, 128, 0)

これ以外の色は問題ありません。

言い換えれば、上記 4 色以外の精度の問題は解決できます

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

今回の報告は以上です。
HSL についてはまた後程調査します。

Re^6:カラーコマンド機能整理の提案

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

Colon様、
>ということは、解決し次第マニュアル修正という形がよさそうですね。

了解です!(^^)


>バグ回避のため、言語によっては /* FALLTHROUGH */ などとコメントするのがお作法のようですが、
>C.Basic ならば 1 行に書くだけでフォールスルーだと明示できるということですね。(^^)

あ、そういう感じになりますね。(^^)


>精査していないので今のところでは明言を避けますが、
>RGB↔️カラー値 はすでに全単射のはずなので、HSV↔️RGB と HSL↔️RGB の精度が確保できれば解決ということですね。

はい、そういうことになるかと思います。(^^)



>整数値への丸め方は C.Basic の INT% モードと同じと考えてよろしいですか?

はい、同じです。


>今後要検討します。

最初の実装時に整数だと誤差が出そうなので、実数でも試した記憶がありますが、
16ビットカラーになると、差がなかったようなので、整数にしたような記憶です。(^^;


>ところで、変換ルーチンの出典を教えていただけますか?
>同じ資料を見た方がやり取りしやすいと思いますので。

変換に関しては「HSV変換」で検索して出てきたところのいくつかのサイトを参考にさせていただいたのですが、
たぶんここのサイトがメインだったと思います。(^^)
https://www.peko-step.com/tool/hsvrgb.html

Re^5 :カラーコマンド機能整理の提案

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

管理人様、
> ...ということで、このエントリーで ColConv の紹介を追加しました。

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

sentaro様、
> これは、おそらく精度の問題が解決できてないので相互変換に関しては明記しなかったのかもしれません。(^^;

ということは、解決し次第マニュアル修正という形がよさそうですね。

> Case 79:Case 69
> Case 79Case 69

バグ回避のため、言語によっては /* FALLTHROUGH */ などとコメントするのがお作法のようですが、
C.Basic ならば 1 行に書くだけでフォールスルーだと明示できるということですね。(^^)

> あ、でも、インデントは任意に解除可能ですし、テキストファイルに関しては最初からインデントがあった方が明らかにいいと思います。(^^)

了解しました。

> 変換のたびに、
> R:5ビット
> G:6ビット
> B:5ビット
> の16ビットカラーに丸めてしまうのが大きな原因かと思いますが、どうなんでしょう?(^^;

精査していないので今のところでは明言を避けますが、
RGB↔️カラー値 はすでに全単射のはずなので、HSV↔️RGB と HSL↔️RGB の精度が確保できれば解決ということですね。

> この整数処理ソースの最後に入ってます。
> CBPI_Eval.cpp(c++ソースみたいですが、Cです。(^^;

ありがとうございます。
整数値への丸め方は C.Basic の INT% モードと同じと考えてよろしいですか?

> HSV/HSL変換サブルーチンそのものは8ビット精度で計算してますが、ここは可逆性があるのでしょうか?(^^;

今後要検討します。


ところで、変換ルーチンの出典を教えていただけますか?
同じ資料を見た方がやり取りしやすいと思いますので。

Re^4:カラーコマンド機能整理の提案

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

Colon様、
>私が仕様を見落としていたか? と思ってマニュアルを読みましたが、正式仕様だとわかる記述が見つけられませんでした。(^^;
>「RGB / HSV / HSL / カラー値を相互変換できる」と明記の上、先程の投稿から例をいくつか載せていただければ良いかと思います。

これは、おそらく精度の問題が解決できてないので相互変換に関しては明記しなかったのかもしれません。(^^;


>とする選択肢もあるので、フォールスルーが便利な例だと思います。

こういう場合にうまく使えますね。(^^)

改行せずに、
Case 79:Case 69
と書いてもいいですし、さらにはコロンを省いて
Case 79Case 69
でも動いてしまうのがC.Basicです。(^^;


>あ、ということは、今回はインデント付きでアップロードしてしまいましたが、インデント無しで上げても良いんですね。(^^;
>そこまで気が回りませんでした。
>むしろ、インデントを抜いておいた方が各自で好きなスペースの個数にできるというメリットもあるので、次回からはインデント無しで上げたいと思います。(^^;

あ、でも、インデントは任意に解除可能ですし、テキストファイルに関しては最初からインデントがあった方が明らかにいいと思います。(^^)


>恐らく内部演算の丸め誤差の問題ですが、要するに「HSV↔️カラー値」や「HSL↔️カラー値」の変換が非可逆になってしまっているということですね。

変換のたびに、
R:5ビット
G:6ビット
B:5ビット
の16ビットカラーに丸めてしまうのが大きな原因かと思いますが、どうなんでしょう?(^^;


>改善策が無いか検討したいのですが、内部演算はどうなっているでしょうか?
>ソースコードがどのファイルに入っているかも教えてくださると助かります。

この整数処理ソースの最後に入ってます。
CBPI_Eval.cpp(c++ソースみたいですが、Cです。(^^;

HSV/HSL変換サブルーチンそのものは8ビット精度で計算してますが、ここは可逆性があるのでしょうか?(^^;

Colon様の変換プログラム内でRGB↔HSV↔HSL変換のサブルーチンを作成してもらって精度検証していただくのが一番かもですね。(^^;



管理人様、
>..ということで、このエントリーで ColConv の紹介を追加しました。

さすが管理人様、早いです!(^^)

Re^3:カラーコマンド機能整理の提案

Colon様、iron2様、Colon様、CalcLoverHK様、C.Basicユーザーの皆様、

管理人のやすです。

ColConvは、なかなか便利なツールであると同時に良いサンプルプログラムですよね!

...ということで、このエントリーで ColConv の紹介を追加しました。

Re:Re: カラーコマンド機能整理の提案

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
> と思って、マニュアルを見返したら、説明が簡潔過ぎました。(^^;

私が仕様を見落としていたか? と思ってマニュアルを読みましたが、正式仕様だとわかる記述が見つけられませんでした。(^^;

「RGB / HSV / HSL / カラー値を相互変換できる」と明記の上、先程の投稿から例をいくつか載せていただければ良いかと思います。

> 長いファンクションキーが実用プログラムで使われた初めての例ですね。

スクロールの加減で Switch 文の入れ子と "Or" / "⇒" を使いましたが、スクロールが必要ない場合は

Gerkey1→K

Switch K
Case 79
Case 69
…………
Break
Case 59
Case 49
…………
Break
…………
SwitchEnd

とする選択肢もあるので、フォールスルーが便利な例だと思います。

普段 "⇒" を使っていても Case 文を使っていてもそのままで良しなので、従来のプログラムも弄りやすいですね。

> エディタで開いたときに自動でインデントが付くので、保存サイズ削減の観点からも自動除去はセットで有効にしておいた方が良いですね。(^^)

あ、ということは、今回はインデント付きでアップロードしてしまいましたが、インデント無しで上げても良いんですね。(^^;
そこまで気が回りませんでした。

むしろ、インデントを抜いておいた方が各自で好きなスペースの個数にできるというメリットもあるので、次回からはインデント無しで上げたいと思います。(^^;


ところで、例えば "DEC #3000" と入力すると
・ RGB(8, 116, 192)
・ HSV(205, 224, 192)
・ HSL(205, 234, 100)
・ HEX #0x0BB8

となりますが、HSV や HSL を選択して [F1~F2] → [EXE] → [F1~F2] → …… と繰り返すと値が変わってしまうのが分かります。

また、この現象は [SHIFT] + [6] のカラーピッカーで RGB(8, 116, 192) と指定し、[F1] → [F2] / [F3] → [F1] → …… と繰り返しても確認できます。

恐らく内部演算の丸め誤差の問題ですが、要するに「HSV↔️カラー値」や「HSL↔️カラー値」の変換が非可逆になってしまっているということですね。

これについては v0.5x α の頃に「改善しなきゃ」という話をしてそのままになっていたかと思います。

改善策が無いか検討したいのですが、内部演算はどうなっているでしょうか?
ソースコードがどのファイルに入っているかも教えてくださると助かります。

Re:カラーコマンド機能整理の提案

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

Colon様、
>ファンクションメニュー、VRAM 直描きなど色が関わる話題が続いてきましたが、
>ここでカラーコマンドの機能の整理を提案します。

お!いいですね!(^^)


>"_Pixel" コマンドを使用せずに VRAM へ直接描画する場合は RGB/HSV/HSL ではなくカラーコードを指定する必要があります。

はい、描画コマンドではないのでダイレクトアクセスですね。(^^;


>現在は色について RGB, HSV, HSL, カラーコードの 4 通りの形式がサポートされていますが、それらの変換についてはカラーコード → RGB/HSV/HSL しかサポートされていません (12 通り中 3 通り)。

>そこで、その他 9 通りの変換も出来れば便利だと考えましたが、変換する裏技を見つけました。

>意図した隠し仕様なのか、たまたまそうなっているのかは分かりませんが、
>この際正式仕様に昇格させてはどうでしょうか?

んと、一応16ビットカラー値を経由して相互変換できる仕様になっていたと思うので、
って、これって正式仕様ではなかったですか?(^^;
と思って、マニュアルを見返したら、説明が簡潔過ぎました。(^^;


>これらの機能を使ったサンプルプログラムがこちらです。
https://pm.matrix.jp/upload/upload.cgi?get=00089

これはまた実用性十分なサンプルプログラムをありがとうございます!
長いファンクションキーが実用プログラムで使われた初めての例ですね。
管理人様のRGBシリーズと併せて使えそうですね!(^^)


>今さらですが、自動インデント機能を初めて使いました。(^^;
>読みやすく入力しやすくで非常に便利ですね!

ありがとうございます!
UCFでのpiu58様からの要望だったのですが、とても便利な機能だと私も思います。(^^)


>保存時にインデントを除去する機能も、メモリを食う量が削減できてありがたいです。

これは純正で動作させるためにインデントを含めた空白除去機能となっています。(^^)
エディタで開いたときに自動でインデントが付くので、保存サイズ削減の観点からも自動除去はセットで有効にしておいた方が良いですね。(^^)

カラーコマンド機能整理の提案

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

ファンクションメニュー、VRAM 直描きなど色が関わる話題が続いてきましたが、
ここでカラーコマンドの機能の整理を提案します。

"_Pixel" コマンドを使用せずに VRAM へ直接描画する場合は RGB/HSV/HSL ではなくカラーコードを指定する必要があります。

現在は色について RGB, HSV, HSL, カラーコードの 4 通りの形式がサポートされていますが、それらの変換についてはカラーコード → RGB/HSV/HSL しかサポートされていません (12 通り中 3 通り)。

そこで、その他 9 通りの変換も出来れば便利だと考えましたが、変換する裏技を見つけました。

意図した隠し仕様なのか、たまたまそうなっているのかは分かりませんが、
この際正式仕様に昇格させてはどうでしょうか?

書式は以下の通りです。
いずれも正常動作するようなので、C.Basic のソースの変更も必要なさそうです。

【RGB への変換】
(書式)GetRGB(HSV(H, S, V))
(書式)GetRGB(HSL(H, S, L))

(書式)GetRGB(HSV({H, S, V}))
(書式)GetRGB(HSL({H, S, L}))

【HSV への変換】
(書式)GetHSV(RGB(R, G, B))
(書式)GetHSV(HSL(H, S, L))

(書式)GetHSV(RGB({R, G, B}))
(書式)GetHSV(HSL({H, S, L}))

【HSL への変換】
(書式)GetHSL(RGB(R, G, B))
(書式)GetHSL(HSV(H, S, V))

(書式)GetHSL(RGB({R, G, B}))
(書式)GetHSL(HSV({H, S, V}))

【16 ビットカラー値への変換】
(書式)#RGB(R, G, B)
(書式)#HSV(H, S, V)
(書式)#HSL(H, S, L)

(書式)#RGB({R, G, B})
(書式)#HSV({H, S, V})
(書式)#HSL({H, S, L})

【入力した RGB/HSV/HSL 値を C.Basic が対応している値に丸める】
(書式)GetRGB(RGB(R, G, B))
(書式)GetHSV(HSV(H, S, V))
(書式)GetHSL(HSL(H, S, L))

(書式)GetRGB(RGB({R, G, B}))
(書式)GetHSV(HSV({H, S, V}))
(書式)GetHSL(HSL({H, S, L}))


これらの機能を使ったサンプルプログラムがこちらです。
https://pm.matrix.jp/upload/upload.cgi?get=00089


sentaro様、
今さらですが、自動インデント機能を初めて使いました。(^^;

読みやすく入力しやすくで非常に便利ですね!
保存時にインデントを除去する機能も、メモリを食う量が削減できてありがたいです。

Re:Re: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)

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

Colon様、
>修正確認しました。

管理人様、
>アップデート対応致しました。

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

Re: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その2再アップです。

sentaro様、iron2様、Colon様、CalcLoverHK様、C.Basicユーザーの皆様、

管理人のやすです。

アップデート対応致しました。

Re: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その2再アップです。

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
> ・GetRGB()、GetHSV()、GetHSL()コマンドで、インデックス開始値が0の場合の不具合を修正しました。

修正確認しました。

C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その2再アップです。

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

Colon様、
>"GetRGB(" / "GetHSV(" / "GetHSL(" で出力されるリストのインデックス開始値が 1 のままです。

>'#Mat 0
>ClrMat
>GetRGB(0)→L1
>GetHSV(0)→L2
>GetHSL(0)→L3

あ゛、こっちが残ってました。(^^;

ってことで、(build02)修正再アップです。

C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その2再アップです。
https://pm.matrix.jp/CB/CBASICCG145beta02.zip
(build02)
・GetRGB()、GetHSV()、GetHSL()コマンドで、インデックス開始値が0の場合の不具合を修正しました。

Re: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その2

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
> 虚数部で省略乗算があるので、
> Abs ((M-108)+((N-192)*i))→Mat V[M, N]
> とするとさらに高速化します。(^^)

あ、そこにもありました。(^^;

> あ゛…微妙に残ってますね。(^^;
> ってことで、全消しにしてみました。

修正確認しました。

> "RGB(" / "HSV(" / "HSL(" / "GetRGB(" / "GetHSV(" / "GetHSL(" の各コマンドが、
> "Matrix base: 0" の場合のリストに対応できていないようです。

"GetRGB(" / "GetHSV(" / "GetHSL(" で出力されるリストのインデックス開始値が 1 のままです。

'#Mat 0
ClrMat
GetRGB(0)→L1
GetHSV(0)→L2
GetHSL(0)→L3

C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その2

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

Colon様、

>"M×N" に修正したところ、2 倍以上速くなりました。
>1 ドットずつは 1.28 秒、"Seq(" 使用は 1.25 秒です。こうなると "Seq(" のほうが速いようですね。

微妙な差ですが、Seqの効果が出てますね。


>M を実部、N を虚部とし、M, N の係数を等しくして絶対値をとれば円形が浮かび上がります。

お見事です!
これはちょっと、いや、かなり感動しますね。(^^)

>Abs ((M-108)+(N-192)i)→Mat V[M, N]

虚数部で省略乗算があるので、
Abs ((M-108)+((N-192)*i))→Mat V[M, N]
とするとさらに高速化します。(^^)


>では、バグ報告です。
>ファイルの改名時、上書き確認ポップアップが出たときに [F4] / [F5] が消去できていません。

あ゛…微妙に残ってますね。(^^;
ってことで、全消しにしてみました。


>"RGB(" / "HSV(" / "HSL(" / "GetRGB(" / "GetHSV(" / "GetHSL(" の各コマンドが、
>"Matrix base: 0" の場合のリストに対応できていないようです。

うわ、これは思いっきり考慮されてませんでした!(^^;

ってことで、修正アップデートbuild02です。(^^)

C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その2
https://pm.matrix.jp/CB/CBASICCG145beta02.zip
(build02)
・VarPtr()コマンドで行列/List/Vctを指定した場合、その添字が常に実数評価されていた不具合を修正しました。
・RGB()、HSV()、HSL()コマンドの引数がListの場合、インデックス開始値が0の場合の不具合を修正しました。

C.Basic for FX v2.45β (さらに使いやすく色々と変更していってみる版)その2
https://pm.matrix.jp/CB/CBASIC245beta02.zip
(build02)
・VarPtr()コマンドで行列/List/Vctを指定した場合、その添字が常に実数評価されていた不具合を修正しました。
・FKeyMenuコマンドにカラー引数があってもエラーにならないように修正しました。

Re^11: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その1

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
> これはMNが乗算省略のせいで少し遅くなったかもしれません。(^^;

あ、そういえばそうでした。(^^;

"M×N" に修正したところ、2 倍以上速くなりました。
1 ドットずつは 1.28 秒、"Seq(" 使用は 1.25 秒です。こうなると "Seq(" のほうが速いようですね。

> 原因が分かりました!
> 実行モード別での処理分けが無く、デフォルトの実数モードのままになってました。
> ってことで、build02で修正してみます。(^^)

よろしくお願いします。(^^)

> 良いアルゴリズムが出来たら実装したいと思います。(^^)

趣旨とはちょっと外れますが、こんなこともやってみました。

M を実部、N を虚部とし、M, N の係数を等しくして絶対値をとれば円形が浮かび上がります。

========================================
'#Mat 0
'#CBCPLX
Screen.G
_ClrVram
'_ClrScreen
ClrMat
{216, 384}→Dim Dim Mat V.W(System(1))

For 0→M To 215
For 0→N To 383
Abs ((M-108)+(N-192)i)→Mat V[M, N]
Next
'_DispVram@M−24, M−24
Next

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

では、バグ報告です。

ファイルの改名時、上書き確認ポップアップが出たときに [F4] / [F5] が消去できていません。

"RGB(" / "HSV(" / "HSL(" / "GetRGB(" / "GetHSV(" / "GetHSL(" の各コマンドが、
"Matrix base: 0" の場合のリストに対応できていないようです。

Re^10: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その1

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

管理人様、
>昨日、新機種 fx-9860GIII の情報を、2回アップデートしています。
>どうやら、カシオヨーロッパが公式に製品情報を公開したようです。
https://egadget.blog.fc2.com/blog-entry-715.html

予想以上に早い発売になりそうですね。(^^)
あとは、日本での扱いがどうなるかです。(^^;



Colon様、
>純正では有り得ない使い方ですから、sentaro様にはひたすら感謝です!!
>大画面、整数モード、ML コマンド、フルカラー、カラーコード、メモリアドレス指定、時間計測……、
>こうして見るとかなり多くの拡張機能を使用していますね。

こちらこそ、強力なサポートをいつもありがとうございます!
純正で出来ないことを出来るようにするのがC.Basicなので、かなりのことが出来るようになりましたね。(^^)


>グラフィック画面側のプログラムが一部最適化出来ていなかったので、以下にもう一度まとめておきます。

シンプルながら奥の深いプログラムだと思います。(^^)


>※ "Seq()" コマンドを使い、VRAM に 1 行ずつ直接書き込み。今度は逆に遅くなってしまった。

これはMNが乗算省略のせいで少し遅くなったかもしれません。(^^;


>後でアイコンデータの提供をお願いするかもしれません。
>その際は、アイコンデータを欲しい形式のファイルに出力するプログラムをお送りするので、出てきたファイルを下さると助かります。m(_ _)m

了解です!
おまかせください。(^^)


>メモリが違うことも関係してそうですね。

CG20はPtune2効果でメモリアクセスが限界近くまで速くなってますが、
CG50はノーマル状態だとウエイトが入ってるのでちょっと遅くなってますね。(^^;
それとクロックがスペクトラム拡散で実質-3%になるので、それも多少効いてきます。(^^;


>CG20 ではメモリ不足です。(^^;

あ゛、そうでした!(^^;


>何行かを一度に表示するのも試してみましたが、CG20 では 8 行ずつが一番速く、それ以降はだんだん遅くなるようです。

このあたりは実際にやってみるまで分からないのが面白いですね。



> ソースを眺めてもどこが悪いのかすぐに分からないので、要調査です。(^^;
>分かりました。
>私の方でももう少し調べてみます。

原因が分かりました!
実行モード別での処理分けが無く、デフォルトの実数モードのままになってました。
ってことで、build02で修正してみます。(^^)


>お! やってみます。(^^)
>実践向けではないかもしれませんが、グラフィックス描画のアルゴリズムの理解に役立ちそうです。

良いアルゴリズムが出来たら実装したいと思います。(^^)

エントリー違いですが...

sentaro様

昨日、新機種 fx-9860GIII の情報を、2回アップデートしています。
どうやら、カシオヨーロッパが公式に製品情報を公開したようです。

https://egadget.blog.fc2.com/blog-entry-715.html

Re:Re: Re^8: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その1

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

管理人様、
>2/11 18:53 のコメントですが、ご覧になっていますか?
>ひょっとして、読み飛ばしているかも知れないかと思い、念のため...

あ゛゛゛…すみません!思いっきり見逃してました。(^^;


>これは、Manual_J.txt の修正でしょうか?

Change_J.txt/Change_EN.txtだけの修正でした。(^^;


>Ver 2.44β16 と Ver 2.45β の両方とも再ダウンロードしました。(例)からカラー設定は無くなっていますが、(書式) のところでカラー設定が残っていて、修正されていないようです。

この際、FX版においても、カラー指定の引数があってもエラーにならないようにしてみます。
その利点は、FKeyMenuのプログラムが共通化できます。(^^;


@CalcLoverHK
The emulator does not save the setting data of Ptune2, so save the data on Ptune2 side.(^^)
(e.g) [SHIFT]+[F2](to save setting sata into [F2])
[SHIFT]+[F1](SAVE all setting)

>How do I enter 2047 in FLL? I can only keep pressing right button to increase it.

Yes!
Press and hold right button to increase.(^^;

Ptune2 FLL stucked

Hi Sentaro21

I try to reach this setting:
https://pm.matrix.jp/upload/upload.cgi?get=00076

But later I stuck on 1678 in FLL setting.
And I can't load the data saved when I close fx-CG20 emulator.
(I use Windows XP 32-bit VM with 1.5GB RAM and 2 cores)

How do I enter 2047 in FLL? I can only keep pressing right button to increase it.

Cheers
CalcLoverHK

Re: Re^8: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その1

sentaro様


2/11 18:53 のコメントですが、ご覧になっていますか?
ひょっとして、読み飛ばしているかも知れないかと思い、念のため...

Re^9: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その1

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

管理人様、
> この一連のプログラム、楽しく遊ばせて貰いました。
> C.Basic のグラフィックス動作の高速性を示すとても良いサンプルプログラムだと思います。

純正では有り得ない使い方ですから、sentaro様にはひたすら感謝です!!

> また、C.Basic独自の設定やコマンドを紹介する良いネタですね。

大画面、整数モード、ML コマンド、フルカラー、カラーコード、メモリアドレス指定、時間計測……、

こうして見るとかなり多くの拡張機能を使用していますね。

> Colon様の一連のプログラムを使って、純正用 COLORTEXT を基点として、C.Basicでの様々なテクニックを紹介してゆくような構成の記事にさせて貰いたいと思うのですが、よろしいでしょうか?

もちろん OK です。(^^)
グラフィック画面側のプログラムが一部最適化出来ていなかったので、以下にもう一度まとめておきます。

========================================
〈ランダム 1〉(実行時間: 2.25 秒)

'#CBINT
Screen.G
_ClrVram
'_ClrScreen

For -24→Y To 191
For 0→X To 383
RGB(#RanInt#(1, 65535))_Pixel X, Y
Next
'_DispVram@M−24, M−24
Next

※ 通常の方法。ML コマンド使用。

========================================
〈ランダム 2〉(実行時間: 1.68 秒)

'#Mat 0
'#CBINT
Screen.G
_ClrVram
'_ClrScreen
ClrMat
{216, 384}→Dim Dim Mat V.W(System(1))

For 0→M To 215
For 0→N To 383
RanInt#(1,65535)→Mat V[M, N]
Next
'_DispVram@M−24, M−24
Next

※ VRAM に 1 ドットずつ直接書き込み。

========================================
〈ランダム 3〉(実行時間: 0.45 秒)

'#Mat 0
'#CBINT
Screen.G
_ClrVram
'_ClrScreen
CrlMat
{216, 384}→Dim Dim Mat V.W(System(1))

For 0→M To 215
384→Dim Dim List 1.W(VarPtr(Mat V[M%]))
RanInt#(1,65535, 384)→List 1.W
'_DispVram@M−24, M−24
Next

※ VRAM に 1 行ずつ直接書き込み。

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

いずれも、"_ClrScreen" と "_DispVram@M−24, M−24" のコメント化解除で 1 行ずつ画面転送する様子を観察できます。

また、ランダムではなく座標からカラーコードを計算させるのもやってみました。

========================================
〈足し算 1〉(実行時間: 1.24 秒)

'#Mat 0
'#CBINT
Screen.G
_ClrVram
'_ClrScreen
ClrMat
{216, 384}→Dim Dim Mat V.W(System(1))

For 0→M To 215
For 0→N To 383
M+N→Mat V[M, N]
Next
'_DispVram@M−24, M−24
Next

※ VRAM に 1 ドットずつ直接書き込み。

========================================
〈足し算 2〉(実行時間: 1.19 秒)
'#Mat 0
'#CBINT
Screen.G
_ClrVram
'_ClrScreen
ClrMat
{216, 384}→Dim Dim Mat V.W(System(1))

For 0→M To 215
384→Dim Dim List 1.W(VarPtr(Mat V[M%]))
Seq(M+N, N, 0, 383, 1)→List 1.W
'_DispVram@M−24, M−24
Next

※ "Seq()" コマンドを使い、VRAM に 1 行ずつ直接書き込み。若干速くなった。

========================================
〈掛け算 1〉(実行時間: 2.42 秒)
'#Mat 0
'#CBINT
Screen.G
_ClrVram
'_ClrScreen
ClrMat
{216, 384}→Dim Dim Mat V.W(System(1))

For 0→M To 215
For 0→N To 383
MN→Mat V[M, N]
Next
'_DispVram@M−24, M−24
Next

※ VRAM に 1 ドットずつ直接書き込み。

========================================
〈足し算 2〉(実行時間: 3.57 秒)
'#Mat 0
'#CBINT
Screen.G
_ClrVram
'_ClrScreen
ClrMat
{216, 384}→Dim Dim Mat V.W(System(1))

For 0→M To 215
384→Dim Dim List 1.W(VarPtr(Mat V[M%]))
Seq(MN, N, 0, 383, 1)→List 1.W
'_DispVram@M−24, M−24
Next

※ "Seq()" コマンドを使い、VRAM に 1 行ずつ直接書き込み。今度は逆に遅くなってしまった。

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

1 ドットずつと 1 行ずつのどちらが速いかは、計算内容によって異なるようです。


sentaro様、
> アップしてみました。(^^)
https://pm.matrix.jp/upload/upload.cgi?get=00087
https://pm.matrix.jp/upload/upload.cgi?get=00088

ありがとうございます! (^^)
流用できそうなアイコンがいくつかありますね。

後でアイコンデータの提供をお願いするかもしれません。
その際は、アイコンデータを欲しい形式のファイルに出力するプログラムをお送りするので、出てきたファイルを下さると助かります。m(_ _)m

> CG50では2.53秒程度です。(^^;
> こちらは1.84秒でした。(^^;
> で、CG50では0.58秒で若干遅めです。(^^;

メモリが違うことも関係してそうですね。

> ここを入れ替えて、
> 384→Dim Dim List 1.W(VarPtr(Mat V[M%]))
> RanInt#(1,65535, 384)→List 1.W
> とすると、ダイレクトで書き込めるので、
> List 1→List 2
> が必要なくなりますね。

ありがとうございます!
投稿してから気づきました。(^^;

> さらには、
> 384*216→Dim Dim List 1.W(VarPtr(System(1))
> RanInt#(1,65535, 384*216)→List 1.W
> で一発でダイレクトに書き込めます。(^^;

CG20 ではメモリ不足です。(^^;

何行かを一度に表示するのも試してみましたが、CG20 では 8 行ずつが一番速く、それ以降はだんだん遅くなるようです。

> ソースを眺めてもどこが悪いのかすぐに分からないので、要調査です。(^^;

分かりました。
私の方でももう少し調べてみます。

> さらには、描画系のコマンドを使わずに円を描いたり線を引くとかも、面白そうです。(^^)

お! やってみます。(^^)
実践向けではないかもしれませんが、グラフィックス描画のアルゴリズムの理解に役立ちそうです。

Re^8: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その1

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

Colon様、
>修正確認しました。

ありがとうございます!
一安心ですね。(^^)


>中国語版マニュアルを見ると {行} になっていますが、#1380 以降に {LINE} / {行} のアイコンはありますか?
>よろしければ、イースターエッグから #1380 以降のキャプチャーをいただけると助かります。

アップしてみました。(^^)
https://pm.matrix.jp/upload/upload.cgi?get=00087
https://pm.matrix.jp/upload/upload.cgi?get=00088


>ところで、管理人様の COLORTXT (https://egadget.blog.fc2.com/blog-entry-511.html) に触発されて色々遊んでみました。

カラーサンプルとして秀逸ですよね。(^^)


>カラーコードに対応していただいているので、簡潔に書けるのがありがたいです。
>"■" を漢字に変えても何かのポスターみたいになって面白いです。

カラーコードはダイレクト指定できるのはやはり便利ですね。
漢字がいっぱいなのは面白いかもです。(^^)


>次に、ベンチマークも兼ねて画面を 1 ドットずつランダムに塗りつぶすことに挑戦。
>実行時間は 117.96 MHz (Ptune2 の [F3]) / リフレッシュ無しのものです。

いいですね!(^^)


>'#CBINT
>Screen.G
>_ClrVram

>For -24→Y To 191
>For 0→X To 383
>RGB(#RanInt#(1, 65535))_Pixel X, Y
>Next:Next

>実行時間は 2.24 秒でした。

CG50では2.53秒程度です。(^^;


>次に、VRAM へ直接書き込んでみると、

>'#Mat 0
>'#CBINT
>Screen.G
>_ClrVram
>CrlMat
>{216, 384}→Dim Dim Mat V.W(System(1))

>For 0→M To 215
>For 0→N To 383
>RanInt#(1,65535)→Mat V[M, N]
>Next:Next

>実行時間は 1.68 秒で、ML コマンドを使うよりも速いようです。

こちらは1.84秒でした。(^^;
MLコマンドはオプション処理で多少のオーバーヘッドがありますね。(^^;


>さらに、ループ回数を減らすべく "RanInt#()" の List 出力で 1 行ずつ描画してみます。

>'#Mat 0
>'#CBINT
>Screen.G
>_ClrVram
>CrlMat
>{216, 384}→Dim Dim Mat V.W(System(1))

>For 0→M To 215
>RanInt#(1,65535, 384)→List 1.W
>384→Dim Dim List 2.W(VarPtr(Mat V[M%]))
>List 1→List 2
>Next:Next

>これで 0.47 秒。ほぼ一瞬です。

Listが絡むと一瞬何をやっているか分からなくなりそうな裏技プログラムですね。(^^;
で、CG50では0.58秒で若干遅めです。(^^;

ここを入れ替えて、
384→Dim Dim List 1.W(VarPtr(Mat V[M%]))
RanInt#(1,65535, 384)→List 1.W
とすると、ダイレクトで書き込めるので、
List 1→List 2
が必要なくなりますね。

さらには、
384*216→Dim Dim List 1.W(VarPtr(System(1))
RanInt#(1,65535, 384*216)→List 1.W
で一発でダイレクトに書き込めます。(^^;


>ここでバグを発見。
>384→Dim Dim List 2.W(VarPtr(Mat V[M%])) のところで、"%" を省略すると倍精度変数を参照してしまうようです。
>確認お願いします。

確認できました!
ソースを眺めてもどこが悪いのかすぐに分からないので、要調査です。(^^;




管理人様、
>この一連のプログラム、楽しく遊ばせて貰いました。
>C.Basic のグラフィックス動作の高速性を示すとても良いサンプルプログラムだと思います。

管理人様のCOLORTXTが引き出したプログラムですね。(^^)


>また、C.Basic独自の設定やコマンドを紹介する良いネタですね。
>Colon様の一連のプログラムを使って、純正用 COLORTEXT を基点として、C.Basicでの様々なテクニックを紹介してゆくような構成の記事にさせて貰いたいと思うのですが、よろしいでしょうか?

VarPtrやVRAMを割り当てるプログラムとして簡単で秀逸なプログラムですね。
さらには、描画系のコマンドを使わずに円を描いたり線を引くとかも、面白そうです。(^^)

Re^7: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その1

Colon様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!


> ところで、管理人様の COLORTXT (https://egadget.blog.fc2.com/blog-entry-511.html) に触発されて色々遊んでみました。
> これに伴い、バグも見つけたので併せて報告します。

この一連のプログラム、楽しく遊ばせて貰いました。
C.Basic のグラフィックス動作の高速性を示すとても良いサンプルプログラムだと思います。

また、C.Basic独自の設定やコマンドを紹介する良いネタですね。
Colon様の一連のプログラムを使って、純正用 COLORTEXT を基点として、C.Basicでの様々なテクニックを紹介してゆくような構成の記事にさせて貰いたいと思うのですが、よろしいでしょうか?

Re^6: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その1

sentaro様

> あ゛…CG版からそのままコピペしてたので思いっきりミスってます。(^^;
> ってことで、修正再アップしました!

これは、Manual_J.txt の修正でしょうか?

Ver 2.44β16 と Ver 2.45β の両方とも再ダウンロードしました。(例)からカラー設定は無くなっていますが、(書式) のところでカラー設定が残っていて、修正されていないようです。


Re^6: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その1

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
> 概ね直りましたが、次の場合の [1, 1] 選択時、必要な "→" が表示されません。
> ・ 1bit / nibl 型で要素が横に 9 つ
> ・ byte 型で要素が横に 7 つ
> ・ word / long / Dbl 型で要素が横に 5 つ
> ・ CPLX 型で要素が横に 4 つ
> 直っておりません。(^^;

修正確認しました。

> 2,147,483,647の行列は、1ビット行列でも、256メガバイト必要です。(^^;

あ、冷静に考えればそうですね。

> 切り欠きのある黒アイコンですね。

中国語版マニュアルを見ると {行} になっていますが、#1380 以降に {LINE} / {行} のアイコンはありますか?

よろしければ、イースターエッグから #1380 以降のキャプチャーをいただけると助かります。


ところで、管理人様の COLORTXT (https://egadget.blog.fc2.com/blog-entry-511.html) に触発されて色々遊んでみました。
これに伴い、バグも見つけたので併せて報告します。

まず、C.Basic の大画面とフルカラーに対応して移植。

For 0→Y To 8
For 1→X To 21
RGB(#RanInt#(1, 65535))Locate X, Y, "■"
Next:Next

カラーコードに対応していただいているので、簡潔に書けるのがありがたいです。
"■" を漢字に変えても何かのポスターみたいになって面白いです。

次に、ベンチマークも兼ねて画面を 1 ドットずつランダムに塗りつぶすことに挑戦。
実行時間は 117.96 MHz (Ptune2 の [F3]) / リフレッシュ無しのものです。

まずは普通に ML コマンドを使用。

'#CBINT
Screen.G
_ClrVram

For -24→Y To 191
For 0→X To 383
RGB(#RanInt#(1, 65535))_Pixel X, Y
Next:Next

実行時間は 2.24 秒でした。

次に、VRAM へ直接書き込んでみると、

'#Mat 0
'#CBINT
Screen.G
_ClrVram
CrlMat
{216, 384}→Dim Dim Mat V.W(System(1))

For 0→M To 215
For 0→N To 383
RanInt#(1,65535)→Mat V[M, N]
Next:Next

実行時間は 1.68 秒で、ML コマンドを使うよりも速いようです。

さらに、ループ回数を減らすべく "RanInt#()" の List 出力で 1 行ずつ描画してみます。

'#Mat 0
'#CBINT
Screen.G
_ClrVram
CrlMat
{216, 384}→Dim Dim Mat V.W(System(1))

For 0→M To 215
RanInt#(1,65535, 384)→List 1.W
384→Dim Dim List 2.W(VarPtr(Mat V[M%]))
List 1→List 2
Next:Next

これで 0.47 秒。ほぼ一瞬です。

ここでバグを発見。
384→Dim Dim List 2.W(VarPtr(Mat V[M%])) のところで、"%" を省略すると倍精度変数を参照してしまうようです。
確認お願いします。

Re^5: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その1

管理人様、
>Ver 2.45 の FKeyMenu( の説明でカラーオプションがあり、(例)に BLue とカラー指定されています。
>カラー設定はFX版で動作させると、どうなるのでしょうか?

あ゛…CG版からそのままコピペしてたので思いっきりミスってます。(^^;
ってことで、修正再アップしました!


>取り得ず、FX版ではカラー設定が無い前提で、内容を趨勢してアップデート対応しました。
https://egadget.blog.fc2.com/blog-entry-495.html

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

Re^5: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その1

sentaro様、iron2様、Colon様、CalcLoverHK様、C.Basicユーザーの皆様、

Ver 2.45 の FKeyMenu( の説明でカラーオプションがあり、(例)に BLue とカラー指定されています。
カラー設定はFX版で動作させると、どうなるのでしょうか?

取り得ず、FX版ではカラー設定が無い前提で、内容を趨勢してアップデート対応しました。
https://egadget.blog.fc2.com/blog-entry-495.html

Re^4: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その1

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

Colon様、
>ネーミングで暫く笑いました。

ありがとうございます!(^^;


>おっ! これはありそうでなかった便利な機能ですね! (^^)

そうなんです。
文字列も8ビットコードなのでSortA/SortDでいけるかなと思ったら全然駄目でした。
プログラムでソートアルゴリズムを組むしかなかったので、少し便利になったと思います。(^^)


>概ね直りましたが、次の場合の [1, 1] 選択時、必要な "→" が表示されません。
>・ 1bit / nibl 型で要素が横に 9 つ
>・ byte 型で要素が横に 7 つ
>・ word / long / Dbl 型で要素が横に 5 つ
>・ CPLX 型で要素が横に 4 つ
>直っておりません。(^^;

あ゛…(^^;
だいじょうぶかと思ったんですが、
私のチェックの甘さが思いっきり露呈してますね。(^^;
ってことで、2.45/1.45修正&差し替えしております。


>あれ、そうなんですね。← CG20 ユーザー

2,147,483,647の行列は、1ビット行列でも、256メガバイト必要です。(^^;


>ところで、ひらめきました!
>こういうのはどうでしょうか? > 皆様

>Fkey 相談用資料 第4弾
https://pm.matrix.jp/upload/upload.cgi?get=00085

>外部フォントありの場合を "+" で表示します。

"+"は個人的にはすごく名案だと思います!(^^)


>これで良ければ「白 / 黒 / 選」アイコン全 144 個は確定です。(^^)

私の方は何も異存ありませんです!


>ところで、Python 機能のソースエディタのジャンプ機能で、行数指定ジャンプのファンクションメニューが {LINE} になっているそうですが、これは「白」か「黒」かどっちになっているでしょうか?

切り欠きのある黒アイコンですね。


>現状、C.Basic では行数指定ジャンプに「白」の {GO} を使っていますが、機能的に「白」で良いのか確信が持てずにいます。
>何なら、Python に合わせて {LINE} に変えてもいいかなぁ、ぐらいに考えています。

純正CasioBasicでは相当の機能が無いので、[LINE]でもいいかもですね。(^^)

Re^3: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その1

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
> C.Basic for CG v1.44β (より使いやすく色々と変更していってみる版)
> C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)

ネーミングで暫く笑いました。


> ・SortA()/SortD()コマンドに文字配列のソートを追加しました。

おっ! これはありそうでなかった便利な機能ですね! (^^)


> 横幅が少なく "→" が不要な場合にも表示されてしまっています。

概ね直りましたが、次の場合の [1, 1] 選択時、必要な "→" が表示されません。

・ 1bit / nibl 型で要素が横に 9 つ
・ byte 型で要素が横に 7 つ
・ word / long / Dbl 型で要素が横に 5 つ
・ CPLX 型で要素が横に 4 つ

> また、ドットエディタ時に最も右の位置で "→" が不要な場合にも表示されてしまっています。

直っておりません。(^^;

> サポートは出来ても実際には使えないという夢の数字ですね。(^^;

あれ、そうなんですね。← CG20 ユーザー


> 文字だけじゃなく図形な感じにするとか?
> アイコンのデザインは結構難しいですよね。(^^;

文字情報に限らないところが bmp アイコンの良いところですね。

ところで、ひらめきました!
こういうのはどうでしょうか? > 皆様

Fkey 相談用資料 第4弾
https://pm.matrix.jp/upload/upload.cgi?get=00085

外部フォントありの場合を "+" で表示します。

なお、このサンプルでは Mat 関係仕様確定によるアイコン整理も行っています。

これで良ければ「白 / 黒 / 選」アイコン全 144 個は確定です。(^^)


ところで、Python 機能のソースエディタのジャンプ機能で、行数指定ジャンプのファンクションメニューが {LINE} になっているそうですが、これは「白」か「黒」かどっちになっているでしょうか?

現状、C.Basic では行数指定ジャンプに「白」の {GO} を使っていますが、機能的に「白」で良いのか確信が持てずにいます。
何なら、Python に合わせて {LINE} に変えてもいいかなぁ、ぐらいに考えています。

Re:Re: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その1

@CalcLoverHK
Oh, sorry!
There was no official 2.44/1.44 version. (^^;
Since 2.44/1.44 build16 is the final of 2.44/1.44,
I'll make it official 2.44/1.44.

https://pm.matrix.jp/CB/CBASICCG144beta.zip
https://pm.matrix.jp/CB/CBASIC244beta.zip

2.45/1.45 will continue to improve.(^^)

Re: C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その1

@Sentaro21
Wait... Does 2.44 have no official version? Or is it 2.44 build 6 or 16?
And what is the difference between 2.44 build 16 and 2.45 build 1 and why? (^^;

C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その1

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

SortA/SortDコマンドで文字列のソートに対応したので
1.44 build16→1.45 build01としてバージョンを繰り上げます。(^^)
FX版は、2.44 build06から2.44 build16→ 2.45 build01にジャンプしてます。(^^;
FKeyMenuの仕様はCG版と完全互換では無いですが、オプションは色以外はほぼ共通なので同様に使用できます。


Colon様、
>横幅が少なく "→" が不要な場合にも表示されてしまっています。
>また、ドットエディタ時に最も右の位置で "→" が不要な場合にも表示されてしまっています。

詰めが甘かったです。(^^;
ってことで修正しました。(^^)


>試しに外部フォント有りを反転してみましたが、「選」アイコン時のドット数の加減でダメでした。(^^;
>皆様、アイデア大募集中です!!!

文字だけじゃなく図形な感じにするとか?
アイコンのデザインは結構難しいですよね。(^^;


Colon様、
管理人様、
>→が表示されないこともありますよね?
>現在の画面デザインを維持する場合の対処療法としては、← の表示位置を少し左にずらし、列番号表示も左にずらし、→ 表示のスペースを確保する必要がありそうですね。

この表示は必ずしも必要なわけではないので、現状では見えない場合は仕方ないという仕様です。(^^;


>要素数も 2,147,483,647 までサポートされていることですし、大きい数における正式な表示形式を定められると良いですね。

サポートは出来ても実際には使えないという夢の数字ですね。(^^;



C.Basic for CG v1.44β (より使いやすく色々と変更していってみる版)その16
https://pm.matrix.jp/CB/CBASICCG144beta16.zip

C.Basic for CG v1.45β (さらに使いやすく色々と変更していってみる版)その1
https://pm.matrix.jp/CB/CBASICCG145beta.zip
(build01)
・SortA()/SortD()コマンドに文字配列のソートを追加しました。
(例)SortA($Mat A)
 Mat Aの文字列が昇順にソートされます。
・ReadMe、マニュアル更新しました。
・行列表示の←→表示を修正しました。
・g3mモードにおいてストレージメモリへのでのStoPictを無効にしました。


C.Basic for FX v2.44β (より使いやすく色々と変更していってみる版)その16
https://pm.matrix.jp/CB/CBASIC244beta16.zip

C.Basic for FX v2.45β (さらに使いやすく色々と変更していってみる版)その1
https://pm.matrix.jp/CB/CBASIC245beta.zip
(build01)
・SortA()/SortD()コマンドに文字配列のソートを追加しました。
(例)SortA($Mat A)
 Mat Aの文字列が昇順にソートされます。
・ReadMe、マニュアル更新しました。
・行列画面で53以降の拡張領域の一覧表示をサポートしました。
[←]:26戻ります。
[→]:26進みます。

・FkeyMenu(コマンドを拡張しました。
(書式)FKeyMenu( n[~m], "文字列"/アイコン番号 [,C/M/N/R/I/S/U/L [,アイコン色 [,アイコン背景色]]] )
 ※ "アイコン色" はデフォルトで黒い部分の色指定です。
 ※ "アイコン背景色" はデフォルトで白い部分の色指定です。
 ※ 3 番目以降の引数は省略可能です。引数を省略した場合でも”,"は必要です。
(書式)FKeyMenu( n[~m], "文字列"/アイコン番号 [,C/M/N/R/I/S/U/L [,アイコン色 [,アイコン背景色]]] )
 ※ 3番目以降の引数は省略可能です。引数を省略した場合でも”,"は必要です。
 3番目のオプションは順不同です。
 C:消去します。
 M:マスク処理します。
 m:枠だけマスク処理します。
 N:ノーマル白アイコン。(省略可)
 R:右下が欠けた黒アイコン
 I:四角い黒アイコン
 S:縁取りのある黒アイコン
 U:文字列を1ドット上側に表示。
 L:表示範囲を左右2ドット広げます。

(例)FKeyMenu (1, "string",,Blue )
(例)FKeyMenu (2~3, "longstring",R)
(例)FKeyMenu (4~5, "longstring",I)

・やす(Krtyski)様 & CalcLoverHK様 & Colon様作成のFKeyMenu(コマンドのサンプルプログラムを同梱しました。(C.Basic_sample\FKeyMenu_sample)

・エディタで[SHIFT]を押したときに編集可能空きエリアのサイズをステータスエリアに表示するようにしました。

・System()コマンドにエミュレータ判定を追加しました。
(書式)System(-7)
 実機では0、エミュレータでは1が返ります。

・DBL#モードにおいて、一時停止と変数表示での虚数表示がされていたのを修正しました。
・変数表示をINT%,DBL#,CPLXで独立させました。

Re^3: C.Basic for CG v1.44β (より使いやすく色々と変更していってみる版)その15仕様変更版 再差し替えです。

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

> 現在の画面デザインを維持する場合の対処療法としては、← の表示位置を少し左にずらし、列番号表示も左にずらし、→ 表示のスペースを確保する必要がありそうですね。

番号の表示位置などに関しては、割り付けの面で純正と異なっていたり、横幅的に表示しきれない場合にどうするかなど、細かな検討が必要になりますね。
行列の型によっても表示位置が変わることもあり、地味だが大がかりな変更になることも予想されるので、これに関しては次のバージョン以降で検討するのがよいと思います。

要素数も 2,147,483,647 までサポートされていることですし、大きい数における正式な表示形式を定められると良いですね。

Re^2: C.Basic for CG v1.44β (より使いやすく色々と変更していってみる版)その15仕様変更版 再差し替えです。

Colom様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、

差替えアップデート対応しました。

ところで、行列表示において
> 横幅が少なく "→" が不要な場合にも表示されてしまっています。

→が表示されないこともありますよね?

現在の画面デザインを維持する場合の対処療法としては、← の表示位置を少し左にずらし、列番号表示も左にずらし、→ 表示のスペースを確保する必要がありそうですね。

Re: C.Basic for CG v1.44β (より使いやすく色々と変更していってみる版)その15仕様変更版 再差し替えです。

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
> 抽出したところこんなところでした。(^^)

ありがとうございます!

#1263 はすでにサンプルに入れてあり、#1325 も "EXTEND" に置き換えるので、
あとは Vct 関係の「入」アイコン 6 つのみですね。

> FX版が[AKG]なので混同してしまいました。(^^;
> ここのアイコンは種類が多くなるので、ちょっと大変かもですね。(^^;

2^3 × 2 で 16 通りですかね。
種類が多い分には大体コピペで良いのでそこまで大変ではないですが、外部フォントであるか否かを示すために文字数が増えるので、簡潔に表す方法の検討が一番大変です。

試しに外部フォント有りを反転してみましたが、「選」アイコン時のドット数の加減でダメでした。(^^;

皆様、アイデア大募集中です!!!


> ・行列表示の←→表示を修正しました。

横幅が少なく "→" が不要な場合にも表示されてしまっています。

また、ドットエディタ時に最も右の位置で "→" が不要な場合にも表示されてしまっています。

C.Basic for CG v1.44β (より使いやすく色々と変更していってみる版)その15仕様変更版 再差し替えです。

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

追記にしようと思ったらパスワードが違いますということで、新規書き込みにさせていただきました。(^^;

C.Basic for CG v1.44β (より使いやすく色々と変更していってみる版)その15仕様変更版 再差し替えです。
https://pm.matrix.jp/CB/CBASICCG144beta15.zip
(build15)
・ReadMe、マニュアル更新しました。
・行列表示の←→表示を修正しました。

Re^4: C.Basic for CG v1.44β (より使いやすく色々と変更していってみる版)その15仕様変更版差し替えです。

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

管理人様、
>はい、対応している最中に差替えアップデートを見つけたので、最奥済みです。

お!さすが管理人様!、早いです!(^^)


>お疲れ様です。
>あとは、FX版のアップデートですね(^^)

はい、FX版はFKeyIconの調整が残ってますが、ほぼ同様のアップデートとなる感じです。(^^)



Colon様、
>このタイミングで申し訳ありませんが、ひとつバグを見つけました。
>行列エディタの横スクロールで、"←" と "→" が両方表示されるべき場合に、"→" が表示されていません。
>また、純正では矢印がマゼンタなので、C.Basic でもマゼンタにしてはいかがでしょうか?

確認しました。ありがとうございます!
これはかなり前からあった不具合ですね。(^^;
色も含めて次のアップデートで修正してみます。


>ところで、#1249 以降のアイコンのうち、使用しているものの一覧をいただけませんか?

抽出したところこんなところでした。(^^)

1263 "MAT/VCT"
1270 "Vct"
1269 "DotP("
1268 "CrossP("
1267 "Angle("
1265 "UnitV("
1266 "Norm("
1325 "Extd"


>現在は {Ex GK} のような表示ですが、この場合であっても ASCII 文字は入力できるので、そこをどううまく伝えようかというのが悩みどころです。

FX版が[AKG]なので混同してしまいました。(^^;
ここのアイコンは種類が多くなるので、ちょっと大変かもですね。(^^;

FKey Icon - CHAR 画面の表示内容について

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

管理人様、
> ネットワーク接続が許されないところで金曜夕方から仕事をしていて、先ほど帰ってきました。

お疲れさまです!

> マニュアルの修正版は、うまく表現して分かりやすくなって、これなら誰でも分かる内容になったと思います。

ありがとうございます。(^^)


sentaro様、
このタイミングで申し訳ありませんが、ひとつバグを見つけました。

行列エディタの横スクロールで、"←" と "→" が両方表示されるべき場合に、"→" が表示されていません。
また、純正では矢印がマゼンタなので、C.Basic でもマゼンタにしてはいかがでしょうか?

ところで、#1249 以降のアイコンのうち、使用しているものの一覧をいただけませんか?

========================================
さて、本題です。

> 外部フォントが有効になっているものに対応して変化するタイプなので、
> AKGそれぞれのOn/Offで7種類必要かと思いますが、
> 日本語モードの場合は[Aあ外]のような感じでもいいかもですね。
> そこのところは、Colon様におまかせします。(^^;

現在は {Ex GK} のような表示ですが、この場合であっても ASCII 文字は入力できるので、そこをどううまく伝えようかというのが悩みどころです。

> 連続入力の印なので、「選」アイコンの方がいいかもしれません。(^^)

了解しました。(^^)

Re: Re^4: C.Basic for CG v1.44β (より使いやすく色々と変更していってみる版)その15仕様変更版差し替えです。

sentaro様、iron2様、Colon様、CalcLoverHK様、C.Basicユーザーの皆様、


> 18:47に再アップしてますので、それ以前の場合は再ダウンロードよろしくお願いします。(^^)

はい、対応している最中に差替えアップデートを見つけたので、最奥済みです。

お疲れ様です。

あとは、FX版のアップデートですね(^^)

Re^4: C.Basic for CG v1.44β (より使いやすく色々と変更していってみる版)その15仕様変更版差し替えです。

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

Colon様、
>すべて修正を確認しました。

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


>ファイル名の末尾に "_" がついたものがありますが、意図的なものでしょうか?

うわ、一つ前の古いバージョンの方を同梱してしまいました。(^^;
ってことで、差し替えアップしました。


>さて、「入」以外のアイコンですが、残るは CHAR 画面のみとなりました。
>まず、[F6] の表示内容をどうしましょうか?

外部フォントが有効になっているものに対応して変化するタイプなので、
AKGそれぞれのOn/Offで7種類必要かと思いますが、
日本語モードの場合は[Aあ外]のような感じでもいいかもですね。
そこのところは、Colon様におまかせします。(^^;


>また、現在反転を行っているアイコンについて、「選」アイコンに変更するかこのままの形式にするかどちらがよいでしょうか?

連続入力の印なので、「選」アイコンの方がいいかもしれません。(^^)



(追記)
タッチの差で管理人様が!

管理人様、
>ネットワーク接続が許されないところで金曜夕方から仕事をしていて、先ほど帰ってきました。
>ほんの2日でのコメント数の多さに驚き。その間改善が一気に進んでさらに驚く。
>お疲れ様です。

こちらこそ、おつかれさまです。
FKeyMenu()と行列表示画面はColon様の強力サポートのおかげで一段落しました。(^^)


>マニュアルの修正版は、うまく表現して分かりやすくなって、これなら誰でも分かる内容になったと思います。
>これから、とりあえずアップデート対応した上で、実際に触ってみたいと思います。

18:47に再アップしてますので、それ以前の場合は再ダウンロードよろしくお願いします。(^^)

Re^3: C.Basic for CG v1.44β (より使いやすく色々と変更していってみる版)その15仕様変更版差し替えです。

sentaro様、iron2様、Colon様、CalcLoverHK様、C.Basicユーザーの皆様、

管理人のやすです。


ネットワーク接続が許されないところで金曜夕方から仕事をしていて、先ほど帰ってきました。
ほんの2日でのコメント数の多さに驚き。その間改善が一気に進んでさらに驚く。
お疲れ様です。

I worked at a special place where any personal communication is prohibited, I just came back home now. Only in 2 days I'm surprised at so many comments and improvement of Matrix list and FKeyMenu(.
Thank you for your good work.


@CalcLoverHK
The problem now you have is based on specification of the comment system.
When you upload an original comment, you need to input pass word in the single line input box "パスワード" which locates below comment input box. Unless you input the pass word, you cannot edit your original comment. This is what you face. So please input pass word, then please remember and input the pass word to edit your comment.


sentaro様、Colon様

マニュアルの修正版は、うまく表現して分かりやすくなって、これなら誰でも分かる内容になったと思います。

これから、とりあえずアップデート対応した上で、実際に触ってみたいと思います。

Re^3: C.Basic for CG v1.44β (より使いやすく色々と変更していってみる版)その15仕様変更版差し替えです。

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
> 再修正しました。(^^)

すべて修正を確認しました。

> PCからでも半角スペースは1文字しか認識されないようです。
> 全角スペースだと全部Okみたいです。(^^)

私のスマホも全角スペースは大丈夫っぽいです。

ちなみに、たまに全角スペースの連続もダメな OS やブラウザがあるらしく、このため Wikipedia 日本語版では原則全角スペース禁止らしいです。

> ・ReadMe、マニュアル更新しました。

ファイル名の末尾に "_" がついたものがありますが、意図的なものでしょうか?


さて、「入」以外のアイコンですが、残るは CHAR 画面のみとなりました。

まず、[F6] の表示内容をどうしましょうか?

また、現在反転を行っているアイコンについて、「選」アイコンに変更するかこのままの形式にするかどちらがよいでしょうか?

Re:Re: C.Basic for CG v1.44β (より使いやすく色々と変更していってみる版)その15仕様変更版差し替えです。

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

Colon様、
>Dot / Str モードと通常モードを切り替えても、通常モード側の進数設定が残っているのも良いですね!
>ワンタッチで「文字列↔️16 進数」を切り替えられるので、これは重宝することになりそうです。(^^)

ありがとうございます!
今回の一連のアップデートが「より使いやすくするアップデート」なので、良かったです。(^^)


>直っていない箇所と報告漏れ (すみません……) をお伝えします。

>・ 行列一覧画面の [F3] (DIM) で、X, Y が大文字のまま
>・ [SHIFT] + [F6] が {>Dec} の場合の修正漏れ
>・ ((NEW)) 1 bit 型の場合、[SHIFT] + [F5] / [F6] がマスク化されていない
>・ ((NEW)) 1 bit 型のドットエディタ時の [F1] (0<>1) を「白」アイコンに

>よろしくお願いします。

再修正しました。(^^)


>以下、マニュアル改定案です。
>ショートカットキー関連は一応書きましたが、不要ならば除去してください。

ありがとうございます!
ってことで更新してみました。(^^)


>※私のスマホのクリップボードの仕様上、いわゆる "半角スペース" が連続する場合にスペースの個数が変わってしまっているようです。

PCからでも半角スペースは1文字しか認識されないようです。
全角スペースだと全部Okみたいです。(^^)

C.Basic for CG v1.44β (より使いやすく色々と変更していってみる版)その15仕様変更版差し替えです。
https://pm.matrix.jp/CB/CBASICCG144beta15.zip
(build15)
・ReadMe、マニュアル更新しました。

Re: C.Basic for CG v1.44β (より使いやすく色々と変更していってみる版)その15仕様変更版差し替えです。

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
> はい、そのように仕様変更しています。(^^)

了解しました。

Dot / Str モードと通常モードを切り替えても、通常モード側の進数設定が残っているのも良いですね!
ワンタッチで「文字列↔️16 進数」を切り替えられるので、これは重宝することになりそうです。(^^)

> 修正してみました。(^^)

直っていない箇所と報告漏れ (すみません……) をお伝えします。

・ 行列一覧画面の [F3] (DIM) で、X, Y が大文字のまま
・ [SHIFT] + [F6] が {>Dec} の場合の修正漏れ
・ ((NEW)) 1 bit 型の場合、[SHIFT] + [F5] / [F6] がマスク化されていない
・ ((NEW)) 1 bit 型のドットエディタ時の [F1] (0<>1) を「白」アイコンに

よろしくお願いします。


以下、マニュアル改定案です。
ショートカットキー関連は一応書きましたが、不要ならば除去してください。

※私のスマホのクリップボードの仕様上、いわゆる "半角スペース" が連続する場合にスペースの個数が変わってしまっているようです。

-------------------------------------------------------------------------------
行列エディタ画面
-------------------------------------------------------------------------------
・行列一覧画面(操作方法は行列・リスト・ベクトル共通です。)
※アドレス指定で確保した行列は一覧表示で*マークが付きます。

-[F1] (DEL) 選択されている行列・リスト・ベクトルを消去します。
-[F2] (DEL-ALL) すべての行列・リスト・ベクトルを消去します。
-[F3] (DIM) 行列・リスト・ベクトルの次元、要素サイズ、インデックス開始値を設定します。
-[F4] (INITIAL) 選択されている行列・リスト・ベクトルのすべての要素を初期化します。
-[F5] (Mat#/Lst#/Vct#) 番号を指定してジャンプします。
-[F6] (A<>a) 大文字小文字(リストの場合は 1 - 26 と️ 27 - 52)を切り替えます。

-[EXE] 行列編集画面に入ります。(詳細後述)

-[SHIFT]+[F1] (>Mat) 行列一覧に切り替えます。
-[SHIFT]+[F2] (>List) リスト一覧に切り替えます。
-[SHIFT]+[F3] (>Vct) ベクトル一覧に切り替えます。

-[OPTN] Mat<>Listの切り替えをします。
-[VARS] Mat<>Vctの切り替えをします。

-[LEFT] 26 戻ります。
-[RIGHT] 26 進みます。

-[SHIFT]+[UP]/[DOWN] 1ページ分スクロールします。

・ 行列編集画面
※行列編集モード時に [SHIFT]+[8] (CLIP) でコピー、[SHIFT]+[9] でペースト出来ます。
 (C.Basic) 形式なのでエディタにて行列データをペースト出来ます。
※[SHIFT]+カーソルキーで改ページ出来ます。

-[F1] (EDIT) 行列の要素を編集します。
-[F2] (GO) 要素を指定してジャンプします。
-[F3] (INITIAL) すべての要素を初期化します。
-[F4] (>x,y / >m,n) 表示形式を切り替えます。

-[SHIFT]+[F5] (>Bin / >Dec) 10<>2進数表示を切り替えます(ニブル(4ビット)、バイト(1バイト)、ワード(2バイト)型行列で有効)。[F5] でショートカットできます。
-[SHIFT]+[F6] (>Hex / >Dec) 10<>16進数表示を切り替えます(1ビット、複素数(16バイト)型以外で有効、実数(8バイト)型は内部データをそのまま表示)。[F6] でショートカットできます。

-[SHIFT]+[F2] (DotEd) 数値編集モード<>ドットエディタを切り替えます。[OPTN] でショートカットできます。
-[SHIFT]+[F3] (StrEd) 数値編集モード<>文字列編集モードを切り替えます。[VARS] でショートカットできます。

以下、g3mモードのみ(1ビット行列を除く)
-[SHIFT]
[5] ニブル(4ビット)では4ビットカラー値を、それ以外では16ビットカラー値を入力します。
[6] 16ビットカラー値を入力します。(ニブル(4ビット)行列を除く)


(ドットエディタ)
※数値編集モードとの相違点のみ説明します。
・行列の各要素の値をカラーコードとして扱います。
 1ビット行列およびg1mモードでは0が白、1が黒です。
 ニブル(4ビット行列)では4ビットカラー値です。

-[F1] (0<>1) 要素の値を0<>1で切り替えます。(1ビット行列およびg1mモード)
-[F1] ファンクションメニューに表示されている色に切り替えます。(g3mモードかつ1ビット行列以外)
   ※既にその色である場合は黒に切り替えます。
-[SHIFT]+[F1] (↓) 選択している要素の色を [F1] に設定します。(g3mモードかつ1ビット行列以外)

C.Basic for CG v1.44β (より使いやすく色々と変更していってみる版)その15仕様変更版差し替えです。

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

@CalcLoverHK
Thanks!
Actually, "," is more troublesome for parsing.
It is simpler to have a prefix character for each argument.^^


Colon様、
>お試し版のうちに仕様変更ということですね。

あ、そういうことになりますね。
もともとbuild版はお試し版でしたね。(^^;


>"~" を使うのは思い付きませんでした。
>こちらのほうが可読性が高くて良いですね。

ありがとうございます!
引数の省略での","が増えすぎると、その可読性のところでどうかなと思ってました。(^^)


>"FKeyMenu(" コマンドですが、不具合は見つけられませんでした。

チェックありがとうございます!
これで一安心ですね。(^^)


>管理人様 OK が出れば、これで完成で良いと思います。

アイコン幅を広げるオプション発案者のCalcLoverHK様もこれでいいとのことなので、決定ってことでいいでしょうか?(^^) >管理人様


>ところで、行列のエディタ画面も改善してくださっていたのですね。
>気づかずに済みません。

あ、いえいえ、すぐ直せるところは早めに直しておかないとなんやかんやで延び延びになってしまうので…(^^;


>{TOOL} をこの段階からマスク化表示しておくのは、導入予定ということでわかりやすいですね! (^^)

アイコンをマスク表示するというのはいろいろ使えますね。(^^)


>また、従来可能だった DotEdit かつ StrEdit や、(DotEdit または StrEdit) かつ (Bin または Hex) は出来ないように仕様変更、という認識でよろしいでしょうか?

はい、そのように仕様変更しています。(^^)


>次に、何点か修正していただきたい点です。
>・ エディタ画面での "->x, y" への変更に伴い、DIM ポップアップや設定の "Mat Dsp mode" の X, Y を x, y に変更
>・ 当面の間、[SHIFT] + [F2] を {DotEd} に変更。「選」になったときに見た目が悪いため。
>・ 同じ理由により、[SHIFT] + [F3] を {StrEd} に変更。
>・ [SHIFT] + [F4] (TOOL) は #284 に変更
>・ [SHIFT] + [F5] / [F6] (>Bin / >Hex / >Dec) は「白」アイコンに変更
>よろしくお願いします。

修正してみました。(^^)


C.Basic for CG v1.44β (より使いやすく色々と変更していってみる版)その15仕様変更版差し替えです。
https://pm.matrix.jp/CB/CBASICCG144beta15.zip

[18:36 追記あり] Re:Re: C.Basic for CG v1.44β (より使いやすく色々と変更していってみる版)その15仕様変更版

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
> 元に戻しました。
> 上手く動作しているものは変更しては駄目ですね。(^^;
> ってことで、同じ色を指定した場合は文字列は描画されない、というのが仕様となります。

了解しました。(^^)

> 先の案を変更してみました。とりあえずお試し版です。(^^;

お試し版のうちに仕様変更ということですね。

"~" を使うのは思い付きませんでした。
こちらのほうが可読性が高くて良いですね。

[追記 2020/02/08 18:36]

"FKeyMenu(" コマンドですが、不具合は見つけられませんでした。
管理人様 OK が出れば、これで完成で良いと思います。


ところで、行列のエディタ画面も改善してくださっていたのですね。
気づかずに済みません。

{TOOL} をこの段階からマスク化表示しておくのは、導入予定ということでわかりやすいですね! (^^)

また、従来可能だった DotEdit かつ StrEdit や、(DotEdit または StrEdit) かつ (Bin または Hex) は出来ないように仕様変更、という認識でよろしいでしょうか?

次に、何点か修正していただきたい点です。

・ エディタ画面での "->x, y" への変更に伴い、DIM ポップアップや設定の "Mat Dsp mode" の X, Y を x, y に変更
・ 当面の間、[SHIFT] + [F2] を {DotEd} に変更。「選」になったときに見た目が悪いため。
・ 同じ理由により、[SHIFT] + [F3] を {StrEd} に変更。
・ [SHIFT] + [F4] (TOOL) は #284 に変更
・ [SHIFT] + [F5] / [F6] (>Bin / >Hex / >Dec) は「白」アイコンに変更

よろしくお願いします。

Re: C.Basic for CG v1.44β (より使いやすく色々と変更していってみる版)その15仕様変更版

@Sentaro21
Oh, this syntax is good! I thought the "n~m" thing is impossible (^^;

C.Basic for CG v1.44β (より使いやすく色々と変更していってみる版)その15仕様変更版

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

先の案を変更してみました。とりあえずお試し版です。(^^;

管理人様、CalcLoverHK様、Colon様、
サンプルプログラムを仕様変更に対応して書き換えております。(^^)


C.Basic for CG v1.44β (より使いやすく色々と変更していってみる版)その15仕様変更版
https://pm.matrix.jp/CB/CBASICCG144beta15.zip
(build15)
・FkeyMenu(コマンドの範囲指定の書式を変更しました。
(書式)FKeyMenu( n[~m], "文字列"/アイコン番号 [,C/M/N/R/I/S/U/L [,アイコン色 [,アイコン背景色]]] )
 ※ "アイコン色" はデフォルトで黒い部分の色指定です。
 ※ "アイコン背景色" はデフォルトで白い部分の色指定です。
 ※ 3 番目以降の引数は省略可能です。引数を省略した場合でも”,"は必要です。
(例)FKeyMenu (1, "string",,Blue )
(例)FKeyMenu (2~3, "longstring",R,RGB(255,0,0))
(例)FKeyMenu (4~5, "longstring",I,Red ,Yellow )

Re^7: C.Basic for CG v1.44β (より使いやすく色々と変更していってみる版)その14修正差し替えです。

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

Colon様、
>修正確認しました。

一安心です。(^^)


>恐らくこれの修正時にレイヤーがおかしくなっているみたいなので、確認お願いします。
>セットアップの {S.Mem} / {MainM} や、変数画面の {INT%} / {DBL#} / {CPLX} などで確認できます。

元に戻しました。
上手く動作しているものは変更しては駄目ですね。(^^;
ってことで、同じ色を指定した場合は文字列は描画されない、というのが仕様となります。

C.Basic for CG v1.44β (より使いやすく色々と変更していってみる版)その14再々修正差し替えです。
https://pm.matrix.jp/CB/CBASICCG144beta14c.zip


ところで、
FKeyMenu()の範囲指定ですが、
FKeyMenu(1,"ABCDE",R,3)

FKeyMenu(1~3,"ABCDE",R)
とするのはどうでしょうか?
","が続くので
アイコンはインを
純正でも、
0→A~Z
という範囲指定仕様がありますので、それに倣った感じです。(^^)

(書式)FKeyMenu( n[~m], "文字列"/アイコン番号 [,C/M/N/R/I/S/U/L [,アイコン色 [,アイコン背景色]]] )

という感じになります。

Re^6: C.Basic for CG v1.44β (より使いやすく色々と変更していってみる版)その14修正差し替えです。

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
> ダウンロードしてみたら何かおかしいみたいです。
> ってことで、ファイル名変更しました。(^^;

ありがとうございます。(^^)
無事ダウンロードできました。

> [F5] (Mat#/List#/Vct#) ですが、今度は奇数番目ブロックに跳ぶ場合に本来より 3 行下に行ってしまいます。
> あと、53 - 104 のときに [F6] がマスク化されない不具合があります。
> まず、マスクの色が "FKeyMenu(" コマンドの引数ではなく、事前にある Back-Color コマンドで指定する色になってしまっています。
> また、マスク範囲が右に 1 ドット広くなっています。

修正確認しました。

> 次に、文字列指定時に "アイコン色" と "アイコン背景色" が同じだと文字列のはみ出しが無くなるようですが、これは仕様でしょうか?

恐らくこれの修正時にレイヤーがおかしくなっているみたいなので、確認お願いします。

セットアップの {S.Mem} / {MainM} や、変数画面の {INT%} / {DBL#} / {CPLX} などで確認できます。

Re^5: C.Basic for CG v1.44β (より使いやすく色々と変更していってみる版)その14修正差し替えです。

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

Colon様、
>前回のバージョンと変わっていないっぽいので、確認お願いします。(^^;

ダウンロードしてみたら何かおかしいみたいです。
ってことで、ファイル名変更しました。(^^;

https://pm.matrix.jp/CB/CBASICCG144beta14b.zip

Re^4: C.Basic for CG v1.44β (より使いやすく色々と変更していってみる版)その14修正差し替えです。

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
> ちょこっと修正してみましたが、どうでしょう?
> 相変わらず簡潔ですが…(^^;

大丈夫だと思います。

> 修正しました。(^^)

前回のバージョンと変わっていないっぽいので、確認お願いします。(^^;

Re^3: C.Basic for CG v1.44β (より使いやすく色々と変更していってみる版)その14修正差し替えです。

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

Colon様、
早速のバグ出しありがとうございます!(^^)

>私がごたごた書いたのは、SysCall 0x130 の加減で「省略すると黒になります」とか「デフォルトは黒です」とは断定できないためです。(^^;

あ、了解です。(^^)
ちょこっと修正してみましたが、どうでしょう?
相変わらず簡潔ですが…(^^;


>[F5] (Mat#/List#/Vct#) ですが、今度は奇数番目ブロックに跳ぶ場合に本来より 3 行下に行ってしまいます。
>あと、53 - 104 のときに [F6] がマスク化されない不具合があります。
>まず、マスクの色が "FKeyMenu(" コマンドの引数ではなく、事前にある Back-Color コマンドで指定する色になってしまっています。
>また、マスク範囲が右に 1 ドット広くなっています。
>次に、文字列指定時に "アイコン色" と "アイコン背景色" が同じだと文字列のはみ出しが無くなるようですが、これは仕様でしょうか?

修正しました。(^^)

C.Basic for CG v1.44β (より使いやすく色々と変更していってみる版)その14修正差し替えです。
https://pm.matrix.jp/CB/CBASICCG144beta14.zip
(build14)
・行列画面で53以降の拡張領域の一覧表示をサポートしました。
[←]:26戻ります。
[→]:26進みます。
・FkeyMenu(コマンドを拡張しました。
(書式xx)FKeyMenu( n, "文字列"/アイコン番号 [,C/M/N/R/I/S/U/L [,m [,アイコン色 [,アイコン背景色]]]] )
 ※ "アイコン色" はデフォルトで黒い部分の色指定です。
 ※ "アイコン背景色" はデフォルトで白い部分の色指定です。
 ※ 3 番目以降の引数は省略可能です。引数を省略した場合でも”,"は必要です。
(例)FKeyMenu (1, "string",,,Blue )
(例)FKeyMenu (2, "string",R,3,RGB(255,0,0))
(例)FKeyMenu (2, "string",R,3,RGB(255,0,0),Yellow)



@CalcLoverHK
Thanks!
I hope that changing the Fkey color will expand the possibilities of the application.(^^)

>you check all the commands that has similar structure to FKeyMenu (and implied this to them?

There are many similar cases in ML commands.

Re^2: C.Basic for CG v1.44β (より使いやすく色々と変更していってみる版)その14修正差し替えです。

Hi all Japanese members

@ Sentaro21
Nice updates on supporting colors! I've been thinking about the necessity of this feature before you add it in C.Basic, but you made it possible anyway ^^

> After the omitted argument some other arguments can be put, and in this case "," is required right before the omitted parameter.Did

you check all the commands that has similar structure to FKeyMenu (and implied this to them?

@Krtyski
(Please remove my older message because this message is newer ^^; Thanks.)
When I tried to edit my comments, it always refresh the website and simply doesn't display the message I wanted to edit.The address bar after I clicked the edit link is https://egadget.blog.fc2.com/?no=685. But when clicking others' comments, it approved me, and auto-filled the necessary items and message.

I tried to type the address manually to get into the editing page to edit my message. (https://egadget.blog.fc2.com/?mode=edit&rno=5034/, my previous message no. is 5034) It succeed, but later when I clicked "sending", the system needs password. I don't even know the password (^^;

Do you know why?

Cheers
CalcLoverHK

"FKeyMenu(" バグチェック結果

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
> 76 通り "だけ" ってだいぶ感覚麻痺ですが……。(^^;

> たぶん、今回で仕様上のバグは潰せたと思いますが、
> Colon様チェックに合格すれば一安心できますね。(^^)

終わりました。(^^)

まず、マスクの色が "FKeyMenu(" コマンドの引数ではなく、事前にある Back-Color コマンドで指定する色になってしまっています。
また、マスク範囲が右に 1 ドット広くなっています。

これらの現象は、

Back-Color Black
FKeyMenu(1, "", CM

で確認できます。

次に、文字列指定時に "アイコン色" と "アイコン背景色" が同じだと文字列のはみ出しが無くなるようですが、これは仕様でしょうか?

(例)FKeyMenu(1, "ABCDEF")
(例)FKeyMenu(1, "ABCDEF",,, Black, Black)

この 2 つを実行していただければわかります。

Re: C.Basic for CG v1.44β (より使いやすく色々と変更していってみる版)その14修正差し替えです。

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
> アイコン色は黒、背景は白と断定しました。(^^;
> 説明を短くしてしまうのは悪い癖ですね。(^^;

私がごたごた書いたのは、SysCall 0x130 の加減で「省略すると黒になります」とか「デフォルトは黒です」とは断定できないためです。(^^;


行列画面について。

[F5] (Mat#/List#/Vct#) ですが、今度は奇数番目ブロックに跳ぶ場合に本来より 3 行下に行ってしまいます。

あと、53 - 104 のときに [F6] がマスク化されない不具合があります。


では、これより "FKeyMenu(" のチェックに入ります。m(_ _)m

Re^10: C.Basic for CG v1.44β (より使いやすく色々と変更していってみる版)その14差し替えです。

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

Colon様、
投稿後にColon様のコメントが出てきたので、
コメントが前後してすみません!(^^;

>引数としてのアイコン色はすべてデフォルトで "黒" ですので、
>「"アイコン色" はデフォルトで黒い部分の色指定」という方向からの説明にしたほうがよいと思います。

アイコン色は黒、背景は白と断定しました。(^^;
説明を短くしてしまうのは悪い癖ですね。(^^;
次の最終build15で修正します。(^^)


>私が報告した List や Vct での不具合と似ていますね。
>List や Vct 側の不具合を修正したら自然と直るかも? ぐらいに思っておきます。
>番号と何行目かだけであれば Int÷ で相互変換できるので難しくありませんが、
>実配列がバラバラとなると大変ですね。(^^;

リスト表示上の順番と実際の行列の対応を勘違いというか間違えていたので、変てこなバグが発生していました。(^^;
ってことで今回で修正されたと思います。(^^)


>修正が入る度に 268 通りの動作チェックをしていると何回か日が暮れそうなので、(^^;
>管理人様ご報告のバグを修正していただいてから詳しいチェックに入ります。

>その上で、U/L オプションを考慮しなければ 76 通りのチェックだけで済むようなので、
>「次回の修正 → 76 通りチェック → 修正 → 76 通りでバグが無くなったら 268 通りチェック」
>という流れにしたいと思います。

>76 通り "だけ" ってだいぶ感覚麻痺ですが……。(^^;

たぶん、今回で仕様上のバグは潰せたと思いますが、
Colon様チェックに合格すれば一安心できますね。(^^)

C.Basic for CG v1.44β (より使いやすく色々と変更していってみる版)その14修正差し替えです。

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

管理人様、
>FKeyMenu(の Manual.J/E.txt での説明の修正案を前のコメントで提示したので、ご検討ください。

ありがとうございます!
背景色は画面ではなくてアイコン部分だけの背景なので、アイコン背景色としてみました。
で、まず、更新履歴の方から修正してみました。(^^)


Colon様、
>>Mat / Vct モードにおいて、上からスクロール時、53 に到達すると 53 が先頭行に移動してしまう不具合があります。
>Mat/List/Vctの53以前の実配列が順番で並んでなく飛び飛びなの上に、<r>,θ,Ansを挟むので、このあたりの調整がちょっと大変です。(^^;

なにかの勘違いで思いっきりミスしていました。(^^;
ってことで、修正しました。(^^)

バグ出しが落ち着けば、このあたりで1.44は打ち止めとしたいと思います。(^^)

C.Basic for CG v1.44β (より使いやすく色々と変更していってみる版)その14修正差し替えです。
https://pm.matrix.jp/CB/CBASICCG144beta14.zip
(build14)
・行列画面で53以降の拡張領域の一覧表示をサポートしました。
[←]:26戻ります。
[→]:26進みます。
・FkeyMenu(コマンドを拡張しました。
(書式xx)FKeyMenu( n, "文字列"/アイコン番号 [,C/M/N/R/I/S/U/L [,m [,アイコン色 [,アイコン背景色]]]] )
 ※ 3 番目以降の引数は省略可能
 ※ 省略する引数の後に引数がある場合は、省略した引数直後に , が必要
 ※ デフォルトのFKeyアイコン色は黒、アイコン背景色は白です。
(例)FKeyMenu (1, "string",,,Blue )
(例)FKeyMenu (2, "string",R,3,RGB(255,0,0))
(例)FKeyMenu (2, "string",R,3,RGB(255,0,0),Yellow)

Re^9: C.Basic for CG v1.44β (より使いやすく色々と変更していってみる版)その14差し替えです。

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

管理人様、
マニュアル改定案ありがとうございます!(^^)

> またすれ違ってしまいましたね(^^)

コメントを確認してレスするまでのリズムが似ているんでしょうね。

> オプションの "color" は、"Fkey icon Color" / "アイコン色" に変更
> オプションの "backcolor" は、"screen back color" / "画面背景色" に変更
> さらに、デフォルトの画面背景色の説明を追加する

良いと思います。(^^)

>  ※ 省略する引数の後に引数がある場合は、省略した引数直後に , が必要

角括弧との対応関係を考えると、「省略した引数直 "前" に , が必要」になると思います。

>  ※ デフォルトのFKeyアイコン色は、
>    ・Nオプションかオプション省略時;"白"
>    ・I/R/S 設定時:"黒"

引数としてのアイコン色はすべてデフォルトで "黒" ですので、
「"アイコン色" はデフォルトで黒い部分の色指定」という方向からの説明にしたほうがよいと思います。


sentaro様、
> これに関しては、下にカーソルがある場合、53に移動したら、
> 本来は上に表示されるべきx,x,zが一回り大きくなって53~104に移動しまうので、53が先頭行に来るようにしています。(^^;

私が報告した List や Vct での不具合と似ていますね。
List や Vct 側の不具合を修正したら自然と直るかも? ぐらいに思っておきます。

> Mat/List/Vctの53以前の実配列が順番で並んでなく飛び飛びなの上に、<r>,θ,Ansを挟むので、このあたりの調整がちょっと大変です。(^^;

番号と何行目かだけであれば Int÷ で相互変換できるので難しくありませんが、
実配列がバラバラとなると大変ですね。(^^;

> うわ、268通り、(^^;

> とりあえず、管理人様の報告してくださった不具合を潰します。(^^)

修正が入る度に 268 通りの動作チェックをしていると何回か日が暮れそうなので、(^^;
管理人様ご報告のバグを修正していただいてから詳しいチェックに入ります。

その上で、U/L オプションを考慮しなければ 76 通りのチェックだけで済むようなので、
「次回の修正 → 76 通りチェック → 修正 → 76 通りでバグが無くなったら 268 通りチェック」
という流れにしたいと思います。

76 通り "だけ" ってだいぶ感覚麻痺ですが……。(^^;

Re: Re^8: C.Basic for CG v1.44β (より使いやすく色々と変更していってみる版)その14差し替えです。

Colon様、

> >管理人様が仰いたいのは、[F4] で「color: 黒、backcolor: 赤」になるべきが、「color: 黒、backcolor: 白」になってしまっているということではないでしょうか?

ありがとうございます。
異常の再現条件を探そうと思っていましたが、Colon様のように総当たり方式は想定外でした。




sentaro様、Colon様

FKeyMenu(の Manual.J/E.txt での説明の修正案を前のコメントで提示したので、ご検討ください。


Re^8: C.Basic for CG v1.44β (より使いやすく色々と変更していってみる版)その14差し替えです。

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

Colon様、
>管理人様が仰いたいのは、[F4] で「color: 黒、backcolor: 赤」になるべきが、「color: 黒、backcolor: 白」になってしまっているということではないでしょうか?

不具合を確認しました。(^^;
ありがとうございます!


>[F5] (Mat#/List#/Vct#) で、79 - 104, 131 - 156, 183 - 208, 235 - 260, 287 - 312 に跳ぶ場合、正しい位置より 3 行上にジャンプしてしまいます。

確認できました。(^^;


>Mat / Vct モードにおいて、上からスクロール時、53 に到達すると 53 が先頭行に移動してしまう不具合があります。

これに関しては、下にカーソルがある場合、53に移動したら、
本来は上に表示されるべきx,x,zが一回り大きくなって53~104に移動しまうので、53が先頭行に来るようにしています。(^^;

>Vct モードにおいて、下からスクロール時、Vct 53 より上が大文字になっています (本来小文字であるべき)。
>List モードにおいて、1 - 26, 27 - 52, 59 - 84, 88 - 113, 53 - 78, 79 - 104, …… となっており、3, 4 ブロック目に余計なものが混入しています。

確認できました。(^^;

Mat/List/Vctの53以前の実配列が順番で並んでなく飛び飛びなの上に、<r>,θ,Ansを挟むので、このあたりの調整がちょっと大変です。(^^;


>"FKeyMenu(" の動作確認を網羅するには、少なくとも 268 通りのコードを実行しなければならないようなので、"FKeyMenu(" のバグ報告はまた後程……。(^^;

うわ、268通り、(^^;

とりあえず、管理人様の報告してくださった不具合を潰します。(^^)


>オプションによっては閉じ括弧が最後ではなく途中に来る場合もあると思うので、
>括弧の個数はきちんと合わせておいたほうがよいと思います。

了解です!


>私としては v1.50β くらいになったらもう一度マニュアルのタイポ等を修正しようと考えているので、
>取り敢えず sentaro様に入力していただいておいて、後から私が括弧の個数をチェックして直すという形式でも OK です。(^^)

校正前提だとちょっと安心できます。(^^;


>カスタム FKey Icon を導入するとマニュアル訂正が必要になるので、そのときに一緒にやってしまおうかなと考えています。

よろしくお願いします。(^^)

Re: [13:54 追記あり] Re^7: C.Basic for CG v1.44β (より使いやすく色々と変更していってみる版)その14差し替えです。

Colon様、

またすれ違ってしまいましたね(^^)

FkeyMenu( の色指定の仕様について、ようやく理解したので、それを踏まえてマニュアルの記載修正の提案をアップしたところです。

Re: Re^6: C.Basic for CG v1.44β (より使いやすく色々と変更していってみる版)その14差し替えです。

sentaro様、iron2様、Colon様、CalcLoverHK様、C.Basicユーザーの皆様、


> FKeyMenu()での色指定ですが、
> これは文字色の色指定ではなくアイコン自体の色指定となっています。
> つまり文字列のない空白のアイコンを表示したときの色指定ということです。
> なので、文字色指定したつもりでの色指定だと、黒アイコンと白アイコンでは文字色は逆の色になってしまいます。

> ところで、C.Basicでは画面全体の背景色が変更できますが、FKeyMenu()ではその背景色指定の影響を受けません。
> デフォルトでは今まで通りの白背景の黒アイコンになります。
> ということで、アイコンの背景を画面全体の背景色に合わせるには個別に背景色指定が必要になります。
>
> 結構ややこしい仕様ですが、従来互換を考慮するとこういう仕様になってしまいました。(^^;

FKeyMenu( の色指定について、仕様をすっかり間違って受け止めていましたが、ようやく理解しました。

ありがとうございます。


すると、FKeyMenu( のコマンドリファレンスを、次のようにした方が分かりやすいかも知れません。

オプションの "color" は、"Fkey icon Color" / "アイコン色" に変更
オプションの "backcolor" は、"screen back color" / "画面背景色" に変更
さらに、デフォルトの画面背景色の説明を追加する

----------------------------------
FKeyMenu(
----------------------------------
(書式xx)FKeyMenu( n, "文字列"/アイコン番号 [,C/M/N/R/I/S/U/L [,m [,アイコン色 [,画面背景色]]]] )
 ※ 3 番目以降の引数は省略可能
 ※ 省略する引数の後に引数がある場合は、省略した引数直後に , が必要
 ※ デフォルトのFKeyアイコン色は、
   ・Nオプションかオプション省略時;"白"
   ・I/R/S 設定時:"黒"


----------------------------------
FKeyMenu(
----------------------------------
(Format xx)FKeyMenu( n, "string"/Icon # [,C/M/N/R/I/S/U/L [,m [,FKey icon color [,screen back color]]]] )
- 3rd or later arguments can be omitted.
- After the omitted argument some other arguments can be put, and in this case ","
   is required right before the omitted parameter.
- Default color of FKey icon is
  - White when N option is set or omitted
  - Black when R/I/S option are set


ユーザー向けには、このような書式説明なら、多分最初から分かるのではないかと思いますが、如何でしょうか?

[13:54 追記あり] Re^7: C.Basic for CG v1.44β (より使いやすく色々と変更していってみる版)その14差し替えです。

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

管理人様、sentaro様、
> 以下を実行すると、

>  FKeyMenu(1,"Str",I,,Blue )
>  FKeyMenu(2,"Str",I,,Blue ,Red )
>  FKeyMenu(3,"Str",I,,White ,Red )
>  FKeyMenu(4"Str",I,,,Red )

> [F1]:文字色 White、背景 Blue
> [F2]:文字色 Red、背景 Blue
> [F3]:文字色 Red、背景 White
> [F4]:文字色 White、背景 Black

> 仕様通りになりません。

管理人様が仰いたいのは、[F4] で「color: 黒、backcolor: 赤」になるべきが、「color: 黒、backcolor: 白」になってしまっているということではないでしょうか?

> なお、文字色=透過色という点も、マニュアルに明記した方が良いと思われませんか?

これですが、「color はデフォルトで黒で表示される箇所の色指定、backcolor はデフォルトで白で表示される箇所の色指定だ」ということを説明すれば良いと思います。

あまり気にしていませんでしたが、確かに "color" / "backcolor" のみだと何処のことなのか分かりづらいですね。


sentaro様、
> よろしくお願いします。(^^)
> とりあえずリストの番号がおかしいバグが見つかりましたので修正再アップしてます。(^^;

取り敢えず行列画面のバグをまとめてお伝えします。

[F5] (Mat#/List#/Vct#) で、79 - 104, 131 - 156, 183 - 208, 235 - 260, 287 - 312 に跳ぶ場合、正しい位置より 3 行上にジャンプしてしまいます。
CG20 では完全には調べられませんが、26 ずつに分けたブロックの 4, 6, 8, 10, 12 個目で不具合が発生しているので、それ以降の偶数番目ブロックも同様のバグがあるのではと推測します。

Mat / Vct モードにおいて、上からスクロール時、53 に到達すると 53 が先頭行に移動してしまう不具合があります。

Vct モードにおいて、下からスクロール時、Vct 53 より上が大文字になっています (本来小文字であるべき)。

List モードにおいて、1 - 26, 27 - 52, 59 - 84, 88 - 113, 53 - 78, 79 - 104, …… となっており、3, 4 ブロック目に余計なものが混入しています。

"FKeyMenu(" の動作確認を網羅するには、少なくとも 268 通りのコードを実行しなければならないようなので、"FKeyMenu(" のバグ報告はまた後程……。(^^;


> この際、閉じカッコはひとつでも良くないですか?(^^;

オプションによっては閉じ括弧が最後ではなく途中に来る場合もあると思うので、
括弧の個数はきちんと合わせておいたほうがよいと思います。

私としては v1.50β くらいになったらもう一度マニュアルのタイポ等を修正しようと考えているので、
取り敢えず sentaro様に入力していただいておいて、後から私が括弧の個数をチェックして直すという形式でも OK です。(^^)

カスタム FKey Icon を導入するとマニュアル訂正が必要になるので、そのときに一緒にやってしまおうかなと考えています。

[追記] (2020/02/07 13:54)
SysCall 0x130 を見つけたときに使ったテストプログラムを走らせてみましたが、
現在の "FKeyMenu(" コマンドでは、"color" を省略した場合は SysCall 0x130 での設定に準拠し、"backcolor" を省略した場合は "White" になるという認識でよろしいでしょうか?

Re^6: C.Basic for CG v1.44β (より使いやすく色々と変更していってみる版)その14差し替えです。

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

Colon様、
>ぱっといじって見たらまだバグがあったので、
>後程詳しく調査の上、Mat 画面のバグと併せて報告します。

よろしくお願いします。(^^)
とりあえずリストの番号がおかしいバグが見つかりましたので修正再アップしてます。(^^;

>閉じ角括弧が 1 つ多いです。(^^;

あ゛…多すぎました。(^^;
この際、閉じカッコはひとつでも良くないですか?(^^;



管理人様、
>build 14 の差替えアップデートに対応しました。

いつもありがとうございます!(^^)

>ということで、再修正版をアップしました。
http://pm.matrix.jp/upload/upload.cgi?get=00084

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


>FKeyMenu( の色設定で、予期せぬ動作をするので、ご確認ください。

>以下を実行すると、
> FKeyMenu(1,"Str",I,,Blue )
> FKeyMenu(2,"Str",I,,Blue ,Red )
> FKeyMenu(3,"Str",I,,White ,Red )
> FKeyMenu(4"Str",I,,,Red )

>[F1]:文字色 White、背景 Blue
>[F2]:文字色 Red、背景 Blue
>[F3]:文字色 Red、背景 White
>[F4]:文字色 White、背景 Black

>仕様通りになりません。
>異常発生の条件が掴み切れていません。

FKeyMenu()での色指定ですが、
これは文字色の色指定ではなくアイコン自体の色指定となっています。
つまり文字列のない空白のアイコンを表示したときの色指定ということです。
なので、文字色指定したつもりでの色指定だと、黒アイコンと白アイコンでは文字色は逆の色になってしまいます。

ちなみに、以前にColon様が大発見したところのファンクションアイコンの色指定ですが、
ここで指定された色がFKeyMenuでのアイコン色のデフォルト色になっています。
背景は白固定なので白設定は意味がありません。(^^;

----------------------------------------------
SysCall(0x130,0) // 黒アイコン(デフォルト)
SysCall(0x130,2,0) // 黒
SysCall(0x130,2,1) // 青
SysCall(0x130,2,2) // 緑
SysCall(0x130,2,3) // シアン
SysCall(0x130,2,4) // 赤
SysCall(0x130,2,5) // マゼンタ
SysCall(0x130,2,6) // 黄
SysCall(0x130,2,7) // 白(アイコン消滅(^^;

SysCall(0x130,1,0) //現在の色を取得
----------------------------------------------

ところで、C.Basicでは画面全体の背景色が変更できますが、FKeyMenu()ではその背景色指定の影響を受けません。
デフォルトでは今まで通りの白背景の黒アイコンになります。
ということで、アイコンの背景を画面全体の背景色に合わせるには個別に背景色指定が必要になります。

結構ややこしい仕様ですが、従来互換を考慮するとこういう仕様になってしまいました。(^^;

Re^5: C.Basic for CG v1.44β (より使いやすく色々と変更していってみる版)その14差し替えです。

Colon様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、


> 管理人様、
> またタッチの差でしたね。(^^;

ですね!
息がピッタリ合い過ぎます(^^)


Colon様、sentaro様、
1つ前の私のコメントに書いたように、文字色設定を追加したところで、バグがあるようです。

敢えてユーザー視線で考えてみますと、文字色設定を一番最後の引数にして貰った方が、有り難いです。
FKeyアイコンとして使う前提だと、透過色設定無しで背景設定したいことが、少なくとも私は多いと思うので、省略しやすい最後の引数を透過色設定にして頂きたいと感じます。

私としては、1つ前の透過色設定無しの方が使いやすいと感じていることも、透過色設定を最後の引数にしていただきたい理由になります。


なお、文字色=透過色という点も、マニュアルに明記した方が良いと思われませんか?

[10:59 修正あり] Re^4: C.Basic for CG v1.44β (より使いやすく色々と変更していってみる版)その14差し替えです。

sentaro様、iron2様、Colon様、CalcLoverHK様、C.Basicユーザーの皆様、

管理人のやすです。

[10:59 修正あり]

FKeyMenu( の色設定で、予期せぬ動作をするので、ご確認ください。

以下を実行すると、

 FKeyMenu(1,"Str",I,,Blue )
 FKeyMenu(2,"Str",I,,Blue ,Red )
 FKeyMenu(3,"Str",I,,White ,Red )
 FKeyMenu(4"Str",I,,,Red )

[F1]:文字色 White、背景 Blue
[F2]:文字色 Red、背景 Blue
[F3]:文字色 Red、背景 White
[F4]:文字色 White、背景 Black

仕様通りになりません。
異常発生の条件が掴み切れていません。

Re:Re: C.Basic for CG v1.44β (より使いやすく色々と変更していってみる版)その14差し替えです。

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

管理人様、
またタッチの差でしたね。(^^;

> 文字色で右下の三角領域や枠が描画されないほうが良いと思われませんか?

FKeyMenu(1, 1,,,, Cyan

などのことを考えると難しいと思います。
アイコンのデータの構成は「黒・白・透過」ではなく「黒・透過」であるためです (アイコンの背景色ではなく、あくまでアイコンの描画領域の背景色であることと同値)。

それから、アイコンを作る側としては三角領域の描画はそのままにしていただいたほうがありがたいです。
文字数や文字の並び方によっては右下領域にわざと文字をはみ出させる場合がありますが、これは三角領域と文字の色が同じである場合に発生する目の錯覚を利用して可読性を確保しているので、三角領域と文字色は同一でないとデザイン上不都合が生じます。(^^;

ということを考慮すると、見た目が気になるならば背景色指定は個々のアイコンに対してではなく、[F1] から [F6] までを指定した上で意味を持たせる、という使い方のほうがよいのかなと思います (気にならないならばあまり考えなくても良いですが)。

Re: C.Basic for CG v1.44β (より使いやすく色々と変更していってみる版)その14差し替えです。

sentaro様、iron2様、Colon様、CalcLoverHK様、C.Basicユーザーの皆様、

管理人のやすです。


build 14 の差替えアップデートに対応しました。

さて、
> FkeyMenu.g3mを差し替えましたが、
> 背景色が追加になったので、再修正お願いしました。
できれば幸いです。(^^)

ということで、再修正版をアップしました。
http://pm.matrix.jp/upload/upload.cgi?get=00084


背景を設定すると、アイコンの全領域が指定色で塗られますよね。
すると、右下が欠けた四角 (Rオプション) と文字色を同時に指定すると、欠けている右下の三角領域が文字色になってしまうのは、チョット気になりました。

また、四角塗りつぶし(Iオプション)と文字色を同時に指定すると、文字色で枠が描画されます。

上のサンプルプログラムを走らせるとよく分かると思います。

文字色で右下の三角領域や枠が描画されないほうが良いと思われませんか?


Re: C.Basic for CG v1.44β (より使いやすく色々と変更していってみる版)その14差し替えです。

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

前回の投稿で冒頭の挨拶が抜けておりました。(^^;

sentaro様、
> ってことで、戻しました。(^^;

お手数お掛けする羽目になり、申し訳ございません。
仕様の前提条件の確認不足でした。

> 背景色を追加したので、FKeyMenu()としては一応の完成かと思います。
> ですが、バグはまだあるかもしれません。(^^;

これで一段落ですね。
ぱっといじって見たらまだバグがあったので、
後程詳しく調査の上、Mat 画面のバグと併せて報告します。

> (書式)FKeyMenu( n, "文字列"/アイコン番号 [,C/M/N/R/I/S/U/L [,m [,color [,backcolor]]]]] )

閉じ角括弧が 1 つ多いです。(^^;

C.Basic for CG v1.44β (より使いやすく色々と変更していってみる版)その14差し替えです。

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

管理人様、タッチの差で、すみません!(^^;
コマンドリファレンスの英訳をありがとうございます!(^^)


Colon様、
>埋めなきゃいけないわけではないので、
>従来通り無しで良いかと思います。

了解です。(^^)
ってことで、戻しました。(^^;


>あと、将来的に CSV のサポートをして欲しい気持ちもあるので、いずれにせよ機能追加の余地を残すために埋めすぎないほうがよいと思います。

CSVは純正とデータ互換が確保できるのでサポートしておきたいところですね。


>一応キーがどこか一箇所にまとまっていたほうが良いという考えで入れましたが、
>隠しキーではなく正式キーとして強く推奨していくのであれば、左右キーのみで良いと思います。

>というわけで、ばっさり整理して
>・ A - Z ないし 1 - 26 …… {[A]<>a} (26 進む)
>・ a - z ないし 27 - 52 …… {A<>[a]} (26 戻る)
>・ 53 以上 …… 無し、ないし {A<>a} マスク化
>とするのはどうでしょうか?

了解です。
その方向で修正してみました。(^^)


背景色を追加したので、FKeyMenu()としては一応の完成かと思います。
ですが、バグはまだあるかもしれません。(^^;

C.Basic for CG v1.44β (より使いやすく色々と変更していってみる版)その14差し替えです。
https://pm.matrix.jp/CB/CBASICCG144beta14.zip
(build14)
・行列画面で53以降の拡張領域の一覧表示をサポートしました。
[←]:26戻ります。
[→]:26進みます。
・FkeyMenu(コマンドを拡張しました。
(書式)FKeyMenu( n, "文字列"/アイコン番号 [,C/M/N/R/I/S/U/L [,m [,color [,backcolor]]]]] )
 任意の色でファンクションアイコン表示が出来ます。
(例)FKeyMenu (1, "string",,,Blue )
(例)FKeyMenu (2, "string",R,3,RGB(255,0,0))
(例)FKeyMenu (2, "string",R,3,RGB(255,0,0),Yellow )


管理人様、
FkeyMenu.g3mを差し替えましたが、
背景色が追加になったので、再修正お願いできれば幸いです。(^^)

Re^7: C.Basic for CG v1.44β (より使いやすく色々と変更していってみる版)その14

管理人様、
英訳ありがとうございます!(^^)

sentaro様、
> Re^6: C.Basic for CG v1.44β (より使いやすく色々と変更していってみる版)その14

もしや、また管理人様と「タッチの差」では……? (^^;


> [SHIFT]押したときのメニューは、
> (中略)
> [F4]~[F6]はどうしましょうか?

埋めなきゃいけないわけではないので、
従来通り無しで良いかと思います。

あと、将来的に CSV のサポートをして欲しい気持ちもあるので、いずれにせよ機能追加の余地を残すために埋めすぎないほうがよいと思います。


> 今の所、従来互換を考えて、52以下では今まで通り、53以上になっているときはAにダイレクトで戻る機能にしてますが、ジャンプ機能を新設する方が良いでしょうか?

私の想定自体が A - z の画面の時は大文字↔️小文字の切り替え、53 以上の画面の時は A - z 画面への切り替えというイメージだったので、同一画面で同一キーに複数の機能を割り当てる想定ではありませんでした。
また、{>A~z} は単なる画面の変更の想定だったので、先頭へ移動という意図ではありませんでした ([F5] で事足りるため)。

53 以降 52 ごとに切り替え方法を用意していたのも、1 - 1040 を同一画面にしない前提で考えたキープレスです。

現状、[F6] の機能が
・ A - Z ないし 1 - 26 …… 26 進む
・ a - z ないし 27 - 52 …… 26 戻る
・ 53 以上 …… 先頭へ (従来なかった機能)

となっているので、これは整理したほうがよいという考えからジャンプメニューの提案をした次第です。

> 500以上とかになると[F5]でダイレクトジャンプしてもいいですし、
> カーソルキーはリピートするので26ずつジャンプするのでも結構進むのでこれでもいいかなと思っていました。(^^;

一応キーがどこか一箇所にまとまっていたほうが良いという考えで入れましたが、
隠しキーではなく正式キーとして強く推奨していくのであれば、左右キーのみで良いと思います。

ちなみに、デフォルトのキーリピートの場合、左右キー 2.875 秒長押しで 1 周する計算ですね。


というわけで、ばっさり整理して
・ A - Z ないし 1 - 26 …… {[A]<>a} (26 進む)
・ a - z ないし 27 - 52 …… {A<>[a]} (26 戻る)
・ 53 以上 …… 無し、ないし {A<>a} マスク化

とするのはどうでしょうか?
もしマスク化するというのであれば、純正の {A<>a} と私の {A<>a} はドット数の割りが違うので、別途アイコンを用意します。

もしくは、FKeyMenu(6,"",M) でも良いかもしれません。

Re^6: C.Basic for CG v1.44β (より使いやすく色々と変更していってみる版)その14

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

管理人様、
>build 14 のアップデート対応は、昨晩済ませてあります。

いつもありがとうございます!(^^)


>(例)FKeyMenu (1, "string",,,Blue )
>, を省略して
>FKeyMenu (1, "string",Blue )>とするとエラーになりますよね。途中の , は書略できないような書式は、純正Casio Basicになくて、C.Basicならではのものと思います。

純正でもViweWindowで思いっきり省略可能なのを発見してましたので、
おそらく他のパラメータでも省略可能なものがあると思われます。(^^)
(例)
ViewWindow 1,128,0,1,63,1
ViewWindow ,,,,31
Fline 1,30,127,30


>それ以降にオプションが無い場合は、, を含めてオプションを省略可能ですが、あとにオプションが続く場合は、途中のオプションは省略できても、, は省略できない仕様ですよね。

はい、構文解釈の都合上”,”は省略不可能ですね。
省略できるとしたら、引数の型が全部違っている場合で、この場合には省略可能な構文解釈は可能ですが、何かと面倒です。(^^;
ただ、エラーチェックが甘いので、最後に”,”で終わってもエラーにならないこともあります。(^^;


>(書式)FKeyMenu( n, "文字列"/アイコン番号 [,C/M/N/R/I/S/U/L [,m [,color]]] )
> ※ 3 番目以降の引数は省略可能
> ※ 省略する引数の後に引数がある場合は、省略した引数直後に , が必要

>といった感じですが、もっと分かりやすくて良い表現がありそうなのですが、スグに思いつきません。ここは皆様のお知恵拝借です。

仕様上は、Colon様が書かれている通りの以下の形になるかと思いますが、

>(書式)FKeyMenu( n, {<"文字列">/<アイコン番号>} [,[{C/M/N/R/I/S/U/L}][,[m][,[color]]]][)]

[]が多くなるので、簡潔に、こういう書き方を使用していました。(^^;

(書式)FKeyMenu( n, "文字列"/アイコン番号 [,C/M/N/R/I/S/U/L] [,m] [,color] )

”,”が省略できるコマンドは純正でもC.Basicでも無いと思いますが、
省略出来ないということはコマンド仕様例で示すこととしていました。

ってことで、
Colon様よりマニュアルでの記述例をから、
>(書式)FKeyMenu( n, {<"文字列">/<アイコン番号>} [, {C/M/N/R/I/S/U/L} [,m [,color]]][)]

これでひとまずいいのではないかと思いますが、
全部のコマンドを書き換えないといけないので、
凡例として複数の引数を持つコマンドで”,”が省略出来ない場合の説明を、
Colon様が示してくださいましたのでそれでいきたいと思います。(^^)


>ところで、7色のカラーコードとRGB( を使ったカラー設定を追加したサンプルプログラムをアップしました。
http://pm.matrix.jp/upload/upload.cgi?get=00083
>※ 16:19 に差替えアップしています。

早速のカラー対応ありがとうございます!
次のアップデートで差し替えます。(^^)



Colon様、
>まず、私が以前提案した ">53", ">107", …… については取り下げます。

あ゛…(^^;

では、
[SHIFT]押したときのメニューは、
[F1](>Mat)
[F2](>List)
[F3](>Vct)
[F4]??
[F5]??
[F6]??

[F4]~[F6]はどうしましょうか?


>次に、[F6] はもはや大文字小文字の切り替えや A - z への切り替えではないので、いっそのことジャンプ関係のメニューに入る機能を割り当てた方がわかりやすいと思います。

今の所、従来互換を考えて、52以下では今まで通り、53以上になっているときはAにダイレクトで戻る機能にしてますが、ジャンプ機能を新設する方が良いでしょうか?
500以上とかになると[F5]でダイレクトジャンプしてもいいですし、
カーソルキーはリピートするので26ずつジャンプするのでも結構進むのでこれでもいいかなと思っていました。(^^;


>となると、バックグラウンド指定も引数になりそうですね。(^^)

はい、そういうことになります。
で、背景はは白で固定のつもりだったのですが、、、


>一応動作確認したら、次の場合に事前の色指定コマンドが有効になってしまうようです。
>・ 番号指定の場合、事前の色指定および背景色指定が有効になってしまう
>・ 文字列指定かつ色指定引数がある場合、事前の背景色指定が有効になってしまう

色々とバグってますね。(^^;
この際、背景色も指定できるようにアップデートしてみます。(^^)

Re^6: C.Basic for CG v1.44β (より使いやすく色々と変更していってみる版)その14

Colon様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!


以下の修正に一票入れます!

> 多くのコマンドに共通の仕様なので、個々のコマンドリファレンスに入る前に予め注意喚起したほうがよいと思います。
>
> ===============================================================================
> コマンドリファレンス 拡張コマンド
> ===============================================================================
> 注意
> ===============================================================================
> 以下のコマンドリファレンスにおいて、角括弧 "[ ]" の中に記す引数は省略できます。
> 省略した引数の後に別の引数を指定することも出来ますが、省略した引数の直前の "," は必須です。
>
> (書式例)FKeyMenu( n, "文字列"/アイコン番号 [,C/M/N/R/I/S/U/L [,m [,color]]] )
> (省略例)FKeyMenu (1, "string" )
> (省略例)FKeyMenu (1, "string",,,Blue )
>
> -------------------------------------------------------------------------------
> ? [SHIFT]+[VARS](PRGM)-[F4](?)
> -------------------------------------------------------------------------------
> (以下略)


英語は、以下の感じでしょうか?

===============================================================================
Command Reference - Extended Command
===============================================================================
Note
===============================================================================
In the following command reference, square bracket "[ ]" shows arguments in
there can be omitted.
After the omitted parameter some parameters can be put, and in this case ","
is required right before the omitted parameter.

(Format) FKeyMenu( n, "string"/Icon # [,C/M/N/R/I/S/U/L [,m [,color]]] )
(Example) FKeyMenu (1, "string" )
(Example) FKeyMenu (1, "string",,,Blue )

-------------------------------------------------------------------------------
> ? [SHIFT]+[VARS](PRGM)-[F4](?)
> -------------------------------------------------------------------------------


Re^5: C.Basic for CG v1.44β (より使いやすく色々と変更していってみる版)その14

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
>> 1 つの画面に A から 1040 までまとめてしまうということでしょうか?

> はい、同じキーを連続で押すのは割と簡単なので、それもありかなと思いました。(^^;

了解しました。
私が何故か「52 ごとに別画面にする」という想定をしていたので、私が案を出した範囲はファンクションメニューの見直しが必要そうです。(^^;
実装のことやユーザーのわかりやすさからすれば、全部まとめたほうが簡潔ですね。

まず、私が以前提案した ">53", ">107", …… については取り下げます。
26 ジャンプの導入や [F5] (Mat#) の動作修正により必要性が低くなったことと、26 単位のジャンプと 52 単位のジャンプが混在するのはわかりにくいことが理由です。

次に、[F6] はもはや大文字小文字の切り替えや A - z への切り替えではないので、いっそのことジャンプ関係のメニューに入る機能を割り当てた方がわかりやすいと思います。

[F6] (JUMP) +
・ [F1] (>A / >1)
・ [F2] (>a / >27)
・ [F3] (-26)
・ [F4] (-7)
・ [F5] (+7)
・ [F6] (+26)

従来の "A<>a" は [←] / [→] で同じことが出来るようになったので、[F6] 一発で操作できなくなってもあまり問題はないだろうという考えです。

sentaro様の案をベースにしていますが、よく使う 1 - 52 (A - z) に跳べる動作として、{>A} / {>a} があれば便利だと思うので追加しています。
※ CASIO のマニュアルではファンクションメニューの内容を単独で表記する際に波括弧を使っていたので、それに準じて表記しようと思います。

ただし、{+7} / {-7} は画面表示上の "7" であり、{+26} / {-26} は純粋に Mat/List/Vct の数の "26" で単位が違うので、{+7} / {-7} は無いほうがわかりやすいかもしれません。
この場合、空いたキーに設定で拡張できる先頭の ">53" を割り当てるという手もあります。

[F6] (JUMP) +
・ [F1] (>A / >1)
・ [F2] (>a / >26)
・ [F3] (>53) ※ 無効の場合はマスク化
・ [F5] (-26)
・ [F6] (+26)

私はどちらかと言えば後者案が良いと思います。


ところで、最新バージョンを入れてみました。

> 通常形式でのカラー設定を許可すると、従来互換がとれないというか、
> 意図しないカラー変更が行われる可能性があるためです。

あ、確かにそうですね。
となると、バックグラウンド指定も引数になりそうですね。(^^)

一応動作確認したら、次の場合に事前の色指定コマンドが有効になってしまうようです。
・ 番号指定の場合、事前の色指定および背景色指定が有効になってしまう
・ 文字列指定かつ色指定引数がある場合、事前の背景色指定が有効になってしまう


管理人様、sentaro様、
> そこで、Colon様の案とsentaro様のまとめに加えて、途中の , は省略できない(もう少し良い表現があるように思います)、といった注を追加した方が良いのではないかと思います。

賛成です!!

> (書式)FKeyMenu( n, "文字列"/アイコン番号 [,C/M/N/R/I/S/U/L [,m [,color]]] )
>  ※ 3 番目以降の引数は省略可能
>  ※ 省略する引数の後に引数がある場合は、省略した引数直後に , が必要

> といった感じですが、もっと分かりやすくて良い表現がありそうなのですが、スグに思いつきません。ここは皆様のお知恵拝借です。

多くのコマンドに共通の仕様なので、個々のコマンドリファレンスに入る前に予め注意喚起したほうがよいと思います。

===============================================================================
コマンドリファレンス 拡張コマンド
===============================================================================
注意
===============================================================================
以下のコマンドリファレンスにおいて、角括弧 "[ ]" の中に記す引数は省略できます。
省略した引数の後に別の引数を指定することも出来ますが、省略した引数の直前の "," は必須です。

(書式例)FKeyMenu( n, "文字列"/アイコン番号 [,C/M/N/R/I/S/U/L [,m [,color]]] )
(省略例)FKeyMenu (1, "string" )
(省略例)FKeyMenu (1, "string",,,Blue )

-------------------------------------------------------------------------------
? [SHIFT]+[VARS](PRGM)-[F4](?)
-------------------------------------------------------------------------------
(以下略)

[追記あり] Re^4: C.Basic for CG v1.44β (より使いやすく色々と変更していってみる版)その14

sentaro様、iron2様、Colon様、CalcLoverHK様、C.Basicユーザーの皆様、

[追記有り]

build 14 のアップデート対応は、昨晩済ませてあります。

さて、FkeyMenu(のオプション設定ですが、, は省略できないことがあるにも関わらず、 [ ] の中に , が入ると省略して良いことになり、それではエラーにってしまいます。

具体的には、以下のsentaro様が提示された例は、, の扱い方をうまく伝えていて、, を省略してはいけない例になっています。

(例)FKeyMenu (1, "string",,,Blue )

, を省略して

FKeyMenu (1, "string",Blue )

とするとエラーになりますよね。途中の , は書略できないような書式は、純正Casio Basicになくて、C.Basicならではのものと思います。

実は、私自身、ついうっかりと途中の , を省略してエラー^になることは、他のコマンドでも経験しています。なので、表記をうまくできないらどうか?と気になっていたところで、たまたま FKeyMenu( を例にして、この件を取り上げてみたわけです。

それ以降にオプションが無い場合は、, を含めてオプションを省略可能ですが、あとにオプションが続く場合は、途中のオプションは省略できても、, は省略できない仕様ですよね。

そこで、Colon様の案とsentaro様のまとめに加えて、途中の , は省略できない(もう少し良い表現があるように思います)、といった注を追加した方が良いのではないかと思います。


(書式)FKeyMenu( n, "文字列"/アイコン番号 [,C/M/N/R/I/S/U/L [,m [,color]]] )
 ※ 3 番目以降の引数は省略可能
 ※ 省略する引数の後に引数がある場合は、省略した引数直後に , が必要

といった感じですが、もっと分かりやすくて良い表現がありそうなのですが、スグに思いつきません。ここは皆様のお知恵拝借です。


ところで、7色のカラーコードとRGB( を使ったカラー設定を追加したサンプルプログラムをアップしました。
http://pm.matrix.jp/upload/upload.cgi?get=00083
※ 16:19 に差替えアップしています。


Re:Re:Re: C.Basic for CG v1.44β (より使いやすく色々と変更していってみる版)その14

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

@CalcLoverHK
Thanks!(^^)
The emulator for Chinese was tested on VMware(WinXP).
It works well.
(Note) There is a bug that SD function can use only up to 8 characters in folder and file name.
(This bug exists in all FX emulators.)
(NG)"test\sample"
"test"+"sample" is 10 characters.
(OK)"test\ABC"
"test"+"ABC" is 7 characters


管理人様、
>この書式ですが、, を省略するとエラーになるので、
>(書式)FKeyMenu( n, "文字列"/アイコン番号 ,[C/M/N/R/I/S/U/L] ,[m] ,[color])
>とすべきではありませんか?

はい、おっしゃるとおりです。
書式の書き方がかなり適当でした。(^^;



Colon様、
>「-26戻る」というと進むことになってしまうので、説明から符号を抜いた方がよいと思います (前に前進、後ろにバックみたいな……)。

あ、たしかにそうですね。(^^;


>ふとした疑問ですが、色指定が "FKeyMenu" コマンドの前ではなく引数になるのは何らかの理由があるのでしょうか?

通常形式でのカラー設定を許可すると、従来互換がとれないというか、
意図しないカラー変更が行われる可能性があるためです。

純正CasioBasicではカラーコマンドは1コマンドのみ作用しますが、
C.BasicではML系コマンドにおいてはカラー設定がコマンド後でも初期化されません。
またカラーコマンドだけの記述もOkなので、このカラー設定が有効な状態ではそれで色が変更されてしまうので、
FKeyMenuでは引数に含めることにした次第ですが、より良い案があれば変更します。(^^)


>(書式)FKeyMenu( n, "文字列"/アイコン番号 [,C/M/N/R/I/S/U/L [,m [,color]]] )
>※ 3 番目以降の引数は省略可能

>という具合に書いておけば問題ないかと思います。(^^)

了解です!
次のアップデートより修正しておきます。(^^)

Re:Re: C.Basic for CG v1.44β (より使いやすく色々と変更していってみる版)その14

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

すぐに PC を開く元気がないので、新バージョンのインストールと細かい動作確認は夜が明けてからにします。(^^;

sentaro様、
> ・行列画面で53以降の拡張領域の一覧表示をサポートしました。
> [←]:-26戻ります。
> [→]:+26進みます。

「-26戻る」というと進むことになってしまうので、説明から符号を抜いた方がよいと思います (前に前進、後ろにバックみたいな……)。

> ・FkeyMenu(コマンドを拡張しました。
(書式)FKeyMenu( n, "文字列"/アイコン番号 [,C/M/N/R/I/S/U/L] [,m] [,color])

ふとした疑問ですが、色指定が "FKeyMenu" コマンドの前ではなく引数になるのは何らかの理由があるのでしょうか?


管理人様、sentaro様、
> この書式ですが、, を省略するとエラーになるので、

> (書式)FKeyMenu( n, "文字列"/アイコン番号 ,[C/M/N/R/I/S/U/L] ,[m] ,[color])

> とすべきではありませんか?

後ろの引数を省略する場合は後ろの "," は必要なくなるので、角括弧の中に "," を含めた上で、その角括弧をネストする必要があります。

Casio のマニュアル風に書けば、

(書式)FKeyMenu( n, {<"文字列">/<アイコン番号>} [, {C/M/N/R/I/S/U/L} [,m [,color]]][)]

となります。
※ マニュアルを "]]" で検索していただければ出てきます。

まぁ、厳密に書けば
(書式)FKeyMenu( n, {<"文字列">/<アイコン番号>} [,[{C/M/N/R/I/S/U/L}][,[m][,[color]]]][)]

となりますが、これだと何のこっちゃというのと、閉じ括弧を省略可能なのも全コマンド共通で特記する必要はないので、

(書式)FKeyMenu( n, "文字列"/アイコン番号 [,C/M/N/R/I/S/U/L [,m [,color]]] )
※ 3 番目以降の引数は省略可能

という具合に書いておけば問題ないかと思います。(^^)

Re: C.Basic for CG v1.44β (より使いやすく色々と変更していってみる版)その14

sentaro様、iron2様、Colon様、CalcLoverHK様、C.Basicユーザーの皆様、

管理人のやすです。

> ・FkeyMenu(コマンドを拡張しました。
> (書式)FKeyMenu( n, "文字列"/アイコン番号 [,C/M/N/R/I/S/U/L] [,m] [,color])

この書式ですが、, を省略するとエラーになるので、

(書式)FKeyMenu( n, "文字列"/アイコン番号 ,[C/M/N/R/I/S/U/L] ,[m] ,[color])

とすべきではありませんか?

Re: C.Basic for CG v1.44β (より使いやすく色々と変更していってみる版)その14

Hi sentaro21

Good updates as always!

By the way, good news! As I have just tested, the installer can run on Windows 2000 or onward (newer 32-bit version).

Cheers
CalcLoverHK

C.Basic for CG v1.44β (より使いやすく色々と変更していってみる版)その14

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

FKeyMenuの多色サポートと、管理人様とColon様の案を取り込んだ行列一覧画面を更新しました。
まだ確定仕様ではないので、さらなる改善案をよろしくです。(^^)

C.Basic for CG v1.44β (より使いやすく色々と変更していってみる版)その14
https://pm.matrix.jp/CB/CBASICCG144beta14.zip
(build14)
・行列画面で53以降の拡張領域の一覧表示をサポートしました。
[←]:-26戻ります。
[→]:+26進みます。
・FkeyMenu(コマンドを拡張しました。
(書式)FKeyMenu( n, "文字列"/アイコン番号 [,C/M/N/R/I/S/U/L] [,m] [,color])
 任意の色でファンクションアイコン表示が出来ます。
(例)FKeyMenu (1, "string",,,Blue )
(例)FKeyMenu (2, "string",R,3,RGB(255,0,0))

Re^9: C.Basic for CG v1.44β (より使いやすく色々と変更していってみる版)その13

@Krtyski:
Yes! You may use my information.

Re: Re^8: C.Basic for CG v1.44β (より使いやすく色々と変更していってみる版)その13

Hi CalcLoverHK

Thank you for the valuable information about the list of available platform for C.Basic.

Actually I have all those real calculators excepting fx-9860G SD (SH3) and fx-CG10, but I have almost no information about emulator.

I would like to use those emulator information in my C.Basic introduction page. Do you allow me to do this?


chao

Re^8: C.Basic for CG v1.44β (より使いやすく色々と変更していってみる版)その13

Hi sentaro21

You are welcome ^^
(Update: the installer also works on Windows XP/Vista 32-bit as I tested.)

Cheers
CalcLoverHK

Re^7: C.Basic for CG v1.44β (より使いやすく色々と変更していってみる版)その13

@CalcLoverHK
Thanks for the complete list of emulators on which C.Basic works!
The Chinese version of the emulator is rare.
I'll try it on VMware.(^^)

Re^6: C.Basic for CG v1.44β (より使いやすく色々と変更していってみる版)その13

Hi sentaro21

There is a misconception about supported models of C.Basic that I said before (in UCF). C.Basic (and also any add-in) will not work in fx-9860G SD emulator in any type of Windows, despite the fact that it has SD option to import add-in file.

I found the old version of emulator files that consist of fx-9860GII SH3 and fx-9860G Slim which support C.Basic (because their OS version is 2.00). However, the installer must be run on Windows 7 32-bit as it is only designed for that Windows version, so you have to install it in VirtualBox or VMware Player, and the emulators are Chinese in the menu (^^;

https://www.mediafire.com/file/lxpei3awjysl3jc/fx-Manager_PLUS_2.1.msi/file

Here is more accurate supported models list of C.Basic:

Real monochrome calculators (C.Basic for FX)
fx-9860G Series (OS 1.02 or above)
fx-9860GII (SH3) Series
fx-9860GII (SH4) Series

Real color graphing calculators (C.Basic for CG)
fx-CG10/20
fx-CG50

Emulators (C.Basic for FX) [Requires OS 2.00 or above]
fx-9860GII (SH3) Emulator
fx-9860G Slim Emulator
fx-Manager PLUS for fx-9860GII (SH4)/Graph 75+E
fx-Manager PLUS for Graph 35+EII

Emulators (C.Basic for CG)
fx-CG Manager PLUS for fx-CG10/20
fx-CG Manager PLUS for fx-CG50

(* The item without (<OS version>) indicates that C.Basic can support all OS versions of it.)

Cheers
CalcLoverHK

Re^5: C.Basic for CG v1.44β (より使いやすく色々と変更していってみる版)その13

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

Colon様、
>1 つの画面に A から 1040 までまとめてしまうということでしょうか?

はい、同じキーを連続で押すのは割と簡単なので、それもありかなと思いました。(^^;


>管理人様から OK をいただければ、もうそのまま使っていただいて構いません。
>sentaro様、導入希望です(^^)

管理人様よりOk出ましたので、そのまま導入させていただきたいと思います。(^^)



管理人様、
>ところで、(選)アイコンは、破線イメージの重ね合わせで済むのなら、少しは省メモリになって良さそうですが、その場合は破線上書きを前提にしたアイコンデザインが必要かも知れませんね。

FX版のアイコン描画はビットマップ描画ではなく手作業なので、どうにでもなります。(^^)


>いずれにせよ、FXアイコン改善、是非お願い致します(^^)

了解しました!(^^)


>GB/JIS選択画面のように、自分が今どこにいるのかが分かりやすいようにできれば、この案は良いと思います。
>[SHIFT]キーで現れるFKeyメニューは、Colon様案では全て使ってしまっているので、相対ジャンプモードに入るキーとして [▶] や [◀] は如何でしょうか?これらのキーを押したら、1ページ後>/前ジャンプした上で、相対ジャンプ用のFKeyアイコンが現れるようにする、というわけです。
>そして、[EXIT]キーで相対ジャンプモードから前に戻れば使いやすいと思います。

1ページ分だけ移動するのは[SHIFT]+[↑][↓]がありますが、左右キーで相対ジャンプモードに入るというのはいい案かもです!


>ところで、現行では [▶]キーで1ページジャンプで先に進む動作をしますが、[◀] では1ページ戻るのではなく Dimension 設定のポップアップが開きます。これは仕様でしょうか?

純正での動作を確認したところ、純正は[▶]キーでDimension 設定なので、ちょっとおかしな仕様になってますね。(^^;
特にこの仕様になっている必然性が薄いので、左右ーキーは別の動作に再割当てした方が良さそうです。


>サブルーチンの場合: プログラムにより 129 byte や 130 byte ← ココがsentaro様の情報と違っている

あ、微妙に違ってました。(^^;


>System( サンプルプログラムのバグを修正
http://pm.matrix.jp/upload/upload.cgi?get=00081

build13に再アップしておきました。(^^)


>※温故知新ネタの関係で電卓が大増殖したのですが、CG10 だけ持っていないのです(^_^;

北米限定の専用機なので、世界的にはCG20が標準機です。
CG10の新品もまだありますが高価ですね。(^^;


>エミュレータ対応は、コードを一部コメントアウトして確認していますが、エミュレータ自体では未確認です。

https://pm.matrix.jp/upload/upload.cgi?get=00082
問題ありません。(^^)

Re: Re^4: C.Basic for CG v1.44β (より使いやすく色々と変更していってみる版)その13

Colon様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、

管理人のやすです。

Colon様、
FX用の新アイコン、実際に作ってみていただくと、なかなか良いですね!

一気にバリエーションが増えたので、FX用に適用できると思います。

sentaro様、導入希望です(^^)



ところで、これで少なくとも下の2つの選択肢が得られたと思います。
例えば、私の感覚(好み)に従うと、
・(選)アイコン:上と左が破線の黒アイコン
・白でないアイコン(色付き):上と左が破線の白アイコン

最初は、白でないアイコンとして縁有りアイコンが良いと思ったのですが、左右とも1ドットで塞がれるので、文字列長への制限が大きくなってしまい、アイコン作成の足かせになると思われます。なので上と左を破線にすれば、右側の余裕ができて良いかと...


ところで、(選)アイコンは、破線イメージの重ね合わせで済むのなら、少しは省メモリになって良さそうですが、その場合は破線上書きを前提にしたアイコンデザインが必要かも知れませんね。

いずれにせよ、FXアイコン改善、是非お願い致します(^^)




> > GB/JIS選択画面のように、[-104]、[-26]、[-7],[+7],[+26]、[+104]
> > のような相対ジャンプはどうでしょうか?(^^)
>
> 1 つの画面に A から 1040 までまとめてしまうということでしょうか?

GB/JIS選択画面のように、自分が今どこにいるのかが分かりやすいようにできれば、この案は良いと思います。
[SHIFT]キーで現れるFKeyメニューは、Colon様案では全て使ってしまっているので、相対ジャンプモードに入るキーとして [▶] や [◀] は如何でしょうか?これらのキーを押したら、1ページ後/前ジャンプした上で、相対ジャンプ用のFKeyアイコンが現れるようにする、というわけです。
そして、[EXIT]キーで相対ジャンプモードから前に戻れば使いやすいと思います。

これは部分最適化案ですが、全体を考えたとき整合性には特に問題無いように思います。
如何でしょうか?


ところで、現行では [▶]キーで1ページジャンプで先に進む動作をしますが、[◀] では1ページ戻るのではなく Dimension 設定のポップアップが開きます。これは仕様でしょうか?



sentaro様

改めて slim で調べて見ました;

- エディタで新規に作成する場合のフリーエリア:4172 byte
- すでにあるファイルを編集する場合:2048 byte、
- プログラム実行時に中断して編集する場合
  - メインプログラムの場合:128 byte
  - サブルーチンの場合: プログラムにより 129 byte や 130 byte ← ココがsentaro様の情報と違っている



System( サンプルプログラムのバグを修正
http://pm.matrix.jp/upload/upload.cgi?get=00081

簡単なプログラムなのに、バタバタして済みません。

手元の電卓全てを使って、OSも入れ替え可能な範囲で、念のために動作確認したのですが、CG10 が無いので CG機の判定と C.Basic for CG 判定で CG10 が除外されていたバグを見落としていました。
System(-1)>10 という部分を SYstem(01)≧10 に修正(2箇所)

※温故知新ネタの関係で電卓が大増殖したのですが、CG10 だけ持っていないのです(^_^;

エミュレータ対応は、コードを一部コメントアウトして確認していますが、エミュレータ自体では未確認です。

今度は大丈夫だと思います。

Re^4: C.Basic for CG v1.44β (より使いやすく色々と変更していってみる版)その13

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

sentaro様、
> ただ、ちょっと選択が面倒に感じる場合があるかもしれません。

そうですね。キープレスの回数は、
・ >A~z …… 1 回
・ 53, 105, 157, 209, 261 …… 3 回
・ 313 以上 …… 4 回

となってしまいますね。(^^;

[SHIFT] + [F5] (>~312), [SHIFT] + [F6] (>313~) としてしまう手もあります。

この場合、
・ >A~z …… 1 回
・ 53 以上 …… 3 回

となります。

> GB/JIS選択画面のように、[-104]、[-26]、[-7],[+7],[+26]、[+104]
> のような相対ジャンプはどうでしょうか?(^^)

1 つの画面に A から 1040 までまとめてしまうということでしょうか?


> ということで、Colon様のFX用の新アイコンが出来れば…FX版もアイコン変更決定です。(^^)

管理人様から OK をいただければ、もうそのまま使っていただいて構いません。

Re:Re:Re: C.Basic for CG v1.44β (より使いやすく色々と変更していってみる版)その13

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

Colon様、
>">A~z" は [F6] にあるということで "JUMP" メニューからは除外し、代わりに "313~" を追加します (カラーインデックスダイアログのようなイメージです)。
https://pm.matrix.jp/upload/upload.cgi?get=00078

斬新な案ですね。(^^)
ただ、ちょっと選択が面倒に感じる場合があるかもしれません。

ふと、思ったんですが、
GB/JIS選択画面のように、[-104]、[-26]、[-7],[+7],[+26]、[+104]
のような相対ジャンプはどうでしょうか?(^^)


>普通に "8192B free" とかで良いかと思います。

了解です!
Bが数字とくっつくと紛らわしいので"8192 free"としてみました。こっそりとbuild13を再アップしてます。(^^;


>FX 版限定の E オプション (Extended) を付加するイメージです。
>なお、「選 (S)」アイコンは元々拡張機能なのでそのままです。

ふち周りを点線にするのはいいアイデアだと思います。(^^)


>ファンクションメニューの色変更ルーチンについては、以前お話しした感じだと独自実装になりそうなので (SysCall だと 8 色のみであるため)、
>背景色も設定できるようにしていただくのもありだと思います。(^^)

どうせならば、6万色アイコンで背景色指定ありでいきたいところですね。
プログラムでWritGraphなどのコマンドを使っても可能ですが、そこのところは仕様として取り込みたいと思います。(^^)




管理人様、
>for FX Ver 2.44 build 13、for CG Ver 1.44 build 13 双方ともアップデート対応致しました。

毎度素早いサポートに感謝です。(^^)


>Slimでは、この表示で 128 とか出て、もう断末魔状態だと再認識!
>メモリが足りないのが玉に瑕ですね。

んと、今の仕様では固定です。(^^;
隠しメモリのある機種がデフォルトになってきてるので、従来SH3機ではメモリ面では厳しくなってきてますね。(^^;

エディタで新規に作成する場合のフリーエリアは
SH3 4172バイト
+256機 10075バイト
CG20 32844バイト
CG50 65612バイト

すでにあるファイルを編集する場合、
SH3 2048バイト
+256機 8192バイト
CG20 8192バイト
CG50 65536バイト

プログラム実行時に中断して編集する場合、
メインプログラムの場合、
SH3 128バイト
+256機 512バイト
CG20 8192バイト
CG50 65536バイト

サブルーチンの場合、
SH3 128バイト
+256機 128バイト
CG20 514バイト
CG50 1026バイト

となっているのが現在のバージョンで確認できました。
何かちょっと違う感じなので修正しないとです。(^^;


>これって、Setup の設定で増やせるのでしたっけ?

固定でない方が何かと便利かと思うので変更できるように仕様追加してみます。(^^)


>ところで、FX版は、現状維持なのですね!

>さて、管理人様のご意見を踏まえて改善案を出してみました。
https://pm.matrix.jp/upload/upload.cgi?get=00080

これはいい感じのバリエーションです。(^^)

ということで、Colon様のFX用の新アイコンが出来れば…FX版もアイコン変更決定です。(^^)

Re^6: FKey Icon - 行列画面改善案 + アイコンサンプル第 3 弾

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

管理人様、
> 1つ前にアップしたコメントがColon様とタッチの差 (それも2回連続) だったので、改めてコメントします。

連続での競合は流石に笑ってしまいました。(^^;


さて、管理人様のご意見を踏まえて改善案を出してみました。
https://pm.matrix.jp/upload/upload.cgi?get=00080

> Eオプションで 2片がギザギザになるのですね。FXでは、Nオプション(白)の時は、上辺と左辺に線が入り、下辺と右辺には線が入りません。そこで、Eオプションの点線も同様に 上辺と左辺を点線にするほうが、落ち着きが良いかも知れませんか?

たしかにそうですね。
点線だと逆に目立ちにくいので、破線にしてみました (画像の [F5] 参照)。

> あと、四角の縁取りの白アイコンに対して、縁取りを点線にしたら、どんな感じになるのでしょう? 意外と使えませんか?

ドット数の関係で下辺に入れると見辛くなったので、左・上・右に破線を入れてみました (画像の [F6] 参照)。
これは使えそうです。(^^)

Re^5: FKey Icon - 行列画面改善案 + アイコンサンプル第 3 弾

Colon様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様

管理人のやすです。


1つ前にアップしたコメントがColon様とタッチの差 (それも2回連続) だったので、改めてコメントします。

> 以前より sentaro様から「色分けしてはどうか」旨提案があり、私としては 2020/01/12 17:37 のコメント内で賛成を表明しているところであります。
> その上で、色分けの有無も含めて設定が行えれば良いな、と思っています。

はい、私も色付けで賛成です。
少し具体的な提案も前のコメントにしたので、ご参照ください。


> FX 版については最小限の変更で済むと思うので、新フォーマットをデザインしてみました。(^^)
>
> https://pm.matrix.jp/upload/upload.cgi?get=00079
>
> FX 版限定の E オプション (Extended) を付加するイメージです。
> なお、「選 (S)」アイコンは元々拡張機能なのでそのままです。

早々にありがとうございます。

Eオプションで 2片がギザギザになるのですね。FXでは、Nオプション(白)の時は、上辺と左辺に線が入り、下辺と右辺には線が入りません。そこで、Eオプションの点線も同様に 上辺と左辺を点線にするほうが、落ち着きが良いかも知れませんか?
実際に見比べられたらどちらが良いか決まりそうですね。
あと、四角の縁取りの白アイコンに対して、縁取りを点線にしたら、どんな感じになるのでしょう? 意外と使えませんか?

FXのFKeyアイコンの事例として、例えば以下のページの画像をご参照ください。
https://egadget.blog.fc2.com/blog-entry-688.html


Re:Re: C.Basic for CG v1.44β (より使いやすく色々と変更していってみる版)その13

管理人様、sentaro様、iron2様、CalcLoverHK様、CGユーザーの皆様、こんにちは!

管理人様、
近い時間の投稿になってしまったようですが、
私の見解は概ね 18:00 の投稿に書いています。m(_ _)m

> 背景に色を付けることにすれば、"背景が白でない" に黒を含めて考えて、整合性もOKというヒネリを入れて整合性も確保...というので如何でしょうか > Colon様
> 右下が欠けた形はおそらくフォルダを意識したものだと思っているので、いっそPCみたいに黄色をデフォルトにするのも有りでしょうか?

"背景が白でない" という説明は良さそうです。

それから、例えば管理人様のアイデアを組み合わせて、「色は黒、背景色は黄色やシアン」みたいにするのは視認性的によさそうです。

ファンクションメニューの色変更ルーチンについては、以前お話しした感じだと独自実装になりそうなので (SysCall だと 8 色のみであるため)、
背景色も設定できるようにしていただくのもありだと思います。(^^)


> ところで、FX版は、現状維持なのですね!

FX 版については、独自アイコンのデザイン案を前回のコメントに載せているのでご覧くださいませ。(^^)

Re: C.Basic for CG v1.44β (より使いやすく色々と変更していってみる版)その13

sentaro様、iron2様、Colon様、CalcLoverHK様、C.Basicユ