Featured image of post V53 VMEシステムで遊んでみました #5 モニタの強化

V53 VMEシステムで遊んでみました #5 モニタの強化

前回はCPUボードのオンボードRAMを使えるようにしました。今回はROMに実装した簡易モニタにより、I/O空間の探索やメモリの書き換え機能など解析に便利な機能を追加したモニタをメモリにロードして使えるようにします。

簡易モニタの機能

現在ROMに書き込んでいる簡易モニタ(v0.1 2026-01-12)は以下の機能を持ちます。

コマンド名機能使い方実行例備考
Go指定したアドレスからプログラムを実行するG Segment OffsetG 2000 0000
Dump指定したアドレスからメモリの内容を表示するD Segment OffsetD 2000 0000パラメタを省略した場合は次の64バイトを表示
Load指定したアドレスにIntel HEXファイルの内容をロードするL Segment OffsetL 2000 0000パラメタを省略した場合は2000:0000にロード

このように機能も3つしかなくシンプルなものですが、以下の手順で最低限のプログラムの動作確認ができるものとなっています。

  1. メモリにプログラムをロード
  2. ロードしたプログラムを実行
  3. プログラム実行前後のメモリの状態を確認

モニタのサイズは680バイトと小さくシンプルにすることで確実に動くものにしました。昔のMZ-80のMONITOR SP-1002のようなものです。

ソースはGitHubに置きました。

モニタに追加したい機能

これまでの実験では、この簡易モニタを使用して基本的な動作確認を行ってきました。しかし、まだまだ不明な点が残っており、このCPUボードにある外部ペリフェラルを使えないか、80000H以降のメモリにアクセスしたい、パネルにあるLEDでLチカしたいなど課題は山積みです。

外部ペリフェラルのSCSIコントローラ(左上)

そのため簡易モニタの機能に以下の機能を追加した強化モニタを作ります。

  • I/Oアドレスのアクセス機能
  • メモリの書き込み機能

作成した強化モニタは簡易モニタでRAMにロードして使います。これにより今後必要になった機能を容易にモニタに追加して利用できるようにします。

強化モニタの実装

簡易モニタのソースコードをベースに必要となりそうな機能を実装した強化モニタを作成しました。以下の機能が追加されています。

コマンド名機能使い方実行例備考
Input指定したI/Oアドレスから入力した値を表示するI addressI 2000
Output指定したI/Oアドレスに指定した値を出力するO address valueO 2000 00
Scan指定したI/Oアドレスの範囲でinp命令を実行し取得できた値が0FFH以外の場合にI/Oアドレスと値を表示するS start endS 0000 00FF
Write指定したIOアドレスに値を書き込むW Seg offset valueW 3000 0000 44

I/O空間探索の結果

新しいモニタでI/Oの探索を行った結果は以下の通りです。

IO検索の結果

これをみると00XXHに反応がありました。1260H-1263Hは私が定義したV53のSCUで、その後はFF00H-FFFFHのV53のI/Oしか見えませんでした。 この結果からみて、外部ペリフェラルは00xxHに集中しており、アドレスの並びから見てCPUボード上にある4種類のペリフェラルデバイスに割り当てられているように見えます。

まとめ

今回作成した強化モニタにより外部ペリフェラルのアクセスの目途が立ちました。簡単なデバイスから攻略して最終的にはSCSIデバイスの接続を目指します。まだまだ楽しめそうです。

Hugo で構築されています。
テーマ StackJimmy によって設計されています。