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

Joseph Halfmoon

前回作業で、古代の8ビット、インテル8085に接続したSRAMにRaspberry Pi PicoをDMACとして接続、ホストから書き込んだ機械語コードを実行できるようになったみたいっす。余勢を駆って?今回は短いプログラムをメモリの書き込み、SRAMへのメモリ・リード、メモリライトが出来ている確認をいたしました。

※「レトロな」投稿順index

ううむ、つい「インテル8085」と書いてしまいましたが、実際入手できた現物はNEC製の互換品です。誰も気にせんか。

さて前回はSRAMを接続といいつつ、無限NOPループの闇の中で8085を回転させていただけでした。今回はごくごく短いプログラム、10バイトくらいの、をSRAMに書き込んでそれを実行させてみました。

後でホストのWSL2環境に準備済のCP/Mエミュレータ上の「デジタルリサーチ」マクロアセンブラのオブジェクトをダウンロードできるようにしたいと思っているのです。しかしLinux環境までさかのぼるのはメンドイっす。今回はハンドアセンブル。数十年ぶりくらいだなあ、8080/8085のハンドアセンブル。こんな感じ。HandAssemble

8085はインテル伝統?の0番地スタートなので、0番地から配置してます。まず、Aレジスタに72Hを即値でロード。使用しているSRAMが未初期化だとAAhとか55hとかが見えることが多い感じ(神のみぞ知る)だったので、被る確率が低そうなやつ、というだけの当たらずも八卦な値。つづいてそれを000Fh番地(16進数を0x000Fではなく、000Fhのように書くのもインテル伝統のお作法っす)にストア、つづいて同じ番地から再度ロード、そして開始番地へジャンプ。無駄な作業を永遠に続けますが、これにてメモリに対するライトサイクルとリードサイクルが発生、このときのデータバスを見張っておけば、ちゃんと書き込みと読み出しが出来ているのか否かが確認できるっと。ハンドアセンブルしたコードをMicroPythonで8085にDMAかけてSRAM書き込みっす。

確認したものが以下に。PGMexecutedCOM

青色は、機械語コードのフェッチです。一番上のALEのところで真ん中辺のADRと書いてあるアドレス・バス(下4ビットだけ有効)の6角形の中のアドレスからADと書いてあるアドレス・データ・マルチプレクスバスの四角の中の値をフェッチします。タイミングは上から2番目のMEMRD#信号ね。

赤色は、命令によるメモリへの書き込みです。ALEのところでメモリアドレス(6角形)が確定、そのときADバスの上に出力される赤四角の中の値が上から三番目のMEMWR#信号でSRAMへ書き込まれます。

草色は、命令によるメモリからの読み出しです。ALEのところでメモリアドレス(6角形)が確定、そのときメモリから出力される草色四角の中の値が上から二番目のMEMRD#信号で読み込まれます。

ハンドアセンブルしたコードどおりに動いているみたい。そいつは良かったが、毎回ロジアナのリストを読むのは老眼の老人にはツライ技だな。LEDくらいとりつけてLチカくらいはやらせたいものだが。残念ながら手元在庫に8255とかないし。。。どうする?

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