KZ80-1MSRAM Rev.1 リリース0.9

以前 手配線でユニバーサルボードに試作した 128kBバンクRAM/ROMボードの基板を起こしてみました。
概要
- SBC8080バスにつながる 128kBバンクメモリー+ROMボードです。
名称の”1M”は1Mbitということで…^^) 1MBではありません。
- 若干回路をみなおして リリース1.0にすると思います。(時期未定ですが…)
本基板に関するKiCAD等の回路図/ガーバーデータ、機械語モニタ+TinyBASIC用 ソース、HEXデータはGirhubで管理しています。ご覧ください。
メモリーマップは以前の記事でも紹介したとおり、以下のようになっています。
回路について
- 回路図はこちらです。
回路図、ガーバーデータ等は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の壁を超えてメモリーにデータを置くことができますので、いろいろと楽しい使い方ができるのでは?と思っています。

