[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 05/09 08:39 / Filesize : 220 KB / Number-of Response : 953
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

DOSでプログラミング



1 名前:デフォルトの名無しさん [03/03/07 10:45]
ハードウェアを直接叩くのはやっぱり楽しい!

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


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

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

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

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

51 名前:山崎渉 mailto:(^^) [03/04/17 15:29]
(^^)

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

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

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

cd %0%../

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

54 名前:デフォルトの名無しさん mailto:sage [03/04/24 07:35]
>>53
バッチファイルプログラミング質問スレ
pc2.2ch.net/test/read.cgi/tech/1040614686/

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


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



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

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

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

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

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

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

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

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

65 名前:デフォルトの名無しさん mailto:sage [03/05/15 17:44]
rd.vector.co.jp/soft/dl/dos/hardware/se003206.html
↑あんま、参考にならないかな?

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




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

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

69 名前:デフォルトの名無しさん [03/05/16 13:24]
>>67
dos.zive.net:200/www.htm

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

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

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

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

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

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

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

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



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

78 名前:山崎渉 mailto:(^^) [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 名前:デフォルトの名無しさん mailto:sage [03/06/01 02:15]
>>73
DOSでも32bit命令は普通に使えるが?

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

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



87 名前:デフォルトの名無しさん mailto:sage [03/06/12 01:05]


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

90 名前:デフォルトの名無しさん mailto:sage [03/06/17 23:49]


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

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

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

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

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

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

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

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




97 名前:_ mailto:sage [03/06/19 16:59]
homepage.mac.com/hiroyuki44/

98 名前:デフォルトの名無しさん mailto:sage [03/06/19 17:38]
>>96
必死だな(ワラ

99 名前:デフォルトの名無しさん [03/06/19 17:45]
>>98晒しあげ

100 名前:_ mailto:sage [03/06/19 18:10]
homepage.mac.com/hiroyuki44/

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 名前:デフォルトの名無しさん mailto:sage [03/06/19 19:42]
>>96

キーデータの読み出し

割り込み INT 18H
入力 AH <- 00H
出力 AX <- キーコードデータ (AH <- キーコード、 AL <- キーデータ)

103 名前:96 mailto:sage [03/06/19 23:21]
>>102
ありがとうございます。

その後、int18 ではなく int 18 と検索ワードを書いたところ
ネットから情報を得ることができました。
不用意な書き込みにレス頂き感謝します。

また、頂いた「キーコードデータの割り込み」を用いて検索を
行いましたところより詳細なページも見つけられました。
ありがとうございました。

104 名前:山崎 渉 mailto:(^^) [03/07/15 15:12]

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄

105 名前:山崎 渉 mailto:(^^)sage [03/08/02 02:41]
(^^)

106 名前:山崎 渉 mailto:(^^) [03/08/15 17:25]
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン



107 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [03/09/27 13:49]
>>107
当時のBorlandのIBM PC向け製品は98ではコンパイラが動かないのです。
IBM PCに依存するコードが含まれているのでしょう。

生成されたバイナリはIBM PCに依存するライブラリを使用していなければ98でも動きます。

109 名前:デフォルトの名無しさん mailto:sage [03/09/27 20:23]
確かスタートアップでどっかの割り込みベクタを保存してて
それがIBM PC固有で98だと不都合が出たと聞いたような。
コンパイラもそのコードを使ってるから。

パッチ当てれば動くようになったらしい。

110 名前:デフォルトの名無しさん mailto:sage [03/09/28 01:48]
>108
コンパイラ自体が動かないんだ。
むかし、IBMのTurboC1.5環境版を98で動かすパッチがあったような。
2.0で98版が出たからね。

111 名前:デフォルトの名無しさん mailto:sage [03/09/28 01:59]
Turbo Visionってまだあったんですね。Win32やUnixでもあるとは。

112 名前:デフォルトの名無しさん mailto:sage [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です
ttp://community.borland.com/museum/

「質問」
ソースをみると、機種選択をするようになっています。

引用
#define IBM_PC
#define PC_98
#define PC_98_V2

これはIBM_PCを選択しコンパイルすれば、目的が適うでしょうか?
宜しくお願いします。

長文失礼しました。



113 名前:デフォルトの名無しさん mailto:sage [03/10/05 19:32]
OK

114 名前:デフォルトの名無しさん mailto:sage [03/10/05 19:35]
640x400てのが若干気になるけど、98やJ3100にあわせたんだろう。
たぶん下80行が使われないだけかな。

あと、コマンドプロンプトで実行して見栄えが悪かったら
ALT+Enterでフルスクリーン表示にするといいかも。

115 名前:112 mailto:sage [03/10/05 19:56]
>113,114
ありがとう。

では、やってみます。
また質問がでたら、宜しくお願いします。

以上です。

116 名前:112 mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [03/10/09 18:47]
>>116
"b:\\graph"は .BGI のあるディレクトリに変えた方が良いような気がする。

118 名前:112 mailto:sage [03/10/09 19:15]
>117
レスありがとう。

やっぱり変えたほうがいいですよね。
なんか、気持ち悪いし、、、、。

また、すすみ次第、報告します。

119 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [03/10/12 13:15]
マニュアルがあるならバッチリですな(w
BGIはOBJに変換してリンクすると楽かも。

122 名前:112 mailto:sage [03/10/12 20:00]
>121さんへ。

いや〜、こないだ、たまたま、ヤフオクで
ナツメ社から出ている
TURBO C++ コンパイラ・マニュアル
をゲットしたのですよ。100円でした。
運が良かったです。

ところで、
>BGIはOBJに変換してリンクすると楽かも。
は、どういうことですか?

すみませんが、教えてください。
宜しくお願いします。

123 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [03/10/13 18:33]
objもlibも似たようなもんじゃないのとか思った。複数のobjまとめられるとか。そんなん?

126 名前:デフォルトの名無しさん mailto:sage [03/10/13 18:41]
>>124
> ちょっと、質問の続きなのですが、後半の
> >initgraphのモードをDETECTにしておくと
> >EGAなどグラフィックアダプタに合わせてロードしてくれるんで便利ですが、
> >今時は解像度の高いのをリンクしておけば済むような気もするしね(w
> が、判らないです。

ヘルプか参考書でregisterbgidriverを調べれ。

BGIファイルをOBJファイルにしてそしてリンクすることにより、
EXEファイル内にBGIファイルの内容を埋め込むことができる。

すると人様にソフトを配布する時にBGIファイルを添付する必要が無く
EXEファイルだけで済む。ちょっとカコイイ。という話。

まあ、見栄えの問題だけだから、面倒なら気にしなくてもいい。

ところで、目的のシミュレーションプログラムはどうだったんだろうか?
プログラムに日本語文字が使われているとコンパイラを通らない
可能性もあるが。



127 名前:121 mailto:sage [03/10/13 21:00]
>126
なるほど、、、有難う御座います。

目的のシミュレーションは、まだ打ち込み中です。
日本語表記はないので、大丈夫かと思います。

もう1週間もかかっている、、、。
あさってまでには完成します。



128 名前:デフォルトの名無しさん mailto:sage [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 mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [03/10/14 23:12]
>gccはよくしらんのですが、-lmとすると、libm.so(だっけ?)とかがあると
>すれば、それはDOSのlibに相当します。

いいえ、DLL相当です。

131 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [03/10/17 23:01]
>>131
?


133 名前:デフォルトの名無しさん mailto:sage [03/10/18 17:01]
>132
何が? かな?

134 名前:デフォルトの名無しさん mailto:sage [03/10/31 23:38]
DOSでPCIバスのボードを複数枚制御する際、同じ割り込みを割り振られた場合
どのボードで割り込みが掛かったと判断するにはどうしたら良いですか?

135 名前:デフォルトの名無しさん mailto:sage [03/11/01 17:56]
>>134
>>134

INTを見る


136 名前:デフォルトの名無しさん mailto:sage [03/11/07 20:29]
>>134
各ボードのステータスを順繰りにチェックするしかないだす。



137 名前:デフォルトの名無しさん mailto:sage [03/11/12 20:30]
>>135-136
どうもです。なんとかやってみます。


138 名前:デフォルトの名無しさん mailto:sage [04/01/13 11:58]
ちょっくらDOS環境でプログラミングしようと思って,
www.borland.co.jp/bcsuite/
を買ったのですが,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 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [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は
ebisa.hp.infoseek.co.jp/bochs/index.shtml
のbochs-2.1.pre3-jpfix-20040103-win32.zip です。
どっちにしてもひまみつけて実機で試してみますぅ。

141 名前:デフォルトの名無しさん mailto:sage [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 mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [04/01/23 21:44]
>144
その1とその2の合わせ技でしょう。

146 名前:141 mailto:sage [04/01/24 02:48]
>>145
その場合,リンカオプションをいじらずに,ソース上に全部の情報が載るわけですな。



147 名前:デフォルトの名無しさん mailto:sage [04/01/24 17:22]
なるほど、構造体をかぶせるのが一番ですね。


148 名前:141 mailto:sage [04/01/24 18:59]
構造体にかぶせるのを,アドレス指定(つまりポインタ)で書くと,
foo1->register[REGNO_CHANNEL1] = 1;
とかになって,「->」がうざいというシトがおられます。
構造体の配置自体をリンク時に指定してやれば,
foo1 . register[REGNO_CHANNEL1] = 1;
と書けるのです。C++でなら,参照を使って,
board_foo &foo2=*foo1;
とか書けるといいんですが,そうは問屋がおろさないようです。
組み込み系の処理系(PL/M,古いintelC)ではかなり太古から変数の配置アドレスをソース上で
操作できるのが普通だと思うのですが,gccとか今風の処理系でもできるんですかね。
そういうの使わないととんでもなく書きにくいと思うのは,頭が古いんでしょうか。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<220KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef