やってみましょう!MSXBASICその3

その2へ戻る
・さまざまな起動方法
・ディスクのソフトが起動しない
・テキスト画面の使い方
・MSXBASICのメモリ操作
・ネスト構造
・条件分岐
・ファイル操作
・変数DATAを読み込む
・JISモードとシフトJISモードの切り替え

・ファイル操作
その4へ進む


◆テキスト画面

msx-scr


さ まざまな起動方法

1.そのまま電源を入れる方法
2.Shiftキーを押しながら立ち上げますとROMBASICになります。
3.MSXturboRではキーボードの1を押しながら立ち上げますとMSX-DOSモードになります。
4.ctrlキーを押しながら立ち上げますとフリーエリアを広げます。これはOut of memory などが表示されてしまう場合などに有用です。
5.BASICでPAUSEキーを押して、SCCカートリッジを差し込みます。
6.GRPH+STOPを押しながら立ち上げますとパスワードをクリアできます。
7.ESCキーを押しながら立ち上げる方法
8.Deleteキーを押しながら立ち上げますと内臓ソフトをクリアする機種もあります。

ディスクのソフトが起動しない

 長く放置しておくと、起動しない場合があります。
これはFDDのヘッド面にホコリなどが付着していることが原因です。
クリーニングディスクでフォーマットするといいかもしれません。
 ディスクが読み込めない場合は実機では実行をとりやめ、
購入したディスクなどにバックアップをとることをおすすめします。

使ったFDD:○○○×○
↓バックアップすると
新しいFDD:○○○○○

となるが、×の部分のデータを読めない。
読める部分をコピーすることでハード的なディスクエラーは回避できます。
新しいフロッピーにCHKDSKなど実行するといいでしょう。

※ディスクは落とさないようにていねいに扱ってください。

MSXエミュレータの場合、ディスクを入れた状態でCPUステートから読み込まないと
起動しないことがあります。

MSXのテキスト画面の使い方

この画面ではダイレクトモード、プログラムモードがある。

・ダイレクトモード

そのままプログラムを直接入力するができる。
このコマンドをダイレクトコマンドという。
ダイレクトコマンドは数値、文字列、ファイルの操作など全ての
BASIC命令とプログラムの編集に使うことができる。
行番号を入れないので実行後にコマンドが消えることがある。
<<文字コードを得る>>
? ASC(INPUT$(1))
<<SC5の画像を表示する>>
SCREEN5:BLOAD"SAMPLE.PL5",S:BLOAD"SAMPLE.SC5",S:I$=INPUT$(1)
上のプログラムは実行できますがSCREEN5になってプログラムは消える。

・プログラムモード

行番号を入れてダイレクトコマンドを入力するとプログラムモードになる。
ダイレクトコマンドでエラー、バグがなければ行番号を加えるだけでエラーなくプログラミングできる。
行番号を10行間隔で作れば、もし何か不具合があってもデバッグができる。
<<SC5の画像を表示する>>
10 SCREEN5:BLOAD"SAMPLE.PL5",S:BLOAD"SAMPLE.SC5",S:I$=INPUT$(1)

・デバッグコマンドLIST

プログラムの編集はテキストエディタのように書き換えたりする
こともできるが、行単位の削除はコマンド1つで消すことも可能だ。
コマンドは英数の大文字または小文字でも実行できる。
まずは[F4]のlistそして、リターンキーを押してみよう。
入力した行が表示される。

・「LIST.」入力した最後の行を表示

さらに[Shift]+[F4]で入力した最後の行、エラーの発生した行を表示できる。
うまく使えば、この命令も便利ですから覚えましょう。

<<840行以降のプログラムを表示>>

LIST 840-
<<10行から90行まで削除>>
DELETE 10-90
<<100行だけを削除>>
100
<<90行以前を削除>>
DELETE -90
<<10行からオートライン>>
AUTO
<<1行から1行ずつオートライン>>
AUTO 1,1
<<10、15、20という行番号を揃える場合>>
RENUM
<<カーソル以降を削除>>
CTRL+E
<<BEEP音を出す>>
BEEP
<<5回音を出す>>
FOR I=1 TO 5:BEEP:NEXT

・オートラインモード
プログラムリストをプログラムする場合は自動で行番号が入力されるこのモードを使う。

MSX:MSXBASIC-AUTO

auto 10で10行から入力。
画像のように*が表示されている行は既に打ち込まれている行。
そのままリターンでかまわない。
10行から70行までは打ち込まれていますが、80行は打ち込まれていませんね。
このモードから出る場合は[ctrl]+[stop]、[ctrl]+[pageup]を使います。

・トレースモード

[10][20][30][40][50][60][80][90][70][100]
実行中の行番号を表示(tron)、解除(troff)することができる。

■MSXBASICのメモリ操作

DATAの文字列をメモリに入れることをやってみます。

10 RESTORE 60
20 FOR I=0 TO 2
30 READ A$(I)
40 NEXT
50 DATA"TEST"
60 DATA"A"
50 DATA"AB"
40 DATA"ABC"

Okが表示された後に
PRINT A$(1)
A
Ok
と表示されればよいです。

文字列変数を使います。
A$(1)はA
A$(2)はAB
A$(3)はABC
と入るプログラムです。
RESTOREは60行からREADさせる命令です。
A$(10)以降はDIM A$(23)などと指定します。
表のように縦横に入れる場合はDIM A$(10,3)というふうに
できますが、3回読む横のネストと10回読む縦のネスト構造と
全てプログラムを作り直す必要があります。

■ネスト構造

FOR〜NEXTは繰り返し処理をする命令です。
1,2,3と通し番号をふることができる便利な命令です。
FORがY=0と始まる場合は0,1,2,3と0もカウントされます。
決められた長さ(フィールド長)ともいいますが、これができればよいです。
FOR X=1 TO 40
これはXを1から40回繰り返す命令です。
FOR Y=1 TO 3
  FOR X=1 TO 40
  NEXT X
NEXT Y
このような構文ではY=1で
Xを1から40回繰り返してY=2となります。
A$="ABCDEFG"+CHR$(10)
FOR Y=1 TO 3
  FOR X=1 TO 40
     A$=MID$(I$,X,1)
     IF A$=CHR$(10) THEN X=40
  NEXT X
NEXT Y
例外としては改行コードなどがあった場合は
強制的に変数を変更することもできます。

■条件分岐

条件分岐はIF〜THEN〜ELSE命令で行います。

100 CLEAR 3000:DIM MN(12),B$(12)
110 FOR I=1 TO 12
120 READ MN(I),B$(I)
130 NEXT
140 N$(1)="はる"
150 N$(2)="なつ"
160 N$(3)="あき"
170 N$(4)="ふゆ"
180 PRINT"1.はる 2.なつ 3.あき 4.ふゆ";N
190 FOR I=1 TO 12
200 IF N$(N)=B$(I) THEN PRINT MN(I);”月は";B$(I)
210 NEXT
220 DATA 1,"ふゆ"
230 DATA 2,"ふゆ"
240 DATA 3,"はる"
250 DATA 4,"はる"
260 DATA 5,"はる"
270 DATA 6,"なつ"
280 DATA 7,"なつ"
290 DATA 8,"なつ"
300 DATA 9,"あき"
310 DATA 10,"あき"
320 DATA 11,"あき"
330 DATA 12,"ふゆ"

このプログラムは春夏秋冬を認識させるプログラムです。
110〜130行でメモリに入れています。
さらに140では180行で2を入れると、”なつ”というように
その数値のワードを入れています。4ならばふゆになります。
180で入力してNに数が入るとN$(N)に"あき"が入り
再びFORでIを1から12までカウントして
もし、あき=あきならば、その月が表示されます。
220行から330行を通し順を220行と300行を入れ替えても
結果は変わりません。

220 DATA 9,"あき"
300 DATA 1,"ふゆ"

■MSXBASICのMMLプログラム例

MSXBASICの演奏プログラムの例を書きます。
このように配列変数で書きます。

100 '
110 I$(0)="T100L8V13"
120 I$(1)="CDEFG"
130 PLAY I$(0)
140 PLAY I$(1)

MMLが長くなりそうな場合は

100 CLEAR3000:DIM I$(30)

と文字列と配列変数の確保をします。
30は最初はだいたいの数でよいです。
これでI$(30)=まで書くことができます。
また3和音も入れたい場合は
100 CLEAR3000:DIM I$(30),J$(30),K$(30)

これでJ$,K$も30まで使えます。

■変数DATAを読み込む

$は変数型の宣言でした。
変数の場合はA(1)というふうに書きます。

10 FOR I=1 TO 5
20 READ A(I)
30 NEXT
40 DATA 10,34,54,66,37

16進表記の場合は
40行をこのように書きます。
一旦は"&H0A"と文字列型にして
VALして数値にします。

40 DATA 0A,22,36,42,25
20 READ A$(I):A(I)=VAL("&H"+A$(I))

まだいろいろなプログラム方法がありますが、
ここまでできれば、かなりできると思います。

◆ファイル操作

・A:ドライブのCOMMAND.COMをH:ドライブへコピーする
COPY”A:COMMAND.COM”TO”H:”
・ファイルをみる。
FILES
・TEMP.DATファイルを削除する
KILL"TEMP.DAT"
・TEMP.DATファイルを見る
COPY"TEMP.DAT"TO"CON"
・TEMP.DATファイルを新規に編集
COPY"CON"TO"TEMP.DAT"

※CTRL+Zで終了します。

◆テキスト

 MSXパソコンでは半角英数のテキストファイルを読むことができます。
日本語のテキストファイルは拡張することで以下のことができます。

・その他

1chipMSXでは日本語表示はできません。1chipMSX改では有効
MSXPLAYerはMSX2相当で、半角英数<JIS>のみサポートでしたが、
新バージョンではMSX2+相当の漢字BASICが加えられ<シフトJIS>が使えるようになりました。
 次に漢字BASICの切替え方法を説明します。

●JISモードとシフトJISモードの切り替え


・シフトJISはCALL KANJI
・仮想端末はCTRL+SPACE
・JISはCALL ANK(ANK英数モード)でPUTKANJIを指定

画面設定
・文字桁数を指定。WIDTH 32
・文字位置を指定。LOCATE 10,20
・文字を表示。PRINT”TEST”



次へ