[HOME]  [現在掲示板へもどる] [ツリー表示]   
過去ログ  番号順 全部表示   FGALVZ   

01373/01373 BQO00549  Konno            VZk08Q3正式版
( 1) 06/09/04 00:43 コメント数:4
VZの部屋にDANNY版ベースの 私家版 VZ k08Q3 正式版をアップしました。
DOSV版 とPC98版を同梱しました。
高橋版 VZ(IBMJ).COM(T03k2 99/12/21)の自己解凍差分です。

VZK08Q3J.COM --> VZIBMJ.COM
VZK08Q3.COM --> VZ.COM

vzk08Q2 からの変更点
●和生さんの赤点デフ(VP.DEF)方式のインジケーターバーを装備しました。
●op$100で行:桁カウンター、インジケーターバーを40桁に配置します。
●オプション変数 op を新設。op$5f など0以上でインジケーターバーを表示、
  数字はアトリビュート。1〜255
  op$100 ならステータスラインを40桁以降表示しない。カーソルが速くなるかも。
  op$15f などで2つの機能を同時に使えます。


VZの部屋 DANNY版Vzからどうぞ。
http://homepage3.nifty.com/tamaneko/sub02.html#000012


01376/01373 DGF01024  めざら           Re: VZk08Q3正式版
( 1) 06/09/04 17:43 01373へのコメント(Konnoさん) コメント数:1
参照先:http://homepage3.nifty.com/mezala/
 いつもありがとうございます。
 さっそく頂戴して試用してみました。

 色属性は,うちではシアンとマゼンタくらいしか使えなかったのですが,こ
れは正常な動作だったでしょうか。他のステータスバーの色属性の設定,例え
ば Da などとの関連かもしれませんね。まだあまり実験できていないので,い
いかげんなこと書いちゃってまして,ごめんなさい。

 Ds+でもインジケータが出せるようになると, ファイル中での位置%表示の
代わりに,時計表示で隠れている残りメモリ表示を出したいかも,なんて考え
てしまいました。勝手な気の迷いなので,あまり気にしないでください。(^^;

 それではもう少し使い込んでみます。
 まずは,頂戴したお礼まで。(^^)

01378/01373 BQO00549  Konno            op で使える値
( 1) 06/09/05 00:58 01376へのコメント(めざらさん)
>  色属性は,うちではシアンとマゼンタくらいしか使えなかったのですが,こ
> れは正常な動作だったでしょうか。他のステータスバーの色属性の設定,例え
> ば Da などとの関連かもしれませんね。

文字が消えずにはっきり見える数値は意外と限られていますね。目視で見やすい
数値を記録していくマクロを作ってみました。2秒ごとにopの値を1〜255まで
変えていくので、[cr]でカーソル位置にその時の値をひたすら書き込むという
ものです。[ESC]で終了します。キーの反応がいまいちですが。(^^;

= op =

*m

80	^\ "op1〜255"
	tm22,				; msg を1行目に
	op[,
	op1,
:a	#d#s
:b	&w(10)
	&k k=r,				; キー入力
	&m(" op:%3d   %2x    key:%4x ",op,op,k)
	(k==13)? &?(" %2x ",op)		; [cr] opの数字書き込み
	(k==$4D00)? {op++, >b}		; [→] op++
	(k==$4B00)? {op--, >b}		; [←] op--
	(k==27)? >q		; [ESC] 終了
	&w(120)
	op++,
	(op>=255)? >q
	>a
:q	op], tm0, .
*

これで記録した結果が下記です(DOS/V)。いいかげんにやったので違っているかも
しれませんが。これで何か傾向が見えるかな。(^^;

;  2   7   C   E  1C  1E  25  2A  2F  5B  74  7A  7C  80  82  86  87  8C  8E
; 9C  9E  A5  A6  AF  B9  D7  D8  EA  ED  F4  FC 

>  Ds+でもインジケータが出せるようになると, ファイル中での位置%表示の
> 代わりに,時計表示で隠れている残りメモリ表示を出したいかも,なんて考え
> てしまいました。勝手な気の迷いなので,あまり気にしないでください。(^^;

面白そうですね。op の$200以上ならそういう表示にする。というのは割りと簡単に
出来そうですが。でも%表示も捨てがたいんですよねぇ。(^^;

01390/01373 BQO00549  Konno            VZk08Q3正式版差し替え
( 1) 06/09/06 23:55 01373へのコメント(Konnoさん) コメント数:2
VZの部屋にDANNY版ベースの 私家版 VZ k08Q3 正式版を差し替えました。
DOSV版 とPC98版を同梱しました。
高橋版 VZ(IBMJ).COM(T03k2 99/12/21)の自己解凍差分です。

VZK08Q3J.COM --> VZIBMJ.COM
VZK08Q3.COM --> VZ.COM

変更点
・80桁、40桁ともインジケーターの誤差をほぼゼロに出来ました。
・2窓に対応しました。それぞれの窓のステータスライン上で動きます。
 ただし、縦分割時の右窓では最大一文字分ずれます。

VZの部屋 DANNY版Vzからどうぞ。
http://homepage3.nifty.com/tamaneko/sub02.html#000012

01402/01373 CRG00666  文太             Re: VZk08Q3正式版差し替え
( 1) 06/09/09 22:08 01390へのコメント(Konnoさん) コメント数:1
金野さん、こんばんは。

 q3をXPで試してみました。かなり変なことになってしまいました。

op=$100, 
 (1)テキスト画面の1ケタ目に、14行目くらいまで縦に白い線がつく。
 (2)たしかにステータスラインは41ケタ以降黒くなり(バックグランドと
同じになり)消えましたが、インジケーターその他は出ません。
 (3)カーソルに影が出ることがある(これは狙ってるのではないのでしょう
が、是非欲しいなぁい。XPではカーソルがまだ見づらくて)。
 (4)ATOK を使っていますが、変換後、化ける。 「金野さん」と書いたら、
何て言うか、気持ちの悪い難しい漢字交じり文字に化けた。#nしたら正規化さ
れました。
 (5)カーソルは速くなりませんでした(ちょんと測りました)。これも期待
したい。

op=$15f,
 (6) ステータスラインのCPSの横に緑の半角スペースが映ったまま。 #]
をしても、消えません。

op-,
 (7)opをゼロにしたのですが、画面左上端(テキスト内)の1行目1ケタの
ところに白い半角カーソルがでており、 うーんと、「■火へん+尭・ウん」(豆
腐は半角。これは、「金野さん」が化けたもの)が出っぱなしですねぇ。(>_<)



 僕の色設定と関係あるのかなと思い、以下にその部分を vz.def からコピーし
ました。再現するかみていただけますでしょうか。
 念のためと(instant とか使いづらぁ〜)original.def  でやっても、期待さ
れる動作をしてくれません。上の(1)(4)は、しかし、再現されませんでし
た。下のオプションがらみでしょうか。  「差し替えた」というほうの版です。
VZIBMJ.COM 1906-09-06 23:28 です。


 ま、まさかとは思いますけど、instantマクロby m.gannでは駄目ですか?


An$0F                   ; テキスト属性
Ac$13                   ; コントロール文字1
Al$1A                   ; 行番号
Ah$B0                   ; ブロック
As$70                   ; ステータスバー
Ao$E0                   ; コンソールファイル
Ar$30                   ;  Read onlyファイル
Am$0E                   ; メッセージ
Ab$B0                   ; ウィンドウわく
At$70                   ; ウィンドウタイトル
Aw$70                   ; ウィンドウ文字
Af$E0                   ; ウィンドウ先頭文字
Ai$0F                   ; ウィンドウカーソル
Aj$74                   ; ヘルプウィンドウ
Ak$0E                   ; キーモード
Au$4F                   ; ファイラーカーソル
Ap$70                   ; ファンクションキー
Ad$07                   ; DOSコマンドライン
Av$80                   ; カーソルライン
Ae$12			; コントロール文字2(CR,TAB,EOF)
Ay0			; ファイル名(ステータスライン)

Du+			;カーソル行アンダーライン
Ci0			;カーソル形状 (挿入) (0..15)

01404/01373 BQO00549  Konno            Re^2: VZk08Q3差し替え版に不具合
( 1) 06/09/10 00:27 01402へのコメント(文太さん) コメント数:1
> op=$100,
>  (1)テキスト画面の1ケタ目に、14行目くらいまで縦に白い線がつく。
>  (2)たしかにステータスラインは41ケタ以降黒くなり(バックグランドと
> 同じになり)消えましたが、インジケーターその他は出ません。

(1)と同じ現象は確認できませんでした。(2)は仕様です。下2桁が色です。

>  (3)カーソルに影が出ることがある(これは狙ってるのではないのでしょう
> が、是非欲しいなぁい。XPではカーソルがまだ見づらくて)。

これは影が出たほうがいいということですか。これも確認できてません。

>  (4)ATOK を使っていますが、変換後、化ける。 「金野さん」と書いたら、
> 何て言うか、気持ちの悪い難しい漢字交じり文字に化けた。#nしたら正規化さ
> れました。

これも確認できませんでした。

>  (5)カーソルは速くなりませんでした(ちょんと測りました)。これも期待
> したい。

XPでカーソルが遅いのはNTVDMに割り当てられるタスクが少ないせいではない
でしょうか。WIndowsマシンなら表示は十分な速さがあるので差が目に見える
事は無いでしょう。

> op=$15f,
>  (6) ステータスラインのCPSの横に緑の半角スペースが映ったまま。 #]
> をしても、消えません。

インジケーターは動いてないのでしょうか。

> op-,
>  (7)opをゼロにしたのですが、画面左上端(テキスト内)の1行目1ケタの
> ところに白い半角カーソルがでており、 うーんと、「■火へん+尭・ウん」(豆
> 腐は半角。これは、「金野さん」が化けたもの)が出っぱなしですねぇ。(>_<)

これも出ないですね。環境によるのでしょうか。

>  僕の色設定と関係あるのかなと思い、以下にその部分を vz.def からコピーし
> ました。再現するかみていただけますでしょうか。

du+ にしたら、アンダーバーの色が移動後も残るようになってしまいました。
もしかしたら op の影響かもしれません。調べてみます。

> VZIBMJ.COM 1906-09-06 23:28 です。
       ^^^^
なんか古いようですね。ってまさかと思ってみてみたらうちのは確かに2006でした。
文太さんの環境では前の版(k08Q2)では問題なかったんですよね。だとしたら
今回の変更に問題があった可能性が有ります。カーソル情報とかレジスタやフラグ
とかを戻してないとかあるのかもしれません。

>  ま、まさかとは思いますけど、instantマクロby m.gannでは駄目ですか?

これは関係ないと思います。私のもたぶん同じですから。

01407/01373 CRG00666  文太             Re^3: VZk08Q3差し替え版に不具合
( 1) 06/09/10 02:15 01404へのコメント(Konnoさん) コメント数:1
金野さん、夜分おそくに。

 ishテスト、踏み絵問題については明日、というか今日中に。
 これも、いちおう簡易レスです。

> (1)と同じ現象は確認できませんでした。

 そうですか。え〜〜。でも、どっかやばいですよね。

> インジケーターは動いてないのでしょうか。

 僕は、見たことがないのです。(T-T)

>>  ま、まさかとは思いますけど、instantマクロby m.gannでは駄目ですか?
> これは関係ないと思います。私のもたぶん同じですから。

 うん、よかった。

> du+ にしたら、アンダーバーの色が移動後も残るようになってしまいました。
> もしかしたら op の影響かもしれません。調べてみます。

 僕も、これを一番に疑いました。皆さんされてないみたいだし、これに最初の
旧8と同程度の機能を果たしてもらおうと、色々と苦痛に耐えてきました。旧8
だと、バチッと下線なんです。 もちろん、dos/v系では、アンダーバーとは言え
ないけど、表示行がともかくも強調されてくれてます。

> > VZIBMJ.COM 1906-09-06 23:28 です。
>        ^^^^
> なんか古いようですね。

 ひやっとしました。あちこちでタイムスタンプがおかしいので。
 でも、これはとらじさんの手抜きですね(^QLFN)。 Vzファイラーはちゃん
と表示してます。2006で、vzibmj.comのアップデートに問題はありません。

> 文太さんの環境では前の版(k08Q2)では問題なかったんですよね。だとしたら

 これを訊かないで欲しかったのだけど、明日、試します。常用は、Q1です。Q2
は導入したことがありません。

 ただ、ここ30分でしたのは、original.defでの2つのXPマシンでのテスト
です。まだ、インジケーターを一度も見られてません。(T-T)

 一つだけ質問です。インジケーターが出たら、1ケタや40ケタの文字はどう
なるんですか? ほんとに見られてないんですよ。(T-T)  
 僕は和生さんのマクロも見たことないのです。大昔にヴァーチカルラインとい
うマクロをちょっとだけ入れさせてもらったことがあるのですが、すさまじい技
術力で書かれたマクロだったはずなのですが、文章書きの僕には、え、それで何
するの? と思ってしまって。そういう方向性なんです。すいません。

01409/01373 CRG00666  文太             Re^4: VZk08Q3差し替え版に不具合
( 1) 06/09/10 12:39 01407へのコメント(文太さん) コメント数:1
金野さん、進歩しましたし、少し理解が進みました。インジケーターは、「テキ
スト内での位置」、つまり n% の位置をグラフィックに表すものだったのですね。

 インジケーターが「動く」というので、何か違うものをイメージしてるみたい
だぞ、と思ってました。ただ、はやりまだ変です。

 ファイル先頭の1行目1ケタ目に(昨晩、画面左上端と書きましたが、ファイ
ルの先頭なのかも…)、白い半角スペースがしばしば現れ、そこでFEPでの漢
字変換をすると化け文字が出ます。この半角豆腐は時々(前回レポートしように)
縦13、4行目まで進出し、やはり文字化けをおこさせます。ちょっとXP2台
ではやってませんが、たぶん、僕の環境の問題じゃないだろうな、と思います。

 オリジナル・デフに下を実行すると、インスタントが [ESC]@ な、うーんな、
オリジナル+文太の色環境でテストできます。

=== Bcolor.def ===;
* Macro
50 ^^ "bcolor"

An$0F,                  ; テキスト属性
Ac$13,                  ; コントロール文字1
Al$1A,                  ; 行番号
Ah$B0,                  ; ブロック
As$70,                  ; ステータスバー
Ao$E0,                  ; コンソールファイル
Ar$30,                  ;  Read onlyファイル
Am$0E,                  ; メッセージ
Ab$B0,                  ; ウィンドウわく
At$70,                  ; ウィンドウタイトル
Aw$70,                  ; ウィンドウ文字
Af$E0,                  ; ウィンドウ先頭文字
Ai$0F,                  ; ウィンドウカーソル
Aj$74,                  ; ヘルプウィンドウ
Ak$0E,                  ; キーモード
Au$4F,                  ; ファイラーカーソル
Ap$70,                  ; ファンクションキー
Ad$07,                  ; DOSコマンドライン
Av$80,                  ; カーソルライン
Ae$12,			; コントロール文字2(CR,TAB,EOF)
Ay0,			; ファイル名(ステータスライン)
CA4+16+32,		;コントロール文字の色分け		##1.6
Du+,			;カーソル行アンダーライン
Ci0,			;カーソル形状 (挿入) (0..15)
Ds+,			;システム情報の表示

*

01412/01373 BQO00549  Konno            Re^5: VZk08Q3差し替え版に不具合
( 1) 06/09/10 14:02 01409へのコメント(文太さん) コメント数:1
> 金野さん、進歩しましたし、少し理解が進みました。インジケーターは、「テキ
> スト内での位置」、つまり n% の位置をグラフィックに表すものだったのですね。

私の説明が悪かったですね。というか、ほとんど説明になってないなぁ。動かして
みればわかるかと思ったもので。m(__)m

>  インジケーターが「動く」というので、何か違うものをイメージしてるみたい
> だぞ、と思ってました。ただ、はやりまだ変です。

一応動くのは確認されたという事ですよね。(^^;

>  ファイル先頭の1行目1ケタ目に(昨晩、画面左上端と書きましたが、ファイ
> ルの先頭なのかも…)、白い半角スペースがしばしば現れ、そこでFEPでの漢
> 字変換をすると化け文字が出ます。この半角豆腐は時々(前回レポートしように)
> 縦13、4行目まで進出し、やはり文字化けをおこさせます。ちょっとXP2台
> ではやってませんが、たぶん、僕の環境の問題じゃないだろうな、と思います。

わかりました。私は sl+ で時計表示してるんですが、sl- にしたら現象が出ました。
ステータスラインの文字数があふれて2行目まで来ているんです。バグですね。(^^;
漢字変換もこの位置で化けるなら表示の問題ではないかなぁ。
とりあえずここだけ直して差し替えてみます。m(__)m

>  オリジナル・デフに下を実行すると、インスタントが [ESC]@ な、うーんな、
> オリジナル+文太の色環境でテストできます。

これは前回ので作りましたが、差し替えました。私は dh+ なんですが、みなさん
dh- の人が多いんでしょうか。


01415/01373 CRG00666  文太             Re^6: VZk08Q3差し替え版に不具合
( 1) 06/09/10 16:27 01412へのコメント(Konnoさん) コメント数:1
金野さん、

> 一応動くのは確認されたという事ですよね。(^^;

 はい、期待されている動きは確認できてます。m(__)m
 前回は、試したファイルがでかすぎたのですね。いつもほとんどすべてのこと
の下書きに使う c:\aaa.txt なるものだったので、インジケーターが正しく作動
してもピクリともしなかったのも重なったのだと思います。

> わかりました。私は sl+ で時計表示してるんですが、sl- にしたら現象が出ました。

 slか。それ以外にもあるのかな…。僕のvz.defには、それがそもそも入ってな
いので…。時計は要らないなぁ、と前々から思っていたもので。それより今日の
日付のほうを確認する必要の方がいっぱい生じます。なので、デスクトップには
カレンダー・アプリ。

> 漢字変換もこの位置で化けるなら表示の問題ではないかなぁ。

 と思いますよ。#nしたら直ったので。
 ただ、インジケーターが縦ににじんでいたときには、10行目くらいまで第1
ケタが化けてました。

> これは前回ので作りましたが、差し替えました。

 ですよね。
 つまらない自慢ですが、>lsed "s/ /, /1"(logos sed で、行最初のスペース
の前にカンマ挿入)なんて技を使って喜んでしまいました。 このフラグ、serow
版にはないんです。
 じつは、めざらさんの「正規表現講座」のとき、随分深いところまで行ってし
まって…。(^^ ゞ

> 私は dh+ なんですが、みなさんdh- の人が多いんでしょうか。

 これは、僕も+でした。今まで気にしたことがなかったのですが、8・3の世
界では、ツールの出力も何も(タグとか)みんな大文字にしてしまいたい感じ。


 ish 部屋のヘッダ省略、[全文表示] リンク機能、仕様を確認しました。 
▼でも効かないですね。でもこれは慣れの問題でしょう。慣れます (^^)V
 また ish 部屋の cgi とのかね合いによる文字制限は、うーん、チェックして
から上げるかなぁ。とりあえず上げちゃうような気がする…。


> XPでカーソルが遅いのはNTVDMに割り当てられるタスクが少ないせいではない
> でしょうか。WIndowsマシンなら表示は十分な速さがあるので差が目に見える
> 事は無いでしょう。

 そうそう、これなんですが、このNTVDMにより多くのタスクを割り当てるなんて
こと、できませんよね。

01416/01373 BQO00549  Konno            VZk08Q3更に修正
( 1) 06/09/10 20:41 01373へのコメント(Konnoさん) コメント数:1
 sl- の場合、ステータスラインが2行目にはみ出てしまい、いろいろ問題を起こす
バグが有りました。

私は sl+ で使っていたので気が付きませんでした。文太さん、ありがとう。

ということでまたまた差し替えました。2006/9/10版です

VZの部屋 DANNY版Vzからどうぞ。
http://homepage3.nifty.com/tamaneko/sub02.html#000012

01420/01373 BQO00549  Konno            Re^7: VZk08Q3差し替え版に不具合
( 1) 06/09/12 01:19 01415へのコメント(文太さん) コメント数:1
>  ただ、インジケーターが縦ににじんでいたときには、10行目くらいまで第1
> ケタが化けてました。

修正版で再現しないか試してもらえませんでしょうか。m(__)m

>  つまらない自慢ですが、>lsed "s/ /, /1"(logos sed で、行最初のスペース
> の前にカンマ挿入)なんて技を使って喜んでしまいました。 このフラグ、serow
> 版にはないんです。

sed でそういうことも出来るんですね。私は手作業でカンマを入れました。(^^;
キーボードマクロがうまく動かなかったもので。もしかしてバグ?

>  また ish 部屋の cgi とのかね合いによる文字制限は、うーん、チェックして
> から上げるかなぁ。とりあえず上げちゃうような気がする…。

ish 部屋で600行まで出来そうと書きましたが、ブラウザ経由では200行ぐらいしか
出来なかったですね。マニアックな書き込み専用ツールが簡単に利用できるように
なれば需要が有りそうですね。

>  そうそう、これなんですが、このNTVDMにより多くのタスクを割り当てるなんて
> こと、できませんよね。

NTVDM では設定出来ないようですが、SP2 にしたり、パフォーマンス優先に
カスタマイズしたり、WINDOWS のスタイルをクラシックにすると改善すると
思います。
すでにやっているかもしれませんが、具体的な話は過去ログの
NO.189からのツリーでしています。NO.209あたりかな。

あとはVZアイコンのプロパティのその他タブで他のプログラムの優先度を
下げるぐらいかなぁ。これをやると他のアプリが重くなるけど。(^^;

01422/01373 CRG00666  文太             Re^8: VZk08Q3差し替え版に不具合
( 1) 06/09/12 02:00 01420へのコメント(Konnoさん) コメント数:1
金野さん

>修正版で再現しないか試してもらえませんでしょうか。m(__)m

 もちろん、するつもりでおりました。遅くなりそうで申し訳ないのですが、2、
3日かかると思います。今日もこんな時間だし。

>>  つまらない自慢ですが、>lsed "s/ /, /1"
>sed でそういうことも出来るんですね。私は手作業でカンマを入れました。(^^;
>キーボードマクロがうまく動かなかったもので。もしかしてバグ?

 是非、検証をお願いします。vz.comのver upで問題があるとは思っていないの
ですが、僕も先日、あ、キーボードマクロが使えん、という場面に出会い、冷や
汗しました。追求しませんでしたが…。

>>  また ish 部屋の cgi とのかね合いによる文字制限は、うーん、チェックして
>> から上げるかなぁ。とりあえず上げちゃうような気がする…。
>ish 部屋で600行まで出来そうと書きましたが、ブラウザ経由では200行ぐらいしか
>出来なかったですね。マニアックな書き込み専用ツールが簡単に利用できるように
>なれば需要が有りそうですね。

 まず、ここで僕は「文字制限」といういいかげんな表現で「文字種の制限」と
伝えたつもりでした。 すいません、稚拙な表現力で。<br>みたいな、cgiが
読んでしまう文字列がishに入っていたらまずい、という文脈での話です。

 そして、300行ぐらいまで行ける、というのが金野さんの書き込みだったは
ずです。 (初心者に優しくNiftyの制限で合わせてくれたんだ、と僕は思いまし
た。)それで、安全な250行で、マルチヴォリュームしたのです。250
は行けたはずです。

 マニアックなツール、あるといいのですが…。 「これactive perlでしか動か
ないスクリプトだよ」でも歓迎です。

> NTVDM では設定出来ないようですが、
> あとはVZアイコンのプロパティのその他タブで他のプログラムの優先度を
> 下げるぐらいかなぁ。これをやると他のアプリが重くなるけど。(^^;

 ありがとうございます。試せることがあるというのは、夢と向上心に繋がりま
す。可能性は、大袈裟にいえば、救済をさえ意味する場合があると思う。そのう
ち試して、「こう使えば、いいかも」的な書き込みができたら、いいのですが…。
ほんとうに、お知恵を授けてくださって、ありがとうございます。

01426/01373 CRG00666  文太             Re: VZk08Q3更に修正
( 1) 06/09/13 00:00 01416へのコメント(Konnoさん) コメント数:1
金野さん、いけましたよ!

 しみ出してきてないし、FEP の文字化けもない。インジケーターの動きが今一
つスムーズじゃないみたいですが。うーん、これは動きがギクシャクすると(心
理の投影かもしれないけど)、なんか不安定が醸し出されてしまいますね。何と
も好き勝手な感想をのたまってる奴ですが>おのれ。

 ちょっと切り替わりのタイミングの規則が分からないな、と思いました。例の
bcolor.defの末尾に 
op=$10f, #]
 なんて書き加えたのですが、ブロック指定の残像のように1画面送らないと変
わらないものなのかな、と思いました。間違っていますか? op-,をするときに
は、瞬時なのですが。

 じつは、vzdefディレクトリでなく、vz.com の格納ディレクトリを整理して、
vzk03k(高橋版最終)を久しぶりに起動しました。vzk にも真ん中にバーが動く
のですね。 なんかのオプションでしたっけ。あるいは、c.mosオリジナルの時代
からあったのかな??? 色はとにかく弱いし、それを言えば、vz.comについて
もまったく弱いですね。オリジナル・デフなんかで起動しようものなら、もう、
はっきり言って、なにも出来ないようになってる。インスタントは、僕は@P(と
らじ流)なんですが、それだって、あれ、俺、今、[ESC]@って、押したよなぁ、
みたいな具合で。

 とりあえず、僕のだーい好きなvz.def(vzibmj.defなんかじゃない)でも、q
3、ちゃんと動きましたよ。


 ずうずうしいとは思いますが、「ある文系Vzユーザ」の実態について、少し
書かせていただきますね。僕は、ステータスラインをほとんど見ないでVzを使
っていることに今回気づきました。僕の知るかぎりでは(笑&汗)、僕の金野版
q1は、ノーマルできっとオリジナルと変わらない表示をしているのではないか
と思います。一番に見るのはファイル名。(知らないあいだに)10個くらい開
いて作業していることはしょっちゅうなので、ファイル名はものすごくよく確認
します。次は、文字コード(この表現でいいんでしたっけ? 文字コード番号?)
改行文字で[ODOAh]な部分です。 「ヘミングウェイ」と「へミングウェイ」、
「ニーチェ」と「二ーチェ」を識別しなければならないこともあるので。

 それから、何かブロック範囲だとか、lnを使うマクロを書いているときに、行
番号かな。もっともこれはほとんどプログラミング用で、論理行が一段落を意味
して、原稿用紙2枚くらいが論理行のときには、そこを見て何かの情報を得ると
いうことは皆無ですね。

 ここからおねだりです。技術的な難易度は、僕には想像できないのですが…。
 ファイル名だけを表示するオプションをつけて欲しい。正確にステータスライ
ンのファイル名が何字まで出せるかは分かりませんが、試してみたら19字しか
出ません。ディレクトリ単位で切っているようなので、もう少し文字数があるの
だろうとは思いますが、考えてみれば、これは短すぎます。ルートから数えて、
20字程度って、少なすぎます。Windows の時代には、と言わなくても、少なす
ぎる。いくらなんでも。

(グラフィックなつもりで描くと)
 
 S □ 1* c:\nantoka\kantoka\mada\ikuyo\sugoi\nnjya\naino\sasuga\vz!.txt
 
 といったステータスラインを可能にするオプションができたら、(きっとそれ
ほど需要はないのでしょうが)、僕は、真っ先にテスターをします。(上のサン
プルは62字のフルパス・ファイル名。)

 今、調べたら、YASAT さんが、Vzが扱えるファイル名は63字までだと前に
教えてくれていました。それぐらいまでは行けるでしょう。それでなくても8・
3の MS-DOS 世界で誕生したVzですから、深くなりがちなディレクトリも平気
で扱えなくちゃ。逆にXPはルートのファイル数の制限もあって(この手の制限
のない世界は、原理的にあり得ないのでしょうけれど)、深くなりがち。それで、
これを今回書いておいても、根本的に我が侭であるにせよ、ある種の合理性はあ
るだろうと思ったのです。考える余地があるなら、どうかご一考ください。

 もちろん、まったく急いでおりませんので、どうか、頭の片隅にでもいれてお
いていただけるだけで、幸いです。

01429/01373 CRG00666  文太             Re^9: VZk08Q3差し替え版に不具合
( 1) 06/09/13 00:50 01422へのコメント(文太さん) コメント数:1
金野さん、色々とお世話になっています。

> NTVDM では設定出来ないようですが、
> あとはVZアイコンのプロパティのその他タブで他のプログラムの優先度を
> 下げるぐらいかなぁ。これをやると他のアプリが重くなるけど。(^^;

 これは、効きませんでした。たぶん、オリジナル旧8Vzでも、何とかという
常駐アプリがなければ(なんだっけ、とにかくカーソル移動のスピードが半端で
ない状態にしてくれる常駐ものがあるのです)、こんなものだったのでしょう。
[PageUp][PageDown]  を賢く使う、#34, #35 を賢くマクロで使う、でしのぐべき
問題なんだろうな、と思っています。

 それでも、 転ぶ神あれば救う神ありで、あの pif を見たお陰で、EMS のペー
ジ数が、 1024 までアップ! どうして、今までこれを試さなかったのか、まっ
たく怠惰な奴だなぁ。これで vmap としきパッチが、ふたたび生きてきました!
 いいこともある。試していれば、転ぶ回数も多いぶん、高く飛べる。ああ、救
済みたいだ。「アナタハ、カミヲシンジマスカ?」(まったく最近お目にかから
ない)みたいですけれどね。

01435/01373 BQO00549  Konno            Re^2: VZk08Q3更に修正
( 1) 06/09/13 22:13 01426へのコメント(文太さん) コメント数:1
文太さん、大丈夫だったみたいですね。

> インジケーターの動きが今一つスムーズじゃないみたいですが。

目安ですからこんなものではないかと思います。(^^;

>  ちょっと切り替わりのタイミングの規則が分からないな、と思いました。例の
> bcolor.defの末尾に
> op=$10f, #]

カーソルを動かせば変ります。だから、
op=$10f, #d#s
でいいかと。(^^;

キーボードマクロも、Win98、XPともに試した限りでは動きました。あのときは
キーを押し間違えていたのかもしれません。

> S □ 1* c:\nantoka\kantoka\mada\ikuyo\sugoi\nnjya\naino\sasuga\vz!.txt
>  といったステータスラインを可能にするオプションができたら、(きっとそれ
> ほど需要はないのでしょうが)、僕は、真っ先にテスターをします。(上のサン
> プルは62字のフルパス・ファイル名。)

うーん、今のところやるつもりはないですが、もしも気が向いて、出来そうだったら
やってみるかもしれませんが、多分やらないと思うので期待しないで下さい。


01436/01373 BQO00549  Konno            Re^10: カーソルリピート?
( 1) 06/09/13 22:16 01429へのコメント(文太さん) コメント数:1
>  これは、効きませんでした。たぶん、オリジナル旧8Vzでも、何とかという
> 常駐アプリがなければ(なんだっけ、とにかくカーソル移動のスピードが半端で
> ない状態にしてくれる常駐ものがあるのです)、こんなものだったのでしょう。
> [PageUp][PageDown] を賢く使う、#34, #35 を賢くマクロで使う、でしのぐべき
> 問題なんだろうな、と思っています。

ありゃ、効きませんでしたか。私も試してなかったのでいいかげんな情報で
すみませんでした。
もしかしてカーソルリピート速度を上げたいと言う話だとしたら、DOSの

MODE CON: RATE=20 DELAY=1

これで、RATE=32 で最高スピードになるはず。でもXPのDOS窓では変らないような
感じですね。
それなら、コントロールパネルのキーボードでカーソルの速度を変更できます。
XPなら点滅も止められたけど、他のアプリで困るのでやめたほうが良いですね。

01438/01373 CRG00666  文太             Re^3: VZk08Q3更に修正
( 1) 06/09/13 23:21 01435へのコメント(Konnoさん) コメント数:1
金野さん、

> カーソルを動かせば変ります。だから、
> op=$10f, #d#s
> でいいかと。(^^;

 いえいえ、「手で一画面分スクロールすると直る」(ブロックの残像みたい、
とはこの意味です)ぐらいなので、何か、まだまずいのかなぁ…。

> キーボードマクロも、Win98、XPともに試した限りでは動きました。あのときは
> キーを押し間違えていたのかもしれません。

 ですか。ありがとうございます。僕も気にしています。

> S □ 1* c:\nantoka\kantoka\mada\ikuyo\sugoi\nnjya\naino\sasuga\vz!.txt
> うーん、今のところやるつもりはないですが、もしも気が向いて、出来そうだったら
> やってみるかもしれませんが、多分やらないと思うので期待しないで下さい。

 はい、もちろん期待したりしません(っていう言い方もねぇ)。それでも頭に
入れていただいただけで感謝です。(o|o)

01439/01373 CRG00666  文太             Re^11: カーソルリピート?
( 1) 06/09/13 23:28 01436へのコメント(Konnoさん) コメント数:1
金野さん、

> それなら、コントロールパネルのキーボードでカーソルの速度を変更できます。
> XPなら点滅も止められたけど、他のアプリで困るのでやめたほうが良いですね。

 こ、これ効いたみたい!!!
 点滅も止めた! Ciが効かないのは、このせいだったの?!
 もう少し様子をみてからレポートさせていただきます。他のアプリで困ります
か? キャッキャッ。お菓子をもらった昔の子供のように喜んでいます。今の子供
は、お菓子では喜びませんからねぇ。いずれにせよ、多謝。うん、これは速い。
猿飛だ。

01440/01373 BQO00549  Konno            Re^4: VZk08Q3更に修正
( 1) 06/09/14 00:29 01438へのコメント(文太さん)
>  いえいえ、「手で一画面分スクロールすると直る」(ブロックの残像みたい、
> とはこの意味です)ぐらいなので、何か、まだまずいのかなぁ…。

もしかして、ステータスラインの右半分がすぐには消えないよ、という話ですか。
それなら手抜きという名の仕様です。(^^;

あれ、でもそれだとするとモードを変えないと消えないようなきがするなぁ。

01441/01373 BQO00549  Konno            Re^12: げげっ
( 1) 06/09/14 00:41 01439へのコメント(文太さん) コメント数:1
>  こ、これ効いたみたい!!!
>  点滅も止めた! Ciが効かないのは、このせいだったの?!

文太さんがこれを知らなかったとは。(゜゜;)
この手の話は前にもどこかでしたような気がするんですが、検索できないですねぇ。
気のせいだったか。VZFAQにでも張っとこうかな。

>  もう少し様子をみてからレポートさせていただきます。他のアプリで困ります
> か? キャッキャッ。

点滅を止めるとワードなどの細いカーソルが非常に見づらくなりますよ。
掲示板の書き込みとかも。まぁすぐに戻すでしょうが。(^^;

01443/01373 CRG00666  文太             Re^13: げげっ
( 1) 06/09/14 02:47 01441へのコメント(Konnoさん) コメント数:1
金野さん、深夜に、というか、めざらさんに夢の中で起こされてしまって…(謎)。

> 文太さんがこれを知らなかったとは。(゜゜;)
> この手の話は前にもどこかでしたような気がするんですが、検索できないですねぇ。
> 気のせいだったか。VZFAQにでも張っとこうかな。

 検索は2、3日中にしてみますが、VZFAQ に貼る価値はあるんではないでしょ
うか。基本の基本なんでしょうけれど。

> 点滅を止めるとワードなどの細いカーソルが非常に見づらくなりますよ。
> 掲示板の書き込みとかも。まぁすぐに戻すでしょうが。(^^;

 ワードでカーソルを見たことがなく、掲示板の書き込みもVzなんです。その
程度の弊害なら、ちゃんと Ci0 が効く環境を僕は選んでしまいます。 カーソル
の点滅を消すのって、たぶん僕がしたもっと初期のVzカスタマイズのような気が
します。うれしかったな。

 いずれにせよ、ありがとうございました。とりあえず、快適です。はっきりい
って、金野さんのお陰で、文太マウスではものすごく快適になりました。
 もっともUSBキーボードのメビウスでは、効かなかったんだ。EMS のことと
かも。色々あります。XPを3台をメインにしてると、どうしてこっちでは駄目
なの??? みたいなのの連続です。それでも、多謝、多謝です。

01444/01373 CRG00666  文太             Re^14: げげっ
( 1) 06/09/14 12:31 01443へのコメント(文太さん) コメント数:1
金野さん

> 文太さんがこれを知らなかったとは。(゜゜;)

 いえ、僕だからこそ、知らないんです。間抜けで視野が狭いのです。

>> この手の話は前にもどこかでしたような気がするんですが、検索できないですねぇ。
>> 気のせいだったか。VZFAQにでも張っとこうかな。
>
> 検索は2、3日中にしてみますが、VZFAQ に貼る価値はあるんではないでしょ
>うか。基本の基本なんでしょうけれど。

 どうも、とんちんかんなやり取りだったみたいで…。(~_~;
 でも、Nifty の過去ログでいちおう検索しました。W95時代にJUNさんが
きっちり指摘していました。本題は違うみたいでしたが。でも、FAQ にあっても
いいような…。

 またぎレスですが、q3のステータスラインの半減の話で、「仕様」というこ
とで了解し、他の不具合はとりわけ見つからないことを確認しました。

01448/01373 BQO00549  Konno            Re^15: げげっ
( 1) 06/09/15 00:57 01444へのコメント(文太さん)
>  でも、Nifty の過去ログでいちおう検索しました。W95時代にJUNさんが
> きっちり指摘していました。本題は違うみたいでしたが。でも、FAQ にあっても
> いいような…。

JUNさんですか、見つけられませんでした。探し方が悪いのかな。(^^;
ログが抜けてるのかなぁ。結構抜けがあるし。

>  またぎレスですが、q3のステータスラインの半減の話で、「仕様」というこ
> とで了解し、他の不具合はとりわけ見つからないことを確認しました。

そういっていただけると安心して使えます。(ぉ

01725/01373 CIX00956  あきろ           Re: VZk08Q3、モバギでは・・。
( 1) 06/11/12 14:57 01390へのコメント(Konnoさん) コメント数:1
 Konno さん、こんばんは。(^^)

 モバギでは、VZk08Q2 を利用していましたので、先日 Q3 に変更してみまし
  た。

 が、どうもうまくないです。(VZk08Q3 は、w2k のDOS窓では快調に動作
  しているのですが。)

 モバギは、mgdisp2.sys という日本語表示ドライバを利用していますが、Q3
  にすると、20行表示を指定しているのに、15行表示になります。また、
  表示が乱れます。例えば、スクロールすると、ある一定の行から先は表示さ
  れないなどの症状が出ます。

 以上、ご報告申し上げます。

01727/01373 BQO00549  Konno            Re^2: VZk08Q3、モバギでは・・。
( 1) 06/11/12 18:18 01725へのコメント(あきろさん) コメント数:1
>  モバギは、mgdisp2.sys という日本語表示ドライバを利用していますが、Q3
> にすると、20行表示を指定しているのに、15行表示になります。また、
> 表示が乱れます。例えば、スクロールすると、ある一定の行から先は表示さ
> れないなどの症状が出ます。

げげ、そんな症状が出るんですか。う〜ん、表示関係はステータスライン以外変更
した覚えが無いんですがねぇ。確認してみます。
もちろん、VZIBMJ.COM は 2006/09/10 19:51 の差し替え版ですよね。

行数の切り替えはマクロでやってるんですよね。できたらそのマクロを見せて
もらえませんか。

01731/01373 CIX00956  あきろ           Re^3: VZk08Q3、モバギでは・・。
( 1) 06/11/12 22:38 01727へのコメント(Konnoさん) コメント数:1
 Konno さん、こんばんは。(^^)

 mgdisp2.sys 組込み時に行数を20行に指定しています。

device=**(省略)**\mgdisp2.sys /V2

 /V0 が 30 行表示、/V1 は 15 行表示です。
 ということで、マクロは関係ないと思います。


> もちろん、VZIBMJ.COM は 2006/09/10 19:51 の差し替え版ですよね。

 念のために、再度ダウンロードしパッチを当てたものを使用してみましたが、
  同じ症状です。あと、vzibmj.com を vz.com にリネームして利用しています。

 その他何かありましたら、またお聞きください。

01733/01373 BQO00549  Konno            Re^4: VZk08Q3、モバギでは・・。
( 1) 06/11/12 23:46 01731へのコメント(あきろさん) コメント数:1
>  mgdisp2.sys 組込み時に行数を20行に指定しています。
> device=**(省略)**\mgdisp2.sys /V2
>  /V0 が 30 行表示、/V1 は 15 行表示です。
>  ということで、マクロは関係ないと思います。

え〜と、これは初期状態ですよね。これで15行になってしまうのですか。
行数切り替えは ^KL でしょうか。あれ?これだと3段切り替えは出来ないですよね。

>  念のために、再度ダウンロードしパッチを当てたものを使用してみましたが、
> 同じ症状です。あと、vzibmj.com を vz.com にリネームして利用しています。

これは間違いないですね。何が悪いのか、これから調べてみます。m(__)m


01735/01373 CIX00956  あきろ           Re^5: VZk08Q3、モバギでは・・。
( 1) 06/11/13 12:14 01733へのコメント(Konnoさん) コメント数:2
 Konno さん、こんにちは。
 (本日は代休のため、こんな昼日中にコメントしていまーす)

> え〜と、これは初期状態ですよね。これで15行になってしまうのですか。
> 行数切り替えは ^KL でしょうか。あれ?これだと3段切り替えは出来ないですよね。

 もう少し正確に表現します。初期状態で起動したときには、20 行モードで起
  動するのですが、起動完了時には 15 行表示になってしまいます。(起動途
  中で 15 行表示に切り替わるというべきか)。

 行数切り替えは、マクロを利用しています。(というか、現実には、モバギ
  は 20 行表示でしか利用しないので、マクロを使用することは皆無といって
  よいです。割り付けたキーを忘れていたくらいですから。)

 もしも、マクロが必要であれば、張り付けますが・・。
 (切り替えは、マクロのなかで、#E "mgs /v1" #m を実行しているのです。
  mgs というのは、mgs.com というユーティリティで、mgdisp2.sys の設定
  等を行います。)


01741/01373 CRG00666  文太             Re^6: VZk08Q3、モバギでは・・。
( 1) 06/11/13 23:48 01735へのコメント(あきろさん) コメント数:1
あきろさん、今晩は。

 いえ、何だか嬉しくなってしまって。あっちレスしてテストしなきゃ、なので
すが。

>(切り替えは、マクロのなかで、#E "mgs /v1" #m を実行しているのです。

 そっか、そうすればよかったのか。5、6年前にアメリカにいたときに、これ
文字大きすぎ、小さすぎ、とか思った記憶が強烈だったもので、たまに思い出し
て、あれ、これ文字小さくするのどうするんだっけ、とか思って、はや5、6年。

 mgsの/vオプションですね。使わせていただきます。m(__)m

 何だか久しぶりに盛り上がってる感じがあって、嬉しいです。
 レス不要ですよ。namefill.defの「夜露死苦」が懐かしくて。振り返るな!


 あ、>金野さん、モバでq3使ってなくてすいません。あれら(複数)のVz
のヴァージョンは幾つだろう? モバが3台あって(稼働1台ですが)、compact
flash が8枚くらいあると(全部にゼロからのVz起動環境があります)、
環境を管理できないんです。文太だからこその最低な環境管理なのでした。


 追伸:多くの方にとってニュースでもなんでもないのでしょうが、次世代MS
−OSのビスタでは32ビット環境も残るんだそうで、なら command.com  な
16ビット環境が生き残っている可能性もあるそうです。期待してしまう…。
Vzにそうそう簡単に死なれては困る…。ここまで生き延びてきた甲斐というも
のがない…。これはセンチメンタルなんでしょうね、たぶん、悲しいことに。


01742/01373 BQO00549  Konno            原因がわかりました。
( 1) 06/11/13 23:56 01735へのコメント(あきろさん) コメント数:1
>  もう少し正確に表現します。初期状態で起動したときには、20 行モードで起
>   動するのですが、起動完了時には 15 行表示になってしまいます。(起動途
>   中で 15 行表示に切り替わるというべきか)。

これをヒントに、screen.asm を見てみたところ、原因がわかりました。
XPで行数を変えられないかと、色々弄っていた時の名残りで、行の高さ(ドット数)
を格納しているメモリの値が19になっている所を16に書き換えていました。(^^;
	mov	byte ptr es:[dosscrn_chr],16	;0000:0485h
この行です。縦480ドットで25行表示だと一行19ドットなので、これを16にすれば
30行表示できないかとやってみたんですが、駄目だったので、そのまま放置して
いたんです。すみませんでした。m(__)m

おそらくmgdisp2では、この値を参照して行数を決めているのではないでしょうか。
15*16=240、20*12=240 ということで、20行表示のとき、ここは12になっていて、
それを途中で16に変えてしまったので上記の現象になったのではないかと。

ということは、もしかしたらLXなどでも不具合が出ているかも、と思って見て
みましたが、200LXのJKITでは問題なかったですね。

>  (切り替えは、マクロのなかで、#E "mgs /v1" #m を実行しているのです。
>   mgs というのは、mgs.com というユーティリティで、mgdisp2.sys の設定
>   等を行います。)

ああ、そうでした。行数切り替えは専用ソフトでやるんでしたね。
おそらく原因は上記の記述部分だと思いますので、その部分を削除した修正版を
今日中に上げます。これで直ると思いますので、宜しくお願いします。m(__)m


01743/01373 BQO00549  Konno            VZk08Q4 Q3の修正版をアップ
( 1) 06/11/14 00:24 01373へのコメント(Konnoさん)
VZK08Q3がDOSモバで不具合があったので修正版をアップしました。
DOS/V版のみです。

 ● DOSモバで行数切り替えの不具合を修正

高橋版 VZ(IBMJ).COM(T03k2 99/12/21)の自己解凍差分です。
VZK08Q4.COM --> VZIBMJ.COM

VZの部屋 DANNY版Vzからどうぞ。
http://homepage3.nifty.com/tamaneko/sub02.html#000012


01747/01373 CIX00956  あきろ           Re: 原因がわかりました。
( 1) 06/11/15 00:25 01742へのコメント(Konnoさん) コメント数:1
 konno さん、こんばんは。

 VZK08Q4 をさっそくダウンロードしました。モバギでもきちんと表示される
  ようになりました。ありがとうございます。m(._.)m

 難しいことはさっぱり分かりませんが。

> おそらくmgdisp2では、この値を参照して行数を決めているのではないでしょうか。
> 15*16=240、20*12=240 ということで、20行表示のとき、ここは12になっていて、
> それを途中で16に変えてしまったので上記の現象になったのではないかと。

 ファイラーなどを開くと、本来画面の下部のほうに表示されるべきものが、
  画面上部のほうに表示されていました。下からはみ出して上にいっちゃった
  という感じでした。

 ところで、win2000 のDOS窓Vzの起動が速くなったように思いますが、
  今回の修正は関係あるのでしょうか? それとも私の気のせいでしょうか?



01749/01373 BQO00549  Konno            Re^2: 原因がわかりました。
( 1) 06/11/15 01:15 01747へのコメント(あきろさん)
>  VZK08Q4 をさっそくダウンロードしました。モバギでもきちんと表示される
> ようになりました。ありがとうございます。m(._.)m

直ったようですね、よかった。これで駄目だったらどうしようかと。(^^;

>  ファイラーなどを開くと、本来画面の下部のほうに表示されるべきものが、
> 画面上部のほうに表示されていました。下からはみ出して上にいっちゃった
> という感じでした。

げげ、そんなふうになってましたか。私のポカのせいで、ご迷惑お掛けしました。
m(__)m

>  ところで、win2000 のDOS窓Vzの起動が速くなったように思いますが、
> 今回の修正は関係あるのでしょうか? それとも私の気のせいでしょうか?

たぶん気のせいだと思います。(^^; 他のところを弄った憶えは・・・
う〜ん、弄ってないと思うんだけどなぁ。(^^;;


01750/01373 AYY00386  YASAT            Re^7: VZk08Q3、モバギでは・・。
( 1) 06/11/16 23:30 01741へのコメント(文太さん) コメント数:1
>  追伸:多くの方にとってニュースでもなんでもないのでしょうが、次世代MS
> −OSのビスタでは32ビット環境も残るんだそうで、なら command.com な
> 16ビット環境が生き残っている可能性もあるそうです。期待してしまう…。

ここではVista RC1試されてるかたいらっしゃいます?
うちは動作環境はないのですが、RC1のプロダクトキーの発行が11月いっぱいなので、
確保だけしておきました。
試すのはいつになるだろう……


01752/01373 BQO00549  Konno            ビスタのベータ?
( 1) 06/11/17 01:26 01750へのコメント(YASATさん) コメント数:2
> ここではVista RC1試されてるかたいらっしゃいます?
> うちは動作環境はないのですが、RC1のプロダクトキーの発行が11月いっぱいなので、

ビスタのベータ版が11月いっぱいまでダウンロードできるという事ですか。
ビスタは当分入れる予定が無いので、ちょっとほしいかも。
でもサイズが半端じゃないんだろうなぁ。(^^; もうHDDに空きがないし。

#DOSはバーチャルPCになりそうな気がするんですが、どうなんでしょうね。


01754/01373 CRG00666  文太             Re: ビスタのベータ?
( 1) 06/11/17 16:50 01752へのコメント(Konnoさん) コメント数:1
YASATさん(お久!)、金野さん

 大した検索はしていませんし、こういうのにやきもきするにはもう色々
くたびれ過ぎてもいるのですが…。

http://pc.watch.impress.co.jp/docs/2006/0811/config118.htm

>  command.com を含む、これらの外部コマンドは、Windows XP はもちろん、Vista
> のβ2 でさえ、c:\windows\system32 の中に含まれている。 ただし、XPでは互換性
> のために  0 バイトのファイルとして残っていた io.sys と msdos.sys は Vista
> には見あたらなくなってしまっている。


01755/01373 GST01234  リンク           Re^2: ビスタのベータ?
( 1) 06/11/17 22:52 01754へのコメント(文太さん) コメント数:1
VistaのRC1、三日ぐらい前に入れて試しましたが、

DOS窓はVZを起動するだけで、英語モードの画面になり、
特殊文字が文字化けします。FILMTNとかでも一緒です。
全然出来てないじゃん、って感じでした。
製品版では、まともなDOS窓になることを期待します。

あとDOSからTCP/IPでないランマネージャーでWINDOWSマシンに接続してるので
XPのNetBEUIが入れられるか試しましたが、とりあえず32BIT版Vistaでは動くのを
確認しました。

DOS側をTCP/IPにするのは、転送速度が遅くなると、どこかで読んだし、
DOSマシンに重たい処理をさせたくないので、
なるべくならWindowsマシン側で対処したいです。

とりあえずRC1の報告でした。
11/30日までしかプロダクトID発行してもらえないので、
動かしてみたいなら、とりあえずIDだけもらっといた方がいいと思います。

ではでは〜


01756/01373 AYY00386  YASAT            Re: ビスタのベータ?
( 1) 06/11/18 00:43 01752へのコメント(Konnoさん) コメント数:1
雑誌の付録DVDという手もあります。
私はその口です。保存性を考えるとちゃんとしたDVDがいいかなと思いまして。

01757/01373 GST01234  リンク           Re^2: ビスタのベータ?
( 1) 06/11/18 07:40 01756へのコメント(YASATさん) コメント数:2
参照先:http://www.windowsvista.com/preview/register/jp
雑誌の付録でもプロダクトIDは付属してなかったので
ネットにアクセスしてプロダクトIDを11/30までに入手する必要があります。
僕もWindows2000の時みたいにそのままいけると思ってたんですが違いました。
url貼っておきます

ではでは〜


01759/01759 CRG00666  文太             スパムメールについて
( 1) 06/11/18 18:23 コメント数:1
 IP-address  というものについて、高度に専門的・技術的(原理的)というよ
りも(それも絡むでしょうが)、現実的な事柄について質問させてください。
 要はスパムフィルターがいつまでたっても完成しないのです。完成はしないも
のなのだとは思うのですが、ここまでやっていいのか、ということです。


 某新聞社と同じ名前のISPはメールヘッダにつく X-IP でフィルタリングで
きます。今まで、サンプルに従って、頭2フィールドで判定してはじくよう設定
してきました。
 以下のような具合です(一応第4フィールドは伏せ字にします)。

121.134.16.xx           (1)
121.54.228.xxx          (2)
124.0.143.xx            (3)
124.6.154.xx            (4)
212.160.22.xx           (5)
212.160.151.xxx         (6)

 こんな場合に、(5)(6)をはじくように、
212.160.*.*
 と設定してきました(*はワイルドカード)。

 テキスト処理と同じで、僕がどんな人から有意味なメールをもらうのか、その
人たちがどんなIPアドレスで送信してくるのか、という「文脈」的な要素が絡む
のは想像できます。 ですが、(1)-(4)も憎くなってきてしまったのです。それで
も、

121.*.*.*
124.*.*.*

 は、やっていいのか、ということです。フィルターにかかったものを、ブラウ
ザを使いいちいちチェックしながらでないと削除できないので、あんまり実験も
したくないし(実験しなくてもすでに毎日のこの作業にうんざりしている。メー
ルアドレス変えようか、 とさえ考え始めている。 アメリカの連中、しつこい!
俺は株はやらん!)、やりすぎも面倒なことになる。


 業者って、どれくらい IP アドレス容易に変更できるのか、何個ぐらいもてる
のか、複数もてるのだとして(間違いなくそうでしょう)、そのアドレスの範囲
は、現実的にどれくらいの範囲で収まるのか、ということなのです。

 IP アドレスってマシンにつくのですよね。 でも業者がISPなんて使わない
としても、まったくアトランダムに取得できるものでもないのだろうという前提
をお訊きしているのですが、この前提が間違っていますでしょうか。

 経験的には、第3、第4フィールでの範囲で複数持っている、というように見
えるのですが…。 それでも、(1) と (2)、(3) と (4) は、同じ連中だと思うの
だけど…。


01761/01373 BQO00549  Konno            Re^3: ビスタのベータ?
( 1) 06/11/18 22:11 01755へのコメント(リンクさん) コメント数:1
文太さん

>  command.com を含む、これらの外部コマンドは、Windows XP はもちろん、Vista
> のβ2 でさえ、c:\windows\system32 の中に含まれている。 ただし、XPでは互換性

おお、DOS窓は残ってるんですね!! よかったぁ〜・・・と思ったら

リンクさん

> VistaのRC1、三日ぐらい前に入れて試しましたが、
> DOS窓はVZを起動するだけで、英語モードの画面になり、
> 特殊文字が文字化けします。FILMTNとかでも一緒です。
> 全然出来てないじゃん、って感じでした。

すでに試されたんですね。これって日本語版なんですよね?
う〜む、まさかDOS窓では英語モードのみとかではないでしょうねぇ。
XPでもSFNの日本語ファイル名が化けたりしてますが、直るのは期待
できないですねぇ。

> 11/30日までしかプロダクトID発行してもらえないので、
> 動かしてみたいなら、とりあえずIDだけもらっといた方がいいと思います。

そうですね。とりあえず見に行ってみます。


01762/01759 CXB00940  としき           Re: スパムメールについて
( 1) 06/11/18 22:36 01759へのコメント(文太さん) コメント数:1
参照先:http://www.hinocatv.ne.jp/~toshiki/
>  IP-address  というものについて、高度に専門的・技術的(原理的)というよ
> りも(それも絡むでしょうが)、現実的な事柄について質問させてください。

多分、妥当なアプローチだと思います。

>  は、やっていいのか、ということです。フィルターにかかったものを、ブラウ

不特定多数からメールをもらう可能性がない、もしくは著しく低いのであれば、
やってしまってもよいでしょう。不特定多数から意味のあるメールをもらうこと
があるのであれば、やらない方がよい、という事になります。

>  業者って、どれくらい IP アドレス容易に変更できるのか、何個ぐらいもてる
> のか、複数もてるのだとして(間違いなくそうでしょう)、そのアドレスの範囲
> は、現実的にどれくらいの範囲で収まるのか、ということなのです。

複数のアドレスを持っている業者っていうのは、多分少数派。
普通のネットユーザに毛の生えたような業者もいます。こちらの場合、普通のユ
ーザと同じようにアドレスは変化するわけです。
あるいは、ウィルスに感染した普通のユーザというか、第三者のコンピュータを
乗っ取って、そこから発信していることもあります。よく言われる、ウィルスに
感染することは被害者であると同時に加害者になることもありうる、というやつ。
これらの場合、アドレス帯でまとめて閉じてしまうと、同一のプロバイダに加入
している、ウィルスに感染もしていない、まさに善意の第三者も締め出す事にな
りかねません。

あと、最近ではかなり減ったようなのですが、メールの匿名プロキシというのか
な、リレーサーバーがあって、これも悪用されていますね。これはもともと、発
信元を隠蔽するのが目的。なんのためにそんなものが作られたかというと、広告
目的ではなく、匿名での告発とか、独裁政府に対する反政府組織の連絡用などと
いうことのため。だから、アメリカのリベラル団体なんかが運営していたりした
そうな。もしそういう組織とか活動に縁がないとか、あるいは、自分は体制の犬
だと断言できる人であるなら、この系統のアドレスは閉塞してもいいでしょう。
これは、アドレス帯域ではなく、ピンポイントで抑止すればよいので、閉じても
あまり影響はないというのもありますし。
#そもそも、ほとんど残っていないような気もする

それから、あまり無いはずですが、送信時のアドレス偽装という技もあるそうな。

>  IP アドレスってマシンにつくのですよね。 でも業者がISPなんて使わない
> としても、まったくアトランダムに取得できるものでもないのだろうという前提
> をお訊きしているのですが、この前提が間違っていますでしょうか。

アドレスは、国際的な管理団体があって、そこで管理しています。
インターネットに接続したい人は、そこにアドレスの払い出しを依頼します。
256個下さい、とかね。ISP経由がほとんどのはず。
どこからどこのアドレスは誰に払い出している、というのは、WEBで検索可能
です。以前、調べたことがあるのですが、すっかり忘れています。
IETFだったかなぁ。



以下、余談。
Vzの世界では、某板前さんが、ニフティにスパムフィルタがあることに気がつ
かず、スパムが多いという理由でニフティを退会した、なんて事件もありました。
当時はスパムフィルタも手動式しかありませんでしたが、最近は各プロバイダと
も自動フィルタを具備しています。ところがこれ、プロバイダによって認識率に
大きな差があるようで。
2年ほど前ですが、私の知人の言っていたことです。彼はアサヒネットとビッグ
ローブとニフティのメールアドレスを持っています。当時はアサヒネットがメイ
ンだったそうです。ところが、アサヒネットの自動フィルタがタコすぎて、必要
なメールをスパム扱いするは、素通しするスパムは多いわで、メインを別の所に
変えるかどうかで真剣に悩んでいました。アサヒ以外の2社は必要なメールをス
パム扱いしたことはない、と言っていましたし、自動でカットする率も概算で、
ビッグローブは85%、ニフティは75%くらいに対してアサヒは50%くらい
だったそうな。この辺の数字は私もうろ覚えですが、結構大きな差があったこと
は間違いありません。その後、アサヒネットがどの程度改善したかは知りません。

私の場合、ケーブルテレビ屋のアカウントでは、プロバイダの用意している自動
スパムフィルタの他に、タイトルと差出人で振り分けているだけですが、それら
の併用で、約9割は阻止できています。自動フィルタだけだと約75%ぐらい。
例えば、ここ数日の例では、subjectにmessageという文字列が含まれていればス
パム扱いにしました。
ただ、手動フィルタの場合、フィルタ数は有限です。例えば、ニフティなら確か
100くらいかな、うちのケーブルテレビ屋はたった64です。なので、スパム
扱いしたメールもすぐには消さずに置いて、たとえばその条件に引っかるメール
が1週間以上着信しなくなった、というのを確認してから、メールボックスに残
っているメールと、そのフィルタ条件を消去するようにしています。


01763/01373 CRG00666  文太             Re^4: ビスタのベータ?
( 1) 06/11/18 23:54 01761へのコメント(Konnoさん) コメント数:1
金野さん、リンクさん(多くの情報、ありがとうございます)

> XPでもSFNの日本語ファイル名が化けたりしてますが、直るのは期待
> できないですねぇ。

 げ、そうなの。βでなくなったら、直るのだろう、なんて思ってたの
だけど。ま、しょうがないはしょうがないですね。期待しないのが吉。
でも、密かに祈る。たのんますよ〜。


01764/01759 CRG00666  文太             Re^2: スパムメールについて
( 1) 06/11/19 00:18 01762へのコメント(としきさん) コメント数:1
としきさん

> 不特定多数からメールをもらう可能性がない、もしくは著しく低いのであれば、
> やってしまってもよいでしょう。不特定多数から意味のあるメールをもらうこと
> があるのであれば、やらない方がよい、という事になります。

 実際的とはいえないけれど、現実的な回答ですね。うーん、どうしよう…?


 ウィルス感染によって一般ユーザが加害者になっているという指摘は想像して
いました。「先生、そのアドレス帳から僕のメールアドレスが流れてるような気
がしてます」と言いたくなってる。アメリカからのはどうも。
 といって、メール本文の「price」で切るわけにもいかず…。
 あと、良心なきアルバイトみたいのもあるんでしょうね。格差拡大社会化がこ
んな風に進行しているとなると、ま、良心なんて言ってられないんだよね、とか、
当人に会ったりしたら、言ってあげちゃったりするのかもしれないけど。


 アサヒについては、たぶん改善していると思います。僕はどこかの達人様のア
ドヴァイスにしたがって、「おまかせフィルター」は使わず(仕様が知れないの
で)、全部自前で設定しています。たぶん400個くらい。例の達人様もとしき
さんと同じく、「旬をすぎたフィルターは削除しなさい。そのためにフィルター
は、そのコピーをテキストファイルあるいはエクセルで自分で管理しなさい」と
書いていました。しかし、こ、これはとても…。上限があるはずですが、今のと
ころ、ほとんどウィルスのようにフィルターが増殖し続けています。ああ。

 1日に70〜80通のスパムですよ。板前さんときっと同じく、そんなサイト
に行くからだよ、な理由もあるのでしょうが(自業自得)、しかしなぁ。毎日、
スパムを捨てるのとフィルターを管理するのに10分かかっていると、メールア
ドレス変えた方が早くない、という具合に、ラディカルな方法に訴えたくなる。
アサヒ内でそれができるかまだ調べていないのだけど。(今まで舐めてたな、と
は思ってます。)

 いずれにせよ、原理が分かっている人に教えてもらって、「やっぱり、やるっ
きゃねーぞ」と思いました。何を? が問題ですが。でも、ラディカルにやって
さえ、先生がまた流しちゃうかもなぁ…。
 とりあえず、(1),(3)を倒してやる。変なアドレスから大事なメール送ってこな
いことを祈ろう。


01765/01373 AYY00386  YASAT            Re^3: ビスタのベータ?
( 1) 06/11/19 01:41 01757へのコメント(リンクさん)
お心遣いありがとうございます。
プロダクトIDはすでに入手しております。
Windows2000 RC2とは懐かしいですね。私も持っています。

01766/01759 BQO00549  Konno            niftyなら迷惑メールフォルダがよさそう
( 1) 06/11/19 02:06 01764へのコメント(文太さん) コメント数:1
文太さん

>  アサヒについては、たぶん改善していると思います。僕はどこかの達人様のア
> ドヴァイスにしたがって、「おまかせフィルター」は使わず(仕様が知れないの
> で)、全部自前で設定しています。たぶん400個くらい。

そうなんですか。私はniftyの迷惑メールフォルダーを使い始めています。
数週間様子を見ていましたが、スパムと誤判定されたのはGYAOのお知らせ
ぐらいだったかな。セーフリストに登録してからはたぶん1件も無いと思います。

網から漏れたスパムは一日1件くらいありますが、日に30件のうちの1件なら
苦にならないレベルですね。ということで、迷惑フォルダーに振り分けられた
メールはメールソフトで受信しない設定にしました。
7日で消える設定にしたので、たまに覗いてみるていどでいいかなと。



01767/01759 CRG00666  文太             Re: niftyなら迷惑メールフォルダがよさそう
( 1) 06/11/19 11:17 01766へのコメント(Konnoさん) コメント数:1
金野さん

 やはり、Niftyを残しておくべきだったか…。

> セーフリストに登録してからはたぶん1件も無いと思います。

 仕組みは同じようです。現実的には、無限に近い相手と(いちおう)ごく限ら
れた有意味メールなわけですから、大きく網をかけて、間違ってかかってしまっ
た本物を通す設定が哲学のようです(1)。しかし、こうするとフィルターの管
理が大変になり…。そのためにまだ毎日スパムを点検している…。

> 網から漏れたスパムは一日1件くらいありますが、日に30件のうちの1件なら
> 苦にならないレベルですね。ということで、迷惑フォルダーに振り分けられた
> メールはメールソフトで受信しない設定にしました。
> 7日で消える設定にしたので、たまに覗いてみるていどでいいかなと。

 この変も同じです。ただ、「たまに覗く」で済ます自信がなくて…。(1)の
「許可設定」が十分であることを確認するために、毎日10分…。ああ。便利に
振り回されている感覚なんですよねぇ。


01768/01373 BQO00549  Konno            ダウンロードは既に終了?
( 1) 06/11/19 18:33 01757へのコメント(リンクさん) コメント数:1
> url貼っておきます

リンクさん、ありがとうございます。おかげさまでなんとかIDは取れました。
ダウンロードは既に終了していたようです。すぐに見に行っていればもしかしたら
間に合ったのかもしれませんが、残念です。

でも空いているパソコンが無いので、たぶん試せないですね。
リンクさんの追試に期待してしまいます。(^^;


01769/01759 BQO00549  Konno            いまどきは学習型がよさそうな
( 1) 06/11/19 21:01 01767へのコメント(文太さん) コメント数:1
文太さん

>  この変も同じです。ただ、「たまに覗く」で済ます自信がなくて…。(1)の
> 「許可設定」が十分であることを確認するために、毎日10分…。ああ。便利に
> 振り回されている感覚なんですよねぇ。

あれ?確か手動設定なんですよね。今時のスパムフィルターエンジンは複雑になり、
自前開発では限界なんでしょう。niftyのはシマンテック製だったか・・・

> 「Symantec Brightmail AntiSpam(シマンテックブライトメールアンチスパム)」は、株式会社シマンテックが世界20カ国以上のおとりメールボックスから収集した情報を活用し、業界随一(99.9999%)の検知精度を実現した、迷惑メールに対する優れた防御実績を持つスパム対策ソリューションです。

という紹介文が有りましたが、大手のプロバイダーもこういうものを採用するようになったので、お任せ設定というか、学習型の性能は侮れないと思います。

たまに覗くと言いましたが、実際は一日に1〜2度覗くことでしょう。で、一回で
10件程度なら一画面に収まるし、タイトルで99%判るので一括削除で30秒ていど
で済みますね。これが80件ともなると2〜3分ぐらいかかるでしょうか。


01770/01759 CRG00666  文太             Re: いまどきは学習型がよさそうな
( 1) 06/11/19 22:36 01769へのコメント(Konnoさん) コメント数:2
金野さん

 うーん、アサヒでは「おまかせフィルタ」と呼んでいるらしいですが、もう自
前で壮大な数のフィルターを設定してしまってますから、戻れませんよ〜。(あ、
一時的にオフにして、試してみる方法もあるけど…。いや、カスタムメイドには
かなうまい。これが疲れる原因だ…。)

 そうですねぇ、覗くのを3日さぼると膨大な数になっていて…。アサヒのホス
トのページがとろいんですよ。80(1日あたり)*3(日)/10(1ページ
あたりの表示可能メール数)=24、1画面1分で処理できても、24分です。
やだな…。
 ここ3、4カ月で爆発的に増えたんですよね。で、奥さんはまったくそんなこ
と経験したことないって。悔しい。
 もちろん、「表示」は差出人とメールタイトルで、その画面でマウスを当てる
とどのフィルターに掛かったかが知れるようにポップアップが javascript で出
ます。僕の場合も、これらの情報で十分判断可能です。
 また、メールは1週間分保持です。もうほっとけばいいのかな。よっぽど大事
なメールで返信がなければ、電話でもしてくるよな…。

> IT 系 WEB ニュースによると、このシステムは DEEPSoft の SPAMBlock
> を asahi-net が独自に拡張したものらしい。

 ということですが、性能がいいフィルターなのかは分かりません。さっきネッ
トで調べたら、正規表現エンジンにバグがあるらしく、たまにすり抜けるみたい
です。そういえば、「あれ?」と思ったことが何度かありましたね。

 といいつつ、typeall.pl(@ めざらさんち)にメールヘッダ部だけ抽出できる
オプションを付けて進化させてやろうと、2時間ほどまたもがいてしまいました。
 Perl って、おもしろい。 けっこう飽きません。何か本物のアプリ作ってるみ
たいで。


01771/01759 BQO00549  Konno            Re^2: いまどきは学習型がよさそうな
( 1) 06/11/19 23:58 01770へのコメント(文太さん) コメント数:1
文太さん

>  うーん、アサヒでは「おまかせフィルタ」と呼んでいるらしいですが、もう自
> 前で壮大な数のフィルターを設定してしまってますから、戻れませんよ〜。(あ、
> 一時的にオフにして、試してみる方法もあるけど…。いや、カスタムメイドには
> かなうまい。これが疲れる原因だ…。)

カスタムメイドはniftyではスパムブロック機能が相当するんでしょうか。
設定が面倒で判りにくいのでパスしましたが、niftyではこの2つのフィルター
を同時に使えるようですね。うちぐらいなら学習型だけで充分みたいです。

>  ここ3、4カ月で爆発的に増えたんですよね。で、奥さんはまったくそんなこ
> と経験したことないって。悔しい。

ええ? 同じプロバイダなんですよね。文太さんはniftyをやめてから増えた?
猫屋敷みたいな変なサイトを見てるからだったりして(゜゜)☆\(--#)バキッ

>  ということですが、性能がいいフィルターなのかは分かりません。さっきネッ
> トで調べたら、正規表現エンジンにバグがあるらしく、たまにすり抜けるみたい
> です。そういえば、「あれ?」と思ったことが何度かありましたね。

げげ、それにしても、ユーザーがフィルターのフィルターを作るというのは
普通じゃないような。(^^;

>  Perl って、おもしろい。 けっこう飽きません。何か本物のアプリ作ってるみ
> たいで。

私はCGIでしか使えてませんが、面白いですよね。さすが、「病的折衷主義の
ガラクタ出力機」というだけのことはあるなぁと。(^^;


01772/01759 CXB00940  としき           Re^2: いまどきは学習型がよさそうな
( 1) 06/11/20 00:12 01770へのコメント(文太さん) コメント数:1
参照先:http://www.hinocatv.ne.jp/~toshiki/
>  そうですねぇ、覗くのを3日さぼると膨大な数になっていて…。アサヒのホス
> トのページがとろいんですよ。80(1日あたり)*3(日)/10(1ページ
> あたりの表示可能メール数)=24、1画面1分で処理できても、24分です。

1ページあたりの表示可能数って、変更できないんですか?
とてつもなく貧弱なうちのケーブルテレビ屋でさえ、メールのオプションで変更
できるのですけど。
 

01773/01373 GST01234  リンク           Re: ダウンロードは既に終了?
( 1) 06/11/20 02:11 01768へのコメント(Konnoさん) コメント数:1
参照先:http://download.windowsvista.com/preview/rc1/jp/download.htm
僕も行って見ました。確かにダウンロードは終了しますね。
でも、雑誌の付録についているRC1のためにプロダクトIDは発行してるみたいですね。

まだ雑誌なら売ってると思いますよ。
ちなみに僕が買ったのはWinPC 12月号です。(一番安かった(^^;)
他にも何誌か付属していたのがありましたよ。(DOS/V POWER REPORTもだったかな?)
僕のみた雑誌には32BIT版のDVDしか付いてませんでしたけど。

ダウンロードした64BIT版のISOイメージは64BITマシンを持っていないので、
役に立ちそうにないです(^^;
あ… 32、64BIT版とも日本語版をダウンロードしました。

> でも空いているパソコンが無いので、たぶん試せないですね。
> リンクさんの追試に期待してしまいます。(^^;

僕も空いているマシンはなかったですが、ノートのHDDを余ってる15Gのものに
付け替えてインストールしてみました。今はXPのHDDに戻ってます。

ThinkPad T42だったので、ビデオカードのドライバがなかったです。(メモリは1G)
でもVGA標準ドライバで1024*768の解像度で32BITカラーは表示できるようです。
動画再生など若干遅いですが…

ということで、メモリさえ積んでいれば、古めのPCでも何とかなるんではないかなぁ?
と思いますがどうなんでしょう?

と書いたところで、
印刷してあった、プロダクトキーのページに載ってるダウンロードサイトは
まだ生きているようです。反則気味ですが、貼っておきます。

ではでは〜

01774/01759 CRG00666  文太             Re^3: いまどきは学習型がよさそうな
( 1) 06/11/20 12:44 01771へのコメント(Konnoさん) コメント数:1
金野さん

> 設定が面倒で判りにくいのでパスしましたが、niftyではこの2つのフィルター
> を同時に使えるようですね。うちぐらいなら学習型だけで充分みたいです。

 アサヒでは、「おまかせフィルタ」と「マイフィルタ」という名前の2本立て
で、両立ありでした。

> >  ここ3、4カ月で爆発的に増えたんですよね。で、奥さんはまったくそんなこ
> > と経験したことないって。悔しい。
> ええ? 同じプロバイダなんですよね。文太さんはniftyをやめてから増えた?
> 猫屋敷みたいな変なサイトを見てるからだったりして(゜゜)☆\(--#)バキッ

 猫屋敷は関係ないでしょう。でも、そういうところで平気でメールアドレス書
かないようにしてます。あ、どこででもです。Nifty時代、平気で書いてたもんな。
 奥さんも同じISPです…。く、くそう。

> >  ということですが、性能がいいフィルターなのかは分かりません。さっきネッ
> > トで調べたら、正規表現エンジンにバグがあるらしく、たまにすり抜けるみたい
> > です。そういえば、「あれ?」と思ったことが何度かありましたね。
> げげ、それにしても、ユーザーがフィルターのフィルターを作るというのは
> 普通じゃないような。(^^;

 いえ、これは僕の書き方が変なのでしょう。X-IPみたいに設定できる項目が全
部で15種類くらいあって(中にはX-mailerみたいに自分ではじく項目が設定でき
るものもあります)、その中身で実際のフィルターを作るって意味です。「おま
かせ」では、たとえばX-IPの項目は、よほど有名な悪徳業者のしか登録されてい
ないのでしょう。ほんとタケノコですもの。よくもあ、こんなにたくさん、と思う。

 と同時に、しつこく同じところから何百回となく送ってくるなぁ(機械がやっ
てるのでしょうが)、とも思います。しかし、何で、俺だけ、とも…。スパイウ
ェアとかちゃんと、チェックしてますよ、スパムに悩まされるようになってから。
変なクッキー殺したりして。


01775/01759 CRG00666  文太             Re^3: いまどきは学習型がよさそうな
( 1) 06/11/20 12:47 01772へのコメント(としきさん) コメント数:1
としきさん

> 1ページあたりの表示可能数って、変更できないんですか?
> とてつもなく貧弱なうちのケーブルテレビ屋でさえ、メールのオプションで変更
> できるのですけど。

 うん、ナイスなアドヴァイスです。そんなことが可能だなんて思いもしなかっ
た。調べたかぎりではなさそうでしたが、昨晩、駄目もとでサポートにメールし
ました。いければ、随分違うのだけど。サンクスです。m(__)m


01776/01759 CRG00666  文太             Re^4: いまどきは学習型がよさそうな
( 1) 06/11/20 20:42 01775へのコメント(文太さん) コメント数:1
 「お客様からのご要望は今後の検討課題とさせていただき…」という返事。同
じ問い合わせは多いとのことでした。早くしてよねぇ〜、という感じ。他のラデ
ィカルな手段も無料では難しいみたいで、手詰まり状態ですね。コツコツかぁ…。
ふぅ。
 いずれにせよ、「そんなこともできないの?」といった素朴な疑問というかア
ドヴァイス、ありがとうございました。ああ、残念。


01777/01759 DGF01024  めざら           Re^5: いまどきは学習型がよさそうな
( 1) 06/11/20 22:18 01776へのコメント(文太さん) コメント数:2
参照先:http://homepage3.nifty.com/mezala/
 サーバーでの対策ってところに話が限定されているようですが,
うちはメーラーの方でも対策してますよ。

 niftyのスパムメールブロックなんて正規表現が使えないのでタコですが,
正規表現でのフィルタを使えるメーラーならそれなりに対策できますよね。
もちろんすり抜けるのはありますけど,1%くらいなら許容範囲でしょうか。
アドレスを公開しててスパム100件/日というのは少ないほうだと思うし。

 でも,シマンテックの「業界随一(99.9999%)の検知精度」なんて嘘っぱち。
…と言うか,日本語のスパムにはあまり対応が熱心とは思えないですね。

01778/01373 BQO00549  Konno            Re^2: ダウンロードはまだ出来そう
( 1) 06/11/21 00:41 01773へのコメント(リンクさん)
> 僕も空いているマシンはなかったですが、ノートのHDDを余ってる15Gのものに
> 付け替えてインストールしてみました。今はXPのHDDに戻ってます。

XPマシンは共有しているため自由にならないんです。700MHzマシンなら空いて
るんですが、遅すぎて使えないんでしょうね。メモリも128MBしかないし。
実験のためだけでメモリを買える余裕も無いのでやっぱり無理ですね。

> 印刷してあった、プロダクトキーのページに載ってるダウンロードサイトは
> まだ生きているようです。反則気味ですが、貼っておきます。

おお!! いけますね。ありがとうございます。2時間はかかりそうなので、
時間が取れたら落としてみたいです。


01779/01759 CRG00666  文太             Re^6: いまどきは学習型がよさそうな
( 1) 06/11/21 08:45 01777へのコメント(めざらさん) コメント数:1
めざらさん

> 正規表現でのフィルタを使えるメーラーならそれなりに対策できますよね。

 これは昔やっていたのですが、振り分けに正規表現が使えたのか覚えてなかっ
たので調べたら、アルメールは駄目ですね。
 もっともああいう連中がどどどと目の前のHDまで届くのが精神衛生上よろし
くないので、入ってくる前にブロックしたいわけです。でも、サーバがあのとろ
さだと…。
 スパムヘッダ・コレクションのためには、もちろん専用フォルダで飼ってます
よ。(笑&涙)
 Perl Cookbook をアメリカの古本屋に注文したら、注文票返信メールがさっそ
くフィルタにかかってしまった。html メールなんて使うから、"body" でひっか
かりやがった。フィルタから外しました。こんな毎日。こんな悩みがなかった頃
がとても懐かしい。

> アドレスを公開しててスパム100件/日というのは少ないほうだと思うし。

 ああ、そうなるんですか。す、少ないほう? で、ですか。


01780/01759 BQO00549  Konno            Re^4: いまどきは学習型がよさそうな
( 1) 06/11/21 23:45 01774へのコメント(文太さん) コメント数:1
>  アサヒでは、「おまかせフィルタ」と「マイフィルタ」という名前の2本立て
> で、両立ありでした。

文太さんがお使いなのはマイフィルタなんでしょうか。だとしたらおまかせも
併用できるんですよね。

>  猫屋敷は関係ないでしょう。でも、そういうところで平気でメールアドレス書
> かないようにしてます。あ、どこででもです。Nifty時代、平気で書いてたもんな。

まさかうちのログに載ってないよなぁ、と思って「asahi」で検索してみたら、
文太さんの発言が全部引っかかってる〜!!。
よく考えたら掲示板の検索って生ログを検索してるんでしたね。だから非表示の
メルアドが引っかかっていたようです。もちろんメルアド自体は見えないですが。

>  と同時に、しつこく同じところから何百回となく送ってくるなぁ(機械がやっ
> てるのでしょうが)、とも思います。しかし、何で、俺だけ、とも…。

文太さんの知り合いがウイルスを飼ってて、そこからばら撒かれているとしか
思えないですねぇ。(^^;


01781/01759 CRG00666  文太             Re^5: いまどきは学習型がよさそうな
( 1) 06/11/22 12:04 01780へのコメント(Konnoさん) コメント数:1
金野さん

> 文太さんがお使いなのはマイフィルタなんでしょうか。だとしたらおまかせも
> 併用できるんですよね。

 はい、できます。でも、その必要性はないと今のところ(自己愛もあって)思
っています。80個のうち、76個ぐらいまではかかりますので。「おまかせ」
を入れても、かかってしまっていけないのがかかるだけのように想像しています。
そもそもの発言の趣旨からずれますが、そもそも断ってやりたい…。これは無理だ。

 
> まさかうちのログに載ってないよなぁ、と思って「asahi」で検索してみたら、
> 文太さんの発言が全部引っかかってる〜!!。

 ひやっ。

> よく考えたら掲示板の検索って生ログを検索してるんでしたね。だから非表示の
> メルアドが引っかかっていたようです。もちろんメルアド自体は見えないですが。

 よかった。(何か失礼だな。こういうところはそもそも疑ってません、はい)

> >  と同時に、しつこく同じところから何百回となく送ってくるなぁ(機械がやっ
> > てるのでしょうが)、とも思います。しかし、何で、俺だけ、とも…。
> 文太さんの知り合いがウイルスを飼ってて、そこからばら撒かれているとしか
> 思えないですねぇ。(^^;

 ですね。あとは僕がメールアドレスを入力した、あるいは伝えてしまった人々、
お店なんかかな。10年以上同じアドレスなら、一回しか取引がないとしても、
300カ所以上ぐらいに教えてしまってるでしょうからね。アメリカがでかい。


01782/01759 CXB00940  としき           Re^6: いまどきは学習型がよさそうな
( 1) 06/11/22 22:05 01781へのコメント(文太さん) コメント数:2
参照先:http://www.hinocatv.ne.jp/~toshiki/
実は、私もkonnoさんと同意見というか、自動フィルタも併用した方がいいのでは
ないかと考えます。自動フィルタでざっくりと大まかに除去して、自動フィルタ
で除去してはいけなかったもの・除去できなかったものを細かく手動フィルタで
処理することがベターだと思うわけです。
あ〜、そうか、手動フィルタで設定できるフィルタ数が多いと、あまり自動フィ
ルタのありがたみがないかもしれませんね。うちとこのように、手動フィルタの
フィルタ数が少ないと、手動フィルタだけで全てをフィルタリングするというの
は現実的に無理だったりするのですよ。

>  はい、できます。でも、その必要性はないと今のところ(自己愛もあって)思
> っています。80個のうち、76個ぐらいまではかかりますので。「おまかせ」
> を入れても、かかってしまっていけないのがかかるだけのように想像しています。
> そもそもの発言の趣旨からずれますが、そもそも断ってやりたい…。これは無理だ。

自己愛は重要ですが、通常は、時間の方がもっと貴重だったりします。
そういうコスト計算も勘案して、自動フィルタの導入を重ねてお勧めします。
一週間程度試験的に導入して評価してみる、というのでもいいじゃないですか。
もしそれで、かかってしまっていけないものがあまりにも多量に引っかかるとい
うことであれば、その時には導入断念という事で。かかっていけないものが引っ
かかるのが少量であれば、そちらを救済するようにした方が現実的でしょう。
あ、フィルタリングって順序性がありますから、順序性の問題で救済できないの
であれば、やはり使用しない方がいいという結論になるかもしれません。
いずれにしろ、もっと実証的に生きたほうがよいかと。
実証主義は嫌いだと言う人もいそうですが、文太さんは違うと思いますので。

ところで、上記引用の最後の一文、よく理解できません。
断るって、フィルタリングを、ですか?
でも、「そもそもの趣旨からずれる」とおっしゃっているという事は、みなさん
の助言を、ということかな。って、目的語だけではなく、主語が文太さんだと仮
定しているけど、それが間違っている可能性もあるのか。
ごめんなさい、宿直明けで通常よりも読解力が落ちているせいもあるのですが、
もしお気に障らなければ、ちょっとだけ解説してください。

>  ですね。あとは僕がメールアドレスを入力した、あるいは伝えてしまった人々、
> お店なんかかな。10年以上同じアドレスなら、一回しか取引がないとしても、
> 300カ所以上ぐらいに教えてしまってるでしょうからね。アメリカがでかい。

メールアドレスの流出っていうのは、あまり多くないと私は思います。
WEBから拾われるというのは多いでしょうけど。
割と多いのが、ランダムというか辞書式というか、とにかくメールを送ってみて、
アドレスが存在しないという事でリターンメールが返ってきたもの以外をリスト
に搭載する、というもの。

以下余談。
さて、スパムも含めて増え続けるメールの量に対応するために、メールサーバも
頑丈なものが必要となっています。そういうニーズに対応して、業界では有名な
メールサーバーに、その名も頑丈そうなアイアンポートというマシンがあります。
何年か前、どこかの会社がこのマシンを導入した時のこと。メールのプロトコル
では、宛先不明メールは送信者に返送する事になっていますが、それまではスパ
ムなどの宛先不明メールがあっても、きちんと返送するとサーバの負荷が上がる
ので、その場でメールを捨てていました。でも、アイアンポートを導入したこと
により、きちんと返送できるようになりました。
今もそうかもしれませんが、当時、スパムの送信元は圧倒的にyahooでした。とり
あえず正規にyahooのアカウントを取ったスパマーだけではなく、送信元をyahoo
に詐称したメールも多かったです。
その結果、何が起こったかというと、返送されてくるメールの量に耐えきれず、
yahooのメールサーバがコケてしまったのだとか。当初、yahooはこの会社にクレ
ームをつけたそうなのですが、こちらの会社はプロトコル通りの処理をしている
だけなので、当然のことながら、このクレームは突っぱねたとか。
数週間後、yahooのメールサーバもアイアンポートになったそうな。
一部脚色はあるでしょうが、とりあえず不合理なところはない笑い話でした。


01783/01759 CRG00666  文太             Re^7: いまどきは学習型がよさそうな
( 1) 06/11/23 00:50 01782へのコメント(としきさん)
としきさん

 了解です。とりあえず「おまかせ」を試してはみます。どうなってるのか知り
もしないでいたのに、両立できるのを知った今、使ってみないのも何だな、と
思いましたので。メリットは、あまりないような気がしますが…。


> > そもそもの発言の趣旨からずれますが、そもそも断ってやりたい…。これは無理だ。

 これは、根っこから断って(たって)やりたい、というぐらいの暴言です。こ
っちから送ってくる先に(アメリカの多くの中古古本屋を含め)攻めていって、
名簿業者みたいな連中が売った僕のアドレスをdelしたい、ということです。 夢
想です。

> 自己愛は重要ですが、通常は、時間の方がもっと貴重だったりします。
> そういうコスト計算も勘案して、自動フィルタの導入を重ねてお勧めします。

 時間はもっとも大事です。実感としてお金より(こう書くことが死ぬほどブル
ジョワだとは知りつつ)大事です。でも、「おまかせ」にしても僕の承認なしに
アサヒは僕宛のメールを勝手には削除できないはずです(もしかしたらそうでも
ないのかな)。 となると、10通のメールを1分くらいかけて del する手間は
同じなんですよね。そして、何されてるかよく分からないという気分の悪さだけ
が残るような…。

 実証主義は、僕はある局面においては(PC関係を含む)、それしか方法がな
いと思っていますので、もちろん大好きですよ。ただ、ときどき、自分一人で全
部はやれないですよ、と弱音をはきたくなるなることも多いですが。


 ルビーのまつもとさんがアサヒの夕刊に出てました。日本語を処理したいなら
Perl より Ruby とTSで思いっきり勧められましたので、おお、と思いました。
でも、「Web application の開発」という推薦文がつくと、僕からはまだまだ遠
い、と思ってしまいましたけれど。


01785/01759 CWF01299  でがらし         LINUX用だけどPERLのフィルター
( 1) 06/11/23 12:22 01779へのコメント(文太さん) コメント数:1
 ご存知でしょうか、LINUX用ですけどPERLでこういうことしてる
人もいます。PERL使いの人、多そうだし、PERLということなら、窓
でも簡単にできるんでないでしょうか?

http://www.is.titech.ac.jp/~yanagis0/text/check_uri.html

01786/01759 CXB00940  としき           Re: LINUX用だけどPERLのフィルター
( 1) 06/11/23 15:37 01785へのコメント(でがらしさん) コメント数:1
参照先:http://www.hinocatv.ne.jp/~toshiki/
> > http://www.is.titech.ac.jp/~yanagis0/text/check_uri.html

これそのものは、特にLINUX用ということでもないのですが、一般ユーザ向きでは
ないです。
何をやっているのかというと、自前のメールサーバ、もしくはメール用のプロキ
シサーバにいったんメールを取り込み、そのサーバ上のメールボックスに取り込
まれているメールに対して、これはスパムだとか違うとかっていうマークをくっ
つけて、最終的にメールクライアントが取り込んだときに正しく判定されるため
の手がかりを余分にあたえるものです。
特に文太さんのような、そもそも自分のところにスパムを取り込むことがいやだ
という人には、少なくとも一度は取り込んで細工するというこの手のアプローチ
は不向きかと。

ただ、ここで使っているrbl.jpというのは、その他の方法で成果物を利用させて
もらうことにより、フィルタリング効率を向上させられそうな気がします。


01787/01759 CRG00666  文太             Re^2: LINUX用だけどPERLのフィルター
( 1) 06/11/23 16:58 01786へのコメント(としきさん) コメント数:2
としきさん、どうも。

 僕は見た瞬間に、「これは僕の必要と違う」とあまり何をしているのか理解し
ようとさえしませんでした。ですので、解説、多謝です。

> 特に文太さんのような、そもそも自分のところにスパムを取り込むことがいやだ
> という人には、少なくとも一度は取り込んで細工するというこの手のアプローチ
> は不向きかと。

 はい、linux vs windows(文字コード)、perl version(深くないみたいでし
たが)の壁などを発見し…。

 で、そうです、「自分のところに取り込みたくありません」。で、先ほどふと
思い出したのがめざらさんの考え方です。 「niftyのフィルターで正規表現が使
えないからメーラの正規表現で振り分け」という方法です。が、僕のところが環
境が反対なので、やはり「取り込まないよう努力したほうがいい」となることに
気づきました。

 htmlのBODYタグで網にかかっていたものが、body(ignorecase、うっふんなボ
ディーなつもりだった)をひっかける網を外したら、またPCまで届くようにな
ってしまいました。スパムが増えてる。こいつらをメーラの振り分けでスパム用
のフォルダーに振り分けてやろうかと思っていたら、上のことに気づきました。
サーバのフィルターとメーラの「振り分け」機能では、僕の環境だとフィルター
のほうが識別力が強いのですね。

> ただ、ここで使っているrbl.jpというのは、その他の方法で成果物を利用させて
> もらうことにより、フィルタリング効率を向上させられそうな気がします。

 というわけで、これは辛いっす。あんなの読む気力ありっこないです。


01788/01759 CWF01299  でがらし         はずしましたか
( 1) 06/11/23 20:02 01787へのコメント(文太さん)
 あらー、ちょっと的をはずした話でしたか。失礼
しました。

01809/01809 BQO00549  Konno            WEB上でFGALDC復活?
( 1) 06/11/28 01:21 コメント数:1
FGALDCが閉鎖して1年9ヶ月、あの会議室がWEB上で復活?

http://hpcgi3.nifty.com/tamaneko/wforum.cgi?mode=newsort3&fsize=&page=0



01810/01809 CXB00940  としき@宿直     Re: WEB上でFGALDC復活?
( 1) 06/11/28 03:44 01809へのコメント(Konnoさん) コメント数:2
参照先:http://www.hinocatv.ne.jp/~toshiki/
> FGALDCが閉鎖して1年9ヶ月、あの会議室がWEB上で復活?

あはは、やるんならもっと徹底的に、「だれそれさんへのコメント」というのを
はずすとかしたほうがいいかも。


01812/01809 GST01234  リンク           Re^2: WEB上でFGALDC復活?
( 1) 06/11/28 10:23 01810へのコメント(としき@宿直さん) コメント数:1
FGALDCは見ていましたが、書き込みはほとんどしなかった者です。

ブラウザからTXTで保存してNIFTYのログブラウザで見れるといいなと思って、
NIFP for Win32で試してみましたが、発言は認識するものの、コメントツリーが
やはりダメですね。
でも、ログブラウザで見る需要が、そんなにあるのか疑問ではあります。

ではでは

01813/01813 CRG00666  文太             魔法のグリグリについて
( 1) 06/11/28 22:37 コメント数:1
 ちょっと前にアンチ・ウィルスソフト(アンチ・スパイ)の話がたくさん出て
いたと思うのですが、 つい先日、 AVGがこんなメッセージ画面を出しました
(皆さん、ご存じですよね)。新バージョンの発売になりますので、旧版は1月
15日で終了(discontinu だったと思う)です、と。
 このソフトは、英語圏以外ではフリー(この場合、無料)という性質であると
どこかで読んだのですが、1月15日以降、どうなるかご存じの方はいらっしゃ
いますか。
 あるいは、  別のフリーウェアの優れ物をご存じの方はいらっしゃいますか?
急にちょっと困ってしまってます…。いちおうスレッドに目を通したのですが、
アンチ・ウィルス以外の方向に話が展開していたようで…。


01814/01813 DGF01024  めざら           Re: 魔法のグリグリについて
( 1) 06/11/29 13:29 01813へのコメント(文太さん) コメント数:1
参照先:http://homepage3.nifty.com/mezala/
 メッセージが出るのは v7.1 の利用者で、NT系 OS の環境の端末のようです。メッセージが出た時に、新しいバージョンの v7.5 にバージョンアップできますが、そのときにバージョンアップを選択しなかった場合は、期限までにフリー版のページでダウンロードして、インストールすればよいはずです。

 これは v6.3 から v7.1 へのバージョンアップのときと同じですね。

01815/01813 CRG00666  文太             Re^2: 魔法のグリグリについて
( 1) 06/11/29 19:31 01814へのコメント(めざらさん) コメント数:2
めざらさん

 7.1  -> 7.5 update、完了しました。サイトを調べろよなぁ、と。宣伝だけし
ないで、 free 版の方も update してください、くらい付けてくれてもよいのに
なぁとも思う。ずうずうしい。
 助かりました。安心抗菌生活です。


01816/01809 BQO00549  Konno            Re^2: WEB上でFGALDC復活?
( 1) 06/11/29 20:37 01810へのコメント(としき@宿直さん) コメント数:1
> あはは、やるんならもっと徹底的に、「だれそれさんへのコメント」というのを
> はずすとかしたほうがいいかも。

それはnifty形式ログでやっているので、WEB上で見るなら名前でコメント表示が
やはりほしいので。

暫く見ていたら、慣れてきたので、番号順表示のデフォにしようかなぁ。


01818/01809 BQO00549  Konno            Re^3: niftyID?表示のトリック
( 1) 06/11/29 21:11 01812へのコメント(リンクさん) コメント数:1
> ブラウザからTXTで保存してNIFTYのログブラウザで見れるといいなと思って、
> NIFP for Win32で試してみましたが、発言は認識するものの、コメントツリーが
> やはりダメですね。

やっぱり駄目ですか。nifty形式ログならコメントツリーになるんでしょうかねぇ。
私はブラウザからTXTで保存してVzで見るつもりでいたので、名前でコメントは
外せないです。

> でも、ログブラウザで見る需要が、そんなにあるのか疑問ではあります。

もし、どうしてもやってほしいと言う人が多ければ、完全nifty形式版もやって
みようかなという気も少しあるんですが、実はnozlog.def のID変換アルゴリズム
が読めなかったので、ID表示はハンドパワーで一覧を作ってやっているんですよね。
だから今はまだ不完全な状態です。(^^;

ちなみに、ツリー表示画面の右上の、[NIF] というリンクから表示できます。


01819/01813 BQO00549  Konno            Re^3: AVGフリーも7.5にUP
( 1) 06/11/29 21:18 01815へのコメント(文太さん) コメント数:1
めざらさん、文太さん、情報サンクスです。

>  7.1  -> 7.5 update、完了しました。サイトを調べろよなぁ、と。宣伝だけし
> ないで、 free 版の方も update してください、くらい付けてくれてもよいのに
> なぁとも思う。ずうずうしい。

私もあの表示が読めなかったので、不安になっていたところでした。
助かりました。たぶんみんな同じように思っていたと思います。(^^;


01820/01809 CXB00940  としき           Re^3: WEB上でFGALDC復活?
( 1) 06/11/29 22:53 01816へのコメント(Konnoさん) コメント数:1
参照先:http://www.hinocatv.ne.jp/~toshiki/
> それはnifty形式ログでやっているので、WEB上で見るなら名前でコメント表示が
> やはりほしいので。

なら、niftyもどきヘッダと1行開けて表示してみるてのは?

> 00000/00000 AAA00000  としき           Re: タイトル
> (01) 2006/00/00 17:43 00000へのコメント  コメント数:1
> 
> だれかさんへのコメント
> 参照先:http://homepage3.nifty.com/

こんな感じ。互換性は確保できると思うけど。


01821/01809 BQO00549  Konno            Re^4: NIFPではOK?
( 1) 06/11/30 00:23 01820へのコメント(としきさん)
> なら、niftyもどきヘッダと1行開けて表示してみるてのは?
>
> > 00000/00000 AAA00000 としき Re: タイトル
> > (01) 2006/00/00 17:43 00000へのコメント コメント数:1
> >
> > だれかさんへのコメント
> > 参照先:http://homepage3.nifty.com/
>
> こんな感じ。互換性は確保できると思うけど。

う〜ん、かえって見た目の互換性がいまいちになったような気がします。
NIFP のためだけに一行増やしたくないですね。ということで、コメント元
の番号の位置を同じになるようにちょっとだけ直してみました。
で、NIFP for Win を落として(シェアなのね)見てみたところ、コメントツリー
は表示されているように見えます。(^_^)

でもブラウザで見たほうがよっぽど見易いように思うんだけどなぁ?


01822/01813 CRG00666  文太             Re^4: AVGフリーも7.5にUP
( 1) 06/11/30 00:25 01819へのコメント(Konnoさん)
金野さん

 いえいえ、あのスレッドがあったから、こまめにウィルスチェックだ、デフラ
グだ、ああ、AVGのアップデートだとやっているわけで。q1 状態なのですが、
先ほどモバの5枚のカードに金野版を導入しました。これは旧8じゃないんで、
XPからコピーだけすればよかったので。ちゃんとしているようですよ。まった
く使い込んでいませんが。

> 私もあの表示が読めなかったので、不安になっていたところでした。
> 助かりました。たぶんみんな同じように思っていたと思います。(^^;


01823/01759 CRG00666  文太             Re^7: いまどきは学習型がよさそうな
( 1) 06/11/30 00:38 01782へのコメント(としきさん)
としきさん、金野さん

 「おまかせフィルター」導入から1週間程度になります。よくもなく悪くもな
く、かな。悪くないので導入成功だと思っています。1日90通の大台に乗って
いる感じ。レスを書き書き、サーバでのメール削除と繰り返しております。やれ
やれ。抜本的解決策は、とりあえず延期。こういうのも悪くないや、と。


01824/01813 DGF01024  めざら           Re^3: 魔法のグリグリについて
( 1) 06/11/30 07:32 01815へのコメント(文太さん) コメント数:1
参照先:http://homepage3.nifty.com/mezala/
> ずうずうしい。

 確かに,ちょっと相当猛烈に,ずうずうしいですよね。
 特に,英語の読める人で色々言うのは滅茶苦茶図々しいです。怠慢です。

 英語の読めない人間は,一所懸命辞書引いて,同じ境遇の人にも利用できるよう
グリグリの図解なんか作って,メモ代わりに記録しておくんだよ。(泣)

01825/01813 CRG00666  文太             Re^4: 魔法のグリグリについて
( 1) 06/11/30 11:01 01824へのコメント(めざらさん) コメント数:1
めざらさん

>  怠慢です。

 うぎゃぁ〜〜〜。(-_-)/~~~~ピシー!ピシー!
 そ、そりは辞書に載っている定義ではないですか。 リーダーズで bunta って
引いてみてください。

>  英語の読めない人間は,一所懸命辞書引いて,同じ境遇の人にも利用できるよう

 う、嘘。みんなC言語知らないの? より酷い。(^^;


01826/01813 DGF01024  めざら           Re^5: 魔法のグリグリについて
( 1) 06/11/30 19:42 01825へのコメント(文太さん) コメント数:1
参照先:http://homepage3.nifty.com/mezala/
うそじゃないって。(^^;

実は先日、娘の端末でアレが出て、適応力の足りないわが娘はパニくっちゃってて、普段はエロおやじ呼ばわりされている父の登場。以前に辞書で調べたもんだから、あの画面に関しては完璧に解説ができるわけです。英検準2級の娘に3級の父がアレコレ適切な訳語を披露するもんだから、このときばかりは父をなめきっている娘も少しは見直したふうでした。


01827/01809 DGF01024  めざら           Re^4: niftyID?表示のトリック
( 1) 06/11/30 19:59 01818へのコメント(Konnoさん) コメント数:1
参照先:http://homepage3.nifty.com/mezala/
> 実はnozlog.def のID変換アルゴリズムが読めなかったので、

 あ、あれはアルゴリズムなどという高級な概念は使用していない代物ですぞ。
 名前の先頭2バイトを英字3文字に換算して、残りを5桁の数値に丸めただけ。だから、換算に使っている定数を変えれば全然別ものになるという変なものなんですよ。

01828/01809 BQO00549  Konno            Re^5: niftyID?表示のトリック
( 1) 06/11/30 23:58 01827へのコメント(めざらさん)
>  あ、あれはアルゴリズムなどという高級な概念は使用していない代物ですぞ。

いやぁ、ハンドパワーのトリックと比べたら天地の差ですね。(^^;

>  名前の先頭2バイトを英字3文字に換算して、残りを5桁の数値に丸めただけ。だから、換算に使っている定数を変えれば全然別ものになるという変なものなんですよ。

これこれ、これが読めないんですよ。(;_;) せっかくだから互換性のあるIDに
したかったんですが、挫折しました。(;_;) Vzマクロをperlに変換なんて簡単
にはいかないですねぇ。

#テスト期間は終了したので、[最新XX]のリンクと入れ替えてしまいました。


01829/01813 CRG00666  文太             Re^6: 魔法のグリグリについて
( 1) 06/12/01 00:09 01826へのコメント(めざらさん)
めざらさん

> 娘はパニくっちゃってて、

 実はうちの小3の息子もパニくりました。ほとんどPCなんか触れない息子の
目の前でウィルスがかかったのです。で出てきたのがサイトにもある、いかにも
洋風なウィルス人たち。びびってましたねぇ。「僕、いけないことした?」と、
珍しくかわいい子供のうろたえを見せました。

> 父をなめきっている娘も少しは見直したふうでした。

 よかった、よかった。うちのは、今のところ、なめきってはいませんね、。何
につけ怠惰なところは激しく突いてきますが。笑い。


01830/01830 GST01234  ドラ焼きシロップ W-ZERO3でNP2
( 1) 06/12/01 19:39 コメント数:1
こんばんは。
改造版NP2 ver06を、使用しております。

設定ファイルか何かでキー割り当ての変更は可能でしょうか?
現状では、「*」が「`」になってしまったり、「;」やF1〜F10などのキーがどこにも割り当てられてなかったりして、何かと不便なので、設定ファイルで変更できないかな、と思っているのですが……

01831/01830 BQO00549  Konno            KEY.TXTで入れ替えは出来ます
( 1) 06/12/03 01:11 01830へのコメント(ドラ焼きシロップさん) コメント数:1
ドラ焼きシロップさん、こんにちは。

> 現状では、「*」が「`」になってしまったり、「;」やF1〜F10などのキーがどこにも割り当てられてなかったりして、何かと不便なので、設定ファイルで変更できないかな、と思っているのですが……

Vzをお使いなのでしょうか。
私もあまり使い込んでないので、よくわかってないですが、現状NP2で使えるキーは

Fn+ - = \
Fn+ E = +
Fn+ K = *
Fn+ L = `
Fn+ O = _
Fn+ P = @
Fn+ R = |
Fn+ W = ;
Fn+ Enter = F6
 
\ + , = :     ;  \ はシフトを表す
\ + . = ^
\ + / = ?

受話ボタンの上のボタン = F1
終話ボタンの上のボタン = F2
OKボタン = F6

このくらいでしょうか。あと、NP2のソース中のUPDATE.TXTから引用すると

---------------------------------------------------------
 ・キー設定について
  bios.romとかと同じフォルダに key.txtというファイル名のテキストファイルを
  作成して、キー設定を記入して下さい。

  書式)
   [keyname] = [key1] (key2) (key3)
   [keyname] [TAB] [key1] (key2) (key3)
   userkey[1-2] = [key1] (key2) (key3) ... (key15)
    フルキー 0〜9 A〜Z - ^ \ @ [ ] ; : , . / _
             STOP COPY ESC TAB BS RET SPC XFER NFER
                 INS DEL RLUP RLDN HMCL HELP
    ファンク F1〜F10 VF1〜VF5
    テンキー [0]〜[9] [-] [/] [*] [+] [=] [,] [.]
    シフト   SHIFT CAPS KANA GRPH CTRL

   通常キーは3個、userkeyは15個の同時押し設定が可能です。
   [=] キーは = で区切られてしまうので TABで区切るか [EQU]として下さい。

   例:
    W = UP                 (ダイアモンドキーをカーソルにしてみたり…)
    S = LEFT
    D = RIGHT
    X = DOWN
    [7] = [4] [8]          (テンキー斜め同時押しにしてみたり…)
    [9] = [6] [8]
    [1] = [4] [2]
    [3] = [6] [2]
    userkey1 = CTRL XFER   (CTRL+XFER FEP切り替え)
    userkey2 = D O A Z     (D+O+A+Z 同時押し)

---------------------------------------------------------

これを見ても使い方がよくわからないですが、試しに

 * = +
 + = 
 : = ;
 ^ = :
 ; = ^

という内容でkey.txtを作り、NP2のあるフォルダに入れて起動したところ、
\, で ; \. で : が出力され、キートップの刻印通りとなりました。(^_^)
既存のキーの入れ替えには使えそうですが、シフトキーの入力の仕方がわからない
ですね。

根本的にはNP2本体で対応するべきなんですが、すぐには無理なので、しばらく
おまちください。


01832/01759 GST01234  柳澤 佳里        Re: Linux用だけどPERLのフィルター
( 1) 06/12/03 15:35 01787へのコメント(文太さん) コメント数:4
件のフィルター(check_uri.pl)の開発者です。
Googleで検索してこの記事を見付けました。

すでにこの話題は終わっているようなのですが、少しコメントをさせて戴きます。

> > ただ、ここで使っているrbl.jpというのは、その他の方法で成果物を利用させて
> > もらうことにより、フィルタリング効率を向上させられそうな気がします。
>
>  というわけで、これは辛いっす。あんなの読む気力ありっこないです。

check_uri.plのやっていることはメールの中からURLを探して来て、
そのURLが迷惑メールに良く出てくるサイトの場合にはヘッダーに印を
つけるということをしています。そして、そのやり方はDNSを利用しています。
DNSの使用方法は、下記のRBL.JPプロジェクトのページに書いてある通りです。
http://www.hart.co.jp/spam/howtocheck.html

check_uri.plは元々、一行ずつ読み込み、http://なんちゃら/という部分を見付けると、
RBL.JPに問い合わせるというものでした。しかし、メールの本文をエンコードする
迷惑メールや本文を添付ファイルとして送って来るメールが増えたため、
デコードなどのそれらに対応する処理を書き加えました。
その結果、現在のように本来の処理がかなり見えにくくなってしまいました。
基本的なコンセプトはURLを発見し、RBL.JPに問い合わせるというもので、
正規表現マッチングとDNS正引きが出来るプログラミング言語を使えば
同じ様なものが作れます。
上述の処理に加え、url.rbl.jpには迷惑メールのFromなどに記述されている
メールアドレスのドメイン名も記録されていますので、
check_uri.plはそういうドメイン名もRBL.JPに問い合わせ、調査しています。

- Windowsで使えるかについて
未調査ですが、現在の実装にはOSに依存したコードは無いので、
Windows用のPerl 5.8系列があれば使えると思います。
余談ですが、初期の実装(最早公開していない)はBINDに含まれているhostコマンドを
使用していましたので、これがインストールされている必要がありました。
現在は、この部分はPerlの関数であるgethostbynameを利用した実装になっており、
Perl以外のプログラムへの依存はありません。ちなみに、gethostbynameは
check_listサブルーチンでRBL.JPなどへに問い合わせるところで用いています。

- Perlのバージョンについて
対応するPerlのバージョンを5.8以降にしているのは、
エンコードされた迷惑メールに対処する処理で
5.8以降にしか無いライブラリーを使っているからです。
そのため、MIME::Base64などのライブラリーをインストールすると、
5.8以前のPerl 5.xでも動作すると思います。

以上、長々とすいません。

01833/01759 CRG00666  文太             Re^2: Linux用だけどPERLのフィルター
( 1) 06/12/03 21:05 01832へのコメント(柳澤 佳里さん)
柳澤さん

 わざわざ作者みずからお越しいただきありがとうございます。また、詳細な説
明ありがとうございます。感謝に耐えません。正直いって、こういう展開になる
ならもっとちゃんと調べておけばよかった、と思っております。
 ただ環境設定その他で、お手をわずらわせてしまうことになると思うのです。
できたら導入して使い物になるようにし、ゆくゆくはスクリプトも研究させても
らいたいな、と思っているのですが、お時間はおありでしょうか。まず、これを
お教えいただけますでしょうか。

 ここの人々は Windows 派です。また、主に元 Nifty の FGALDC というところ
の出身者が多く、話題の中心はやはりVzエディタということになります。イン
ターネットの時代ですので、話題はもっとずっと広くはなってはいるのですが、
それでも SJIS だけを扱う 16 ビットのエディタが共通関心であるとすると、こ
この人々の知識・レベルはかなり時代の流れからずれたものだとは言えると思い
ます。もっともネットワーク、アセンブラ等の専門家(有段者?)もおりますの
で、そうそう捨てたものでもないと思うのですが。(というか、脱いでもすごい
です−−ふ、古い。)

 ですが、えーと、僕はそのような関心を共有しつつ、単なる掲示板ユーザであ
り、ゴミ捲き係を担当していてレベルはもっとも低い者の一人です。perl  への
興味は強いほうです。 できたら、check_uri.pl のことで色々とお手伝いいただ
きたいのですが…。よいとなったら、次回、質問をあげさせていただきたいと思
っているのですが…。m(__)m


01834/01759 BQO00549  Konno            Re^2: Linux用だけどPERLのフィルター
( 1) 06/12/03 21:06 01832へのコメント(柳澤 佳里さん) コメント数:1
柳澤さん、こんにちは。

> 件のフィルター(check_uri.pl)の開発者です。
> Googleで検索してこの記事を見付けました。

わざわざお越しくださり、ありがとうございます。

> DNSの使用方法は、下記のRBL.JPプロジェクトのページに書いてある通りです。
> http://www.hart.co.jp/spam/howtocheck.html

これはいいですね。勉強になります。柳澤さんのサイトも拝見しました。cや
perlのCGIのtipsなど参考にさせて頂きます。

#文太さん、ダブリ投稿記事に書かせてもらいました。

01835/01759 CRG00666  文太             Re^3: Linux用だけどPERLのフィルター
( 1) 06/12/04 10:30 01834へのコメント(Konnoさん)
金野さん

> #文太さん、ダブリ投稿記事に書かせてもらいました。

 ありがとうございます。削除キーを入れてないとやっぱり消せませんね。
 動揺した?(ぉ)


01836/01759 CXB00940  としき           Re^2: Linux用だけどPERLのフィルター
( 1) 06/12/04 15:21 01832へのコメント(柳澤 佳里さん)
参照先:http://www.hinocatv.ne.jp/~toshiki/
ども、柳澤さん、こんにちは。

> check_uri.plのやっていることはメールの中からURLを探して来て、
> そのURLが迷惑メールに良く出てくるサイトの場合にはヘッダーに印を
> つけるということをしています。そして、そのやり方はDNSを利用しています。

あ〜、DNSですか。なるほど。
そうすると、ちょっと違った切り口というか、自分でも利用させてもらえそうな
方法が思いつきます。
AL-MAILとかはどうかわからないのですが、私の使っているメーラーで考えると。
ん、電信八号ならいけそうだな。

まず、メールボックスをナメて、例えば本文からurlを取り出してリストを作る。
そのリストから、nslookupを使った1行1urlのバッチファイルを作る。
全てのnslookupの結果はリダイレクションで同一のファイルに出力する。
これはスパムurlのリストになっているわけだから、今度はこのリストを見ながら
メールボックス内のメールを改竄する。
具体的には、該当メールのタイトルの前に「!!!!SPAM!!!!」などという文字列を
追加してみるとか。
そうしたら、もう一度メールボックスを読み直し。これをしないと、変更を加え
たタイトルが反映しないから。
そして、今度はタイトル順でメールをソート。すると、スパムなメールが一塊と
なるので、削除も容易。

この手順だと、面倒だけど、自分の持ってる技術だけでRBLを利用できそう。
問題点は、RBLのRが意味するとおり、メールの受信時はリストにあったけど現在
はリストに載っていないものが存在する可能性があって。
そういう事を考えると、素直にcheck_uri.plを利用した方がよっぽど楽ですね。

いやぁ、参考になります。
解説、どうもありがとうございました。


01837/01373 GST01234  リンク           Re^5: ビスタのベータ?
( 1) 06/12/04 22:45 01763へのコメント(文太さん) コメント数:2
今日は、ちょっろっと検索してみましたが
DR-DOSのBBSにVISTAのDOS窓について書いてありました。

引用の引用ですが、
http://8620.teacup.com/drdos/bbs

>http://cms.moriy.com/e119.html
>> Windows Vistaでは16 ビットアプリケーションに対する日本独自機能が提供されません

という事で、VISTAでDOS/Vアプリは動かないのは仕様みたいですね。
VPC使えと、そうゆう事みたいです。
ではでは〜


01838/01759 CWF01299  でがらし         お礼
( 1) 06/12/04 22:47 01832へのコメント(柳澤 佳里さん) コメント数:1
 柳澤さん、こんばんは。
 私はVZの最後の敗残兵の一人です。VZのマクロに苦労している
ので、PERLどころではありませんが、わざわざおいでいただきま
してありがとうございます。PERL使うんだったら、メールの処理
も簡単にできそうなもんだけど、と思って検索しているうちに、柳澤
さんのサイトを発見しました。話がはずめば(はずまなくても)うれ
しいです。お礼まで申し述べます。

01839/01373 CRG00666  文太             Re^6: ビスタのベータ?
( 1) 06/12/04 22:52 01837へのコメント(リンクさん)
リンクさん

> Windows Vistaでは16 ビットアプリケーションに対する
> 日本独自機能が提供されません

 了解です。あらら。

> という事で、VISTAでDOS/Vアプリは動かないのは仕様みたいですね。
> VPC使えと、そうゆう事みたいです。

 あらら。ま、道があるだけいいのか。これからそっち方向の環境整備研究って
ことになるのでしょうかね。うーん。ま、道が…(ループ)。

 何度も何度も情報提供、ありがとうございます。


01840/01759 CRG00666  文太             Re: お礼
( 1) 06/12/04 23:21 01838へのコメント(でがらしさん) コメント数:1
でがらしさん

>  私はVZの最後の敗残兵の一人です。

 あの〜、 僕は敗残しているつもりはないのですが。 一緒にしないで
ください(笑)。「私は敗残兵です」なら構いませんが。

 柳澤さん、気にしないでください。変な人たちなのです(あれ?)


01841/01759 CWF01299  でがらし         本隊と敗残兵
( 1) 06/12/04 23:29 01840へのコメント(文太さん) コメント数:1
 大丈夫。一緒にしてません。あたしゃ、本隊がジャングルの中を
進んでいくのを遠くに見ながら、なんとか後からついていこうと
しているんですが、だいぶん、引き離されました。うまくたどりつ
けるかどうか、それともここでジャングルに取り残されるか。でも
周りを見るとそんなにひどい場所でもないんですがね。ひょっとす
ると近くには、他の敗残兵もいるのかも。

01842/01759 CRG00666  文太             Re: 本隊と敗残兵
( 1) 06/12/05 01:25 01841へのコメント(でがらしさん) コメント数:2
でがらしさん(深夜に)

> 周りを見るとそんなにひどい場所でもないんですがね。

 マシンさえ調達できて環境がうまく作れれば、そんなにひどくないですよ、間
違いなく。だって、でがらしさんだって、Vzのパワーユーザーですよ。Windows
環境ではやりにくいテキスト処理はいっぱいあると強く思う。ファイル管理にな
ると、やっぱ多少苦労しますけどね。
 敗残兵でなくお仲間が生き残っているといいですね。何にも負けてないって。


01843/01373 BQO00549  Konno            Re^6: ビスタのベータ?
( 1) 06/12/05 23:44 01837へのコメント(リンクさん) コメント数:1
リンクさん

> >> Windows Vistaでは16 ビットアプリケーションに対する日本独自機能が提供されません
> という事で、VISTAでDOS/Vアプリは動かないのは仕様みたいですね。
> VPC使えと、そうゆう事みたいです。

ありゃぁ、なんともはや・・・
でも、DOSではなく、DOS/V潰しとは、なんかいやらしいですねぇ。


01844/01759 BQO00549  Konno            Re^2: 本隊と敗残兵
( 1) 06/12/05 23:57 01842へのコメント(文太さん) コメント数:1
ここは硫黄島ですか?(笑)

でも、テキはいよいよビスタという最終兵器でDOSの生き残りを殲滅しようとしている
みたいですね。こうなったら竪穴(ポケット)の中に活路を見出すのだ!!


01845/01759 CRG00666  文太             Re^3: 本隊と敗残兵
( 1) 06/12/06 01:11 01844へのコメント(Konnoさん) コメント数:1
> ここは硫黄島ですか?(笑)

 やっぱりそんな風に自動化された想像力は作動してしまいますね。
 クリント・イーストウッドの2つの方だけ、はやく見たい。日本のも興味がな
くはないですが。

> でも、テキはいよいよビスタという最終兵器でDOSの生き残りを殲滅しようとしている
> みたいですね。こうなったら竪穴(ポケット)の中に活路を見出すのだ!!

 それだけでは、本業に使っている僕は困ります。vz.com  が動く環境は、やっ
ぱりシリアス・ビジネスです。だから、テキじゃないですよ。そもそもMSの上
で15年くらい前に極東の島で動き出したプロジョエクトなのですから。エミュ
でいいじゃないですか、と思っています。よかった、W98se、Wmeとかマ
スターディスク買っておいて、とか。ぼくにとってはmeな環境が最高だった。
それとも販売終了になった  Vz Goodies5 とかで、LINUX でVzしますか? こ
れなら emacs にする、僕は。マクロ要らない。


01846/01373 GST01234  リンク           Re^7: ビスタのベータ?
( 1) 06/12/06 07:38 01843へのコメント(Konnoさん) コメント数:1
> ありゃぁ、なんともはや・・・
> でも、DOSではなく、DOS/V潰しとは、なんかいやらしいですねぇ。

そうですね。HPには書きましたが、どうにかして使えないかなぁ?と思って

Windows Vista における 16 ビットサポート
Windows Vista(Windows Server “Longhorn” を含む。以下同じ)では 16 ビットアプリケーションに対する日本独自機能が提供されません。
http://www.exconn.net/Blogs/windows/archive/2006/06/16/13349.aspx

ここの元ネタに書いてある、
WindowsXpのconfig.ntに登録されてる、デバイスドライバをVistaのsystem32ディレクトリに入れて、config.ntと autoexec.ntも入れ替えてみたけど
ダメでした。

それなら、今配布されてる、VPCはVISTAで動くんだろうなぁ?と思い、VPCのHP
http://www.microsoft.com/japan/windows/virtualpc/default.mspx
に行ってみると
2007 年から Windows Vista 対応の Virtual PC 2007 の無料ダウンロードを開始します。
という記述があって、無料版のVirtual PC 2004を入れるのはやめました(^-^;
でもまぁVISTAでもVPCはとりあえず無料って事ですね。

ではでは〜

01847/01759 BRM00300  Est              Re^2: 本隊と敗残兵
( 1) 06/12/06 13:18 01842へのコメント(文太さん) コメント数:2
>  敗残兵でなくお仲間が生き残っているといいですね。何にも負けてないって。

最近の勢いに全くついていくことができず傍観してました。
私も Vz にお世話になる毎日を送ってます。

仕事柄、窓なアプリを使う事が多く自然と窓アプリを自動化するためのマクロ書きなどに
追われることが多く、テキスト処理から遠ざかってしまいました。

でも、文章を書くときはやっぱり Vz がいいな、とつくづく思います。
Vz マクロももう少し勉強しなければと思いつつ時間だけが流れていきます。

研究熱心な文太さんやでがらしさんはすごいなと思います。

私も敗残兵のつもりはありませんよ。>でがらしさん

#存在証明のために。


01848/01759 CRG00666  文太             Re^3: 本隊と敗残兵
( 1) 06/12/06 19:50 01847へのコメント(Estさん) コメント数:1
Estさん、お元気そうで何よりです。

 古すぎて忘却のかなたが、とっくに解決済みかと思いますが、fl.25 で、ファ
イラ右窓・左窓の判別ができます。


01849/01759 BQO00549  Konno            Re^4: 本隊と敗残兵
( 1) 06/12/07 00:26 01845へのコメント(文太さん)
>  クリント・イーストウッドの2つの方だけ、はやく見たい。日本のも興味がな
> くはないですが。

私はこの手の映画はあまり興味ないですねぇ。特に邦画はつまらないし。

>  それだけでは、本業に使っている僕は困ります。vz.com  が動く環境は、やっ
> ぱりシリアス・ビジネスです。だから、テキじゃないですよ。そもそもMSの上
> で15年くらい前に極東の島で動き出したプロジョエクトなのですから。

う〜ん、そもそも、トロンが潰されなかったら、このレスもトロンパソコンで
書いていたかもしれないと思うと、忸怩たる思いが。
でもそうするとVzも生まれてなかったわけだし。(^^;

15年前というのは、DOS/V? Vz? プロジェクトならやっぱりDOS/Vか。そして、
この技術も潰されると。歴史は繰り返すか。

> それとも販売終了になった  Vz Goodies5 とかで、LINUX でVzしますか? こ
> れなら emacs にする、僕は。マクロ要らない。

これはありえないでしょう。ゼロから今ほどの快適な環境を構築するのは
今となっては考えるのもおぞましいと思うし。


01850/01373 BQO00549  Konno            Re^8: ビスタのベータ?
( 1) 06/12/07 00:34 01846へのコメント(リンクさん) コメント数:1
> ここの元ネタに書いてある、
> WindowsXpのconfig.ntに登録されてる、デバイスドライバをVistaのsystem32ディレクトリに入れて、config.ntと autoexec.ntも入れ替えてみたけど
> ダメでした。

ありゃぁ、絶望的ですねぇ。まぁ、私はあと5年ぐらいはXPで行くつもりなので、
そのころにはビスタも無くなってたりして。(^^;

> 2007 年から Windows Vista 対応の Virtual PC 2007 の無料ダウンロードを開始します。
> という記述があって、無料版のVirtual PC 2004を入れるのはやめました(^-^;

やっぱり対応版が出るんですね。となると、XP用の現バージョンが配布終了
の可能性も有りそうなので、とりあえず落としておきました。(^_^)


01851/01373 CRG00666  文太             VPC2004、落としておいたら?
( 1) 06/12/07 12:02 01850へのコメント(Konnoさん)
(VPC2004版について)
> やっぱり対応版が出るんですね。となると、XP用の現バージョンが配布終了
> の可能性も有りそうなので、とりあえず落としておきました。(^_^)

 どうなるか分かりませんが、僕も落としておき、CD-Romに焼いておくことに
しました。それが安心なのかも>おーる。 金野さん、一口アドバイスに多謝。


01852/01830 GST01234  ドラ焼きシロップ 返事がおくれました
( 1) 06/12/07 23:54 01831へのコメント(Konnoさん) コメント数:1
とりあえず、まともに使えるようになりました。ありがとうございます。
しかし、key.txtに例えば「F1 = 1 2」と設定しても、説明書どおりに1と2の同時押しでF1キーが入力されないのはNP2の仕様なんでしょうか……?

01853/01853 BQO00549  Konno            英文で I値l は禁止
( 1) 06/12/08 04:32
> Your guestbook is example of middle-class guestbooks. Congratulation! I値l
> show your site and guestbook to my friends.u

またI値lの英文スパムが来たので、対策しました。

#日本語の無いコメント及び大量URLの羅列を拒否
$c = $in{'message'};
#追加
$c =~ s/I値l/I'll/g;

ここに1行追加しただけです。類似スパムが出たらどんどん追加していくだけなので
意外と簡単に出来ました。(^_^)
この記事のように日本語文の中にあっても問題ないです。

#これで99.99% ぐらいのスパム防止できるかな? (^^;

01854/01759 CWF01299  でがらし         残置兵・ゲリラ兵・敗残兵
( 1) 06/12/08 19:34 01847へのコメント(Estさん) コメント数:1
 ESTさん、こんばんは。兵隊にもいろいろな種類があるようですが、
あたしなんか、VZマクロはまだちんぷんで、寄る年波を考えると、ど
うしても敗残兵でしょう。横着しようと、便利なものがないか目をこら
していますが、マクロの進歩は遅々たるものです。なんとかの将、兵を
語らず、なんちゃって。

 まだまだ元気な皆さんの姿、頼もしいです。xyzzyへの尖兵がほ
しいところかな?

01855/01830 BQO00549  Konno            Fキーは無理そうです。
( 1) 06/12/08 23:24 01852へのコメント(ドラ焼きシロップさん)
> とりあえず、まともに使えるようになりました。ありがとうございます。
> しかし、key.txtに例えば「F1 = 1 2」と設定しても、説明書どおりに1と2の同時押しでF1キーが入力されないのはNP2の仕様なんでしょうか……?

これは逆で、例えば、
1 = F1
とすれば、1 キーを押した時に F1 が押された状態になると思います。ただ、
1 2 = F1
というような指定は出来ないようなので、Fキーの追加は無理っぽいですね。

NP2で、[文字]+1〜0 でF1〜F10 とか出来ないか、ソースを眺めていますが、
すぐには無理そうです。気長にお待ちください。


01856/01759 BRM00300  Est              Re^4: 本隊と敗残兵
( 1) 06/12/11 10:54 01848へのコメント(文太さん)
文太さん、

>  古すぎて忘却のかなたが、とっくに解決済みかと思いますが、fl.25 で、ファ
> イラ右窓・左窓の判別ができます。

 ありがとうございます。しかし、記憶が定かではありません。ごめんなさい。
 でも、ファイラーでやりたいことがあるのは確かです。ほそぼそとやっていきます。

 

01857/01759 BRM00300  Est              Re: 残置兵・ゲリラ兵・敗残兵
( 1) 06/12/11 11:05 01854へのコメント(でがらしさん) コメント数:1
でがらしさん、

 マクロを使っているだけで、Vzerを名乗る資格があると思っています。(図々しい?)
 窓からパソコンを使い始めた人にとってはマクロを使う事すら敷居が高い
  のではないでしょうか?

 殆ど進歩していない私にとって、私以外にもマクロに挑戦されている人が
  いるというのは心強いです。


01858/01759 CWF01299  でがらし         ぽちぽちと
( 1) 06/12/13 20:51 01857へのコメント(Estさん)
 挑戦なんていうほどのものでもないですけど、まあ、ぽちぽちと。
後、10年くらいでほんのちょっとしたマクロが書ければいいなと
夢想しています。VZを使い始めてから10年目くらいでしょうか。
たいていは出来合いのマクロで十分なんですけどね。まだまだ新し
いマクロが出てきそうな機運、とってもうれしいですね。


01859/01859 CRG00666  文太             DANNYさんのmenulib.def
( 1) 06/12/16 00:14 コメント数:1
 vgrep.def を使いたいと思うのですが、「要 menulib.def」とあって止まって
しましました。前に一度導入したことがあるはずなのに…。menulib.def をイン
クルードして、vgrep.def に普通にロード関数かローダによる起動設定をすれば
よいのでしょうか。一言、お教えいただければ幸いです。

 menulib.def (v1.0a)  と vgrep.def (v1.19b) で宜しいでしょうか。m(__)m


01860/01859 BQO00549  Konno            Re: DANNYさんのmenulib.def
( 1) 06/12/16 07:16 01859へのコメント(文太さん) コメント数:1
文太さん

>  vgrep.def を使いたいと思うのですが、「要 menulib.def」とあって止まって
> しましました。前に一度導入したことがあるはずなのに…。menulib.def をイン
> クルードして、vgrep.def に普通にロード関数かローダによる起動設定をすれば
> よいのでしょうか。一言、お教えいただければ幸いです。

私は使ったことが無かったので、めざらさんの所から落としてきました。(ぉ

>  menulib.def (v1.0a)  と vgrep.def (v1.19b) で宜しいでしょうか。m(__)m

menulib.def は v1.0a でしたが、vgrep.def は v1.15 と、v1.21 の2つありました。
v1.15だと menulib.def は要らないようですね。v1.21 をそのまま起動すると、
「menulib.def は入力できません」と出て、起動できないですね。
先にmenulib.def を入れておけば普通に起動できました。

で、menulib.def が必要なのはv1.20 からのようなんですが、v1.19b はそのまま
起動できないんでしょうか? 


01861/01859 CRG00666  文太             Re^2: DANNYさんのmenulib.def
( 1) 06/12/16 11:29 01860へのコメント(Konnoさん) コメント数:2
金野さん、ありがとうございました、無事解決です。

> 私は使ったことが無かったので、めざらさんの所から落としてきました。(ぉ

 またまた。でも、すいません、お手数をおかけいたしました。

> >  menulib.def (v1.0a)  と vgrep.def (v1.19b) で宜しいでしょうか。m(__)m
> 
> menulib.def は v1.0a でしたが、vgrep.def は v1.15 と、v1.21 の2つありました。
> v1.15だと menulib.def は要らないようですね。v1.21 をそのまま起動すると、
> 「menulib.def は入力できません」と出て、起動できないですね。
> 先にmenulib.def を入れておけば普通に起動できました。

 そう、この辺が錯綜していて、「どうするのが一番よいのですか?」というの
が質問の隠れた趣旨でもあったのですが、v1.19b でも menulib.def がすでに必
要になっていたように思ったのですが、doc やらがごちゃごちゃになっていただ
けの可能性もあります。

 というわけで一番安直に vgrep v1.21 +menulib v1.0a で解決です。インクル
ードがいやだな、だから分離する前の版で、といった一番最初の魂胆から泥沼に
落ち墓穴を掘ったようです。でも、インクルードの必要なんてそもそもなかった。
vgrep がちゃんとロードするような仕組みになってますね。お手数をお掛けしま
した。すいませんでした。

 さて、なんで vgrep が必要だ、と思ったのだったかしら? 笑い。


01862/01859 BQO00549  Konno            Re^3: DANNYさんのmenulib.def
( 1) 06/12/17 00:56 01861へのコメント(文太さん) コメント数:1
> > 私は使ったことが無かったので、めざらさんの所から落としてきました。(ぉ
>  またまた。でも、すいません、お手数をおかけいたしました。

そうですね。DANNY版VZを宣揚していながらその最大の特徴であるマクロ
ライブラリー機能を使ったことが無いなんて知れたら大顰蹙ですよね。このことは
内緒にしておこう。(^^;

>  そう、この辺が錯綜していて、「どうするのが一番よいのですか?」というの
> が質問の隠れた趣旨でもあったのですが、v1.19b でも menulib.def がすでに必
> 要になっていたように思ったのですが、doc やらがごちゃごちゃになっていただ
> けの可能性もあります。

もしかしたらそういう可能性もあるかなと思ったんですが、v1.19bは持ってないし、
おそらく文太さんなら自己解決するだろうと。(^^;

> でも、インクルードの必要なんてそもそもなかった。
> vgrep がちゃんとロードするような仕組みになってますね。

なるほど、それなら手間が無いですね。

>  さて、なんで vgrep が必要だ、と思ったのだったかしら? 笑い。

マクロバッファを空けるために大物マクロのmenulib対応化するんですね。
期待してます。(^_^)


01863/01859 CRG00666  文太             Re^4: DANNYさんのmenulib.def
( 1) 06/12/17 02:14 01862へのコメント(Konnoさん) コメント数:1
金野さん

> そうですね。DANNY版VZを宣揚していながらその最大の特徴であるマクロ
> ライブラリー機能を使ったことが無いなんて知れたら大顰蹙ですよね。このことは
> 内緒にしておこう。(^^;

 っていうか、vgrep自体を宣伝してましたよ、どっかで。たぶん。

> もしかしたらそういう可能性もあるかなと思ったんですが、v1.19bは持ってないし、
> おそらく文太さんなら自己解決するだろうと。(^^;

 こういって貰えると、少し…。ひとに訊いてから、「俺、自分の調べられるこ
と、ちゃんと調べたよね」と不安になって、俄然調べはじめるような奴で。
 文脈はずれなのですが、どっかDANNYさんと金野さんて重なるんですよね。
違う人なんですよねぇ。でも、何かねぇ、昔から。文体とか似てますかねぇ???

> > でも、インクルードの必要なんてそもそもなかった。
> > vgrep がちゃんとロードするような仕組みになってますね。
> なるほど、それなら手間が無いですね。

 ぜんぜんなかったです。すいません。

> >  さて、なんで vgrep が必要だ、と思ったのだったかしら? 笑い。
> マクロバッファを空けるために大物マクロのmenulib対応化するんですね。
> 期待してます。(^_^)

 あはははは。 まに受けて答えれば、それはねぇ。で、stkhelp や ygear なん
かは読めないし、 ローテクの集大成みたいな tuibami や blog ではそもそも無
理ですから。 Yメニューのサブルーチン化なら、(その後気づいたのですが)
recipe.def (by Ikuboh)になるし、拡張文字列操作なら、やっぱり by Ikuboh
さんのstring.defという部品が揃ってますから。僕の今の課題は、どう作るかより、
どう使うかですね。 今日、久しぶりに ^KT でモードCを思うように操って(黒
本見ました、あは)、ああ、元々便利にできてるなぁ、と思った次第。便利なだ
けでなく、楽しくすぎて愛してしまいますよね。ほんと、かわいいエディタだ。

 あ、用件は「小物マクロの住所録」でジャンプしたかったのです。でも^KTで
"小n"(小物とnifty)で足りてしまいました。(^^;


01864/01859 AYY00386  YASAT            Re^3: DANNYさんのmenulib.def
( 1) 06/12/17 12:34 01861へのコメント(文太さん) コメント数:2
vgrep.def 1.19bは1.19aのアーカイブに入ってますよ。

01865/01859 CRG00666  文太             Re^4: DANNYさんのmenulib.def
( 1) 06/12/17 13:47 01864へのコメント(YASATさん) コメント数:1
YASATさん、

> vgrep.def 1.19bは1.19aのアーカイブに入ってますよ。

 お、お詳しい。やっぱVzやりませんか?(しつこいと嫌われるけど)マシン
環境はないですか? (当たり前のことですが)98SEノートとかなら、一昔
前では信じられないようなお金で簡単に手に入りますよ。やろうよ。ウソウソ。
手元にあるだけで、心が豊かになりますよ、ウソウソ。

 しっかしです。 どうやって上のようなことが LINUX で調べられるのだろう?
 追求してませんが。(^^;

 大きな声では言えませんが、つ、ついに住所録に手を出してしまった。いつも
のような勝手モードなので、責任も見栄も何もなく、御気楽戯れモードでちまち
まですが。だってタネがないと blog 作った意味ないもん。それでも、YASAT 改
造はありがたかった。blognext、古いログだと使いまくり!


01866/01859 BQO00549  Konno            Re^5: DANNYさんのmenulib.def
( 1) 06/12/17 19:19 01863へのコメント(文太さん) コメント数:1
>  っていうか、vgrep自体を宣伝してましたよ、どっかで。たぶん。

げげ、全然記憶に無いんですけど。(^^;;;

>  文脈はずれなのですが、どっかDANNYさんと金野さんて重なるんですよね。
> 違う人なんですよねぇ。でも、何かねぇ、昔から。文体とか似てますかねぇ???

私の記憶ではDANNYさんもよく、(^^; こんな顔文字を使っていたと思うので
それで印象が似ているのかも?

> Yメニューのサブルーチン化なら、(その後気づいたのですが)
> recipe.def (by Ikuboh)になるし、拡張文字列操作なら、やっぱり by Ikuboh
> さんのstring.defという部品が揃ってますから。

う〜む、よく分かってないですが、それらの部品を使えば、全てのVzでメニュー
ライブラリ化ができるんでしょうか。だとしたら凄いですね。

>  あ、用件は「小物マクロの住所録」でジャンプしたかったのです。でも^KTで
> "小n"(小物とnifty)で足りてしまいました。(^^;

^KT でタイトルサーチの文字列を指定できるんですか、知らなかった。(^^;
いままで、Cモードは使ったことが無いし、邪魔だなぁと思ってたんですが、
こんな風に使えるんですか、便利ですねぇ。(ぉ


01867/01859 BQO00549  Konno            Re^4: DANNYさんのmenulib.def
( 1) 06/12/17 19:30 01864へのコメント(YASATさん)
> vgrep.def 1.19bは1.19aのアーカイブに入ってますよ。

ありゃあ、このころはmenulib化で錯綜していたんでしょうかね。


01868/01859 CRG00666  文太             Re^6: DANNYさんのmenulib.def
( 1) 06/12/18 00:05 01866へのコメント(Konnoさん) コメント数:1
金野さん

> >  っていうか、vgrep自体を宣伝してましたよ、どっかで。たぶん。
> げげ、全然記憶に無いんですけど。(^^;;;

 勘違いだったみたいです…。 ☆\ (^^;)  過去ログをグレップしても出てき
ませんでした。濡れ衣(?)すいません。

> 私の記憶ではDANNYさんもよく、(^^; こんな顔文字を使っていたと思うので
> それで印象が似ているのかも?

 「かも?」とか「ぉ」とかはあまり言ってなかったですね、たしかに、たぶん。
 (^^; こんな顔をよくされてましたっけ。

> う〜む、よく分かってないですが、それらの部品を使えば、全てのVzでメニュー
> ライブラリ化ができるんでしょうか。だとしたら凄いですね。

 僕【は】間違いなくよく分かってないですが、僕の思考経路が変でした。
 「ライブラリ化」はどうなんでしょう? たぶん、、、、。

1 "*menu.init"
1 "*menu.additem"
1 "*menu.delitem"
1 "*string.cnvcpy"

 これ以外はほとんど全部マシン語ですからねぇ(?_?)
 vgrepも、とてもとても。
 Ikubohさんのは、各々のマクロにいれるサブルーチン集です。

> ^KT でタイトルサーチの文字列を指定できるんですか、知らなかった。(^^;
> いままで、Cモードは使ったことが無いし、邪魔だなぁと思ってたんですが、
> こんな風に使えるんですか、便利ですねぇ。(ぉ

 どこまで真面目に聞いてよいのやら。ま、いいや。
 はい、僕もCを変なもの扱いをしていました。かつて「正規表現が嫌いだった
c.mos さんが考えた…」的暴言を。でも、これはいいですよ。マクロの中で
* M マクロ
* P メニュー
 だけを探すのだけではもったいないですよね。


01871/01859 AYY00386  YASAT            Re^5: DANNYさんのmenulib.def
( 1) 06/12/18 18:55 01865へのコメント(文太さん) コメント数:1
調べるもなにも、vgrepは1.19bを使ってましたから。
486ノートも生きてますし、VZもたまに使います。
Windowsに入れようって気が起きないだけで。すっかりずぼら。

01877/01877 BQO00549  Konno            ブログ風日記開設
( 1) 06/12/19 00:57
ココログが使いづらいので、掲示板をブログ風な日記に仕立ててみた。
管理者以外は新規投稿フォームを無くしてみたが、それらしく見えるかな。

ブログでは記事を非公開に出来るが、メールの非表示項目をそれに当ててみようかな
・・・と思ったけど、修正箇所が多いからこれはパス!!
最初はこのくらいで、じょじょに変えていこうかな。もしも続くようなら。(^^;

タマ猫BBSの5番目にリンクしました。
http://hpcgi3.nifty.com/tamaneko/tamabbs.cgi


01879/01859 CRG00666  文太             YASATさんとW
( 1) 06/12/19 01:10 01871へのコメント(YASATさん)
YASATさん

> 調べるもなにも、vgrepは1.19bを使ってましたから。

 過去形?

> 486ノートも生きてますし、VZもたまに使います。

 現在(進行)形!

> Windowsに入れようって気が起きないだけで。すっかりずぼら。

 未来形!!


01881/01859 BQO00549  Konno            Re^7: DANNYさんのmenulib.def
( 1) 06/12/20 00:47 01868へのコメント(文太さん) コメント数:1
>  勘違いだったみたいです…。 ☆\ (^^;)  過去ログをグレップしても出てき
> ませんでした。濡れ衣(?)すいません。

私の記憶力は全くあてにならないのですが、少し安心しました。(^^;(何?

>  Ikubohさんのは、各々のマクロにいれるサブルーチン集です。

私も確認しました。これも凄い高機能なサブルーチン集ですね。
うまく使えば凄いマクロが出来そうですが、私のスキルでは・・・


01885/01859 CRG00666  文太             Re^8: DANNYさんのmenulib.def
( 1) 06/12/20 23:34 01881へのコメント(Konnoさん) コメント数:1
金野さん

> 私も確認しました。これも凄い高機能なサブルーチン集ですね。
> うまく使えば凄いマクロが出来そうですが、私のスキルでは・・・

 またまた。何か面白いの作って発表してくださいよ。ご存じのとおり、表示系
は駄目なので、なんか実用的というか動いたり開いたり抽出したり飛ぶ準備した
りする何か…。想像力の貧困さだけを見せているなぁ。

 メモリー上で正規表現置換できる&S関数ライブラリー(サブルーチンとか)☆\(^^;) 
 これがどれほど無謀な願望かは分かるようになってしまってる…。☆\(^^;)

 あ、マクロでなくバッファ確保のための常駐アプリですよ。これこれ。おえげ
えしますだ。
 何だか、 ナツメの『システムコール』とか『応用 MS-DOS』とかヤフオクして
る奴。謎。MASMが欲しいのだけど…。今やフリーなんですよね、確か…。な
ぜかTASMはあるのだけど、違いも分からないし…。まだ一行もやってません。


01887/01859 BQO00549  Konno            Re^9: DANNYさんのmenulib.def
( 1) 06/12/21 00:52 01885へのコメント(文太さん) コメント数:1
>  またまた。何か面白いの作って発表してくださいよ。ご存じのとおり、表示系
> は駄目なので、なんか実用的というか動いたり開いたり抽出したり飛ぶ準備した
> りする何か…。想像力の貧困さだけを見せているなぁ。

う〜ん、私は改造専門なので、雛形とかサンプルが無いと、手も足も出ないですね。

>  あ、マクロでなくバッファ確保のための常駐アプリですよ。これこれ。おえげ
> えしますだ。

う〜ん、昔VRAMを書き換える常駐物は作ったことが有りますが、今見ても全然
わからないなぁ。(^^;

>  何だか、 ナツメの『システムコール』とか『応用 MS-DOS』とかヤフオクして
> る奴。謎。MASMが欲しいのだけど…。今やフリーなんですよね、確か…。な
> ぜかTASMはあるのだけど、違いも分からないし…。まだ一行もやってません。

着々と深みにはまっていますね。(^_^)


01888/01859 CRG00666  文太             Re^10: DANNYさんのmenulib.def
( 1) 06/12/22 01:39 01887へのコメント(Konnoさん)
金野さん

> う〜ん、私は改造専門なので、雛形とかサンプルが無いと、手も足も出ないですね。

 た、確かに。そんな感じでしたっけ(^^;

> う〜ん、昔VRAMを書き換える常駐物は作ったことが有りますが、今見ても全然
> わからないなぁ。(^^;

 VRAM の使用は 1.6 から無効になったのではなかったかと???
 それでは、ここで心機一転、習作として、ゼロからバッファ確保とVzとの通
信だけの常駐ものにチャレンジしてみよう!

> 着々と深みにはまっていますね。(^_^)

 た、確かに。(^^;


01893/01893 BQO00549  Konno            DOS窓でカーソルが消える!!
( 1) 06/12/24 01:21 コメント数:2
職場のPCがWin98SEになってから、DOS窓でカーソルが消える症状が結構頻繁に出る
ようになりました。以前FGALDCでも話題になっていたようですが、症状としては
Vzの編集画面かコマンドラインの状態で、暫く放置していると、カーソルが消えて
いるのです。

たぶん行儀の悪いWinの常駐ソフトがカーソルを消してそのままにしてしまうのでは
ないかと思うのですが、困ったものです。

カーソルを復帰させるには、いったんファイラーかメニュー画面を出して、戻れば
復帰しますが、もっと簡単には、インサートキーを2回押せば復帰します。
本当は一回で復帰するんですが、モードを元に戻すためにもう一回押すわけです。

VZ側で対処出来ないかやってみましたが挫折しました。(;_;)
アイドルルーチンから戻る時にカーソルを表示にすれば良さそうですが、
BIOS CALL とかで設定するしかないのかなぁ?

もっと簡単に出来る方法ありませんかねぇ。


01894/01894 BQO00549  Konno            漢字入力中のファンクション表示
( 1) 06/12/24 02:05 コメント数:1
PC98版Vzでは漢字入力中はファンクション表示が出ないのに、DOS/V版ではシフトキー
で出てしまうので、じゃまですよね。かといって、そのために1行よけいに使うのも
ねぇ。
DOS/VでFEPがOFFの時は mg.-9 が9になっています。
ここのビット0 がOFFなら 1、ONなら 0 になるそうです。

そこで、ソースでfpmode(mg.-9)のビット0が0の時はファンクションキーを表示
しないようにしてみました。

でもこれだとFEPをONにしてもすぐには効かず、外部マクロを呼ぶか、一旦ファイラー
かメニューモードにした後で効きます。
FEPをOFFにした時も同様で、すぐにはファンクションキーが表示されません。

FEPのON/OFFをマクロにして、モードを変えてやれば良さそうですが、もっといい
やりかたがないものでしょうかねぇ。


01895/01893 CWF01299  でがらし         カーソル消え対策
( 1) 06/12/24 09:42 01893へのコメント(Konnoさん) コメント数:1
私も昔、カーソル消えに悩まされました。文太さんが

non-curs.def

 というのをご提供です。私がもらったんだったか、手元にありますから、
必要なら差し上げることできますが、ここは文太さん、ご本人にお願いす
るとこでしょうね。

 その前に

Ci4

 を試してみたらどうでしょう? 私はトラブルが起きたときに、下記の
一式をセットすることにしていますが、この中でカーソルに利いているの
はCi4でなかったかな?

*En+,Ci4,Ei-,We80,&d



01896/01893 CRG00666  文太             Re: DOS窓でカーソルが消える!!
( 1) 06/12/24 17:57 01893へのコメント(Konnoさん) コメント数:1
金野さん

 僕も悩まされて長いことになります。ただ皆さんのところで起こっているわけ
でもなく、(個人的な環境ではないと思うけど)諦めてしまいました。
 不思議なことに以下をマクロ化すると効くときと効かないときがあるんですよ
ね(大抵効かない@XP)。[INS][INS] は初耳でした。
 直るといいのですが。

> カーソルを復帰させるには、いったんファイラーかメニュー画面を出して、戻れば
> 復帰しますが、もっと簡単には、インサートキーを2回押せば復帰します。
> 本当は一回で復帰するんですが、モードを元に戻すためにもう一回押すわけです。


01898/01893 BQO00549  Konno            Re: カーソル消え対策
( 1) 06/12/24 23:35 01895へのコメント(でがらしさん)
でがらしさん

>   私も昔、カーソル消えに悩まされました。文太さんが
>  non-curs.def
>  というのをご提供です。

検索したらありました。これはファイルを再オープンするタイプなんですね。

>  その前に
> Ci4
>  を試してみたらどうでしょう?

これだ!! Ci が 4 以上だとカーソルが常に表示と非表示を繰り返すので、
たぶん、外から消されても自動的に再表示すると思います。だから、Ci4以上の
人はカーソル消えの現象に出会ってないのではないかなぁ。
[ins][ins]もカーソルの形状を変更することで表示できるわけです。

ただ、DOS窓ではWindowsの点滅処理とダブってしまうので、Ci4以上ではカーソル
移動が非常に見づらくなるんですよね。
良いヒントをいただいたので、ちょっとソースで試してみます。


01899/01893 BQO00549  Konno            Re^2: DOS窓でカーソルが消える!!
( 1) 06/12/24 23:46 01896へのコメント(文太さん) コメント数:1
文太さん

>  不思議なことに以下をマクロ化すると効くときと効かないときがあるんですよ
> ね(大抵効かない@XP)。[INS][INS] は初耳でした。

えーと、以下って、[INS][INS] かな? でがらしさんのレスで理屈は書いたのですが、
この操作はVZの居ない環境でも効きますので、覚えていて損は無いと思います。
 Ci4 はすっかり失念していました。これから試してみます。


01901/01894 BQO00549  Konno            Re: 漢字入力中のファンクション表示
( 1) 06/12/25 02:02 01894へのコメント(Konnoさん)
ATOKの場合、FEPをONにした時、画面最下行の右端に「漢」という字が出ますね。
これをチェックすれば出来そうな気がします。が、どうやって見ればいいんだろう。
DOS/VのTVRAMの構造とか、VTEXTとかよくわかってないもので。

みなさんこの問題はあまり気にしないんですかねぇ。


01903/01893 CRG00666  文太             Re^3: DOS窓でカーソルが消える!!
( 1) 06/12/25 17:05 01899へのコメント(Konnoさん) コメント数:1
金野さん

> えーと、以下って、[INS][INS] かな? 

 ではなく、ファイラに行って返ってくるほうです。&w()  しても効かないこと
がおおいですねぇ。もっぱら手でやってます。日本語を書いているときはFEP
のせいで気になりませんが。


01904/01904 CRG00666  文太             MASMは? い、いいの、その質問?
( 1) 06/12/26 00:50 コメント数:1
金野さん

 Vzの開発環境はどうなっているかお教えいただけますでしょうか。

 単純にいって、XPで 16 ビットのアセンブラが欲しいのですが、フリーでM
ASMの疑似命令がそのまま通るものってないようなので、あくまで参考までに
教えていただきたいのです。
 先日、旧8用の MASM 5.1 がヤフオクに出てはいたのですが5千円くらいして、
おいおい、そういうお金の使い方は間違いだよ、と思いました。アセンブラでの
機種依存も分かってないし。とはいえ、旧8版の vz.com も作られてますよね???
 symdeb でいいはいいのだし、Emmett さんが言うように、そこから一つ一つ命
令を覚えていきなさい、というのが正しいのは分かってはいるのですが。
 ちょっとだけ、ふらっと。

 あ、フリーなMASMはチェックしましたが、32ビットだったし、外国製は
やっぱり…。sjis 通るの、とか???


01906/01893 BQO00549  Konno            Re^4: DOS窓でカーソルが消える!!
( 1) 06/12/26 01:10 01903へのコメント(文太さん) コメント数:1
>  ではなく、ファイラに行って返ってくるほうです。&w()  しても効かないこと
> がおおいですねぇ。もっぱら手でやってます。日本語を書いているときはFEP
> のせいで気になりませんが。

あれ?マクロにすると効かないんですか? おかしいなぁ。何が違うんだろう?
XPだからですかねぇ。FEPがONの時は症状が出ないんですね。

こちらもCi弄りを試してますが、まだうまくいかないですね。なかなか難しいです。


01907/01904 BQO00549  Konno            Re: MASMは? い、いいの、その質問?
( 1) 06/12/26 01:25 01904へのコメント(文太さん) コメント数:1
>  Vzの開発環境はどうなっているかお教えいただけますでしょうか。

私はMASM5.1でやってます。たしか4万くらいしたような。(^^;;

>  先日、旧8用の MASM 5.1 がヤフオクに出てはいたのですが5千円くらいして、
> おいおい、そういうお金の使い方は間違いだよ、と思いました。アセンブラでの
> 機種依存も分かってないし。とはいえ、旧8版の vz.com も作られてますよね???

MASM自体は機種依存しないと思いますが。私のもマニュアルは日本語でもMASM
は英語版みたいだし。

>  あ、フリーなMASMはチェックしましたが、32ビットだったし、外国製は
> やっぱり…。sjis 通るの、とか???

たぶん16ビットで使えると思うんですが、そのうち試してみます。漢字も単なる
データとして読むので問題ないと思いますよ。
手元にあるのならアセンブルを試してみればいいのでは。(^^;


01908/01904 CRG00666  文太             Re^2: MASMは? い、いいの、その質問?
( 1) 06/12/26 15:10 01907へのコメント(Konnoさん) コメント数:1
http://www.masm32.com/
 うーん。どうも違うみたい…。
 「手元にないです」

http://www.vector.co.jp/vpack/browse/person/an000464.html
 清十郎さん、うーん。

http://www.tamasoft.co.jp/lasm/index.html
 LASM、うーん。

 いえ、怠惰なもので、コマンドラインで間違いなく symdeb に一行一行書くの
がなぁ、とナツメ『システムコール』を眺めていて思っただけなのです。
 環境がらみでころびたくないし…。

 しかし、するとアセンブラ(アセンブルする masm.exe,  link.exe, exe2bin.
exe などのソフトウェアという意味です)では機種依存というのはないのですか。
旧8用 masm.exe とか MS-DOS 汎用 masm.exe というのは存在しないと。
 また、旧8マシンしか環境がなかった頃の MASM5.1  がXPの MS-DOS 窓(エ
ミュレート環境)でも問題なく動いている、ということでしょうか。

 じゃあ、5千円で買ってもよかったのか…。ただ、どうもMASMの出品はと
ても少なくて、5千円の値段が付いていたとき、すでに17人が入札していまし
たので、残り時間は見ませんでしたが、まだ値段が上がりそうだったんですよね。
 今日みても、MASMの出品はないし…。

 c.mosさんて、最後も(?)MASM5.1でVzを作っていたんですよね。

 (どうでもいいことですが)『はじめて読む8086』を眺め終わり、『はじ
めてMASM』(もちろん両者アスキー)を引っぱり出してきているのですが、
アセンブラって、とにかく、まず理屈とPCの原理が頭に入ってないと、何もで
きないのですね。Cの型がどうとかなどなどよりも、さらに前段が長いのですね。

 俺、何をやってるんだろう?


01910/01893 CRG00666  文太             Re^5: DOS窓でカーソルが消える!!
( 1) 06/12/26 15:20 01906へのコメント(Konnoさん) コメント数:1
> FEPがONの時は症状が出ないんですね。

 とは言えないでしょう。カーソルが消えても困らなくなっているので(諦めか
ら適応へ)正確ではありませんが、日本語を書いているときは(校正していると
きでない)、未確定文字の色が違う、続きが空白(まだ書かれてない)という条
件で、そもそも困らないだけです。

 もう少し意識してみるようにしてみます。ただ、ディスプレイ不調で(文太マ
ウス) 、また Sharp ノートに引っ越してきているので、ちょっと勝手が違うの
で、時間がかかりそうですが。

> こちらもCi弄りを試してますが、まだうまくいかないですね。なかなか難しいです。

 頑張られて下さい。m(__)m


01911/01904 CXB00940  としき           Re^3: MASMは? い、いいの、その質問?
( 1) 06/12/26 20:10 01908へのコメント(文太さん) コメント数:2
参照先:http://www.hinocatv.ne.jp/~toshiki/
> http://www.masm32.com/
>  うーん。どうも違うみたい…。
>  「手元にないです」

記憶によると、こいつは、32bitな環境で動作するツールだったような。
でも、昔のMASM5はDOS汎用のソフトです。
すなわち、環境を選ばず実行可能です。
確か、MASM6の途中から32bitソフト化したような。(おぼろげ)
また、32bitなMASMでも16bitなソフトは書けますが、16bitな古いMASMで32bitな
ソフトを書こうとすると、ちょっと面倒になるはず。でも不可能ではありません。

> 旧8用 masm.exe とか MS-DOS 汎用 masm.exe というのは存在しないと。

全てがDOS汎用、というのが答かと。
また、引用順が逆転しますが、

>  しかし、するとアセンブラ(アセンブルする masm.exe,  link.exe, exe2bin.
> exe などのソフトウェアという意味です)では機種依存というのはないのですか。

link.exeとexe2bin.exeについては、互換性のあるDOS汎用のものがいくらでも
入手可能です。例えば、LASMの体験版のパッケージに同梱されているリンカは、
アセンブラ本体と違って機能制限もなく、link.exeとexe2bin.exeの機能を兼ね備
えている上、DOS汎用です。なので、私は、ポケ3ではこのリンカを使ってい
ます。また、LSI C-86試食版に入っているリンカも、私の記憶違いでなければ、
link.exe互換だったはず。これもDOS汎用ですね。exe2bin.exe互換のソフトは、
私はexe2com.exeというのをもっていますが、これはSIMTELから入手したもののよ
うです。いや、覚えていないんですが。
#http://www.hinocatv.ne.jp/~toshiki/computer/dossoft.html参照

>  俺、何をやってるんだろう?

何をやっているんですか?(笑)


01912/01904 BNY00646  shadow           Re^4: MASMは? い、いいの、その質問?
( 1) 06/12/26 21:40 01911へのコメント(としきさん) コメント数:1
FGALDCでえむしさんがVZのアセンブル(MASM V6)に関連してMASMについて書込みされてます。
MASM は V6 からフリーになってしまったようですと。
私はえむしさんの情報を元にDLしました。


01913/01904 CRG00666  文太             Re^4: MASMは? い、いいの、その質問?
( 1) 06/12/26 22:05 01911へのコメント(としきさん) コメント数:1
としきさん

 情報、たくさんありがとう。

引用順が逆転しますが、まず

> >  俺、何をやってるんだろう?
> 何をやっているんですか?(笑)

 質問しないでください。ぜったいに知りませんので。(爆)
 せめて自問自答しているふりぐらいしないと、と良心を発揮しただけなのです。
それで限界です。(汗)

> 記憶によると、こいつは、32bitな環境で動作するツールだったような。
> また、32bitなMASMでも16bitなソフトは書けますが、16bitな古いMASMで32bitな
> ソフトを書こうとすると、ちょっと面倒になるはず。でも不可能ではありません。

 こういうのは避けたいのです。はい、6は32ビットですね。

> でも、昔のMASM5はDOS汎用のソフトです。
> すなわち、環境を選ばず実行可能です。

 OK、了解っす。

> > 旧8用 masm.exe とか MS-DOS 汎用 masm.exe というのは存在しないと。
> 全てがDOS汎用、というのが答かと。

 多謝。m(__)m でも汗が出るなぁ。
 よし、今度ヤフオクで出たら買うかぁ〜。

> link.exeとexe2bin.exeについては、互換性のあるDOS汎用のものがいくらでも
> 入手可能です。例えば、LASMの体験版のパッケージに同梱されているリンカは、
> アセンブラ本体と違って機能制限もなく、link.exeとexe2bin.exeの機能を兼ね備
> えている上、DOS汎用です。

 LASM、押さえました。試食版も押さえました。exe2com.exe、SIMTEL 経由、
押さえました。で?

http://www.lsi-j.co.jp/freesoft/index.html
 Windowsでの使い方の丁寧な説明もありますね。汗、汗。

 追伸:EMSを使う常駐アプリをつくろうよ(目的不明)という話は、かつて
榊原さんとねこさんがしていました。つつましく両者譲り合っておりましたが。
 でも、EMSは敷居が高そうな感触でしたよ、やっぱり。
 僕の目的は、Bvで果たされたはずなんですけどねぇ。まだ汗が止まらない。


01914/01904 CRG00666  文太             Re^5: MASMは? い、いいの、その質問?
( 1) 06/12/26 22:48 01912へのコメント(shadowさん)
shadowさん(良心痛みつつ)

 情報ありがとうございます。

えむし氏, 01/4/15, <nifty:FGALDC/MES/15/18323>

 ですね。 おお、ml.exe が masm.exe の代わりなのか。Vzのアセンブルはと
りあえず僕には必要でないのですが、これは貴重な情報でした。やりたければや
れる。

 ちょっと長い記事なので今回は控えますが、どうしても、というリクエストが
あれば、えむしさんの発言を上げます。>どなたか。

 シャドウさんも、そういうのやるのですか。お見それしました。m(__)m


01915/01915 CRG00666  文太             STDIO.Hはどこかに?
( 1) 06/12/26 23:10 コメント数:1
 すぐさまスレッドを立て直してしまうのですが。m(__)m
 よし、  アセンブル、  と思って、  何か目に見える仕事をしてほしいので、
makedir.com を作ってみようと思いました。でも、題の stdio.h がない、、、。
どっかに落ちてませんでしょうか。ナツメの『システムコール・ハンドブック』
で3ページ。ぜったいタイプミスしそうで…。明日の夜には写し終わっていると
は思いますが。LSI試食版のは、どうもC用みたいで、違うのです。


01916/01904 BQO00549  Konno            Re^5: MASMは? い、いいの、その質問?
( 1) 06/12/27 00:20 01913へのコメント(文太さん) コメント数:1
としきさん、shadowさん、助け舟ありがとうございます。

文太さん

>  こういうのは避けたいのです。はい、6は32ビットですね。

MASM6 は16ビット版の市販品だったかと思います。DANNYさんが使っていたかと。
で、6.1?だかから32ビット版になったのではないかなぁ。

確認はしてないですが、32ビット版はDOS窓でなら使えそうな気がします。
VZなどの大物のアセンブルにはいいかもしれませんね。

> c.mosさんて、最後も(?)MASM5.1でVzを作っていたんですよね。

たしか、OPTASM じゃなかったかと。もちろんMASMとTASMでも確認されていたと
思いますが。

01917/01915 BQO00549  Konno            Re: STDIO.Hはどこかに?
( 1) 06/12/27 00:24 01915へのコメント(文太さん) コメント数:1
> makedir.com を作ってみようと思いました。でも、題の stdio.h がない、、、。
> どっかに落ちてませんでしょうか。ナツメの『システムコール・ハンドブック』
> で3ページ。

stdio.inc だったというおちではないんですよね。STD.INC なら、VZのソースに
ありますが。


01918/01893 BQO00549  Konno            Re^6: DOS窓でカーソルが消える!!
( 1) 06/12/27 00:42 01910へのコメント(文太さん) コメント数:1
>  とは言えないでしょう。カーソルが消えても困らなくなっているので(諦めか
> ら適応へ)正確ではありませんが、日本語を書いているときは(校正していると
> きでない)、未確定文字の色が違う、続きが空白(まだ書かれてない)という条
> 件で、そもそも困らないだけです。

あ、そういうことでしたか、なんとなくそういうニュアンスにも感じたんですが。

>  もう少し意識してみるようにしてみます。ただ、ディスプレイ不調で(文太マ
> ウス) 、また Sharp ノートに引っ越してきているので、ちょっと勝手が違うの
> で、時間がかかりそうですが。

環境(マシン?)によって症状が出ない場合もあるようなので、どうなりますかね。
うちのXPもあまり出ないもので。

>  頑張られて下さい。m(__)m

今日は症状が出なかったのでまだ判らないですね。というか、2度もハングしてるし。
(^^;;


01919/01915 CRG00666  文太             アセンブルしてくれない 求むヘルプ
( 1) 06/12/27 01:09 01917へのコメント(Konnoさん) コメント数:2
金野さん、なんか僕は大きな誤解をしてますか?


 どうすればいいのでしょう? ナツメ『システムコール』pp.20-22, pp.171
を写しただけなのですが。p.170のマクロ定義が気になりはしますが。

 どなたか、お教えください〜。タイプミスではないと思うのです。
 がんばって打ち込んだのに〜。自力でやろうとしたら半年かかりそうなので。
m(__)m


C:\WORK2>ml makedir.asm
 Assembling: makedir.asm
makedir.asm(13) : error A2008: syntax error : ah
 MKDIR(2): Macro Called From
  makedir.asm(13): Main Line Code


C:\WORK2>type makedir.asm
INCLUDE	STDIO.H

MKDIR       MACRO   PATH        ;ディレクトリの作成
            MOV DX,OFFSET PATH
            MOVE    AH,39H
            INT 21H
            ENDM

            pmain
            print   MSG
            input   BUFF        ;ディレクトリ名の入力
            asciiz  BUFF[2],BUFF[1] ;asciiz文字列
            mkdir   BUFF[2]     ; this function
            JC  ERROR
            retms
ERROR:      print   ERRMSG
            retms
MSG         DB  'Directory name ? $'
ERRMSG      DB  'Not make directory$'
BUFF        DB  64,?,64 DUP(?)
            pend

C:\WORK2>type stdio.h
; -----------------------------------------------------------------------
; *  s t d i o . h (スタンダードI/Oヘッダ)
; -----------------------------------------------------------------------
CR          EQU     0DH
LF          EQU     0AH

PSEG        MACRO                   ; プログラム開始
CODE        SEGMENT
            ASSUME  CS:CODE, DS:CODE, SS:CODE
            ENDM

PMAIN       MACRO                   ; プログラム開始2
CODE        SEGMENT
            ASSUME  CS:CODE, DS:CODE
            ORG     100H
START:
            ENDM
PEND        MACRO                   ; プログラムの終わり
CODE        ENDS
            END     START
            ENDM

RETMS       MACRO                   ;MS−DOSに戻る
            MOV     AH,4CH
            INT     21H
            ENDM

GETCHAR     MACRO                   ;1文字入力
            MOV     AH,1
            INT     21H
            ENDM

PUTCHAR     MACRO   ASC             ;1文字出力
            MOV     AH,2
            MOV     DL,ASC
            INT     21H
            ENDM

PRINT       MACRO   MSG             ;文字列の出力
            MOV     AH,9
            MOV     DX,OFFSET MSG
            INT     21H
            ENDM

INPUT       MACRO   CONBUF          ;文字列の入力
            MOV     AH,10
            MOV     DX,OFFSET CONBUF
            INT     21H
            putchar LF
            ENDM

NEWLINE     MACRO                   ;改行
            putchar CR
            putchar LF
            ENDM

HEX_ASC     MACRO   HEX,BUF         ;1バイトを2桁の16進数に
            LOCAL   BR1,BR2
            PUSH    AX
            PUSH    CX
            MOV     AL,HEX
            PUSH    AX
            AND     AL,0F0H
            MOV     CL,4
            SHR     AL,CL
            ADD     AL,'0'
            CMP     AL,'9'+1
            JC      BR1
            ADD     AL,7
BR1:        MOV     BYTE PTR BUF,AL
            POP     AX
            AND     AL,0FH
            ADD     AL,'O'
            CMP     AL,'9'+1
            JC      BR2
            ADD     AL,7
BR2:        MOV     BYTE PTR BUF+1,AL
            POP     CX
            POP     AX
            ENDM

CONV2       MACRO   HEX,BUF         ;2バイトを4桁の16進数文字に
            PUSH    AX
            MOV     AX,HEX
            hex_asc AH,BUF
            hex_asc AH,BUF+2
            POP     AX
            ENDM

HEX_BCD     MACRO   HEX,BUF         ;1バイトを2桁の10進文字に
            PUSH    CX
            MOV     AL,HEX
            XOR     AH,AH
            MOV     CL,10
            DIV     CL
            ADD     AL,'0'
            MOV     BYTE PTR BUF,AL
            ADD     AH,'0'
            MOV     BYTE PTR BUF+1,AH
            POP     CX
            ENDM

ASCIIZ      MACRO   BUF,NUM         ;ASCIIZ文字列の完成
            PUSH    BX
            MOV     BL,NUM
            XOR     BH,BH
            ADD     BX,OFFSET BUF
            MOV     BYTE PTR [BX],0
            POP     BX
            ENDM

C:\WORK2>Command.com /cDir 

 ドライブ C: のボリュームラベルは MEB_V6700T 
 ボリュームシリアル番号は 780F-4236
 ディレクトリは C:\WORK2

.            <DIR>     06-12-27    0:20
..           <DIR>     06-12-27    0:20
MAKEDIR  ASM       381 06-12-27    0:32
ML       ERR      9687 01-07-22    4:31
ML       EXE    372736 99-03-29   16:45
STDIO    H        2264 06-12-27    0:19
        6 個          385068 バイトのファイルがあります.
                   965671424 バイトが使用可能です.


01920/01904 CRG00666  文太             Re^6: MASMは? い、いいの、その質問?
( 1) 06/12/27 01:14 01916へのコメント(Konnoさん)
> としきさん、shadowさん、助け舟ありがとうございます。

 うう、やっぱり単なる人騒がせになってます?(-o-;
 symdebでやろうか、やっぱ。うううう。
 でもmakedir.comが作りたいでしゅ〜。(c)のだめ


01921/01893 CRG00666  文太             Re^7: DOS窓でカーソルが消える!!
( 1) 06/12/27 01:35 01918へのコメント(Konnoさん)
金野さん

> 環境(マシン?)によって症状が出ない場合もあるようなので、どうなりますかね。
> うちのXPもあまり出ないもので。

 うーん、メビウスでもあんまりでません。何なんだろう? MEのときはビシ
バシ出たのですが。

> 今日は症状が出なかったのでまだ判らないですね。というか、2度もハングしてるし。

 あう。それも慣れですかねぇ。マクロでVzハングさせてないですねぇ、随分。
 外では雹でも降ってるのだろうか? う、うるさい。


01922/01922 CRG00666  文太             FDの作者出射さん死去
( 1) 06/12/27 01:47 コメント数:1
 昨年の11月、享年56才だそうです。合掌。み、短すぎる。
 Vzが越えられなかったファイラのFD。使おうかな、と思ってます。
 MIELが便利になったばかりなのに。
 unix-like-toolsの新出とは別人です。

http://ja.wikipedia.org/wiki/FD_(%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E7%AE%A1%E7%90%86%E3%82%BD%E3%83%95%E3%83%88)


01923/01915 CRG00666  文太             Re: アセンブルしてくれない 求むヘルプ
( 1) 06/12/27 02:54 01919へのコメント(文太さん) コメント数:1
何がたりないのしょう。

C:\WORK2>R86.EXE makedir.asm
makedir.asm 4: abort missing segment directive


01924/01915 BQO00549  Konno            文法エラー
( 1) 06/12/27 07:04 01919へのコメント(文太さん) コメント数:1
> makedir.asm(13) : error A2008: syntax error : ah
>  MKDIR(2): Macro Called From
>   makedir.asm(13): Main Line Code

13行目で文法エラーになってますね。
最初、MKDIR と mkdir の違いかと思ったんですが、よく見たら

> MKDIR       MACRO   PATH        ;ディレクトリの作成
>             MOV DX,OFFSET PATH
>             MOVE    AH,39H       ; ★ここは MOV でないの?
>             INT 21H
>             ENDM

★ の部分は合っているんでしょうか。MOVE というマクロは見当たらないようですが。


01925/01915 CXB00940  としき@会社     Re^2: アセンブルしてくれない 求むヘルプ
( 1) 06/12/27 08:57 01923へのコメント(文太さん)
参照先:http://www.hinocatv.ne.jp/~toshiki/
> 何がたりないのしょう。
> C:\WORK2>R86.EXE makedir.asm
> makedir.asm 4: abort missing segment directive

セグメントディレクティブが足りないようです。
とりあえず、4行目。
cs:とかってやつのことだと思いますが。
正確には何のことだかはよくわかりません。
あとは、デフォルト指定とかもあったかと思います。

ところで、R86って文法がMASMとは微妙に違った記憶があるのですが、その辺は
大丈夫ですか?

01926/01915 CRG00666  文太             きゃーーーー、makedir.com!!!
( 1) 06/12/27 17:17 01924へのコメント(Konnoさん) コメント数:3
C:\WORK2>Command.com /cDir 

 ディレクトリは C:\WORK2

.            <DIR>     06-12-27    0:20
..           <DIR>     06-12-27    0:20
EXE2COM  EXE     14699 88-03-08   20:42
LLD      EXE     27417 93-02-08   17:43
MAKEDIR  ASM       380 06-12-27   10:47
MAKEDIR  COM        97 06-12-27   11:20
MAKEDIR  EXE       865 06-12-27   10:51
MAKEDIR  OBJ       189 06-12-27   10:49
ML       ERR      9687 01-07-22    4:31
ML       EXE    372736 99-03-29   16:45
STDIO    H        2267 06-12-27    2:52
       11 個          428337 バイトのファイルがあります.
                   965606400 バイトが使用可能です.

----------
MAKEDIR  ASM       380 06-12-27   10:47		;手で書くべし
STDIO    H        2267 06-12-27    2:52		;写すべし
ML       EXE    372736 99-03-29   16:45		;MASM6
ML       ERR      9687 01-07-22    4:31		;MASM6

MAKEDIR  OBJ       189 06-12-27   10:49		;おお
----------
LLD      EXE     27417 93-02-08   17:43		;試食版
MAKEDIR  OBJ       189 06-12-27   10:49		;「おお」な奴

MAKEDIR  EXE       865 06-12-27   10:51		;うは
----------
EXE2COM  EXE     14699 88-03-08   20:42		;(*)
MAKEDIR  EXE       865 06-12-27   10:51		;「うは」な奴

MAKEDIR  COM        97 06-12-27   11:20		;きゃー
----------

C:\WORK2>makedir
Directory name ? abcde

C:\WORK2>Command.com /cDir 

 ディレクトリは C:\WORK2

ABCDE         <DIR>     06-12-27   11:35
----------

 としきさん、金野さん、たいへんにご迷惑をおかけしてしまいました。お陰様
で、できました! MOVE の E ですね。「13行目」って言ってもらってるのに
気づかないタコですいませんでした。
 試食版でアセンブルできなかった原因については、調べられるだけ調べてみま
す。できるかな?

 ふう。 生まれて初めてのアセンブル。お二人それから多くの先人、shadow さ
んも、皆さんのお陰で、畏れ多くも com ファイルを作れてしまうなんて。(*^。^*)
ひたすらに多謝でありまする。サンクスです。


 上を見ていただければだいたい分かると思いますが、簡単なまとめ。

 アセンブラ ML.exe (in MASM6)
  リンカ   LLD.exe (in 試食版)
  exe2bin   EXE2COM.exe		これは、
         http://hp.vector.co.jp/authors/VA007890/dos/language.html
                    より。
   EXE2COM 1.04 By Chris Dunford/Cove Software というもの。
   (simtel?)からのDLがどうしてもうまくいかなかった。

 さて、リストファイルはどうやったら出てくるのでしょうか? それがないと
マシン語マクロにたどり着けないのですが…。これがそもそもの目的…。どっか
でなんかのオプション付けるだけのはずなのですが…。
 さくっと分かるかたは、どうかお教えください。m(__)m


01927/01915 CXB00940  としき           Re: きゃーーーー、makedir.com!!!
( 1) 06/12/27 19:47 01926へのコメント(文太さん) コメント数:1
参照先:http://www.hinocatv.ne.jp/~toshiki/
>  さて、リストファイルはどうやったら出てくるのでしょうか? それがないと
> マシン語マクロにたどり着けないのですが…。これがそもそもの目的…。どっか
> でなんかのオプション付けるだけのはずなのですが…。
>  さくっと分かるかたは、どうかお教えください。m(__)m

新しいバージョンはどうなっているのかわからないのですが。
古いバージョンの場合、コマンドラインで2番目か3番目に指定したファイルが
リストファイルだったような。ねこさんかだれかのアセンブラ講座にも書いてあ
った気がする。あとは、コマンドラインで全く何もファイルを指定せずにmasmを
起動すると、起動してからソースファイル名やリストファイル名の入力を求めて
きたのではなかったかな。


01928/01915 CRG00666  文太             Re^2: きゃーーーー、makedir.com!!!
( 1) 06/12/27 21:59 01927へのコメント(としきさん) コメント数:2
としきさん

 その後のフォローまで、ひたすらにm(__)mです。

 たぶん以下の「/Flmd.lst」というので出ました。リストの中には、ちょっと、
この  R 何? というのもありましたが、それ以外は概ねそれっぽい16進数の
羅列が出て、君だよ、君だよ、会いたかったのは、と、うふっ、とかしました。
(もちろん、これは本物の実行ファイルなので、そのままVzマクロに入れられ
るわけないのですが)。でも、とりあえず出たようで、ぬほほほほ状態です。

 たぶん「機械語マクロの作り方」は、93年の S.KIN  さんのものがそれでし
ょうね。Emmett  さんの「マシン語勉強会」が98年です。後者を読みすすめて
ますが、セグメントのところで…。抽象的には分かってるような気がしてるのだ
けど、現実的には??? vmap.doc とかまた眺めてみようと思ってます。
 あ、リストファイルの出し方についての記述には、まだ出会ってません。

 飽きたら、また何かアセンブルしてやります、はい! 何しろ元気が出る。
 せっかくstdio.hを打ったのだし。あと5つくらいあるんだよねぇ〜。
 あ、この.hって何の略だかご存じですか?

 さて、常駐アプリまであと何年? まだ言ってる…。
 清十郎さんとこのサンプルはCでしたしねぇ。


C:\WORK2>ml /?

        ML [ /options ] filelist [ /link linkoptions ]

/AT Enable tiny model (.COM file)         /nologo Suppress copyright message
/Bl<linker> Use alternate linker          /Sa Maximize source listing
/c Assemble without linking               /Sc Generate timings in listing
/Cp Preserve case of user identifiers     /Sf Generate first pass listing
/Cu Map all identifiers to upper case     /Sl<width> Set line width
/Cx Preserve case in publics, externs     /Sn Suppress symbol-table listing
/coff generate COFF format object file    /Sp<length> Set page length
/D<name>[=text] Define text macro         /Ss<string> Set subtitle
/EP Output preprocessed listing to stdout /St<string> Set title
/F <hex> Set stack size (bytes)           /Sx List false conditionals
/Fe<file> Name executable                 /Ta<file> Assemble non-.ASM file
/Fl[file] Generate listing ★             /w Same as /W0 /WX
/Fm[file] Generate map                    /WX Treat warnings as errors
/Fo<file> Name object file                /W<number> Set warning level
/FPi Generate 80x87 emulator encoding     /X Ignore INCLUDE environment path
/Fr[file] Generate limited browser info   /Zd Add line number debug info
/FR[file] Generate full browser info      /Zf Make all symbols public
/G<c|d|z> Use Pascal, C, or Stdcall calls /Zi Add symbolic debug info
/H<number> Set max external name length   /Zm Enable MASM 5.10 compatibility
/I<name> Add include path                 /Zp[n] Set structure alignment
/link <linker options and libraries>      /Zs Perform syntax check only
----------
 翻訳なんかできっこありません。ほとんどマシン語です(笑)。
 たとえば"browser info"って、IE、firefox?とかなる(爆)。

 なんか、.doc or .manにご託が多くて。なんであんなにおしゃべりなんだ???


01929/01915 CRG00666  文太             リストファイルの作り方情報追加
( 1) 06/12/27 23:14 01928へのコメント(文太さん)
 ま、細かくこだわるほどのことではないのですが。その後、

 DC(15) 98/05/22 #10274 Emmettさんの「ASM(14) アセンブラを使う」

 で、LASMの例が出ているのを発見しました。ただ、makedir.com でさえ
100行を越えているのですね(実行ファイルだから仕方ないのでしょうが)。
LASM体験版で試したら「体験版では…」とエラーメッセージ。 また、
arrowsmith も紹介されているのですが、MASM3.0 相当だそうで、結局(どんな
ところで転ぶのかまったく分かりませんが)MASM6 の ml.exe が、よいみたい
ですね。オプション表にあったように、5.1 コンパチのオプションもあるよう
でしたから。

 Vzのマシン語ルーチンに関していえば(本筋にまともに沿えば)、LASM
でいいのでしょうけど。でも、.comって、作ってみたいじゃない。?!

 ちゃんと書いてなかったから、ここで。
 「ったく夜遅くまで文太の野郎は」と思いつつ(きっと)、「起きたらすぐやれよ」
的に(ほんと?)、朝早くから即レスくださった金野さんととしきさんに感謝です〜。
のだめるな! 普通に感謝しろ、普通に! 『のだめ』はほとんど見られなかったの
ですが。うふ。


01930/01915 CXB00940  としき           Re^3: きゃーーーー、makedir.com!!!
( 1) 06/12/27 23:51 01928へのコメント(文太さん) コメント数:1
参照先:http://www.hinocatv.ne.jp/~toshiki/
>  たぶん以下の「/Flmd.lst」というので出ました。リストの中には、ちょっと、
> この  R 何? というのもありましたが、それ以外は概ねそれっぽい16進数の

R ってなんだっけ。
リロケータブルを意味していたんだったっけかな。
手元で確認せずに記憶に頼って書いているので、あんまりあてにしないでね。

> ょうね。Emmett  さんの「マシン語勉強会」が98年です。後者を読みすすめて

あ、たぶんこちらだと思う。
こっちに書いてありませんでしたか?
そういえば、これ、手元にあるはずなんだけど見つからない。
どこのディレクトリにしまい込んだんだろう。
ライブラリ登録時のファイル名がおわかりでしたら教えてください。

>  あ、この.hって何の略だかご存じですか?

これは知ってる。ヘッダファイルの略です。
なぜヘッダファイルというのかは知らないけど。

>  清十郎さんとこのサンプルはCでしたしねぇ。

え、え、え?
清十郎先生のところに、Cで書かれた常駐ソフトのサンプルが有りました?
私、そういうのでぜひ勉強したいんですよ。


01931/01915 CRG00666  文太             Re^4: きゃーーーー、makedir.com!!!
( 1) 06/12/28 00:22 01930へのコメント(としきさん) コメント数:1
としきさん

> R ってなんだっけ。
> リロケータブルを意味していたんだったっけかな。

 いちおう、そのように記憶させていただきます。マシン語サブルーチンとして
は明らかに邪魔なものみたいな印象でしたが。直値がリストされてたわけではあ
るまい…。

> ライブラリ登録時のファイル名がおわかりでしたら教えてください。

 これは無理です。確か、1階に纏めたものが

> 70  98/05/29   40573    119      VZ_ASM01.LZH      Emmettのマシン語勉強会(1)
 というように上がっていたはずです。(2)がどこまでかは分かりません。

> 04773/04781 JCF05366  Emmett           ASM(1): マシン語勉強会を再開します
> (15)   97/02/10 23:17
> 
> 10274/10292 JCF05366  Emmett           ASM(14) アセンブラを使う (長文御免)
> (15)   98/05/22 11:42                     コメント数:1

 これぐらいの長丁場。blog使ってね。
 すごいよ、過去ログ。Vzerの資産。+住所録。す、すごい。

> >  あ、この.hって何の略だかご存じですか?
> これは知ってる。ヘッダファイルの略です。
> なぜヘッダファイルというのかは知らないけど。

 ありがとうございました。ナツメ本にもそう書かれていました。.h==ヘッダ
とは書いてくれてなかったけど。

> >  清十郎さんとこのサンプルはCでしたしねぇ。
> 清十郎先生のところに、Cで書かれた常駐ソフトのサンプルが有りました?
> 私、そういうのでぜひ勉強したいんですよ。

 ぜひぜひ勉強してください。m(__)m  残念なことに単に EMS を操作するだけで、
常駐の部分はなかったようですが。

http://www.geocities.co.jp/SiliconValley-Cupertino/9762/DOWNLOAD/index.html

 「常駐デバイスドライバの…」をどっかで見たんだよなぁ。またまた。
 本だけ、やたら持ってたりして…。


01932/01915 CXB00940  としき           Re^5: きゃーーーー、makedir.com!!!
( 1) 06/12/28 01:11 01931へのコメント(文太さん) コメント数:1
参照先:http://www.hinocatv.ne.jp/~toshiki/
> > 70  98/05/29   40573    119      VZ_ASM01.LZH      Emmettのマシン語勉強会(1)

これこれ。
VZ_ASM01.LZHで探したらすぐに見つかりました。
ファイル名はこれであっていたようです。
ただ、これに、masmのリストファイルの話が載っていたと思ったのですが、勘違
いだったようですね。う〜ん、誰か他の人の資料とこんがらがっているみたい。

>  ぜひぜひ勉強してください。m(__)m  残念なことに単に EMS を操作するだけで、
> 常駐の部分はなかったようですが。

あ、やっぱり。じゃ、要らない。

01933/01915 AYY00386  YASAT            Re: きゃーーーー、makedir.com!!!
( 1) 06/12/28 01:13 01926へのコメント(文太さん) コメント数:1
リストファイル出さなくても高橋さんのcom2&i.defで一発ですよ。

01934/01934 CRG00666  文太             アセンブラの勉強法
( 1) 06/12/28 12:06 コメント数:1

 (主に  #1915 を受けて)(その場では、ちゃんとしたレスをしなくてごめん
なさい>金野さん)

 題、なのですが。ゼロからものにしてやろうとは実は思っていません。どこま
で本気なのかもよく分からないし…。ただ仕組みが分かると、過去ログ読んでた
ときの「?」が解消されることがたまにあって、嬉しいだけなのです。ま、文太
の「結局」はおいておいて。

 具体的にどういう風にしましたか? ということなのですが。

 (正確に分かっているとは言えませんが)stdio.h と vz.inc の違いというか
共通の性質については朧気なイメージはあるにはあります。
 きっと、今回の場合、ナツメ『システムコール』本のサンプルを試す人のため
に、共通の基礎部分を stdio.h  などとしてマクロ化しているのだと思っていま
す。  で、(たとえばですが)金野さんの場合、いきなりVzのソースですか?
それとも『システムコール』本以外の、これでこんなものつくって基礎を固めた、
という経験があったら、お聞かせいただきたいと思ったのです。

 Fコール(あくまで部分)、Vzマクロのマシン語サブルーチン(あくまで部
分)でなく、一般的な道筋としては、(僕の場合)アスキーの『はじめて読むM
ASM』 を熟読すればいいし、ナツメ『MS-DOS マクロアセンブラ入門』(1987
年! 藤木文彦著=いい名前ですね)というのも優しくて悪くないようなのです
が。

 それでも有段者のちょっとした経験談を、と思ったわけです。お時間のあると
きで、ちょびっとだけさわりだけでも、で、もちろん構いませんから。

 ま、写すべし、書くべし、バグで悩むべし、なのでしょうけれど。それっぽく
環境はできたわけですから。地道でない奴。(__ ;)


01935/01915 CRG00666  文太             com2&i.def
( 1) 06/12/28 12:22 01933へのコメント(YASATさん) コメント数:1
YASATさん

 ああ、この辺、完全に読み飛ばしてますが、今なら少し日本語みたいに
感じられるのだろうか…。

 ish部屋かと思ったら、こちらでいいのしょうか。お教えください。m(__)m

> 10096/10096 HGD00133  高橋 洋光    RE:あせんぶら
> (15)   98/05/05 22:56  10095へのコメント
;*********************************
;       .com .exe <--> &i()
;*********************************


01936/01915 CRG00666  文太             ああ、残念。
( 1) 06/12/28 12:25 01932へのコメント(としきさん)
> あ、やっぱり。じゃ、要らない。
 題。+残念。


01937/01915 AYY00386  YASAT            Re: com2&i.def
( 1) 06/12/29 01:48 01935へのコメント(文太さん) コメント数:1
そうです。これはishにはなってませんでしたね。
これもEMS勉強のいい題材ですよ(^^)

01938/01915 BQO00549  Konno            MASM6の所在
( 1) 06/12/29 07:32 01926へのコメント(文太さん) コメント数:1
文太さん、まずはうまくいったようで。
怒涛の書き込みに圧倒されてレスが遅れました。(^^;

>  上を見ていただければだいたい分かると思いますが、簡単なまとめ。
>  アセンブラ ML.exe (in MASM6)

これは、MASM32 のサイトから落としたんですよね。
http://www.masm32.com/

現在はV9になっているようですが、一応後に続く人の為に確認で。

#自分の勉強法は参考にはならないかもしれませんが、書き出して見ますね。


01940/01915 CRG00666  文太             Re: MASM6の所在
( 1) 06/12/29 11:13 01938へのコメント(Konnoさん) コメント数:1
金野さん

> これは、MASM32 のサイトから落としたんですよね。
> http://www.masm32.com/

 はい、そうです。最新版だと思います。落として、言われるがままにインスト
ールして、そこから、ml.exe, ml.err を取り出しただけです。その他の膨大な 
.hlp など、一切見ておりません。(^^;

ML.EXE  372,736 1999-03-29  16:45

 こんなの。

> 現在はV9になっているようですが、一応後に続く人の為に確認で。

 このヴァージョン確認はどうやって見れましたか?

http://www5c.biglobe.ne.jp/~ecb/assembler/assembler00.html
はすごくいいですね。ここでも、上のml.exeが推奨されていました。

 勉強法、簡単でいいですから、是非是非。


01941/01915 CRG00666  文太             Re^2: com2&i.def
( 1) 06/12/29 11:25 01937へのコメント(YASATさん) コメント数:1
YASATさん

> そうです。これはishにはなってませんでしたね。
> これもEMS勉強のいい題材ですよ(^^)

 うーん、この手のドックのないマクロ、マシン語方面マクロ、あるいはこの頃
の壮絶なマクロを書いていた高橋さん後期の書き込み、ぜんぶすっとばしてきて
しまって。
 会議室でも会話が成立してなかったように思ってた。YASAT さん、解読までし
てたんだ。うーん。EMS を1ページ、バッファ用に確保するルーチン、書いてく
れない? EMS 活用講座より楽かな、と思って。駄目?
 僕は現実的には、高橋後期の発言を歴史学者のごとく整理するところから入る
のかなぁ…。sabrina 発表、何年何月とか。うーん。何するのかも分からないマ
クロに???
 リスト取りだし、逆汗、ダンプは、ごくごく普通の方法でできるようになりま
した。で、逃げる? Symdeb, Exdeb での逆汗って、常駐Vzだとまだ駄目だっ
たんですね。これは悩みました。


01942/01915 AYY00386  YASAT            Re^3: com2&i.def
( 1) 06/12/29 23:02 01941へのコメント(文太さん) コメント数:1
解読してないですよ。てかできない(^^; 必要なとこだけ読むんです。

EMSの確保は簡単なんですよ。問題はどう使うかで。異セグですし。

sabrinaはドキュメントにあるように&iの中身を逆アセしながらトレースしてくれます。
マシン語マクロ作りがだんぜん楽になります。

VZ常駐で逆アセとはどのようなケースでしょうか?

01943/01915 CRG00666  文太             VzでEMS操作?
( 1) 06/12/30 01:03 01942へのコメント(YASATさん) コメント数:2
YASATさん

> 解読してないですよ。てかできない(^^; 必要なとこだけ読むんです。

 必要なところが判断できず、判断できても読めない…。
 今、mem_dump.def by 龍之介氏 を「必要なとこだけ」(割とピンポイントに
分かっているのだけど) 読もうとして、あかん、となってしまった。多いなぁ。
まさしく異セグがらみ。mem_dumpは MS-DOS のメモリー全領域(EMS は別でしょ
うね)をダンプできるのです。直値でセグメントアドレスを与えられる。なので…。
(これ、使ってないんですよ。dump.comで足りるのだから)
 うーん、もうちょっともがいたら、泣きつきますね。dz[=??????
 EMSより、直値で指定できる1KBのほうが楽なはずなので…。
 この転送だけにマシン語を使う価値があるはずで…。
 はずで…、ばっかり。

> EMSの確保は簡単なんですよ。問題はどう使うかで。異セグですし。

 この辺は、もう魔界ですよん。だから訊いたじゃなーい。壊されずに、確保し
てデータにアクセスできますかって。
 異セグっていっても、ころころ動いてそうだから、それまで操作するとなると
…。よく分かってないのですが。

> sabrinaはドキュメントにあるように&iの中身を逆アセしながらトレースしてくれます。

 これはドックがあるんだ。でも、だめだめ〜。
 ねこさんの「EMS講座」が93年12月にあるみたいですね。さっき発見したけど、
また、メモリーダンプの話。まだ見れてません。

> マシン語マクロ作りがだんぜん楽になります。

 うーん。何と言えばいいか。

> VZ常駐で逆アセとはどのようなケースでしょうか?

 常駐で、
>Symdeb < xxx.txt > yyy.txt
 とするようなマクロが駄目。マクロでなく、Symdebが動かない。

>type xxx.txt
e 100 16進マシン語コード
u
q

 みたいなの。けっこう話題になってました。えむしさんとJUNさんがやりと
りしてて。SW  オプションがらみもあって、たぶん、XP環境では回避策がない
はず。SW4 で回避できるのかな(XPでなければ、これでOKだと思う)。FV
Cですでに話題になっていたと思う。「そんなの全部チェックしたはずなんだけ
どなぁ」(c) c.mos。
 もっとポインタを、ということなら調べますよ。
 僕は常駐はずして、バッチにしてしのぐことに。そう使うわけでもないし。

 まだハングさせてないけど、すぐ来るんだろうなぁ…。この点、Windowsという
よりXPは楽。来るなら、来い。


01944/01915 AYY00386  YASAT            Re: VzでEMS操作?
( 1) 06/12/30 21:48 01943へのコメント(文太さん) コメント数:1
うーん。マクロ忘れちゃってるからなあ。
&Ea(1) &Em(r)でEMS1ページ確保、マッピングしてrにセグメントが入ってくるのであとはごにょごにょ。
他でEMS使われるかもしれないからアクセス前にはかならず&Emでマッピング。そんな感じ。

やはり、ねこさんの講座がわかりやすいですよ。

>  常駐で、
> >Symdeb < xxx.txt > yyy.txt
>  とするようなマクロが駄目。マクロでなく、Symdebが動かない。

なるほど。そういう使いかたはしていませんでしたので。
手作業でコマンドラインに降りてならできますよね?

01945/01934 CXB00940  としき           Re: アセンブラの勉強法
( 1) 06/12/30 22:56 01934へのコメント(文太さん) コメント数:1
参照先:http://www.hinocatv.ne.jp/~toshiki/
段位は持っていないのですが、こういうのはなるべく多くの人の話があった方が
良いと思うので書かせていただきます。

>  具体的にどういう風にしましたか? ということなのですが。

まず、一般論というか精神論というか。
目的があると習得が早い、というのはよく言われる話しだと思います。
この辺は、文太さんが専門かな。
なので、なにか作りたいプログラムがあれば、それだけで随分違うでしょう。


で、もっと個別具体論というか、私がどういう事をしてきたかというと。
私がアセンブラを勉強したのは8ビットCPUの時代です。
BASICからの移行でした。
もっと言うと、BASICのソフトの移植が目的でした。
人間BASICコンパイラ、てなものですね。
なので、ロジックは完成されているので、あとはひたすら置き換え。
1対1ではなく1対多ですが、置き換え可能ですよね。

例えば、

  IF A=B THEN C=0 ELSE C=1

というプログラムがあったとします。
これをザイログニーモニックのアセンブラにすると、こんな感じかな。

  LD A,[A]
  LD B,[B]
  CMP B
  JNZ L1
  LD [C],0
  JMP L2
L1:
  LD [C],1
L2:

もう忘れているから、特にCMP命令のところが妖しいかな。
あとは、どんなレジスタがあるか、代入命令にはどこからどこへ動かせるのがあ
るか、逆にどんな代入が直接はできないか、演算命令や比較命令にはどんなもの
があるのか、それはどのレジスタが対象で、副作用というかフラグは何が変化す
るのか、というのを把握しておく必要があります。全部覚えれば一番いいのでし
ょうが、さすがにそれは無理。私の場合は、雑誌の付録だったかな、A3版1枚
の表裏にびっしりと書かれた一覧表を辞書代わりに使って、ひたすら大学ノート
にコーディングしていました。当時は携帯端末なんてなかったから、乗り物の中
とか授業中(ぉぃ)にコーディングするにはそれしかなかったのです。

そういう経験から言って、「はじめて」シリーズ、教科書としてはいいのですが、
その他に辞書として使えるものがあるのがいいと思います。もちろん、あれらの
本をそのまま使ってもいいでしょうが、でも、教科書と辞書は違いますよね。
ただ、当時のCPUは1枚の紙に全ての命令が掲載できましたが、現在のCPU
では無理でしょうし、それに使わない命令の方が圧倒的に多いので無駄でもあり
ます。となると、「はじめて」シリーズに掲載のニーモニックを抜き出して、自
分で辞書を作るのがいいかな。
ただ、私の場合だけかもしれませんが、この手の資料の場合、一覧性が高い方が
いいです。仮に大学ノートに作るとしても、せいぜい紙3枚6ページまで、可能
であれば、やはり大きい紙1枚にできるだけ情報を詰め込む、入りきらなければ
字を小さくする、というのが使う時には便利でしたね。

と、まぁ、こんな感じですがいかがでしょうか。


>  ま、写すべし、書くべし、バグで悩むべし、なのでしょうけれど。それっぽく
> 環境はできたわけですから。地道でない奴。(__ ;)

書いて悩むのが結局は早道でかつ王道なのかもしれませんが。
私の場合、アセンブラ以外の言語では、読んで覚えるというのも結構ありました。
それも、いろんな人の書いたものをなるべくたくさん読む。すると、一つのこと
を実現するにもいろいろな方法がある、というのがおのずとわかってくるわけで
す。いわゆる、ボキャブラリーが増える、というのに似た効果が期待できます。
昔、BASICが全盛の頃は雑誌にプログラムリストがたくさん掲載されていて、
それはそれはたいそう勉強になりました。


01946/01915 BQO00549  Konno            Re^2: MASM6の所在
( 1) 06/12/31 01:24 01940へのコメント(文太さん) コメント数:1
>  はい、そうです。最新版だと思います。落として、言われるがままにインスト
> ールして、そこから、ml.exe, ml.err を取り出しただけです。その他の膨大な 
> .hlp など、一切見ておりません。(^^;

なるほど、2つだけでいいと。φ(..; バキッ\(--;

> > 現在はV9になっているようですが、一応後に続く人の為に確認で。
>  このヴァージョン確認はどうやって見れましたか?

ああ、いやぁ、ミラーサイトのタイトルに書いてあるし、ダウンしたファイル名にも
m32v9r.zip とあるので。

それで思い出したんですが、私はm32v82r.zipも持っていたんですね。全然使って
なかったわけです。(^^;
でも、ML.EXE はどちらも同じみたいですね。ML で実行すると、 Version 6.14.8444
と出ますね。コンソールには出ないけど。

> http://www5c.biglobe.ne.jp/~ecb/assembler/assembler00.html
> はすごくいいですね。ここでも、上のml.exeが推奨されていました。

これはいいですね。わかりやすいし、ソースを簡単に切り貼りできるので色々試せます。
私も勉強しなくては。ここの練習問題は私にはちょっと難しいし。(^^;

>  勉強法、簡単でいいですから、是非是非。

う〜ん、考えてみると私はろくに基礎を勉強してなかったんですよね。
まず目的があって、そのために必要なところだけ調べるというのが私のやり方なので
未だに基礎がちゃんと出来てないんですね。


01947/01915 CRG00666  文太             Re^2: VzでEMS操作?
( 1) 06/12/31 01:52 01944へのコメント(YASATさん) コメント数:1
YASATさん

> やはり、ねこさんの講座がわかりやすいですよ。

 そのように見えるだけは見えます。ただ保存バッファではなさそうですよね。
すぐアイディアは出た。でも、そのような使い方が発展しなかったということ、
高橋さんしか使わなかったということ、これらからぐらいからしか読めないので
すよ、僕には。

> 手作業でコマンドラインに降りてならできますよね?

 うーん。手で16進コードを打ち込むということですか?
 まだ3回しか逆アセなんてしたことないんですよ。それもやり方を確かめるた
め。必要がないなら常駐外したりしたくないのですが、でも…。

 「テキスト処理作家はどこへ行った」的な気持ちも大きくなってますね、だん
だん。アセンブラはアセンブラ=遊び。実用は実用。Vzは遊びの道具ではある
けど、主に実用。キーボード・マクロですよ。なんだ、急に?


01948/01934 CRG00666  文太             Re^2: アセンブラの勉強法
( 1) 06/12/31 02:18 01945へのコメント(としきさん)
としきさん

 長文をありがとうございました。なんかとしきさんの人生が感じられて胸が熱
くなりました。そう、c.mos さんも言ってたけど、「ただ楽しく無心にやる」の
がいいですよね。BASICからアセンブラに翻訳してたとき、きっとそうだっ
たのではないのかな、と思って。そういうのを経験しなかったからなぁ。MS-DOS
3+松→Vz@XP (EOF) では。 僕にとっては、アルファベットの羅列に人の
心があって、こっちの心まで動かそうとしている仕組みがあることを知ったとき
かなぁ。

 辞書を用意する、辞書を作る、というところにはとても共感しました。そう、
何だかわけのわからないものいじり始めてる自分に、これ、とりあえず片っ端か
ら覚えようとしてみたらいいんじゃないか、そんな暗記用マクロでも、まず作っ
たら、と思っていました。例によって仕様も思いついていないのですが。ax, bx,
cx,  dx, ex って意味がある略号なんだぜ、と知ったとき、とりわけそう思いま
した。たかだか3週間前のことですが。

 で、 その後、Emmett さんの「マシン語勉強会」を読み直していて持った感想
は、唯一記憶に残っている感想は、「とにかく窮屈だ」です。窮屈のなかでやり
くりするには、とにかく「関係」を暗記しなければいけない。略号が英語的意味
をもっていても、その先は暗記しかない。だけど、とにかく記憶力が死ぬほど減
退している。 でも、いつもいつも ygear でグレップして blog で飛んでことが
解決するほど甘くはない。やはり、自分の頭だ。よし、記憶力を復活させてやろ
う、なんて思っていました。

 もっともこれは人生における重大問題で、その問題の解決をアセンブラの単語
と熟語と構文にあてていいものだろうか、とは先ほど思っていました。バグをか
かえたままとはいえ、vz.com  は完成しているわけだし。年末なので、色々、色
々、反省することがあるものですからね。

 とにかく、示唆に富む発言でした。ナツメ『システムコール』本を枕にふとん
にはいってみます(冒頭に MS-DOS の仕組みが書いてある)。明日は(今日は)、
ひたすらに肉体労働の大掃除なのです。


 どうか皆様にとって 2007 年がよい年となりますように!


01949/01915 CRG00666  文太             Re^3: MASM6の所在
( 1) 06/12/31 12:18 01946へのコメント(Konnoさん)
 あ、ほんとだ。リストファイルにありました。
Microsoft (R) Macro Assembler Version 6.14.8444

 やっぱ目的ですよね。でもそれが見つからない場合には、最初は書いて動くの
がただ楽しい。ディレクトリを作ってくれるだけでも、というのでもいいですよ
ね。

 大掃除の合間をぬって。


01950/01915 CXB00940  としき           Re: VzでEMS操作?
( 1) 06/12/31 19:55 01943へのコメント(文太さん) コメント数:1
参照先:http://www.hinocatv.ne.jp/~toshiki/
>  ねこさんの「EMS講座」が93年12月にあるみたいですね。さっき発見したけど、

この講座というか資料、いいですね。わかりやすくて。


01951/01915 CRG00666  文太             EMS!
( 1) 06/12/31 23:45 01950へのコメント(としきさん)
EMS!

 安全の確認には、高橋さんのemap.defを(書き込むので改造推奨)。
 皆様、よいお年を。


=== EMSsave.def ===;really alot from Neko 93/12/12, <nifty:FGALPK/MES/13/1163>
#if0
 高橋版以降を使用のこと(書式制御に変数を使用)。
 実用するには2文字変数なんかではなく、動かないバッファでハンドルや
セグメントアドレスの情報を確保のこと。
(pq..145とか。使いであるなぁ、あそこ。いたちごっこだもん。動かない
バッファについての情報を確保するための動かないバッファとか)
#endif

* Macro
50 ^^ "EMS_save"
        ?.

        a="abcdefghijkelmnopqrstuvwxyz0123456789",		;<a>
        &Sn(a) l=r,						;<l>

        &Ea(1)  aa=r,		;EMSアロケーション EMS handle 	<aa>
        &Em(aa) bb=r,		;EMSマッピング     segment	<bb>
        &00
        &m("strings <aa> written on EMS; handle %d",aa) .

0:	;saving routine
        i-,p-,
 :a      (i<l)? {x=a.i, dz=bb, p.i=x, dz=gz, i++, >a }		;<x,q,>


51 ^\ "EMS_read"
	?.
	(ks&1)? >a		;Close EMS page by shift

        &Em(aa)			;EMSマッピング
        &00
        &m("%*s, read from EMS",l,pr) .

 :a 	;--- Del EMS buffer ---
        &Ef(aa)			;EMS開放
        &m("EMS buffer closed. Handle %d",aa)

00:     ;reading routine
        i-,p-,
 :b	(i<l)? {dz=bb, x=p.i, dz=gz, pr.i=x, i++, >b }

*


01952/01952 BQO00549  Konno            2007’ 今年もよろしく
( 1) 07/01/01 00:54 コメント数:4
みなさま、あけましておめでとうございます。

> VZk01   03/07/12  XP対応テスト1

FGALDCで VZk の最初のバージョンを発表してROMを脱してから3年半、

> 2004-7-14にリニューアル公開し(この時点で53)、

Vz関係のサイトとしてここを公開してから2年半がたちました。
長いようで意外と短いものですね。その間、色々有りましたが、
皆様に支えられてここまできました。

今年もいろいろあるかと思いますが、よろしくお願い致します。m(__)m


01953/01952 BNY00646  shadow           Re: 2007’ 今年もよろしく
( 1) 07/01/01 19:02 01952へのコメント(Konnoさん) コメント数:1
Konno さん、そして皆さん、明けましておめでとうございます。
最近までHP200LXを使ってたのですが最近小さい字が見えにくいのでバックライト
&カラーの方が見やすいかと思ってSIG3を引っ張り出しました。
vzk08Q3なんですが確かNP2で起動できてたと思うのですが現在起動できないです。
またまた私の環境の問題と思います。
まだまだVz&NP2を使いますのでよろしくお願いいたします。



01955/01915 AYY00386  YASAT            Re^3: VzでEMS操作?
( 1) 07/01/02 00:21 01947へのコメント(文太さん) コメント数:1
>  うーん。手で16進コードを打ち込むということですか?

そうです。マクロじゃなければリダイレクトする方法も通ると思うのですが。

01956/01915 CRG00666  文太             Re^4: VzでEMS操作?
( 1) 07/01/02 00:44 01955へのコメント(YASATさん) コメント数:1
--- test.txt ---
e 100 8E,C0,8E,DB,A4,E2,FD,C3
u
q
----------------

C:\>Symdeb <test.txt
Microsoft Symbolic Debug Utility
Version 3.01
(C)Copyright Microsoft Corp 1984, 1985
Processor is [80286]
-exit 100 8E,C0,8E,DB,A4,E2,FD,C3
  ^ Error

sw3ですが、常駐だと上のようになってしまうのです。
手で打つなら、常駐外すほうが早いと思いますが?


非常駐で、
>Symdeb <test.txt >test2.txt(以下はこの中身)
Microsoft Symbolic Debug Utility
Version 3.01
(C)Copyright Microsoft Corp 1984, 1985
Processor is [80286]
-e 100 8E,C0,8E,DB,A4,E2,FD,C3
-u
2174:0100 8EC0           MOV	ES,AX 
2174:0102 8EDB           MOV	DS,BX 
2174:0104 A4             MOVSB	 
2174:0105 E2FD           LOOP	0104 
2174:0107 C3             RET	 
略

これが正しいのです。


01957/01915 BQO00549  Konno            sw4でsymdebは?
( 1) 07/01/02 01:51 01956へのコメント(文太さん) コメント数:1
文太さん、新年から飛ばしてますね。
今年もよろしくお願いします。

> sw3ですが、常駐だと上のようになってしまうのです。
> 手で打つなら、常駐外すほうが早いと思いますが?

sw4 で常駐しても駄目なんでしょうか。sw3の常駐で駄目なのは仕様なので。
私はSYMDEB を持ってないので試せないんですよね。でもXPにはDEBUG.EXEが
入ってましたね。

もしかして、e.bat かエイリアスで e で exit とか無いですか?
私は誤操作防止の為 ee.bat でEXIT してますが。


01958/01952 BQO00549  Konno            Re^2: 2007’ 今年もよろしく
( 1) 07/01/02 01:59 01953へのコメント(shadowさん) コメント数:1
shadow さん、今年もよろしくお願いします。

> &カラーの方が見やすいかと思ってSIG3を引っ張り出しました。
> vzk08Q3なんですが確かNP2で起動できてたと思うのですが現在起動できないです。

そういえば私のも古いままだったかもしれません。確認してみます。

> まだまだVz&NP2を使いますのでよろしくお願いいたします。

98エミュではshadowさんにまだまだ頼るかと思いますので、こちらこそ宜しく
お願いします。


01960/01915 CRG00666  文太             Re: sw4でsymdebは?
( 1) 07/01/02 14:22 01957へのコメント(Konnoさん) コメント数:1
金野さん

 開けまして…。(たしか言ってはいけないことになっているようで…。)
 とにかく今年も宜しくお願いいたします。

> sw4 で常駐しても駄目なんでしょうか。sw3の常駐で駄目なのは仕様なので。
> 私はSYMDEB を持ってないので試せないんですよね。でもXPにはDEBUG.EXEが
> 入ってましたね。

 symdeb と debug の違いも把握してませんで…。
 sw4 を僕が止めたのは、以下のような経緯だったようなのですが、しばらく4
設定でやってみます。メモリの分断はまだ確認されてませんが、まだ使用時間が
短すぎますので…。

> もしかして、e.bat かエイリアスで e で exit とか無いですか?
> 私は誤操作防止の為 ee.bat でEXIT してますが。

 ビンゴー!!! m(__)m エイリアス、eeに変更させてもらいました。m(__)m

 ですが、常駐でマクロは、やはり駄目なようです。常駐から手でコマンドライ
ンに降りてバッチは問題ないようですが。常駐を外す手間が一つ省けました。こ
こまでが限界でしょうか。


> 09670/09921 KFR04247  XXXX  XXXX    XPやNTで SW3とSW4の違い
> (13)   03/08/17 23:26  09666へのコメント
> 
> > うーん、メモリのこともまた、ちっとも分かってない奴なんですが、金野さん
> >のところとはだいぶ違う感じみたいです。分断はあんまりされてないみたいだけ
> >ど、あれ、「command.com がいっぱい」(出典はなんだっけ、これ?)みたいに
> 
> これは理由がわかりました。私は SW4 で常駐してたんですが、SW3 にしたら
> 分断はなくなりました。ただ、VZ16.DOC には
> > スワップモード「SW4」
> >-----------------------------
> > 従来、「SW3」で常駐した時、SYMDEB.EXEを起動すると、SYMDEBの管理メモリの
> >先頭部に、VZ.COMをロードしてしまいました。
> >オプション「SW4」を指定すると、アプリケーション上のコマンドラインのフックを
> >抑止しますので、この不具合を解消できます。
> とあるのでいままで SW4 だったのですが、しばらく SW3 でやってみます。


01961/01915 BQO00549  Konno            Re^2: sw4でsymdebは?
( 1) 07/01/02 21:51 01960へのコメント(文太さん) コメント数:1
>  開けまして…。(たしか言ってはいけないことになっているようで…。)
>  とにかく今年も宜しくお願いいたします。

??? もしかして「携帯でのあけおめ・メールは控えましょう」という話ですか。
それは携帯故の制限だと思いましたが。PCでのメールや書き込みが殺到したとしても
インターネット全体が落ちることは無いでしょう。なにせ今は動画コンテンツで常に
大量のデータが流れていますから。2chあたりはともかく、うちなどはまったく影響
無いと思います。 ・・・というのは置いといて、

>  symdeb と debug の違いも把握してませんで…。

ほとんど違わないような気もしますが、何せ持ってないもので。

>  sw4 を僕が止めたのは、以下のような経緯だったようなのですが、しばらく4
> 設定でやってみます。メモリの分断はまだ確認されてませんが、まだ使用時間が
> 短すぎますので…。

 VMAP で残りメモリが違うと思いますが、私も今は全然sw4で起動しないもので。

>  ビンゴー!!! m(__)m エイリアス、eeに変更させてもらいました。m(__)m

あ、やっぱり。(^^; e などの一文字だと、コマンドラインをフックするアプリの
オプションで誤動作してしまうと思いました。DICDOS とか、ソート系も?
もしかしたら勘違いかもしれませんが。

>  ですが、常駐でマクロは、やはり駄目なようです。常駐から手でコマンドライ
> ンに降りてバッチは問題ないようですが。常駐を外す手間が一つ省けました。こ
> こまでが限界でしょうか。

常駐Vzからバッチで動作するなら、マクロでも出来そうな気がしますが。マクロが
非常駐用になっているという事は無いですかねぇ。
この常駐はsw4なのでしょうか。



01962/01915 CRG00666  文太             Re^3: sw4でsymdebは?
( 1) 07/01/02 22:33 01961へのコメント(Konnoさん) コメント数:1
金野さん

> >  開けまして…。(たしか言ってはいけないことになっているようで…。)
> ??? もしかして「携帯でのあけおめ・メールは控えましょう」という話ですか。

 すいません、話をつまらなく難しくしてしまって。喪中(開け)なのです。

>  VMAP で残りメモリが違うと思いますが、私も今は全然sw4で起動しないもので。

 ちょっと観察してみます。sw4の文太です。

> あ、やっぱり。(^^; e などの一文字だと、コマンドラインをフックするアプリの
> オプションで誤動作してしまうと思いました。DICDOS とか、ソート系も?
> もしかしたら勘違いかもしれませんが。

 完璧でした。マクロからSymdebに渡したつもりのコマンドがエイリアス展開
されておりました。気づかないのもタコだなぁ…。m(__)m

> 常駐Vzからバッチで動作するなら、マクロでも出来そうな気がしますが。マクロが
> 非常駐用になっているという事は無いですかねぇ。
> この常駐はsw4なのでしょうか。

 はい、たぶん非常駐用なのか??? オリジナル:JUNさんのマクロなので
すが、Symdeb への入力と出力が同じファイルになっていて、そこを変更し、sw4
にしたらきちんと動作するようになりました。m(__)m

 はい、sw4 の文太とお呼びください。symdeb  ですよ。アセンブルですよ。文
太さん、こわい。

 さぁ、memory.hも写したぞい!(謎)


01963/01952 CWF01299  でがらし         今年もよろしくです
( 1) 07/01/02 23:17 01952へのコメント(Konnoさん) コメント数:1
 おめでとうございます。
 こういうサイトを維持してもらえるのはとってもうれしいです。
あんまりお役に立つことがないですけど、下手ながらも同好の士
ということで、今年もよろしくです。

01964/01964 CRG00666  文太             ABh?
( 1) 07/01/03 01:56 コメント数:1

 そんなもの眺めるようになったら廃人だよ、と思いつつ DOS.ASM  の以下が目
に入ってしまい(1) 、MASM にヒストリみたいなファイルはないのか(2)、
と思ったら訊いてみたくなりました。

 ABh で表される半角オって、元はなんだと思われますか?
 置換するなら、「-」でよいでしょうか。でも ASCII が母語のアメリカ人がな
んでまた、こんな外字(?)みたいなの使ったんでしょうねぇ、と思いました。

 ご意見を伺えれば幸いです。

 ぶー、MEMORY.Hが進まないじゃない。(>_<)


--- DOS.ASM in Vz source ---
int21in	endp				; MASM6
----------------------------

--- C:\MASM32\TUTORIAL\CONSOLE\DEMO1\HELLO.ASM ---
; ォォォォォォォォォォォォォォォォォォォォォォォォォォォォォォォォ

;                 Build this with the "Project" menu using
;                       "Console Assemble and Link"

; ォォォォォォォォォォォォォォォォォォォォォォォォォォォォォォォォ
--------------------------------------------------


01965/01915 BQO00549  Konno            Re^4: sw4でsymdebは?
( 1) 07/01/03 02:59 01962へのコメント(文太さん) コメント数:1
>  すいません、話をつまらなく難しくしてしまって。喪中(開け)なのです。

文太さん、気が付かずにすみませんでした。そういえば以前それらしきお話を
見かけたような。ご冥福をお祈りします。

>  はい、たぶん非常駐用なのか??? オリジナル:JUNさんのマクロなので
> すが、Symdeb への入力と出力が同じファイルになっていて、そこを変更し、sw4
> にしたらきちんと動作するようになりました。m(__)m

ではsw4でもマクロの入出力ファイルを変えれば問題ないわけですね。よかった。
お手間を取らせてしまって申し訳ないです。


01966/01952 BQO00549  Konno            Re: 今年もよろしくです
( 1) 07/01/03 03:17 01963へのコメント(でがらしさん)
でがらしさん、今年もよろしくお願いします。
日が変ってもう3日なんですね。時間がたつのが早く感じるこのごろです。

>  こういうサイトを維持してもらえるのはとってもうれしいです。

そういってもらえるのが何より嬉しいですね。

> あんまりお役に立つことがないですけど、下手ながらも同好の士
> ということで、今年もよろしくです。

でがらしさんの最近の進歩には驚かされます。私もマクロはまだまだなので、
追い越されないように頑張らなくては。(^^;


01967/01964 BQO00549  Konno            Re: ABh?
( 1) 07/01/03 03:46 01964へのコメント(文太さん) コメント数:1
廃人の文太さん (^^;

> --- DOS.ASM in Vz source ---
> int21in endp ; MASM6

これはわからないですねぇ、もしかしてMASM5.1では要らないとかかなぁ?

> ; ォォォォォォォォォォォォォォォォォォォォォォォォォォォォォォォォ

これは半角に直して、USモードにして見てみたら、1/2 という半角文字に見えますね。
実際にはSJISで半角かなの領域は罫線文字などがあるはずだと思います。

MASM6 ではエラーメッセージがコンソールに出ないのでつらいですよね。
表示するオプションはわからなかったですが、
ML DOS.ASM >file
とすれば、file というファイルにエラーメッセージが出るので、工夫するしか
無いですかね。


01968/01952 BNY00646  shadow           Re^3: 2007’ 今年もよろしく
( 1) 07/01/03 08:29 01958へのコメント(Konnoさん) コメント数:1
今日久しぶりに本家NP2を覗いてみました。
なんとクリスマスプレゼント(ver0.82)がありました、全く気づかずにいました。
本家の掲示板が荒れて放置されていたので開発は終わってしまったと思っていました。
残念ながらWindowsCE版はver0.81aで変更はないですが。
先ずはお知らせまで。

01969/01952 BQO00549  Konno            NP2本家も掲示板も復活(^_^)
( 1) 07/01/03 12:53 01968へのコメント(shadowさん)
> 今日久しぶりに本家NP2を覗いてみました。
> なんとクリスマスプレゼント(ver0.82)がありました、全く気づかずにいました。

おお、ほんとだ!! 全く気づきませんでした。更新があったのはうれしいです。

> 本家の掲示板が荒れて放置されていたので開発は終わってしまったと思っていました。

掲示板も復活しましたね。というか、新しい掲示板に切り替えたんですね。
ttp://www.yui.ne.jp/bbs/np2x.bbs
URLを一字違いにして、旧掲示板もまだ残ってますね。
直リンクを貼ると又荒らされるかもしれないので h を取りました。

> 残念ながらWindowsCE版はver0.81aで変更はないですが。

今回は仕方ないですが、この際要望も出してみようかなぁ。CE版のNP21とか、
拡大縮小とか。


01970/01964 CRG00666  文太             Re^2: ABh?
( 1) 07/01/03 13:10 01967へのコメント(Konnoさん)
> > --- DOS.ASM in Vz source ---
> > int21in endp ; MASM6
> これはわからないですねぇ、もしかしてMASM5.1では要らないとかかなぁ?

 いえいえ、僕はこれの意味を分かろうとはしていませんでした。あ、Vz1.6 の
発売時点で、MASM6 というものがすでに存在したんだ。MASM  の歴史ってどうな
ってるんだ? と思っただけです。 それで、MASM32 ディレクトリをひっくり返
していたら、よく見る「ォ」に出会って…。分からないことだらけですから…。
すいません。

> ; ォォォォォォォォォォォォォォォォォォォォォォォォォォォォォォォォ

> これは半角に直して、USモードにして見てみたら、1/2 という半角文字に見えますね。
> 実際にはSJISで半角かなの領域は罫線文字などがあるはずだと思います。

 ああ、そんな調べかたがありましたか。罫線文字。なるほどねぇ。半角のこの
ォ、舶来ものでよく見たものですから。わざわざ調べていただいて、ありがとう
ございました。見づらいので、「-」に置換してやりますね。

> MASM6 ではエラーメッセージがコンソールに出ないのでつらいですよね。
> 表示するオプションはわからなかったですが、
> ML DOS.ASM >file

 なるほど! でも、そこまでまだやってなかったのです…。


 で、MASMの歴史ですが、分かりませんでした。どうもMSと関係なく出来上が
ったみたいな印象でしたが、それらしいdocは発見できずじまいでした。


01971/01915 CRG00666  文太             Re^5: sw4でsymdebは?
( 1) 07/01/03 13:25 01965へのコメント(Konnoさん) コメント数:1
> ではsw4でもマクロの入出力ファイルを変えれば問題ないわけですね。よかった。
> お手間を取らせてしまって申し訳ないです。

 そんな、そんな。いえいえ、助かりました。一度は諦めた J_unasm.def(敬意
を表して、勝手に命名)が復活しましたので。原型をほとんど留めていませんが、
それでもああいう風に逆アセができることを知らなかったので(それ以外の方法
ももちろん知らないわけですが)、大きかったのです。それも今やマクロからや
れる!
 メモリー分断はまだ観察できずにいますが、でも、どこに地雷があるかはいち
おう頭に入っていますので、泣いたり叫いたりせず、対処できます。過去の金野
さん宛ても含めて、感謝です。自分と金野さんが会話してるとまでは、グレップ
するまで思ってなかった。そういえば、金野さんが昔言ってたよなぁ程度で。あ
りがたき過去ログ。ありがたき金野さん。m(__)m


01972/01972 CRG00666  文太             異セグの&Sn(), Str_len
( 1) 07/01/03 13:28 コメント数:4
 金野さん、お教えいただけませんでしょうか。

 題のとおりです。僕が唯一改変(追加)している★の行で「オペランド不正」
というエラーメッセージが出ます。>ml test.asm時。

 通じると思いますが、念のため仕様・意図などを簡単に説明します。
 ★の行が示す場所にダミーバッファを確保できました(delmem.com による)。
もちろんVzの外です。そこへの読み書きはできるようになったのですが、
書き込んだときに長さを保存しておかないと読み出しができません。ただ文
字列の長さなんて「動かないバッファ」(マクロバッファではいけない)に
保存しておくべき情報ではなく(管理が大変)、マシン語を使えるならその
つど測ったほうが楽な種類のものです。ps  程度の長さの使い方しか想定し
ていないので。それで、題の「異セグ String Length」のルーチンが欲しく
なったわけです。この基本ハードルが飛べれば、文字列の長さを管理するこ
となく(その都度測って)2つめ、3つ目の asciiz 文字列を楽に取り出せ
ると考えているわけです。

 どうか宜しくお願いいたします。m(__)m


--- test.asm ---; this doesn't work!!
CODE    SEGMENT ;original, ikuboh, 94/6/4, <nifty:FGALPK/MES/13/1604>
        ASSUME  CS:CODE,DS:CODE,SS:CODE
        ORG 100H
start:  mov     ds,9FC0H    ;dummy buffer segment address★
        mov     si,0        ;offset address, si-,
        mov     cx,0        ;counter, cx-,
abc:    mov     ah,[si]     ;ah=ds.0,
        cmp     ah,0        ;(ah==0)
        je      xyz         ;? >z
        inc     si          ;si++,
        inc     cx          ;cx++,
        jmp     abc         ;? >loop(abc)
xyz:    ret                 ;:z
CODE    ENDS
        END     START
----------------

 Str_len  のルーチンとしては、xor を使う方法が一般的なようで、Vz ソース
でもそれを見たのですが、それはおいておいて、こっちの上様のほうが分かりや
すいので、  これでいけるなら、 こちらでお願いできますでしょうか。 m(__)m
−−どっちでもできるのだろうと想像しておりますが。


01973/01952 DGF01024  めざら           今年もよろしくお願いします
( 1) 07/01/03 14:11 01952へのコメント(Konnoさん) コメント数:1
参照先:http://homepage3.nifty.com/mezala/
 遅れ馳せながら,あけましておめでとうございます。

 今年もボチボチとやっていこうかと思っておりますので,なにとぞよろしく
お願いいたします。

 今年はちゃんと Linux したり Perl したり xyzzy したいなと思いつつも,
やっぱり楽な VZ に流れてしまうんだろうなと思います。

 そういう何となくの安心感というのは,すべて Konno さんが VZk を開発・
公開してくださっているからだと思うのです。ぬるま湯の居心地の良さと言う
と怠惰に過ごしているようですが,それなりにできることはやっていると自信
を持って言えるようにこの1年を過ごしていきたいですね。


01974/01972 CRG00666  文太             Re: 異セグの&Sn(), Str_len
( 1) 07/01/03 15:57 01972へのコメント(文太さん) コメント数:1
 うーん、じつにさらさら書けてしまった。(数カ所書き換えただけだし)
 それでも、マシン語、やりたいなぁ。

=== Macro Tmp by Bunta ===;
original: READ_ENV.DEF by Emmett in 「勉強会」
* Macro
50 ^\ "mactest"

        p=$9FCF, i-,
:a      dz[=p, r=0.i, dz],
        (r)? {i++, >a}
        (i)? {&m("length==%d",i)} ? {&m("空だよ")}

*


01975/01972 CRG00666  文太             Re^2: 異セグの&Sn(), Str_len
( 1) 07/01/03 17:18 01974へのコメント(文太さん)
 あああ、分かった。 つまり僕がこの Str_len をマシン語でやらなければいけ
ない、とそもそも思っていたのは、この異セグ自前バッファをヒストリーバッフ
ァにしたいという野望があったからだったのでした。入れるたび、出すたびに、
全部ズル、ズルと動かすわけで、これはマシン語だろう、と。サイズ情報は、マ
クロの中に入ってていいと思うけど。
 元の黙阿弥。これは遠いですねぇ。金野さん、お願い。いつかでいいので。
 うーん、上様かくらとさんが、それっぽいルーチンをどっかでつくってたはず
だなぁ(同セグ版ですが)。

 夢を語ってみただけです。それでも不可能ではないだろうな、というのが恐い
ですね、考えてみれば。神をも恐れぬ…。発想が豚的かもしれないけど、そんな
ことは山彦SW4の関知することではないのであります。実現すればね。
 考えてみれば(これは考えてなかったけど)、EMSだって同じことができる
はずだなぁ。何に使うの? というのはおいておいて。
 僕は、最初、128 bytesの動かない・汚されない・消えないバッファが欲しかっ
ただけなんですが、ごうつくばりなもので…。


01976/01972 BQO00549  Konno            Re: 異セグの&Sn(), Str_len
( 1) 07/01/03 17:43 01972へのコメント(文太さん) コメント数:1
> start:  mov     ds,9FC0H    ;dummy buffer segment address★

えーと、私もわかってないのですが、ds はセグメントレジスタなので、アドレスか
レジスタとしかやり取りできないのじゃないかなぁ。で、この数字は、単なる数字と
解釈されてエラーになったと推測しました。

とりあえず、アドレスにみせるために、cs: を付けてみました。
start:  mov     ds,cs:9FC0H    ;dummy buffer segment address★

これで、ML はエラーが無くなったのですが、LINK で、/z2 のオプションエラー
が出るなぁ。set で見るとなぜか環境変数に LINK=/z2 が出ていて、そんな文字列は
 VWX でしか使っていないので、USBに常駐している副作用かと思ったり。

MASM5.1用の AL バッチ(エイリアス?)では、com まで出来ました。



01977/01972 CXB00940  としき           Re: 異セグの&Sn(), Str_len
( 1) 07/01/03 19:02 01972へのコメント(文太さん) コメント数:1
参照先:http://www.hinocatv.ne.jp/~toshiki/
>  題のとおりです。僕が唯一改変(追加)している★の行で「オペランド不正」
> というエラーメッセージが出ます。>ml test.asm時。

私も、アセンブラはほとんどわからないので、konnoさんの書かれているのが多分
正解だと思いますが。

>         ASSUME  CS:CODE,DS:CODE,SS:CODE

この行があるのに

> start:  mov     ds,9FC0H    ;dummy buffer segment address★

こういうコードを書いているからいけないという可能性もあると思います。
なので、

        ASSUME  CS:CODE,SS:CODE

こう書いてみるとどうでしょうか。
あるいは、ASSUMEの行には手をつけず、

start:  mov     ax,9FC0H
        push    ax
        pop     ds

とか。

> 書き込んだときに長さを保存しておかないと読み出しができません。ただ文
> 字列の長さなんて「動かないバッファ」(マクロバッファではいけない)に
> 保存しておくべき情報ではなく(管理が大変)、マシン語を使えるならその
> つど測ったほうが楽な種類のものです。ps  程度の長さの使い方しか想定し

この辺は、どうなんでしょう。
Vzとの親和性を考えるとそうなのかな。
確かに、C言語では文字列はasciizですね。
でも、pascalとかN88-BASICでは、文字列変数というと、長さという情報とともに
保存されているのですよ。


01978/01972 CRG00666  文太             Re^2: 異セグの&Sn(), Str_len
( 1) 07/01/03 21:25 01976へのコメント(Konnoさん)
金野さん

> えーと、私もわかってないのですが、ds はセグメントレジスタなので、アドレスか
> レジスタとしかやり取りできないのじゃないかなぁ。で、この数字は、単なる数字と
> 解釈されてエラーになったと推測しました。

 早速、ありがとうございました。なるほど、これが有力みたいでした。
 セグメント・オーバーライドですね。

> とりあえず、アドレスにみせるために、cs: を付けてみました。
> start:  mov     ds,cs:9FC0H    ;dummy buffer segment address★

 これ、通りました。
 でも、上の指摘でオーバーライドを知らないまま「そうなのか」と
start:  mov     bx,9FC0H
	mov     ds,bx
 とやっても通りました。としきさんのpush,popのほうが格好よいですが。
 (変数依存症)
 どうもありがとうございます。m(__)m


01979/01972 CRG00666  文太             Re^2: 異セグの&Sn(), Str_len
( 1) 07/01/03 21:48 01977へのコメント(としきさん) コメント数:1
としきさん

 素早く、多謝。

> >         ASSUME  CS:CODE,DS:CODE,SS:CODE
> この行があるのに
> > start:  mov     ds,9FC0H    ;dummy buffer segment address★
> こういうコードを書いているからいけないという可能性もあると思います。
> なので、

 ここは疑いました。 ただ、「comモデルでは気にしないでいいです」としか某
書が説明してくれず…。データが外にあるんだものね…?

>         ASSUME  CS:CODE,SS:CODE
> こう書いてみるとどうでしょうか。

 ただ、これだけでは、やはりdsには即値を入れられないようでした。


> あるいは、ASSUMEの行には手をつけず、
> start:  mov     ax,9FC0H
>         push    ax
>         pop     ds

 そうそう。こういう書き方をしないとすぐ大変なことになるんですよね。限ら
れた変数しかないので。

 というわけで、じゃーん、

=== Macro Tmp by Bunta ===;
String Length異セグ版(対象は決めうち=9FC0H)
* Macro
50 ^^ "mactest"

        &> &i(r)
        &m("%d",cx)

0:	(3+$)."$
	$(BB,CF,9F,8E,DB,BE,00,00,B9,00,00,8A,24,80,FC,00)$
	$(74,04,46,41,EB,F5,C3)"

*

 ちゃんと長さを測ってくれます! 通なXOR版にすぐチャレンジします。
 そして、ズル、ズル、と動かすヒストリーバッファをめざす!
 (動かせるかなぁ?)

> でも、pascalとかN88-BASICでは、文字列変数というと、長さという情報とともに
> 保存されているのですよ。

 うん、もう設計次第、サイズだってオプション次第ですからね。お好みで。
 で、僕もサイズ情報を埋め込むかどっかに保存するかすると楽だな、とも思っ
たのです。そんな言語があるとは知らずに。ただサンプルをVzしか知らないの
で、またどうやらできそうな気がするので(ここまででちょっと進化)、このラ
インで行ってみます。
 マクロなら泥臭くしつこくがんばればやれる。でもアセンブラだともっと根気
が要るからなぁ。いいサンプルよ、出てこい!

 とにかく情報、ありがとうございました。


01980/01915 CRG00666  文太             メモリの分断ってこういうことですか?
( 1) 07/01/04 00:28 01971へのコメント(文太さん) コメント数:1

14BD <--    1  128768  vz 1.60Q -z                1B 21 29
342E 3612   1    1408  command
3487 <--    1    6304  kb16 JP,932,C:\WINDOWS\sy  09 2F
3612 <--    1    3856  command                    22 23 24
3704 14BD   1   83744  vz
4B77-9FFF   1  346224  <free>

----- EMS ver4.0 (frame: CF00h) -----       ----- XMS ver2.00 -----

 やばいんですか、これ? なんか不健康な気分。


01981/01972 AYY00386  YASAT            Re: 異セグの&Sn(), Str_len
( 1) 07/01/04 00:38 01972へのコメント(文太さん) コメント数:1
もう解決しているようですね。
オペランドは『はじめて読む8086』の命令表を見るとわかります。

01982/01972 CRG00666  文太             Re^2: 異セグの&Sn(), Str_len
( 1) 07/01/04 01:14 01981へのコメント(YASATさん) コメント数:1
 YASATさん、ウルウルしてしまう。ありがと〜。そう、その辞書が見つからなくて、
うーん、していたのです。

> もう解決しているようですね。
> オペランドは『はじめて読む8086』の命令表を見るとわかります。

 p.277ですね。記念に写しておこう。

mov  汎用レジスタ            ,汎用レジスタ
mov  メモリ                  ,汎用レジスタ
mov  汎用レジスタ            ,メモリ
mov  メモリ                  ,即値  ★コレと
mov  汎用レジスタ            ,即値 ★コレ 
mov  セグメントレジスタ      ,16ビット汎用レジスタ ☆即値は入らない
mov  セグメントレジスタ      ,メモリ                 ☆同
mov  16ビット汎用レジスタ  ,セグメントレジスタ
mov  メモリ                  ,セグメントレジスタ

 そうそう、変数には相性があるんでしたよね。

 YASATさん、マシン語マクロ師になってたんですね。calender.defとかですか?

 ありがとうございました。m(__)m

01983/01972 BQO00549  Konno            Re^3: 異セグの&Sn(), Str_len
( 1) 07/01/04 01:32 01979へのコメント(文太さん) コメント数:1
文太さん

> > あるいは、ASSUMEの行には手をつけず、
> > start:  mov     ax,9FC0H
> >         push    ax
> >         pop     ds

どうやらこれが正解のようですね。ds に対して cs:???? のような指定だとVZ.COMの
中を指してしまうんでしょうね。

で、この 9FC0h は、del_mem.com が常駐して作った領域なんですよね。ということは
このアドレスは変る可能性があると考えなければいけないと思います。
また、常駐しているかのチェックも必要でしょう。

だから、VWX とか、VZとデータをやり取りするプログラムでは、INT2Fh で必要な
情報をやり取りしているんだと思います。
あるいはDOS領域のMCBとかメモリを調べてそのアドレスを探すとかかなぁ。

もしかしたら思いっきり勘違いしているかもしれないですが。


01984/01915 BQO00549  Konno            Re: メモリの分断ってこういうことですか?
( 1) 07/01/04 02:43 01980へのコメント(文太さん) コメント数:1
>  やばいんですか、これ? なんか不健康な気分。

やばいかどうかはわからないですが、大きめなプログラムが動かなくなりますよね。
本来 sw4 は sw3 よりも問題の無い指定のはずなんですが、XPでAUTOEXEC.NTで常駐
するとこうなってしまいます。

 sw4 指定してメモリの分断を避けたいなら、AUTOEXEC.NTではVZを常駐指定せず、
DOS画面になってから手動でVZを常駐させるしかないようです。

実は sw3 でもメモリの分断は起こっているんですが、常駐部分だけの分断なので
空きメモリに影響しないというだけなんですね。

これだけの制限の中でSYMDEB を使うとすると、結局非常駐VZになるかもしれない
ですね。


01985/01972 CRG00666  文太             Re^4: 異セグの&Sn(), Str_len
( 1) 07/01/04 16:07 01983へのコメント(Konnoさん) コメント数:1
 はい、色々あるなぁ。全部自前で処理するとなると…。

> で、この 9FC0h は、del_mem.com が常駐して作った領域なんですよね。ということは
> このアドレスは変る可能性があると考えなければいけないと思います。

 ですね。せめて、マクロの中からマシン語に渡す作りにしてやらないと。

> また、常駐しているかのチェックも必要でしょう。

 これなんですよね。これは最初から必要と感じていて…。PSPかMCBが読
み切れない…。あとで再挑戦します。なんかヒントがあるはず。

> だから、VWX とか、VZとデータをやり取りするプログラムでは、INT2Fh で必要な
> 情報をやり取りしているんだと思います。

 そう、VWXはお行儀良く2Fhです。でもこれは信号送られる側がそもそも
そういうつくりになっていて、 ah を、あるいは番号が分かってなければだめで
すよね。

--- f_call.shdより ---
@int2Fh 					★追加
F_その他の割込
 int2Fh 多重割込み
  常駐するプログラムが拡張機能を提供するために使用。
  設定値 AH = プログラム番号
               ex.01h PRINT.EXE
                  06h ASSIGN.COM
                  10h SHARE.EXE
                  12h MSDOS.SYS
                  1Ah ANSI.SYS
                  4Ah HMA
                  AEh APPEND.EXE  etc.
          AL = サブファンクション
  返り値 AX の設定値により異なる
----------------------

> あるいはDOS領域のMCBとかメモリを調べてそのアドレスを探すとかかなぁ。

 これは大変すぎでしょう。
 完全個人管理。m(__)m なんかいい方法ないですかねぇ。


01986/01915 CRG00666  文太             Re^2: メモリの分断ってこういうことですか?
( 1) 07/01/04 16:11 01984へのコメント(Konnoさん)
金野さん、

 お教えありがとうございました。

> これだけの制限の中でSYMDEB を使うとすると、結局非常駐VZになるかもしれない
> ですね。

 うー(我が侭言うなよ)これを視野に入れつつ

>  sw4 指定してメモリの分断を避けたいなら、AUTOEXEC.NTではVZを常駐指定せず、
> DOS画面になってから手動でVZを常駐させるしかないようです。

 この作戦で様子をみてみます。


01987/01972 CXB00940  としき@宿直     Re^5: 異セグの&Sn(), Str_len
( 1) 07/01/04 18:43 01985へのコメント(文太さん)
参照先:http://www.hinocatv.ne.jp/~toshiki/
> > で、この 9FC0h は、del_mem.com が常駐して作った領域なんですよね。ということは
> > このアドレスは変る可能性があると考えなければいけないと思います。
>  ですね。せめて、マクロの中からマシン語に渡す作りにしてやらないと。

> > また、常駐しているかのチェックも必要でしょう。
>  これなんですよね。これは最初から必要と感じていて…。PSPかMCBが読
> み切れない…。あとで再挑戦します。なんかヒントがあるはず。

> > あるいはDOS領域のMCBとかメモリを調べてそのアドレスを探すとかかなぁ。
>  これは大変すぎでしょう。
>  完全個人管理。m(__)m なんかいい方法ないですかねぇ。

美しく作るとなると、VWXのように、ファンクションコールというかAPIを実装し
て、アドレス問い合わせに対して応答を返すようにするのが一番いいのですが。
通常の常駐ソフトであれば、常駐解除時に、どのメモリブロックが自分のものか
わかるように、MCBに印をつけます。なので、外部からその印を読み取るようにす
る、というのも不可能ではありません。が、工数が多くなるという理由で、一番
お勧めではない方法だったりします。
汚いけれど現実的かつ楽な方法が、コンベンショナルメモリの最上位1KBとか
にメモリを確保して、マクロからはそのアドレスを決め打ちにする、というもの
です。コンベンショナルメモリの最上位アドレスというのは、マシンを起動して
すぐというか、メモリ確保を行う時点では、大抵、マシンごとに一意に定まりま
す。ということはつまり、1KBのバッファの開始アドレスも、当然、一意に定
まるわけです。
この方法のデメリットは、確保したいバッファサイズが変化した場合、例えば、
1KBから2KBに増やしました、なんて場合には、当然、マクロのほうも書き
換えなければならないわけです。そして、私の過去の経験的には、バッファを増
やしたくなることって結構あるのですよ。ラインバッファは8KBもあるし。
delmemを使うのであれば、メモリ確保量は引数で容易に指定できるので、すぐに
変更できます。逆に、メモリ確保量1KB決め打ちのツールを作るなんてことも
できますが、メモリ確保量を増やしたくなった場合、そのたびにまた新しいツー
ルを作るのですか、という大いなる疑問が沸きあがってきたりします。

>  int2Fh 多重割込み
>   常駐するプログラムが拡張機能を提供するために使用。

本題とは関係ありませんが。
このファンクションを使っているソフトって、どんなものがあるのかな。
InteruptListだっけ、帰宅したら調べてみよう。
 

01989/01972 AYY00386  YASAT            Re^3: 異セグの&Sn(), Str_len
( 1) 07/01/04 22:17 01982へのコメント(文太さん) コメント数:1
>  YASATさん、マシン語マクロ師になってたんですね。calender.defとかですか?

おいちゃん悲しくて涙が出てくらあ(;_;)

01990/01972 CRG00666  文太             Re^4: 異セグの&Sn(), Str_len
( 1) 07/01/04 23:42 01989へのコメント(YASATさん) コメント数:1
YASATさん

> おいちゃん悲しくて涙が出てくらあ(;_;)

 あうあう、別に失礼なつもりもなかったのですが。怒らすより泣かすほうがや
ばいよねぇ。

 あうあう。別にマシン語使えれば偉いってものでもないけど、えとえと、あの
その。YASAT さんてさあ、図書館行ってさあ、祝日とか完璧に調べちゃって、そ
のデータ、マクロの中に全部入れちゃうような地道に激しい人ってイメージでさ
あ、あと、正月からローマ数字の桁上がりみたいのをパズルみたいに楽しんだり
してさあ、 えと、それから、mview みたいな、ある意味 syo さん的なマクロを
びしっと構造化して、こつこつこつこつ書いていって、すげーよな、な人だと思
ってただけなんですよ。あ、そういえばVzで配列みたいなポイポイのだぁ〜と
並んだのとかもあって、これがまたすげえのよ。
 泣いたの損だったって分かった?

 blog を完成させてくれた人。これは泣いても笑っても怒ってもほんと。

 ふと思いついて、m.gann さんの history.def を眺めました。やっぱマシン語
使ってないよ。ヒストリーの途中抜くのってポインタだけでやれるんですね。あ
れだけのコードで。頭の中どうなってるんだろう。
 とにかくメニュー出て、del するのって気持ちいいですよね。脈絡は?

 繰り返しですが、辞書の在処、教えてくれてありがとうございました。


01991/01972 CRG00666  文太             カレンダーはcalendar
( 1) 07/01/05 02:07 01990へのコメント(文太さん) コメント数:1
 ああ、calender.def,  calendar.def です。誰がなんといってもカレンダーは
calendar。
 は、恥ずかしい。


01993/01972 BQO00549  Konno            Re: カレンダーはcalendar
( 1) 07/01/05 14:30 01991へのコメント(文太さん) コメント数:1
>  ああ、calender.def,  calendar.def です。誰がなんといってもカレンダーは
> calendar。
>  は、恥ずかしい。

calender でぐぐってみたところ(なんて嫌な奴)、最初と最後に、
もしかして:calendar
と表示されました。日本語のページ 約 1,770,000 件ですが、どうも、calendar も
引っかかってるような気がします。

念のため、「calender」 で翻訳してみると、「光沢機」と出ました。
どういう機械なんでしょうね。

 er でなく、ar である理由も専門家なら知っているんでしょうか。

#英語のだめな奴


01994/01972 CRG00666  文太             Re^2: カレンダーはcalendar
( 1) 07/01/05 20:58 01993へのコメント(Konnoさん) コメント数:2
>  er でなく、ar である理由も専門家なら知っているんでしょうか。

 いえいえ、僕はその方面の専門家ではありませんから。まったく普通の人レベ
ルの調べかたしかしてなくて申し訳ないですが、「ラテン語の語尾から」だそう
です。ラテン語とカレンダーの関係の専門家はYASATさんです。
 僕は中2のときのテストでこのスペルを間違え、うん十年してもまだ、これを
繰り返してるんですよね。やれやれ。
 因みに、中三のときに、teacher と visitor はどういう規則(パターン)で、
er  になったり or になったりするのだろう、と疑問に持ちました。いまだに調
べておりません。えばるこっちゃないなぁ。誰か教えて。

 全然関係なく。xor al,al って0になりますよねぇ。なんで?or ax,ax も0?
 あと、連続するヌル2つを探したいのですが、どう書けばいいんでしょう? 
ず、ずるい。

 ネットワークはgive & take (c)「ようこう」さん。
  takeの活用はtake,took,taken,taking. (c) SW4


01995/01972 CRG00666  文太             Re^3: カレンダーはcalendar
( 1) 07/01/05 22:17 01994へのコメント(文太さん)
>   なに,排他的論理和ですか。 どちらか一方だけが 0 のときのみ 1(真)を返
>   す。あまのじゃくな演算子ですねえ。(^^;)
 宮田さんでした。了解っす。(書かなきゃよかった。そういう辞書がないのよん)

  インスタント窓で5^^5, 7^^7, 9^^9(何か顔っぽい)ですね。使ったことないよ、
そんなあまのじゃくな奴。


01996/01972 CXB00940  としき           Re^3: カレンダーはcalendar
( 1) 07/01/05 23:30 01994へのコメント(文太さん) コメント数:2
参照先:http://www.hinocatv.ne.jp/~toshiki/
>  僕は中2のときのテストでこのスペルを間違え、うん十年してもまだ、これを
> 繰り返してるんですよね。やれやれ。

高校の時の現国の先生。東大卒、もしかしたら修士も出ていたのかな。
教職は第2志望だったそうです。
第1志望は金融機関、某信託銀行を受けたそうですが、見事に落ちたとか。
で、その先生曰くの落とされた理由、どこまでが本当かはわかりませんが。
信託銀行の託の字の旁に、ウ冠をつけてしまったからではないか、とのこと。
それって「宅」だよねぇ。
ま、世の中、そんなもんかも。

>  全然関係なく。xor al,al って0になりますよねぇ。なんで?or ax,ax も0?

xor al,alってのは、もともとのalの値に関係なく、結果のalは0になります。
or ax,axってのは、axの値を変化させません。ですが、もともとのaxが0の時の
み、0フラグが立ちます。つまり、axが0か否かのチェックに使えます。

>  あと、連続するヌル2つを探したいのですが、どう書けばいいんでしょう? 

:a
(p>a)?>z
(p.1==0)?{
  (p.0==0)?>y?{p++, >a}
}?{
  p=p+2, >a
}
:y
ヌル2つ
.
:z
最後まで来たけど見つからなかった
.

なんか違う?
ごめん、よくわからないのに知ったかぶりしています。

>   takeの活用はtake,took,taken,taking. (c) SW4

「竹」の活用といったら水筒とか花器とか。竹炭にするのもいいな。
あとは、電球のフィラメント。(PAT)Edison
#ひぇ〜、宿直明けで脳みそが腐っているぅ

01997/01972 BQO00549  Konno            Re^4: カレンダーはcalendar
( 1) 07/01/06 00:17 01996へのコメント(としきさん)
としきさん

> なんか違う?

いやぁ、マクロで書ければあとは置き換えるだけですし。

> 「竹」の活用といったら水筒とか花器とか。竹炭にするのもいいな。

ぶふ〜っ (>。<)  ・・・思わず吹いてしまった。

> #ひぇ〜、宿直明けで脳みそが腐っているぅ

今日は一休さんの如く冴えてますねぇ。(^^;


01998/01972 CRG00666  文太             Re^4: カレンダーはcalendar
( 1) 07/01/06 11:43 01996へのコメント(としきさん) コメント数:1
としきさん

> or ax,axってのは、axの値を変化させません。ですが、もともとのaxが0の時の
> み、0フラグが立ちます。つまり、axが0か否かのチェックに使えます。

 多謝。フラグが立つか。φ(.. )メモメモ なるほど。「0か否かを
チェック」してるはず、まで読めたのだけど。フラグね。でもまだ前後は…。

>  あと、連続するヌル2つを探したいのですが、どう書けばいいんでしょう? 
> なんか違う?

 なるほど、先読みするんだ。うーん、マクロが書けても…。
 いずれにせよ、多謝です。m(__)m

 あ、因みにgiveの活用は、give, gave, given, giving. 岐阜の活用は?


01999/01972 CRG00666  文太             添削希望です(2 nuls find)
( 1) 07/01/06 21:08 01998へのコメント(文太さん) コメント数:1

 おおおおおおおおおおーーーーーーーーーー!!!
 できました。多謝、多謝でありまする>としきさん、金野さん

 先読みロジック、多謝。「翻訳すればいいんだから」の、(破られた後の)世
界記録からの呪縛解放メタメッセージ、多謝。

 今日は、喜びが大きいのです。ゼロからマクロ語から翻訳しました。
 生まれて初めてのマシン語マクロ without pakuri!
 お腹のそこから笑いがこみ上げる。うひひひひ。世界征服も不可能ではない!
 ってな気分。すぐ答をくれなかったことにも感謝。これ、たまんないですよね
ぇ。くふふふふ。


 ニーモニックを見ていただければ幸いです。「こういうときはこう書くほうが
いいよ」などとコメント頂けたら嬉しいです。


 (神をも恐れぬ的でちょっと恐いのだけど告白)つ、ついにサブリナしちゃっ
た! う、動いた。 それだけで感動した。動き出して2分でバグを発見(ax 使
うのに、al を初期化していた)。 動き出すまで15分。まだデバッグしたこと
ないの…。
 ここでも多謝です> YASAT 様。.doc ついてましたから。いやあ、サブっちゃ
ったのよ。あの一言で。m(__)m  サブ文太。ブンタ茶舞。


 ソース・コードの英語は気にしないで。どんな英語を使うのか知らないので、
個人語です。あのほうが僕にとって分かりやすいだけですから、くれぐれも参考
になさらないように。


=== Macro Tmp by Bunta ===;
Find 2 consecutive nuls, ie, the end of history buffer
* Macro
50 ^^ "mactest"

                        ;まずセグは考えない。
        &00 a=r,        ;
        di=a,           ;先頭アドレス
        ax=di+20,       ;終端アドレス(実際にはバッファサイズ)
        &01 &m("%d",di-a)

00:     (3+$)."12345$(0)abcde$(0)$(0)98765",    ;20
                             ;ココ

01:     &i(3+$)."$
        $(32,DB,8B,F7,3B,F0,77,11,38,5C,01,74,05,83,C6,02)$
        $(EB,F2,38,1C,74,03,46,EB,EB,8B,FE,C3)"

*

;=== test.asm by Bunta ===
; Find the end of history buffer, ie, consecutive 2 nuls!
CODE    SEGMENT
        ASSUME  DS:CODE,CS:CODE,ES:CODE,SS:CODE
        .186
        ORG     100h

START:
        xor bl,bl       ;bl=0, for comparison
        mov si,di       ;
MAIN:
        cmp si,ax       ;si == pointer, ax == buffer size(limit)
        ja FIN          ;FIN = END

        cmp [si+1],bl   ;compare pointed chr+1 and 0
        je NEXT         ;found so next routine
        add si,2        ;not found, so add 2 to pointer
        jmp MAIN        ;try again
NEXT:                   ;2nd nul WAS found, so find the 1st
        cmp [si],bl     ;compare with 0
        je FIN          ;FOUND!! goto END
        inc si          ;not found (T-T), so increment pointer by one
        jmp MAIN        ;sorry, try again

FIN:
        mov di,si       ;copy the found ptr onto conducive DI (same as input)
        ret

CODE    ENDS
        END     START


02000/01972 BQO00549  Konno            Re: 添削希望です(2 nuls find)
( 1) 07/01/06 22:59 01999へのコメント(文太さん) コメント数:1
文太さん、凄い!!

>  ニーモニックを見ていただければ幸いです。「こういうときはこう書くほうが
> いいよ」などとコメント頂けたら嬉しいです。

添削ではないですが、サンプルが出たので、私なりに短くしてみました。
ちゃんと動くかはわかりませんが。(^^;
 *1 と *2 はバイト数はかわらないですね。

;=== test.asm by Bunta ===
; Find the end of history buffer, ie, consecutive 2 nuls!
CODE    SEGMENT
        ASSUME  DS:CODE,CS:CODE,ES:CODE,SS:CODE
        .186
        ORG     100h

START:
	xor bx,bx	;bx=0000h, for comparison
	mov si,di	;
	mov cx,ax	; *1
;	push ax		; *2
;	pop cx		; *2
MAIN:
NEXT:			;2nd nul WAS found, so find the 1st
	cmp word ptr [si],bx	 ;compare with 0
	jcxz FIN		;FOUND!!(Zflg=0) or cx=0 goto END
	inc si			;not found (T-T), so increment pointer by one
	dec cx
	jmp short NEXT		;sorry, try again

FIN:
        mov di,si       ;copy the found ptr onto conducive DI (same as input)
        ret

CODE    ENDS
        END     START



02001/01972 CRG00666  文太             Re^2: 添削希望です(2 nuls find)
( 1) 07/01/07 00:40 02000へのコメント(Konnoさん) コメント数:1
金野さん、m(__)m

=== Macro Tmp by Bunta ===;
Find 2 consecutive nuls, ie, the end of history buffer
* Macro
50 ^^ "mactest"

                        ;まずセグは考えない。
        &00 a=r,        ;
        di=a,           ;先頭アドレス
        ax=di+20,       ;終端アドレス(実際にはバッファサイズ)
        &01 &m("%d",di-a)

00:     (3+$)."12345$(0)abcde$(0)$(0)98765",    ;20
                             ;ココ

01:     (3+$)."$
        $(33,DB,8B,F7,8B,C8,39,1C,E3,04,46,49,EB,F8,8B,FE)$
        $(C3)"

*

;------------------------------------------------

START:
        xor bx,bx               ;*
        mov si,di               ;
        mov cx,ax               ;*
NEXT:                           ;
        cmp word ptr [si],bx    ;*
        jcxz FIN                ;*
        inc si                  ;*
        dec cx                  ;*
        jmp short NEXT          ;*

FIN:
        mov di,si       ;copy the found ptr onto conducive DI (same as input)
        ret

 jcxz,  short, あ、ワードでだって比べられる、など思ったのですが、ちゃん
と解析できてはいません。short なんかはとりわけ。
 なんですが、動かないのです。0 とか返してくる。僕はどこかでぽかやってお
りますでしょうか。m(__)m


02002/01972 CRG00666  文太             Re^3: 添削希望です(2 nuls find)
( 1) 07/01/07 02:56 02001へのコメント(文太さん) コメント数:1
01:     (3+$)."$
↓
01:     &i(3+$)."$

 の間違いがありました。それでも何か変。サブリナすれば分かるかもと思った
ら、cx のデクリメントを永遠やってる。(>_<)  これで本当に速いんですね。
マシン語、こわい。
 もしかしてアセンブルの時点でしくじってますか?



02003/01972 BQO00549  Konno            Re^4: 勘違いしてました。
( 1) 07/01/07 04:14 02002へのコメント(文太さん) コメント数:1
> ら、cx のデクリメントを永遠やってる。(>_<)  これで本当に速いんですね。
> マシン語、こわい。
>  もしかしてアセンブルの時点でしくじってますか?

ああっ、すみません、慣れない JCXZ なんて使ったら思いっきり間違えていました。
この JCXZ は、cx がゼロの時だけジャンプするんですね。勘違いしていました。

今度はどうでしょう。バイト数は変わらないです。ちなみに、jmp short はMASM5.1
で128バイト以内のショートジャンプを明示することで最適化するんですが、MASM6
では必要ないのかな。


START:
        xor bx,bx               ;*
        mov si,di               ;
        mov cx,ax               ;*
NEXT:                           ;
        cmp word ptr [si],bx    ;*
        je  FIN                 ;  *
        inc si                  ;*
        dec cx                  ;*
        jnz NEXT                ;* *

FIN:
        mov di,si       ;copy the found ptr onto conducive DI (same as input)
        ret


#う〜ん、リハビリが必要だなぁ。


02004/01972 BQO00549  Konno            リハビリ
( 1) 07/01/07 04:58 02003へのコメント(Konnoさん) コメント数:1
バイト数を減らすなら、mov cx,ax もいらないですね。

START:
        xor bx,bx               ;*
        mov si,di               ;
NEXT:                           ;
        cmp word ptr [si],bx    ;*
        je  FIN                 ;  *
        inc si                  ;*
        dec ax                  ;* ***
        jnz NEXT                ;* *
FIN:
        mov di,si       ;copy the found ptr onto conducive DI (same as input)
        ret


これで2バイト減ったけど、相変わらず確認してないという。(^^;


02005/01972 CRG00666  文太             Re: リハビリ
( 1) 07/01/07 12:25 02004へのコメント(Konnoさん) コメント数:1
金野さん、

 それぞれ以下の形になり、成功です! めでたく「11」と解答してくる!
2つ目の短さ!
 解読は今晩。やっぱ、すごい! 多謝 m(__)m

01:	&i(3+$)."$
	$(33,DB,8B,F7,8B,C8,39,1C,74,04,46,49,75,F8,8B,FE)$
	$(C3)"

01:	&i(3+$)."$
	$(33,DB,8B,F7,39,1C,74,04,46,48,75,F8,8B,FE,C3)"


02006/01972 CRG00666  文太             質問です。m(__)m ゼロフラグ?
( 1) 07/01/07 13:42 02005へのコメント(文太さん) コメント数:1
金野さん

(第1ヴァージョン)
----------------------------------------
        mov cx,ax               ;*

        dec cx                  ;*
        jnz NEXT                ;* *
----------------------------------------

(第2ヴァージョン)
----------------------------------------
        dec ax                  ;なんでだ?
        jnz NEXT                ;
----------------------------------------

 すいません。僕の頭の中に何かが致命的に抜けている箇所があるようで、訊い
てしまったほうが早そうです。お教え下さい。

 上は今回動いた金野版のそれぞれのヴァージョンです。
 僕の元の奴では、ax が終端アドレスを示していました。 その ax と動いてい
くポインタの  si が比較され、文字列終端まで探したことを確認するために ax
が使われていました。この場合、si は進んでいきますが ax は固定です。

 ですが、金野さんは ax を直接減らしてる。si  と ax が同時に増え・減りし
ているのだから、僕が考えるところでは、文字列の真ん中より右側に2つのヌル
があったら見つけられないのでは?と思ったら、ちゃんと見つけてくれました。
なぜでしょう? (この考え方が間違っているとは思っています。だってその2つ
の比較がそもそもなされてませんからね。(~_~;)

 というわけでゼロフラグ【も】 関係しているのだろう、 と思うのですが、ax
が減らせる理由ないし、そうすることが必要(?)な理由が分かりません。

 ヒントを頂けませんでしょうか。


 因みに、「とにかく文字列の最後はヌル2つに決まってるんだから」(とは限
らないけど)と決めうちにするロジックなら、と「dec ax」を削って、つまり、
どこが終わりか明示されない形で「頭からとにかくどこまでも探せ」とやったら、
いちおう通りました。そりゃ、あることが分かっている状況ですから、当たり前。

 因み2: 0000 をワードで比較、ただしポインタは1バイトずつ進める、の全
体的なロジックは読めているつもりです。


 お手数をお掛けして申し訳ありませんが、どうぞ宜しくご教示ください。


 テストマクロが作れるように、やっぱりsymdebでレジスタとフラグの変化をすぐ
調べられるようにならないと駄目ですね。何を勉強しなくちゃいけないのかは分か
っているのですが…。


02007/01972 BQO00549  Konno            Re: 質問です。m(__)m ゼロフラグ?
( 1) 07/01/07 14:21 02006へのコメント(文太さん) コメント数:1
文太さん、私が勘違いしてました。

>        di=a,           ;先頭アドレス
>        ax=di+20,       ;終端アドレス(実際にはバッファサイズ)

ここを見て、ax がバッファサイズだと思い込んでいたので、ax をカウンタ代わりに
考えてしまったんです。だから、もし見つからなかったら相当先まで探し続けていた
はずです。(^^;

だから、私のを使うなら、マクロで、ax=20, とすれば問題ないでしょう。
後は文太さんならわかると思います。要は ax の数だけ比較を繰り返して
いるんです。


02008/01972 CRG00666  文太             Re^2: 質問です。m(__)m ゼロフラグ?
( 1) 07/01/07 16:13 02007へのコメント(Konnoさん) コメント数:1
金野さん、ありがとうございます。

> ax をカウンタ代わりに考えてしまったんです。
> 要は ax の数だけ比較を繰り返しているんです。

 分かりました! なるほど。文字列中央より右にあるヌル2つが見つかった理
由も氷解しました。アドレスからディクリメントしてるんだから、あの程度の文
字列なら全部なめますね。
 それでも、ちょっとした誤解が読めないのは、まーーーーだ、まーーーーだと
いうことです。ありがとうございました。


02009/01972 BQO00549  Konno            最短?11バイト
( 1) 07/01/08 22:22 02008へのコメント(文太さん) コメント数:2
文太さん、私も si と di の使い方などよくわかってないですが、マクロで di を
受け渡しに使っているので、si へのコピーを省いてみました。


; ax = バッファサイズ
; di = データアドレス入出力

START:
        xor bx,bx               ;
NEXT:                           ;
        cmp word ptr [di],bx    ;*
        je  FIN                 ; 
        inc di                  ;*
        dec ax                  ;
        jnc NEXT                ;
FIN:
        ret

これで 11 バイトになった。(^^; 一応動いているようです。
他の方からコメントが付かないですが、これ以上短く出来るとか、もっと
違うやり方があるよとか出てくるといいですね。

マクロの方ですが、起動キーが ^^ になってましたが、'^' の刻印のキーでは
起動しなくてあせりました。・・・次のテーマは vkeyc.com かな。(^^;

ところで、サブリナってどこにありましたっけ。軟体にも見当たらないんですが。

# com_&i.def 便利ですね。今までシフト起動しかしてなかった。(^^;

02010/01972 CRG00666  文太             Re: 最短?11バイト
( 1) 07/01/09 00:41 02009へのコメント(Konnoさん) コメント数:4
金野さん

 ちょっと忙しくなってまいりますので、遅レスになると思います。
 それでもプロジェクトは続いておりますので、ぽつりぽつりとお願いに上がる
予定です。m(__)m

> マクロの方ですが、起動キーが ^^ になってましたが、'^' の刻印のキーでは
> 起動しなくてあせりました。・・・次のテーマは vkeyc.com かな。(^^;

 ああ、そういう繋がりですか? やっと分かった。使われてないんですか?
 何と何が入れ変わっているのか忘れてしまってますが、実に自然ですよ。旧8組
なものですから、とりわけ。
 『レジデントプログラム入門』、今日届きましたけど、おお、それそれ。眺めた
だけですが。

> ところで、サブリナってどこにありましたっけ。軟体にも見当たらないんですが。

 はい、僕も先日気づきました。ish 16階のみのようです。>めざらさん、忘
れ物のようですよ。送りましょうか?

> # com_&i.def 便利ですね。今までシフト起動しかしてなかった。(^^;

 まだ使ってませーん。今日はまだけっこう遊んでしまったのですが、うーん。
壁です。(>_<)   si,di はいちおう source, destination なんですね。レジス
タがスバゲって、先ほど整理しました。
 レジスタが足りませんよぉ。(ToT) pushしてもまだ足りないのですが。えい、
書いちゃえ。

	cx=bx-1,
	di.(cx+ax)=di.cx,	;翻訳用。cx=bx-1
	bx--,			;ここだ! レジスタ足りない!
	>a			;元は、di.(bx-1+ax)=di.(bx-1)

 こんなの、どうすればいいんでしょう? 文脈抜きの質問では無謀でしょうか?
 コメントは、自分に向けて数時間前に書いて怒っていたときのものです。
 何か知恵があれば。m(__)m


 超短11バイトは明日、明後日。m(__)m


02011/01972 CRG00666  文太             Re^2: 最短?11バイト
( 1) 07/01/09 01:09 02010へのコメント(文太さん)
> 「mov ax,'A'」 というふうに書くとどうなるでしょうか?
> 「mov ax,41h」と同じことなので、AH=00、AL=41hが入ります。
                 『アセンブラ入門』より

 あ、マシン語に入ってからばらせば使えるのか…。だって受け渡しに変数4つ
も使ったら、あと2つしかないじゃないか! そもそも2バイトも要らないデー
タなのに! と怒っていたのです。
 質問を発すると、何か見つかる。(^^;
 とはいえ、(ずうずうしくて自己中的ですが)何かアドバイスなどあれば。
m(__)m
 やっていることはヒストコピーです。str_len も nul2find も一連のプロジェ
クトです。
 (やれるか分かりませんが)最後に合体させて、1kbuf バッファをヒストリー
バッファにします。悲願。そして、メニューに出す(来年のお正月までに…)。


02012/01972 BQO00549  Konno            Re^2: 最短?11バイト
( 1) 07/01/09 01:23 02010へのコメント(文太さん) コメント数:1
>  ああ、そういう繋がりですか? やっと分かった。使われてないんですか?
>  何と何が入れ変わっているのか忘れてしまってますが、実に自然ですよ。旧8組
> なものですから、とりわけ。

高橋さんの vkeyc.com は
 CTRL+^  -->  CTRL+6
  CTRL+@  -->  CTRL+2
 へ変換するようです。このソースがあればなぁ。

>  はい、僕も先日気づきました。ish 16階のみのようです。>めざらさん、忘
> れ物のようですよ。送りましょうか?

私はログを随分無くしているので、見当たらなかったんですよね。今は軟体に
頼りっぱなしで。(^^;

> 	bx--,			;ここだ! レジスタ足りない!

これは、dec bx ですよね。文脈を全然読めてないですが。

>  超短11バイトは明日、明後日。m(__)m

ゆっくりやりましょう。というか、マシン語をUPしたほうがよかったかな。

	$(33,DB,39,1D,74,04,47,48,73,F8,C3)"

 com_&i なら、test.com から一発です。(^_^)


02013/01972 CRG00666  文太             Re^3: 最短?11バイト
( 1) 07/01/09 01:52 02012へのコメント(Konnoさん) コメント数:1
 布団からがばっと飛び起き。 あの〜、ファンクションコールで、ah とかにそ
のまま渡してますよねぇ。  そもそも分けて使えるんじゃないですかぁ。 (>_<)
やれやれ。
 書くと思いつくのです。m(__)m

------------------------------------------------------------

 う、もうレス来てた…。

> これは、dec bx ですよね。文脈を全然読めてないですが。

 そこ、レジスタを余計に使わないのですが…。読めないですよねぇ。
ポインタの代入のところですがぁ…。

> >  超短11バイトは明日、明後日。m(__)m
> ゆっくりやりましょう。というか、マシン語をUPしたほうがよかったかな。
> 	$(33,DB,39,1D,74,04,47,48,73,F8,C3)"

 いえいえ、ゆっくり読みたいのです。過去からの変遷とも比べたかったし。
 頭の中、いろんなことで一杯だし。しばし時間を。
 上、手で削っただけ? ハンド?

>  com_&i なら、test.com から一発です。(^_^)

 うーんと、  なぜ  com  ファイル経由なんでしょう?  僕は自分のマクロで
testasm.asm から &i 形式まで一発にしましたよ? ???

 大して使ってし、うわああああと作ったので、まだどっかにバグがあるかも
しれませんが。
 何か外してますか?

=== Mll.def by Bunta ===;
* Macro
50 ^^ "MLL"

	?. ss2,

; --- check already opened or not
	mx[+, #O "dumpkek.txt" #m
	(s==4)? {"N" #[ >c}	;not opened
	(r>0)? {#C "N"}		;opened
:c 	mx],

#E
#if 98 MG
"TASM testasm.asm" #m		;no question, please ....
"TLINK testasm.obj" #m

#elseif DOSV
"Ml testasm.asm" #m			;asemble
"Lld testasm.obj" #m			;link
#endif

"Exe2com testasm.exe" #m		;2com
"Dump testasm.com > dumpkek.txt" #m

	#[
	#O "dumpkek.txt" #m

; --- how many lines?
	#_ n=ln-1, #^ #<

; --- cut big columm block right & left by replace command
#56 "\x ^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]  " #m
    #m "AY"
#56 "\x |.+$$" #m 
    #m 
    "AY"
#56 "- " #m
    #m
    "AY"
#56 "\x \s+$$" #m
    #m
    "AY"

; --- change ' ' & '-' to ','
#56 "\x [-\s]" #m
    "," #m
    "AY"

; --- add left $(" & rihgt ")
#56 "\x ^" #m 
     "	$$(" #m
     "AY"
#56 "\x $$" #m 
     ")$"" #m
     "AY"

; --- manual labor!!
	(n==1)? >a
	#^ #> i=1,
:b	(n-i)? {#h "$$" #d i++, >b}

; --- add top subroutine mark
:a
	#^ #< #n
	"0:	&i(3+$$).$"$$"

	&d &m("finished!") .
*

 あ、それでは、明日、サブリナ、送ります。


02014/01972 CXB00940  としき@会社     Re^2: 最短?11バイト
( 1) 07/01/09 09:53 02010へのコメント(文太さん) コメント数:1
参照先:http://www.hinocatv.ne.jp/~toshiki/
>  こんなの、どうすればいいんでしょう? 文脈抜きの質問では無謀でしょうか?

無謀じゃないでしょうが。
どうしたらいいのか、というのが理解できません。
このままのコードじゃだめなんですか?
実現したいコードがどういうものか、というのが不明なのですよ。
レジスタを抜きにして、普通の変数で実現したいロジックを書いていただいて、
それをアセンブラにするにはどうしたらいいのか、という形式で質問していただ
けるとありがたいです。

02015/01972 CRG00666  文太             複雑な(?)ポインタ演算を、、、
( 1) 07/01/09 12:45 02014へのコメント(としき@会社さん) コメント数:1
としきさん、

 (昨晩遅くの書き込み、色々ひどくてごめんなさい>all、とりわけ金野さん)

 それではお言葉に甘えさせていただきます。m(__)m

 Vzマクロ言語で書くと、このようなコードです。
 di.(bx-1+ax)=di.(bx-1),

 レジスタ変数を使わなければ、
 p.(a-1+b)=p.(a-1),
  (3)(1)(2)(4)

 これは、(とりあえずpush,popなしで考える)ニーモニックでは、(レジスタ
の組み合わせをまだ十分考えられていませんが)

  c=a-1,		;(1)
  d=c+b,		;(2)
  e=[p+d]		;(3)混ぜますm(__)m
  mov e,[p+c]		;(4)同

 となると思います。

 このロジックしか今のところ思いついていません。ここで新たに3つ変数が必
要になっています。dec,inc を繰り返せば変数の数は減らせますが(c がなくな
る)、恐ろしく見渡しの悪いことになります。またこのルーチンを出るときには
a,bは元の値にもどっていなければなりません。

 昨晩の発見(ax を al,ah に分けてそもそも受け渡し変数にする)、+ push&
pop で、なんとかやりくりつくのかもしれませんが、ここですでに根本的に間違
っていたら、やはり悲しいので、お知恵を拝借できればありがたいです。m(__)m


02016/01972 CXB00940  としき@会社     Re: 複雑な(?)ポインタ演算を、、、
( 1) 07/01/09 13:43 02015へのコメント(文太さん) コメント数:1
参照先:http://www.hinocatv.ne.jp/~toshiki/
>  Vzマクロ言語で書くと、このようなコードです。
>  di.(bx-1+ax)=di.(bx-1),

なんとなく理解できた気がする。データを移動させたいのですよね。
1バイトだけならあまり面白くありませんが、もし、これを繰り返し行うような
ことがあるのであれば、ストリング命令というのを使うことを検討してみてはい
かがでしょうか。


02017/01972 CRG00666  文太             Re^2: 複雑な(?)ポインタ演算を、、、
( 1) 07/01/09 14:26 02016へのコメント(としき@会社さん)
> ストリング命令というのを使うことを検討してみてはい
> かがでしょうか。

 了解。そっちですか。ありがとうございました。


02018/01972 CXB00940  としき@会社     Re^2: 最短?11バイト
( 1) 07/01/09 15:34 02010へのコメント(文太さん) コメント数:2
参照先:http://www.hinocatv.ne.jp/~toshiki/
引用の都合、こっちにレスします。

> 壁です。(>_<)   si,di はいちおう source, destination なんですね。レジス

si,di の i はindexを意味します。
インデックスレジスタの使い方としては、

p.(a-1+b)=p.(a-1)

を表すような場合、常套的というのかな、多くの場合は

mov di,b
mov ax,p
mov bx,a
dec bx
add bx,ax
mov ax,[bx]
mov [bx+di],ax

みたいな感じになるのかな。
バイト型とワード型が混在しているような気もするけど、その辺は汲み取ってね。
あと、レジスタは全く保存していません。
必要ならpush popをつかう、ということで。


ただ、よくわかっていないのですが、マクロだけではだめなのですか?
マクロで遅い部分(ループだけ)をマシン語化する、でもいいように思うのですが。

02019/01972 CRG00666  文太             ポインタ演算こっちへ
( 1) 07/01/09 17:49 02018へのコメント(としき@会社さん) コメント数:2
としきさん

 何度もありがとうございます。

> ただ、よくわかっていないのですが、マクロだけではだめなのですか?
> マクロで遅い部分(ループだけ)をマシン語化する、でもいいように思うのですが。

 ここですが、マシン語化するしかありません。&Sh() を、あるいは #F(など)
をエミュレートしようと企んでいます。1000  bytes 近くが動くのです。もちろ
ん実現すれば、ですけれど。ポインタでも1秒2秒のことだろうけど。
 いつかできますよ、きっと。
 途中でいっぱい勉強できます、きっと。目的・目標ないとねぇ…。


p.(a-1+b)=p.(a-1)

を表すような場合、常套的というのかな、多くの場合は

mov di,b	;
mov ax,p	;
mov bx,a	;
dec bx		;a-1
add bx,ax	;★ di? a-1+b
mov ax,[bx]	;?
mov [bx+di],ax	;?

 上、間違いないですよね。★で途方にくれていますが、「間違いなし」とのこ
となら、またゆっくり考えてみよう、と思っております。
 たぶん、諦めて、「説明をお願いします」ということになりそうな気がしてし
まっていますが。


> バイト型とワード型が混在しているような気もするけど、その辺は汲み取ってね。

 これは分かっています。

 「rep movsb」だな、と思っておりますが。


02020/01972 CXB00940  としき           Re: ポインタ演算こっちへ
( 1) 07/01/09 21:10 02019へのコメント(文太さん) コメント数:1
参照先:http://www.hinocatv.ne.jp/~toshiki/
>  上、間違いないですよね。★で途方にくれていますが、「間違いなし」とのこ
> となら、またゆっくり考えてみよう、と思っております。

間違いだらけかもしれません。
Vzマクロで、pに7000h、aに5が入っていた場合、p.aって7005hでよかったよう
な気がしたんですが。だから、pから1引いてaを足したのとpにaから1を足したも
のが同じだと考えて、結果、あのようになりました。

あと、8086系だと、もっと楽な表記もあって。
ラベルの示すアドレスと、そのアドレスの持っている値というのをもうちょっと
区別して書くと、こんな感じ?

mov bx,a
mov di,b
mov ax,[p]
add bx,ax
mov ax,[bx-1]
mov [bx+di-1],ax

まだ間違いがありそうな気もします。
とりあえず、上記、文法的にはOKなはず。ロジック的にどうかは知りませんが。


02021/01972 AYY00386  YASAT            Re: 最短?11バイト
( 1) 07/01/09 22:02 02009へのコメント(Konnoさん) コメント数:2
マクロから書き換えてますが、loopを使って小さくする方法

80 ^\ ""
	?.
	&01 bx=r[, cx=20,
	&>
	&m("%d",bx-0])

0:	&i(3+$)."$(43,83,7F,FF,00,E0,F9,C3)"

1:	(3+$)."0123456789$(0,0)ABCDEFGH"

*

code	segment
	assume	cs:code,ds:code

	org	100h
start:	inc	bx
	cmp	word ptr [bx-1],0
	loopnz	start
	ret

code	ends
	end	start


02022/01972 CRG00666  文太             Re^2: ポインタ演算こっちへ
( 1) 07/01/09 22:13 02020へのコメント(としきさん)
としきさん

> 間違いだらけかもしれません。

 ごめんなさい。(T-T)

> Vzマクロで、pに7000h、aに5が入っていた場合、p.aって7005hでよかったよう
> な気がしたんですが。だから、pから1引いてaを足したのとpにaから1を足したも
> のが同じだと考えて、結果、あのようになりました。

 なるほど。大変に分かりやすい説明です。ありがごうございます。

 Vzマクロでaxがal,ahに分解できると信じてどつぼにはまるわ、失礼な暴言は
はくわ、動いてたマクロが動かなくなるわで、最低。心が彷徨ってる。
 失礼しました。


02023/01972 BQO00549  Konno            麗しのサブリナ
( 1) 07/01/09 23:16 02013へのコメント(文太さん) コメント数:1
>  布団からがばっと飛び起き。 あの〜、ファンクションコールで、ah とかにそ
> のまま渡してますよねぇ。  そもそも分けて使えるんじゃないですかぁ。 (>_<)

もしかして、Vzマクロで ah=xx, al=xx, なんて考えているのでは。これは以前
はまってましたよね。当然出来ないですが。

>  上、手で削っただけ? ハンド?

だからぁ、
> >  com_&i なら、test.com から一発です。(^_^)
これです。(^^; ねぼけてますね。

>  うーんと、  なぜ  com  ファイル経由なんでしょう?  僕は自分のマクロで
> testasm.asm から &i 形式まで一発にしましたよ? ???

全自動ですか。確かに一度で綺麗に仕上がるなら手間要らずで楽チンですが、
私は一発でうまく出来ないので何度もやり直します。そういう時は二槽式の方が
センタクの融通が利くので。(なにか違う?)

>  あ、それでは、明日、サブリナ、送ります。

頂きました。ありがとうございます。m(__)m
これは凄いですねぇ。使いこなせるかなぁ。


02024/01972 BQO00549  Konno            Re: ポインタ演算こっちへ
( 1) 07/01/09 23:47 02019へのコメント(文太さん) コメント数:1
文太さん、どうも変数の受け渡しで悩んでいるようですが、そういう時は発想を
変えてみたほうがいいかもしれません。
受け渡しは、si,di,cx,ax, ぐらいで出来そうに思うんですがねぇ。

と思ってたら、SABRINA.DOC の 80ページに良い例がありました。

=Test.def
*m
80 ^\   ""
        si"SABRINA",
        di=pr,
        &i("$(AC,AA,0A,C0,75,FA,4F,C3)")
        &m("copy しました")

;strcpy:
;_repeat
;       lodsb
;       stosb
;       tst     al
;_until z
;       dec     di
;       ret

*

これは、STD.INC を同じフォルダにコピーして、インクルードするようですね。
 si"SABRINA", から di=pr, へのコピーで、受け渡しは si, di, だけですね。

;strcpy:
 include	std.inc

_repeat
       lodsb       ; si --> al 
       stosb       ; al --> di
       tst     al  ; al は 0 か
_until z           ; al<>0 なら _repeat へ繰り返し
       dec     di  ; di--,
       ret

こんな感じですか。マクロが判りにくければ、STD.INC を読んで、展開してやれば
いいでしょう。


02025/01972 BQO00549  Konno            これが最短!!  8バイト!!
( 1) 07/01/10 00:03 02021へのコメント(YASATさん) コメント数:1
> マクロから書き換えてますが、loopを使って小さくする方法

さすが YASAT さんです! 8バイトですか!!

> 	&01 bx=r[, cx=20,

受け渡しは bx, cx, だけだし、サイズは cx, にするべきでしたね。
やはり最適化するにはマクロから見直さないと駄目なんですね。

> 	loopnz	start

この命令は初めて見ました。便利な命令があるんですねぇ。勉強になりました。


02026/01972 CRG00666  文太             Re: 麗しのサブリナ
( 1) 07/01/10 00:24 02023へのコメント(Konnoさん)
金野さん

> もしかして、Vzマクロで ah=xx, al=xx, なんて考えているのでは。これは以前
> はまってましたよね。当然出来ないですが。

 覚えてるんですか? 僕もそんな気が一瞬しました、つまり、おい、前にも同
じ間違いしたんじゃない? なわけないよな。(間)
 バーカ! 分けられるわけないだろう! と気づいても、まだ思い出しません
でした。

 DC閉鎖ちょっと前のファンクションコールのときですね。思い出しました。
これで、たぶん、一生忘れません。ありがとうございました。


 あ、全自動ですが、僕は、アセンブルできるか、>ml testasm.asm と試してか
らあのマクロを使ってます。実行ファイルが意味なすのは遠いでしょうから。金
野さんとは違いますよ。マクロのためのマシン語ルーチン。それが基本、僕には。


02027/01972 CRG00666  文太             Re^2: ポインタ演算こっちへ
( 1) 07/01/10 17:01 02024へのコメント(Konnoさん) コメント数:1
金野さん

> 文太さん、どうも変数の受け渡しで悩んでいるようですが、そういう時は発想を
> 変えてみたほうがいいかもしれません。
> 受け渡しは、si,di,cx,ax, ぐらいで出来そうに思うんですがねぇ。

 はい、出来そうに僕も思うんですが…。どうもおつむが腐ってるようで…。

 それより翻訳前のマクロを壊してしまってそれすら直せなくて、うんざりして
ました。まだ直らない。なぜだ?! ちょっと疲れが溜まっていたり、集中力を
欠いている感じです。m(__)m

> と思ってたら、SABRINA.DOC の 80ページに良い例がありました。

 いいサンプル! うまい! strcpyとしてもサブリナ使用例としても。m(__)m

 ただ、 ここでも前に戻ってしまうのですが、 逆アセマクロでsymdebを使うと
(with  SW4)、何かを壊しているような感じで、sabrinaが常駐解除できなくな
ってしまい、メッセージラインの変化を読むところにたどり着くのに、かなり苦
労しました。最初、メッセージラインが動かず、???しました。

 やっぱ、SW3でsymdebのときは、常駐解除かな〜。

 そう、これがやりたいことなのです。それを2回やればヒストコピーなので。
 目で見えるのって、す、すごい。

 アセンブラのマクロとか、std.inc とか、色々とゆっくりと研究し、試させて
いただきます。m(__)m   ありがとうございました。_repeat, _until っていう
のがマクロなんですね。前から、何これ? って思っていたのです。とってもわ
かりやすいけど。

 2nulsfind から色々とレスをもらい(金野さん)、かっちょいいサンプルもも
らい(YASAT さん)、さらに「あなたはこう考えたらいいでしょう」といったご
指導までもらっているのに(としきさん、多謝)、まだ読めていません。ゆっく
りやりますね。すいません。週末、かな? テストいっぱい。作るのとやるのと
採点するのと…。ぎょへ。


------- 以下のようなのにヘッダつけたら、おお、できた。
;strcpy:
 include	std.inc

START:
_repeat
       lodsb       ; si --> al 
------ コメントなど、多謝。ああこれがマクロ。高橋さんの発言にいっぱいあり
ました。std.incも覗いたら、ワケワカだけど、ああ、そういう仕組み、と。m(__)m


02028/01972 BQO00549  Konno            Re^3: ポインタ演算こっちへ
( 1) 07/01/10 22:35 02027へのコメント(文太さん) コメント数:1
>  ただ、 ここでも前に戻ってしまうのですが、 逆アセマクロでsymdebを使うと
> (with  SW4)、何かを壊しているような感じで、sabrinaが常駐解除できなくな
> ってしまい、メッセージラインの変化を読むところにたどり着くのに、かなり苦
> 労しました。最初、メッセージラインが動かず、???しました。

う〜む、なんなんでしょね。私もぼちぼちやってみます。

>  やっぱ、SW3でsymdebのときは、常駐解除かな〜。

専用アイコンを作って別窓でやったらどうでしょう。そのまま閉じても結果が
ファイルならうまく連携できそうな気がします。

> ------ コメントなど、多謝。ああこれがマクロ。高橋さんの発言にいっぱいあり
> ました。std.incも覗いたら、ワケワカだけど、ああ、そういう仕組み、と。m(__)m

std.inc のマクロ、覗いてみたら、げげぇ! 複雑怪奇!! 全く読めん。(;_;)
しかたがないので、自分なりに置き換えてみました。

START:
;strcpy:
 include	std.inc

repeat:
       lodsb         ; si --> al 
       stosb         ; al --> di
;      test   al,0   ; al は 0 か    *1
       or    al,al   ; al は 0 か    *2
       jnz   repeat  ; al<>0 なら _repeat へ繰り返し
       dec   di      ; di--,
       ret

最初、*1 でやったんですが、ゼロが入ってしまい、マクロがエラーに。
 &i("$(AC,AA,A8,00,75,FA,4F,C3)")
             ^^^^^
しかたがないので、逆汗してリストを見たら、*2 でやってたんですね。
う〜ん、or al,al で、al がゼロか判るのか。知らなかった。しかもゼロが
入らない?

#文太さん、私もついでに勉強がてら色々書き込みますが、気にしないで下さい。(^^;


02029/01972 CRG00666  文太             Re^2: 最短?11バイト
( 1) 07/01/11 00:36 02021へのコメント(YASATさん) コメント数:1
YASATさん

= test.def
	&01 bx=r[, cx=20,
               ^^
	&m("%d",bx-0])
                   ^^
1:	(3+$)."0123456789$(0,0)ABCDEFGH"
                         ^^^^^^
start:	inc	bx
        ^^^^^^^^^^
	cmp	word ptr [bx-1],0
                         ^^^^^^
	loopnz	start
	^^^^^^
 読めました。でも、こういう風には書けないんだよなぁ。
 3番目はありがとうございました。し、知らなかった。(^^;


02030/01972 AYY00386  YASAT            Re: これが最短!!  8バイト!!
( 1) 07/01/11 01:11 02025へのコメント(Konnoさん) コメント数:1
まあサンプルということで(^^)

場合によっては連続ヌルが見つからなかったときのために、
なにかフラグを立てる必要があるかも。

02031/01972 AYY00386  YASAT            Re^3: 最短?11バイト
( 1) 07/01/11 01:19 02029へのコメント(文太さん) コメント数:1
>  3番目はありがとうございました。し、知らなかった。(^^;

$だったらマシン語コードも(^^)

02032/01972 CRG00666  文太             Re^4: ポインタ演算こっちへ
( 1) 07/01/11 01:29 02028へのコメント(Konnoさん) コメント数:2
 長くてすいません。あ、どんどんやってください。勉強になります。
 僕は、Symdebのお勉強です。できた! と思う。(Vz非常駐にすること。)

Symdeb
Microsoft Symbolic Debug Utility
Version 3.01
(C)Copyright Microsoft Corp 1984, 1985
Processor is [80286]
-a
41DA:0100 mov al,5		;★
41DA:0102 
-g=0100 0102
AX=0005  BX=0000  CX=0000  DX=0000  SP=BD15  BP=0000  SI=0000  DI=0000  
^^^^^^^
DS=41DA  ES=41DA  SS=41DA  CS=41DA  IP=0102   NV UP EI PL NZ NA PO NC 
41DA:0102 B582           MOV    CH,82                              
-a
41DA:0102 or al,al		;★たしか慣用句
41DA:0104 
-g=0102 0104
AX=0005  BX=0000  CX=0000  DX=0000  SP=BD15  BP=0000  SI=0000  DI=0000  
^^^^^^^
DS=41DA  ES=41DA  SS=41DA  CS=41DA  IP=0104   NV UP EI PL NZ NA PE NC 
               パリティフラグ? ゼロでない、といってるのかな?^^
41DA:0104 C482A282       LES    AX,[BP+SI+82A2]                    SS:82A2=287D
-q

 どっかでとしきさんが書いていたはずですが(ログが残らないのが掲示板の辛
いところ)、or al,al は al を変化させないようです。


 常駐だと、上をやっただけで落ちました。非常駐でもファイルが1枚開けてあ
れば、コンソール取れるのですね。勉強、勉強。φ (__ ) メモメモ

 別窓、素晴らしいアイディアです! ファイル経由ならうまくいくはず…。


02033/01972 CRG00666  文太             Re^4: 最短?11バイト
( 1) 07/01/11 01:32 02031へのコメント(YASATさん) コメント数:1
> $だったらマシン語コードも(^^)

 またすぐ謎めくし。&i("$(machine language)")ってことじゃないんですよね。
 すぐ泣かすんだから。泣かないよ。


02034/01972 CXB00940  としき@宿直     Re^5: ポインタ演算こっちへ
( 1) 07/01/11 03:41 02032へのコメント(文太さん) コメント数:1
参照先:http://www.hinocatv.ne.jp/~toshiki/
うぅ、なんか板塀が倒れているんだけど、会社なので復旧措置ができない。
おまけに、今日は会社が引けてもまっすぐ帰れない。
書店めぐりの予定。大学入試レベルの物理の公式集が欲しくて。
実は再来週くらいにとある国家試験を受けるのですが、私の見たところ、それの
出題レベルは大学入試くらいかな、と。去年の夏にも一度受けているのですが、
見事に落ちたので、今度はまじめに勉強しようかと。
昔、私が大学受験のときに使った公式集は弟にくれてやったのですが、取り返そ
うと思ったところが、見事になくされたようで。でも、当時、約20年前の大学
入試と現在の大学入試はレベルが変わっていたりするかな。そうすると、現在の
入試参考書は役に立たない可能性もあるかも。


さて、本題。

> DS=41DA  ES=41DA  SS=41DA  CS=41DA  IP=0104   NV UP EI PL NZ NA PE NC 
>                パリティフラグ? ゼロでない、といってるのかな?^^

PEは、パリティイーブン、ですね。
逆は、パリティオッド、かな。POとなるはずです。
ゼロではない、というのは、NZですね。ノンゼロ。
では、ゼロの場合はどうなるのでしょうか。
movコマンドで、alに5だけではなく、4とか0とかを入れてみれば、orをかまし
たときのフラグの変化が見れて面白いでしょう。

>  どっかでとしきさんが書いていたはずですが(ログが残らないのが掲示板の辛
> いところ)、or al,al は al を変化させないようです。

そういう時は検索。
ここの#1996に書いてあるようです。


02035/01972 AYY00386  YASAT            Re^5: 最短?11バイト
( 1) 07/01/11 22:34 02033へのコメント(文太さん) コメント数:1
>  またすぐ謎めくし。&i("$(machine language)")ってことじゃないんですよね。

それ(&i)と同じです。""の中に$を置くわけですから。

02036/01972 CRG00666  文太             Re^6: 最短?11バイト
( 1) 07/01/12 00:15 02035へのコメント(YASATさん) コメント数:1
> それ(&i)と同じです。""の中に$を置くわけですから。

 同じ…。わけですから、って言われても、どういうことだ? 疑問を持てって?
 嫌だ、そういう疑問は持ちたくない、ダメ、ダメ。
 うーん、やっぱり謎めくし。謎めきゴロちゃん。ちゃん、ちゃん。きゃん、き
ゃん。ソースのここを読めでもいいですよ。
 そういえば、文太デビューの頃に、割れ関数事件のときにすでに、「ソースを
読んできました」ってのあったねぇ。一つ目の謎、解決。(^^)v  もの忘れひど
いのよ。

 $って分かんないのよ〜。何のつもりなんでしょう?
 胸の底にずっと暖めておきたいと思います。


02037/01972 BQO00549  Konno            Re^2: これが最短!!  8バイト!!
( 1) 07/01/12 00:23 02030へのコメント(YASATさん) コメント数:2
> 場合によっては連続ヌルが見つからなかったときのために、
> なにかフラグを立てる必要があるかも。

え〜と、見つからなくても cx の回数で終了するんですよね。フラグが必要な
場合とはどんなときでしょうね? マクロのほうの話かな? それなら終了処理を
分けるということですよね。もしそうだとしたら、cx がゼロかどうかで判断
できそうですね。

#ソースも短い!! これ以上詰めるのは無理だろうなぁ。


02038/01972 BQO00549  Konno            Re^5: ポインタ演算 or al,al
( 1) 07/01/12 00:32 02032へのコメント(文太さん)
>  どっかでとしきさんが書いていたはずですが(ログが残らないのが掲示板の辛
> いところ)、or al,al は al を変化させないようです。

あ、ほんとだ。(^^; 読んだ覚えはあるのに、この部分は全く記憶に残ってない。(^^;
これで覚えられそうです。m(__)m きっと、たぶん、おそらく、・・・・


02039/01972 BQO00549  Konno            Re^3: 姑息な7バイト (^^;
( 1) 07/01/12 01:15 02037へのコメント(Konnoさん)
> #ソースも短い!! これ以上詰めるのは無理だろうなぁ。

ちょっと姑息なことをしてみました。意味なし!! というか、これで問題無いのか?

=test
*m
80 ^\ ""
	?.
	&01 bx=r-1, bx[, cx=20,
	&>
	&m("%d",bx-1])

;0:	&i(3+$)."$(43,83,7F,FF,00,E0,F9,C3)"
0:	&i(3+$)."$(43,83,3F,00,E0,FA,C3)"

1:	(3+$)."0123456789$(0,0)ABCDEFGH"
*

code	segment
	assume	cs:code,ds:code

	org	100h
start:	inc	bx
;	cmp	word ptr [bx-1],0
	cmp	word ptr [bx],0		; -1 を取っただけ (^^;
	loopnz	start
	ret

code	ends
	end	start



02040/01972 CRG00666  文太             Re^6: ポインタ演算こっちへ
( 1) 07/01/12 12:15 02034へのコメント(としき@宿直さん) コメント数:1
以下、symdeb です。 なるほどゼロフラグのほうですね。パリティフラグのほう
の odd(奇数), even(偶数)は解析できませんでしたが。
 ゼロフラグの違いに気がつかず、どうやって判定してるんだよ、としばし。
 でも、国語の先生@信託(宅)のところにも、ちゃんと「0フラグ」と書いて
あった。何を読んでいるのやら。(^o^;m(__)m
 cmp が引き算というのを、この流れで知った。ああ、いっぱいある、ある。
 やっぱり、どうしてこういうのばっかりやっているのか、金野さんに訊きたい。
どうしてやり始めたのか。当時は一番メジャーな言語だった?

-a
3DEC:0100 mov al,0
3DEC:0102 or al,al
3DEC:0104 
-g=0100 0104
AX=0000  BX=0000  CX=0000  DX=0000  SP=C103  BP=0000  SI=0000  DI=0000  
DS=3DEC  ES=3DEC  SS=3DEC  CS=3DEC  IP=0104   NV UP EI PL ZR NA PE NC 
3DEC:0104 084C04         OR     [SI+04],CL                         DS:0004=00
-a
3DEC:0104 mov al,1
3DEC:0106 or al,al
3DEC:0108 
-g=0104 0108
AX=0001  BX=0000  CX=0000  DX=0000  SP=C103  BP=0000  SI=0000  DI=0000  
DS=3DEC  ES=3DEC  SS=3DEC  CS=3DEC  IP=0108   NV UP EI PL NZ NA PO NC 
3DEC:0108 084D04         OR     [DI+04],CL                         DS:0004=00
-q


 落ち着いた心で、あっちの「常套句」も読んだり眺めたりしていますが(ポイ
ンタ演算のこと)、あれができなきゃマシン語はやれない、というのなら逃げた
ほうがいいよなぁ、と思い始めてます。ああいう直訳でなく、別の方法がいくら
でもありそうだな、と思っているかれでもありますが。
 ああいう場合、bx というのがとっても大事なんですね。 でも、先を読んでそ
れに合わせてたら、あそこ以外がボロボロになりそうなんです。しかしあそこの
ポインタでずらすところがルーチンのキモで、ループが最大 1000 回回るので、
なんとかします。

 一つだけ質問。あれ、「常套句」とはいえ、けっこう難易度高くないですか?
 あれが基本、最初に飛ぶべきハードル、ということなら暗記しますが。


 物理のことは僕に訊かないで(訊いてないよ)。とはいえ、たぶんそれほど変
わってはいないでしょう。入試問題は変わりましたが(予備校のチェックや採点
が入るようになった)、ゆとり教育の時代にもかかわらず、レベルに変化がなか
ったのが、問題なのか功績なのか、だそうですので。


02041/01972 CXB00940  としき           Re^7: ポインタ演算こっちへ
( 1) 07/01/12 19:49 02040へのコメント(文太さん) コメント数:1
参照先:http://www.hinocatv.ne.jp/~toshiki/
> 以下、symdeb です。 なるほどゼロフラグのほうですね。パリティフラグのほう
> の odd(奇数), even(偶数)は解析できませんでしたが。

私自身は、パリティフラグを使うようなコーディングはほとんどしませんね。
ゼロフラグとキャリーフラグだけで、ほとんどの分岐は可能でしょう。
でも、ゼロフラグやキャリーフラグではウダウダと冗長なコードになるところが、
パリティフラグを使うとシンプルなロジックにできる可能性があるので、存在は
忘れてはいけないでしょう。私は忘れていたけど。

> DS=3DEC  ES=3DEC  SS=3DEC  CS=3DEC  IP=0104   NV UP EI PL ZR NA PE NC 
> DS=3DEC  ES=3DEC  SS=3DEC  CS=3DEC  IP=0108   NV UP EI PL NZ NA PO NC 

そうか、ZRというのとNZっていう標記になるのね。
PEとPOは当たっていたようで。
あとは、キャリーか。
NCはノーキャリーだから、キャリーが立った場合はCRかCAあたりでしょうね。
mov al,0
dec al
でキャリーが立つはず。未確認だけど、さすがにこれは間違いないと思う。


>  物理のことは僕に訊かないで(訊いてないよ)。とはいえ、たぶんそれほど変
> わってはいないでしょう。入試問題は変わりましたが(予備校のチェックや採点
> が入るようになった)、ゆとり教育の時代にもかかわらず、レベルに変化がなか
> ったのが、問題なのか功績なのか、だそうですので。

本屋巡りをしてわかったことをちょっと報告。
今って物理1・2とかって分かれているんですね。
おまけに、1A・1Bっていうようにも分かれているようで。
物理に限らないようですが。
私らの時代は、物理は物理で1つだけだったんですよ。他の教科も同様。
あの頃は物理は花形というか、参考書類の出版点数というか品揃えでは、物理・
化学・生物・地学の順だったんですね。でも現在は、化学・生物・物理・地学の
順番。難しいというか点が取りにくくて嫌われているのかな。計算問題が難しい
イメージがあるのかも。私は、物理は理屈を覚えられなくても少数の公式だけ覚
えれば点がとれるというイメージがあって。化学は、反応式は無限にあるし、周
期律表を覚えるだけでもひぃひぃ言っていたので、あまりいいイメージがありま
せん。って、当時から記憶力は大したことはなかったという事か。

結局、欲しかった種類の本は売っていなかったので何も買いませんでした。
何軒も本屋をまわったのですがね。
新宿だけで、南口の紀伊国屋・代々木の代ゼミの本屋・東口の紀伊国屋と徒歩で
まわったので、いい運動にはなりましたが。


02042/01972 CXB00940  としき           Re^3: 最短?11バイト
( 1) 07/01/12 20:58 02018へのコメント(としき@会社さん) コメント数:1
参照先:http://www.hinocatv.ne.jp/~toshiki/
> p.(a-1+b)=p.(a-1)
> 
> を表すような場合、常套的というのかな、多くの場合は
> 
> mov di,b
> mov ax,p
> mov bx,a
> dec bx
> add bx,ax
> mov ax,[bx]
> mov [bx+di],ax
> 
> みたいな感じになるのかな。

ちょっと誤解を招きそうなので自己レス。
って言うか、私が間違えている部分もあるし。

常套的、というのはレジスタの使い方の話。
インデックスレジスタって、その名の通り、インデックス操作に使います。
他のレジスタと足しあわせたアドレスを持ってきて、そのメモリの中身を操作す
る、ということです。2つのレジスタの値を足すのだけど、片方のレジスタは固
定値というか値を動かさず、インデックスレジスタだけインクリメント・デクリ
メントで値を動かします。この部分が私の間違いね。
それと、siがソース側、diがデスティネーション側、というのはいいですよね。

ま、やっぱり、メモリの転送にはストリング命令を使うのが、ロジックの分かり
やすさから言って一番でしょう。万が一、それで遅いというのであれば書き直せ
ばいいことであって、まずは動くものを書くことから始めてみませんか。


02043/01972 CRG00666  文太             Re^8: ポインタ演算こっちへ
( 1) 07/01/12 23:03 02041へのコメント(としきさん) コメント数:1
 すいません、揚げ足をとるようで。パリティフラグについて。

-a
23B2:0100 mov al,1★
23B2:0102 or al,al
DS=23B2  ES=23B2  SS=23B2  CS=23B2  IP=0104   NV UP EI PL NZ NA PO NC 
-a                               ^^
23B2:0104 mov al,2★
23B2:0106 or al,al
DS=23B2  ES=23B2  SS=23B2  CS=23B2  IP=0108   NV UP EI PL NZ NA PO NC 
-a                                                              ^^
23B2:0108 mov al,3★
23B2:010A or al,al
DS=23B2  ES=23B2  SS=23B2  CS=23B2  IP=010C   NV UP EI PL NZ NA PE NC 
                                                                ^^

 偶数と奇数が組み合わないのですよ。al  の値が偶数・奇数と言っているので
はない、とだけ確認したのですが。これで「解析できず」と書きました。
 僕が参考書で調べた限りでも、確かに「パリティフラグを使うことはまずない」
とかなんとか、でした。
 忘れましょう。ただ間違ったことを(そうであるなら)記憶してしまうのはよ
くないので、いちおう僕の(間違っているかもしれない)理解を伝えておきます。


 追伸:代ゼミの本屋は僕も2年くらい前に行きました。山川の日本史の教科書
を買いに。他で売ってないもので。「今時の日本史の教科書はどうなってるんだ?」
と。
 しかし、いっぱい歩きましたねぇ。それに本屋も通じゃん。健康、健康。いい
ですよ。しょっちゅう眠いかもしれませんが、不眠に悩まないでしょ。それがち
ゃんと生きてる証。僕のようになったらおしまい(な、情けない台詞)。でも、
でも、禁煙続いてるもんね。マシン語が上手くいかなくても(お陰様で)深く悩
まなくていいので(多謝)。とにかく、人生、やりなおしだぁ!


02044/01972 CRG00666  文太             Re^4: 最短?11バイト
( 1) 07/01/12 23:06 02042へのコメント(としきさん) コメント数:3
としきさん、色々と多謝。

> それと、siがソース側、diがデスティネーション側、というのはいいですよね。

 いちおう、以下のように。ただヒストコピーだとdi内で一度動かすのです。
 問題のループ部分だけをマシン語に入れて、そこは完成しました。
 「マクロでやれる部分があるんじゃない?」「ストリング命令だよ」。じつに
まったく、その通りで。m(__)m

> ま、やっぱり、メモリの転送にはストリング命令を使うのが、ロジックの分かり
> やすさから言って一番でしょう。

 です、です。救いの手。多謝。m(__)m

> 万が一、それで遅いというのであれば書き直せばいいことであって、

 マシン語で遅いなどということはあり得ない、と信じています。ポインタ演算
でもワークファイルを開いても、 コマンドラインで awk しても、実は僕は「遅
い」とは感じたことがないのです。結果を出してくれればいいので。向上心のな
い奴…。
 日曜ぐらいまでにスレッドを立て直します。気分を新たにというわけでもあり
ませんが、スレッドが読みづらくなってしまったので。m(__)m

> まずは動くものを書くことから始めてみませんか。

 賛成!


 問題だったポインタ演算の部分は、以下のように、実にあっけなく解決しました。
 問題は&Shに向けての全体構想なんです。どうもうまくいかなくて…。

 害はないはずなので、せっかく動いたので、試してね。

=== Macro Tmp by Bunta ===;
;同セグでのヒストコピー原形。ただしバッファ・チェックなし(キモ!)。
;異セグ対応も全く難しくない。diからesに入れるだけ。
* Macro
50 ^^ "mactest"

	&00 &01				;offset  p(source),q(destination)
	&Sn(p) a=r+1, &Sn(q) b=r+1,	;length  a,        b (with null)

	si=q, di=q+a, cx=b,		;move kizon forward
	&02
	si=p, di=q, cx=a,		;paste new onto kizon
	&02
	&m("新:%s",q)
	&w(120)
	&m("旧:%s",q+a)

00:	p=3+$,."abcdefghij"
01:	q=3+$,."0123456789$[20]"

02:	; --- 同セグで cx bytes, si->di copy
	&i("$(8C,D8,8E,C0,FC,F3,A4,C3)").

*

;----------------
mov ax,ds
mov es,ax
rep movsb
ret			;これを忘れて泣いた、泣いた
;----------------

;----------------
;変数が足りないならこういうずるい手もあるにはあるよ、と思ってます。
;自前変数(バッファ)ってありなんですね。(^^; マシン語が0だらけになりは
;しますが。
	mov ax,1
	mov bx,2
	mov cx,3
	mov VR1,ax
	mov VR2,bx
	add cx,VR2
	ret

VR1	DW	0
VR2	DW	0
;----------------


02045/01972 CXB00940  としき           Re^9: ポインタ演算こっちへ
( 1) 07/01/12 23:28 02043へのコメント(文太さん) コメント数:1
参照先:http://www.hinocatv.ne.jp/~toshiki/
>  すいません、揚げ足をとるようで。パリティフラグについて。

>  偶数と奇数が組み合わないのですよ。al  の値が偶数・奇数と言っているので
> はない、とだけ確認したのですが。これで「解析できず」と書きました。

うげげ、申し訳ない。
数値そのものではなく、2進数であらわした場合のビットの立っている数が偶数
か奇数か、ということだったはずです。
なので、
4ならPO
5  PE
6  PE
となるはずです。
ま、動き方がわかったからといって、使用頻度があがるとはとても思えませんが。


02046/01952 BRM00300  Est              よろしくおねがいします。
( 1) 07/01/12 23:35 01952へのコメント(Konnoさん) コメント数:1
konno さん、

今年も Vz をのんびりと使っていきたいと思っています。
大変おそくなりましたが、今年もよろしくお願いします。



02047/01972 CXB00940  としき           Re^5: 最短?11バイト
( 1) 07/01/12 23:37 02044へのコメント(文太さん) コメント数:1
参照先:http://www.hinocatv.ne.jp/~toshiki/
> ;変数が足りないならこういうずるい手もあるにはあるよ、と思ってます。
> ;自前変数(バッファ)ってありなんですね。(^^; マシン語が0だらけになりは

やはりここは、push popを使うべきでしょう。
あと、dw 8888h とか dw dup(10)っていうのも使えるかもしれません。


02048/01972 AYY00386  YASAT            Re^3: これが最短!!  8バイト!!
( 1) 07/01/12 23:51 02037へのコメント(Konnoさん)
そうか。最後のワード値の比較はバッファを越えてて意味をなさないから、
cxで見つかったかどうか判断できるんでしたね。思い違いしてました。
それかcxをはじめから1小さくしておいて、ゼロフラグで判断するかですね。

02049/01972 AYY00386  YASAT            Re^7: 最短?11バイト
( 1) 07/01/12 23:59 02036へのコメント(文太さん) コメント数:1
0:      &i(3+$)."$(43,83,7F,FF,00,E0,F9,C3)"
                ^^                         ^
1:      (3+$)."0123456789$(0,0)ABCDEFGH"
              ^          ^             ^

""のあいだはそのままメモリに格納されるわけです。
だからただの文字列としても、&iで使っても同じになりますよね。

02050/01972 CRG00666  文太             構想以前
( 1) 07/01/13 01:07 02044へのコメント(文太さん) コメント数:1
ああ、来てしまった。

 上のマクロ、ダミー文字列を下に入れ替えてみてください。たぶん、分かる人
にはそんなことをするまでもなく、コードを見ただけで、「あ、文太よお、まさ
かそこで転ぶなよ」ものなんでしょう。

00:	p=3+$,."あいうえa"
01:	q=3+$,."んんんが3回$[30]"

 リトル・エンディアンであり、たぶん、Vzマクロでは " 文字列 " が【その
まま】マクロバッファに取り込まれる、というあたりが問題のネックなのでしょ
う。!!(?) のマシン語的・対応・処理???

 ど、どなたが、分かるように導いていただくわけにはいかないでしょうか。
m(_B_)m
 僕はマクロでも、 !! を使ったことがありませんし、幸いなことに、その必要
がありませんでした。実務上、&S関数しか使ったことがない…。

 清十郎さんの講座がどっかにあったか? そういう問題じゃないのかな???


02051/01972 CRG00666  文太             Re^8: 最短?11バイト
( 1) 07/01/13 01:18 02049へのコメント(YASATさん)
YASATさん、

> ""のあいだはそのままメモリに格納されるわけです。
> だからただの文字列としても、&iで使っても同じになりますよね。

 ありがとうございました。確かにそうですよね。「そのまま」。ただ、これで
気づきたくないことに気づいてしまいました。「構想以前」です。ど、どうか。
m(__)m
 これだけ読め、あとは知らん、でいいですから。


02052/02052 CRG00666  文太             異セグマシン語関係
( 1) 07/01/13 14:01 コメント数:3
 (勝手なのですが)スレッドを立て直します。m(__)m >all

 1 「文太さぁ、あれはマクロバッファをテスト対象にしてるからじゃない?
君のやりたことからすると、とりあえず、少なくとも今のところは、それ、飛ば
なくてもいいハードルだと思うよ」。はい。

 2 元にもどって、以下でテスト。#F窓で「んんんん b」とやっても問題あ
りません。

 3 少し休んでから、異セグ str_len に進みます。m(__)m
   cの保存は嫌だ!

 4 「何やってんだか?」かもしれませんが、実は、今日、ほとんど初めて、
僕は、個人的に、自分の着実なる進歩を実感してしまいました。
 どうでもいいね、あは。それでも感謝の気持ちは忘れておりません。(いくら
なんでも、そんなにすぐ忘れるものかよ、そもそも。あは2)☆\(^^;)


=== Macro Tmp by Bunta ===;
異セグコピー基本(パクリじゃない!)
* Macro
50 ^^ "mactest"

	x=$9FBF,	;dummy buf seg (要1kbuf.com)
	(ks&1)? >B

	#F &Cr
;===受け渡しは5つ、ax,si,bx,di,cx(c)
;----- writing
		;--source
ax=gz,		;ds
si=ps, &Sn(ps) c=cx=r+1,
		;--destination
bx=x,		;es
di=0,

&00 .

:B
;----- reading
		;--source
ax=x, si=0, cx=c,
		;--destination
bx=gz, di=ps,

&00
&m("%s",ps)

00:	&i("$(50,1F,53,07,F3,A4,C3)")

*

;----- ax (==ds), si, bx (==es), di, cx (length) 受け渡しは5つ
;ds:si -> es:di, cx (bytes to be copied)
push ax
pop ds
push bx
pop es
rep movsb
ret


02053/01972 CRG00666  文太             やば、これ動きません
( 1) 07/01/13 20:45 02044へのコメント(文太さん) コメント数:1
;mov ax,ds

 ごめんなさい。m(__)m


02054/01972 AYY00386  YASAT            Re: 構想以前
( 1) 07/01/14 00:17 02050へのコメント(文太さん) コメント数:1
2バイト文字は上位バイト→下位バイトの順に格納されていきます。
とくに気にせずそのまま扱って大丈夫です。
数値として扱う場合に、VZマクロの!!やマシン語のxchgを使います。

02055/01972 CRG00666  文太             Re: やば、これ動きません
( 1) 07/01/14 00:51 02053へのコメント(文太さん)
mov ax,ds
mov es,ax
rep movsb
ret			;これを忘れて泣いた、泣いた

 ああ、これ同セグだから、いちおう動きましたね。見かけ上。
 いえ、 どうでもいいことなのですが、ds というマシン語のセグメントレジス
タと通じるものが、Vzに ds レジスタ変数としてあると思った時期がありまし
て、おい、まだそれやってたのか、と焦ったのです。
 なのですが、histcopy はこのロジックでは駄目です。cld だからいけません。
お尻から動かさないといけない、と気づきました。
 長い独り言、すいません。


02056/01972 CRG00666  文太             リトル・エンディアンについて
( 1) 07/01/14 00:56 02054へのコメント(YASATさん)
YASATさん、m(__)m

> 2バイト文字は上位バイト→下位バイトの順に格納されていきます。
> とくに気にせずそのまま扱って大丈夫です。

 ありがとうございました。本当のことはきちんと分かっていないのですが、こ
の場合には、そうですよね。大丈夫ですよね。ダイジョーブ、マイフレンド。し、
進歩がな、ない!!

> 数値として扱う場合に、VZマクロの!!やマシン語のxchgを使います。

 ここ。「数値」として扱う場合には、!!とxchg。とりあえず、今は暗記。
 m(__)m


02057/02052 CRG00666  文太             ヌル2つを見つける(再び)
( 1) 07/01/14 12:10 02052へのコメント(文太さん) コメント数:2
 (長文で失礼します)

 以下(マクロ・アサムコード1)を試していただくなり、読んでいただくなり
して、直し方をお教えいただきたいのです。無気味な数字を返してきます。不思
議なことに、いつも 60??? うまくいっていたように見えたことも…???

 名前を変えました。str_len2 です。ヌル2つ発見と str_len の2つ目をかけ
た。いずれにせよ、異セグでヌル2つを検索する、というものです。用途はさす
がに通じているかと思いますが、ヒストリーバッファ終端の発見です。複数の格
納文字列の合計長の計算という意味を持ちます。

 バッファは最初に初期化します(マクロ2)。ヌルだらけ。ここにヒストコピ
ーを繰り返すのですが、すでに2つの文字列が格納されている場合、2つの文字
列の向こうにあるヌル2つを発見し、そこまでの文字列長を取得したうえで、こ
の2つの文字列を新規文字列ぶん後方にずらします。この過程で、文字列長回ぶ
んのコピーが必要になる、というわけです。
 バッファサイズとの比較とは別に、ヌル2つの検索は、ヒストコピーでは常に
なされなければならない測定の一部なのです。(この仕様だと)

 (マクロ3) は、先日のものに str_len ルーチンが加えられたものですが、
そこは今は関係ありません。実地に試したい方のために用意しました。まだヒス
トリー機能はありませんが、 これで 1kbuf のバッファに1つは文字列が転送で
きます(もちろん書き出しもできます)。また 1kbuf.com by としきは、実行フ
ァイルをあざらしに上げます。

 (必要があれば) これで、 僕とまったく同じ環境で実験ができるはずです。
(たぶん、必要ないだろうけど)


 異セグだと駄目なのか? というより、どっかでものすごいタコをやってるだ
けのような気がするのですが、ちょっと長時間の実験でめげまして、救いの手を
求めることにしてしまった次第です。 どうか宜しくお願いいたします。m(__)m 
 一晩あけたら何か思いつくかと思ったけど、駄目だった。ああ。
 ほとんど金野さんが書いたままで、マクロバッファでの実験では何ら問題なか
ったのになぁ???


=== Macro Tmp by Bunta ===;
str_len2 test
* Macro
50 ^^ "mactest"

	x=$9FBF,		;base buf seg 
	y=1024,			;buf max length

	dx=x, ax=y,

	&i("$(52,1F,33,DB,33,F6,39,1C,74,04,46,48,73,F8,C3)")
	(ax==y)? {&m("Warning: buffer destroyed.").}
	&m("%d",si)

*

str_len2(ヌル2つまでの距離を測定)
; dx = dbuf segment
; ax = バッファサイズ
; si = (出力)文字列長

START:
	push dx			;セグメント設定※ ここがいけない???
	pop ds			;同※
        xor bx,bx		;初期化(ワード)
        xor si,si		;初期化(カウンタ)
NEXT:
        cmp word ptr [si],bx	;ワードで比較 (ds..0==0)? <--macro語
        je  FIN			;一致で終了
        inc si			;1バイトずつずらす
        dec ax			;限界値をデクリメント
        jnc NEXT		;限界値に達したら終了。そうでなければNEXT
FIN:
        ret

------------------------------------------------------

=== binitial.def by Bunta ===;buffer initialization
* Macro
50 ^^ "binitial"

	x=$9FBF,	;dummy buf seg (要1kbuf.com)
	y=1024,		;buf max length

	cx=y, bx=x,
	&i("$(53,1F,33,FF,32,C0,3B,CF,74,05,88,05,47,EB,F7,C3)")
	&m("dummy buffer initialized") .

*
	push 	bx		;segment受け渡し
	pop	ds		;同
	xor	di,di		;di-,
	xor	al,al		;al-,
ABC:	
	cmp	cx,di		;(cx==0)?
	je	FIN
	mov	[di],al		;
	inc	di
	jmp	ABC

FIN:
	ret

------------------------------------------------------

=== Macro Tmp by Bunta ===;
;異セグコピー基本2(str_lenが付いたので書き出しの変数依存はない)
;dump -mx9fbf -s16
* Macro
50 ^^ "mactest"

	x=$9FBF,	;dummy buf seg (要1kbuf.com)
	y=1024,		;buf max length

	(ks&1)? >B

	#F &Cr (r<0)?.

;===受け渡しは5つ、ax,si,bx,di,cx
;----- writing
	;--source
	ax=gz,		;ds
	si=ps, &Sn(ps) cx=r+1,
	;--destination
	bx=x,		;es
	di=0,
	&00 &m("writing finished: %s",ps).


:B
;----- check the buf & get str_length (1)
	bx=x, dx=y,
	&i("$(53,1F,32,DB,33,F6,8A,04,38,D8,74,04,46,4A,73,F6,C3)")
	(si==0)	? {&m("Empty.  Cannot write out").}
		? {cx=si+1,}		;--

;----- reading (temporarily onto PS)
	;--source
	ax=x, si=0,			;--
	;--destination
	bx=gz, di=ps,
	&00				;(2)
	&m("%s",ps)

0:	&i("$(50,1F,53,07,F3,A4,C3)")	;(2)

*


(source 1; str_len)
;------------------------------
;search 0 in ds:si (<-- ds==bx)
;--> bx (dbuf seg), dx (max)
;<-- si (counter)
START:
	push	bx		;ds
	pop	ds
        xor	bl,bl		;0
        xor	si,si		;counter
ABC:    mov     al,[si]
        cmp     al,bl
        je      XYZ
        inc     si
        dec	dx
        jnc     ABC
XYZ:	ret


(source 2; str_cpy)
;----- ax (==ds), si, bx (==es), di, cx (length) 受け渡しは5つ
;ただしこれは素直に(Vz仕様のまま)cldなので、上書きのみ。histは無理。
;histはstdでお尻から動かすこと。
;ds:si -> es:di, cx (bytes to be copied)
	push ax
	pop ds
	push bx
	pop es
	rep movsb
	ret



02058/02052 CRG00666  文太             Re: ヌル2つを見つける(再び)
( 1) 07/01/14 13:21 02057へのコメント(文太さん) コメント数:2
 (大したことではないのですが)ヌル2つの発見に失敗して(バッファサイズ
限界に到達して)マシン語ルーチンから返ってきたことの判定、というつもりの
覚え書きだったのですが、間違ってました。(^^;

(ax==y)? {&m("Warning: buffer destroyed.").}
↓
(ax==-1)? {&m("Warning: buffer destroyed.").}

 また、としきさんの 1kbuf.com  は、としきさん掲示板の #870 にあります。
(必要ならば???)そのソースから各自、アセンブルしてください。m(__)m
 あざらしが休業中、僕が上げるのは失礼だろう、などなどに思い至りました。
m(__)m


02059/01972 CRG00666  文太             パリティフラグ
( 1) 07/01/14 13:43 02045へのコメント(としきさん)
としきさん(ようやく戻りました)

> 数値そのものではなく、2進数であらわした場合のビットの立っている数が偶数
> か奇数か、ということだったはずです。

 はい、結論として、これが正しいようです。だから、何? という感じが、も
のすごくしてしまいますが、それでもどっかで使い道があるんでしょうね。

> 4ならPO
> 5  PE
> 6  PE

 か、確認しました。間違いありません。

> ま、動き方がわかったからといって、使用頻度があがるとはとても思えませんが。

 実に、まったく。

(追加実験)
7 00000111 3 O  PO
8 00001000 1 O  PO
9 00001001 2 E  PE
     予想:実験結果  ビンゴ!

 ビットが立ってる数…。確かにそう振る舞うけど…。

 マシン語とつき合ってると、Windows みたいなところまで来るのには、うん万
人の努力の集積が必要だったんだろうな、と思ってしまう。
 Vzマクロは高級言語だと思ってしまう。そして「ローテクはハイテク」の意
味も実感されています。&Sh() のありがたいこと、ありがたいこと。
 rep movsb もありがたい(あの直訳ポインタ演算からすればこっちが超楽)


02060/01972 CRG00666  文太             姑息な変数作成法
( 1) 07/01/14 13:52 02047へのコメント(としきさん) コメント数:1
 push,pop が正当なのは分かってますが、とりあえずすぐ必要ではないけれど、
変数依存症の僕が逃げる道を確保したかっただけです。push,pop  って見渡し悪
いんだもの。 「なるべく単純なロジックを考える訓練を日頃から」とは Emmett
語録ですが。

> あと、dw 8888h とか dw dup(10)っていうのも使えるかもしれません。

 これは、何? 8888hって何? 10って?
 『Ver.5.1  MASM 初級プログラム入門』(技術評論社)の巻末にいい辞書があ
りました。(^^)v でも、こりは分かんない。


02061/02052 CRG00666  文太             str_len2.def すいません
( 1) 07/01/14 17:24 02058へのコメント(文太さん)
 何だかお騒がせだけしています。すいません、ぐすん。

 何も変わっていません。変わったのは、マシンの状態だけです。たぶん。
 でも言い訳ですが、PCの再起動だって昨晩も今朝もさんざんやったのです。
 どうみても前のままで動くはずです。下も名前を付けてコメントを直しただけ。
 str_len2, 完成です(小さい声)。虚しく時間が過ぎたなぁ…。

=== str_len2.def by Bunta ===;
* Macro
50 ^^ "str_len2"

	x=$9FBF,		;base buf seg 
	y=1024,			;buf max length

	dx=x, ax=y,

	&i("$(52,1F,33,DB,33,F6,39,1C,74,04,46,48,73,F8,C3)")
	(ax==-1)? {&m("Warning: buffer destroyed.").}
	&m("%d",si)

*

str_len2(ヌル2つまでの距離を測定)
; dx = dbuf segment
; ax = バッファサイズ
; si = (出力)文字列長

START:
	push dx			;セグメント設定
	pop ds			;同
        xor bx,bx		;初期化(ワード)
        xor si,si		;初期化(カウンタ)
NEXT:
        cmp word ptr [si],bx	;ワードで比較 (ds..0==0)? <--macro語
        je  FIN			;一致で終了
        inc si			;1バイトずつずらす
        dec ax			;限界値カウンタをデクリメント
        jnc NEXT		;限界値が0に達したら終了。そうでなければNEXT
FIN:
        ret

------------------------------------------------------


02062/01972 CXB00940  としき           Re: 姑息な変数作成法
( 1) 07/01/14 18:49 02060へのコメント(文太さん) コメント数:1
参照先:http://www.hinocatv.ne.jp/~toshiki/
新年会という名目で、八王子の山奥に一泊してきました。
10年振りぐらいで麻雀というものをやったのですが、どうもやっぱり、ワザに
キレがありませんでしたね。
#ちなみに、私の必殺技は「振り込み」と言います

さて。

> > あと、dw 8888h とか dw dup(10)っていうのも使えるかもしれません。
>  これは、何? 8888hって何? 10って?

ぅぉ、ここも間違えている。
dw 10 dup (?)
ですね。バッファの確保のことですよ。#2044> ;自前変数(バッファ)ってありなんですね。(^^; マシン語が0だらけになりは
> ;しますが。

と書いていたので、マシン語に0を含まないようにバッファを確保できればいい
のかなと思い、そのための方法として提案させていただきました。
もしかして、文太さんが書かれたのはそういう意味ではないのですか?

>  push,pop が正当なのは分かってますが、とりあえずすぐ必要ではないけれど、
> 変数依存症の僕が逃げる道を確保したかっただけです。push,pop  って見渡し悪
> いんだもの。 「なるべく単純なロジックを考える訓練を日頃から」とは Emmett
> 語録ですが。

私は、スタックを使うと見通しが悪くなるとはこれっぽっちも思っていないんで
すよ。HPの電卓を使って小学生の算数のドリルの問題を100問も解けばスタ
ックに慣れる、なんて話を聞いたこともありますが、それはさておき。
昔、Z80のアセンブラで極限までチューンしていたころは、スタックは使いま
くりでしたね。バイト数は少なくて済むし、マシンサイクルも短くて済むし。そ
れでスタックに対して文太さんよりは拒否感がないのでしょう。
最近のプロセッサならパイプライン処理で走っているからマシンサイクルは気に
しなくて済むけど、バイト数に関しては、やはりスタックを使った方が短くでき
るような気がします。
例えば、2つのレジスタの値を入れかえる、という場合。

mov [buf],bx
mov bx,cx
mov cx,[buf]

と

push bx
push cx
pop  bx
pop  cx

あまり変わらんか。


02063/02052 CXB00940  としき           Re^2: ヌル2つを見つける(再び)
( 1) 07/01/14 18:54 02058へのコメント(文太さん) コメント数:1
参照先:http://www.hinocatv.ne.jp/~toshiki/
しつこくて申し訳ないのですが。

>  また、としきさんの 1kbuf.com  は、としきさん掲示板の #870 にあります。
> (必要ならば???)そのソースから各自、アセンブルしてください。m(__)m

delmemではいけないのですか?


02064/01972 CRG00666  文太             Re^2: 姑息な変数作成法
( 1) 07/01/14 23:04 02062へのコメント(としきさん) コメント数:1
としきさん

> dw 10 dup (?)
> ですね。バッファの確保のことですよ。#2044

 いえ、そうかなぁとも思ったのですが、きっと ^P でバッファを埋めるといい
ことがあるのかと思って…。

> > ;自前変数(バッファ)ってありなんですね。(^^; マシン語が0だらけになりは
> > ;しますが。
> と書いていたので、マシン語に0を含まないようにバッファを確保できればいい
> のかなと思い、そのための方法として提案させていただきました。
> もしかして、文太さんが書かれたのはそういう意味ではないのですか?

 基本的はそういう意味です。「ゼロだらけ」のほうは、格好悪いというだけで、
ローカルマクロにすれば実害はないのですが。88h は未定義文字?
 いえ、それでもありがたい技です。ローカルに出すと見通しが悪いこともある…。

> 私は、スタックを使うと見通しが悪くなるとはこれっぽっちも思っていないんで
> すよ。HPの電卓を使って小学生の算数のドリルの問題を100問も解けばスタ
> ックに慣れる、なんて話を聞いたこともありますが、それはさておき。
> 昔、Z80のアセンブラで極限までチューンしていたころは、スタックは使いま
> くりでしたね。バイト数は少なくて済むし、マシンサイクルも短くて済むし。そ

 だって見えなくなるし順番にしか取り出せないし…。いけない、いけない。向上
しろ!
 Z80時代からなのね。ヤフオクで参考書はよく見る。それって、パソコン、
あるいは旧8以前の「マイコン」?のCPUですか? でも、アセンブラでスピ
ードが違ったわけですか?
 簡単に言い切れませんが、僕は、やっぱりマクロもニーモニックも、短いより
分かりやすいがいいなぁ。もちろん、この「分かりやすさ」は読む方の読解力み
たいなのが大きいわけですが。  先日の  YASAT  さんの  [,  natoka  kantoka
nantoka  &m("%d",ax+0]) なのも、ニーモニック技(少なくとも起源は)なのは
知識として分かっていても、また意味が読解できても、自分では書けないなぁ…。
 HPの電卓の刑にするしかないか。やだやだ。何だか知らないけれど。イメー
ジは分かる。つまり使う人の短期記憶に頼った電卓ね。そんなの機械じゃねーぞ。

 キレのない振り込みって、冴えなさそうだ、とは思いました。キレて、どうする?!
 xchg bx,cx		;分かりやすくて大変よろしい。キレてます。


02065/02052 CRG00666  文太             delmemと1kbuf
( 1) 07/01/14 23:20 02063へのコメント(としきさん)
としきさん

> delmemではいけないのですか?

 うーん、難しいですね。 いけなくないでしょう。でも、delmem はどうなって
いるのか研究・実験しなくてはいけません。MCB が動いてますし。1kbuf は、仕
様がはっきりしています。 「常駐解除できないかわりに、zmap でも名前が消え
てもいいなら 1024bytes まるまる使える」。 すいません、新たな道具に期待し
ておりますし(冗談)、それよりバグとかなんとかより、今は実験段階だし、取
れるバッファの量で、1kbuf を贔屓にさせていただいております。delmem  は、
どこまで使っていいか分からないから安全に倒して損をするということです。今
のところの話ですが。
 モバでは delmem になります。ソースが読めて MS-DOS メモリー管理の仕組み
が理解できるまでは、したがって、不幸なことに、取れるバッファの量が減りま
す。m(__)m


02066/01972 CXB00940  としき@会社     Re^3: 姑息な変数作成法
( 1) 07/01/15 11:53 02064へのコメント(文太さん) コメント数:1
参照先:http://www.hinocatv.ne.jp/~toshiki/
>  だって見えなくなるし順番にしか取り出せないし…。いけない、いけない。向上

お気持ちはわかりました。よっぽどまどろっこしいとか冗長なことをやるのでな
ければ、作った人のわかりやすいようにコードを書けばいいと思います。あとは、
こうすればもっとよくなる、みたいなご指摘を各方面から受ける可能性があると
いうのはマクロでもなんでも同じでしょうし。

>  Z80時代からなのね。ヤフオクで参考書はよく見る。それって、パソコン、
> あるいは旧8以前の「マイコン」?のCPUですか? でも、アセンブラでスピ
> ードが違ったわけですか?

一応、パソコンですね。PC-8801ですから。
実数演算のルーチンを書いていたんですよ。
カリカリにチューンしていましたからね。
「アセンブラでスピードが違う」って、マシンサイクルまで見ると結構差が出る
のですよ。バイト数が大きくなるコードの方がマシンサイクルで見ると早いとか
あったりして、ほんと、パズルのようでした。

>  HPの電卓の刑にするしかないか。やだやだ。何だか知らないけれど。イメー
> ジは分かる。つまり使う人の短期記憶に頼った電卓ね。そんなの機械じゃねーぞ。

これは、一部の人から強烈なクレームがつきそう。
200LXとかでも逆ポ電卓機能ってあったはずだし。
Forthとか日本語MINDなんてプログラム言語でスタックを一切使わずにプログ
ラムを組むことは実質的に不可能でしょうし。

>  キレのない振り込みって、冴えなさそうだ、とは思いました。キレて、どうする?!

昔なら半荘1回で4〜5回は振込みを決められたのですがね。
今回は、半荘2回やって振り込み2回しか決められなかったのですよ。
ちなみに、自分が和了った回数は半荘1回につき1回くらいなので、その辺は変
わらなかったなぁ。

02067/01952 BQO00549  Konno            Re: よろしくおねがいします。
( 1) 07/01/15 23:25 02046へのコメント(Estさん)
Estさん、今年もよろしくお願いします。

> 今年も Vz をのんびりと使っていきたいと思っています。

なにかマッタリとした雰囲気でいいですねぇ。私もマイペースで行きたいです。(^_^)


02068/01952 BQO00549  Konno            Re: 今年もよろしくお願いします
( 1) 07/01/15 23:44 01973へのコメント(めざらさん)
めざらさん、怒涛のアセカキに埋もれてレスを忘れてしまいました。スミマセン。

>  今年はちゃんと Linux したり Perl したり xyzzy したいなと思いつつも,
> やっぱり楽な VZ に流れてしまうんだろうなと思います。

抱負が無いと言いながら、やりたい事は沢山あるんですね。大変な状況だとは
思いますが、健康が第一なので、お互い無理せず、がんばりましょう。

#定年まではまだまだ長い。(^^;


02069/02052 BQO00549  Konno            Re: ヌル2つを見つける(再び)
( 1) 07/01/16 00:16 02057へのコメント(文太さん) コメント数:1
文太さん

もう完成したのかもしれませんが、このマクロ、使い方がよく判らないので
まだ試してません。1kbuf.com を常駐させてから、マクロ2を実行させ、
それからマクロ1を実行するのでしょうか。


02070/01972 CRG00666  文太             Re^4: 姑息な変数作成法
( 1) 07/01/16 08:48 02066へのコメント(としき@会社さん)
としきさん

> あとは、
> こうすればもっとよくなる、みたいなご指摘を各方面から受ける可能性があると
> いうのはマクロでもなんでも同じでしょうし。

 どうか、どうか宜しくお願いいたします。

> >  Z80時代からなのね。
> 一応、パソコンですね。PC-8801ですから。
> 「アセンブラでスピードが違う」って、マシンサイクルまで見ると結構差が出る
> のですよ。バイト数が大きくなるコードの方がマシンサイクルで見ると早いとか
> あったりして、ほんと、パズルのようでした。

 そうか、パソコンかぁ。高かったんでしょうね。すさまじく。プリンタとかも
持ってたのですか。僕は MS-DOS 3時時代からですが、OS、ワープロ込みで3
0万くらいだったかな。清水の舞台でしたねぇ。違う話だ。
 なるほど、マシンサイクルね。クロックってことですよね。
 うん、パズルに容易になる世界ですもんね。

> >つまり使う人の短期記憶に頼った電卓ね。そんなの機械じゃねーぞ。
> これは、一部の人から強烈なクレームがつきそう。

 やばい、やばい。

> 200LXとかでも逆ポ電卓機能ってあったはずだし。
> Forthとか日本語MINDなんてプログラム言語でスタックを一切使わずにプログ
> ラムを組むことは実質的に不可能でしょうし。

 そうなんでしょうね。もっとも汎用的なデータ格納領域?xchgとかやっても実
際使ってるんですよね。φ(^^)メモメモ

> 昔なら半荘1回で4〜5回は振込みを決められたのですがね。

 えーと麻雀はほとんどやらないし分からないのですが、これ、自慢することじ
ゃないんじゃなかったですっけ。☆\ (^^;)
 なんかマジで悔しがってるみたいで…。


02071/02052 CRG00666  文太             Re^2: ヌル2つを見つける(再び)
( 1) 07/01/16 08:52 02069へのコメント(Konnoさん) コメント数:1
金野さん

 どうぞ、どうぞ試してください。m(__)m
 手順はこうです。

 (1)Vzは常駐外す。
 (2)1kbuf.com起動。Vz起動。
 (3)念のため、dump -mx9fbf -s16でメモリ状態の確認(-s32, -s64でも面白い)。
 (4)マクロ2で初期化。(ダンプでまっさらを確認)
 (5)マクロ3で書き込み。(ダンプで確認)
 (6)マクロ3シフトで読み出し。
 (7)マクロ1で長さが取得できることの確認。

 実験的要素を除くと、実質的な意味があるマクロは、(5)と(6)だけで
す。
 昨晩、ようやくヒストリー機能の骨格部分が完成しましたので、そのうちヒス
トリーつき 1024 バッファマクロに仕上げます。いつか…。取り出し方がまだ…。
ヒストリーが遡れない。


02072/02052 BQO00549  Konno            Re^3: ヌル2つを見つける(再び)
( 1) 07/01/18 07:26 02071へのコメント(文太さん) コメント数:1
文太さん

>  どうぞ、どうぞ試してください。m(__)m
>  手順はこうです。

ようやく試すことが出来ました。バッチリ動きました。(^_^)

>  (1)Vzは常駐外す。
>  (2)1kbuf.com起動。Vz起動。

1kbuf や delmem 1u なら、上位メモリに常駐するので、Vzは常駐したままでも
よさそうですね。

>  (3)念のため、dump -mx9fbf -s16でメモリ状態の確認(-s32, -s64でも面白い)。

私は dump を持ってないので debug で確認しました。

>  (4)マクロ2で初期化。(ダンプでまっさらを確認)

ここで気が付いたんですが、delmem で1024バイト確保するというのは、pspも
含めてなんですね。psp が全部ヌルになってビックリしました。(^^;
このままだとモバギではまずいのでは。128バイトずらすとか。

	x=$9fc7     ; $9FBF,		;base buf seg 
	y=896       ; 1024, 		;buf max length



02073/02052 CRG00666  文太             Re^4: ヌル2つを見つける(再び)
( 1) 07/01/18 12:19 02072へのコメント(Konnoさん) コメント数:2
金野さん、ありがとうございます。m(_B_)m

> ようやく試すことが出来ました。バッチリ動きました。(^_^)

 よかった。ふう。

> 1kbuf や delmem 1u なら、上位メモリに常駐するので、Vzは常駐したままでも
> よさそうですね。

 なるほど、そういうことか、とやってみました。成功! 当たり前なのでしょ
うが、言われないと分からないもので…。いやあ、これは楽だわい。ずっと、外
して 1kbuf して常駐し直して、をやってました。m(__)m
 だって窓がしょっちゅう落ちるのだもん。アセ。


 で、別件なのですが、少々気になることを発見しました。ここのところ逆アセ
with  symdebをやっていないので、まだそっち方面のバッチ連係2窓作戦は進展
がないのですが、 sw3には戻ってます。 で、先ほど、「後から1kbuf」をやって
vmapしてみると、

14BD <--    1    3888  vz 1.60Q -z                1B 21 29	(1)
15B1 1795   1    1408  command
160A <--    1    6304  kb16 JP,932,C:\WINDOWS\sy  09 2F
1795 <--    1    3856  command                    22 23 24
1887 <--    2  194352  キ 1.60Q -z				(2)
47FC        1  359440  <free>
9FBF <--    1    1024  

 とメモリが分断状態なのです。もちろん@XPです。(1) は MS-DOS 窓起動と
ともに常駐したVz。(2) は、ファイルをオープンしたときに上がったVzと思
われます。これは、健康な状態なのでしょうか?


> 私は dump を持ってないので debug で確認しました。

 さすが。お、オプションは何ですか?(^^;

 金野さんんなら、その気になれば自分の欲しいものを探せるはずですが、僕が
使っているのは、30行バイオスのlucifer/walkerさんの 

http://www.vector.co.jp/soft/dos/util/se002401.html

 です。他にもいっぱいありますねぇ。

> ここで気が付いたんですが、delmem で1024バイト確保するというのは、pspも
> 含めてなんですね。psp が全部ヌルになってビックリしました。(^^;
> このままだとモバギではまずいのでは。128バイトずらすとか。
> 	x=$9fc7     ; $9FBF,		;base buf seg 
> 	y=896       ; 1024, 		;buf max length

 そうだ、そうだ。モバギ用にここの解析をしなくてはいけなかったんだ。FC
BとかDTAとか MS-DOS 用ワークとか…。128 で常駐解除まで行けるかやって
みます。m(__)m


 ついでに(は?)、ヒストリー機能のついた新版を上げておきますね。ダンプ
しないとヒストリーしてるのが分からない、また取り出し時にヒストリーが遡れ
ないので実用性はない、の状態なのですが。でも、常駐チェックはしてくれまー
す。…本当は、もう少し整理できるはずなのだけど…。
 お暇なときにでも。
 次はメニューで出すつもりなので、いつになるやら…。


02074/02052 CRG00666  文太             Buf_Hcpy.def (v.0.5)
( 1) 07/01/18 12:28 02052へのコメント(文太さん) コメント数:1
 文太くん、珍しく、こつこつやっております。blog以来のことと思われます。
 次に、いける? という不安があるので、とりあえず、ここまで来ました、と
いう御礼とご報告。

=== Buf_Hcpy.def by Bunta ===;Dummy Buffer Histcopy
;special thanx to konno, YASAT and Toshiki. m(_B_)m
;thanx to Takahashi's Sabrina, Toshiki's 1kbuf.com and Se's delmem.com.
;ダミーバッファ用ヒストコピー。ブロックでデータ取得(まだ試行段階。テスト
;が楽)。普通起動でデータ保存(ヒストリー)、シフトで書き出し(とりあえず
;PSへ)
;dump -mx9fbf -s16
;dump -mx9fbf -s32
;dump -mx9fbf -s64
;dump -mx9fbf -s300

* Macro
50 ^\ "Buf_hcpy"; dummy buffer histcopy

	?.
	w=$9fbf,		;check seg
	x=$9fc0,		;base buf seg
	y=1008,			;buf max length

	; --- check TSR
	dx=w, &20 (ax)?? {&m("1kbuf, not on memory!").}

	(ks&1)? >R

	(mb)? {ps[=pr, #G ps], >a}

	pw[=pr, 
	&g("*** sending to the dummy buffer ***",30) 
	pw], (r<0) ?.

:a	&Sn(pr) a=r,		;☆SOURCE STR: pr,a
	&m("->Buf: %s",pr)


	;--- check the buffer & get the strlen2 info ---
	; --> si 0:empty;  n:len of all str in buffer
	dx=x, ax=y,
	&i("$(52,1F,33,DB,33,F6,39,1C,74,04,46,48,73,F8,C3)")
				;☆DEST STR: x,b(si)
	(ax==-1)? {&m("Warning: buffer destroyed.").}
	(si)?? >B


	;--- if strlen2+new_strlen, too long, discard the oldest str ---
:c	bx=x, (a+si+3>y)? { &i("$
	$(53,1F,32,DB,4E,8A,04,38,D8,74,0B,4E,73,F7,88,1C)$
	$(46,88,1C,4E,EB,04,46,88,1C,4E,C3)")
	>c }
	b=si,			;☆DEST STR: x,b(si)

	;===== Writing onto Buffer with history function =====
:A	&00 &01 .		;hist+
:B	&01 .			;hist- (1st time buf use, only)



	;=============== Reading from Buffer =================
:R
	;----- check the buf & get str_length (3)
	bx=x, dx=y,
	&i("$(53,1F,32,DB,33,F6,8A,04,38,D8,74,04,46,4A,73,F6,C3)")
	(si==0)	? {&m("Empty.  Cannot write out").}

	;----- reading (temporarily onto PS)
	ax=x, cx=si+1, si=0,  		;set source
	bx=gz,         di=ps,		;★set destination
	&i("$(50,1F,53,07,F3,A4,C3)")	;(4)
	&m("%s",ps)			;★
	.


; ---------------------  LOCAL MACROS  ---------------------

00:	;;==== hist 1st move ==== << dest=>dest move >>

;source ds(ax):si,  cx=copy times	;
	ax=x,  si=b, cx=b+1,		;set
;dest   es(bx):di,			;
	bx=x,  di=a+b+1,		;set

	&10			;copy backwards, exec!


01:	;;==== hist 2nd move ==== << src->dest copy >>

;source ds(ax):si,      cx=copy times	;
	ax=gz, si=pr+a, cx=a+1,         ;set
;dest   es(bx):di			;
	bx=x,  di=a,			;set

	&10			;copy backwards, exec!

10:	; --- hist backward copy for reading 
	&i("$(50,1F,53,07,FD,F3,A4,FC,C3)")


20:	; --- TSR check (5)
	&i(3+$)."$
	$(52,1F,33,F6,33,C0,B9,CD,20,39,0C,75,0E,83,C6,02)$
	$(B9,FF,9F,39,0C,75,04,B8,01,00,C3,C3)"


*

(source 1; str_len2−−ヌル2つまでの距離を測定)
; dx = dbuf segment
; ax = バッファサイズ
; si = (出力)文字列長
; bx used.

START:
	push dx			;セグメント設定
	pop ds			;同
        xor bx,bx		;初期化(ワード)
        xor si,si		;初期化(カウンタ)
NEXT:
        cmp word ptr [si],bx	;ワードで比較 (ds..0==0)? <--macro語
        je  FIN			;一致で終了
        inc si			;1バイトずつずらす
        dec ax			;限界値カウンタをデクリメント
        jnc NEXT		;限界値が0に達したら終了。そうでなければNEXT
FIN:
        ret


(source 2; str_cpy)
;----- ax (==ds), si, bx (==es), di, cx (length) 受け渡しは5つ
;後ろから cx bytes コピー
;ds:si -> es:di, cx (bytes to be copied, ie. copy times)
;<-- ax,bx,cx,si,di
	push ax
	pop ds
	push bx
	pop es
	std
	rep movsb
	cld
	ret


(source 3; str_len)
;------------------------------
;search 0 in ds:si (<-- ds==bx)
;--> bx (dbuf seg), dx (max)
;<-- si (counter)
START:
	push	bx		;ds
	pop	ds
        xor	bl,bl		;0
        xor	si,si		;counter
ABC:    mov     al,[si]
        cmp     al,bl
        je      XYZ
        inc     si
        dec	dx
        jnc     ABC
XYZ:	ret


(source 4; str_cpy)
;----- ax (==ds), si, bx (==es), di, cx (length) 受け渡しは5つ
;ただしこれは素直に(Vz仕様のまま)cldなので、上書きのみ。histは無理。
;histはお尻から動かすこと。
;ds:si -> es:di, cx (bytes to be copied)
	push ax
	pop ds
	push bx
	pop es
	rep movsb
	ret


(source 5; TSR check)
; check top 4 bytes of PSP; CD,20,FF,9F on that particular seg.
; <-- dx (check seg)
; --> ax (0:off, 1:on)
	push	dx
	pop	ds
	xor 	si,si
	xor	ax,ax
	mov	cx,20CDh
	cmp	[si],cx
	jne	NG
 	add	si,2
 	mov	cx,9FFFh
 	cmp	[si],cx
 	jne	NG
	mov	ax,1
	ret


02075/02052 CRG00666  文太             delmemなら
( 1) 07/01/19 00:20 02073へのコメント(文太さん) コメント数:1
 モバでまだ十分な実験はできていないのですが、 以下のように 144 bytes 無
駄(?)にする、というところで常駐解除オプションを生かせます。

	x=$9fc8,		;base buf seg
	y=880,			;buf max length


0009FBF0  CD 20 FF 9F 00 9A C0 00-00 00 DE 01 95 17 4B 01 |ヘ ...埖...゛...K.
0009FC00  95 17 56 01 95 17 95 17-01 01 01 00 02 FF FF FF |..V.............
0009FC10  FF FF FF FF FF FF FF FF-FF FF FF FF 00 00 0E 05 |................
0009FC20  17 3A 14 00 18 00 BF 9F-FF FF FF FF 00 00 00 00 |.:....ソ.........
0009FC30  05 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 |................
0009FC40  CD 21 CB 00 00 00 00 00-00 00 00 00 00 55 31 20 |ヘ!ヒ..........U1 
0009FC50  20 20 20 20 20 20 20 20-00 00 00 00 00 20 20 20 |        .....   
0009FC60  20 20 20 20 20 20 20 20-00 00 00 00 00 00 00 00 |        ........
0009FC70  07 64 65 6C 6D 65 6D 0D-66 20 2D 73 32 35 36 0D |.delmem.f -s256.
                              ココ
 きっと標準的なテクニックなのでしょうが、ココをIDにしているようです。
 逆にココまで削ると常駐解除ができなくなります。


02076/02052 BQO00549  Konno            Re^5: ヌル2つを見つける(再び)
( 1) 07/01/19 02:01 02073へのコメント(文太さん) コメント数:1
> 14BD <--    1    3888  vz 1.60Q -z                1B 21 29	(1)
> 15B1 1795   1    1408  command
> 160A <--    1    6304  kb16 JP,932,C:\WINDOWS\sy  09 2F
> 1795 <--    1    3856  command                    22 23 24
> 1887 <--    2  194352  キ 1.60Q -z				(2)
> 47FC        1  359440  <free>

この 'キ' は半角ですよね。これはオリジナルVzでも高橋版でもこうなると思います。
autoexec.vz で常駐したVz(sw3)で何かファイルをオープンしてから、[ESC] E で
コマンドラインに行き、小文字で vmap を実行すればこれが確認できます。
ということで、XPでのVzはこうなるようです。この状態で大きなプログラムを
実行すると分断されたままになってしまうので、良くないのは明らかですね。

> > 私は dump を持ってないので debug で確認しました。
>  さすが。お、オプションは何ですか?(^^;

D 9fbf:0
でダンプするだけです。(^^;

>  金野さんんなら、その気になれば自分の欲しいものを探せるはずですが、僕が
> 使っているのは、30行バイオスのlucifer/walkerさんの 
> http://www.vector.co.jp/soft/dos/util/se002401.html
>  です。他にもいっぱいありますねぇ。

あ、わざわざどうも。探せばどこかにあるかもしれないんですが、落としたほうが
早いですね。(^^;

>> このままだとモバギではまずいのでは。128バイトずらすとか。

すみません、全然違いましたね。適当なことを言ってしまい、申し訳ない。m(__)m

>  ついでに(は?)、ヒストリー機能のついた新版を上げておきますね。

こちらも手が空いたら試して見ます。だんだん形が出来ていくのが楽しみになってます。
(^_^)



02077/02052 CRG00666  文太             Re^6: ヌル2つを見つける(再び)
( 1) 07/01/19 15:35 02076へのコメント(Konnoさん)
金野さん

> ということで、XPでのVzはこうなるようです。この状態で大きなプログラムを
> 実行すると分断されたままになってしまうので、良くないのは明らかですね。

 やっぱり。うーん。気づかない方が幸せだったかも。

> でダンプするだけです。(^^;

 了解。(^^;

>  ついでに(は?)、ヒストリー機能のついた新版を上げておきますね。
> こちらも手が空いたら試して見ます。だんだん形が出来ていくのが楽しみになってます。

 こう言ってもらえるのがこんなに嬉しいとは。m(__)m
 次は遠そうです。3日ばからオフラインな出張をしてきます。m(__)m




02078/02052 BQO00549  Konno            Re: delmemなら
( 1) 07/01/22 23:09 02075へのコメント(文太さん) コメント数:1
>  モバでまだ十分な実験はできていないのですが、 以下のように 144 bytes 無
> 駄(?)にする、というところで常駐解除オプションを生かせます。

結構取られるものですね。常駐ソフトによっては全体で数十バイトしか使わないものも
あるので、やり方次第ではもう少し減らせないかと思うんですが、ソースが・・・

文太さん、delmem のMASM6用ソースがまだあるようでしたら、メールでいただけない
でしょうか。自力で改変するのはすぐには出来そうに無いもので。m(__)m

>  きっと標準的なテクニックなのでしょうが、ココをIDにしているようです。
>  逆にココまで削ると常駐解除ができなくなります。

私もこのあたりをいろいろ勉強しようと思っています。


02079/02052 CRG00666  文太             Re^2: delmemなら
( 1) 07/01/23 01:03 02078へのコメント(Konnoさん) コメント数:2
金野さん

>  結構取られるものですね。常駐ソフトによっては全体で数十バイトしか使わな
> いものもあるので、やり方次第ではもう少し減らせないかと思うんですが、ソー
> スが・・・

 まったく同感です。何しろメインメモリーですし、常駐解除が必要とされるの
は、EMSも十分とは言えないドコモバなわけで。
 (余談ですが、その後、このダミーバッファ計画をEMSにごっそり移すこと
も、いちおう考えました。確かに効率的です。無駄がまったくない。ただEMS
の場合はハンドルなどを記憶しておかなければならず、そのために僕などは、ロ
グ履歴のバッファを使うしかない、その管理の仕方もきっちり決めなくちゃなん
だよな、と気づいてしましました。ある意味、決め打ちできる 1kbuf,delmem は
管理が楽です。少なくとも開発環境はこっちがいいですね。)

>  文太さん、delmem の MASM6 用ソースがまだあるようでしたら、メールでいた
> だけないでしょうか。自力で改変するのはすぐには出来そうに無いもので。m(__)m

 了解しました。(またですが)明日、お昼頃までにはお送りします。HDをご
そごそしないといけないのと、ちょっと経緯の意味などを確認したいので。アセ
ンブラをまったく知らずに何やらしてましたので…。(^^;

> >  きっと標準的なテクニックなのでしょうが、ココをIDにしているようです。
> >  逆にココまで削ると常駐解除ができなくなります。
>  私もこのあたりをいろいろ勉強しようと思っています。

 ありがたいです。m(_B_)m

 その後、ちょっとだけもにょもにょしておりますが、うーん、道は険しいです
ね。でも楽しいです。Vzソースの暗号がすこーしずつ意味を持ち始めたりして。
これは嘘だ。m(__)m


02080/01922 BQO00549  Konno            Re: FDの作者出射さん死去
( 1) 07/01/23 01:11 01922へのコメント(文太さん) コメント数:1
>  昨年の11月、享年56才だそうです。合掌。み、短すぎる。

これは、2004年の11月ですね。どこかの掲示板で読んだ気がしたのでみなさん知って
いるものだと思い、つい放置してしまいましたが、あれぇ? いつも巡回している
掲示板では話題になってないなぁ?

野ざらし言の過去ログでチラッと書かれてますが、私が見たのはたぶん2chからの
リンクみたいですね。
http://retropc.net/archives/2005/10/fd.html


02081/02052 CRG00666  文太             追記メモ(PSPなど)
( 1) 07/01/23 11:17 02079へのコメント(文太さん) コメント数:2
 少しは頭に入れようと写してみましたが、下手くそで使いものにならん。
 9行目(80h以降)の件だけ、確認しました。

      0 1 2 3 4 5 6 7 8 9 A B C D E F  
    +---------------------------------+ 20h = INT 20h
 00h| 20h size  call 0005h P終了a ^C  | P = Program, a = address
 10h| ^C                              |
 20h|                       2Ch環境seg| 環境セグメント・アドレス
    |                                 |
    |                                 |
 50h| 21h RETF  拡張FCB     |5Ch FCB  |
 60h|              FCB                |
 70h|      (File Control Block)       | commandline = ★9行目
 80h|文 commandline       0Dh|DTA     | コマンドラインのパラメータ文字列
    |              DTA                | 文 = 文字数
 略 |     (Disk Transfer Address)     |
    |                                 |
    |                                 |
 F0h|                                 |
    +---------------------------------+
(ナツメ、『システムコール・ハンドブック』p.30より)


0009FBF0  CD 20 FF 9F 00 9A C0 00-00 00 DE 01 95 17 4B 01 |ヘ ...埖...゛...K.
0009FC00  95 17 56 01 95 17 95 17-01 01 01 00 02 FF FF FF |..V.............
0009FC10  FF FF FF FF FF FF FF FF-FF FF FF FF 00 00 0E 05 |................
0009FC20  C7 58 14 00 18 00 BF 9F-FF FF FF FF 00 00 00 00 |ヌX....ソ.........
0009FC30  05 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 |................
0009FC40  CD 21 CB 00 00 00 00 00-00 00 00 00 00 55 31 20 |ヘ!ヒ..........U1 
0009FC50  20 20 20 20 20 20 20 20-00 00 00 00 00 20 20 20 |        .....   
0009FC60  20 20 20 20 20 20 20 20-00 00 00 00 00 00 00 00 |        ........
0009FC70  07 64 65 6C 6D 65 6D 0D-00 00 00 00 00 00 00 00 |.delmem ★9行目

0009FBF0  CD 20 FF 9F 00 9A C0 00-00 00 DE 01 95 17 4B 01 |ヘ ...埖...゛...K.
0009FC00  95 17 56 01 95 17 95 17-01 01 01 00 02 FF FF FF |..V.............
0009FC10  FF FF FF FF FF FF FF FF-FF FF FF FF 99 58 75 01 |............儿u.
0009FC20  F1 58 14 00 18 00 BF 9F-FF FF FF FF 00 00 00 00 |&#57556;....ソ.........
0009FC30  05 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 |................
0009FC40  CD 21 CB 00 00 00 00 00-00 00 00 00 00 20 20 20 |ヘ!ヒ..........   
0009FC50  20 20 20 20 20 20 20 20-00 00 00 00 00 20 20 20 |        .....   
0009FC60  20 20 20 20 20 20 20 20-00 00 00 00 00 00 00 00 |        ........
0009FC70  07 31 4B 20 62 75 66 0D-66 20 2D 73 32 35 36 0D |.1K buf.f -s256.
                                                            ★同じく9行目

 IDは、たぶん、MS-DOS自体が配置したものを、delmemなんかは常駐解除その他
のオプションのために使っているのじゃないかな。
 でも、2つ目では、コマンドラインでは、>1kbufとしているので、としきさんは
何か細工をしてますね。(-s256などはその後のdumpコマンドの文字列ですね。ここ
に入るのが正しいのかどうか? カレントPSPか?)
 IDの位置は動かせるのかな? あるいは、VWXのAPIのように、'1K' or 'DE'と
いった2文字(バイト)だけでのID判定でもいいような…? 我が侭なのか…。



 (参考資料:f_call.shdより)<そういえばYASATさんも作成に協力されてました!
やっぱソース派なんだ。m(__)m

@PSP @プログラムセグメントプリフィクス @Psp 		 ★
F_関連資料
 PSP プログラムセグメントプリフィクス
  MSDOS は .exe.com をメモリにロードする時,プログ
   ラムセグメントの前に 100h バイトの作業領域を準備
   する。これを PSP(Program Segment Prefix)という。
    +00h  dw  int20h(プログラム終了)
    +02h  dw  使用できるメモリのサイズ
         (割り当てられた MCB の直後のセグメント)
    +04h  db  予約
    +05h  05  CALL 0005h用ファーコール(CP/M互換)
    +0Ah  dd  int22h プログラム終了アドレス
    +0Eh  dd  int23h <CTRL-C>の抜出しアドレス
    +12h  dd  int24h 重大エラーの抜出しアドレス
    +16h  dw  親プロセス PSP セグメント
    +18h  20  JFT(ハンドル <--> 内部 FCB 対応表)
              0 〜 0FEh:内部 FCB ブロック番号  0FFh:未使用
    +2Ch  dw  環境変数のテーブルのセグメントアドレス
    +2Eh  dw  SP 待避領域
    +30h  dw  SS 待避領域
    +32h  dw  ファイルテーブルの数(=14h)
    +34h  dd  ファイルテープルへのポインタ
    +38h  dd  以前の PSP へのポインタ
    +3Ch  dd  予約
    +40h  dw  MS-DOS バージョン(int21_30h 返り値)
    +42h  14  予約
    +50h  03  int 21h,retf
    +53h  dw  予約
    +55h  07 拡張FCB
    +5Ch  36 FCB (File Contrl Block)
    +5Ch 16 第1FCB
    +6Ch 20 第2FCB
    +80h 128 DTA (Disk Transfer Address)
     +80h 〜  コマンドライン文字数
    +81h 〜 コマンドライン, 0Dh, DTA・・・・・  ★これが9行目
 > FCB ファイルコントロールブロック
 > JFT ジョブファイルテーブル
 > DTA ディスク転送アドレス
; > MCB メモリコントロールブロック


02082/01922 CRG00666  文太             Re^2: FDの作者出射さん死去
( 1) 07/01/23 11:27 02080へのコメント(Konnoさん)
金野さん

> これは、2004年の11月ですね。

 確かに。修正ありがとうございました。

> http://retropc.net/archives/2005/10/fd.html

 この記事を読むと、如何にFDが優れたものであったのか伝わってきますね。
そんじょそこらの半端なフリーソフトとは違う、と。 天下の c.mos さんとて、
一度は「越えてやる」と挑戦を誓ったけれど、それ以外の拡張があれだけあった
ら、そんな余裕も気力もない、となっても仕方なかったんだろうな、と思いまし
た。どっちにしても、すごいソフトですごいプログラマ。時代の情熱と夢がたぎ
ってる。


02083/02052 CRG00666  文太             MASM6のrepとrepe
( 1) 07/01/23 12:06 02081へのコメント(文太さん) コメント数:1
日本語
http://support.microsoft.com/kb/120155/ja
英語
http://support.microsoft.com/?scid=kb%3Ben-us%3B120155&x=9&y=14

 別に、こんなことで機械に勝って喜ぼうというのでもないですが。念のため、
事態を正確に把握すべくやってみよう(前回やるべきだった(-_-; とはいえ、
そりゃ、無理だったな)。



【結論】
 解決方法
 OPTION M510 ディレクティブを使用する。あるいは、 REPE 命令プレフィックス
を使用する。

  RESOLUTION
  Assemble using the OPTION M510 directive, or use the REPE instruction
prefix.

--------------------------------------------------------------------------


 現象
 1 REP プレフィックスを使用した string-compare 命令(たとえば REP CMPSB)
をアセンブルすると、次のエラーメッセージが表示されます。

 エラー : 許可されていない命令プレフィックス A2068
 このコードは、バージョン 5.1  の MASM では、エラーなしでアセンブルされ
ます。

  SYMPTOMS
  Assembling  a  line of code that uses the REP instruction prefix with
one of the string-compare instructions, such as

   REP CMPSB

  produces the following error message:
  error A2068: instruction prefix not allowed
  The same line of code assembles without error under MASM version 5.1.

--------------------------

 原因
 REP CMPSB 命令は、MASM5.1 、あるいはMASM 6.xでOPTION M510を指定すると、
REPE CMPSB としてエンコードされます。

 CAUSE
  With  MASM version 5.1,  as well as when using MASM version 6.x  with
OPTION M510, the REP CMPSB instruction is encoded as a REPE CMPSB.

--------------------------

 注:これらの命令の違いは、REPがゼロフラグ(ZF)に関係なくCX 回命令を繰り
返すのに対して、 REPE と REPNEの方は、繰り返しに際してゼロフラグ(ZF)を確
認する点です。  REP CMPSB のためのエンコードは実際上存在しないため(何の
ことだよ?!)、 MASM 6.1 と 6.0 では、エラー メッセージが表示されます。

  NOTE:  The  difference  between  these  instructions  is that the REP
instruction  repeats CX times regardless of the zero flag (ZF); however,
the  REPE  and  REPNE  instructions  check  the  ZF flag as they repeat.
Because  there is virtually no encoding for REP CMPSB, MASM versions 6.0
and 6.1 generate an error message.

--------------------------

 最後にミソがついた感じ。 わかんねーじゃねーかよ。うーん、「repだけが有
意味で、repeで置き換えられない場面はないため」という意味なんでしょうね。



02084/02052 CXB00940  としき           Re: MASM6のrepとrepe
( 1) 07/01/23 19:35 02083へのコメント(文太さん) コメント数:1
参照先:http://www.hinocatv.ne.jp/~toshiki/
> Because  there is virtually no encoding for REP CMPSB, MASM versions 6.0
> and 6.1 generate an error message.

う〜ん、virtually はテクニカルタームではないので私には難しいのですが。
例えば、
「REP CMPSBをアセンブルしないことが現実的なので、MASM6.0と6.1では
 エラーメッセージを出力します」
っていうのだとどうでしょうか。


02085/02052 CRG00666  文太             Re^2: MASM6のrepとrepe
( 1) 07/01/23 20:37 02084へのコメント(としきさん) コメント数:1
> う〜ん、virtually はテクニカルタームではないので私には難しいのですが。

 はい、まず間違いなく、「仮想なんとか」なんかではなく、辞書にふつうに載
っている「実際上、事実上」でしょう。

> 例えば、
> 「REP CMPSBをアセンブルしないことが現実的なので、MASM6.0と6.1では
>  エラーメッセージを出力します」
> っていうのだとどうでしょうか。

 僕は、no encoding のほうに引っかかりました。つまりそれが意味している事
柄に。で、たぶん、分かりました。

 REP CMPSB に対応するマシン語コード(ここの正確な単語は分からないけど、
16 進のあれですよ。mov  ax が B8 になるときに B8。符号? 他の箇所では
エンコードとなってる)が、事実上存在しないので、MASM はエラーメッセージ
を出力します。

 大まかな意味は分かっても、こういうところがね。
 いいでしょ? これ。


02086/02052 CXB00940  としき           Re: 追記メモ(PSPなど)
( 1) 07/01/23 21:50 02081へのコメント(文太さん) コメント数:3
参照先:http://www.hinocatv.ne.jp/~toshiki/
あとで修正するかもしれませんが。
DOSのメモリ管理でまず最初に覚えておく必要があることは1つ。
確保したメモリブロックの前に、そのメモリブロック自身を管理するための領域
が16バイト確保される、ということ。この16バイトの中に、サイズやら次の
メモリブロックへのポインタやらその他モロモロの情報が格納されます。今回の
例では

> 0009FBF0  CD 20 FF 9F 00 9A C0 00-00 00 DE 01 95 17 4B 01 |ヘ ...埖...゛...K.

の部分。

次に、確保したメモリブロックの使い方なんですが、大抵はそこにプログラムが
入るわけです。常駐プログラムならcommand.comに抜けますが、常駐でなくても、
このへんは全て同じです。チャイルドプロセスなんてものが可能なプログラムも
あったりしますので、そこでメモリ状況をモニタリングしてみることも可能。
そして、PSPだのDTAだのというのは、そういうプログラム自身のために用
意されます。それらの領域の後ろにプログラム本体というか実体が鎮座するわけ
です。
もしここで、プログラムに実体がなければ、すなわち、単にメモリを確保してい
るだけならば、PSPやDTAなんてどこからも利用されないわけですから、そ
の部分まで含めて、他のプログラムから使うことも可能です。つまり、1KBの
メモリを確保したなら、丸まる1KBのメモリを自由に使ってしまっても構わな
いわけです。

が、実際には、それだけではなかったりします。
メモリの開放という事を考える必要があるかもしれません。
この場合、全く無関係のメモリを開放するわけにはいきません。
ではどうするか。メモリのどこかに印を付けておき、開放時にはその印をチェッ
クして、間違いなく自分が確保したもののみ開放する必要があります。既に忘れ
ていますが、delmemは多分、そういうことのためにDTAの直前の領域を使って
いるのではないかなぁ。1kbufについては、常駐解除を行わないのでわざわざID
を埋め込むこともないのですが、メモリマップ表示ツールで表示した際の見栄え
のためだけに埋め込みを行っております。
ということで、常駐解除を放棄し、さらにメモリマップ表示ツールでの表示も気
にしないことにすれば、この部分まで丸々使うことが可能です。

なお、常駐解除については、メモリアドレスを指定して強制的に開放させるとい
うツールがあったはずです。
また、メモリマップ表示ツールのために、IDというか任意の文字列をメモリの
特定の領域に埋め込む、なんてツールも見たことがあります。確かこれは、RIKA
ちゃんのソフトハウスの作品だったような。
両方とも、今でもベクターあたりにあるのではないかなぁ。
あとで探してみます。見つかったら紹介します。


02087/02052 BQO00549  Konno            Re^3: delmemなら
( 1) 07/01/23 22:24 02079へのコメント(文太さん) コメント数:1
文太さん

>  了解しました。(またですが)明日、お昼頃までにはお送りします。

いただきました。ありがとうございます。m(__)m
で、早速アセンブルしてみたんですが、なんか、com のサイズがみんな違うなぁ。

1994/03/30  01:11     1,024 DELMEM.COM   TASM   オリジナル
2007/01/23  21:35     1,048 DELMEM1.COM  MASM6  konno
2007/01/23  21:27     1,064 DELMEM5.COM  MASM5.1
2007/01/23  12:08     1,002 DELMEM6.COM  MASM6  文太

同じMASM6で違うのはなぜなんだろう?


>  その後、ちょっとだけもにょもにょしておりますが、うーん、道は険しいです
> ね。でも楽しいです。Vzソースの暗号がすこーしずつ意味を持ち始めたりして。

Vzのソースは最高の教科書かもしれませんよ。あの榊原さんも高橋さんも
DANNYさんもみなさんVzのソースでアセンブラを覚えたみたいですし。

私は覚えが悪くてまだまだですが、ソースを読むことで逆にマクロの仕組みが
わかったりするし、なによりVzが好きだから苦にならないんですね。


02088/02052 BQO00549  Konno            Re^3: MASM6のrepとrepe
( 1) 07/01/23 22:36 02085へのコメント(文太さん) コメント数:1
私が文太さんの訳を見て思ったのは

古いアセンブラでは、rep はゼロフラグを見ない仕様だったが、使いにくいので、
MASM5.1で repe を追加し、ついでに rep も同じ動作にしてしまった。
しかし、互換性の問題などを指摘されたので、MASM6では、区別するようになった。


全て想像です。(^^;


02089/02052 CRG00666  文太             Re^4: delmemなら
( 1) 07/01/23 23:17 02087へのコメント(Konnoさん) コメント数:1
金野さん

> 2007/01/23  21:35     1,048 DELMEM1.COM  MASM6  konno
> 2007/01/23  12:08     1,002 DELMEM6.COM  MASM6  文太

 これ、何か間違ってませんか? すぐひとを疑う奴。すいません。☆\ (^^;)
 だってバージョン用の変数領域削っているので、オリジナルより小さくなるは
ずなんです。 ラベルは増えてるんだっけ? う、あの sed スクリプトがバグっ
てた? いや、ちゃんと diff したし、だって金野さんと僕は同じソースを使っ
ているはずなんだ。

 もしかして、 リンカと exe2com で、できあがりサイズが違うってことあるん
ですか?

ML.EXE  	372,736	1999-03-29  16:45
LLD.EXE  	27,417  1993-02-08  17:43
EXE2COM.EXE  	14,699  1988-03-08  20:42

 を僕は使っているのですが…。 確か MASM6 のヴァージョンも同じだったはず
なので、すごく変ですよねぇ。いえ、上記のとおり、僕、送る前にアセンブルし
てるものですから、…???


 Vzソースのことは、あははははは、ということで。榊原、高橋、DANNY、
金野、ということでありますから。錯綜したソース、にまでまだ届いていません。
「マクロ」と「モジュール別開発法」までいけたらなぁ、とは少し思いますが。


02090/02052 CRG00666  文太             Re^4: MASM6のrepとrepe
( 1) 07/01/24 00:13 02088へのコメント(Konnoさん) コメント数:1
 (割と即答できる事柄を先にしてしまってます。すいません、としきさん)

> しかし、互換性の問題などを指摘されたので、MASM6では、区別するようになった。

 これより前はたぶんそんな感じかな、と思うのですが、ここは違うでしょう。
MASM6 では、rep(e なし) は廃止なんです。 存在しないのです。だからエラー
になるのです。ち、違う? delmem.asmの;buntaの行2つ目を、repe -> repと
すると(オリジナルに同じにすると)ml.exeが止まるはずです。


02091/02052 BQO00549  Konno            Re^5: delmemなら
( 1) 07/01/24 01:12 02089へのコメント(文太さん) コメント数:1
>  もしかして、 リンカと exe2com で、できあがりサイズが違うってことあるん
> ですか?

exe2comは私も使っているので関係ないでしょう。

> LLD.EXE  	27,417  1993-02-08  17:43

私のはたぶんMASM5.1のリンカですが、このLLD.EXE が最適化性能がいいのかなぁ。


02092/02052 BQO00549  Konno            Re^5: MASM6のrepとrepe
( 1) 07/01/24 01:16 02090へのコメント(文太さん) コメント数:1
>  これより前はたぶんそんな感じかな、と思うのですが、ここは違うでしょう。
> MASM6 では、rep(e なし) は廃止なんです。 存在しないのです。だからエラー
> になるのです。ち、違う? delmem.asmの;buntaの行2つ目を、repe -> repと
> すると(オリジナルに同じにすると)ml.exeが止まるはずです。

そうでしたね。言いなおしましょう。

しかし、互換性の問題などを指摘されたので、MASM6では区別し、rep を
使用できないようにした。(もともとのバグ仕様の証拠隠滅のため)


ああ、妄想がぁぁ


02093/02052 CRG00666  文太             Re^2: 追記メモ(PSPなど)
( 1) 07/01/24 09:28 02086へのコメント(としきさん) コメント数:1
としきさん、ちょっとずつ

> DOSのメモリ管理でまず最初に覚えておく必要があることは1つ。
> 確保したメモリブロックの前に、そのメモリブロック自身を管理するための領域
> が16バイト確保される、ということ。この16バイトの中に、サイズやら次の
> メモリブロックへのポインタやらその他モロモロの情報が格納されます。

 これがMCBのことですよね。「メモリブロックの前16バイト」。

> 今回の例では
> 0009FBF0  CD 20 FF 9F 00 9A C0 00-00 00 DE 01 95 17 4B 01 |ヘ ...埖...゛...K.
> の部分。

 前にも同じやりとりをしてると思うのですが、ここ、間違ってませんか。僕は、
上はPSPの先頭行だと思うのですが。
 で、この前が、MCBではないかと思うのです。


 もっと具体的に。
 下が、メモリ環境についてのvmapによる情報です。

1887 <--    1    3888  vz 1.60Q -z                1B 21 29
197B        1  549936  <free>
9FBF <--    1    1024  
----- EMS ver4.0 (frame: CF00h) -----       ----- XMS ver2.00 -----

 Vz常駐前に delmem を u1 オプションで常駐させてVzも常駐させた状態の
vmap。で、ダンプ。


C:\WORK2\DELM\ORG>dump -mx1886 -s32		;Vzの16バイト前
00018860  4D 87 18 F3 00 82 DC 82-56 5A 00 50 00 4D 00 83 |M....ま7Z.P.M.ο
00018870  CD 20 7A 19 00 9A F0 FE-1D F0 DE 01 95 17 4B 01 |~ z..夸..&#57501;...K.
;         int 20h

C:\WORK2\DELM\ORG>dump -mx9fbe -s32		;delmemの16バイト前
0009FBE0  5A BF 9F 40 00 00 00 00-00 00 00 00 00 00 00 00 |Zソ檗............
0009FBF0  CD 20 FF 9F 00 9A C0 00-00 00 DE 01 95 17 4B 01 |ヘ ...埖...゛...K.
;         int 20h

 ね、 M と Z で、PSPの256バイトの前16バイト、「次のメモリブロッ
クへのポインタ」などの情報を含む部分であるMCBでないですか? 違います
か?

> そして、PSPだのDTAだのというのは、そういうプログラム自身のために用
> 意されます。それらの領域の後ろにプログラム本体というか実体が鎮座するわけ
> です。

 ここまでで、何かとんでもない勘違いをしてますでしょうか。m(__)m


(間)うーん、うーん、うーん。前にも、密かに、巡った場所である。


 そうすると vmap はMCBはメモリブロック先頭とみなさず、PSP先頭をメ
モリブロック先頭とみなしているわけですよね。PSPがメモリを使っているプ
ログラム自身のためののもので、MCBがそれらを管理する MS-DOS のためのも
のと考えるなら、当たり前???。

 そうすると、delmem や 1kbuf が中からMCBに何かする、というのがよく分
からなくなります。

> 	MCB_LOWER	equ	0
> 	MCB_MINIMUM	equ	1
> 	MCB_UPPER	equ	2
> 	MCB_MAXIMUM	equ	3
> 	REMOVE		equ	4
(from delmem.asm)

 用語定義にまつわる誤解ですか???

 MCBって、

>  MCB メモリコントロールブロック
>   プロセスがロードされたり,メモリを確保(int21_48h など)
>   すると,その手前に作られる 16 bytes の管理領域。
>   ┃ ↑ MS-DOS      ┃
>   ┣━━━━━━━━┫ 《MCB memory control blocks》
>   ┃    <MCB>       ┃    +00h  db  メモリ管理用マーク
>   ┣━━━━━━━━┫              'M' = 次のブロックがある
>   ┃    PSP         ┃               'Z' = 最終ブロック
>   ┠────────┫    +01h  dw  使用するプロセスの PSP セグメント
>   ┃    プロセス    ┃              (0h 未使用, 8h DOS, 9h ADDDRV)
>   ┣━━━━━━━━┫    +03h  dw  パラグラフ(*16=サイズ)
>   ┃  <MCB>       ┃    +05h  db  未使用
>   ┣━━━━━━━━┫    +06h  10 オーナー名(プログラムまたは)
>   ┃ ↓ 確保メモリ  ┃               'SC'System Code
(from f_call.shd)

 「プロセス」のあと、「確保メモリ」の前にも取られるのですよねぇ???
 やっぱり、ワカワカだぁ〜。僕はどこで何を間違えているのでしょう? すい
ません。


02094/02052 CRG00666  文太             Re^6: delmemなら
( 1) 07/01/24 09:39 02091へのコメント(Konnoさん)
金野さん

C:\WORK2\DELM>ml DELMEM.ASM
C:\WORK2\DELM>lld delmem.obj
C:\WORK2\DELM>exe2com delmem.exe
C:\WORK2\DELM>Command.com /cDir delmem.*

DELMEM   ASM      7772 07-01-23   12:07
DELMEM   COM      1002 07-01-24    9:32
DELMEM   EXE      1770 07-01-24    9:32
DELMEM   OBJ      1419 07-01-24    9:31

 やっぱ、lld.exe が偉い、と考えるしかないようですね。違う delmem.asm を
間違えて送った、ということもないようですし。

 pconsoleのバグ出るし…。アセ、アセ。直すのやだぁ。


02095/02095 CRG00666  文太             8086用ニーモニック表は?
( 1) 07/01/24 11:20 コメント数:1
 「おい、何をまたやろうとしてるんだ?!」ご安心下さい、それほど間抜けで
はありません。とにかく、

 どっかに題の8086用ニーモニック表はないでしょうか。つまり、どういう
コードが 00 を発生させるのか知れたらいいな、と思ったのです。Vzマクロ内
では、やはり 00 は出てこないに越したことはないので。

 もちろん、テキストファイルの形が希望ですが。

 経緯は下のような具合。様々な不遇な日々を乗り越えて、久しぶりに動いてく
れて、心に余裕が出たようでもあります。

 以下のパーツを作っていて、 メモにあるように、mov [bx+si],al が 00 を発
生させ、mov [bx+si],dl は発生させませんでした。 これは単純なプログラムで
計算も何もしてないので、al と dl が交換可能だったのです。で、dl を使って
みたら、おめでとう! 00 が消えた!となりました。

 ネットを「ニーモニック表」 でググったのですが、Z80 はあるけど、8086 は
見つからないみたいような気がしました。

 どっかに情報ありませんでしょうか?

 あ、下のニーモちゃんに関しても、「こうしたら、もっといいよ」的アドバイ
スも歓迎です。m(__)m あんまりどうしようもないような気がするけど。



=== Macro Tmp by Bunta ===;
;「A 」「B 」のように「アルファベット+スペース」をZまでpsに出力。
; ショートカットキー書き込み用パーツ。
; mov [bx+si],alでalが00を発生させる。
* Macro
50 ^^ "mactest"

	bx=ps, 
	&i("$
	$(33,F6,B2,41,B6,20,88,10,46,88,30,46,FE,C2,83,FE)$
	$(34,75,F3,C3)")
	&m("%s",ps)
*

	xor	si,si
	mov	dl,'A'
	mov	dh,' '
ABC:
	mov	[bx+si],dl
	inc	si
	mov	[bx+si],dh
	inc	si
	inc	dl		;'A'++,
	cmp	si,52
	jne	ABC
	ret


02096/02052 CRG00666  文太             seinさんのmeuで1kbufの常駐解放!
( 1) 07/01/24 14:55 02086へのコメント(としきさん)
サンクス、としきさん

> なお、常駐解除については、メモリアドレスを指定して強制的に開放させるとい
> うツールがあったはずです。

 この一言で、昨晩から探した探した。読めないドックを読んだ、読んだ。
 じゃーん、以下で外れます。常駐解除後 vmap しても、正常です! おっし、
これでモバでも 1008 取れる! (MCB16 バイトは触らない。先頭4バイトを常
駐確認に使っているので、PSP 一行目の 16 バイトも触らない。)

http://www.vector.co.jp/soft/dos/hardware/se004906.html
(天下のseinさんの優れものです)


 1kbuf常駐後、以下で常駐解除。

>meu -qr mem segment=09fbe

 当然、読めないドックを読みながら、PSPとかMCBとか考えているわけで
すが、 16バイトと言ったら、やっぱり int 21h の前の行のことじゃないのか
な、と思っています。 狭義のMCB。ただ、sein さんも、PSPを含めて「メ
モり制御ブロック」と呼んでいるような感じがしました。広義のMCB。外れ?


 というわけで、2つのマクロの先頭は、醜いブロック if 文から解放され、ど
のマシン環境でも、以下のように設定すればよいことになりました。>金野さん。
 最初の16バイトはしょうがないでしょう。


=== Buf_Init.def by Bunta ===;buffer initialization
* Macro
50 ^^ "Buf_Init"

	x=$9fc0,		;base buf seg
	y=1008,			;buf max length


=== Buf_Hcpy.def by Bunta ===;Dummy Buffer Histcopy
* Macro
50 ^\ "Buf_hcpy"; dummy buffer histcopy

	?.
	w=$9fbf,		;check seg
	x=$9fc0,		;base buf seg
	y=1008,			;buf max length


02097/02052 CRG00666  文太             やっぱMCBで判断に変更 Buf_Hcpy.def (0.51)
( 1) 07/01/24 15:45 02074へのコメント(文太さん) コメント数:1
 なぜか僕の ps は 1024 なのです。どっかの時点でここまで大きくした。オリ
ジナルなんて 256 ですよ。
 で、やっぱこのサイズまでは、というこだわりがあるので、MCBの先頭3バ
イトで常駐確認することにして、1024確保することにしました。(ああ、あ
そこせっかく作ったのに…)

9FBF <--    1    1024  
----- EMS ver4.0 (frame: CF00h) -----       ----- XMS ver2.00 -----

>dump -mx9fbe -s32
0009FBE0  5A BF 9F 40 00 00 00 00-00 00 00 00 00 00 00 00 |Zソ檗............
0009FBF0  CD 20 FF 9F 00 9A C0 00-00 00 DE 01 6A 4D 4B 01 |ヘ ...埖...゛.jMK.

 独り言でした。

 で、超マイナーバーアップな新版2つ。お手間を取らせません。
 長文すぎるので前回とソースに変更のない部分、ニーモニック省略。

=== Buf_Hcpy.def (0.51) by Bunta ===;Dummy Buffer Histcopy
;special thanx to konno, YASAT and Toshiki. m(_B_)m
;thanx to Takahashi's Sabrina, Toshiki's 1kbuf.com and Se's delmem.com.
;ダミーバッファ用ヒストコピー。ブロックでデータ取得(まだ試行段階)。
;普通起動でデータ保存(ヒストリー)、シフトで書き出し(とりあえずPSへ)
;dump -mx9fbe -s32
;dump -mx9fbf -s256

* Macro
50 ^\ "Buf_hcpy"; dummy buffer histcopy

	?.
	w=$9fbe,		;check seg
	x=$9fbf,		;base buf seg
	y=1024,			;buf max length

	; --- check TSR
	dx=w, &20 (ax)?? {&m("1kbuf, not on memory!").}

	(ks&1)? >R

	(mb)? {ps[=pr, #G ps], >a}

	pw[=pr, 
	&g("*** sending to the dummy buffer ***",30) 
	pw], (r<0) ?.

:a	&Sn(pr) a=r,		;☆SOURCE STR: pr,a
	&m("->Buf: %s",pr)


	;--- check the buffer & get the strlen2 info ---
	; --> si 0:empty;  n:len of all str in buffer
	dx=x, ax=y,
	&i("$(52,1F,33,DB,33,F6,39,1C,74,04,46,48,73,F8,C3)")
				;☆DEST STR: x,b(si)
	(ax==-1)? {&m("Warning: buffer destroyed.").}
	(si)?? >B


	;--- if strlen2+new_strlen, too long, discard the oldest str ---
:c	bx=x, (a+si+3>y)? { &i("$
	$(53,1F,32,DB,4E,8A,04,38,D8,74,0B,4E,73,F7,88,1C)$
	$(46,88,1C,4E,EB,04,46,88,1C,4E,C3)")
	>c }
	b=si,			;☆DEST STR: x,b(si)

	;===== Writing onto Buffer with history function =====
:A	&00 &01 .		;hist+
:B	&01 .			;hist- (1st time buf use, only)



	;=============== Reading from Buffer =================
:R
	;----- check the buf & get str_length (3)
	bx=x, dx=y,
	&i("$(53,1F,32,DB,33,F6,8A,04,38,D8,74,04,46,4A,73,F6,C3)")
	(si==0)	? {&m("Empty.  Cannot write out").}

	;----- reading (temporarily onto PS)
	ax=x, cx=si+1, si=0,  		;set source
	bx=gz,         di=ps,		;★set destination
	&i("$(50,1F,53,07,F3,A4,C3)")	;(4)
	&m("%s",ps)			;★
	.


; ---------------------  LOCAL MACROS  ---------------------

00:	;;==== hist 1st move ==== << dest=>dest move >>

;source ds(ax):si,  cx=copy times	;
	ax=x,  si=b, cx=b+1,		;set
;dest   es(bx):di,			;
	bx=x,  di=a+b+1,		;set

	&10			;copy backwards, exec!


01:	;;==== hist 2nd move ==== << src->dest copy >>

;source ds(ax):si,      cx=copy times	;
	ax=gz, si=pr+a, cx=a+1,         ;set
;dest   es(bx):di			;
	bx=x,  di=a,			;set

	&10			;copy backwards, exec!

10:	; --- hist backward copy for reading 
	&i("$(50,1F,53,07,FD,F3,A4,FC,C3)")


20:	; --- TSR check (5)
0:	&i(3+$)."$
	$(52,1F,33,F6,33,C0,B9,5A,BF,39,0C,75,0C,83,C6,02)$
	$(B1,9F,38,0C,75,03,B8,01,00,C3)"

*


(source 5; TSR check)
; check top 3 bytes of PSP; 5A,BF,9F on that particular seg.
; check top 3 bytes of PSP; CD,20,FF,9F on that particular seg.
; <-- dx (check seg)
; --> ax (0:off, 1:on)
	push	dx
	pop	ds
	xor 	si,si
	xor	ax,ax
	mov	cx,0BF5Ah
	cmp	[si],cx
	jne	NG
 	add	si,2
 	mov	cl,9Fh
 	cmp	[si],cl
 	jne	NG
	mov	ax,1
NG:	ret

=== Buf_Init.def by Bunta ===;buffer initialization
* Macro
50 ^^ "Buf_Init"

	x=$9fbf,		;base buf seg
	y=1024,			;buf max length

	cx=y, bx=x,
	&i("$(53,1F,33,FF,32,C0,3B,CF,74,05,88,05,47,EB,F7,C3)")
	&m("Dummy buffer, Initialized") .

*



02098/02052 CXB00940  としき           Re^3: 追記メモ(PSPなど)
( 1) 07/01/24 19:39 02093へのコメント(文太さん) コメント数:1
参照先:http://www.hinocatv.ne.jp/~toshiki/
>  前にも同じやりとりをしてると思うのですが、ここ、間違ってませんか。僕は、
> 上はPSPの先頭行だと思うのですが。

はい、おもいっきり間違っています。
文太さんのおっしゃることの方が正しいです。
資料を確認しないで書くとこんなものです。

>  そうすると、delmem や 1kbuf が中からMCBに何かする、というのがよく分
> からなくなります。
> > 	MCB_LOWER	equ	0
> > 	MCB_MINIMUM	equ	1
> > 	MCB_UPPER	equ	2
> > 	MCB_MAXIMUM	equ	3
> > 	REMOVE		equ	4
> (from delmem.asm)

もう覚えていませんが、1kbufはプログラム内部からMCBをゴニョゴニョする、と
いうことはしていなかったはずです。
delmem.asmのこの部分は、単に可読性向上のための記号定数という事ではないか
なぁ。

>  「プロセス」のあと、「確保メモリ」の前にも取られるのですよねぇ???

なんかイメージが合わない。
通常というかデフォルトでは、下位からメモリが確保されます。
確保された中にプログラムがストアされて、これがこの場合の「プロセス」を意
味しているのだと思います。が、プロセスの後ろは確保されなかったメモリ、つ
まり空メモリになるような気がするのですが。まぁ、空メモリにしろ、どれだけ
のサイズがあるのかということをDOSは管理しなければならないので、そこに
MCBがあるのは不思議ではないのですが。
 

02099/02095 CXB00940  としき           Re: 8086用ニーモニック表は?
( 1) 07/01/24 19:44 02095へのコメント(文太さん) コメント数:1
参照先:http://www.hinocatv.ne.jp/~toshiki/
>  どっかに題の8086用ニーモニック表はないでしょうか。つまり、どういう

インテルのサイトにPDFファイルで存在しているという話を聞いたことがあり
ます。あと、DOS上で動く386か486用のフリーウェアの逆アセンブラに、
そのツールが対応しているニーモニックの一覧が同梱されているのを見たことが
ありますが、どこに行ったかなぁ。


02100/02052 CXB00940  としき           Re^2: 追記メモ(PSPなど)
( 1) 07/01/24 21:54 02086へのコメント(としきさん)
参照先:http://www.hinocatv.ne.jp/~toshiki/
> あとで修正するかもしれませんが。

大きな間違いがありまして、申し訳ありませんでした。
別発言参照、ということで。

> なお、常駐解除については、メモリアドレスを指定して強制的に開放させるとい
> うツールがあったはずです。

これは文太さんが見つけてくださったのでよいですね。

> また、メモリマップ表示ツールのために、IDというか任意の文字列をメモリの
> 特定の領域に埋め込む、なんてツールも見たことがあります。確かこれは、RIKA
> ちゃんのソフトハウスの作品だったような。

う〜ん、自分のHDDの中の関連のありそうなディレクトリを総ざらいしてみた
んだけど見つからない。かすかに記憶に残っているドキュメントの体裁から、絶
対にRIKAちゃんのソフトハウスかHeiwa-Rappa's Software Propsの作品だと思い
込んていたんで、WEBで検索をかけてみたところが、そもそもRIKAちゃんのソ
フトハウスの作品はWEBにほとんど乗っかっていない。平和ラッパさんの作品
はベクターにも幾つかあったけど。
一応、τομοακιさんの作られたMCB
(http://www.vector.co.jp/soft/dos/hardware/se001104.html)
にはこの機能があるようだけど、その他のいろんなツールのドキュメントによる
と、どうもDOS3までの場合のみ必要になる機能みたい。DOS4以降の場合
は、OSの機能できちんと表示できるという事なのかな。

なお、手元のHDDをサルベージする過程で、delmemでもeatmemでもないメモリ
イーターを発見したので紹介しておきます。TTYの時代のヘビーチャッターな
ら名前ぐらいはご存知だと思いますが、IDPICKというソフトがありました。この
ソフトの作者である「ばるちゅす」(H.Yamanaka)さんという方が作られたソフ
トで、GOMI.COMというものを発見してしまいました。残念ながらソースは同梱さ
れていませんでした。
このソフトもWEBの世界では発見できませんでした。というか、ばるちゅす氏
の作品がほとんど発見できませんでした。うみゅ、こうやって、だんだんとかつ
ての面白いソフトや当時のスター作家が埋もれていくのでしょうね。


02101/02095 CRG00666  文太             Re^2: 8086用ニーモニック表は?
( 1) 07/01/24 22:09 02099へのコメント(としきさん)
 清十郎さんのDIAS、i8086-Pentium 逆アセンブラについている、
80X86_OP.TXT  165,399  1996-12-25  06:11
 ですね。(実は時間かかった。)

http://www.vector.co.jp/soft/dos/prog/se008548.html

 最初、おぎょぎょぎょぎょ、となりましたが、00 を検索だけしてみましたが、
そんなに 00 って出そうもないですねぇ。?


02102/02052 CRG00666  文太             Re^4: 追記メモ(PSPなど)
( 1) 07/01/25 00:04 02098へのコメント(としきさん) コメント数:1
としきさん

 遠い昔のふにゃふにゃしてしまった記憶については了解です。
 僕は記憶にすらなっていない。もっとも(繰り返しですが)、SEINさんもPS
Pを含めた部分をMCBとドックで呼んでたと思いますよ。ごっちゃになりやす
いのでしょう、一般に。

> もう覚えていませんが、1kbufはプログラム内部からMCBをゴニョゴニョする、と
> いうことはしていなかったはずです。

 うん、そうみたいだった。MCB なんとかとか変数名には(定数か?)けっこう
使ってあったみたいだけど。

> delmem.asmのこの部分は、単に可読性向上のための記号定数という事ではないか
> なぁ。

 うーん、うん。ただdelmemと1kbufではMCBの内容が違うのは確か。もうどうで
もいいけど。 いいのか、そういうこと言って。とりあえず1kbuf+meuで常駐外れ
るので、MCBだけ残すラインでいきます。1024ゲット(^^)v
 いつか色々道具が揃って、やっぱ2キロバイトどうしても欲しい(メインメモ
リーにかよ)ときにはdelmem+meuに乗り換えます。そういう問題じゃないか?

> >  「プロセス」のあと、「確保メモリ」の前にも取られるのですよねぇ???
> なんかイメージが合わない。
> 通常というかデフォルトでは、下位からメモリが確保されます。

 はい、前とか上とか言ってましたがが、00000h番地からです。常駐ものAは後
からメモリーに載せられるBより(VWXとVz) 下位に置かれ、PSPはプログラ
ム本体より下位に、MCBはPSPより下位に置かれます。通常。

> 確保された中にプログラムがストアされて、これがこの場合の「プロセス」を意
> 味しているのだと思います。が、プロセスの後ろは確保されなかったメモリ、つ
> まり空メモリになるような気がするのですが。

 なると思います。  驚いたことに  1kbuf と delmem を meu で外したとき、<
free area> に MCB がついていて、Z の印があった。これを見たとき、少しはな
るほど! と思った。sein 様々です。

> まぁ、空メモリにしろ、どれだけ
> のサイズがあるのかということをDOSは管理しなければならないので、そこに
> MCBがあるのは不思議ではないのですが。

 あれ、イメージが合わないのは、どこだ?
 あ、「確保メモリ」だ。うーん。?


02103/02052 CRG00666  文太             Re^6: MASM6のrepとrepe
( 1) 07/01/25 00:12 02092へのコメント(Konnoさん)
金野さん

> もともとのバグ仕様の証拠隠滅のため

 あまりこだわって欲しくないかもしれませんが、やっぱ仕様自体がバグっぽい
ですか? ゼロフラグをチェックしないというのは。どうも分岐のキモであるフ
ラグが分かってなくて…。

>  注:これらの命令の違いは、REPがゼロフラグ(ZF)に関係なくCX 回命令を繰り
> 返すのに対して、 REPE と REPNEの方は、繰り返しに際してゼロフラグ(ZF)を確
> 認する点です。

 ただ、これはrep cmps(b|w)の場合ですよね。rep自体は生きている。


02104/02104 CRG00666  文太             置換のアルゴリズム
( 1) 07/01/25 00:20 コメント数:2
置換のアルゴリズム

 怒涛というか、次から次へと質問ばっかりではしたなくて申し訳ありません。

 また、最近、Vzがエディタであることを忘れているかのような話ばかりです
いません(これは謝ることでもないか)。というか、文章作成をしないで、この
文字はまだラインバッファだ、あ、テキストバッファか、つまりまだメモリー上
であって、ということはあのあたりのセグメントで…、みたいに病的になってい
て、本来のプログラミングの道具としてのVzの本質に迫っているかのようでも
あり、でも僕的にはけっこう大きく間違っているような気がかなりしてるようで
もあり…。どうでもよい!

 とにかく、訳あって、ヌルと改行文字の相互置換をしたいな、と思いました。
どんなアルゴリズムがノーマルというか標準的でしょうか。
 現実的な問題としては、 たかだか千〜2千バイト程度なので、 どうやっても
「動くものが作れれば楽しいし」、大差ないのでしょうが、どんなものであって
もキーボードの上の指と頭が止まってしまうもので、ご相談させていただきたい
わけです。どこにも例題ないし、Vzはどんなにテキストがでかくても超速いし。
 ちょっとこれは、Vzのソースのここ、では辛すぎでしょう。

 いちおう目論見というか夢を書いておくと、テキスト・PS(サイズが調整で
きて、ヒストリーのバッファならどこでも)・ダミーバッファ(DB)を相互乗
り換えできたら、DBに存在意義が出るな、と思っているわけです。サンダーバ
ード2号計画。
 じつはダミーバッファ文字列をメニューに出すのは、その上そこに編集コマン
ドを入れようなどと思ったら、遠い遠い先のことになるような気が強くしたので、
ダミーバッファにテキストからデータが送れたらとりあえずおいしい、と思って
いるわけです。PS・DB相互転送なら置換は要らないのですが、でもそれはち
と現実的でない。保存の紙というか、ファイルが必要だろうと。EMS はそのため
のワークに使えば勉強した甲斐があるかな、と。下のようなレベルのことができ
ないくせに、けっこう大胆なことを言っておりますが。しかし、このアイディア
ってけっこう根本的というか、けっこうすごいと思ってます。1024  でひらめい
た! 自慢するなよ。


 別に慌ててません。時間がおありのときにでも、どうか。


;----改行をヌルに
LF	equ	0Ah
CR	equ	0Dh
				;サイズは測ってあるとする。
	push	??
	pop	ds		;セグメント設定はあと。たぶんEMS
	xor	si,si		;ポインタ
	mov	cx,"size"	;サイズが分かってるとする。decするカウンタ。
	mov	ax,CRLF

MAIN:	cmp word ptr [si],ax	;メインループ、前から舐めて改行に会ったら
	je	REPL		;置換ルーチンで置換。
	inc	si		;改行でないならそのまま。
	dec	cx
	loop	MAIN		;サイズ(カウンタ)減らして、0で終了。
	jmp	FIN

REPL:	????			;★置換ルーチン

	jmp	MAIN

FIN:
	ret

 ★のところなのですが、愚直にやると、2バイト→1バイトでもあり、ポイン
タで書き直したら、その後ろ全部ごそっと前に動かさなければですよね。すると
サイズが変わる。厳密にサイズ情報を管理しながらやるしかないのでしょうか。
最後がヌル2つのヒストリーバッファでもないので、「こんな場面で終了」とい
うわけにもいかないな、と。うーん、すごく大変ですよねぇ、これ。うーん。こ
の愚直さがアセンブラの極意? もうちょっと何とかなるのではないかと。m(__)m


02105/02052 BQO00549  Konno            Re: やっぱMCBで判断に変更 Buf_Hcpy.def (0.51)
( 1) 07/01/25 00:23 02097へのコメント(文太さん) コメント数:1
文太さん、delmem 改造できました。(^_^)

メモリの先頭5バイト目に id を埋め込んだので、先頭16バイトは残しますが、
その先は丸々使えて、メモリの開放も出来ます。バッファ1024+16で、1040バイト
にしたので、9FBE から常駐になりますが、DEFのほうは
	x=$9FBF, 	;dummy buf seg (要1kbuf.com)
	y=1024, 	;buf max length
この指定で出来ますよ。

小文字コマンドの絡みもあるので、名前を buf1k としました。
 buf1k   でメモリに常駐
 buf1k r  でメモリ開放です。

ソースはまだスパゲっているので、メールで送ります。


02106/02104 BQO00549  Konno            Re: 置換のアルゴリズム
( 1) 07/01/25 00:45 02104へのコメント(文太さん) コメント数:1
>  とにかく、訳あって、ヌルと改行文字の相互置換をしたいな、と思いました。
> どんなアルゴリズムがノーマルというか標準的でしょうか。

これは、Vzの標準の置き換えでは駄目なんですか?
改行は、\n だし、置き換え窓で、^P  @  と打てばヌル文字に置き換えられますよね。

#こんな話ではなさそうだなぁ(^^;

02107/02052 CXB00940  としき           Re^5: 追記メモ(PSPなど)
( 1) 07/01/25 00:46 02102へのコメント(文太さん) コメント数:1
参照先:http://www.hinocatv.ne.jp/~toshiki/
> > もう覚えていませんが、1kbufはプログラム内部からMCBをゴニョゴニョする、と
> > いうことはしていなかったはずです。
>  うん、そうみたいだった。MCB なんとかとか変数名には(定数か?)けっこう
> 使ってあったみたいだけど。

ソースを確認してみました。
確かに、いくつかMCBなんとかっていうのを使っていますね。
これ、実は、delmemで使っているものをそのまま名前を変えずに使いまわしてい
るのです。名は体を表すようにするべきであり、そうであれば、MCBという言葉を
やめてストラテジという用語を使うべきなんでしょうね。

>  あ、「確保メモリ」だ。うーん。?

そです。
確保していないはずのところを確保メモリと表現しているようなので、なんとな
く違和感バリバリという感じです。


02108/02052 CRG00666  文太             Re^2: やっぱMCBで判断に変更 Buf_Hcpy.def (0.51)
( 1) 07/01/25 01:00 02105へのコメント(Konnoさん) コメント数:2
金野さん

> 文太さん、delmem 改造できました。(^_^)
> メモリの先頭5バイト目に id を埋め込んだので、先頭16バイトは残しますが、
> その先は丸々使えて、メモリの開放も出来ます。バッファ1024+16で、1040バイト
> にしたので、9FBE から常駐になりますが、DEFのほうは

 まだ、内容把握できてませんが、明日の夜に。
 でも、もっと縮んだ?!!! うっひょーーー! もうVzな人たちって努力
を惜しまないっていうか、ケチなんだもん。スキ。キスよりAがスキ、みたく。
 メールは届いてました。m(__)m


02109/02104 CXB00940  としき           Re: 置換のアルゴリズム
( 1) 07/01/25 01:03 02104へのコメント(文太さん) コメント数:1
参照先:http://www.hinocatv.ne.jp/~toshiki/
>  ★のところなのですが、愚直にやると、2バイト→1バイトでもあり、ポイン
> タで書き直したら、その後ろ全部ごそっと前に動かさなければですよね。すると
> サイズが変わる。厳密にサイズ情報を管理しながらやるしかないのでしょうか。

そうですね。
データサイズがある程度小さいのなら、愚直にやるのが単純だと思います。
数百KBとか数MBとかを相手にするのなら、データ構造から見直すべきだと
アドバイスしたいところですが。

よくあるのは、入力側と出力側を別領域にして、基本はコピー、という方法かな。
特定の文字の時だけ、別の文字をコピーする、というやつね。


02110/02104 CRG00666  文太             Re^2: 置換のアルゴリズム
( 1) 07/01/25 01:03 02106へのコメント(Konnoさん)
金野さん

> これは、Vzの標準の置き換えでは駄目なんですか?
> 改行は、\n だし、置き換え窓で、^P  @  と打てばヌル文字に置き換えられますよね。
 うーん、#56 ?
 異セグとEMSがらみなんですよ。一回ファイルにダンプか? これが楽かも。


02111/02104 CRG00666  文太             Re^2: 置換のアルゴリズム
( 1) 07/01/25 01:07 02109へのコメント(としきさん)
としきさん

> データサイズがある程度小さいのなら、愚直にやるのが単純だと思います。

 そう?!

> よくあるのは、入力側と出力側を別領域にして、基本はコピー、という方法かな。
> 特定の文字の時だけ、別の文字をコピーする、というやつね。

 なるほど! これか?
 まったく別の挫折したニーモニックで、同じことは体験してました。別領域に
すれば、もっと単純じゃねーか、と。でも、こっちにもってこれなかった。もっ
てきたからといって、出来るわけではないのだけど。

 m(__)m


02112/02052 CRG00666  文太             Re^6: 追記メモ(PSPなど)
( 1) 07/01/25 01:14 02107へのコメント(としきさん)
としきさん

> ソースを確認してみました。

 どういう文脈でも、どすが効くなぁ。

> 確かに、いくつかMCBなんとかっていうのを使っていますね。

 了解。

> これ、実は、delmemで使っているものをそのまま名前を変えずに使いまわしてい
> るのです。名は体を表すようにするべきであり、そうであれば、MCBという言葉を
> やめてストラテジという用語を使うべきなんでしょうね。

 これは、将来的に、けっこうおいしい情報かも。

> >  あ、「確保メモリ」だ。うーん。?
> そです。
> 確保していないはずのところを確保メモリと表現しているようなので、なんとな
> く違和感バリバリという感じです。

 とはいえですね、たぶん和生さんだと思うけど、どっかからそのまま写してる
と思うのです。僕は、com ファイルでの、データセグメントのこと? exe ファ
イルだとそんな具合になる? とか空想したのですが。
 ま、バリバリだ。笑い。


02113/02052 CRG00666  文太             thanx for buf1k.com & bufxchg.def (debut or prototype)
( 1) 07/01/26 00:44 02108へのコメント(文太さん) コメント数:2
金野さん、

 buf1k.com、ちゃんと仕事してくれてますよ。m(__)m
 常駐を外すとき、メモリを掃除してますか? どうもそんな風に見えたもので。

 完全未完成品ですが、EMS をワークに使うサンプルということで(サンプルな
んか要らないでしょうが)以下をどうぞ。

 完成すると、history.def by m.gannに小判鮫できるはずなんだけど。

 最初にこのままで。次回、マクロのコメントアウト(★部)をとり、完全交換
を試して下さい。そうしないと、バグ、というか、いい加減な作りのせいで、
ダミーバッファに何もないと、名前のとおり、仕様のとおり、愚直にpsを空に
(?)してしまって面白くありません。

 ほんとは BUF_HCPY.DEF から文字列をDバフに送ったりした方が面白いのです
が、色々と調整が必要なのでpsのほうを変えて、試すなら試して下さい。
 必要な調整というのは、マクロ冒頭と TSR チェック部のセグメントです。 ハ
ンドアセンブルできるけど…。


 追伸: #56 技コメントありがとうございまいした。 それで全部解決ではない
と思いますが、でも、とてもおいしいアドバイスだったと、今日、電車の中で思
いつきました。時間かかる奴なんですよ。としきさんの愚直<別領域案と合わせ
た方法で、きっとうまくいくと思います(手つかずだけど)。両方思いつくのに、
僕ならまじめに考えたとして、3カ月はかかっていたでしょう。m(__)m

 buf1k.comですが、あのメッセージだけ嫌なので(rcp32の話みたいだ)、明日、
アセンブルし直してみます。すいませーん。
 できなかったりして。



=== BUFXCHG.def by Bunta ===;DBUFF_PS exchanger
;色々イージーな作りなので、ジョークお試し版という認識で。
* Macro
50 ^^ "bufxchg"

	(ef)?? {&m("not enough EMS!").}

	w=$9fbd,		;check seg
	x=$9fbf,		;base buf seg
	y=1040,			;buf max length


	;=== check TSR
	dx=w, &00 (ax)?? {&m("buf1k, not on memory!").}


	;=== get 2 bufs info & check ===
	dx=x, si-, ax=y, &01 f=si,		;<f>strlen2 on buf
	dx=gz, si=ps, ax=hs, &01 g=si-ps,	;<g>strlen2 on ps
	(y-hs>0) ? {m=hs,} ? {m=y,}		;<m>smaller is the norm

	(f>m || g>m) ? {&m("What?!!").}		;easy check


	;=== get work on EMS ===
        &Ea(1)  a=r,		;EMS allocation, EMShandle <a>
        &Em(a) b=r,		;EMS mapping, segment <b>


	;=== exchange dbuf & ps thru EMS

	;--copy ps -> EMS
	ax=gz, si=ps, cx=g+2,	;set source
	bx=b, di=0,		;set destination
	&10
; 	;--copy dbuf -> ps				;★
; 	ax=x, si-, cx=f+2,	;set source
; 	bx=gz, di=ps,		;set destination
; 	&10
	;--copy EMS -> dbuf
	ax=b, si-, cx=g+2,	;set source
	bx=x, di-,		;set destination
	&10

	;=== close work on EMS
        &Ef(a)			;release EMS

	&m("DBuf <-> PS completed").


;* === * === * === * ===   LOCAL MACROS   === * === * === * === *

00:	;---TSR check
	&i(3+$)."$
	$(52,1F,33,F6,33,C0,B9,5A,BE,39,0C,75,0C,83,C6,02)$
	$(B1,9F,38,0C,75,03,B8,01,00,C3)"

01:	;---strlen2
	; <-- dx = segment, si = offset, ax = buffersize (serch max)
	; --> si = offset
	&i("$(52,1F,33,DB,39,1C,74,04,46,48,73,F8,C3)")

10:	;---strcpy; ax:si -> bx:di, cx times
	&i("$(50,1F,53,07,F3,A4,C3)")	;(4)

*

(source 1; strlen2−−ヌル2つまでの距離を測定)少し汎用化
; <-- dx = segment, si = offset, ax = buffer size (serch max)
; --> si = offset

START:
	push 	dx		;set segment
	pop 	ds		;
        xor 	bx,bx		;0 (word)
NEXT:
        cmp word ptr [si],bx	;cmp by the word (ds..0==0)? 
        je  	FIN		;
        inc 	si		;inc by the byte
        dec 	ax		;
        jnc 	NEXT		;jump if not with carryflag
FIN:
        ret


02114/02052 CRG00666  文太             Re: thanx for buf1k.com & bufxchg.def (debut or prototype)
( 1) 07/01/26 00:55 02113へのコメント(文太さん)
>  必要な調整というのは、マクロ冒頭と TSR チェック部のセグメントです。 ハ
> ンドアセンブルできるけど…。

 阿呆!

Buf_Hcpy.def
の冒頭を

	w=$9fbd,		;check seg
	x=$9fbf,		;base buf seg
	y=1040,			;buf max length

にして、

TSRチェック部を

20:	;---TSR check
	&i(3+$)."$
	$(52,1F,33,F6,33,C0,B9,5A,BE,39,0C,75,0C,83,C6,02)$
	$(B1,9F,38,0C,75,03,B8,01,00,C3)"

に差し替え、そしてBuf_HcpyでちゃんとDBに文字列を入れれば、psが消えて
不愉快ということはないはずです。たぶん。


02115/02052 BQO00549  Konno            Re^3: やっぱMCBで判断に変更 Buf_Hcpy.def (0.51)
( 1) 07/01/26 01:37 02108へのコメント(文太さん) コメント数:1
文太さん

> > メモリの先頭5バイト目に id を埋め込んだので

これは7バイト目だったですね。いいかげんですみませんでした。

> ケチなんだもん。スキ。キスよりAがスキ、みたく。

褒め言葉なのかな? ABCのAってなんだっけ? なんてどうでもいいんですが、

メールへのレスになりますが、公開はDOC読んで著作権とか問題なければ。
としきさんの1kbufほど変れば問題ないでしょうが、今のままではほとんど
delmem のソースそのままなので。

> sein さんの、優れものです。vmap より zmap よりすごい。

meu.com 使ってみました。これはいい!! MCBってPSPの前の16バイトだというのが
よくわかりました。これからはVMAPの代わりに使います。

 sein さんって、FORG や NECOシリーズの作者だったんですね。すごいひとだ。


02116/02052 BQO00549  Konno            Re: thanx for buf1k.com & bufxchg.def (debut or prototype)
( 1) 07/01/26 01:55 02113へのコメント(文太さん) コメント数:1
>  buf1k.com、ちゃんと仕事してくれてますよ。m(__)m
>  常駐を外すとき、メモリを掃除してますか? どうもそんな風に見えたもので。

??? delmem と違う動作だとしたらバグってるのかも。id の埋め込みの
副作用とか?

>  完全未完成品ですが、EMS をワークに使うサンプルということで(サンプルな
> んか要らないでしょうが)以下をどうぞ。

今度はEMSですか。文太さんのスピードにはとても付いていけません。(^^;
完成版をじっくり試したいと思います。(^^;

>  buf1k.comですが、あのメッセージだけ嫌なので(rcp32の話みたいだ)、明日、
> アセンブルし直してみます。すいませーん。

どうぞどうぞ。ちなみにどんなメッセージがいいんでしょう。私はセンスが
無いもので。

>	y=1040,			;buf max length

これ、1024 じゃないんですか?


02117/02052 CRG00666  文太             buf1k's ID, MCB, meu.comとか
( 1) 07/01/26 10:53 02115へのコメント(Konnoさん)
金野さん

> これは7バイト目だったですね。いいかげんですみませんでした。

0009FBD0  5A BE 9F 41 00 00 00 00-00 00 00 00 00 00 00 00 |Zセ蘗............
0009FBE0  CD 20 FF 9F 00 07 62 75-66 31 6B 0D 00 17 4B 01 |ヘ ....buf1k...K.
                            b  u  f  1  k

 ですね。ただ常駐判断は、前のMCBでという方針のままで行くことにしたの
で、TSR check 改変、またかよ、から逃れられました。buf1k 文字列は常駐解除
のためのIDとしてはちゃんと機能を果たすんですからいいですよね。無駄なし。

> > ケチなんだもん。スキ。キスよりAがスキ、みたく。
> 褒め言葉なのかな?

 です、です。何かの車のパーツの宣伝だったと思うけど…。

> メールへのレスになりますが、公開はDOC読んで著作権とか問題なければ。
> としきさんの1kbufほど変れば問題ないでしょうが、今のままではほとんど
> delmem のソースそのままなので。

 たしかに、そうなのかな。

> > sein さんの、優れものです。vmap より zmap よりすごい。
> meu.com 使ってみました。これはいい!! MCBってPSPの前の16バイトだというのが
> よくわかりました。これからはVMAPの代わりに使います。
>  sein さんって、FORG や NECOシリーズの作者だったんですね。すごいひとだ。

 すごいっすよ。思わず、メモリ管理がよく分かるようになれる…なりそう…。


02118/02052 CRG00666  文太             Re^2: thanx for buf1k.com & bufxchg.def (debut or prototype)
( 1) 07/01/26 11:12 02116へのコメント(Konnoさん) コメント数:1
金野さん

> ??? delmem と違う動作だとしたらバグってるのかも。id の埋め込みの
> 副作用とか?

 いけないマクロの副作用という気がしてきました。訊いておいてよかった。◆

> 今度はEMSですか。文太さんのスピードにはとても付いていけません。(^^;
> 完成版をじっくり試したいと思います。(^^;

 「完成品をじっくり」は、たしかにそうほうが賢明という感じ。ただ問題は完
成しないかもしれない点で…。今日は少し時間とれるのだけど、疲れが溜まって
て。
 そりゃ、そういう無理すれば、溜まるでしょう、若くないんだし、という感じ。

 ただEMSに関しては、誤解してますよ。大昔に(という感じ)としきさんが
言ってたように、ワークとして使う分には、ポインタの概念がある人が &S 関数
を使うようなものです。簡単です。保存バッファにしようとすると、ある意味、
メタレベルに上がってしまうので面倒ですが。
 なーんて偉そうに言ってみたり。天罰が下りそうな予感も、ある。

> >  buf1k.comですが、あのメッセージだけ嫌なので(rcp32の話みたいだ)、明日、
> > アセンブルし直してみます。すいませーん。
> どうぞどうぞ。ちなみにどんなメッセージがいいんでしょう。私はセンスが
> 無いもので。

C:\>buf1k

DELMEM ver0.01
 1キロバイト上位メモリから確保しました。 (   R (remove)   ->  メモリ解放 )

↓

 Buf1k installed.  For removal, Buf1k R.
とか。

 おとなしく。半角カナというのがバランス悪いような…。元のまま?

> >	y=1040,			;buf max length
> これ、1024 じゃないんですか?

 きゃっ! 16引くの忘れてる。これが◆の原因の一つだな。多謝です。m(__)m


02119/02052 BQO00549  Konno            Re^3: thanx for buf1k.com & bufxchg.def (debut or prototype)
( 1) 07/01/27 01:13 02118へのコメント(文太さん) コメント数:1
>  いけないマクロの副作用という気がしてきました。訊いておいてよかった。◆

う〜ん、私も結構適当に弄ったので、間違えているところがあるかもしれません。

> C:\>buf1k
> DELMEM ver0.01
>  1キロバイト上位メモリから確保しました。 (   R (remove)   ->  メモリ解放 )
> ↓
>  Buf1k installed.  For removal, Buf1k R.

なるほど、すっきりしてますね。いただきます。m(__)m げげ、DELMEMのメッセージ
残ってたか。(^^; DOCを読んでも特に改造禁止みたいな記述も無いし、もう少し
弄ったら石の山にでも捨てるか。

>  きゃっ! 16引くの忘れてる。これが◆の原因の一つだな。多謝です。m(__)m

何か理由があるんだろうなぁと思ってました。(^^;


02120/02120 CRG00666  文太             すごく変なこと(#22)
( 1) 07/01/27 19:19 コメント数:1
 この件だけ、ちょっと急いで。「制御文字入力」#22のことです。

 僕の環境がなんか変なのかな? とも思うのですが、#22 をインスタント窓で
やると、またマクロの中でやると、マシンが落ちます。XP、ドコモバ、旧8で
試しました。旧8のみ vzt03k です。XP、モバは vzkq1 です。
 うーん、びっくり。このところ変なことをいっぱいやってますので、メモリ遊
びなしの初期状態にして試しましたが、再現しています。 オリジナル vz1.6 で
も、XPではたぶん再現します。

 どなたか追試お願いできますでしょうか。
 仕様? え、え、え ??? マクロの中ででもです。マクロの中で使うこと
が想定されてない? インスタントはマクロの中だからなぁ。普通に編集画面そ
の他でやる分には問題ありませんでした。

 すいません、どうか宜しくお願いします。m(__)m

 &o($0) でいいはいいのですが、気持ちが悪くて。 何か僕の理解が間違ってそ
うな気もしていますが、でもマシンが落ちることはないだろうに…??? m(__)m


02121/02120 CXB00940  としき           Re: すごく変なこと(#22)
( 1) 07/01/27 23:36 02120へのコメント(文太さん) コメント数:1
参照先:http://www.hinocatv.ne.jp/~toshiki/
私のところでも再現しました。すごく変です。
試したシステムは、PC-98はDOS6.2、vzt03kとポケ3 DOS3.1、H.konnno 03です。
あれ、今気がついたけど、ポケ3版て186オプションでアセンブルしてあるのかな。
ポケ3は286互換CPU搭載だから、ちょっともったいないかも。

私の実験方法は、エスカルゴの中で #22[RET] これだけです。
まずはPC-98で実験。
1回目はとあるソフトのチャイルドプロセスで適当なファイルをオープンして、
そこでエスカルゴから#22、するとステータスラインとかは残ったままでコマンド
ラインに落ちてしまいました。そこで3〜4回ほどリターンを叩いたらそこで固
まってしまいました。ただ、^@[DEL]でHSBの高速再起動は可能でした。
再起動後すぐに、今度は\[ESC]でコンソールファイルを開き、再びエスカルゴで
実行したら、今度は画面が満艦飾になり、一切のキーが効きません。
リセットボタンで再起動をかけました。

ポケ3もほぼ同様。
コンソールファイルからエスカルゴで #22をしたら、ステータスラインとかはそ
のままで、コマンドラインに落ちてしまいました。ただ、こちらはかなり症状が
軽くて、5〜6回リターンを叩いても固まりません。では、ということでVzの
常駐を解除したら、無事に解除できました。

う〜ん、何が悪いんだろう。メモリまわりかなぁ。
例えば、EMSもXMSも使わずに常駐して試してみる、なんてのはどうかな。


02122/02120 CRG00666  文太             やっぱり変か(#22)
( 1) 07/01/28 00:08 02121へのコメント(としきさん) コメント数:1
としきさん、

 ありがとうございます。やっぱりすごく変ですか? ですよね。

> 例えば、EMSもXMSも使わずに常駐して試してみる、なんてのはどうかな。

 これ試してみましたが、やはり変。メモアロエラーっぽいのかな、という感触。
 編集画面で、インスタントが主にやってみたテストですが、コマンドラインの
影がテキストのカーソル付近にでます。影って、そのままなんですが。(前回報
告時も現象はほとんど同じ。窓飛んだけど。)

 EMS0、XMS0の状態で、勝手が分からないもので、おお、とか言いなが
らテストしたら、少し症状が軽微だったようです。リターンの連打でいちおう戻
ったように見えた。でも、普段 EMS を使っている ATOK8 がストライキ(僕のメ
モアロエラー感触の根拠)。EMS、XMSに関係なく。

 その後、僕が調べたのは、
  original.com+original.defでも発現する。
  #22で過去ログのDC分をグレップ、とりわけ情報見あたらず。
  vzdefディレクトリ665個に、同じく"#22"でグレップ、ヒットなし
 (マクロで使わなさそうではある)。

 まあ、実害は軽微とはいえ、新しい「変」の発見でしょうか?


02123/02052 CRG00666  文太             Re^4: thanx for buf1k.com & bufxchg.def (debut or prototype)
( 1) 07/01/28 00:26 02119へのコメント(Konnoさん) コメント数:1
金野さん

> う〜ん、私も結構適当に弄ったので、間違えているところがあるかもしれません。

 そ、そんなぁ。マクロの冒頭をきちんと整理したら、今のところ大丈夫ですが。

> > C:\>buf1k
> なるほど、すっきりしてますね。いただきます。m(__)m げげ、DELMEMのメッセージ
> 残ってたか。(^^; DOCを読んでも特に改造禁止みたいな記述も無いし、もう少し
> 弄ったら石の山にでも捨てるか。

 捨てないでぇ。
 ずうずうしく「もう少し弄る」の部分ですが、常駐量を1k以外に変更できる
のはやはりおいしいオプションだと個人的には思ってます。僕の使用目的上、常
に上位からがうれしくはありますが。
 でも、せっかくだから、何か積極的に足したいですよね。何かないかなぁ???
 うん、delmem は単位がキロです。 これ、もっと細かく指定できるようにして
欲しいです。 お願いします。memory eater はこれが出来ました。上位指定が確
かできなくて、致命的だったのだけど。 残念なことに、memory eater にはソー
スがありませんが。もちろん、16バイト単位でパラグラフにして丸めてはいま
したが。

EATMEM
http://www.vector.co.jp/soft/dos/hardware/se018057.html

> >  きゃっ! 16引くの忘れてる。これが◆の原因の一つだな。多謝です。m(__)m
> 何か理由があるんだろうなぁと思ってました。(^^;

 まったくの不注意ミスです。m(__)m

 金野アイディアの置換でようやく目途が立ちました。テキストバッファからの
転送という、文太的には、何やってんだかのハイテク。目の前のテキストをメモ
リー上(すでに変だけど)のものとして扱うのって大変ですね。ただテキストバ
ッファ(セグメント)の頭の 0d0a が今度は邪魔ものになってる。おかしいな〜、
計算が合わない。


02124/02120 BQO00549  Konno            Re: やっぱり変か(#22)
( 1) 07/01/28 01:49 02122へのコメント(文太さん) コメント数:1
文太さん

>   original.com+original.defでも発現する。

私のところでも同じでした。ただ、XPではDOS窓が消滅しますが、LXではいきなり
コマンドラインに落ちるものの、ハングはせず、何とか無事のようです。
どうもゼロ除算かなにかでエラーになってるような気がしますね。

>   #22で過去ログのDC分をグレップ、とりわけ情報見あたらず。
>   vzdefディレクトリ665個に、同じく"#22"でグレップ、ヒットなし
>  (マクロで使わなさそうではある)。

マクロでは、HELP.DEF のメニューくらいですね。いっぽう、^P のキーアサインは
使いでがあるようで、どこでも使えますね。特に、ファイラーではキーの拡張として
使うというとんでもない技まで有りましたね。m.gannさんですが。

>  まあ、実害は軽微とはいえ、新しい「変」の発見でしょうか?

そうですね。マクロで#22 を使う用途は思いつかないですし。


02125/02120 CRG00666  文太             Re^2: やっぱり変か(#22)
( 1) 07/01/28 02:06 02124へのコメント(Konnoさん)
金野さん

 (また、こんな時間になってしまってる。やばいなぁ。)

> 私のところでも同じでした。ただ、XPではDOS窓が消滅しますが、LXではいきなり
> コマンドラインに落ちるものの、ハングはせず、何とか無事のようです。
> どうもゼロ除算かなにかでエラーになってるような気がしますね。

 現象は、極めて似ているようです。XPでは窓消滅。モバ&旧8ではいちおう
画面は残るが…。

> マクロでは、HELP.DEF のメニューくらいですね。

 です。

> いっぽう、^P のキーアサインは
> 使いでがあるようで、どこでも使えますね。特に、ファイラーではキーの拡張として
> 使うというとんでもない技まで有りましたね。m.gannさんですが。

 ですね。どうしてあんな風に「とんでもない」ことを思いつけたのだか。
 僕は、素直に形だけパクったようで、それが「とんでもない」とはさっき見た
過去ログの誰かと金野さんのこの発言で、そうか、「とんでもないのか、やっぱ
り」と確認しただけなのですが。

> >  まあ、実害は軽微とはいえ、新しい「変」の発見でしょうか?
> そうですね。マクロで#22 を使う用途は思いつかないですし。

 御意。思わず、使ってしまいましたよん。


02126/02052 BQO00549  Konno            buf1k v0.1をテスト板に
( 1) 07/01/29 01:34 02123へのコメント(文太さん) コメント数:1
>  捨てないでぇ。

捨ててしまいました。(^^;

buf1k v0.1 です。
buf1k.asm と buf1k.com を同梱しました。
buf1k  でメモリの上位に1024のバッファを取ります。実行するたびに1024増えます。
MCBエリアにIDを埋め込んだので、PSP領域を含めた1024バイト丸まる使えます。
buf1k r  でメモリを開放します。バッファが複数あっても一度に開放します。

>  うん、delmem は単位がキロです。 これ、もっと細かく指定できるようにして
> 欲しいです。 お願いします。memory eater はこれが出来ました。

これはまだ出来てません。実用上は今のでほぼ足りるのではないかな。
あとは余裕があったらですね。


02127/02052 CRG00666  文太             Re: buf1k v0.1をテスト板に
( 1) 07/01/29 02:05 02126へのコメント(Konnoさん) コメント数:2
金野さん、ありがと!

 ish ボードは以下です>皆さま。
 (上がってるかも、と昼間 url を調べておいたもんね。 ちょっと古だったか
ら、調べるのがけっこう大変だった。ホームページにリンク貼りましょうよ
>金野さん)

http://hpcgi3.nifty.com/tamaneko/bbs4/wforum.cgi?no=17&reno=no&oya=17&mode=msgview&fsize=&page=0

 ありがとうございました。MCBに id を持っていってくれて、もう、通じて
るぅ。そうして欲しかったのだけど、ちょっと言えなかった。最初の4しか使っ
てないわけで、あそこ。難しい、あるいはそもそも無理なのかなぁ、と。

 とにかく、落とせましたし、解凍できましたし、常駐と解除もできました。え
ーとですね、あのコンソールでの改行が1つ2つ多いと思うのですが…。Rのあと
にピリオドも欲しいです。

 (失礼をかえりみず、具体的に描くと)
------------------------------------------------------------
C:\>buf1k

buf1k ver 0.10  installed.   For removal, Buf1k R


C:\>buf1k R

buf1k ver 0.10  removed


C:\>
------------------------------------------------------------

これには、こうなって欲しい。

------------------------------------------------------------
C:\>buf1k
 Buf1k ver 0.10, installed.   For removal, Buf1k R.

C:\>buf1k R
 Buf1k ver 0.10, removed.

C:\>
------------------------------------------------------------

 ほんと親愛の情を込めてのつもりなのですが、確かc.mosさんがwingさんに
「コンソールファイルの無駄遣い」と言ったことがあったような…。


 まだここまでです。明日、試しますね。m(__)m

 histcopyって大変だぁ、と思いながら、今日も少しはこつこつしました。m(__)m


02128/01759 CXB00940  としき           スパムの話
( 1) 07/01/29 15:34 01777へのコメント(めざらさん) コメント数:1
参照先:http://www.hinocatv.ne.jp/~toshiki/
まとレス。
どこにつけようか迷ったのですが、都合、こちらに。

>  niftyのスパムメールブロックなんて正規表現が使えないのでタコですが,

ニフティの新しいメールサービス、スパムブロックに関しては何か変わったので
しょうかね。当面、旧タイプのサービスを使い続ける予定なので、さっぱりわか
りません。というか、興味がないというのが本音なのですが、それは内緒。
ところで、スパムメールブロックに正規表現の使えるプロバイダをご存知の方が
いらっしゃったら、教えていただけないでしょうか。

> 正規表現でのフィルタを使えるメーラーならそれなりに対策できますよね。
> もちろんすり抜けるのはありますけど,1%くらいなら許容範囲でしょうか。

こういうのがあるのですね。

http://www.gabacho-net.jp/anti-spam/

これもやっぱり、基本はサーバ向けの技術ですね。
基礎となる論文には一通り目を通しましたが、RBL方式に比べても遜色はなさそう
です。利用者の声などを見ると、メールサーバの規模が大きくなればなるほど、
導入当初のコストというか手間がかかるようですが、軌道に乗ればほとんど手間
要らずのような感じですし。
さらに、応用というかサブセットなんですが、メーラーに適用した例へのリンク
も掲載してありました。ここで紹介されているのはBecky!の例だけですが、正規
表現で振り分けのできるメーラーならなんでも大丈夫そう。EdMaxなんかでもOK
でしょう。
ちなみにこれ、このツリーの最初で文太さんが考えた事に近いというか、スパマ
ーが使っていそうなアドレスを排除するにはどうするか、というような感じです
ので、一読をお勧めします。もし、専門的な部分で読んでわからない事があれば、
適宜、質問を書き込んでください。わかる範囲で解説します。

> アドレスを公開しててスパム100件/日というのは少ないほうだと思うし。

ここ数日、うちに届くスパムが急増しています。現在、130通/日くらい。
1月中旬ぐらいからかな、こんなに増えたのは。
12月上旬は100通/日を越えたぐらいだったんですが。
観察してみると、同じ差出人・同じ日時・同じ内容のものが2通連続して届いて
いるものが多い。多分、アドレスリストに二重に登録されているのだろうな。
内容についても、完全英文のもの(薬屋系か株屋系のどちらかだと思うけど)と
日本語のアダルト系のものの両方で同じ傾向のものがあるので、同一のリストが
出まわっているのでしょう。


#1762

> 私の場合、ケーブルテレビ屋のアカウントでは、プロバイダの用意している自動
> スパムフィルタの他に、タイトルと差出人で振り分けているだけですが、それら
> の併用で、約9割は阻止できています。自動フィルタだけだと約75%ぐらい。

12月19日に、ケーブルテレビ屋のスパムフィルタが強化されました。
最初の1週間は、チェックをすり抜けてきたスパムが約1%。
その他に、チェックを受けた痕跡のないものが約1%。
もしかして、サーバの処理能力が足りなくて、未チェックのままユーザのメール
ボックスに配信してしまったのではないかと疑っています。
年末年始はこれが両方合わせて5%近くまで増えましたが、1月10日前後にサ
ーバのチューニングが行われたのか、未チェックで配信されるものがなくなりま
した。WEBメールシステムのレスポンスも向上したし、サーバの増強が行われ
たのかもしれません。
ただ、網の目をきつくし過ぎたというか、1月10日以前は、旧のザルのような
スパムフィルタの時代を含め、スパムではないものをスパムと誤判別された事は
ありませんでした。ところが、1月10日以降は3通、スパムでないものがスパ
ム扱いにされてしまっています。といっても、大体1000通に1通の割合なの
で、成績は非常に優秀と言ってよいと思います。
でも、数字だけでみると優秀なんですが。
実は、誤判別された3通のうちの2通の差出人は、m****a@nifty.comというアド
レスでした。一部の人にはバレバレですが。で、1通目が誤判別されたので直ち
にホワイトリストに登録したつもりなのですが、どうも、これがうまく機能して
いなさそう。私の登録誤りの可能性もあるので、あとでプロバイダに問い合わせ
てみるつもりです。

> ただ、手動フィルタの場合、フィルタ数は有限です。例えば、ニフティなら確か
> 100くらいかな、うちのケーブルテレビ屋はたった64です。なので、スパム

自動フィルタが強力になったので、手動フィルタの設定数は20未満まで減らせ
ました。もう少し減らせるかな。多分、1月の強化後なら、10未満でも大丈夫
かもしれません。


02129/02052 CRG00666  文太             Re^2: buf1k v0.1をテスト板に
( 1) 07/01/29 15:50 02127へのコメント(文太さん) コメント数:2
delmemは何をしている?

 題。あるいは、MCBに関して、金野さんは何をした?

 ようやくどうにかこうにか、疑問の形を見定めて(輪郭を捉えて)、質問がで
きるようになったような気がするので、すいません、教えてやっていただけます
でしょうか。

 疑問は、MCBに書き込まれるオーナー名は何をする? です。

 随分前から何がどうなっているのか分からず、かといって delmem や buf1k、
あるいは  1kbuf のソースが読めるわけではないので(何というか、いちおうト
ライをするだけはしましたが…)、質問すらできなかったわけです。


 まず、vmap.docに以下のようにあります。

> ◇PSPパラメータ内のコマンド名
> 
>  DOS4,5では、MCBのオフセット8以降に、コマンド名が自動的に書き
> 込まれます。したがって、VMAPVer2では、これを参照してオーナー名を
> 表示します。

 ということはMCBは MS-DOS が MS-DOS のために書く。ある意味、プログラ
ムが起動されれば自動的に書かれる。MS-DOS4、5では、オーナー名も書かれる。

 (以下、ダンプはいつもMCBを見るため、PSPの1パラグラフ前から。)

C:\>vmap
1391 <--    1    1648  vwx 1.08b -z2 -l6144 -x1 
C:\>dump -mx1390 -s32
00013900  4D 91 13 67 00 00 8D 13-56 57 58 00 00 00 00 00 |M..g....VWX.....

 おお、素直に書かれてる。

C:\>vmap
9F3D <--    1    1024  delmem
C:\>dump -mx9f3c -s32
0009F3C0  4D 3D 9F 40 00 00 00 00-00 00 00 00 00 00 00 00 |M=檗............

 な、ない。やっぱdelmemが書き換えてる。何のため?
 (コンベンショナルの最上位ですらない、というのもポイント。最上位では、
MCBリンクの最後では、書かれないものなのかも、と思ったことがあったので。)

C:\>vmap
9F7E <--    1    1024  buf1k		;2重起動で2kB
9FBF <--    1    1024  			;とっている。
C:\>dump -mx9fbe -s32
0009FBE0  5A BF 9F 40 00 FF 9F 00-07 62 75 66 31 6B 0D 00 |Zソ檗.....buf1k..

 ちゃんと書かれております。vmapが表示できず、MCBリンクの最後であり、
最上位であるにもかかわらず、金野さんは、delmemが上を操作してる部分を消し
て、素直に書き込まれるように、「戻した」。(想像)★

C:\>1kbuf
C:\>vmap
9FBF <--    1    1024  
C:\>dump -mx9fbe -s32
0009FBE0  5A BF 9F 40 00 00 00 00-00 00 00 00 00 00 00 00 |Zソ檗............

 げ、な、ない。僕は、としきさんはdelmemを改造するよりスクラッチから書い
た方が早い、(いつの日にかの)文太の役に立つかも、とスクラッチから書いた
と思う。だから、別にオーナー名を操作する部分を、最低限の仕様のツールで消
したりしなかったと思う。
 では、なぜ、ない?
 きっと、この部分だけdelmemからコピペした?(空想)


 ★とはいえ、常駐解除を機能させるためには、普通PSP内の(MCBでなく)
    コマンドラインが写されたところを見て、自分であることを判定してから解
    除するのだろうから、ID判定部分を改変したのだろう(想像)。


 間違いがあれば、お教えいただきたいのですが。あるいは、「この知識が足り
ない」とお教えいただければ、もっと幸いです。m(_B_)m

 もちろん、一朝一夕に分かる事柄でないという程度の認識はあります。


追伸:(これが追伸というのも、とんでもないのですが m(_B_)m)
 buf1k.com、ちゃんと仕事してくれてますし、常駐解除もできてます。m(__)m
 問題はまったく発見されていません。

追伸2:常駐解除後にメモリが初期化されている云々は、PSPが綺麗に掃除さ
れているのを僕が誤解したのだ、と理解しています。PSP(の大半?)は 
MS-DOS が掃除しますよね。うん、そうだ。delmem でも同じでした。


02130/01759 CRG00666  文太             Re: スパムの話
( 1) 07/01/29 16:11 02128へのコメント(としきさん) コメント数:1
としきさん

> ところで、スパムメールブロックに正規表現の使えるプロバイダをご存知の方が
> いらっしゃったら、教えていただけないでしょうか。

 どうも文脈が見えてないので、僕が回答しても「それは知ってる」としかなり
ようがないと思うのですが、朝日ネットは、前に紹介した(どこだ? 何だ?)
エンジンを使って、正規表現(BREだけど十分でしょう)とワイルドカードの
両方使えます。

 僕のところの実績もかなりよい、と判定しています。ホワイトリストの登録が
進んだのもあるでしょうが、手元まで届くには1日に1、2通にまで精度が上が
ってます。ひっかかるのは1日80かな。とりわけ正月以降増えてはいませんね、
僕のところは。
 そういえば、2月くらい、フィルタを更新してないや。それぐらい整備されて
しまった。心に余裕が生まれるなぁ、そういえば。
 「おまかせ」と「手動」の区別は、もうできませんが。

> ちなみにこれ、このツリーの最初で文太さんが考えた事に近いというか、スパマ
> ーが使っていそうなアドレスを排除するにはどうするか、というような感じです
> ので、一読をお勧めします。もし、専門的な部分で読んでわからない事があれば、
> 適宜、質問を書き込んでください。わかる範囲で解説します。

 ありがとうございます。論文じゃ、ちょっと、だけど、そのうちに。m(__)m

> 内容についても、完全英文のもの(薬屋系か株屋系のどちらかだと思うけど)と
> 日本語のアダルト系のものの両方で同じ傾向のものがあるので、同一のリストが
> 出まわっているのでしょう。

 なるほど。僕だけ特別に悩まされているのではないんですね。まったく同じ傾
向で、自分がHなのがいけないと自分を責めないで済むようになりました(笑)。
パール、アセンブラで忙しすぎで、Hなとこなんて、とんとご無沙汰なんだけど。

 機械が相手なので、こんなこと言ってもしょうがないのだけど、ほんとしつこ
いなぁ、奴ら。同じところからフィルタへ毎日毎日送ってる。いくつか差出人を
覚えてしまった。そういえばロシア娘から最近来ないなあ。寂しい(笑)。


02131/02131 CRG00666  文太             ヒストリーバッファのサイズ情報
( 1) 07/01/29 18:30
ヒストリーバッファのサイズ情報

 もう悩まなくていいですよ。結論あり!(記事の最後)

 脈絡ないみたいで、またしても次々申し訳ありません。これは分かっている人
には、「こう」と言える、比較的単純なことだと想像しているものですから。
 実用で困っているわけではないのですが、脈絡はもちろん、個人的には、あり
ます。m(__)m  

 ヒストリバッファのサイズ情報はそれぞれのバッファの前2バイトに入ってい
る、と思っていました。マクロ内に自前ヒストリーバッファを作るとき以外、深
く意識したことがなかったのです。で、実際ばふつあで見たら、「え?」となっ
てしまいました。数が合いません。

 僕の環境で調査。
hs	400h
ps前をばふつあダンプ
97E6h: 6B 6E 32 20 25 31 2E 74-62 6C 00 00 00 00 47 04
                                                 ^^^^^???
hw	200h
pw前をばふつあダンプ
A147h: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 FF 01
                                                 ^^^^^ 1差
ha	C0h
pa前をばふつあダンプ
A085h: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 BF 00
                                                 ^^^^^ 1差
hn	80h
pr前をばふつあダンプ
A349h: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 7F 00
                                                 ^^^^^ 1差
hx	200h
px前をばふつあダンプ
9E78h: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 0A 02
                                                 ^^^^^???

 こういのが出てくると、途中で終われない…。

hf	200h
pf前をばふつあダンプ
9C30h: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 45 02
                                                 ^^^^^???

 わかった!!! vz.def  で初期文字列とか vmap とか config.sys とか与え
られてるのが加算されてるんだ! なるほど! 1時間かかったぞ!!

dump -mx2812 -ox97f0 -s16			;ps, 97f6h -6
dump -mx2812 -oxa151 -s16			;pw, a157h
dump -mx2812 -oxa08f -s16			;pa, a095h
dump -mx2812 -oxa353 -s16			;pr, a359h
dump -mx2812 -ox9e82 -s16			;px, 9e88h

 道具がいけないのか? 外から見ても同じか? と、こんなんまでしたんよん。
しくしく。

 その後、 ちょっとした実験をしつこくやった。 ほんとのpsサイズって、hs
じゃないんですね、そうすると。本物のサイズは、そう、2バイト前の情報なん
だ。

 ちゃんちゃん、なんですが、上げますね。誰か悩むかもしれないし。悩まない
か。

 こういうのも、過去ログのどっかには書いてあるんだろうなぁ。やれやれ。


02132/01759 CXB00940  としき           Re^2: スパムの話
( 1) 07/01/29 22:01 02130へのコメント(文太さん)
参照先:http://www.hinocatv.ne.jp/~toshiki/
>  どうも文脈が見えてないので、僕が回答しても「それは知ってる」としかなり
> ようがないと思うのですが、朝日ネットは、前に紹介した(どこだ? 何だ?)
> エンジンを使って、正規表現(BREだけど十分でしょう)とワイルドカードの
> 両方使えます。

おぉ、こういう情報が欲しかったのです。
それなりに大規模なプロバイダで実現できているのであれば、ニフティでもでき
ない事はない、という安直な発想なのですが。

>  ありがとうございます。論文じゃ、ちょっと、だけど、そのうちに。m(__)m

紹介したURLは目次ページのようなものです。
一番メインとなるのは該当の論文ですが、その他、雑誌記事などに対するリンク
もはってありますので、そういうところから読めばわかりやすいかもしれません。



うちのところは、さっきの発言を書き込んだ後、16時くらいかな、手動フィル
タを一旦全部削除してみました。ところが、今さっき確認したところ、19時過
ぎに1通、スパムが届いているではありませんか。ありゃ、自動フィルタだけで
はやはりダメか、と思いきや、よくよく確認してみたところ、自動フィルタでの
チェックの痕跡がありません。どうも久しぶりに未チェックでの配信となってし
まったようです。約3000通ぶりなので、やはり数字だけみるとそこそこ優秀
なんですが。


02133/02052 CXB00940  としき           Re^3: buf1k v0.1をテスト板に
( 1) 07/01/29 22:34 02129へのコメント(文太さん) コメント数:1
参照先:http://www.hinocatv.ne.jp/~toshiki/
>  題。あるいは、MCBに関して、金野さんは何をした?

答は#2126にあり。

> MCBエリアにIDを埋め込んだので、PSP領域を含めた1024バイト丸まる使えます。



>  まず、vmap.docに以下のようにあります。
> > ◇PSPパラメータ内のコマンド名
> >  DOS4,5では、MCBのオフセット8以降に、コマンド名が自動的に書き
> > 込まれます。したがって、VMAPVer2では、これを参照してオーナー名を
> > 表示します。
>  ということはMCBは MS-DOS が MS-DOS のために書く。ある意味、プログラ
> ムが起動されれば自動的に書かれる。MS-DOS4、5では、オーナー名も書かれる。

これなんですけどね。
私もちょっと調べてみて根拠資料が見つけられなかったのですが。
なので、以下は各種資料の断片からまとめた推論です。
オーナー名というのは、プログラム起動時に、command.comまたはmsdos.sysが書
き込んでいるようです。つまり、メモリを確保した親プロセス側で書いていると
いうこと。ところが、上位メモリを確保しようとした場合、実際にメモリを確保
するプロセスは親プロセスではなく、delmemなり1kbufです。そして、これらのプ
ログラムにはオーナー名を書き込む機能が実装してありません。なので書き込ま
れない、というのが正解ではなかろうかと。
試しに、delmemでデフォルトというか下位メモリを確保してみて下さい。
この場合はもしかしたら、オーナー名が残っているかもしれません。
無理かな。自前で環境の開放とかいろいろとやっていそうだし。

ちなみに、かの有名なInterrupt Listも見てみました。
手元のバージョンだと、用語集でMCBを探したら「memory control block参照」と
なっていて、memory control blockを見たら「Int21h 52h参照」とたらいまわし
にあって、結局わかった事は

---DOS 4.0+ ---
 08h  8 BYTEs	ASCII program name if PSP memory block or DR DOS UMB,
		  else garbage
		null-terminated if less than 8 characters

ということだけ。それ以上は英語力の壁もあって詳細不明。
DOS4以降では、PSPなメモリブロックの場合だけ名前が書き込まれる、そ
れ以外のメモリブロックではこの領域はゴミデータ、ということで、delmemなど
で確保した場合はそれ以外のメモリブロックとやらに該当するのでしょう。

>  げ、な、ない。僕は、としきさんはdelmemを改造するよりスクラッチから書い
> た方が早い、(いつの日にかの)文太の役に立つかも、とスクラッチから書いた
> と思う。だから、別にオーナー名を操作する部分を、最低限の仕様のツールで消
> したりしなかったと思う。
>  では、なぜ、ない?
>  きっと、この部分だけdelmemからコピペした?(空想)

あれ?
私、ほとんどのコードはdelmemから引っ張ってきたというか、基本的にdelmemか
ら不要と判断した部分を削除しまくる事によって1kbufを作ったはずです。
確かそう書いたような記憶もあるけど、もはや忘却の彼方。
すなわち、delmemに実装されていない機能は1kbufにもありません。
delmemに実装されていない機能を付与できるのはkonnoさんです。


02134/02052 BQO00549  Konno            Re^2: buf1k v0.1をテスト板に
( 1) 07/01/29 23:03 02127へのコメント(文太さん) コメント数:1
>  ish ボードは以下です>皆さま。
>  (上がってるかも、と昼間 url を調べておいたもんね。 ちょっと古だったか
> ら、調べるのがけっこう大変だった。ホームページにリンク貼りましょうよ

そういえばトップページにテスト板などへのリンクが無かったかも。最近は
「タマ猫BBS(リンク集)」からしかアクセスしないもので。
http://hpcgi3.nifty.com/tamaneko/tamabbs.cgi

このページはうちの掲示板群の更新情報がわかるのでお薦めです。
このURLをお気に入りに入れておけば幸せになれるかも。(ほんとか)

近々サイトをリニューアルしたいと思っているので、この掲示板やVZの部屋
のURLが変ると思います。トップや上記のURLは変らないので今のうちに
ブックマークしておきましょう。(^^;

>  ありがとうございました。MCBに id を持っていってくれて、もう、通じて
> るぅ。そうして欲しかったのだけど、ちょっと言えなかった。最初の4しか使っ
> てないわけで、あそこ。難しい、あるいはそもそも無理なのかなぁ、と。

どうせやるならここまでやりたいと思ってはいたんですが、今回MCBというものが
少し判ったので、やってみたら出来てしまったわけです。

> ーとですね、あのコンソールでの改行が1つ2つ多いと思うのですが…。Rのあと
> にピリオドも欲しいです。

改行は気にしてませんでした。直しておきます。Rの後のピリオドは紛らわしい
かと思ったんですが、使うのは文太さんだけだろうし、まあいいか。

>  ほんと親愛の情を込めてのつもりなのですが、確かc.mosさんがwingさんに
> 「コンソールファイルの無駄遣い」と言ったことがあったような…。

これ、どこかで読んだような気がしますが、気のせいかなぁ。(^^;


02135/02052 BQO00549  Konno            buf1k の動作
( 1) 07/01/30 00:19 02129へのコメント(文太さん) コメント数:2
文太さん

としきさんが書かれているのがたぶん正解だと私も思います。なので、

>  な、ない。やっぱdelmemが書き換えてる。何のため?
>  (コンベンショナルの最上位ですらない、というのもポイント。最上位では、
> MCBリンクの最後では、書かれないものなのかも、と思ったことがあったので。)

もうお分かりかと思いますが、delmem 1u を実行すると、Vz.com以降の空きメモリに
ロードされます。そして、それ以降の9FFFh までの全てのメモリが使用中になります。
次に、delmem は、自分自身の使用メモリを64kまで縮小します。
その後で、上位1kの領域を確保します。
それから、そのPSP領域に自分自身のPSPの内容をコピーしているのではないかなぁ。
つまり、偽装しているんですね。
その後、PSPの80hにIDを埋め込んでいるようですね。
そして終了します。

> 0009FBE0  5A BF 9F 40 00 FF 9F 00-07 62 75 66 31 6B 0D 00 |Zソ檗.....buf1k..
>  ちゃんと書かれております。vmapが表示できず、MCBリンクの最後であり、
> 最上位であるにもかかわらず、金野さんは、delmemが上を操作してる部分を消し
> て、素直に書き込まれるように、「戻した」。(想像)★

ということで、delmem はMCBを一切操作していないと思います。あ、いや、1バイト目
に、9FBFh を書き込んでいるように見えますが。
・・・うう、ここでミスに気が付いてしまいました。(;_;)

>  DOS4,5では、MCBのオフセット8以降に、コマンド名が自動的に書き
> 込まれます。したがって、VMAPVer2では、これを参照してオーナー名を
> 表示します。

もしかして 1バイトずれている? 試しに1バイト手前にずらしてみたところ、
 vmap でめでたく buf1k と表示されました。(^^;;

> 追伸2:常駐解除後にメモリが初期化されている云々は、PSPが綺麗に掃除さ
> れているのを僕が誤解したのだ、と理解しています。PSP(の大半?)は 
> MS-DOS が掃除しますよね。うん、そうだ。delmem でも同じでした。

確かにMCBとPSPは全てヌルになっていますね。delmemではメモリの開放を呼び出して
いるだけのようなので、DOSがやっているんでしょうか。



02136/02052 CRG00666  文太             Dbuf.def (0.80)
( 1) 07/01/30 00:47 02052へのコメント(文太さん) コメント数:1
 やっぱ遊ぶ道具がないとねぇ。出世魚のように((c)YASAT)名前を変えました。
仕様はようやく固まりましたので、残りは0.2です。それは、コードの全面的書
き換えで、当分やるとは思えません。根性ない奴なので。でも、汚ねぇ。
 マクロ技術的には、基礎部分がまったくできてないのに、すげえっす。文太的
でなく、いけないなぁ、と思う。ま、誰か動かしてみてくれたら嬉しいです。

 取り出せないと面白くないので、bufxchgで、psからどうぞ。このbufxchgの
仕様を拡張したら、またはまってしまった。とほほ。

=== Dbuf.def (0.80) by Bunta ===;Dummy Buffer Histcopy

#if0
special thanx to konno, YASAT and Toshiki. m(_B_)m
thanx to Sabrina, Delmem.com, Toshiki's 1kbuf.com and konno's Buf1k.com.

要 Buf1k.com 常駐。
ダミーバッファ用ヒストコピー。窓、ブロック(文字境界、行境界)でデータ保存。
普通起動でデータ保存(ヒストリー)、シフトでカーソル位置に書き出し。
実用性より技術習得とサンプル開拓が開発動機(め、珍しい! 文太!)
実は形にしなければ(どんな形であれ)、許してもらえなさそうな雰囲気が…。

tech notes: iseg copy, histcopy, textbuffer, realtime filesize, MCB & PSP (dos)
Dbuf family: Buf_Init, BufXchg (EMS).
dump -mx9fbe -s64(メモリは常に監視しよう!)
#endif


* Macro
80 ^\ ""; dummy buffer histcopy

	?.
	;---------- dummyfile name for size info ------------
#if 98 MG
	f="a:\tmp\tmp.txt",
#elseif DOSV
	f="c:\tmp\tmp.txt",
#endif
	;----------------------------------------------------
	w=$9fbe,		;check seg (MCB)
	x=$9fbf,		;base buf seg
	y=1024,			;buf max length

	; --- check TSR
	dx=w, &20 (ax)?? {&m("buf1k, not on memory!").}

	; --- shift branch (On:51; writing out from buffer)
	(ks&1)? >51

	(mb==1)? >a		;line block
	(mb==2)? >b		;string block
	>c			;basic no block


		; ========= 3 patterns =========

:a		;---line block
	o=wn,				;startfile
	&05 (r)?? {&m(e).}		;get info thru dummy file
	&07 				;bufcheck & get strlen2 of buff
	  (ax==-1)? {&m("Warning: buffer destroyed.").}
	(si)?? {&01 .}			;hist- (1st time buf use, only)
	&08 				;buflen adjustment
	&00 &01				;hist+

	mx[+, #C (s)? 'n' mx],		;close the dummyfile
	&#T(o)				;return to startfile
	&d
	&m("Many strings stored. OK!").

	;===== ----- ===== ----- ===== ----- ===== ----- =====

:b		;---string block
	ps[=pr, #G ps],
	>d

:c		;---basic no block (window)
	pw[=pr,
	&g("*** sending to the dummy buffer ***",30)
	pw], (r<0) ?.

 :d	&Sn(pr) a=r, p=gz, q=pr+a, 	;<p>seg <q> tail offset <a>strlen1

		;=== common for two ===

	&07 				;bufcheck & get strlen2
	(ax==-1)? {&m("Warning: buffer destroyed.").}

	;===== Writing onto Buffer with history function =====
	&m("->Buf: %s",pr)
	(si)?? {&01 .}			;hist- (1st time buf use, only)
	&08 				;buflen adjustment
	&00 &01				;hist+
	.

; ---------------------  LOCAL MACROS  ---------------------

00:	;;==== hist 1st move ==== << dest=>dest move >>
	ax=x,  si=b, cx=b+1,		;set src;  ds(ax):si, cx times
	bx=x,  di=a+b+1,		;set dest; es(bx):di,
		&10			;exec 'copy backwards'

01:	;;==== hist 2nd move ==== << src->dest copy >>
	ax=p, si=q, cx=a+1,		;set src;  ds(ax):si, cx times
	bx=x,  di=a,			;set dest; es(bx):di
		&10			;exec 'copy backwards'

10:		; --- hist backward copy (2) strcpy2 
		&i("$(50,1F,53,07,FD,F3,A4,FC,C3)")


05:	; --- get sizeinfo of the blocked lines thru status info

	(xc>0)? #B l=ln, #B			;
	(ln-l>100)? {e="Block, too Big!", (0).}

	#k mx[+, #N &?("%s",f) #m mx], #i	;--open and make dummyfile

	ps[=pr,					;--replace CRLF w/ $(0)
	#56 "\n\n" #m "\n" #m "AY"  :g #57 (r)? >g
	#^ #< (ct==1)? #g			;top safety
	#56 "\n" #m &o($0) #m "AY"  :h #57 (r)? >i
	ps],


	ds[+, #] &Sc(pr,pu+bu,8) ds],		;--get filesize from status
	&e(pr) 					;=============================
	a=r-1, 					;<a> src strlen (w/o last nul)
	q=a+2,					;<q> tail offset
	&e(pr) 					;=============================
	(a>y)? {e="Too many strings!", (0)}	;
	p=wa..9, (1)				;<p> source seg (txtbuf)

07:	;--- check the buffer & get the strlen2 info ---	simplify 07&08
	; --> si 0:empty;  n:strlen2 of buffer (all strings)
	dx=x, ax=y,
	&i("$(52,1F,33,DB,33,F6,39,1C,74,04,46,48,73,F8,C3)")

08:	;--- if strlen2+new_strlen, too long, discard the oldest str ---
	bx=x, (a+si+3>y)? { &i("$
	$(53,1F,32,DB,4E,8A,04,38,D8,74,0B,4E,73,F7,88,1C)$
	$(46,88,1C,4E,EB,04,46,88,1C,4E,C3)")
	>^ }
	b=si,

20:	; --- TSR check (5)
	&i(3+$)."$
	$(52,1F,33,F6,33,C0,B9,5A,BF,39,0C,75,0C,83,C6,02)$
	$(B1,9F,38,0C,75,03,B8,01,00,C3)"


	;=============== Reading from Buffer =================
51:
	;----- check the buf & get strlen (3)strlen1
	bx=x, dx=y,
	&i("$(53,1F,32,DB,33,F6,8A,04,38,D8,74,04,46,4A,73,F6,C3)")
	(si==0)	? {&m("Empty. Cannot write out.").}

	;----- reading
	ax=x, cx=si+1, si=0,  		;set source
	bx=gz,         di=pr,		;set destination
	&i("$(50,1F,53,07,F3,A4,C3)")	;(4)strcpy
	&?("%s",pr) .

*


02137/02052 CRG00666  文太             すぐ修正情報m(_b_)m
( 1) 07/01/30 01:01 02136へのコメント(文太さん) コメント数:1
112行近辺の

	#56 "\n" #m &o($0) #m "AY"  :h #57 (r)? >i

を

	#56 "\n" #m &o($0) #m "AY"  :h #57 (r)? >h

と差し替えて、ご試用ください。m(_B_)m
たぶん、なかなか発現しないバグだけど、発現してしまったら落ちます。

 えーと行境界ブロックですが、psに入れるのと同じ感覚ですから半角80字
以上の文字列とか入れないでね。そういうのはチェックしていませんから。だい
たいprやpsから取り出すわけで、そういうの想定していません。テキストス
タックじゃないって。


02138/02052 CRG00666  文太             Dbuf.def (0.81)  m(__)m
( 1) 07/01/30 01:20 02137へのコメント(文太さん) コメント数:1
=== Dbuf.def (0.81) by Bunta ===;Dummy Buffer Histcopy

#if0
special thanx to konno, YASAT and Toshiki. m(_B_)m
thanx to Sabrina, Delmem.com, Toshiki's 1kbuf.com and konno's Buf1k.com.

要 Buf1k.com 常駐。
ダミーバッファ用ヒストコピー。窓、ブロック(文字境界、行境界)でデータ保存。
普通起動でデータ保存(ヒストリー)、シフトでカーソル位置に書き出し。
実用性より技術習得とサンプル開拓が開発動機(め、珍しい! 文太!)
実は形にしなければ(どんな形であれ)、許してもらえなさそうな雰囲気が…。

tech notes: iseg copy, histcopy, textbuffer, realtime filesize, MCB & PSP (dos)
Dbuf family: Buf_Init, BufXchg (EMS).
dump -mx9fbe -s64(メモリは常に監視しよう!)
#endif


* Macro
80 ^\ ""; dummy buffer histcopy

	?.
	;---------- dummyfile name for size info ------------
#if 98 MG
	f="a:\tmp\tmp.txt",
#elseif DOSV
	f="c:\tmp\tmp.txt",
#endif
	;----------------------------------------------------
	w=$9fbe,		;check seg (MCB)
	x=$9fbf,		;base buf seg
	y=1024,			;buf max length

	; --- check TSR
	dx=w, &20 (ax)?? {&m("buf1k, not on memory!").}

	; --- shift branch (On:51; writing out from buffer)
	(ks&1)? >51

	(mb==1)? >a		;line block
	(mb==2)? >b		;string block
	>c			;basic no block


		; ========= 3 patterns =========

:a		;---line block
	o=wn,				;startfile
	&05 (r)?? {&m(e).}		;get info thru dummy file
	&07 				;bufcheck & get strlen2 of buff
	  (ax==-1)? {&m("Warning: buffer destroyed.").}
	(si)?? {&01 >f}			;hist- (1st time buf use, only)
	&08 				;buflen adjustment
	&00 &01				;hist+

:f	mx[+, #C (s)? 'n' mx],		;close the dummyfile
	&#T(o)				;return to startfile
	&d
	&m("Many strings stored. OK!").

	;===== ----- ===== ----- ===== ----- ===== ----- =====

:b		;---string block
	ps[=pr, #G ps],
	>d

:c		;---basic no block (window)
	pw[=pr,
	&g("*** sending to the dummy buffer ***",30)
	pw], (r<0) ?.

 :d	&Sn(pr) a=r, p=gz, q=pr+a, 	;<p>seg <q> tail offset <a>strlen1

		;=== common for two ===

	&07 				;bufcheck & get strlen2
	(ax==-1)? {&m("Warning: buffer destroyed.").}

	;===== Writing onto Buffer with history function =====
	&m("->Buf: %s",pr)
	(si)?? {&01 .}			;hist- (1st time buf use, only)
	&08 				;buflen adjustment
	&00 &01				;hist+
	.

; ---------------------  LOCAL MACROS  ---------------------

00:	;;==== hist 1st move ==== << dest=>dest move >>
	ax=x,  si=b, cx=b+1,		;set src;  ds(ax):si, cx times
	bx=x,  di=a+b+1,		;set dest; es(bx):di,
		&10			;exec 'copy backwards'

01:	;;==== hist 2nd move ==== << src->dest copy >>
	ax=p, si=q, cx=a+1,		;set src;  ds(ax):si, cx times
	bx=x,  di=a,			;set dest; es(bx):di
		&10			;exec 'copy backwards'

10:		; --- hist backward copy (2) strcpy2 
		&i("$(50,1F,53,07,FD,F3,A4,FC,C3)")


05:	; --- get sizeinfo of the blocked lines thru status info

	(xc>0)? #B l=ln, #B			;
	(ln-l>100)? {e="Block, too Big!", (0).}

	#k mx[+, #N &?("%s",f) #m mx], #i	;--open and make dummyfile

	ps[=pr,					;--replace CRLF w/ $(0)
	#56 "\n\n" #m "\n" #m "AY"  :g #57 (r)? >g
	#^ #< (ct==1)? #g			;top safety
	#56 "\n" #m &o($0) #m "AY"  :h #57 (r)? >h
	ps],


	ds[+, #] &Sc(pr,pu+bu,8) ds],		;--get filesize from status
	&e(pr) 					;=============================
	a=r-1, 					;<a> src strlen (w/o last nul)
	q=a+2,					;<q> tail offset
	&e(pr) 					;=============================
	(a>y)? {e="Too many strings!", (0)}	;
	p=wa..9, (1)				;<p> source seg (txtbuf)

07:	;--- check the buffer & get the strlen2 info ---	simplify 07&08
	; --> si 0:empty;  n:strlen2 of buffer (all strings)
	dx=x, ax=y,
	&i("$(52,1F,33,DB,33,F6,39,1C,74,04,46,48,73,F8,C3)")

08:	;--- if strlen2+new_strlen, too long, discard the oldest str ---
	bx=x, (a+si+3>y)? { &i("$
	$(53,1F,32,DB,4E,8A,04,38,D8,74,0B,4E,73,F7,88,1C)$
	$(46,88,1C,4E,EB,04,46,88,1C,4E,C3)")
	>^ }
	b=si,

20:	; --- TSR check (5)
	&i(3+$)."$
	$(52,1F,33,F6,33,C0,B9,5A,BF,39,0C,75,0C,83,C6,02)$
	$(B1,9F,38,0C,75,03,B8,01,00,C3)"


	;=============== Reading from Buffer =================
51:
	;----- check the buf & get strlen (3)strlen1
	bx=x, dx=y,
	&i("$(53,1F,32,DB,33,F6,8A,04,38,D8,74,04,46,4A,73,F6,C3)")
	(si==0)	? {&m("Empty. Cannot write out.").}

	;----- reading
	ax=x, cx=si+1, si=0,  		;set source
	bx=gz,         di=pr,		;set destination
	&i("$(50,1F,53,07,F3,A4,C3)")	;(4)strcpy
	&?("%s",pr) .

*


02139/02052 CRG00666  文太             Re^3: buf1k v0.1をテスト板に
( 1) 07/01/30 01:40 02134へのコメント(Konnoさん)
金野さん

> このページはうちの掲示板群の更新情報がわかるのでお薦めです。

 ほんとだ。小さい字で内容もある!

> このURLをお気に入りに入れておけば幸せになれるかも。(ほんとか)

 僕は、自作唯一のhtmlファイル、local_home.htmというところで管理しています。
 すでに入ってますから、安心です。

> 近々サイトをリニューアルしたいと思っているので、この掲示板やVZの部屋
> のURLが変ると思います。トップや上記のURLは変らないので今のうちに
> ブックマークしておきましょう。(^^;

 わお。リニューアル。了解です。

> どうせやるならここまでやりたいと思ってはいたんですが、今回MCBというものが
> 少し判ったので、やってみたら出来てしまったわけです。

 けっこう深かったわけですね。向こうの解説も多謝。あっちは明日ゆっくり。
 考えてみれば、僕の資料も古かったんだ。MCB最初4バイト以降も使ってる
わけで(MS-DOS4、5では)。

> > ーとですね、あのコンソールでの改行が1つ2つ多いと思うのですが…。Rのあと
> > にピリオドも欲しいです。
> 改行は気にしてませんでした。直しておきます。Rの後のピリオドは紛らわしい
> かと思ったんですが、使うのは文太さんだけだろうし、まあいいか。

 いいでしょう。コマンドラインにピリオド打ち込む人は、間違ってもこれは使
わない。すると、オーダーメイドの特注品をおねだりしてるんだ…。かたじけな
いっす。m(__)m

 ただ、元々「保存バッファ」だったんですよ。ヒストリーでなく。そういうバ
ッファってあったら便利なのは間違いないんです。だから、用途としては需要が
あってもおかしくはないと思ってます。EMSのハンドルとか、失われてはいけ
ないファイル名情報とか。マクロバッファの自前では消えちゃいますから。需要
する人がいない、というのが問題なんだよな。
 あ、個人的には1キロ全部保存バッファはもったいなすぎる、と思って、逆に、
流れていく効率のよいバッファとなってしまったのでした。どつぼにはまったと
は、間違いなく言えますが。最終的には(?)、ヒストリー部分と保存部分を切
り分けるつもりです。そ、僕は使う気なんです。起動バッチに入れちゃうもん。
これで、psを小さくできるし、ログ履歴用バッファも小さくできて、マクロバ
ッファが少し広がる。現実的な効果は、お、恐ろしく小さいけど…。

> >  ほんと親愛の情を込めてのつもりなのですが、確かc.mosさんがwingさんに
> > 「コンソールファイルの無駄遣い」と言ったことがあったような…。
> これ、どこかで読んだような気がしますが、気のせいかなぁ。(^^;

 うーんと、僕の日本語が酷すぎたのが原因なんでしょうが、金野さんの意図が
読めませんでした。FVCでのやり取りだったと思いますよ。wgrep に関して、
たしか。


02140/02052 CRG00666  文太             Re^4: buf1k v0.1をテスト板に
( 1) 07/01/30 15:31 02133へのコメント(としきさん) コメント数:1
としきさん

 詳細にありがとうございます。
 相当全体が見えたように思います。ポイントだけ引用してみます。

> ところが、上位メモリを確保しようとした場合、実際にメモリを確保
> するプロセスは親プロセスではなく、delmemなり1kbufです。そして、これらのプ
> ログラムにはオーナー名を書き込む機能が実装してありません。なので書き込ま
> れない、というのが正解ではなかろうかと。

 なるほど!

> delmemに実装されていない機能を付与できるのはkonnoさんです。

 で、ここに繋がるわけですね。

> 試しに、delmemでデフォルトというか下位メモリを確保してみて下さい。
> この場合はもしかしたら、オーナー名が残っているかもしれません。
> 無理かな。自前で環境の開放とかいろいろとやっていそうだし。

 無理でした。下位メモリでもオーナー名が残りません。
 しかしそうすると、 やっぱりオリジナル delmem が MCB を弄っていることに
なりますよね。下位からとっても MS-DOS 騙しのプロセスが入るのでしょうか?
というか、入っているはずですよね。だってオーナー名が消えてるので。

> ちなみに、かの有名なInterrupt Listも見てみました。

 だいたい分かりました。う、手元ので文脈を把握しようとしたのだけど…。
 「そこの8バイトの意味は」という文脈ですね。

> すなわち、delmemに実装されていない機能は1kbufにもありません。

 了解です。


02141/02052 CRG00666  文太             Re: buf1k の動作
( 1) 07/01/30 17:00 02135へのコメント(Konnoさん) コメント数:1
金野さん

> もうお分かりかと思いますが、

 あまり、分かってはいないようですが、でもイメージがだいぶ明瞭になってきました。

> delmem 1u を実行すると、Vz.com以降の空きメモリに
> ロードされます。そして、それ以降の9FFFh までの全てのメモリが使用中になります。
> 次に、delmem は、自分自身の使用メモリを64kまで縮小します。
> その後で、上位1kの領域を確保します。

 この流れは、そういうことか! と膝を打つ気になります。
 ソースのコメントを見ていたときに頭に浮かんだ数々の???。あれらが風船の
ように割れていき…。

> それから、そのPSP領域に自分自身のPSPの内容をコピーしているのではないかなぁ。
> つまり、偽装しているんですね。
> その後、PSPの80hにIDを埋め込んでいるようですね。

 ここが分からないのですが。偽装したから「書き込み直し」という意味でしょ
うか? PSP、80hに書き込むのはプログラム自身でなく command.com  か
msdos.sys ですよね。MCBのオーナー名と同じく。もちろん偽装がない標準的
なプログラムがロードされたら、ということですが。

> ということで、delmem はMCBを一切操作していないと思います。あ、いや、1バイト目
> に、9FBFh を書き込んでいるように見えますが。
> ・・・うう、ここでミスに気が付いてしまいました。(;_;)

 う??? えーと、MCB の1バイト目は、'M' か 'Z' です。PSP  の3、4バ
イトに「9FBFh」を書き込んでいる、なら通じるのですが?
 ただ、 もし「delmem は MCB を一切操作していない」なら、どうして MS-DOS
5のXPで、 MCBの中に delmem の文字がないのでしょう? やはり MS-DOS
に頼らずに自前でメモリ確保をしているから? でもそうしたら、MCBだって
自分で書かなければならなくなりませんか?
 としきさんの説明と合わせて、といきたいのですが、うまく整合していないよ
うにしか理解できていません。僕の頭に何が足りないのでしょう?
 「PSPを一切操作してない」、これでいいのか…。

(以下ダンプで半角カタカナは桁がずれる原因なので、.に書き直してあります。)
-----------------------------------------------------------------------

9FBF <--    1    1024  

C:\>dump -mx9fbe -s32
      0  1  2  3
0009FBE0  5A BF 9F 40 |Z.檗	MCB
0009FBF0  CD 20 FF 9F |. ..	PSP

9FBE1-2		=9FBE	PSPのセグメント
9FBF2-3		=9FFF	確保されたメモリの終端セグメント

 「9FBFh を書き込んでいるように見えますが」これって、MCBのことですよね。
じゃやっぱり「MCBを一切操作してない」ってことはないのじゃないでしょうか。
「PSPを一切操作してない」でよいでしょうか。

 しか〜し、
 「その後、PSPの80hにIDを埋め込んでいるようですね」これと矛盾してしまいます。

 ああ、神よ。


 で、質問に戻ります。金野さんは、常駐確認のためのIDの場所をPSP80
hからMCB8バイト目に移しましたでしょうか。そうしてないと言われると、
すっかりわからんちんになってしまうのですが。


> もしかして 1バイトずれている? 試しに1バイト手前にずらしてみたところ、
>  vmap でめでたく buf1k と表示されました。(^^;;

0009FBE0  5A BF 9F 40 00 FF 9F 00-07 62 75 66 31 6B 0D 00 |Z.檗.....buf1k..
00013900  4D 91 13 67 00 00 8D 13-56 57 58 00 00 00 00 00 |M..g....VWX.....

 ずれてますね。ただ、これだけじゃないんです。分からないのは。
 ま、僕の理解はどうあれ、新版をあげてくださいね。m(__)m


02142/02052 CRG00666  文太             Dbuf.def (0.82)
( 1) 07/01/30 20:13 02138へのコメント(文太さん) コメント数:1
 またしても、タコバグ。m(__)m
 掲示板で眺めていると、よく見える、、、。よく見つかる、、、。

=== Dbuf.def (0.82) by Bunta ===;Dummy Buffer Histcopy

#if0
special thanx to konno, YASAT and Toshiki. m(_B_)m
thanx to Sabrina, Delmem.com, Toshiki's 1kbuf.com and konno's Buf1k.com.

要 Buf1k.com 常駐。
ダミーバッファ用ヒストコピー。窓、ブロック(文字境界、行境界)でデータ保存。
普通起動でデータ保存(ヒストリー)、シフトでカーソル位置に書き出し。
実用性より技術習得とサンプル開拓が開発動機(め、珍しい! 文太!)
実は形にしなければ(どんな形であれ)、許してもらえなさそうな雰囲気が…。

tech notes: iseg copy, histcopy, textbuffer, realtime filesize, MCB & PSP (dos)
Dbuf family: Buf_Init, BufXchg (EMS).
dump -mx9fbe -s64(メモリは常に監視しよう!)
#endif


* Macro
80 ^\ ""; dummy buffer histcopy

	?.
	;---------- dummyfile name for size info ------------
#if 98 MG
	f="a:\tmp\tmp.txt",
#elseif DOSV
	f="c:\tmp\tmp.txt",
#endif
	;----------------------------------------------------
	w=$9fbe,		;check seg (MCB)
	x=$9fbf,		;base buf seg
	y=1024,			;buf max length

	; --- check TSR
	dx=w, &20 (ax)?? {&m("buf1k, not on memory!") .}

	; --- shift branch (On:51; writing out from buffer)
	(ks&1)? >51

	(mb==1)? >a		;line block
	(mb==2)? >b		;string block
	>c			;basic no block


		; ========= 3 patterns =========

:a		;---line block
	o=wn,				;startfile
	&05 (r)?? {&m(e) .}		;get info thru dummy file
	&07 				;bufcheck & get strlen2 of buff
	  (ax==-1)? {&m("Warning: buffer destroyed.") .}
	(si)?? {&01 >f}			;hist- (1st time buf use, only)
	&08 				;buflen adjustment
	&00 &01				;hist+

:f	mx[+, #C (s)? 'n' mx],		;close the dummyfile
	&#T(o)				;return to startfile
	&m("Many strings stored. OK!") .

	;===== ----- ===== ----- ===== ----- ===== ----- =====

:b		;---string block
	ps[=pr, #G ps],
	>d

:c		;---basic no block (window)
	pw[=pr,
	&g("*** sending to the dummy buffer ***",30)
	pw], (r<0) ?.

 :d	&Sn(pr) a=r, p=gz, q=pr+a, 	;<p>seg <q> tail offset <a>strlen1

		;=== common for two ===

	&07 				;bufcheck & get strlen2
	(ax==-1)? {&m("Warning: buffer destroyed.").}

	;===== Writing onto Buffer with history function =====
	&m("->Buf: %s",pr)
	(si)?? {&01 .}			;hist- (1st time buf use, only)
	&08 				;buflen adjustment
	&00 &01	.			;hist+


; ---------------------  LOCAL MACROS  ---------------------

00:	;;==== hist 1st move ==== << dest=>dest move >>
	ax=x,  si=b, cx=b+1,		;set src;  ds(ax):si, cx times
	bx=x,  di=a+b+1,		;set dest; es(bx):di,
		&10			;exec 'copy backwards'

01:	;;==== hist 2nd move ==== << src->dest copy >>
	ax=p, si=q, cx=a+1,		;set src;  ds(ax):si, cx times
	bx=x,  di=a,			;set dest; es(bx):di
		&10			;exec 'copy backwards'

10:		; --- hist backward copy (2) strcpy2 
		&i("$(50,1F,53,07,FD,F3,A4,FC,C3)")


05:	; --- get sizeinfo of the blocked lines thru status info

	(xc>0)? #B l=ln, #B			;
	(ln-l>100)? {e="Block, too Big!", (0).}

	#k mx[+, #N &?("%s",f) #m mx], #i	;--open and make dummyfile

	ps[=pr,					;--replace CRLF w/ $(0)
	#56 "\n\n" #m "\n" #m "AY"  :g #57 (r)? >g
	#^ #< (ct==1)? #g			;top safety
	#56 "\n" #m &o($0) #m "AY"  :h #57 (r)? >h
	ps],


	ds[+, #] &Sc(pr,pu+bu,8) ds],		;--get filesize from status
	&e(pr) 					;=============================
	a=r-1, 					;<a> src strlen (w/o last nul)
	q=a+2,					;<q> tail offset
	&e(pr) 					;=============================
	(a>y)? {e="Too many strings!", (0).}	;
	p=wa..9, (1) .				;<p> source seg (txtbuf)

07:	;--- check the buffer & get the strlen2 info ---	simplify 07&08
	; --> si 0:empty;  n:strlen2 of buffer (all strings)
	dx=x, ax=y,
	&i("$(52,1F,33,DB,33,F6,39,1C,74,04,46,48,73,F8,C3)")

08:	;--- if strlen2+new_strlen, too long, discard the oldest str ---
	bx=x, (a+si+3>y)? { &i("$
	$(53,1F,32,DB,4E,8A,04,38,D8,74,0B,4E,73,F7,88,1C)$
	$(46,88,1C,4E,EB,04,46,88,1C,4E,C3)")
	>^ }
	b=si, .

20:	; --- TSR check (5)
	&i(3+$)."$
	$(52,1F,33,F6,33,C0,B9,5A,BF,39,0C,75,0C,83,C6,02)$
	$(B1,9F,38,0C,75,03,B8,01,00,C3)"


	;=============== Reading from Buffer =================
51:
	;----- check the buf & get strlen (3)strlen1
	bx=x, dx=y,
	&i("$(53,1F,32,DB,33,F6,8A,04,38,D8,74,04,46,4A,73,F6,C3)")
	(si==0)	? {&m("Empty. Cannot write out.") .}

	;----- reading
	ax=x, cx=si+1, si=0,  		;set source
	bx=gz,         di=pr,		;set destination
	&i("$(50,1F,53,07,F3,A4,C3)")	;(4)strcpy
	&?("%s",pr) .

*


02143/02052 CXB00940  としき           Re^5: buf1k v0.1をテスト板に
( 1) 07/01/30 20:43 02140へのコメント(文太さん) コメント数:1
参照先:http://www.hinocatv.ne.jp/~toshiki/
>  無理でした。下位メモリでもオーナー名が残りません。
>  しかしそうすると、 やっぱりオリジナル delmem が MCB を弄っていることに
> なりますよね。下位からとっても MS-DOS 騙しのプロセスが入るのでしょうか?
> というか、入っているはずですよね。だってオーナー名が消えてるので。

きっと、delmemって、下位エリアに常駐する時も、きっと自前でメモリの確保を
し直しているのですよ。その際、DOSが書き込んでくれた情報ごと、旧の領域
を開放してしまっているのでしょう。少なくとも、環境変数領域は開放している
のは間違いないので、きっと、本体部分も開放している事と思われます。
で、新たに確保した部分には自分で情報を書き込んでいないのでしょう。


02144/02052 CXB00940  としき           Re^2: buf1k の動作
( 1) 07/01/30 21:04 02141へのコメント(文太さん)
参照先:http://www.hinocatv.ne.jp/~toshiki/
新版希望、という点は文太さんと同意見でして。
詳細な解説はkonnoさんからあるでしょうが、気がついたところをいくつか。

>  ここが分からないのですが。偽装したから「書き込み直し」という意味でしょ
> うか? PSP、80hに書き込むのはプログラム自身でなく command.com  か
> msdos.sys ですよね。MCBのオーナー名と同じく。もちろん偽装がない標準的
> なプログラムがロードされたら、ということですが。

PSPについてのDOSの挙動は調べていないのですけど。
少なくとも、delmemは、自分自身でPSPの80hに書き込んでいます。

>  う??? えーと、MCB の1バイト目は、'M' か 'Z' です。PSP  の3、4バ
> イトに「9FBFh」を書き込んでいる、なら通じるのですが?

ここは「1バイト目」からで正解です。
'M'か'Z'になるのは0バイト目です。
ビッグエンディアンとかリトルエンディアンというやつのからみで混乱している
ように見受けられます。このへんは複雑ですからねぇ。
#でも、文太さんならガリバー旅行記を原語で読んでいそう。


02145/02052 CRG00666  文太             Re^6: buf1k v0.1をテスト板に
( 1) 07/01/30 22:23 02143へのコメント(としきさん)
としきさん

> ここは「1バイト目」からで正解です。
> 'M'か'Z'になるのは0バイト目です。

 ここは了解。僕が間違ってました。m(__)m

> その際、DOSが書き込んでくれた情報ごと、旧の領域
> を開放してしまっているのでしょう。少なくとも、環境変数領域は開放している
> のは間違いないので、きっと、本体部分も開放している事と思われます。

 すいません、金野さんあてにも、同じ「適切な」質問ができるように思ってい
るのですが、「開放してしまう」「旧の領域」とは最初の全メモリ占有時のこと
ではないですよね。64kのときですよね。このときPSP・MCBセットはい
くつ存在していますでしょうか。つまりどこまで MS-DOS は管理していて、どこ
から delmem 自前なのか分からないから「偽装」のからくりが見えないのです。


02146/02052 CRG00666  文太             Re: buf1k の動作
( 1) 07/01/30 22:38 02135へのコメント(Konnoさん) コメント数:1
 どう質問すればいいか分かりました。

(1) delmem 1u を実行すると、Vz.com以降の空きメモリにロードされます。
(2) それ以降の9FFFh までの全てのメモリが使用中になります。
(3) delmem は、自分自身の使用メモリを64kまで縮小します。
(4) 上位1kの領域を確保します。
(5) そのPSP領域に自分自身のPSPの内容をコピーしているのではないかなぁ。

 上の5つのステップでMCBとPSPはどうなっているのでしょう?
 (5)が昨晩もまったく読めませんでした。PSPはこの時点でいくつあるんでしょう?

 (1)(2)でMCB、PSP1セット。(MS-DOSが作る)
  (3)勝手にやってるんだからMS-DOSは関知しない?
  (4)これもdelmemが自前でやってる。
  (5)げ、(1)(2)ステップでMS-DOSが作ったものしか存在していない。それをコピー?
   (1)(2)と(5)では場所が違うだけ。で、(1)(2)ステップがとしきさんのいう
   「旧の領域」。またMCBはPSPの在処とMとZだから、ここは自分で書いて
    いる。その際、オーナー名を書くことまでしていない。こういうことでしょう
    か。

  しかしこうだとすると、MCBはdelmemが自前で書いていることになりませんか?
  っていうか、PSP及び本体の場所を示すのがMCBなら、そこはdelmemが管理し
  なくてはMS-DOSが騙せませんよね。

  合ってますかねぇ?


02147/02052 BQO00549  Konno            Re^2: buf1k の動作
( 1) 07/01/31 00:17 02146へのコメント(文太さん) コメント数:1
文太さん、としきさん、マトレスで失礼します。

> > ここは「1バイト目」からで正解です。
> > 'M'か'Z'になるのは0バイト目です。
>  ここは了解。僕が間違ってました。m(__)m

そ、そうでしたっけ、てっきりまた間違えたかと思いました。(^^;
1か0かというのは難しいですね。(^^;

>  上の5つのステップでMCBとPSPはどうなっているのでしょう?

私も想像で物を言っているので鵜呑みにしないほうが良いですが、

PSPとは、COMファイルの先頭256バイトそのものです。これがそのままロードされると。
だから、delmemが独自に確保した領域にPSPがあるはずがないのです。

MCBはDOSが管理しなければ、メモリの確保も開放もうまく出来ないのは火を見るより
明らかだと思います。だから、M や Z は DOSがセットしているのだと思います。
メモリの確保や開放はINT21hでやる限りは全てDOSが実行・管理していると考えた
ほうがいいでしょう。

delmem で下位メモリのMCBにオーナー名が無いのは謎でしたが、ソースを見ると、
自分自身のプログラムコードを別の場所にコピーしてそこにジャンプしている
ようです。その後で、元のPSP先頭部分からのメモリを、開放、再確保している
のではないかと思われます。

PSPの80hにIDを書き込んでいるのも理由が有りました。コマンドラインの文字列は
MCBの8バイト目から書き込まれますが、ここには8バイトしか入りません。
オプションなど、長くて入りきらない部分はどこへ行くのか、と思ったら、
PSPの80hから続きが書き込まれているんですね。
TAGLIGHT とか、KB16 を見ればそうなっています。
VWX や、VZ はdelmem と同じように自分で80hに書き込んでいるのでしょう。

さて、ここまでで、納得いかない点はありますでしょうか。


02148/02052 BQO00549  Konno            Re^3: buf1k の動作
( 1) 07/01/31 00:42 02147へのコメント(Konnoさん) コメント数:1
> PSPとは、COMファイルの先頭256バイトそのものです。これがそのままロードされると。

うう、おもいっきり間違えていました。PSPはロードされた時にDOSが作っている
んでしたね。なんでこんな思い込みしたかなぁ。(;_;)

まあ、COMプログラムがロードされた時ということで、

> だから、delmemが独自に確保した領域にPSPがあるはずがないのです。

結論のつじつまは合うと思うんですが。(^^;


02149/02052 CRG00666  文太             Re^4: buf1k の動作
( 1) 07/01/31 01:54 02148へのコメント(Konnoさん) コメント数:1
金野さん

 ソース解析等、ありがとうございます。僕は僕の空想の中で割と落ち着くべき
ところに落ち着いてしまっていて、「納得いかない点」は今はとりわけ見つかっ
ていません。明日、また少しゆっくり考え直してみるつもりですが。

> PSPとは、COMファイルの先頭256バイトそのものです。これがそのままロードされると。
> だから、delmemが独自に確保した領域にPSPがあるはずがないのです。

 「おもいっきり外してる」という訂正が入っているのは分かっているのですが、
ただ、この言い方もありではないのでしょうか。普通プログラムって、com モデ
ルでは、org 100h でしょ。 ここ、PSPに入ってね、というつもりなのではな
いですか。まったく外れていますでしょうか。

 あと一点。delmem  にはコード自体がない、というのもおかしいですが、結果
としてはコードはなく MS-DOS に頼んで確保したメモリ量だけが大切なプログラ
ムですよね。だから、といっていいのか分かりませんが、PSPも自分の確保し
た領域と一緒にして計算しなくちゃいけませんよね。辻褄合いませんか?

> MCBはDOSが管理しなければ、メモリの確保も開放もうまく出来ないのは火を見るより
> 明らかだと思います。だから、M や Z は DOSがセットしているのだと思います。
> メモリの確保や開放はINT21hでやる限りは全てDOSが実行・管理していると考えた
> ほうがいいでしょう。

 はい、分かってない奴がこういうのもなんですが。ただやっぱり騙してません
か。MS-DOS  が作ってくれたMCBを改竄してないでしょうか。ソースにそんな
とこない? いえ、こう思ったのは、常駐方法がオプションで色々あり(サイズ
の小さいのもまとめてとか)、途中で全部とって64kにしてとなると、いくつ
もMCBリンクが  MS-DOS  によって貼られるよな、これを、たとえば、delmem
の目的にしたがって(最下位、最上位とか)調整するわけでしょ。だったら、M,
Z までは分からないけど、整理してないとおかしい、と空想していたのですが。


 「Vz、VWXは自分でオーナー名を書いてるだろう」僕もそう思うようにな
りました。

> ◇PSPパラメータ内のコマンド名
> 
>  DOS3では、TSRが環境エリアを解放すると、コマンド名が取得できなく
> なります。このため、TSRの多くは、PSPのパラメータエリアに、自身のコ
> マンド名をコピーしています。
>  DOS4,5では、MCBのオフセット8以降に、コマンド名が自動的に書き
> 込まれます。したがって、VMAPVer2では、これを参照してオーナー名を
> 表示します。こうなると、パラメータエリアにコピーされたコマンド名が重複し
> て表示される場合がありますから、パラメータエリアの先頭がスペース以外であ
> れば、次のスペースまでをスキップしています。
(vmap.doc)

 こんなドックからです。「環境エリアの解放」がけっこうネックだと思うので
すが、僕にはまだ分かりません。が、この書き方からして、常駐解除が必要なら、
当然、パラミータエリアに自分で書きますよね、きっと。
 これで、としきさん宛てに、「ここに書きたければ書け」という MS-DOS の半
端な親切、と書きました。

PSP 80h

0     1 2 3 4 5 6 7 8 9 A
文字数 パラミータ 文字列 0dh

 がフォーマットですが、「オプションの残り」? ですか? MCBの8バイト目
から(オーナー名)とは連動してませんよね。

taglightって常駐アプリなの?(独り言です)使ってないんですけど。



 あのぅーーー。一番単純な質問。常駐解除のための確認のIDの場所、PSP
からMCBへ変更なさってますよね? してないの〜? (T-T)
 も、もしかして、ぜんぜんとんちんかんなのかなぁ。



> delmem で下位メモリのMCBにオーナー名が無いのは謎でしたが、ソースを見ると、
> 自分自身のプログラムコードを別の場所にコピーしてそこにジャンプしている
> ようです。その後で、元のPSP先頭部分からのメモリを、開放、再確保している
> のではないかと思われます。

 関係ないかもしれませんが、最上位にとったとき、そしてその後ダンプすると、
そのパラミータがPSPの例の80hのところに部分的に書き込まれます。いえ、
delmemが上書きして書き直したみたいに見えました。何度も見た。「カレント
PSP?」とか前に書いたときも見ました。どうも現象の規則性が見えないのですが。

 PSP80hはdelmemが書いてる。根拠もロジックもソース読みもなく、賛成
です。


02150/02052 CRG00666  文太             DbufXchg.def (0.80)
( 1) 07/01/31 12:25 02142へのコメント(文太さん) コメント数:1
 タコバグがないことを祈ります。祈ってないで動け! はは。

=== DbufXchg.def (0.80) by Bunta ===;DBUFF_PS exchanger

#if0
 ノーマル起動:ダミーバッファとPSを総入れ替え。
 シフト起動:メニューにより
  双方向ヒストコピー(追加)と
  ダンプ(テキスト吐き出し。16進ではない)。
 history.def by m.gannとの併用がいちおうの目論見。
Dump -mx9fbe -s64
#endif

* Macro
50 ^^ ""

	(ef)?? {&m("not enough EMS!") .}

	w=$9fbe,				;check seg
	x=$9fbf,				;base buf seg
	y=1024,					;buf max length

	dx=w, &00 (ax)?? {&m("buf1k, not on memory!") .}	;check TSR


	;=== get 2 bufs info
	c=ps..-1,				;ps real size
	dx=x,  si-,   ax=y, &01 f=si,		;<f>strlen2 on buf
	dx=gz, si=ps, ax=c, &01 g=si-ps,	;<g>strlen2 on ps


	(ks&1)? >A			;shift branch, menu (Add & Dump)


	;=== check the safety of exchange
	y[,c[, (y-c>0)? y=c,		;the smaller is the norm (bufsize)
	f[,g[, (f-g>0)? g=f, 		;the bigger needs to be cared (strlen2)

	(g>y) g],f],c],y],
		? {&m("Sorry, bufsizes are too different.") .}


	;=== exchange dbuf & ps thru EMS ===

	&02			;open EMS
	&40			;copy ps   -> EMS
 	&41			;copy dbuf -> ps
	&42			;copy EMS  -> dbuf
	&03			;release EMS
		&m("DBuf <-> PS completed") .


:A	;========== shift menu (HistAdd or Dump) routine ==========

	!01 (r<0)?.
	(r)>? {>a >b >c >d}		;AddDB, AddPS, DumpDB, DumpPS

;-------------------------------------------------------------------------
:a	;---hist from ps to dbuf		;<f>dbuf_strlen2
						;<g>ps_strlen2
	fa+,
 :x	bx=x, (g+f+3>y)? {&05 >x}		;dest_len adjustment

	ax=x,  si=f, cx=f+1,			;dest move
	bx=x,  di=f+g+1,
	 &10

	ax=gz, si=ps+g, cx=g+1,			;src move
	bx=x,  di=g,
	 &10
		&m("ps->dbuf histcpy, OK!") .


;-------------------------------------------------------------------------
:b	;---hist from dbuf to ps		;<f>dbuf_strlen2
						;<g>ps_strlen2
	(f)?? {&m("Dbuf, empty.") .}

	fa-,
 :y	bx=gz, (g+f+3>c)? {&05 >y}		;dest_len adjustment

	ax=gz, si=ps+g, cx=g+1,			;dest move
	bx=gz, di=ps+g+f+1,
	 &10

	ax=x,  si=f, cx=f+1,			;src move
	bx=gz, di=ps+f,
	 &10
		&m("dbuf->ps histcpy, OK!") .

;-------------------------------------------------------------------------
:c	;---dump dbuf
	(f)?? {&m("Dbuf, empty.") .}

	&02			;open EMS
	&40			;copy ps   -> EMS
	&41			;copy dbuf -> ps
	&30			;===spitting out thru PS
	&43			;copy EMS  -> ps
	&03			;release EMS
		&m("Dbuf, Dumped.") .

;-------------------------------------------------------------------------
:d	;---dump PS
	&30 			;===spitting out PS
		&m("PS, Dumped.") .



;* === * === * === * ===   LOCAL MACROS   === * === * === * === *

00:	;---TSR check
	&i(3+$)."$
	$(52,1F,33,F6,33,C0,B9,5A,BF,39,0C,75,0C,83,C6,02)$
	$(B1,9F,38,0C,75,03,B8,01,00,C3)"

01:	;---strlen2
	; <-- dx = segment, si = offset, ax = buffersize (serch max)
	; --> si = offset
	&i("$(52,1F,33,DB,39,1C,74,04,46,48,73,F8,C3)")


02:	;---open EMS work
        &Ea(1) a=r,		;EMS allocation, EMShandle <a>
        &Em(a) b=r,		;EMS mapping, segment <b>

03:	;---close EMS work
        &Ef(a)


05:	;---if src+dest too long, discard the oldest in the dest
	;--> dx:seg, si:tail offset
	;<-- si:new strlen2 (shorter) of dest

	(fa)? si=f, ? si=ps+g,
	&i("$
	$(53,1F,32,DB,4E,8A,04,38,D8,74,0B,4E,73,F7,88,1C)$
	$(46,88,1C,4E,EB,04,46,88,1C,4E,C3)")
	}
	(fa)? f=si, ? g=si,		;dest: fa+,dbuf ; fa-,ps
					;strlen2;  f          g

10:	; --- backward copy for hist ---
	&i("$(50,1F,53,07,FD,F3,A4,FC,C3)")


30:	; --- spitting out PS strings ---
	p=ps,
 :e	&Sn(p) l=r, (r)? {&?("%s",p) #m p+=l+1, >e}


40:	;--copy ps -> EMS
	ax=gz, si=ps, cx=g+2,	;src
	bx=b,  di-,		;dest
	 &45			;copy!

41:	;--copy dbuf -> ps
	ax=x,  si-,  cx=f+2,	;src
 	bx=gz, di=ps,		;dest
 	 &45

42:	;--copy EMS -> dbuf
	ax=b, si-,   cx=g+2,	;src
	bx=x, di-,		;dest
	 &45

43:	;--copy EMS -> ps
	ax=b,  si-,  cx=g+2,	;src
	bx=gz, di=ps,		;dest
	 &45

45:	;---strcpy; ax:si -> bx:di, cx times
	&i("$(50,1F,53,07,F3,A4,C3)")	;(4)


* P
1	"HistAdd or Dump",19,4
	"1 PS   ==>  DBUF"
	"2 DBUF ==>  PS"
	"3 dump DBUF"
	"4 dump PS"

*
(source 1; strlen2−−ヌル2つまでの距離を測定)少し汎用化
; <-- dx = segment, si = offset, ax = buffer size (serch max)
; --> si = offset

START:	push 	dx		;set segment
	pop 	ds		;
        xor 	bx,bx		;0 (word)
NEXT:	cmp word ptr [si],bx	;cmp by the word (ds..0==0)? 
        je  	FIN		;
        inc 	si		;inc by the byte
        dec 	ax		;
        jnc 	NEXT		;jump if not with carryflag
FIN:	ret



02151/02052 CRG00666  文太             DBufInit.def
( 1) 07/01/31 12:33 02150へのコメント(文太さん) コメント数:1
 祈ること、再び。ファミリーの名前先頭を統一しました。

=== DBufInit.def by Bunta ===;buffer initializer
* Macro
50 ^^ ""

	w=$9fbe,		;check seg
	x=$9fbf,		;base buf seg
	y=1024,			;buf max length

	; --- check TSR (for source, see DBUF.DEF)
	dx=w, &20 (ax)?? {&m("buf1k, not on memory!") .}

	; --- buffer initialization
	;<-- dx:seg (from offset 0), cx:times=length. 

	dx=x, cx=y,
	&i("$(8E,C2,32,C0,33,FF,F3,AA,C3)")
	&m("Dummy buffer, Initialized") .


20:	; ===== TSR check =====
	&i(3+$)."$
	$(52,1F,33,F6,33,C0,B9,5A,BF,39,0C,75,0C,83,C6,02)$
	$(B1,9F,38,0C,75,03,B8,01,00,C3)"

*

	; --- buffer initialization
	;<-- cx (times), dx (seg)
 	mov	es,dx
 	xor	al,al
 	xor	di,di
	rep stosb
	ret


02152/02052 CXB00940  としき@会社     Re^5: buf1k の動作
( 1) 07/01/31 13:44 02149へのコメント(文太さん) コメント数:1
参照先:http://www.hinocatv.ne.jp/~toshiki/
あぅ〜、文太さんの理解が進むにしたがってというか、私のほうもだんだんわか
ってきました。

> ルでは、org 100h でしょ。 ここ、PSPに入ってね、というつもりなのではな
> いですか。まったく外れていますでしょうか。

あっていると思います。

>  あと一点。delmem  にはコード自体がない、というのもおかしいですが、結果
> としてはコードはなく MS-DOS に頼んで確保したメモリ量だけが大切なプログラ
> ムですよね。だから、といっていいのか分かりませんが、PSPも自分の確保し
> た領域と一緒にして計算しなくちゃいけませんよね。辻褄合いませんか?

ここはその通りだと思います。

>  はい、分かってない奴がこういうのもなんですが。ただやっぱり騙してません
> か。MS-DOS  が作ってくれたMCBを改竄してないでしょうか。ソースにそんな

そんなとこは、私がソースを読んだ限りでは見つけられませんでした。

> とこない? いえ、こう思ったのは、常駐方法がオプションで色々あり(サイズ
> の小さいのもまとめてとか)、途中で全部とって64kにしてとなると、いくつ
> もMCBリンクが  MS-DOS  によって貼られるよな、これを、たとえば、delmem
> の目的にしたがって(最下位、最上位とか)調整するわけでしょ。だったら、M,
> Z までは分からないけど、整理してないとおかしい、と空想していたのですが。

DOSのファンクションコールを使って調整していますから、全てDOSの管理
下にあるわけです。

> > ◇PSPパラメータ内のコマンド名
> > 
> >  DOS3では、TSRが環境エリアを解放すると、コマンド名が取得できなく
> > なります。このため、TSRの多くは、PSPのパラメータエリアに、自身のコ
> > マンド名をコピーしています。
> >  DOS4,5では、MCBのオフセット8以降に、コマンド名が自動的に書き
> > 込まれます。したがって、VMAPVer2では、これを参照してオーナー名を
> > 表示します。こうなると、パラメータエリアにコピーされたコマンド名が重複し
> > て表示される場合がありますから、パラメータエリアの先頭がスペース以外であ
> > れば、次のスペースまでをスキップしています。
> (vmap.doc)

こんな文章があったのね。これはわかりやすい気がする。
文太さんは、これのどこがわかりませんか?
う〜んと、PSPのパラメータエリアというのが80hですよね。
ここに名前を書き込むのはTSRというか各プログラムの仕事です。
DOSが新しいバージョンになっても、ほとんどのTSRはバージョンによって
挙動を変えるということをせずに、PSP80hに書き込み続けています。
そりゃそうですよね、DOS3の時代に作られてその後バージョンアップしなけ
れば当然そうなります。
一方、DOSは新しいバージョンになったので、自分の仕事を変更しました。
つまり、MCB8hにも書き込んでくれるようになりました。
その結果、同一の情報(プログラム名)がダブって記録されています。
vmapは、その両方の情報を取得してしまうのですが、両方表示すると見た目がよ
くないので、小技を使って少しでも見栄えをよくしているわけです。
・・・といったところでよろしいでしょうか。
何がわからないのかわかれば説明できるのですが。

>  あのぅーーー。一番単純な質問。常駐解除のための確認のIDの場所、PSP
> からMCBへ変更なさってますよね? してないの〜? (T-T)

これは、変更しているように私にも思えるのですが、konnoさんの確認待ち。


02153/02052 CRG00666  文太             Re^6: buf1k の動作
( 1) 07/01/31 18:30 02152へのコメント(としき@会社さん) コメント数:1
としきさん

> あぅ〜、文太さんの理解が進むにしたがってというか、私のほうもだんだんわか
> ってきました。

 ご謙遜なのか、ご冗談なのかの判別すらつきませんが、そう言っていただける
と、とても嬉しいです。m(__)m
 「あぅ〜」にどういう感情がこもっているのかは分かりませんでしたが。

> >  はい、分かってない奴がこういうのもなんですが。ただやっぱり騙してません
> > か。MS-DOS  が作ってくれたMCBを改竄してないでしょうか。ソースにそんな
> 
> そんなとこは、私がソースを読んだ限りでは見つけられませんでした。
> DOSのファンクションコールを使って調整していますから、全てDOSの管理
> 下にあるわけです。

 なるほど、これはとても分かりやすい。僕の「分かる」はイメージだけです。
ですから、お二人とは全然違うのですが、それでも「分かった」。
 そもそもストラテジの変更は MS-DOS の想定内(う、この言葉)、と表現して
よいのでしょうか。


> その結果、同一の情報(プログラム名)がダブって記録されています。
> vmapは、その両方の情報を取得してしまうのですが、両方表示すると見た目がよ
> くないので、小技を使って少しでも見栄えをよくしているわけです。
> ・・・といったところでよろしいでしょうか。

 よろしいと思います。これも分かります。

> >  あのぅーーー。一番単純な質問。常駐解除のための確認のIDの場所、PSP
> > からMCBへ変更なさってますよね? してないの〜? (T-T)
> これは、変更しているように私にも思えるのですが、konnoさんの確認待ち。

 確認待ちです。っていうか、そうじゃないと辻褄合いませんよね。
 で、何行目あたりですか? >金野さん いちおうは眺めようとしたのだけど。
 リトルエンディアンなとこでの、金野さんの「あうっ」の意味も分かりました。
 オーナー名の1バイトずれのことです。
 m(__)m

 というわけで、全体的にはさばさばしてしまっています。m(__)m

 つまり分かるべきことと(あくまでイメージ)、それはソース読まなくては分
からないよ、が区別できたらしいです(らしい、ってねぇ、あんた)。それでも、
いちおう書いておくと、 (知ってると思いますが) 、真面目に取り組んでます
(組んできてます)よ。真面目っていうか、ほとんど必死に。


 さて、ヒストバッファと保存バッファの共存を考えなくちゃ。まだあるの?(^^;


 追伸:(誰宛? )ついに『MS-DOS メモリ管理作法』(だっけ?)が図書館に
届きました。国会図書館にもなかったって。


02154/02052 BQO00549  Konno            Re^7: buf1k の動作
( 1) 07/02/01 00:40 02153へのコメント(文太さん) コメント数:1
>  あのぅーーー。一番単純な質問。常駐解除のための確認のIDの場所、PSP
> からMCBへ変更なさってますよね? してないの〜? (T-T)

#2126 の buf1k V0.1 の説明で

> MCBエリアにIDを埋め込んだので、PSP領域を含めた1024バイト丸まる使えます。

と書いたのですが、わかりにくかったですかねぇ。その前はPSPの7バイト目あたりに
IDを埋め込んでいたので、この領域の16バイトは使えなかったのだから、MCBへ変更
したのはわかるとおもったんですが。というか、文太さんはダンプで何度も見てるん
だから何が変ったかわかっているはずです。

>  で、何行目あたりですか? >金野さん いちおうは眺めようとしたのだけど。

大体258行目あたりでしょうか。そこだけコメントを書いてみました。

;-----------------------------------------------------------
        set_id_mcb          PROC        ;IDの埋め込み
        dec ax
        mov es, ax                      ; MCBセグ
        inc ax                          ;+1でPSPセグ
        mov word ptr es:[1], ax         ;MCB1バイト目に書き込み
        push    ax
        add ax,word ptr parag_size_get  ;バッファサイズパラグラフを
        mov di, 5                       ;MCB.5に
        stosw                           ;書き込み
        mov di, 7                       ;MCB.7に
        mov al, len_str_id              ;IDのサイズを
        stosb                           ;書き込み
        mov si, offset str_id           ;IDのオフセット
        mov cx, len_str_id              ;IDのサイズ
        dec cx                          ;-1
        dec cx                          ;-1
        rep movsb                       ; MCB.8からID書き込み

------------------------------------------------------------------------

ここは、delmem ではPSPの80hに書き込むルーチンだったと思います。



02155/02052 CRG00666  文太             FixedIn & FixedOut
( 1) 07/02/01 01:29 02151へのコメント(文太さん)
 保存バッファの出し入れです。実は、別にすぐさま深ーく落ちるつもりでもな
いのですが、このプロジェクトに1月で目途をつけるつもりでいたのです。

 その前に。はい、僕はアセンブラで煙草を止めました。これが最大の目論見。
腹が立つことも多いのですが、Vzマクロからのアセンブラ、楽しいですね。完
全にはまってしまいました。ほんとは12月いっぱいのつもりだったのよん、色
々。

 でも、皆さま+アセンブラ+ delmem+1kbuf+buf1k+sabrina のお陰で、たぶん、
ほんとに25年間の喫煙生活に終止符を打てそうです。油断禁物なのだけど。
 アセンブラにも色々あると思う。でも、Vzからやる場合、結局メモリ管理の
話なわけで、そういう意味では、「そうだ、常駐アプリでいいんだ」から始まっ
た文太のアセンブラ道場入門、できすぎているほどよくできた展開でした。別に
明日からアメリカへ行くわけじゃありませんが、としきさんと金野さんには、ほ
んと感謝、感謝です。(YASATさんも、もち。m(__)m)

 余談をちょっと。Vz有段者がやがてアセンブラに手を出す気持ちが、ほんの
少しですが、分かりました。何て言うんだろう、時計を後ろから覗いちゃった感
じかな。我々は徹頭徹尾時間に縛られて生きるよう「近代」に命令されているの
ですが、その後ろ側でギアやモーターが動いているのが見えてしまったみたい。
ああ、面白すぎ。しかし、(たとえばビスタ的な)現実から遊離することも確か
なので、危険でもありますね。


 さて、元に戻って、保存バッファです。ダミーバッファの終端、256バイト
を使います。4つに分けられておりまして、それぞれ0〜3の番号が振られてい
ます。固定(fixed)バッファですから、もちろんヒストリーではありません。

 その前に。

 DbufInit.defは、全部の掃除ですから、以下のままでよいのですが、
	w=$9fbe,		;check seg
	x=$9fbf,		;base buf seg
	y=1024,			;buf max length

 Dbuf.DEFとDbufXchg.DEFの先頭は、
	w=$9fbe,		;check seg
	x=$9fbf,		;base buf seg
	y=768,			;buf max length
 のようにバッファサイズを縮小しておかなければいけません。

 この調整が済みましたら、あとは簡単です。以下のサンプルマクロでお試し下
さい。何かのマクロのサブルーチンとして使われることが想定されています。サ
ブルーチンの形をしてなくてすいませんが。
 ax には、0,1,2,3 を入れます。 これがバッファ番号です。これは個人管理で
すから、どこを何に使ったかは覚えておくなり、マクロの中で対応させるなりし
ましょう。それ以外の入出力はマクロを見て下さい。自分のためではありますが、
詳細に書いてあります。

 バッファのフォーマットは、最初の1バイトにサイズ情報が入っていて、終端
がヌルです。1つのバッファの有効サイズが62バイトで、ちょうどVzが扱え
るファイル名の最大値になっています(色々うまくできてるもんですね)。ファ
イル名を4つ、動かないバッファに管理できるわけですね。
 ああ、62バイト以上かのチェックはしてません。ま、間抜け。そういのは止
めましょう。間違えなければ、エラー処理ルーチンなんて要らないのです。なん
で62かと考えましょう。

 バッファサイズやFバッファの箇所は固定です。ニーモニックの中に入ってし
まってますので外からは調整できません。 でも、ax で4つをちゃんと識別する
はずですので、このほうが使い勝手がよいでしょう(でもないかな)。

 出先は pr になっています。 その辺りがいいのではないでしょうか。tmpbuf4
は、たぶん、止めたほうがいいようです。色々こけました。サブリナ関連なのか
もしれません。それがなければ11時頃には上げられたはずだったのです。

 もちろん、誰も使わないことは知っているのですが、えい、ここまでちゃんと
やったぞい、と言ってみたくて。また、(もちろん)上は、そういう使い方を
僕はする、というだけの話です。でも、ほんと、使うのです!

 バグとか指摘しまくらないでください。しまくらなければ、どうぞ。m(_B_)m


=== FixedOut.def by Bunta ===;
* Macro
50 ^\ ""

	w=$9fbe,		;check seg
	dx=w, &20 (ax)?? {&m("buf1k, not on memory!") .}

	a="1st1st1st1st--------------------------",
	&Sn(a) aa=r,
	ax=0, dx=gz, si=a, cx=aa, &01

	&m("OK!") .


01:	&i(3+$)."$
	$(8E,DA,33,D2,33,FF,B2,04,F6,E2,05,EF,9F,8E,C0,26)$
	$(88,0D,47,F3,A4,32,D2,26,88,15,C3)"
	;---- sendout -----------------------------------------------
	;<-- input  ax:bufseg#(0,1,2,3), dx:seg, si:offset, cx:strlen
	;------------------------------------------------------------

20:	; ===== TSR check =====
	&i(3+$)."$
	$(52,1F,33,F6,33,C0,B9,5A,BF,39,0C,75,0C,83,C6,02)$
	$(B1,9F,38,0C,75,03,B8,01,00,C3)"

*

	mov	ds,dx		;ds:si (vz) -> es:di(buf) 
;---init
	xor	dx,dx
	xor	di,di
;---set seg from #info
	mov	dl,4h		;(0,1,2,3)*4
	mul	dl		;ax,max,12h
	add	ax,9FEFh	;base seg
	mov	es,ax
;---write sizeinfo at offset 0
	mov	es:[di],cl
	inc	di
;---copy
	rep movsb
;---strike nul at tail
	xor	dl,dl
	mov	es:[di],dl
	ret


=== FixedIn.def by Bunta ===;
dump -mx9FEF -s32
dump -mx9FF3 -s32
dump -mx9FF7 -s32
dump -mx9FFB -s32

* Macro
50 ^^ ""

	w=$9fbe,		;check seg
	dx=w, &20 (ax)?? {&m("buf1k, not on memory!") .}

	ax=0, di=pr, &01
	(bx)?? {&m("Fbuf(%d), empty!",ax) .}
	&m("%s",pr)


01:	&i(3+$)."$
	$(BB,01,00,33,F6,33,C9,B2,04,F6,E2,05,EF,9F,8E,D8)$
	$(3A,0C,74,07,8A,0C,41,46,F3,A4,C3,33,DB,C3)"
	;---- getin ----------------------------
	;<-- ax:buf#(0-3), di:output offset
	;--> bx: 0=buf empty, 1=buf not empty
	;strcpy fbuf(0-3) -> pr; ds:si->es:di
	;---------------------------------------

20:	; ===== TSR check =====
	&i(3+$)."$
	$(52,1F,33,F6,33,C0,B9,5A,BF,39,0C,75,0C,83,C6,02)$
	$(B1,9F,38,0C,75,03,B8,01,00,C3)"

*
;---init
	mov	bx,1		;check flag
	xor	si,si
	xor	cx,cx
;---set seg from #info
	mov	dl,4h		;(0,1,2,3)*4
	mul	dl		;ax,max,12h
	add	ax,9FEFh	;base seg
	mov	ds,ax
;---check 1st byte
	cmp	byte ptr cl,[si]
	jz	OOOPS
;---read strlen
	mov	byte ptr cl,[si]
	inc	cx
	inc	si
;---copy
	rep  movsb
	ret
OOOPS:	xor	bx,bx		;checkflag 0
	ret


02156/02052 CRG00666  文太             Re^8: buf1k の動作
( 1) 07/02/01 11:14 02154へのコメント(Konnoさん) コメント数:1
金野さん

 ご丁寧にどうもありがとうございます。m(__)m

> というか、文太さんはダンプで何度も見てるん
> だから何が変ったかわかっているはずです。

 うーん、これは、すいません、金野さん、想像力が足りませんよ。す、すいま
せん、こんな場面においてさえ暴言を吐いて。何が、何のために変わったか、推
測と想像と空想がごちゃごちゃになるものなんですよ。で、間違う。間違うはず
のない事柄に関して、間違うはずのない人に向かって「間違ってませんか」って
言い出す。「暴言でした」と謝る。そんなもんなんですよ。知らないはずないと
思うのですが。m(__)m
 ここでも「はず」がきつすぎるとは思いますが。

 ソースのコメント付け、ありがとうございました。分かる!!! 嬉しい!!
勢いでオリジナルdelmem読んじゃうか?! ないな、それは、さすがに(~_~;

 でも、理由は明らかでないのですが、何か「分かっちゃったのよ」爽快感に包
まれてしまっています。2日前から? お二人のお陰です。m(_B_)m ありがとう
ございます。うるうる。無気味な幸福感だなぁ。


02157/02052 BQO00549  Konno            buf1k v0.2
( 1) 07/02/02 00:09 02156へのコメント(文太さん) コメント数:2
>  うーん、これは、すいません、金野さん、想像力が足りませんよ。す、すいま
> せん、こんな場面においてさえ暴言を吐いて。何が、何のために変わったか、推
> 測と想像と空想がごちゃごちゃになるものなんですよ。で、間違う。間違うはず
> のない事柄に関して、間違うはずのない人に向かって「間違ってませんか」って
> 言い出す。「暴言でした」と謝る。そんなもんなんですよ。知らないはずないと
> 思うのですが。m(__)m

はい、おそらく混乱しているのだろうとは思ってました。だからちょっと変えて、
「 というか、文太さんはダンプで何度も見てるんだから何が変ったかは見ている
はずです。」
のほうがよかったですね。見てはいたが、混乱していたので、あれ?どうだったっけ
となったのかなと。

>  ソースのコメント付け、ありがとうございました。分かる!!! 嬉しい!!
> 勢いでオリジナルdelmem読んじゃうか?! ないな、それは、さすがに(~_~;

私も読めないソースを改造する時はまずコメントを調べながら付けまくります。
そうするとなんとなく全体の流れとかわかってくるものです。それを繰り返して
だんだん覚えてきたと。

>  でも、理由は明らかでないのですが、何か「分かっちゃったのよ」爽快感に包
> まれてしまっています。2日前から? お二人のお陰です。m(_B_)m ありがとう
> ございます。うるうる。無気味な幸福感だなぁ。

こういう時って有りますよね、自分のレベルが一段上がったような感覚。
いよいよ隔離病棟に両足突っ込んだようですね。もう後戻りは出来ません。(^^;
ここは世間の流れとは完全に乖離してますからね。びすたがどすた!!

というのはともかく、テスト板にbuf1k v0.2 をアップしました。
vmap でのオーナー名表示とソースのコメント追加だけですが。

http://hpcgi3.nifty.com/tamaneko/bbs4/wforum.cgi?no=18&reno=17&oya=17&mode=msgview&fsize=&page=0


02158/02052 CRG00666  文太             Re: buf1k v0.2
( 1) 07/02/02 00:56 02157へのコメント(Konnoさん)
金野さん

 きたきた!

> 見てはいたが、混乱していたので、あれ?どうだったっけ、となったのかなと。

 そんな感じです。「PSPからMCBに移してくれたら、PSPも全部領域に
使えるんだよなぁ」と夢想していたこともあったわけで。m(__)m

> 私も読めないソースを改造する時はまずコメントを調べながら付けまくります。
> そうするとなんとなく全体の流れとかわかってくるものです。それを繰り返して
> だんだん覚えてきたと。

 なるほど、なるほど。そうやって。Vzのソースはどこからどこまでお済みで
すか、ってずるいか。うーん、「あくまで文字列の操作」とテーマを絞るとする
と、string.asm,  char.asm がお勧めですでしょうか。その前に vz.inc でしょ
うけど。
 僕も、大きい声では言えませんが(おい)、1kbuf のファンクションコールだ
け.shdからメモって、プリントアウトはしてあるのですが…。「勉強しろよな」
って恫喝されちゃったし。

 (余談ですが、VWX のソース、あったらよかったですね。でも、あの言語で正
規表現置換を常駐したまま行なうって、やっぱ半端じゃないですね。ソースあっ
ても、手も足も、かな。Cとかだったら当時からライブラリ的に存在してました
けどね。)

> こういう時って有りますよね、自分のレベルが一段上がったような感覚。
> いよいよ隔離病棟に両足突っ込んだようですね。もう後戻りは出来ません。(^^;
> ここは世間の流れとは完全に乖離してますからね。びすたがどすた!!

 もちろん、ビスタな現実など関係ありません。面倒みてきたXPが3台はあり
ますから、マシンには困りませんし。「そろそろビスタに乗り換えたら」とか言
って入手は実に容易。壊れてる2台を直すのが先だったりするし。うーん、でも
困りますねぇ。いえ、ストリング命令を無理やり直訳のポインタで処理しようと
した時としきさんがサンプル書いてくれて、何て言うかロジックの先読みが筋っ
て教えてくれたのです。その時も僕はぶつぶつ文句言ってたのだけど。そして今
回も(こんなこと言えるほど読めてないのですが)、先に特定レジスタを使う処
理に合わせて組み上げていってるのが見えたとき、そしてその意味が金野さんの
コメントで確認できたとき、う、俺にも無理ではないな、と思ってしまった。あ
るいは先行していた思いを確認してしまった。認識は常に再確認として現れる。

> というのはともかく、テスト板にbuf1k v0.2 をアップしました。
> vmap でのオーナー名表示とソースのコメント追加だけですが。

 うふ。落とさせていただきます。m(__)m


02159/02052 CRG00666  文太             Re: buf1k v0.2
( 1) 07/02/03 14:01 02157へのコメント(Konnoさん) コメント数:1
金野さん

 Buf1k02+MASM6なのですが、大昔に出会ったことがあるようなエラーメッセージ
が出ます。
 どう対処するのが正しいのでしょう。お教えいただけますか。

C:\>Ml BUF1K.asm >err.txt

 Assembling: BUF1K.asm
BUF1K.asm(348) : error A2071: initializer magnitude too large for specified size
BUF1K.asm(351) : error A2071: initializer magnitude too large for specified size


-----------------------------------------------------------------------------
348
	str_usage db LF,"buf1k ver ",VER_NO
		  db "  installed.   For removal, Buf1k r.",CR,LF

351
	str_remove db LF,"buf1k ver ",VER_NO
		  db "  removed",CR,LF


02160/02052 CRG00666  文太             buf1k@MASM6
( 1) 07/02/03 21:26 02159へのコメント(文太さん) コメント数:2
Ml /Zm		;Enable MASM 5.10 compatibility

 でなんとかなりました。驚いたのは、たしかに、(たぶん)lldのせいで、
ファイルサイズが違うこと。
 こ、こんなに。ソース間違えてませんよ。

BUF1K.COM  755  2007-02-01  23:07
BUF1K.COM  695  2007-02-03  18:25	;文太アセンブル(with lld.exe)

 ただ、あれがどうしていけないのか、が分かりませんね。どう書けっていう
んでしょう?



02161/02052 CRG00666  文太             Re: buf1k@MASM6
( 1) 07/02/03 22:08 02160へのコメント(文太さん)
 メッセージだけ書き換え成功!

C:\>buf1k
 Buf1k ver 0.21, installed.  For removal, Buf1k r.

C:\>buf1k r
 Buf1k ver 0.21, removed.


02162/02052 BQO00549  Konno            Re: buf1k@MASM6
( 1) 07/02/04 00:04 02160へのコメント(文太さん) コメント数:1
文太さん

> Ml /Zm		;Enable MASM 5.10 compatibility
>  でなんとかなりました。驚いたのは、たしかに、(たぶん)lldのせいで、
> ファイルサイズが違うこと。

すみません、MASM6でも確認したつもりが、5.1のobjが残っていたせいで勘違い
してしまいました。m(__)m

	VER_NO   	equ	"0.20"
	str_usage db LF,"buf1k ver ",VER_NO
	str_remove db LF,"buf1k ver ",VER_NO

これでバージョンナンバーを設定してるんですが、この書き方だとMASM6では数値と
してみなされてしまうんですね。

	str_usage db LF,"buf1k ver VER_NO"
	str_remove db LF,"buf1k ver ","VER_NO"

このように文字列として扱ってやればいいようです。


> BUF1K.COM  755  2007-02-01  23:07
> BUF1K.COM  695  2007-02-03  18:25	;文太アセンブル(with lld.exe)

う〜ん、こんなに違うとは。空のデータを圧縮しているのだと思いますが、
ファイルサイズを小さくしたいなら、LLD.EXEがいいということですね。


02163/02052 BQO00549  Konno            Re^2: buf1k@MASM6
( 1) 07/02/04 00:13 02162へのコメント(Konnoさん) コメント数:1
> このように文字列として扱ってやればいいようです。

げげげ、アセンブルが通ったと思ったら、VER_NO がそのまま表示されてた。
すみません、いい加減なことを言って。

う〜ん、やっぱり5.1互換でやるしかないかなぁ。


02164/02052 BQO00549  Konno            Re^3: buf1k@MASM6
( 1) 07/02/04 00:32 02163へのコメント(Konnoさん) コメント数:1
> う〜ん、やっぱり5.1互換でやるしかないかなぁ。

わかった!! VZ.INCをみればいいんだ!!

VERSION_MAJOR	equ	<'t03 testd kVZ '>
MY_VERSION		equ	<'k08Q5 '>
VERSION		equ	<'t03k d10 ',MY_VERSION>

VZ.INC ではこんなふうにしていますね。だから、

	VER_NO	equ	<'0.20'>

	str_usage db LF,"buf1k ver",VER_NO
	str_remove db LF,"buf1k ver ",VER_NO

こうすれば、どちらでも問題なくアセンブルできますよ。
てか、自分で弄っているのにわかってなかったのか、おのれ(゜゜)☆\(--#)バキッ


02165/02052 CRG00666  文太             Re^4: buf1k@MASM6
( 1) 07/02/04 01:36 02164へのコメント(Konnoさん) コメント数:1
金野さん

> わかった!! VZ.INCをみればいいんだ!!

 すべての教科書! ありがとうございます。ものすごく勉強になりました。

 実は、例の固定バッファ・ルーチンをもうちょい洗練させるべく、受け取り先
をいちおう4つ確保しようとして、こんなことになり、

;	di=pr,			;set input
;	q=pq..134,		;tmpbuf (256up)
;	q=pq..135,		;tmpbuf2(256)
;	q=pq..136,		;tmpbuf3(wd*2 bytes = 80*2)
;	q=pq..149,		;tmpbuf4(256)
;	q=pq..137, 		;pathbuf (64)
	q=pq..138,		;pathbuf2 (64)
	di=q,

 Vz ソースディレクトリをグレップしたりしてました。
 変数なんですよ、、読み解くべきは。下手したら読めてしまうかもしれない。
 こ、こわい。深入りしないのが一番だ。でも魔界を見てしまいましたぁ。

 金野さんのせいです。僕の人生をどうしてくれるのです! ………

 寝よ。なんだか人生が楽しくなってしまった。いいのかなぁ。

 僕は、環境変数の勉強をすることにしたのだったんだ。寝よ、寝よ。

 追伸: push,pop の辻褄が合わないことがあんなに恐いことだとはしりません
でした。アセンブラの話。「メモアロ」と1時間、15回くらいつき合ってしま
いました。XPでも、やっぱりめげますよね。全部止まりやがると。
 サブリナがいけないのでも、tmpbuf4に問題があるのでもなく、辻褄が合ってな
かったのでした。

 追伸2:こういうことを軽く言う奴で申し訳ないのですが、そろそろログ上げ
ませんか? はい、自分で管理すべく、巡回ツールについて検討中です。


02168/02052 BQO00549  Konno            [全部表示] はほぼFGAL形式
( 1) 07/02/04 15:09 02165へのコメント(文太さん) コメント数:1
>  Vz ソースディレクトリをグレップしたりしてました。

正しい歩みですね。(^^; 私は毎日のようにグレップしてます。(^^;

>  追伸: push,pop の辻褄が合わないことがあんなに恐いことだとはしりません
> でした。アセンブラの話。「メモアロ」と1時間、15回くらいつき合ってしま
> いました。XPでも、やっぱりめげますよね。全部止まりやがると。

OSごと止まったんですか? マクロのプッシュポップは安全装置が有りますからねぇ。
マシン語で固まった時は真っ先に疑うようになりましたね。

>  追伸2:こういうことを軽く言う奴で申し訳ないのですが、そろそろログ上げ
> ませんか? はい、自分で管理すべく、巡回ツールについて検討中です。

もう過去ログに行ってしまいましたが、#1809 からのツリーに書いたように、
この現在のログなら、新着ページの上部の、[全部表示]のリンクからの表示が
ほぼFGALDC形式になっています。このページでファイルメニューの「名前をつけて
保存」を実行し、テキスト形式で保存すれば、NIFP で読めるログが出来ます。

過去ログもツリー上部に、[全部表示]リンクが有ります。
お急ぎの方はこれでどうでしょうか。(^^;
もし、この形式で読めない時は教えて下さい。


02171/02171 BQO00549  Konno            「VZの部屋」のURL変更
( 1) 07/02/04 15:57
「VZの部屋」のURLを変更しました。
ファイル名を、sub02.html から vz.htm に変えただけですが。

以前のURLからは、自動的にページジャンプするようにしましたが、
いずれは削除しますので、ブックマークの変更をお願いします。


02175/02052 CRG00666  文太             Re: [全部表示] はほぼFGAL形式
( 1) 07/02/04 23:19 02168へのコメント(Konnoさん) コメント数:1
金野さん

> 私は毎日のようにグレップしてます。(^^;

 やっぱり。

> 正しい歩みですね。(^^;

 いえ、文太的には…。

> OSごと止まったんですか? マクロのプッシュポップは安全装置が有りますからねぇ。
> マシン語で固まった時は真っ先に疑うようになりましたね。

 いえいえ、MS-DOS窓だけです。マクロの安全装置のありがたみが今頃。
 「全部」っていうのは「窓が」という意味でした。マクロだと下手なことをしても、
死ぬのはVzだけってこともあるじゃないですか。それで、マクロを試しただけなのに
MS-DOSまで死ぬなよ、と。ま、「そのマクロMS-DOSを殺せるのよ、簡単に。マシン語
なんですから」と思い出しました。

 「真っ先に」。m(__)m これが正しい歩みですね。

> もう過去ログに行ってしまいましたが、#1809 からのツリーに書いたように、
> この現在のログなら、新着ページの上部の、[全部表示]のリンクからの表示が
> ほぼFGALDC形式になっています。このページでファイルメニューの「名前をつけて
> 保存」を実行し、テキスト形式で保存すれば、NIFP で読めるログが出来ます。

 おお、ログをまったく読んでないやつで。m(__)m

> 過去ログもツリー上部に、[全部表示]リンクが有ります。
> お急ぎの方はこれでどうでしょうか。(^^;
> もし、この形式で読めない時は教えて下さい。

 まだ落としていませんが、すぐに。何か、今日は急に色々あって。m(__)m
 そういう意図で、FGAL復活だったのですね。冗談だと思ってました。すい
ません。これは嬉しいぞ。

 モバとかでソースなんて読みたくないので、std.inc, vz.inc, main.asm プリ
ントアウトしちゃいましたよ。これから移動の多い季節なので。季節労働者です。


 しかし、うん。まったくもって僭越で突飛な話なのですが。m(__)m
 さっきお風呂で思いついたのです。金野さん、金野さんは何かをオリジナルで
作るべきですよ。べき、なんちゃって。
 でも、ほんと、自分のために。 自分のためだけに。スクラッチから。.com で
も .exe でも .def でも。いえいえ、Vzユーザとしては、Vzを進化させてく
れないと困るのですが、でも、何か自作ものを。そのための改造修行です。
 ほんと、 それこそVzのためにも。 もしかして、僕はVzをなめてるかな?
いや、金野さんは金野さんのために。

 余計なことを、たくさん。失礼しました。m(_B_)m


02177/02052 BQO00549  Konno            Re^2: [全部表示] はほぼFGAL形式
( 1) 07/02/05 01:11 02175へのコメント(文太さん) コメント数:1
>  モバとかでソースなんて読みたくないので、std.inc, vz.inc, main.asm プリ
> ントアウトしちゃいましたよ。これから移動の多い季節なので。季節労働者です。

やっぱり正しい歩みだ。(^^; あれ?モバで見ないんですか。高橋さんはLXでVZ.COMを
アセンブルしてましたよ。って私もLXはログ読みにしか使ってないですが。(^^;

>  でも、ほんと、自分のために。 自分のためだけに。スクラッチから。.com で
> も .exe でも .def でも。いえいえ、Vzユーザとしては、Vzを進化させてく
> れないと困るのですが、でも、何か自作ものを。そのための改造修行です。

自作ものを作る目的で改造修行してるならいいんですが、私は何も無いので。
それよりも、今有るものをもっと便利にしたいと言う欲求が強いんですね。

VZもNP2も掲示板CGIも弄ればもっともっとよくなる可能性を秘めていて、しかも
ソース付きなので、わかるところだけ弄っているわけです。ゼロから何かを作る
ほどのスキルは有りませんよ。


02179/02170 CRG00666  文太             Re: VZマクロの部屋に制御文字入力マクロをアップ
( 1) 07/02/05 16:55 02170へのコメント(さん) コメント数:1
金野さん

 うふうふ。隠されていた自作もの? でも「元は」ということはこれも改造も
の?

 で、物わかりの悪い奴で申し訳ないのですが、この辺の文章そのものに登場し
ない記号(? 制御文字)については未だまったく分かっておりませんで、申し
訳ないのですが、ちょっとだけでも教えてやっていただけないでしょうか。
 ^A 〜 ^L(一度くらい使ったことあったっけ?)〜 ^Z は出るのはわかったし、
16進数で ffff とやると半角豆腐が2つ出るのは確認したのですが、ごくごく
簡単に具体的な使い方をお教えいただけないでしょうか。

> 昔はこれでマシン語入力してました。(^^;

 とりわけ、ここが分かりません。おお、8142で「。」が出た。し、しかし…。
 もしかして手書きcom?

 実は、僕は「こんなの使うことない」と、^Pをs==1のとき以外は、別のマクロ
(記号出しマクロ)にしてしまっています(よく使うキーなんです)。ヌルを書
くなど、特殊なマクロを書くとき以外ない、と遠い昔に判断してしまって。正し
くない歩み?


02181/02170 CXB00940  としき           Re: VZマクロの部屋に制御文字入力マクロをアップ
( 1) 07/02/05 19:15 02170へのコメント(さん)
参照先:http://www.hinocatv.ne.jp/~toshiki/
> VZマクロの部屋からどうぞ。
> http://homepage3.nifty.com/tamaneko/vzmac.htm

このページ、半年ぶりぐらいで訪れました。
ところで、#2171> 以前のURLからは、自動的にページジャンプするようにしましたが、
> いずれは削除しますので、ブックマークの変更をお願いします。

とありますが、Vzマクロの部屋のページからのリンクの修正が漏れているよう
な気がします。いずれ修正しておいた方がよろしいかと。


02183/02052 CRG00666  文太             Re^3: [全部表示] はほぼFGAL形式
( 1) 07/02/05 21:40 02177へのコメント(Konnoさん)
金野さん

> VZもNP2も掲示板CGIも弄ればもっともっとよくなる可能性を秘めていて、しかも
> ソース付きなので、わかるところだけ弄っているわけです。ゼロから何かを作る
> ほどのスキルは有りませんよ。

 面倒な言いがかりに、ご丁寧にどうも。m(__)m
 スキルがない、というのは、正しくないですが。やっぱ、後からついてくるものみ
たいな気がしていますので。
 ま、改造の可能性が面白くて、というので、相手がVzだったりしたら、そうかな、
とも少し思います。僕が何かを言うような事柄でもないし。ただ、なんとなく違うと
ころで違うことをやったら、とふと思ってしまったものですから。それがVzに返って
くるかなと。どうも失礼いたしました。


02187/02170 BQO00549  Konno            Re^2: VZマクロの部屋に制御文字入力マクロをアップ
( 1) 07/02/05 23:49 02179へのコメント(文太さん) コメント数:1
>  うふうふ。隠されていた自作もの? でも「元は」ということはこれも改造も
> の?

もう大昔なので、覚えてないんですが、私がゼロから作れるはずないですからねぇ。

>  ^A 〜 ^L(一度くらい使ったことあったっけ?)〜 ^Z は出るのはわかったし、
> 16進数で ffff とやると半角豆腐が2つ出るのは確認したのですが、ごくごく
> 簡単に具体的な使い方をお教えいただけないでしょうか。

基本的に16進数で入力だったと思いますが、使い方はソースを読んでください。(^^;

> > 昔はこれでマシン語入力してました。(^^;

これは間違いですね。通常入力できないバイナリコードを16進でコード入力する
目的で、マシン語ではないですね。すみません。
名前も CTRL.DEF より、HEX.DEF のほうがよかったですね。



02191/02170 CRG00666  文太             Re^3: VZマクロの部屋に制御文字入力マクロをアップ
( 1) 07/02/06 00:22 02187へのコメント(Konnoさん)
金野さん

> 基本的に16進数で入力だったと思いますが、使い方はソースを読んでください。(^^;

 で、出たぁ。嫌な奴。(-_-)/~~~~ピシー!ピシー!

> > 昔はこれでマシン語入力してました。(^^;
> これは間違いですね。通常入力できないバイナリコードを16進でコード入力する
> 目的で、マシン語ではないですね。すみません。

 バイナリコード。むむむ。