Monitorでどうしたか書いていきたいと思います。前回書いたようにサブルーチン呼び出しが2段を超えると一気に大変になります。Monitorで呼び出しが深い箇所をどう対処したか、いくつかの例を見てみます。Monitorを移植してみます。以前のSC/MPも癖が強かったですが、このF8もそれに劣らず癖の強いプロセッサです。コードフェッチ以外のメモリアクセスはすべてDC0レジスタ間接でなくてはならず、常にポストインクリメントされます。一つあるDC1(アクセスには使えない)との間で値の交換が出来るのがせめてもの救いです。サブルーチン呼び出しはスタックではなく戻り番地はスタックレジスタPC1に退避されます。Monitorの修正をしている最中、F3850+F3853用の試作基板を貰えることになり組み立て・動作確認をしていたため、予想以上に遅くなってしまいました。TLCS-90そのままでも動作し0000H~0FFFFHまでの64kBのメモリ空間が使えますが、TMP90C840は最大1MBまでのメモリ空間をサポートしていますのでそれを使えるように拡張します。Monitor前回は8080とZ80への実装について書きました。他のプロセッサへの展開についてとりあえず思いつくところを書いてみます。固定エントリポイントで機能ごとに固定したエントリポイントを用意することでユーザプログラムから内部ルーチンを使えるようにする方法を用意しました。考えるとこれはあまりよい方法ではなかった気がしてきました。MC68000を考えるとサブルーチンコールではなくTRAPを使いたいですし、MC68000のTRAP命令は16通りしかありません。今のところ足りるとはいえ、できればエントリポイントは1つにしたいところです。asanoテーマ:工作プログラミングカテゴリー:マイコンSBCZ80について進展がありましたので記録しておきます。メッセージ文字化け電源ON時にメッセージの一部が化ける現象が発生していました。Z80",CR,LF,00H上記のメッセージ(最後の00Hは文字列の終端マークです)を表示しているはずなのになぜかLFと"U"の間に変な文字が挿入され次の"U"とともに化けてしまいます。電源ONのままリセットすれば問題はありません。次にメッセージを少し変形しました。Z80",CR,LF,00Hやはり2文字目のLFの後に挿入されると想像していましたが、実際は4文字目のLFの後"U"の前に挿入されました。前回はここまで書きました。LF,"U"の組み合わせに何かあるのかと次を試してみます。asanoテーマ:工作プログラミングカテゴリー:マイコン前回に引き続いてSBCZ80、今回はソフトウェア編です。Z80を動かしてきたMAA-1ボードとSBCZ80は実はほとんど同じです。ソフトウェアから見た違いといえばROM/RAMの容量が半分になっているくらいで、SIOのアドレスなども一致しています。なると0FF00H~0FFFFHに配置されていたワークエリア・スタックを0BF00H~0BFFFHに移動するだけで動きそうです。これならconfig.incの変更ですみます。Monitorの移植にかかります。L(oad))を実装してみました。これもまた癖のあるアーキテクチャですね。asanoテーマ:工作プログラミングカテゴリー:マイコン8088ボードのソフトウェアについて書いてみます。8086系は8080に似ていますし、以前(30年ほど前です)書いていたこともあるので、あまり苦もなく書けますね。フラグ変化とか細部はもちろん憶えてはいないので資料確認しながらですし、アセンブルすると使えないレジスタ指定しててエラーになったりはありますが、書いているうちにすぐに慣れていきます。Board用のものを6502から、8251用のものを8080から移植しました。機械的な変換で済みますが8251の初期化部分にはNOPを追加(8251はまだ配線もしていないので動作未確認)しています。Monitorの基本部分(D,G,Sコマンド)の移植ができましたので、アセンブリ言語でプログラミングしてみて感じたことを書いてみようと思います。豊富なレジスタ16と数が多いだけではなく基本的に対等なのでやりくりに苦労することがあまりありません。実態はメモリの一部なので直接メモリアクセスするのに比べメリットは少ない(命令長が短くなる・一部レジスタ専用の命令がある)ですが。sourceJA-751ですか。8インチFDD新品が若松で売っている圧接だけでできたから簡単でしたね。