以前 手配線でユニバーサルボードに試作した 128kBバンクRAM/ROMボードの基板を起こしてみました。
概要
- SBC8080バスにつながる 128kBバンクメモリー+ROMボードです。
- 名称の”1M”は1Mbitということで…^^) 1MBではありません。
- 若干回路をみなおして リリース1.0にすると思います。(時期未定ですが…)
- 本基板に関するKiCAD等の回路図/ガーバーデータ、機械語モニタ+TinyBASIC用 ソース、HEXデータはGirhubで管理しています。ご覧ください。
- https://github.com/kuninet/Z80_1MRAMB
- メモリーマップは以前の記事でも紹介したとおり、以下のようになっています。
回路について
- 回路図はこちらです。
- 回路図、ガーバーデータ等はgithubで管理しています。ご覧ください。
- 74HC139でROM/RAMの切り替えとバンク切り替え用I/Oアドレスのデコードを行っています。
- メモリーはROMが16kB、固定RAM域が16kB、バンクメモリ域が32kBとなっています。
- 74HC573でバンクメモリー番号を保持しています。バンク番号はI/Oアドレス80hへ1、2,3のバンク番号を出力することで切り替えできます。(☆前回の試作のI/Oアドレスから変更しています。FM音源ボードとぶつかってしまって…(>_<))
- 実際の128kBメモリーのアドレスバス A15、A16のコントロールは74HC543の出力をゲートICでデコードして接続しています。
- バンク番号0(ゼロ)はバンク1へ読み替えて出力するようにしています。
部品組付けについて
- 部品表はこちらにあります。OpenOffice等の表計算ソフトで読み込める形式となっています。
- 1Mbit SRAMはHM628128、ROMは28C256型を想定しています。
- 秋月電子で売っているSOPの1M bit SRAMでもDIP変換すれば使えるものがあります。☆ビンアサインがHM628128と異なるSRAMもあるようですので注意してください。
ソフトウェアについて
- バンクメモリーの切り替えは、8080マシン語で書くと以下のようなコードとなります。
4000 MVI A,1 ← バンク番号を指定 OUT 80h RET EXEC 4000 8000 DEFINE 01,02,03 ← 適当な値を入力して 別々のRAMが選択されていることを確認 DUMP 8000
- バンクメモリーの領域がSBC8080 SUBルーズキットのもともとのRAM領域となっているため、SBC8080データパックの機械語モニタ+TinyBASICなどのワークエリア、スタック域等を固定RAM域へズラす必要があります。
- 参考として、機械語モニタ+TinyBASIC(PTBEXSA.ASM)のワークエリア、スタック域等の変更箇所は以下になります。
- (10/21追記) こちらのソース/アセンブリ後のHEXファイルはgithubに添付しました。
[各種アドレスの変更]
FTOP EQU 4000H LTOP EQU 5000H VTOP EQU 07000H STACK EQU 07E00H
[機械語モニタのTOPアドレス変更]
main: LXI H,-484 DAD SP SPHL LXI H,482 DAD SP XCHG;; LXI H,16384 ;&amp;lt;-- ココ CALL CCPINT
こちらを変更した際のメモリーマップは以下のようになります。
想定している用途
- わたしはバンク切り替えできるメモリーエリアにFM音源の演奏データを入れて、複数データを切り替えながら演奏してみたい! という用途で作りました。
- 一時点でアクセスできるメモリーは64kBですが、64kBの壁を超えてメモリーにデータを置くことができますので、いろいろと楽しい使い方ができるのでは?と思っています。
コメント
興味深い製作物を次々と発表されるのでいつも楽しく拝読しております。PTBEXSA.ASM等のソフトウェアはPALOALTO TinyBASICのライセンスにしたがいCOPTLEFTとしておりますが、実質的に再配布可能なフリーウェアですから、もしよろしければKZ80-1MSRAM対応に修正されてものを再配布してください。KZ80-CPUBとKZ80-1MSRAMとソフトウェアで一式まとまっていると皆さん便利だと思います。
いつもアドバイスありがとうございます!
では近日 PTBEXSA.ASMを修正した版のソフトウェアをgithubへUPしてまとめて管理しようと思います。^^)>
[…] パラレルI/O(8255A)、シリアルI/O(8251)、FM音源の各チップのアドレスデコードは74HC138で実施しています。128kメモリーボード(KZ80-1MSRAM)のバンク切り替え用I/Oアドレスを80h番地固定にしていることと、SBC8080 SUBルーズキットとの互換性を考えて以下の設定が推奨です。基板上のジャンパピンを各1つ短絡することで設定できます。 […]
[…] スタックポインターは通常 最上位アドレスFFFFhからへ設定します。今回 バンク切り替えしないシステムではそのままでOKですが、私が作った128k SRAMボード(KZ80-1MSRAM)の場合は固定RAM領域が7FFFhですので、自分の環境にあった設定に変更します。 […]