トランジスタでCPUをつくろう!
トランジスタで8080をつくってしまおうというまさにびっくり仰天、狂気のプロジェクトです!
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
見事にできましたら、もちろんTK−80モニタを乗せて、それからBASIC、CP/Mを走らせましょう!
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
[第293回]
●ラーメンタイマープログラムのROM化
前回はMMUの動作をテストするプログラムをROM化してそれを実行しました。
MMUの動作をテストするプログラムはBASICプログラムの中で命令コードを記述してそれを82C55を介してMYCPY4のRAMに書き込むという形で作成したものでしたが、そのもとのBASICプログラムのサブルーチンを書き換えることでMYCPU4の命令コードをND80Z3.5のRAMに書き込んだあと、それを27C256WRITERでROMに書くことでプログラムをROM化しました。
そこまでできたのですから、最後の仕上げとして同じ方法でラーメンタイマープログラムをROM化しないわけにはいきませんでしょう。
ラーメンタイマープログラムは[第283回]でBASICのプログラムリストをお見せして説明しています。
そのBASICプログラムをもとにしてそこからラーメンタイマープログラムをROM化するまでの過程は前回と前々回([第291回]と[第292回])で説明した手順と全く同じです。
下はBASICプログラムを書き換えてそれをセーブするところまでの作業をしているところです。
ラーメンタイマープログラムを作成するBASICプログラムではMYCPU4のRAMに命令コードを書き込むサブルーチンは行番号270〜310です。
BASICプログラムをリスト表示したあとスクリーンエディタで270行を書き換えました。
そのあと行の終わりまでカーソルを移動してそこでDELETEコマンドで280〜300行を削除しました。
何回も書きますが「BASICって本当に便利」です。
最後にそのようにして書き換えたBASICプログラムをMC4T12B.TXTというファイル名でセーブしました。
セーブしたMC4T12B.TXTをアドレス8100をロード先アドレスに指定して再ロードしました。
そのようにする理由については[第291回]で説明していますので参照願います。
そのあとの作業は[第291回]のときと同じ作業です。
MC4T12B.TXTをロード後に念のためHELPコマンドでプログラムが8100からロードされていることを確認しました。
そのあとRUNコマンドでMC4T12Bを実行し、その実行結果をDMコマンドで確認しました。
[第291回]で作成したMMUテストプログラムは250バイトほどの長さのプログラムでしたのでアドレス8000〜80FFのほとんど全範囲に書き込まれましたが今回のラーメンタイマープログラムはそれよりもずっと短かくて8000〜8013の範囲に書き込まれただけです。
その範囲のデータ(MYCPU4の命令コード)をMC4T12B.BINというファイル名でセーブしました。
そのあとすぐにアドレス8000〜8013の範囲のデータを/W256コマンドで27C256に書き込んだのですが、うっかりしてそこのところの画像を保存するのを忘れてしまいました。
ですのでそこのところはログで見ていただきます。
>r. break in 250 >dm 8000,8020 8000 A7 00 61 E2 61 E4 A6 61-E7 61 E9 A4 61 EC CF 10 ァ.a.a.ヲa.a.、a.マ. 8010 61 E0 A8 F0 00 90 04 05-32 00 02 00 42 F4 42 25 a.ィ.....2...B.B% 8020 00 90 04 05 32 00 02 00-0A 00 0D A2 6D 79 63 70 ....2......「mycp >/sv mc4t12b.bin,8000,8013 0014(20)bytes saved >/w256 8000,8013 VERIFY 0C10 > |
今回もわずか20バイト程度のデータですので書き込みは瞬時に完了しました。
そのようにして作成したROMをMYCPU4に実装して電源を入れました。
横にストップウォッチを置いて経過時間がわかるようにして撮影しました。
[第284回]に書きましたようにSP1のジャンパピンの設定を真ん中のSLOWにして1命令が約1秒で実行されるようにしました。
写真はプログラムスタート直後の様子です。
直後といってもリセットスイッチを押すのとストップウォッチをスタートするのを同時に行なって、それからカメラのシャッターを切りましたからご覧のように5秒ほど経過してしまいました。
1分経過後の写真です。
OUTポートの表示はプログラムスタート時は0111たったのですが、1分後に0110になりました。
約2分経過しました。
OUTポートの表示が0100になりました。
約3分経過しました。
OUTポートの表示は1000になりました。
プログラムは最後のアドレス13まで実行され、HLT命令が実行されてそこで停止(実はHLT命令のみを繰り返し実行)しています。
ラーメンタイマープログラムのROM化もうまくいきました。
めでたしめでたしです。
途中休み休みの連載でしたが今回でHCMOSIC版4ビットCPUボード「MYCPU4」についての説明はほぼ尽くしたと思います。
追加で書くことが出てきましたら、またそのときに書くことにいたします。
まだこれから「MYCPU4」のトランジスタ版について作業をすすめなければなりませんし、そうそう、トランジスタロジック回路基板についての紹介もしなければなりません。
それからそれから、本題に戻って8ビットCPUのトランジスタ化をやり遂げなければなりません。
ですのでHCMOSIC版4ビットCPUボード「MYCPU4」についてはひとまず説明を終了しましても、当連載はまだまだ続きます。
ということで。
HCMOSIC版4ビットCPUボード「MYCPU4」についてはやっと一区切りつきました。
次回はHCMOSIC版4ビットCPUボード「MYCPU4」組立キットの発売開始のご案内をさせていただく予定です。
トランジスタでCPUをつくろう![第293回]
2021.1.27upload
前へ
次へ
ホームページトップへ戻る