1 名前:デフォルトの名無しさん [03/03/07 10:45] ハードウェアを直接叩くのはやっぱり楽しい! DOSにおける開発について語りましょう。
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] w
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とか今風の処理系でもできるんですかね。 そういうの使わないととんでもなく書きにくいと思うのは,頭が古いんでしょうか。
149 名前:デフォルトの名無しさん mailto:sage [04/01/24 19:13] >>148 >とかになって,「->」がうざいというシトがおられます。 刺して下さい。
150 名前:141 mailto:sage [04/01/24 22:32] ->->->->-> ;y=ー( ゚д゚)・∵. ターン ->演算子で刺しておきました。
151 名前:デフォルトの名無しさん mailto:sage [04/01/24 22:47] >>150 噂の演算子オーバーロードですね。
152 名前:143 mailto:sage [04/01/25 00:37] おや、レスが来てた いや、当時は全部アセンブラで書いていたから・・・ DSをa800hに変更して直書きしてたから意味合いで言えば、 その2に近いのかな?どちらにしても10年以上前の話だからなぁ
153 名前:141 mailto:sage [04/01/25 12:12] >>152 >いや、当時は全部アセンブラで書いていたから・・・ (MASMの)アセンブラの構造体こそ望ましいものです。アドレスを指定して, 構造体メンバにアクセスできて「->」をうざがって刺されることもないです。
154 名前:デフォルトの名無しさん mailto:sage [04/01/25 12:30]
155 名前:デフォルトの名無しさん mailto:sage [04/01/26 01:16] >148 PLMとは懐かしい。今でも昔のサポートで使うことありますが(w gccでも直アドレス指定出来ますよ。 まあOSによっては、やっても怒られるだけですが(w
156 名前:141 mailto:sage [04/01/27 10:39] >>155 >gccでも直アドレス指定出来ますよ。 直アドレスを char *base_adr= 0xd0000; とできるのは当たり前で,お伺いしたかったのは struct board_foo; として作ったものを0xd0000に配置するような機能のことです。ほんとうにできますか。 >まあOSによっては、やっても怒られるだけですが(w WindowsNT系でもOS標準でできるんで困りませんし,タイミングが10msec以上の 比較的シビアなものではリアルタイム拡張製品などを使うので問題ありません。 それにタイミングが絡んでくると,OSなんかの機能よりも「作り方・書き方」の方が大事だと思います。 特殊なハードのラッチ信号をPCからポチポチ制御するような困ったちゃんシステムとか。
157 名前:デフォルトの名無しさん mailto:sage [04/01/28 00:01] >156 あれま(構造体)変数などの絶対番地ロケートでしたか。 gccで開発するCPUでROM化などしたことがないのでわかりませ〜〜ん(^^; わざわざ実体を重ねなくても、構造体へのポインタで良いような 気がしますけどね。処理系の環境に依存させるのがいやですから。 怒られるはメモリアクセス例外などが出るだったんですが。 タイミングですか、OSの機能というより挙動を知ってないと いけない、じゃないですかね。何がWinNT系のOS標準で出来る だかわかりませんが、WinNT系でもリアルタイム拡張があれば 時間の保証が得られるらしいですね。
158 名前:デフォルトの名無しさん mailto:sage [04/01/28 04:20] 昔は知識不足その他で果たせなかった事を何となくしてみたくなって、 使わなくなってた古い9821にdjgppをインストールしました。 今更ですが、Undocumentedな機能(PEGCとか)を使ってみたり、 直書きや割り込み、DPMI等で遊んでます。 …何で今更はまるんでしょう(笑) 結局、DOSは嫌いじゃないんだよなあと再確認しますた。
159 名前:デフォルトの名無しさん mailto:sage [04/01/28 14:02] >>156 > struct board_foo; > として作ったものを0xd0000に配置するような機能のことです。ほんとうにできますか。 mapped I/Oなら #define foo1 (*(struct board_foo *)0xd0000) じゃダメなん?
160 名前:141 mailto:sage [04/01/30 12:50] >>159 >#define foo1 (*(struct board_foo *)0xd0000) おお。新パターンです。ありがとうございます。 #defineだとデバッガが・・・ゲホゲホ ちなみにこれは,実際にお使いですか?
161 名前:デフォルトの名無しさん mailto:sage [04/01/30 15:53] mapped I/Oでドライバ書いたことはないけど、DOSでは使ったな。
162 名前:デフォルトの名無しさん mailto:sage [04/01/31 09:23] >>161 VRAMの位置とか?
163 名前:デフォルトの名無しさん mailto:sage [04/01/31 23:49] 質問させてください。キーイン待ちして、何秒後かにタイムアウトする ようなプログラムは作れるでしょうか? キーイン待ちのときに割り込み28hが呼ばれるようになっていても、 この中からいきなりキー入力処理の後にジャンプなんてできそうに ないと思うし(安全とは思えないので)。なんか手ってないもんでしょうかね?
164 名前:デフォルトの名無しさん mailto:sage [04/01/31 23:51] >>163 while(kbhit()){ if(time >= basetime + 1000){ timeoutflag = 1; break; } }
165 名前:163 mailto:sage [04/02/01 00:04] >>164 ありがとうございます。 そうですね、この方法がありますね。一点気になるのがCPUを喰いすぎる かなと思うところです。(シングルタスクなので実際上の問題は無いと思い ますが。。)
166 名前:デフォルトの名無しさん mailto:sage [04/02/01 21:07] >> 163 割り込み28hの中でフラグ立てるようにして, キー入力待ちする側でタイムアウトをカウントしながら そのフラグを監視すればよいと思います。 もちろんそのフラグは利用側で事前・事後にクリアしてやらないといけません。 >> 165 > 一点気になるのがCPUを喰いすぎる ?CPUを食わないようになんてできませんよ。CPUは常に100%フル回転です。 nop連続にした方がバスへのアクセスも減って,動作しない内部ロジックが増えて 発熱・消費電力を抑えられるとか,そういう趣旨なんですかね。 それとも省電力対応CPUのお話ですか。
167 名前:デフォルトの名無しさん mailto:sage [04/02/01 21:33] ビジーループってこったろ