SSブログ

Z80基板動作確認(2) [Z80]

Z80の続きです。

Z80SIOを使ったTinyBasicを拝借させてもらった古典電脳伝説の著者さんのブログで「電脳伝説」というのがあって、GranzBasicなるものを動かしていらっしゃるのでまたまた倣ってみました。
GranzBasicは、こんなおもちゃにはもったいないぐらいなものです。
せっかくというわけでもないが、少々手をいれてみた。

(1)アドレス配置を多少変更する
(2)送受信とも割り込みで処理する

(1)はまぁ、個人的な好みの問題にすぎないが、メイン処理、共通ルーチン、ドライバ関連をそれぞれまとめてマッピングを分ける。という事を完全ではないが少しだけ修正。
コードとデータは分離するというのもあるが、これもほんの少しだけ。三角関数のテーブル等細々あって全部やるのは手間暇かかるため。
関連するデータがコードのすぐそばにあると、エディタの1画面内に収まったりしてみやすいとか、相対アドレッシングを使用しているので近くにないとダメとか、そういった理由だろうが個人的にはなるべくわけたい。
あとは、8080系は最初の256バイトがベクタエリアでもあるし、CP/M等特別な領域として使われることが多々あるので、そこにコードを入れるのはなるべく避ける。

(2)は昔の遅い8bitのシングルタスクのシステムで送信を割り込みで行う意味はあまりないかもしれないが、これもまぁ趣味みたいなもの。
同時にリングバッファの処理をなるべく簡略化したいので送受信ともバッファを256バイトにする。
これでメモリをフルに使うようなプログラムを書くことはまずないだろうから、バッファを大きくとっても問題なし。
あとはバッファの配置を256バイト境界にしておけばベース+オフセットの計算をすることなく、ベースの上位バイトをHに、Lにオフセットを入れればすむので簡単。

送信割り込みに関してだが、
送信割り込みを使ったシリアル送信のポイントは通常時は送信割り込み禁止、送信開始時に許可して送信完了で送信割り込み禁止に戻すというのが普通(?)だと思うが、実際Z80SIOのデータシートをみるとトランスミッタバッファエンプティ時に割り込みがかかるとなっていて、つまりエンプティになった時に割り込みがかかるエッジ判定ではない。
これは多くのシリアルIC、あるいはマイコン内蔵シリアルがそうなっているような気がするが、MC6801がエンプティになった時に、とエッジ判定となっている。
割り込みがレベル判定なので

・送信データがなかろうとエンプティフラグがたっているので送信割り込みがかかる
    ↓
・送信データがないので何もせず割り込みを抜ける
    ↓
・エンプティフラグがたったままなのですぐに送信割り込みがかかる

と延々繰り返す事になり通常動作に入らなくなると思われる。
でいつもやっているように、つまり

・送信バッファに送信待ちデータがなくSIOも送信バッファエンプティなら
 SIOに直接データを書き込み送信割り込みを許可する
・送信割り込みがかかったが送信待ちデータがなければ送信割り込みを禁止にする

と組んでみて動作確認もしたのだが
Z80SIOには「保留中の送信割り込みをリセットする」という機能があって、なんのこっちゃ??と思っていたが後でそういうことか!?と気付いて、

・常に送信割り込み許可にしておく
・送信割り込みがかかり送信データがなければ「保留中の送信割り込みリセット」

に変更してみたがこちらで問題なかった。
データシートの説明は時々???となる言葉や表現がよくあり、特に海外のものは日本語訳が???だったりするし、Z80SIOのような高機能なものは文の量も多く解読に時間がかかってしまうことも多々ある。読解力がないだけかもしれないが(笑)

動作検証として、これまたasciiart.basをそのまま使わせてもらいました。

asciiart_screenshot.png

問題なく動作していると思われる。

一応、Z80ボードは修正なくほぼフィクスなので回路図です。

Z80CPU-Board.jpg

PICには3.3Vの電源出力があって何もせず解放ピンにしているが、データシートにはパスコンつけろ的な事書いてあるので再度基板つくる事があれば追加するかな?
USB給電なのでPCとつなげば即立ち上がります。
PC側の接続認証に多少時間がかかるので、ものによってはブートメッセージが表示されない事があります。
ねんのためスマフォのACアダプタ(micro-Bタイプ)が使えるようにしている。ただし自動認証ではなくジャンパ切替。
今時は2.1ΦジャックのACアダプタよりこっちの方が手に入れやすいと思われるので。
ただ、今後はType-Cが主流になるのかな?Type-Cの給電専用コネクタはまだみたことないが。

メモリボードの回路図はこれです。

memory-board.jpg

色々想定を盛り込みすぎていて

・ストローブとして80系はMREQ、68系はEを想定していて論理が逆なので切替
・アドレスの下位ROM上位RAM(主に80系)、下位RAM上位ROM(主に68系)の切替
・ROM側をRAMと切替て全RAM可能なように

それぞれジャンパで切り替えられるようにしている。
それぞれの基板をおこしてもよかったのかもしれないが…
全RAMは先を考えてで、ようするに別の手段でCPUリセット中あるいはHALT中にブートローダをRAMに仕込んで、というやつです。
UV-EPROMは消去に手間暇がかかるので。
ただ、その仕込みはもっと時間がかかるので本当にするかどうかは…
nice!(0)  コメント(0) 
共通テーマ:趣味・カルチャー

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

Z80基板動作確認Z80でGUPPYボード ブログトップ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。