2021.1.22
前へ
次へ
ホームページトップへ戻る

トランジスタでCPUをつくろう!
トランジスタで8080をつくってしまおうというまさにびっくり仰天、狂気のプロジェクトです!
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
見事にできましたら、もちろんTK−80モニタを乗せて、それからBASIC、CP/Mを走らせましょう!
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆


[第290回]



●プログラムのROM化

今までずっとMYCPU4のプログラムはRAMに書き込んでそれを実行してきました。
そのように書いてきましたので当連載を途中からお読みになった方はRAMだけしか使えないのかとお思いになったかもしれません。
今までROMについては説明をしてきませんでしたが、中日電工版4ビットCPU「MYCPU4」はプログラムをROM化することでND80Z3.5などにつながないで独立して動作させることもできます。
KEYSW回路基板を接続すれば「独立」動作になりますが、その場合にはプログラムはRAMに書き込みますから電源を切ればプログラムは消えてしまいます。
プログラムをROM化すれば電源ONでプログラムを実行することができます。
プログラムROMを交換することで異なるプログラムを電源ONですぐに実行させることもできます。
しかしプログラムをRAMに書き込んで実行することは特別の準備をしなくても比較的簡単にできますが、プログラムをROM化するためにはそれなりの準備が必要です。
今までROM化については何も書かないでずっとRAMだけで書いてきたのはそういった理由からです。

ROMについて説明はしてきませんでしたが、回路図は[第257回]でお見せしています。
また基板の写真は[第248回]でお見せしています。
コストと回路の簡略化のためにROMとRAMを切り換えて使う仕様にはなっていません。
RAMかROMのどちらかをそれぞれのICソケットに実装して使います。
RAMを使う場合にはMEM/CLOCK回路基板の下側の28pinICソケット(IC8)にRAM(62256)を実装します。
また書込済みのROM(27C256)を使う場合にはRAMは外して代わりに上側の28pinICソケット(IC9)に書込済みのROM(27C256)を実装します。

KEYSW回路基板のところ([第287回])で書きましたように中日電工版4ビットCPU「MYCPU4」は単独でも機能させられます。
プログラムのセーブ、ロードができないなどの制約はありますが、KEYSW回路基板を接続することで、プログラムをスイッチパチパチでRAMに書き込んでそれを実行することができます。
ステップ動作もできますし、SLOWモード、実クロックモードで動作させることもできます。
KEYSW回路基板をつながないでND80Z3.5やND8080などに接続すればより機能の幅は広がりますが、ND80Z3.5やND8080と接続することは必須ではありません。
しかしプログラムをROM化するためにはND80Z3.5またはND8080またはそれと同等の当社のマイコンボードが必要になりますし、勿論当社の27C256WRITERが必要です。
つい「必要」と書いてしまいましたが、それらがなければ絶対にROM化はできないかといいますとそういうものでもありません。
27C256が書き込める(当社のものではない)ROM WRITERを使ってもプログラムのROM化は可能です。
しかしROM化をする前にまずRAMにプログラムを書いてデバッグをするのが常識的な手順ですし、それは前述のスイッチパチパチでもできますけれど、やっぱり前回まで書いてきましたようにND80Z3.5などに接続してそれを行なうほうがずっと効率的でありましょう。

そういう理由で「プログラムのROM化」については今まで書いてこなかったのですが、もしすでに27C256WRITERをお持ちでしたら、あるいは27C256WRITERのご購入をお考えでしたら、この機会にご購入いただいてプログラムのROM化もぜひ試していただきたいと思います。
プログラムのROM化は特に難しいところはありません。
というよりもあっけないほど簡単です。
前回はCMコマンドを使ってプログラムをND80Z3.5のRAMのアドレス8000〜80FFの範囲に書いたあと、コピープログラムMC4WR.BINを実行して、8000〜80FFの内容をMYCPU4のRAMの00〜FFにコピーしました。
プログラムをROM化する場合もその8000〜80FFに書いた内容(MYCPU4の命令コード)をそのままROMに書きます。

前回はND80Z3.5のRAMの8000〜8004に書いたプログラムをMC4T2.BINというファイル名でセーブしました。
今回はそのプログラムをROM化してみます。
今まではND80Z3.5の82C55入出力コネクタにMYCPU4を接続して操作してきましたが27C256WRITERも同じ82C55入出力コネクタに接続しますから、プログラムをROMに書き込むときはMYCPU4を82C55入出力コネクタから外して代わりに27C256WRITERを接続します。


27C256WRITERはZB3BASICを起動して使います。

前回保存したMC4T2.BINをアドレス8000にロードしました。
27C256WRITERは32KBのデータをフルに書き込むときにはZB3DOS用増設RAMが必要ですが今回のように前の方のアドレス(0000〜3FFF)に書き込む場合には標準で実装しているRAMに置いたデータをROMにコピーする形で使うことができます。
RAMのアドレス8000〜のデータが27C256ROMの0000〜に書き込まれます。
今回プログラムとして必要なのは8000〜8004にロードしたデータ(命令コード)だけですから、その範囲だけを指定して書き込みます。
/W256 8000,8004[Enter]を実行しました。
わずか数バイトを書き込むだけなので、書き込みは瞬時に完了します。

MYCPU4のMEM/CLOCK回路基板からRAMを外して代わりに上で作成した27C256ROMをIC9(28pinソケット)にセットして電源を入れました。

ND80Z3.5もKEYSW回路基板も接続していません。
完全な独立動作です。
電源をONにするとパワーオンリセット回路の働きですぐにROMのアドレス00からプログラムがスタートします。
MEM/CLOCK回路基板のSP1のジャンパピンの設定をSTEPにしましたからアドレス00のCLK1で停止しています。

STEPスイッチを何回か押してプログラムを進めました。

アドレス02のCLK3まで進んだところです。
ROMを実装したときも今までのRAMでのプログラム実行と全く同じようにステップ動作もできますし、SLOWモードや実CLOCKモードで実行することもできます。

MEM/CLOCK回路基板のSP1のジャンパピンの設定を右端のCLKにしてリセットスイッチを押しました。

プログラムが瞬時に実行されてアドレス04のHLT命令で停止しました。
電源OFFの状態でSP1のジャンパピンの設定をSLOWまたはCLKにしてから電源をONにするとパワーオンリセット回路の働きでリセットされてROMのアドレス00からプログラムがSLOWまたは実クロックで実行されます。

トランジスタでCPUをつくろう![第290回]
2021.1.22upload

前へ
次へ
ホームページトップへ戻る