2021年 あけましておめでとうございます。今年も電子工作的に自分が気が向いたことを、ぼちぼちと試してBLOGに残していこうと思います。
さて…..Tom’s SBCというGrantさんのCP/Mマイコンと似たシステムがあるようで、FuzixというZ80などのCPUに対応したOSが対応してるみたいです。KZ80-ZilogIOと手持ちの各種基板を組み合わせたら作れそう。ちょっと検討してみます….
Fuzixの情報
Fuzixという名前のOSは、たまにTwitterなどでも見かけてはいたのですが、いかんせん日本語情報がなかなかありません。英語の不得意な私には厳しい状況です。なにやらUNIXライクOSらしいのですが…
そんななか、電子ブロック工房さんのところでTom’s SBCというマイコン用のFuzixのブートROMやCFカードイメージでブートすることに成功されています。スクリーンショットも掲載されていてFuzixの動作イメージがわかりやすくなっています。素晴らしい。
FZ/KM web の紹介:Fuzixをwebアプリケーションで実行
Fuzix公式のサイトとしては、以下のgithubや公式サイトがあります。
公式サイトの「Bootable Image」にTom’s SBCというマイコン用の64kバイトROMと128M CFカード用イメージが載ってます。”SBC”というからにはKZ80マイコンでも行けそうじゃん?というところがとっかかりです。
githubの説明にも書いてますが、以下のシステム要件みたいです。ブートROMとしてはバンクROMが必要でRAMは64k(システム32k、ユーザーー32k)ということでした。
What does UZI have over FUZIX
FuzixOS: Because Small Is Beautiful
Can run in 64K of RAM (32K kernel/32K user). FUZIX would need banked ROM or similar to pull this off. If you have banked ROM then our kernel footprint in RAM is about 8K plus userspace plus any framebuffers and similar overhead. On a 6809 it’s just about possible to run in a straight 64K
Tom’s SBCの仕様
Tom’sSBCの仕様ですが、電子ブロック工房さんのサイトからもリンクされている以下のサイトに回路図などがありますので、そちらを参考にしたいと思います。
- CPUはZ80
- I/Oポートとしては以下の通り
- Z80 SIO : $00-17
- CFカード : $10-17
- メモリー制御 : $38-3F
- ROMは$0000-$3FFFの16kB。
- メモリー制御の$3E、$3FでA14、A15アドレス信号を制御しているので64kバイト ROMを16kBごとに4バンク使える
- RAMは64kB装備
- ブート時は$4000-$FFFFまでがRAMだが、メモリー制御の$38へHレベル($01)を出力すると64kバイトフルRAM構成となる。
メモリー制御の部分が若干拡張されていますが、以前 KZ80-CF(CFカードアダプタ)や KZ80-ZilogI/Oボードを作ったときに参考にさせていただいた、以下のGrantさんのCP/Mマイコンに準拠しています。
GrantさんのCP/Mマイコンだとメモリー制御はROMを無効化してフルRAM(64kバイト)にする部分だけでしたが、そこを74ALS259(8ビットアドレス可能ラッチ)を使って拡張しているようでした。
74ALS259(8-bit Addreable Latch)の動き
74ALS259(または74HC259)は手持ちにありませんでしたので、データシートを見てみました。概要はこんな感じ。
TC74HC259データシート
ここの説明だけだとわかりずらいので、論理図と真理値表も見てますと….
TC74HC259データシート
上記のようなものであるらしく、A、B、Cの3つの信号線にアドレスを入力。それに対応したQn(n:0~7)の信号線についてDATA-IN端子の信号をラッチするというもののようです。ちなみにCLR信号線がLレベルになるとQn(n:0~7)の信号線は全部Lに落ちます。
出力信号線1本づつの状態をON/OFF制御できる便利ICなんですね。持ってないですけど。
Tom’s SBCのメモリー制御
GrantさんのCP/Mマイコンでは74LS00(NANDゲート)x2個のRSフリップフロップで1ビット分の情報を保持してそこをON/OFFすることでROM+RAM構成とフルRAM構成を切り替えていました。
そこに加えて、Tom’s SBCでは 搭載ROMを64kバイトにして16kバイトずつ(つまりアドレスバスとしてはA0~A13)分のバンクROMとして使うために、残りのA14、A15信号線を74ALS259(8-bit Addreable Latch)を使って制御しています。
I/Oアドレスの$3E番地でA15アドレス信号、$3F番地でA14アドレス信号を制御している感じです。電源投入時のリセット信号をCLR端子へ入れてますので、初期状態ではどちらもLレベルとなりブートROMの$0000-3FFFの16kバイトが使われます。
Tom’s SBC回路図
KZ80マイコンで足りない回路の検討
KZ80マイコンでは、基本的な回路はGrantさんのマイコンをベースにしたのですが、アドレスデコードとかROM/RAMバンク切り替えの回路が違います。
その部分を外付け回路として作れないものかと回路図を引いてみました。ただし、手持ちに74ALS259(8-bit Addressable Latch)が無いので、74LS138とか74LS74とかで作れないかなと検討した結果が以下の回路であります。
まだ未検証ですが(すいません) 74ALS259相当部分は、クロックパルスとして 74LS138でアドレスデコードした信号を74LS04で反転しそれぞれの信号を74LS74へ投入。ラッチするデータとしてはTom’s SBCにならってD0信号線。ROM/RAM切り替えの制御はGrantさんのCP/MマイコンやTom’s SBCにならって74LS32が2つの回路で生成して….ということで動かないかなぁと考えました。
信号の制御がちゃんとできているかの確認のためにLEDもあるといいよねと思って追加回路をつけたりしているわけですが、当初は2SC1815で組んでみた回路を、先日秋月電子で買ったトランジスタアレイ(シンクドライバ)も「使ってみたかった」という理由で入れてみていたりします。
買ったのは以下のTD62003APGですが、KiCADのシンボルにあったのはピン互換?のULN2003Aだったのでそちらにしています。TD62004APGはディスコンみたいですし、ULN2003Aの方が安いので今後はそちらの方が良さげです。
ここまで作ってみて、まぁ…..素直に74ALS259とか74HC259を調達してシンプルな回路にした方がいいよねと思い始めている2021年のお正月なのであります。
…..というわけで、この検討はつづくのであります。
コメント