復活!CP/M ワンボードマイコンでCP/Mを!
CP/MがTK−80互換のワンボードマイコンの上で復活します
ND80ZVとMYCPU80の上でCP/Mが走ります!
[第307回]
●現在のメモリマップ
このところ数回にわたって、普通のLoaderについて説明をしてきました。
ちょっとこの辺で一休みをしまして、メモリの中をのぞいてみることにいたしましょう。
すでに説明をしておりますようにE−80(仮称)ミニコンはフルRAMでROMはありません。
ですからアドレス0000H〜FFFFHは全てRAMです。
実際はE−80(仮称)ミニコンには512KBのRAMを搭載しております。
そしてE−80(仮称)ミニコンのCPU、Z8S180はMMU(Memory Management Unit)を内蔵していますから、拡張命令を使えば最大で00000H〜FFFFFHの1MBのメモリ空間をアクセスすることができます。
しかしZ8S180で拡張された命令を使わないで、従来のZ80の命令だけでアクセスできるメモリ空間は0000H〜FFFFHの64KBに限定されますから、ここではその範囲のメモリに限って説明をすることにいたします。
前回までに説明をしてきました作業によって、RAMの中はどのようになりましたでしょうか。
下に簡単な図を用意しましたので、見ていただくことにいたします。
アドレス0000H〜0006Hには[第300回]でパネルスイッチを使って入力しましたサンプルプログラムがあります。
フロントパネル左下のProgrammed Inputスイッチの値を読んで、左上のProgrammed Output LEDにその値を表示するプログラムです。
アドレス0000Hから書かれていますから、パワーオンまたはリセットによってこのプログラムが実行されます。
このプログラムはエンドレス(無限ループ)ですから、STOPスイッチを押さない限り、実行を続けます。
E−80(仮称)ミニコンのRAMは単三乾電池3本(3.6V〜4.5V)を使ったバッテリーバックアップ回路によってバックアップしておくことができますから、電源を切ってもRAMに書かれたデータやプログラムは消えないでそのまま保持されています。
現在はEneloop3本(3.6V)でバックアップ中です。
アドレス7F80H〜7F9FHには簡単なLoaderプログラムがあります。
このプログラムは[第304回]で紹介いたしました。
アドレス8000H〜80ECHには、電子オルゴールプログラム(MUSICプログラム)があります。
これは[第305回]で7F80H〜に置いたLoaderプログラムを実行してロードしました。
8100H〜819AHにはMUSICプログラム用の曲データがあります。
これも[第306回]でLoaderプログラムを実行してロードしました。
忘れてはいけないのはFFFFHから前方に向かって消費されるスタックエリアです。
MUSICプログラムはサブルーチンを使っていますから、そのためにスタックが必要になります。
プログラムの先頭でSP(スタックポインタ)に0000Hを設定しています。
そうすることで、それよりも−1少ないメモリアドレス(実は最上位のFFFFHになります)から、スタックとして使われていきます。
特筆すべきことは64KBのメモリ空間のどこにでも、フロントパネルのスイッチを使ってアクセスすることができ、自由にその値を見たり、書き換えたりすることができるということです。
これはとてもすばらしいことだと思います。
私達は現在高度に進化したWindowsパソコンを使っていますが、メモリの値を書き換えるどころか、中身を見ることすらできません。
システムの全体が巨大なブラックボックスと化しています。
そういう観点からしますと、E−80(仮称)ミニコンは逆にむしろ新鮮であらゆる可能性を秘めているように思えてきます。
実際、上記のように配置したプログラムのどれでも、パネルスイッチにそのアドレスを設定して直ちに実行させることができますし、また64KBのメモリ空間のどこにでも任意のプログラムを配置して、それを実行させることができます。
それって、すばらしいことだと思いませんか?
そう。
それは短いユーザープログラムに限らず、OSの機能を持つような大きなシステムプログラムを配置することだって、できてしまうのです。
ワンボードマイコンでCP/Mを![第307回]
2013.2.1upload
前へ
次へ
ホームページトップへ戻る