マイコン独立大作戦
CRT/VGAIF+KEYIF+SDCARDIFボードの製作
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
WindowsパソコンにUSB接続して使う現行方式はそれなりに便利ではありますが、ときとしてWindows
のしがらみから開放されて、小さいながらも独立した一個のパソコンとして機能したいと思うこともあります。
昔はそれが普通のことだったのですが、安価なCRTディスプレイが生産中止となって久しい今日ではそれ
は叶わぬことと諦めていたのですが…。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
[総合第76回]
●独立版ZB3DOSの機能UPです
ここ一週間ほど独立版ZB3DOS(CP/M互換DOS)システムの機能UPに取り組んでいました。
きっかけはお客様からいただいたご質問とご要望にありました。
「独立版のZB3DOS(CP/M互換DOS)のCOPYコマンドは32KB以上のファイルには対応していないのですか?エラーになってしまってコピーできないようなのですが。」
実はその通りでした。
以前から説明しておりますように独立版SDカードのファイルシステムはWindows互換のFAT16システムがベースになっています。
ですけれどZB3DOSとしてのファイルシステムはCP/M互換を維持するために、CP/Mのファイルシステムのままという面倒な構成になっています。
具体的に簡単に説明しますと、CP/Mの1セクタは128バイトで、16セクタごとにブロックという単位でファイルシステムを構成しています。
これに対してFAT16システムの1セクタは512バイトで、64セクタごとにクラスタという単位でファイルシステムを構成しています。
CP/Mがファイルに対してREAD/WRITEするとき1セクタ単位で128バイトのデータを読み書きするのですが、独立型SDカードシステムでは128バイト単位では読み書きできません。
FAT16システムがベースにありますからどうしても一度に512バイトの読み書きをすることになります。
READはまだ良いとしてもWRITEはちょっと面倒な工夫が必要になります。
それよりもさらにやっかいな問題はクラスタベースのファイル管理です。
A〜Dの仮想ディスクドライブはCP/Mのファイルシステムをそのまま使えるように各ドライブごとに2MBのサイズのエリアを連続して確保していますから、とりあえずFAT16のクラスタについて考える必要はありません。
問題はZドライブです。
ZドライブはWindows側からもCP/Mの側からもアクセスできるように、基本的な構造としてはFAT16そのままの形になっています。
WindowsからはZディレクトリとして普通にアクセスできます。
ZB3DOS(CP/M互換DOS)は起動時にZディレクトリのファイル名情報を読み取って仮想のZドライブを作成します。
CP/MでZドライブのファイルにアクセスするときは、仮想Zドライブを通してその外側にあるFAT16のZディレクトリにアクセスすることになります。
そういう構造にせざるを得なかったなかで、FAT16におけるクラスタ単位のファイル管理をどうするか、というのは頭の痛い問題でした。
上でも説明しましたように1クラスタは64セクタで構成されます。
1セクタは512バイトですから1クラスタは32KBです。
サイズが32KB以内のファイルならば1クラスタに収まります。
その場合には仮想Zドライブのファイル名エリアにクラスタb焜Rピーしておけば、比較的楽にファイルデータ本体にアクセスが可能です。
しかしそれが32KBを越えるファイルだとしたら…?
その次のクラスタにアクセスするために、どうしてもFAT16のクラスタマップにしたがってアクセスしなければならなくなります。
ファイルREADはまだよいとしても、ファイルWRITEは大変です。
次の空きクラスタを求めてクラスタマップのサーチをしなければなりません。
当然システムは肥大化してしまいますし、そもそもそんなところに首をつっこんでしまったら、できるものもできなくなってしまいます。
幸か不幸かZB3BASICのユーザーエリアはアドレス8000から後ろですからどうがんばったって32KB以上のサイズは扱えません。
裏RAMを使ったROMの作成作業でも0000〜7FFFのちょうど32KBです。
問題はCP/Mですが、MBASICもSTARTREKもありがたいことに32KB以下です。
この際、もうその余の事は考えないことにしまして、独立型システムのファイルサイズは32KB以内ということにしてしまいました。
ところが冒頭に書きましたように、お客様からご質問をいただいてしまいました。
さらにお問い合わせをいただいたCP/Mのアプリケーションプログラムのなかには32KBを越えるファイルがあって、さすがにそれを無視できなくなってしまいました。
それはこの次のバージョンアップの際に検討することとして、現行版ではできないということでなんとか了解していただくという選択肢もないわけではありませんが、しかし。
現行版の評価という意味でも、せっかくアプリケーションの情報もいただいておりますのに、それを試してみることもできないというのはいかにも残念なことでありまして。
そういうことになってきますと。
仕方がないじゃありませんか。
結局、32KB以上のファイルも扱えるように機能UPをすることになってしまいました。
そういう次第で一週間あまりを費やしてなんとかできたように思います。
現在念のために動作の確認作業中です。
で。
悩ましいことなのですが、ことはZB3DOSだけにとどまらず、ROMのSDカードアクセスルーチンも直さなければならない、ということになってしまいました。
ZB3DOSだけでしたら、ホームページからダウンロードしていただくということで済むのですけれど、ROMということになりますと、これはまたハンパじゃないのです。
なにしろUSB接続版と独立版の2種類のROMがND80Z3.5(ND80ZV)用とMYCPU80用とND8080用に分かれますから、全部で5個のROMになります。
しかも3種類のマイコンボードの全部をご購入いただているお客様が圧倒的に多いものですから、そういう皆様にはバージョンアップ対応版のROMを都合5個お送りすることになります。
ROM焼きも大変ですけれど宛名書きも大変です。
そもそも手持ちのROMで間に合いますかどうか。
あ。いえ。
これはもう、お金をいただくというわけにもいきませんものですから、ROMも送料も当方持ちの特別サービスです。
多分来週の半ばころからになると思いますが、新しいROMをお送りする予定です。
それが届きましたころにバージョンUP版のZB3DOS(CP/M互換DOS)をホームページにアップロードいたしますので、それをダウンロードしていただいて、いろいろ試していただきますようお願いいたします。
CRT/VGAIF+KEYIF+SDCARDIFボードの製作[総合第76回]
2017.5.27upload
前へ
次へ
ホームページトップへ戻る