MSX エミュレータ "fMSX".targz

MSX-BASIC を使おう

MSX エミュレータで、MSX-BASIC を使ってみましょう。

MacOS や Windows 用のソフトを開発するには、OS に対応させるための知識がたくさん必要です。情報はたくさん出回っているのですが、それを学習するにはかなり時間が必要です。ところが、MSX-BASIC での開発は、Mac などでの開発に比べ簡便でとっつきやすいのです。みなさんも挑戦してみませんか。


ディスクイメージファイルを作る

プログラミングをはじめる前に、ディスクを使えるように準備しておきます。せっかく打ち込んだプログラムを保存するためです。ここでは、Macintosh 用の ShrinkWrap 2.0 を使う方法と、MS-DOS 用の DCOY.EXE を使う方法を紹介します。

ShrinkWrap でイメージファイルを作る

ShrinkWrap は、Macintosh でフロッピーディスクのイメージファイルを作成・使用するためのツールです。MacOS のアップデータなどはディスクイメージファイルで供給されているので、ShrinkWrap のお世話になっている人も多いでしょう。ShrinkWrap は MS-DOS のフロッピーディスクのイメージファイルを作ることができるので、fMSX 用のディスクイメージファイルを作ることができます。

ShrinkWrap の入手

ShrinkWrap は、次のサイトから入手できます。

新規イメージファイルの作成

ShrinkWrap の Image メニューから「New Image...」を選んで、「DOS 720KB フロッピー」のイメージを作ります。イメージファイルを置き場所やファイル名は自由です。

ShrinkWrap 2.0 で新規イメージを作る

残念ながらこのままではディスクがうまく読めないので、fMSX でフォーマットさせることが必要です。ダイレクトモード (後述) で「CALL FORMAT」と打ち込めばフォーマットできます。

手持ちの MSX ディスクを利用する場合

ドラッグ&ドロップでイメージファイルを作ってみましょう。

まず、ShrinkWrap の「Edit」メニューの「Preferences...」を選んで、次の画面のように設定します。

ShrinkWrap 2.0 の設定画面

要するに、「Save disk image file as」の「Floppy」のポップアップメニューを「MS-DOS Image File」にすればいいわけです。こうすると、フロッピーディスクをShrinkWrap にドラッグ&ドロップするとMS-DOS のイメージファイルを作ってくれます。

そして、手持ちの MSX ディスクを Mac に挿入して、ShrinkWrap にドラッグ&ドロップすれば、イメージファイルの完成です。

これで、イメージファイルができました。イメージファイルを標準ダイアログで指定できるので、イメージファイルの置き場所やファイル名は自由です。なお、fMSX と同じフォルダに「DRIVEA.DSK」というファイル名のイメージファイルを置いておけば自動的に読まれます。

DCOPY.EXE でイメージファイルを作る

DCOPY.EXE は、MS-DOS でフロッピーディスクのイメージファイルを作成するためのツールです。

DCOPY.EXE の入手

DCOPY.EXE は、fMSXホームページから入手できます。なお、DOS 用 fMSX や MS-Windows 用 fMSX にはすでに同梱されています。

イメージファイルの作成

DCOPY A: C:\DRIVEA.DSK

というコマンドを DOS 上で実行して、フォーマット済みの 2DD ディスクを A ドライブに挿入します。2DD ディスクがなければ、2HD ディスクの穴を両方とも塞げば 2DD ディスクとして認識されます。もちろん、みなさんが使っている MSX 用のフロッピーディスクをそのまま使用しても結構です。

これで、イメージファイルができました。イメージファイルは、fMSX 本体と同じディレクトリに移動しておきます。

上に戻る


はじめての BASIC プログラム

MSXの起動

fMSX の起動画面で ROM ファイルを何も指定しなければ、BASIC が立ち上がります。fMSXと同じフォルダ (ディレクトリ) に「DRIVEA.DSK」ファイルがあれば、A ドライブのフロッピーディスクとして使用できます。

この画面で、BASIC の命令を実行したり、BASIC プログラムを入力・編集できます。白い四角をカーソルといいます。カーソルは矢印キーで動かすことができます。文字を入力するとカーソルのある場所に上書きします。「Ok」というのはプロンプトといって、命令やプログラムが入力できますよという印です。

では、次のような文字列を入力して下さい。 (大文字小文字は問いません)

PRINT 5+3

カーソルが「3」の後ろにあると思います。ここで、return キーを叩くと命令が実行されます。

PRINT 5+3
8
Ok

となったら成功です。このように、命令を打ってすぐ実行させることを、ダイレクトモードといいます。ダイレクトモードでは、return キーを叩けばすぐに命令が実行され、「Ok」の文字がでます。

命令の頭に数字 (行番号という) を付けて入力すると、その命令はすぐには実行されずに、MSXの内部に記憶されます。あとで、記憶された命令をいっぺんに実行させることができます。行番号の付いた命令群を「プログラム」といい、行番号を付けて命令を入力することをプログラムモードといいます。では、次のプログラムを入力して下さい。行末ではreturn キーを叩いて下さい。入力を間違えたら、Backspace キー (Macintosh では delete キー) で消して打ち直して下さい。

10 CLS
20 PRINT 5+3

行末でreturnキーを叩いても、計算結果や「Ok」の文字はでません。プログラムを実行させるには、「RUN」という命令をダイレクトモードで実行します。

RUN

RUNと入力して return キーを叩くと、画面が消去されて

2
Ok

となります。「RUN [return]」と入力する代わりに、ファンクションキーのF5を叩いても同じことができます。ファンクションキーのF5には、「RUN [return]」と同じ文字列が入っているのです。

上に戻る


BASICプログラムの修正

ちょっと長いですが、次のプログラムを入力して下さい。間違っているところがありますが、そのまま入力して下さい。行末で return キーを叩くのを忘れずに。

10 CLS:COLOR 1,15,15
20 SCREEMN 2:X="1"
30 FOR 1="95" TO 2 STEP -10
40 CICLE (128,96),I,X
50 X=X+1:IF X ="16" THEN X="1"
60 IF INKEY$<>" " THEN 60
70 END
80 END

入力してRUNさせても「Syntex Error」(文法の誤り) となってしまいます。そこで、プログラムを修正して正しく動くようにしましょう。

画面をクリアする

shiftキーを押しながら HOME/CLS キー (Macintosh 拡張キーボードでは home キー) を叩くと画面がクリアされます。しかし、Macintosh の標準キーボードにはファンクションキーがないので、ダイレクトモードで CLS 命令を入力して下さい。

プログラムを画面に表示する

LIST」と入力して (またはファンクションキーのF4) リターンキーを叩くと、次のような画面になります。

10 CLS:COLOR 1,15,15
20 SCREEMN 2:X="1"
30 FOR 1="95" TO 2 STEP -10
40 CICLE (128,96),I,X
50 X=X+1:IF X ="16" THEN X="1"
60 IF INKEY$<>" " THEN 60
70 END
80 END
Ok

LIST 命令はプログラムを表示させる命令です。

行番号20のスペルミスを修正

行番号20のスペルミス (Mがよけい) を修正します。

  1. カーソルキー (矢印キー) を使って、カーソルを「N」の位置 (「M」の後ろ) に持っていきます。
  2. Backspace キーで「M」を削除します。
  3. return キーを叩いて、修正したプログラムを記憶させます。

これで、修正ができました。プログラムを修正したときは、かならず return キーを叩いて下さい。

行番号30のスペルミスを修正

行番号30のスペルミス (1Iのまちがい) を修正します。

  1. カーソルを「1」の位置に持っていきます。
  2. I」キーを叩いて「1」を上書きします。
  3. return キーを叩いて、修正したプログラムを記憶させます。

行番号40のスペルミスを修正

行番号40のスペルミス (Rがたりない) を修正します。

  1. カーソルを2つ目の「C」の位置 (「I」の後ろ) に持っていきます。
  2. INS キー (Macintosh 拡張キーボードでは help キー) を叩いて挿入モードにします。
  3. R」キーを叩きます。まだ挿入モードになっています。
  4. returnキーを叩いて、修正したプログラムを記憶させます。

NEXT文を追加

行番号20のFOR文に対応するNEXT文がないので、追加します。

  1. カーソルを Ok の下の空いているところに持っていきます。
  2. 次のように入力します。行末で return を叩くのを忘れずに。

    55 NEXT

  3. 行番号の順番が狂っているように見えますが、MSX 内部では行番号が順番になるように並び替えて記憶しています。
  4. LIST」と入力して (またはファンクションキーの F4 を叩いて) 、リターンキーを叩きます。

    10 CLS:COLOR 1,15,15
    20 SCREEN 2:X="1"
    30 FOR I="95" TO 2 STEP -10
    40 CIRCLE (128,96),I,X
    50 X=X+1:IF X ="16" THEN X="1"
    55 NEXT
    60 IF INKEY$<>" " THEN 60
    70 END
    80 END
    Ok

ちゃんと、行番号の順番に並んでいますね。

行番号80を削除する

行番号80はよけいですので、削除します。

  1. カーソルを Ok の下の空いているところに持っていきます。
  2. 次のように入力します。行末で return を叩くのを忘れずに。

    80

  3. 行番号だけ入力すると、その行番号の命令が削除されます。

プログラムを確認する

LIST」と入力して (またはファンクションキーのF4) 、リターンキーを叩きます。すると、次のように修正したプログラムが表示されます。

10 CLS:COLOR 1,15,15
20 SCREEN 2:X="1"
30 FOR I="95" TO 2 STEP -10
40 CIRCLE (128,96),I,X
50 X=X+1:IF X ="16" THEN X="1"
55 NEXT
60 IF INKEY$<>" " THEN 60
70 END
Ok

これで修正が終わりました。では、実行してみましょう。

プログラムを実行する

RUN」と入力してリターンキーを叩くか、ファンクションキーの F5 を叩きます。すると、次のようにプログラムが実行されます。

プログラムの動作画面

画面に、同心円がいろいろな色で描かれば、成功です。プログラムを終了するには、スペースキーを叩きます。普通は「CTRL + STOP」 (Macintoshではcontrol + F11で代用) でプログラムを停止しますが、Macintoshの標準キーボードにはファンクションキーがないので止められません。そこで、スペースキーで停止するようにプログラムを変更してあります。

プログラムを終了すると白地に黒の画面になるので、「color 15,4,7 [return]」 (またはshift + F1) を実行して元の配色に戻しましょう。

上に戻る


BASICプログラムの保存と読み出し

せっかく作った BASIC プログラムはディスクに保存しておきましょう。fMSX でディスクを使うには、2DD ディスク (720KB) のイメージファイルが必要です。イメージファイルに「DRIVEA.DSK」と名前をつけて fMSX を起動すれば、Aドライブのディスクが使えます。

ディクス関連の命令には、次のようなものがあります。

FILES……ディスクのファイルを一覧する
(例) FILES "B:
Bドライブのディスクのファイル一覧がでる。末尾に「"」が抜けているがダイレクトモードなら問題ない。
SAVE……ファイルを保存する
(例) SAVE "A:SAMPLE.BAS"
今記憶されているプログラムを「SAMPLE.BAS」という名前で保存する。ファイル名はDOSと同じルールで付ける (ファイル名8文字+拡張子3文字) 。
LOAD……ファイルを読み込む
(例) LOAD "A:SAMPLE.BAS"
SAMPLE.BAS」というファイルを読み込む。ファイル名を忘れてしまったらFILES命令でファイル一覧を出して確認する。
KILL……ファイルを削除する
(例)KILL "A:SAMPLE.BAS"
SAMPLE.BAS」というファイルを削除する。
CALL FORMAT……ディスクを初期化する
ドライブとディスクの種類を尋ねてくるので答えていく。初期化を中止するには、「CTRL + C」もしくは「CTRL + STOP」をタイプする。

ここで、さっき入力したプログラムを保存しておきましょう。

上に戻る


MSX-BASIC のサンプルプログラム

これらのサンプルは、MSX の特徴である「カラーグラフィック」「スプライト」「サウンド機能」を活用(?)したものです。おそらく、リストを入力しても、どこかで入力ミスをしていて、一発で動くことはないでしょう。自分の打ち込んだリストと掲載したリストをよく見比べて、間違いを修正して下さい。

スクリーンセーバー

10 DEFINT A-Z
20 SCREEN 2:CLS
30 C = RND(-TIME)
40 X1 = RND(1)*256
50 Y1 = RND(1)*192
60 X2 = RND(1)*256
70 Y2 = RND(1)*192
80 C = RND(1)*15 + 1
90 LINE (X1,Y1)-(X2,Y2),C,BF
100 IF INKEY$<>" " THEN 40
110 END

いろいろな形の長方形をいろいろな色で描画

実行させると、いろいろな形の長方形がいろいろな色で描かれます。

スプライト機能

10 DEFINT A-Z
20 SCREEN 2,1
30 PI# = 3.1415926535
40 A$ = CHR$(0)+CHR$(112)+CHR$(72)+CHR$(84)+
CHR$(42)+CHR$(21)+CHR$(10)+CHR$(4)
50 SPRITE$(1) = A$
60 PSET(203,88),15
70 TH# = 0
80 FOR K#="75" TO 0 STEP -.5
90 TH# = TH# + PI# /30
100 X = 128 + K#*COS(TH#)
110 Y = 88 + k#*SIN(TH#)
120 LINE -(X,Y),15
130 PUT SPRITE 1,(X,Y),10
140 NEXT
150 BEEP
160 IF INKEY$<>" " THEN 140
170 END

スプライトがうずを描く

実行させると、えんぴつ型のスプライトが時計回りのうずを描きます。

音楽機能

10 PLAY "O4V10CDEFGAB"
20 IF PLAY(0) THEN 20
30 SOUND 7,&HBE:SOUND 8,15
40 FOR I="0" TO 255
50 SOUND 0,I
60 NEXT
70 PLAY "O4V10CAFGEDB","O4V10ECABGF+D-","GECDBAF+"
80 END

単純音階・効果音・三重和音を演奏します。

上に戻る


Copyright © 2004 NAKANO Takayuki. All rights reserved.