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

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

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

[総合第71回]


●SDカードの仮想ドライブのバックアップ(3)

仮想AドライブはSDカード上のクラスタ#40〜7Fの64クラスタを占有します。
1クラスタは64セクタなので4096セクタを占有しますが、その4096セクタは連続している必要があります。
同様に仮想Bドライブはその次のクラスタ#80〜BFの64クラスタを占有し、仮想Cドライブはさらにその次のクラスタ#C0〜FFを、また仮想Dドライブはクラスタ#100〜13Fを占有します。

ZB3DOS用にフォーマットすると、上記のクラスタ#40〜#13Fは該当するFATマップにFFFFを書き込んで使用済みとします。
他のファイルによって上書きされないようにするためです。
SDカード上の仮想Aドライブ〜Dドライブはそのような特殊な扱いとしたために、USB接続型のA.VFD〜D.VFDのように、コピー可能なファイルにすることができませんでした。

そのような扱いのために不可視になっている仮想A〜Dドライブをバックアップするには、なんとかしてそれを普通のファイルらしき姿にしなければなりません。
そこで何とかしようと苦闘していたのですが、そもそもの考え方に穴があったことに突然気が付きました。
なにもそんなに無理に不可視にする必要はありませんでした。
あ、まあ、それなりの必要性はあります。
そのようにしたために、Windows上のファイルをSDカードにコピーするときに、誤って仮想ドライブのエリアを上書きしてしまうことは避けられます。

ところでもしもハードディスク上のA.VFD〜D.VFDをSDカードにコピーするとしたときに、たまたまクラスタ#40からうしろのエリアが空いていたら、ちょうど狙った通りにそのエリアに各仮想ドライブが割り当てられるのではないでしょうか?
ということに気が付いたのでした。
何も苦労してむつかしいことを考える必要はありませんでした。

本当はZB3DOS用のFORMATを行なうときにクラスタ#40〜13Fは空きにしておいて、FORMATした直後にハードディスク上のA.VFD〜D.VFDをコピーするようにすればよかったのでした。
しかしFORMATコマンドはROMに書き込み済みなのでそう簡単には直せません。
そこで次善の策として、クラスタ#40〜#13FのエリアのFAT情報をクリアするプログラムを作りました。
VFCLR.BINです。
前回お見せした画面では、プログラムのデバッグ中なのでVFCLR1A.BINになっています。

アドレスE000からロードしたあと、JP E000[Enter]で実行します。
この画面ではその直後に/CPMを実行してA〜Dドライブの中身を表示していますが、この画面はUSB接続型の画面なので、ここで表示しているA〜Dドライブはハードディスク上のA.VFD〜D.VFDの中身です。
ここで中身を確認しておこうと思ったためにこのように操作していますが、本来必要な操作はZB3DOSフォーマット後のSDカードに対してVFCLR.BINを実行することだけです。

そのようにしたあと、そのSDカードをSDカードリーターライターなどにセットして今度は直接Windowsパソコンに接続して、ハードディスク上のA.VFD〜D.VFDをそこにコピーします。

このときA.VFD〜D.VFDをひとまとめにしてコピーしてはいけません。
Windowsは必ずしもその順番でコピーするとは限らないからです。
必ず最初にA.VFDをコピーします。
それが済んだら次にB.VFDをコピーし、その次にC.VFDをコピーして、最後にD.VFDをコピーします。
必ずそのようにしてください。
上の画面では、A.VFD〜D.VFDのコピー前にすでにSDカードにSMBDOS2C.BINなどのファイルがコピーされていますが、それらのファイルをコピーしたあとでVFCLR.BINを実行していますから、そういうことでも構いません。
とにかくどの時点でもよいのですがVFCLR.BINを実行したら、その後では他のファイルはコピーせずにA.VFD〜D.VFDをコピーします。
一度A.VFD〜D.VFDをコピーしたら、そのあとは別のファイルをどのようにコピーしても構いません。
SDカードにコピーしたA.VFD〜D.VFDは削除してはいけません。
上書きコピーすることは構いません。
上書きコピーする前に毎回VFCLR.BINを実行する必要はありません。
VFCLR.BINは最初のA.VFD〜D.VFDをコピーする前に1度だけ実行すればあとは再び実行する必要はありません。

説明の途中ですが、本日も時間がなくなってしまいました。
次回に続きます。

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

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