Universal Monitorは下記WEBページで公開されています。
XENESISシリーズのマイクロコンピュータボードでは、Universal Monitorの修正版を基本かつ共通のモニタとして利用しています。XENESISシリーズの利用の入り口となるモニタの機能と操作性の一元化ができたのは、Universal Monitorの採用によります。
Universal Monitorの概要
Universal Monitorは様々なマイクロプロセッサを対象に提供されており、異なるマイクロプロセッサでも共通の機能性と操作性を提供しています。XENESISシリーズのシングルボードコンピュータに付属するROMには、モニタとしてUniversal Monitorが書き込まれています。
Universal Monitorは以下のような機能を備えています。
- メモリ内容の表示(Dコマンド)
- メモリ内容の変更(Sコマンド)
- レジスタ内容の表示と変更(Rコマンド)
- メモリへのプログラムのローディング(Lコマンド)
- ローディングされたプログラムの起動(Gコマンド)
- システムの起動後の時間の表示(Tコマンド:もともとの Universal Monitor にはない拡張機能です)
- 標準的な入出力ルーチン等の提供(もともとの Universal Monitor にはない拡張機能です)
Universal Monitor の機能と操作
XENESISシリーズのシングルボードコンピュータは、USBでPCに接続するとともに Universal Monitorが起動され、起動メッセージが出力されます。USBをPCに接続した直後などに起動メッセージが画面に現れない場合でも、Universal Monitorがすでに起動されていて、コマンド等を入力すると通常どおり応答する場合があります。応答がない場合には、リセットボタンを押して ボードを再起動してください。
起動画面例は、図?をご参照ください。
Universal Monitorではプロンプトが ’]’ で表示されるので、その状態で1文字でコマンドを入力します。入力する英文字は、小文字でも大文字でも構いません。
Universal Monitorの操作方法は以下のWEBページに示されています。
Universal Monitor で使用できる主要なコマンドを以下に示します。
- L
- Sレコードで記述されたプログラムをRAMに読み込みます。
- Lコマンドを入力してエンターを入力するとUniversal Monitor は待機状態になるので、端末エミュレータ側で、PCに保存されているSレコードファイルを選択して送り込みます。
- G
- コマンド文字に引き続き16進数のアドレスを入力してエンターを押すと、指定されたアドレスからプログラムを実行します。
- アドレスを指定しなかった場合には、$02F0にあらかじめ書き込まれたアドレスからプログラムを実行します。
- $02F0にはPCの値が保存されており、Rコマンドで確認、変更することができます。
- D
- コマンド文字に引き続き16進数のアドレスを入力してエンターを入力すると、指定されたアドレスから128バイトのメモリ内容を16進数でダンプします。
- アドレスを指定しなかった場合には、直前のDコマンドで表示した次のアドレスからメモリをダンプします。
- アドレスをカンマで区切って2つ指定すると、それらを開始、終了アドレスとして、メモリ内容を16進数でダンプします。
- S
- コマンド文字の後に、16進数アドレスを入力しエンターを押すとアドレスとデータが表示されます。
- エンターを押すと、次のデータの表示に移ります。
- 16進数を入力してエンターを押すと、表示されていたメモリ内容が入力した数値に書き換えられます。
- ピリオドを入力してエンターを押すと、Sコマンドが終了します。
- R
- レジスタの内容一覧が表示されます。
- 表示されたGコマンドでプログラムが実行される際のレジスタの初期値となります。
- Rに続き、レジスタ名を入力してエンターを押すと、そのレジスタの値が表示されます。
- 表示の後にエンターを押すとRコマンドは終了し、16進数の値を入力してエンターを押すと、そのレジスタの値が入力した値に変更されます。
- レジスタの内容一覧が表示されます。
- T
- システムの起動後の経過時間が時分秒の形式で表示されます。
- 製品の用途上、実質的な問題はないと考えていますが、経過時間は約497日でオーバーフローし、初期化されます。
なお、Dコマンドなどで表示が長引く場合には、任意のキーの入力で表示を中断させることができます。
Universal Monitor の採用理由
1970-1980年代を代表するいくつかのマイクロプロセッサを使用したマイクロコンピュータボードを開発しましたが、興味を持っていただける皆さんにご提供するための、ある意味最も困難だったことがモニタの選定でした。
XENESISシリーズのマイクロコンピュータボードを開発する上で、当時のハードウェアを楽しんでもらうためには、当時のBASICをはじめとするいろいろなソフトウェアが手軽に使用できることが重要と考えました。
その簡単な実現方法は、BASICなどのソフトウェアをROMに焼いてハードウェアとともに提供することですが、当時のソフトウェアはインターネット上で公開されているものが多く楽しみではあるものの、ライセンス関係が明確でないものも多く、ROMに焼き商品の一部として提供することには問題があると考えました。
一方で、インターネット上などで取得可能な各種のソフトウェアを紹介しても、それをROMに焼いて利用できるROMライタなどを持ついわゆるヘビーユーザーは、それほど多くないのだろうとも思いました。
ソフトウェアをあらかじめROMに焼いて提供することには問題があり、利用者にROMに焼いてもらうことも難しいとすると、他の方法を考える必要があります。
結局のところ、コンピュータの黎明期から行われてきた、ローダーによってプログラムをRAMに読み込み実行させる方法でした。
この方法では、ROMライタなどの特別な装置を持たなくても、ハードウェアとは独りして取得された任意のソフトウェアを必要に応じてメモリに読み込み、実行させることができます。
プログラムをメモリにロードして実行させるためには、その機能を持ったモニタを装備する必要があります。
一方で、XENESISシリーズのマイクロコンピュータボードは、すでに数種類のマイクロプロセッサのボードが稼働していました。
そこで、様々なマイクロプロセッサに対応し、機能や操作性が共通する汎用的なモニタを探したのですが、当初適切なものは見当たらず、久しぶりに自作せざるを得ないかと思っていました。
そんなところでUniversal Monitorに出会いました。
Universal Monitorは様々なマイクロプロセッサに対応し、共通した機能と操作性を提供することができるため、XENESISシリーズのマイクロコンピュータに適した特徴を持っていました。
また、機能、操作性、表示形式など、私にとって良い意味で普通の違和感のないもので、自作してもこのような感じになるだろうなと思うモニタでした。
謝辞
Universal MonitorをMIT Licenseでご提供いただいている淺野春生氏に感謝します。
XENESISシリーズのマイクロコンピュータボードでは、Universal Monitorの修正版を基本かつ共通のモニタとして利用しています。XENESISシリーズの利用の入り口となるモニタの機能と操作性の一元化ができたのは、Universal Monitorの採用によります。