懐かしのMS-DOSプログラミング [sc](★0)
-
- 1
- 2010/04/21(水) 12:42:23
-
mov dx,offset msg
mov ah,9
int 21h
mov ax,4c00h
int 21h
msg db '懐かしのDOS時代のプログラミングについて語ろうぜ',0dh,0ah,'$'
-
- 298
- 2011/10/21(金) 18:02:45.48
-
>>292
・SYNCコマンドのパラメータ先頭1個が抜けてる、よって後続の設定値全部間違ってる。
・SYNCコマンド0x0Eを使えば表示はどのみち消える、STARTコマンド発行するか、SYNCコマンド0x0Fを使う。
・480ラインなのに16進数の0x480で設定してるから1152ラインとか無茶振りすぎる。
・480ラインに設定出来てもSCROLLコマンド設定しなきゃ見えない(はず)。
・上記修正してもBIOS AX=300Ch BH=32h INT18hの表示と違い、画面全体が水平方向にずれて何か変。
・ちなみにBIOSでも画面表示とカーソル表示は消えるので自前で再設定する。
-
- 299
- 2011/10/21(金) 18:05:04.21
-
BIOS解析してどういうパラメータ設定してるか見た方が早い気がする
-
- 300
- 2011/10/21(金) 18:15:24.95
-
まあそうだねー
>>292の質問は画面映らなくて困ってるって話なんで、それは何とかなるやろ
-
- 301
- 2011/10/21(金) 20:27:08.28
-
>>298
SYNCコマンドが1つ不足していたのと0x480を修正したら
テキストは左寄り&グラフィックは乱れていますが画面には映るようになりました。
ありがとうございます。
30行系ソフトのソースを見たのですがBIOSが対応していない26〜29行は
CRTCを制御して、25,30行はBIOSを使うようになっていたので
パラメータがわからなかったので…
パラメータはもうちょっと調べて見ます。
-
- 302
- 2011/11/02(水) 23:48:17.04
-
DOSの環境変数ってメモリのどこに記憶されているのでしょうか?
最初はDOSファンクションにあるのかと思っていましたがそれらしいのがなく、
CRT(getenv)のソースを見たらグローバル変数のポインタを参照して
その中から該当する文字列を返しているようでした。
たぶん、グローバル変数はStartupで設定されていると思うのですが…
-
- 303
- 2011/11/02(水) 23:56:00.48
-
DOS(コマンドプロンプトではない)なら
PSPのどっかに、環境変数を示すセグメントが書いてあるよ。
-
- 304
- 2011/11/03(木) 00:01:05.69
-
>>303
ありがとうございます。
やっぱりPSPですか…。
-
- 305
- 2011/11/03(木) 00:02:32.20
-
ds:2c
-
- 306
- 2011/11/03(木) 16:27:58.08
-
>>302
MS-Cならgetenv関数が用意してあるが
-
- 307
- 2011/11/03(木) 17:24:10.86
-
既にgetenvのソースを読んだ人に向かって
getenvでできるよ(キリッ とか言われても・・・
-
- 308
- 2011/11/03(木) 23:37:40.29
-
PSPの資料を見つけたのでなんとかなりそうです。
ttp://www5c.biglobe.ne.jp/~ecb/assembler2/7_5.html
-
- 309
- 2011/11/11(金) 22:30:52.49
-
質問。DOS(16Bit)上からのCONFIG.SYSで読込む、デバイスドライバーの*.SYSや*.EXEのHEADER情報と、
実行(起動?)手順が知りたいのですが、ググッたが参考になる所が見つけられませんでした。
コマンドライン(又は、AUTOEXEC.BATからの実行)での*.EXEのHEADER情報は、色々と見つかり参考にさせて頂きました。
デバイスドライバー又はコマンドラインで実行できる形式の物を作りたいと思っています。
お指導・ご指南を、お願いいたします。
-
- 310
- 2011/11/12(土) 07:36:04.35
-
EXEヘッダの情報と、デバイスドライバのヘッダの構造は勝手に調べてもらうとして
俺の記憶をたどると、
COM型ドライバはそのまま読み込まれ、EXE型はax=4B01(だったと思う)でロードされる。
後は、デバイスヘッダに書かれているアドレスに来るリクエストの指示に従って初期化や常駐等を行う。
デバイスヘッダは、とりあえずぐぐって最初に出てきたDR-DOSのページでも参考になるはず。
http://hp.vector.co.jp/authors/VA003720/lpproj/drdos/progdoc/sysprog/chap6j.htm
-
- 311
- 2011/11/18(金) 20:38:14.53
-
emm386とかのUMB領域の検出ってどうやってるんだろう?
-
- 312
- 2011/11/18(金) 22:57:49.03
-
4kBごとにメモリを読んで調べてたような・・・
怪しそうな領域はMSDで調べると「恐らく使用可」なんて曖昧な答えが出たりした。
-
- 314
- 2011/11/21(月) 01:16:07.22
-
>>311-312
該当アドレスにRAMを自作メモリーボードで繋げたら見つけてくれるんかな?
-
- 315
- 2011/12/08(木) 22:23:44.01
-
-
- 316
- 2011/12/15(木) 17:54:20.54
-
メガデモを98のDOSに移植したいんだけど、Milleniumを使う方法はないかね?
-
- 317
- 2011/12/16(金) 23:43:42.65
-
シーラスロジックにしとけ。16ビットカラーも使える。
-
- 318
- ◆0uxK91AxII
- 2011/12/17(土) 07:11:39.45
-
I/Oとメモリを見えるようにしてやれば使えるだろうけど、何かと手間
-
- 319
- 2011/12/17(土) 09:21:34.34
-
PCIは起動時にI/Oとメモリを割り当ててるから普通に見えるだろ。
(9821ではブリッヂを経由すると割り当てられないらしいが。)
PCI BIOSを使えばデバイス検索、リソース検索はできるから
1M以上のメモリアクセスをどうするかだ。
-
- 320
- 2012/01/10(火) 09:21:55.94
-
MS−DOSとは一体何だったのか
http://awabi.2ch.net/test/read.cgi/poverty/1326153783/l50
-
- 321
- 2012/02/25(土) 21:41:54.99
-
保守
昔は1バイトでも節約するのに苦労してたのに、
今はアプリ1つ起動しただけで数100MB食う有様。
メモリがいくら安くなったとはいえ、食い過ぎじゃないかと。
-
- 322
- 2012/02/26(日) 00:07:38.09
-
くたばれよジジイ
-
- 323
- ◆0uxK91AxII
- 2012/02/26(日) 12:31:53.24
-
MS-DOSなら16[Byte]単位での節約だよねー。
くたばれよジジイ
-
- 324
- 2012/02/26(日) 13:47:34.72
-
16 bits
-
- 325
- 2012/02/27(月) 14:35:58.53
-
OpenWatcom 1.9でnearポインタをunsigned longにキャストしたら
セグメント:オフセット形式になったんだけど、他のコンパイラもこんなだったっけ?
-
- 326
- ◆QZaw55cn4c
- 2012/02/27(月) 18:58:37.49
-
>>325
C はよくわからないけれども、アセンブラですら、4バイト確保してseg:off だから、多分そうじゃないかな。
-
- 327
- 2012/02/27(月) 19:15:13.91
-
>>291
今でもドライバ書こうとすれば…
-
- 328
- 2012/02/27(月) 23:11:26.15
-
プログラミングはUNIX(SunOS)から入ったから、ポインタのNEARとかFAR
とかはハァ?って感じだった。
-
- 329
- ◆0uxK91AxII
- 2012/02/28(火) 00:14:43.67
-
>>325
そこはFP_SEG, FP_OF, MK_FPを使おうか...。
>>327
X64なWindowsだと自由とはいかないんだけどね。
-
- 330
- ◆0uxK91AxII
- 2012/02/28(火) 17:51:04.75
-
nearなら無関係だったか。
-
- 331
- 2012/02/28(火) 18:51:22.22
-
MK_FPとかあったなー
今の今まで忘れてた
-
- 332
- 2012/03/25(日) 10:39:32.43
-
Turbo C++でやってみたけどsmall/large/huge共にセグメントアドレスは入らなかった
-
- 333
- 2012/03/25(日) 14:28:05.68
-
333
-
- 334
- 2012/04/27(金) 01:08:04.98
-
シフトキー
capsロック
numlock等
実際にはキー入力されないキーを利用して
バッチファイルを条件分岐したい
適当なdosプログラムが探せないので
作りたい
バッチファイルで返り血を読む方法も
よくわからないです
-
- 335
- 2012/04/27(金) 01:28:31.15
-
そいつはDOSの守備範囲外だ。
どの機種かはしらんがキーボードBIOSをつかうか、
あるいはキーボードI/Oを直接叩くしかないぞ。
-
- 336
- 2012/04/27(金) 01:32:28.40
-
>>334
こんなもんだろう
org 100h
mov ah,02h
int 16h
mov ah,4ch
int 21h
んでERRORLEVELで結果を見ればよろし
-
- 337
- 2012/04/27(金) 05:34:38.03
-
昔ならBUで一発だったのにな
-
- 339
- 2012/04/29(日) 20:59:15.23
-
アセンブラでexe形式のソフトを作っているのですが
コマンドラインからの引数はどのようにすると参照できますか?
-
- 341
- 339
- 2012/04/29(日) 21:49:32.99
-
exe形式ならES:0000hのPSPを参照すれば引数がわかるんですね。
-
- 342
- 2012/04/30(月) 22:22:15.63
-
psp:80hにコマンドラインの文字列が置かれ、同時にデフォルトDTAでもあった。
懐かしいねぇ。
-
- 343
- 2012/04/30(月) 23:06:33.05
-
過去形じゃなくて今でもそうだけどな
-
- 344
- 2012/05/01(火) 22:41:20.07
-
64bitOSの普及で過去形になりつつある。
仮想86モードがあっさり切られるとはね。
-
- 345
- 2012/05/02(水) 00:16:55.51
-
ロングモードから仮想86モードに移行できないだけで
仮想86モードが切られたわけじゃないと思うが。
-
- 346
- 2012/05/02(水) 13:44:20.24
-
逆アセンブラは何を使ってますか?
-
- 347
- 2012/05/02(水) 22:39:58.48
-
symdeb
-
- 348
- 2012/05/03(木) 10:12:33.13
-
wdis (the Open Watcom disassembler)
Current State|Wasm
http://www.openwatcom.org/index.php/Wasm
このページを共有する