MSXを知ることが早道です…

[やってみましょうBASIC]-[グラフィック]-[サウンドとミュージック]-[マシン語]-[ダウンロード]

MSX-BASICなどでメッセージを出してみよう!
英 語のエラー、メッセージに驚いて、パソコンが壊れてい る?と驚いてい る方はやってみてください。

 パソコン用語は原因がわかれば英語なんてわからなくてもいいのです!
使いやすいように英語になっているものです。


MSX BASIC エラー

こ のようにSyntax errorが表示されても大丈夫です。
これはBASICの文法のチェックに 誤りがあると表示されるエ ラーです。

MSXBASICではよく表示されるエラーとあまり表示されないエラーの2つがあります。

=漢字ROMがあるなら=

漢 字ROMがあるなら、BASICのエラーを調べてみましょう。
KEY 1,STR$(ERR)
前 回のものはエラー番号を調べるもので
エラーの度に入力する必要がありますが、
KEY1,"?err"
この修正したものはプログラムが残るので、エラー直後でかまいません。
まずプログラムファイルを保存して
F1キーを押して数字を調べます。
ERR − MES.BASを実行します。数字を入力して数秒待ちます。
インデックスから日本語でエラー表示します。これでOK。

<<ERR−MES.LZH をダウンロード>>
8/14 アップロードチェック済み

MSXBASICはもちろん、MSX-DOSのメッセージも解説しています。

= ハードエラーかも?=

解決できないエラーはハードウェアの不具合のエラーも考えられます。
リサイクルMSXは中古品などで修理できる部分を解説しています。

http://www.geocities.jp/fullmsx2/u-yan/recycle-msx2.html


■MSX -DOSメッセージ
Unrecognized command
アン、リコングニズド、コマンド
コ マンドを認識していません。
※実行コマンド、バッチコマンドがない場合に表示されます。

Invalid pathname
インバリド、パスネーム
ディレクトリパスが無効です。

Not ready reading drive A:

Abort or Retry (A/R)?

ノッツレディ、リィディングドライブエー
アボート オア リトライ?
Aドライブの読み込み準備ができていません。
中止 または 再実行?

Disk operation aborted
ディスクオペレーションアボーテット
ディスク操作の処理を中断しました。

Destroy all data on RAM disk(Y/N)?
デストロイ、オールデータオンラムディスク
ラムディスクのデータを全て消去しますか?

Erase all files?(Y/N)
イレーズオールファイルズ
全てのファイルを消しますか?

Volume in drive H: has no name
ボリュームインドライブエイチ、ハズノーネーム
Hドライブのボリューム名がありません。

Current time is 12:20:37a
Enter new time:

カレントタイムイズ、
エンターニュータイム
現在時刻は:午前12:20:30秒
新しい時刻を入れて下さい:
※何も入力しなければ変更しません。

■ASCII製アセンブラ

Object area full
オブジェクトエリアフル

Label table full
ラベルテーブルフル

Assembler sourse error
アセンブラソースエラー

Screen not 40*24 text mode
スクリーンノット40*24テキストモード

Address Overflow
アドレスオーバーフロー

Balance Error
バランスエラー

括弧の左右の数が合わないなど

Expression Error
エクスプレッションエラー

式の記述がおかしい。

Format Error
フォーマットエラー

該当するニーモニックがないエラー

Label Error
ラベルエラー

使用できない文字などを使ったり
命令に使っている単語などを使用した場合のエラー

Multiply Defined Label
マルチプライ、デファインド、ラベル

同じラベルを使っている場合のエラー

Operand Error
オペランドエラー

Phase Error
フェーズエラー

Reference Error
リファレンスエラー

Underfined Label
アンダーファインドラベル

Value Error
バリューエラー

■MSXBASICエラー
Bad File alllocation table(Bad FAT)
バッドファイルオールロケーションテーブル

 
こ のエラーはディス クに致命的な障害が発生した場合に起こるエラーです。
これが出るとFILESが表示されなくなったり、部分的に表示されるなどアクセス障害が発生する場合があります。
軽度のものであればCHKDSKなどで改 善できます。
 要するに全て(オール)のファイルの場所(ロケーション)がわからなくなったになった場合です。

Bad File mode
バッドファイルモード

 
ファ イル のロード方法が異なる場合に表示されます。
例えばBASICファイル(BAS)をBLOADでロードする場合などです。

Bad  File name
バッドファイルネーム

不要なスペースが入って実行すると
ファイルネームの指定が誤っているエラーです。

例えば
I$="    AUTOEXEC.BAS":FILES I$
Bad file name
Ok

Aの間にスペースが入っています。
スペースを使うプログラムでバッファにたまってしまう事があります。
CUIのプログラムではこのような事が起こります。
入力のしかたとプログラミングは次のとおりです。

○:FILENAME?■
×:FILENAME? ■
○:LINEINPUT"FILENAME :";F$
×:LINEINPUT"FILENAME :  ";F$

どちらも不要なスペースは詰めましょう。
デバッグ中にどうしてもスペースが入る場合は
BIOSでバッファのクリアを実行します。

Bad File number
バッドファイルナンバー

 
こ のエラーはOPEN”GRP:” AS#1を宣言した場合、正規ではCLOSE#1ですが、
入力を誤りCLOSE#3など宣言していない番号を実行した ことによって生ずるエラーです。
 BASICではファイル、画面などのデバイスの入出力に#1などと番号を宣言することが必要です。


Break  in
ブレイクイン

こ れはBASICを実行中に中断した 場合の警告音と行をかえします。

Can’t Continue
キャントコンテニュー

  このエラーはBreakしてプログ ラムモードでCONTを入力して再開できない場合に起こります。
私の復帰方法はグラフィックモードであればSCREEN5を入れて不足した数値、文字列でGOTO行番号です。
SCREEN5:I=3:GOTO310ってな具合です。


Device  I/O error
デバイスアイオーエラー

こ れはようするにカセットなどのインター フェイスを使用中にCTRL+STOPを押すと表示されます。

Direct statement in file
ダイレクトステートメントインファイル

 
マ シン語ファイルなどのバ イナリー形式(BIN)をLOADした場合に出ます。

=BASIC形式ではないマシン語ファイルを無理にロードすると、=

RUNTHEN11RETURNENDFILES"SD"ANDと読み込む場合は
Direct statement fileと表示。

マシン語ファイルでも先頭が合致していると
15243 RUNINSTR("ANDSTRING$(C$FOR
と部分的にBASICファイルと認識してハングアップするの2種類です。


Disk I/O error
ディスクアイオーエラー

  これはディスクドライブの 読み書き動作で何らかの障害が発生した時に表示されます。
フォーマットされていないディスク、MSX-DOSフォーマット外のセクタ読み込み方式ディスク
を読み書きした時もこのエラーを返します。

Disk offline
ディスクオフライン

 FDDなどのドライブにフロッピーディスクが入っていない。

Disk write protected
ディスクライトプロテクテッド

こ れは3.5インチのディス クが書き込み不可になっている時に表示されます。

File not found
ファイルノットファンド

こ れはファイルが見つからな い場合に表示されます。
プログラムを見てみると
OPEN"ERROR.DAT"、 COPY"TCA.SC8"、 BLOAD"TEST.SC8",Sなど
記述しているファイル名がない場合に表示されます。

MSXはWindowsのようにアプリケーションが上書きチェックまでしていません。
そこで、このエラーを同じファイル名 がないかを調べる用途で使用する場合があります。
FILES"M-FILE.SC8"
File not found
Ok
このようになればM-FILE.SC8がな いので
COPY"TEST.SC8"TO"M-FILE.SC8"
というふうに名前を変えてを書き込むことができます。

I legual function call
イレギュラーファンクションコール

  これは数値が許容範囲を超 える場合と数式に誤りがある場合です。
チェックする所はMM=などの式の部分。誤りが指定行以外の場合もあります。
 また、プログラムモードでSCREENを指定せずにダイレクトでCIRCLE命令などを実行すると起こります。

Missing Operand
ミッシングオペランド

  これはwidth命令など 数値を省略した場合に起こるエラーです。

Out of data
アウトオブデータ

  これはプログラムの DATAのカンマ区切り(,)のデータとREADA$などと読み込むデータ数が合わない時にエラーが起こります。
 DATA文の全体を見て「.」ピリオドまたはドットになっていないか?よく確認してみましょう。
正:DATA 10,23,453,4,4,3
誤:DATA 10,23,453.4,4,3

ドットの場合453.4は小数点として認識します。

Out of memory
アウトオブメモリー

こ れはメモリが足りない時の エラーです。CLEAR文の数値を減らすと直る場合があります。
必ずセーブしてから、実行してください。暴走します。
ctrl立ち上げで改善される場合があります。

Out of String space
アウトオオブストリングスペース

これはM$などの文字列(string)を多く使用した場合に発生するエラー、CLEAR文で数値を上げるなどして回避します。
このエラーは中程度のプログラムになってくるとメモリを使用するので発生します。CLEAR 3000程度にします。

Over flow
オーバーフロウ

 これは数値が許容範囲を超えると表示されます。
具体的には16進数列を変数で読み込んだ場合に表示されます。

Redimensioned array
リ・ディメンションド・アーリー

これはDIM文を宣言した後、DIM文を再び宣言した時に表示されます。
テストモジュールなどで使用した時に削除を忘れてしまった時などに発生します。この宣言をクリアするにはCLEARと入力します。

?Redo from  start

リ ドゥフロムスタート


例えば
input n,s

と表示され
? a
?Redo from start
と表示されます。これは最初からやり直しと言う意味?です。
この場合は10,20とカンマ区切りで入力します。Redo from startにまつわる謎もあります。

Subscript out of range
サブスクリト・アウト・オブ・レンジ

 これは配列変数のエラーでFD(1)=23:FD(2)=4:FD(3)=1089などと通し番号で変数を分けられます。
この番号が10番を越えた変数場合に発生しますので、FDの最大番号がFD(100)の場合はDIM FD(100)となります。
エラー例としてFORI=0TO20:S$(I)="AAA":NEXTを実行し、エラー後に? Iで中断した変数11が表示されます。

Syntax  error
シンタックスエラー

こ れは文法に誤りがある場合 などに表示されます。call systemが無効な時にも表示されます。
READ文で値を指定し文字列を読み込むと失敗したDATA行がエラーとして表示されます。
チェックするところは文法、括弧の数があわないなどです。
このエラーのほとんどは入力のエラーですが、マシン語を実行している場合に起こることがあります。
後者の場合は原因不明な場合が多く、
とりあえず、このエラーで止めておこうという場合があるのでしょうか。


Too many files
トゥメニーファイルズ

こ れはファイル名が多い場合 に表示されます。
ファイルを別のディスクに保存するか、削除するかなどです。

Type mismatch
タイプミスマッチ

こ れは数式、文法などが合致 しないときのエラーです。
文字列型と変数型が構文としてある場合に起こります。
10 A=I$(1)
ありがちなミスとしては文字列型に数値を入れてそのままにした場合です。
これは文字列型の構文にVALをくわえないとエラーが起こります。
10 A=VAL(I$(1))
これでAにI$(1)の数字が入ります。
また、座標に文字列を入れることはできません。
A(3,4)="ABCD"
この場合、Aという変数を文字列(ストリングス)で定義します。
あらかじめ、デファイン(DEFine)命令で
DEFSTR A、(デファインストリングス A)
と宣言します。
BASICでコンピュータミュージックする場合に
小節と和音部を分ける場合に2次元表記します。

Underfind line number
アンダーファインドラインナンバー

こ れはGOTO文、 GOSUB文などの分岐先の行番号がない場合などに表示されます。
プログラムをロードした時に出る場合もありますが、「行がみつかりません。」の英訳です。
エラーの出し方は数を入力してRETURNしてみてください。
カンタンに説明すれば10行、プログラム、20行、プログラムと
リンクされてプログラムリストになっていますが、
10行、プログラム、20行、?というように20行のプログラムない場合に生じます。
この状態でListすると止まってしまいます。メモリが足りないエラーの1つです。

*不明なエラー

エラーというのは複数の意味をもつ場合があります。
デバッグ開発の利便性から考えてエラーコードの中で合いそうなエラーを表示することも考えられます。


*解決されないエラー

エラーがあっても数値などが有効範囲内であれば実行上問題がない場合もあります。
これをバグと呼びますが、プロセスごとに1つ1つ処理をクリアしたかを追っていきます。
デバッグ手法としては、プログラム中にENDを加えて処理している変数、文字列を調べます。
FOR〜NEXTなどのくり返しの場合はI$=INPUT$(1)を加えて、正常に表示しているかチェックします。
ここでBreakしても変数、数値は調べることができます。
また変数を別のプロセスで使ったりすると前のプロセスで使用した変数が残ることがあります。
私の場合はA,B,C,I,J,X,Y,Lなどを使いますが、一時的にAを取得などの用途にします。
これをスコアなど得点処理にAを使った場合に用途が違うので別の処理した数と得点が加わったりします。
初期化をする命令などを実行すると変数、文字列が反映されないために解決されないエラーがあるかもしれません。



 代表的なエラーを並べてみました。まだま だ、エラーはありますが、経験 を積めば克服できるものです。