前回、pasmoでマシン語(アセンブリ)を書くようにしたいと
言っていましたが、
あれはやめました(~~;)
macでpasmo入れるのって、なんか面倒( ・∇・)
そこでマシン語を書く上で、今、一番お手軽な方法のひとつである、
MSX PENを使うことにしました。
前回の米印を動かすプログラムを、
MSXPENで書いて見ました^^
上の、10 CLEAR 300,&HCFFFのところをクリックして見てください。
(画像でもOK)
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です。
フルマシン語のプログラムも、できそうですね( ・∇・)
スポンサーリンク
とりあえずこんなに簡単にできるので、
ハイドライド もどきに、マシン語を取り入れていきたいなぁ〜。
結構、MSXPenでプログラムを書いている方がいらっしゃるので、
Twitterで、MSXPenと検索してみてはいかがでしょうか?
それでは〜^^