top:

HOMEへ戻る
ZBK製品ページへ戻る


メモリマップへ
コネクタ端子接続図へ
82C55のI/Oアドレスへ

ZBKボードの基本構成・特徴

CPUはKL5C8012、RAM128KBmax、ROM128KBmax


予備知識として簡単にボードの構成について説明します。ZBK各ボードは基本部分はすべて共通しています。CPUとして川崎製鉄のKL5C8012を使い、それにRAM62256または628128とROM27C010を実装しています。最大実装時でRAM128KB、ROM128KBです。KL5C8012はRAM、ROM合わせて512KBまでアクセスできるのですが、ZBKボードはシステム設計の都合でRAM、ROMともに128KBmaxとなっています。
出荷時標準仕様ではND80KはRAM32KB(62256)、ROM32KB(27C256)実装、その他のZB10K〜ZB28KはRAM32KB(62256)、ROM128KB(27C010)実装です。

BASICインタプリタ内臓

ここが最大の特徴です。ZB10K〜ZB28KのROMにはBASICインタプリタおよび開発に必要なシステムプログラムがぎっしり入っています。実装されている128KBのROM27C010のうち、48KBを占めています(ND80KはBASICROM別売です)。
ユーザーはCPUがKL5C8012であることを意識することなく、それがZ80であることさえも意識しないでただ簡単なBASICでプログラムを書けばよいのです。
ROMのシステムプログラムは同じROMの後半64KBのエリアにユーザーがBASICプログラムを書き込めば、それを解読実行します。

BASICプログラム開発システム

一方ZBKボードと開発セットを組み合わせてDOS/Vパソコンと接続すれば、パソコンのキーボードとディスプレイ画面を使用して、プログラムの作成、デバッグからROMの書き込みまでが行えます。
開発中はZBKボードのROM内臓プログラムが主として機能し、ボード上のRAM(開発時は628128を実装する)にユーザープログラムを書き込み、必要に応じて更新、実行などを行います。この間DOS/V上のシステムプログラムはキー入力、画面表示など補助的な作業のみ行います。ユーザープログラムの作成、編集時でもそうですしもちろんユーザープログラムの実行、デバッグはZBKボード上のKL5C8012が同じくボード上のROM内のシステムプログラムにしたがって、ボード上のRAMに書かれたユーザプログラムを実行します。
ということは、開発中でもデバッグ中でも、DOS/Vによるエミュレータやシミュレータ動作ではなく、ROM化した場合の実機の動作と同一の動作をDOS/Vを通じて確認することができるのです。

開発中のプログラムの実行ではボート上のI/Oに直接アクセス、結果はDOS/V画面に表示

ユーザーは開発中、デバッグ中のプログラム実行とROM化後のプログラム実行とを区別して考える必要はありません。DOS/Vと接続して(このときはあたかもDOSプロンプト画面中にかってのPC9801のBASIC画面が存在するかのごとき動作になります)、その画面中でプログラムを入力、作成し実行して結果を確認することができます。画面内で実行されたのがZBKボード上のI/Oポートに対するOUT命令であった場合、それはただちにそのI/Oからのデータ出力になります。また同じくI/Oポートからの入力をDOS/V画面に表示するIN命令、PRINT命令であった場合、ボード上のI/Oポートから入力されたデータがDOS/V画面に表示されます。え?え?という感じですがそうなのです。実際に実行しているのはZBKボード上のKL5C8012なのですが、DOS/VのCPUが実行しているように見えます。でもZBKボード上のCPUがボード上のRAM、ROMを使って実行し、結果をDOS/Vに送信して表示しているだけですから、ROM化した場合の単独動作と同じ動作なのです。
ユーザーはDOS/Vを通してRAM上で十分にプログラムデバッグを行なった後、簡単な手続きでそれをROM化すれば、それだけで開発作業はすべて完了です。作成したROMをZBKボードに実装し、DOS/Vと切り離せば、デバッグ中のRAMでのプログラムと全く同じ動作をROMで実行させることができます。

ROM実行時のデータ表示

ところでDOS/Vと切り離してROMでの単独実行の場合、DOS/V画面に対する表示命令(PRINT文)はどうなってしまうのでしょうか?
単独実行時は、PRINT文は無視され、実行に影響は与えません(厳密にはDOS/Vとの通信がなくなる分だけ速く実行されます)。
別売の20字×2行のLCD表示器を接続した場合には、PRINT文はLCD表示器に対して行なわれます。

マシン語サブルーチンのROM化も可能

BASICについて説明してきましたが、どうしてもマシン語でないと処理できないこともあります。BASICプログラムからは簡単にユーザーのマシン語プログラムを呼び出して実行することができます。マシン語プログラムとBASICプログラムとの間でのデータのやりとりはきわめて簡単です。
Z80マシン語プログラムの開発は、開発セットに含まれているZ80クロスアセンブラによってDOS/V上で行ないます。これはBASICと違ってDOS/Vでの作業ですが、アセンブル後のプログラムはバイナリファイルとしてDOS/Vのディスクに保存するとともに、それをBASICを開発するのと同じ環境でZBKボードのRAMにダウンロードし、BASICと同様にDOS/Vを通じてRAM上でのデバッグが行なえます。
こうしてデバッグを完了したあとはBASICプログラムとともにROMに書きこんで(この手続きは文字通り機械的、簡単に完了します)、ROM化、実行ができます。

標準実装時のメモリマップ

 ZB10K〜ZB28Kは出荷時の標準仕様では、モニタROM(128KB)とRAM(32KB)が実装されていますが(ND80KはROM27C256、RAM62256を実装)、代わりに128KBのRAM、628128を実装することができます。ZBK開発セットを接続するときは628128を実装します。KL5C8012はZ80Aと同様プログラムでアクセスできるメモリアドレスは0000H〜FFFFHの64KBです。27C010、628128を実装した場合にはシステムプログラムによって必要なROM、RAMエリアをメモリバンクを切り替えてアクセスします。
ここでは標準仕様のメモリマップを示します。



 4000H〜FFFFHはRAMになりますが48KBのエリアに32KBのRAMが実装されているため、1部アドレスにイメージが発生します。イメージとは異なるアドレスで同じメモリ位置をアクセスすることをいいます。4000H〜7FFFHとC000H〜FFFFHは異なるアドレスですがどちらのアドレスを指定してもメモリの同じ場所をアクセスします。たとえば4000Hからデータを書き込むとC000Hをアクセスしても同じデータが出て来ます。
 F800H〜FFFFHはシステムワークエリアなのでユーザーがプログラムやデータを書くことはできません。またF800Hから前に向かってユーザー用のスタックエリアが割り当てられるのでF800H近くのアドレスにデータやプログラムを書くと暴走してしまうことがあります。安全のためF000H〜FFFFHをシステムエリアとしてあります。
 F000H〜FFFFHのイメージが7000H〜7FFFHにできるため、このアドレスもユーザーが使うことはできません。
 4000Hからユーザープログラムを書いて、ROMに書き込んで、ユーザーROMで起動した場合には4000H〜7FFFHにはROMが割り当てられるため、イメージはなくなります。

開発セット起動時のメモリマップ

 ZBK開発セットで起動するとブートプログラムが実行されます。そのときのメモリマップは次の通りです。


0000〜03FFがROMで残りはRAMになります。メモリバンクはR0とR3のみが有効です。メモリバンク用レジスタには(04)=00、(05)=F0がセットされます。メモリバンクについては、ZBKボードハードウェア説明書3章7.を参照してください。
 Zコマンドを入力するか、メモリバンク用レジスタ(00)〜(06)を書きかえるまでは、このメモリ構成になっています。 ZコマンドによってZBK−V3BASICが起動すると次のメモリ構成になります。



ROMスタートした場合には次の構成になります。



 2000〜3FFFはシステムがROMの02000〜0FFFFをバンク切り替えによって割り当てて使用します。この部分にユーザーが関与することはできません。
 4000〜7FFFはユーザーのROMプログラムエリア10000〜17FFFが割り当てられ、8000〜DFFFにはRAMのF8000〜FDFFFが割り当てられますが、ユーザープログラムの先頭で、I/Oアドレス (04) に10H〜37Hを出力することでROMとRAMの境界を4400〜E000の範囲で変更することができます。

コネクタ端子接続図







パラレルポート入出力用コネクタ(1)、I/O増設用バスコネクタ、82C55用コネクタは共に26Pフラットケーブルコネクタになっています。
接続用フラットケーブルも別売しています。ケーブル長は10cm単位で指定できます(30円/10cm)。コネクタ片側のみ圧着(片側切り離し)(200円)。両側コネクタ(400円)。(価格はすべて税別)
必要な価格はケーブル+コネクタになります(+消費税)。例)長さ50cm片コネクタ 30×5+200=350円(税込378円)

82C55のI/Oアドレス

 82C55には入力、出力どちらでも指定できる8ビットのI/Oポートが3組あります。これらはAポート、Bポート、Cポートとよんでおり、それぞれ異なったアドレスによって選択されます。
ZB21K〜ZB28K、ND80Kに実装されている82C55には次のアドレスが与えられています。
  80H Aポート
  81H Bポート
  82H Cポート
  83H コントロールワード
このコントロールワードは、各ポートの向き(入力か出力か)を設定したり、Cポートに対する特殊なアクセスの場合に使います。ボードによっては82C55を2〜4個実装しているものがあります。その場合の2〜4番目の82C55のアドレスは次の通りです。
[2番目の82C55]
  84H Aポート
  85H Bポート
  86H Cポート
  87H コントロールワード
[3番目の82C55]
  88H Aポート
  89H Bポート
  8AH Cポート
  8BH コントロールワード
[4番目の82C55]
  8CH Aポート
  8DH Bポート
  8EH Cポート
  8FH コントロールワード

このページのTOPへ戻る
HOMEへ戻る
ZBK製品ページへ戻る
メモリマップへ
コネクタ端子接続図へ