MN1613のステップ実行(その2)
カテゴリー:
MN1613のステップ実行(その1)以降、少し進展がありました。
一つ目はアドレスバスとMEMR, MEMWをLED表示する基板を用意したこと、これで1本ずつテスタで電圧を測る必要がなくなりました。
本当はIOR, IOW, FSYCなども見たいところなのですが、EMILY Boardのリボンケーブルを利用する形にしたので諦めました。アドレスの上位4ビットは未使用ピンに割り当てたのですが、あまり今回だけの信号を割り当てるのは避けたかったのです。数も少ないことですしテスタ対応すればすむことです。
データバスはコネクタまでは準備したのですがLEDは未実装です。ステップ動作中でもメモリの内容はEMILY Board側から自由に参照・変更できるのでとりあえず無くても何とかなりそうだからです。
新年初はMSM2128
[UniMon] レジスタ命令の内側(その3)
カテゴリー:
最後となる今回は「3. メモリに退避されている内容をレジスタに戻しユーザプログラムに制御を渡す」です。
コマンドで値を変更したらその状態でユーザプログラムを実行できなくては意味がありません。
要はレジスタに値を設定して目的の番地にブランチすれば良いだけなのですが、すでに設定済みのレジスタを壊さないようにしなくてはいけないので進むにつれ制約が増えていきます。
比較的多くのプロセッサで使える手は、「スタックに積んでおいてPOP
,...,POP
,RET
」です。ちょうど1回目の逆です。
スタックを使った割り込みに対応しているプロセッサなら大抵これが使えます。
MC6800を例に見てみましょう。
[UniMon] レジスタ命令の内側(その2)
カテゴリー:
前回は「ユーザプログラムからモニタに制御が渡ったときにレジスタ内容をメモリに退避する」でしたので、今回は「2. メモリに退避されている値を表示・変更する」についてです。
レジスタ内容をメモリに退避するのはプロセッサ固有の書き方が必要でしたが、すでにメモリ上にある値を表示・変更するだけであれば特殊なプログラミングは必要ありません。とはいえレジスタの名称や個数はプロセッサ毎に異なりますからそれなりの工夫は要ります。
まず全レジスタの一覧表示は簡単です。ループとテーブルで書いてもいいのですが、レジスタ数が少ないうちは「レジスタ名を表示・メモリから値をロード・16進表示」を必要数分並べてしまっても大したことはありません。
レジスタの変更はそうはいきませんので、以下のようなテーブルを用意しました。
[UniMon] レジスタ命令の内側(その1)
MN1613のステップ実行(その1)
NEC uPD458D
カテゴリー:
μPD454Dと一緒に入手していた後継品です。
NECのμPD458D EEPROMです。
容量はμPD454Dの4倍の8kbit(1024×8bit)となり、ピン数も4本増えて28ピンとなりました。容量の割にピン数が多いのは電源ピンが多数あるためです。
電気的特性は容量増に伴ってアドレスピンが増えたことと、アクセスタイムが少し速くなった程度でμPD454Dからほとんど変わっていません。ただしピン配置は一新されていて互換性はなく挿し替えはできません。その代わり一般的な2708などとの挿し替えを意識した配置となっていて、13~16ピンを除いた24ピンは2708そっくりです。
5.25インチ版 SIP
カテゴリー:
前に3.5インチ版を見つけましたが、5.25インチ版も発見です。
紙製のケースに入っていました。「Flexible disk」というのがいいですね。
EPSONのディスクというとソフトウェア・インストレーション・プログラム(SIP)くらいしか心当たりはありません。