レトロな(16) 8085にソフトDMAC初期化のSRAM接続、動いてるみたいね

Joseph Halfmoon

前回、MicroPython制御の「ソフトウエアDMAC」によるSRAMの読み書きが不審な原因が判明、暫定対策したところ安定して読み書きできるようになりました。そこで一気に進捗を取り戻すべく、真のホスト8085をSRAMモジュールに接続してみました。ソフトウエアDMACでメモリ初期化したらそれらしく動いているみたい。

※「レトロな」投稿順index

まあねえ、トホホな老人には、ありがちちゃ、ありがちかも知れないけれど本来アドレスが固定出力されている筈のリード期間中にアドレスバスが「パタパタ」して、思いもしないメモリアドレスからデータを読み出しておったと。まあその原因に心あたりもあり。でもま、前回の暫定対策で安定しているところで、本題である8085をさっさとSRAMに接続してしまおうと。

まとめてみればこんな回路図

過去回で、ちまちまと各部を作ってきたものを今回、まとめて接続してみました。

    1. CPU、古代のベストセラー8ビットの一つ、インテル8085(互換品だけれども)
    2. オシレータ、1MHz。8085は2分周して動作なのでMIN周波数500kHzで動作。
    3. 主記憶、エプソン製32k x 8ビット SRAM、ただしA15をデコードしてないだけでなく、今回は前述の暫定対策のためにA14~A2は全て0。下4バイト分のメモリが全てのメモリ空間に見える実験用設定。
    4. ソフトウエア制御DMAコントローラ、MCP23017を2個使用、32ビット分のGPIOを確保。その端子をRaspberry Pi Pico上で走っているMicroPythonで操作して8085にHOLDをかけ、8085のマルチプレスクスバスを「乗っ取って」SRAMにマシン・コードを書き込む。とりあえず例によって全空間NOP詰めで、無限NOPループとする。

細かいところ正確ではない、手抜きな回路図が以下に(その現物は冒頭のアイキャッチ画像に。)8085_SRAM_DMA_schematic0

動作確認は、オシロでALEとRD#を見ているだけです。

電源投入後、初期化されていないSRAMから何やらフェッチして動き始めているみたいでALEとRD#は周期がいくつかある不安定な動き。

MicroPython側からHOLDかけて(当然HLDAが返ってくるのを確認して)SRAMをNOPで埋めHOLDを下すと、ALEとRD#がピタリと安定、周期125kHzとな。予定通りのNOP無限ループに見えます。

こんな感じ。CPU_NOP_LOOP

SRAMからフェッチできているみたいだね。余勢を駆って?次回はアドレス線を何本か復活させて短いプログラムをロードできるようにし、NOPでないループ、それもメモリデータのリード、ライトを行うものの動作確認すべしと。ホスト上でアセンブルしたHEXファイルをダウンロードして動かすまでは先が長いな。

レトロな(15) ソフトDMACがダメダメな理由はアドレスバス上位側のせい へ戻る

レトロな(17) 8085、SRAMへのリード、ライトサイクルを観察、OKよ。へ進む