2000/02/29(火)vndrv memo

はてブ数
###############################################################################
 Virtual Network Driver I/O API specification
						Ver 0.03
###############################################################################
※基本は「リニアアドレス」を使用。

2F10h	R/W
	I/O APIの存在確認
	書き込んだバイトの NOT が読み出せる。
	初期値 0
	※他のアプリで変更されている可能性があるため0を期待してはいけない。
	※よって、非 0ffh の確認は 2F12h で行うと良い。

2F12h	R/W
	API有効化レジスタ。初期値 0。
	1を設定すると有効化(有効化しない限り、これより下のAPIは無視)

2F14h	W
	コマンドレジスタ
	書き込んだ、2バイトがコマンドになる。

	B15-B08	IOH	コマンド
	B07-B00 IOL	オプション(マウントポイント番号)

###############################################################################
 Commands
###############################################################################
00h	Get Drives

	IN	IOH = 00h
	Ret	AL	マウントポイント数

1Bh	Find First

	IN	IOH = 1Bh
		IOL =    マウントポイント番号
		FS:[ESI] カレントディレクトリ
		GS:[EDI] ファイル情報バッファ
	Ret
		AX = 0	成功
		AX !=0	失敗
			 AX = 02h	ファイルが存在しない
			 AX = 03h	パスが見つからない
			 AX = 12h	これ以上ファイルが存在しない
		GS:[EDI] ファイル情報を転送

1Ch	Find Next

	IN	IOH = 1Ch
		IOL =    マウントポイント番号
		FS:[ESI] カレントディレクトリ
		GS:[EDI] ファイル情報バッファ
	Ret
		AX = 0	成功
		AX !=0	失敗
			 AX = 12h	これ以上ファイルが存在しない
		GS:[EDI] ファイル情報を転送

###############################################################################
 あると嬉しい
###############################################################################
2F18h	B
	補助コマンドレジスタ
	書き込んだ、1バイトがコマンドになる。
	8086モード、80386モードどちらからでも使用可能。

00h	Break
	IN	なし
	Ret	なし

	Tsugaruをbreakさせる(brkonのイベント発生と同じ扱い)

09h	Print String
	IN	DS:[EBX]	NULL終端文字列
	Ret	なし

	CUIコンソールに文字列を出力。

0Ah	Print Dump
	IN	DS:[EBX]	表示するメモリ位置
		ECX		バイト数
	Ret	なし

	CUIコンソールに ECXバイト(以上)をダンプ(dm)出力。

0Bh	Print Dump for Liner Address
	IN	[EBX]		表示するメモリ位置
		ECX		バイト数
	Ret	なし

0Ch	Print Dump for Physical Address
	IN	[EBX]		表示するメモリ位置
		ECX		バイト数
	Ret	なし

###############################################################################
 ファイル名の注意
###############################################################################
・文字列の終端は NULL (00h)
・ディレクトリの区切り記号は \
・DOSの8.3ファイル形式が最大長。
・大文字小文字の区別がない。
・ファイル名の文字コードは Shift-JIS(とりあえず日本語問題は無視)

###############################################################################
 ファイル情報バッファ
###############################################################################
	+00h	b	ファイル属性
	+01h	d	ファイル更新日時
	+05h	d	ファイルサイズ(byte)
	+09h	13byte	8.3形式ファイル名(NULL終端)

ファイル更新日時
	bit	31-25	year - 1980
	bit	24-21	month
	bit	20-16	day
	bit	15-11	hours (0-23)
	bit	10-5	minutes
	bit	4-0	seconds/2

ファイル属性
	Bit 7	0	Reserved
	Bit 6	0	Reserved
	Bit 5	1	アーカイブ
	Bit 4	?	ディレクトリ
	Bit 3	0	Volume
	Bit 2	0	Systemファイル
	Bit 1	?	Hidden
	Bit 0	?	Read Only

###############################################################################
Memo:
int 2fh
	1123
	110C
	111B
	111C

http://www.oldlinux.org/Linux.old/docs/interrupts/int-html/int-2f-1.htm

2000/01/03(月)質問をする前に

コメント欄での質問とお返事の基本スタンスです。

  • 学びたい人には手助けします。
  • 得たい情報だけ得られれば良い、という人は無視します。
  • 途中で簡単に諦めるのなら、最初から諦めてください。
  • 回答には(その後の)結果を返信してください。

目次

試せば分かることは、原則試してから質問する

Q.「回路のxxの部分をyyと変更してみたいのですが大丈夫ですか?」

Q.「部品のxxをyyに変更したいのですが大丈夫ですか?」

A.「試せばわかります」

回路や記事はその掲載している注意書きなどの範囲で動くように考えて作られていますが、実装方法によってはそれでもうまく動かないこともあります。基本的には動かなくても自己責任です。

変更するのでしたら「自己責任で自由にやってください」。変更後のことを聞かれましても、予想が付くことはありますが試さない限り正確なことは分かりません。

試せば簡単に分かることを試さず聞かないでください。自分の手を煩わせたくないから他人を頼るという考えは嫌いです。試して、失敗もしくは成功したら、どうして成功したか失敗したかを考えて、その上で質問するのは歓迎です。

こう考えてこう変更したら、これこれこんな感じでうまく動いてる(もしくはうまく行かない)のですが、この考え方で本当に問題ないでしょうか」

「これこれこんな感じなのですが、発振していないか心配です。テスターで確認する方法はないでしょうか?」

それでも試すことなく質問したい

最低限どういう考えで変更しようと思ったのか、変更後どうなると思うのかを可能な限り具体的に書いてください。どう考えて、何を目的として、それを行いたいのか。それならば返信のしようもあるかもしれません。

こう考えてこう変更したらこうなると予想するのですが、どう思いますか?」

ここが分かりません

Q.「ここが分かりません。教えてください」

A.「あなたがどれくらい分からないか書かれてないので答えようがありません」

A.「記事に書かれているとおりです」

何が分かって何が分からないのか。どういう風に分からないのか。記事に書かれている解説をどう理解して、どう考えて、その考えの中で具体的にどのように分からないのか。こういう情報がないとお返事を書くことは難しくなります。そもそも「単に分からない」という質問自体が不適切です。

「Aの部分はこれこれこうだと思うのですが、Bの部分はAとは別でどうなっているのですか。Aはこんな役割なのですか?」

その時点で予想されることやその時点での理解が書いてあればまだ答えようもあります。もし、具体的な質問を書くことができないなら、そもそも理解や知識が不足していると思われます。まずは調べることから初めてください。

自ら考えて質問すると理解が深まります。はじめから考える気のない人はすぐに忘れます。

初心者です。うまく動きません

Q.「初心者なのですが、うまく動きませんでした」

A.「初心者だから足りない分を補うための努力をしましたか?」

基本的に「初心者です」「素人です」と書かれているだけでとても印象が悪く感じます。初心者は何の免罪符にもなりません。初心者だからよく分からない、うまくいかないことはあるでしょう。

初心者ならば成功させるために(初心者でない人よりも)調べたり学んだりするべきです。そのような努力をしてなお上手くいかない時に初めて「初心者だから仕方ない」と言えるのです*1。もし必要な知識の在処に辿り付けないなら、その知識をどうやれば得られるか質問するのはとても有意義なことでしょう。

初心者だけど質問したい

質問の仕方としては的確ならば専門的な回答は理解出来ないという意味で初心者という言葉を使うのはありですが、それでも「どの程度のことまでなら理解しているか」書くほうがよほど印象は良いでしょう。

初心者は質問するなと言ってるのではありません。初心者でもそうでなくても、適切な質問をしてくださいとお願いしています。

*1 : もし本を買うお金がないというならネットや図書館で調べてください。そのような本がなくても、公立図書館や学校図書館はリクエストすれば本を置いてもらえます。

回答やアドバイス(返信)をもらったら

質問した以上、質問された側もその後の行方が気になっています。

アドバイスをもらったら、言われたことは(可能な限り)試してどうなったか報告するのが礼儀です。分からないことを質問したなら「理解できたかどうか」返信してください。アドバイスした側からすれば「うまくいっただろうか(理解できただろうか)」と気になって仕方がありません。

やりとりの中で逆に質問されたら、きちんと回答してください。それは問題がどのような状態か要領を得ず解決の道がみえなかったり、どう回答したら伝わるかわからないので質問していています。

ごく稀にあるのですが、色々な人からのアドバイスや「これこれを確認してください」をすべて無視し「こうなった」「ああなった」「どうしたらいい」をひたすら書き続ける人が居ます。最悪のパターンです。話を聞かない質問者にそれ以上何か言葉をかける人は居ないでしょう。

メールやDMで質問を送られる方へ

メールやDMで記事への質問が届くことがありますが、原則お返事はしません。

あなたが疑問に感じたことは他の人も疑問に感じているかもしれません。もし、質問されるたびに毎回返信をしていたら、同じ質問に対して何度も同じような文章を書いて送らねばなりません。

知識は公開され、蓄積されるところに意味があります。そのために、ブログでは今得ている限りの情報を公開しています。公開することで間違えがあれば誰かが教えてくれるし、もしかしたら他の人が知識を提供してくれるかもしれません。繰り返しますが、あならからの質問をあなた一人だけに回答していれば、知識は公開されず、蓄積もされず、世の中のためになりません。

ですから、質問はコメント等で行ってください。*2

*2 : コメントなら必ず返信するというわけでもありません。