DOSでプログラミング

このエントリーをはてなブックマークに追加
833デフォルトの名無しさん
win2000, lsi-c試食版を使ってます
USB接続MP3プレイヤーの再生順(ディレクトリエントリ順)を
変更したいと思い、少し調べてみました。
(UMSSortというソフトのコマンドライン版です)

intdos()でレジスタ設定してbdos()でシステムコール25h,26hを使えば
いけそうな気が…。
834デフォルトの名無しさん:2007/12/30(日) 11:13:23
普通にシェルスクリプト(或いはバッチファイル)でできるレベルのことだろ。
そもそも、何故それをDOSでプログラミングしたいんだか。
835デフォルトの名無しさん:2007/12/30(日) 11:45:48
>>834
ディレクトリエントリの順を変更がバッチファイルでできるの?
836デフォルトの名無しさん:2007/12/30(日) 11:47:26
「エントリの順を」は「エントリ順の」の間違いです。すまん。
renやcopyでは駄目だったのは確認済みですが…。
837デフォルトの名無しさん:2007/12/30(日) 12:36:32
>>833
int 25h/26hはFAT32には使えない。FAT32ならint 21h,ax=7305hになるが、
そもそもこいつらはWinNT系ではブロックされて使えない。

で、並べ替える簡単な方法は、ディレクトリ内のすべてのファイルを一旦一時ディレクトリに
移動してから、並べ替えたい順番で元のディレクトリに移動すること。
838デフォルトの名無しさん:2007/12/30(日) 13:11:13
>>837
やっぱだめなのか…
win32APIとvisual basicあたりを使うのが無難ですかね

いったん別のところに移動して、ってのは考えてたけど
あまり頻繁にフラッシュメモリ上のファイルを移動するのは
どうかなと思ったのでやめました
なので、直接ディレクトリエントリを書き換える方法を模索してました

ほぼ毎日podcastを追加して、携帯MP3プレイヤーで聞こうかと。
使っているプレイヤーにランダム再生が無い(ディレクトリエントリ順に再生)ので、
PC側で操作するつもりでした。

いろいろ教えてくれてどうもありがとう。あとで本屋に行ってきます。
839デフォルトの名無しさん:2007/12/30(日) 13:44:14
同じドライブ内の移動なら、DOSの頃からディレクトリエントリを書き換えるだけだぞ。
ディスク領域そのもののフラグメンテーションは起きない。

ちなみに、NT系で直接ディスクアクセスしたければ、
ドライブやディスクそのものをWin32のCreateFileで開けばいい。
普通にRead/WriteFileで読み書きできる。
当然スレ違いだけどな。

840デフォルトの名無しさん:2007/12/30(日) 13:44:57
>>838
NT系で直接読み書きするには、CreateFile("\\\\.\\D:", 〜)などとして
ドライブをオープンし、ReadFile(), WriteFile()などを使う。
スレ違いなのでこの程度で。
841デフォルトの名無しさん:2007/12/30(日) 13:50:22
>>839
そうなのか!って今思えば確かにそうだ・・・
なんか馬鹿でした。どうもありがとう。
途中までランダムにして移動させるバッチファイルは作ってあったので
(でもrenじゃ駄目だと分かって捨ててた)
それでやります!

>>840
直接はやっぱりwinでのプログラムですね。


いろいろ教えてもらえてよかったです。ありがとうございました。
842デフォルトの名無しさん:2007/12/30(日) 13:59:08
最早どうでもいいんだけどさ、move使えばバッチファイルででもできるんだけどなぁ。
843デフォルトの名無しさん:2007/12/30(日) 14:20:25
>>842
841です。そのつもりなんですが...
844デフォルトの名無しさん:2007/12/30(日) 14:36:15
つーか、擬似シャッフルみたいなことをしたいのか。
だったらディレクトリを作ってそこに順番にcopyするだけじゃね。
845デフォルトの名無しさん:2007/12/30(日) 14:46:34
>>844
そうです。擬似シャッフル。
copyすると時間もかかるしフラッシュメモリにも良く無さそうなので
教えてもらったとおりmoveで作りました

お世話になったかたがたへ
というわけで上手くいきました!ありがとうございました。
846デフォルトの名無しさん:2007/12/31(月) 08:21:14
こんな年末に発生しなくても良かったんだけど('A`)
ttp://d.hatena.ne.jp/honto117/20061117/p1

これに書いてある「.logを参考に(A)を書き換える処理を(B)に追加」と
もう一つ「最期まで無事に走ったら終了」の処理を書いて頂けないでせうか
847デフォルトの名無しさん:2007/12/31(月) 11:40:16
>>846
HDDは消耗品だ。ヤマダ電機行って新しいの買ってこい。
848デフォルトの名無しさん:2007/12/31(月) 11:41:58
>>846 最期
(-人-)ナムー
849デフォルトの名無しさん:2008/01/01(火) 04:02:04
アケオメd('∀`)b!
奇跡の復帰を果たしましたぜ!
ヤマダ行った後なんだけども…
お騒がせしました!
850デフォルトの名無しさん:2008/01/24(木) 12:38:56
VFL, VFZ の構造が知りたいです。

vfl.docに書かれている
Nifty FLABO LIB 2 #1824 VFS .LZH VFL サンプルソース & 技術資料
って、今は昔過ぎてググっても見付かりません。

どこかこのファイルの入手方法はありますでしょうか
851デフォルトの名無しさん:2008/05/11(日) 05:00:40
ホす
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--とかゴミがつくので期待はずれになります。
できれば、テキストでなくてバイナリも標準入出力を通す(通過のみで処理しないフィルタコマンド)のありませんでしょうか。
854デフォルトの名無しさん:2008/05/27(火) 07:32:12
findとか。
855デフォルトの名無しさん:2008/05/27(火) 13:32:05
find,moreはテキストファイルはできるんですけど、バイナリでfind,moreすると転送先のファイルが壊れます。
試したらmoreでは上に書いたゴミはつきませんでした。
そのプログラムを自分で作れるんですけど、unixシェルの様にOS標準のを探してます。
他にないでしょうか。(特にバイナリ―ファイルの標準入力を受け付けるコマンド(フィルターとも言われます)です)
856デフォルトの名無しさん:2008/05/27(火) 13:45:17
問題を整理しよう。
要は、標準入出力をスルーで流せる標準コマンドがないか、ということでよろしいか。
で、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コマンドレファレンスのサイトご存知ないでしょうか。
859デフォルトの名無しさん:2008/05/27(火) 14:57:54
CATくらい自作したらいいんじゃないかい。
DOSのパイプは中間ファイルを作るからあんまり面白くないけど。
Win9x系のパイプも中間ファイル式だったのにがっかりした記憶がある。
860デフォルトの名無しさん:2008/05/27(火) 15:19:31
だから作れるんですけど…
findstrはstdinでリダイレクト入力使うとバグってる(仕様)みたいだから作りたくなるのは山々ですが
861デフォルトの名無しさん:2008/05/27(火) 15:27:42
技術力が高いスレで聞いてもいいんですけど。じゃ質問を少し変えると、
標準入力(リダイレクト < )を使ってテキスト・バイナリ・ファイルを作ることはで来ますか?
できれば、後はパイプでできるんで・・・
862デフォルトの名無しさん:2008/05/27(火) 15:29:43
標準入力の内容をそのままのデータで、ローカル・ディスク上のファイルにすることは出来ますか?と同じです。
863デフォルトの名無しさん:2008/05/27(火) 15:51:04
DOSの仕様を回避するなら

type o.jpg | findstr ".*" > p.jpg

になるんですけど、まず、このo.jpg(バイナリ)をstdinから作りたいんですけど、そのようなコマンドありますか?
864デフォルトの名無しさん:2008/05/27(火) 15:54:27
stdin/stdoutが通常はテキストモードでオープンされているから不都合があるってことかな?
手元に資料はないけどバイナリモードへの切り替える方法はあったと思うよ。
865デフォルトの名無しさん:2008/05/27(火) 15:56:02
「標準」のコマンドだけだと、たぶん無理だと思う(wshでスクリプト組む場合は別)

#ActivePerlを標準コマンド扱いにして強制インスコして、binmodeで
#スクリプト組めばいいとかアホな回答を思いついたw
866デフォルトの名無しさん:2008/05/27(火) 23:07:10
それね、できたよ。でもね、なんか原始人みたいだから教えてあげないww
867デフォルトの名無しさん:2008/05/28(水) 00:49:31
comモデルまんせーヽ(´ー`)ノ
868デフォルトの名無しさん:2008/05/28(水) 22:40:13
DOSには標準でdebug.exeがあるじゃないか。
aで必要なプログラムを叩き込め
#com2txtでもいいけどw
869:2008/05/30(金) 22:10:52
cygwinとかUNIX like toolsってのは販促?
870デフォルトの名無しさん:2008/05/31(土) 00:18:33
90年代末の乾電池ノートはDOSでしか動かんのよ
BSD動く機種もあったけど
871デフォルトの名無しさん:2008/06/11(水) 18:00:20
UNIX like toolsはDOS用あるよ
872デフォルトの名無しさん:2008/06/11(水) 20:36:53
つ"UNI+"
873洩れ車@J算譜工房:2008/06/20(金) 22:05:39
>>872 「つ"UNI+"」
アスキーのパロディ版に載ってた「ユニクロス」の事ですか?(確かDOS上ではなく
CP/M上でさえなくスタンドアロンのN88BASICの上で動いていた。)
874洩れ車@J算譜工房:2008/06/20(金) 22:19:54
>>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コマンド、を連発している奴、本当は何がしたいの?
876デフォルトの名無しさん:2008/08/27(水) 22:29:09
キャット空中三回転
877デフォルトの名無しさん:2008/08/27(水) 22:56:18
ドスでファミコンが作りたいのですが
どうしたら作れるでしょうか?
878デフォルトの名無しさん:2008/08/27(水) 23:45:27
>877
まずは6502ニーモニックを使いこなせるよう自分で勉強だ。分からない用語はググれ。
幾つもの古本屋を渡り歩いてでも参考書を買いあさる根性も必要になるはず。
879デフォルトの名無しさん:2008/09/21(日) 12:29:59
DOS の画面でBIOSのアップデートをしようとしているのですが、
afudos /iP5K-Pk上波線M1 ROM
と打ち込みたいのですが、上波線の打ち方を教えてもらえませんか?
キーボードの表示はあるのだが、どうしても打ち込めない。

それともBIOSのファイル自体を、名前変更してもOK?
880デフォルトの名無しさん:2008/09/21(日) 12:41:55
>>879
使っているのが日本語キーボードで日本語キーボードの設定が済んでいるなら
Shift + ^

使っているのが日本語キーボードで日本語キーボードの設定が済んでいないなら
Shift + 半角/全角
881879:2008/09/21(日) 15:21:59
>>880 ありがとうございます。
882は@携帯 ◆cplnFO9T0I :2008/10/06(月) 09:56:24
master.libのsuper_putの実行速度をまとめた物ってないですか?
前に見かけたのですが見つかりません
883デフォルトの名無しさん:2008/11/01(土) 03:16:18
コマンドプロンプトについてはここでいいのでしょうか?
分からない点があり教えていただきたいです。
検索してコマンド一覧などが乗っているHPを参考にいろいろなコマンドを実行してみているのですが
editコマンドを使って終了したところ、 英語モード とかいうやつになったのですが、
これを日本語モードに戻したいのですが、検索したHPなどを見ると jp と打てば戻ると書いてあるのですが
jp を試してみたところ 認識されてない みたいな英文がでてきます。
コマンドが変わったりでもしたのでしょうか? versionは 6.0.6001 とあります。
884デフォルトの名無しさん:2008/11/01(土) 05:00:49
確か
chcp 932
とかそんなんだったと思う。
違ったらごめんな。
885デフォルトの名無しさん:2008/11/01(土) 09:38:04
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 一括で読み込まないんでしょう?
887デフォルトの名無しさん:2009/01/08(木) 20:39:49
>>886
8bit幅のアクセスしか出来ないとか?
888 ◆0uxK91AxII :2009/01/08(木) 21:03:44
>>886
HWに依存する事項だから。
889デフォルトの名無しさん:2009/01/09(金) 01:55:12
>>886
書いたヤツに聞け
890デフォルトの名無しさん:2009/01/12(月) 11:40:53
20hからワードアクセスしたときの上位バイト(ah)と、21hからバイトアクセスした時(al)の内容は同じ物だっけ?
891デフォルトの名無しさん:2009/01/12(月) 13:06:27
ハードの実装次第でどうとでもなる
892デフォルトの名無しさん:2009/01/12(月) 13:43:33
DOS用ハードって実装次第だっけ?
893 ◆0uxK91AxII :2009/01/12(月) 13:50:17
CPUの信号線がどうなるかを調べれば分かるように、HW依存。
894デフォルトの名無しさん:2009/01/12(月) 14:57:00
CPUの信号線がどうなるかを調べなくてもバス構成を知っていれば判るように、実装依存。
895デフォルトの名無しさん:2009/01/12(月) 17:23:20
DOS用のハードのCPUって実装依存だっけ?
896デフォルトの名無しさん:2009/01/12(月) 17:28:38
CPUが実装依存なんじゃない。周辺回路が実装依存なんだ。
897デフォルトの名無しさん:2009/01/12(月) 17:54:35
DOS用のハードって何?
898デフォルトの名無しさん:2009/01/12(月) 19:19:14
メモリー空間とか割り込みbニかのことだろ
int21等は共通事項だが、ヒープ・スタックは実装依存に決まってるじゃん。
899デフォルトの名無しさん:2009/01/12(月) 20:59:34
すげぇ、流れが捻じ曲がったよ。
900デフォルトの名無しさん:2009/01/12(月) 21:43:22
なんでヒープやスタックが出てくるんだよ。
I/Oはともかく、1MB以下の空間ならメモリは一応DOSが管理してるだろ(ザルだが)
901デフォルトの名無しさん:2009/01/12(月) 22:10:13
大丈夫、DOSも晩年は1MB以上の空間もちゃんと管理している。
902デフォルトの名無しさん:2009/01/13(火) 00:13:18
mov ax,[20h]
でahには21hのメモリの内容がはいるだろ。同じように、
in ax,20h
でahには21hのポートの内容がはいるんじゃないの?
オレって勘違いしていた?
903デフォルトの名無しさん:2009/01/13(火) 00:14:00
入るとは限らないって上で何人も回答あるだろ・・・
904デフォルトの名無しさん:2009/01/13(火) 01:25:11
>>902
バカまるだしw
905デフォルトの名無しさん:2009/01/13(火) 04:44:55
>>902
メモリがそう読めるというのは、そう実装されているから。
I/Oがメモリ同様に実装されているかどうかは別の問題。
「マイコンの作り方」みたいな本でも探してきて一読するか、
諦めて布団被って寝るか、どっちかにしてくれ。
906デフォルトの名無しさん:2009/01/13(火) 12:38:47
要するに原住民番号20-8番から20-15番まで来なさいって命令と、
原住民番号21-0番から21-7番まで来なさいって命令は別物ってだけだろ。
907デフォルトの名無しさん:2009/01/13(火) 16:05:07
余計わかり辛いw
908デフォルトの名無しさん:2009/01/13(火) 17:24:00
DOSの3.3 までと 5.0以降は分けないと アレだな
8086 と Z80も わけたほうが良いかもな CP/M のシステムコールをもっとMSX-DOSというものもあるからな。
909デフォルトの名無しさん:2009/01/13(火) 17:24:30
s/もっと/もった/
910デフォルトの名無しさん:2009/01/13(火) 17:26:56
MASMの話しなら、 ALは不定ってのは常識だな
>>902みたいなのが、バッファオーバーフローで、ハッカーにやられる典型的なホール製造者ってことだな
911デフォルトの名無しさん:2009/01/13(火) 19:09:25
902だが906の説明でわかったわ。
20年前はバイトアクセスしかしなかったから助かったのか。
912デフォルトの名無しさん:2009/01/13(火) 19:16:32
例えばI/Oが16ビットカウンタだとしたら、8ビット2回に分けてアクセスしちゃまずいだろ。HとLでずれるぜ。
913デフォルトの名無しさん:2009/01/13(火) 21:12:14
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命令が使えない。
915デフォルトの名無しさん:2009/01/14(水) 00:36:32
FMは出来たんだっけか?
なんか特権モードで凄いのがあった気がするけど。
916デフォルトの名無しさん:2009/01/14(水) 01:21:19
>>886の質問がアバウト過ぎるのさw
917デフォルトの名無しさん:2009/01/16(金) 21:34:17
質問者のターゲットとする環境がAT互換機に限定できれば
I/Oポートの20Hと21Hの用途も決まってるしワードアクセス可能かどうかも決まるんだが。
918デフォルトの名無しさん:2009/01/16(金) 23:48:07
>>917
それこそを、機種依存したプログラムと言わずして、なんと呼ぼう?
構造主義進化論は脆くも崩れ去ったか・・・合掌
919デフォルトの名無しさん:2009/01/16(金) 23:51:21
機種依存全盛の時代のOSのスレでそんなこと言われても……。
920デフォルトの名無しさん:2009/01/17(土) 00:01:43
>質問者のターゲットとする環境がAT互換機に限定できれば

AT互換機以外でDOSが動くのってあるの???
921デフォルトの名無しさん:2009/01/17(土) 00:05:56
PC-98だろ。
922デフォルトの名無しさん:2009/01/17(土) 00:08:00
>>920
まさかAT互換機用以外のDOSがない(なかった)とでも思ってるのか。
923デフォルトの名無しさん:2009/01/17(土) 00:11:16
山ほどあるぞ
思いつくだけで数十シリーズ
924デフォルトの名無しさん:2009/01/17(土) 00:12:35
ttp://ja.wikipedia.org/wiki/MS-DOS
PC-9800シリーズやEPSONの98互換機だけじゃないぞ。
AXやJ-3100シリーズも微妙に違う。
925デフォルトの名無しさん:2009/01/17(土) 00:49:15
>>920
くっそー!! 坊やみたいのが、うちらに管巻かせちゃうんだぞ!だぜ?
926デフォルトの名無しさん:2009/01/17(土) 01:20:32
>>920
日立のB16、2020
富士通のFM-R、FM-16β
どれも、AT互換でもPC-98互換でもない独自アーキテクチャのパソコンだよ
これらの機種の性質の悪いところは、普段は人目に付かないけれど、ある所には大量にあるんだよ
927デフォルトの名無しさん:2009/01/17(土) 01:24:09
PC-100
928 ◆0uxK91AxII :2009/01/17(土) 02:52:46
このスレ、何かクサイね。
929デフォルトの名無しさん:2009/01/17(土) 06:16:50
>>921-927
それ、いつの時代の話?
まさか・・・20世紀??

全裸で外を出歩いて、「石器時代はみんな裸だったんだぞ!」
って言ってるようなもんじゃん。
930デフォルトの名無しさん:2009/01/17(土) 06:27:54
>>914
Linuxではその手の違いを力技でエミュレートしてるよ
ttp://slashdot.jp/~bero/journal/352742
931デフォルトの名無しさん:2009/01/17(土) 07:01:29
デバドラやOSのAPIなど使わずにダイレクトにIN/OUTするのがDOS流
932デフォルトの名無しさん:2009/01/17(土) 07:09:12
>>929
DOSのスレで一体何を言ってるんだ?
933デフォルトの名無しさん:2009/01/17(土) 10:22:12
コンドームやピルなど使わずにダイレクトにIN/OUTするのが俺流
934デフォルトの名無しさん:2009/01/17(土) 11:15:32
まるでピルを使うとダイレクトではなくなるような誤解乙。
935デフォルトの名無しさん:2009/01/17(土) 13:24:49
>>929
一般人はいいよなぁ
ろくすっぽ資料の存在しない機械と格闘しなくてもいいから...
936デフォルトの名無しさん:2009/01/17(土) 16:26:45
DOSなのに資料が無いって・・・
937デフォルトの名無しさん:2009/01/17(土) 18:24:18
Windowsは、ハードの細かい仕様を気にせずに済むのがいいところだな
938デフォルトの名無しさん:2009/01/17(土) 18:41:54
てか、ハードを動かすプログラムを書く奴はめったにいない。
鈍臭いアプリばっかり。
939デフォルトの名無しさん:2009/01/17(土) 19:51:22
>>929
時代も変わったようだな。
坊やみたいなのがDOSプログスレの住人とはな。
だが、戦場であったらこうはいかないぞ。がんばれよ。

(って、20世紀の有名なネタも通じないのだろう f(^ー^;)
940デフォルトの名無しさん:2009/01/18(日) 02:52:40
爆釣
941デフォルトの名無しさん:2009/01/24(土) 00:06:19
ところで、PC-98 と PC-AT の I/O ポートの一覧というか空きポートが記されている表とかある?
昔の N88-BASIC のソフトを移植してくれという依頼が来た。
942デフォルトの名無しさん:2009/01/24(土) 01:03:43
どんなソフトだ?
943デフォルトの名無しさん:2009/01/24(土) 03:10:07
そもそも、ソフトの移植に何で空きポートが関係するんだ?
944デフォルトの名無しさん:2009/01/24(土) 05:56:36
>>941
神田の古本屋廻ってこい
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 (?)
946デフォルトの名無しさん:2009/01/25(日) 13:12:21
>>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 の順序」もあって、これも場合により重要になる。
947デフォルトの名無しさん:2009/01/25(日) 17:47:39
>制御用にでも使ってたんだろ。それで専用の拡張ボード使ってて、ハードごと移植ってことでは?
それを「N88-BASICのソフトの移植」とは普通は言わないと思うんだ。
948デフォルトの名無しさん:2009/01/25(日) 20:39:59
Cバスユニバーサル基板か何かでI/Fを自作していたらあるかもね。
949デフォルトの名無しさん:2009/01/27(火) 23:49:11
市販品だが、Cバスのフレームバッファを弄ってた記憶があるな。メモリとIOの両方でアクセス出来る。
アセンブラだったけど。
950デフォルトの名無しさん:2009/01/28(水) 01:08:50
カノプーがGDBRのCバス汎用インターフェイスボードを出していたね。RS-432ボード等もどこからか出ていた。
検索したが辿り着けなかったが・・・今でも、その手のものを置いているところはあるんだね。
懐かしかった。 → ttp://www2.wbs.ne.jp/~c2main/zaiko-06.htm
951デフォルトの名無しさん:2009/01/28(水) 23:18:01
>>941
98
ttp://www.webtech.co.jp/company/doc/undocumented_mem/
AT
ttp://www.ctyme.com/rbrown.htm

もっと単純に、シリアルポートを制御するような場合だって、I/Oマッピングがわからないと
手も足も出ないよ。
DOS時代のプログラミングってのはそういうもん。
952デフォルトの名無しさん:2009/01/28(水) 23:23:56
I/Oアドレスの一覧がわかったところで、もっと具体的というか実践的な使い方がわからないと
解析は難しいと思うんだけどね。
OUT 5FHみたいな変なポートもあったし、しかも機種ごとに働きが違ったりね。
953デフォルトの名無しさん:2009/06/23(火) 18:45:05
何かの実行ファイル(hoge.exe)が
あるファイル(hoge.log)を掴んでいて、
コマンドプロンプトからは書き換え不可(他のプロセスが使用中)で
エディタで開くと更新可能です。

これをbatで編集(空にする)したいのですが、どう書けばいいですか。
ご教示願います。
954デフォルトの名無しさん:2009/06/23(火) 18:49:32
エディタが読み込み専用モードで開いているだけでは?
本当に内容を更新できるの?
他のプロセスが書き込みモードで開いているなら、書き込めないはず
955デフォルトの名無しさん:2009/06/23(火) 18:59:39
エディタでやると開くときから何も言われないんですよ。他で使ってるから上書き禁止、って注意もなく更新できてしまう。

今はプロセス落とすことなく6コのログファイルを手動でクリアしてるんだけど、batで1クリックでやりたいんです。
956デフォルトの名無しさん:2009/06/23(火) 19:14:24
空っぽにはできないけど
echo "" > huga.txt
957デフォルトの名無しさん:2009/06/23(火) 19:35:52
それが効かないんです。
batで作って、いくらたたいても反応ないなと思い、コマンドラインから打って見てみたら「他のプロセスで使用中」って。
958デフォルトの名無しさん:2009/06/23(火) 20:47:02
プロセスを止めればいいじゃん
959デフォルトの名無しさん:2009/06/23(火) 20:53:39
>>956
0バイトのファイルを作るには
COPY NUL hoge.txt
TYPE NUL >hoge.txt
などでできるよ
960デフォルトの名無しさん:2009/06/24(水) 08:51:18
>>958
すげえな、最上レベルの読解力のなさだなw
961デフォルトの名無しさん:2009/06/24(水) 15:46:21
>>960
そういうことは、解決策を提案してから言え
962デフォルトの名無しさん:2009/06/24(水) 21:59:52
ハンドル閉じれ
963 ◆0uxK91AxII :2009/06/24(水) 22:45:56
>>953
DOSとは違うし、目的と手段を混同していそうで、頭が悪そう。
964デフォルトの名無しさん:2009/06/25(木) 10:48:34
ふつう unix などで昔から使われている手法だけど
(Windows風に書けば)

プロセスを止める(TASKKILL か NET STOP などで)
ログを空にする(COPY NUL hoge.log か RENAME hoge.log 日付.log みたいな感じで)
プロセスを再開する(hoge.exe か NET START などで)

これが普通の方法だよ。
具体的にどう書けばいいのかは、hoge.exe の仕様によるから・・・
965デフォルトの名無しさん:2009/07/04(土) 14:40:04
元がWindowsでコンソールアプリの話っぽいから、たぶんスレ違い。
966デフォルトの名無しさん:2009/07/16(木) 19:00:47
みんなの自慢のバッチの機能を教えてくれ。
967デフォルトの名無しさん:2009/07/21(火) 18:24:00
super.libの説明書、質疑応答ファイルの方に書いてある処理時間って
どうやって計測したか判る方はいらっしゃいますか?
968デフォルトの名無しさん:2009/07/29(水) 00:57:33
つ。プロファイラ。
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で何をプログラミングしているのですか?
973デフォルトの名無しさん:2009/08/10(月) 15:27:02
できなさそうだね・・・
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式を評価できないんだろね。
974デフォルトの名無しさん:2009/08/10(月) 21:06:58
MS-DOSで遅延展開なんて出来ません
975デフォルトの名無しさん:2009/08/10(月) 22:07:39
MS-DOSでプログラミングすることで得られる技術って何があるの?
例えば、極端ですがアセンブリ言語やC言語及びMS-DOSのアーキテクチャに詳しくなれる
とか、

976デフォルトの名無しさん:2009/08/10(月) 22:50:21
no
977971:2009/08/10(月) 22:50:35
>>973
なんですとー
%と!の変数が混在するパターンもあるのですね
ifの中でsetする必要があるので、後者でいけました
ありがとうー
978デフォルトの名無しさん:2009/08/10(月) 23:01:34
>>975
Cとかポインタを多用する言語には最悪の環境です。
979デフォルトの名無しさん:2009/08/11(火) 03:20:49
>>975
プロテクトメモリを自由に使えるようになる。
WINやLINUXと違い、リニアに4Gでも16Gでも使い放題。
980デフォルトの名無しさん:2009/08/13(木) 11:00:36
>>975
温故知新だな。
余計な物がついていないから扱いやすいわけで学生さんが8085で演習を行う感じの基礎を学ぶためのものかな。


>>978
末期にはポインタ使わなくていい言語もあったし、XSCompilerとかもそうだった気がする。
今でもEuphoiraというポインタを意識しなくて良いマルチプラットホームな言語がある。
ただ、Euphoria Version.4.0でDOS版廃止。時代の流れだな。
981デフォルトの名無しさん
ちんこしゃぶれ