DOSでプログラミングat TECH
DOSでプログラミング - 暇つぶし2ch1:デフォルトの名無しさん
03/03/07 10:45
ハードウェアを直接叩くのはやっぱり楽しい!

DOSにおける開発について語りましょう。


2:デフォルトの名無しさん
03/03/07 10:46
フリーのコンパイラ/アセンブラ

16bit

LSI C-86 Ver. 3.30c試食版
URLリンク(www.lsi-j.web.sh.cwidc.net)

Turbo C / Turbo C++ / Turbo Pascal (PC-9800では動作不可)
URLリンク(community.borland.com)

Pacific C
URLリンク(www.htsoft.com)

16bit/32bit

Open Watcom
URLリンク(www.openwatcom.org)

Digital Mars C/C++ compiler (Win32で動作)
URLリンク(www.digitalmars.com)

MASM32 (Win32で動作)
URLリンク(www.masm32.com)

NASM
URLリンク(nasm.sourceforge.net)

3:デフォルトの名無しさん
03/03/07 10:47
32bit

DJGPP
URLリンク(www.delorie.com)

16bit リンカ
fURLリンク(ftp.microsoft.com)

4:デフォルトの名無しさん
03/03/07 10:47
今でも入手できる商用のコンパイラ/アセンブラ
Borland C++ Suite
URLリンク(www.borland.co.jp)

LSI C-86
URLリンク(www.lsi-j.web.sh.cwidc.net)

Light Macro Assembler
URLリンク(www.tamasoft.co.jp)

5:1
03/03/07 10:51
というわけで、立ててみました。
現在、PC-9821用のグラフィックライブラリを作っています。
将来的には、Quakeとか移植できたらいいな、と思ってます。

6:おぼーん&rlo;んーぼお&rlo;
03/03/07 14:25
おぼーん

7:デフォルトの名無しさん
03/03/07 14:28
メモリモデルとかがいまいち理解できてないんですけど教えてもらえますか?

near 1セグメントのみ
far セグメントをまたいでアクセスが可能

とか。

8:デフォルトの名無しさん
03/03/07 14:50
nearポインタ : オフセットのみでのアクセス
farポインタ : セグメント:オフセットでのアクセス
hugeポインタ : セグメント:オフセットでのアクセス、常に正規化するので64kbytes以上のデータにアクセス可能

Tinyモデル (COM形式)
コード : near、データ : near、コードとデータが同セグメント

Smallモデル
コード : near、データ : near、コードとデータが別セグメント

Mediumモデル
コード : far、データ : near

Compactモデル
コード : near、データ : far

Largeモデル
コード : far、データ : far

Hugeモデル
コード : far、データ : huge

9:デフォルトの名無しさん
03/03/07 14:57
DOS/V 簡易グラフィックライブラリ「GRPTEST 1.0」
URLリンク(www.vector.co.jp)

VESA256色モードをサポートし、TCとBCに対応。
しかし、配布されてるのはソースだけで、TASMがないとコンパイルできない。
誰かコンパイルしたのをうぷして!


10:デフォルトの名無しさん
03/03/07 15:14
>>9
grplib.cの107行目、

#pragma inline

をコメントアウトすればtasmなしでコンパイルできる。


しかし、ヘッダもついてないのね(汗)

11:とて
03/03/07 16:16
情報 求む

 昔 昔の クイックC2 のAT版所持者
      nec98ならあるが 今わ動かない
      そこで AT版なら動く可能性がある
   マイクロソフトのQuickC Ver2.0
      

12:デフォルトの名無しさん
03/03/08 06:53
  ∧_∧
 ( ´∀`)< ぬるぽ

13:デフォルトの名無しさん
03/03/08 12:16
       | | ガッ
  ( ・∀・) | |      
 と    ) | |   
   Y /ノ   
    / )  .人 
  _/し'  <  >_Λ∩
 (_フ彡  V`Д´)/
            / ←>>12


14:デフォルトの名無しさん
03/03/09 00:05
>>11
PC/AT版って、日本語版はないんじゃないかな?
J-3100の英語モード用に英語版が販売されていたような。

15:デフォルトの名無しさん
03/03/09 08:29
>>5を見てこのスレには何の価値もないと思った。
>>1よ、もはやメモリモデルを気にしたり、
ソフトウェアでグラフィックを高速化したりする時代は終わったのだ。
俺と一緒にDirectX9を勉強しようじゃないか。

16:9
03/03/09 13:40
>>10
レスありがとう。
でも、インライン命令使わないと遅いってことはないですか?
ま、動けばいいんですけどね。

関係ないけど、DX4でも整数sqrtは実数sqrtの3倍遅かったです。


17:デフォルトの名無しさん
03/03/09 13:53
QCではなくVC1.5を使えば?

18:9
03/03/09 17:13
デモソース動きました。
でも、コメントに書いてあったとおり、フォントは読み出せなかったようで、
グラフィック文字出力はダメでした。

>>15
DOSプログラミングには箱庭的楽しみがありまふ。


19:デフォルトの名無しさん
03/03/09 17:26
つーか、意味ないよな

>将来的には、Quakeとか移植できたらいいな、と思ってます。
ハードの性能的に無理でしょ。

20:デフォルトの名無しさん
03/03/09 17:28
>>19
PentiumII機あったけど。

21:デフォルトの名無しさん
03/03/09 18:30
>>19 >>20
URLリンク(www.amy.hi-ho.ne.jp)
1GHz動作するから、十分可能かも。

22:デフォルトの名無しさん
03/03/09 21:55
>>11
2.0だったか2.5だったか持ってたはずだが・・・
ちょっと探したけど見つからない。
「情報」とはどのような?

23:FreeDOS教徒
03/03/09 22:43
この板だとすぐ落ちそうな気がするんですが、それはさておいて。
なんつー面白そうなスレ立ててんだ>>1よ。じっくりヲチさせてもらうぞ。

24:とて
03/03/10 09:42
今のパソコン
 セレロン300で メモリー128 HD 6G
のパソコンで動かす
 業務の異動 NEC98からATタイプに
 ソースはあるから コンパイルしなおしたら
動くかの判定 

 パソコン本体は 別にして 数万円で構築できるメリット





25:デフォルトの名無しさん
03/03/10 10:08
>>18
パックドピクセルのMCGAモードなんか、
他人のよくわからんライブラリ使うまでもないだろ。
自分で書け

26:デフォルトの名無しさん
03/03/10 11:00
いまからだとハード周りの書籍を探すのがなかなか困難だ
流行らせてから秘蔵の書籍をヤフオク辺りに出品してぼったくりたい

27:デフォルトの名無しさん
03/03/10 11:12
>>26
英文ならネットに一杯あるよ

28:デフォルトの名無しさん
03/03/10 11:13
>>18
フォントは、BIOS使って読み出すよりも、
ビットマップフォントを用意した方が早いんじゃ?(手間的にも速度的にも)


29:デフォルトの名無しさん
03/03/10 11:33
速度云々言う奴の頭には、BIOSから読み出したフォントを
キャッシュするという考えが無いのだろうか?

DOSからWindowsに環境が変わっても同じようなことを言う奴がいる
GDIのテキスト出力が遅いという理由でビットマップで
フォントを作っておくとか言い出す馬鹿者と同レベル

30:デフォルトの名無しさん
03/03/10 20:49
DOSでぬるぽ

31:デフォルトの名無しさん
03/03/10 20:54
>>30
NULL pointer assignmentは何回か出したことあるよ。QuickCで。

32:デフォルトの名無しさん
03/03/11 05:31
 DOSダロウトナンダロウト
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__Λ∩
  _/し' //. V`Д´)/  
 (_フ彡        /  ←>>30


33:デフォルトの名無しさん
03/03/14 22:45
保守

34:デファクトのスタンダードさん
03/04/07 20:26
ちょっとスレ違いかもしれないんですがedlinについてです。

1.44MBフロッピーに日本語を表示できるようにいろいろ詰め込んだ時に、
どうしてもedit.exeが入らなかったので(QuickBasicが必要だから)
edlinを入れようと思って探したらMS-DOS 6.2/Vには無いんですね。

で、記憶を辿ったらDOS5にはある。(但しNEC版)ってことは、6.2/Vは
アップ版だから無いんだろうという結論にしたのですが、そもそもNEC版
ではないAT互換機でDOS5の日本語版なんて出回ったのでしょうか?

思い出したら気になりだしたんで…

35:デフォルトの名無しさん
03/04/08 07:01
せめてDOS Extender使うとか。
64KB境界気にしつつやってられねーよ。

36:デフォルトの名無しさん
03/04/09 10:13
DOS/Vの最初は4.xだったはず

37:デフォルトの名無しさん
03/04/10 01:16
(DOSじゃなくWin9x向けなのですが)
上司の無茶な思い付きにより
FATとFAT32用のデフラグツールを
独自実装する羽目になりそうです。

Googleで探しても、この辺の資料って少なくて
困ってます(デフラグ製品ばっかり引っかかって、
実装方法やらアルゴリズムに関する資料は
なかなか見つからない・・・)

この辺の勉強にいいページとか本とか
教えていただけないでしょうか?

当方のレベルは、ユーザモードで動く
C/C++/Javaアプリケーションなら
だいたいどんなものでも書ける程度です。
(が、ハードを直接たたくような
コードは書いたことがありません。)

38:デフォルトの名無しさん
03/04/10 15:53
>>37
> (DOSじゃなくWin9x向けなのですが)
> 上司の無茶な思い付きにより
> FATとFAT32用のデフラグツールを
> 独自実装する羽目になりそうです。
今更そんなのを新たに作っても売れんよ?


39:デファクトのスタンダードさん
03/04/11 19:42
>36
ソリはAXでは?

40:デファクトのスタンダードさん
03/04/11 19:46
>>37
> この辺の勉強にいいページとか本とか

あんまり役に立たないレスですが、そーゆーのってハード系
(CQ出版のインタフェースとか)を当たると何か役に立つんじゃ
ないでしょうか。あとATAやSCSI関連の仕様の中にポロッと出て
きそうです。

41:デフォルトの名無しさん
03/04/11 20:21
>39
URLリンク(www.google.co.jp)

42:デフォルトの名無しさん
03/04/11 21:53
>>37
>当方のレベルは、ユーザモードで動く
>C/C++/Javaアプリケーションなら
>だいたいどんなものでも書ける程度です。

ならば、ハードを直接叩くコードを
自動生成するプログラムを作れるだろ?


43:デフォルトの名無しさん
03/04/11 23:22
>>42
自動生成するプログラムが生成した「ハードを直接叩くコード」は
人間が書くんだよ。
今現在何もないところからコードを作り出せるプログラムがあると思ってるの?

44:デフォルトの名無しさん
03/04/12 08:00
>>43
・「コードを自動生成するプログラム」というものは存在し得る。
・「コードを自動生成するプログラム」はユーザーモードで動かす事が可能である、
>>37は「ユーザモードで動くアプリケーションならだいたいどんなものでも書ける」

ならば、>>37はハードを直接叩くコードを自動生成するプログラムを作れる

簡単な理屈だろ。

俺は今まで「ユーザモードで動くアプリケーションならだいたいどんなものでも書ける」
なんてトンデモな事を言いきれる奴を見た事が無かったので言ってみただけ。


45:デフォルトの名無しさん
03/04/12 10:29
copy a: b:
del a:

46:デフォルトの名無しさん
03/04/12 12:02

95発売以前は、ウイルス作りにマジ燃えたな。
いわゆるステルス型とかいろいろ作った。
俺を裏切った香具師に、それ仕込んだゲームソフトをあげて悦に浸ったりしたな~。

47:デフォルトの名無しさん
03/04/12 13:03
>>46
キモッ!

48:デフォルトの名無しさん
03/04/12 18:58
DOS/VのDMAの使い方を日本語で解説しているページってないですか?

49:デフォルトの名無しさん
03/04/13 10:28
>>48
以前,ちょこっと勉強したけど日本語資料はあんまりなかった気がする.
CQ出版の本とLinuxのソース,あとはIntelからDMAコントローラの資料ダウンロードして
IDEのDMA転送は一応可能になったよ.

ぬるい情報で申し訳ない.

50:デフォルトの名無しさん
03/04/14 17:02
>>48
DOS/V(MS-DOS/IBM PC-DOSの日本語版)にDMAはついてないわけだが。
PC-AT互換機のハードウェアDMAの使い方は古い本にしか出てないし、
今さら勉強する価値があるとも思えない。

51:山崎渉
03/04/17 15:29
(^^)

52:デフォルトの名無しさん
03/04/21 08:29
保守

53:デフォルトの名無しさん
03/04/24 00:47
質問させてください。
バッチファイルを作って、それにD&Dして、バッチファイルと同じディレクトリにおいてる
スクリプトを呼び出して処理しようとしてるのですが・・・

カレントディレクトリの移動に失敗してしまいます。
バッチファイル内で・・・

cd %0%../

こんな事してるんですが、移動できません。
バッチがおいてあるディレクトリへ移動する良い方法はありませんか?

54:デフォルトの名無しさん
03/04/24 07:35
>>53
バッチファイルプログラミング質問スレ
スレリンク(tech板)

55:デフォルトの名無しさん
03/04/24 17:58
>>53
右クリック→プロパティ→プログラム→作業ディレクトリ
は駄目か?


56:デフォルトの名無しさん
03/04/27 09:36
>46
95以前はHDDを初期化したとしても大した被害はないよ。

57:デフォルトの名無しさん
03/05/11 02:28
DOS画面の指定した2つの行でだけスクロールするCONドライバを
作りたいんですが、元になるソースとか情報とかありませんか?

58:デフォルトの名無しさん
03/05/11 12:41
98ならFCONあたりは?

59:デフォルトの名無しさん
03/05/11 16:27
IBM/AT or IBM/XTなんです。

60:デフォルトの名無しさん
03/05/11 16:32
じゃあ、NNANSIとか

61:デフォルトの名無しさん
03/05/11 16:38
どうも。
今PCが手元にないんで、あとで探してみます。

62:デフォルトの名無しさん
03/05/11 21:00
どうやってアクセスしてるんだ。携帯か?

63:デフォルトの名無しさん
03/05/11 22:11
DOSマシーン。これもPCだった。

64:デフォルトの名無しさん
03/05/12 21:30
NNANSIありました。286以上用だったんで、TASM1.0で再アセンブル
したが上手く出来ないみたい。残念ながらスクロール範囲指定エス
ケープはありませんでしたが、十二分に参考になりました。どうも。

65:デフォルトの名無しさん
03/05/15 17:44
URLリンク(rd.vector.co.jp)
↑あんま、参考にならないかな?

66:デフォルトの名無しさん
03/05/15 17:51
関係ないけどTASMのバージョン非互換には萎える。
ま、cmacros.incもやめてほしいんだけど。(w


67:デフォルトの名無しさん
03/05/16 13:03
DOSで動くHTTPサーバ無いでしか?

68:デフォルトの名無しさん
03/05/16 13:09
DOSの上でwin.comを動かせば、結構あると思う。

69:デフォルトの名無しさん
03/05/16 13:24
>>67
URLリンク(dos.zive.net:200)

70:67
03/05/16 13:37
thanx!>>68-69
みたけど本物???
ソース2000行くらいしか無いけど...

71:デフォルトの名無しさん
03/05/16 14:30
>ハードウェアを直接叩くのはやっぱり楽しい!
やっぱりストレスがたまっているときはこれだよね

72:デフォルトの名無しさん
03/05/25 14:32
dosだとcpuの計算時間ってどうやって表示させるんですか?

73:デフォルトの名無しさん
03/05/25 15:36
dosって16ビットだから直接叩いても処理速度おそい
win32に直接叩け、俺は叩けるけど、お前らには無理だろうな(藁

74:デフォルトの名無しさん
03/05/25 17:06
>>72
echo+>crlf
time<crlf
(時間を計るプログラムを走らせる)
time<crlf
というBATファイルで、
時間は自分で引き算するw

75:デフォルトの名無しさん
03/05/25 20:30
ちょっと質問なんですがよろしいでしょうか?
別の板のとあるスレで
「とあるサイトを見ていたら突然PCの画面が黒地に白の文字が現れて、強制的に再起動をさせられるという事があった。
一瞬の出来事で、文字の内容は「STOP」等と書かれていた以外は読み取ることが出来なかった。」
という書き込みを見つけたんですが、数時間後に犯人を名乗る人物から
「バッチファイルを実行したからコマンドプロンプトが立ち上がって表示されたんだよ。
OSがブートしなくなったりするかもな。」という書き込みがされました。

これって一体どういう仕組みなんでしょうか?なんかでたらめを言っているようにしか聞こえないのですが。
もしよろしければ正常に戻すための対処方みたいなものも教えていただければ幸いです…
質問するべき場所では無いのかもしれませんが、本当にお願い致します。その方が困ってるみたいなので…

76:デフォルトの名無しさん
03/05/25 20:32
取り敢えず、その犯人とやらの科白は痛すぎ。

77:デフォルトの名無しさん
03/05/25 23:04
>>75
バッチファイルで再起動はできる。
だが、Systemファイルをいじれるかは不明。
正常に戻すにはOSの再セットアップが一番良いが、
今は、重大なファイルのバックアップとっとけばいいと思う。
やばくなったら再セットアップだな。
念のためレジストリの修復はした方がいいかも。

78:山崎渉
03/05/28 12:44
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎―◎                      山崎渉

79:デフォルトの名無しさん
03/05/28 15:02
↑アフォ
age

80:無知無知
03/05/28 18:01
DOSでぷろぐらみんぐってどゆこと?
(・∀・)

81:デフォルトの名無しさん
03/05/28 18:03
>>80
command.com でプログラミングするんじゃないか?
(・∀・)


82:デフォルトの名無しさん
03/05/28 18:28
Debugって入力てみたらどうだ?

83:デフォルトの名無しさん
03/05/31 05:19
むしろシムデブ

84:デフォルトの名無しさん
03/06/01 02:15
>>73
DOSでも32bit命令は普通に使えるが?

85:デフォルトの名無しさん
03/06/01 04:25
>>73
これだからクローズなOSは(ry

86:デフォルトの名無しさん
03/06/10 16:59
なんか変な厨がわいちゃってるね。

87:デフォルトの名無しさん
03/06/12 01:05


88:超初心者
03/06/17 23:34
仮想86モードじゃだめだけどリアルモードならセグメントリミットを4GBにしてESIとかのレジスタで32ビットアドレス空間自在にアクセスできますよ。
repプリフィックスとdb 67hとmovsdとかで楽勝です。mov al,fs:[edi]なんてやれるし。
セグメントレジスタは0を入れるのが楽です。esiなどの32ビットレジスタに物理アドレスを入れるだけ。
CALL先は1MB空間に限定でuse32センテンスが使えるDOSエクステンダ系とは違って面倒ですが。
セグメントリミットを4GBにするのはセレクタの設定です。ソース必要であれば掲載します。

89:超初心者
03/06/17 23:48
補足、仮想86モードの場合はVCPIかDPMIで32ビットアプリを組めます。
私はVCPI(なつかしのMelware)でTASMとTCで無理やり組んだことがあります。
でもこれは殆どWin32環境のコンソールアプリと同じだな。TC(use16)ゆえにCでポインタが使えないことが問題だったが。
でもハードは、ばんばんにアクセスできます。
Win32環境では基本的にカーネル0で作るデバドラかI/Oトランザクションをゲートを通して実行するしかないでしょう。
SCSIなどはASPIファンクションで自在に扱えるという盲点のデバイスもあります・・・

90:デフォルトの名無しさん
03/06/17 23:49


91:超初心者
03/06/17 23:58
Win32環境でI/Oドライバ作ってもアプリに実行権が渡るまで反応できないよね。
即在に反応するのであれば全てデバドラ内部で処理する必要あり。
でもDOSだと自由です。

92:デフォルトの名無しさん
03/06/18 00:14
必要ならデバドラで反応すればいいじゃないの。
やり方知らんからどうでも良いけど。
DOSはCでもinp/outpでできちゃうからね。

93:超初心者
03/06/18 22:02
結局16ビットでI/O処理が遅いというのが気になっただけだけど。
リアルモードなり仮想86で32ビット命令使う場合にプリフィックス付く分メモリアクセス不利はわかりますが、Win32の環境じゃぁ速いI/O処理は難しいね。
32ビット処理は速いのは当たり前だけど環境がWin32とリアルタイムOSじゃ差があるのは当然で、DOS環境ならわがままし放題で速いソフト作れるねって話です。
Win32でもDirectXなどのI/Oサポートを使えば素晴らしい速度になりますが、話がそれましたね。

94:デフォルトの名無しさん
03/06/18 22:16
ageないの?

95:デフォルトの名無しさん
03/06/19 02:05
何をもって速い/遅いって言っているかによるだろうけど。
反応(リアルタイム性)と速度(データレート)と幅(16/32bit)などが
ごちゃまぜのような・・・

96:た す け て
03/06/19 16:59
マジレス求めても良いですか?

今 PC9801版DOS 命令と同処理をなぜかWin 版に直してんだが。
Dos の BIOS 制御で
Int 18h 命令で
AH 00h を入れた命令ってなにしてるんだ!!!?

AH 0Ah とかは資料に載ってるんだが・・・。どなたか親切な方たのむ。


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ビットプログラムでやろうとしているだけだったりして。

282:デフォルトの名無しさん
04/10/26 22:19:01
想像で語るのはやめようや

283:デフォルトの名無しさん
04/10/26 22:32:55
だったら環境かけよボケが

284:デフォルトの名無しさん
04/10/28 07:09:47
>>281
けっきょくこれか?クズが!

285:デフォルトの名無しさん
04/10/28 07:19:05
>>278
リアルモードにおりてから実行妹汁

286:278
04/10/29 18:09:42
>>280,285
有難うございました、やってみます


環境はBorland C++5.5でMEです。
其の他の人もどうもすみませんでした。

287:デフォルトの名無しさん
04/10/29 22:25:06
281の言う通りでしたとさ。

288:デフォルトの名無しさん
04/10/30 00:46:03
DOS窓という通称の弊害がこんなところに

289:デフォルトの名無しさん
04/10/31 07:42:50
DOSエクステンダーってどうやって使うの?
教えてエロい人(;つД`)

290:デフォルトの名無しさん
04/10/31 14:15:37
マヌアルを小便ちびるまで嫁

291:デフォルトの名無しさん
04/10/31 20:29:10
manual自体入手しづらくないか?

292:デフォルトの名無しさん
04/11/01 17:07:21
言い訳はトイレに行って一人でして下さい

293:デフォルトの名無しさん
04/11/02 15:19:28
まにゅあるなんてもうねぇだろ

294:デフォルトの名無しさん
04/11/02 21:03:46
マニュアル付きDOSエクステンダ (EXE386)
URLリンク(www.vector.co.jp)

処理系も欲しいなら

Digital Mars C++ (X32) (コンパイラはWin32アプリ)
URLリンク(www.digitalmars.com)

Open Watcom (DOS/4GW) (こっちはDOS上でもコンパイルできる)
URLリンク(www.openwatcom.org)

295:デフォルトの名無しさん
04/11/06 14:35:47
Digital MarsとOpen Watcomって
とっちが使いやすい?

296:デフォルトの名無しさん
04/11/08 20:43:59
正直俺も仮想8086モードでINT関係が使えん何故だ・・・・

297:デフォルトの名無しさん
04/11/09 16:33:34
Open Watcomって商用では使わない方が良いって聞くけど何で?


298:デフォルトの名無しさん
04/11/09 16:45:12
>>297
何故そう言った奴に聞かない?

299:デフォルトの名無しさん
04/11/10 18:40:55
噂とかで流れてんじゃねーの( ´ー`)フゥー...

300:デフォルトの名無しさん
04/11/14 16:49:57
>>297
商用で使ってはいけないとライセンスに書かれているからです。

301:デフォルトの名無しさん
04/11/14 23:04:29
マジッスカ???

302:デフォルトの名無しさん
04/11/15 09:30:55
マジッスヨ???

303:デフォルトの名無しさん
04/11/16 16:59:11
DOS画面で、入力内容とかメッセージとかをファイルに出力するコマンドがあったら
教えて下さい。

304:デフォルトの名無しさん
04/11/16 17:10:11
>>303
質問があいまいだな
COPY CON filename や ECHO 、リダイレクトなど。

305:デフォルトの名無しさん
04/11/16 17:29:14
>>303さん
レスありがとうございます。
DOS画面の表示内容をそのままファイルに出力したいのです。
長いバッチで古い上の方が消えてしまうもので、
それを全て記録したいのです。
初心者なのでいまいちうまく説明できなくてすみません。

306:デフォルトの名無しさん
04/11/16 17:36:50
>>304さんありがとうございました。
リダイレクトでできました。
即レスありがとうございます。

307:デフォルトの名無しさん
04/11/22 16:29:27


308:デフォルトの名無しさん
04/11/24 15:25:49
[Windows]初心者~管理者まで必読!コマンドライン(DOS Pt.3)
スレリンク(win板)

309:デフォルトの名無しさん
04/12/07 23:03:00
アスキー出版局の、PC-9801スーパーテクニックっつー本
誰かいらんけ?


310:デフォルトの名無しさん
04/12/07 23:16:35
>>309
図書委員の権限発動して高校の図書館に入れさせてコピーした記憶のある懐かしい代物だなw

311:デフォルトの名無しさん
04/12/09 23:03:50
あなたを詐欺罪で訴えます。


312:デフォルトの名無しさん
04/12/10 13:39:44
>>2 >>109
今更だが、パッチってこれだな。
URLリンク(groups.google.com)

313:デフォルトの名無しさん
04/12/10 15:10:04
>>312
まぁあれだ、MSに対向するためのみの意義しかないグラフィック機能を除けば今でもそれなりだろうね。
少なくともLSI-Cを使うよりも16倍いい。
#あれはあれで、悪くはないのだが。

314:デフォルトの名無しさん
04/12/10 15:32:19
LSI-CはLFN libraryがあるから、Win/DOS両方で使えるような小物を作るのに重宝している。

315:デフォルトの名無しさん
04/12/12 21:55:24
dosのフォントが気に入らない。変更するにはレジストリをいじるしかないのかな?


316:デフォルトの名無しさん
04/12/12 22:02:34
そりゃDOS窓やろ

317:デフォルトの名無しさん
04/12/12 22:05:17
もし窓じゃないDOSならCONFIG.SYSをいじって下さい。

318:デフォルトの名無しさん
04/12/14 13:58:46



319:デフォルトの名無しさん
04/12/16 15:04:05
DOSってなんどす?

320:デフォルトの名無しさん
04/12/18 16:37:45
Turbo C + nasm + alink => 16bits DOS EXE
をしているのですが、どうもうまくいきません。

ASMからC関数はよべるのですが、
CからASM関数をよぶとエラーになってしまいます。

それから、Cから指定されたポインタはスタック内でどのようになっているのでしょうか。
たとえば、

mov ah,09h
mov dx,[bp] ;<-ここがよくわかんない
int 21h

というように、ASM側でどのように指定してよいかわかりません。

どなたか教えていただけませんか?

321:デフォルトの名無しさん
04/12/18 16:57:42
DOSで動作するMASMの6か5.1ってフリーになってないのかな。

322:デフォルトの名無しさん
04/12/18 17:37:39
セグメントディスクリプタを書いてないんじゃないかと E.S.P.

323:デフォルトの名無しさん
04/12/18 18:16:12
>>320
FAQ

勉強してから質問しれ

324:320
04/12/18 18:24:44
>321
MASM はサイズが大きすぎるので、ちょっと。。。

>322
せぐめんとでぃすくりぷたとは??

325:320
04/12/18 18:36:14
>323
質問の説明が悪かったですね。。


まず、ASM関数 _puts を用意します。
関数内では、
ah=09h
ds:dx=buffer
int 21h
を処理するようにします。

そして、Cからこの関数を呼び出したいとします。

セグメントが違う(僕の勘違いかもしれませんが)ので、
mov ah,09h
mov dx,[bp] ;[bp]=Cの引数
int 21h
とすると、ゴミが表示されます。


という内容でした。

326:デフォルトの名無しさん
04/12/18 19:13:05
>>325
引数は正しくわたされてるか
_pusは正しく動作するか
C側のオブジェクトは確保されているか

これらを確かめた上で

tcのローカル変数を処理したいのならば([bp]と書いてあるので)、スタック上に確保されている
よってDSで処理する_putsに適合させることはできない。(セグメントオーバーライドでも不可)
DS上の別領域にでもコピーする

ただし、small modelならばSS=DSなので問題は起きない






327:デフォルトの名無しさん
04/12/18 19:52:37
つーか、コンパイラにアセンブリ出力させてよく見ろ。

328:デフォルトの名無しさん
04/12/18 21:52:29
ACPIをDOSでコントロールしたいのですが、どこかにソースかライブラリが落ちていないですか?

329:デフォルトの名無しさん
04/12/18 22:38:48
俺はEPSONのPC386からぶっこぬいてきたフォントをTerminalの14ptに突っ込んで使ってるので
DOSの時代からWin95/98/2000を経てXPのコマンドプロンプトまで同じフォント。
ついでにLinux上のX-Winodwも一緒

330:デフォルトの名無しさん
04/12/18 22:53:51
日記は(ry

331:デフォルトの名無しさん
04/12/19 04:18:23
w

332:320
04/12/19 08:57:41
>327
引数の受け渡されているところが、なまなましく見ることができ理解できました。


ただ、C側のアドレスに関しては解決できません。

extern void putc( char c);/*ASM関数*/
char* ss="Hello World!\n$";
putc( *ss);/*表示されるのは,ゴミ*/

相性が悪いのでしょうか?



333:デフォルトの名無しさん
04/12/19 09:02:13
asm以前にCもわかってなさそうだな・・・・・

334:デフォルトの名無しさん
04/12/19 09:04:47
>>333
俺も全く同じ事を思った。

>>332
>相性が悪いのでしょうか?
プログラミングとあなたの相性が悪いせいかもしれない。

335:デフォルトの名無しさん
04/12/19 09:10:43
なんせ完全な解が出てるのに無視してる

336:320
04/12/19 09:29:04
ソースです。ご指摘、お願いします。

NASM -f obj start.nas
TCC -c main.c
ALINK start.obj main.obj -oEXE -o test.exe

;start.nas
segment .text USE16
extern _main

..start:
call _main
mov ax,4C00h
int 21h

global _putc
_putc:
push bp
mov bp,sp
add bp,4
push dx
mov ah,02h
mov dl,[ss:bp]
int 21h
pop dx
pop bp
ret

segment stack stack
resb 100h
stacktop:

337:320
04/12/19 09:29:34
/*main.c*/
extern void putc ( char c);
void main ( void)
{
char* test="Hello World!\n$";
putc( 'i');/*"i"表示*/
putc( *test);/*ゴミ表示*/
}

338:デフォルトの名無しさん
04/12/19 09:38:36
だからCの勉強をしなさいって。

339:デフォルトの名無しさん
04/12/19 09:41:24
"Hello World!\n$"
なんの意味があるんだ最後の$…

340:デフォルトの名無しさん
04/12/19 09:42:28
うーん・・・・まず2chの勉強が先かと・・・・・・・・
まずはsageと打鍵する練習

341:デフォルトの名無しさん
04/12/19 09:42:58
じゃなかった。この原因は。

Cの「スタートアップ」と呼ばれるものが何をしているか
もっとはっきり言えば、DS,ES,SSは誰がいつ設定しているのか、と。

342:デフォルトの名無しさん
04/12/19 09:44:54
それもCの勉強なんだがな

343:320
04/12/19 10:21:50
"Hello World!" のセグメントは、>326 の言ったとおり取得できないんでしょうか?

>341
スタートアップについてはよくわかりません。。
バイナリ初心者なもので。。

344:デフォルトの名無しさん
04/12/19 10:39:15
うひょひょひょ。
ヘルプ見ろ。
サンプル見ろ。
ヘルプ見ろ。
サンプル見ろ。
関数の使い方書いてあるだろ。
初心者はそれ真似することからはじめろよw

345:デフォルトの名無しさん
04/12/19 10:44:38

char* ss="Hello World!\n$";
putc2( *ss);

mov ah,09h
mov dx,[bp + 0]
mov ds,[bp + 2]
int 21h

としてみてください・・・

346:デフォルトの名無しさん
04/12/19 10:50:48

char[] ss={"Hello World!\n$"};
putc2(ss);

mov ah,09h
mov dx,[bp + 0]
mov ds,[bp + 2]
int 21h

としてみてください・・・

347:320
04/12/19 10:58:46
訂正です。
"Hello World!\n$" =訂正=> "Hello World!\r\n$"

>345
ASM関数
_puts:
push bp
mov bp,sp
add bp,4
push dx
push ds
mov ah,09h
mov dx,[bp + 0]
mov ds,[bp + 2]
int 21h
pop ds
pop dx
pop bp
ret

を追加した後、C側で puts( ss); としたところ、これもゴミが出てきます。。。

348:デフォルトの名無しさん
04/12/19 11:07:36
半可通が教えるクンして泥沼プ
またーりオチ

349:デフォルトの名無しさん
04/12/19 11:14:10
よくこんなんで、nasmとかalinkを使うよな。
トラブルが全く切り分けられないのに、標準以外のツールなんか使うなよ。


350:デフォルトの名無しさん
04/12/19 11:38:52
typoっぽいケアレスが気になるんだけど、何回も書いているから本当に理解してないのかも・・・・・・

351:デフォルトの名無しさん
04/12/19 12:34:28
しかし、ここの住人はキモイな
ここまで性根が腐ってるとは。。。
よっぽど現実社会じゃ、みじめでいじめられてるんだろうんなw

352:デフォルトの名無しさん
04/12/19 12:53:07
ASM関数
_puts:
mov bp,sp
push dx
push ds
mov ah,09h
mov dx,[bp + 2]
mov ds,[bp + 0]
int 21h
pop ds
pop dx
ret

としてみてください・・・


353:デフォルトの名無しさん
04/12/19 13:12:31
手取り足取り指導してる方がよっぽど醜悪
これがわからない内は引き篭もってろ

354:\________/        
04/12/19 14:10:09
       ∨
    / ̄ ̄ ̄ ̄\   
   (  人_____,,)
    |ミ/  ー◎-◎-)  ボクハ ホントウハ ツヨインダゾ・・・ブツブツ
   (6     (_ _) )    カタカタカタ
   | ∴ ノ  3 .ノ  ______
    ヽ、,,     __,ノ   |  | ̄ ̄\ \
   /       \.____|  |    | ̄ ̄|
  /  \___      |  |    |__|
  | \      |つ    |__|__/ /
  /     ̄ ̄  | ̄ ̄ ̄ ̄|  〔 ̄ ̄〕

355:デフォルトの名無しさん
04/12/19 14:17:57
>>351
絶妙な釣りと、釣りに気づきながら悪ノリしているこのスレの常連の構図だが。

356:デフォルトの名無しさん
04/12/19 14:30:58
過疎スレで釣りをする人間がいる訳ないし(ヒマな引き篭もりほど
そんな発想をするんだろが)、こんな過疎スレでいつもの構図も何もない。
悪ノリと言っても、みじめな自分の社会生活のウサ晴らしに
初学者をいびってるだけだろうが。
顔だけでなく精神まで腐ってちゃ救いようがないな。
全く内外ともに絵に描いた様なキモオタだな。
だから何時までもバカにされてみじめなんだよ。耳が痛いだろう。
アンタらは、もう一生救われないよ。


357:デフォルトの名無しさん
04/12/19 14:33:13
久しぶりの餌なんだから、もっとゆっくり食べようよ

358:デフォルトの名無しさん
04/12/19 14:38:33
魚が逃げちゃうよ。orz

359:デフォルトの名無しさん
04/12/19 14:48:02
初学者の割に、他人のアドバイスを聞く耳を持ってないようだがw
耳に心地良い(そして間違ってるwww)アドバイスについて逝くしwwwww

360:デフォルトの名無しさん
04/12/19 14:53:48
wを連打してるのが痛々しい  悔し泣きしてるのか?

361:デフォルトの名無しさん
04/12/19 21:45:00
他のasmスレに逝ってないようだし、本当に釣りだったかも

362:デフォルトの名無しさん
04/12/19 21:47:40
とりあえずメモリモデルについて調べろ、引数がstackにどう積まれるか、だな

363:デフォルトの名無しさん
04/12/19 22:10:00
何を逝っても無駄・・・・・誰の話もきいちゃいなかったし・・・・・・・・

364:デフォルトの名無しさん
04/12/19 22:57:13
だーかーらー、釣りだってばよ。

365:デフォルトの名無しさん
04/12/20 00:52:20
こんなリアルっぽい釣りがあるかよ

366:デフォルトの名無しさん
04/12/20 12:54:55
リアルっぽいからこそ釣れるんだろ。

367:デフォルトの名無しさん
04/12/20 13:34:37
おまいらピラニアかよ

368:デフォルトの名無しさん
04/12/20 14:29:30
本物はどこかふざけてるんだよ。
今回はそれがない。

369:デフォルトの名無しさん
04/12/20 16:47:10
( ´・_・`)320タン、ちゃんとCの勉強してるかなー

370:320
04/12/21 00:30:55
すいません。レス遅くなっちゃいました。。

なかなかうまくいかないので、最初からまた調べ直そうと思います。
教えてくれたみなさん、わざわざありがとうございました。

またつまずいたら、ずうずうしいながら質問させて頂きます。
その時は、もう少し高度な話題ができたらなと思います。

(マジレスでした。。。)

371:デフォルトの名無しさん
04/12/21 01:04:57
もう一度だけまじめに書くけど、>>337がうまく動かないのは、
コンパイラは文字列リテラル "Hello ..."がDGROUPのセグメントにあると仮定したコードを吐いているのに
DSが別の領域を指しているため、全然別のデータを読んでいるから。
DSを設定するのはスタートアップ(TCCならc0x.obj)で、
コンパイラがリンカを呼び出すときに、これをリンクしている。

とりあえず、アセンブラコード内でcall _mainするのをやめて
単にCのソースにアセンブラの関数をリンクして動かしてみ。

372:Help
04/12/21 01:36:21
どなたかご存知でしたら教えてください。
C#で作成したDLLからVB6へイベントを通知する方法を
ご存知でしたら教えてください。
VB6は、C#記述のInterfaceをサポートしていないので
デリゲートでイベント通知がうまく出来ません。
お願いします。

373:320
04/12/21 01:44:46
>371
その方法は何度かためしたのですが、
Error: Fixup overflow in module main.c at _TEXT:000E, target = _putc
という感じで、リンクが出来ませんでした。。

374:デフォルトの名無しさん
04/12/21 01:56:07
じゃあ、コンパイラの出力を参考にセグメント指定をしなさい。
_TEXT segment byte public 'CODE'
みたいな奴。(byteかwordか忘れた)

そして、_putcを
_TEXT segment
  assume cs:_TEXT
_putc proc
  ...
_TEXT ends
と書く。
データ領域があったら、DGROUPも設定する。
うろ覚えのまま書いてるから、正確にはコンパイラの出力をコピーするように。

もし、asm側から_mainを呼ぶなら、call _mainの前にDSを設定する。
もちろん、呼び出す所はassume cs:_TEXTとされた_TEXTセグメントの中。

375:デフォルトの名無しさん
04/12/21 04:21:10
なんでも教えりゃわかるってもんじゃないんだよ

376:デフォルトの名無しさん
04/12/21 08:53:39
INT28

377:デフォルトの名無しさん
04/12/22 03:07:11
INT 1B

378:デフォルトの名無しさん
04/12/22 19:33:56
>>377
clc/stc/cmc

379:kai
04/12/27 00:44:06
dos用に作られたCプログラムをwindows上で動かすことはできないのですか?

380:デフォルトの名無しさん
04/12/27 00:46:59
>>379
自分で試せよ。

381:デフォルトの名無しさん
04/12/27 13:49:21
基本的に動く。ただしNECのPC98のハードウェア、BIOSに依存したものは動かない。
その場合98エミュレータ上では動く。

382:デフォルトの名無しさん
04/12/28 21:52:20
餌がコネェ

383:デフォルトの名無しさん
05/01/17 00:57:24
CGの技術・性能が向上していく一方で、テキストだけ、あるいはラインアートな絵といった
ゲームにも大きな魅力を感じている人間がここにいる。
ミステリーハウスとかZorkとかNethackとか。どういうわけだか好きなんだ。
かといって派手な演出が嫌いというわけでもないんだが、とにかく
今もDOSでプログラミングとかしている人は尊敬するわけです。
がんばってくださいありがとう保守。

384:デフォルトの名無しさん
05/01/19 00:32:50
DOSはもう流行ることもないんだろうけど
消えることもないんだろうナ‥
せっかく書くんだ 一番好きなOSで動かすのが当然だろう

385:デフォルトの名無しさん
05/01/27 10:57:57
TurboC++1.01を使ってるんですが286までしか扱ってくれないので
386レジスタを使おうとしてもコンパイルエラーが出ます
なんとかできませんか
アセンブラは386対応のものを使ってます

int main()
{
 asm{
  mov eax,0  ; eaxって何?って言われる
 };
 return 0;
}


386:デフォルトの名無しさん
05/01/27 10:59:41
>>385
何故eaxを使いたいのか聞かせてくれ

387:デフォルトの名無しさん
05/01/27 11:04:44
前に 66h 埋め込んでおけばいいんじゃねーの?
TC++でどうやるかは知らんが。(emitか?)

388:デフォルトの名無しさん
05/01/27 11:22:02
>>386
386で動かすプログラムだからeax使った方が効率いいからです

>>387
コンパイラが286時代のものなのでそもそもeaxレジスタは存在していなく
未定義の識別子扱いをしてパースしてくれないんです


389:デフォルトの名無しさん
05/01/27 11:24:16
go WATCOM with DOS-extender to get the 32bit-full-power!

390:デフォルトの名無しさん
05/01/27 11:41:55
>>388
だから、mov eax,0の代わりに、mov ax,0にしてその前に66hを埋め込むってこと。

391:デフォルトの名無しさん
05/01/27 12:00:07
こうですか…
mov eax,0
db 66h
なんと言うか可読性がすごいことになりそうですね…


392:デフォルトの名無しさん
05/01/27 12:01:41
>>391
ホームラン級の馬鹿だな

393:デフォルトの名無しさん
05/01/27 12:07:45
ワロタ

394:デフォルトの名無しさん
05/01/27 12:12:49
その程度の認識で効率がどうのこうの言うのは背伸びしすぎ

395:デフォルトの名無しさん
05/01/27 12:13:21
素直にアセンブラ使えばいいのに。タボシなんか捨てて。

396:デフォルトの名無しさん
05/01/27 17:50:51
いや、TurboC/C++は、アセンブラコードは処理できないよ。
外部のアセンブラに渡すだけ。

ていうかね、.286とか.386cって書いているの見たこと内科医?
どっか先頭の方、適当なところに入れて桶

397:デフォルトの名無しさん
05/01/28 13:19:16
PC/AT互換機用のTCなら、ボーランドのFTPサーバーから
自由にダウンロードできるようですが・・・
違ってたらスマソ

398:デフォルトの名無しさん
05/01/28 13:30:28
FTPは知らんが、HTTPなら。
URLリンク(community.borland.com)

399:デフォルトの名無しさん
05/01/30 23:36:17
BCC使ってるんですけど、

system("set /P A=\"[Y/N] \"");
system("echo \%A\%");

とやると「%A%」と表示されてしまいます。
どうしたら良いのでしょうか?
ご指導くださいませ。

400:デフォルトの名無しさん
05/01/30 23:59:03
>>399
Borland C++ の16bit版?
ていうかDOSでは set /P は使えないだろ。


>system("set /P A=\"[Y/N] \"");
>system("echo \%A\%");

system() 関数は呼び出す毎に別の環境になるので
最初の行で環境変数 A を設定しても
その値は次の行には引き継がれない。

system("set /P A=\"[Y/N] \" && echo \%A\%");
とするか、バッチファイル作って呼び出せ。

401:デフォルトの名無しさん
05/01/31 03:06:39
system("echo %A%");

402:デフォルトの名無しさん
05/02/07 03:02:15
バッチファイル以外で %環境変数% が使えるようになったのはWin95付属のDOS7.0以降だな。

403:デフォルトの名無しさん
int 2ch =05/04/02(土) 07:57:13
URLリンク(www.256b.com)
URLリンク(www.256b.com)

404:たかのぶ
05/05/09 21:58:11
こんなん叩いたら↓
if not exist z: net use z: \\Server01\e$ PPPPP /user:XXXXXX
こんなもんがでたYO↓
z: は \\Server01\e$との接続を記憶しています。
記憶している接続に上書きしますか?(Y/N)
藻前ら分かる香具師はいますか

405:デフォルトの名無しさん
05/05/11 05:51:11
command.comは気が狂いだすから持ち出すのやめてくれ

406:デフォルトの名無しさん
05/05/11 16:01:09
うはwwwwwcommand.comおwwww
いいけつしとるのぉwwwwおkwwww

407:デフォルトの名無しさん
05/06/18 23:11:50
初心者です。突然すいません。急いでいるもので。
○○.EXEというDOSプログラムの中身を見るのはどうしたらよいのですか?

408:デフォルトの名無しさん
05/06/18 23:15:13
バイナリエディタで開け

409:デフォルトの名無しさん
05/06/18 23:16:02
>>407

d>debug ○○.EXE

410:デフォルトの名無しさん
05/06/18 23:20:00
ありがとう。
定番バイナリエディタってどれです?
(409は難しそう)


411:デフォルトの名無しさん
05/06/18 23:33:43
16進でみたいだけならviでもhidemaruでもMifes(綴分からん)でもいいけど。

中味を見るというのがよく分からん。
ひょっとしてexeからソースを復元したいの?

412:デフォルトの名無しさん
05/06/18 23:36:22
はげまるって、 まだDOS版売ってるの?


413:デフォルトの名無しさん
05/06/18 23:53:04
>>411
難しいことはよく分かりません。
とりあえず「Stirling」ってやつVectorで定番って書いてあったからそれで開いてみた。


4D 5A 20 01 6C 00 74 00 20 00 C4 09 FF FF 52 0D  MZ .l.t. .ト...R.
 ↓
 ↓
 ↓
延々と続いてる


初めて見ました。(初心者です)
右のほうは何なんですかね?文字化けしてるのかな?

DOSプログラムでNotePCのバッテリー情報を確認できるツールが有るんだけれど
機種によって使えたり使えなかったりするので、どこかを変えれば何とかなるのかなって思って…

だけどこの数字の羅列の意味はよく分からないな…


414:デフォルトの名無しさん
05/06/18 23:53:10
dos限定だったのか。
エスパーな会話しちゃったw



415:デフォルトの名無しさん
05/06/19 00:02:25
>>413
それがプログラム
左が16進数で、右がテキストエディタで開いたときのものと思え

ってか、お前がバイナリエディタで開いたバイナリは
改編を認めてるのか?
ライセンス違反だぞ

416:デフォルトの名無しさん
05/06/19 00:03:48
このスレッドの名は
DOSでプログラミング
"で"なんだから、DOSを使うのが前提でしょ?
コマンドプロンプトではなくDOS
ずっと俺はそう思ってたけど

417:デフォルトの名無しさん
05/06/19 00:10:55
>>416
winに付属しているコマンドプロンプトしか頭になかった。
正直すまんかった。

(そういや、伯父もいまだにPC98FAつかっているしな)


418:デフォルトの名無しさん
05/06/19 00:15:22
>>413
どんなプログラムか知らんがその機種にあったものを探した方が早いと思うぞ。
素人がぱっと見ただけでパッチを当てられるようなもんじゃない。

419:デフォルトの名無しさん
05/06/19 08:21:05
DOS始めるには何からやればいいの?

420:デフォルトの名無しさん
05/06/19 08:39:23
あきらめる

421:デフォルトの名無しさん
05/06/19 11:46:26
>>419
DOSのインストール

422:デフォルトの名無しさん
05/06/19 19:41:31
>>421
DOSのインストールって何
もともとあるんじゃないの?どこにあるの?


423:デフォルトの名無しさん
05/06/19 19:49:03
>>422
DOSだって昔は単独で販売されていたんだからインストーラだって存在していた。

424:デフォルトの名無しさん
05/06/19 20:15:09
>>422
WinNT系にはDOSは入っていない。

今DOS単体が手に入るのかどうかは不明。
やりたいんならWin9x系OSをインストールするとかかな

425:デフォルトの名無しさん
05/06/19 20:50:01
DR DOSでも使えばいい

426:デフォルトの名無しさん
05/06/19 21:11:03
Windows 2k/XPでもDOS起動ディスクは作れないわけではない。
URLリンク(homepage2.nifty.com)
URLリンク(homepage2.nifty.com)


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch