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

マイコン独立大作戦
CRT/VGAIF+KEYIF+SDCARDIFボードの製作

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
WindowsパソコンにUSB接続して使う現行方式はそれなりに便利ではありますが、ときとしてWindows
のしがらみから開放されて、小さいながらも独立した一個のパソコンとして機能したいと思うこともあります。
昔はそれが普通のことだったのですが、安価なCRTディスプレイが生産中止となって久しい今日ではそれ
は叶わぬことと諦めていたのですが…。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

[総合第29回]


●FORMATを改良しました

FORMATコマンドは[第27回]で説明しました。
当初は、先にWindowsでフォーマットしてから、CP/M用に簡易フォーマットするという機能でしたので、数秒で終る簡単なものでした。
しかしその後に[第27回]で説明しましたように、いちいちWindowsでフォーマットしなくてもFORMATコマンドで内容を全て消去するように機能拡張したためにフォーマットするのに当初の数倍の時間がかかるようになりました。
こういうときに完了するまでただ待っているというのはなかなかにつらいものです。
ひょっとするとハングアップしているんじゃなかろうか、なんて思ったりします。
そこで簡単ですけれど適当な間隔でドットを表示させるようにしました。



時間を測ってみましたら約25秒でした。
結構かかります。
「内容を全部消去する」と言いましても本当に全部のデータを消去するなんてとてもできません。
実際にはFATとDIRセクタだけをクリアします。
そのほかにCP/Mのためのエリアもクリアするためにそれだけの時間がかかってしまいます。
ちょうどよい機会ですので、何回か言葉として出てきておりますZB3DOS(CP/M互換DOS)用のフォーマットの中身についてその概略を説明しておくことにいたします。

●ZB3DOS(CP/M互換DOS)用フォーマット

下に簡単なマップを図で示します。


図の左部分はFAT16の一般的なフォーマットです。
図ではFAT1とFAT2は240セクタになっていますが、たまたま私が使っている2GBのSDカードがこの値ということで、カードによって多少の増減があるようです。
同じメーカーの(多分)別のロットのカードでは234セクタになっていました。
Dirctoryエリアは32セクタ固定です。
Dirctoryの次からがユーザー用のデータエリアでクラスタ#2から始まります。
1クラスタのサイズは64セクタです。
通常のFAT16フォーマットではFAT1、FAT2とDirctoryをクリアするだけで終わりですが、ZB3DOS(CP/M互換DOS)ではそこからさらに図の右部分のようなフォーマットをします。

最初にクラスタ#2に’Z’ディレクトリを設定します。
これはWindowsからアクセスできるZフォルダ(のディレクトリ)です。
その次のクラスタ#3の先頭の8セクタはZB3DOS(CP/M互換DOS)からアクセスできるZドライブのディレクトリエリアです。
そこから後ろのクラスタ#3Fまでは空きです。
Aドライブ以下の配置をキリのよい値にするためにそのようにしました。
ZB3DOS(CP/M互換DOS)の仮想A〜Dドライブにはそれぞれ40H(=64)クラスタを割り当てています。
各4096セクタ(2MB)です。
各仮想ドライブの先頭の8セクタがディレクトリに割り当てられています。
クラスタ#140から後ろが本当のユーザーエリアになります。
なお、図右側のZB3DOS(CP/M互換DOS)のZディレクトリと仮想A〜ZドライブはWindowsからもZB3BASICからも見えません。

ZB3DOS(CP/M互換DOS)用のフォーマットではFAT1、FAT2、Dirctoryエリアのクリアのほかにクラスタ#2の全セクタ(64セクタ)とクラスタ#3の先頭の8セクタ、クラスタ#40、#80、#C0、#120の各先頭の8セクタをクリアします。
FAT1、FAT2のクリアに一番時間がかかりますが、それを含めて全部で616セクタに書き込みますので、それだけ書くのに実測では25秒かかります。
1セクタの書き込みに40msかかっている計算です。
データのほかにコマンドとか、その間の空きとか、CPU側での処理時間もありますが、それらを無視して計算すると1セクタ512バイトの転送に40msかかっていますから1バイト8ビットは約80μsです。
1ビット10μsですからSDカードへのデータ書き込み速度は100KHzということになります。
SDカードのインターフェースにはPIC16F883を使っていますがPICとSDカードとのシリアル通信では500KHzに設定しています。
実際にはかなり速度がダウンしているようですが、CPU側の処理時間もあるでしょうし、SDカードの書き込みにも時間がかかると思いますから、まあこんなものでしょう。

CRT/VGAIF+KEYIF+SDCARDIFボードの製作[総合第29回]
2017.3.15upload

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