CPU実験室

誰も見向きもしない古いCPUをいじって動かしてみようというプロジェクトです

EEPROM書込み(2)

現状では書込みサイクルが約18msのため64kbitROM全面書き換えには18ms×8192で約2分30秒かかります。これでも待てる時間ではありますがやはりBUSY状態をポーリングして書込み処理を高速化してみます。

データシートを見ると/BUSYピンの状態を見る以外にも

①データバスD7に書き込みデータを反転した/D7が出るのでD7になるまで待つ

②データバスD6を読むたび/D6,D6状態がトグルするので同じ状態が続くまで待つ

方法が示されているので簡単な①でチェックするルーチンを組み込みました

f:id:O3I:20211205122845j:plain

 

これで書込みをすると書込みサイクルのほとんどが/BUSY時間となり約5msで終了します。この場合全面書き換えは5ms×8192で約40秒で済んでしまいます

f:id:O3I:20211205122807j:plain

 

EEPROMの書込みができるようになったのでモニタプログラムを書き込みボードに挿入したところ問題なく動作しました。このときのメモリマップは以下になります。

NSC810A内の128バイトのRAMを生かすため後半16kbyteものイメージができてしまうのはちょっともったいないですがスタックとモニタのワークエリアはこの128バイトに割り付けSRAM8kbyteはアプリケーションに丸々開放することにします

f:id:O3I:20211205122944j:plain

ただしこのEEPROMは通常のメモリサイクルと同じ手順で書込みができてしまう(つまりはバッテリバックアップされたSRAMと同じ)ので注意が必要です。

ボードに通電したまま信号のプロービングをしていたらバスをショートさせたか何かでプログラムが暴走したことがあり、その後リセット、電源OFF/ONしてもモニタが起動しなくなってしまいました。あせってEEPROMの中身を見たらデータがめちゃくちゃに破壊されてました。

これを防ぐにはEEPROMに特殊なコマンドチェインを書込んでライトプロテクトをかけることもできるようですが、ここでは単純にジャンパポストJP2からプラグを抜いて/WEを切り離しておきました。