現在地

MN1613のステップ実行(その5)


テーマ:

カテゴリー:

これまで不明だったリセット解除直後のX'0000'番地からのI/Oリード、X'0000'以外の値を返したら何が起きるか?ということでその3で予告したIORサイクルでデータバスに値を送り込む回路を追加しました。


空だったソケットにはSN74LS541Nを載せました。

下に並ぶショートピンの群れは値の設定用、8ビットのところで区切りがわかるように空けておきます。写真の状態でX'F010'を設定しています。

右上端のショートピンは74LS139でデコードしたIORを74LS541に供給するためのもの、抜けば"H"に固定されるので以前と同じ動作になります。

最初74LS541のピン配を勘違いして組んでしまい、IORを切ってもまったく動作しなくなってしまい焦りました。

これで準備が終わったので値を変えて試してみることにします。

これまで結果的にX'0000'で動かしていたので、まずはX'0001'でやってみます。

するとこれまでIORに続いてX'0002', X'0003'のメモリリードが発生していたものが、X'0003', X'0004'のリードに変わりました。

それではということでX'0100'にしてみるとX'0102', X'0103'のリードになります。

どうやらIORに返した値+2,+3からリードし、+3から読んだアドレスから実行開始するようです。+2から読んだ値はSTRの初期値でしょうか。なぜ+0,+1ではなくて+2,+3なのか不思議ですが。

これはありがたいことです。

アドレスX'0000'~X'0005'は割り込み時のSTR, ICの退避エリアなのでRAMを配置したいのですが、実行開始アドレスはROMでなくてはなりません。これが無いとリセット時のみROMを見せるなどの細工が必要になってきてしまいます。

私のMN1613ボードではEMILY BoardでオールRAM構成なのでなんとかなっていました。

実行開始アドレスを好きなアドレスから読めるならゼロページをすべてRAMにできます。IORに応答する回路は必要ですが、面倒ならデータバスのプルアップ・プルダウンで済ませてしまうこともできます。


コメントを追加

Plain text

  • HTMLタグは利用できません。
  • ウェブページアドレスとメールアドレスは、自動的にハイパーリンクに変換されます。
  • 行と段落は自動的に折り返されます。
※ コメントは原則公開です。個別のご相談などは「ご意見・ご要望」からお願いします。