80系機械語モニタ GWMON-80

GWMON-80

8080/8085/Z80で稼働する機械語モニター GWMON-80を最近よく使わせてもらっています。

機械語モニタ GWMON-80について

  • 機械語モニタGWMON-80はgithubで公開されています。なんと2018年にメンテされている機械語モニターです。素晴らしい。
    • https://github.com/chapmajs/glitchworks_monitor
  • 機能は以下の通りで、シンプルなものとなっています。
    • Z80のクロスコンパイラなどで出力されるインテルHEX形式データのロード機能を持っています。
    • LEDチカチカさせたりZ80でI/Oポートをよく叩く私としてはIN/OUT命令が装備されているのがお気に入りです。
 
D XXXX YYYY Dump memory from XXXX to YYYY 
E XXXX Edit memory starting at XXXX (type an X and press enter to exit entry) 
G XXXX GO starting at address XXXX (JMP in, no RET) 
I XX Input from I/O port XX and display as hex 
O XX YY Output to I/O port XX byte YY 
L Load an Intel HEX file into memory 
  • 若干バグっぽいものがあったところを修正したり、コマンドヘルプを出したかったので 自分のところへForkして修正しています。
    • https://github.com/kuninet/glitchworks_monitor

ビルド方法について

ビルド用バッチファイル

  • README.mdを読んでいただけると分かりますが、ビルドはモニター本体(MONITOR.ASM)と自分の環境に合ったI/Oモジュール(xxxx.ASM)を1つのファイルへ合体させてCP/Mのアセンブラでアセンブルすることとなっています。ビルド方法はプロジェクト範囲外ということで好きにやってくださいってことでした。
  • そこでビルドについて検討して、Windows10 Pro環境で以下のツールを使うことでアセンブルができました。手作業で毎回ビルドするとコマンドを忘れがちなのでWindowsのバッチファイルを作成しました。gistにUPしています。
  • CP/M program EXEcutor for Win32
    • https://www.vector.co.jp/soft/win95/util/se378130.html
  • The Unofficial CP/M Web site > Digital Research Binary Files > MAC BINARY (8080 Macro Assembla)
    • http://www.cpm.z80.de/download/mac-b.zip
  • git for Windows
    • https://git-scm.com/download/win
  • Windows Subsystem for Linux (ubuntu) の sed
    • 参考 : http://www.atmarkit.co.jp/ait/articles/1608/08/news039.html
  • ちなみに、他のクロスアセンブラでも若干のソース修正が必要ですが可能です。The MacroAssembla(ASL)では ラベルに”$”が使えなかったり、文字列の指定を “(ダブルクォート)に変更することでアセンブリ可能でした。
  • このビルド用バッチではgithubからソース類をもってきて、スタートアドレス/スタックポインタアドレス等の変更を行った後、CP/M ExecuterでMAC.COM(マクロアセンブラ)を起動する流れとなっています。
  • 依存関係を元に必要なビルドだけを実施できるとカッコイイですが、そこはまた今後の課題ということで ^^)>
  • KZ80-CPUB+SBC8080 SUBやSBC8080+SUBボードで使用している8251用のI/Oモジュールを合体させるスクリプトになっています。
  • KZ80-1MSRAM用にスタックポインタをFFFFh→7FFFhへ変更したソースも生成しています。

バッチファイルを動作させるディレクトリ

  • バッチファイルを動作させるディレクトリは、以下の構造を想定しています。
.
│ build.bat
├─build\
│ [build terget Dir]
├─cpm32_04\
│ │ [CP/M Executer Dir]
│ ├─src
│ └─utl
├─glitchworks_monitor\ [GWMON-80 git checkout Dir]
│ └─io_modules
├─mac-b\ [ CP/M MacroAssembla MAC.COM]
└─src\ 
  • cpm32_04ディレクトリはCP/M program EXEcutor for Win32を展開したディレクトリ、mac-bディレクトリはMAC BINARY (8080 Macro Assembla)を展開したディレクトリです。

ビルドバッチファイルの実行

  • ビルドバッチファイルを実行すると build\ ディレクトリにモニターのソースが生成されMAC.COMでアセンブルされた リストファイル(.PRN)とインテルHEX形式のオブジェクト(.HEX)が生成されます。
 
> build.bat

動くとこんな感じ

  • 機械語モニターを動かすとこんな感じです。

つぎは…

ビルドができたので、つづいて別のシリアルチップ用にI/Oモジュールを書いてみたいと思います。Grant’s Z80コンピューターで使ってるモトローラMC6850チップ用のモジュールを作ってみたいと思っています。


コメント

  1. […] 前回紹介した80系機械語モニタ GWMON-80用に Grant’s Z80 マイコンでも使用しているモトローラMC6850シリアルLSI用のI/Oモジュールを作成してみたいと思います。 […]