[表紙頁]へ  関連記事の目次へ
[140204]

HR用補助プログラムを、作成した

先般から、欠陥セクターのある大容量HDDを実験的に調べているのだが、今回は多欠陥セクターのあるSATA-400GBMK4058GSXジャンク)について、「HDD Regenerator DEMO版(フリー)」を全域に掛けて、どうなるかを調べてみようとした。(左写真&クリック)
このDEMO版は、1欠陥で処置を終了してしまうので、次セクターへ進める作業を自動的に繰り返すバッチ・プログラムを考えられた方達が居て、私もそれを利用させて頂いている。
(感謝!<(_"_)> 「馬並みブログ」さん処「No Honto117」さん処、他)

ところが、このバッチ、これだけ多量に欠陥があると動作が変になる...何度も同じセクターまで引き返して、前へ進まなくなるのだ。(トホホ!)
原因は、元のプログラムが出す“エラー・メッセージ”の中身が単純な1行だけではなかったためだ。
そこで、今回、(自分好みの)「多行テキスト内の必要な(任意の)1行だけを抜き出すプログラム」を(アセンブリ語で)作成した。
...現在、上手く動作することを確認した!...さて、これで、多欠陥HDDの修復状況や如何に?(笑)
もし、微小な欠片による傷などなら、更に欠陥数が増えるかも。そうでなければ、欠陥数は減るか?
−−−−−−−−−−−−−−−−−−−−−−−−−
プログラム
元のプログラムの吐き出す“エラー・メッセージ”には、“recoved出来なかった際のメッセージ”も含まれた多行から成っていた。(左図<クリック>)
本当は、最後の行から抜き出した数値(セクター番号)が欲しいのだが、使われるのは先頭行の数値だけなので、結局、“進んでは引き返す動作”を続けていたってわけ。

“1行抜き出しプログラム”を、ネットで探し回ったが、(望ましいものが)見付けられず。
それぐらいのものなら、まだ!自分でも作れるだろうと、頑張ってみた。(笑)
(もう、耄碌(もうろく)していて、ダメだろう...とは思わなかった。“やれば出来る!”と思えば若返る♪笑)

作成したプログラムは、これ → 作成プログラム sline.lzh (ASM&COM)
使い方は、「last.log」の後ろから1行目(b1)だけを抜き出して、それをメッセージとして吐き出させる。(尚、/b1は最後尾の行から1番目の意味で、先頭行だったら/f1、数値は行番号で1〜99まで。“/”は“-”でもよい)
後は、そのメッセージを、DOSに託して「s.log(適当名)」として作って貰って、そのlogファイルから「cutt」で、必要な数値だけ取り出すわけだ。(左上図)

動作の結果
処理した結果は、メッセージとして表示出来るので、デバッグは容易だろうと思っていたが、なかなか一筋縄では行かなんだ!
というのは、(テキスト文の)行末にはCRコード(0dh)だけでなく、LFコード(0ah)もあるのは知っていたが、逆順だと思い込んでいたり、設けたバッファ・サイズが小さ過ぎていたのに気が付かなかったりで、散々!

何が問題か?を絞って、それを丁寧に潰して行けば、何とか出来るものだが、一応、少し汎用性を持たせたプログラムが出来た!
それをテストしてみたら、結果は上々♪(左写真&クリック)

今回必要なのは、最後の1行(/b1)だけ抜き出すだけなのだが、多少汎用性を持たせようと、先頭行(/f1)からも選択出来るようにしておいた。数字は、1〜99までで、それ以上を指定すると暴走するかも?(笑)

使用マシン
このプログラムを作るために、昔のFDD内蔵DOSVマシン(ASUS Quick&MasterEPSON N5263)を整備し直した。(左写真)

これらは、クロック周波数は550MHz(333MHzを改造)、266MHzと今では超鈍速の部類だが、アセンブリ語でプログラムを組むのには、ちっとも不便を感じなくて、むしろ小型で持ち運びが楽だし、FDD内蔵なのが有り難い!

試しに、最近のWinXp搭載機でやってみようとしたら、画面は明る過ぎるし、映り込み反射が目障りで、DOSプログラミング用としては、使う気になれない。(左写真クリック)
また、外付けのUSB-FDDを使う薄型ノートも検討したが、もし常時FDDを使うのでなければ、そういったマシンでもいいかもしれない。

プログラミング
実際のプログラム・テキスト作成には、(ベストセラーの)「VZエディタ」(FD購入品)を使わせて貰っている。(左写真)
これは、動作がキビキビしているし、背景をブルーに設定出来て眼が疲れ難いので、好き!
また、ファイラーは、主に「FILMTN(フリー)」を使わせて頂いている。
その他のツールとして、(保存してある)masm.exe、link.exe、exe2bin.exe、exedeb.exeなどを使った。

完成プログラムで、次のように打ち込むと、左写真<クリック>のようなメッセージを出す。(下手な英文、突っ込みご容赦!)
  sline /?」

汎用性を考えたとはいえ、完璧ではないので、どんな“バグ”や“陥穽”があるか分からず。不良韓国人不良シナ|中国人は、使用禁止!苦笑)

[表紙頁]へ  関連記事の目次へ