マイコン

マイクロプロセッサ・マイクロコントローラ等です。

SBCZ80(その後)

2020-08-26 23:00 — asano
カテゴリー

SBCZ80について進展がありましたので記録しておきます。

メッセージ文字化け

電源ON時にメッセージの一部が化ける現象が発生していました。

CR,LF,"Universal Monitor Z80",CR,LF,00H

上記のメッセージ(最後の00Hは文字列の終端マークです)を表示しているはずなのになぜかLFと"U"の間に変な文字が挿入され次の"U"とともに化けてしまいます。電源ONのままリセットすれば問題はありません。

次にメッセージを少し変形しました。

CR,LF,CR,LF,"Universal Monitor Z80",CR,LF,00H

やはり2文字目のLFの後に挿入されると想像していましたが、実際は4文字目のLFの後"U"の前に挿入されました。

前回はここまで書きました。

さらにLF,"U"の組み合わせに何かあるのかと次を試してみます。

SBCZ80(ソフトウェア編)

2020-08-24 02:23 — asano
カテゴリー

前回に引き続いてSBCZ80、今回はソフトウェア編です。

いつものようにUniversal Monitorを移植するわけですが、これまでUniversal Monitor Z80を動かしてきたMAA-1ボードとSBCZ80は実はほとんど同じです。ソフトウェアから見た違いといえばROM/RAMの容量が半分になっているくらいで、SIOのアドレスなども一致しています。

となると0FF00H~0FFFFHに配置されていたワークエリア・スタックを0BF00H~0BFFFHに移動するだけで動きそうです。これならconfig.incの変更ですみます。

SBCZ80(ハードウェア編)

2020-08-23 16:29 — asano

テーマ

カテゴリー

書泉ブックマートで『ザイログZ80伝説』を買ったらCD-ROM・プリント基板付きの限定版が手に入りました。Z80のボードは既に何枚も作っていますが、せっかくなので組み立ててみます。

SBCZ80
これまでのSBCシリーズは8cm×10cmでしたが、これは10cm×10cmで密度も最大クラスでしょう。

面積をくっているのはRAMです。SRAMなら24~32ピンのDIP1つで済みますが、18ピンのDRAMが2つに制御用のロジックが4つ必要となっています。今となってはこの容量ならSRAM積んだ方が有利ですが、このボードはDRAMを動かしてみたいということで設計されたとのこと。

8031/8032ボード(ソフトウェア編)

2020-08-11 23:55 — asano
カテゴリー

8031/8032ボードはいくつかアドレスを変えながらループさせてアドレスバス確認が出来たところで一応完成ということにして、Universal Monitorの移植にかかります。

ターミナルはEMILY Board経由と内蔵UARTの両方に対応することにしますが、まずは簡単そうなEMILY Board経由で一通り動かしてみることにして一通りのコマンド(D(ump), G(o), S(et), H(bank), L(oad))を実装してみました。

これもまた癖のあるアーキテクチャですね。

8031/8032ボード(ハードウェア編)

2020-08-08 22:51 — asano

テーマ

カテゴリー

またEMILY Board使って新たなプロセッサが動くようになりました。

8031/8032ボード
今回作ったのはIntelのMCS-51ファミリの8031/8032用のボードです。

このファミリはEA/Vppで内蔵ROMを切り離せるので8058とか8751なども使えると思いますが、8031/8032の入手性は悪くないのでわざわざROM内蔵品を使うことも無いでしょう。

Z80のRレジスタについて

2020-08-01 23:54 — asano
カテゴリー

Universal MonitorのZ80版にR(egister)コマンド実装していてRレジスタの挙動について誤解していたことがわかりました。そこで今回はZ80のRレジスタについて書いてみることにします。

今さら役に立つ機会なんて無いでしょうけどね。

これまでのRレジスタについての理解はざっとこんなところでした。

  1. リフレッシュアドレスは7ビットなので7ビットのレジスタ(最上位ビットは常に0)
  2. 1命令実行のたびにインクリメントされる
  3. LD A,R, LD R,A命令で値の出し入れができる

はっきり言ってあまり使い道はありません。ゲームなどの簡易乱数発生器として使うか、プロテクトのチェッカルーチンで解析妨害のために使うくらいしか思いつきません。あとは同じ値を代入し続けてソフト的にリフレッシュ動作を不全にするくらいでしょうか。

普通なら無かったことにしても構わないレジスタなのですが...

Toshiba TMP90C840N

2020-07-26 23:58 — asano

テーマ

カテゴリー

前にOTP品のTMP90P802APを内蔵ROMを切り離して外部メモリで実行できました。ならマスクROM品でもいけるだろうとこれ買ってみました。数ヶ月前ですが...

TMP90C840N-1351
東芝のTMP90C840N-1351、1989年の日本製のようです。

DIPなのは良いのですが、64ピンのシュリンクDIPですのでユニバーサル基板で扱うにはちと難がありますね。サンハヤトからシュリンクDIPの周りに2.54mmのユニバーサルパターンの配置されたのがあるのでそれを使うつもりです。EMILY Board使うからそれで十分収まるでしょう。

80C188XL

2020-07-14 23:57 — asano

テーマ

カテゴリー

8088ボードが動き、モニタの移植も基本的な機能が動き始めると、CPU判別ルーチン書いてみたくなります。あのボードで8088とV20は動かせるので次は80188かなと思って調達したのですが...

N80C188XL12
IntelのN80C188XL12ですね。

発注してしまってから気付いたのですが、実は80C188は既に持っていたんですよね。それほど高くはなかったし、一緒に注文したデバイスは必要だったのでキャンセルはしませんでした。予備にもなりますし。

今回のものは「XL」付きですがデータシートによるとコアの再実装みたいです。完全スタティックで高速化と低消費電力化したとのこと。

8088ボード(ソフトウェア編)

2020-07-09 11:44 — asano
カテゴリー

8088ボードのソフトウェアについて書いてみます。

動かすのはいつものようにUniversal Monitorです。

8086系は8080に似ていますし、以前(30年ほど前です)書いていたこともあるので、あまり苦もなく書けますね。フラグ変化とか細部はもちろん憶えてはいないので資料確認しながらですし、アセンブルすると使えないレジスタ指定しててエラーになったりはありますが、書いているうちにすぐに慣れていきます。

まずはコンソールドライバ、EMILY Board用のものを6502から、8251用のものを8080から移植しました。ほぼ機械的な変換で済みますが8251の初期化部分にはNOPを追加(8251はまだ配線もしていないので動作未確認)しています。

Intel 8087

2020-07-04 23:31 — asano

テーマ

カテゴリー

これも何かのついでに買ったまま忘れていました。

D8087-1
IntelのD8087-1、数値演算コプロセッサです。-1と付くので10MHz品ですね。

これ今でこそ何かのついでに買えますが、現役当時はとても気軽に買えるシロモノではありませんでした。ちょうど手元にあった1983年のトランジスタ技術の広告によると、8086(5MHz)が約5,000円なのに対して8087は約100,000円の値がついていました。

8086/8088搭載のパソコンには8087用のソケットが用意されていることも多く、一パソコンユーザが買ってきて挿すこともあるデバイスで、パソコンメーカからも「純正品」として供給されていました。