1 :
デフォルトの名無しさん :
03/03/07 10:45 ハードウェアを直接叩くのはやっぱり楽しい! DOSにおける開発について語りましょう。
というわけで、立ててみました。 現在、PC-9821用のグラフィックライブラリを作っています。 将来的には、Quakeとか移植できたらいいな、と思ってます。
6 :
おぼーん&rlo;んーぼお&rlo; :03/03/07 14:25
おぼーん
メモリモデルとかがいまいち理解できてないんですけど教えてもらえますか? near 1セグメントのみ far セグメントをまたいでアクセスが可能 とか。
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
>>9 grplib.cの107行目、
#pragma inline
をコメントアウトすればtasmなしでコンパイルできる。
しかし、ヘッダもついてないのね(汗)
情報 求む 昔 昔の クイックC2 のAT版所持者 nec98ならあるが 今わ動かない そこで AT版なら動く可能性がある マイクロソフトのQuickC Ver2.0
∧_∧ ( ´∀`)< ぬるぽ
| | ガッ
( ・∀・) | |
と ) | |
Y /ノ
/ ) .人
_/し' < >_Λ∩
(_フ彡 V`Д´)/
/ ←
>>12
>>11 PC/AT版って、日本語版はないんじゃないかな?
J-3100の英語モード用に英語版が販売されていたような。
>>5 を見てこのスレには何の価値もないと思った。
>>1 よ、もはやメモリモデルを気にしたり、
ソフトウェアでグラフィックを高速化したりする時代は終わったのだ。
俺と一緒にDirectX9を勉強しようじゃないか。
>>10 レスありがとう。
でも、インライン命令使わないと遅いってことはないですか?
ま、動けばいいんですけどね。
関係ないけど、DX4でも整数sqrtは実数sqrtの3倍遅かったです。
QCではなくVC1.5を使えば?
デモソース動きました。
でも、コメントに書いてあったとおり、フォントは読み出せなかったようで、
グラフィック文字出力はダメでした。
>>15 DOSプログラミングには箱庭的楽しみがありまふ。
つーか、意味ないよな >将来的には、Quakeとか移植できたらいいな、と思ってます。 ハードの性能的に無理でしょ。
22 :
デフォルトの名無しさん :03/03/09 21:55
>>11 2.0だったか2.5だったか持ってたはずだが・・・
ちょっと探したけど見つからない。
「情報」とはどのような?
この板だとすぐ落ちそうな気がするんですが、それはさておいて。
なんつー面白そうなスレ立ててんだ
>>1 よ。じっくりヲチさせてもらうぞ。
今のパソコン セレロン300で メモリー128 HD 6G のパソコンで動かす 業務の異動 NEC98からATタイプに ソースはあるから コンパイルしなおしたら 動くかの判定 パソコン本体は 別にして 数万円で構築できるメリット
>>18 パックドピクセルのMCGAモードなんか、
他人のよくわからんライブラリ使うまでもないだろ。
自分で書け
いまからだとハード周りの書籍を探すのがなかなか困難だ 流行らせてから秘蔵の書籍をヤフオク辺りに出品してぼったくりたい
27 :
デフォルトの名無しさん :03/03/10 11:12
28 :
デフォルトの名無しさん :03/03/10 11:13
>>18 フォントは、BIOS使って読み出すよりも、
ビットマップフォントを用意した方が早いんじゃ?(手間的にも速度的にも)
速度云々言う奴の頭には、BIOSから読み出したフォントを キャッシュするという考えが無いのだろうか? DOSからWindowsに環境が変わっても同じようなことを言う奴がいる GDIのテキスト出力が遅いという理由でビットマップで フォントを作っておくとか言い出す馬鹿者と同レベル
DOSでぬるぽ
>>30 NULL pointer assignmentは何回か出したことあるよ。QuickCで。
DOSダロウトナンダロウト
( ・∀・) | | ガッ
と ) | |
Y /ノ 人
/ ) < >__Λ∩
_/し' //. V`Д´)/
(_フ彡 / ←
>>30
保守
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の日本語版なんて出回ったのでしょうか? 思い出したら気になりだしたんで…
せめてDOS Extender使うとか。 64KB境界気にしつつやってられねーよ。
DOS/Vの最初は4.xだったはず
(DOSじゃなくWin9x向けなのですが) 上司の無茶な思い付きにより FATとFAT32用のデフラグツールを 独自実装する羽目になりそうです。 Googleで探しても、この辺の資料って少なくて 困ってます(デフラグ製品ばっかり引っかかって、 実装方法やらアルゴリズムに関する資料は なかなか見つからない・・・) この辺の勉強にいいページとか本とか 教えていただけないでしょうか? 当方のレベルは、ユーザモードで動く C/C++/Javaアプリケーションなら だいたいどんなものでも書ける程度です。 (が、ハードを直接たたくような コードは書いたことがありません。)
>>37 > (DOSじゃなくWin9x向けなのですが)
> 上司の無茶な思い付きにより
> FATとFAT32用のデフラグツールを
> 独自実装する羽目になりそうです。
今更そんなのを新たに作っても売れんよ?
39 :
デファクトのスタンダードさん :03/04/11 19:42
>36 ソリはAXでは?
>>37 > この辺の勉強にいいページとか本とか
あんまり役に立たないレスですが、そーゆーのってハード系
(CQ出版のインタフェースとか)を当たると何か役に立つんじゃ
ないでしょうか。あとATAやSCSI関連の仕様の中にポロッと出て
きそうです。
42 :
デフォルトの名無しさん :03/04/11 21:53
>>37 >当方のレベルは、ユーザモードで動く
>C/C++/Javaアプリケーションなら
>だいたいどんなものでも書ける程度です。
ならば、ハードを直接叩くコードを
自動生成するプログラムを作れるだろ?
>>42 自動生成するプログラムが生成した「ハードを直接叩くコード」は
人間が書くんだよ。
今現在何もないところからコードを作り出せるプログラムがあると思ってるの?
44 :
デフォルトの名無しさん :03/04/12 08:00
>>43 ・「コードを自動生成するプログラム」というものは存在し得る。
・「コードを自動生成するプログラム」はユーザーモードで動かす事が可能である、
・
>>37 は「ユーザモードで動くアプリケーションならだいたいどんなものでも書ける」
ならば、
>>37 はハードを直接叩くコードを自動生成するプログラムを作れる
簡単な理屈だろ。
俺は今まで「ユーザモードで動くアプリケーションならだいたいどんなものでも書ける」
なんてトンデモな事を言いきれる奴を見た事が無かったので言ってみただけ。
copy a: b: del a:
95発売以前は、ウイルス作りにマジ燃えたな。 いわゆるステルス型とかいろいろ作った。 俺を裏切った香具師に、それ仕込んだゲームソフトをあげて悦に浸ったりしたな〜。
48 :
デフォルトの名無しさん :03/04/12 18:58
DOS/VのDMAの使い方を日本語で解説しているページってないですか?
>>48 以前,ちょこっと勉強したけど日本語資料はあんまりなかった気がする.
CQ出版の本とLinuxのソース,あとはIntelからDMAコントローラの資料ダウンロードして
IDEのDMA転送は一応可能になったよ.
ぬるい情報で申し訳ない.
>>48 DOS/V(MS-DOS/IBM PC-DOSの日本語版)にDMAはついてないわけだが。
PC-AT互換機のハードウェアDMAの使い方は古い本にしか出てないし、
今さら勉強する価値があるとも思えない。
(^^)
保守
53 :
デフォルトの名無しさん :03/04/24 00:47
質問させてください。 バッチファイルを作って、それにD&Dして、バッチファイルと同じディレクトリにおいてる スクリプトを呼び出して処理しようとしてるのですが・・・ カレントディレクトリの移動に失敗してしまいます。 バッチファイル内で・・・ cd %0%../ こんな事してるんですが、移動できません。 バッチがおいてあるディレクトリへ移動する良い方法はありませんか?
>>53 右クリック→プロパティ→プログラム→作業ディレクトリ
は駄目か?
>46 95以前はHDDを初期化したとしても大した被害はないよ。
DOS画面の指定した2つの行でだけスクロールするCONドライバを 作りたいんですが、元になるソースとか情報とかありませんか?
98ならFCONあたりは?
IBM/AT or IBM/XTなんです。
じゃあ、NNANSIとか
どうも。 今PCが手元にないんで、あとで探してみます。
どうやってアクセスしてるんだ。携帯か?
DOSマシーン。これもPCだった。
NNANSIありました。286以上用だったんで、TASM1.0で再アセンブル したが上手く出来ないみたい。残念ながらスクロール範囲指定エス ケープはありませんでしたが、十二分に参考になりました。どうも。
関係ないけどTASMのバージョン非互換には萎える。 ま、cmacros.incもやめてほしいんだけど。(w
67 :
デフォルトの名無しさん :03/05/16 13:03
DOSで動くHTTPサーバ無いでしか?
DOSの上でwin.comを動かせば、結構あると思う。
69 :
デフォルトの名無しさん :03/05/16 13:24
thanx!
>>68-69 みたけど本物???
ソース2000行くらいしか無いけど...
>ハードウェアを直接叩くのはやっぱり楽しい! やっぱりストレスがたまっているときはこれだよね
72 :
デフォルトの名無しさん :03/05/25 14:32
dosだとcpuの計算時間ってどうやって表示させるんですか?
73 :
デフォルトの名無しさん :03/05/25 15:36
dosって16ビットだから直接叩いても処理速度おそい win32に直接叩け、俺は叩けるけど、お前らには無理だろうな(藁
>>72 echo+>crlf
time<crlf
(時間を計るプログラムを走らせる)
time<crlf
というBATファイルで、
時間は自分で引き算するw
75 :
デフォルトの名無しさん :03/05/25 20:30
ちょっと質問なんですがよろしいでしょうか? 別の板のとあるスレで 「とあるサイトを見ていたら突然PCの画面が黒地に白の文字が現れて、強制的に再起動をさせられるという事があった。 一瞬の出来事で、文字の内容は「STOP」等と書かれていた以外は読み取ることが出来なかった。」 という書き込みを見つけたんですが、数時間後に犯人を名乗る人物から 「バッチファイルを実行したからコマンドプロンプトが立ち上がって表示されたんだよ。 OSがブートしなくなったりするかもな。」という書き込みがされました。 これって一体どういう仕組みなんでしょうか?なんかでたらめを言っているようにしか聞こえないのですが。 もしよろしければ正常に戻すための対処方みたいなものも教えていただければ幸いです… 質問するべき場所では無いのかもしれませんが、本当にお願い致します。その方が困ってるみたいなので…
取り敢えず、その犯人とやらの科白は痛すぎ。
77 :
デフォルトの名無しさん :03/05/25 23:04
>>75 バッチファイルで再起動はできる。
だが、Systemファイルをいじれるかは不明。
正常に戻すにはOSの再セットアップが一番良いが、
今は、重大なファイルのバックアップとっとけばいいと思う。
やばくなったら再セットアップだな。
念のためレジストリの修復はした方がいいかも。
∧_∧ ピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。 =〔~∪ ̄ ̄〕 = ◎――◎ 山崎渉
79 :
デフォルトの名無しさん :03/05/28 15:02
↑アフォ age
DOSでぷろぐらみんぐってどゆこと? (・∀・)
81 :
デフォルトの名無しさん :03/05/28 18:03
>>80 command.com でプログラミングするんじゃないか?
(・∀・)
82 :
デフォルトの名無しさん :03/05/28 18:28
Debugって入力てみたらどうだ?
83 :
デフォルトの名無しさん :03/05/31 05:19
むしろシムデブ
>>73 DOSでも32bit命令は普通に使えるが?
なんか変な厨がわいちゃってるね。
w
仮想86モードじゃだめだけどリアルモードならセグメントリミットを4GBにしてESIとかのレジスタで32ビットアドレス空間自在にアクセスできますよ。 repプリフィックスとdb 67hとmovsdとかで楽勝です。mov al,fs:[edi]なんてやれるし。 セグメントレジスタは0を入れるのが楽です。esiなどの32ビットレジスタに物理アドレスを入れるだけ。 CALL先は1MB空間に限定でuse32センテンスが使えるDOSエクステンダ系とは違って面倒ですが。 セグメントリミットを4GBにするのはセレクタの設定です。ソース必要であれば掲載します。
補足、仮想86モードの場合はVCPIかDPMIで32ビットアプリを組めます。 私はVCPI(なつかしのMelware)でTASMとTCで無理やり組んだことがあります。 でもこれは殆どWin32環境のコンソールアプリと同じだな。TC(use16)ゆえにCでポインタが使えないことが問題だったが。 でもハードは、ばんばんにアクセスできます。 Win32環境では基本的にカーネル0で作るデバドラかI/Oトランザクションをゲートを通して実行するしかないでしょう。 SCSIなどはASPIファンクションで自在に扱えるという盲点のデバイスもあります・・・
?
Win32環境でI/Oドライバ作ってもアプリに実行権が渡るまで反応できないよね。 即在に反応するのであれば全てデバドラ内部で処理する必要あり。 でもDOSだと自由です。
必要ならデバドラで反応すればいいじゃないの。 やり方知らんからどうでも良いけど。 DOSはCでもinp/outpでできちゃうからね。
結局16ビットでI/O処理が遅いというのが気になっただけだけど。 リアルモードなり仮想86で32ビット命令使う場合にプリフィックス付く分メモリアクセス不利はわかりますが、Win32の環境じゃぁ速いI/O処理は難しいね。 32ビット処理は速いのは当たり前だけど環境がWin32とリアルタイムOSじゃ差があるのは当然で、DOS環境ならわがままし放題で速いソフト作れるねって話です。 Win32でもDirectXなどのI/Oサポートを使えば素晴らしい速度になりますが、話がそれましたね。
ageないの?
何をもって速い/遅いって言っているかによるだろうけど。 反応(リアルタイム性)と速度(データレート)と幅(16/32bit)などが ごちゃまぜのような・・・
マジレス求めても良いですか? 今 PC9801版DOS 命令と同処理をなぜかWin 版に直してんだが。 Dos の BIOS 制御で Int 18h 命令で AH 00h を入れた命令ってなにしてるんだ!!!? AH 0Ah とかは資料に載ってるんだが・・・。どなたか親切な方たのむ。
99 :
デフォルトの名無しさん :03/06/19 17:45
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:\>
>>96 キーデータの読み出し
割り込み INT 18H
入力 AH <- 00H
出力 AX <- キーコードデータ (AH <- キーコード、 AL <- キーデータ)
>>102 ありがとうございます。
その後、int18 ではなく int 18 と検索ワードを書いたところ
ネットから情報を得ることができました。
不用意な書き込みにレス頂き感謝します。
また、頂いた「キーコードデータの割り込み」を用いて検索を
行いましたところより詳細なページも見つけられました。
ありがとうございました。
__∧_∧_ |( ^^ )| <寝るぽ(^^) |\⌒⌒⌒\ \ |⌒⌒⌒~| 山崎渉 ~ ̄ ̄ ̄ ̄
(^^)
(⌒V⌒) │ ^ ^ │<これからも僕を応援して下さいね(^^)。 ⊂| |つ (_)(_) 山崎パン
>2 > Turbo C / Turbo C++ / Turbo Pascal (PC-9800では動作不可) 98固有のライブラリを呼ばなければ、98も可能では。 逆の「98版TurboC Ver2.0+IBM固有Lib不使用」ではIBMでOKです。 こまかいですが。
>>107 当時のBorlandのIBM PC向け製品は98ではコンパイラが動かないのです。
IBM PCに依存するコードが含まれているのでしょう。
生成されたバイナリはIBM PCに依存するライブラリを使用していなければ98でも動きます。
確かスタートアップでどっかの割り込みベクタを保存してて それがIBM PC固有で98だと不都合が出たと聞いたような。 コンパイラもそのコードを使ってるから。 パッチ当てれば動くようになったらしい。
>108 コンパイラ自体が動かないんだ。 むかし、IBMのTurboC1.5環境版を98で動かすパッチがあったような。 2.0で98版が出たからね。
Turbo Visionってまだあったんですね。Win32やUnixでもあるとは。
タダで使える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を選択しコンパイルすれば、目的が適うでしょうか?
宜しくお願いします。
長文失礼しました。
OK
640x400てのが若干気になるけど、98やJ3100にあわせたんだろう。 たぶん下80行が使われないだけかな。 あと、コマンドプロンプトで実行して見栄えが悪かったら ALT+Enterでフルスクリーン表示にするといいかも。
>113,114 ありがとう。 では、やってみます。 また質問がでたら、宜しくお願いします。 以上です。
途中経過です。 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");これが、気になるのですが、 変えなくてもよいものなのでしょうか?宜しくお願いします。
>>116 "b:\\graph"は .BGI のあるディレクトリに変えた方が良いような気がする。
>117 レスありがとう。 やっぱり変えたほうがいいですよね。 なんか、気持ち悪いし、、、、。 また、すすみ次第、報告します。
>116 initgraphの引数が1つ足らんな(w bgidemoは試したのか?
>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つめの引数は省略可ですね。
マニュアルがあるならバッチリですな(w BGIはOBJに変換してリンクすると楽かも。
>121さんへ。 いや〜、こないだ、たまたま、ヤフオクで ナツメ社から出ている TURBO C++ コンパイラ・マニュアル をゲットしたのですよ。100円でした。 運が良かったです。 ところで、 >BGIはOBJに変換してリンクすると楽かも。 は、どういうことですか? すみませんが、教えてください。 宜しくお願いします。
100円とはラッキ〜〜。この手の本は少ないしね。 bgi2obj.exeだったかな?それを使って、BGIファイルをOBJファイルに 変換出来るんです。BGIファイルは実行時にinitgraphがロードしますが、 OBJだとリンクしておけるんで。initgraphのモードをDETECTにしておくと EGAなどグラフィックアダプタに合わせてロードしてくれるんで便利ですが、 今時は解像度の高いのをリンクしておけば済むような気もするしね(w
>123 ラッキーでしょ〜。 makeが使えることも知ったし、十二分に元を取りましたよ。 ちょっと、質問の続きなのですが、後半の >initgraphのモードをDETECTにしておくと >EGAなどグラフィックアダプタに合わせてロードしてくれるんで便利ですが、 >今時は解像度の高いのをリンクしておけば済むような気もするしね(w が、判らないです。 じつは、ライブラリをオブジェクトにするメリットも、いまいち 良くわかっていません。 gccとかで、数学関数を使うとき -lmって付けますよね。 だけど、数学関数のライブラリをオブジェクトにするっていうのは 聞いたことがありません。 教えてもらってばかりで恐縮ですが、お願いします。
objもlibも似たようなもんじゃないのとか思った。複数のobjまとめられるとか。そんなん?
>>124 > ちょっと、質問の続きなのですが、後半の
> >initgraphのモードをDETECTにしておくと
> >EGAなどグラフィックアダプタに合わせてロードしてくれるんで便利ですが、
> >今時は解像度の高いのをリンクしておけば済むような気もするしね(w
> が、判らないです。
ヘルプか参考書でregisterbgidriverを調べれ。
BGIファイルをOBJファイルにしてそしてリンクすることにより、
EXEファイル内にBGIファイルの内容を埋め込むことができる。
すると人様にソフトを配布する時にBGIファイルを添付する必要が無く
EXEファイルだけで済む。ちょっとカコイイ。という話。
まあ、見栄えの問題だけだから、面倒なら気にしなくてもいい。
ところで、目的のシミュレーションプログラムはどうだったんだろうか?
プログラムに日本語文字が使われているとコンパイラを通らない
可能性もあるが。
>126 なるほど、、、有難う御座います。 目的のシミュレーションは、まだ打ち込み中です。 日本語表記はないので、大丈夫かと思います。 もう1週間もかかっている、、、。 あさってまでには完成します。
>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とはちょっと違いますが、実行時にロードするオーバーレイ なんていうのがありました。
>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される。 少し、判ってきました。
>gccはよくしらんのですが、-lmとすると、libm.so(だっけ?)とかがあると >すれば、それはDOSのlibに相当します。 いいえ、DLL相当です。
>129 objはlibから変換されるというか、取り出されるという感じでしょうか。 似たようなもんですが(w libはアーカイブなんです。objが固めて あるので、オブジェクトライブラリって言うのが正しいのかも。 取り出されるのは、objの単位というか結局ソースの単位になってると 思います。だからsinだけ使ったらsin.objがリンクされるかはわかりません。 sinとcosで1つのソースが作られていれば、sinを使ってもcosも付いて きちゃうというという感じでしょうか。 #最近のリンカでは、使っていない関数は取り除かれるようですが、 #どのように取り除くかはいまいちわかりません。 >130 .soはDLLでしたか、しんずれい(w
>132 何が? かな?
DOSでPCIバスのボードを複数枚制御する際、同じ割り込みを割り振られた場合 どのボードで割り込みが掛かったと判断するにはどうしたら良いですか?
>>134 各ボードのステータスを順繰りにチェックするしかないだす。
ちょっくらDOS環境でプログラミングしようと思って,
http://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でクロス開発してます・・・
>>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に対応していたはず。
>>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は
http://ebisa.hp.infoseek.co.jp/bochs/index.shtml のbochs-2.1.pre3-jpfix-20040103-win32.zip です。
どっちにしてもひまみつけて実機で試してみますぅ。
現品.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とかに直書きしたくなってきた
>>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に配置されるようにリンカオプションで指定。
>144 その1とその2の合わせ技でしょう。
>>145 その場合,リンカオプションをいじらずに,ソース上に全部の情報が載るわけですな。
なるほど、構造体をかぶせるのが一番ですね。
構造体にかぶせるのを,アドレス指定(つまりポインタ)で書くと, foo1->register[REGNO_CHANNEL1] = 1; とかになって,「->」がうざいというシトがおられます。 構造体の配置自体をリンク時に指定してやれば, foo1 . register[REGNO_CHANNEL1] = 1; と書けるのです。C++でなら,参照を使って, board_foo &foo2=*foo1; とか書けるといいんですが,そうは問屋がおろさないようです。 組み込み系の処理系(PL/M,古いintelC)ではかなり太古から変数の配置アドレスをソース上で 操作できるのが普通だと思うのですが,gccとか今風の処理系でもできるんですかね。 そういうの使わないととんでもなく書きにくいと思うのは,頭が古いんでしょうか。
>>148 >とかになって,「->」がうざいというシトがおられます。
刺して下さい。
->->->->-> ;y=ー( ゚д゚)・∵. ターン ->演算子で刺しておきました。
おや、レスが来てた いや、当時は全部アセンブラで書いていたから・・・ DSをa800hに変更して直書きしてたから意味合いで言えば、 その2に近いのかな?どちらにしても10年以上前の話だからなぁ
>>152 >いや、当時は全部アセンブラで書いていたから・・・
(MASMの)アセンブラの構造体こそ望ましいものです。アドレスを指定して,
構造体メンバにアクセスできて「->」をうざがって刺されることもないです。
>148 PLMとは懐かしい。今でも昔のサポートで使うことありますが(w gccでも直アドレス指定出来ますよ。 まあOSによっては、やっても怒られるだけですが(w
>>155 >gccでも直アドレス指定出来ますよ。
直アドレスを
char *base_adr= 0xd0000;
とできるのは当たり前で,お伺いしたかったのは
struct board_foo;
として作ったものを0xd0000に配置するような機能のことです。ほんとうにできますか。
>まあOSによっては、やっても怒られるだけですが(w
WindowsNT系でもOS標準でできるんで困りませんし,タイミングが10msec以上の
比較的シビアなものではリアルタイム拡張製品などを使うので問題ありません。
それにタイミングが絡んでくると,OSなんかの機能よりも「作り方・書き方」の方が大事だと思います。
特殊なハードのラッチ信号をPCからポチポチ制御するような困ったちゃんシステムとか。
>156 あれま(構造体)変数などの絶対番地ロケートでしたか。 gccで開発するCPUでROM化などしたことがないのでわかりませ〜〜ん(^^; わざわざ実体を重ねなくても、構造体へのポインタで良いような 気がしますけどね。処理系の環境に依存させるのがいやですから。 怒られるはメモリアクセス例外などが出るだったんですが。 タイミングですか、OSの機能というより挙動を知ってないと いけない、じゃないですかね。何がWinNT系のOS標準で出来る だかわかりませんが、WinNT系でもリアルタイム拡張があれば 時間の保証が得られるらしいですね。
昔は知識不足その他で果たせなかった事を何となくしてみたくなって、 使わなくなってた古い9821にdjgppをインストールしました。 今更ですが、Undocumentedな機能(PEGCとか)を使ってみたり、 直書きや割り込み、DPMI等で遊んでます。 …何で今更はまるんでしょう(笑) 結局、DOSは嫌いじゃないんだよなあと再確認しますた。
>>156 > struct board_foo;
> として作ったものを0xd0000に配置するような機能のことです。ほんとうにできますか。
mapped I/Oなら
#define foo1 (*(struct board_foo *)0xd0000)
じゃダメなん?
>>159 >#define foo1 (*(struct board_foo *)0xd0000)
おお。新パターンです。ありがとうございます。
#defineだとデバッガが・・・ゲホゲホ
ちなみにこれは,実際にお使いですか?
mapped I/Oでドライバ書いたことはないけど、DOSでは使ったな。
質問させてください。キーイン待ちして、何秒後かにタイムアウトする ようなプログラムは作れるでしょうか? キーイン待ちのときに割り込み28hが呼ばれるようになっていても、 この中からいきなりキー入力処理の後にジャンプなんてできそうに ないと思うし(安全とは思えないので)。なんか手ってないもんでしょうかね?
>>163 while(kbhit()){
if(time >= basetime + 1000){
timeoutflag = 1;
break;
}
}
>>164 ありがとうございます。
そうですね、この方法がありますね。一点気になるのがCPUを喰いすぎる
かなと思うところです。(シングルタスクなので実際上の問題は無いと思い
ますが。。)
>> 163 割り込み28hの中でフラグ立てるようにして, キー入力待ちする側でタイムアウトをカウントしながら そのフラグを監視すればよいと思います。 もちろんそのフラグは利用側で事前・事後にクリアしてやらないといけません。 >> 165 > 一点気になるのがCPUを喰いすぎる ?CPUを食わないようになんてできませんよ。CPUは常に100%フル回転です。 nop連続にした方がバスへのアクセスも減って,動作しない内部ロジックが増えて 発熱・消費電力を抑えられるとか,そういう趣旨なんですかね。 それとも省電力対応CPUのお話ですか。
ビジーループってこったろ
>>167 MS-DOSでビジーループを気にする理由がわかりませんね。
タイマ割り込みでソフトタイマー作って,キー入力を割り込みで処理するんなら,
なんにも悩むことなんてありませんですよ。
自前で擬似マルチタスクでも作ってその上で何かなさっておられるのなら,
ビジーウェイトを気になさるのも理解できますが。
ごめんごめん。俺が悪かった。 >(シングルタスクなので実際上の問題は無いと思い >ますが。。) これすら読まずに屁理屈こねるような奴に言っても無駄だったな。
お互い様でしょうね。
Interrupt Listの最新って61?
あげ
175 :
デフォルトの名無しさん :04/02/17 03:26
バッチファイルを作っているのですが 特定のアプリを強制終了させるコマンドがどうしてもわかりません。 どなたか教えてください。 OS環境はWindows2000Proです。 XPだと、taskkillコマンドが使えるらしく Win2kならtasklist→killコマンドが使えるらしいのですが MS-DOS上でそのコマンドを打ってみてもだめでした ダメモトでバッチファイルでkillコマンドとtaskkillコマンドを書き込んでみましたが 当然だめでした。
>>175 killはWindows 2000 Support Toolsに入っている。
Windows 2000 Support ToolsはWindows 2000のCDに入っている。
ありがとうございます!!
カレントディレクトリのファイル名を全部大文字にするツールを 作ってるんですが、rename( 旧ファイル名, 新ファイル名 ) とやっても 全然変化しないんですよ。 DOS プロンプトから rename 旧ファイル名 新ファイル名 なら いけるんですが・・・ Cで DOS のコマンドを実行するっていう命令ありませんでした? 10年前に使ったような記憶があるが思い出せない・・・
179 :
デフォルトの名無しさん :04/02/18 13:27
system または exec系関数
ここはいっちょディレクトリエントリを 直接書き換えるというのは、、、
>>178 一回ダミーファイル名に変換してからとか。
ありがとうございます。 さっそくプログラム中・・・ メインプログラマーがウンコすぎて仕事が殆どオレに まわってきて死にそうです。
とりあえずダミーファイル名に変更することで対応できました。 ありがとうございました。 ていうかメインプログラマーまだ出社してこないよ・・・ もう○んでクレ。
おそらく彼は今頃コタツの中で安らかに・・・
おならを死んだ
186 :
デフォルトの名無しさん :04/03/08 19:08
すみません。 時間を取得してファイル名にセットしたいのですが、 TIMEコマンドだと:が混じってしまい設定ができません。 何か良い方法は無いでしょうか? よろしくお願いします。
187 :
デフォルトの名無しさん :04/03/08 19:32
age
おまえ、混じっているな
混じってるって、どぼぉいうことだよ、 みゅぅぃぃぃぃぃぃいいいぎゅぅいいいいいいいいいいいいぃぃぃ!!!!!
190 :
は ◆cplnFO9T0I :04/03/10 20:32
ネットワークプログラマに朗報です。
閉鎖されてたかと思われたTEENのサイトは、ただ単に鯖のHDが飛んでただけなので、
(マシントラブルとかかれていますが、どう考えたって、消失するといったらHDが飛んだとしか考えられません。)
仮運用の状態にあるそうです。みなさん、これからもがんがってください。
ttp://www.pc88.gr.jp/~teen/
>>190 >(マシントラブルとかかれていますが、どう考えたって、消失するといったらHDが飛んだとしか考えられません。)
さて、と。
193 :
デフォルトの名無しさん :04/03/29 22:12
195 :
は ◆cplnFO9T0I :04/05/14 20:21
2ちゃんねるブラウザを作ってるんですが、 お気に入りを読み込む部分は動的リンクにしたほうが良いでしょうか? 回答願います。
スレ違い
Web Boy を参考にせよ
>>197 だってどう見ても195はDOS用の2ちゃんねるブラウザを作っているようには見えない
200 :
は ◆cplnFO9T0I :04/05/15 18:39
>>198 参考にしろといわれてもねぇ。
>>199 何故に?
コンポーネントをEXEにして分離したほうがいいのか聞いてるんですけど。
201 :
デフォルトの名無しさん :04/05/15 18:42
オーバーレイとかあったなぁ(しみじみ
思うがままに作って、完成させてから要望聞いて対応すりゃいいじゃん。
要望が出そうなところが分かってるなら、最初からそういう風に設計できるだろ?
ただ、DOS用なら、俺としては実行部はファイル1つの方が分かりやすい。
>>195 の言う「動的リンク」が何を指すのか、
>>200 でいよいよ分からなくなったが…
204 :
は ◆cplnFO9T0I :04/05/16 18:38
>>201 似非動的リンク
>>203 わかったYO!
ともかくそこの部分を変更可能なように作っておくということで。
ともかく、ひとつのEXEで作ってみる。
205 :
デフォルトの名無しさん :04/05/16 18:41
とりあえず、がんがれ。
207 :
デフォルトの名無しさん :04/07/03 15:04
消えた「は」
生きてますよ。
209 :
デフォルトの名無しさん :04/07/14 01:46
昔から疑問だったんだけど、
>>143 にあるようなVRAMアドレスって
DOSエクステンダを使うとどうなるんですか?
アドレス変わっちゃうのかな?
DOSエクステンダは1MB以下のメモリはアドレスが変わらないように マップしてくれます。その代わりぬるぽが検出できないわけで
pharlapのdosエクステンダはvram用セレクタがあるよ
212 :
デフォルトの名無しさん :04/07/14 16:58
前に他のスレで伺ったらスレ違いとのことでしたので、 こちらでお尋ねしてもよろしいでしょうか? VCでCUIのプログラムを作ったのですが、 Windows(XP/200/98等)内のDOSプロンプトでは動作するのに、 Windows98の起動ディスクで起動したDOSプロンプト内では動作しません。 Win32APIは使っていません。 調べた範囲ではSTUBが動作してしまっているようなのですが、 どうすればこの場合STUBではなく通常動作させられるのでしょうか?
最近のVCはDOS用プログラム作れないからCUIでビルドしても無理 DOS対応コンパイラを探せ
TurboC++とかだな
Digital MarsとかもDOS吐けるでしょ。
お分かりになる方がいらしたら教えていただきたいのですが・・・ MASMver5で作ったマンデルブロ集合計算プログラム( .387ディレクティブ で有効にした浮動小数点命令を使用してます)なんですが、IBMのDOS5J の下で実行させると45分もかかるのに対して、WIN98SEのDOS窓では 4分程で終了します。どうしてこんなに実行時間に差がでるのか?と不思議に 思っています。何が原因でしようか。 CPUはATHLON2000+で、マ・・集合計算プログラム中でEMMS命令により MMX命令を禁止させてます。(EMMS命令を追加してやらないと浮動小数点 命令が正常に実行されません) よろしくお願いします。。
SEは優秀だから
>>217 計算だけ? 描画もしてる?
DOS窓はフルスクリーン?
>>219 様
レス、ありがとうございます。
DOS窓はフルスクリーンで、計算と同時に描画も行っています。
>>220 試しに計算だけで比べてみるといい。
DOSの描画はVGA互換モードだから遅いのかな。
>>221 様
ありがとうございます。
ご指摘のようにDOSでの描画は、BIOSのサービス(ファンクション番号
0CH)を利用しているため遅いです。正確に測ったことはありませんが、
単純に点を打っていくだけでも、400*400の面いっぱいを描くのに数十
秒位かかったように記憶しています。
223 :
デフォルトの名無しさん :04/07/26 01:30
XPでLSI-Cを使おうとすると、uasgeが空行になっちゃうんですが 対処法あります?
>>223 状況がよく分からんのでソース貼ってくれ。
実行結果も。
225 :
デフォルトの名無しさん :04/07/26 10:56
>>224 いやただたんに
$lsic
(謎の改行(usage分?))
$
こんな感じなんですよ
一回command.com起動汁 XPってDOSコマンドが表示されない時があるんだよな・・・
NTVDMとやらが悪さしているようでガスね 毎回command.com立ち上げるのめんどいんでこれを機にDOSBOX入れまス
sou
230 :
デフォルトの名無しさん :04/08/01 16:53
ハードウェアを直接叩くのが面白いと聞いたので、パンチしたら壊れました。 どう責任とってくれるんですか。楽しくありませんでした。
最近はハードウェアよりもソフトウェアに対してムカつくことが多いです。 ソフトウェアを直接叩く方法を教えてください。
234 :
デフォルトの名無しさん :04/08/02 00:42
諸先輩方に質問があります。 大変、厨房な質問ではありますがどうかよろしくお願いいたします。 (1).EXEファイルの先頭512バイトのリロケーション情報領域の事ですが、先頭1バイト目の『ファイル識別子』の種類と意味を知りたいのですがどなたかご存知でしょうか? (2).EXE/.COMファイルのリロケーション領域について詳しく紹介されているHPがあれば教えていただきたいのですが。 現在、勉強中なのですが参考文献も減ってきており四苦八苦しております。 どうか宜しくお願い致します。
>(2).EXE/.COMファイルのリロケーション領域について詳しく紹介されているHPがあれば教えていただきたいのですが。 (2).EXEのリロケーション領域と.COMのPSP領域について詳しく紹介されているHPがあれば教えていただきたいのですが。 の間違いでした。スミマセン。
MSDOS拡張機能セットを買え
昔はプログラミングの資料がOSに付いてたんだったな つーかマジな話拡張機能セットってまだ買えるの?
MSDNに載ってないか?
皆さんレス有難う御座います。
>MSDOS拡張機能セット
・・・資金が不足している為、購入不可です。
>MSDN
そういえば、載っているかも知れませんね。
調査不足でした。
>>240 さんから紹介して頂いたページは最高にいいですね。
ピンポイントで知りたい情報が載ってました。
その他にも色々なファイル情報があり素晴らしいページですね。
お気に入りに登録しときました。
本当に有難う御座いました。
もうちょっと精進しときます。
>>233 せっかくカラー化できると思ったのに白黒に逆戻りになってしまうではないですか?
VGAの同期信号を一時的に停止させるgenericな方法ってありませんか?
247 :
デフォルトの名無しさん :04/09/21 22:28:05
PCIバスボードの割り込み関係の話なんですけど、 割り込みを使用するボードを1枚挿してBIOS上で 単一のIRQ(例えば5)のみを使用するように設定して そのベクタを書き換えた場合の割り込み処理は問題ないのですが、 複数のIRQ(例えば5と12)を使用するように設定した場合に ベクタを書き換えた後、割り込みが発生すると スタックオーバーフローが出て暴走してしまいます。 勿論IRQを複数使用できる設定にしていても実際使用している IRQは1つですし、実行ファイルも同じものです。 割り込み処理の記述等で何か注意する必要があったりしますか?
>>247 「スタックオーバーフローが出て暴走してしまいます。」
スタックポインタのチェックコードが有効のままになっていて、
割り込みルーチンであぼんしているわけじゃなくて、本当にスタックを
食いつぶしているってことですか?
interrupts?で追い確認?
>>248 割り込みを発生させた途端、
Internal Stack Overflow
System Halted
のようなメッセージが画面に表示されて
止まってしまうような状況です・・・。
このメッセージ自身DOSで出してるので
恐らく実際スタックを潰しちゃってると
思うんですが・・・。
>>250 割り込みの発生ペースは上がってますか?
config.sys で STACKS=64,512 とか指定してみるとどうでしょう。
>>251 割り込みトリガそのものは外部のスイッチから与えてるので
発生している割り込みは1回だけだと思います、多分。
スイッチのチャタリングが発生してる可能性もあるかも知れませんが、
上手くいくパターンでは1回の割り込みしか発生していませんでした。
しかし駄目なパターンの場合はその1回目で例のメッセージが
出てしまうんですよね・・・・。
config.sysの変更については今その環境が無いので
試せませんが明後日に試してみようかと思います。
ん〜駄目でした・・・・orz でもどうやら駄目なケースの場合は何故かベクタの書き換えが 上手くいっていないようです。 今日も色々試したんですがサッパリ・・・・もうどうすれば(ノД`)
254 :
デフォルトの名無しさん :04/09/25 19:06:54
すみません。MS-DOS 6 の Files/FCBS/Buffers/Lastdrive/stacks を UMBやHMAに持ち上げるプログラムありませんか? PC-98 用なら何とかありますが、DOS/V用がありません。 無ければ作ろうと思いますので、資料でも可。
いません。 どうせあと二年もすれば無料になるよ。
Windowsが普及しきってからPCを使い始めましたが なぜかDOSに惹かれるので、DOSコマンドも覚えました。 今からDOSプログラミングを始めようと思ったら どういった手段で資料を集めればいいでしょうか? 大きい本屋になら未だに並んでるのか、Web上で足りるのか、諦めるしかないのか・・・
どんなことをなさりたいのか分かりませんが、DOSのシステムコールの説明 なら、DOSの拡張セット(NECのDOSの場合)にマニュアルが添付されて ました。が、今でも販売されているかどうか? オークションに出るかもしれ ませんね。BIOSサービスとかハードウェア関係は、CQ出版社が昔、解説本を 多数出してましたが、今でも在庫があるかどうか?
コマンドがどうとかっていうことが興味の方向なら、 Cygwin でも入れて perl とか awk その他を覚えてゆくのが良いような気がする。
>>254 PACK for WIN GOLD 98後期版」なるCDブックにENVHI.EXEという
フリーソフトが収録されていて、これが「一番親のcommand.comの
環境変数をUMBに追いやって、ほんの少しだけ空きメモリを広くできる
かも知れません。」なのだそう。こういうのを差しているのかな?
激しくカメレスで、スマソ
>>254 MSDOS7なら全部〜Highがあるんだけどそれじゃだめだよな。
>257です。 コマンドラインで作業をしたいという訳ではなく、>258の仰るようなことに興味があります。 資料はオクで探すしかないようですね。ありがとうございました
264 :
デフォルトの名無しさん :04/10/06 23:26:34
すみません。 C言語 dos で msecの時間を表示したいのですが、 どのようにすればよいでしょうか? よろしくお願いします。 よろしければプログラム貼り付けてください。
265 :
デフォルトの名無しさん :04/10/11 18:11:12
hoge
>>263 アセンブラのコンパイラってなんだ???
DOSでtimeGetTime()見たいのってないの?
ない。 DOS時代はタイマICに直接アクセスするとか、 VSYNC割り込みトラップして自分でカウントするとかでなんとかしてた。
そうか、タイマはFM再生とか効果音に使いそうだからやっぱりVSYNCなのかな ありがとう
273 :
デフォルトの名無しさん :04/10/13 15:20:56
>>268 の貼ってくれたスキャンみてて思ったんですけど
outのあと何クロックはoutの結果に依存した処理をしちゃいけない
とかを解説したとこってないですか?
274 :
デフォルトの名無しさん :04/10/13 16:43:53
DOS
上げてみるクスコ
32Bitコンパイラで「int 10h」 のシステムコールを使うとバグるんですが 32bitコンパイラでDOSのビデオモードの 変更とかどうやってやるんですか? 教えてください、お願いします。
環境ぐらい書け
一般的なことしか書けませんが、プロテクトモードではIDTを記述して やらないと割り込みが使えないはずですが、この点はいかがでしょうか。 32bitコンパイラに関してはド素人なもので、こんなことしか書けません。 失礼しました。
ただ単にWindowsの32ビットプログラムでやろうとしているだけだったりして。
想像で語るのはやめようや
だったら環境かけよボケが
284 :
デフォルトの名無しさん :04/10/28 07:09:47
>>280 ,285
有難うございました、やってみます
環境はBorland C++5.5でMEです。
其の他の人もどうもすみませんでした。
281の言う通りでしたとさ。
DOS窓という通称の弊害がこんなところに
DOSエクステンダーってどうやって使うの? 教えてエロい人(;つД`)
290 :
デフォルトの名無しさん :04/10/31 14:15:37
マヌアルを小便ちびるまで嫁
manual自体入手しづらくないか?
言い訳はトイレに行って一人でして下さい
まにゅあるなんてもうねぇだろ
Digital MarsとOpen Watcomって とっちが使いやすい?
正直俺も仮想8086モードでINT関係が使えん何故だ・・・・
Open Watcomって商用では使わない方が良いって聞くけど何で?
噂とかで流れてんじゃねーの( ´ー`)フゥー...
>>297 商用で使ってはいけないとライセンスに書かれているからです。
マジッスカ???
マジッスヨ???
DOS画面で、入力内容とかメッセージとかをファイルに出力するコマンドがあったら 教えて下さい。
>>303 質問があいまいだな
COPY CON filename や ECHO 、リダイレクトなど。
>>303 さん
レスありがとうございます。
DOS画面の表示内容をそのままファイルに出力したいのです。
長いバッチで古い上の方が消えてしまうもので、
それを全て記録したいのです。
初心者なのでいまいちうまく説明できなくてすみません。
>>304 さんありがとうございました。
リダイレクトでできました。
即レスありがとうございます。
307 :
デフォルトの名無しさん :04/11/22 16:29:27
309 :
デフォルトの名無しさん :04/12/07 23:03:00
アスキー出版局の、PC−9801スーパーテクニックっつー本 誰かいらんけ?
>>309 図書委員の権限発動して高校の図書館に入れさせてコピーした記憶のある懐かしい代物だなw
あなたを詐欺罪で訴えます。
>>312 まぁあれだ、MSに対向するためのみの意義しかないグラフィック機能を除けば今でもそれなりだろうね。
少なくともLSI-Cを使うよりも16倍いい。
#あれはあれで、悪くはないのだが。
LSI-CはLFN libraryがあるから、Win/DOS両方で使えるような小物を作るのに重宝している。
315 :
デフォルトの名無しさん :04/12/12 21:55:24
dosのフォントが気に入らない。変更するにはレジストリをいじるしかないのかな?
そりゃDOS窓やろ
もし窓じゃないDOSならCONFIG.SYSをいじって下さい。
318 :
デフォルトの名無しさん :04/12/14 13:58:46
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側でどのように指定してよいかわかりません。 どなたか教えていただけませんか?
DOSで動作するMASMの6か5.1ってフリーになってないのかな。
セグメントディスクリプタを書いてないんじゃないかと E.S.P.
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 とすると、ゴミが表示されます。 という内容でした。
>>325 引数は正しくわたされてるか
_pusは正しく動作するか
C側のオブジェクトは確保されているか
これらを確かめた上で
tcのローカル変数を処理したいのならば([bp]と書いてあるので)、スタック上に確保されている
よってDSで処理する_putsに適合させることはできない。(セグメントオーバーライドでも不可)
DS上の別領域にでもコピーする
ただし、small modelならばSS=DSなので問題は起きない
つーか、コンパイラにアセンブリ出力させてよく見ろ。
328 :
デフォルトの名無しさん :04/12/18 21:52:29
ACPIをDOSでコントロールしたいのですが、どこかにソースかライブラリが落ちていないですか?
俺はEPSONのPC386からぶっこぬいてきたフォントをTerminalの14ptに突っ込んで使ってるので DOSの時代からWin95/98/2000を経てXPのコマンドプロンプトまで同じフォント。 ついでにLinux上のX-Winodwも一緒
日記は(ry
w
332 :
320 :04/12/19 08:57:41
>327 引数の受け渡されているところが、なまなましく見ることができ理解できました。 ただ、C側のアドレスに関しては解決できません。 extern void putc( char c);/*ASM関数*/ char* ss="Hello World!\n$"; putc( *ss);/*表示されるのは,ゴミ*/ 相性が悪いのでしょうか?
asm以前にCもわかってなさそうだな・・・・・
>>333 俺も全く同じ事を思った。
>>332 >相性が悪いのでしょうか?
プログラミングとあなたの相性が悪いせいかもしれない。
なんせ完全な解が出てるのに無視してる
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);/*ゴミ表示*/ }
だからCの勉強をしなさいって。
339 :
デフォルトの名無しさん :04/12/19 09:41:24
"Hello World!\n$" なんの意味があるんだ最後の$…
うーん・・・・まず2chの勉強が先かと・・・・・・・・ まずはsageと打鍵する練習
じゃなかった。この原因は。 Cの「スタートアップ」と呼ばれるものが何をしているか もっとはっきり言えば、DS,ES,SSは誰がいつ設定しているのか、と。
それもCの勉強なんだがな
343 :
320 :04/12/19 10:21:50
"Hello World!" のセグメントは、>326 の言ったとおり取得できないんでしょうか? >341 スタートアップについてはよくわかりません。。 バイナリ初心者なもので。。
うひょひょひょ。 ヘルプ見ろ。 サンプル見ろ。 ヘルプ見ろ。 サンプル見ろ。 関数の使い方書いてあるだろ。 初心者はそれ真似することからはじめろよ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); としたところ、これもゴミが出てきます。。。
半可通が教えるクンして泥沼プ またーりオチ
349 :
デフォルトの名無しさん :04/12/19 11:14:10
よくこんなんで、nasmとかalinkを使うよな。 トラブルが全く切り分けられないのに、標準以外のツールなんか使うなよ。
typoっぽいケアレスが気になるんだけど、何回も書いているから本当に理解してないのかも・・・・・・
しかし、ここの住人はキモイな ここまで性根が腐ってるとは。。。 よっぽど現実社会じゃ、みじめでいじめられてるんだろうんな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 としてみてください・・・
手取り足取り指導してる方がよっぽど醜悪 これがわからない内は引き篭もってろ
354 :
\________/ :04/12/19 14:10:09
∨ / ̄ ̄ ̄ ̄\ ( 人_____,,) |ミ/ ー◎-◎-) ボクハ ホントウハ ツヨインダゾ・・・ブツブツ (6 (_ _) ) カタカタカタ | ∴ ノ 3 .ノ ______ ヽ、,, __,ノ | | ̄ ̄\ \ / \.____| | | ̄ ̄| / \___ | | |__| | \ |つ |__|__/ / /  ̄ ̄ | ̄ ̄ ̄ ̄| 〔 ̄ ̄〕
>>351 絶妙な釣りと、釣りに気づきながら悪ノリしているこのスレの常連の構図だが。
過疎スレで釣りをする人間がいる訳ないし(ヒマな引き篭もりほど そんな発想をするんだろが)、こんな過疎スレでいつもの構図も何もない。 悪ノリと言っても、みじめな自分の社会生活のウサ晴らしに 初学者をいびってるだけだろうが。 顔だけでなく精神まで腐ってちゃ救いようがないな。 全く内外ともに絵に描いた様なキモオタだな。 だから何時までもバカにされてみじめなんだよ。耳が痛いだろう。 アンタらは、もう一生救われないよ。
久しぶりの餌なんだから、もっとゆっくり食べようよ
魚が逃げちゃうよ。orz
359 :
デフォルトの名無しさん :04/12/19 14:48:02
初学者の割に、他人のアドバイスを聞く耳を持ってないようだがw 耳に心地良い(そして間違ってるwww)アドバイスについて逝くしwwwww
wを連打してるのが痛々しい 悔し泣きしてるのか?
他のasmスレに逝ってないようだし、本当に釣りだったかも
とりあえずメモリモデルについて調べろ、引数がstackにどう積まれるか、だな
何を逝っても無駄・・・・・誰の話もきいちゃいなかったし・・・・・・・・
だーかーらー、釣りだってばよ。
こんなリアルっぽい釣りがあるかよ
リアルっぽいからこそ釣れるんだろ。
おまいらピラニアかよ
本物はどこかふざけてるんだよ。 今回はそれがない。
( ´・_・`)320タン、ちゃんとCの勉強してるかなー
370 :
320 :04/12/21 00:30:55
すいません。レス遅くなっちゃいました。。 なかなかうまくいかないので、最初からまた調べ直そうと思います。 教えてくれたみなさん、わざわざありがとうございました。 またつまずいたら、ずうずうしいながら質問させて頂きます。 その時は、もう少し高度な話題ができたらなと思います。 (マジレスでした。。。)
もう一度だけまじめに書くけど、
>>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 という感じで、リンクが出来ませんでした。。
じゃあ、コンパイラの出力を参考にセグメント指定をしなさい。 _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セグメントの中。
なんでも教えりゃわかるってもんじゃないんだよ
INT28
INT 1B
379 :
kai :04/12/27 00:44:06
dos用に作られたCプログラムをwindows上で動かすことはできないのですか?
基本的に動く。ただしNECのPC98のハードウェア、BIOSに依存したものは動かない。 その場合98エミュレータ上では動く。
餌がコネェ
CGの技術・性能が向上していく一方で、テキストだけ、あるいはラインアートな絵といった ゲームにも大きな魅力を感じている人間がここにいる。 ミステリーハウスとかZorkとかNethackとか。どういうわけだか好きなんだ。 かといって派手な演出が嫌いというわけでもないんだが、とにかく 今もDOSでプログラミングとかしている人は尊敬するわけです。 がんばってくださいありがとう保守。
DOSはもう流行ることもないんだろうけど 消えることもないんだろうナ‥ せっかく書くんだ 一番好きなOSで動かすのが当然だろう
385 :
デフォルトの名無しさん :05/01/27 10:57:57
TurboC++1.01を使ってるんですが286までしか扱ってくれないので 386レジスタを使おうとしてもコンパイルエラーが出ます なんとかできませんか アセンブラは386対応のものを使ってます int main() { asm{ mov eax,0 ; eaxって何?って言われる }; return 0; }
前に 66h 埋め込んでおけばいいんじゃねーの? TC++でどうやるかは知らんが。(emitか?)
>>386 386で動かすプログラムだからeax使った方が効率いいからです
>>387 コンパイラが286時代のものなのでそもそもeaxレジスタは存在していなく
未定義の識別子扱いをしてパースしてくれないんです
go WATCOM with DOS-extender to get the 32bit-full-power!
>>388 だから、mov eax,0の代わりに、mov ax,0にしてその前に66hを埋め込むってこと。
こうですか… mov eax,0 db 66h なんと言うか可読性がすごいことになりそうですね…
ワロタ
その程度の認識で効率がどうのこうの言うのは背伸びしすぎ
素直にアセンブラ使えばいいのに。タボシなんか捨てて。
いや、TurboC/C++は、アセンブラコードは処理できないよ。 外部のアセンブラに渡すだけ。 ていうかね、.286とか.386cって書いているの見たこと内科医? どっか先頭の方、適当なところに入れて桶
PC/AT互換機用のTCなら、ボーランドのFTPサーバーから 自由にダウンロードできるようですが・・・ 違ってたらスマソ
399 :
デフォルトの名無しさん :05/01/30 23:36:17
BCC使ってるんですけど、 system("set /P A=\"[Y/N] \""); system("echo \%A\%"); とやると「%A%」と表示されてしまいます。 どうしたら良いのでしょうか? ご指導くださいませ。
>>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\%");
とするか、バッチファイル作って呼び出せ。
system("echo %A%");
バッチファイル以外で %環境変数% が使えるようになったのはWin95付属のDOS7.0以降だな。
404 :
たかのぶ :2005/05/09(月) 21:58:11
こんなん叩いたら↓ if not exist z: net use z: \\Server01\e$ PPPPP /user:XXXXXX こんなもんがでたYO↓ z: は \\Server01\e$との接続を記憶しています。 記憶している接続に上書きしますか?(Y/N) 藻前ら分かる香具師はいますか
command.comは気が狂いだすから持ち出すのやめてくれ
うはwwwwwcommand.comおwwww いいけつしとるのぉwwwwおkwwww
407 :
デフォルトの名無しさん :2005/06/18(土) 23:11:50
初心者です。突然すいません。急いでいるもので。 ○○.EXEというDOSプログラムの中身を見るのはどうしたらよいのですか?
408 :
デフォルトの名無しさん :2005/06/18(土) 23:15:13
バイナリエディタで開け
410 :
デフォルトの名無しさん :2005/06/18(土) 23:20:00
ありがとう。 定番バイナリエディタってどれです? (409は難しそう)
411 :
デフォルトの名無しさん :2005/06/18(土) 23:33:43
16進でみたいだけならviでもhidemaruでもMifes(綴分からん)でもいいけど。 中味を見るというのがよく分からん。 ひょっとしてexeからソースを復元したいの?
はげまるって、 まだDOS版売ってるの?
413 :
デフォルトの名無しさん :2005/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 :
デフォルトの名無しさん :2005/06/18(土) 23:53:10
dos限定だったのか。 エスパーな会話しちゃったw
>>413 それがプログラム
左が16進数で、右がテキストエディタで開いたときのものと思え
ってか、お前がバイナリエディタで開いたバイナリは
改編を認めてるのか?
ライセンス違反だぞ
このスレッドの名は DOSでプログラミング "で"なんだから、DOSを使うのが前提でしょ? コマンドプロンプトではなくDOS ずっと俺はそう思ってたけど
417 :
デフォルトの名無しさん :2005/06/19(日) 00:10:55
>>416 winに付属しているコマンドプロンプトしか頭になかった。
正直すまんかった。
(そういや、伯父もいまだにPC98FAつかっているしな)
>>413 どんなプログラムか知らんがその機種にあったものを探した方が早いと思うぞ。
素人がぱっと見ただけでパッチを当てられるようなもんじゃない。
419 :
デフォルトの名無しさん :2005/06/19(日) 08:21:05
DOS始めるには何からやればいいの?
あきらめる
421 :
デフォルトの名無しさん :2005/06/19(日) 11:46:26
422 :
デフォルトの名無しさん :2005/06/19(日) 19:41:31
>>421 DOSのインストールって何
もともとあるんじゃないの?どこにあるの?
>>422 DOSだって昔は単独で販売されていたんだからインストーラだって存在していた。
>>422 WinNT系にはDOSは入っていない。
今DOS単体が手に入るのかどうかは不明。
やりたいんならWin9x系OSをインストールするとかかな
DR DOSでも使えばいい
DOS"で"プログラミング なんだから、DOSでやろうや Win9xでやるのもいいと思うが、そしたら絶対に Windowsのエディタでコード書くだろ DOSを入れろ
428 :
デフォルトの名無しさん :2005/06/20(月) 01:43:36
やっぱ、VB1が、とても好き。 mouse.com入れて、結構あそべます。
MS-DOSを使ってみて、かなり不自由だったので ツール郡を移植したあの日々 2ヶ月後くらいに公開したら、もっと質のいいものが出回ってるとしった日 死にたくなった あれから、2度とDOSの画面は見ていない
DOS上で、Windows のプログラム開発は、出来ますか? gcc + mingw とかで。
>>430 MS-DOSでgccは動かないと思いますが。
djgpp
>>431 マジっすか?
というか、勝手に思っててください。
思うだけなら自由だしな
ここでいってるDOSってMS-DOSのことなの?
もし、MS-DOS限定ならバージョンはどれを指すの?
>>1 を見るとハードを直に叩けるって言ってるから6.1以前の物限定?
ポッカーーーン
俺がMS-DOSを使わなくなったのはメモリの管理を阿呆みたいにし始めたからかな
EMSにXMS、さらにはBMSか?
UMB,HMA,
>>440 どっちもXMSの一部じゃなかったっけ?
そういえばそうだったかも。 ん、でもHMAはXMSのおまけで、UMBは仮想EMSのおまけだったような気も。 XMSって286以上の規格じゃなかった?
勉強になりました。 でもこの先使うことなどなさそうな知識だ。
(ノ∀`)それを言わないで
446 :
デフォルトの名無しさん :2005/07/23(土) 07:17:32
CD-ROMドライバはネットワークドライブ(のドライバ)の一種だそうですが、ネットワークドライブの仕様について情報源があれば教えて下さい。
ドキュメント読めよ
ドキュメントはないんじゃなかったっけ? Undocumented DOSにネットワークリダイレクタの機能を利用した RAMディスクのサンプルが出てたけど
DOSでプログラミングじゃなくてDOSをプログラミングになってきた俺はどうすればいいんだろう・・・
>>449 用途によってはDOS互換OSもまだ需要があるから
そのままがんがれ!
Dos Promptでシューティングでも作りたいんだが なんか良い解説サイトとかない?
俺はDOSエクステンダを自分で作ってみたい っていうか、どういう処理をしてるんだよ 気になって夜も眠れん
その時の気分でプロテクトモードとリアルモードを切り替えてるんだよ
456 :
453 :2005/08/01(月) 22:08:39
こっちのほうが詳しそうな人がおおいので、質問させていただきます PCIデバイスのプログラミングやっとります。 PCIデバイスで割り込みを使うには、PIC(割り込みコントローラー)の、モードをLevelトリガーモードに しないといけないようです。そのためPCIバス対応の割り込みコントローラー(APIC?)には、IRQを部分的に Levelトリガーモードにする機能があるようなのですが、いくらぐぐっても らしき資料が見つかりません。 どなかた助けてください、お願いします
適当にハード関連の本を十冊くらい嫁
>>458 何もしらんくせにええかげんなこと書くなよ...
>>457 まずはそのデバイスがedge-trigger使えるかどうか調べてからにしな
461 :
457 :2005/08/19(金) 19:32:06
ここで聞いた俺が馬鹿だったわ。Linuxのソースコードでも読むことにする
あばよ
>>460 Edge-triggerはPCIデバイスでは使えない、PCIデバイスは全部Level trigger
つか、DOSでPCIバス叩いてた奴なんて少数派だと思うぞ。
>>461 YMF7x4のFM音源割り込みはモロにIRQだったけどなw
INTなんか使ってねーよ
>>463 PCIのIRQ割り込みは基本的にEdge trigger、しかしPCIの場合はこれをLevel triggerにしないとだめ
そのためPCIをサポートしているチップセットは、一部のIRQのみをLevel triggerにする機能がついてるわけ
その方法を探している。
Linuxのコードをざっと読んだところ、0x4d0, 0x4d1の二つのポートを使って、それが可能のようなのだが
これはどうやらEISA用のやり方らしい、PCIも同じ方法でできるのかどうかはわからない。
Linuxのコメントを読むと、APIC用の別のやり方があるそうなのだが...不明
465 :
464 :2005/08/19(金) 22:19:20
ごめん間違えた (誤)PCIのIRQ割り込みは基本的にEdge trigger、しかしPCIの場合はこれをLevel triggerにしないとだめ (正)PCのIRQ割り込みは基本的にEdge trigger、しかしPCIの場合はこれをLevel triggerにしないとだめ
>>466 Thx!、そうか、Intelの本家ページを探せばよかったのか!...
やはり0x4D0, 0x4D1の二つのポートを使うらしい。ただしIRQ1とIRQ2は絶対、Edge triggerで
Levelには変更できないそうだ、ありがとう!
>>467 お前英語読めねーの?
思い切り書いてあるんだが。
>>468 だから、上のマニュアル読んで言ってるんじゃないか。ああ、おせっかいだったか悪かったな。
「やはり...」の文脈の流れから見てわかんねーの?半島の方ですか?
後それからIRQ1,2に加えて8,13も無理みたいだな。
なにこれしきのことでファビョってるんだ?
DOS使いはレベルが低いね
IBM PC DOS 7.0J/V(または 2000) で REXX のプログラムの話は出て来ないものか。
>>467 16bit 環境でプログラムですよね?(プロテクトモードはよく知らないので)
ISA時代で使われていたテクニックそのままで良いですよ。
強いて違いを挙げるとすれば、
・大抵のPCIボードは、割り込みステータスレジスタがあり、これをクリア
しないと、割り込みハンドラからIRETしても、割り込みハンドラに再突入
する。
・PCIボードは、ISAボードと違い、割り込み共有可能。
つまり、
割り込みハンドラに突入=自分のPCIボードへ割り込みが入った
とは必ずしも言えない。
・PCIコンフィギュレーションレジスタを弄って、IRQを書き換える時、
レガシーデバイスと共有できない点に注意。
(レガシーデバイスは、レベルトリガじゃないのが、ほとんど)
まぁ、こんな所ですかね。
ところで、PCIボードを制御したいって、制御対象は産業用ですか?
産業用なら、メーカーから何がしか情報が出てませんかね?
>>473 産業用ではありませんNE2000互換のNICの制御を目的としております。
>割り込みステータスレジスタがあり、これをクリア
>しないと、割り込みハンドラからIRETしても、割り込みハンドラに再突入
>する。
なるほど、Levelトリガーゆえの挙動ですね。肝に銘じておきます。
あと、追加質問で大変申し訳ないのですが、LevelトリガーはEdgeトリガーとは
EOI発行のタイミングが異なると小耳に挟んだのですが、そこらへんは
どうなんでしょうか?
>>474 遅くなってすんません(週一で巡回しているもので)。
> あと、追加質問で大変申し訳ないのですが、LevelトリガーはEdgeトリガーとは
厳密な内部の違いになると あまり自信は無いです。
基本的には、割り込み処理を抜ける前に EOI で十分です。
(優先順位の高い割り込みへの割り込みを許す為に、先にEOIを発行するって
ワザもありとは思いますが、8259を更に弄る必要が無かったっけ?)
> NE2000互換のNICの制御
プログラムが主目的でなく、通信が主目的なら、NICに関して言えば、
メーカーさんから NDISとか呼ばれている DOS用のドライバが提供されて
いると思います。
それを採用するのも一つの手ではあります。
(100kb程度のメモリを占有するのがネックですが)
>>475 >基本的には、割り込み処理を抜ける前に EOI で十分です。
わかりました、ありがとうございます。
INT13の使い方について質問です。 AX=0x4300でIDEのHDDを書き換えようとしたら、エラーが出ました。戻り値はAH=0x01でした。 調べてみるとパラメータ異常ということで、試しにAXに代入する値を0x4100に変えて、 それ以外はまったく同じ条件でまったく同じセクタを読み込んでみると正常終了します。 読み込みが可能で書き込みのできない条件というのが、今ひとつよくわかりません。 エラーの原因と対策を教えてください。 環境は、Win98SEの起動ディスク(DOS 7.1)の上で実行しています。DOS窓ではありません。 LOCKも事前に実行しました。 マザーのBIOSも確認しましたが、HDDを保護するような項目は見あたりませんでした。
>>478 20GBです。
その後、試行錯誤してWinMeの起動ディスクから起動すれば、正常に書き込みできることが判明しました。
いずれのケースでもCONFIG.SYSは0バイト、ドライバ類は何も組み込んでいません。
何が違うのかさっぱりです。
定期age
PentiumD使いの俺がきましたよ
シングルタスクOSでデュアルコアCPU...
DOSBox(エミュ)使ったほうが開発しやすくないだろうか
485 :
は@ c178.016.c3-net.ne.jp ◆cplnFO9T0I :2005/09/16(金) 20:42:53
>>484 グラフィックアプリ、I/O直叩き
これをやるのにはエミュじゃ無理じゃない?
モノにもよるが、標準的なデバイスなら大体おkなんじゃない? 最終的には実機でデバッグすればいいんだし。
ふつークロス開発
つ[ハンマー]
489 :
デフォルトの名無しさん :2005/11/06(日) 16:37:59
DOSでPCIでネットワーク処理って楽しそうだな(w すなおにLinuxとかのフリーライセンスなマルチタスクOS使っておけばいいのに。
やれやれ、最近の若いもんはPacket Driverも知らんのか・・・ 困ったもんじゃて。
>>479 HDDの中身はWinMeでFDISKかけてないか?Win98かMeの時にWin2000との互換性取るためにVFAT他で仕様変わってるはず
>>491 INT 13でのアクセスなので、ファイルシステムは関係ありません。
ぶっちゃけ、初期化されてないHDDでもアクセスできるというか、
そもそもFDISK自体がINT13でHDDを初期化しているわけですから。
結局のところ解決できず、HDDは今のところ放置です。
そのかわり、今はUSBメモリで四苦八苦しています。
手持ちのノートパソコンをUSBメモリからブートさせたいのですが、
BIOSがタコでサポートしているディスク形式(ジオメトリ)が限られているらしく、
なかなかうまくいかなくて。
HDDエミュレーションの仕組みをよく理解していないので、MBRにパッチを当てて
動作をトレースしているところです。
ボリュームの排他ロックってのが必要じゃなかったっけ? たとえMS-DOSモードでも。 Meでは廃止されたのかな
>>494 事前にコマンドプロンプトからLOCKコマンドは実行したのですが、
それとはまた別の手続きが必要なのでしょうか?
ちょっと調べてみます。
496 :
デフォルトの名無しさん :2005/11/25(金) 00:59:57
ローカルにある三つのファイルをまとめて圧縮したいのですがこれをコマンドプロンプトでやるには どうしたらいいのでしょうか?DLLはWINDOWS標準でついているものを使いたいです。 例えばC:/マイドキュメントのa.log、b.log、c.logを c:/work/guro/の下に圧縮する場合 なんてコマンドプロンプトを打ち込めばいいのでしょうか? どうぞご教授お願いいたします。
>>496 つ[makecab file c:/work/guro/file.cab]
499 :
デフォルトの名無しさん :2005/11/26(土) 05:50:37
PITなんですが、インターバル間隔として設定されている値はどうすれば取得できますか? 例えば#0の場合、40hをただINするだけでは設定値は得られないみたいなんですが・・・ 何かコマンドを送って得られましたっけ?
あらら500
>>499 ググったらこんなの有った。あとはコマンド表見て考えれ
>8253/8254の動作中のカウンタの値を読み出すには、一旦ラッチコマンドを使用して値を確定させます。
>8254は他に "Read-Back command"を用いることで、現在のカウンタの状態(動作モード、OUT信号)を
>読み出すことができます。
>>477 |試しにAXに代入する値を0x4100に変えて、
|それ以外はまったく同じ条件でまったく同じセクタを読み込んでみると正常終了します。
ah=41は"IBM/MS INT 13 Extensions - INSTALLATION CHECK"だよ。
EXTENDED READはah=42。
Ralf Brown's Interrupt ListとBIOS Enhanced Disk Drive Specification
を読みなさい。
ほれ。擬似コード。このままだと動かないと思うよ。
inreg.x.ax = 0x4300;
inreg.h.dl = drive | 0x80;
segreg.ds = FP_SEG(pac);
inreg.x.si = FP_OFF(pac);
pac.size = sizeof pac;
pac.reserved = 0;
pac.blocks = sectors;
pac.ptr = FP_OFF(buff);
pac.seg = FP_SEG(buff);
pac.lbalow = lbasec.LowPart;
pac.lbahi = lbasec.HighPart;
503 :
デフォルトの名無しさん :2005/12/01(木) 14:52:14
age
DOSで動的リンクについて詳しいサイトとかってあったら教えてください。
AsciiNetの過去ログが詳しい。
506 :
デフォルトの名無しさん :2006/02/09(木) 13:51:40
PCを再起動しようと思い、INT 19Hと書いたのですが、 電源が再投入される訳ではないのですね。 Windowsを再起動したときのように、BIOSの起動からやり直すのは どうすればいいのでしょうか?
508 :
506 :2006/02/09(木) 18:05:40
>>507 再起動できました!
ありがとうございます。
( ・∀・) | | ガッ
と ) | |
Y /ノ 人
/ ) < >__Λ∩
_/し' //. V`Д´)/
(_フ彡 / ←
>>30
510 :
デフォルトの名無しさん :2006/03/29(水) 11:13:26
>175さんの質問に近いのですが質問です。 win2kProで現在動いているWindowsのプロセス(イメージ名)一覧 を返却するバッチを作りたいのですが、 win2kだとtasklistコマンド使えないみたいなので(XPProでは使えましたが) 困っております。どうすれば良いでしょうか?
512 :
デフォルトの名無しさん :2006/03/29(水) 18:31:10
ピュアDOSなのだと思うが、質問者にピュアDOSかどうかの区別がつかないから仕方がない
510は区別がついてるがスレ違いってところだろ。
>>1 の書き方見た感じ、VDMはHW直接叩けないからダメだとは思うね。
>>499 直接設定値は取得できないが、現在のカウント値を複数回読んで得られる最大の値は
かなり正確な設定値となる。
元ねたはPC-9801スーパーテクニックでシリアル通信速度を取得したい、という例だったかと。
半信半疑で試してみたら本当に正確な値が得られたのでマジびっくり。
>>501 8bit単位で入出力するからいったん16bitまるごと内部レジスタにラッチしないと正しい
カウント値が得られない場合があるんだよね。
515 :
デフォルトの名無しさん :2006/05/13(土) 11:07:36
MS-DOSでDMA転送を使うときに使用するメモリってどうやって確保するのでしょうか? mallocじゃ無理ですよね? Linuxだとカーネルメモリを確保する関数があるんですが、MS-DOSでは分かりませんでした。
>515 手元に資料が無く、適当に思い出しながら書いてます。 少量なメモリのDMA転送を行う場合: 普通にmallocして使ってください。 大量(1MB以上とか)なメモリのDMA転送を行う場合: ズボラなやり方 →メモリマネージャを使ってなければ1MB以上は、DOSの管理外なので 直接書き込んでしまいます。 真面目なやり方 →HIMEM.SYSならXMS、EMM386.SYSならEMSというメモリ管理機構が 使えるので、これでメモリを確保して使います。 Ver.7以降なら、VCPIやDPMIもデフォルトで使えるかも知れません。 (そうでなくても、そういうものが使えるマネージャが大抵用意されてます)
>515 補足です。 Linuxと違って、DOSは全て特権モードで動いているようなものです。 カーネルは全く保護されていません。 (カーネルが置いてあるエリアを適当に0クリアすれば、いつでもクラッシュできます) メモリも全く保護されていません。 (メモリ例外は起きません) 安心?して、自由きままなコードを書いて下さい。
518 :
515 :2006/05/13(土) 15:15:42
>>517 mallocで大丈夫なのですね。
HDDにDMA転送でセクタ書換を行っていたのですが、
試してみるとエラーとなってしまったのでmallocの問題とばかり
思っていました。
原因は別のところにありそうなのでもう少し調べてみます。
ありがとうございました。
BIOSの領域ってDOSからアクセスできますか?
>>516 XMS/EMS(除HMA)は物理アドレス取れないからアウト。
多分DPMIでも取れない。
よってズボラなやり方推奨。
>>519 BIOSだろうがI/Oだろうがアクセスしまくりです。
計算した数値をコンソールに出力したいのですが、どうすればいいのでしょうか?
>>524 Win32APIスレ辺りかな。つーか、聞く前に探すように。
527 :
515 :2006/05/15(月) 11:58:06
IDE接続のHDDにDMAにてセクタを書き換えたいのですがまだ上手くできません・・・。 コンパイラはOpen Watcomを使用して、DOS-32BIT(CauseWay Executable)として コンパイルしています。 この場合でもmallocしたメモリのアドレスをそのままDMA転送用のアドレスとして I/O レジスタに登録しても大丈夫なのでしょうか? 物理アドレスに変換する必要とかはないでようか? mallocにて確保したアドレスは4MBを少し超えたところになります。 I/Oレジスタへ確保したアドレスを登録しても、HDDにはアドレス0以降の内容が 書き込まれてしまいます。 どこかにサンプルソースとかないでしょうか。
528 :
515 :2006/05/15(月) 12:56:03
>>527 Open Watcomのスレがあったのでそちらで質問してみます。
アセンブラの勉強をしようと思って、MASMでアセンブルしてTurboDebuggerでデバッグしよと したら、Not a 32-bit Program と言われて拒否されました。 16ビット用のデバッガってあるのでしょうか?
>>529 debug, symdeb, exdeb, 16bit用のTurbo Debugger等々
>>530 サンクス。
16bit版のTurbo Debuggerもあるんだ。
探してみます。
532 :
デフォルトの名無しさん :2006/05/31(水) 19:14:48
Borland C++ 5.0って32ビットDOSアプリケーションを作れるのでしょうか? sizeof(int)ってすると2となるので16ビットアプリケーションになっている気がします。。。
>>532 32bitDOSアプリケーションを作るのには別売りのDOS Power Packが必要。
DOS Power PackはBC4.0or4.5用だが非公式にはBC5.0でも動く旨の文書がどこかにあったはず。
534 :
532 :2006/06/01(木) 00:11:18
>>533 DOS Power Packはプロテクトモードなので今回は使えないんです。
16ビットのままでもなんとか使おうと思っているのですが、__int64が未定義エラーに
なってしまいます。
16ビットコンパイラで64ビット整数を扱うのは無理なのでしょうか???
>>534 ↓これによるとVer.5.02JのBCC32から__int64が使えるようだが
ttp://mulnet.net/bcc5.html 32bit用コンパイラでコンパイルできて 16bit用で出来ないのなら無理なのだろう。
というか普通「32ビットDOSアプリ」というとDOSエクステンダを使ったものを指すので
必然的にプロテクトモード(と仮想86モード)を使うことになるよ。
ちなみにOpenWatcomの16bitコード用コンパイラ(wcl)なら__int64が使えた。
#この場合は16bit用なので当然 sizeof(int) == 2
非プロテクトモードで動く32bitアプリってどんなアプリじゃ。 64bitINT型が使いたいだけってことなら、C++でlonglong型を実装すれば いいんじゃね?
x86でプロテクトモードじゃない32ビットアプリ とか言ってるような輩は相手にするな
リアルモードで32bitレジスタアクセスすれば32bitアプリ ・・・とは言わんよな、普通は。
539 :
デフォルトの名無しさん :2006/07/23(日) 02:47:00
最近のマザボでDOSを起動する時、EMSドライバがエラー起こす・・ 対策方法とかあります? それとも諦めるしかない?
ウチは大丈夫 情報すくなすぎ
>>518 PC/ATのDMAコントローラは64KBごとのブロックをまたがる位置のDMAは
出来ないのでは?
PC-98にもその制限がありDMAするデータのサイズの二倍の領域を
mallocして前半がブロックをまたがる場合には後半の領域をDMAバッファ
にして対処したことがある。
>>527 DMAコントローラには物理アドレスを与える。
Phoenix Technologiesの"PCI-ATA-DMA"は読んだ?
元のPC/ATにはIDEのDMAコントローラは無いから、各社のPCIの
ATAコントローラを直接制御するってこと?PnP大変でしょ?
PICやAVRでIDE叩くよりマシ
543 :
デフォルトの名無しさん :2006/07/28(金) 22:10:52
INT 25h や 26h での質問。 セクタライトするとき lock unlock しないといけないはずだけど、どうするの? 解説書が無いので調べられない。細かい説明はいらないからソース書いてよ。
544 :
デフォルトの名無しさん :2006/07/28(金) 22:20:51
できればMASMでお願いします。MS-Cでもいいです。
>>539 これでダメならあきらめろ
device=emm386.exe ram frame=D800 i=D800-E7FF
548 :
546 :2006/07/29(土) 21:28:33
DOS/V用の表計算やワープロ(エディタじゃない)ソフトを使いたいが オークションでも出品されてない。 PC-98なら結構あるんだが 誰か作ってくれ!DOS用だからそんなに多機能じゃなくていい、むしろシンプルに! でも100行くらいしか使えない表計算なんていらないけどね
フリーでいくらでもあるのに
いくらですか? ん...? フリーなのに?
もしかして子供?
MS-Worksはちょっと便利かも。
>>553 未だに使っている。PC-98用とDOS/V用とWin3.1用があったかと。
>554
HYOは訳わからないっス
CXPは行数が少ないっス
超計算 ぺけぺけ 最高っス!
おいらはCSVが大好きっス
でもエクセルなんか使っても、100分の1も機能使ってないっス
ぺけぺけは究極のシンプル・イズ・ベストアプリっス
今の付加価値蔓延PC環境の中でおいらはもがいていたっス
こういうシンプリーなものがおいらには合うっス
で、エディタじゃないワープロのものってないっスか
ワードや一太郎はいらないっス
イメージ的にはこんなやつっス
http://homepage3.nifty.com/mzakd/starthp/sc10.html 用紙サイズが指定できて、エディタのように文章を打ち続けると改行するまでずーと
右に移動するものじゃなく、きちんと用紙サイズに対応して改行しなくても字が折り返す
やつで、せいぜい罫線が引けりゃ十分というものっス。
よろしくっス!
Ver4以下の一太郎。dashでもjump(教育用だっけ?)でも可。(386以下ならVer.3以前) 機能過剰はVer.4からだが、今のようなあからさまな変化(似非DTPソフト化)はVer.5以降。 そもそも文章打ちを最初からワープロでやろうってのが間違い。 入力、推敲はエディタでやって、ワープロソフトではそれ以外の作業を行う。(紙に合わせて文の折り返しの長さを調整したり効果を付けたり。絵や図を入れることも。) エディタだって折り返しカラム数指定できるものはある。
>557 折り返しできるエデイタでフリーのDos/Vタイプってありますか?
HyperCube
DOS で動く Java環境って無いの?
レスが無い... 無いのか.... or2
グラフィックもネットワークも標準である訳じゃないし VM作る気にもならなかったとしてもおかしくない罠
ハードディスクの ボリュームラベル の作成・変更・削除ってどうするの?
566 :
デフォルトの名無しさん :2006/08/16(水) 00:37:03
保守
568 :
デフォルトの名無しさん :2006/08/17(木) 21:47:31
>>567 mov ah,09h
mov dx,offset msg_korosuzo
int 21h
msg_korosuzo db "一応プログラミングのスレなのでそのレスはいかがな物かと思います。",0Dh,0Ah,'$'
system("label.exe …");
570 :
デフォルトの名無しさん :2006/08/17(木) 22:10:50
ボリュームラベル属性のファイルをルートに作るんじゃなかったっけ
>565 FAT(FAT12,16,32)は>570の通り。実際にそれを行うコマンドがLabelコマンド。 パーティーション自体に付くラベル(FS非依存)はHDDメニューあたりのエントリを書き換える。
わざわざ小細工して互換性の問題出すより 569がいいんじゃないの
Int 21h Function 440Dh Minor Code 46h
574 :
デフォルトの名無しさん :2006/08/18(金) 01:40:53
system って無敵関数だったもんな。format とかでお世話になった。
おれGUI開発したぜ! system("win.com")
system("del io.sys") system("del msdos.sys") system("del command.com")
C:\io.sys が見つかりませんでした。 C:\msdos.sys が見つかりませんでした。 C:\command.com が見つかりませんでした。
system("del c:\\ntldr")
ツリー状にフォルダがたくさんあって各フォルダの中のmp3ファイルだけを抜き出してコピーするにはどうすればいいの? できれば一度のコマンドもしくはバッチファイルで実現したい
>>580 for /R src %i in (*.mp3) do @copy /y %i dst
すげー、天才かよ
基本的なことで申し訳ありませんが、DOS窓でコマンド手打ちだと動くのに、バッチにすると一瞬で窓が閉じて何もされません・・・ なにがいけないのでしょうか?
>>583 バッチファイルの最終行にpauseって書いておくと幸せになれるかもね。
585 :
デフォルトの名無しさん :2006/09/18(月) 20:58:02
>>583 コマンドプロンプト(DOS窓)から実行すればおk。
587 :
デフォルトの名無しさん :2006/09/21(木) 19:12:48
DOSプログラムからフルスクリーンで system("notepad.exe"); で実行すると、DOS側がフルスクリーンから DOS窓になってしまいます。 (TURBOC, MS-DOS) ALT+Enter で手動で戻すのではなくて、 自動でフルスクリーンに戻すにはどうすればいいですか?
MS-DOSでDOS窓を表示させるとは ただ者ではないな
>>588 H/W PC9801 OS Windows98 でフルスクリーンからDOS窓でした orz...
ちなみに「MS-DOS プログラムにWindowsを検出させない」にチェックを入れると
フルスクリーンからDOS窓に変更されることはないのですが、
案の定system関数も実行されなくなってしまいます。
ALT+ENTER キーを仮想で押したかのような実験はまだしてません。
それより何かもっといい手があるかと思いまして。
>>587 なぜ、そのような変則的な操作が必要なのか、だれも理解できていないよ。
具体的なシチュエーションを簡潔に述べよ。
(注意:あるソフトで・・・→× とある業務ソフトで・・・→×)
>>590 具体的には、
・Win98に作成したDOSプログラムを起動。
・オペレーター(おばちゃん)が特定処理を行うと、CSV形式のデータを出力。
・その後、DOS側でsystem関数を使用し、作成したWindowsプログラムに
出力データを引き渡す。
・その際、DOS側では system関数に STARTコマンドを使用し、 /WAIT オプションで一時停止
・Win側プログラムはデータを処理して、LAN経由でサーバーに送信。自身で自動終了。
・DOS側はプログラム終了後に”送信完了しました”と表示。
・フルスクリーンが解除され、DOS窓状態に。
・おばちゃん「なんだか画面が小さくなってます」報告
・上司「なんとかならんのか」報告
DOSプログラムをWinに変更出来ないのはクライアントの予算の問題 orz
最初っからDOS窓にしときゃいい。
Win9xだからWM_SYSCOMMANDで適当にそれっぽいの送るなんていう いい加減な方法でも動作したような
>>590 理路整然が邪魔になることもままあることを学べ。学生よ。
596 :
590 :2006/09/29(金) 00:44:05
>>595 学生じゃなくてファーム屋なんだが。
>>591 の苦労は俺も味わったことがある。
俺の場合は、工員さんがDOSの黒い画面を毛嫌いするから逆だったが。
>>26 モロにハード周りの書籍「PC9801スーパーテクニック」っていう
本持ってるけど、誰か買ってくれないかな。
今書籍名で検索したら3500円だかでオクに出されてたけど
送料込み2000円ぐらいでいい。俺にはもう用がねえんだ。
中古屋に糞みたいな値段で売るのも癪だし必要な人間に売りたいので
処分に困ってるw
思えば中学生のころQuick CでINT21hとかやってたわ。懐かしい。
599 :
598 :2006/09/29(金) 16:30:49
すみません↑はスルーしてください。 amazonで中古が400円とかで売ってたわ。 シャレになんねーなこの価格崩壊。当時5000円もしたのにw
600 :
デフォルトの名無しさん :2006/10/03(火) 04:27:19
注文前に相場教えてくれてありがとう
PC9801スーパーテクニックって俺も持ってるわ。 あと、アセンブラの本が3冊出てきた。
UNDOCUMENTED DOSが出てきた
604 :
デフォルトの名無しさん :2006/10/05(木) 11:23:17
テキストファイルの全行を削除するDOSコマンドは ありませんでしょうか?
copy /y nul ファイル名
del fileして、copy nul fileとか?
del > file
rem > file
609 :
デフォルトの名無しさん :2006/10/06(金) 12:10:48
copy nul fileで出来ました。 ありがと! 追加で テキストファイルが空(0行、nul)ではない場合 Excelを起動するコマンドありますか?
↓を改行せずに1行で記述 mshta.exe "javascript: try{new ActiveXObject('Scripting.FileSystemObject').GetFile('file').Size&&ne w ActiveXObject('WScript.Shell').Run('excel.exe');}catch(e){}finally{close();}"
611 :
デフォルトの名無しさん :2006/10/06(金) 18:19:33
>>610 解りませんでした
言い方かえます。
テキストファイルのサイズがゼロ以外の場合、Excelを実行する
BATなんですけど
宜しくお願いします
613 :
デフォルトの名無しさん :2006/10/06(金) 18:56:45
>>612 言ってません。
BATファイルの作り方です。
メモ帳に
>>610 の
mshta.exe "javascript:try{new ActiveXObject('Scripting.FileSystemObject').GetFile('file').Size&&new ActiveXObject('WScript.Shell').Run('excel.exe');}catch(e){}finally{close();}"
をはりつけて、拡張子を.batにして保存すればいいのでは
そもそも"MS-DOS"用のExcelはない。
そもそもActiveX自体がWindows専用だけどね。 >610 警告:悪質なスクリプトを検出しました オブジェクト:FileSystem Object 活動:GetFile コンピュータが停止しました。このスクリプトを処理する必要があります: ファイル: C:\Documents and Settings\***********\デスクトップ\javascript:try{new ActiveXObject ('Scripting.FileSystemObject').GetFile('file').Size&&new ActiveXObject('WScript.Shell') .Run('excel.exe');}catch(e){}finally{close();} どう処理しますか? 処理: このスクリプトを停止する (推奨) この活動を 1 回許可する →スクリプト全体を 1 回許可する このスクリプトを認証する
ウイルスを掲示板に張るなボケカス
偉そうに根拠のない因縁つけてくるのは先生の方だけどね。
GetFileを使おうとしただけで悪質なスクリプト扱いか。
>>618 他人が妹のパンツをずらそうとしたら、兄として君は怒るだろう?
開発環境として聞きたいんだけど、 みんなが使ってる環境ってどんな感じ? 自分は家では、 OS: PC DOS 2000 CC: LSI-C 使ってるんだけど、ノートで使うと省電力機能がほとんど使えないから バッテリの消費が激しくて使えないから、BSD使ってる。 モバイルでDOS使ってる人っている?
dosidle 入れてもダメ?
開発環境としてなら、普通にWindowsのDOS窓でいいと思うのだけど。 どうしても純DOSでないと駄目?
>>625 Windows 9xは不安定
しかも窓だと色々と縛りがあったりしてウザイ
>>627 2KにDOSなんてねーだろ
エミュレータ使えってことか?
>>628 そういう言葉尻はどうでもいいからさ
つかさ、2kのコマンドプロンプトで出来ないことって、
そんなにないだろ。
パラレルポートの制御だってドライバいれればできる。
OSの乗換えを検討したほうがいいと思うのだが?
>>629 多分君はDOSを使う必要がないからコマンドプロンプトでいいんだと思う。
ここはDOSのスレであって、コマンドプロンプトでできることを話すスレではない
>>630 2KのコマンドプロンプトはDOSのシステムコールエミュレータだから
こいつで動かせないような直接ハード叩くようなコードは
それこそDOSスレで話す範疇じゃあなくなるんだが? 藻前さんの理論だとさ。
批判のための批判は自分の首締めるだけだからやめといたほうがいいよ。
直接ハードを叩かないDOSプログラムなんて、つまんなーい!
開発環境 コマンド プロンプト、所謂DOS BOX 実行環境 実機+DOS
デスクトップPCでISAバスの工業用ボード使ってれば別だが、
問題提起した人間はノーパソ使ってるって言ってるしな、
さほど特殊な環境じゃないだろう。
というわけで
>>630 の負け。
ハードがPCでよければ、WMWareとかqemuにPC-DOSインストールすれば 外側は省電力の効くWinのまんまでハードも叩ける開発環境がゲットできる
コマンドプロンプトでDOSのゲームができるとでも思ってるのか?
NetHackならできたぞ
638 :
デフォルトの名無しさん :2006/10/08(日) 19:12:54
できるよね
>>631 おまえさぁ、DOSシステムコールだけでプログラミングなんてあり得んでしょう。
>>634 >デスクトップPCでISAバスの工業用ボード使ってれば別だが、
えらい限定しますね、あなたのお仕事はよく分かりましたが・・・。
641 :
デフォルトの名無しさん :2006/10/09(月) 03:54:55
unko
642 :
デフォルトの名無しさん :2006/10/09(月) 09:34:57
del D:\xxx\yyy\*.txt でゴミ箱に行かない削除ってできましたっけ? shift+ctrl+削除みたいのDOSコマンドでできますか?
DOSどころかコマンドプロンプトすら全く使ったことがないのが丸わかりな質問だな
644 :
デフォルトの名無しさん :2006/10/09(月) 09:52:17
646 :
デフォルトの名無しさん :2006/10/09(月) 10:20:49
648 :
デフォルトの名無しさん :2006/10/09(月) 11:50:55
ウンコ
ウンコ迷惑
ここはいつから 「コマンドプロンプト相談スレ」 になったんだ?
コマンドプロンプトとDOSの違いもわからない奴が蔓延してるから どうしようもない
2chで句読点を求めるなよ。
>>639 DOS窓はDOSじゃないなんてつまんないこと言ってるから
ハード叩くのはDOSの範疇じゃないだろ、という
至極原理的な反応返されただけの話。
それとも、ハード叩かないのはDOSプログラミングではない
とでも言うつもりか?
一人しか言ってないのに、すべてが自分の対極とはどんな思考回路だ?
別にDOS上でハードに直接アクセスするのはDOSプログラミングの範疇だと思うが。
>>656 漏れもその一人しか相手してないつもりだが
そう読めなかったなら書き込み不足だな、申し訳ない
>>657 もちろんその通り
同じようにWin上のDOS窓だってDOSプログラミングの範疇だ
と
>>630 に反論してるだけ
よーするに、ターゲットがDOS上で動くなら開発環境は 実機だろうがDOS窓だろうがエミュだろうがなんだっていいんじゃないの ってことだろ。 つまらんことを何時までもグダグダと反論してるなよ。
これだから今時のDOS使いは・・・
662 :
デフォルトの名無しさん :2006/10/10(火) 05:30:33
VC++6でコンソールアプリケーションを作って コマンドプロンプトやそれを全画面にして動かすのは出来たのですが DOSをフロッピーから起動したところで実行すると変なエラーが出て (スタブが云々)実行されません。どうすればよいのでしょうか?
663 :
デフォルトの名無しさん :2006/10/10(火) 05:31:35
あ、言い忘れましたが、WindowsAPIは一切使っていません。 DOSのシステムコールだけで作っています。
DOS用のコンパイラで作る
VC++6はWindowsアプリケーションしか作れない。 コンソールアプリケーションだって、Windowsアプリケーションの内。 663のいうDOSのシステムコールとは何なのか気になる。 想像は付かなくもないが。
Windows用のコンパイラ使うとたとえコンソールアプリケーションでも 出来る実行ファイルはNE(Win3.1まで)ないしPE(NT系およびWin95以降)。 ついでに言うなら裏でWinMainだって動いてるしCの標準関数もMSVCRT.DLL等の DLLを呼び出して実現しているわけで。 裏でWindowsAPIが使われているのだから純粋なDOS上では動きません。 MS-DOSのシステムコールはINT20h〜27h,拡張用は2Fh。 指定レジスタにパラメータ入れて呼び出し。 BIOS,ハードウェアへの直接アクセスの制限もないから 直接叩いたほうが早いこともあるけどね。 ・・・・・・・って言って理解できればいいけどね。
そこでなぜか、「WindowsアプリケーションからINT 21hを読んだがうまくいかない」という方向へ↓
win16なら使えるがな
Win32でも使う裏技がある。といってもWin9xだけだが。
>669 そーゆーことするから2kやxpで動かないソフトが続出して困るんだよね。
>>670 いや、それだけはありえないから。あの裏技、マイナーすぎ。
672 :
デフォルトの名無しさん :2006/10/12(木) 02:40:16
自演乙
自演乙乙
>>668 win16だとリアルモード以外は286のプロテクトモードか286ディスクプリタで動いていたと覚えているが
どういう仕掛けでint xx系のソフト割り込みが使えていたんだろう。
DOSエクステンダでぐぐってみ
つーかWin16はint 21h使うのが前提だったから ファイルアクセス系のAPIがちゃんとそろってなかった
呼ばれるたびにCPUリセットしていたらしいが
だって、リセット以外にRealモードに移行する手段がないんですもの。
それは286の話。386以降では仮想86モードでリアルモードコードを実行していた。
メモリ4Mくらいの386マシンで 一度プロテクトモードに移行してから セグメントのリミットを4Gに設定してリアルモードに戻り 16bitコードで全領域にアクセスして、なんとなく偉くなった気分になってたな。 仮想86モードでは使えないし、あまり意義はなかったんだけど。
面白いと思うよ。
壁があることには変わりない
そりゃ今でこそ4GBも「壁」として認識されだしたけど
DOSの頃作られたlhaやzipはほとんど2G/4Gで壊れる死ね
そもそもDOSって4GB超のファイル対応してたっけ?
>>685 「そもそもDOS」ってどこのOSなんだろう。
>>685 対応していない。おそらく存在できない。
DOSでアクセスできるFAT16はパーティションサイズが最大2GiBまで。
FAT32も1ファイル4GiBまで。
あの... int 21h とか、int86 とかって、何ですか? ググったり、ヤフったりするのは嫌いなんで、 ウィキペディアったんですけど、わかりませんでしたorz...
ここは、古参のパソ通を彷彿とさせる素直な人が多いから好きだけど、
たまにバカが混じるから困るんだなコレが。
検索で調べる作業さえ嫌うバカの
>>689 にそんな説明しても、
わかる訳無いよ(wwwwww
>>689 へ。勉強する近道はググることだ。覚えておけ。
昔と比べて、どれだけ調べ物が効率的になったか気づいてくれ。
そして、Web上にドキュメントを作成した先駆者に
感謝の気持ちも忘れないようにな。
>>689 そこはウィキペディアしか調べてなくてもウィキるって言わないと
ウィキているということー
Interrupt ListもWebで鑑賞できる時代になったか。 PC-9800関係の割り込みは当然ながら載ってないけど。
かなり昔からあった覚えがあるが
698 :
デフォルトの名無しさん :2006/10/16(月) 05:37:16
,,,.. ‐‐ ...,,, ,..::':.,:.:.:.:.:.:.:.:.:.:.:.:=.:=.、 ,/.:.:.:/:.;.;.;.、.:.、:.:.:.、:.:.:.‐:.‐`、ヽ::ヽ, ./.:.:.ミ/""" ヽ:.:、:.:.:、:、.:.:.:.:.:.:i !..ヽ:.;、 . /i:/" ヽ:ヾ:.:ヽ:、;;:.:.:.:| ヽ:.:.i / |:i | >、ヽ:.、ゝッ.:.:| ヽ:l . / |::| l /,,,=.-、\:/z;.:+‐T ̄.:.:| / ̄\ / l:.l.---- "{;;;;'..} ヽ /r.= 、j.:.:.:.:.:.| | | `ー-..l:.l /,=、 `ー.' i/|ト` }|:.:.:.:.:.:i! | わ | |.:.:.:ト」. i !;:::'j "". ! |- ノ L|:.:.:.:.i! | ざ .| |.:.:.:.|ヽ{ヽ`´ ' /". |:.:.:.:|i! ∠. と .| |.:.:.:.i! ヽ" ,.' |:i:.:.:|i!. | ! | |.:.:.:|i! ヽ、 (_.) ,/>‐‐‐ 、 .|:i!.:.:|l.. | | |:|:.:.| i ` ー-- 一 / /-、リ.|.:.|.i. \_/ i:il:.:| i /<' 、 // `t.|.:l | . l!i:.:| i ゝへ.ヽソ\_/// `|;! ! i:.| / ヽ〈::`::〉、 V / ヽ
Interrupt ListってPC98のBIOSも何故か微妙に乗ってた記憶があるがw
700 :
デフォルトの名無しさん :2006/10/16(月) 08:02:23
int 10h
V!G!A! V!G!A!
いや、ここはあえてDCGAで
9801
ウィキるのにつかれました... orz つってきます.. さようなら...
キャラジェネ
706 :
net time :2006/10/19(木) 22:10:56
コマンドに"net time"時刻同期のコマンドがあるのですが、1度コマンドを実行すると10秒ほど経たないと次の"net time"コマンドが飛ばないようなのですが、すぐに2回目のコマンドを飛ばすことはできないのでしょうか? ご教授願います。
>>706 NET TIMEってLAN MANAGERのことならなんとか範疇かもしれない。
COMMAND PROMPTの使い方はすれ違い。
今、98Emu(np2.exe)+LSI-C86試食版で テキスト表示のゲーム作ってるんですが、 画面下部に表示されているファンクションキー表示と、 カーソルの点滅を消す方法って、どうすれば良いんでしょうか。 ゲームは動いてるんですけど、カーソルはちかちかしてるし、 ファンクションキーは使わないのに表示が残っているしで、 なんか格好悪いんです。 どなたか教えてください。
>708 LSI-C86を使ったことがないからわからんけど TurboCではconio.hに_setcursortypeってのがあって NOCURSORだっけかな?を指定するとカーソルを表示しなくなる、てのがあった。はず。 参考にはならんかな・・・
>>709-710 ありがとうございます。
エスケープシーケンスで解決できました。
割と単純な方法で済んでほっとしました…。w
712 :
デフォルトの名無しさん :2006/12/01(金) 12:31:45
net sendコマンドを使用して コンピュータ名とメッセージ内容の 入力を求め、その内容で送信するようなものを 作りたいのですがどうすればいいんでしょうか?
713 :
は@ c178.016.c3-net.ne.jp ◆cplnFO9T0I :2006/12/02(土) 17:59:03 BE:136177193-2BP(1000)
>>712 気合いで結合してsystemに入れてみる
714 :
デフォルトの名無しさん :2006/12/02(土) 18:13:43
>>498 >>ぴゅあさん
classpath何とか解決できました!!コンパイルもできました!!!
本当にありがとうございました!
715 :
デフォルトの名無しさん :2007/01/21(日) 11:47:46
XPのコマンドプロンプトから壁紙を変更する方法を 教えてください
changerootwindow.reg というファイルを作る
\\HKEY_CURRENT_USER\Control Panel\Desktop\ConvertedWallpaper \\HKEY_CURRENT_USER\Control Panel\Desktop\Wallpaper
718 :
デフォルトの名無しさん :2007/01/21(日) 12:39:06
レスありがとうございます DOS窓で \\HKEY_CURRENT_USER\Control Panel\Desktop\ConvertedWallpaper a.bmp とするとネットワークパスが見つかりませんとでます WinXPがDドライブだからでしょうか?
>>718 | 何について調べますか?
| ┌────────────┐
| |レジストリとは |
| | |
| └────────────┘
| [ オプション(O) ] [ 検索(S) ]
|
`──────────┐ ┌───
, '´l, ..| ./
, -─-'- 、i_ |/
__, '´ ヽ、
',ー-- ● ヽ、
`"'ゝ、_ ',
〈`'ー;==ヽ、〈ー- 、 !
`ー´ ヽi`ヽ iノ
! /
r'´、ヽ
`´ヽノ
\\HKEY_何たらで始まっている時点でレジストリキーのパスだって事に気づかないと。 regeditのコマンドラインからの使い方を知らないことには・・・
そもそもスレ違いだ。
722 :
デフォルトの名無しさん :2007/01/21(日) 16:23:41
何でレジストリが\\HKEYから始まるわけ?
725 :
365 :2007/02/07(水) 12:14:03
DOSで あるプログラムを、a.exe "引数パス指定" と起動しているのですが、 引数パス部分に空白が混じっていると、引数が2個と判定されうまく動きません。 空白が混じっている引数パスを一個のものとして認識させるには、 どうすればいいでしょうか?
>>725 a.exe が本当にDOSならばパスに空白が入ることはない。
a.exe C:\DOCUME~1\HOGE\MYDOCU~1\ABCDE~1.TXT
728 :
デフォルトの名無しさん :2007/03/15(木) 22:55:25
古いけど はじめて読むシリーズは最高にわかりやすくてよい
729 :
団塊親父 :2007/03/21(水) 13:24:38
プロフェショナルの皆様、教えて下され PC9821+MS-DOS6.2-Mind(Forth風言語)+MASMで 機嫌良くデジタルIOボードを使いロジックアナライザやプリント基板CADとかのアプリを作って遊んでおった やっぱり640×400dotのグラフィックが苦しくて、環境移行を考えWindowsのVBとかVCとか触ってみたんだが 何かDOSより退化している気がした、WebもNETもマルチタスクも要らないとしたらDOSがマシなのでは 例えば10msのタイマを作ろうとしてもダメだった、 ハードも直接叩けないらしい。 VBのピクチャボックスではスクロールすらできないようだしN88BASICより貧弱と思った 「何じゃこりゃ」という感じだった。 この感想は当っていますか? 現在PC/AT用のDOSは売られていますか?、探したけれど見つからなかった Windowsでも腕を磨けばDOS以上のことができる? Windowsでは無理、他のお勧めOSはありますか? 良き指針をお願いいたします。
ハードを直接叩けないのは必然的な進化の方向性。 Windowsの上でWindowsアプリケーションが、 PC-98版でもPC/AT版でも、今で言えばx86でもx64 (WOW64)でも 共通のバイナリで動くようにするため、 またそれよりなによりマルチタスクを実現するに当たって 現実的な解は(少なくとも当時)それくらいしかなかった。 そもそも理想的にはソフトウェアはハードウェアのことを意識するべきではないというのが 大昔からソフトウェアに関わる学者・研究者に根底に存在する風潮。 最近のコンピュータの性能向上でようやくWindows並に ハードウェアを隠しても性能的に問題なくなってきたというところ。
>>729 今でもデジタルI/Oボードを出しているメーカではドライバとライブラリを出している。
しかも大抵はドライバやライブラリは愚かサンプルプログラムも無料で。
従って、適当なボードと適切なライブラリを組み合わせればハードを直接叩くようなことも何ら問題ない。
リアルタイム所為はまぁ、工夫のしどころではあるが。
733 :
団塊親父 :2007/03/21(水) 23:09:13
皆様レスありがと。
>>730 さん
DOSもCも売ってるんですね、買って遊んでみようと思います。
果して自分のWin-XPマシンで動作するのか?
最近のWinマシンはPC/AT互換機なのか?
そしてグラフィックスはどうやって書くのか?
興味津々です。
>>731 さん
なるほどね、やっぱ普及時代から成熟期に入るとブラックボックス化してしまうんですね、
趣味的には面白く無いのでWinodwsには手を出すまいと思います。
何かオーディオの世界が、球から石へレコードからCDへ変って興味が無くなったのと似てます。
>>732 さん
確かにくぐるといろんなドライバがありました。
ただ「ソフトクロックは±200%も振れるので使わないように」と注意書がありました。
昔はNOPを勘定してれば良かったのですが、
結論としてはWin環境でリアルタイムサンプリンクするならば、外部からクロックを与える必要が有りそうです。
それとて、クロックは正確でも取込み処理のオーバーヘッドがものすごく
デバイスドライバ→DLL→変数→保存という処理に何μSかかるか誰にも解らないとのこと
参考になるスレが有ったらご紹介下さい。
リアルタイムで何かやるなら、それ専用のサブプロセッサ(とバッファ)用意するのが 最近の流れじゃないの。PC(Windows)側のレイテンシはそんなにシビアに要求しない。
そうだね。 パソコンをクロック測るためだけに使うのってもったいない。
計測とかだと、今はPICなんかで独立基盤に実装して シリアル-USBでデータだけパソコンに取り込む形が一番手軽なんじゃないかな 最近のPCじゃ手軽に使える汎用I/O自体なくなってるから 最低でもPCIなI./Oボード調達しなきゃならない OSもリアルタイム向きとはいえないし
>>733 氏
>果して自分のWin-XPマシンで動作するのか?
作成したDOSアプリは「コマンド プロンプト
(DOS窓)」で動作しますが、やっぱり
メモリ、I/O、割り込み、DMAには直接
アクセスすることはできません。
>最近のWinマシンはPC/AT互換機なのか?
OADGの発展系と言ってよいと思います。
目について違うところはIRQ16以上が
あることでしょうか?
>そしてグラフィックスはどうやって書くのか?
Win32 APIかDirectDrawを使用することに
なると思いますが、面倒そうです。
サードパーティ製の便利ライブラリがあるかも
知れません。
タイミングにシビアな計測等はハードウェア側で
完結させてしまうというのが当然のような流れに
なってますね。
A/Dなら自前のタイマ、でかいFIFOが必要なので
CPLDでは足りなくて、結局FPGAになっちゃったり
しますね。
ATバスの無いAT互換機なんて・・・
ATバスってISAのこと?
元々はね。
ATバスをIEEEが規格化したのがISAバス。正確にはEISAが制定されたときに一緒に付けられたらしい。
ttp://ja.wikipedia.org/wiki/Industry_Standard_Architecture その前にXTバスってのがあって、その上位互換がATバス。
>738
ちなみにレガシーデバイスは今でも見かけ上ISAバス経由ということになっている。
最低限のポート、メモリ領域、IRQ 、DMAの割り当ては昔からそのまま。これをもってAT互換機って事にしてるみたいだから。
もっとも今はIA(インテルアーキテクチャ)-PCとでも言いたくなる代物だけど。
そうか、XTバスのことを考えるとISAって呼ぶより ATバスって呼んだほうが自然だね
ポワーシェルは放置?
DOSでは動かんからな
なあ、前から疑問なんだけどフラットに32bitアドレス空間をアクセス可能な プロテクトモードをサポートした、かつハードウェアを直接叩く事ができる (仮想86モードで?)DOS上位互換なOS(DOS?)ってあり得ないのかな? DOSエクステンダではなくて。 それともそんなものを誰も作ってくれないだけ?
745 :
744 :2007/05/30(水) 01:32:17
I/O処理はEFIを呼び出せたり、Windows用のデバイス・ドライバを登録して 使用(流用)できたりしたら最高なんだが。 なおかつI/Oの直叩きもできる、と言うのは矛盾があるだろうか?
WindowsのDPMIは、Windows 3.x-9xのデバイスドライバ (VxD)が呼べたと思う 実質DOSエクステンダだけどね それに、IOだって直叩きしても実際にはVxDが割り込んで処理するし
Towns
751 :
デフォルトの名無しさん :2007/06/07(木) 23:28:27
ab123.jpgというファイルでabを900と書き換えて900123.jpg とする方法を教えてください。 ren ab*.jpg 900*.jpg とすると90023となり全体が5桁になり 900123になりません。 よろしくお願いします。
>>744 いまどきシングルタスクなんて…
マルチスレッドだとハード叩くと危険。
>751 そのまま維持したい部分(”123”)を "*"じゃなくて文字数分の"?"で表せば良いんじゃなかったっけ? >752 だからハードを直叩きするにはシングルタスクにするしかないだろ? そうすれば全部ひとつのアプリが管理するから余計な事を考える必要が無くて 自分が使う単機能なソフトを書くには楽なんだよ。
>>753 セクタ0のIPLからアセンブリコード書けば解決じゃね?
>754-755 セルフ開発環境どころからローダーすらなしかいw?
757 :
デフォルトの名無しさん :2007/06/08(金) 07:32:57
>753 ????で合わせても全体の文字数をrenが 一致させてしまうのでうまく行きません。 5桁から6桁にする方法が分からないのですが。
758 :
753 :2007/06/08(金) 12:44:54
>757 どうもDOSのRenameコマンドのワイルドカード表現には文字数による奇妙な制約があるみたい。 そういう場合、私は良くDIRコマンドの出力をリダイレクトするなどしてファイルに落とし、 エディターで1ファイルずつリネームするコマンドを並べたバッチファイルを作成します。 名前を変更したいファイルが何千件もあるとかなり大変ですが。 後は専用ユーティリティソフトを使うか自分でコードを書くしか無いような。 REXXのような正規表現を扱えるスクリプト言語が手近にあると便利です。
下手に実行してファイル失ったこと数知れず
>759 それが心配なら先に別のディレクトリなどへバックアップコピーを作っておけばよい。 また、いきなり本番を実行しないでまずは少数の失っても良いファイルに対する バッチorコマンドを作成して試しておく。 Renコマンド自体、もし変更後の名前が既にあるファイル名と衝突すると エラーで止まるのでそう危険じゃないし。
>761 意味が良く分からんが例えばXPが動作するPC上にVirtual-PCを導入して その上でDOSを走らせておいてゴニョゴニョやると言うような事かな? そうするとその仮想マシン上のDOSからアクセスできるハードディスク エリアに目的のファイル(のコピー?)を全て持ってくる必要があるな。
出来ればWin95を持っているといいんだけど、 そうじゃないと面倒かも まあFDD付いてるパソコンならいいんだけど、最近FDD無いPCもあるから、その場合、 virtual-PCにDR-DOSなんかを入れるにも、まずVFDを作らないといけないのだけど それを作るにも、まずはDOSが必要というジレンマ。
>>763 つ [FreeDOSのISOイメージ]
>>763 つ [FreeDOS/V珠洲版]
>>764 さんの FreeDOSのISOイメージでCDブートした場合は仮想HDDを用意して
それにインストールする事になるけど
これは 解凍したら .IMG が出来るんで、VirtualPCの仮想FDでそのまま起動可能になる
FreeDOS 1.0 のインストールCDもLiveCDになってるからISOイメージ読ませるだけで使えるぞ。 まあ所詮DOSだからHDDにインストールしても最初に1回手間が掛かるだけでそんなに容量食わないけどな。 OpenWatcomやnasmなどの開発ツールも含まれてるし。
XPに標準で入っているコマンドプロンプトで、whichやwhereにあたるコマンドは なんになるのでしょう?
ファイル郡に対して処理出来る FOR ファイル内容に対して処理出来る FOR はあるけど プログラムの制御命令としてはGOTO しかないさ
>767 whichはないんじゃないかな。 whereはdir /sで代用。
>>769 dir /s か。知らんかったんで勉強になった。
でもやっぱwhich/whereは作るしかないか。
cygwin入れてcygwin\binにパス通しておけば各種コマンド使い放題になるよ。
いいかげんバージョン mywhich.bat @%comspec% /e:on /c echo "%~$PATH:1" > mywhich explorer.exe "C:\WINDOWS\explorer.exe" > mywhich explorer ""
下記のような事がしたいのですが.batかjperlかkermitで可能な方法は無いでしょうか loop Escキーが押されたら終了 aキーが押されたら 処理1 0.3秒ポーズ 処理2 loopへ Aキーが押されたら 処理2 0.5秒ポーズ 処理3 loopへ PgUpキーが押されたら 処理4 loopへ HOMEキーが押されたら 処理5 loopへ
774 :
773 :2007/07/24(火) 07:45:55
DOSバッチでbu使ったらあっさりできました レスポンスに多少問題有るので今度はQBASICかLSI-C86あたりでやってみます
775 :
は@c178.016.c3-net.ne.jp ◆cplnFO9T0I :2007/08/06(月) 00:17:53 BE:50436825-2BP(1000)
master.libって結構色々と入っているのな。 BFNTのsuper_putぐらいしていなかったから驚いた。
776 :
デフォルトの名無しさん :2007/08/08(水) 18:17:55
純粋に32bitのDOSってあるの?
nai
Disk Operating Systemとしてなら窓含め腐るほどあるじゃん
ありがと。 じゃ、UNIXのCUIに行くわ。
780 :
は@c178.016.c3-net.ne.jp ◆cplnFO9T0I :2007/08/27(月) 17:47:08 BE:60523362-2BP(1000)
98のアナログパレットってひっちゃかめっちゃかにかき回しておk? CEDITでBFNTフォーマットの画像をいじっているとそうは感じられなくて....
よく意味わからんけど、何out しても大乗V
つ 常駐パレット
com形式のプログラムの開始位置アドレスが100hからなのは DOSが生のアドレスを扱っていて、0h〜077hまでに DOS側ですでに割り込みテーブルなどがしかれているからですか?
>>783 CP/Mとの互換性のため。
8086の割り込みベクタ・テーブルは0000:0000から。
いくらDOSでもそんなメモリの先頭付近にユーザープログラムを
配置したりはしない。
>>784 即レスありがとうございました
先頭64バイト程度の犠牲なら互換性を取る価値があったってことですか、なるほど
よく考えなくても100hはオフセットアドレスの話でしたね…
256バイトでしたorz
>>786 0x80からはコマンドラインで使っている。だから、256バイト丸々無駄にしているわけではない。
>>787 あ、80hにコマンドラインの引数を格納してたのは決まりごとだったんですね
度々ありがとうございます
789 :
787 :2007/09/05(水) 00:53:50
>度々ありがとうございます いや、私が書いたのは>787だけ。
>>789 あ…早合点してましたすみません
>>790 とても分かりやすいです、ありがとうございます
ORG 100H :START
DOS コマンドについて聞きたい事がありますが、 どこのスレが適当でしょうか・・・・
最近の若い人はDOSの使い方を知らない人が多過ぎます。 DOSのバッチを作成すれば仕事も自動化できるのに・・・・ 新人研修でまずはDOSを使うことを教えるべきだよな。
>>795 その場合には、わざわざ DOS じゃなくても適当な shell がいいと思う
DOS はフルパワーで IO 処理させるのが好きだ
WSH覚えたらバッチなんて馬鹿らしくて使えない。 最近はPowerShellにどっぷり
DOSでWSHやPowerShellを使うとは凄いですな
799 :
デフォルトの名無しさん :2007/11/09(金) 18:53:06
教えてください。 いま、ffmpeg に付属してた ffplay.exe(動画再生)をDOSコマンドラインでいじってます。 それの起動オプションのヘルプを見るには、【 ffplay -h 】だとドキュメントにあったので やってみても、何も表示しないんで、【 ffplay -h > help.txt 】とやったら、ファイルになって見れました。 それならってんで 【 ffplay -h > con 】なら出るかと思いきや、画面には出ませんでした。 ファイルで見れるから問題はないんですが、こういう場合画面に出す方法を知りたいんです。
知りたいですかそうですか。
cmdはdosじゃないから
802 :
799: :2007/11/09(金) 22:27:22
803 :
799: :2007/11/09(金) 22:51:09
>>800 >>801 どうやら、場違いなスレッドに質問したようで、失礼しました。
コマンドライン関係のスレッドがありましたので、そっちへ行きます。
cmdならスレ違いだと本人が気がついてるんだし。
Windowsでコマンドプロンプトが16bit DOSセッションへの 命令だったのは95(及び98&Me)までだったっけ? Win3.1だけだったって事はないよな。 W2Kは確か、もう32bit環境でのコマンドラインだったはず。
XPになってもcommand.comのバージョンは MS-DOS 5.00 のままだな。 Meの最新バージョンを移植とかできないだろうか・・・
まあ、NT系ではDOSのファンクションコールから先はNTVDMのエミュレーションだし。
Win3.1のアプリはDOSのファンクションリクエスト使ってたよね。 スワップファイルだけは32bitアクセスだったっけ?
@C1メ0ニ5!@ア0(チヘ!テ
何?
NO SYSTEM FILES
>>810 超早そう。ソース書く前にビルド完了してそうだ。
815 :
デフォルトの名無しさん :2007/12/04(火) 22:24:36
教えていただけると助かります。 現在、Win95でDOSプログラム(粒子解析系)を動かしているのですが なにぶん古いPCなので時間がかかります。 そこでこのプログラムをXPで実行できればかなり早くなるのではないかと思い 調べたところ、16Bitと32Bitの違いにより基本的にはXPじゃ無理で 仮想DOSマシン(VDM)上で起動すればできるかもしれないと書かれていました。 その手順通りにXP上で動かしてみたのですが、エラーで動きませんでした。 16Bitのプログラムを32Bitに変換するようなことって出来るのでしょうか? それともXPで動かすのは無理なのでしょうか。
>>815 ソースからなら修正しまくって変換できるかもよ。
俺は詳しくないがコーディングによる 16bitと32bitでは、データ型のサイズが違ってくるので その辺を意識すればどっちでも動くようにはできるかもしれない
>>816 >>817 プログラム素人なうえ、そのプログラムもほかの人が作ったものなので
ソースがあるかわかりませんが、ありがとうございます!
それとVirtual-PC2004というものでWin95がエミュレートできる?(理解が間違ってるかもしれません)
ようなのですけど、そのエミュレートした95上でなら動かすことができるでしょうか。
やってみれば早い話ですね…ありがとうございました。
つーかDOSプログラムならXPが動いてるマシンをDOSで起動して動かせば それなりに速くなるのでは。
>>818 再コンパイルの話(たとえ可能性だとしても)が無いところから見て、exeしかないんだろうな、多分。
そのプログラムのソースがあるならフリーでもいいからコンパイラを入手してリビルド。
C,C++はもちろんだが、Fortranなんかでも探せばあるだろ。
もし無くて、NTVDMでも弾かれてるなら仕方が無いからDOSで起動出来る環境を作れ。
VirtualPCとかでやっても遅くなるだけ(それでもマシかもしれないけど)だから純粋なDOS環境にしろ。
DOS起動用のシステム入りFDDはそういう指定でフォーマットすれば出来る(xp上からでも)
メモリとかの必要でconfig.sys弄るとなると知識要るけど。
もしPC-9800シリーズ専用とかだったら・・・手に負えん。ソフトの移植をできる人間に頼め。
>>819 >>820 丁寧にありがとうございます。
おっしゃるとおり、exeしかないのでソースがあるのかどうか確認してみます。
あれば、コンパイラというものでできる可能性があるということですね!
XPでDOS起動フロッピーを作成すれば、それだけでDOS起動できるようになるのでしょうか。
メモリ、PC98専用等の問題は大丈夫なはずなので、やってみます。
本当に助かります!
>>815 おまえのPCのXPをアンインスコして
W98にするのが一番速いだろうね
213 不明なデバイスさん 2007/11/10(土) 14:07:06 ID:W3p2XVa0
>>210 HDDパスワードクラックって言うより
DOSでMBR(メンテナンスエリア)丸ごと書き換えの方法
ttp://trashbox.homeip.net/nownow/20070107/ ここの下のソフトがあればダンプしてバイナリエディタで見れそう
ロシア系サイトらしいけどなんてソフトなんだろ?
HDDパスワードについてググってたらHitしたんですが
上記のHPに紹介されてるようなDOSツールをご存知ないでしょうか?
古いThinkPad240のBIOSアップデート中にフリーズし電源切って立ち上げたら
本体とHDDにロックがかかっていました
本体のパスは
ttp://sodoityourself.com/hacking-ibm-thinkpad-bios-password/などを 参考にEPROMリーダーを自作し解除が出来たのですが
その解析したパスがなぜか内臓HDDには通らずロックがかかった状態です
ローレベルフォーマットしてもロックは解除できないようで
色々検索してtteditorなども試してみたんですが上手くいかず上記書きこみのDOSツールを探しています
詳しい方いらっしゃいましたら検索のヒントでも教えていただければ助かります
宜しくお願いいたします。
>>824 他人様が掛けたpasswordをcrackしたいのがミエミエの糞は、死んでおいた方が良いよ。
826 :
デフォルトの名無しさん :2007/12/17(月) 11:56:02
>>824 つatapwdぐらいしかシラネ
>>825 わかんないならわかりませんって正直に言えよwww
827 :
デフォルトの名無しさん :2007/12/19(水) 11:17:35
申し訳ございませんが教えてください DOS画面で「〜」ってどうやって入力するのですか windowsのプロンプトでは「〜」はShiftを押しながら「へ」で入力できるのに dos画面でできなーいでこまっておりまする どうしても入力が必要なコマンドがありまして そこで滞っております
>827
追記ですが、もしかしたら「~」を入力しようとしたら「 ̄」(半角オーバーライン)が
表示されていますか?(上に挙げた文字自体は半角ではなく全角オーバーラインですが)
もしそうならJISコードとASCIIコードにおける同じ文字コード(0x7E)に対する
表記の違いに過ぎないので(バックスラッシュと¥記号のような関係)気にせず
そのままコマンド入力してください。多分、意図した通りに動作すると思います。
参考:
http://www.bugbearr.jp/?%E6%96%87%E5%AD%97%E5%8C%96%E3%81%91 の「メモ」「US-ASCII と JIS X0201 ラテン文字用図形文字集合」の項参照
CapsLockされてるとか
832 :
827 :2007/12/20(木) 09:16:46
>>828-831 ご指導ありがとーございます
解決いたしました
> 追記ですが、もしかしたら「~」を入力しようとしたら「 ̄」(半角オーバーライン)が
でした
まだまだ修行が足りませぬ
精進いたします
改めて御礼申し上げます
それでは失礼いたします
win2000, lsi-c試食版を使ってます USB接続MP3プレイヤーの再生順(ディレクトリエントリ順)を 変更したいと思い、少し調べてみました。 (UMSSortというソフトのコマンドライン版です) intdos()でレジスタ設定してbdos()でシステムコール25h,26hを使えば いけそうな気が…。
普通にシェルスクリプト(或いはバッチファイル)でできるレベルのことだろ。 そもそも、何故それをDOSでプログラミングしたいんだか。
>>834 ディレクトリエントリの順を変更がバッチファイルでできるの?
「エントリの順を」は「エントリ順の」の間違いです。すまん。 renやcopyでは駄目だったのは確認済みですが…。
>>833 int 25h/26hはFAT32には使えない。FAT32ならint 21h,ax=7305hになるが、
そもそもこいつらはWinNT系ではブロックされて使えない。
で、並べ替える簡単な方法は、ディレクトリ内のすべてのファイルを一旦一時ディレクトリに
移動してから、並べ替えたい順番で元のディレクトリに移動すること。
>>837 やっぱだめなのか…
win32APIとvisual basicあたりを使うのが無難ですかね
いったん別のところに移動して、ってのは考えてたけど
あまり頻繁にフラッシュメモリ上のファイルを移動するのは
どうかなと思ったのでやめました
なので、直接ディレクトリエントリを書き換える方法を模索してました
ほぼ毎日podcastを追加して、携帯MP3プレイヤーで聞こうかと。
使っているプレイヤーにランダム再生が無い(ディレクトリエントリ順に再生)ので、
PC側で操作するつもりでした。
いろいろ教えてくれてどうもありがとう。あとで本屋に行ってきます。
同じドライブ内の移動なら、DOSの頃からディレクトリエントリを書き換えるだけだぞ。 ディスク領域そのもののフラグメンテーションは起きない。 ちなみに、NT系で直接ディスクアクセスしたければ、 ドライブやディスクそのものをWin32のCreateFileで開けばいい。 普通にRead/WriteFileで読み書きできる。 当然スレ違いだけどな。
>>838 NT系で直接読み書きするには、CreateFile("\\\\.\\D:", 〜)などとして
ドライブをオープンし、ReadFile(), WriteFile()などを使う。
スレ違いなのでこの程度で。
>>839 そうなのか!って今思えば確かにそうだ・・・
なんか馬鹿でした。どうもありがとう。
途中までランダムにして移動させるバッチファイルは作ってあったので
(でもrenじゃ駄目だと分かって捨ててた)
それでやります!
>>840 直接はやっぱりwinでのプログラムですね。
いろいろ教えてもらえてよかったです。ありがとうございました。
最早どうでもいいんだけどさ、move使えばバッチファイルででもできるんだけどなぁ。
>>842 841です。そのつもりなんですが...
つーか、擬似シャッフルみたいなことをしたいのか。 だったらディレクトリを作ってそこに順番にcopyするだけじゃね。
>>844 そうです。擬似シャッフル。
copyすると時間もかかるしフラッシュメモリにも良く無さそうなので
教えてもらったとおりmoveで作りました
お世話になったかたがたへ
というわけで上手くいきました!ありがとうございました。
>>846 HDDは消耗品だ。ヤマダ電機行って新しいの買ってこい。
アケオメd('∀`)b! 奇跡の復帰を果たしましたぜ! ヤマダ行った後なんだけども… お騒がせしました!
VFL, VFZ の構造が知りたいです。 vfl.docに書かれている Nifty FLABO LIB 2 #1824 VFS .LZH VFL サンプルソース & 技術資料 って、今は昔過ぎてググっても見付かりません。 どこかこのファイルの入手方法はありますでしょうか
ホす
852 :
デフォルトの名無しさん :2008/05/27(火) 07:17:24
cat <in.txt >out.txt みたいなことできるdosのコマンドありませんか? (winは全バージョン可能) typeだとstdinからは無理っぽいんですが… copy con out.txt とかひねくれたの思いついたんですけど、これはstdinじゃないです。 困ってるのでよろしくお願いします。
853 :
デフォルトの名無しさん :2008/05/27(火) 07:25:51
more < in.txt とかいけそうなんですけど、やりたい事は標準入出力を使ったファイルのコピーなんです。 moreだと--MORE--とかゴミがつくので期待はずれになります。 できれば、テキストでなくてバイナリも標準入出力を通す(通過のみで処理しないフィルタコマンド)のありませんでしょうか。
findとか。
855 :
デフォルトの名無しさん :2008/05/27(火) 13:32:05
find,moreはテキストファイルはできるんですけど、バイナリでfind,moreすると転送先のファイルが壊れます。 試したらmoreでは上に書いたゴミはつきませんでした。 そのプログラムを自分で作れるんですけど、unixシェルの様にOS標準のを探してます。 他にないでしょうか。(特にバイナリ―ファイルの標準入力を受け付けるコマンド(フィルターとも言われます)です)
問題を整理しよう。 要は、標準入出力をスルーで流せる標準コマンドがないか、ということでよろしいか。 で、findもmoreも(改行を特殊処理するからか)出力が壊れると言うことだね。 findstrはどうだろう。今手元のcmd.exeからfindstr /v "^$" a.exe > fooしたら大丈夫なようだ。 # "^$"でいいかどうかは検討が必要だけどね。
857 :
デフォルトの名無しさん :2008/05/27(火) 14:41:43
やりたい事は、標準入力からファイルデータ(特にバイナリ)を入力するので、 もしそのコマンドなら、 findstr /v "^$" <a.exe > b.exe とかです。が、失敗します。
858 :
デフォルトの名無しさん :2008/05/27(火) 14:47:53
テキストファイルのときは、 more <a.txt>b.txt で出来ますが(実質copy /a a.txt b.txtと同じだけど意味が違う) バイナリファイルだとこのコマンドでは出来ません。 若しくは玄人向けのdosコマンドレファレンスのサイトご存知ないでしょうか。
CATくらい自作したらいいんじゃないかい。 DOSのパイプは中間ファイルを作るからあんまり面白くないけど。 Win9x系のパイプも中間ファイル式だったのにがっかりした記憶がある。
860 :
デフォルトの名無しさん :2008/05/27(火) 15:19:31
だから作れるんですけど… findstrはstdinでリダイレクト入力使うとバグってる(仕様)みたいだから作りたくなるのは山々ですが
技術力が高いスレで聞いてもいいんですけど。じゃ質問を少し変えると、 標準入力(リダイレクト < )を使ってテキスト・バイナリ・ファイルを作ることはで来ますか? できれば、後はパイプでできるんで・・・
862 :
デフォルトの名無しさん :2008/05/27(火) 15:29:43
標準入力の内容をそのままのデータで、ローカル・ディスク上のファイルにすることは出来ますか?と同じです。
DOSの仕様を回避するなら type o.jpg | findstr ".*" > p.jpg になるんですけど、まず、このo.jpg(バイナリ)をstdinから作りたいんですけど、そのようなコマンドありますか?
stdin/stdoutが通常はテキストモードでオープンされているから不都合があるってことかな? 手元に資料はないけどバイナリモードへの切り替える方法はあったと思うよ。
「標準」のコマンドだけだと、たぶん無理だと思う(wshでスクリプト組む場合は別) #ActivePerlを標準コマンド扱いにして強制インスコして、binmodeで #スクリプト組めばいいとかアホな回答を思いついたw
それね、できたよ。でもね、なんか原始人みたいだから教えてあげないww
867 :
デフォルトの名無しさん :2008/05/28(水) 00:49:31
comモデルまんせーヽ(´ー`)ノ
DOSには標準でdebug.exeがあるじゃないか。 aで必要なプログラムを叩き込め #com2txtでもいいけどw
869 :
亀 :2008/05/30(金) 22:10:52
cygwinとかUNIX like toolsってのは販促?
90年代末の乾電池ノートはDOSでしか動かんのよ BSD動く機種もあったけど
UNIX like toolsはDOS用あるよ
つ"UNI+"
>>872 「つ"UNI+"」
アスキーのパロディ版に載ってた「ユニクロス」の事ですか?(確かDOS上ではなく
CP/M上でさえなくスタンドアロンのN88BASICの上で動いていた。)
>>852-866 >>852 > cat <in.txt >out.txt みたいなことできるdosのコマンドありませんか?
> typeだとstdinからは無理っぽいんですが…
>>858 > テキストファイルのときは、
> more <a.txt>b.txt
> で出来ますが(実質copy /a a.txt b.txtと同じだけど意味が違う)
>
> バイナリファイルだとこのコマンドでは出来ません。
全然参考にならんとは思うが,MS-DOS Ver 2.11 の COMMAND.COM では
A:\IO.SYS がバイナリでも(ついでに不可視・システム属性とかでも)
type A:\IO.SYS >B:\IO.SYS
などとして正しくファイルのコピーができた(但し B:\IO.SYS のタイム
スタンプは当然 type 実行時のものとなる。)
875 :
デフォルトの名無しさん :2008/08/27(水) 21:10:09
なんかさ・・・ 「Aができるコマンドありませんか?」という質問をしている奴に限って その「A」は別の目的「B」を達成するための手段として本人が唯一 思いついたものに過ぎなくて、実は手段「C」やら手段「D」やらの方が より簡単に目的「B」を達成できたりする、ってことが多いんだよね。 catみたいなDOSコマンド、を連発している奴、本当は何がしたいの?
キャット空中三回転
ドスでファミコンが作りたいのですが どうしたら作れるでしょうか?
>877 まずは6502ニーモニックを使いこなせるよう自分で勉強だ。分からない用語はググれ。 幾つもの古本屋を渡り歩いてでも参考書を買いあさる根性も必要になるはず。
879 :
デフォルトの名無しさん :2008/09/21(日) 12:29:59
DOS の画面でBIOSのアップデートをしようとしているのですが、 afudos /iP5K-Pk上波線M1 ROM と打ち込みたいのですが、上波線の打ち方を教えてもらえませんか? キーボードの表示はあるのだが、どうしても打ち込めない。 それともBIOSのファイル自体を、名前変更してもOK?
>>879 使っているのが日本語キーボードで日本語キーボードの設定が済んでいるなら
Shift + ^
使っているのが日本語キーボードで日本語キーボードの設定が済んでいないなら
Shift + 半角/全角
881 :
879 :2008/09/21(日) 15:21:59
882 :
は@携帯 ◆cplnFO9T0I :2008/10/06(月) 09:56:24
master.libのsuper_putの実行速度をまとめた物ってないですか? 前に見かけたのですが見つかりません
コマンドプロンプトについてはここでいいのでしょうか? 分からない点があり教えていただきたいです。 検索してコマンド一覧などが乗っているHPを参考にいろいろなコマンドを実行してみているのですが editコマンドを使って終了したところ、 英語モード とかいうやつになったのですが、 これを日本語モードに戻したいのですが、検索したHPなどを見ると jp と打てば戻ると書いてあるのですが jp を試してみたところ 認識されてない みたいな英文がでてきます。 コマンドが変わったりでもしたのでしょうか? versionは 6.0.6001 とあります。
確か chcp 932 とかそんなんだったと思う。 違ったらごめんな。
C:\>type %windir%\system32\jp.bat @echo off rem Change the active CODE PAGE to 932 (Japan) CHCP 932 C:\>type %windir%\system32\us.bat @echo off rem Change the active CODE PAGE to 437 (United States) CHCP 437
886 :
デフォルトの名無しさん :2009/01/08(木) 20:19:40
質問です。コレ(↓) in ax,20h と、コレ(↓) in al,21h mov ah,al in al,20h は、結果は同じですか?ワードアクセスするとAHレジスタには21hの内容が入る。 (ポート020h,021hは例えで意味はありません) もし同じなら、なんで、ax 一括で読み込まないんでしょう?
>>886 8bit幅のアクセスしか出来ないとか?
890 :
デフォルトの名無しさん :2009/01/12(月) 11:40:53
20hからワードアクセスしたときの上位バイト(ah)と、21hからバイトアクセスした時(al)の内容は同じ物だっけ?
ハードの実装次第でどうとでもなる
892 :
デフォルトの名無しさん :2009/01/12(月) 13:43:33
DOS用ハードって実装次第だっけ?
CPUの信号線がどうなるかを調べれば分かるように、HW依存。
CPUの信号線がどうなるかを調べなくてもバス構成を知っていれば判るように、実装依存。
895 :
デフォルトの名無しさん :2009/01/12(月) 17:23:20
DOS用のハードのCPUって実装依存だっけ?
CPUが実装依存なんじゃない。周辺回路が実装依存なんだ。
DOS用のハードって何?
メモリー空間とか割り込みbニかのことだろ int21等は共通事項だが、ヒープ・スタックは実装依存に決まってるじゃん。
すげぇ、流れが捻じ曲がったよ。
なんでヒープやスタックが出てくるんだよ。 I/Oはともかく、1MB以下の空間ならメモリは一応DOSが管理してるだろ(ザルだが)
大丈夫、DOSも晩年は1MB以上の空間もちゃんと管理している。
902 :
デフォルトの名無しさん :2009/01/13(火) 00:13:18
mov ax,[20h] でahには21hのメモリの内容がはいるだろ。同じように、 in ax,20h でahには21hのポートの内容がはいるんじゃないの? オレって勘違いしていた?
入るとは限らないって上で何人も回答あるだろ・・・
>>902 メモリがそう読めるというのは、そう実装されているから。
I/Oがメモリ同様に実装されているかどうかは別の問題。
「マイコンの作り方」みたいな本でも探してきて一読するか、
諦めて布団被って寝るか、どっちかにしてくれ。
要するに原住民番号20-8番から20-15番まで来なさいって命令と、 原住民番号21-0番から21-7番まで来なさいって命令は別物ってだけだろ。
907 :
デフォルトの名無しさん :2009/01/13(火) 16:05:07
余計わかり辛いw
DOSの3.3 までと 5.0以降は分けないと アレだな 8086 と Z80も わけたほうが良いかもな CP/M のシステムコールをもっとMSX-DOSというものもあるからな。
s/もっと/もった/
MASMの話しなら、 ALは不定ってのは常識だな
>>902 みたいなのが、バッファオーバーフローで、ハッカーにやられる典型的なホール製造者ってことだな
911 :
デフォルトの名無しさん :2009/01/13(火) 19:09:25
902だが906の説明でわかったわ。 20年前はバイトアクセスしかしなかったから助かったのか。
例えばI/Oが16ビットカウンタだとしたら、8ビット2回に分けてアクセスしちゃまずいだろ。HとLでずれるぜ。
16ビットアクセスするのに同じアドレスを2回に分けて 読み書きしてた。
914 :
デフォルトの名無しさん :2009/01/14(水) 00:27:07
>>912 AT互換機の8254等はもともと8bit CPUの8085周辺用に設計されたものなので、
16bitタイマのレジスタでも、タイマ内部でダブルバッファ構造とすることで、
バイト単位での読み書きに対応できるようになっている。
具体的には、下位バイト読み込み時に16bitの値をテンポラリにラッチして、
後から上位バイトを読んでも下位バイト読み込み時に保持された値を読み
出す。 書き込み時には、下位バイトを書き込んだ時にはテンポラリに
ラッチし、後から上位バイトを書き込む時に、16bitデータを一括でレジ
スタに書き込むようになっている。
但し、上位/下位バイトアクセス中に、割込処理内で同じI/Oデバイスのレジ
スタにアクセスされると困るので、レジスタ読み/書き中は割込禁止しなけ
ればならん。
それに、AT互換機と違ってNEC PC-9801シリーズなんて、ダイナミックバス
サイジング機構を搭載していないので、8-bit I/Oが1バイトおきにマップ
されていて、そもそもワードI/O命令が使えない。
FMは出来たんだっけか? なんか特権モードで凄いのがあった気がするけど。
質問者のターゲットとする環境がAT互換機に限定できれば I/Oポートの20Hと21Hの用途も決まってるしワードアクセス可能かどうかも決まるんだが。
>>917 それこそを、機種依存したプログラムと言わずして、なんと呼ぼう?
構造主義進化論は脆くも崩れ去ったか・・・合掌
機種依存全盛の時代のOSのスレでそんなこと言われても……。
>質問者のターゲットとする環境がAT互換機に限定できれば AT互換機以外でDOSが動くのってあるの???
PC-98だろ。
>>920 まさかAT互換機用以外のDOSがない(なかった)とでも思ってるのか。
山ほどあるぞ 思いつくだけで数十シリーズ
>>920 くっそー!! 坊やみたいのが、うちらに管巻かせちゃうんだぞ!だぜ?
926 :
デフォルトの名無しさん :2009/01/17(土) 01:20:32
>>920 日立のB16、2020
富士通のFM-R、FM-16β
どれも、AT互換でもPC-98互換でもない独自アーキテクチャのパソコンだよ
これらの機種の性質の悪いところは、普段は人目に付かないけれど、ある所には大量にあるんだよ
PC-100
このスレ、何かクサイね。
>>921-927 それ、いつの時代の話?
まさか・・・20世紀??
全裸で外を出歩いて、「石器時代はみんな裸だったんだぞ!」
って言ってるようなもんじゃん。
デバドラやOSのAPIなど使わずにダイレクトにIN/OUTするのがDOS流
コンドームやピルなど使わずにダイレクトにIN/OUTするのが俺流
まるでピルを使うとダイレクトではなくなるような誤解乙。
935 :
デフォルトの名無しさん :2009/01/17(土) 13:24:49
>>929 一般人はいいよなぁ
ろくすっぽ資料の存在しない機械と格闘しなくてもいいから...
DOSなのに資料が無いって・・・
Windowsは、ハードの細かい仕様を気にせずに済むのがいいところだな
てか、ハードを動かすプログラムを書く奴はめったにいない。 鈍臭いアプリばっかり。
>>929 時代も変わったようだな。
坊やみたいなのがDOSプログスレの住人とはな。
だが、戦場であったらこうはいかないぞ。がんばれよ。
(って、20世紀の有名なネタも通じないのだろう f(^ー^;)
爆釣
941 :
デフォルトの名無しさん :2009/01/24(土) 00:06:19
ところで、PC-98 と PC-AT の I/O ポートの一覧というか空きポートが記されている表とかある? 昔の N88-BASIC のソフトを移植してくれという依頼が来た。
どんなソフトだ?
そもそも、ソフトの移植に何で空きポートが関係するんだ?
945 :
デフォルトの名無しさん :2009/01/25(日) 12:19:11
I/Oポートの話に割り込むようで悪いが、メモリの場合は、 Bit0-8 Bit9-15 Bit16-23 Bit24-31 0800H [あ] [い] [う] [え] 0801H [い] 0802H [う] [え] 0803H [え] 0804H [か] [き] [く] [け] 0805H [き] のように設計しているから、 mov ax,ds:[800h] ; AX=いあ と mov al,ds:[800h] mov ah,ds:[801h] ; AX=いあ が同じ内容になるんだけど、I/Oポートの場合は、 Bit0-8 Bit9-15 Bit16-23 Bit24-31 0080H [あ] [い] [う] [え] 0081H [お] 0082H [か] [き] 0083H [き] だとすると、 in ax,80h ; AX=いあ と in al,80h ; in ah,81h ; AX=おあ が違うって事か。(82h/83h ではメモリのような設計なので同じになる) Y/N (?)
>>941 神田神保町へ行けるくらいならいっそのいこと国会図書館(東京本館)までいってこい。
日本国内で出版された書籍・雑誌ならほぼすべて所蔵しているから本のタイトルが判るならそっちのほうが確実。
検索と登録利用者用サービスの一部はネット上から使える。貸し出しは出来ないけどな。
>>943 制御用にでも使ってたんだろ。それで専用の拡張ボード使ってて、ハードごと移植ってことでは?
>>945 そんな単純な問題では・・・
ttp://download.intel.com/jp/developer/jpdoc/IA32_Arh_Dev_Man_Vol1_Online_i.pdf >13.3. I/O アドレス空間
>連続する2 つの8 ビット・ポートを1 つの16 ビット・ポートとして、また連続する4
>つの8 ビット・ポートを1 つの32 ビット・ポートとして扱うことができる。
>アライメントが合っていないポートにアクセスするためのバスサイクル順序は特に
>定義されていない
>ハードウェアまたはソフトウェア上の理由でI/O ポートに書き込む順序が決められ
>ている場合は、その順序を明示的に指定する必要がある。
「13.6. I/O の順序」もあって、これも場合により重要になる。
>制御用にでも使ってたんだろ。それで専用の拡張ボード使ってて、ハードごと移植ってことでは? それを「N88-BASICのソフトの移植」とは普通は言わないと思うんだ。
948 :
デフォルトの名無しさん :2009/01/25(日) 20:39:59
Cバスユニバーサル基板か何かでI/Fを自作していたらあるかもね。
市販品だが、Cバスのフレームバッファを弄ってた記憶があるな。メモリとIOの両方でアクセス出来る。 アセンブラだったけど。
I/Oアドレスの一覧がわかったところで、もっと具体的というか実践的な使い方がわからないと 解析は難しいと思うんだけどね。 OUT 5FHみたいな変なポートもあったし、しかも機種ごとに働きが違ったりね。
何かの実行ファイル(hoge.exe)が あるファイル(hoge.log)を掴んでいて、 コマンドプロンプトからは書き換え不可(他のプロセスが使用中)で エディタで開くと更新可能です。 これをbatで編集(空にする)したいのですが、どう書けばいいですか。 ご教示願います。
エディタが読み込み専用モードで開いているだけでは? 本当に内容を更新できるの? 他のプロセスが書き込みモードで開いているなら、書き込めないはず
エディタでやると開くときから何も言われないんですよ。他で使ってるから上書き禁止、って注意もなく更新できてしまう。 今はプロセス落とすことなく6コのログファイルを手動でクリアしてるんだけど、batで1クリックでやりたいんです。
空っぽにはできないけど echo "" > huga.txt
それが効かないんです。 batで作って、いくらたたいても反応ないなと思い、コマンドラインから打って見てみたら「他のプロセスで使用中」って。
プロセスを止めればいいじゃん
>>956 0バイトのファイルを作るには
COPY NUL hoge.txt
TYPE NUL >hoge.txt
などでできるよ
>>958 すげえな、最上レベルの読解力のなさだなw
>>960 そういうことは、解決策を提案してから言え
ハンドル閉じれ
>>953 DOSとは違うし、目的と手段を混同していそうで、頭が悪そう。
ふつう unix などで昔から使われている手法だけど (Windows風に書けば) プロセスを止める(TASKKILL か NET STOP などで) ログを空にする(COPY NUL hoge.log か RENAME hoge.log 日付.log みたいな感じで) プロセスを再開する(hoge.exe か NET START などで) これが普通の方法だよ。 具体的にどう書けばいいのかは、hoge.exe の仕様によるから・・・
元がWindowsでコンソールアプリの話っぽいから、たぶんスレ違い。
みんなの自慢のバッチの機能を教えてくれ。
967 :
デフォルトの名無しさん :2009/07/21(火) 18:24:00
super.libの説明書、質疑応答ファイルの方に書いてある処理時間って どうやって計測したか判る方はいらっしゃいますか?
つ。プロファイラ。
969 :
デフォルトの名無しさん :2009/08/07(金) 02:01:37
>>968 ありがとうございます。LSI C-86の試食版で測ってみます。
970 :
デフォルトの名無しさん :2009/08/07(金) 02:05:38
って、LSI C-86に付いているプロファイラだと計測できませんね。 TurboCの方でできることを期待しておきます(すぐ出せる状態にない
971 :
デフォルトの名無しさん :2009/08/10(月) 12:30:33
ここで質問していいですか? set m=0123 if !m:~0,1! == 0 (echo !m:~0,1!) else echo else この「if !m:~0,1!〜」っていう書き方ってできなかったですか?
972 :
デフォルトの名無しさん :2009/08/10(月) 14:55:52
MS-DOSで何をプログラミングしているのですか?
できなさそうだね・・・ set m=0123 if %m:~0,1% == 0 (echo %m:~0,1%) else echo ... とするか、 setlocal enabledelayedexpansion set m=0123 if %m:~0,1% == 0 (echo !m:~0,1!) else echo X だな。 ! ! は遅延展開なので、遅延させてしまってはIF式を評価できないんだろね。
MS-DOSで遅延展開なんて出来ません
975 :
デフォルトの名無しさん :2009/08/10(月) 22:07:39
MS-DOSでプログラミングすることで得られる技術って何があるの? 例えば、極端ですがアセンブリ言語やC言語及びMS-DOSのアーキテクチャに詳しくなれる とか、
no
977 :
971 :2009/08/10(月) 22:50:35
>>973 なんですとー
%と!の変数が混在するパターンもあるのですね
ifの中でsetする必要があるので、後者でいけました
ありがとうー
>>975 Cとかポインタを多用する言語には最悪の環境です。
979 :
デフォルトの名無しさん :2009/08/11(火) 03:20:49
>>975 プロテクトメモリを自由に使えるようになる。
WINやLINUXと違い、リニアに4Gでも16Gでも使い放題。
>>975 温故知新だな。
余計な物がついていないから扱いやすいわけで学生さんが8085で演習を行う感じの基礎を学ぶためのものかな。
>>978 末期にはポインタ使わなくていい言語もあったし、XSCompilerとかもそうだった気がする。
今でもEuphoiraというポインタを意識しなくて良いマルチプラットホームな言語がある。
ただ、Euphoria Version.4.0でDOS版廃止。時代の流れだな。
981 :
デフォルトの名無しさん :
2009/08/18(火) 14:00:48 ちんこしゃぶれ