ニャオニャオ21世紀

アイデア。レトロゲーム(MSX、PCエンジン、ファミコン、メガドライブセガサターン)と、MSXのゲーム開発と、最新ゲーム(PS4、SWITCH)、身体(身体意識など)、ライフハック、電子工作ほか雑記を綴っています

MSX BASIC言語の基本・命令を思い出しましょう(その1)! コマンドのPRINTやIFやGOTOを使ったくらいでやめてしまった方へ。初心者歓迎。

MSXの機体の情報が一杯 これは必見の書籍!! 僕らの好きなMSXハードカタログ

次世代MSXがでるらしいということで、今からMSXをやりなおそうという人も

いるんじゃないでしょうか?

子供のころ出来なかったことができるのはたまりません!

趣味としてはとても面白いですよ!

将来的に次世代MSXでビジネスができるようになるかもしれませんしw

 

今回は、MSX BASICは少しだけやったけど忘れてしまったなぁ〜という方に

再び思い出すのに役立つように書きました。

まったくBASICを学ばなかった方もどうぞ。

 

 MSXの思い出

まず僕がどのくらいのMSX BASICのレベルだったかを書きたいと思います。

昔は、ベーマガとかMSX FANとかで、BASICゲームのプログラムが載っていました。

しかし僕は、ベーマガは立ち読みをしたくらいでして、

ベーマガのプログラムリストは打ち込んだことはありませんでした。

MSXマガジンを買っていたので、お小遣いがすくない僕は、

MSX FANは買わず....

 

MSX1のころのMSXマガジンには、ゲームのリストは少ししか載っていなかったので、

それを5~6本打ち込んだくらいでした。

 

それではベーシックの基本は何で学んだかといいますと、

名著"こんにちはマイコン"です!

ゲームセンターあらしのキャラたちがBASICを学んでいくというものでしたが、

小学校中学年の私にはちょうどよかったです^^

まんがですし、ね!

 

今でもBASICなんてさっぱり?という方でも、

この本を読めばしっかりわかると思います。

簡単な壁打ちテニスが作れるようになりますよ!

 

プログラムは全くわからないけど、MSX BASICでプログラムを

打ってみたいという方は、まず"こんにちはマイコン"を読んでみてください。

今なら電子書籍がありますので^^

www.nyaonyao21.com

 

MSXマガジンにもプログラムについて少し書いてありましたので、

スプライトの表示とか、スプライトの動かし方とかを

ちょろっとやりました。

 

しかしカーソルキーでスプライトを動かすだけでMSX BASICは

やめてしまいました;

 

それで大人になった現在は、

スマホでアプリを作ったりしています。

MSXも少し学び直しまして、こんなことをやっています。

 

MSX-MSX BASICでゲームを作る勉強 カテゴリーの記事一覧 - ニャオニャオ21世紀

 

MSX-MSXマシン語勉強 カテゴリーの記事一覧 - ニャオニャオ21世紀

 

ゲーム制作-nyaoの制作作品 カテゴリーの記事一覧 - ニャオニャオ21世紀

 

MSX BASICでゲームを作ったりしています。

まだ完成しておりませんが、

途中経過を。

youtu.be

 

BASIC中に、一部マシン語を組み込んだりしています。

雑誌のプログラムにはマシン語を含んだものがありましたよね!

マシン語の基礎が最近になってわかってきて、

自分のゲームにも組み込めるようになってきました(^^)

MSX-MSX BASICでゲームを作る勉強 カテゴリーの記事一覧 - ニャオニャオ21世紀

MSX-MSXマシン語勉強 カテゴリーの記事一覧 - ニャオニャオ21世紀

 

(この両方を最初から読んでいただければできるようになると思います^^)

今回は、MSXについてもっと基本的なことを書きます。

僕が大人になってMSX BASICをやり直そうとしたときは、

PRINTとGOTOくらいしか覚えておりませんでしたw

そんな人でもある程度思い出せるように書きます^^

 

 MSX BASICってどう書くんだっけ?

現在のプログラム言語と結構違います。

まず行番号!

10 PRINT"hello"

20 PRINT"わかめ"

30 GOTO 10

などと書いていきました。

 

各行の終わりにreturnキーを押さないといけませんでした。

改行は  ;  じゃないんですよね。

 

大文字も小文字もどっちで入力してもOKでした。

文字の間のスペースはなくてもプログラムは動きます。

 

行の削除は、削除する行番号のみを打ち込んでreturnキー!

20 

と打ち込んでリターンキーを押すとかです。

 

行の修正は、LIST (行番号)とかで、その行を読み出して、文を修正しreturnキー!

行の呼び出しは、

list 20

リターンキーとかですね。

 

なお、文字と文字の間に、文字を追加するときはINS(インサートキー)を

押して、カーソルが半分の大きさになってから打ち込まないといけません。

今のPCなら、カソールを合わせて、そのまま打ち込めば間に文字が追加されます。

しかしそのようにするとMSXの場合は、文字が書き換わってしまいます;

これは不便ですよねw

 

 

全プログラムリストをみるのは、

LISTと打ち込んでリターン!

(list 10-30だと、10行~30行が表示されます)

 

プログラムの実行は、

RUNと打ち込んでリターン!

 

(以後リターンキーを打つということを書くのは省略しますw)

 

実行中のプログラムを止めるのは

CTRLキーを押しながら、STOPキーを押す!

 

1行の中に、複数の命令文を書くときは、: で繋ぎます。

10 PRINT"わたしは" : PRINT"ぽっちゃりです"

とかですね。

 

変数について。

英数字1~2文字であること。

先頭1文字は英字(A~Z)であること。

2文字目は英字(A~Z)か数字(0~9)であること。

1~2文字なんてのはBASIC特有ですよね〜。今のプログラム言語ではない制限です^^

忘れがちなことです。

変数の宣言はしなくてOKです。いきなり変数を使えます。

 

変数の型。

$をつけると文字型になります。

A$とかですね。

 

思い出してきたんじゃないでしょうか?^^

 

ちなみに1行は255文字以内しか書けません。

行番号は0~65529の整数でないといけません。

これは最近まで知りませんでした;

 

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

 僕がMSX BASICで遊んでいた頃は、

カセットテープに保存したりしていました。

MSX2くらいで遊んでいた方はDISKだったかもしれません^^

 

まずは保存ができないと、せっかく打ち込んだプログラムが

残らないのでその方法を思い出してください!

CSAVE"ファイル名"

カセットにプログラムを保存します。

 

SAVE"ファイル名"

DISKとかにセーブするのはSAVEです。

BASICの場合は、ファイル名には

SAMPLE.BAS

のように

.BASの拡張子をつけます。

 

エミュでやる場合は、こちらになるのかな。

でもcsaveを使うこともあります。

エミュ(僕の場合はWebMSXです)で開発して、実機で試すときに。

(普通は使わないですけどねw)

MSX Webmsx(エミュ)でプログラミングし、実機で動かす方法。casファイル(テープイメージ)をwavにして読み込みます。 - ニャオニャオ21世紀

 

読み込みは、

テープの場合は

CLOAD"ファイル名"

 

DISKは

LOAD"ファイル名.拡張子"

(DISKの場合は、FILESと打ち込むとディスクに入っているファイルのリストが

表示されます。その中からファイル名を見つけだします。)

 

 MSX BASICの基本的な命令

 一番覚えているのがこれではないでしょうか?

 

PRINT

機能:数値や文字列を画面に表示します。

使用例 PRINT "うどん"

 ダブルコーテーションの中はそのまま表示されます。

 

PRINTは、画面に表示せよという命令です。

 

使用例

10  A$="はいどらいど"

20  PRINT "A$=";A$

実行結果

A$=はいどらいど

 

PRINT文の中ででてくる ; はそのまま続けた位置に表示します。

ダブルコーテーションをつけないと変数の中身が表示されます。

 

 

GOTO

機能:指定した行へ制御を移します。

使用例 GOTO 100

 

◯◯行へ飛べという命令です。

 

BASICといえばこの命令を思い出しますねw

悪名高いGOTOです。この命令のせいで他人のプログラムを読むのが

難しくなります;

現在よく使われる言語にはない命令文ですねぇ〜。

ただMSX BASICには必須の命令文です!

 

 

IF ~ THEN ~ ELSE

機能 : 条件文

書式  IF 条件文 THEN  行番号

    IF 条件文 THEN  文

    IF 条件文 THEN  行番号または文  ELSE 行番号または文

使用例 IF X=100 THEN X=255 ELSE X=0 

 

条件が真(0以外)ならTHEN文以降を実行。

条件が偽(0)ならELSEがあるならELSE以降を実行。ELSEがなければ、

次の行へ。

複数の条件をいれることもできます。

IF X>=0 AND X<=100 THEN PRINT "ハンイない"

とか

IF X=0 OR X=100 THEN PRINT "エックスはゼロかヒャクです" 

IF文は各言語によっていろいろ書式がありますね。

 

簡単にいうと 

IF ~ THEN...は、"もし ~ ならば、....せよ"という意味です。

 

IF A=0 THEN PRINT"これはAです"

もしAが0ならば、PRINT(画面表示する命令) "これはAです”と表示せよ!

(IFの中で使う、= は比較で、同じならという意味です。

IF A>0  THEN PRINT"Aは0よりおおきいです"

とか、

IF A<0 THEN PRINT"Aは0よりちいさいです"

とか、

IF A<>0 THEN PRINT"Aは0ではありません"

などがあります。)

 

 

FOR ~ NEXT

機能 :  繰り返し

書式  FOR 変数=初期値 TO  終値

    NEXT

 

使用例  10 FOR I=0 TO 99

             20 PRINT"トリトーン"

             30 NEXT I

実行結果

   トリトーン

   トリトーン

   トリトーン

   トリトーン

   ~~~

(100回表示します)

 

FOR ~ NEXTの間を繰り返します。

(IでなくてもJでもKでもOKです)

 

NEXTの後の変数名(この場合は I )は省略可能です。

 

具体的な説明:

10行で、I=0となります。

20行で、PRINT 文字の画面表示をして、

30行のNEXTで、10行のFOR文に飛びます。

(このとき、 Iは+1され、I=1となります。)

 

それを I (アイ)が0 ~ 99まで繰り返すわけです。

 

FOR I=0 TO 99となっていた場合は、

100回ループです。

0から数えて99までですね。

 

C言語にあるwhileとかswitchとかはありません。

繰り返しはFOR文か、GOTO文などで繰り返しをしています。

 

 

FOR ~ NEXTのちょっとだけ難しい使い方

FOR I=0 TO 99

~

NEXT

のループの中で、

I を計算に利用したりします。

 

簡単な例ですと

10 FOR K=0 TO 10

20 S=S+K

30 PRINT S

40 NEXT 

 

というようなプログラムです。

FOR K=0 TO 10なので11回ループします。

実行結果

f:id:nyaonyaokun:20190429094853p:plain

10 FOR K=0 TO 10

20 S=S+K

30 PRINT S

40 NEXT 

 

1 回目のループ K=0、S=0+0=0

2回目のループ  K=1、S=0+1=1

3回目のループ  K=2、S=1+2=3

4回目のループ  K=3、S=3+3=6

5回目のループ  K=4、S=6+4=10

6回目のループ  K=5、S=10+5=15

7回目のループ  K=6、S=15+6=21

8回目のループ  K=7、S=21+7=28

9回目のループ  K=8、S=28+8=36

10回目のループ K=9、S=36+9=45

11回目のループ K=10、S=45+10=55

 

最初はこういう使い方があるのだな(・∀・)

という程度の認識でいいと思います。

いつも模写しているうちに、馴染んできます。

馴染む、馴染むぞ〜ってなります(*´ڡ`●)

 

補足:S=S+Kにでてくる = というのは代入という意味です。

プログラムででてくる = は代入なのです。

a=1とか b=2とかは、aに1を入れる。bに2を入れるという意味です。

(IFのときだけ違います。IFのところで書いています^^)

 

 

 

SCREEN

機能 : スクリーンモード、スプライトモードの設定をする

書式 SCREEN スクリーンモード , スプライトサイズ

(もっと色々設定できますが、僕は当時はこの2つくらいしか使ってませんでした

詳しくは他のサイトを検索してください^^)

 

使用例 SCREEN 1,2

 

スクリーンモードについて

スクリーンモード 0 は、最大40桁x24桁のテキストモード(MSX1のとき)

スクリーンモード 1 は、最大32桁x24桁のテキストモード。スプライトが使えます。

スクリーンモード 2 は、256 x 192ドットのグラフィックモード。

           横8ドットごとに16色中の2色。

スクリーンモード 3 は、64 x 48ブロックのグラフィックモード。

           1ブロック(4x4ドット)ごとに16色中の1色。

 

MSX1はスクリーンモードが0~3です。

MSX2はスクリーンモードが0~6 (VRAMが64kb)、または0~8 (VRAMが128kb)。

MSX2+はスクリーンモードが0~12 ( 9はありません)

(僕はMSX1ユーザーだったのでMSX1のことしかわからないのです;

今はMSX2も持っていますが、ゲーム開発はMSX1用にします。

MSX2以降の情報は他の方のサイトでお願いします。)

スクリーンモードは使い勝手のいい 1 を使っていました。

市販のゲームもスクリーンモード 1の使用が多かったと思います。

 

スプライトサイズ

0 ....  8x8ドットのスプライトを表示。

1 ....  8x8ドットのスプライトを縦横2倍に拡大して表示。

2 ....  16x16ドットのスプライトを表示。

3 ....  16x16ドットのスプライトを縦横2倍に拡大して表示。

(まぁ普通はスプライトサイズ設定は2にしていましたね。)

 

SCREENは他にも、キークリックの音とか、カセットテープへの

書き込み速度とか、プリンタ種別とかできるようですが、

普通は使わなかったので省略します。

MSX MAGAZINE 永久保存版の1冊目などを参照するといいですよ。

ちなみにこのページは、MSX MAGAZINE 永久保存版 1 を参考にしています^^

 

 

COLOR

機能 : 画面の色を設定

MSXの画面は、前景色、背景色、周辺色とありました。

文字とかの色(例えば白)が前景色、

普通の背景の青とかが背景色、

背景の上下の色(下の画像では水色)が周辺色。

f:id:nyaonyaokun:20180730125858p:plain

書式 COLOR 前景色,背景色,周辺色

使用例 COLOR 15,4,7

色は、

  0 ...  透明

  1 ...  黒

  2 ...  緑 

  3 ...  明るい緑

  4 ...  暗い青

  5 ...  明るい青

  6 ...  暗い赤

  7 ...  水色

  8 ...  赤

  9 ...  明るい赤

10 ... 黄

11 ... 明るい黄

12 ... 暗い緑

13 ... 紫

14 ... 灰

15 ... 白

下は色の参考画像。順番に並んでいます。

f:id:nyaonyaokun:20180603061347p:plain

(僕が最近作ったMSX1用多色刷りPCGエディタのEDIOです。

文字を絵にします。くわしくはこちら。

ドット絵 ツール MSX1 PCG TOOL (SCREEN1.5 多色刷り) の EDIO を作成(WebMSX エミュレータで実行)しました - ニャオニャオ21世紀

興味を持たれましたら、ぜひ使ってみてくださいm (_ _) m )

 

とりあえず、MSX BASICで、一番基本を書いてみました。

思い出して頂けたでしょうか?

初めてやられた方はどうでしたでしょうか?

MSX BASICの基本を、その2、その3と続けて書きたいと思います。

まだスプライトとかDATA文とか書いていないですし。

 

MSXでゲームを作る人が増えるといいなぁ〜なんて思っています。

もっとMSXの自作ゲームをプレイしたいのですw

今では、WebMSXというブラウザでできるエミュを使えば、

クリックするだけですぐブラウザ上で動かすこともできます。

ネットでの公開も簡単なんですよ!

 

WebMSX(エミュレータ) ブラウザでできるMSXインディゲームのご紹介 - ニャオニャオ21世紀

 

WebMSXの基本的な使い方を調べてみました - ニャオニャオ21世紀

 

ダウンロードしてエミュでプレイとなると少し面倒ですが、

クリックするだけでプレイできるのはおおきいですね〜。

WebMSXはスマホでも動きます!

スマホでもMSXが楽しむことができるのです^^

(ちょっと操作はしづらいですが;)

 

みなさんもMSXでゲームを作りましょー^^

 

続きはこちらへ。

www.nyaonyao21.com

 

その他、MSX BASICの基本のページについての

目次はこちら

www.nyaonyao21.com

 

 

MSX MAGAZINE 永久保存版 [CD-ROM1枚、特製シール付き]
MSXアソシエーション
アスキー
売り上げランキング: 366,184
 

 

MSX MAGAZINE 永久保存版 2
MSX MAGAZINE 永久保存版 2
posted with amazlet at 18.09.04

アスキー
売り上げランキング: 694,835

 

MSX MAGAZINE永久保存版3
MSX MAGAZINE永久保存版3
posted with amazlet at 18.09.04

アスキー
売り上げランキング: 818,909
僕のはwin10じゃないので試していませんが。
ネットで調べてみてください;)
 

 

 


「ニャオニャオ21世紀は、Amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、Amazonアソシエイト・プログラムの参加者です。」

当サイトは第三者配信の広告サービス「Google Adsense グーグルアドセンス」を利用しています。 広告配信事業者は、ユーザーの興味に応じた広告を表示するためにCookie(クッキー)を使用することがあります。 Cookie(クッキー)を無効にする設定およびGoogleアドセンスに関する詳細は「広告 – ポリシーと規約 – Google」をご覧ください