(5655) 
5655:
ファイル一覧とバッチファイル
 投稿者:
文太 
  2011/12/22(木) 13:59 
   コメント数 2
ファイル一覧とバッチファイル
 勢いづくと、なかなか止まれません。
 いえ、すぐ止まるつもりではあるのですが。
 ものすごく低レベルというか基本レベルなお話ではあるのですが。
 説明が難しいのですけれど、ある作業をしているときは、僕は、あまり頭が一
般化の方向に向きません。いかに目の前の処理をローテクで、道具をつくる時間
が短い方法で、完遂できるか、こればっか考えているので、全体としてスキルの
向上はありません。そして、僕のテキスト処理は、あるときはものすごく機械的
で量だけ膨大で、ちがうときには、それは処理ではなく思索あるいは詩作、みた
いなものです。
 とにかく、ファイル一覧の話。blt.comというdir出力をバッチファイル用に特
化させたツールがありまして、これを割と愛用しています。バッチを書くのさえ
大変だという場合で(だって1日に20も30も書くのよ)、うまくいくのなら、
wildに任せるのですが。
 とにかく、こんな具合。
C:\AD
>blt
HYODIC.TXT
INDEX012.TXT
LOG.TXT
RULEBOOK.TXT
TO_MAIL.TXT
SUMI_ML.TXT
YAKULIST.BAT
 そのまんま、バッチファイルに使える。で、フルパスは? ロングな名前は?
とか要望の声がありまして(内なる声ですよ)、さて、どうしよう? と考えて
いて、 どうしようもない、スキルが足りなすぎ、Windowsプログラミングを勉強
するしかない、とかなってました(コマンドラインから使えるツールってほんと
少ないですねぇ)。
 で、そんないつのことやらなことも言ってられない、となったわけでもないの
ですが、この2つの課題で、中途半端な解決を目指しました。
 現場では、このような汎用性は必要ないし、何か加工してやればやり過ごせな
いこともないのですが、でもなぁ……。
【ロング】
C:\PROGRA~1
>dir /b |to (こんなのあったのねぇ。dir /b /sで、ディレクトリ下もいけます。
Almail32    相当にMS-DOS汎用です。モバでできましたから)
B.H.A         ゆ、許し難い
Internet Explorer   ロングです。
LOCAL_HP.HTM
Microsoft.NET     許せん
Microsoft Office    やれやれ
MY_HOBBY.HTM
 (色々中略してます)
 (ディレクトリ自体が含まれるのがなんなんですが、しょうがない)
C:\PROGRA~1
>dir /b | sed -n -e "/\./p" |to
B.H.A         駄目だ
LOCAL_HP.HTM
Microsoft.NET     このやろう
MY_HOBBY.HTM
 (中略なし)
 (だから、ファイル名には拡張子なしも、ベースファイル名にピリオドありも
  禁止してやってるというのに、ああ、ディレクトリ名にピリオドを使いやがる
  とは……)
【フルパス&ロング】
C:\AD
>allfiles |to (ディレクトリ再帰を抑制できない)
C:\AD\CMPRESS\WORK\001.LZH
C:\AD\CMPRESS\WORK\002.LZH
C:\AD\CMPRESS\WORK\003.LZH
C:\AD\CMPRESS\WORK\AD_06.TXT
C:\AD\CMPRESS\WORK\AD_06YK.TXT
 (以下略)
 半端解決。少し前進。高まる不満。おねだりしてるのではないですけど。
 道具をつくらずに、解決するうまい方法ありませんかねぇ?
 実を言うと、現場では、ほとんどロングは要らないのですけれど、でも一般性を
考えると、欲しいな、と。
【おまけ】なるほど、そうなるのかぁ。
C:\
>dir /b c:\progr* |to
Program Files
C:\
>dir /b "c:\Program Files" |to
Almail32
B.H.A
Internet Explorer
LOCAL_HP.HTM
Microsoft Office
Microsoft.NET
MY_HOBBY.HTM
C:\
>allfiles "c:\Program Files" >work.txt (ディレクトリ再帰を抑制できない)
c:\Program Files\Almail32\Mailbox\Account1\Inbox.box\Aaaa0001.alm
c:\Program Files\Almail32\Mailbox\Account1\Inbox.box\AVVY0000.ALM
 なるほどぉ。すごいことになってしまった。
 allfiles.exe, ベクタにあります。Win95系とNT系の両方で使えます。
 もちろん、フルパスでロングなリスト、そしてこのディレクトリのこのファイル群、
と階層を決めて、要らない部分を削除するVzマクロ、あるいはsedスクリプトを
書けないこともないのですけどね(これかなぁ、個人的な解は)。−−てな、
誰の役にも立たないことを考えるために、これを書いたということに、結果的には
なるのでしょうね。すいません。
 しかし書く手間より、操作が面倒で使いそうもないなぁ、というのが踏み切れない
理由。次、いつ使うんだ? というのもあります。
 誰も考えたことないですかね?
【余談2】
 上を見ていたら、前から気になっていたファイル名の大文字・小文字混在が気
になりだし、CasHey.exe@ベクタというのにお願いすることにしました。コマン
ドラインで使えるのって、ないものですねぇ、相変わらず。
 32ビットのcmd.exeだと、ちゃんと違いを表示しおるのです。
 因みに、CasHey.exeのヘルプ・ファイルに、イクスプローラが勝手な表示をす
る、とあるのですが、XPでは問題ないみたいでした。
 いつまで経っても、進歩もないまま、文太は元気でござる、という報告でした。
      -  No.5655  -  
 このTreeへ   
      
[リストへもどる]
 soft 
(5655) 
5656:
XPの寿命
 投稿者:
文太 
  2011/12/22(木) 14:55 
     5655 番 文太 さんへのコメント    コメント数 1
XPの寿命(ここにつけちゃいます)
>Windows XP SP3 のサポートは 2014 年 4 月 8 日 (米国時間) で終了します。
>WindowsXP サポート終了 残り838日
 ttp://support.microsoft.com/ph/1173/ja
 とのことでした。14年4月か。12年になろうとしているところなので、あ
と2年ですね。さすがにその時代になって、ネットに繋がるメインのマシンとし
てXPを使い続けるというのは、問題なんだろうなぁ。どうなってるのでしょう
ね。
 考えてみれば、XPの時代って、ずいぶん長かったのだけど。
 昨晩、WinME でネットに繋げてみた感想は、セキュリティーより、まともにネ
ットが見られないので使えない、というものでした。uStreamとか見ちゃうの。
 マイグレーションですかねぇ。完全にVzのない、新しい環境かぁ。さすがに
真剣に考えるべきなんでしょう。
 うーん、どうしよう。
 と言いつつ、すぐ忘れて、2年後に慌てるのだろうなぁ。
 1年くらいは引っぱるのかな。
 ワードはやはりワケワカな印象だったので、秀丸かQXか xyzzy? 僕の使い
方で(テキスト処理)、現在のVzなところにまでもってくるのは不可能だろう
けど、けっこう潔く諦めて、割と素早く不便を不便と思わなくなるのでしょうか
ね。
 そうだ、Win7でエミュって、誰も試してないんですか? でも、きついだろうなぁ。
      -  No.5656  -  
 このTreeへ   
コメント元:5655 へ
[リストへもどる]
 soft 
(5655) 
5658:
Re: XPの寿命
 投稿者:
としき 
  2011/12/23(金) 00:39 
参照先:http://www1.hinocatv.ne.jp/toshiki/
     5656 番 文太 さんへのコメント    コメント数 1
>  そうだ、Win7でエミュって、誰も試してないんですか? でも、きついだろうなぁ。
試している人は多いですよ。
ホストとなるマシンのパワーはそれなりに必要なみたいですが、そんなにきつく
ないと思いますよ。
って、また勘違いしているかな。
きついって、何のきつさをおっしゃっていますか?
      -  No.5658  -  
 このTreeへ   
コメント元:5656 へ
[リストへもどる]
 soft 
(5655) 
5659:
Re^2: XPの寿命
 投稿者:
文太 
  2011/12/23(金) 01:45 
     5658 番 としき さんへのコメント    コメント数 1
酔っぱらいのとしきさん、どうも。
>試している人は多いですよ。
  え? いるんですか? 過去ログとかを思いっきり読み飛ばしてたのかなぁ?
  Win7のWinMEができたら、もう一生Vzなんですが。Win7が20年、生きるとして。
>きついって、何のきつさをおっしゃっていますか?
 特にないです。とろいだろうと。
 でも、それが本当なら、Vzな話、MS-DOSな話、16ビットなテキスト処理の
話がもっとここらで活発でありませんか?
 多くを期待しておりませんけれど。
 因みに、あれを書いたとたん、僕は秀丸のマクロ仕様を読み(素晴らしい)、
卓駆の操作を覚えようとしました。ま、さすがにVzが使えないWindows環境での
最低限のやりくりについての算段はしなくてはだなぁ、と。
 これらは、やはり本職、PCに本気で期待したいこと(歓び)、そして趣味とは
別の世界なのだろうと。
      -  No.5659  -  
 このTreeへ   
コメント元:5658 へ
[リストへもどる]
 soft 
(5655) 
5661:
Re^3: XPの寿命
 投稿者:
としき 
  2011/12/23(金) 12:50 
参照先:http://www1.hinocatv.ne.jp/toshiki/
     5659 番 文太 さんへのコメント    コメント数 1
> >試している人は多いですよ。
>   え? いるんですか? 過去ログとかを思いっきり読み飛ばしてたのかなぁ?
やっぱり酔っていたようです。
私が思っていたのは、Vz特化ではなく、一般的に、Win7とかWin8とかの上で動く
エミュレータでDOSなりWinMEなりをインストールしている人は多い、ということ
です。
そういう、ある種、当たり前に動くソフトなわけですから、エミュレータそのも
ののインストールに当たってはなんら困難はないと思います。もちろん、エミュ
レーションで作った環境上での各種設定は、例えばDOSならDOSなりにある程度の
手間はかかると思いますが。
でも、エミュレータって多くの場合、仮想コンピュータの設定ファイルっていう
ものを作るんですよ。つまり、一度設定を行えば、その設定ファイルを持ち歩く
ことで、エミュレータがインストールしてあるマシンを渡り歩いても、いつもの
自分の環境で仕事ができるわけです。これ、場合によっては、そして人によって
は、夢のような環境かもしれない。大昔、フロッピー1枚にVzとFEPを入れておけ
ばどこでも仕事ができた、なんて人も多かったようですが、現在ではUSBメモリに
仮想コンピュータ環境を入れておけばどこでも仕事ができるわけです。
なんかぐるっと一周して戻ってきてしまったような感じ。
      -  No.5661  -  
 このTreeへ   
コメント元:5659 へ
[リストへもどる]
 soft 
(5655) 
5663:
Re^4: XPの寿命
 投稿者:
文太 
  2011/12/23(金) 16:08 
     5661 番 としき さんへのコメント    コメント数 1
としきさん(なんだか意味なく長文になってしまった。もう一つは夜に)
>私が思っていたのは、Vz特化ではなく、一般的に、Win7とかWin8とかの上で動く
>エミュレータでDOSなりWinMEなりをインストールしている人は多い、ということ
>です。
 だろうな、とは思います。でも、Vzを動かした人が、ここら辺にはおりませ
んなぁ、という話です。もう通じてると思いますが。
 僕には、そのようなハイスペックのマシンに触れる機会がないのですよ。ちょ
っと、WinME をエミュ上にインストールするのは、他人のマシンではものものし
いし。 あ、MS-DOS でいいのか。FEP とかも必要だしなぁ。(まだ慌ててない、
ということですが。)
 たぶん、 奥さま用のマシンを3年後に今時のものにする、その時かなぁ。EMS
が取れない、 2003 年製富士通デスクトップ(貰い物)、まだがんばってます。
HDは最初のまま。どうして、あいつのマシンは壊れないのか…?
>そういう、ある種、当たり前に動くソフトなわけですから、エミュレータそのも
>ののインストールに当たってはなんら困難はないと思います。もちろん、エミュ
>レーションで作った環境上での各種設定は、例えばDOSならDOSなりにある程度の
>手間はかかると思いますが。
 なんか壁があるのだろうな、と。でも、その壁が何なのか、まだ誰も知らない。
つまり使いものになるのかならないのか。でも、遅いのじゃない? とか、起動
が面倒なんじゃない? とか、今そうしてるように、メールや掲示板への書き込
みなどなど、すべての書き物をそんな環境でする気になるの? とかとか。えい、
最新OSでは、秀丸だい、卓駆だいと。
 秀丸だとケタ折りマクロすら、まだ使えないのだけど。
 つらつらと、Vzの何が便利なのかと、考えてます。すげえ、いっぱいある。
 どんな汎用性のないマクロも(超単機能もの)さらさら書ける、これはぜった
い同じにはなれないだろうなぁ、と。そこまでバイリンガルになれるわけがない
し。
 ちょっと通じないと思いますけど、ある種の単純作業では、こんなマクロが作
業時間を半分にしてくれるのです。先月50個くらい作ったマクロのうちの優秀
者ベスト2(バッチも50、マクロも50、スクリプトは10)。
------
* M
50 [F03] "winup";Top of Win ^QE 画面の上へカーソル移動
#39
------
* M
50 [F07] "goup";その行を画面上端へ
ky-, &d
 ファンクションキーがミソ。
 つまり、 前回の e-txt 作成作業では(ほぼ終わりました)、紙面=画面での
ページレイアウトが意味をもつ作業も大きかったのです(紙との照合過程あり。
もちろん、ワイドな WinME で作業)。 目と手でやるしかない作業。そういうの
【も】あったということですが。こんなの秀丸で1分で書けるのか? Vzでも、
アイディアが浮かんで1分で書けるのは、stkhelp やマクロヘッダ自動生成マク
ロのお陰なんだよなぁ。
 たぶん、秀丸で書けるようになるのに5年はかかるだろう。けっこうマスター
しても、言語仕様によっては、20分かかることもあり得るし。なんか愚痴っぽ
くなってる。ごめんなさい。
 なので、真剣な仕事は純な WinME マシンでやる。仕事を分ける、と。
 元に戻って。たぶんMSのXPサポートが切れても、ウィルス対策ソフトはし
ばらくは、きっと2年くらいは、更新してくれるだろう。あと4〜5年かぁ。そ
れだけあれば、秀丸、ある程度までいけます、きっと。そこで、Win9 とか。
 どうでもいいことだけど、 秀丸も卓駆も、MS-DOS な感じを残していていい印
象でした。世界の皆さまはマウスに慣れたのですかねぇ? それともコマンドラ
インやバッチをしらないのかなぁ。ま、大半の人びとは我々のようなPCの使い
方をしないのでしょうね。
 秀丸の「マクロ入門」ヘルプは、とてもとても親切でした。もちろん、キーボ
ード・マクロのお話から始まります。新鮮。
 
      -  No.5663  -  
 このTreeへ   
コメント元:5661 へ
[リストへもどる]
 soft 
(5655) 
5667:
Re^5: XPの寿命
 投稿者:
としき 
  2011/12/24(土) 12:03 
参照先:http://www1.hinocatv.ne.jp/toshiki/
     5663 番 文太 さんへのコメント    コメント数 1
私が安易に考えすぎているのかもしれませんが。
最近のエミュレータなら、ホストマシンの七掛けとか八掛けくらいのスピードは
出るはずなんで、よほど遅いマシンをホスト側に使うのではない限り、それほど
問題なく動くはずです。私自身の経験で言うと、かつて、クロック1.5GHzくらい
のマシンのVirtualPCでWin95をいれていましたが、そのDOS窓でVzを使った場合、
ちょっとキーボードからの入力で引っかかり感がありましたが、その他の問題は
全く覚えていません。また、現在このレスを打っているマシン、クロック3GHzで
OSはXPですが、VirtualPC2004でWin98を使って、そのDOS窓でVzを使って、半角を
入力している限りでは全くキーボードの引っかかり感もありません。残念ながら
DOS窓での日本語入力環境を整えていないので、全角入力時がどうかまではわかり
ませんが。
ということで、普通にWin8が動くマシンであれば、その上で動くエミュレータの
中のDOSがきついというのは、とっても考えにくいかと思います。エミュレータで
動く仮想マシンの側のベンチマークでクロック2GHz出てくれないといやだ、など
というのであれば話は別ですが、生DOSと遜色のない動きであれば文句のない私は
将来的にはエミュレータを多用することになるかもしれません。
> つまり使いものになるのかならないのか。でも、遅いのじゃない? とか、起動
> が面倒なんじゃない? とか、今そうしてるように、メールや掲示板への書き込
> みなどなど、すべての書き物をそんな環境でする気になるの? とかとか。えい、
上記の通り、仮想マシンはそんなに遅くはないですね。
起動の面倒さもそんなには感じません。エミュレータソフトを起動したら、複数
の仮想マシンがメニュー表示されていて、そのうちの一つをダブルクリックすれ
ばそのまま起動。ここで少し時間がかかるな。仮想といえど一つのコンピュータ
の電源投入からをエミュレーションしているわけですから。でも、黙って待って
いるだけですから、面倒さは全く無し。
全ての書き物を仮想マシンで行う気になるかというと、確かにちょっと疑問あり。
クローズな環境で全てが完結するなら、あるいは他とのデータのやり取りの頻度
が低いのなら、仮想マシンの中でずっと暮らしていてもいいかもしれません。が、
メールだの掲示板だの、他所とつながることを考えるのなら、仮想マシンは面倒。
仮想ネットワークを構築してやらなければなりませんからね。また、その仮想ネ
ットワークの構成によっては、そのままインターネットに接続できるようにする
こともできそうだけど、その場合は仮想マシンのウィルス対策だのセキュリティ
だのの問題も発生する可能性があって、訳わからんことになりそう。
>  どんな汎用性のないマクロも(超単機能もの)さらさら書ける、これはぜった
> い同じにはなれないだろうなぁ、と。そこまでバイリンガルになれるわけがない
新しいものに拒絶反応を示すようになるのは、もしかして老化の第一歩かも。
> 【も】あったということですが。こんなの秀丸で1分で書けるのか? Vzでも、
> アイディアが浮かんで1分で書けるのは、stkhelp やマクロヘッダ自動生成マク
> ロのお陰なんだよなぁ。
stkhelp は使ってませんが、私はその手の単機能マクロなら、キーボードマクロ
を使います。逆に、キーボードマクロが容易に記録・実行できるエディタであれ
ば、他の環境でもそれほど変わらないでしょう。
実際、私、Excelのマクロ記録機能というヤツ、Vzのキーボードマクロに比べれば
ちょっとは面倒ですが、でも、その記録を基にして肉付けするという方法を使で
いくつかマクロを作っています。つまり、Vzで基本が身についていれば、異なる
環境でも十分に応用が効くと思います。
>  たぶん、秀丸で書けるようになるのに5年はかかるだろう。けっこうマスター
> しても、言語仕様によっては、20分かかることもあり得るし。なんか愚痴っぽ
5年は極端としても、これに似たことは十分ありそうです。
当然、言語仕様によって一長一短があるわけですから。
ただ、エディタのマクロならどれも同じような機能があるはずですから、そんな
に心配することもないと思います。
      -  No.5667  -  
 このTreeへ   
コメント元:5663 へ
[リストへもどる]
 soft 
(5655) 
5670:
Re^6: XPの寿命
 投稿者:
文太 
  2011/12/24(土) 14:00 
     5667 番 としき さんへのコメント    コメント数 1
としきさん、いい話のような、そうでもないような。ま、一度深く絶望すれば
あとは何とでもなる。でも、お昼ご飯が。
 別に試しもしないで疑ってるわけではありませんよ。
 ま、脳内シュミレーションというか、天秤にかけてるというか、です。
> 残念ながら  DOS 窓での日本語入力環境を整えていないので、全角入力時がど
>うかまではわかりませんが。
 これがネック。実は、僕のIMEへの憧れはとても低いのです。
> ということで、普通に Win8 が動くマシンであれば、その上で動くエミュレー
>タの中の DOS がきついというのは、とっても考えにくいかと思います。
 なるほど。しかしワイドが欲しいので、Win95以上必須だと気づきました。
> 生  DOS と遜色のない動きであれば文句のない私は将来的にはエミュレータを
>多用することになるかもしれません。
 たぶん、僕は別マシン派で、掲示板の書き込みは秀丸になるのでしょう。↓
> メールだの掲示板だの、他所とつながることを考えるのなら、仮想マシンは面
>倒。仮想ネットワークを構築してやらなければなりませんからね。
 これは悲劇だ。
 しかし、それならと反論します。 XPで WinME を動かせば、ワイドになるじ
ゃない。ワイドが要らないなら、EMSの取れないXPで MS-DOS でもいい。で
も、誰もやらない。面倒な壁が高いので、エミュは皆やらないのじゃないのかな
ぁ。最後のネットワーク構築は、異様に壁が高いと感じました。
 ま、背に腹はかえられない状況度が違った、という現実なのでしょうけどね。
> 新しいものに拒絶反応を示すようになるのは、もしかして老化の第一歩かも。
 何を仰る。もうとっくに老人ですよ。も、もしかして、としきさん、自惚れてない?
> stkhelp は使ってませんが、私はその手の単機能マクロなら、キーボードマクロ
>を使います。
 ま、あれは、仕事の見分けとアイディアですから。ファンクションコールは現
場で使ったことがありませんが(すでにできてるマクロは別)、ループと条件分
岐はぜったい必要なので(切った貼ったです)、キーボードマクロは、めったに
使わないですね。ファイラでの定型的リネームで多用、かな。
>>  たぶん、秀丸で書けるようになるのに5年はかかるだろう。
>ただ、エディタのマクロならどれも同じような機能があるはずですから、そんな
>に心配することもないと思います。
 でしょうね。でも、昔ほど学習に燃えられない。獲得による充実感がない。何
だろう、残りが短いと感じたり、やたら仕事が進まなくて焦る、という顕著な老
化現象でしょう。もう、焦ってもしょうがないだろう、という悟りの境地には、
まだまだなれなくて。一生、ないのかな、やっぱり。煩悩。
      -  No.5670  -  
 このTreeへ   
コメント元:5667 へ
[リストへもどる]
 soft 
(5655) 
5671:
Re^7: XPの寿命
 投稿者:
としき 
  2011/12/24(土) 14:55 
参照先:http://www1.hinocatv.ne.jp/toshiki/
     5670 番 文太 さんへのコメント    コメント数 1
とりあえず、布団は取り込んだ。
これからお昼ご飯を食べて、洗濯物を取り込んだら一旦実家。
今年は年賀状の裏面を弟に印刷させることになったので、それの打ち合わせ。
宛名書きは明日かな。こちらは手書き。
> > メールだの掲示板だの、他所とつながることを考えるのなら、仮想マシンは面
> >倒。仮想ネットワークを構築してやらなければなりませんからね。
>  これは悲劇だ。
ホストマシンとつなげることだけなら、ごく簡単。
今、このマシンで動いている仮想Win98も、ごく普通にネットワーク経由でホスト
マシンとデータのやり取りができています。
>  しかし、それならと反論します。 XPで WinME を動かせば、ワイドになるじ
> ゃない。ワイドが要らないなら、EMSの取れないXPで MS-DOS でもいい。で
> も、誰もやらない。面倒な壁が高いので、エミュは皆やらないのじゃないのかな
XPだとエミュレータの必要性がまだまだ低いですからねぇ。
5年後ぐらいには、私もWin8あたりの上で仮想Win95あたりを使っていそう。
それか、VTDOSのような、DOS窓エミュレータかな。
実際、実家においてあるVistaのノートだと、既にDOS窓が使い物にならない。
だから、実家に行ったときは、ネットワーク関係はVistaノートだけど、それ以外
は旧母艦(PC-9821)を使っています。
> 場で使ったことがありませんが(すでにできてるマクロは別)、ループと条件分
> 岐はぜったい必要なので(切った貼ったです)、キーボードマクロは、めったに
そこが私との大きな違い。
私はループはほとんど使わない。
条件分岐は必要なときは、それぞれの条件でどういう動きをしてもらいたいかと
いうことをキーボードマクロでやって、それを1つのマクロに組み上げるという
方法です。
>  でしょうね。でも、昔ほど学習に燃えられない。獲得による充実感がない。何
> だろう、残りが短いと感じたり、やたら仕事が進まなくて焦る、という顕著な老
> 化現象でしょう。もう、焦ってもしょうがないだろう、という悟りの境地には、
知的生産に携わる人がそんなことを言っていたらダメですよ。
ライバルに勝つ必要はなくとも、自分には勝たなくては。
      -  No.5671  -  
 このTreeへ   
コメント元:5670 へ
[リストへもどる]
 soft 
(5655) 
5673:
Re^8: XPの寿命(自分の寿命か)
 投稿者:
文太 
  2011/12/24(土) 15:27 
     5671 番 としき さんへのコメント 
としきさん
>知的生産に携わる人がそんなことを言っていたらダメですよ。
>ライバルに勝つ必要はなくとも、自分には勝たなくては。
 うお、そう肉体年齢ではない、そう心の年齢だ。としきさん、若い!
 bltその他の件は、またいつかね。さ、年賀状。
                    肉体労働が好きな文太
      -  No.5673  -  
 このTreeへ   
コメント元:5671 へ
[リストへもどる]
 soft 
(5655) 
5657:
Re: ファイル一覧とバッチファイル
 投稿者:
としき 
  2011/12/23(金) 00:35 
参照先:http://www1.hinocatv.ne.jp/toshiki/
     5655 番 文太 さんへのコメント    コメント数 1
>  道具をつくらずに、解決するうまい方法ありませんかねぇ?
あるかもしれません。
が、すいません、酔っているせいもあるかもしれませんが、私、文太さんがどの
ような出力を欲しているのか理解できませんでした。
「許せん」とか「許し難い」とか書かれているファイル、どのような出力を希望
されているのか併記していただけませんか?
      -  No.5657  -  
 このTreeへ   
コメント元:5655 へ
[リストへもどる]
 soft 
(5655) 
5660:
Re^2: ファイル一覧とバッチファイル
 投稿者:
文太 
  2011/12/23(金) 01:59 
     5657 番 としき さんへのコメント    コメント数 1
酔っぱらいのとしきさん、どうも2。
>あるかもしれません。
 ないと思いますよ。
 blt.com の素晴らしい点は(konno さんは単なる剽窃だと言ったけど)、ディレ
クトリをはじいた点です。しかし、フルパスが出せない。SFNなら、できていい
とも思うけど。
>「許せん」とか「許し難い」とか書かれているファイル、どのような出力を希望?
 ディレクトリはバッチファイルでは要らないから出さないで。
 LFNでフルパスも出せる、これです。はい、としきさんなら、作れるのは知っ
てます。でも、もうおねだりはしないのです。一人でやれることをやる……。
 作らずに工夫はない?です。
 作ってやるよ、も大歓迎なのですが。あれれ???
      -  No.5660  -  
 このTreeへ   
コメント元:5657 へ
[リストへもどる]
 soft 
(5655) 
5662:
Re^3: ファイル一覧とバッチファイル
 投稿者:
としき 
  2011/12/23(金) 13:41 
参照先:http://www1.hinocatv.ne.jp/toshiki/
     5660 番 文太 さんへのコメント    コメント数 1
まだアルコールが残っているかな。
えと、要件としては以下のような感じ?
・単一ディレクトリ配下のファイル全てをリストアップ
・ディレクトリは表示不要
・オプションで再帰下降できるとうれしい
・表示はフルパス
例えば、コマンドプロンプトから「dir /a-d /b」と叩いたときの表示が近いかと
思いますが、この結果に対して、あとどうなっていると嬉しいというのがわかれ
ば、もしかしたらもうちょっとアドバイスできるかもしれません。
あるいは、bltを拡張ファンクション対応にちょこっと改造してみるとか。
生DOSで動かなくてもよいなら、7100hかませるだけだから全く難しくないはず。
あるいは、短いファイル名で取得して、長い名前のフルパスに変換して表示、と
いう方法のほうが楽かなぁ。
      -  No.5662  -  
 このTreeへ   
コメント元:5660 へ
[リストへもどる]
 soft 
(5655) 
5665:
Re^4: ファイル一覧とバッチファイル
 投稿者:
文太 
  2011/12/24(土) 02:00 
     5662 番 としき さんへのコメント    コメント数 2
としきさん、多謝。遅くなりました。ああ。
 やっぱり、訊いてみるものですねぇ。もう感謝の言葉もございません。
 多謝。m(__)m
C:\
>dir /A-D /B "c:\Program Files" |to
LOCAL_HP.HTM	;この2つが"c:\Program Files"にあるディレクトリでないファイル
MY_HOBBY.HTM	;僕のブラウザのスタートページ。自分で書いてるので、8.3
        ;ですが。
 すると1、
 blt の存在価値はなくなった。 というわけではない。>blt これだけですむか
ら。もちろん、カレントに行かなくてはいけないけれど。引数、オプション、一切
受け付けないけど。
 すると2、
>えと、要件としては以下のような感じ?
・単一ディレクトリ配下のファイル全てをリストアップ
・ディレクトリは表示不要
・オプションで再帰下降できるとうれしい【1】
・表示はフルパス【2】
・オプションで出力の行頭、行末に""をつける。【3】
・できたら、Win95系、WinNT系、両立。【4】
 【1】は、allfilesでできてるから、なくてもよい。
 【2】オプションでフルパス、がよい(dirでできてるとはいえ)。
 【3】ロングでスペースありとかだと、バッチで必要になる。
 【4】これが切望したいところだなぁ。WinMEな人なので。
 ということになりますが。【4】【3】が大きいのですが。m(_B_)m
 以下のラインは、現在、諦めています。
 それでも、(それだから?)不正確かもしれませんが、書いておきますね。
言い訳っぽいのだけど。
>あるいは、bltを拡張ファンクション対応にちょこっと改造してみるとか。
 これが深いのですよ。それこそ過去ログで僕は目的的に調べたのです(脱線は
あったけど)。 覚えてないでしょうが、NT 系でもロングがファイラで出たの、
ある種の偶然っぽいのですよ。事実できたのだから、拡張ファンクションが効く
のでしょうけど。konno さんが、チェックを外すことで実現しました。
もちろん、以下はDCログ。
>20190/20710  RE:xpでロングファイラー表示
>(15)   03/07/13
 そして、どっかの返り値はどうも不定っぽいという結論だったはずです。
>短いファイル名で取得して、長い名前のフルパスに変換して表示、と
>いう方法のほうが楽かなぁ。
 どっちにしても、やれない言い訳にすぎないのですが、上の経緯で、拡張ファ
ンクションを使った16ビット・アセンブラでは道が険しすぎる、という判断で
した。いくつかの拡張ファンクションが NT 系で効かないのも事実だし(クリッ
プボード操作系とか)。スキルがなさすぎる、根性がなさすぎる、というのは置
いておいてしまってるのですが。
 うーん、作ってもらうべきなのか。分かりません。
 とても、お願いしてる立場の人間の言えることではありませんが。
(5655) 
5666:
おねだり撤回
 投稿者:
文太 
  2011/12/24(土) 11:43 
     5665 番 文太 さんへのコメント 
おねだり撤回
としきさん
 「おねだりを受け付けたなんて一言も言ってない」と返ってきそうですが。
 仕様が定まりません。 どうすれば僕は幸せなのか分からなくなりました。dir
/b  /a-d で足りる、ともいえるし、allfiles で行けるとも、スペースがある場
合の "" とかも、あまりに汎用性がないというかありすぎというか(僕が使う場
面もとても少ない)、もごもご。
 色んなことを調べて、Vzファイラがないと、すごく面倒そうだなぁ、とは、
改めて認識しました。一般ユーザがコマンドラインを使うことを考えて作られて
ないな、このOS、という凡庸な結論に。ま、深い、深すぎ、とも言えるのですが。
m(_B_)m
 もごもごの一例:
 「つまり簡単にカレント・ディレクトリがLFNのフルパスで出ればいいんで
しょ」、と以下を行ない、敗退。ああ、面倒だ。
command.com窓(つまりVz窓)
C:\DOCUME~1 ;prompt=current dir
>cd
C:\DOCUME~1
C:\DOCUME~1 ;prompt
>cmd /kcd
C:\DOCUME~1 ;どうして?
C:\
>dir /b docume* |to
Documents and Settings
C:\
>dir /b /ad docu* |to
Documents and Settings
cmd窓
C:\Documents and Settings ;prompt=current dir
>cd (>c:\workfile.txt)
C:\Documents and Settings
 もしかして、と、LFN・Vzファイラで、
「Documents and Settings」の上で、拡張^Lをしたら、そのまま取れた。
な、なんでだ? ikubohさん、何をしました? 高橋さんがファイラープール
に入れてくれてて(じゃないと表示できない)、それをikubohさんが拾って
きてるのか…。でも、どうしてSFNのほうじゃなかったのだろう?
 分かる範囲で幸せに生きてゆきます。m(__)m
 dir /b /a-d のお知恵は、拝借しました。
 今日の立ち読み:
>17678/19000            RE:ソース解読は…
>(15)   01/02/08
 面白かった(とらじさんの、SFN<->LFNから)
(5655) 
5668:
Re^5: ファイル一覧とバッチファイル
 投稿者:
としき 
  2011/12/24(土) 12:48 
参照先:http://www1.hinocatv.ne.jp/toshiki/
     5665 番 文太 さんへのコメント    コメント数 1
なんか撤回されているようですが。
とりあえず、私の頭の体操ということで。
> >えと、要件としては以下のような感じ?
> ・単一ディレクトリ配下のファイル全てをリストアップ
> ・ディレクトリは表示不要
> ・表示はフルパス【2】
> ・オプションで出力の行頭、行末に""をつける。【3】
> ・できたら、Win95系、WinNT系、両立。【4】
>  【2】オプションでフルパス、がよい(dirでできてるとはいえ)。
>  【3】ロングでスペースありとかだと、バッチで必要になる。
>  【4】これが切望したいところだなぁ。WinMEな人なので。
> 
>  ということになりますが。【4】【3】が大きいのですが。m(_B_)m
blt.asmのアセンブルはできる環境にありますよね?
なら、blt32っつう、生DOSでは動かないけどWindowsでは動くものは比較的簡単に
できそうな気はする。気のせいかも。
変更するのはおおむね3ヶ所のみ。
・mov ah,4eh → mov ax,714eh
・mov ah,4fh → mov ax,714fh
・mov si,    →
この3番目をどう書き換えればよいかが私には分かりません。
もしかしたら2行以上になるかも。
konnoさんあたりならわかるかな。
あと、オプションで切り替えるのではなく、常にダブルクォーテーションを出力
すると言うのなら簡単ですよね。
これで、要望の3と4は満足できるでしょう。
>  そして、どっかの返り値はどうも不定っぽいという結論だったはずです。
ここ、おぼろに覚えています。
axとcxだったかな、Win9xだと両方帰ってくるけど、WinNT系は片方しか帰ってこ
ない、みたいな事だったような。
>  どっちにしても、やれない言い訳にすぎないのですが、上の経緯で、拡張ファ
> ンクションを使った16ビット・アセンブラでは道が険しすぎる、という判断で
そりゃ、平坦な道ではないですけど。
そんな、富士山クラスの高い山ではないですよ。
せいぜい、高尾山クラス。日帰りで頂上までおっけ〜。
(5655) 
5669:
Re^6: ファイル一覧とバッチファイル
 投稿者:
文太 
  2011/12/24(土) 13:38 
     5668 番 としき さんへのコメント    コメント数 3
としきさん
 ソースは、#03394 ですね。 ああ、ナツメのマクロだらけ。ま、大したマクロ
でないので意味はわかりますが。おぼろげに。
>とりあえず、私の頭の体操ということで。
 うーん、困ったな。
>blt.asmのアセンブルはできる環境にありますよね?
 これがなかったのですよ。ま、今、作りましたが。たぶん、できた。
C:\BIN9
>blt
EXE2COM.EXE
LLD.EXE
ML.ERR
ML.EXE
 ソースがないぞ。
>なら、blt32っつう、生DOSでは動かないけどWindowsでは動くものは比較的簡単に
>できそうな気はする。気のせいかも。
 気のせいじゃない?
>変更するのはおおむね3ヶ所のみ。
>・mov si,    →
>この3番目をどう書き換えればよいかが私には分かりません。
	mov	ah,6			;-
	mov	si,offset 80h + 1Eh  ;DTA in PSP (starts at 80h, in 100h org)
	cld			     ;and found ASCIZ str = filename
 				     ;1Eh 13 BYTEs ASCIZ filename+extension
 なるほど。確かに。ここが富士山。
 素晴らしいコメント!
>konnoさんあたりならわかるかな。
 何とかなりますか、って、おいおい。そんな長いもの、どこに入ってるのよ?
>あと、オプションで切り替えるのではなく、常にダブルクォーテーションを出力
>すると言うのなら簡単ですよね。
 どう考えても、元々が邪悪なので、つき合わないほうが良いと思います。
 何が、Program Filesだ、Document and Settingsだ、と。
 ダブルクォーテーションは要らない。ほんとに必要なときだけsedすればよい。
 s/^/"/; s/$/"/ こんなので行けるはず。
>>  拡張ファンクションを使った16ビット・アセンブラでは道が険しすぎる
>そりゃ、平坦な道ではないですけど。
>そんな、富士山クラスの高い山ではないですよ。
>せいぜい、高尾山クラス。日帰りで頂上までおっけ〜。
 無理。高尾山は今、登りました。仕様を詰めました。
 このマクロでも、30分はかかった(高尾山)。き、汚い。めざらさんに怒られそう。
 おお、ファンクションコールマクロだ! 現場では登場しないのですよ。
 &Sa()なんて、生まれて初めて使った。和生さんが愛用していて高橋さんに使うな、
sprintfを使え、と言われてたのは覚えてる。
 実は、めざらさん掲示板の#01780の、過去の自分からパクった。f_call.shdだけ
では解けなかった。
=== curr4bat.def by B ===;add current directory at linetops for batchfile
ファイル全体の行頭にカレント・ディレクトリ(SFN)を付加する。
bltによるバッチファイル用。
シフトで、PSにカレント・ディレクトリを入れるだけ。
* M
50 ^^ "curr4bat"
	?. k=ks&1,
#if 98 MG
	dx=1,				;for F_CURDIR
	cx="A:\",			;drive letters
#else
	dx=3,
	cx="C:\",
#endif
	&Sm(pa,cx,3)
	ax=$4700, si=pa+3, &i($21)	;F_CURDIR
	p="\", &Sa(pa,p)
	(k)?
	{&Sh(ps,pa) &m("ps == %s",ps) >z}	;--- shift
	ps[=pa,					;--- non shift 行頭置換(付加)
	#56 "\x ^" #m #e#e #m "AY"
	ps],
:z	.
*
 マジで使うつもりらしいので、ブロック if 文を入れた。そんなのさえ調べな
いと書けなかった。
 とはいえ、パスなしファイル名だけのバッチのほうが見やすいのです、ふつう
(言い訳、多いなぁ)。
 blt2.com (for SFN) を作って、いつでもフルパス版を作れよ! いえ、それに
は1週間のリハビリが必要です。心の余裕がないのね。今日中に年賀状を書かない
といけないし…。
 まあ、じゃあ、これはいつかやりましょう、自分で。
 オプションを受け付けるには、delmem とか読まなければならないから、無理。
(5655) 
5672:
Find_Data構造体
 投稿者:
文太 
  2011/12/24(土) 15:18 
     5669 番 文太 さんへのコメント 
DC
>09893/09901  とらじさん、多謝。
>(15)   98/04/07
 を見ると、320バイトは自前で確保のようでした。DTAみたいなのないみ
たいです。
 別に作ってもらおうとも、自分で作ってやるとも思ってませんけど。本当に。
 メモ:『Win98 のDosの秘密』p.302 
    ナツメ『システムコール』p.238 
(引用。長いの、ごめんなさい>とらじ様 まさかこんな時代に引用されるとも
思ってないでしょうね)
 と引用しようとしたら祟られた。
 「行頭に半角カナは」のエラー。何かの不具合のようでした。>konnoさん。
 前にもありました。半角カナ以外もはじいている模様です。あるいは、行頭
以外の半角カナもはじいている?
 お昼ご飯(遅め)は終わったけど、これから年賀状です。
 今晩は、おばあちゃんとクリスマス会です。
(5655) 
5674:
curr4bat.def 修正
 投稿者:
文太 
  2011/12/24(土) 15:39 
     5669 番 文太 さんへのコメント 
 何をやっているのだろう。
;	p="\", &Sa(pa,p)
	&Sn(pa) (r==3)?? {&Sa(pa,"\")}
 割れ関数にまで遭ってしまった。時間が止まっているのか逆流しているのか。
 うん、こんなのアセンブラでは書けないな。
(5655) 
5675:
Re^7: ファイル一覧とバッチファイル
 投稿者:
としき 
  2011/12/24(土) 18:58 
参照先:http://www1.hinocatv.ne.jp/toshiki/
     5669 番 文太 さんへのコメント    コメント数 1
そうか、マクロによる解決策でもいいのか。
ということで、サンプル。
= SFN to LFN
* m
1 ^\ "test"
    ?.
    &> di=r,
    si="c:\progra~1\bbbroa~1\appcon~1.dat",    ;短いファイル名
    ax=$7160,
    cx=2,
    &i($21)
    &m("%s",di)
99: (3+$). "$[1024]"
*
実家のVistaマシンではうまくいった。
ただし、VistaのDOS窓のVzでは全角が文字化けするので、チェックしたのは全て
半角文字のファイル名のみ。
おそらく、Win95でもWinXPでもうまくいくけどWinNTではうまくいかない、という
症状が出そうな気がする。
このあたりのルーチンを組み込んでblt32を作ることは可能だと思う。
もちろん、マクロ側で何とかするというのでもいいと思うけど。
> 	mov	si,offset 80h + 1Eh  ;DTA in PSP (starts at 80h, in 100h org)
なるほど、なら、適当に自前でバッファを確保すればよろし。
あと、とらじさんの発言を参考にすると
mov si,di+44
とすればよいのかな。もしこんなコードはアセンブルできないというのであれば
mov si,buf+44
となるか。試してないんで信用はしないでください。
おまけ。
= bltの後処理用
bltの出力ファイルの行頭で実行
* m
1 ^^ "テスト"
    ?.
    &99 di=r, &98 si=r,
    #l #F #u #m
    &Sc(si,ps)
    ax=$7160,
    cx=2,
    &i($21)
    &?("%s",di)
    #d
98:	(3+$). "$[1024]"
99:	(3+$). "$[1024]"
*
(5655) 
5676:
サンプル、多謝
 投稿者:
文太 
  2011/12/25(日) 14:59 
     5675 番 としき さんへのコメント    コメント数 3
としきさん
= SFN to LFN OKです。WinMEとXPで、日本語ファイル名も大丈夫でした。
siの部分を変えてみての、検証でした(当然)。
;    si="c:\progra~1\avasts~1\avast\aavm4h.dll",    ;短いファイル名
    si="c:\progra~1\intern~1\connec~1\msicw.isp",    ;短いファイル名
WinXPにて(上SFN、下LFN)
c:\progra~1\avasts~1\avast\aavm4h.dll
c:\Program Files\AVAST Software\Avast\Aavm4h.dll
c:\progra~1\almail32\plugins\あああ~1.txt\いいい~1.txt
c:\Program Files\Almail32\Plugins\あああああああああああ.txt\$
いいいいいいいいいいいい.txt
---------------------------------------------
WinMEにて(上SFN、下LFN)
c:\progra~1\archiv~1\あああ~1\いいい~1.txt
C:\Program Files\ArchiverDll\ああああああああ\いいいいいいいい.txt
c:\progra~1\intern~1\connec~1\msicw.isp
C:\Program Files\Internet Explorer\Connection Wizard\MSICW.ISP
 こんなテストが簡単にできるのも、Vzファイラとか、Explore from here マ
クロとか、とらじさんの ^QlfN.def  のお陰なんだよなぁ、というのが正直な感
想でした。奢りも自惚れもありませんが、テストをするのにもスキルが要るんで
すよね。ああ、老人、後ろ向き。あ、元気ですよ。老人ですが。
 しかし、あたいの人生とは関係ない(とは言えないのだけど)LFNのために!
 ま、いい時間でした。ありがとうございます。
 blt2.com、いつかやりましょう。LFN関係なーし。
 というところで昨晩2時に、バタリ。バタリといくのは、元気な証拠。
 で、次の日。今日、今。
= bltの後処理用
XPにて
C:\PROGRA~1\ALMAIL32\PLUGINS\あああ~1.TXT
↓
C:\Program Files\Almail32\Plugins\あああああああああ.txt
 OK! 当たり前。
    #l #F #u #m	;なるほど。そうするものだな。
 ではせめて、このファンクションの復習。
INT 21 - Windows95 - LONG FILENAME - GET SHORT (8.3) FILENAME FOR FILE
	AX = 7160h
	CL = 01h★
	CH = SUBST expansion flag
	DS:SI -> ASCIZ long filename or path
	ES:DI -> 67-byte (possibly 128-byte) buffer for short filename
Note:	this call returns the short name for any long-filename portions of
	  the provided pathname or filename
	  (部分。つまりフルパスでなくても該当部分を返すのでしょう)
INT 21 - Windows95 - LONG FILENAME - GET CANONICAL LONG FILENAME OR PATH
	AX = 7160h
	CL = 02h★
	CH = SUBST expansion flag
	DS:SI -> ASCIZ short filename or path
	ES:DI -> 261-byte buffer for canonicalized long name
        ;│ -->                                          │
        ;│  si = ソースファイル名                       │
        ;│  di = デストネーションバッファ(261b必要)   │
        ;│  CH = SUBSTフラグ?, CL = 0:通常 1:SFN 2:LFN │
        ;│ <--                                          │
        ;│  di = フルパス名                             │
        ;│  (di.0==null:VFATシステム対応していない)     │
      とらじさん、多謝。このほうが分かりやすい。
      #02983 (13)   97/12/14 より。
 あ、言い訳の続きなのですが、そしてきっと杞憂なのでしょうが、XPでのS
FNって、動的に動くじゃない。 大昔に konno さんと試した。で、こういうの
効くの? という不安もあって。
 ま、Vzファイラで怪しい現象は経験したことがないので(うーん、基本的に
LFNのファイルを、僕はVzで弄らないからあてにならない)、大丈夫なんで
しょうけど。
 追伸:年賀状、終わりました。勢いで、としきさんの実家にも送っておきまし
た。笑ってください。スコップ団! 団長のブログを読もう!
(5655) 
5677:
Re: サンプル、多謝
 投稿者:
としき 
  2011/12/25(日) 15:28 
参照先:http://www1.hinocatv.ne.jp/toshiki/
     5676 番 文太 さんへのコメント    コメント数 2
Explore from here マクロって知りません。
誰のマクロですか?
>  追伸:年賀状、終わりました。勢いで、としきさんの実家にも送っておきまし
宛先不明で届かないほうに1カノッサ。
ちなみに、私はまだ終わっていない。たった5通だというのに・・・
      -  No.5677  -  
 このTreeへ   
コメント元:5676 へ
[リストへもどる]
 soft 
(5655) 
5678:
Re^2: サンプル、多謝
 投稿者:
文太 
  2011/12/25(日) 17:56 
     5677 番 としき さんへのコメント    コメント数 1
としきさん、
>Explore from here マクロって知りません。
 マクロじゃないですね。ファイラでした。
File menu
13	"",18,21
	"C コピー	%!%^rcp32 %[/s] %@1 %2%G"
	略
	"Explorer	%!%^explorer.exe /e, %:"
>宛先不明で届かないほうに1カノッサ。
 実家はあのままでしょう? 苗字だけみてポストに入れてくれるのでしょう?
(5655) 
5679:
blt32.asm
 投稿者:
文太 
  2011/12/27(火) 00:33 
     5678 番 文太 さんへのコメント    コメント数 1
としきさん、時間があったら見てやって下さい。
blt32.asmです。
最後の表示で失敗している。ゴミがついてくる。どうしても消せない。(>_<)
714eh, 714fhは、ちゃんとascizで文字列を返してるのに、
うまくプリントされません。(T-T) m(__)m
ml blt32.asm
lld blt32.obj
exe2com blt32.exe
 でアセンブル。
--- blt32.asm ---
;blt32.asm (blt32)残念ながら完成せず。
;INCLUDE STDIO.H
; --- macros, これは見なくて大丈夫です ---
PMAIN       MACRO                   ; プログラム開始2
CODE        SEGMENT
            ASSUME  CS:CODE, DS:CODE
            ORG     100H
START:
            ENDM
PRINT       MACRO   MSG             ;文字列の出力
            MOV     AH,9
            MOV     DX,OFFSET MSG
            INT     21H
            ENDM
RETMS       MACRO                   ;MS−DOSに戻る
            MOV     AH,4CH
            INT     21H
            ENDM
NEWLINE     MACRO                   ;改行
            putchar CR
            putchar LF
            ENDM
PUTCHAR     MACRO   ASC             ;1文字出力
            MOV     AH,2
            MOV     DL,ASC
            INT     21H
            ENDM
; --- ここから
	pmain
	mov	ax,714eh
	mov	dx,offset FILE
	call	SET
	int	21h             	;FINDFIRST
	mov 	HAND, word ptr ax
	print	BUFF+2ch
	newline
MAIN:
	mov 	bx,HAND
	mov	ax,714fh		;FINDNEXT
	call	SET
	int	21h
	jc	BYEBYE
	print	BUFF+2ch
	newline
	jmp	MAIN
BYEBYE:
	mov	bx,HAND			;HANDLE CLOSE
	mov	ax,71a1h
	int	21h
	retms
SET:	mov	cx,28h		;directory, volume 除く
	mov	si,1
	mov	di,offset BUFF
	ret
HAND	dw	?
FILE	db	'*.*',0
BUFF	db	320 dup (0)
CODE	ENDS
	END	START
(5655) 
5682:
bll.asm
 投稿者:
文太 
  2011/12/27(火) 12:22 
     5679 番 文太 さんへのコメント    コメント数 1
;--- bll.asm (元blt32.asm)---
;LFN listing
;STDIO.Hは、#03372にあり。
INCLUDE STDIO.H
	pmain
	mov	ax,714eh		;FINDFIRST
	mov	dx,offset FILE
	call	SET			;set cx, si, di
	int	21h
	cmp	ax,7100h		;error check
	je	BYE
	mov 	HAND, word ptr ax	;save handle num
	call	PRI
	newline
MAIN:
	mov 	bx,HAND
	mov	ax,714fh		;FINDNEXT
	call	SET
	int	21h
	jc	BYEBYE
	call	PRI
	newline
	jmp	MAIN
BYE:	print	ERR
BYEBYE:
	mov	bx,HAND			;HANDLE CLOSE
	mov	ax,71a1h
	int	21h
	retms
	;--- subroutines ---
SET:	mov	cx,28h			;directory, volume 除く
	mov	si,1
	mov	di,offset BUFF
	ret
PRI:	mov	bx,offset BUFF+2ch
ABC:	cmp	[bx],byte ptr 0
  	je	ABB
   	putchar	[bx]
  	inc	bx
  	jmp	ABC
ABB:	ret
HAND	dw	?
FILE	db	'*.*',0
BUFF	db	320 dup (0)
ERR	db	'Run on Windows','$'
CODE	ENDS
	END	START
(5655) 
5683:
Re: bll.asm
 投稿者:
文太 
  2011/12/27(火) 12:24 
     5682 番 文太 さんへのコメント    コメント数 2
としきさん、
 お考えでしたら、どうぞ何がいけないのかお教えください。
 ヒントでも構いません。僕は、逃げてしまいました。逃げる方法を思いついた
のが、ラッキー。1文字出力ループ(blt 仕様)で抜けました。なぜ、print マ
クロではいけないのかは、結局、分からずじまい(悔しいからMS-DOS用エラーメッ
セージでは使った。ちゃんとエラーしました)。
 とにかく、どうやら完成です。多謝。m(__)m
 正直いって、ものすごく大変でした。富士山どころか、エベレスト。
 見事に忘れてた。もともと修得してないことも多数あったのでしょう。ゼロか
ら勉強した感じ…。
 printマクロに限らず、下で何かあったら、コメントをお願いします。
 でも、たぶん、さらなる探求は今回はなし。自分に負けてはいけないから。
 すいません、掲示板の「行頭の半角カナ」エラーのテストをしています。
      -  No.5683  -  
 このTreeへ   
コメント元:5682 へ
[リストへもどる]
 soft 
(5655) 
5684:
Re^2: bll.asm
 投稿者:
文太 
  2011/12/27(火) 12:26 
     5683 番 文太 さんへのコメント    コメント数 1
C:\WINDOWS
>bll
avastSS.scr
(略)
KB2115168.log
(略)
MSCompPackV1.log
Wudf01000Inst.log
しゃくなげ.bmp
グリーン ストーン.bmp
サポテック織り.bmp
サンタフェ.bmp
シャボン.bmp
フィッシング.bmp
      -  No.5684  -  
 このTreeへ   
コメント元:5683 へ
[リストへもどる]
 soft 
(5655) 
5685:
「行頭半角カナ」エラー >konnoさん
 投稿者:
文太 
  2011/12/27(火) 12:29 
     5684 番 文太 さんへのコメント    コメント数 1
 「行頭半角カナ」エラーは、半角カナがなくても出ます。
 5682-84の3つに切り分けたら、出なくなりました。発言の長さでしょうか?
      -  No.5685  -  
 このTreeへ   
コメント元:5684 へ
[リストへもどる]
 soft 
(5655) 
5689:
Re: 「行頭半角カナ」エラー >konnoさん
 投稿者:
文太 
  2011/12/27(火) 18:36 
     5685 番 文太 さんへのコメント    コメント数 1
 おそらくc:\windowsディレクトリにある、(書けないので変な表現をしますが)
「coffeecup.bmp」を5字の全角(漢字2つカタカナ3つ)の日本語で書いたもの
がはじかれていました。
      -  No.5689  -  
 このTreeへ   
コメント元:5685 へ
[リストへもどる]
 soft 
(5655) 
5694:
Re^2: 「行頭半角カナ」エラー >konnoさん
 投稿者:
konno 
  2011/12/28(水) 00:17 
     5689 番 文太 さんへのコメント    コメント数 1
> 「coffeecup.bmp」を5字の全角(漢字2つカタカナ3つ)の日本語で書いたもの
> がはじかれていました。
 珈琲カップ.bmpがダメということですか。漢字コードがe0dbhで半角カナと同じですね。
 if ($in{'message'} =~ /^[^\x81-\x9F]*[\xA1-\xDF]|>[^\x81-\x9F]*[\xA1-\xDF]/)
   { &error("記事の行頭に半角カナは使えません"); }
これがソースです。私は正規表現をよくわかってないですが、問題ありそうですね。
調べてみます。
(5655) 
5698:
Re^3: 「行頭半角カナ」エラー >konnoさん
 投稿者:
文太 
  2011/12/28(水) 00:35 
     5694 番 konno さんへのコメント    コメント数 1
konnoさん、
> 珈琲カップ.bmpがダメということですか。漢字コードがe0dbhで半角カナと同じですね。
 なんですか。でも、書けてる。(゚o゚; それのつもりでした。
> if ($in{'message'} =~ /^[^\x81-\x9F]*[\xA1-\xDF]|>[^\x81-\x9F]*[\xA1-\xDF]/)
 これは読めません。
>これがソースです。私は正規表現をよくわかってないですが、問題ありそうですね。
>調べてみます。
 できたら、宜しくお願いします。
      -  No.5698  -  
 このTreeへ   
コメント元:5694 へ
[リストへもどる]
 soft 
(5655) 
5705:
行頭半角カナ禁止の正規表現
 投稿者:
konno 
  2011/12/29(木) 21:33 
     5698 番 文太 さんへのコメント    コメント数 1
> if ($in{'message'} =~ /^[^\x81-\x9F]*[\xA1-\xDF]|>[^\x81-\x9F]*[\xA1-\xDF]/)
これは間違いでした。
 if ($in{'message'} =~ /^[ア-ンァ-ョッー゚゙・]|>[ア-ンァ-ョッー゚゙・]/)
	{ &error("記事の行頭に半角カナは使えません"); }
これが正解のようですね。ぐぐったら、[ア-ンァ-ョッー゚゙・]が半角カナの正規表現でした。
 ^[ア-ンァ-ョッー゚゙・]  ; 行頭の半角カナ
 |         ; または
 >[ア-ンァ-ョッー゚゙・]  ; <bR>(HTMLの改行)の">"の後ろの半角カナ
これらを含んでいたらエラーを返すという動作になると思います。
">"の後ろの半角カナは行頭以外でもありえますが、手抜きです。(^^;
ということで掲示板のCGIを差し替えてみました。
(5655) 
5706:
Re: 行頭半角カナ禁止の正規表現
 投稿者:
文太 
  2011/12/29(木) 22:01 
     5705 番 konno さんへのコメント    コメント数 1
konnoさん、ありがとうございました。
 というわけで、下が問題なく上がるわけですね。
珈琲カップ.bmp
 SJISなんですね。そういうものなんですか。
      -  No.5706  -  
 このTreeへ   
コメント元:5705 へ
[リストへもどる]
 soft 
(5655) 
5707:
テスト成功
 投稿者:
文太 
  2011/12/29(木) 22:02 
     5706 番 文太 さんへのコメント 
 おめでとうございます。パチパチパチ。
      -  No.5707  -  
 このTreeへ   
コメント元:5706 へ
[リストへもどる]
 soft 
(5655) 
5687:
Re^2: bll.asm
 投稿者:
文太 
  2011/12/27(火) 16:30 
     5683 番 文太 さんへのコメント    コメント数 2
としきさん(連呼してごめんなさい)
 いちおう、結末。
 (1),  (2) の違いが分かってない、というのが原因というところまでつきとめ
ました。いつか分かる日が来るかもしれない。大半、また忘れるのでしょうね。
まとまった時間が必要。コードとかロジックでなく、それらを支える前提が。
マクロで数値を保存するのと文字列を保存するのの違いが分からなくなっていた、
というのと同種類ですね。リハビリをしているうちに(そういうのをリハビリと
は言えないけど)、人生が終わってしまうかもしれないので、自分に負けないよう、
撤退です。ありがとうございました。
;01.asm	
INCLUDE STDIO.H
	pmain
	print MSG
	newline
	retms
;MSG	db	'hello with null','$'		;(1)
MSG	db	'hello with zero',00h		;(2)
	pend
 通じているだろうと思いますが、昨晩、泣きをいれたときに起こっていたのは、
(2) の現象です。いまだ全く理解できておりませんが。
(5655) 
5688:
bll2.asm
 投稿者:
文太 
  2011/12/27(火) 18:32 
     5687 番 文太 さんへのコメント    コメント数 1
 自分に負けているのさ、とか、言い訳なし。(素直にあがってください)
C:\WINDOWS
>bll2
(略)
"羽毛.bmp"
"隅田川.bmp"
"青いレース編み 16.bmp"
;--- bll2.asm ---
;LFN listing with quote " "
;STDIO.Hは、#03372にあり。
INCLUDE STDIO.H
	pmain
	mov	ax,714eh		;FINDFIRST
	mov	dx,offset FILE
	call	SET			;set cx, si, di
	int	21h
	cmp	ax,7100h		;error check
	je	BYE
	mov 	HAND, word ptr ax	;save handle num
	putchar	'"'
	call	PRI
	putchar	'"'
	newline
MAIN:
	mov 	bx,HAND
	mov	ax,714fh		;FINDNEXT
	call	SET
	int	21h
	jc	BYEBYE
	putchar	'"'
	call	PRI
	putchar	'"'
	newline
	jmp	MAIN
BYE:	print	ERR
BYEBYE:
	mov	bx,HAND			;HANDLE CLOSE
	mov	ax,71a1h
	int	21h
	retms
	;--- subroutines ---
SET:	mov	cx,28h			;directory, volume 除く
	mov	si,1
	mov	di,offset BUFF
	ret
PRI:	mov	bx,offset BUFF+2ch
ABC:	cmp	[bx],byte ptr 0
  	je	ABB
   	putchar	[bx]
  	inc	bx
  	jmp	ABC
ABB:	ret
HAND	dw	?
FILE	db	'*.*',0
BUFF	db	320 dup (0)
ERR	db	'Run on Windows','$'
CODE	ENDS
	END	START
(5655) 
5690:
blf.asm
 投稿者:
文太 
  2011/12/27(火) 21:22 
     5688 番 文太 さんへのコメント    コメント数 6
 もう言い訳もございません。完全な負け組です。
 でも、最長のアセンブラ・コードで、エベレストに2回登頂成功した気分です。
C:\BIN9
>blf
C:\BIN9\A.BAT
C:\BIN9\BLF.ASM
C:\BIN9\BLF.COM
C:\BIN9\BLL.ASM
C:\BIN9\BLL.COM
C:\BIN9\BLL2.ASM
C:\BIN9\BLL2.COM
C:\BIN9\BLT.ASM
C:\BIN9\MEMO.TXT
C:\BIN9\ML.ERR
C:\BIN9\STDIO.H
--------------------------------------------------------------
;blf.asm (fullpath blt) fullpath listing
INCLUDE STDIO.H
	pmain
;get current disk
	mov	ah,19h
 	int	21h		;-> disk num in AL
 	push	ax		;will be used later, & 16 reg (AL dame)
 	add	al,'A'		;num2char
 	mov	BUFF, byte ptr al
 	pop	ax
;get current directory
 	mov	ah,47h
	add	al,1		;AL num different! A=0 (19h) & A=1 (47h)
 	mov	dl,al
 	mov	si,offset BUFF+3
 	int	21h
;check & flag set
	cmp	BUFF[3],0
	jne	A1
	jmp	FIND1
A1:	mov	FLAG, byte ptr 1	;if root 0, if not root 1 (=add '\')
;findfirst
FIND1:	mov	ah,4eh
	mov	dx,offset FILE
	mov	cx,1h			;no directory but read-only OK *
	int	21h
	jc	ERR
	call	PRI_DRV
	call	DISP
;findnext
MAIN:	mov	ah,4fh
	int	21h
	jc	BYEBYE
	call	PRI_DRV
	call	DISP
	jmp	MAIN
BYEBYE:	retms
ERR:	print ERR_MSG
	retms
	;--- subroutines ---
DISP:	mov	ah,6			;-
	mov	si,offset 80h + 1Eh  ;DTA in PSP (starts at 80h, in 100h org)
	cld			     ;and found ASCIZ str = filename
 				     ;1Eh 13 BYTEs ASCIZ filename+extension
DISP_MAIN:
	lodsb
	cmp	al,0
	jz	DISP_END
	mov	dl,al			;-
	int	21h			;DIRECT CONSOLE OUTPUT
	jmp	DISP_MAIN
DISP_END:
	newline
	ret
PRI_DRV:
	mov	bx,offset BUFF
B1:	cmp	[bx],byte ptr 0
  	je	B2
   	putchar	[bx]
  	inc	bx
  	jmp	B1
;if not root, put '\'
B2:	cmp	FLAG,0
	je	B3
	putchar	'\'
B3:	ret
FILE	db	'*.*',0
BUFF	db	?,':\',64 dup(0)
FLAG	db	0
ERR_MSG	db	'File not Found','$'
	pend
(5655) 
5691:
Re: blf.asm
 投稿者:
としき 
  2011/12/27(火) 23:11 
参照先:http://www1.hinocatv.ne.jp/toshiki/
     5690 番 文太 さんへのコメント    コメント数 1
えぇっと、私は年末酔いどれモードだったんですが。
文太さんは自己解決してしまいました。
めでたしめでたし。
ちなみに、実家の住所は変わっていないんですけどね。
転居届けを出して1年たつと郵便局は旧住所宛の一切の配達を拒否してくださる
のです。場合によってはこれは不便。
まぁ、音信不通を演出することも可能かもしれませんが。
      -  No.5691  -  
 このTreeへ   
コメント元:5690 へ
[リストへもどる]
 soft 
(5655) 
5696:
Re^2: blf.asm
 投稿者:
文太 
  2011/12/28(水) 00:30 
     5691 番 としき さんへのコメント 
としきさん
>ちなみに、実家の住所は変わっていないんですけどね。
>転居届けを出して1年たつと郵便局は旧住所宛の一切の配達を拒否してくださる
>のです。場合によってはこれは不便。
 なるほどぉ。元日に備えて、そうとう綿密な仕分けをしてるみたいですね。
 じゃあ、機会があったら(1月8日以降)、ポストに入れておきますね。
 見てね、スコップ団。
      -  No.5696  -  
 このTreeへ   
コメント元:5691 へ
[リストへもどる]
 soft 
(5655) 
5692:
Re: blf.asm
 投稿者:
konno 
  2011/12/28(水) 00:07 
     5690 番 文太 さんへのコメント    コメント数 2
文太さん、こんばんは。
ずっと放置状態でたまたま覗いたら、怒涛の書き込みに圧倒されてしまいました。
bltのLFN版が完成したんですね。すばらしいです。
私もやってみようと思ったんですが、見事に挫折してしまいました。(>_<)
blt から bll bll2 blf と、凄い進化ですね。私も参考にさせていただきます。
おかげで久しぶりにVZに接する機会が増えました。
この連休中の楽しみが増えてうれしいです。(^_^)
      -  No.5692  -  
 このTreeへ   
コメント元:5690 へ
[リストへもどる]
 soft 
(5655) 
5697:
Re^2: blf.asm
 投稿者:
文太 
  2011/12/28(水) 00:30 
     5692 番 konno さんへのコメント    コメント数 1
konnoさん、こんばんは。
>ずっと放置状態でたまたま覗いたら、怒涛の書き込みに圧倒されてしまいました。
 怒涛ですよね、困ったものです。
 でも、としきさんのおかげで、少し自信を取り戻したかもしれない。俺は半端
じゃないんだ、やればできるんだ、とか。ウソウソ。
 昼飯くったり、布団ほしたり、年賀状を書いたり。楽しいですね、チャット状態
の掲示板。
>bltのLFN版が完成したんですね。すばらしいです。
 ええ、僕も驚きました。
>私もやってみようと思ったんですが、見事に挫折してしまいました。(>_<)
 これは嘘でしょうけど、お気持ちに感謝します。m(__)m
>おかげで久しぶりにVZに接する機会が増えました。
 たぶん離れられてるのだろうな、と思ってました。仕方ないですよね。
 たまには戻って下さいね。悪くないですよ、バッチファイルとか。
 もしお時間がおありでしたら、「半角カナエラー」だけ見てやっていただけま
すか。それで、余計に怒涛的雰囲気になりました。
 あ、どっかでジャンプを2回繰り返してるのは、下手丸だしですね。気づきました。
      -  No.5697  -  
 このTreeへ   
コメント元:5692 へ
[リストへもどる]
 soft 
(5655) 
5699:
Re^3: blf.asm
 投稿者:
としき@会社 
  2011/12/28(水) 11:16 
参照先:http://www1.hinocatv.ne.jp/toshiki/
     5697 番 文太 さんへのコメント    コメント数 1
さすがに仕事中は酔いどれていません。
>  ええ、僕も驚きました。
私には全く驚きはありません。
文太さんなら必ず完成できると思っていましたから。
      -  No.5699  -  
 このTreeへ   
コメント元:5697 へ
[リストへもどる]
 soft 
(5655) 
5700:
ファイル・リスティング
 投稿者:
文太 
  2011/12/28(水) 12:52 
     5699 番 としき@会社 さんへのコメント 
としきさん
>文太さんなら必ず完成できると思っていましたから。
 いえ、完成させるつもり、いえ作り始めるつもり、があると思っていませんで
したから。そのつもりだったら、挫折していたでしょう(そんなに暗くなるなよ)。
 いずれせよ、ありがとう。楽しかった。布団干し、僕も同タイミングでやって
ました。あれで寝ると、快眠が得られる。あと散歩も大事。じいさんだなぁ。でも、
みんな、じいさんになるんですよ。
 頭脳労働者、がんばるね。
 為念。
DC
>19991/19991 文太             RE:dirlist, tosfind, bmama 関連
>(15)   02/07/04
 こんな頃から、こだわっていたのですよぉ。
 同趣旨です。
>SFNディレクトリ・リスティング
>----- SFNFPDIR.SED -----
>LFNディレクトリ・リスティング(dirlist.exeを使おう!)
>----- LFNFPDIR.AWK -----
 お疲れさま。>自分
(5655) 
5724:
blta.asm (オプション付き改造版)
 投稿者:
konno 
  2012/01/02(月) 18:04 
     5692 番 konno さんへのコメント    コメント数 1
> blt から bll bll2 blf と、凄い進化ですね。私も参考にさせていただきます。
> この連休中の楽しみが増えてうれしいです。(^_^)
リハビリを兼ねて弄ってみました。
LFN化は挫折しましたが、オプションの追加くらいなら出来そうだなということで、
BLT All (opt) で、BLTA.ASM としてみました。
VTDOS|C:\VZ\T>BLTA.COM ?
BLTA.COM file lister for Win32 DOS   Ver0.30k  2012-01-02
  usage  BLTA opt filename
    opt  D or d      Double quote
    opt  P or p      full Path
    opt  F or f      File name opt
    opt  H or h or ? Help usage
このように、最初の引数が動作のオプションで、何もつけなければ、Bll と同じ動作
オプションは複数同時指定できます。"-" や "/" は無視します。
第一引数に "f" を指定して半角スペース1個空け第二引数にファイル名を指定できます。
VTDOS|C:\VZ\T>BLTA.COM f blt*.*
BLT.000
BLT1.ASM
BLT1.COM
BLT1.EXE
BLT1.LST
BLT2.ASM
blt2.com
blt2.exe
blt2.map
BLTA.000
BLTA.ASM
BLTA.COM
blta.exe
BLTA.MAP
こんな感じになります。どうでしょうか。
2012-01-03 追記
ソースは長いので、テスト板#test47 に貼り付けました。
(5655) 
5725:
Re: blta.asm (オプション付き改造版)
 投稿者:
文太 
  2012/01/02(月) 23:21 
     5724 番 konno さんへのコメント    コメント数 1
konnoさん、サンプル提示ありがとうございました。
 しかし、けっこうオプションその他の記述文法が面倒になりますね。
 やはり、色々あるようです。
C:\BIN9		(1)
>blta f		;finename only では、対象ファイルが必要?
		;f を filename と理解してるつもりなのかなぁ?
C:\BIN9
>blta fpd
"C:\BIN9\"	;順番だよ、矛盾では答え不定になる ?
C:\BIN9
>blta fd	;だから、順番だよ、きっと
""
C:\BIN9		(2)
>blta aaa	;何のつもり? いえ、前ヴァージョンの不明なバグを
以下でる。	;を回避する方法なんですが、-fなし (オプションなし)だと
		;バグ回避ができるんだなぁ、と。
 なんだか意地悪みたいなのですが、ちょっと途方に暮れました。
 元のコードにこれらを発現させる要因があるのかな ??? (1)(2)は、
矛盾してるように思えるし、、、。
C:\WINDOWS
>c:\bin9\blta -f *.bmp
しゃくなげ.bmp
グリーン ストーン.bmp
サポテック織り.bmp
 これは、できたほうがいいな、と素直に納得。
 おねだりもリクエストもバーアップ依頼も何もないですが。
(5655) 
5726:
Re^2: blta.asm (オプション付き改造版)
 投稿者:
konno 
  2012/01/03(火) 00:52 
     5725 番 文太 さんへのコメント    コメント数 1
> >blta f		;finename only では、対象ファイルが必要?
> 		;f を filename と理解してるつもりなのかなぁ?
これは仕様です。オプション f を付けた時は引数にファイルネームも必要です。
 f はfinename only ではなく、第二引数にファイルネームを指定するための
オプションです。誤解は無いと思いますが。
> >blta fpd
> "C:\BIN9\"	;順番だよ、矛盾では答え不定になる ?
これも f オプションの仕様による挙動です。
> >blta fd	;だから、順番だよ、きっと
> ""
だから、これも f オプションの仕様による挙動だってば。
> >blta aaa	;何のつもり? いえ、前ヴァージョンの不明なバグを
> 以下でる。	;を回避する方法なんですが、-fなし (オプションなし)だと
> 		;バグ回避ができるんだなぁ、と。
これはバグみたいですが、仕様ということにしておきましょう。(^^;
>  なんだか意地悪みたいなのですが、ちょっと途方に暮れました。
>  元のコードにこれらを発現させる要因があるのかな ??? (1)(2)は、
> 矛盾してるように思えるし、、、。
まあ、改造の初版なので、いろいろ手抜きやバグはあります。(^^;
第二引数の前は半角スペース1個でなければ誤動作するとかね。
もう少し手抜きの部分をキチンとやってみますか。
>  これは、できたほうがいいな、と素直に納得。
第二引数でファイル名指定は今回一番苦労したところです。
でもやってみたら意外と使い道がありそうなので、苦労した甲斐はあったかな。
まあ、結局は例のアセンブラ入門のサイトの例題からパクッたんですが。(^^;
>  おねだりもリクエストもバーアップ依頼も何もないですが。
私の趣味に合わせた改造版なので、文太さんの使い方には合わないかもしれません。
スキルも無いので手抜き部分を直して終了ですかね。
(5655) 
5727:
blta.asm ver0.31k (オプション付き改造版)
 投稿者:
konno 
  2012/01/04(水) 02:44 
     5726 番 konno さんへのコメント    コメント数 1
blta.asm (オプション付き改造版)の第二版をテスト板#test48 にUPしました。
また、#5724 のソースも長すぎるので、テスト板#test47 に移動しました。
> > >blta fpd
> > "C:\BIN9\"	;順番だよ、矛盾では答え不定になる ?
> これも f オプションの仕様による挙動です。
これはバグでしたね。この場合、usage を出すように修正しました。
> > >blta fd	;だから、順番だよ、きっと
> > ""
これも同じ。 usage を出すようにしました。
> > >blta aaa	;何のつもり? いえ、前ヴァージョンの不明なバグを
これも同じですね。 usage を出すようにしました。
> >  元のコードにこれらを発現させる要因があるのかな ???
元にしたソースは#5702 なんですが、たぶんここ?
FIND1:	mov	ax,714eh
	mov	dx,offset FILE
	call	SET			;set cx, si, di
	int	21h
	cmp	ax,7100h		;error check  ★
	je	BYE               ;             ★
こうでしょうか。File Not Found を表示するようになりました。
FIND1:	mov	ax,714eh
	mov	dx,offset FILE1
	cmp	OPT_F,0
	je	FI0
	mov	word ptr dx,FILE2
FI0:	call	SET				;set cx, si, di
	int	21h
	jc	BYE				;not found
;	cmp	ax,7100h			;error check
;	je	BYE
(5655) 
5728:
Re: blta.asm ver0.31k (オプション付き改造版)
 投稿者:
文太 
  2012/01/04(水) 11:10 
     5727 番 konno さんへのコメント    コメント数 1
konnoさん、ありがとうございました。
 とりあえず、以下は、「cmp ax,7100h」というところだけのテストです。
 確かに、ここ、バグってました。多謝。
 空のディレクトリでテスト。OK!
;---------------------------------------------------------------------------
INCLUDE STDIO.H
	pmain
FIND1:	mov	ax,714eh
	mov	dx,offset FILE	; call setを元に戻してます。
	mov	cx,0		;■ここはこうしましょう。
	mov	si,1		;■バッチ用でsystemやhiddenを対象って
	mov	di,offset BUFF_F	;そもそも、、、、。
	int	21h
;	cmp	ax,7100h	;error check  ★ はい、ここがバグでした。m(__)m
;	je	BYE             ;             ★ よくぞ見つけてくれました。
	jc	BYE		;	   ★ さすが!
;--no error
	print	MSG1
	jmp	FIN
;--no return 7100h
BYE:	print	MSG2
FIN:	newline
	retms
MSG1		db	'OK, no error$'
MSG2		db	'no return$'
FILE		db	'*.*',0
BUFF_F		db	320 dup (0)
	pend
(5655) 
5729:
Re^2: blta.asm ver0.31k (オプション付き改造版)
 投稿者:
konno 
  2012/01/04(水) 12:44 
     5728 番 文太 さんへのコメント    コメント数 1
>  とりあえず、以下は、「cmp ax,7100h」というところだけのテストです。
>  確かに、ここ、バグってました。多謝。
たぶんコピペして修正を忘れたのでしょうね。私はよくやります。(^^;
アセンブル環境の無い人の動作テスト用に blta.com を ish にして、
テスト板#test49 に置いておきました。
需要は無いと思うけど。(^^;
(5655) 
5730:
Re^3: blta.asm ver0.31k (オプション付き改造版)
 投稿者:
文太 
  2012/01/04(水) 14:01 
     5729 番 konno さんへのコメント    コメント数 1
konnoさん、
 オプション処理、引数処理の雛形ありがとうございました。実はまだ、精査・
熟読はできていないのですが。
 あれはコピペですが、明らかに僕の思考不足でした。なんでわざわざテストし
たかというと、WinME, WinXP で挙動が違うのかと勘違いしたからでした。 ファ
ンクションの仕様どおりだよ >文太。 いけないのは、君 >文太。
>需要は無いと思うけど。(^^;
 ないでしょうね。マクロだとそのまま以外ないのですが、明日夢だと、コンパ
イルしてもらわないと動かせないから(誰も動かさないけど)、手続きが面倒は
面倒ですね。そうか、ish ボードがありましたね。
 ま、本人にとってのみの、実用を兼ねた趣味ですからね。
 ありがとうございました。
      -  No.5730  -  
 このTreeへ   
コメント元:5729 へ
[リストへもどる]
 soft 
(5655) 
5731:
Re^4: blta.asm ver0.31k (オプション付き改造版)
 投稿者:
文太 
  2012/01/04(水) 14:17 
     5730 番 文太 さんへのコメント    コメント数 1
konnoさん、
C:\BIN9
>blta
BLTA.COM file lister for Win32 DOS   Ver0.31k  2012-01-04
  usage  BLTA opt filename
 元のバグを引きずっているのか、僕の環境のせいか、、、?
 konnoさんに直す道義的責任も何もありませんが、これ、起こりませんか?
 あれぇ〜? >blt aaa (オリジナル blt, ヘルプ付き)はこれの回避策だった
のですが、今や正しくヘルプが出てしまい、逃げようもなくなった。どこにある
んだ、このバグ? bltにも潜在的にあるということです。で、僕はヘルプを取って
しまおうと思ってます。PSPの計算が間違ってるのかなぁ。どこで?!
 ish 解凍に手間取った、、、。
(5655) 
5732:
blta.asm ver0.40k 
 投稿者:
konno 
  2012/01/04(水) 20:58 
     5731 番 文太 さんへのコメント    コメント数 1
>  元のバグを引きずっているのか、僕の環境のせいか、、、?
>  konnoさんに直す道義的責任も何もありませんが、これ、起こりませんか?
えーと、意味がわかりません。バグが無くなったということでしょうか。
>  ish 解凍に手間取った、、、。
ふふふ、私はVZファイラーのメニューに登録してあるのでいつでもワンタッチです。
・・・と思ったら、VTDOSでは解凍に失敗しますね。焦った。なぜだろう。
ということで、BLTA ver0.40k です。
blta.asm テスト板#test50 に置きました。
blta.com テスト板#test51 に置きました。
サブルーチンを増やし、ソースも実行ファイルも小さくなりました。
Win32 でも 16ビットDOS でも動くと思いますが、16ビットDOS では試していません。
誰か試してもらえるとありがたいです。
(5655) 
5736:
Re: blta.asm ver0.40k 
 投稿者:
文太 
  2012/01/05(木) 00:20 
     5732 番 konno さんへのコメント    コメント数 1
konnoさん
 精力的にやられてますね。頼もしいかぎりです。がんばってくださいね。
 さて、
>>  元のバグを引きずっているのか、僕の環境のせいか、、、?
>えーと、意味がわかりません。バグが無くなったということでしょうか。
 通じないということは、僕の環境のせいなのでしょうか。
C:\
>blta
BLTA.COM file lister for all DOS   Ver0.40k
  usage  BLTA opt filename
 以下、略(もちろん、ファイル・リストなし)
 これって仕様ですか?
 16ビットのドコモバでも同じでした。
 以下をそのまま試していただけますか。
C:\
>blta /? ココと
BLTA.COM file lister for all DOS   Ver0.40k
  usage  BLTA opt filename
    opt  D or d      Double quote
    opt  P or p      full Path
    opt  F or f      File name opt
    opt  H or h or ? Help usage
C:\
>blta ココです。
BLTA.COM file lister for all DOS   Ver0.40k
  usage  BLTA opt filename
    opt  D or d      Double quote
    opt  P or p      full Path
    opt  F or f      File name opt
    opt  H or h or ? Help usage
 僕は、オリジナルのバグをまだ引きずっていると想像しています。
 それで、blt, bltf, bll では、DTA参照ルーチンを外しています。
 外す前の回避策が、>blt aaa でした。
 Vzの常駐が関係しますでしょうか?
 もちろん(でもないかもしれませんが)、VTDOS 環境ではありません。
(5655) 
5737:
Re^2: blta のバグ
 投稿者:
konno 
  2012/01/05(木) 01:06 
     5736 番 文太 さんへのコメント    コメント数 1
> >blta /? ココと
> >blta ココです。
DOS窓常駐VZで試したら、わかりました。動作がおかしくなるんですね。
非常駐VZやVTDOS環境では現象が出ません。おもしろいなぁ。
・・・メモリのどこかを壊してるんでしょうかねぇ。
調べてみます。
      -  No.5737  -  
 このTreeへ   
コメント元:5736 へ
[リストへもどる]
 soft 
(5655) 
5738:
Re^3: blta のバグ
 投稿者:
文太 
  2012/01/06(金) 02:45 
     5737 番 konno さんへのコメント    コメント数 1
konnoさん、
 こんなことに引きずり込んでしまったのは僕のようでもあるし、konno さんが
僕を引きずり込んだようでもあるし、、、。
 とにかく、いくらか試しました。ものすごく基本的なことなんだろう、とは想
像しているのですが、、、。
>DOS窓常駐VZで試したら、わかりました。動作がおかしくなるんですね。
 僕も、それぐらい深いのかと思っていて逃げることにしたのですが、Vz常駐
は関係ないようです。そもそもVzは関係ないようです。
>非常駐VZやVTDOS環境では現象が出ません。おもしろいなぁ。
 ほんとですか? 非常駐でも出ましたけれど。XPですが。
>・・・メモリのどこかを壊してるんでしょうかねぇ。
 うーん、分かりません。
>調べてみます。
 無理をなさいませんように。でもご存じかと思うのですが、僕は、このライン
から逃げることにしました。 DTA参照から。でも、konno版は、参照しないと
オプションが効かないのだと思います。ま、できる範囲はやってみるか、という
ところです。引数処理の雛形としては、不安なところが残るし、と。
 まず、実験結果から。Vzなし、@XP。
C:\BIN9
>blt /?
 /? (1)
    BLT.COM     List 
    BLTF.COM    List fullpath 
    BLL.COM     Long 
    BLL2.COM    Long + quote 
    BLLF.COM    Long fullpath 
    BLLF2.COM   Long fullpath + quote 
 A? (2)
C:\BIN9
>blt (3)
(4)
    BLT.COM     List 
    BLTF.COM    List fullpath 
    BLL.COM     Long 
    BLL2.COM    Long + quote 
    BLLF.COM    Long fullpath 
    BLLF2.COM   Long fullpath + quote 
(5)
C:\BIN9
>
 上は、Vzなしでの結果です(@XP)。なんだか、(3) のときに、(1) の
DTAが残ったままみたいじゃないか、と思ったからです。それで、(2) のよう
に、"/" を消してみることにしてみたのです。でも、駄目。
 (1),(2)  (4),(5) は、以下のコードで、引数の状態を示しています。(4),(5)
であるのに、上の結果は、、、、困ったものです。
INCLUDE STDIO.H
	CODE	SEGMENT
	ASSUME	CS:CODE, DS:CODE, ES:CODE, SS:CODE
	org	100h
;-----------------------------------------------------------------
START:	mov	bx,80h
	add	bl,[bx]
	inc	bx
	mov	[bx],byte ptr '$'
	mov	ah,9		;print
	mov	dx,81h
	int	21h
	newline
	mov	bx, 82h
	cmp byte ptr [bx],'/'
	je	USAGE
	cmp byte ptr [bx],'-'
	je	USAGE
	jmp	normal
USAGE:	print	help_usage
	newline
	mov	bx, 82h
	mov byte ptr [bx],'A'
	mov	ah,9		;print、'/'を'A'にしてみる
	mov	dx,81h
	int	21h
	newline
	retms
;-----------------------------------------------------------------
normal:	mov	ah,4eh			;FINDFIRST
 以下は変更なし。
 僕には、何がいけないのか、さっぱり分かりませんでした。bltプロジェクト
としては逃げればいいのですが、あまりに典型的な引数処理なので、先に進めな
いよな、という思いはありまして。
 >blt と引数なしがデフォなアプリが特殊なんですかねぇ。
 眠いのに、明日(今日)があるのに、夜中にがんばりました。
 万が一、楽しい気分が台無しだ、という場合、申し訳ありません。でも、これ
も、人生ではありです。逃げるのもあり。
 とはいえ、ものすごく、単純なミスという気もしてます。
(5655) 
5739:
Re^4: blta のバグ
 投稿者:
konno 
  2012/01/07(土) 00:23 
     5738 番 文太 さんへのコメント    コメント数 1
文太さん
>  こんなことに引きずり込んでしまったのは僕のようでもあるし、konno さんが
> 僕を引きずり込んだようでもあるし、、、。
よかれと思ってしたことが、かえって新たな悩みを増やしてしまいましたね。
私はもう完全に趣味的におきらくにやってますので。
>  僕も、それぐらい深いのかと思っていて逃げることにしたのですが、Vz常駐
> は関係ないようです。そもそもVzは関係ないようです。
なるほど、とすると、VZではなく、DOSの何かを壊してるのかなぁ。
> >非常駐VZやVTDOS環境では現象が出ません。おもしろいなぁ。
>  ほんとですか? 非常駐でも出ましたけれど。XPですが。
これは本当です。もっとも、非常駐VZといっても擬似常駐モードですが。
この辺にヒントがあるかもしれないですね。
> DTAが残ったままみたいじゃないか、と思ったからです。それで、(2) のよう
> に、"/" を消してみることにしてみたのです。でも、駄目。
私もこれを疑ってみました。
> START:	mov	bx,80h
> 	add	bl,[bx]
> 	inc	bx
> 	mov	[bx],byte ptr '$'    ;★ここでDTAに書き込んでいる
これが問題なのかと思って、DTAをコピーする方法にしてみましたが、変わりません。
>  眠いのに、明日(今日)があるのに、夜中にがんばりました。
お疲れ様です。(^^;
私も仕事が始まってしまったので、少しペースを落として、のんびりやっていきます。
ところで、掲示板の表示がおかしいのかな?
C:\BIN9>blt
これ、ちゃんと1行で表示できてるかな。
(5655) 
5740:
Re^5: blta/blt のバグ
 投稿者:
文太 
  2012/01/07(土) 11:24 
     5739 番 konno さんへのコメント    コメント数 1
konnoさん、
>よかれと思ってしたことが、かえって新たな悩みを増やしてしまいましたね。
 すいませんね、引きずり込んでしまったようで。
>私はもう完全に趣味的におきらくにやってますので。
 ええ、どうぞ、どうぞ。
>> に、"/" を消してみることにしてみたのです。でも、駄目。
>私もこれを疑ってみました。
 言葉で通じるか分からないのですが、 引数文字列を print して、そして cmp
するところの bx を putchar したら、何と、引数文字列が空なのに、bx に '/'
が入っているという怪現象を見て、もう撤退だな、と思いました。割とさっきの
発見です。
 逃げるには、konno版の場合、僕の最初の方法、argcを0かどうかの判定を最初
に入れる、これで逃げられるとは思います。本質的な問題解決ではありませんが。
>これが問題なのかと思って、DTAをコピーする方法にしてみましたが、変わりません。
 そうですよね、僕もそれを考えるだけは考えました。
 その結果かぁ、やっぱり。
>私も仕事が始まってしまったので、少しペースを落として、のんびりやっていきます。
 どうぞ、どうぞ。
>ところで、掲示板の表示がおかしいのかな?
>C:\BIN9>blt
>これ、ちゃんと1行で表示できてるかな。
 できてますよ。僕のvzak.bat(vz起動バッチ)では
PROMPT $E[1m$P$G
 となっているので、標準で、以下のMS-DOSコマンド入力待ち状態の表示なんです。
 こういうことじゃないですか?
C:\
>
 MS-DOSに命令するのがカレントがどこでも、行頭から始まりたいからです。趣味
です。
      -  No.5740  -  
 このTreeへ   
コメント元:5739 へ
[リストへもどる]
 soft 
(5655) 
5741:
問題の性格
 投稿者:
文太 
  2012/01/07(土) 18:25 
     5740 番 文太 さんへのコメント    コメント数 1
問題の性格
 纏めておきます。僕は解決を諦めたのですが。でも、分かる方は、お教えください。
 com モデルでは、メモリにロードされ、プログラムが実行されるとき、そのプ
ログラムの先頭 100h bytes に、PSPが MS-DOS によって付けられる。そして、
その  80h バイト目に引数の文字数が(リダイレクトとかパイプとか含まず)、
81h バイト目から引数の文字列そのものが、それぞれ格納される。プログラムは、
この 81hバイト目以降をいろいろスキャンすることでオプション指定などを読みと
る。が、挙動が変。これが問題。
C:\BIN9>test
normal
C:\BIN9>test /
option /
C:\BIN9>test
option /	;ココが変。normalって出て欲しい。「/」を付けてないのだから。
C:\BIN9>
 という結果になる。どこにプログラムミス、あるいはファンクション、あるいは
コマンドの仕様の読みおとし、その他の誤動作誘発の原因があるのか(BIN9は意味
なしです)。
 こういうことになると思います。
 備忘録です。Vzの存在、Windows(MS-DOS)のヴァージョン等に関係なく起こる
ので(VTDOSだと起こらないらしい)、以下のコードのどこかに、コードの前提のど
こかに、ミスがあるはず。
;--- macros ---
CR          EQU     0DH
LF          EQU     0AH
NEWLINE     MACRO                   ;改行
            putchar CR
            putchar LF
            ENDM
PUTCHAR     MACRO   ASC             ;1文字出力
            MOV     AH,2
            MOV     DL,ASC
            INT     21H
            ENDM
RETMS       MACRO                   ;MS−DOSに戻る
            MOV     AH,4CH
            INT     21H
            ENDM
PRINT       MACRO   MSG             ;文字列の出力
            MOV     AH,9
            MOV     DX,OFFSET MSG
            INT     21H
            ENDM
;--- test.asm ---
	CODE	SEGMENT
	ASSUME	CS:CODE, DS:CODE, ES:CODE, SS:CODE
	org	100h
START:	mov	bx,82h		;argv+1
	cmp byte ptr [bx],'/'	;比較
	je	USAGE		;等しい
	jmp	NORMAL		;等しくない
USAGE:	print	MSG_OPT		;等しい場合
	newline
	retms
NORMAL:	print	MSG_OK		;等しくない場合
	newline
	retms
MSG_OPT		db 'option /$'
MSG_OK		db 'normal$'
CODE	ENDS
	END	START
(5655) 
5742:
Re: 問題の性格
 投稿者:
としき 
  2012/01/07(土) 23:45 
参照先:http://www1.hinocatv.ne.jp/toshiki/
     5741 番 文太 さんへのコメント    コメント数 1
>  纏めておきます。僕は解決を諦めたのですが。でも、分かる方は、お教えください。
解決策としては、80hの文字列の長さパラメータを使うというのがスジでしょう。
原因は、各種コマンドインタプリタ(DOSのバージョン違いを含めて)においての
非互換性、といったところでしょうか。
> C:\BIN9>test
> normal
> 
> C:\BIN9>test /
> option /
> 
> C:\BIN9>test
> option /	;ココが変。normalって出て欲しい。「/」を付けてないのだから。
> 
> C:\BIN9>
この実行例において、3回目のコマンド入力では全くオプションをつけていない
ことと思います。試しに、実行ファイル名の後ろに、ただの半角空白を3文字か
5文字か、付けてみました。すなわち
1回目「test」
2回目「test /」
3回目「test」
4回目「test   」
と入力したときの結果は以下の通り。
3回目:
生DOS3.1(ポケ3):「option /」
WinXPのcommand.com:「option /」
VTDOS             :「normal」
4回目:
生DOS3.1(ポケ3):「normal」
WinXPのcommand.com:「option /」
VTDOS             :「normal」
この結果はVzの常駐と非常駐にかかわらず一定でした。
モバギでどのような結果になるか、非常に興味があります。
また、Vzのバージョンによっては、常駐と非常駐でも変化するのかもしれません。
特に、konnoさんの常駐していないけど常駐もどきになるバージョンでどうなるか
は予測がつきません。konnoさんには、可能な範囲で、いろいろなVzのバージョン
と実行環境の組み合わせで試してみていただきたいと思います。
(5655) 
5743:
Re^2: 問題の性格
 投稿者:
文太 
  2012/01/08(日) 00:56 
     5742 番 としき さんへのコメント    コメント数 1
としきさん、ありがとうございました。
>解決策としては、80hの文字列の長さパラメータを使うというのがスジでしょう。
 やっぱりそうですか。
>原因は、各種コマンドインタプリタ(DOSのバージョン違いを含めて)においての
>非互換性、といったところでしょうか。
 のようですね。
> C:\BIN9>test	;【3回目】
> option /	;ココが変。normalって出て欲しい。「/」を付けてないのだから。
>試しに、実行ファイル名の後ろに、ただの半角空白を3文字か5文字か、付けてみ
>ました。【4回目】 すなわち
1回目「test」
2回目「test /」
3回目「test」
4回目「test   」
と入力したときの結果は以下の通り。
中略。
参りましたねぇ。まさか、こんなこととは。自信もてよなぁ、>自分。
4回目:
生DOS3.1(ポケ3):「normal」
WinXPのcommand.com:「option /」
VTDOS             :「normal」
MS-DOS6.2(モバ) :「normal」★
 ただし、空白3〜4個でないと(たとえばaaa)、XPでは
空白       :「option /」
aaa        :「normal」
 となりました。スペースというのはスキップするか、切れてるよ、の判断に使
われるものなので(MS-DOS では)、ちょっと処理が特殊なんでしょうね。
 引数なしで実行、つまり、たとえば内部的に "*.*"  にしてるのがそれほど特
殊ではないと思い直したけど(たとえば >dir)、こんな場合には、argc チェッ
ク併用が吉、ということですね。
 僕は、Vzの存在が関与していないと考えている(いた)ので、いつも >vz -z 
で常駐を外してチェックしてきました。
 いずれにせよ、ポケ3のおかげで、なんかすっきりしました。
 としきさん、ありがとうございました。m(__)m
 しかし、アーティクルのタイトル、すごいな。自然言語の曖昧性。
(5655) 
5744:
問題はDOSの手抜きだった & Ver0.41k
 投稿者:
konno 
  2012/01/08(日) 02:22 
     5743 番 文太 さんへのコメント    コメント数 1
問題解決しました。
> >解決策としては、80hの文字列の長さパラメータを使うというのがスジでしょう。
やはり原因はこれでした。さすがとしきさん。
START:
	mov	bx,80h          	;↓引数をASCIIZにする
	add	bl,[bx]			;引数のサイズ取得
	inc	bx
	cmp	bx,83h			;★ 引数が無い時
	jb	normal			;★
	mov	[bx],byte ptr 0 	;引数終わりの0Dhをnullに
この★を追加したらばっちりでした。
ヒントは「アセンブラ入門」の引数を表示するプログラム
http://www5c.biglobe.ne.jp/~ecb/assembler2/assembler10.html
で、これはキチンと引数の文字列を表示しています。
どうやら、DOSは、引数が無い場合、引数エリアのメモリをクリアしていないようです。
なんという手抜き!!
おそらくVTDOSと擬似常駐VZの環境ではクリアされていたということでしょうね。
スペースによる違いはスペースまで読むか無視するかという動作の非互換性ですね。
・・・つまり、私のタコバグだったということです。お粗末でした。m(__)m
ということで、テスト板 #test52 に バグ修正版 Ver0.41k を置いておきました。
(5655) 
5745:
Re: 問題はDOSの手抜きだった & Ver0.41k
 投稿者:
文太 
  2012/01/08(日) 10:54 
     5744 番 konno さんへのコメント    コメント数 1
konnoさん
	cmp	bx,83h			;★ 引数が無い時
	jb	normal			;★
 一瞬、頭がねじれましたけど、お見事。83でbelowか。「82h以下」ですね。
 というか、この手前のポインタのところで頭がねじれた。
 じゃ、もう WinMEで試験は必要ないですね。XPと同じ結果でしょう。違っても
対処は同じ。
 「メモリをクリアしてない」。そうなんでしょうね。理屈の空想はできたけど、
検証するスキルが足りない。時間も足りない。心も足りない、、、。
 あれ、でも、そうすると、「A」の埋め込みで、なぜうまくいかなかったんだ?
ちょっと理屈が変かも。see #5738. もしかしたら、もうちょい複雑なのかも。
 いずれにせよ、argc 重ね判定でいいはずだから、ま、いいや。
 ほとんど undocumented な世界ですね。これ、担当は、command.com ですよね。
 お二方のご指導で、心の安心を得ました。(^^)v
 お仕事モードに帰りますね。今晩、山のような原稿が届くはずなので。こっから
の仕事は、Vzなしではやれない。さ、WinME 君、きみの出番だよ。
(5655) 
5747:
Re^2: 問題はDOSの手抜きだった & Ver0.41k
 投稿者:
konno 
  2012/01/08(日) 19:28 
     5745 番 文太 さんへのコメント    コメント数 1
>  一瞬、頭がねじれましたけど、お見事。83でbelowか。「82h以下」ですね。
正確な値が分からない時は条件分岐に不等号を使うほうがデバッグが早くて楽ですから。
>  あれ、でも、そうすると、「A」の埋め込みで、なぜうまくいかなかったんだ?
> ちょっと理屈が変かも。see #5738. もしかしたら、もうちょい複雑なのかも。
 #5738のソースは読んでませんでした。文太さん惜しかったですね、掠ってたのに。
せっかくこの#5738で冒頭に引数表示ルーチンを使っているのに、#5741のテストでは
使ってませんね。ということで、#5741の冒頭に、下記の#5738の引数表示ルーチンを
追加して試してみれば一目瞭然だと思います。
START:	mov	bx,80h			;
	add	bl,[bx]			;引数のサイズ
	inc	bx			;
	mov	[bx],byte ptr 24h	;引数の最後の0Dhを24hに変える
	mov	ah,9			;
	mov	dx,81h			;
	int	21h			;引数表示
>  いずれにせよ、argc 重ね判定でいいはずだから、ま、いいや。
としきさんはわかっていたようですね。私は引数表示テストするまでは半信半疑でした。
>  ほとんど undocumented な世界ですね。これ、担当は、command.com ですよね。
というか、DOSの仕様なんでしょうね。半角スペースの扱いの解釈が曖昧だけど。
(5655) 
5748:
Re^3: 問題はDOSの手抜きだった & Ver0.41k
 投稿者:
としき 
  2012/01/08(日) 20:10 
参照先:http://www1.hinocatv.ne.jp/toshiki/
     5747 番 konno さんへのコメント    コメント数 1
ちょっとだけ。
> としきさんはわかっていたようですね。私は引数表示テストするまでは半信半疑でした。
いや、わかっていませんでした。
#5741で文太さんがまとめたから、どういう実験をすれば追い込めるか見当がつき
ました。で、結果を見て、あぁなるほど、と思った次第。
 
      -  No.5748  -  
 このTreeへ   
コメント元:5747 へ
[リストへもどる]
 soft 
(5655) 
5749:
Re^4: 問題はDOSの手抜きだった
 投稿者:
konno 
  2012/01/09(月) 00:41 
     5748 番 としき さんへのコメント    コメント数 1
> いや、わかっていませんでした。
> #5741で文太さんがまとめたから、どういう実験をすれば追い込めるか見当がつき
> ました。で、結果を見て、あぁなるほど、と思った次第。
そうですか。私も同じようなものです。それで#5741のソースに引数表示を追加して
確認したわけです。
ということで今回は基本的なところのように見えて、深いところまで追求できた
ような気がするので、良い勉強になったと思っています。
(5655) 
5751:
その後
 投稿者:
文太 
  2012/01/16(月) 17:47 
     5749 番 konno さんへのコメント    コメント数 1
 (ちょっとここに。対話型でなくて、ごめんなさい)
 ちゃんとコマンドライン・オプションを読む、という実際的本質からは外れて
ますが。ただ、僕は何となく気になっていたのです。
 実際的な答は、konnoさんが示してくれたとおりです。
 で、あ、このテストすれば、少しだけ気持ちがよくなる、と思いついたのです。
 で、やっておこうと。
	;PSP 80h の数字を見る(引数文字数のcommand.comによる解釈)
	;--- t1.asm ---
	mov		bx, 80h
	mov byte ptr 	al, [bx]
	add		al,'0'
	putchar		al
	newline
	retms
 (以下で、_はスペース)
		XP	ME	Dos6
>t1_333
		4	4	4	;space counted
>t1
		0	0	0	;of course
>t1_
		0	1	1	;counted and not counted
>t1____
		0	5	5	;ditto
>t1_>k.txt
		0	1	1	;again
 というわけで、やっぱりXPエミュが素直でないと言ってよいのかな。
 親切なつもりなんだろうけど。
 そして、いずれにせよ(どうせどこでも使えるものを作るはずなので、
そういうのしか作れないはずなので)、オプションが必要になったら、
空うちヘルプしたいなら、ちゃんと文字数もチェックしろよ、と。で、
チェックの仕方、気をつけなよ、文太くん、という感じでしょうか。
&Ss(p)		skipspc	ポインタ p からスペース,TABをスキップ
			(r = 次の文字のポインタ)
 という関数を見たときの不思議感を思いだし、「ふつうそういうのが必要じゃん」
と再納得しました。Vz1.6のS関数って、偉いですね。違う話だ。
 その後のその後
>t1>k.txt			;こういうのありなんだ!
		0	0	0
>dir>k2.txt			;ちゃんと動作しました。そうなんだ、、、。
				;なぜかコマンドのあとにはいつもスペースを、、。
 すると、#05710の以下は間違ってましたね。
> あのう、そうするとリダイレクトができないのですけど、、、、。
(5655) 
5752:
Re: その5はNT系
 投稿者:
konno 
  2012/01/19(木) 01:12 
     5751 番 文太 さんへのコメント    コメント数 1
文太さん、ナイスなテストですね。
>		XP	ME	Dos6
> >t1_
> 		0	1	1	;counted and not counted
> >t1____
> 		0	5	5	;ditto
う〜ん、どうやらNT系のDOS5だけ挙動が違うようですねぇ。
LXのDOS5でも試してみましたが、他と同じでした。ちなみにXPのDOS窓でも
command /c t1
だと他と同じになります。擬似常駐VZはこの状態で動くのでやっぱり他と同じです。
NT系のDOS5は他のDOSといろいろ挙動が違うというか、互換性が低いなぁ、と感じて
ましたが、このテストのおかげでそれがはっきりしましたね。さすが文太さん!!
高橋版系VZがNT系のDOS窓でコマンドラインが不安定なのは、こういう非互換性の
せいかもしれないという気がしてきました。
ツリーも長くなったので、この話はいずれまた、別ツリーで。
> >t1>k.txt			;こういうのありなんだ!
> >dir>k2.txt			;ちゃんと動作しました。そうなんだ、、、。
おお、これは目からうろこでした。
LXのDOS5でも動きましたよ。
(5655) 
5753:
Re^2: その5はNT系
 投稿者:
文太 
  2012/01/19(木) 02:24 
     5752 番 konno さんへのコメント    コメント数 1
konnoさん
>う〜ん、どうやらNT系のDOS5だけ挙動が違うようですねぇ。
>NT系のDOS5は他のDOSといろいろ挙動が違うというか、互換性が低いなぁ、と感じて
 XPの MS-DOS を DOS5 と呼ぶと混乱するようです。 それは、DOS5 ライクに
なろうとし、けっこう仕様を変えた NTVDM のドスのようです。 ま、そうだろう
な、とは僕も色々と感じてきましたが。だって、拡張ファンクが一部効いたりす
るのですし。
 たまたま、MS-DOS 環境が簡単に作れるところだったので、MS-DOS3.3  と MS-
DOS5.0  のFDからDosマシンをFD起動して試しましたが、MS-DOS5.0 とい
えども、95 系= MS-DOS 系と同じ結果でした。 NT、2000、XPが違う結果を
出すのでしょうね。そして、そっちが今(?)、Vzのメインな環境であると。
      -  No.5753  -  
 このTreeへ   
コメント元:5752 へ
[リストへもどる]
 soft 
(5655) 
5754:
Re^3: その5はNT系
 投稿者:
konno 
  2012/01/20(金) 00:08 
     5753 番 文太 さんへのコメント    コメント数 2
>  XPの MS-DOS を DOS5 と呼ぶと混乱するようです。
だって、Ver5.0 だなんて主張しているし、それよりもタイトルの都合、かな。(^^;
> だって、拡張ファンクが一部効いたりするのですし。
これはWin95のDOS7ですでに大幅に拡張されてますしね。それでいてDOS7の互換性は
非常に高いですよね。
いっぽう、同時期に出たWinNTのDOS窓は・・・あれ?どうだったかな?
なんか、NTから2000、XPと変わるたびにDOS窓の機能が劣化してるような気が
しないでもないなぁ。Vista以降は使い物にならないくらいだし。
      -  No.5754  -  
 このTreeへ   
コメント元:5753 へ
[リストへもどる]
 soft 
(5655) 
5755:
Re^4: その5はNT系
 投稿者:
文太 
  2012/01/20(金) 01:33 
     5754 番 konno さんへのコメント 
konnoさん
>それよりもタイトルの都合、かな。(^^;
 ええ、もちろん、分かってますよ。
>これはWin95のDOS7ですでに大幅に拡張されてますしね。それでいてDOS7の互換性は
>非常に高いですよね。
 うーん、そうなんですか、、、。
>いっぽう、同時期に出たWinNTのDOS窓は・・・あれ?どうだったかな?
>なんか、NTから2000、XPと変わるたびにDOS窓の機能が劣化してるような気が
>しないでもないなぁ。Vista以降は使い物にならないくらいだし。
 劣化してるのかどうかは分からないですが(2000がXPより酷いのは知ってます。
突然、EMSが取れなくなります)、ま、あんまり、我々には都合良いようには
展開しませんでしたね。ま、MS-DOSというものが要らない、ということなんでしょう
ね。CodeViewは、Vz用には使えないことだけはっきりしました。c.mosさん、
セグメント管理の裏の裏を追ってるし、、、。まさか、こんなことになってるとは。
 MS-DOSとUSBを追ってます。読めた気がしてます。あくまでUSB1.1とMS-DOSですけ
れど。MS-DOSマシン、じゃんじゃか。
      -  No.5755  -  
 このTreeへ   
コメント元:5754 へ
[リストへもどる]
 soft 
(5655) 
5756:
Re^4: その5はNT系
 投稿者:
としき@会社 
  2012/01/20(金) 08:56 
参照先:http://www1.hinocatv.ne.jp/toshiki/
     5754 番 konno さんへのコメント    コメント数 1
> これはWin95のDOS7ですでに大幅に拡張されてますしね。それでいてDOS7の互換性は
> 非常に高いですよね。
これは全くそのとおりだと思います。
> いっぽう、同時期に出たWinNTのDOS窓は・・・あれ?どうだったかな?
> なんか、NTから2000、XPと変わるたびにDOS窓の機能が劣化してるような気が
> しないでもないなぁ。Vista以降は使い物にならないくらいだし。
これはどうかなぁ。
WinNT4のDOS窓はWin2Kよりも互換性が低いと思います。
Win2KとWinXPではほとんど違いがなかったような記憶があります。
Vista以降が使い物にならないのは全くそのとおりだと思いますが。
      -  No.5756  -  
 このTreeへ   
コメント元:5754 へ
[リストへもどる]
 soft 
(5655) 
5757:
Re^5: その5はNT系
 投稿者:
文太 
  2012/01/20(金) 10:39 
     5756 番 としき@会社 さんへのコメント    コメント数 1
としきさん
>Win2KとWinXPではほとんど違いがなかったような記憶があります。
 前にどっかで書きましたが、windows updateをすると、2000では、Dos窓
が使いものにならなくなります。ですから、Vzを使う側からすると、違いは
大きいですよ。それで、僕は、2000を捨てました(比喩)。
 NTVDMの仕様という意味では、それほど違わないのかもしれませんが。
 しつこく続いてしまいますねぇ、このツリー。
      -  No.5757  -  
 このTreeへ   
コメント元:5756 へ
[リストへもどる]
 soft 
(5655) 
5758:
Re^6: その5はNT系
 投稿者:
としき 
  2012/01/20(金) 21:39 
参照先:http://www1.hinocatv.ne.jp/toshiki/
     5757 番 文太 さんへのコメント    コメント数 1
> >Win2KとWinXPではほとんど違いがなかったような記憶があります。
>  前にどっかで書きましたが、windows updateをすると、2000では、Dos窓
> が使いものにならなくなります。ですから、Vzを使う側からすると、違いは
> 大きいですよ。それで、僕は、2000を捨てました(比喩)。
えと、updateって、2000からXPってことですか?
私の記憶もあんまり当てにならないのですが、どういったところが使えなくなり
ました?
ちょうどそのあたりは私の気にしない部分だった、という落ちかもしれません。
      -  No.5758  -  
 このTreeへ   
コメント元:5757 へ
[リストへもどる]
 soft 
(5655) 
5759:
Re^7: その5はNT系
 投稿者:
文太 
  2012/01/20(金) 23:45 
     5758 番 としき さんへのコメント    コメント数 2
としきさん
#05213 文太 Win2000 Update とVz
 このあたりです。
 
      -  No.5759  -  
 このTreeへ   
コメント元:5758 へ
[リストへもどる]
 soft 
(5655) 
5760:
Re^8: その5はNT系
 投稿者:
としき 
  2012/01/21(土) 14:46 
参照先:http://www1.hinocatv.ne.jp/toshiki/
     5759 番 文太 さんへのコメント 
>  このあたりです。
なるほど。
そのへん、確かに私は引っかかった記憶はありません。
どうしたんだろう。
      -  No.5760  -  
 このTreeへ   
コメント元:5759 へ
[リストへもどる]
 soft 
(5655) 
5761:
Re^8: Win2000 SP4
 投稿者:
konno 
  2012/01/22(日) 00:44 
     5759 番 文太 さんへのコメント    コメント数 1
文太さん
> #05213 文太 Win2000 Update とVz
>  このあたりです。
なるほど、このへん、気にしてなかったですね。(^^;
私のはWin2000 SP4 でした。
それで今まで使っていたんですが、今改めて試してみたら・・・
ちょっと大き目のファイルを編集中に、ESC E でコマンドラインに降りて、
vmap
Vmap
dir
とやると、不正命令表示が出たり、いきなり落ちたりしますね。(>_<)
最近はVTDOS環境が多かったので気がつきませんでした。
・・・調べてみます。m(__)m
この話題は新規スレッドにしたいですね。(^^;
 
      -  No.5761  -  
 このTreeへ   
コメント元:5759 へ
[リストへもどる]
 soft 
(5655) 
5762:
Re^9: Win2000 SP4
 投稿者:
文太 
  2012/01/22(日) 01:39 
     5761 番 konno さんへのコメント    コメント数 1
konnoさん
>この話題は新規スレッドにしたいですね。(^^;
 どうぞ、どうぞ。これではあまりに邪悪。
 ですが、 僕は、NT系にはあまり強い興味がないのと、2000 な環境はなくなっ
ているのでテストもできませんが。どうも現象をみると(遠い昔)、どうしよう
もないのではないのですかねぇ。
 そんなに安易に「調べてみます」って、期待しちゃうじゃないですか。
 でもですね、Win2KなVzユーザはほとんどいないと思う。
 敵が強すぎたのだとも思う……。
 VTDOSか、エミュがいい線なんじゃないのかなぁ、と思っています。
 今日、ふと思ったのですが、根本の作りからして、Vz1.6って、すでにして、もう
時代遅れだったのじゃないのかなぁ、と。うーん、説明するのが難しいですが、MS-DOS
からWindowsへの変化が速すぎた、かな。そして、プロのプログラマって、2、3年
先をみてないとやってられないのでしょう。アマチュアは、97年に純ドス・プログ
ラムを書いて幸せになっていられるけど。
 Windows95で、やたらMSが情報のためにお金を要求するようになったことや、
シェア・ウェアが増えたこととか思い出してます。今日も、マシン調教にいそしみ、
Windows98マシンにするか、MS-DOSマシンにするか迷って、まだMS-DOS状態。USBが
使えないのが、、、。もうちょっとなのに、、、。UMBがないのがいけないんだ!
 そうそう、95系(最後はWinME)は、確かにシステム破綻さえおそれず、
下位(過去)互換のために、すごくがんばったんだと思います。おかげで、僕は
ここにいる。
      -  No.5762  -  
 このTreeへ   
コメント元:5761 へ
[リストへもどる]
 soft 
(5655) 
5763:
純Dos&USB
 投稿者:
文太 
  2012/01/22(日) 13:02 
     5762 番 文太 さんへのコメント    コメント数 1
純Dos&USB
 さらりと報告。場違い?
>Windows98マシンにするか、MS-DOSマシンにするか迷って、まだMS-DOS状態。USBが
>使えないのが、、、。もうちょっとなのに、、、。UMBがないのがいけないんだ!
 違います、文太くん。emm386のオプションを勉強して、フレームの位置を動かす
必要なんてありませんよ。
 中身のないレポートですが、一晩寝たら、biblo NE2/45のUSBが取れてしまい
ました。いつか理解できたこと、実験で成功した・失敗したの記録を纏めたいとは
思っているのですが(できないだろうなぁ)、富士通ビブロノート
NE4/50C
NE2/450L
NE2/45
 の3台で、純Dosから、USB pen memory stick (2GB)へのアクセス成功。
 似たような連中ですが、Intelあり、AMDあり、ALiあり、と大変〜。
 pcitool けっこう役に立ちますよ。(see 過去ログ)
 EMSの話と同じじゃないか。
 どれも、Win98/2K 用ぐらいのマシンです。ヤフオクで1000円くらい。
 これができれば、何の憂いもなく、Dos機として生きさせてあげられるのです。
    /e EHCI, for enabling only USB 2.0 controller
    /o OHCI, for enabling only add-on/onboard USB 1.1 controller
    /u UHCI, for enabling integrated USB 1.1 controller
    /v, /w で、じっくり観察がキモでした。前に失敗した板で、そのうちやって
みるつもり。
 完全に独り言モードですが、そもそも、USBドスブートというのは、敷居が
高すぎる。DosからUSBへのアクセスのほうが、だんぜん成功の確率高いです
よね。
 興味のある方は、ベクタから desty31b.zip を落として、中の超有益な usb-drv.txt
を読んでね。
(5655) 
5769:
Re: 純Dos&USB
 投稿者:
文太 
  2012/01/30(月) 01:34 
     5763 番 文太 さんへのコメント    コメント数 1
DOS & USB
 結果だけです。あとは、下の資料から読みとってください、、、って、あまり
に不親切ですよね。
 フロッピーでのDOS6 ブートで、USBにアクセスできるか、の結果です。
 Win98SE の富士通ノートNEシリーズでの結果。全部OK。
 ただ、 OHCI のときだけ、ちょっと焦り、あまりの文字の汚さに、何があって
も、こんな MS-DOS 機は嫌だと思う、と思う。
 以下の4つは、 すべて何かの理由によって、MS-DOS 機ではなく、Win98 機と
して、なんとかやりすごせそうな連中です。そんなつもり、ということ。千円ぐ
らいで買えたから (^^;
 MS-DOS  窓のほうが文字が綺麗だとかHDがもったいないとか、起動がそれほ
ど遅くないとか。
 USBって、Win98 だと、けっこう大変なのですけどね。Baffalo 256 MB、そして
Nano 2GB のドライバのあるUSBスティックだけ使える。
 そんな人はいないと思いますが、Biblo NE series, 2-7くらいだと、Win98 or ME
or DOSという選択肢があるにはあります、、、。
 MS-DOS機、98機の利点? OSが軽いことと、無音PCが作れることです。
 たぶん、HDの寿命も長くなると、、、思う、、、。でも、20ギガHDって、新品
はもう手に入らず、40ギガだと問題を起こすのかもしれないマシンたちですが。
まあ、色々、色々と条件のあること、あること、、、。
 でも、HDの交換を厭わず外部ディスプにすれば、たぶん、一生使えると思う。
=========================================================================
NE2/40E (UHCI) dos disp OK
PCITOOL/386 for DOS Version 4.00 - Release 15-Dec-2011
(C) Copyright 1993 - 2011 by APSoft (http://www.tssc.de)
All rights reserved.  Disassembly or decompilation prohibited.
                     Information about PCI system
                    ==============================
  Last bus used           : 3
  Interface level         : 02.10
  Hardware mechanism      : Config Mechanism #1
  IRQs used by PCI devices: 9
                          ======================
   PCI device 04
  ---------------
  Vendor ID        : 8086h (Intel Corporation)
  Device ID        : 7112h (82371AB/EB/MB PIIX4 USB)
  Base/Sub-Class   : 0Ch/03h
  Bus number       : 0
  Device number    : 7
  Function number  : 2
  First Baser addr. : 00000000h[0h] (maps into memory space)
  Interrupt Pin    : INT_D
  Interrupt Line   : 9
  ---------------
=========================================================================
NE2/43L (UHCI)  dos disp OK
   PCI device 04
  ---------------
  Vendor ID        : 8086h (Intel Corporation)
  Device ID        : 7112h (82371AB/EB/MB PIIX4 USB)
  Base/Sub-Class   : 0Ch/03h
  Bus number       : 0
  Device number    : 7
  Function number  : 2
  First base addr. : 00000000h[0h] (maps into memory space)
  Interrupt Pin    : INT_D
  Interrupt Line   : 9
  ---------------
=========================================================================
NE4/700HR (UHCI) dos disp not too bad but ...
   PCI device 05
  ---------------
  Vendor ID        : 8086h (Intel Corporation)
  Device ID        : 719Ah (82440MX USB Universal Host Controller)
  Base/Sub-Class   : 0Ch/03h
  Bus number       : 0
  Device number    : 7
  Function number  : 2
  First base addr. : 00000000h[0h] (maps into memory space)
  Interrupt Pin    : INT_D
  Interrupt Line   : 15
  ---------------
=========================================================================
NE2/45 (OHCI) dos disp too bad!
   PCI device 02
  ---------------
  Vendor ID        : 10B9h (ALi Corporation)
  Device ID        : 5237h (USB 1.1 Controller)
  Base/Sub-Class   : 0Ch/03h
  Bus number       : 0
  Device number    : 2
  Function number  : 0
  First base addr. : 04000000h[1000h] (maps into memory space)
  Interrupt Pin    : INT_A
  Interrupt Line   : 9
  ---------------
=========================================================================
(5655) 
5774:
Re^2: 純Dos&USB
 投稿者:
文太 
  2012/01/31(火) 20:47 
     5769 番 文太 さんへのコメント 
>MS-DOS機、98機の利点? OSが軽いことと、無音PCが作れることです。
 訂正しておきます。Windows マシンでは、HD自体をSSDのようなメモリに
しなければ無音マシンはつくれませんでした。Windows のテンポラリーファイル
が、 キーを動かしたとたん何やら操作され、HDが回ってしまうからです(Win98
はWinMEと違い、config.sysを読み、ramdrive.sysもちゃんとあったから行けると
思ったのだけど)。MS-DOS で32メガメモリをラムディスクに当てれば、普通の
編集操作なら、HDを回さずに済むのですが。
 さらに言うと、Win98 では、ドライバがないため使えないUSBメモリがたく
さんあります(今時のは、まずもう作ってくれてない)。MS-DOS  のほうがまだ
使えるメモリが多かったりします。Panasonic の MS-DOS 用ドライバ、偉いです。
 どういう規格になっているのか分かりませんが、その点、WinMEも偉いです。
使えなかったUSBメモリ、ないもの。もちろんXP以降も同じでしょうけれど。
      -  No.5774  -  
 このTreeへ   
コメント元:5769 へ
[リストへもどる]
 soft 
(5655) 
5693:
blt 関連まとめ
 投稿者:
文太 
  2011/12/28(水) 00:16 
     5690 番 文太 さんへのコメント    コメント数 1
 基本的にバッチファイルで使うためのファイル名リスト作成ツールです。
 dirの結果をちょこっと処理すればできるもの。
 カレントディレクトリのファイルをリストするだけです。
C:\PROGRA~1\ADOBE\READER~1.0 ←カレント
>blt
README.HTM
READMEJ.HTM
  SFNでそのまま。
C:\PROGRA~1\ADOBE\READER~1.0
>bll
ReadMe.htm
ReadMeJ.htm
  LFNでそのまま(大文字小文字に注意)。
C:\PROGRA~1\ADOBE\READER~1.0
>bll2
"ReadMe.htm"
"ReadMeJ.htm"
  LFNで引用符を前後に付ける。
C:\PROGRA~1\ADOBE\READER~1.0
>blf
C:\PROGRA~1\ADOBE\READER~1.0\README.HTM
C:\PROGRA~1\ADOBE\READER~1.0\READMEJ.HTM
  SFNでフルパス。
 LFNでフルパスはないの? ないでしょう。バッチで使う場面があるとは思
えないから。たぶん(まったく自信ないけど)、SFNで足りますよ。(※)
 結果は、現実的には、コンソールファイルから取れば十分です。16  ビットア
プリですから、|to もなく、素直に取れます。
 「ものすごい数なんだ、その作業がものすごい回数なんだ」という場合には、
リダイレクトしてもいいですが、そのときには、1つ上のディクトリを出力先に
指定しないと、リストにリダイレクト先ファイルが含まれてしまうので、注意。
>c:\a.bat(に出力)、というのが、僕のよくあるパターンです(でした)。で、
そうすると、遠くから実行することになるので、フルパスでバッチを記述したい
ときもあったりしたのです。
 もちろん、オプションも引数もありません。だから、4つも実行ファイルがで
きてしまったのです。もちろん、「作れないから」という理由でそうなっている
のですが、操作性という意味では、超低機能で役割がしっかり絞り込まれている
のも悪くないですよ。とりわけ、そんなバッチを短時間に10回も20回も連発
で作るとなると。
 次にそんな場面にいつ出くわすのかは不明ですし、ないほうが幸せな人生とい
う気もするのですが。
 名前は、 BLT  (Bunta's  LisT) から来ていて、その派生でL(ロング)、
F(フルパス)とかを入れ替えれば思い出せるかなぁ、と思います。
 (※)万が一に備え、cdd.com を作った。
      -  No.5693  -  
 このTreeへ   
コメント元:5690 へ
[リストへもどる]
 soft 
(5655) 
5695:
cdd.asm
 投稿者:
文太 
  2011/12/28(水) 00:18 
     5693 番 文太 さんへのコメント    コメント数 1
 これは使わないだろうなぁ。じゃ、この辺でお茶をにごします、前に苦労した
し(see #05666)、というところです。
 名前も多いに問題がある……。
 LFNのカレントディレクトリ表示ツールです。チェインジはできません。
 お終いの儀式。
C:\WINDOWS\DRIVER~1\I386     SFN current directory, prompt
>cdd
C:\WINDOWS\Driver Cache\i386   LFN current directory, result
;-------------------------------------------------------------------
;cdd.asm (print current directory LFN)
INCLUDE STDIO.H
	pmain
;get current disk
	mov	ah,19h
 	int	21h		;-> disk num in AL
 	add	al,'A'		;num2char
 	mov	BUFF, byte ptr al
;get current directory (LFN)
	mov	dl,0
 	mov	ax,7147h
 	mov	si,offset BUFF+3
 	int	21h
 	cmp	ax,7100h
 	je	ERR
;disp
	mov	bx,offset BUFF
PRI:	cmp	[bx],byte ptr 0
  	je	BYEBYE
   	putchar	[bx]
  	inc	bx
  	jmp	PRI
BYEBYE:	newline
	retms
ERR:	print ERR_MSG
	retms
BUFF	db	?,':\',300 dup(0)
ERR_MSG	db	'Run on Windows','$'
	pend
(5655) 
5702:
bllf2.asm
 投稿者:
文太 
  2011/12/29(木) 01:20 
     5695 番 文太 さんへのコメント    コメント数 2
C:\WINDOWS
>bllf2
略
"C:\WINDOWS\羽毛.bmp"
"C:\WINDOWS\隅田川.bmp"
"C:\WINDOWS\青いレース編み 16.bmp"
>bllf2 /h
    BLT.COM     List 
    BLTF.COM    List fullpath 
    BLL.COM     Long 
    BLL2.COM    Long + quote 
    BLLF.COM    Long fullpath 
    BLLF2.COM   Long fullpath + quote 
 このようにシリーズは改名され、さすがに分からなくなることが予想されるので、
>blt /h のような形でヘルプが出るようにしました。
 実は、オプションか引数みたいなものが1つでもあれば、ヘルプメッセージとな
ります。
 どれも似たようなものですが、いちおう、(ほんとにこれで最後で)ソースを
上げておきます。
;-------------------------------------------------------------------------
;bllf2.asm (Long Fullpath BLT)
INCLUDE STDIO.H
	CODE	SEGMENT BYTE
	ASSUME	CS:CODE, DS:CODE, SS:CODE
		org	80h
		argc	db	?
		org	100h
START:
;-----------------------------------------------------------------
	mov	al, [argc]
	cmp	al, 0
	je	normal
;print usage
	print	help_usage
	newline
	retms
;-----------------------------------------------------------------
;get current disk
normal:
	mov	ah,19h
 	int	21h		;-> disk num in AL
 	add	al,'A'		;num2char
 	mov	BUFF_DP, byte ptr al
;get current directory (LFN)
 	mov	dl,0
 	mov	ax,7147h
 	mov	si,offset BUFF_DP+3
 	int	21h
 	cmp	ax,7100h
 	je	ERR
;check & flag set
	cmp	BUFF_DP[3],0
	je	FIND1
	mov	FLAG, byte ptr 1	;if root 0, if not root 1 (=add '\')
;findfirst
FIND1:	mov	ax,714eh
	mov	dx,offset FILE
	call	SET			;set cx, si, di
	int	21h
	cmp	ax,7100h		;error check
	je	BYE
	;print drive+dir
	mov 	HAND, word ptr ax	;save handle num
	putchar	'"'
	mov	bx,offset BUFF_DP
	call	PRI
	cmp	FLAG,0
	je	A1
	putchar	'\'
A1:	;print filename
	mov	bx,offset BUFF_F+2ch
	call	PRI
	putchar	'"'
	newline
;findnext
FINDN:
	mov 	bx,HAND
	mov	ax,714fh
	call	SET
	int	21h
	jc	BYEBYE
	;print drive+dir
	putchar	'"'
	mov	bx,offset BUFF_DP
	call	PRI
	cmp	FLAG,0
	je	B1
	putchar	'\'
B1:	;print filename
	mov	bx,offset BUFF_F+2ch
	call	PRI
	putchar	'"'
	newline
	jmp	FINDN
ERR:	print ERR_MSG1
	retms
BYE:	print ERR_MSG2
BYEBYE:
	mov	bx,HAND			;HANDLE CLOSE
	mov	ax,71a1h
	int	21h
	retms
	;--- subroutines ---
SET:	mov	cx,28h			;directory, volume 除く
	mov	si,1
	mov	di,offset BUFF_F
	ret
PRI:	cmp	[bx],byte ptr 0
  	je	FIN
   	putchar	[bx]
  	inc	bx
  	jmp	PRI
FIN:	ret
FLAG		db	0
HAND		dw	?
FILE		db	'*.*',0
BUFF_DP		db	?,':\',300 dup (0)
BUFF_F		db	320 dup (0)
ERR_MSG1	db	'Run on Windows','$'
ERR_MSG2	db	'File Not Found','$'
help_usage	db '    BLT.COM     List ',CR,LF
		db '    BLTF.COM    List fullpath ',CR,LF
		db '    BLL.COM     Long ',CR,LF
		db '    BLL2.COM    Long + quote ',CR,LF
		db '    BLLF.COM    Long fullpath ',CR,LF
		db '    BLLF2.COM   Long fullpath + quote ','$'
	pend
(5655) 
5703:
dupline3.def
 投稿者:
文太 
  2011/12/29(木) 01:42 
     5702 番 文太 さんへのコメント    コメント数 1
dupline3.def
 これもあった。わざわざ上げることもないのですが。
 同じ趣旨のマクロは、今まで10個くらい作ってると思う。そのたびに作り、
捨ててきた。
 いちおう真剣に今朝、作ったつもりなのですが、、、。
 バッチファイル用のマクロです。
=== dupline3.def by B ===; parallel line copy for batchfile
ファイル全体と行ブロック範囲(バッチファイル用)
行末にタブができてるからね。
aaa.txt
bbb.txt
↓
aaa.txt	aaa.txt
bbb.txt	bbb.txt
* M
50 ^^ "dupline3"
	?. 
	&s
	(mb==0)? >A
	(mb==1)? >B
	&m("illegal block").
:A	;--- whole file
	#^ #<			;start at top of file (whole file)
 :a	(ct<1)? >Z
	&01 >a
:B	;--- line block area
	(xc>0)? {l=ln, #B} ? {#B l=ln, #B}
	#b			;relese block
 :b	(l==ln)? >Z
	&01 >b
:Z	&m("finished") &d.
	;=== local macro ===
01:	; main job
	#> 			;check line-end space, add if not exist
;	#s (cd!=' ')? {#d ' '}	; space
	#21			; tab
	#< #b #> #k #> #i	;duplicate the line
	#> #d
*
(5655) 
5704:
BLT 関連補足・まとめ(最終)
 投稿者:
文太 
  2011/12/29(木) 12:13 
     5703 番 文太 さんへのコメント    コメント数 3
 ほんとにこれで終わりますから、怒らないでくださいね。
 お騒がせいたしました。m(__)m
STDIO.H は、#03372にあり、
--- a.bat ---
ml %1.asm
lld %1.obj
exe2com %1.exe
-------------
 というバッチで、
C:\BIN9
>blt
A.BAT
BLL.ASM		;#05682
BLL2.ASM	;#05688
BLLF.ASM	;下から putchar '"' の行を抜く
BLLF2.ASM	;#05702
BLT.ASM		;#03395
BLTF.ASM	;#05690 (元blf.asm)
CDD.ASM		;#05695
DDD.ASM		;#03381
EXE2COM.EXE	;どっかから。ネットのどっかにありますよ。Simtelにある。
LLD.EXE		;LSI 試食版から
MEMO.TXT
ML.ERR		;MASM 6 から
ML.EXE		;同
STDIO.H		;#03372
 みたいなところをカレントにし、
C:\BIN9
>a blt (これは blt.asm をアセンブルする例)
 とかすると、アセンブルできます。
 それぞれは、こんな結果を出します。
C:\LSI
>blt /h
    BLT.COM     List 
    BLTF.COM    List fullpath 
    BLL.COM     Long 
    BLL2.COM    Long + quote 
    BLLF.COM    Long fullpath 
    BLLF2.COM   Long fullpath + quote 
 最後につけた、/h のヘルプメッセージは、ここの掲示板のソースでは、BLLF2.
ASM にしか付いていません。万が一、必要が生じたら、他のソースにコピーして
ください(内容はともかく、けっこうな差し替え箇所が大きいです)。
 もちろん、前にも書いたとおり、超楽チンコーディングなので、-h, -help, /?,
-? でもヘルプは出ます。 何でも出ます。つまり、何か付けると、欲しい結果が
永遠に得られません。>blt *.* とか、>blt c:\bin9 とかでも、いつまでもヘルプ
ばかり見ることになります。
 カレントで、オプション、引数なし、これが正しい使用法です。
 などとマジになって書くようなことではないですね。すいません、自分向けメモ
でした。m(__)m
(5655) 
5709:
その後
 投稿者:
文太 
  2011/12/29(木) 22:16 
     5704 番 文太 さんへのコメント 
 遊んでます。
C:\BIN9
>bltw
A.BAT  A.BAT
BLL.ASM  BLL.ASM
C:\BIN9
>bltfw
C:\BIN9\A.BAT  C:\BIN9\A.BAT
C:\BIN9\BLL.ASM  C:\BIN9\BLL.ASM
C:\WINDOWS
>bll2w
"大草原の風.bmp"  "大草原の風.bmp"
"珈琲カップ.bmp"  "珈琲カップ.bmp"
"青いレース編み 16.bmp"  "青いレース編み 16.bmp"
      -  No.5709  -  
 このTreeへ   
コメント元:5704 へ
[リストへもどる]
 soft 
(5655) 
5711:
Re: BLT 関連補足・まとめ(最終)
 投稿者:
としき 
  2011/12/30(金) 22:05 
参照先:http://www1.hinocatv.ne.jp/toshiki/
     5704 番 文太 さんへのコメント    コメント数 1
> C:\BIN9
> >blt
> A.BAT
> BLL.ASM		;#05682
(以下略)
どっかの文字列検索ソフトだと思うけど、実行ファイルのファイル名を変えると
機能が変わるというソフトがあったような。そういう機能を実装してみたらいか
がでしょうか。argvとの文字列比較でいけるはず。
機能のほとんどの部分が重複しているのですから、十分可能。
メリットは、ソースを一本化できること。なので、一つのソフトでのバグ改修や
機能追加を、即座に他のソフトにも反映することができます。
あと、ディスクの記憶領域がほんの数クラスタ節約できるけど、これはほとんど
メリットにはならないな。
(5655) 
5712:
本人の名前
 投稿者:
文太 
  2011/12/31(土) 16:52 
     5711 番 としき さんへのコメント    コメント数 2
としきさん
>どっかの文字列検索ソフトだと思うけど、実行ファイルのファイル名を変えると
>機能が変わるというソフトがあったような。そういう機能を実装してみたらいか
>がでしょうか。argvとの文字列比較でいけるはず。
 メリットはそのとおりでしょうが、スキルも時間も足りません。
 ただ、argvはC出身の方の書き方で、DTAです。そして、Cと違って(exe
モデル?)、本人の名前はそこにはないはずです、アセンブラのcomモデルだと。
本人の名前は、番地だけPSPにあるはずです。どっか遠くにあると思う。
 たぶん、そのソフト、けっこうトリッキーな技を使っているはずです。だって、
bltfとcommand.com(その他)にプログラムをロードさせよ、と言っておいて、
blt(統合版)をロードさせるわけでしょ。
 オプションが普通でしょう。でも、すると、こんがらがったスパゲになりますよ、
ぜったい。
>あと、ディスクの記憶領域がほんの数クラスタ節約できるけど、これはほとんど
>メリットにはならないな。
 なりませんねぇ。
C:\
>dir bin9 |to
2011/12/30  19:47               675 BLL.COM
2011/12/30  19:49               699 BLL2.COM
2011/12/30  19:50               753 BLL2W.COM
略
C:\WINDOWS
>dir *.bmp |to
2006/03/02  21:00            17,362 しゃくなげ.bmp
2006/03/02  21:00            26,582 グリーン ストーン.bmp
2006/03/02  21:00             9,522 サポテック織り.bmp
2006/03/02  21:00            65,832 サンタフェ.bmp
2006/03/02  21:00            65,978 シャボン.bmp
2006/03/02  21:00            17,336 フィッシング.bmp
2006/03/02  21:00            65,954 大草原の風.bmp
2006/03/02  21:00            17,062 珈琲カップ.bmp
2006/03/02  21:00            16,730 羽毛.bmp
2006/03/02  21:00            26,680 隅田川.bmp
2006/03/02  21:00             1,272 青いレース編み 16.bmp
 お前ら、何してんだよ、ものですよ。消すのも手間。俺も贅沢させてもらう。
 仰ること、ごもっともないのですが。
 皆さま、よいお年を。
(5655) 
5714:
Re: 本人の名前
 投稿者:
文太 
  2011/12/31(土) 17:09 
     5712 番 文太 さんへのコメント 
      -  No.5714  -  
 このTreeへ   
コメント元:5712 へ
[リストへもどる]
 soft 
(5655) 
5715:
Re: 本人の名前
 投稿者:
としき 
  2011/12/31(土) 18:47 
参照先:http://www1.hinocatv.ne.jp/toshiki/
     5712 番 文太 さんへのコメント    コメント数 1
ぜんぜん覚えてないけど、アセンブラでargv[0]の取出しって難しいんでしたっけ。
>  たぶん、そのソフト、けっこうトリッキーな技を使っているはずです。だって、
> bltfとcommand.com(その他)にプログラムをロードさせよ、と言っておいて、
> blt(統合版)をロードさせるわけでしょ。
いや、そんなトリッキーではないですよ。
アルゴリズムとしては以下のような感じ。
  プログラム名がxxx1なら
    ロングのフラグは立てない
    引用符のフラグは立てない
    フルパスのフラグは立てない
  プログラム名がxxx2なら
    ロングのフラグは立てる
    引用符のフラグは立てない
    フルパスのフラグは立てない
  プログラム名がxxx3なら
    ロングのフラグは立てない
    引用符のフラグは立てる
    フルパスのフラグは立てない
  ・・・ (以下略)
 
  ロングのフラグが立っていれば
    ・・・
  ロングのフラグが立っていなければ
    ・・・
  フルパスのフラグが立っていれば
    ・・・
  フルパスのフラグが立っていなければ
    ・・・
  ファイル名取得ルーチンの呼び出し
  引用符のフラグがたっていれば
    ・・・
  引用符のフラグがたっていなければ
    ・・・
  文字列出力
こんな感じでできるはず。
> 2011/12/30  19:47               675 BLL.COM
> 2011/12/30  19:49               699 BLL2.COM
> 2011/12/30  19:50               753 BLL2W.COM
いや、実行ファイルは結局必要な数だけ作るわけだから、たとえば1KBのファイル
が8個とかできるので節約にはなりません。
ではなくて、ソースファイルが8個あったのが1個ですめば、たとえばクラスタ
サイズが32KBだったとして、32KB*7で200KB以上の節約になるのではないか、と。
ということで、アセンブラの勉強のためのよい例題ができた、ということにして
来年にとっておきましょうか。
では、みなさん、よいお年を。
(5655) 
5716:
Re^2: 本人の名前
 投稿者:
文太 
  2011/12/31(土) 20:03 
     5715 番 としき さんへのコメント    コメント数 1
としきさん ディスク・リソースの話は別として。
>いや、そんなトリッキーではないですよ。
>アルゴリズムとしては以下のような感じ。
>  プログラム名がxxx1なら
 これ、ほんとうにそう?
 だって、xxx1ってコマンドしたら、xxx1が実行されてしまうと
思うだけど。xxx2なら、xxx2がロードされて実行されてしまう……。
フラグ立てても、遅くない?
 あ、中身はまったく同じで、名前だけ違う統合型実行ファイルを8つとか
もて、と(今の自分のほうがよほど間抜けてはいるのだけど)。メンテは、
たしかに楽になるなぁ。それをやるなら、オプションのスキャンでしょう。もっと
難易度が高いか。操作法も忘れるなぁ。たぶん、あのままです。
 たしかにソースは1つになる。でも、bltの結果がつまらなくなる、、、。
 関係ないけど、addtail.c(もちろん、exeです)の存在を思い出した。あの
とき、これがあれば! 存在を思い出せれば! see めざらさん掲示板#4044。
 結局、欲しいもの、必要なものって、いつも同じみたい。
 来年はね、えと、アメリカ進出を目指します。
 若い頃やりたいと思ったことに挑戦しなければ、と。老人だ、とか言い訳して
るうちに人生、終わるぞ、と。
 しかし、なぜか、今、『はじめてのC』を開いてる。あと数時間ね。
 しかし2、頭の中には、type.asmがある。ファイルを読んで操作(filter)
の基本は、typeだよなぁ、と。これの参考書は手元にありますから、大丈夫。
 3年後ぐらいに、あのぉ、このbtype.asmなんですけどぉ、と言ってるかも。
      -  No.5716  -  
 このTreeへ   
コメント元:5715 へ
[リストへもどる]
 soft 
(5655) 
5717:
Re^3: 本人の名前
 投稿者:
文太 
  2011/12/31(土) 20:11 
     5716 番 文太 さんへのコメント 
どうでもいいことなのですが。
 『はじめて読むC言語』p.16
 This is a pen.
  S V O   は間違いです。これは、S V C です。
      -  No.5717  -  
 このTreeへ   
コメント元:5716 へ
[リストへもどる]
 soft 
(5655) 
5710:
bllf2.asm 修正
 投稿者:
文太 
  2011/12/30(金) 20:17 
     5702 番 文太 さんへのコメント 
bllf2.asm 修正
> 最後につけた、/h のヘルプメッセージは、ここの掲示板のソースでは、BLLF2.
>ASM にしか付いていません。万が一、必要が生じたら、他のソースにコピーして
>ください(内容はともかく、けっこうな差し替え箇所が大きいです)。
> もちろん、前にも書いたとおり、超楽チンコーディングなので、-h, -help, /?,
>-? でもヘルプは出ます。 何でも出ます。つまり、何か付けると、欲しい結果が
>永遠に得られません。(#05704 より)
 あのう、そうするとリダイレクトができないのですけど、、、、。
 #5702 の該当部分を、以下と差し替えましょう。
	CODE	SEGMENT BYTE
	ASSUME	CS:CODE, DS:CODE, SS:CODE
;=== ここから ===
	org	80h
	argc		db	?
	argv		db	127 dup (?)
	org	100h
;-----------------------------------------------------------------
START:	mov	bx, offset argv
	add	bx,1
	cmp byte ptr [bx],'/'
	je	USAGE
	cmp byte ptr [bx],'-'
	je	USAGE
	jmp	normal
USAGE:	print	help_usage
	newline
	retms
;-----------------------------------------------------------------
 相変わらず、-h, /h, -H, /H, -?, /? -help どれでもヘルプが出ます。
'-', '/' を、その場所で判定しています。
 余計なことして、使えなくしてるし。
(5655) 
5708:
$解決
 投稿者:
文太 
  2011/12/29(木) 22:03 
     5687 番 文太 さんへのコメント    コメント数 1
>;MSG	db	'hello with null','$'		;(1)
>MSG	db	'hello with zero',00h		;(2)
 ふ、ふ、ふ。文太くん。
 '$' がヌルだと誰が言ったの? 何となく記号的にそう見えなくもないけど。
ファンクション 09h(print マクロの中身)はねぇ、24h、つまり '$' そのもの
の前までを出力する、という命令なのだよ。asciiz  文字列を出力するためのも
のではないのさ。
 でもね、DTAとかに 0Dh が区切りになって入っている「文字列」があるんだ
けど、そいつをプリントするのに、 24h を書き込むなんて例題、たくさんあるみ
たいだよ。分かった?
(5655) 
5713:
TAB の悩み(解決)
 投稿者:
文太 
  2011/12/31(土) 16:53 
     5708 番 文太 さんへのコメント    コメント数 2
TAB の悩み(解決)
 研究ノートです。
 結果だけ。初歩の初歩でしょうけど、はまれば深いよ、やっぱり。
TAB	equ	09h
;--- func 02h (putchar; write char) F_DSPCHR
	mov     ah,02h
	mov     dl,TAB
	int     21h
;--- func 09h (putstr; write string) F_DSPSTR
	mov     ah,09h
	mov     dx,offset MSG
	int     21h
MSG	db	'aa',09h,'bb$'
;--- func 06h (direct console output) F_CONIO
	mov	ah,06h
	mov	dl,TAB
	int	21h
the last character output will be the character in DL unless DL=09h
on entry, in which case AL=20h as tabs are expanded to blanks
if standard output is redirected to a file (02h by Brown)
 とのことです(この英語、ちゃんと読めないのだけど)。
 悩んだ。
 展開されない純なタブがほしいなら、func 06h です。09h も展開してしまいます。
(5655) 
5720:
Re: TAB の悩み(解決)
 投稿者:
文太 
  2012/01/01(日) 01:34 
     5713 番 文太 さんへのコメント 
ケタ揃え for バッチ
C:\WINDOWS
>c:\bin9\bllf2w
"C:\WINDOWS\フィッシング.bmp"	"C:\WINDOWS\フィッシング.bmp"
"C:\WINDOWS\大草原の風.bmp"	"C:\WINDOWS\大草原の風.bmp"
"C:\WINDOWS\珈琲カップ.bmp"	"C:\WINDOWS\珈琲カップ.bmp"
 (タブは通りますよね)これでタブの悩みだった。
C:\BIN9
>zcopy /e *.* d:
C:\BIN9 --> D:\
  A       .BAT  
  BLL     .ASM  
  BLL     .COM  
 (こんなので、ケタを揃えたいときもあるね)前後のスペース邪魔だけど。
(5655) 
6153:
Re: TAB の悩み(解決)
 投稿者:
としき 
  2012/12/13(木) 23:25 
参照先:http://www1.hinocatv.ne.jp/toshiki/
     5713 番 文太 さんへのコメント 
> the last character output will be the character in DL unless DL=09h
> on entry, in which case AL=20h as tabs are expanded to blanks
> if standard output is redirected to a file (02h by Brown)
>  とのことです(この英語、ちゃんと読めないのだけど)。
参考訳:
このエントリーでは、DL=09h以外の場合、最後に出力される文字はDLに格納
されている文字になるだろう。
もし標準出力がファイルにリダイレクトされるならtabを表すAL=20hの場合は
空白文字に展開される。
私、英語力がないせいか、そのまま字面どおり訳してしまっています。
よくわからないのですが、もしかしてこれ、英語としては文法が正しくないの
でしょうか。それとも、ファンクションの動作が、文章どおりではないという
ことでしょうか。
      -  No.6153  -  
 このTreeへ   
コメント元:5713 へ
[リストへもどる]
 soft 
(5655) 
5686:
年賀状
 投稿者:
文太 
  2011/12/27(火) 16:18 
     5677 番 としき さんへのコメント 
としきさん
>宛先不明で届かないほうに1カノッサ。
 はい、戻りました。移ったのね、あっちも。ま、いいですね。
      -  No.5686  -  
 このTreeへ   
コメント元:5677 へ
[リストへもどる]
 soft