9B FAQ(掲示板編)


最終更新年月日 031201



944BASICの部屋へ戻る

 本ページは、944BASIC掲示板の質問等をまとめたものです。
 (現在試作公開中ですので、内容等が変更になる場合があります。)

>>> 開発者サイトのTIPS情報(準備中)


 インデックスが赤字で表示されているのは最近更新されたものです。

最新の更新部分

▼:変数やコマンドに小文字は使えないのですか。(いろは)
▼:小文字でプログラムリストを入力したいのですが。(いろは)
▼:配列変数の定義(DIM)ですが、同じ変数名で、要素数を変えて、再度定義したときの使用中の要素数は増減しますか。(変数・配列)
▼:IFBLK〜ELSEIF〜で、IFBLKの判定が真の場合ELSEIFの判定はスキップしません。(コマンド)
▼:SAVETEXTで、配列の任意の部分を保存したい。(コマンド)
▼:SLに移行ってほんとうですか?(その他)
▼:「なぞって検索」のように選択した文字列を9Bに取り込む方法はありますか?。(その他)
▼:プログラムをHPにUPするために、圧縮したいんですが、ザウルスで圧縮する方法はないでしょうか?(その他)
▼:9Bソフトで、文字を表示させたときに、文字が画面下まで書き込まれたとき、スクロールさせて続きを表示する方法は?(その他)

いろは

▼:BASICアプリはどこにあるの?
▼:サイト上からプログラムをダウンロードしたのですが、リストに表示されません。
▼:9Bをインストールしたのですが、どうやってプログラムしたら良いですか
▼:プログラムリストはどのように入力すればよいのですか。
▼:9Bソフトがプログラムランチャーから見えません。何故でしょうか。
▼:ファイル名にTEST.BASなどのようなネーミングルールに従わない短い名前などを付けて良いですか。
▼:変数やコマンドに小文字は使えないのですか。030815
▼:小文字でプログラムリストを入力したいのですが。030815
▼:プログラム(*.BAS)のサイズに制限はありますか。
▼:ファイラー画面で、アイコンが表示されるはずの左端にゴミがでる。
▼:9Bの9Bソフトランチャーで追加したBASファイルが表示されません。
▼:9Bの9BソフトランチャーでSDから本体やCFを選択してもBASファイルが表示されません。
▼:9Bをインストールして起動しましたが,9Bソフトランチャーに9Bアプリが表示されません。
▼:PDIC形式 の9BリファレンスマニュアルはPDIC(PC用)でも使えますか。

変数・配列

▼:変数の精度は、単精度?倍精度?
▼:文字を数字に変えるには?
▼:変数や配列に代入可能な文字数は?
▼:配列は何個まで使用できますか。
▼:「A='文字列'」「B=A」では、Bは0(ゼロ)になります。文字列を代入する方法は?
▼:文字列等で「’」や「”」を代入したい。
▼:使えない名前はありますか。
▼:配列変数の定義(DIM)ですが、同じ変数名で、要素数を変えて、再度定義したときの使用中の要素数は増減しますか。031201

演算子

▼:IF文で複数の条件を判断したいのですが、倫理演算子のandやorは使えますか。
▼:%という記号の意味は?

関数

▼:つかえる数値関数は?
▼:自然対数LN等の数学的関数は、9Bでサポートされてますか?
▼:IF文で文字列の比較をしたい。
▼:GETROMVERやGETPATCHVER等の値がソフトウェア管理番号と違うようですが。
▼:MI-P10 でPADB,PADC,PADONB,PADONC で入力イベントが取得出来ませんが?

構文

▼:「APL PINK」でMOREが立ち上がりません。
▼:SAVETEXT ZIKKEN.TXT,B で保存できません。何故ですか。
▼:数式は正しいのに、思ったとおりの結果にならない。数式中にスペースを入れる場合の注意点は?
▼:コマンドの後のスペース(空白)は必要ですか。スペースの有る無しで結果が異なります。
▼:ラベルの文字数は何文字までOKですか。
▼:マルチステートメントで注意することはありますか。
▼:マルチステートメントでGOSUBやINPUTが実行されません。
▼:IF文が1行に収まらないが,ブロック文は使えますか。
▼:FOR〜NEXT文を途中でキャンセルできませんか。
▼:IFBLK命令のIFBLK〜ENDIF間を途中でGOTOやRETURNで抜けると問題ありますか。
▼:FOR~NEXT文のSTEPにマイナスの値を指定できないのか。
▼:STRCAT()関数で文字列の結合が上手くできません。
▼:IF 式 THEN ELSE GOTO *AのようにTHEN以降がない場合おかしくなります。

コマンド

▼:SYNCはどのように使うのですか。
▼:MENUコマンドで、ペンタッチで項目が選択できない場合がある。
▼:クロックを変更したいのですが。
▼:INPUT文で入力ボードから入力したい。
▼:他のMOREを呼び出したい。
▼:BEEPコマンドで音がでません。
▼:MESSAGEのダイアログが表示されている場合戻るキーが効かないのですが?
▼:DATA/READ文は使用できないのですか。
▼:常駐させた場合、他のアプリがアクティブになると描画が止まってしまいます。
▼:EVENT及びEVENTNOとは何ですか。
▼:PENコマンドの値ですが、タッチしつづけているのに、時々0になるのは何故ですか。
▼:古いBASICにあったPALET命令は使えないのでしょうか。
▼:音を鳴らしたいのですが。
▼:MESSAGEで確認ボタンが表示されない。
▼:WAVEコマンドの音量はどのように指定するのですか。
▼:WAVEコマンドを実行しても音が聞こえません。
▼:大きいファイル(数メガ)の内容を検索して表示することは可能ですか?
▼:ファイルから一行ずつ読み込む処理をしたいと思っているのですが?
▼:時間待ちをWAITコマンドで行うと全ての処理が止まってしまいます。時間待ち中でも作業する方法は?
▼:ファイルの相対指定はどのようにすれば良いのですか。
▼:フォルダを作成するコマンドはありませんか?
▼:INPUTコマンドでINPUTに使う変数の中身がINPUT命令が実行されるたびにクリアされず,変数の内容が残ってしまいます。
▼:9Bでボタンを表示する命令はありませんか?
▼:INPUTの不具合
▼:INKEYでキーバッファが残っている場合,クリアする方法は?
▼:ストップウォッチのように経過した秒が得られるコマンドはありませんか。
▼:IFBLK〜ELSEIF〜で、IFBLKの判定が真の場合ELSEIFの判定はスキップしません。031201
▼:SAVETEXTで、配列の任意の部分を保存したい。031201

スプライト・グラフィック

▼:SPRITE命令のパラメータはすべて定義しないと駄目ですか。
▼:BGとはなんですか。
▼:拡大縮小すると表示位置がずれるのですが。
▼:BGのサイズは?
▼:テクスチャとして使える最大のサイズは?
▼:テクスチャの読み込みで画像が表示されないようにできないのか。
▼:GETPIXMAP命令が使用できません。
▼:スプライト表示を高速にする方法はありませんか。
▼:スプライトの衝突判定はありますか。
▼:裏画面とテクスチャー画面ってなに?
▼:ペンで描ける手書きメモを作成したが,早く書くと点が途切れてしまいます。何故ですか。
▼:画面がちらついてしまうのを回避する方法はありませんか?
▼:テクスチャ画面にライン命令等で描画したいのですが、どうしたらよいですか。
▼:設定したスプライトを無効にすることはできますか。
▼:スプライトを256個以上画面に表示できませんか。
▼:デジカメで撮った人物と背景画像を合成できません。人物の背景は黒いのに透明にはならないのですが。 

9Bライブラリ

▼:9Bソフトライブラリ投稿掲示板でエラーが出てしまいました。
▼:キャプチャ、アイコンのビットマップは必須ですか?
▼:ソフト概要はHLPファイルと同じにしましたが、[]は使わないように変更しました。問題ありませんか。
▼:動作機種は確認済みの機種と、機種による制限が出そうな点について書きましたが、良いでしょうか?
▼:詳細説明のページを特に起こしてないのですが、既存のダウンロードページのアドレスを書きましたが良いですか?
▼:ライブラリに登録する圧縮ファイルを,Zaurus上で解凍できるかどうか確認したいのですが,推奨MOREはありますか。
▼:プログラムの一部を変更し自分のサイトのダウンロードファイルを更新しましたが、再登録申請は必要ですか?

その他

▼:9B実行画面のキャプチャをしたい。
▼:アイコンはどうやって表示させるのですか。
▼:MI-C1だと、画面の下が切れて表示されます。
▼:サブルーチンを他のリストでも使いたいのですが。
▼:エラーが発生しても処理が止まらないのですが。
▼:画面キャプチャで取り込んだBMPファイルがPCのペイントで時々「認識できないファイル」となってしまう。
▼:9Bでファイルの入出力をクリップボード実行させると、うまく処理されない場合があります。
▼:SLに移行ってほんとうですか?031201
▼:「なぞって検索」のように選択した文字列を9Bに取り込む方法はありますか?。030701
▼:プログラムをHPにUPするために、圧縮したいんですが、ザウルスで圧縮する方法はないでしょうか?031201
▼:9Bソフトで、文字を表示させたときに、文字が画面下まで書き込まれたとき、スクロールさせて続きを表示する方法は?031201

裏技

▼:9Bアプリで背景が透明になる方法。


いろは


BASICアプリはどこにあるの?

 9Bライブラリサイトが開設されています。
http://soft9b.cool.ne.jp/

 ariさんのリンク集「SZAL」にBASICアプリを公表しているサイトがまとめられています。
http://homepage2.nifty.com/vj/zas/

 また、keiさんがBASICアプリ等の紹介を行っています。
http://ww ..... /3850/BASIC/basic.htm

 MITさんも9Bアプリの紹介をしています。
http://ww ..... Valley-PaloAlto/8904/

 いみふめさんが、サンプル等を置くジャンクコーナーを設置されました。
http://ww ..... raz:9b_junk:bbs/start

 ザウルス最強化パック 改訂版のCDにもいくつか収録されています。
△Index



サイト上からプログラムをダウンロードしたのですが、リストに表示されません。
 サイトで公開されているファイルの多くは拡張子がZIP若しくはLZHと圧縮されています。
 ザウルスでダウンロードすると,本体若しくはカードの__ZAURUSフォルダに09003892.LZHのような一見でたらめな英数字の名前で保存されます。
 これをMORE(ZGZやLHA for Zaurus、いずれも宝箱にあります。)で解凍した後、ファイラー等(TreeExplorer等)を利用してカードF1:__ZAURUS\944BASICフォルダに移動させて下さい。
△Index



9Bをインストールしたのですが、どうやってプログラムしたら良いですか
 まず、9B単体ではプログラムリストを入力することは出来ません。
 別途テキストエディタを使いプログラムを記述します。
 そのプログラムをファイルネーミングルールの通りに名前を付け、F1(カード)に作成した944BASICのフォルダに保存します(拡張子はBAS)。
 こうすると9Bのランチャに表示され選択すると実行が出来ます。

△Index



プログラムリストはどのように入力すればよいのですか。
 ザウルスの場合、MOREのテキストエディターで入力します。注意点は1行目に「REM 944BASIC '????'」という1行を必ず入れることです。????の部分にはプログラムの名前や説明を記載します(ファイル選択画面で表示されます。)。
 後はコマンド一覧を参考にしてプログラムを記述するだけです。

リスト
REM 944BASIC 'メッセージ'
MESSAGE '944BASICの世界へようこそ!'
END

 テキストエディタですが、ザウルス宝箱にあるtakuさんのTreeExplorer!や、mabさんのmab EditorV等を利用します。

△Index



9Bソフトがプログラムランチャーから見えません。何故でしょうか。
 フォルダをカード設定で使用しているカード上のルートの配下に944BASICフォルダを作成して9Bソフトを入れてみて下さい。(__ZAURUS配下ではありません。)
 ちなみにSDの場合は、F1:\944BASIC になります。

 また、最新バージョンではSD,CF,本体切替をサポート、かつ、キャッシュされていますので、適宜SD等に切り替え、最新の状態に更新する必要があります。
△Index



ファイル名にTEST.BASなどのようなネーミングルールに従わない短い名前などを付けて良いですか。
 現在のバージョンでは,プログラム名は8桁でないとうまく機能しないコマンドがあるようです(例TEST.BASは駄目。BABO0010.BASのようにする)。
 確認できたのはファイル処理系の命令ですが,できるだけテストプログラムでもファイルネーミングルールに従ったプログラム名にした方が良いと思います。
△Index



変数やコマンドに小文字は使えないのですか。
 変数やコマンドは大文字が原則ですが、最新バージョンでは小文字も使用可能になっています。
 ただし、現在検証中であることに留意して下さい。
△Index



小文字でプログラムリストを入力したいのですが。
 旧バージョンの944BASICではアルファベットは大文字が原則でしたが、最新バージョンでは小文字も使用可能になっています。
 なお、PC上のエディタで入力する場合、たろサさんのTools944BASICという支援ソフトを使えば小文字リストも大文字に変換されますので便利です。
△Index



プログラム(*.BAS)のサイズに制限はありますか。
 ファイルサイズは,最大128Kbまでです。
△Index



ファイラー画面で、アイコンが表示されるはずの左端にゴミがでる。
 標準アイコンファイルが無い場合ランダムなパターンが表示されます。標準アイコンファイルのWOFZICON.BMPをカードのF1:__ZAURUSフォルダに格納して下さい。
△Index



9Bの9Bソフトランチャーで追加したBASファイルが表示されません。
 9Bソフトランチャーの右隣にある「最新」をタップもしくはメニューの「最新の状態に更新」を選択して,ファイル情報を更新すると表示されます。
 これは,最新の9Bでは,ランチャーの高速化のため,ファイルの情報をキャッシュしているためです。
△Index



9Bの9BソフトランチャーでSDから本体やCFを選択してもBASファイルが表示されません。
 9Bソフトランチャーの右隣にある「最新」をタップもしくはメニューの「最新の状態に更新」を選択して,ファイル情報を更新すると表示されます。
△Index



9Bをインストールして起動しましたが,9Bソフトランチャーに9Bアプリが表示されません。
 9Bソフトランチャーの右隣にある「最新」をタップもしくはメニューの「最新の状態に更新」を選択して,ファイル情報を更新すると表示されます。
△Index



PDIC形式 の9BリファレンスマニュアルはPDIC(PC用)でも使えますか。
 ZPDVIEW用として公開されている9Bリファレンスマニュアルのファイルの拡張子をリネームするだけで PDIC for Win32 で使用できます。拡張子は DIC にしてください。
 なお,Doko Pop!と組み合わせると9Bコマンドの上で右クリックするだけで説明がポップアップします。
△Index



変数・配列


変数の精度は、単精度?倍精度?
 9B内部の計算処理は全て倍精度で行われています。したがって変数は全て倍精度になります
△Index



文字を数字に変えるには?
 9Bでは、INPUT命令等で入力された文字は計算において数値として扱われます。
 例えば、文字として入力したものも、何もしないと計算では数値として扱われます。
A='250'
B=LEFT(A,2)
C=A-B
PRINT C ←225と表示される

 ですので、9Bには一般のBASIC命令であるVAL関数は不要です。
 逆に文字を文字として扱いたい場合には、STR関数(明示的に文字列として扱う)が必要となってきます
△Index



変数や配列に代入可能な文字数は?
 変数、配列とも半角256文字です。
△Index



配列は何個まで使用できますか。
 配列の数には上限があり、1プログラム中,配列の数は合計4096までです。
 なお,上限を超えた数の配列を宣言するとリセットとなる可能性があります。
△Index



「A='文字列'」「B=A」では、Bは0(ゼロ)になります。文字列を代入する方法は?
 STR命令を使います。

B=STR(A)
△Index



文字列等で「’」や「”」を代入したい。
’の場合は、”で囲み、
”の場合は’で囲みます。
 なお、全角の場合は気にする必要はありません。

A="'" ←「’」が代入
B='"' ←「”」が代入
△Index



使えない名前はありますか。
 BASICのコマンドに使われる名前(GOTOやPRINT等)は変数として使用できません。
△Index



配列変数の定義(DIM)ですが、同じ変数名で、要素数を変えて、再度定義したときの使用中の要素数は増減しますか。
 配列の再定義は、できないようです。
つまり、
DIM A(3) → DIM A(5)
としても、Aの要素は 0〜3 の4つで、逆に、
DIM A(3) → DIM A(2)
としても、A の要素数は減りません。
ついでながら、
DIM A(4000) → DIM A(1000)
とすると、「配列数が制限を超えた」という内容のエラーメッセージが表示されます。(別に配列が再定義されているわけではないと思います。)
△Index



演算子


IF文で複数の条件を判断したいのですが、倫理演算子のandやorは使えますか。
 andやorは実装されていませんので、*や+を利用します。具体的には、「(A=0)*(B=0) 」の場合*がandです。「(A=0)+(B=0) 」の場合は+がorとなります。
△Index



%という記号の意味は?
 除算の余りを求める演算子です。
A=100%3
とすると、Aには1が代入されます。
△Index



関数


つかえる数値関数は?
 9Bでは、数値関数が10個用意されています。それ以外の関数は自作する必要があります。
 INT(式)  値を整数に変換
 SIN(式)  サイン値の算出(ラディアン)
 COS(式)  コサイン値の算出(ラディアン)
 TAN(式)  タンジェント値の算出(ラディアン)
 SINAG(式) サイン値の算出(角度指定degree)
 COSAG(式) コサイン値の算出(角度指定degree)
 TANAG(式) タンジェント値の算出(角度指定degree)
 SQR(式)  スクエア値の算出(平方根)
 SGN(式)  符号の算出
 ABS(式)  絶対値の算出
△Index



自然対数LN等の数学的関数は、9Bでサポートされてますか?
 今後増えるとは思いますが、自分でプログラムするのが手っ取り早いです。
 たろサさんのサイトに,各種関数の解説付きリストが掲載されています。
 次のような多数の数値関数のサブルーチンがあります。詳細は下のリンクからたろサさんのサイトで!!
◆逆三角関数
 アークタンジェント(サブルーチン名 *ATN)
 アークサイン(サブルーチン名 *ASN)
 アークコサイン(サブルーチン名 *ACS)
 アークタンジェントAG(サブルーチン名 *ATNAG)
 アークサインAG(サブルーチン名 *ASNAG)
 アークコサインAG(サブルーチン名 *ACSAG)
◆自然指数(Exp)
 エキスポネンシャル(サブルーチン名 *EXP)
◆対数
 自然対数ログ(サブルーチン名 *LOG)
 常用対数ログ(サブルーチン名 *LOG10)
◆XのY乗(X^Y)
 パワー(サブルーチン名 *POW)
◆10のX乗(10^X)
 パワー10(サブルーチン名 *POW10)
◆双曲関数(ハイパボリック)
 ハイパボリックサイン(サブルーチン名 *SINH)
 ハイパボリックコサイン(サブルーチン名 *COSH)
 ハイパボリックタンジェント(サブルーチン名 *TANH)
 ハイパボリックアークサイン(サブルーチン名 *ASNH)
 ハイパボリックアークコサイン(サブルーチン名 *ACSH)
 ハイパボリックアークタンジェント(サブルーチン名 *ATNH)

たろサさんのサイト(トップ→◆自作数値関数修正版 2002.5.7)
http://hp ..... 944basic/944basic.htm
△Index



IF文で文字列の比較をしたい。
 STRCMP関数を使います。
△Index



GETROMVERやGETPATCHVER等の値がソフトウェア管理番号と違うようですが。
 GETROMVERやGETPATCHVERの値は10進です。他方、ザウルスのメモリー管理画面では16進で表示さるというように表示形式が異なるため違って表示されますが、変換すれば同じとなります。
△Index



MI-P10 でPADB,PADC,PADONB,PADONC で入力イベントが取得出来ませんが?

 MI-P10等、「逆送り」「順送り」がキーでは無く、液晶横のタップメニューの場合、ハード仕様上PAD系のリアルタイムキー入力は使用できません。
 したがって、INKEYを使った通常のキー入力で対応したり、ペンタッチで代用してください。
△Index



構文


「APL PINK」でMOREが立ち上がりません。
 コマンドリスト中、例えば「HEADER 文字列 」となっている場合、
APL 'MOZIRETU'
APL MOZIRETU
では違う記述となります。
 前者は’’で囲まれた文字列「MOZIRETU」が有効なのに対し、後者はMOZIRETUという変数の中身が有効となります。
 従って,上記の例では,後者の変数が文字変数の場合文字が、数字の場合はエラーとなり無視されます。
 同様の例は、「ファイル名」、「アプリID」、「コマンド」が挙げられます。
△Index



SAVETEXT ZIKKEN.TXT,B で保存できません。何故ですか。
 ファイルネームを指定する場合,'ZIKKEN.TXT'とします。したがって,
SAVETEXT 'ZIKKEN.TXT',B
とするのが正解です。
 なお,ファイルネームは変数で指定することも可能です。
△Index



数式は正しいのに、思ったとおりの結果にならない。数式中にスペースを入れる場合の注意点は?
 944BASICでは数式の中にスペースがあると上手に計算できない場合があります。桁そろえ等見易さを目的としてスペースを入れると逆にバグの原因になる場合があります。

A=(100+1)+(5+10)     ←こちらが安全
A=(100+ 1) + ( 5+ 10)  ←このようにスペースを入れると危険
△Index



コマンドの後のスペース(空白)は必要ですか。スペースの有る無しで結果が異なります。
 例えばLOCATE12はダメで、LOCATE 12はOKとなりますが、これは、スペースをコマンドの区切りとしているためです。
 LOCATE12 では変数名か文字列と判断され、無視されてしまいます。

 区切りは結構重要です。たとえば、FILLという変数を使用するプログラムでBOXというコマンドとFILLという変数を続けて書くと、BOXFILLと別のコマンドになってしまいます。
 このような問題が生じないように、コマンドの後に書式を続ける場合は、スペースを空けるのが基本となっています。
 ただし、演算式は例外で、演算子の前後にはスペースを空けずに記述します。

△Index



ラベルの文字数は何文字までOKですか。
 半角15文字までです。
 また、変数や配列で指定する場合も半角15文字です。
△Index



マルチステートメントで注意することはありますか。
 FOR−NEXTやMENU等の制御系や入力系はマルチステートメントが使えません。
△Index



マルチステートメントでGOSUBやINPUTが実行されません。
 今のところ仕様みたいです。また、他のキー入力系や制御系コマンド等でもマルチステートメントはできません。(KEYWAIT、MENU、FOR-NEXT等)
△Index



IF文が1行に収まらないが,ブロック文は使えますか。
 ブロックIF文が使えます。IFBLK〜ENDIF行の間に処理を複数行記載できます。例えば以下リスト1はリスト2のように複数行に記述できます。

リスト1
 IF A=0 THEN B=1:C=1 ELSE B=0:C=0
リスト2
 IFBLK A=0
  B=1
  C=1
 ELSE
  B=0
  C=0
 ENDIF
△Index



FOR〜NEXT文を途中でキャンセルできませんか。
 FOR〜NEXT文を途中でキャンセルするコマンド(BREAK等)は実装されていません。また、GOTO等で強制的に抜けると最悪リセット要求されます。
 したがって、カウンタ変数に終了条件の数値を代入する等して回避してください。
△Index



IFBLK命令のIFBLK〜ENDIF間を途中でGOTOやRETURNで抜けると問題ありますか。
 IFBLKもFORループと同じくスタックの関係で,途中で抜けるとエラーが発生しますので,注意してください。
△Index



FOR~NEXT文のSTEPにマイナスの値を指定できないのか。
 現在はプラスの値のみ指定できるようです。
△Index



STRCAT()関数で文字列の結合が上手くできません。
 文字列系関数は、コマンド一覧にあるとおり、コマンド内で複数の文字列関数を記述できません。したがって、
A=STRCAT(A,LEFT(B(I),14-LEN(A)))
では文字列の結合が上手くいきませんので、
C=LEFT(B(I),14-LEN(A))
A=STRCAT(A,C)
というように複数行に分けて記述して下さい。
△Index



IF 式 THEN ELSE GOTO *AのようにTHEN以降がない場合おかしくなります。
 現バージョンでは,ブロックIF文との兼ね合いで,上手くいってない模様です。ダミーでもTHEN以降を置く等の対応が必要かもしれません。
△Index



コマンド


SYNCはどのように使うのですか。
 ループを組むときにSYNCを入れないと、ザウルスOSに制御が戻らないため、キー入力等の反応が極端に悪くなる場合があります。
△Index



MENUコマンドで、ペンタッチで項目が選択できない場合がある。
 メニューの項目名の文字数を揃えてください。文字数が揃っていない場合や項目名の文字数が短い場合には右側のスペースをタッチしても反応しない場合があります。
△Index



クロックを変更したいのですが。
 E21以降の機種しか使えませんが、CPUCLOCKを使います。
△Index



INPUT文で入力ボードから入力したい。
 コマンド一覧にあるタイプを指定します。例えば、4が数字入力ボードになりますが、以前に入力ボートを利用している場合、直前の状況に左右されます。
△Index



他のMOREを呼び出したい。
 APLコマンドを使います。

APL 'PINK' ←インクワープロ起動
△Index



BEEPコマンドで音がでません。
 ユーザー設定でアラート音をONにしてください。
△Index



MESSAGEのダイアログが表示されている場合戻るキーが効かないのですが?
 MESSAGEダイアログでは戻るキーが効きませんので、ループ中で使うと電源断でしか抜けることができなくなる場合があります。プログラムで回避が必要です。
△Index



DATA/READ文は使用できないのですか。
 使用できません。代わりに配列への直接代入が可能です。

DIM A(5)
A(0)=0,1,2,3,4,5
△Index



常駐させた場合、他のアプリがアクティブになると描画が止まってしまいます。
 次の1行を加えることで、ザウルスの全てのイベントの受信が有効となり、常に描画されるようにすることが可能となります。
リスト
EVENT 100,999,1
△Index



EVENT及びEVENTNOとは何ですか。
 いまのところは未公開命令です。ザウルスのイベント(ペン、キーボード、タイマー等)の制御、取得の為のコマンドです。例えば、常駐プログラムにおいて画面描画を常に行う等の特殊な用途で使用されるもので、通常は意識する必要はありません。
△Index



PENコマンドの値ですが、タッチしつづけているのに、時々0になるのは何故ですか。
 ペン以外のイベントを受信するために0になります。以下のリストのようにペン以外のイベントの場合ループすることで回避できます。
リスト
*LOOP
SYNC
IF (EVENTNO<160)*(EVENTNO>162) THEN GOTO *LOOP
PRINT PEN
△Index



古いBASICにあったPALET命令は使えないのでしょうか。
 ザウルスのハードにパレット機能が無いため、実装されていません。
△Index



音を鳴らしたいのですが。
 WAVE,BEEP,EFFECTコマンドを使います。
(注意)
 EFFECTは現在、E1では?リセット要求されますが,以下のルールでリセット回避が可能のようです。
 ファイル名指定で(1)ファイル名は絶対指定であること(C1でもC2でも可),(2)ディレクトリ名+ファイル名が9文字以内であること,が条件です。
(万願寺さん,コバヤカワさん,kaolさんのサイトの情報を記載致しました。)
△Index



MESSAGEで確認ボタンが表示されない。
 指定する文字列が短い場合表示されなくなる場合があります。
△Index



WAVEコマンドの音量はどのように指定するのですか。
 WAVEコマンドの音量は0が最大で、数値が大きくなるほど小さい音になります。
△Index



WAVEコマンドを実行しても音が聞こえません。
 本体にイヤホンを挿して、イヤホンで聞いてください。WAVEコマンドを実行しても本体だけでは音が鳴りません。
 ただし、BEEPコマンドは本体だけで鳴ります。
△Index



大きいファイル(数メガ)の内容を検索して表示することは可能ですか?
 ファイル操作はLOADCSV等,一度全体を配列に読み込むため,テキストファイルの1行単位の処理については現時点ではできませんが、実装方法も含めて検討中です。
△Index



ファイルから一行ずつ読み込む処理をしたいと思っているのですが?
DIM RECORD(1000)
と宣言しておいて
LOADTEXT 'FILE.TXT',RECORD
で読み込んでから、
RECORD(NO)
で値を使用し、NOを1つずつ増やすといった方法が考えられます。
尚、LOADTEXTを行った後に、
CNT=GETREADCNT
とするとCNTに読み込んだ件数が入ります。
△Index



時間待ちをWAITコマンドで行うと全ての処理が止まってしまいます。時間待ち中でも作業する方法は?
 SYSCNTを使う方法について説明します。SYSCNTとは,ザウルス内部に1/10秒刻みのストップウォッチがあって、その数字そのものと思ってください。
 SYSCNT がどんな具合かは、次のサンプルでわかってもらえるかと思います。

REM 944BASIC 'SYSCNT サンプル1'
*LOOP SYNC
S=SYSCNT
LOCATE 3,5: PRINT ' '
LOCATE 3,5: PRINT S
GOTO *LOOP

1 秒経過させるなら、

REM 944BASIC 'SYSCNT サンプル2'
PRINT 'PUSH KEY'
KEYWAIT
S=SYSCNT
*LOOP SYNC

REM ここの間に時間待ちに実行したい処理を記載できます。
IF SYSCNT-S>=10 THEN GOTO *EXIT
GOTO *LOOP
*EXIT
PRINT '1秒経過'
KEYWAIT

とでもすれば、とりあえずは約1秒後に処理させることができます。
△Index



ファイルの相対指定はどのようにすれば良いのですか。
 ファイル指定の際,単にファイルネームだけ記述するだけでOKです。
例えば
LOADCSV 'FILENAME.DAT'
とするだけです。

(注)絶対指定というのはルートからフルパスでファイルを指定することで,
"F1:\944BASIC\FILENAME.DAT"
となります。
 他方,相対指定とは現在使用しているディレクトリを起点と考え,指定するものです。現在使用されているディレクトリはカレントディレクトリと言います。
 現バージョンの9Bは従来のような944BASICディレクトリのみで実行できるという制限が無くなったため,カレントディレクトリは一定ではありません。その際,カレントディレクトリ毎に処理を振り分けて別々にルートからファイルの場所を指定するのは面倒です。
 そこでルートからファイルの場所を指定するのではなく,カレントディレクトリから指定することで,パス部分を変更することなく、カレントが移動しても目的のファイルを読み書きできるというものです。
 例えば,カレントが「F0:\944BASIC\」の場合,ファイルを相対指定でFILENAME.DATとすると,カレント+ファイル名すなわち,「F0:\944BASIC\FILENAME.DAT」を指定したこととなります。
 したがって,カレントがF1:\であれば相対していしたファイルは「F1:\FILENAME.DAT」となるわけです。
 それでは絶対指定は不要かというと,そうではありません。
 例えば設定ファイルを書き出すアプリの場合,セーブコマンドのファイル名指定を「F0:WST6.CFG」というように絶対指定にしておけば,どのディレクトリで実行されても,設定ファイルはザウルス本体に保存され、便利です。
△Index



フォルダを作成するコマンドはありませんか?
 ディレクトリを作成するコマンドはありますが(まだ未公開)、現在公開するバージョンに実装されるかどうか未定とのことです。
 ただし、ファイルを作成する時に存在しないディレクトリの場合は1階層であれば、ザウルスOS側で作成されます。
 なお、プログラム側でフォルダを作成することは、プログラムを実行するユーザのザウルスに影響を与えるため、不都合が生じる可能性を考えると公開されるアプリでの利用は慎重に考えた方が良いかもしれません。
△Index



INPUTコマンドでINPUTに使う変数の中身がINPUT命令が実行されるたびにクリアされず,変数の内容が残ってしまいます。
 仕様です。変数のクリアが必要な場合は以下のリストのようにしてください。
REM ↓このようにしてXをクリアする。
*TEST
X=''
INPUT X,4,4
PRINT X
GOTO *TEST
△Index



9Bでボタンを表示する命令はありませんか?
 MENUコマンドのような命令はありませんが、すなどんさんが、9Bボタンライブラリを公開しています。
 特徴は、「画像などをボタンパネルに貼り付け」、「図形のパネル上への描画や、ラベルのカスタマイズ」、「太字や下線」、「右寄せ、左寄せ」等です。
 このように、GUIで使われる事の多い、ボタンをモジュール化されていますので、利用してはどうでしょうか。

△Index



INPUTの不具合
REM 944BASIC 'INPUT TEST'
T='A=25%4'
*NNNF=STR(T)
INPUT F,20,3
LOCATE 0,3
PRINT F
T=STR(F)
GOTO *NNN
 というプログラムで%4の後にJとか付けているとリセット要求がでます。
 また、入力のときに%以降の文字も表示されません。%の処理で不具合が出ているようです。
(8/25たろささんが掲示板に報告。修正予定あり)

△Index



INKEYでキーバッファが残っている場合,クリアする方法は?
 以下のリストで,キーバッファがクリアできます。

*LOOP
SYNC
INKEY=0
K=INKEY
IF K=0 THEN GOTO *LOOP

(INKEYを使った処理ルーチン)

GOTO *LOOP


△Index



ストップウォッチのように経過した秒が得られるコマンドはありませんか。
 専用のコマンドはありませんが,SYSCNTを利用して1/10秒単位で経過時間を取得する方法について例示します。
 計測開始したい時点でその時点のSYSCNTの値を変数(リストではTS)に保存します。
 後は,時間を知りたい時点のSYSCNTの値から,スタート時点のSYSCNTの値を保存した変数を引けば,その差が経過時間(1/10秒単位)となります。
 リストでは,さらに表示形式を整えています。

 なお,秒だけ表示したい場合は単に値を1/10するだけでOKです。
 例:DUMY1=INT((SYSCNT-TS)/10)

(リスト)
REM 944BASIC 'ストップウォッチ'
REM メインルーチン
REM 変数DUMY1に1/10秒の値を代入してサブルーチンを呼び出す。
REM 計測を開始したい場所で、変数TSにSYSCNTの値を代入する。
TS=SYSCNT
*LOOP SYNC
DUMY1=SYSCNT-TS
GOSUB *MSEC2SEC
LOCATE 10,10
PRINT DUMY1
GOTO *LOOP

REM 1/10秒→秒表示変換サブルーチン
*MSEC2SEC
DUMY2=DUMY1%10
DUMY2=STR(DUMY2)
DUMY1=INT(DUMY1/10)
DUMY1=STR(DUMY1)
DUMY1=STRCAT(' ',DUMY1,'.',DUMY2)
DUMY1=RIGHT(DUMY1,5)
RETURN
△Index



IFBLK〜ELSEIF〜で、IFBLKの判定が真の場合ELSEIFの判定はスキップしません。
現バージョンの9Bだと、以下のリストで
DIM B(3)
IFBLK A=0
A=9
PRINT 'IFBLK'
ELSEIF B(A)=0
PRINT 'ELSEIF'
ENDIF

だと、IFBLKと表示されますが、ELSEIFの判定文B(A)=0まで実行され配列の添え字エラーになります。

 これは、1番目のELSEIFだけが常に条件式をチェックするためです。2番目以降のELSEIFにエラーを起こす条件式を記述してもエラー表示されません。
 したがって、全ての条件式をチェックするようにはなっていないと思われますので、頻度の高い条件を前にもってくれば速度が稼げると思います。
 ちなみに、1番目に条件を記述しないELSEIFを1行挿入すれば例示されたリストでもエラーはでないはずです。
△Index



SAVETEXTで、配列の任意の部分を保存したい。

SAVETEXT 'F1:\TEST.TXT',HOZONYOU,0,100
とすると、配列の要素0番から100番をTEST.TXTにセーブします。
△Index



スプライト・グラフィック


SPRITE命令のパラメータはすべて定義しないと駄目ですか。
 すべて定義する必要はありません。省略された場合は前回のパラメータを引き継ぎます。
△Index



BGとはなんですか。
 2DスクロールするRPGや背景がスクロールするシューティング等、画面に背景を持たせたい場合に使います。スプライトで背景を組み立ててもよいのですが、BGの方が処理スピードや取り扱いの点で有利です。
△Index



拡大縮小すると表示位置がずれるのですが。
 通常のスプライトの座標指定は左上ですが、拡大縮小モードでの座標指定はスプライトの中心になりますので注意してください。
△Index



BGのサイズは?
 パラメータを指定することで任意サイズが可能となりました。デフォルトは16レ16ドットとなります。
 また、パターンの最大個数はテクスチャデータ及びBGのサイズによります。例えば16レ16ドットサイズのBGだとパターンは、左上から0,1,2・・となり横240を超えるとY方向に1つずれて15,16,17・・・となります。
△Index



テクスチャとして使える最大のサイズは?
 XGA(1024x768)です。
△Index



テクスチャの読み込みで画像が表示されないようにできないのか。
 SETPAGEを使います。
△Index



GETPIXMAP命令が使用できません。
 現在のバージョンでは,正常に動作しません。
△Index



スプライト表示を高速にする方法はありませんか。
 裏技として、スプライトのみで書き込みをしていて背景色がいらない場合は
DIM B(0,0)
 を宣言しておいて
REFRESH
 の前に
BG B,0,0,0,0,0,0
を入れると背景色で塗りつぶしをしませんので高速化されます。
△Index



スプライトの衝突判定はありますか。
 1ドット単位の衝突判定をするコマンドがあります。

NO=SPSEARCH(X,Y,10,20)
とすると、X,Y座標にあるスプライトで番号が10から20の間を検索して番号を返します。ない場合は-1を返します。複数ある場合は、番号が小さい方を返します。(画面上の上にある方)

※SPCOLLISION(衝突元,開始,終了)が追加されました。
△Index



裏画面とテクスチャー画面ってなに?
 裏画面については特に意識する必要はありません。SPRITE命令でセットされたパラメータに基づいてREFRESH命令で画面表示されます。
 ただ、テクスチャー画面については、ここにロードされた画像データを切り出してスプライトとして表示する仕組みとなるため、それぞれのパーツの位置サイズを把握する必要はあります。
△Index



ペンで描ける手書きメモを作成したが,早く書くと点が途切れてしまいます。何故ですか。
「ペンタッチがあれば点を描く」ではなく、「ペンタッチの間線を引く」っていうふうにするとつながります。
 IFでPENが1だったら線を書き始める点を変数に保存して、PENが2だったら書き始めの点から現在の点までLINEで表示して、現在の点の座標を変数にまた保存するというように考えます。
△Index



画面がちらついてしまうのを回避する方法はありませんか?
 例えば、裏画面書き込みとして、SETPAGE 2を行うとテクスチャ画面に書き込みができます。その後、スプライト、BG、GCOPY等を使用して表画面へ書き込みする方法が考えられます。
△Index



テクスチャ画面にライン命令等で描画したいのですが、どうしたらよいですか。
 SETPAGE 2を行うとテクスチャ画面に書き込みができます。
 但し、BITMAPやJPEGコマンドを実行すると自動的にSETPAGE 0が実行されますので(過去資産の互換のため)そういった場合は、さらにSETPAGE 2を実行しておく必要があります。
△Index



設定したスプライトを無効にすることはできますか。
 設定したスプライトを無効にするには、
SPRITE I,I,0
という風に、3番目のパラメータをオフである0にすれば描画されなくなります。
△Index



スプライトを256個以上画面に表示できませんか。
 下のリストのようにBGを使えば、前に表示したスプライトを画面に残したままスプライトを表示することで、多くのスプライトを表示できます(現在バージョン違いで正常動作しない場合あり。)。

リスト
REM 944BASIC 'グラフプロットテスト'
REM テクスチャ書き込み(プロットする画像)
SETPAGE 2
COLORBG 0,0,0: COLORFG 0,0,255
CLS: PRINT '○'
REM 裏画面書き込み(目盛りを描画)
SETPAGE 1
COLORFG 255,255,0
LINE 120,20,120,300: LINE 20,160,220,160
REM 表画面書き込み(プロット外枠)
SETPAGE 0
COLORFG 120,120,120: BOXFILL 0,0,240,320
COLORFG 100,255,100: BOXFILL 19,19,220,300
COLORBG 255,255,255
REM ダミーBG配列(スプライト背景塗りつぶししないように)
DIM B(0,0)
REM 10個ずつプロット
*LOOP SYNC
FOR I=0 TO 10
X=RNDRG(20,220)
Y=RNDRG(20,300)
SPRITE I,I,1, X,Y,0,0,12,12
NEXT
BG B,0,0,0,0,0,0
REFRESH 20,20, 20,20, 200,280
GOTO *LOOP
△Index



デジカメで撮った人物と背景画像を合成できません。人物の背景は黒いのに透明にはならないのですが。 
 透ける黒というのはRGB値が0,0,0という真っ黒のことです。20,20,20等でも黒に見えますがスプライトでは透明とはなりません。
 人物の背景をグラフィックエディタ等で,RGB値0,0,0の真っ黒で塗りつぶす必要があります。
 なお,スプライト領域に背景と人物を同時に表示するには、背景もスプライトにするか、背景をBGに定義する必要があります。
△Index



9Bライブラリ


9Bソフトライブラリ投稿掲示板でエラーが出てしまいました。
 長文だとエラーが出て書き込めない場合があるようです。エラーの場合は文章を短くしてください。(念のため,投稿する前にテキストを別途保存するのも必要かもしれません)
△Index



キャプチャ、アイコンのビットマップは必須ですか?
 できれば、画面キャプチャは全てのソフトにつけたいと思っていますので、必須とさせていただきたいと思っています。
 アイコンについても、ソフト顔でもありますので、とりあえず必須とさせて下さい。(単に私の作業を減らすために用意して頂いているのも正直ありますが・・・)
 可能であれば,自分のサイトにアップした上でURLを記載して下さい。
△Index



ソフト概要はHLPファイルと同じにしましたが、[]は使わないように変更しました。問題ありませんか。
 特に問題はありません。
△Index



動作機種は確認済みの機種と、機種による制限が出そうな点について書きましたが、良いでしょうか?
 結構です。
△Index



詳細説明のページを特に起こしてないのですが、既存のダウンロードページのアドレスを書きましたが良いですか?
 問題ありません。
△Index



ライブラリに登録する圧縮ファイルを,Zaurus上で解凍できるかどうか確認したいのですが,推奨MOREはありますか。
展開ができるソフトは、以下2本があります。
・只物置場 「 ZIP,GZIP ファイル展開ツール Ver. 1.00 」 マブチ氏
http://hp ..... nherit.cgi?freeware+0
・MOREソフト 「LHA for Zaurus Ver1.20」 nakaban氏
http://hp ..... s/VA018476/index.html
△Index



プログラムの一部を変更し自分のサイトのダウンロードファイルを更新しましたが、再登録申請は必要ですか?
 ダウンロードファイルだけを更新した場合でも、修正した旨の連絡は必要です。
 ただ、変更されたのがダウンロードファイルだけで、その他の登録項目の変更がなければ再登録は必ずしも必要ありません。
(9Bライブラリサイトのダウンロードファイルは開発者のアップロードしたファイルへのリンクであるため。)
△Index



その他


9B実行画面のキャプチャをしたい。
 メニューキーを押すと開かれる9Bのメニューから画面キャプチャを選んで下さい。
 なお、常駐モノ等でスクリーンサイズが小さいと、メニューが表示されない場合がありますので、その場合はサイズを大きくして下さい。
△Index



アイコンはどうやって表示させるのですか。
 ICNファイルが必要です。ICNファイルは縦横24ドットサイズのBMPファイルで,ファイル名はアイコンを付けたいBASファイルと同じ名前で拡張子のみ「.ICN」となります。
 アイコンファイルを作成するアプリが944BASICサイトに掲載されていますので,それを利用すると簡単にICNファイルが作成できます。
△Index



MI-C1だと、画面の下が切れて表示されます。
 E1以前の横画面では液晶画面のサイズから下の部分が切れてしまいます。表示される範囲は240レ240ですので横型ザウルスの方は画面サイズを調整しましょう。
△Index



サブルーチンを他のリストでも使いたいのですが。
 INCLUDEコマンドを使うと外部ファイルを結合できます。ただし変数名等が衝突しないよう、プログラマー側が管理する必要があります。
△Index



エラーが発生しても処理が止まらないのですが。
 エラーが発生しても、当該エラーは無視され(フッターにコメントは表示されます)プログラムは引き続き実行されます。
 したがってデバックではプログラマ自身がブレークポイントを記述する必要があります。
△Index



画面キャプチャで取り込んだBMPファイルがPCのペイントで時々「認識できないファイル」となってしまう。
 画面キャプチャのBMPですが、一部のパラメータの関係で,グラフィックソフトによっては化けたり表示されない可能性があります。
△Index



9Bでファイルの入出力をクリップボード実行させると、うまく処理されない場合があります。
 相対ディレクトリ指定を行っている場合,カレントディレクトリの関係で意図しないディレクトリ(フォルダ)位置にファイル入出力を実行する恐れがあります。
 これはクリップボード経由でプログラムを実行させると発生する可能性がある現象ですので,その場合,絶対指定でファイルを読み書きする等で回避します。
△Index



SLに移行ってほんとうですか?
「厳密には、移行ではありません。9Bの対応プラットフォームが拡大していくと認識してもらえると嬉しいです。」とのことです。
△Index



「なぞって検索」のように選択した文字列を9Bに取り込む方法はありますか?。
 これはクリップボード操作の一種にあたります。現在のところ、クリップボード関係のコマンドは未実装または未公開な ので、使用できないことになると思います。
△Index



プログラムをHPにUPするために、圧縮したいんですが、ザウルスで圧縮する方法はないでしょうか?
 9Bライブラリ登録時の圧縮形式はLHA又はZIPですが、残念ながらザウルス単独で複数のファイルを、これらの形式に圧縮するMOREは無さそうです。
 MOREの配布形式であるZAC形式に圧縮(厳密にはサイズを縮小する圧縮ではなく、複数ファイルを一つのファイルに書庫化する)ならば、nakabanさんのZaurus ArChiverで可能です。
http://hp ..... 18476/index.html#ZZAC
 ホームページへアップするならZAC形式というのも一つの方法です。
△Index



9Bソフトで、文字を表示させたときに、文字が画面下まで書き込まれたとき、スクロールさせて続きを表示する方法は?
 スクロールについてはたろサさんの、「ヒット アンド ブロー」が参考になると思います。
http://so ..... jp/T/TRS/TRSPHIT0.HTM
ここでは、文字表示位置を指定する LOCATE、GCURSOR のコマンドと画面を動かすことができる BOXMOVE を組み合わせてスクロールを実現しています。
 また、ある一定数以上の書き込まれると画面を消す、というのは、変数と IF を組み合わせればできそうですね。
△Index



裏技


9Bアプリで背景が透明になる方法。
 以下のリストを実行すると,以後,背景が透明色になるようです。
リスト
REM 944BASIC '透明ウインドウ'
INPUT A,30,1
SCREEN 0,0,1,1
SCREEN 0,0,240,320

REM 処理を記述

END

△Index



 誤字脱字等やお気付きの点ありましたらosahp@zad.att.ne.jpまで。
 なお,返事は期待しないで下さい〜(汗)でも、なるだけ更新します。(by OSA@雇われ管理人)
※このHTMLファイルはテキストファイルを9Bを利用してタグを付加しました。