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

復活!CP/M ワンボードマイコンでCP/Mを!
CP/MがTK−80互換のワンボードマイコンの上で復活します
ND80ZVとMYCPU80の上でCP/Mが走ります

[第270回]


●CP/M互換DOS搭載Z8S180マイコン仕様書

前回お見せしましたブロック図をもとにして、E−80マイコンの特徴とするところなどを説明していくつもりだったのですが、いざ書こうとしますと、なかなかまとまりません。
そこで。
いっそのこと、Y様との間で合意しました仕様書をそのままお見せしてしまうことにいたしました。
これをお読みいただければ、おおよそのところはご理解いただけることと思います。
結構てんこもりの内容です。
ざっと全体的な仕様をご理解いただいたうえで、さらに詳細に具体的な内容について、説明をすすめていきたいと思います。

                                                               2012.7.5
CP/M互換DOS搭載Z8S180マイコン仕様書+コメント付記版
                                                           (有)中日電工

ハードウェア留意事項
長期間の販売にそなえて安定供給される部品を利用する。
初期は完成品で販売するが将来のキット化も考慮して自作しやすい基板デザインにする。
組立キットの時に組み立て易くするために、プリント基板のシルク印刷に「IC番号」だけでなく、IC名称も併記することを検討する。CPUやPPIなどの主要LSIには、IC名称だけでなく「CPU」、「PPI」などの機能名称も記載することを検討する。
I/Oバスコネクタ、アドレスバスコネクタ、PPIコネクタ、フロントパネルIFコネクタなどの実装個数が増えるのでコネクタ番号だけでなく、誤接続防止のためにコネクタの機能名称を見やすく記載することを検討する。

動作モード
以下の3種類の動作モードを設ける

モード1 コンソールパネルモード フルRAM
モード2 BASIC+モニタモード IPL+フルRAM
モード3 CP/M互換モード IPL+フルRAM

モード1
フルRAMモードでコンソールパネルからの書き込み、読み出しで操作する。

モード2
IPLを書き込んだROMにより起動して、ターミナルPCからモニタや、BASICをロードして、マイコン的に利用するモード。
ND80ZVに付属しているモニタ、BASICなどのソフトツールをフルRAM構成に変更して移植する。
コンソールパネルとIPLによるブートとするので、ND80ZVにあるTK−80機能(16進キーと16進表示)は実装しない。
ND80ZVと同様にUSB接続のWindowsPCをコンソールとして利用する。
IPLを除くソフトはROMではなくファイルベースで提供するので、サポートやバージョンアップで機能追加などをダウンロードで行う。

モード3
CP/M互換モードで動作させるモード。
モード3は、モード2で起動してからCP/M互換モードを再起動する方法も考えられる。
モード3は、起動時のみIPLがアクティブになり、CP/M起動後は、IPLは隠れてフルRAM状態になる。

動作モード切替スイッチ
リアパネルの4Pディップスイッチによって切り換える(CPUクロック切り換えと同じスイッチを使用)。

00xx コンソールパネルモード フルRAM
01xx BASIC+モニタモード IPL+フルRAM
11xx CP/M互換モード IPL+フルRAM

CPU速度切り替え
リアパネルの4Pディップスイッチによって切り換える(動作モード切り換えと同じスイッチを使用)。

xx00 2MHz
xx01 4MHz
xx11 10MHz

仮想FDDについて
CP/M互換モードでは、Windowsパソコンのハードディスクに設けた仮想FDDを使用する。
[注記]仮想FDDは、CP/M互換モード以外では使用できない。

RTCの実装
RTCを実装して、アセンブラやBASICなどのアプリからカレンダーや時刻を読み出すことができるようにする。

セントロニクスプリンターインターフェイス
昔のアプリのライン印字に対応するためにセントロニクス仕様のプリンターインターフェイスを実装する。
対応プリンタは、唯一セントロニクス規格に準拠しているセイコーインスツルメンツ社の小型サーマルプリンターを標準プリンタとする。
CP/Mアプリ(各種プログラミング言語)からセントロニクス規格プリンタへ印刷出力できるよう検討する。
[2012.12.18注記]まだセントロニクス規格の普通紙プリンタが売られていることがわかったので、それによって接続動作確認をすることになった([第244回]参照)。[注記ここまで]

82C55を4個実装
DAコンバーターやADコンバーターの接続、メカトロニクス制御などの実験を行えるように周辺機器用に82C55を4個実装する。
82C55 1個単位(8bit X3ポート)で、フラットケーブル用コネクタ(26PIN)を基板に実装する。
各82C55は、PPI-0、PPI-1、PPI-2、PPI-3と呼称する。

カウンターの実装
割り込みを利用した、リアルタイムアプリ、リアルタイムOS、マルチタスクの実験を行うときにプログラム制御ができるカウンターがあると便利。
音楽演奏時もCPUクロック依存ではない方法で演奏テンポの制御ができる。
割り込み機能を利用するためのカウンターの実装を検討する。→Z8S180の採用

RS−232Cインターフェイス
RS−232Cインターフェイスを装備する。 →Z8S180の採用
Z8S180内蔵の2CHのSIOのうち1CHをMIDIに、もう1CHを232Cに割り当てる。
RS−232Cインターフェイスには、モデム制御信号があるSCIチャネル0を割当て、モデム制御信号(CTS,RTS,DCD)をDサブ9ピン端子に接続することを検討する。
これは一部のRS−232C仕様の周辺機器でモデム制御信号を必要とするものにも対応できるようにするためである。

MIDI
シンセ楽器等の制御用にMIDIを装備する。
RS−232の送受信をそのまま利用できる。
通信速度は31250Bps。
MIDI OUTと、MIDI INを実装する。
MIDI THRUは不用。
中日電工はハード回路のみを担当する。
MIDIソフトウェアは担当しない。
MIDIインターフェイスには、モデム制御信号が無いSCIチャネル1を割り当てることを検討する。
[2012.12.18注記]その後の検討で本仕様ではZ8S180内蔵のSCIが31250bpsに対応できないことがわかったので、この部分はPICを使うことになった。[注記ここまで]

Z8S180
カウンタ、232C機能を実装するため、CPUはCTC、SIO内蔵のZ8S180(10MHz、68pinPLCC)を使う。
組立キットでの供給も考えて、ハンダ付けが容易な68pinPLCCソケットを使う。
SIOを使えば比較的高速な通信速度31250bpsというMIDIの通信速度にも対応しやすい。
CTCにより正確な音楽演奏テンポを実現できる。

メモリ(RAM)
512K×8bitチップを使う。
DIP変換用小基板を作成して、それに実装したものをモジュールとして使う。

IPL
USB制御のためにND80ZVと同様にPIC18F14K50を使う。
IPLはPIC18F14K50にデータとして書き込んでおいて、起動時にRAMにDMA転送する。
ROM回路は搭載しない。

拡張バス(メモリバス)
Z8S180は1MBのメモリ空間をアクセスできる。
本機に実装するメモリ(RAM)は512KBなので、残り512KBの拡張ができるように、外部バスコネクタにそのためのアドレス信号を配置する。
基板面積が許せば512K増設用のICソケットも配置する。
実用的には、メインメモリの拡張よりビデオメモリや、新しいアイディアの周辺機器などの方が楽しめると思う。
コストと手間が許せば、メインメモリ拡張と外部バス拡張を選択できるようにすると贅沢な仕様になる。

拡張バス(I/Oバス)
I/Oバスについては、CPUボードで利用していないI/Oアドレス空間をユーザーが利用できるので、ユーザーがインターフェイスボードを増設できるようにI/Oバス拡張コネクタを設ける。
カードエッジコネクタは利用せずに、フラットケーブル+ピンコネクタを使う。

拡張バスコネクタ
バスコネクタはI/O用をメインに考えてND80ZV同様D0-D7,A0-A7と電源、制御ラインという構成で26pinに配置する。
別途メモリ拡張用にA8-A19、制御線の構成で26pinに配置する。

増設用バス
増設を考慮して、内部回路はアドレスフルデコードする。
増設基板にもバス信号部分にHCを使うのならば、2枚や3枚は問題ないと思う。
ただしケーブル線長が長くなる場合には誤動作しないための対策が別途必要になるかも知れない。
メイン基板と増設基板の距離は最大でも10センチ程度である。
当初はIOバスとアドレスバスで接続するのは、プラグインシャーシAとBに実装する基板のみで、ケース外にバス信号線は引き出さない予定だったが、将来VRAMボードなどを増設することを考えると、外部に最大40cm程度バスコネクタケーブルを引き出す可能性がある。
VRAMボード等を格納する外部拡張ラックにはユーロラック規格の増設ラックを用意する予定。

ケース内部拡張ボード
ケース内部拡張ボードは、マイコンメイン基板の横にプラグインシャーシの形で2枚を装着できるようにする。
マイコンメイン基板からフラットケーブルで拡張ボードに接続する。
拡張ボードへの接続は、拡張バスとPPIが利用できる。
ケース内部拡張ボードの基板サイズは100mmX160mmが標準サイズとなる。

パワーオンリセット
パワーオンリセット回路は搭載するが、コンソール入力モードでは電源入力後はフリーラン状態になる。
IPLモードでは、Windowsパソコンとの接続が完了するまで、スタンバイ状態になる。
特にLED表示等は行わないがアドレスLED、データLEDの表示によって受信スタンバイの動作中であることの判断はできる。

スピーカー回路
ND80ZVと同様のブザー回路を設け3.5Φジャックで外部にスピーカーを接続することができるようにするとともに、ケース内に小型のダイナミックスピーカ(直径5cm 0.2Wクラス)を内部スピーカーとして実装する。
リアパネル側に実装するスピーカージャックには、ジャックを差し込むとバイパス回路がOFFになる機能が付いている。
通常は、バイパス回路で内部スピーカーに信号が流れて、ジャックを差し込むと外部スピーカーに信号が流れるようにできる。
コネクタ設置スペースを有効利用できるように縦型のジャック を使う。
ステレオ端子はショートしてモノラルで利用する。
メイン基板と内部スピーカーの接続は、メイン基板上のコネクタで取り外し可能にする。(コネクタ仕様は今後決定)

取り付け穴のGND配線
今回はアルミケースに入るので、メイン基板のスペーサー取り付け穴にGND線を配置する。
電源コネクタ近くの取り付け穴にGNDパターンを配して、ネジまわりにレジストがかからないように考える。
ケースリアパネルにはFG(フレームグランド端子)を設ける。

MIDI用DINコネクタ
基板取り付け用の標準DIN5ピンコネクタは、DINプラグを抜き差しするとき、基板にダメージが加わるぐらいの強い力でないと抜き差しできないことが解った。
プラグの抜き差しには、金属パネル取り付けコネクタでないと持たないぐらい強い力が必要。
そこで、MIDI規格ではないが、軽く抜き差しできるミニDINの5ピンを基板に実装して、ミニDINオス−標準DINメスコネクタという変換ケーブルを用意してMIDIの規格を満足させることにした。
マウスやPS-2キーボードのコネクタと同じミニDINだが、前者は6ピンで、MIDIは5ピンなので誤挿入は無いと思う。
ミニDIN5ピンオス−標準DIN5ピンメス変換ケーブルはYが用意する。

コネクタ
プリンタ用 D-SUB 25pin メス 基板取り付けタイプ インチネジ
RS−232C用 D-SUB 9pin メス 基板取り付けタイプ インチネジ
USBコネクタ Bタイプメス 基板取り付けタイプ
スピーカー用コネクタ 3.5mm ステレオ 基板取り付けタイプ (内部スピーカー回路との自動切り替え回路あり)
MIDI用 ミニDINコネクタ 5pinメスソケット 基板取り付けタイプ
フラットケーブルコネクタ 26pin ストレートタイプ
フラットケーブルコネクタ 26pin Lアングルタイプ (リアパネル用)
内部スピーカー(ケース取り付け)用コネクタ(コネクタ仕様は今後検討)

ケースの大きさ
横幅430mm
奥行き230mm
高さ126mm

メイン基板の大きさ
310mm X 145mmを予定。
基板エッジ(短辺)にはPPI-2とPPI-3のみを配置。
バスコネクタはその内側に置く。
奥行きに余裕ができたので、145mmに30mmから40mm追加してフロントパネル制御回路を含めるという選択もできる。
基板の取り寸から計算すると145mmの上は180mmになる。

コンソールパネル
IMSAI8080のようなコンソールパネルを装備する。
コンソールパネル基板はCPU基板と別基板にする。

メインボードとコンソールパネル基板との接続
マイコンメインボードと、コンソールパネル制御基板とはフラットケーブルで接続する。
PPIやバスと同じ26pinストレートコネクタを使う。
フロントパネル基板のコネクタは裏側に取り付ける。
制御する信号線数が多いので、26pinフラットケーブルを2本利用する(予定)。

コンソールパネル制御基板のサイズ
コンソールパネル制御基板サイズは最大412mm X 100mm。

コンソールパネル回路
コンソールパネル回路はIMSAI8080の回路を参考にする。
CPUのプログラムカウンタにコンソールパネルスイッチのアドレスを読み込ませる場合は、JMP命令(11000011)をバスに出力して、その後に、命令サイクルに合わせて、アドレススイッチの下位バイト、アドレススイッチの上位バイトをバスに出力してCPUにコンソールパネルスイッチのアドレスを読み込ませ、その後、WAIT状態にする。
インクリメントする場合はNOP命令を(00000000)をデータバスに出力して、その後WAIT状態にする。
コンソールパネルから入出力するアドレススイッチは16bit(=16個のスイッチ)とする。
ただし、アドレスバスのLED表示は、MMUの動作確認にために最上位4bitの表示も必要。

動作モードLED表示
コンソールパネルの3色LEDで動作モードを表示する

コンソールパネルモード フルRAM    赤色
BASIC+モニタモード IPL+フルRAM  緑色
CP/M互換モード IPL+フルRAM    青色
この3色LEDは、ピンが4本一列に並んでいる。
直径5mm、ピン間は1.27mm。
カソードコモン1本とRGBで各1本の合計4本。
[注意]3色LEDは輝度が高めなので電流制限抵抗の値を高くして電流を少なくして輝度を低下させる。
各色で輝度が異なるので色ごとに明るさを調整して同じ輝度にする。(特に緑の輝度が高い)

CPU速度LED表示
コンソールパネルの3色LEDでCPU速度を表示する。

2Mhz  赤色
4Mhz  緑色
10Mhz 青色
[注意]3色LEDは輝度が高めなので電流制限抵抗の値を高くして電流を少なくして輝度を低下させる。
各色で輝度が異なるので色ごとに明るさを調整して同じ輝度にする。(特に緑の輝度が高い)

仮想FDDアクセスLED
コンソールパネルに仮想FDDのアクセス状況を表示するLEDを設ける。
拡散型LED赤色を使用する。直視しても眩しくないよう輝度を調整する。
[2012.12.18注記]その後青色を使用することになった。[注記ここまで]

フロントパネルのステイタス表示項目
フロントパネルのステイタス表示項目はIMSAI8080互換にする必要性はない。
とりあえずの案として、左側の表示は
MEMRD MEMWR IORD IOWR M1 HOLT
右部分の表示は、WAIT RUN POWER
拡散型LED緑色を使用する。直視しても眩しくないよう輝度を調整する。

コンソールパネルからのデータの読み込み
IN A,(FF)で、アドレススイッチの上位8bitのON・OFFのビットパターンを読み込めるようにする。

コンソールパネルからのデータの出力表示
OUT (FF),Aで出力したビットパターンをラッチして、コンソールパネルの専用LED8個に表示する。
拡散型LEDを使用する。上位4bitが青色、下位4bitが赤色。直視しても眩しくないよう輝度を調整する。

アドレスの自動インクリメント
書き込読み出し時はアドレスの自動インクリメント機能を利用できるようにする。

STEP
STEP入力でシングルステップ動作を行う場合は、先にSTOP操作で停止させる。
その後、STEP入力でシングルステップ動作を実施する。
シングルステップ動作は命令単位ではなく、マシンサイクルごとに行う。
8000 3E00
8002 D380
8004 C30081
の場合
命令毎 8000 8002 8004
マシンサイクル毎 8000 8001 8002 8003 8004 8005 8006

STOP
実行中にSTOP入力を行うと2バイト、3バイト命令では、命令の先頭アドレスで停止する。
STOP状況でEXAMINE(および-NEXT),DEPOSIT(および-NEXT)操作が行える。
日本人ユーザーに理解し易いように、EXAMINEは「READ」、EXAMINE-NEXTは「READ−NEXT」、DEPOSITは、
「WRITE」、DEPOSIT-NEXTは、「WRITE−NEXT」に呼称を変更する。

RUN実行中に有効なスイッチ
RUN中に有効なスイッチは STOP と RESET と電源スイッチだけである。

リセットスイッチ
リセットは(CPUの)内部リセットとメモリやUARTなど用の外部機器に対するリセットがある。
内部リセットは、「CPU RESET」、外部リセットは「SYSTEM RESET」と表記する。

SLOWモード
STEPスイッチを利用したスロー実行モードを追加する。
押し下げをSTEPスイッチとして、押し上げで「SLOW」として、スロー実行モードで1秒間に2ステップ程度の速度で自動的にステップ動作するように考える。
スロー実行の停止はストップスイッチで行う。

コンソールパネルLEDの実装
コンソールパネル制御基板に配置したLEDは、高さ15ミリ程度のLEDスペーサーを台座にしてフロントパネル前面に発光面を貫通させる方法を想定している。

コンソールパネルスイッチの実装
スイッチは、後ろの端子部分を基板に直接ハンダ付けする方法を想定している。
(一部省略)

コンソールパネルの組立て
コンソールパネルと制御基板の間にスイッチを固定するサブパネルを設ける。
スイッチは、このサブパネルにネジ止めで固定する。
基板固定スペーサー、サブパネル固定スペーサーは、DOS/V機でマザーボードをケースに固定するのと同様なオスメスネジ付き六角スペーサーを利用する。(ISOネジ) (貫通型スペーサーでは組立作業が出来ない)

1.制御基板にLEDとスイッチ以外の部品を実装する。
2.スイッチをサブパネルにネジ止めする。
3.サブパネルを基板固定用オスメスネジ付き六角スペーサーで制御基板に固定する。
4.スイッチ端子を制御基板にハンダ付けする。
5.LEDにLEDスペーサーを取り付けて制御基板にハンダ付けする。
6.サブパネル固定用オスメスネジ付き六角スペーサーと、基板固定用オスメスネジ付き六角スペーサーを利用して制御基板をコンソールパネルにネジ止めする。
オスメスネジ付き六角スペーサーは、1mm単位で長さが調整できるので、実際に組み立ててみて制御基板にストレスが加わらないように調整する。
LEDの形状によりLEDスペーサーの長さも1mm単位で調整できる。

消費電流について
メイン基板の消費電流は500mA程度(予想)。
ケース内部に格納するプラグインシャーシには、実験用ユニバーサル基板等を組み込んで、PPIや、I/Oバスで接続する。
プラグインシャーシの電源は、メイン基板からプラグインシャーシ1個あたり最大200mAの5V電源を供給する。
プラグインシャーシは2個なので最大400mAになる。
また、リアパネルに接続するPPIコネクタにも、1コネクタあたり、最大200mAの5V電源を供給する。
最大時にはメイン基板の500mAにプラスして、200mA X4回路 合計 1300mAの電流が電源ラインに流れる。
これらの最大電流を考慮した電源コネクタから電源スイッチ周りの接続案を考える。

電源の基板内配線について
配線幅を基板メーカーに確認した。
通常基板銅厚0.035mmの場合、長さにもよるが、たとえば30cm程度の線長で一般的には線幅1mmあたり1Aを基準に設計する(実際の許容値は2A程度)。
今回の場合は2mm幅でよいと考えられる。
ちなみにND80ZVではGND2mm、Vcc1.5mmである。
今回のメイン基板ではGND、Vccとも3-4mm程度を考えている。

フラットケーブルの電流容量
フラットケーブルは規格AWG28で許容値1A。
したがって1pあたり0.5Aを目安にして電源線には複数本を割り当てるように考える。
PPI用にはGND、Vcc各1本で十分である。

CP/Mリスタート
CP/M互換OSを動かすときは、コールドスタート時はIPL起動だが、アボートなどでリセットしたときは、ホットスタート(ウォームスタート)になり、IPL起動ではなくRAM上のBIOSによるリスタートになる。

RESETスイッチとSYSTEM RESETスイッチの利用
RESETスイッチはCPUリセットのみの「ホットスタート」専用とする。
IPLブートは行わず、CP/M互換OSを「ホットスタート」する。

「EXT CLR」は、「SYSTEM RESET」に名称変更して、CPUを含むシステム全体をリセットする「コールドスタート」専用とする。 周辺機器82C55などを含んで全てリセットして、IPLブートを開始する。
電源投入時は、パワーオン「SYSTEM RESET」を行う。
拡張バスにも「RESET」と「SYSTEM RESET」の信号線を設ける。

BASIC関数DATE$,TIME$
N88BASIC仕様のDATE$,TIME$関数を用意する。

BEEP
スピーカーからBEEP音を出力できるようにBASICにBEEP機能を付加する。

LPRINT、LLIST
BASICの機能として本機側プリンタへ印字する「LPRINT」、本機側プリンタでプログラムリストを印字できる「LLIST」を用意する。


説明書
Z8S180については、基本の仕様説明だけとする。
(一部省略)

アセンブラ、逆アセンブラ
ND80ZVに付属するアセンブラ、逆アセンブラなどのクロス開発環境を提供する。
アセンブラは8080用およびZ80用がある。
逆アセンブラはZ80のみで8080用はない。
アセンブラ、逆アセンブラはZ8S180の拡張命令には対応しない。
アセンブラのDBを使えばコード作成は可能。
[注記]Z8S180の拡張命令についてはセカンドバージョンにて対応を検討する。
本機の「アセンブラ プログラミングマニュアル」は、ND80ZVの説明書を参考にしてYが作成する。

システム自己診断機能
簡易なメモリテストと、4個実装したPPIの生存確認、コンソールパネルのLED点灯試験などが出来る診断プログラムを搭載する。
「システム自己診断機能」は終了処理を行わないかぎり診断プログラムを連続実行する仕様とする。
メモリエラーなどの何らかのエラーを検出した場合は、コンソールにエラー内容を出力して、診断プログラムを連続実行する。
エラーが無い場合は、ノーエラーのパス回数をコンソールに表示する。
本機の出荷検査時に24時間のエージングテストなどを行うことを検討している。
基板の完了検査用になんらかのテストプログラムは必要なので、可能な範囲で今回の仕様として搭載する。
セカンドバージョンにて機能追加等を検討する。

セカンドバージョン以後での仕様案
(省略)

ワンボードマイコンでCP/Mを![第270回]
2012.12.17upload
2012.12.18注記

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