一括表示

− 野ざらし言 −

[4126] 表示属性Av

としき 2012/07/10(Tue) 00:07
http://www1.hinocatv.ne.jp/toshiki/
Vzの表示属性オプションにAvというのがあるようです。
これってどういうものですか?
取説はおろか、めざら資源にすら解説がないようです。
特定バージョンのみで機能するオプションなのでしょうか。
また、どういう値を設定すればどうなるのでしょうか。

[4127] Re: 表示属性Av

めざら 2012/07/10(Tue) 06:55
[4126]へのコメント http://homepage3.nifty.com/mezala/
Avというのは,アンダーラインのテキスト属性ということになっています。
NECの旧PC98アーキテクチャ上だけ有効なオプションではないでしょうか。
すぐ動かせる環境がないので試せませんが…

違うかなぁ…
Undocumentedな件は,ソースが読めないとわからないですね。

[4128] Re^2: 表示属性Av

としき 2012/07/10(Tue) 23:33
[4127]へのコメント http://www1.hinocatv.ne.jp/toshiki/
> Avというのは,アンダーラインのテキスト属性ということになっています。

Duとの違いがよくわかりません。

> NECの旧PC98アーキテクチャ上だけ有効なオプションではないでしょうか。
> すぐ動かせる環境がないので試せませんが…

WinXPのDOS窓で試したところ、

 Du0,Av0:カーソル行の強調表示なし
 Du1,Av0:カーソル行は網掛け
 Du1,Av1:カーソル行は網掛けなし、文字色は黄色
 Du0,Av1:カーソル行は強調表示なし

という結果になりました。
なので、むしろ逆に、PC-98では機能しないのではないでしょうか。
「VZ変数・オプション・スイッチ関連覚書」
http://homepage3.nifty.com/mezala/vz/notes/vars.html#AV
にも「カーソル行の強調表示属性(IBM-PC)」と書いてあるし。

そもそも、Avって、スイッチではないみたい。
Avの初期値は128になってる。

FGALDCの過去ログを検索したら、15階のNo.17528(2001/01/30)なんていうのが引っかかってきた。これによると、Avについて、めざらさんがいろいろと実験なさっているけど、結果は別の場所のみの公開にとどまっている模様。この結果を出してもらえれば、もしかして私の疑問の一部は解消するのかな。


追伸
ついでで申し訳ないのですが、「VZ resources」について。
vz.defの「E その他」の部分のことについて調べたかったのですが、見つけることができませんでした。
これ、掲載はありますか?
あれば、どこにありますか?
なければ、将来的に掲載の予定はありますか?
掲載されるとして、どのページというか章というか、項目に掲載されますか?

[4129] Re^3: 表示属性Av

文太 2012/07/11(Wed) 12:04
[4128]へのコメント
PK 14, #00077, syoさん 「未公開変数av0〜av11の動作確認」 93/02/14
を参考に。XPにて。
アンダーライン・カーソル行の着色用なんですね。av4が僕にはいいみたい。

変数       内容
av        (Du+の条件下で、)
   av0, なし
   av1,  カーソル行着色(黄色)
   av2,  カーソル行着色(紫)
   av3,  カーソル行着色(赤)
   av4,  カーソル行着色(青)
   av5,  カーソル行着色(緑)
   av6,  カーソル行着色(濃こん)
   av7,  カーソル行着色(灰色)
   av8,  同上
   av9,  同上
   av10, カーソル行着色(濃紫)

 av8以降は、0-7が濃くなったり薄くなったりという感じみたい。WinMEのほうが見やすかった。

[4132] Re^4: 表示属性Av

としき 2012/07/11(Wed) 23:00
[4129]へのコメント http://www1.hinocatv.ne.jp/toshiki/
>  av8以降は、0-7が濃くなったり薄くなったりという感じみたい。WinMEのほうが見やすかった。

試してみました。
ん〜、酔っているせいか、よくわかりません。
WinXPのDOS窓ですが、値によっては、カーソルを動かした後に、残像というのとは違うな、バックグラウンドに色が残ることがありますね。
IBM系ということで、おそらく、低輝度と高輝度、それに背景色の関係が混在しているのでしょう。
0〜256のいろいろな値で試してみたのですが、面白いですね。

[4133] Re^5: 表示属性Av

文太 2012/07/14(Sat) 00:39
[4132]へのコメント
 すごく深いようですね。
 以下、引用です。

-----------------------------------------------------------
PK, (14) 01224 Aiming Off  Re:Av の設定  93/06/27

  以前私も似たような経験をしたので (IBMのマシンで An と Av の組み合わせに
よってはカーソルを移動した後の軌跡の色が変わったり消えてしまったりするんで
すよね), 少しソースを覗いてみました.
  これって, 完全に機種依存していますね. IBM系も, J31 と DOS/V では違うよう
です. (AX だと変更すらできないように見える.)

  ただ, パッと見ただけでは, どういう論理なのかは判りませんでした. 私には
これ以上の追求をするパワーはありませんので, 他の方の登場を待ちましょう. (^^;)

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

PK, (14) 01201 y.mikome  RE:Av の設定、教えて下さい  93/06/26

   横道にそれますが、syo さん自身がこういう表をあみ出したこの機会を狙
  って、ビットの考え方をむりやり syo さんに教えちゃお。

                                      →16進数    →2進数
   av0, アンダーラインが消える             0h         0000 0000
   av1,  カーソル行以外は表示しない       1h         0000 0001
   av2,  カーソル行の点滅                 2h         0000 0010
   av3,  av1かつav2                   3h         0000 0011
   av4,  カーソル行反転                   4h         0000 0100
   av5,  av1かつav4                   5h         0000 0101
   av6,  av2かつav4                   6h         0000 0110
   av7,  av3かつav4                   7h         0000 0111
   av8,  アンダーライン出現、すべての行出現 8h         0000 1000
   av9,  av1かつav8                   9h         0000 1001
   av10, av2かつav8                   Ah         0000 1010
   av11, av3かつav8                   Bh         0000 1011

   でもせっかく8つも電球が用意されているなら、それぞれの電球に意味を
  持たせれば、応用範囲が広くなるでしょ。

                          \|/
        ● ● ● ● ●−○−● ●
                          /|\
                        ↑  ↑  ↑  ↑
                        │  │  │  └─1 カーソル行以外非表示      
                        │  │  └───2  カーソル行点滅            
                        │  └─────4  カーソル行反転            
                        └───────8  カーソル行アンダーライン  

 y.mikomeさんが言うのより複雑なようですね。

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

AP (12) 411 N.Myaa  えっ?!  91/09/23

   av ですが,結構おもしろいですね.ちょっと試した結果(du+, となっ
  ているのが前提です)は,
        bit0    :カーソル行以外は,表示しない.
        bit1    :カーソル行を点滅表示させる.
        bit2    :カーソル行をリバース表示させる.
        bit3    :カーソル行にアンダーラインを表示させる.
        bit4    :カーソル行に縦のストライプを表示させる.
        bit5    :カーソル行以外は,青色を消す(補色の黄色になる).
        bit6    :カーソル行以外は,赤色を消す(補色の水色になる).
        bit7    :カーソル行以外は,緑色を消す(補色の紫色になる).
   という感じに思えましたが?

 N.Myaaさんが近いかも。
 旧8とかNT系Windowsとか95系とか、色々ありそう、、、。

[4138] Re^6: 表示属性Av

としき 2012/07/14(Sat) 20:28
[4133]へのコメント http://www1.hinocatv.ne.jp/toshiki/
>  すごく深いようですね。

同感です。

>  以下、引用です。

わいこめさんとN.Myaaさんの記述は、なんとなくPC-98用みたいですね。
手元にPC-98もあるのですが、電源を入れるのが億劫で確認していません。
#あぁ、洗濯物をたたむのも億劫
##晩飯も作らなくてはならないけど、それも億劫

でも、「今日のテーマ」の文太さんの記述(No.2277)によると、AT互換機なのにWinXPとWinMEで状況が異なる、というのが腑に落ちない。えぇっと、マシンに依存している、ということはないのかな。といっても、MEとXPの両方が同一のマシンにインストールしてある、というのは最近ではなかなかありませんから、確認することはほとんど無理そうですが。

[4144] Re^6: 表示属性Av

としき 2012/07/15(Sun) 19:42
[4133]へのコメント http://www1.hinocatv.ne.jp/toshiki/
実家に来ています。

>  N.Myaaさんが近いかも。

PC-98では、N.Myaaさんの記述どおりになることを確認しました。

[4147] Re^7: 表示属性Av

konno 2012/07/17(Tue) 00:24
[4144]へのコメント
としきさん

> PC-98では、N.Myaaさんの記述どおりになることを確認しました。

確認ありがとうございます。98版の情報は問題ないと言う事ですね。

DOS/V版は、私の書き込みにあるように、上位8ビットで背景色を設定して
いるようですね。なので、背景色を変えている人はavの上位ビットを
合わせないと色が残ってしまうかも。

と思ったら、下位8ビットのうちの5〜8ビットも背景色のようですね。

あとは、Win98系とNT系で違いがあるかとかでしょうか。

おっと、書き忘れてましたが、Win7のDOS窓では tagligt.exeで色が付かない
ようです。
おそらく仮想VRAMのアドレスが変わったのでしょう。実VRAMに書き込めれば
よさそうですが。

[4135] Re^5: 表示属性Av

konno 2012/07/14(Sat) 01:29
[4132]へのコメント
としきさん

> WinXPのDOS窓ですが、値によっては、カーソルを動かした後に、残像というのとは違うな、バックグラウンドに色が残ることがありますね。

今日のテーマの#2277を引用すると、アンダーラインモードでは

----------------------------------------------------------
an が 7 か 15 で av$80 だと、XPで文字が消えますね。Win98では問題ないですが。

試しに av$10 としてみてください。青いアンダ−ラインに黄色のプロンプトで、
文字がはっきり見えますよ。AV は16飛びなら使えるようですね。
-----------------------------------------------------------

という結果だったようです。

う、文太さん、過去ログ情報てんこ盛り!! (^^;

[4137] Re^6: 表示属性Av

としき 2012/07/14(Sat) 20:15
[4135]へのコメント http://www1.hinocatv.ne.jp/toshiki/
ん〜、微妙に違う。

> 今日のテーマの#2277を引用すると、アンダーラインモードでは
> ----------------------------------------------------------
> an が 7 か 15 で av$80 だと、XPで文字が消えますね。Win98では問題ないですが。
> 試しに av$10 としてみてください。青いアンダ−ラインに黄色のプロンプトで、

XPで試してみましたが、Anが7でも15でも、Av$80で文字は消えません。
Av$10では、大体おっしゃられるような状況になりました。
そうか、DOS/Vだと、これをアンダーラインというのですね。
PC-98やオアポケのようなアンダーラインを想起していました。
私の感覚では、これはバックグラウンドという表現になってしまいます。

[4141] Re^7: 表示属性Av

konno 2012/07/15(Sun) 02:49
[4137]へのコメント
としきさん

> XPで試してみましたが、Anが7でも15でも、Av$80で文字は消えません。

Win7のDOS窓やVTDOSで確認しましたが、Av$80の時は、カーソル上の文字が
点滅のたびに消えたり出たりしませんか?
Avが$80以外の16の倍数なら点滅で消えないし、他の副作用もありません。

> PC-98やオアポケのようなアンダーラインを想起していました。
> 私の感覚では、これはバックグラウンドという表現になってしまいます。

DOS/V機でもUSモードならアンダーラインが出ると思うんですが、
今はちょっと確認できないですね。
こういう文字表示の属性はANSI.SYSの機能なので、アンダーラインを
サポートした互換ANSI.SYSもあるかも。

[4142] Re^8: 表示属性Av

文太 2012/07/15(Sun) 10:23
[4141]へのコメント
konnoさん、

 えーと、パラミータを列挙していただけると嬉しいのですが、、、。
 以下、XPで。du+, ci0, an15, +pansi.com。

>Av$80の時は、カーソル上の文字が点滅のたびに消えたり出たりしませんか?
 はい、すっかり消えます。

>Avが$80以外の16の倍数なら点滅で消えないし、他の副作用もありません。
> 私の感覚では、これはバックグラウンドという表現になってしまいます。

 av$70で、たしかに副作用なしです。
 ただ、灰色のアンダーライン(バックグラウンド)が、なんというか不自然というか奇妙に機械的な色なのと、「すっかり消えていなくても」見やすくはないので(=かろうじて見える)、で日常的に使いたくはないですね。
 あと、半角文字上と全角文字上で挙動が違います。全角文字では「すっかりは消えません」。全角が半角的に処理されているように見えます。


 旧8のテストは、職場機なので、タイミング的にけっこう苦しいことになりそうな予感もあります。

[4145] Re^9: 表示属性Av

konno 2012/07/16(Mon) 23:27
[4142]へのコメント
文太さん

>  えーと、パラミータを列挙していただけると嬉しいのですが、、、。

私のも同じで du+, ci0, an15, です。
pansi.comはVTDOSでは使えないようですね。内蔵されているのかな。
普段はアンダーラインはoffなんです。onをデフォにしたいんですが、なぜか
そのままになってるなぁ。(^^;

>  av$70で、たしかに副作用なしです。
>  ただ、灰色のアンダーライン(バックグラウンド)が、なんというか不自然

av$10の暗い青が見にくいなら、av$90 はどうでしょう。明るい青ではっきり
くっきり見えます。
av4はきれいですが、文字の無い行では分からなくなりますね。

>  あと、半角文字上と全角文字上で挙動が違います。全角文字では「すっかりは消えません」。全角が半角的に処理されているように見えます。

これはカーソル表示の仕様の問題なので、諦めるしかないですね。

>  旧8のテストは、職場機なので、タイミング的にけっこう苦しいことになりそうな予感もあります。

ああ、そうでしたね。またこの季節がやってきたんだなぁ。
としきさんがチェックしてくれたようですね、ありがたや。
文太さんにはWinMEの挙動をお願いしたいんですが。
たしかWin98系までは問題なかった動作がXP(NT系)で挙動が違うというのが
ことの発端だったような。
もし同じであれば、私の勘違いということでご勘弁を。m(__)m

[4146] Re^10: 表示属性Av

文太 2012/07/17(Tue) 00:06
[4145]へのコメント
konnoさん、

>av$90 はどうでしょう。明るい青ではっきりくっきり見えます。
 慣れるのにしばらくかかりそうですが、これでしばらくやってみますね。ちょっときつめですが、いい感じではあります。多謝。

>av4はきれいですが、文字の無い行では分からなくなりますね。
 これが気になったことは、確かにありました。

>>あと、半角文字上と全角文字上で挙動が違います。
>これはカーソル表示の仕様の問題なので、諦めるしかないですね。
 そのようですね。その後、どっかで読みました。m(__)m

>文太さんにはWinMEの挙動をお願いしたいんですが。
 はい、多少テストに時間がかかるかもしれませんが、やりますよ。

#4129より。以下は、WinMEでもXPと同じだったはずです。
変数       内容
av    (Du+の条件下で、)
   av0, なし
   av1, カーソル行着色(黄色)
   av2, カーソル行着色(紫)
   av3, カーソル行着色(赤)
   av4, カーソル行着色(青)
   av5, カーソル行着色(緑)
   av6, カーソル行着色(濃こん)
   av7, カーソル行着色(灰色)
   av8, 同上
   av9, 同上
   av10, カーソル行着色(濃紫)

 近々検算をしてみますが、上以外に、どんな値を入れれば良いですか?
 $10, $90はやるつもりですが。どうも色はRGB関係がよくわからなくって。
 無知ですいません。

[4149] Re^11: 表示属性Av

konno 2012/07/17(Tue) 23:49
[4146]へのコメント
変数の機能は数字よりもビットのほうがわかりやすいかも。

変数       内容(Du+の条件下で、)
av0  bit0,  なし
av1  bit1,   カーソル行文字色(黄色)
av2  bit2,   カーソル行文字色(紫)
av4  bit3,   カーソル行文字色(青)
av8  bit4,   カーソル行文字色(灰色)
av$10 bit5,   カーソル行背景色(青)
av$20 bit6,   カーソル行背景色(緑)
av$40 bit7,   カーソル行背景色(赤)
av$80 bit8,   カーソル行背景色(灰色)

av$70 bit7+6+5 カーソル行背景色(高輝度灰色)(赤+緑+青)
av$90 bit8+5  カーソル行背景色(高輝度青)  (灰+青)

こんな感じでしょうか。
あとはこれらの組み合わせということで。

#うう、やっぱり下位8ビットしか使っていないみたい。ぼけたなぁ。

[4150] 表示属性Av (DOS/V)

konno 2012/07/18(Wed) 23:46
[4149]へのコメント
ううぅ、bitの番号を間違えるほどボケが悪化したらしい。(;_;)

変数       内容(Du+の条件下で、)
av0  bit   なし
av1  bit0,  カーソル行文字色(黄色)
av2  bit1,  カーソル行文字色(紫)
av4  bit2,  カーソル行文字色(青)
av8  bit3,  カーソル行文字色(灰色)
av$10 bit4,  カーソル行背景色(青)
av$20 bit5,  カーソル行背景色(緑)
av$40 bit6,  カーソル行背景色(赤)
av$80 bit7,  カーソル行背景色(灰色)

av$70 bit6+5+4 カーソル行背景色(高輝度灰色)(赤+緑+青)
av$90 bit7+4  カーソル行背景色(高輝度青) (灰+青)

こうじゃったかのう・・・年は取りたくないもんじゃ。(;_;)

#うう、あまりのボケぶりに誰も突っ込んでくれない。(;_;)

[4152] Re: 表示属性Av (DOS/V)

文太 2012/07/19(Thu) 11:44
[4150]へのコメント
konnoさん

>うう、あまりのボケぶりに誰も突っ込んでくれない。(;_;)
 いえいえ、そんな。
 おかげさまで、さすがの僕にも全体の考え方が見えてきました。ありがとうございます。あとの問題は、色の足し算に「灰色」が入っている(どうなるんだ?)、「高輝度」はどう入るのか、あたりですね。もがいてみるつもりですが、もうちょい、時間がかかります。片づけなければならないことがいっぱいあって。暑さのせいで、もともと高くない生産性が、ガタ落ちだし。m(__)m

[4153] Re^2: 表示属性Av (DOS/V)

konno 2012/07/20(Fri) 00:30
[4152]へのコメント
> あとの問題は、色の足し算に「灰色」が入っている(どうなるんだ?)、「高輝度」はどう入るのか、あたりですね。

光の色は足すと明るい色になります。高輝度は灰色を足しているのでは。
光の3原色でググればわかりやすいですね。いわゆるR,G,Bです。

> 暑さのせいで、もともと高くない生産性が、ガタ落ちだし。m(__)m

いやあ、今日も暑かったですね。私もぐったりです。(^^;
おまけに夏風邪を引いちまってのどが痛いし・・・
え、夏風邪は○○しか引かないって。(^^;;

[4156] Re^3: 表示属性Av (DOS/V)

文太 2012/07/27(Fri) 17:54
[4153]へのコメント
konnoさん

 遅くなりました。とりわけ95系(ME)とNT系(XP)に違いは見つかりませんでした。前に僕がごにょごにょ言ったのは、としきさんご指摘のとおり、ディスプレイドライバというか液晶自体というかの、個体差による見栄えの違いだったようです。

 以下、そのままでいきました。
 ただ、av$84(bit7+2)のような場合には、カーソルが過去にあった行の見え方が変ですね(カーソルを上の行や下の行へ移動)。旧8で「av1, カーソル行以外は表示しない 」としたのに、似た振る舞いだったように記憶しています。たぶん、これは皆さんのところでも再現するのではないですかね(たとえばXPで)。

>変数       内容(Du+の条件下で、)
>av0  bit   なし
>av1  bit0,  カーソル行文字色(黄色)
>av2  bit1,  カーソル行文字色(紫)
>av4  bit2,  カーソル行文字色(青)
>av8  bit3,  カーソル行文字色(灰色)
>av$10 bit4,  カーソル行背景色(青)
>av$20 bit5,  カーソル行背景色(緑)
>av$40 bit6,  カーソル行背景色(赤)
>av$80 bit7,  カーソル行背景色(灰色)

 相変わらず、ぐったりしてます。

[4157] Re^4: 表示属性Av (DOS/V)

としき 2012/07/27(Fri) 20:47
[4156]へのコメント http://www1.hinocatv.ne.jp/toshiki/
>  ただ、av$84(bit7+2)のような場合には、カーソルが過去にあった行の見え方が変ですね(カーソルを上の行や下の行へ移動)。

おそらく、状況は再現していると思います。
なんて表現してよいか分からなかったもので、私は#4139

> そして、bit0〜bit3とbit4〜bit7の両方が指定された場合、背景色の残像が残るようになってしまうようです。

と書いています。

これまでのところで現象は明確になりつつありますが、わかりやすく記述するのは面倒そうですね。

[4158] Re^5: 表示属性Av (DOS/V)

文太 2012/07/28(Sat) 18:03
[4157]へのコメント
 ちゃんと報告されていましたね、すいません。
 読み落としていた、忘れていた、というより、理解できてませんでした。

>これまでのところで現象は明確になりつつありますが、わかりやすく記述するのは面倒そうですね。

 大変に面倒っぽいです。

[4161] 表示属性Av (DOS/V)まとめ

konno 2012/07/30(Mon) 01:05
[4156]へのコメント
文太さん、としきさん

> とりわけ95系(ME)とNT系(XP)に違いは見つかりませんでした。

私も記憶があいまいなのでこれを取りあえずの結論としますか。
違いが発見された場合はその都度報告すると言う事で。


アンダーラインの表示属性Av (DOS/V)まとめ

変数       内容(Du+の条件下で、)
av0  bit   なし
av1  bit0,  カーソル行文字色(黄色)
av2  bit1,  カーソル行文字色(紫)
av4  bit2,  カーソル行文字色(青)
av8  bit3,  カーソル行文字色(灰色)
av$10 bit4,  カーソル行背景色(青)
av$20 bit5,  カーソル行背景色(緑)
av$40 bit6,  カーソル行背景色(赤)
av$80 bit7,  カーソル行背景色(灰色)

注1 bit0〜bit3とbit4〜bit7の両方を指定すると背景色の残像が残る


まとめとしてはこんな感じでしょうか。

[4143] Re^8: 表示属性Av

としき 2012/07/15(Sun) 11:21
[4141]へのコメント http://www1.hinocatv.ne.jp/toshiki/
> Win7のDOS窓やVTDOSで確認しましたが、Av$80の時は、カーソル上の文字が
> 点滅のたびに消えたり出たりしませんか?

あ、なるほど。
理解できました。
確かに、そのような挙動になります。

> こういう文字表示の属性はANSI.SYSの機能なので、アンダーラインを
> サポートした互換ANSI.SYSもあるかも。

それは知りませんでした。
なるほど、ありそうな話です。
私はOS付属のANSI.SYSを使っているので、そのせいでしょう。

[4148] Re^8: 表示属性Av

としき 2012/07/17(Tue) 00:45
[4141]へのコメント http://www1.hinocatv.ne.jp/toshiki/
> こういう文字表示の属性はANSI.SYSの機能なので、アンダーラインを
> サポートした互換ANSI.SYSもあるかも。

そういえば、WinXPのDOS窓の設定を再確認したのですが、config.ntにもautoexec.ntにも、ANSI.SYSまたは互換品の記述がありません。いったいどうなっているのかな。
VTDOSのほうは、ドキュメントに

> EMM4.0 ANSI.SYS V-TEXT IME の機能を標準的にサポートします。

と明記してありますね。

[4151] ANSI.SYSって

konno 2012/07/19(Thu) 00:10
[4148]へのコメント
> そういえば、WinXPのDOS窓の設定を再確認したのですが、config.ntにもautoexec.ntにも、ANSI.SYSまたは互換品の記述がありません。いったいどうなっているのかな。

ごめんなさい、ウソを言ってました。m(__)m
ANSI.SYSはエスケープシーケンスサポートのためのドライバーだったですね。
表示属性はOSの機能でした。互換品は独自に機能追加したりしていると
いうことですね。
で、NT系ではANSI.SYSがINT29をフックして次のチェインに渡さないために
VZのコンソールが表示されないと言う事でしょう。

DOS/V機でアンダーライン表示できるのは画面モード3のUSモード(CGA TEXT)
の時ですね。(たぶん)
DOS/V日本語モードはVGAグラフィックモードなのでアンダーラインの
機能が無いために、VZでは文字色と背景色で疑似アンダーラインを表現
していると。

で、Win7のDOS窓はVGAをサポートせず、CGAモードのままで日本語表示
するように変えてしまったために、さまざまな非互換の問題が出ていると。

こんなところでしょうか。
以上、ボケ老人のたわごとでした。m(__)m

[4134] Re^4: 表示属性Av

konno 2012/07/14(Sat) 01:19
[4129]へのコメント
文太さん

> PK 14, #00077, syoさん 「未公開変数av0〜av11の動作確認」 93/02/14
> を参考に。XPにて。

こんな情報があったんですか。しかも19年前!!
STKHLPにも載ってないのでそうとうマイナーな情報なんでしょうね。

> アンダーライン・カーソル行の着色用なんですね。av4が僕にはいいみたい。

どこかで見たような気がして検索したらありました。
今日のテーマの#2277#2280で話題にしていましたね。
あれ? 文太さん、av$10にしたんじゃなかったっけ? (^^;

[4136] Re^5: 表示属性Av

文太 2012/07/14(Sat) 12:10
[4134]へのコメント
konnoさん

>STKHLPにも載ってないのでそうとうマイナーな情報なんでしょうね。
 何というか、機種依存するので、そのまま貼り付ける(信じる)ところまで、情報が精査されていないような気がしています、、、。

>どこかで見たような気がして検索したらありました。
 完全に忘却してます。
 av4でいきます。これが一番美しい。というか、動いているものを弄るな。

>>av1, カーソル行以外は表示しない 1h 0000 0001
 ここだけ、旧8以外では、このように動作しないようでした。
 av1は、XPでは黄色の着色。anは15 (Fh)。
 旧8では、本当に、その行以外が消えて、びっくりした。

[4140] Re^6: 表示属性Av

konno 2012/07/15(Sun) 02:04
[4136]へのコメント
文太さん

>  何というか、機種依存するので、そのまま貼り付ける(信じる)ところまで、情報が精査されていないような気がしています、、、。

ちょうどいい機会ですので、ここで纏めてしまいましょう。(^^;

>  av4でいきます。これが一番美しい。というか、動いているものを弄るな。

なるほどきれいですね。ただ、とらじさんのTAGLIGHT.EXEで色分けしていると
その色が消えてクリアされてしまいます。av$10なら影響ありません。

>>av1, カーソル行以外は表示しない 1h 0000 0001
>  ここだけ、旧8以外では、このように動作しないようでした。

私はDOS/V機でこのような現象を見たような気がします。
もしかしたらANSI.SYSによる違いがあるのかも。
旧8のまとめは文太さん担当ということで。(^^;

[4139] Re^4: 表示属性Av

としき 2012/07/14(Sat) 23:38
[4129]へのコメント http://www1.hinocatv.ne.jp/toshiki/
様々な値をAvに入れて試してみました。
結果、16ビットのうちの上位8ビットは使われていないみたい。
ラッキー、ヤミで値を保存しておくことができる。
いあ、それは本質ではなくて。
他の表示属性などでも、上位8ビットの使われていないものはたくさんありそうだし。

で、下位8ビットの挙動。
このとき、最下位4ビットが全てゼロであれば、bit4〜bit7の4ビットで、カーソル行の背景色の指定となるようです。
色コードというか順番は、取扱説明書182ページの通り。
そして、bit4〜bit7が全てゼロの場合、最下位4ビットでカーソル行の文字色の指定となるようです。
が、これが、説明書どおりの順番にならない。
すなわち、文太さんの実験結果の通り、0〜15の値と色の並びがあたかも反転しているかのようです。

そして、bit0〜bit3とbit4〜bit7の両方が指定された場合、背景色の残像が残るようになってしまうようです。
おそらく、カーソル移動と背景色を反転させるタイミングがよくないのでしょう。

完全に推測ですが、この辺の問題が解決できなかったために、c.mosさんはAvを隠しオプションにしたのではないか、と妄想してみました。また、榊原さんや高橋さんがこの問題に取り組んだかどうかはわかりませんが、少なくとも結果として解決できていないわけです。でも、最下位4ビットを反転させるだけならアセンブラで5行程度だと思うのですが、なぜ放置されたのだろう。気づいていなかったのかな。
色物好きの和生さんの全盛期なら、.comに直接パッチを当てるマクロをリリースしてくれたかもしれない。
もしかしたら、konnoさんが何とかしてくれそうな気もしますが。

ん〜、最初に質問したときには、こんな深い事になるとは思いもよりませんでした。

[4162] 表示属性Av のソース

konno 2012/07/30(Mon) 01:38
[4139]へのコメント
> すなわち、文太さんの実験結果の通り、0〜15の値と色の並びがあたかも反転しているかのようです。

おそらく反転させているんでしょうね。ただ、文字色と背景色を4ビットで
纏めているところに無理があるので矛盾が出ているのでは。

> 最下位4ビットを反転させるだけならアセンブラで5行程度だと思うのですが、
> なぜ放置されたのだろう。気づいていなかったのかな。

そんなに簡単なのかなぁ。と思い、ようやくソースを見てみました。
DSEG.MAP でavを検索

216	atrucsr		dw	08h		; av

VZKのソースでatrucsrを検索

SCRNIBM.ASM : 2231行目から

;--- Under line cursor ---
;-->
; DX :cursor x,y
; CL :length

	public	undercsr
undercsr proc
	test	word ptr dspsw,DSP_UNDER	; du

中略

	mov	ah,atrucsr	; av

中略

	or	es:[di],ah

中略

	not	ah

中略

	and	es:[di],ah


さて、この辺の論理演算がヒントのようですが、今の私には難しい。
皆さん、この夏休みの自由研究としてやってみませんか。(^^;

[4165] Re^5: 表示属性Av

としき 2012/08/03(Fri) 08:03
[4139]へのコメント http://www1.hinocatv.ne.jp/toshiki/
> でも、最下位4ビットを反転させるだけならアセンブラで5行程度だと思うのですが、

論理演算が正しければ、xor一発でいけそうですね。
すなわち、

xor ah,0fh

だけです。
これで本当に正しいかは検算が必要ですが。

[4167] undercsrのソース

konno 2012/08/06(Mon) 00:44
[4165]へのコメント
> xor  ah,0fh
> だけです。

うーむ、実際のソースは複雑でどこに入れるかもわかりません。
ちょっと長いですが、ソースを貼りますので見てもらえますか。

undercsr proc
	test	word ptr dspsw,DSP_UNDER	; Du
	jz	ucsr9
	call	issilent
	mov	ax,dx
	xchg	dx,ucsrpos
	push	cx
	xchg	cl,ucsrlen
	cmp	dx,ax			; カーソル位置比較
_ifn e					; カーソル位置が同じなら
	push	ax
	mov	al,FALSE		; al=0
	call	ucsr1			; すぐ下をcallしている?
	pop	dx
_endif
	pop	cx
	mov	al,TRUE			; al=1
ucsr1:	tst	dx			; カーソル位置が同じなら
	jz	ucsr9			; 何もしない
	call	mkwindp			; Make screen pointer from x,y
	call	vrestore		; 画面の更新
	mov	ah,atrucsr		; ah=Av
	test	ah,atrtbl		; ##156.93   ah と An を比較?
_ifn z					; 違っていたら
	xor	al,1			; alが1なら0に、0なら1にする
_endif
	inc	di
	push	es
	mov	es,dsp.@seg
	clr	ch			; xor ch,ch (ch=0)
	push	cx
	tst	al			; = or al,al (al=0?)
_ifn z
  _repeat
	or	es:[di],ah		; csratr or ah
	inc	di
	inc	di
  _loop
_else
	not	ah			; ahのビット反転
  _repeat
	and	es:[di],ah		; csratr and ah
	inc	di
	inc	di
  _loop
_endif
	dec	di
	call	vrefresh_a		; カーソル行以降画面更新?
	pop	cx
	pop	es
ucsr9:	ret
undercsr endp

[4169] Re: undercsrのソース

としき 2012/08/06(Mon) 13:10
[4167]へのコメント http://www1.hinocatv.ne.jp/toshiki/
> ちょっと長いですが、ソースを貼りますので見てもらえますか。

ん〜、よくわかりませんが、

> mov ah,atrucsr ; ah=Av
> test ah,atrtbl ; ##156.93 ah と An を比較?
> _ifn z ; 違っていたら
> xor al,1 ; alが1なら0に、0なら1にする
> _endif
> inc di

このあたりで、ahレジスタに変数avの値が代入されるのですよね。
であるならば、ここに元からあるxorの次の行ぐらいに

> > xor ah,0fh

これを入れてみたらどうでしょうか。

[4170] Re^2: undercsrのソース

konno 2012/08/09(Thu) 01:52
[4169]へのコメント
暑さのせいか、いろいろ間違えていたみたいです。

> > 	test	ah,atrtbl		; ##156.93   ah と An を比較?
> > _ifn z					; 違っていたら
              ↓
	test	ah,atrtbl		; ##156.93   ah と An のビット積
_ifn z					; Anのビットと一致していたら

ここはこうだったですね。つまり、文字色Anが15なら下位4ビットがすべて
立つので、Avも同じ状態の時に条件が成り立つと。

> であるならば、ここに元からあるxorの次の行ぐらいに
> > > xor  ah,0fh
> これを入れてみたらどうでしょうか。

うまくいきませんでした。
考えてみたら、不完全?な反転処理の中に反転処理を一つ埋め込んでも
問題は解消されないですよね。問題はもっと複雑だと思います。

ということで、ソースの問題はこれ以上は板違いなので、続きは
うちの掲示板でやることにします。


色で疑似アンダーラインを表現しているので、グラフィカル
アンダーライン、略してグラアンダラインか。

よーし、グラアンダラインを制覇して、俺は改造王になる!! (嘘)

[4130] Re^3: 表示属性Av

めざら 2012/07/11(Wed) 22:16
[4128]へのコメント http://homepage3.nifty.com/mezala/
すみません.すみません.
現在,公私に余裕がないため,更新については未定とさせていただきます.

[4131] Re^4: 表示属性Av

としき 2012/07/11(Wed) 22:53
[4130]へのコメント http://www1.hinocatv.ne.jp/toshiki/
> 現在,公私に余裕がないため,更新については未定とさせていただきます.

了解です。
転勤直後の私は、公私の余裕はあっても心の余裕はなかったりしますので、全く問題はありません。普段、家では酒を飲まない私がへべれけになっているくらいですから。

ちなみに、現在飲んでいるのは、青ヶ島産の青酎、35度。それもロックで。
つまみは、えいひれとたたみいわしを一つづつ。
それぞれ、まだいくらか残っているけど、それは次回。
あと、蒸にんにく。これ、味噌をつけて食べるのが好物なんですよ。
それと、旧の部署の先輩から餞別にもらった、ラスベガス土産のマカダミアナッツ。
あ〜、わさび漬けを冷凍してあったのがそろそろ解けてきたかな。
賞味期限ぎりぎりのものを半額で買ったのですが、普段、飲まないもので、そのまま冷凍にしていたのです。当然、賞味期限はとっくに切れています。

で、本題に戻って。
次回更新以外の部分の質問について、可能であればお答えください。
もちろん、余裕がなければ、そのまま無視していただいて結構です。
あるいは、お返事をいただけるのが半年後でもかまいません。

↑ このページの先頭