FULLMSX.COMサイトへ
ページ期限:2008/10/30

6000アクセス記念!イベント特集 第2改訂版2008/07/01

1chipMSXで SHEM(SHErry's Monitor assembler)環境をつくる 

 アクセス有難うございます!
MSX-DOS2フリーソフトウェアで名高いSHEMの特集をしてみようと思います。
今回は1から10まで初心者にわかるような解説をしますが、やっぱりMSXはテクニカルです^^;
 MSXパソコンではPCシリーズのようにモニタアセンブラが付属していません。
そこで、MSX-DOSTOOLSなどを利用して使う方法がありますが、
高機能であり、マクロまでなかなか使いこなせないユーザーも多いです。
そこでウチの方でwebで説明をしていますが、最近はSHEMを使いたい意見が多いです。
 多くのMSXユーザーの意見を集めた?
LORD,Super-X,SHEMとMSXの三つのアセンブラの1つのSHEMを紹介します。
SHEMはMSXパワーユーザーのSherry氏が作ったものです。
このページではSHEM環境を作り、さらにはソース、実行するところまで図説でします。

これはMSX-DOS(2)を使うもので他にもいろいろな方法があります。
mon.html


■1chipMSXへの転送手順
■フォルダSHEMを作る
■MSXフリーソフトウェアサイト
■PMA解凍ソフト、SHEM本体、VFテキストページャーの3つをダウンロード
■1chipMSXを起動、カレントをSHEMにする
■PMEXT222.COM、COM圧縮ファイルを解凍
■LHEXT133.COM、LZH圧縮ファイルを解凍
■SHEM本体を解凍
■VFテキストページャーを解凍
■使用するCOMをラムディスクに入れSHEM環境を作る
■SHEM本体を起動
■SHEMでプログラミング2010/04/17更新
■SHEMのアセンブラモードを使う

この説明ではWindowsXPでの手順の説明になります。
Me、98など若干異なる場合があるので、ご了承ください。

■1chipMSXへの転送手順

まず、PCのメモリーカードリーダーのSDカードが読み書きできる、周辺機器を購入します。
PCの電源を入れ立ち上げを終わって、デスクトップのアイドル状態からメモリーカードリーダーを取り付けます。
右下のアイコンにメッセージが表示されUSBハードウェアの検出が始まります。
この状態で数分待ちます。遅くても5分前後にインストールが完了されます。
ドライブの認識が終了するとマイコンピュータには新しいドライブがメモリーカードリーダーのスロット分が増えています。
ここでSDカードをメモリーカードスロットに入れます。自動認識されたフォルダが表示されます。
場合によっては数秒かかる場合があります。

次に1chipMSXのCD-ROMからMSXDOS2.SYSとCOMMAND2.COMをこの表示されたフォルダに貼り付けします。

■フォルダSHEMを作る
D:\SHEM\

PC:mkdir

このような感じでMSXファイルが入ればよいです。
マイコンピュータから自動認識されたドライブ(私の場合はD:¥)を表示します。
ここではMSXDOS2.SYSとCOMMAND2.COMが入って
アイコンファイルが選択されていない状態で右クリックで
新規作成-フォルダとクリックして、新しいフォルダと表示されたらSHEMと入力します。
新しいフォルダがSHEMに変われば変更完了です。

■MSXフリーソフトウェアサイト

虹の咲く場所 --自作フリーソフトウェア
http://www.asahi-net.or.jp/~am9y-mn/fswlist.htm
FSW倉庫 一般
http://sakuramail.net/fswold/tool.html
1chipMSX記念2サイト合同企画
1chip-anv.html
FSW倉庫 DISK&FILE 
http://sakuramail.net/fswold/tool_d.html

■解凍ソフト、SHEM本体をダウンロード

保存する場所:SHEM
D:\SHEM\

解凍ソフトは圧縮された書庫ファイル(アーカイブファイル)を展開するものです。
虹の咲く場所からPMA(ピーエムアーク)の解凍ソフトPMEXT222.COMをダウンロードします。
次にFSW倉庫にSHEMのパッチがありますが、
とりあえず、SHEM123.PMAの本体をダウンロードします。
次に1chipMSX記念2サイト合同企画からVF05B.LZHをダウンロードします。
最後にFSW倉庫 DISK&FILEからLHA(エルエイチアーク)の解凍ソフトLHEXT133.COMをダウンロードします。
SHEMのフォルダをクリックして保存します。
XPの画面ですが、画面の大きさを変更してシンプル表示にしてます。
上から順にPMA解凍ツール、SHEM本体、VF本体、LHA解凍ツールとなってます。

■1chipMSXを起動、カレントをSHEMにする

フォルダを閉じて、SDカードをメモリーカードリーダーから取り出し、1chipMSXにSDカードを入れます。
1chipMSXを起動して、MSX-DOSで次のコマンドを入力するとSHEMフォルダが表示されます。

>CD SHEM
>DIR

ダウンロードしたファイルと同じような文字表示があればOKです。

■PMEXT222.COM、COM圧縮ファイルを解凍

MSX:PMEXT-LHEXT

次に解凍作業を行います。

・PMEXT222を実行するとPMEXT.COMができる
PMEXT222を実行後Extract? (Y/N)でY

・PMEXTでPMAファイルを解凍
>PMEXT SHEM123 *.*

■LHEXT133.COM、LZH圧縮ファイルを解凍

もし、PMEXT.COMでLZH圧縮ファイルを解凍できない場合は
このソフトを使います。

・LHEXT133.COMを実行するとLHEXT.COMができる
>LHEXT133
・LHEXTでLZHファイルを解凍
>LHEXT VF05B *.*

2つの解凍ツールができました。

ここでこの2つを親ディレクトリに移動します。
MOVE PMEXT.COM + LHEXT.COM + VF.COM A:\

■使用するCOMをラムディスクに入れ、SHEM環境を作る

これで環境の準備は整いました。おつかれ〜

1chipMSXのMSX-DOS2を起動します。
使用するCOMをラムディスクに入れます。
H:ドライブに入れていればサブアドレスであってもアプリを起動できます。

SETEXPERT ON
RAMDISK 4048
COPY *.COM H:\

これで必要な、COMはラムディスクに転送されました。

■SHEM本体を起動

MSX:SHEM

起動するとモニタの画面です。
SHEMはCOMファイル実行型マシン語ファイル向けのモニタです。
ここで注意するところは0123456789ABCDEFの「0」〜「F」キーは書き込むキーです。
マシン語以外のテキストデータを入れたり落書きしたりできる画面です。

■SHEMでプログラミング2010/04/17更新

今まではテキストファイルを書いて
MSX-DOS2TOOLSのM80を実行する流れでしたが、
SHEMで[CTRL]+[D]でディスアセンブラモードに入り
0100Hからマシン語を書いて
[CTRLl]+[S]でU-YAN.COMと保存をすることで
A>U-YAN
と打ち込めば
マシン語プログラムを実行させることができます。
プログラムを組むときは
[CTRL]+[L]でプログラムをロードします。
プログラムとプログラムの間にプログラムを入れたい場合は
ブロック転送を使います。転送する時に
転送元と転送先の領域が重ならないように注意してください。
そして、

■SHEMのアセンブラモードを使う

プログラミングする時は”画面ごとの切り替えができるエディタか
2画面になるエディタが欲しい!”ですね。それに応えたモードですね。

MSX:SHEM

このモードでは2画面を表示できます。プログラムのメインとサブを移動するのに便利です。
ちょこっとアセンブラしたい時に使用します。
サブはCALLと書かれています。CALL 000CHであればプログラムは000CHへ飛びます。
000CHからRETまでがサブプログラムになります。
この後はCALL 000CHの次のプログラムから実行になります。

これは作者が言っているようにテキストのソースコードを入力するものではなく
直接、メモリにカキコするものです。ハイレベルな機能です。

[CTRL]+[A]でアセンブラに入ることができますが、1行ずつ書き込んでいくので
この2画面で全体見ながらやりませう。

起動はDOS2でも可能ですが、エディトは階層ディレクトリ指定できないのでDOS1が無難です。
SHEMと同じ場所にプログラムは置きましょう。

[ctrl]+[Esc]でDOSへ戻ります。※
[ctrl]+[D]で逆アセンブラモードに入ります。
さらには!!
アドレス移動、チェックサム、スロット変更、メモリマッパー、IOなど


ホットキーが効いてスタートになる状態では戻れませんが
BASICでKEY1,CHR$(27)を指定して、F1キーでESCキーの代用するか
MSXPLAYerでソフトキーボードのESCでできます。

■メモリに関するFAQ

Q:漢字ROMを非搭載のMSX2パソコンに使う
A:空きRAMに置き、ドライバを作る
Q:MSX2の画像ファイルをMSX2のROMBASICで見たい
A:大きさによりますが、空きRAMにコピーできればよい。
Q:MSXBASICのマシン語データをMSX-DOS用にしたい
A:メモリマップが変わります。基本的なプログラムならOK。
Q:レジスタは?
A:Aが主要な数値がよく入っていてHLがアドレスで後はパラメータです。
Q:MSXBASICのようなプログラムを早く作りたい
A:環境がそろっているMSX-Cを使ってMACソースをカスタマイズします。
Q:00で消したのにロードすると消えていない
A:SHEMで00は無視されるようです。
Q:1chipMSXで音声データを20秒以上再生したい
A:空きRAMはメモリマッパを使うとよいでしょう。
Q:C9って何ですか?
A:パソコン起動中はマシン語ですからメインプログラム(MSXBASIC,MSX-DOS)にリターンする意味と思ってください。
Q:メモリマッパの再生の目安は?
A:VRAMが128Kですから、256KBで2倍、512KBで4倍、1024で8倍の長さとなります。

■最後に

当時のネットでは自作MSX2マシン語モニタブームでした。SHERRYさんとTEAさんは同級生で
MEM-768はMSX-DOS2専用だったのですが、MSX-DOSで動作した話で
「お、これDOS1のエムツーで、できるじゃん。」「すごい」そんなハイテンションな雰囲気だったです。
MEM-768はSHERRYさんに数か月貸していました。

a1gt

A1GTマシンでバリバリ動作しているSHEMを開発中でしてソースプログラムも膨大になったそうです。
彼はWindowsユーザーというよりMacユーザーで「MacのようなことをMSXでやりたい」と言っていました。
さて、この逆アセンブラモードが2画面はいいです。ここからMSX始めてもいいんじゃないかな。
MSXとSHEM、それだけでもいいですね。海老高生はすごかったー。