現在地
Universal Monitor
SBCZ8002(ソフトウェア編)
カテゴリー:
前回ハードウェアが無事に動作するようになったのでUniversal Monitorの移植してみました。
年末から初期化部分などを細々と書いていましたが、本格的に書き始めたのは年が明けてボードが動き始めてからです。それでも3日にはI(n)/O(ut), R(egister)コマンドまで動作しましたからこれまでの最速記録ですね。確かに慣れてきたという側面はありますが、Z8000がアセンブリ言語で書きやすいプロセッサだというのは間違いないでしょう。
今回はその過程で気になった点についていくつか書いてみたいと思います。
リセットの怪
シャープのマニュアルによるとZ8002のリセット時の動作について以下のように書かれています。
Z8002では,最初のサイクルで,0002H番地からFCWを読み出し,0004HH番地からPCを読み出し,つぎの最初の命令フェッチ・サイクルからプログラムがスタートする。
F8へUniversal Monitorを移植(その3)
カテゴリー:
2回にわたりサブルーチンについて書きましたが、他にもプログラミング上厄介な点はあります。
まず特定のレジスタ・スクラッチパッドを要求されることが多い点です。
F8へUniversal Monitorを移植(その2)
F8へUniversal Monitorを移植(その1)
カテゴリー:
SBCF8が動きましたので早速Universal Monitorを移植してみます。
以前のSC/MPも癖が強かったですが、このF8もそれに劣らず癖の強いプロセッサです。
- コードフェッチ以外のメモリアクセスはすべて
DC0
レジスタ間接でなくてはならず、常にポストインクリメントされます。もう一つあるDC1
(アクセスには使えない)との間で値の交換が出来るのがせめてもの救いです。 - サブルーチン呼び出しはスタックではなく戻り番地はスタックレジスタ
PC1
に退避されます。
TMP90C840ボード(ソフトウェア編)
カテゴリー:
ちょうどTMP90C840用にUniversal Monitorの修正をしている最中、F3850+F3853用の試作基板を貰えることになり組み立て・動作確認をしていたため、予想以上に遅くなってしまいました。
TMP90C840ボードは以前のTMP90P802ボード用に書かれているUniversal Monitor TLCS-90そのままでも動作し0000H~0FFFFHまでの64kBのメモリ空間が使えますが、TMP90C840は最大1MBまでのメモリ空間をサポートしていますのでそれを使えるように拡張します。
[UniMon] 内部ルーチンの新しい呼び方を試す(その2)
[UniMon] 内部ルーチンの新しい呼び方を試す(その1)
カテゴリー:
以前[UniMon] 固定エントリポイントで機能ごとに固定したエントリポイントを用意することでユーザプログラムから内部ルーチンを使えるようにする方法を用意しました。
でもよく考えるとこれはあまりよい方法ではなかった気がしてきました。
MC68000を考えるとサブルーチンコールではなくTRAP
を使いたいですし、MC68000のTRAP
命令は16通りしかありません。今のところ足りるとはいえ、できればエントリポイントは1つにしたいところです。
[UniMon] RP2A03判別 と Lコマンド追加
MUTIF09
カテゴリー:
Universal Monitorを移植しようと組み立てたMUTIF09、他の石も載せてからと思っていましたが時間かかりそうなのでとりあえず現状です。
MUTIF09はKasumi YOSHINO(JA1UMI)氏のシングルボードコンピュータボードで、資料はBOOTH・プリント基板はオレンジピコショップにて入手可能です。Universal Monitor移植に最低限必要なもの(と手持ちがあって迷いのないものの一部)を搭載しています。