まごころせいじつ堂

浜町庄金 研究開発  マイコンで遊んでばっかりで

PROM

ROM 2532 - 27512変換基板

 MZ-80CやCBM3032(PET2001)には4Kバイト、2532タイプのROMが使われている。この頃のPROMは2732タイプと2532タイプのピン配列があって、後の2764、27128、27256、27512タイプは2732のピン配置を元にしている。

スクリーンショット 2021-06-23 172408

スクリーンショット 2021-06-23 172628














 この時期、2732でなく2532が好んで?使われた理由は不明だけど、故障した2532タイプのROMを交換するには入手困難で手持ちのPROMライターでは書き込みも対応していない。代わりに中古で入手しやすい2764〜27512や新品で入手できるW27C512を使うために変換基板を作成した。

回路図:2532に27512の各信号を対応させ、あまったアドレスA12~A15を外部でセレクト。
スクリーンショット 2021-06-21 014629




配置配線:秋月D基板サイズで取り付け穴まで用意したが、そこまで必要ではなかった。

スクリーンショット 2021-06-21 014704

基板:

2021-06-23 17.12.54

組み立て例:2532ソケットに27C256を取り付け。これはCBM3032のCGROMの代わり。

2021-06-23 17.13.38

 逆に24ピン側にICソケットを、28ピン側に連結ソケットをはんだ付けし、ROMライタで2764などの設定にして2532のデータを読み出すこともできる。当初これを想定していなかったので2532のVppはオープンのまま(2532を取り付ける基板側で処理されていることを想定)。なので2532のピン21-Vppをピン24-Vccとショートさせる改造が必要になる。

2021-06-23 17.14.08

2021-06-23 17.44.33

 MZ-80CはCGROMとモニタROMの2つで場所も離れているので問題ないが、CBM3032はBASIC ROMが4個並んでいてこのままでは使えない。ICソケットを継ぎ足してゲタにし高さを調整すればささらないこともないが、作り直しますかね……











Arduino MEGA直結ROMリーダーのトラブル

※追記 27512(64Kバイト)まで対応のソフトができました → readROM27512.ino Intel HEX対応


 ROMライタTL866CSでは読めないマスクROM(TMM2364P)があったので、Arduino MEGA用のアダプタを作った。秋月電子の片面D基板、ピンヘッダははみ出るので少しけずっている。
IMGP3589

 Vcc-GND間に3.3μFの電解コンデンサと0.1μFのセラミックコンデンサ。
IMGP3590


 ROMの端子とArduino MEGAのピン番号の対応は以下のとおり。27512の場合はROM(1)がA15、ROM(27)がA14、ROM(26)がA13。
あとpin52にタクトスイッチを繋いでGNDに落としている。これはPROMダンプ開始用。
readROM


 さて、こんな単純な配線なのにArduinoスケッチを書いて読み込んでみるとデータが化ける。なぜだ。
IMGP3588

データの読み込みが不安定な時点で以前の経験を思い出すべきだった。
ここでやるべきだったのはアドレスと制御線の見直し、ソフトでの初期化だった。


 解決までの顛末は以下のスレッドにある。

 さて、解決までには間違った道をどんどん進んでいっているのだが以下に整理しておく。

・ハードウェアの絞り込み
PROMの2764/マスクROMのTMM2364P/W27C512で読み込み時のデータ化けが発生する。W27C512に特定のパターンを書き込んだものを調査対象とする。

・Arduino MEGA 2560のバリエーションによるものかどうか
互換品を3つ持っていたのでそれぞれで確認。どれも同様に発生するのでArduino MEGA個別についてまわる問題ではない。1枚を選んで調査対象とする。

・類似例の調査
どこかのだれかが同じようなことをしていないか検索。あった。
これによるとほぼ同等のハードウェア構成で成功している。ブレッドボード上にPROMを載せてジャンパ線でArduino MEGAに繋いでいるので電気的にはより条件が悪いはずだが動いている。

・土台の確認
上記、The Oddbloke geek Blogのコードをこちらのボード向けにピンアサインを変更し、ダンプを5回実行して結果を比較。5回とも問題なし。

ここまででソフトウェアの違いに問題点が隠されているとわかった。前後してデータ化けの発生率が変わるようなコードの変更(主に時間的なタイミング)をいじっては観測を繰り返している。挿入するディレイによって化け方の頻度が変わるなど、ハードウェアのピンが浮いているような指摘を受けている。

・知恵を借りる
デバッグの状況は適時tweetしていた。こまめに書くことで気付くこともあるし、識者からのツッコミもある。このあたりで泥沼にハマっていたら@mkogaxさんよりコードの初期化漏れの指摘が。
PROMのA15についてArduino MEGAからの出力設定はされていても値が設定されていなかった。この状態で確認したらA15はオープンだった。修正し、ダンプを10回とって比較したら全部OK。

以下は23行目に初期化の抜けがあるコード。


 ということで思考の過程を整理してみました。動物が沼にはまってもがいている様子がわかると思います。突っ込んでくれた皆さんどうもありがとうございました。

 ちゃんとしたPROM読みのコードは次回。



記事検索
プロフィール

hardyboy

カテゴリ別アーカイブ
月別アーカイブ
QRコード
QRコード
  • ライブドアブログ