DOSでプログラミング
..
97:_
03/06/19 16:59
URLリンク(homepage.mac.com)
98:デフォルトの名無しさん
03/06/19 17:38
>>96
必死だな(ワラ
99:デフォルトの名無しさん
03/06/19 17:45
>>98晒しあげ
100:_
03/06/19 18:10
URLリンク(homepage.mac.com)
101:デフォルトの名無しさん
03/06/19 18:25
C:\>debug
-a100
2463:0100 mov dx,109
2463:0103 mov ah,9
2463:0105 int 21
2463:0107 int 20
2463:0109 db 'Hello world',d,a,24
2463:0117
-r cx
CX 0000
:17
-n hello.com
-w
00017 バイト書き込み中.
-q
C:\>hello
Hello world
C:\>
102:デフォルトの名無しさん
03/06/19 19:42
>>96
キーデータの読み出し
割り込み INT 18H
入力 AH <- 00H
出力 AX <- キーコードデータ (AH <- キーコード、 AL <- キーデータ)
103:96
03/06/19 23:21
>>102
ありがとうございます。
その後、int18 ではなく int 18 と検索ワードを書いたところ
ネットから情報を得ることができました。
不用意な書き込みにレス頂き感謝します。
また、頂いた「キーコードデータの割り込み」を用いて検索を
行いましたところより詳細なページも見つけられました。
ありがとうございました。
104:山崎 渉
03/07/15 15:12
__∧_∧_
|( ^^ )| <寝るぽ(^^)
|\⌒⌒⌒\
\ |⌒⌒⌒~| 山崎渉
~ ̄ ̄ ̄ ̄
105:山崎 渉
03/08/02 02:41
(^^)
106:山崎 渉
03/08/15 17:25
(⌒V⌒)
│ ^ ^ │<これからも僕を応援して下さいね(^^)。
⊂| |つ
(_)(_) 山崎パン
107:デフォルトの名無しさん
03/09/26 20:27
>2
> Turbo C / Turbo C++ / Turbo Pascal (PC-9800では動作不可)
98固有のライブラリを呼ばなければ、98も可能では。
逆の「98版TurboC Ver2.0+IBM固有Lib不使用」ではIBMでOKです。
こまかいですが。
108:デフォルトの名無しさん
03/09/27 13:49
>>107
当時のBorlandのIBM PC向け製品は98ではコンパイラが動かないのです。
IBM PCに依存するコードが含まれているのでしょう。
生成されたバイナリはIBM PCに依存するライブラリを使用していなければ98でも動きます。
109:デフォルトの名無しさん
03/09/27 20:23
確かスタートアップでどっかの割り込みベクタを保存してて
それがIBM PC固有で98だと不都合が出たと聞いたような。
コンパイラもそのコードを使ってるから。
パッチ当てれば動くようになったらしい。
110:デフォルトの名無しさん
03/09/28 01:48
>108
コンパイラ自体が動かないんだ。
むかし、IBMのTurboC1.5環境版を98で動かすパッチがあったような。
2.0で98版が出たからね。
111:デフォルトの名無しさん
03/09/28 01:59
Turbo Visionってまだあったんですね。Win32やUnixでもあるとは。
112:デフォルトの名無しさん
03/10/05 19:06
タダで使えるBorland C++ Part3から誘導されてきました。
「目的」
Win2000のコマンドプロンプトから、
グラフィックを使用するDOS用のプログラム(シミュレーションプログラム)
を実行したい。
以下、本からの引用
言語 C
コンパイラ Turbo C、 Borland C++ など
パソコン機種 PC-9801シリーズおよびその互換機、
IBM-PCおよびその互換機 (J-3100、AX、DOS/V)
CRT 640×400ドット
です。(引用終わり)
コンパイラは、TurboC++1.01です
URLリンク(community.borland.com)
「質問」
ソースをみると、機種選択をするようになっています。
引用
#define IBM_PC
#define PC_98
#define PC_98_V2
これはIBM_PCを選択しコンパイルすれば、目的が適うでしょうか?
宜しくお願いします。
長文失礼しました。
113:デフォルトの名無しさん
03/10/05 19:32
OK
114:デフォルトの名無しさん
03/10/05 19:35
640x400てのが若干気になるけど、98やJ3100にあわせたんだろう。
たぶん下80行が使われないだけかな。
あと、コマンドプロンプトで実行して見栄えが悪かったら
ALT+Enterでフルスクリーン表示にするといいかも。
115:112
03/10/05 19:56
>113,114
ありがとう。
では、やってみます。
また質問がでたら、宜しくお願いします。
以上です。
116:112
03/10/09 14:52
途中経過です。
TC2.01を利用して、以下のプログラム(ネットで拾った)をコンパイルしてみました。
>tcc -ml graphics.lib gg.c
gg.c ソース
#include <graphics.h>
#include <conio.h>
void main(void){
int gd=DETECT,gm ;
initgraph(&gd,&gm,"b:\\graph");
setcolor(WHITE); /*境界線を白色と指定*/
circle(319,175,100); /*(319,175)を中心として半径100の円を書く*/
circle(260,250,100); /*(260,250)を中心として半径100の円を書く*/
circle(369,250,100); /*(369,250)を中心として半径100の円を書く*/
setfillstyle(SOLID_FILL,RED); /*べた塗りで色は赤色を指定*/
floodfill(319,80,WHITE); /*(319,80)から境界線が白色までを塗る*/
setfillstyle(SOLID_FILL,BLUE); /*べた塗りで色は青色を指定*/
floodfill(260,340,WHITE); /*(260,340)から境界線が白色までを塗る*/
setfillstyle(SOLID_FILL,GREEN); /*べた塗りで色は緑色を指定*/
floodfill(369,340,WHITE); /*(369,340)から境界線が白色までを塗る*/
setfillstyle(SOLID_FILL,WHITE); /*べた塗りで色は白色を指定*/
floodfill(319,270,WHITE); /*(319,270)から境界線が白色までを塗る*/
setfillstyle(SOLID_FILL,YELLOW); /*べた塗りで色は黄色を指定*/
floodfill(370,200,WHITE); /*(370,200)から境界線が白色までを塗る*/
setfillstyle(SOLID_FILL,LIGHTCYAN); /*べた塗りで色は水色を指定*/
floodfill(320,290,WHITE); /*(320,290)から境界線が白色までを塗る*/
setfillstyle(SOLID_FILL,MAGENTA); /*べた塗りで色は紫色を指定*/
floodfill(230,200,WHITE); /*(230,280)から境界線が白色までを塗る*/
getch();
closegraph();}
上手く、表示されました。
initgraph(&gd,&gm,"b:\\graph");これが、気になるのですが、
変えなくてもよいものなのでしょうか?宜しくお願いします。
117:デフォルトの名無しさん
03/10/09 18:47
>>116
"b:\\graph"は .BGI のあるディレクトリに変えた方が良いような気がする。
118:112
03/10/09 19:15
>117
レスありがとう。
やっぱり変えたほうがいいですよね。
なんか、気持ち悪いし、、、、。
また、すすみ次第、報告します。
119:デフォルトの名無しさん
03/10/11 23:02
>116
initgraphの引数が1つ足らんな(w
bgidemoは試したのか?
120:112
03/10/12 02:38
>119
レス ありがとう。手元に TURBO C++
のコンパイラ・マニュアルがあるので参照しました。
initgraph
機能 グラフィックスシステムを初期化する。
ヘッダ graphics.h
書式 void far initgraph(int far *graphdriver,int far *graphmode,
char far *pathtodriver)
でした。
だから、引数は3つで良いみたい。
>bgidemoは試したのか?
早速やってみました。
画面がちかちかと変わって(変えて)
”That's OK!,folks"と、最後に表示されましたよ。
最後に、
bgidemo.cから抜粋
initgraph( &GraphDriver, &GraphMode, "" );
3つめの引数は省略可ですね。
121:デフォルトの名無しさん
03/10/12 13:15
マニュアルがあるならバッチリですな(w
BGIはOBJに変換してリンクすると楽かも。
122:112
03/10/12 20:00
>121さんへ。
いや〜、こないだ、たまたま、ヤフオクで
ナツメ社から出ている
TURBO C++ コンパイラ・マニュアル
をゲットしたのですよ。100円でした。
運が良かったです。
ところで、
>BGIはOBJに変換してリンクすると楽かも。
は、どういうことですか?
すみませんが、教えてください。
宜しくお願いします。
123:デフォルトの名無しさん
03/10/13 00:11
100円とはラッキ〜〜。この手の本は少ないしね。
bgi2obj.exeだったかな?それを使って、BGIファイルをOBJファイルに
変換出来るんです。BGIファイルは実行時にinitgraphがロードしますが、
OBJだとリンクしておけるんで。initgraphのモードをDETECTにしておくと
EGAなどグラフィックアダプタに合わせてロードしてくれるんで便利ですが、
今時は解像度の高いのをリンクしておけば済むような気もするしね(w
124:112
03/10/13 17:30
>123
ラッキーでしょ〜。
makeが使えることも知ったし、十二分に元を取りましたよ。
ちょっと、質問の続きなのですが、後半の
>initgraphのモードをDETECTにしておくと
>EGAなどグラフィックアダプタに合わせてロードしてくれるんで便利ですが、
>今時は解像度の高いのをリンクしておけば済むような気もするしね(w
が、判らないです。
じつは、ライブラリをオブジェクトにするメリットも、いまいち
良くわかっていません。
gccとかで、数学関数を使うとき -lmって付けますよね。
だけど、数学関数のライブラリをオブジェクトにするっていうのは
聞いたことがありません。
教えてもらってばかりで恐縮ですが、お願いします。
125:デフォルトの名無しさん
03/10/13 18:33
objもlibも似たようなもんじゃないのとか思った。複数のobjまとめられるとか。そんなん?
126:デフォルトの名無しさん
03/10/13 18:41
>>124
> ちょっと、質問の続きなのですが、後半の
> >initgraphのモードをDETECTにしておくと
> >EGAなどグラフィックアダプタに合わせてロードしてくれるんで便利ですが、
> >今時は解像度の高いのをリンクしておけば済むような気もするしね(w
> が、判らないです。
ヘルプか参考書でregisterbgidriverを調べれ。
BGIファイルをOBJファイルにしてそしてリンクすることにより、
EXEファイル内にBGIファイルの内容を埋め込むことができる。
すると人様にソフトを配布する時にBGIファイルを添付する必要が無く
EXEファイルだけで済む。ちょっとカコイイ。という話。
まあ、見栄えの問題だけだから、面倒なら気にしなくてもいい。
ところで、目的のシミュレーションプログラムはどうだったんだろうか?
プログラムに日本語文字が使われているとコンパイラを通らない
可能性もあるが。
127:121
03/10/13 21:00
>126
なるほど、、、有難う御座います。
目的のシミュレーションは、まだ打ち込み中です。
日本語表記はないので、大丈夫かと思います。
もう1週間もかかっている、、、。
あさってまでには完成します。
128:デフォルトの名無しさん
03/10/14 08:54
>124
>じつは、ライブラリをオブジェクトにするメリットも、いまいち
>良くわかっていません。
ライブラリをオブジェクトにするメリットというか・・・
ライブラリはオブジェクトの固まりです。
図書館みたいなもんです。そこにある本がオブジェクトですね(w
DOSの拡張子で言えば、objを固めて実行出来るようにしたのがexe、
objをまとめておくために固めたのがlibです。libは使うときには
リンカがその中の「必要なobj」だけを取り出してexeにしてくれます。
単にobjを固めると使わない関数も固められてしまいます(昔のTurboC等は)
最近のWin32等のリンカは使っていないobjを関数単位で削除してくれますが。
例えば、ソースを関数毎とかにしてそのobjでlibを作ると、リンカが
必要なものを取り出して関数毎に固めてくれるわけです。
gccはよくしらんのですが、-lmとすると、libm.so(だっけ?)とかがあると
すれば、それはDOSのlibに相当します。
Winでは実行時にリンクするライブラリとしてDLLなんていうのもありますね。
DOSでもDLLとはちょっと違いますが、実行時にロードするオーバーレイ
なんていうのがありました。
129:121
03/10/14 18:16
>128さん、有難う。
こんな感じですか?
関数 tmp.exeは、tmp.objやaaa.lib
から生成されるものとする。
aaa.libはリンク時、リンカーによって
aa1.obj〜aan.obj等に変換され、
tmp.obj,aa1.obj(必要なobj)
でtmp.exeが作られる。
数学関数 例えば math.hによる
ライブラリの場合、sin()しか使わない
場合は、sin()のみのobjが作られるのですね。
そしてlinkされる。
少し、判ってきました。
130:デフォルトの名無しさん
03/10/14 23:12
>gccはよくしらんのですが、-lmとすると、libm.so(だっけ?)とかがあると
>すれば、それはDOSのlibに相当します。
いいえ、DLL相当です。
131:デフォルトの名無しさん
03/10/16 01:02
>129
objはlibから変換されるというか、取り出されるという感じでしょうか。
似たようなもんですが(w libはアーカイブなんです。objが固めて
あるので、オブジェクトライブラリって言うのが正しいのかも。
取り出されるのは、objの単位というか結局ソースの単位になってると
思います。だからsinだけ使ったらsin.objがリンクされるかはわかりません。
sinとcosで1つのソースが作られていれば、sinを使ってもcosも付いて
きちゃうというという感じでしょうか。
#最近のリンカでは、使っていない関数は取り除かれるようですが、
#どのように取り除くかはいまいちわかりません。
>130
.soはDLLでしたか、しんずれい(w
132:デフォルトの名無しさん
03/10/17 23:01
>>131
?
133:デフォルトの名無しさん
03/10/18 17:01
>132
何が? かな?
134:デフォルトの名無しさん
03/10/31 23:38
DOSでPCIバスのボードを複数枚制御する際、同じ割り込みを割り振られた場合
どのボードで割り込みが掛かったと判断するにはどうしたら良いですか?
135:デフォルトの名無しさん
03/11/01 17:56
>>134
>>134
INTを見る
136:デフォルトの名無しさん
03/11/07 20:29
>>134
各ボードのステータスを順繰りにチェックするしかないだす。
137:デフォルトの名無しさん
03/11/12 20:30
>>135-136
どうもです。なんとかやってみます。
138:デフォルトの名無しさん
04/01/13 11:58
ちょっくらDOS環境でプログラミングしようと思って,
URLリンク(www.borland.co.jp)
を買ったのですが,MSDNサブスクライバーでダウンロードしたMSDOS6.2には,
DPMIついてないし,EMM386に/DMPIオプションないので,
16ビットDPMIが必要なTurboC++4.0が動作しないんです。
DOS6ってPC-98x1でしか使ったことないんで,M$製DOSはよくわかりましぇん。
どなたかご存知ではありませんか?
DR-DOSについても検討したのですが,ネット上にある環境構築に関する情報では
みんながみんなDPMI=OFFなんですよ。何か問題が?
今はとりあえずMeマシン上でBorlandC++5.0Jでクロス開発してます・・・
139:デフォルトの名無しさん
04/01/14 00:12
>>138
TC4はVCPIで動くよ。
NEC版DOS6.2のEMM386.EXEの/DPMIは、VCPIを有効にするオプション。
VCPIは正式サポートではないが、付属のI-O DATA製DPMI.EXEがVCPIを必要とするため、
DPMI.EXEを使用する場合は/DPMIオプションを指定するようになっている。
DPMIを有効にするオプションではなく、「DPMI.EXEを使用する場合に指定するオプション」というわけ。
AT互換機用DOS6.2のEMM386.EXEは標準でVCPIに対応していたはず。
140:デフォルトの名無しさん
04/01/14 13:50
>>139
>AT互換機用DOS6.2のEMM386.EXEは標準でVCPIに対応していたはず。
まじですか。たしかにDOS解説系サイトではDPMI≒VCPIみたいに書いてありますね。
bochs上ではtc.exe起動時に
LTR:386TSS: loading tr.limit < 103
とPANICになってしまうので,あきらめてたんです。もしかして実機ならオケーなんでしょうか。
ちなみにこのbochs上でのmemの出力は
-------------------------------------------------------------------
メモリの種類 合計 = 使用 + 空き
---------------- ------- ------- -------
コンベンショナル 640K 78K 562K
上位 98K 98K 0K
予約済み 384K 384K 0K
XMS メモリ* 31,646K 2,873K 28,773K
---------------- ------- ------- -------
全メモリ 32,768K 3,432K 29,336K
全 1MB 以下メモリ 738K 175K 563K
全 EMS メモリ 3,376K (3,457,024 バイト)
空き EMS メモリ* 2,832K (2,899,968 バイト)
* EMM386 は EMS メモリをシミュレートするために XMS メモリを使っています.
空き EMS メモリは空き XMS メモリの変更によって変わることがあります.
最大実行可能プログラムサイズ 562K (575,808 バイト)
最大空き上位メモリブロック 0K (112 バイト)
MS-DOS はハイメモリ領域に常駐しています.
-------------------------------------------------------------------
こんな感じです。使っているbochsは
URLリンク(ebisa.hp.infoseek.co.jp)
のbochs-2.1.pre3-jpfix-20040103-win32.zip です。
どっちにしてもひまみつけて実機で試してみますぅ。
141:デフォルトの名無しさん
04/01/17 00:11
現品.comで買ったSBC(P-166)に32MBのCFカードと,フロッピーと電源だけ繋いで,立ち上げてみました。
DOS6.2Vをインストールして,TC4Jをフロッピーからインストールしました。
なんら問題なく立ち上がりました。bochs上ではTC4は動作しないということで・・・
どうもありがとうございました。またよろ〜ヽ(´ー`)ノ
142:デフォルトの名無しさん
04/01/23 07:53
今VCの16ビット(ver1.5?)手に入れるとしたら
オークションぐらいしかないですか?
143:デフォルトの名無しさん
04/01/23 10:11
なんか、このスレ見てたら98で同人ゲーム
作っていた当時を思い出したよ
今は、しがない業務アプリの設計者だけど
久しぶりにa8000Hとかに直書きしたくなってきた
144:141
04/01/23 12:48
>>143
>久しぶりにa8000Hとかに直書きしたくなってきた
ちょっとした組み込み系だとそういうのまだ現役ですよ。だいたい現場は3K職場ですけど。
ついでにお伺いしたいのですが,a8000Hとか,d0000Hとかに直書きするとき,どうやってました?
その1(ポインタでしこしこ)
void *base_adr;
base_adr = 0xd0000h;
その2(レジスタマップなんかを構造体にしてリンクでアドレス指定)
struct board_foo{
char register[10];
char flag[3];
}foo1;
としておいて,foo1がd0000hに配置されるようにリンカオプションで指定。
145:デフォルトの名無しさん
04/01/23 21:44
>144
その1とその2の合わせ技でしょう。
146:141
04/01/24 02:48
>>145
その場合,リンカオプションをいじらずに,ソース上に全部の情報が載るわけですな。
147:デフォルトの名無しさん
04/01/24 17:22
なるほど、構造体をかぶせるのが一番ですね。
148:141
04/01/24 18:59
構造体にかぶせるのを,アドレス指定(つまりポインタ)で書くと,
foo1->register[REGNO_CHANNEL1] = 1;
とかになって,「->」がうざいというシトがおられます。
構造体の配置自体をリンク時に指定してやれば,
foo1 . register[REGNO_CHANNEL1] = 1;
と書けるのです。C++でなら,参照を使って,
board_foo &foo2=*foo1;
とか書けるといいんですが,そうは問屋がおろさないようです。
組み込み系の処理系(PL/M,古いintelC)ではかなり太古から変数の配置アドレスをソース上で
操作できるのが普通だと思うのですが,gccとか今風の処理系でもできるんですかね。
そういうの使わないととんでもなく書きにくいと思うのは,頭が古いんでしょうか。
149:デフォルトの名無しさん
04/01/24 19:13
>>148
>とかになって,「->」がうざいというシトがおられます。
刺して下さい。
150:141
04/01/24 22:32
->->->->-> ;y=ー( ゚д゚)・∵. ターン
->演算子で刺しておきました。
151:デフォルトの名無しさん
04/01/24 22:47
>>150
噂の演算子オーバーロードですね。
152:143
04/01/25 00:37
おや、レスが来てた
いや、当時は全部アセンブラで書いていたから・・・
DSをa800hに変更して直書きしてたから意味合いで言えば、
その2に近いのかな?どちらにしても10年以上前の話だからなぁ
153:141
04/01/25 12:12
>>152
>いや、当時は全部アセンブラで書いていたから・・・
(MASMの)アセンブラの構造体こそ望ましいものです。アドレスを指定して,
構造体メンバにアクセスできて「->」をうざがって刺されることもないです。
154:デフォルトの名無しさん
04/01/25 12:30
155:デフォルトの名無しさん
04/01/26 01:16
>148
PLMとは懐かしい。今でも昔のサポートで使うことありますが(w
gccでも直アドレス指定出来ますよ。
まあOSによっては、やっても怒られるだけですが(w
156:141
04/01/27 10:39
>>155
>gccでも直アドレス指定出来ますよ。
直アドレスを
char *base_adr= 0xd0000;
とできるのは当たり前で,お伺いしたかったのは
struct board_foo;
として作ったものを0xd0000に配置するような機能のことです。ほんとうにできますか。
>まあOSによっては、やっても怒られるだけですが(w
WindowsNT系でもOS標準でできるんで困りませんし,タイミングが10msec以上の
比較的シビアなものではリアルタイム拡張製品などを使うので問題ありません。
それにタイミングが絡んでくると,OSなんかの機能よりも「作り方・書き方」の方が大事だと思います。
特殊なハードのラッチ信号をPCからポチポチ制御するような困ったちゃんシステムとか。
157:デフォルトの名無しさん
04/01/28 00:01
>156
あれま(構造体)変数などの絶対番地ロケートでしたか。
gccで開発するCPUでROM化などしたことがないのでわかりませ〜〜ん(^^;
わざわざ実体を重ねなくても、構造体へのポインタで良いような
気がしますけどね。処理系の環境に依存させるのがいやですから。
怒られるはメモリアクセス例外などが出るだったんですが。
タイミングですか、OSの機能というより挙動を知ってないと
いけない、じゃないですかね。何がWinNT系のOS標準で出来る
だかわかりませんが、WinNT系でもリアルタイム拡張があれば
時間の保証が得られるらしいですね。
158:デフォルトの名無しさん
04/01/28 04:20
昔は知識不足その他で果たせなかった事を何となくしてみたくなって、
使わなくなってた古い9821にdjgppをインストールしました。
今更ですが、Undocumentedな機能(PEGCとか)を使ってみたり、
直書きや割り込み、DPMI等で遊んでます。
…何で今更はまるんでしょう(笑)
結局、DOSは嫌いじゃないんだよなあと再確認しますた。
159:デフォルトの名無しさん
04/01/28 14:02
>>156
> struct board_foo;
> として作ったものを0xd0000に配置するような機能のことです。ほんとうにできますか。
mapped I/Oなら
#define foo1 (*(struct board_foo *)0xd0000)
じゃダメなん?
160:141
04/01/30 12:50
>>159
>#define foo1 (*(struct board_foo *)0xd0000)
おお。新パターンです。ありがとうございます。
#defineだとデバッガが・・・ゲホゲホ
ちなみにこれは,実際にお使いですか?
161:デフォルトの名無しさん
04/01/30 15:53
mapped I/Oでドライバ書いたことはないけど、DOSでは使ったな。
162:デフォルトの名無しさん
04/01/31 09:23
>>161
VRAMの位置とか?
163:デフォルトの名無しさん
04/01/31 23:49
質問させてください。キーイン待ちして、何秒後かにタイムアウトする
ようなプログラムは作れるでしょうか?
キーイン待ちのときに割り込み28hが呼ばれるようになっていても、
この中からいきなりキー入力処理の後にジャンプなんてできそうに
ないと思うし(安全とは思えないので)。なんか手ってないもんでしょうかね?
164:デフォルトの名無しさん
04/01/31 23:51
>>163
while(kbhit()){
if(time >= basetime + 1000){
timeoutflag = 1;
break;
}
}
165:163
04/02/01 00:04
>>164
ありがとうございます。
そうですね、この方法がありますね。一点気になるのがCPUを喰いすぎる
かなと思うところです。(シングルタスクなので実際上の問題は無いと思い
ますが。。)
166:デフォルトの名無しさん
04/02/01 21:07
>> 163
割り込み28hの中でフラグ立てるようにして,
キー入力待ちする側でタイムアウトをカウントしながら
そのフラグを監視すればよいと思います。
もちろんそのフラグは利用側で事前・事後にクリアしてやらないといけません。
>> 165
> 一点気になるのがCPUを喰いすぎる
?CPUを食わないようになんてできませんよ。CPUは常に100%フル回転です。
nop連続にした方がバスへのアクセスも減って,動作しない内部ロジックが増えて
発熱・消費電力を抑えられるとか,そういう趣旨なんですかね。
それとも省電力対応CPUのお話ですか。
167:デフォルトの名無しさん
04/02/01 21:33
ビジーループってこったろ
168:デフォルトの名無しさん
04/02/02 00:39
>>167
MS-DOSでビジーループを気にする理由がわかりませんね。
タイマ割り込みでソフトタイマー作って,キー入力を割り込みで処理するんなら,
なんにも悩むことなんてありませんですよ。
自前で擬似マルチタスクでも作ってその上で何かなさっておられるのなら,
ビジーウェイトを気になさるのも理解できますが。
169:デフォルトの名無しさん
04/02/02 00:46
ごめんごめん。俺が悪かった。
>(シングルタスクなので実際上の問題は無いと思い
>ますが。。)
これすら読まずに屁理屈こねるような奴に言っても無駄だったな。
170:デフォルトの名無しさん
04/02/02 12:52
お互い様でしょうね。
171:デフォルトの名無しさん
04/02/03 23:28
>>170
同意。
172:デフォルトの名無しさん
04/02/04 12:47
Interrupt Listの最新って61?
173:デフォルトの名無しさん
04/02/04 21:35
61
URLリンク(www.ctyme.com)
174:デフォルトの名無しさん
04/02/10 17:29
あげ
175:デフォルトの名無しさん
04/02/17 03:26
バッチファイルを作っているのですが
特定のアプリを強制終了させるコマンドがどうしてもわかりません。
どなたか教えてください。
OS環境はWindows2000Proです。
XPだと、taskkillコマンドが使えるらしく
Win2kならtasklist→killコマンドが使えるらしいのですが
MS-DOS上でそのコマンドを打ってみてもだめでした
ダメモトでバッチファイルでkillコマンドとtaskkillコマンドを書き込んでみましたが
当然だめでした。
176:デフォルトの名無しさん
04/02/17 04:13
>>175
killはWindows 2000 Support Toolsに入っている。
Windows 2000 Support ToolsはWindows 2000のCDに入っている。
177:175
04/02/17 23:40
ありがとうございます!!
178:デフォルトの名無しさん
04/02/18 13:19
カレントディレクトリのファイル名を全部大文字にするツールを
作ってるんですが、rename( 旧ファイル名, 新ファイル名 ) とやっても
全然変化しないんですよ。
DOS プロンプトから rename 旧ファイル名 新ファイル名 なら
いけるんですが・・・
Cで DOS のコマンドを実行するっていう命令ありませんでした?
10年前に使ったような記憶があるが思い出せない・・・
179:デフォルトの名無しさん
04/02/18 13:27
system
または
exec系関数
180:デフォルトの名無しさん
04/02/18 13:44
ここはいっちょディレクトリエントリを
直接書き換えるというのは、、、
181:デフォルトの名無しさん
04/02/18 13:50
>>178
一回ダミーファイル名に変換してからとか。
182:デフォルトの名無しさん
04/02/18 14:00
ありがとうございます。
さっそくプログラム中・・・
メインプログラマーがウンコすぎて仕事が殆どオレに
まわってきて死にそうです。
183:デフォルトの名無しさん
04/02/18 14:17
とりあえずダミーファイル名に変更することで対応できました。
ありがとうございました。
ていうかメインプログラマーまだ出社してこないよ・・・
もう○んでクレ。
184:デフォルトの名無しさん
04/02/18 17:34
おそらく彼は今頃コタツの中で安らかに・・・
185:デフォルトの名無しさん
04/02/27 20:24
おならを死んだ
186:デフォルトの名無しさん
04/03/08 19:08
すみません。
時間を取得してファイル名にセットしたいのですが、
TIMEコマンドだと:が混じってしまい設定ができません。
何か良い方法は無いでしょうか?
よろしくお願いします。
187:デフォルトの名無しさん
04/03/08 19:32
age
188:田宮良子
04/03/08 20:04
おまえ、混じっているな
189:ツソイチ
04/03/08 20:22
混じってるって、どぼぉいうことだよ、
みゅぅぃぃぃぃぃぃいいいぎゅぅいいいいいいいいいいいいぃぃぃ!!!!!
190:は ◆cplnFO9T0I
04/03/10 20:32
ネットワークプログラマに朗報です。
閉鎖されてたかと思われたTEENのサイトは、ただ単に鯖のHDが飛んでただけなので、
(マシントラブルとかかれていますが、どう考えたって、消失するといったらHDが飛んだとしか考えられません。)
仮運用の状態にあるそうです。みなさん、これからもがんがってください。
URLリンク(www.pc88.gr.jp)
191:デフォルトの名無しさん
04/03/10 23:04
>>190
>(マシントラブルとかかれていますが、どう考えたって、消失するといったらHDが飛んだとしか考えられません。)
さて、と。
192:デフォルトの名無しさん
04/03/13 18:29
>>6
193:デフォルトの名無しさん
04/03/29 22:12
こんなサイトを見つけました↓
URLリンク(www.command.com)
ここのスレの住民なら笑えるかも。
194:デフォルトの名無しさん
04/03/30 00:44
URLリンク(command.com)
にして、www.を省略したほうがそれっぽいよ。
195:は ◆cplnFO9T0I
04/05/14 20:21
2ちゃんねるブラウザを作ってるんですが、
お気に入りを読み込む部分は動的リンクにしたほうが良いでしょうか?
回答願います。
196:デフォルトの名無しさん
04/05/14 22:19
スレ違い
197:デフォルトの名無しさん
04/05/15 01:59
>>196
そうなのか?
198:デフォルトの名無しさん
04/05/15 02:13
Web Boy を参考にせよ
199:デフォルトの名無しさん
04/05/15 14:28
>>197
だってどう見ても195はDOS用の2ちゃんねるブラウザを作っているようには見えない
200:は ◆cplnFO9T0I
04/05/15 18:39
>>198
参考にしろといわれてもねぇ。
>>199
何故に?
コンポーネントをEXEにして分離したほうがいいのか聞いてるんですけど。
201:デフォルトの名無しさん
04/05/15 18:42
>>200
それは動的リンクとは言わない。
202:デフォルトの名無しさん
04/05/15 18:50
オーバーレイとかあったなぁ(しみじみ
203:デフォルトの名無しさん
04/05/16 01:28
思うがままに作って、完成させてから要望聞いて対応すりゃいいじゃん。
要望が出そうなところが分かってるなら、最初からそういう風に設計できるだろ?
ただ、DOS用なら、俺としては実行部はファイル1つの方が分かりやすい。
>>195の言う「動的リンク」が何を指すのか、>>200でいよいよ分からなくなったが…
204:は ◆cplnFO9T0I
04/05/16 18:38
>>201
似非動的リンク
>>203
わかったYO!
ともかくそこの部分を変更可能なように作っておくということで。
ともかく、ひとつのEXEで作ってみる。
205:デフォルトの名無しさん
04/05/16 18:41
>>204
似てもいない。
206:デフォルトの名無しさん
04/05/17 04:13
とりあえず、がんがれ。
207:デフォルトの名無しさん
04/07/03 15:04
消えた「は」
208:は ◆cplnFO9T0I
04/07/04 00:17
生きてますよ。
209:デフォルトの名無しさん
04/07/14 01:46
昔から疑問だったんだけど、>>143にあるようなVRAMアドレスって
DOSエクステンダを使うとどうなるんですか?
アドレス変わっちゃうのかな?
210:デフォルトの名無しさん
04/07/14 02:01
DOSエクステンダは1MB以下のメモリはアドレスが変わらないように
マップしてくれます。その代わりぬるぽが検出できないわけで
211:デフォルトの名無しさん
04/07/14 10:32
pharlapのdosエクステンダはvram用セレクタがあるよ
212:デフォルトの名無しさん
04/07/14 16:58
前に他のスレで伺ったらスレ違いとのことでしたので、
こちらでお尋ねしてもよろしいでしょうか?
VCでCUIのプログラムを作ったのですが、
Windows(XP/200/98等)内のDOSプロンプトでは動作するのに、
Windows98の起動ディスクで起動したDOSプロンプト内では動作しません。
Win32APIは使っていません。
調べた範囲ではSTUBが動作してしまっているようなのですが、
どうすればこの場合STUBではなく通常動作させられるのでしょうか?
213:デフォルトの名無しさん
04/07/14 17:08
最近のVCはDOS用プログラム作れないからCUIでビルドしても無理
DOS対応コンパイラを探せ
214:デフォルトの名無しさん
04/07/14 17:20
TurboC++とかだな
215:212
04/07/14 17:32
>>213 , >>214
ありがとう
216:デフォルトの名無しさん
04/07/14 18:44
Digital MarsとかもDOS吐けるでしょ。
217:デフォルトの名無しさん
04/07/16 10:36
お分かりになる方がいらしたら教えていただきたいのですが・・・
MASMver5で作ったマンデルブロ集合計算プログラム( .387ディレクティブ
で有効にした浮動小数点命令を使用してます)なんですが、IBMのDOS5J
の下で実行させると45分もかかるのに対して、WIN98SEのDOS窓では
4分程で終了します。どうしてこんなに実行時間に差がでるのか?と不思議に
思っています。何が原因でしようか。
CPUはATHLON2000+で、マ・・集合計算プログラム中でEMMS命令により
MMX命令を禁止させてます。(EMMS命令を追加してやらないと浮動小数点
命令が正常に実行されません)
よろしくお願いします。。
218:デフォルトの名無しさん
04/07/16 10:46
SEは優秀だから
219:デフォルトの名無しさん
04/07/16 14:44
>>217
計算だけ? 描画もしてる?
DOS窓はフルスクリーン?
220:217
04/07/16 19:01
>>219様
レス、ありがとうございます。
DOS窓はフルスクリーンで、計算と同時に描画も行っています。
221:デフォルトの名無しさん
04/07/16 19:15
>>220
試しに計算だけで比べてみるといい。
DOSの描画はVGA互換モードだから遅いのかな。
222:217
04/07/16 19:39
>>221様
ありがとうございます。
ご指摘のようにDOSでの描画は、BIOSのサービス(ファンクション番号
0CH)を利用しているため遅いです。正確に測ったことはありませんが、
単純に点を打っていくだけでも、400*400の面いっぱいを描くのに数十
秒位かかったように記憶しています。
223:デフォルトの名無しさん
04/07/26 01:30
XPでLSI-Cを使おうとすると、uasgeが空行になっちゃうんですが
対処法あります?
224:デフォルトの名無しさん
04/07/26 07:47
>>223
状況がよく分からんのでソース貼ってくれ。
実行結果も。
225:デフォルトの名無しさん
04/07/26 10:56
>>224
いやただたんに
$lsic
(謎の改行(usage分?))
$
こんな感じなんですよ
226:デフォルトの名無しさん
04/07/26 13:13
一回command.com起動汁
XPってDOSコマンドが表示されない時があるんだよな・・・
227:デフォルトの名無しさん
04/07/26 15:30
NTVDMとやらが悪さしているようでガスね
毎回command.com立ち上げるのめんどいんでこれを機にDOSBOX入れまス
228:デフォルトの名無しさん
04/07/26 20:43
DOSBOXってこれ?
URLリンク(dosbox.sourceforge.net)
229:デフォルトの名無しさん
04/07/26 22:24
sou
230:デフォルトの名無しさん
04/08/01 16:53
ハードウェアを直接叩くのが面白いと聞いたので、パンチしたら壊れました。
どう責任とってくれるんですか。楽しくありませんでした。
231:デフォルトの名無しさん
04/08/01 17:05
スレ違い
スレリンク(tech板)
232:デフォルトの名無しさん
04/08/01 23:10
最近はハードウェアよりもソフトウェアに対してムカつくことが多いです。
ソフトウェアを直接叩く方法を教えてください。
233:デフォルトの名無しさん
04/08/01 23:40
>>232
右斜め45度から勢いよくやれ。
234:デフォルトの名無しさん
04/08/02 00:42
>>233
本当だな?
235:sage
04/08/02 01:31
諸先輩方に質問があります。
大変、厨房な質問ではありますがどうかよろしくお願いいたします。
(1).EXEファイルの先頭512バイトのリロケーション情報領域の事ですが、先頭1バイト目の『ファイル識別子』の種類と意味を知りたいのですがどなたかご存知でしょうか?
(2).EXE/.COMファイルのリロケーション領域について詳しく紹介されているHPがあれば教えていただきたいのですが。
現在、勉強中なのですが参考文献も減ってきており四苦八苦しております。
どうか宜しくお願い致します。
236:235
04/08/02 02:20
>(2).EXE/.COMファイルのリロケーション領域について詳しく紹介されているHPがあれば教えていただきたいのですが。
(2).EXEのリロケーション領域と.COMのPSP領域について詳しく紹介されているHPがあれば教えていただきたいのですが。
の間違いでした。スミマセン。
237:デフォルトの名無しさん
04/08/02 11:01
MSDOS拡張機能セットを買え
238:デフォルトの名無しさん
04/08/03 00:10
昔はプログラミングの資料がOSに付いてたんだったな
つーかマジな話拡張機能セットってまだ買えるの?
239:デフォルトの名無しさん
04/08/04 13:17
MSDNに載ってないか?
240:デフォルトの名無しさん
04/08/04 22:05
ここにある資料ではどうよ?
漏れは「リロケーション領域」の意味がわからんので自分で調べてくれ。
URLリンク(www.wotsit.org)
241:デフォルトの名無しさん
04/08/05 11:17
>>235
DOS PSP」でググッたら、PSPの説明ありますた。
超カメレスで、スマソ
URLリンク(www5c.biglobe.ne.jp)
242:235
04/08/06 00:33
皆さんレス有難う御座います。
>MSDOS拡張機能セット
・・・資金が不足している為、購入不可です。
>MSDN
そういえば、載っているかも知れませんね。
調査不足でした。
>>240さんから紹介して頂いたページは最高にいいですね。
ピンポイントで知りたい情報が載ってました。
その他にも色々なファイル情報があり素晴らしいページですね。
お気に入りに登録しときました。
本当に有難う御座いました。
もうちょっと精進しときます。
243:デフォルトの名無しさん
04/08/06 07:32
>>235
DOS5Aのマニュアルp295,296
「EXEファイルの構造と・・・」
URLリンク(uploda.net)
ここに飛んでupload25235.jpgをクリックしてちょ
244:デフォルトの名無しさん
04/08/07 01:39
>>233
せっかくカラー化できると思ったのに白黒に逆戻りになってしまうではないですか?
245:デフォルトの名無しさん
04/09/07 23:04
VGAの同期信号を一時的に停止させるgenericな方法ってありませんか?
246:デフォルトの名無しさん
04/09/08 21:31
VGA コントロールレジスタ」でググッたら、こんなのがありますた。
↓
URLリンク(community.osdev.info)
0x03c3:VGA動作許可レジスタ(8bit、W)
bit0:VGA動作許可(1:動作許可)
bit1-7:リザーブ
このレジスタいじったら、どうなるんだろ?
247:デフォルトの名無しさん
04/09/21 22:28:05
PCIバスボードの割り込み関係の話なんですけど、
割り込みを使用するボードを1枚挿してBIOS上で
単一のIRQ(例えば5)のみを使用するように設定して
そのベクタを書き換えた場合の割り込み処理は問題ないのですが、
複数のIRQ(例えば5と12)を使用するように設定した場合に
ベクタを書き換えた後、割り込みが発生すると
スタックオーバーフローが出て暴走してしまいます。
勿論IRQを複数使用できる設定にしていても実際使用している
IRQは1つですし、実行ファイルも同じものです。
割り込み処理の記述等で何か注意する必要があったりしますか?
248:デフォルトの名無しさん
04/09/21 22:46:52
>>247
「スタックオーバーフローが出て暴走してしまいます。」
スタックポインタのチェックコードが有効のままになっていて、
割り込みルーチンであぼんしているわけじゃなくて、本当にスタックを
食いつぶしているってことですか?
249:デフォルトの名無しさん
04/09/21 22:53:56
interrupts?で追い確認?
250:デフォルトの名無しさん
04/09/22 06:15:23
>>248
割り込みを発生させた途端、
Internal Stack Overflow
System Halted
のようなメッセージが画面に表示されて
止まってしまうような状況です・・・。
このメッセージ自身DOSで出してるので
恐らく実際スタックを潰しちゃってると
思うんですが・・・。
251:デフォルトの名無しさん
04/09/22 10:56:42
>>250
割り込みの発生ペースは上がってますか?
config.sys で STACKS=64,512 とか指定してみるとどうでしょう。
252:デフォルトの名無しさん
04/09/22 20:42:14
>>251
割り込みトリガそのものは外部のスイッチから与えてるので
発生している割り込みは1回だけだと思います、多分。
スイッチのチャタリングが発生してる可能性もあるかも知れませんが、
上手くいくパターンでは1回の割り込みしか発生していませんでした。
しかし駄目なパターンの場合はその1回目で例のメッセージが
出てしまうんですよね・・・・。
config.sysの変更については今その環境が無いので
試せませんが明後日に試してみようかと思います。
253:デフォルトの名無しさん
04/09/24 21:28:58
ん〜駄目でした・・・・orz
でもどうやら駄目なケースの場合は何故かベクタの書き換えが
上手くいっていないようです。
今日も色々試したんですがサッパリ・・・・もうどうすれば(ノД`)
254:デフォルトの名無しさん
04/09/25 19:06:54
すみません。MS-DOS 6 の Files/FCBS/Buffers/Lastdrive/stacks を
UMBやHMAに持ち上げるプログラムありませんか?
PC-98 用なら何とかありますが、DOS/V用がありません。
無ければ作ろうと思いますので、資料でも可。
255:デフォルトの名無しさん
04/09/25 19:41:59
DOSでプログラミングと言えば、ボーランドが昔のDOS用の製品を
まとめて売り出しているが、買う香具師いるのか?
URLリンク(www.borland.co.jp)
256:デフォルトの名無しさん
04/09/25 22:00:10
いません。
どうせあと二年もすれば無料になるよ。
257:デフォルトの名無しさん
04/10/04 17:23:32
Windowsが普及しきってからPCを使い始めましたが
なぜかDOSに惹かれるので、DOSコマンドも覚えました。
今からDOSプログラミングを始めようと思ったら
どういった手段で資料を集めればいいでしょうか?
大きい本屋になら未だに並んでるのか、Web上で足りるのか、諦めるしかないのか・・・
258:デフォルトの名無しさん
04/10/04 18:13:52
どんなことをなさりたいのか分かりませんが、DOSのシステムコールの説明
なら、DOSの拡張セット(NECのDOSの場合)にマニュアルが添付されて
ました。が、今でも販売されているかどうか? オークションに出るかもしれ
ませんね。BIOSサービスとかハードウェア関係は、CQ出版社が昔、解説本を
多数出してましたが、今でも在庫があるかどうか?
259:デフォルトの名無しさん
04/10/04 18:35:31
コマンドがどうとかっていうことが興味の方向なら、
Cygwin でも入れて perl とか awk その他を覚えてゆくのが良いような気がする。
260:デフォルトの名無しさん
04/10/04 18:41:22
>>254
PACK for WIN GOLD 98後期版」なるCDブックにENVHI.EXEという
フリーソフトが収録されていて、これが「一番親のcommand.comの
環境変数をUMBに追いやって、ほんの少しだけ空きメモリを広くできる
かも知れません。」なのだそう。こういうのを差しているのかな?
激しくカメレスで、スマソ
261:デフォルトの名無しさん
04/10/04 21:39:45
>>254
MSDOS7なら全部〜Highがあるんだけどそれじゃだめだよな。
262:デフォルトの名無しさん
04/10/06 13:21:53
>257です。
コマンドラインで作業をしたいという訳ではなく、>258の仰るようなことに興味があります。
資料はオクで探すしかないようですね。ありがとうございました
263:デフォルトの名無しさん
04/10/06 23:09:24
>>262
URLリンク(www5c.biglobe.ne.jp)
264:デフォルトの名無しさん
04/10/06 23:26:34
すみません。
C言語 dos で
msecの時間を表示したいのですが、
どのようにすればよいでしょうか?
よろしくお願いします。
よろしければプログラム貼り付けてください。
265:デフォルトの名無しさん
04/10/11 18:11:12
hoge
266:デフォルトの名無しさん
04/10/11 20:17:02
>>263
アセンブラのコンパイラってなんだ???
267:デフォルトの名無しさん
04/10/11 20:42:12
>>264
環境依存です。
268:デフォルトの名無しさん
04/10/12 07:43:54
>>264
読解力不足のせいで意味がわかりかねるのですが、もしmsecがミリセコンドの略で
あり、また、何等かの現象をパソコン内臓のタイマを利用してミリセコンド単位で
計測、表示したいというのが>>264氏の希望であるのならば、これが役に立つかも?
ただし、NECの9801の場合で、しかもアセンブリ言語です。 ↓
速水さん、許してちょ ↓
URLリンク(ludwig.kir.jp)
URLリンク(ludwig.kir.jp) ↓
URLリンク(ludwig.kir.jp)
所謂DOS/V機の場合、最近のマザーボートはWIN2000以降のOSを前提に
設計されているようなので、タイマIC8253完全互換の機能をサポートしてる
のどうかとかアドレスがオリジナルPC/AT機と同じかどうかは?ですね。
269:デフォルトの名無しさん
04/10/12 16:27:43
DOSでtimeGetTime()見たいのってないの?
270:デフォルトの名無しさん
04/10/12 23:40:56
ない。
DOS時代はタイマICに直接アクセスするとか、
VSYNC割り込みトラップして自分でカウントするとかでなんとかしてた。
271:デフォルトの名無しさん
04/10/12 23:53:23
URLリンク(www.vector.co.jp)
272:デフォルトの名無しさん
04/10/13 09:17:08
そうか、タイマはFM再生とか効果音に使いそうだからやっぱりVSYNCなのかな
ありがとう
273:デフォルトの名無しさん
04/10/13 15:20:56
>>268 の貼ってくれたスキャンみてて思ったんですけど
outのあと何クロックはoutの結果に依存した処理をしちゃいけない
とかを解説したとこってないですか?
274:デフォルトの名無しさん
04/10/13 16:43:53
URLリンク(anabuki.ec.u-tokai.ac.jp)
275:デフォルトの名無しさん
04/10/13 20:11:09
>>264
いろいろ書いてあります↓
URLリンク(www.webtech.co.jp)
> o カレンダ時計割り込み搭載機種では、MS-DOS環境でHRTIMER.SYSというデバ
>イスドライバを組み込むことでDOSファンクションで1/100秒単位の時刻を
>取得することが可能である。
URLリンク(www.webtech.co.jp)
276:デフォルトの名無しさん
04/10/20 18:47:58
DOS
277:デフォルトの名無しさん
04/10/26 18:57:56
上げてみるクスコ
278:デフォルトの名無しさん
04/10/26 19:06:53
32Bitコンパイラで「int 10h」
のシステムコールを使うとバグるんですが
32bitコンパイラでDOSのビデオモードの
変更とかどうやってやるんですか?
教えてください、お願いします。
279:デフォルトの名無しさん
04/10/26 19:16:45
環境ぐらい書け
280:デフォルトの名無しさん
04/10/26 20:31:00
一般的なことしか書けませんが、プロテクトモードではIDTを記述して
やらないと割り込みが使えないはずですが、この点はいかがでしょうか。
32bitコンパイラに関してはド素人なもので、こんなことしか書けません。
失礼しました。
281:デフォルトの名無しさん
04/10/26 22:15:04
ただ単にWindowsの32ビットプログラムでやろうとしているだけだったりして。
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5392日前に更新/220 KB
担当:undef