CP/M用hexローダーの製作 [Z80]
CP/M-80 用のプログラムをアセンブリ言語で書く場合、パソコン上のエディタを使ってソースを編集したいものです。従来は、パソコンで編集したアセンブラソースを Z80 ボードに XMODEM で転送して動かしていました。
しかし、パソコン上で CP/M エミュレータを使ってアセンブル&リンクして作成した HEX ファイルを TeraTerm 上にドラッグ&ドロップして実行できたらより効率的です。
そこで CP/M 上で動作する HEX ローダーを作成してみました。このローダーの機能(特徴)は下記の通りです。
CP/M 側でこのローダーを起動後に、普通に作成した HEX ファイルを TeraTerm にドラッグ&ドロップすればロード後に自動的に実行されるので転送作業がかなり楽になりました。
下記のリンクに公開しました。商用利用以外であれば自由に使用可能とします。
[history]
2023/05/15 Ver 0.03 set 00h to 0080H by skyriver
2023/03/26 Ver 0.02 can break by ^C
2023/03/26 Ver 0.01 published
ソースも貼っておきます。
しかし、パソコン上で CP/M エミュレータを使ってアセンブル&リンクして作成した HEX ファイルを TeraTerm 上にドラッグ&ドロップして実行できたらより効率的です。
そこで CP/M 上で動作する HEX ローダーを作成してみました。このローダーの機能(特徴)は下記の通りです。
- コンソールから入力されるインテル HEX 形式のデータをメモリ上に展開します
- ロード完了後にHEX ファイルの先頭行のアドレスにジャンプします(ロードプログラムが自動起動します)
- CP/M の標準プログラムである 0100H から始まるものもダウンロードできるようにするために自身のコードを 0080H に移動してから実行します
- 高速化のために BIOS の機能を直にコールしています
CP/M 側でこのローダーを起動後に、普通に作成した HEX ファイルを TeraTerm にドラッグ&ドロップすればロード後に自動的に実行されるので転送作業がかなり楽になりました。
下記のリンクに公開しました。商用利用以外であれば自由に使用可能とします。
[history]
2023/05/15 Ver 0.03 set 00h to 0080H by skyriver
2023/03/26 Ver 0.02 can break by ^C
2023/03/26 Ver 0.01 published
ソースも貼っておきます。
CP/M-80 用 HEX ローダー(アセンブラ) |
|
CP/Mの機能だけでやろうとすると、
PIP HOGE.HEX=CON:
^Z
DDT HOGE.HEX
バイナリの保存はSAVEで可能だけど256バイト単位でしかできないです。
by neko Java (2023-03-26 02:45)
このローダーはあくまでもCP/M上で実行するのが目的でファイルとして保存することを目的にしていません。
実機でロジアナ等で動作をモニタしながらソース変更してハード&ソフトディバッグする際等に有効と思います。
by skyriver (2023-03-26 03:02)
なるほど。ファイル化の手間が省けるのですね。
私は、DDTはHEXを指定するとBIN化してメモリにロードされるので、そこからGコマンドで実行してます。
あと、LOADでHEXはCOMにできるのを忘れてました。
by neko Java (2023-03-26 03:56)