ニャオニャオ21世紀

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

第32回 MSX PENでマシン語を書く!(使い方) MSXマシン語入門(Z80 アセンブラ・機械語) 勉強レポート 






前回、pasmoでマシン語(アセンブリ)を書くようにしたいと

言っていましたが、

あれはやめました(~~;)

 

macでpasmo入れるのって、なんか面倒( ・∇・)

 

そこでマシン語を書く上で、今、一番お手軽な方法のひとつである、

MSX PENを使うことにしました。

 

前回の米印を動かすプログラムを、

MSXPENで書いて見ました^^

 

msxpen.com

 

上の、10 CLEAR 300,&HCFFFのところをクリックして見てください。

(画像でもOK)

 

f:id:nyaonyaokun:20181226190225p:plain

msxpen

 

BASIC部分:

10 CLEAR 300,&HCFFF
20 SCREEN1
30 KEY OFF
40 BLOAD"MOVE.BIN",R
50 POKE &HD800,1
60 POKE &HD801,1
70 LOCATE 0,0:PRINT "*"
80 DEFUSR=&HD000
90 A=USR(0)
100 END

 

マシン語部分:

CHPUT: EQU 0x00A2
BREAKX: EQU 0x00B7
GTSTCK: EQU 0x00D5
POSIT: EQU 0x00C6

ORG 0xD000

START:
STCKLP:
CALL BREAKX
RET C
LD A,0
CALL GTSTCK
LD HL,(0D800H)
OR A
JR Z,STCKLP
CP 8
JR NZ,STICK1
CALL MOVEL
CALL MOVEU
JR STCKLP

STICK1:
CP 7
JR NZ,STICK2
CALL MOVEL
CALL STCKLP

STICK2:
CP 6
JR NZ,STICK3
CALL MOVEL
CALL MOVED
JR STCKLP

STICK3:
CP 5
JR NZ,STICK4
CALL MOVED
JR STCKLP

STICK4:
CP 4
JR NZ,STICK5
CALL MOVED
CALL MOVER
JR STCKLP

STICK5:
CP 3
JR NZ,STICK6
CALL MOVER
JR STCKLP

STICK6:
CP 2
JR NZ,STICK7
CALL MOVER
CALL MOVEU
JR STCKLP

STICK7:
CALL MOVEU
JR STCKLP

MOVEU:
LD A,L
CP 1
RET Z
CALL PUTSPC
DEC L
CALL PTSTAR
RET

MOVEL:
LD A,H
CP 1
RET Z
CALL PUTSPC
DEC H
CALL PTSTAR
RET

MOVED:
LD A,L
CP 23
RET Z
CALL PUTSPC
INC L
CALL PTSTAR
RET

MOVER:
LD A,H
CP 40
RET Z
CALL PUTSPC
INC H
CALL PTSTAR
RET

PUTSPC:
CALL POSIT
LD A,20H
CALL CHPUT
RET

PTSTAR:
CALL POSIT
LD A,2AH
CALL CHPUT
LD (0D800H),HL
RET

END START

 

マシン語部分の書き方を説明します。

まずはじめの、

CHPUT: EQU 0x00A2
BREAKX: EQU 0x00B7
GTSTCK: EQU 0x00D5
POSIT: EQU 0x00C6

 

この部分で、MSXのBIOSの命令?のアドレスを

書きます。

BIOSのアドレス 00A2は、

文字を表示する命令でした。

(CHPUTと書きます。別名でも書けるのですが、

BIOSの命令には、このような名前で呼んでくださいという名前があります。

他人に説明するときに便利ですから^^)

 

EQUで、ラベル名と、アドレスを結びつけるんですね!

これならZ80用のアセンブラなら、なんでも書けるわけですね!

なるほど^^

MSX専用のアセンブラが必要なのかと思っていました^^;

 

 

そして、

ORG 0xD000

これで、この自分で書いたアセンブラのソースコードが、

どのアドレスから始めるか設定します。

今回は、D000番地からマシン語が入ります。

(BASICでは、DEFUSR=&HD000として、

マシン語を設定するので大切ですね!)

START:

END START

の間にプログラムを書くみたいですね。

 

ラベルは、

STCKLP:

とか、

PTSTAR:
って

 

ラベル名:

とすればいいようです。

 

(このプログラムの内容の説明は、前回のページをご覧ください)

MSXマシン語入門(Z80 アセンブラ・機械語) 第31回 カーソルキーで自由自在に動かす!! 勉強レポート - ニャオニャオ21世紀

 

じつに簡単です。

ちなみに、アセンブラ部分のファイル名は、

ASM Codeと書いてある横の歯車をクリックすれば、変更できます。

 

そのファイル名を、

bload"ファイル名.bin",r

で呼び出せばOKです。

 

フルマシン語のプログラムも、できそうですね( ・∇・)

 

 スポンサーリンク

 

 

とりあえずこんなに簡単にできるので、

ハイドライド もどきに、マシン語を取り入れていきたいなぁ〜。

 

www.nyaonyao21.com

 

結構、MSXPenでプログラムを書いている方がいらっしゃるので、

Twitterで、MSXPenと検索してみてはいかがでしょうか?

 

それでは〜^^


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

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