Z80GALの構想(その4)簡易モニタの製作 [Z80]
GALを使用したZ80ボードについて前回の記事ではソフトウェアシリアルを実装し、GAME言語を移植したところまで書きました。
今回はHexファイルローダーと簡易モニタ(Gamon)の製作について書いてみます。
前回記事の最後の方に、まずはHexファイルをロードできる環境が必要であることを書きましたが、メモリ64KBの8bit系の場合、HEXファイルは非常に単純なのでアセンブラでサクッとできました。
リストを以下に貼りました。GetcとPutcが前回記事で書いたソフトウェアシリアルの1文字入出力処理でPutsは文字列出力処理です。
GAME言語を移植済みなのでメモリダンプ等をGAME言語で作成しているうちに必要最小限のメモリ操作とHexファイルリード/ライト機能が揃い、簡易モニタが出来てしまいました。
最初から作ろうと思って設計したわけではないので若干力づくの部分等もありますが、100行程度のソースで手軽に簡易モニタが作れてしまうのは流石GAME言語と言ったところですね。
この簡易モニタはGAME言語で作ったのでGamonと命名しました。
GAME言語はアセンブラよりは高級言語なので手軽に変更できて移植性も高いのではないかと思います。
下記の操作例の中のヘルプ表示部分で実装コマンドが判りますが、ReadとWriteコマンドはHexファイルの読み書き用コマンドでRead処理だけは読みこぼし対策として上記のようにアセンブラで作っています。
また、Hexファイルのロード中は一行処理毎にレコードタイプを表示しています。
最後に現時点でのGamonソースを貼っておきます。
★更新 2020/10/30 最新版に更新
Ver0.02 マルチステートメント対応、コマンド記憶機能追加
これで今後の予定であるタイマー割込みによるシリアル受信処理とSPIインターフェースの開発環境が揃いました^^
}
★追記 2020/11/10
パソコン内のバイナリファイルをモニタでダウンロードする際にHEXファイルに変換する必要があります。
パソコン上のファイルを開始アドレスを指定してインテルヘキサフォーマットに変換するバイナリヘキサ変換ツールを探したけど見つからなかった・・・
処理自体は非常に簡単で探すより作った方が早いのでDOS窓で実行する変換プログラムを作りました。
需要は少ないでしょうがアップしておきます。使い方は下記のヘルプ表示を参照してください。
★追記 2020/11/19
「Z80GALの構想(その9)簡易モニタの製作(その2)ブレーク機能の実装」の記事にブレーク機能の追加実装について書きました。
★追記 2023/01/04
「GAME言語で作った簡易モニタ(Gamon)」の記事に Gamon Ver0.04 を公開しました。
[TOP] [ 前へ ] 連載記事 [ 次へ ]
今回はHexファイルローダーと簡易モニタ(Gamon)の製作について書いてみます。
前回記事の最後の方に、まずはHexファイルをロードできる環境が必要であることを書きましたが、メモリ64KBの8bit系の場合、HEXファイルは非常に単純なのでアセンブラでサクッとできました。
リストを以下に貼りました。GetcとPutcが前回記事で書いたソフトウェアシリアルの1文字入出力処理でPutsは文字列出力処理です。
Hexファイルローダー |
|
GAME言語を移植済みなのでメモリダンプ等をGAME言語で作成しているうちに必要最小限のメモリ操作とHexファイルリード/ライト機能が揃い、簡易モニタが出来てしまいました。
最初から作ろうと思って設計したわけではないので若干力づくの部分等もありますが、100行程度のソースで手軽に簡易モニタが作れてしまうのは流石GAME言語と言ったところですね。
この簡易モニタはGAME言語で作ったのでGamonと命名しました。
GAME言語はアセンブラよりは高級言語なので手軽に変更できて移植性も高いのではないかと思います。
下記の操作例の中のヘルプ表示部分で実装コマンドが判りますが、ReadとWriteコマンドはHexファイルの読み書き用コマンドでRead処理だけは読みこぼし対策として上記のようにアセンブラで作っています。
また、Hexファイルのロード中は一行処理毎にレコードタイプを表示しています。
Gamon操作例 |
|
最後に現時点でのGamonソースを貼っておきます。
Gamonソース(GAME言語) |
|
★更新 2020/10/30 最新版に更新
Ver0.02 マルチステートメント対応、コマンド記憶機能追加
これで今後の予定であるタイマー割込みによるシリアル受信処理とSPIインターフェースの開発環境が揃いました^^
★追記 2020/10/30 {
モニタを操作していると同じようなコマンドの組合せを何度も実行するよう場面が出てきます。
コマンドをマルチステートメント対応にしてコピペできるようにしました。
更にコマンド記憶機能を追加し、コマンドをまとめて実行できるようにしました。
ちょっとした機能を簡単に追加できるのもGAME言語で作った効用ですね。なにげに便利です^^
モニタを操作していると同じようなコマンドの組合せを何度も実行するよう場面が出てきます。
コマンドをマルチステートメント対応にしてコピペできるようにしました。
更にコマンド記憶機能を追加し、コマンドをまとめて実行できるようにしました。
ちょっとした機能を簡単に追加できるのもGAME言語で作った効用ですね。なにげに便利です^^
マルチステートメントとコマンド記憶機能の使用例 |
|
★追記 2020/11/10
パソコン内のバイナリファイルをモニタでダウンロードする際にHEXファイルに変換する必要があります。
パソコン上のファイルを開始アドレスを指定してインテルヘキサフォーマットに変換するバイナリヘキサ変換ツールを探したけど見つからなかった・・・
処理自体は非常に簡単で探すより作った方が早いのでDOS窓で実行する変換プログラムを作りました。
需要は少ないでしょうがアップしておきます。使い方は下記のヘルプ表示を参照してください。
- Bin2Hex20201109.zip
C:¥tool>bin2hex convert binary file to intel hex format(can set start address) usage : bin2hex [-sxxxx] InputFile [>OutputFile] -s : set start address of hex file ver 0.01 2020/11/09 by skyriver C:¥tool>
- BIN2HEX_CPM80_20210117v001a.zip
★変更 2021/01/17
Ver0.01a HEXファイル名生成でNGになる場合があったので修正
★追記 2020/12/05
CP/M-80用のbin2hexです。CP/Mではリダイレクトできないので対象ファイル名のセカンドファイル名が".HEX"のファイル名でHEXファイルが生成されます。
HI-TECH Cでコンパイルしているので動作させるためにはCPUがZ-80相当品である必要があります。
★追記 2020/11/19
「Z80GALの構想(その9)簡易モニタの製作(その2)ブレーク機能の実装」の記事にブレーク機能の追加実装について書きました。
★追記 2023/01/04
「GAME言語で作った簡易モニタ(Gamon)」の記事に Gamon Ver0.04 を公開しました。
[TOP] [ 前へ ] 連載記事 [ 次へ ]