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

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

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

[総合第156回]



●LOGディレクトリの修復

前回書きましたようにRTCの設定を忘れて新マイコン独立化システムを起動してしまった場合や、そのほか何らかの不具合やアクシデントなどによってSDカードのLOGディレクトリに「ゴミ」が記録されてしまうことがあります。
本来のログファイル名のルールから外れたファイル名として記録されることもあれば、LOGディレクトリセクタにゴミデータが書き込まれてしまうようなこともあります。
症状が軽い場合にはDIRLコマンドを実行したときにおかしなファイル名が表示されること以外には特に支障がないこともありますが、状態によってはDIRLコマンドの実行によってシステムがハングアップしてしまったり、バックグランドでのログ記録が正常に行なわれなくて、システムが正常に働かなくなってしまう場合も出てくることが考えられます。
そのような場合にはSDカードを再フォーマットすればよいのですが、再フォーマットをするとSDカードに記録されているファイルがすべて消去されてしまいます。

実は以前に新マイコン独立化セットをご購入いただいたお客様から「LOGディレクトリの異常ファイルを削除する方法はありませんか?」というご質問をいただきました。
そのときは対策について考えている時間がありませんでしたので「しばらくお待ちください」とご返事をさしあげたままになっておりました。
前回もそうだったのですが、私自身がLOGディレクトリに不良ファイルを作ってしまってそれを削除したいと思うことがあって、それでとりあえずはマニュアル的でちょっと面倒な作業ですが不良ファイルを削除する方法を考えました。
その方法を考えて実際に使って試してみたのはちょっと前のことでしたが、前回書きましたように、たまたま今度もLOGディレクトリに不良ファイルが作成されてしまい、それがもとでDIRLコマンドを実行すると途中でハングアップしてしまうという状態になってしまいました。
ちょうどよい機会なので、実際にLOGディレクトリを修復する過程を記録して、その画像などをお見せしながら、その方法について説明をすることにします。

まずは実際にLOGディレクトリに不良ファイルが作成されてしまったSDカードに対してDIRLコマンドを実行したときの画像をお見せします。

ここで画面表示が停止してしまい、ZB3.EXEを強制終了するしかありませんでした。

以下このような状態のSDカードのLOGディレクトリから不良ファイルを削除する手順を説明していきます。
その方法はLOGディレクトリをセクタ単位で読み出してその内容を確認し、異常がみつかったら、そのセクタをクリアしてセーブするというものです。
手作業による原始的な方法です。
それを自動的にこなしてくれるようなプログラムを作るとよいのですが、そこを自動化するとセクタの異常内容によっては思わぬ事態がおきないとも限りません。
面倒なようですが、こういう作業は自分の目で確かめながら手作業で修復するのが一番確実です。

この作業で使うのはSDカードのセクタb指定してセクタ単位で読み出すSCTRD.BINと、セクタ単位で書き込むSCTWR.BINです。
どちらも短くて簡単なプログラムです。
SCTRD.BINについては以前にも紹介いたしました([総合第32回])。
下にリストを再掲します。

2017/3/17  10:47  sctrd.txt
END=8016
              ;sector read
              ;17/3/17
                ORG $8000
                ;
                SCTRD=$7024
                REENT=$1033
                DATABF=$8200
              ;
8000 C30680     JP START
8003 00       SCTH:DB 00
8004 00       SCTM:DB 00
8005 00       SCTL:DB 00
8006 2A0380   START:LD HL,(SCTH)
8009 45         LD B,L
800A 4C         LD C,H
800B 3A0580     LD A,(SCTL)
800E 210082     LD HL,DATABF
8011 CD2470     CALL SCTRD
8014 C33310     JP REENT
              ;J
DATABF       =8200  REENT        =1033  SCTH         =8003  
SCTL         =8005  SCTM         =8004  SCTRD        =7024  
START        =8006  

簡単なプログラムですから、リストを見ながらアドレス8000〜8016にマシン語コードをCMコマンドで入力したあと、ファイル名SCTRD.BINとしてセーブしてください。
または下のリンクをクリックしてバイナリファイルをダウンロードしてください。

SCTRD.BBB

上のリンクをクリックしてSCTRD.BBBをND80Z3.5(ND80ZV、ND8080、MYCPU80)の実行プログラムのあるフォルダにコピーしてください。
ウイルスチェッカーなどが常駐しているとダウンロードを拒否されてしまうかもしれませんから拡張子をBBBに変えてあります。
ダウンロード(コピー)後は拡張子をBINに変えてください。

SCTWR.BINについてはお見せしているかどうか覚えがありません。
こちらもリストをお見せしますから、同じようにしてプログラムを作成してセーブするかリンクをクリックしてダウンロードしてください。

2017/3/22  7:1  sctwr.txt
END=8116
              ;sector write
              ;17/3/22
                ORG $8100
                ;
                SCTWR=$7027
                REENT=$1033
                DATABF=$8200
              ;
8100 C30681     JP START
8103 00       SCTH:DB 00
8104 00       SCTM:DB 00
8105 00       SCTL:DB 00
8106 2A0381   START:LD HL,(SCTH)
8109 45         LD B,L
810A 4C         LD C,H
810B 3A0581     LD A,(SCTL)
810E 210082     LD HL,DATABF
8111 CD2770     CALL SCTWR
8114 C33310     JP REENT
              ;DATABF       =8200  REENT        =1033  SCTH         =8103  
SCTL         =8105  SCTM         =8104  SCTWR        =7027  
START        =8106  

こちらも簡単なプログラムです。
リストを見ながらアドレス8100〜8116にマシン語コードをCMコマンドで入力したあと、ファイル名SCTWR.BINとしてセーブしてください。
または下のリンクをクリックしてバイナリファイルをダウンロードしてください。

SCTWR.BBB

上のリンクをクリックしてSCTWR.BBBをND80Z3.5(ND80ZV、ND8080、MYCPU80)の実行プログラムのあるフォルダにコピーしてください。
ウイルスチェッカーなどが常駐しているとダウンロードを拒否されてしまうかもしれませんから拡張子をBBBに変えてあります。
ダウンロード(コピー)後は拡張子をBINに変えてください。

本日は時間がなくなってしまいました。
次回に続きます。

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

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