DOSでプログラミング
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNGDOSにおける開発について語りましょう。
0153141
NGNG>いや、当時は全部アセンブラで書いていたから・・・
(MASMの)アセンブラの構造体こそ望ましいものです。アドレスを指定して,
構造体メンバにアクセスできて「->」をうざがって刺されることもないです。
0154デフォルトの名無しさん
NGNG0155デフォルトの名無しさん
NGNGPLMとは懐かしい。今でも昔のサポートで使うことありますが(w
gccでも直アドレス指定出来ますよ。
まあOSによっては、やっても怒られるだけですが(w
0156141
NGNG>gccでも直アドレス指定出来ますよ。
直アドレスを
char *base_adr= 0xd0000;
とできるのは当たり前で,お伺いしたかったのは
struct board_foo;
として作ったものを0xd0000に配置するような機能のことです。ほんとうにできますか。
>まあOSによっては、やっても怒られるだけですが(w
WindowsNT系でもOS標準でできるんで困りませんし,タイミングが10msec以上の
比較的シビアなものではリアルタイム拡張製品などを使うので問題ありません。
それにタイミングが絡んでくると,OSなんかの機能よりも「作り方・書き方」の方が大事だと思います。
特殊なハードのラッチ信号をPCからポチポチ制御するような困ったちゃんシステムとか。
0157デフォルトの名無しさん
NGNGあれま(構造体)変数などの絶対番地ロケートでしたか。
gccで開発するCPUでROM化などしたことがないのでわかりませ〜〜ん(^^;
わざわざ実体を重ねなくても、構造体へのポインタで良いような
気がしますけどね。処理系の環境に依存させるのがいやですから。
怒られるはメモリアクセス例外などが出るだったんですが。
タイミングですか、OSの機能というより挙動を知ってないと
いけない、じゃないですかね。何がWinNT系のOS標準で出来る
だかわかりませんが、WinNT系でもリアルタイム拡張があれば
時間の保証が得られるらしいですね。
0158デフォルトの名無しさん
NGNG使わなくなってた古い9821にdjgppをインストールしました。
今更ですが、Undocumentedな機能(PEGCとか)を使ってみたり、
直書きや割り込み、DPMI等で遊んでます。
…何で今更はまるんでしょう(笑)
結局、DOSは嫌いじゃないんだよなあと再確認しますた。
0159デフォルトの名無しさん
NGNG> struct board_foo;
> として作ったものを0xd0000に配置するような機能のことです。ほんとうにできますか。
mapped I/Oなら
#define foo1 (*(struct board_foo *)0xd0000)
じゃダメなん?
0160141
NGNG>#define foo1 (*(struct board_foo *)0xd0000)
おお。新パターンです。ありがとうございます。
#defineだとデバッガが・・・ゲホゲホ
ちなみにこれは,実際にお使いですか?
0161デフォルトの名無しさん
NGNG0162デフォルトの名無しさん
NGNGVRAMの位置とか?
0163デフォルトの名無しさん
NGNGようなプログラムは作れるでしょうか?
キーイン待ちのときに割り込み28hが呼ばれるようになっていても、
この中からいきなりキー入力処理の後にジャンプなんてできそうに
ないと思うし(安全とは思えないので)。なんか手ってないもんでしょうかね?
0164デフォルトの名無しさん
NGNGwhile(kbhit()){
if(time >= basetime + 1000){
timeoutflag = 1;
break;
}
}
0165163
NGNGありがとうございます。
そうですね、この方法がありますね。一点気になるのがCPUを喰いすぎる
かなと思うところです。(シングルタスクなので実際上の問題は無いと思い
ますが。。)
0166デフォルトの名無しさん
NGNG割り込み28hの中でフラグ立てるようにして,
キー入力待ちする側でタイムアウトをカウントしながら
そのフラグを監視すればよいと思います。
もちろんそのフラグは利用側で事前・事後にクリアしてやらないといけません。
>> 165
> 一点気になるのがCPUを喰いすぎる
?CPUを食わないようになんてできませんよ。CPUは常に100%フル回転です。
nop連続にした方がバスへのアクセスも減って,動作しない内部ロジックが増えて
発熱・消費電力を抑えられるとか,そういう趣旨なんですかね。
それとも省電力対応CPUのお話ですか。
0167デフォルトの名無しさん
NGNG0168デフォルトの名無しさん
NGNGMS-DOSでビジーループを気にする理由がわかりませんね。
タイマ割り込みでソフトタイマー作って,キー入力を割り込みで処理するんなら,
なんにも悩むことなんてありませんですよ。
自前で擬似マルチタスクでも作ってその上で何かなさっておられるのなら,
ビジーウェイトを気になさるのも理解できますが。
0169デフォルトの名無しさん
NGNG>(シングルタスクなので実際上の問題は無いと思い
>ますが。。)
これすら読まずに屁理屈こねるような奴に言っても無駄だったな。
0170デフォルトの名無しさん
NGNG0171デフォルトの名無しさん
NGNG同意。
0172デフォルトの名無しさん
NGNG0173デフォルトの名無しさん
NGNGttp://www.ctyme.com/rbrown.htm
0174デフォルトの名無しさん
NGNG0175デフォルトの名無しさん
NGNG特定のアプリを強制終了させるコマンドがどうしてもわかりません。
どなたか教えてください。
OS環境はWindows2000Proです。
XPだと、taskkillコマンドが使えるらしく
Win2kならtasklist→killコマンドが使えるらしいのですが
MS-DOS上でそのコマンドを打ってみてもだめでした
ダメモトでバッチファイルでkillコマンドとtaskkillコマンドを書き込んでみましたが
当然だめでした。
0176デフォルトの名無しさん
NGNGkillはWindows 2000 Support Toolsに入っている。
Windows 2000 Support ToolsはWindows 2000のCDに入っている。
0177175
NGNG0178デフォルトの名無しさん
NGNG作ってるんですが、rename( 旧ファイル名, 新ファイル名 ) とやっても
全然変化しないんですよ。
DOS プロンプトから rename 旧ファイル名 新ファイル名 なら
いけるんですが・・・
Cで DOS のコマンドを実行するっていう命令ありませんでした?
10年前に使ったような記憶があるが思い出せない・・・
0179デフォルトの名無しさん
NGNGまたは
exec系関数
0180デフォルトの名無しさん
NGNG直接書き換えるというのは、、、
0181デフォルトの名無しさん
NGNG一回ダミーファイル名に変換してからとか。
0182デフォルトの名無しさん
NGNGさっそくプログラム中・・・
メインプログラマーがウンコすぎて仕事が殆どオレに
まわってきて死にそうです。
0183デフォルトの名無しさん
NGNGありがとうございました。
ていうかメインプログラマーまだ出社してこないよ・・・
もう○んでクレ。
0184デフォルトの名無しさん
NGNG0185デフォルトの名無しさん
NGNG0186デフォルトの名無しさん
NGNG時間を取得してファイル名にセットしたいのですが、
TIMEコマンドだと:が混じってしまい設定ができません。
何か良い方法は無いでしょうか?
よろしくお願いします。
0187デフォルトの名無しさん
NGNG0188田宮良子
NGNG0189ツソイチ
NGNGみゅぅぃぃぃぃぃぃいいいぎゅぅいいいいいいいいいいいいぃぃぃ!!!!!
0190は ◆cplnFO9T0I
NGNG閉鎖されてたかと思われたTEENのサイトは、ただ単に鯖のHDが飛んでただけなので、
(マシントラブルとかかれていますが、どう考えたって、消失するといったらHDが飛んだとしか考えられません。)
仮運用の状態にあるそうです。みなさん、これからもがんがってください。
ttp://www.pc88.gr.jp/~teen/
0191デフォルトの名無しさん
NGNG>(マシントラブルとかかれていますが、どう考えたって、消失するといったらHDが飛んだとしか考えられません。)
さて、と。
0192デフォルトの名無しさん
NGNG0193デフォルトの名無しさん
NGNGhttp://www.command.com/
ここのスレの住民なら笑えるかも。
0194デフォルトの名無しさん
NGNGにして、www.を省略したほうがそれっぽいよ。
0195は ◆cplnFO9T0I
NGNGお気に入りを読み込む部分は動的リンクにしたほうが良いでしょうか?
回答願います。
0196デフォルトの名無しさん
NGNG0197デフォルトの名無しさん
NGNGそうなのか?
0198デフォルトの名無しさん
NGNG0199デフォルトの名無しさん
NGNGだってどう見ても195はDOS用の2ちゃんねるブラウザを作っているようには見えない
0201デフォルトの名無しさん
NGNGそれは動的リンクとは言わない。
0202デフォルトの名無しさん
NGNG0203デフォルトの名無しさん
NGNG要望が出そうなところが分かってるなら、最初からそういう風に設計できるだろ?
ただ、DOS用なら、俺としては実行部はファイル1つの方が分かりやすい。
>>195の言う「動的リンク」が何を指すのか、>>200でいよいよ分からなくなったが…
0204は ◆cplnFO9T0I
NGNG似非動的リンク
>>203
わかったYO!
ともかくそこの部分を変更可能なように作っておくということで。
ともかく、ひとつのEXEで作ってみる。
0205デフォルトの名無しさん
NGNG似てもいない。
0206デフォルトの名無しさん
NGNG0207デフォルトの名無しさん
NGNG0208は ◆cplnFO9T0I
NGNG0209デフォルトの名無しさん
NGNGDOSエクステンダを使うとどうなるんですか?
アドレス変わっちゃうのかな?
0210デフォルトの名無しさん
NGNGマップしてくれます。その代わりぬるぽが検出できないわけで
0211デフォルトの名無しさん
NGNG0212デフォルトの名無しさん
NGNGこちらでお尋ねしてもよろしいでしょうか?
VCでCUIのプログラムを作ったのですが、
Windows(XP/200/98等)内のDOSプロンプトでは動作するのに、
Windows98の起動ディスクで起動したDOSプロンプト内では動作しません。
Win32APIは使っていません。
調べた範囲ではSTUBが動作してしまっているようなのですが、
どうすればこの場合STUBではなく通常動作させられるのでしょうか?
0213デフォルトの名無しさん
NGNGDOS対応コンパイラを探せ
0214デフォルトの名無しさん
NGNG0216デフォルトの名無しさん
NGNG0217デフォルトの名無しさん
NGNGMASMver5で作ったマンデルブロ集合計算プログラム( .387ディレクティブ
で有効にした浮動小数点命令を使用してます)なんですが、IBMのDOS5J
の下で実行させると45分もかかるのに対して、WIN98SEのDOS窓では
4分程で終了します。どうしてこんなに実行時間に差がでるのか?と不思議に
思っています。何が原因でしようか。
CPUはATHLON2000+で、マ・・集合計算プログラム中でEMMS命令により
MMX命令を禁止させてます。(EMMS命令を追加してやらないと浮動小数点
命令が正常に実行されません)
よろしくお願いします。。
0218デフォルトの名無しさん
NGNG0219デフォルトの名無しさん
NGNG計算だけ? 描画もしてる?
DOS窓はフルスクリーン?
0221デフォルトの名無しさん
NGNG試しに計算だけで比べてみるといい。
DOSの描画はVGA互換モードだから遅いのかな。
0222217
NGNGありがとうございます。
ご指摘のようにDOSでの描画は、BIOSのサービス(ファンクション番号
0CH)を利用しているため遅いです。正確に測ったことはありませんが、
単純に点を打っていくだけでも、400*400の面いっぱいを描くのに数十
秒位かかったように記憶しています。
0223デフォルトの名無しさん
NGNG対処法あります?
0224デフォルトの名無しさん
NGNG状況がよく分からんのでソース貼ってくれ。
実行結果も。
0225デフォルトの名無しさん
NGNGいやただたんに
$lsic
(謎の改行(usage分?))
$
こんな感じなんですよ
0226デフォルトの名無しさん
NGNGXPってDOSコマンドが表示されない時があるんだよな・・・
0227デフォルトの名無しさん
NGNG毎回command.com立ち上げるのめんどいんでこれを機にDOSBOX入れまス
0228デフォルトの名無しさん
NGNGhttp://dosbox.sourceforge.net/
0229デフォルトの名無しさん
NGNG0230デフォルトの名無しさん
NGNGどう責任とってくれるんですか。楽しくありませんでした。
0232デフォルトの名無しさん
NGNGソフトウェアを直接叩く方法を教えてください。
0233デフォルトの名無しさん
NGNG右斜め45度から勢いよくやれ。
0234デフォルトの名無しさん
NGNG本当だな?
0235sage
NGNG大変、厨房な質問ではありますがどうかよろしくお願いいたします。
(1).EXEファイルの先頭512バイトのリロケーション情報領域の事ですが、先頭1バイト目の『ファイル識別子』の種類と意味を知りたいのですがどなたかご存知でしょうか?
(2).EXE/.COMファイルのリロケーション領域について詳しく紹介されているHPがあれば教えていただきたいのですが。
現在、勉強中なのですが参考文献も減ってきており四苦八苦しております。
どうか宜しくお願い致します。
0236235
NGNG(2).EXEのリロケーション領域と.COMのPSP領域について詳しく紹介されているHPがあれば教えていただきたいのですが。
の間違いでした。スミマセン。
0237デフォルトの名無しさん
NGNG0238デフォルトの名無しさん
NGNGつーかマジな話拡張機能セットってまだ買えるの?
0239デフォルトの名無しさん
NGNG0240デフォルトの名無しさん
NGNG漏れは「リロケーション領域」の意味がわからんので自分で調べてくれ。
ttp://www.wotsit.org/
0241デフォルトの名無しさん
NGNGDOS PSP」でググッたら、PSPの説明ありますた。
超カメレスで、スマソ
ttp://www5c.biglobe.ne.jp/~ecb/assembler2/7_5.html
0242235
NGNG>MSDOS拡張機能セット
・・・資金が不足している為、購入不可です。
>MSDN
そういえば、載っているかも知れませんね。
調査不足でした。
>>240さんから紹介して頂いたページは最高にいいですね。
ピンポイントで知りたい情報が載ってました。
その他にも色々なファイル情報があり素晴らしいページですね。
お気に入りに登録しときました。
本当に有難う御座いました。
もうちょっと精進しときます。
0243デフォルトの名無しさん
NGNGDOS5Aのマニュアルp295,296
「EXEファイルの構造と・・・」
http://uploda.net/cgi/uploader2/index.php
ここに飛んでupload25235.jpgをクリックしてちょ
0244デフォルトの名無しさん
NGNGせっかくカラー化できると思ったのに白黒に逆戻りになってしまうではないですか?
0245デフォルトの名無しさん
NGNG0246デフォルトの名無しさん
NGNG↓
http://community.osdev.info/index.php?VGA
0x03c3:VGA動作許可レジスタ(8bit、W)
bit0:VGA動作許可(1:動作許可)
bit1-7:リザーブ
このレジスタいじったら、どうなるんだろ?
0247デフォルトの名無しさん
NGNG割り込みを使用するボードを1枚挿してBIOS上で
単一のIRQ(例えば5)のみを使用するように設定して
そのベクタを書き換えた場合の割り込み処理は問題ないのですが、
複数のIRQ(例えば5と12)を使用するように設定した場合に
ベクタを書き換えた後、割り込みが発生すると
スタックオーバーフローが出て暴走してしまいます。
勿論IRQを複数使用できる設定にしていても実際使用している
IRQは1つですし、実行ファイルも同じものです。
割り込み処理の記述等で何か注意する必要があったりしますか?
0248デフォルトの名無しさん
NGNG「スタックオーバーフローが出て暴走してしまいます。」
スタックポインタのチェックコードが有効のままになっていて、
割り込みルーチンであぼんしているわけじゃなくて、本当にスタックを
食いつぶしているってことですか?
0249デフォルトの名無しさん
NGNG0250デフォルトの名無しさん
NGNG割り込みを発生させた途端、
Internal Stack Overflow
System Halted
のようなメッセージが画面に表示されて
止まってしまうような状況です・・・。
このメッセージ自身DOSで出してるので
恐らく実際スタックを潰しちゃってると
思うんですが・・・。
0251デフォルトの名無しさん
NGNG割り込みの発生ペースは上がってますか?
config.sys で STACKS=64,512 とか指定してみるとどうでしょう。
0252デフォルトの名無しさん
NGNG割り込みトリガそのものは外部のスイッチから与えてるので
発生している割り込みは1回だけだと思います、多分。
スイッチのチャタリングが発生してる可能性もあるかも知れませんが、
上手くいくパターンでは1回の割り込みしか発生していませんでした。
しかし駄目なパターンの場合はその1回目で例のメッセージが
出てしまうんですよね・・・・。
config.sysの変更については今その環境が無いので
試せませんが明後日に試してみようかと思います。
■ このスレッドは過去ログ倉庫に格納されています