5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

懐かしのMS-DOSプログラミング

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,'$'

2 :デフォルトの名無しさん:2010/04/21(水) 12:43:18
DOS2.11の頃はDOS自体にmasmが付いていた。
Microsoft Cは98,000円もした。
29,800円で発売されたTurbo-Cにみんな飛びついた。
無料で配布されたLSI C-86試食版が大活躍してくれた。

3 :デフォルトの名無しさん:2010/04/21(水) 12:45:10
code segment
mov dx,offset AI_chan
mov ah,9
int 21h
mov ax 4c00h
int 21h

AI_chan:
msg db 'このスレッドは天才チンパンジーアイちゃんが立てたものといわれています。",10,13,'$'
msg db '関係者以外のカキコはご遠慮ください',10,13,'$'

code ends

4 :デフォルトの名無しさん:2010/04/21(水) 14:08:56
2パスか3パスのコンパイラで
Phoenix Cとかなかったっけ?

5 :デフォルトの名無しさん:2010/04/21(水) 14:13:16
>>2
家にMSC/C++あるけどマニュアルとリファレンスが何冊も入っていて吹いた
箱でかすぎw CDもネットもない時代は大変だったんだなぁと

6 :デフォルトの名無しさん:2010/04/21(水) 14:56:09
MS-DOSプログラミング、って言うぐらいならDEBUGコマンドでやろうぜ
今でも何気に搭載されてるし

7 :デフォルトの名無しさん:2010/04/21(水) 14:57:35
今でもsymdebは手放せない

8 :デフォルトの名無しさん:2010/04/21(水) 19:12:12
DOSプログラミングは青春の思い出だな

9 :デフォルトの名無しさん:2010/04/21(水) 19:12:38
>>6
edlinも今も残ってるんだよね。
DOSの生みの親Tim Paterson氏への敬意なのかな。

10 :デフォルトの名無しさん:2010/04/21(水) 22:42:19
うちはQuickCだったな。
これでCをある程度覚えた。MS-Cと互換性が高かったのも良かった。
日本語コメント付きのサンプルソースは実に役立った。
DOSの時代にCを覚えておいて正解だったと思う。
今のWindowsプログラムは複雑で何が何だか分からない。

SYMDEBは便利だったなー。
これを弄り回して8086の機械語を覚えた。
なるほど8086は2つの数値を組み合わせたアドレスでMBをアクセスするのか、とか。


11 :訂正:2010/04/21(水) 22:44:18
誤) MB
正) 1MB

12 :デフォルトの名無しさん:2010/04/22(木) 01:54:01
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。

アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。

                  京都大学霊長類研究所


13 :デフォルトの名無しさん:2010/04/22(木) 09:42:43
int 21h
の代わりに
call psp:50h
でもDOSを呼べたよね。


14 :デフォルトの名無しさん:2010/04/22(木) 09:54:23
>>2
LSI-C86試食版が安定してきたのはDOS3.1の時代以降だね。
初期は特に、sscanf()のバグが多くて指摘するのも大変だったw

15 :デフォルトの名無しさん:2010/04/22(木) 22:47:03
Cから覚えたんだけど、アセンブラのことがちょっと分かってくると、
ライブラリ関数が既に用意されてるものであっても、
わざわざintdosとかで得意げにCからDOSファンクションを呼んだりしたもんだ。


16 :デフォルトの名無しさん:2010/04/22(木) 22:57:29
Cの標準ライブラリを使わずに
敢えて似たようなものをアセンブラで自作して
それだけ作ってプログラムしたりな

17 :デフォルトの名無しさん:2010/04/23(金) 12:00:14
プログラムの終了はINT 20HでもOK。

18 :デフォルトの名無しさん:2010/04/23(金) 12:52:16
今ならDOSBOXとかあるから、趣味ならあえて時代に逆行してもいいと思う。
どの環境でも動くからね。

19 :デフォルトの名無しさん:2010/04/23(金) 23:12:40
ファンクション31hで常駐終了するけど、
常駐させたプログラムを開放するファンクションがないので
あれこれ探したもんだ。

20 :デフォルトの名無しさん:2010/04/24(土) 07:15:19
今のWindowsプログラムより、DOS時代の方が難しく感じるものの代表だな。
>TSR

21 :デフォルトの名無しさん:2010/04/25(日) 18:46:59
LSI-C86はコメントが標準のしか使えないのが今にしてみるとめんどい
その代わりネストが可能だけど

22 :デフォルトの名無しさん:2010/04/26(月) 09:35:59
>>20
常駐するだけなら難しくないだろ。Biosフックも今で言うAPIフックみたいなもんだし。
そんなことよりも、常駐アプリでどうやってメモリを確保するかの方がw

PC-98限定で、裏VRAMをバッファに使う猫なんて常駐物があったけど、
同じく裏VRAMをバッファに使う一太郎とバッティングするもんだから
「ウイルスだ」なんて騒ぐマスコミまで出てくるなんて楽しい時代だったね。

23 :デフォルトの名無しさん:2010/04/26(月) 12:56:32
常駐開放=ベクタ復帰とメモリ開放

24 :デフォルトの名無しさん:2010/04/26(月) 18:23:49
あの時代は、どうやれば1byteでも減らせるかを考えてた。

25 :デフォルトの名無しさん:2010/04/26(月) 23:45:58
CP/M互換のシステムコール方法もあったよな。
CL=ファンクション番号でcall 0005hだったかな。

26 :デフォルトの名無しさん:2010/04/27(火) 22:40:34
CodeViewなんてのもあったね。
持ってたけどPC-98用なので今では使えない。
結局LSI-C + symdebの世話になってる。

27 :デフォルトの名無しさん:2010/04/28(水) 09:25:20
Programer's workbench

28 :デフォルトの名無しさん:2010/04/28(水) 22:43:10
DOS時代は (今も?) 統合環境なんて使わないのが常識でした。

29 :デフォルトの名無しさん:2010/04/29(木) 18:07:54
VzがあればIDEなんて不要

30 :デフォルトの名無しさん:2010/04/29(木) 22:35:44
俺はmifes派

31 :デフォルトの名無しさん:2010/04/30(金) 09:53:30
Ezカスタマイズ版やNitEmacsカスタマイズ版を使っていたのはいい思い出。

32 :デフォルトの名無しさん:2010/04/30(金) 13:18:13
EMSとかXMSとかの規格が出て来て、DOSプログラムのキャパが増えた時期が楽しかった。

33 :デフォルトの名無しさん:2010/04/30(金) 17:23:38
32bit DOS Extenderを使ったら、セグメントの呪縛から解放されて、天国にたどり着いたかのような気がした

34 :デフォルトの名無しさん:2010/05/01(土) 21:35:57
メモリモデルなんて言葉が懐かしい。
スモールでもかなりのことが出来たな。

35 :デフォルトの名無しさん:2010/05/02(日) 22:05:23
しかしスモールモデルのみとは言え、他に何の制約もないコンパイラを無償配布した
LSIジャパンの功績は大きかったと思う。

36 :デフォルトの名無しさん:2010/05/03(月) 16:34:41
LSI-C試食版に付いていたcppとmakeとlccのソースは何度も読み返した。
やはりプログラミングを覚えるには、他人の書いたある程度の規模のソースを読むのが一番。

37 :デフォルトの名無しさん:2010/05/04(火) 23:26:25
TURBO C Ver1.5つかってたときは、テキスト表示に
cprintf()やら、gotoxy()やら使って
ドラクエのメニューごときみたいなん作ってたなぁ

38 :デフォルトの名無しさん:2010/05/04(火) 23:50:13
TCのconio.hって思いっきり98依存の関数が多かったな。
text何たらとか。

39 :デフォルトの名無しさん:2010/05/06(木) 10:32:02
symdebよりdebugの方が使い出がある。
バッチコマンドからバイナリ作るとか。
ハードディスクのダイレクトアクセスとか。

40 :デフォルトの名無しさん:2010/05/06(木) 10:34:14
< バイナリ
---
> バイナリファイル

41 :デフォルトの名無しさん:2010/05/06(木) 12:01:36
>>35
βテストさせられたとも言える。標準ライブラリの出来が今ひとつだったからね。

>>38
IBM-PC依存の関数も山ほどあったような。

>>39
なんと言っても圧巻はX-ISH。
バイナリファイルのエンコーダ/デコーダであるISHの初期バージョンはバッチファイルによる実行モジュール作成方式で配布された。
# 今と違って、標準では転送ツールもデコーダがないから先ず最初にデコーダを作る必要があった。
# 今ならWebブラウザがバイナリファイルを受信できるしメールクライアントも添付ファイルのデコードはできて当然だけど。

42 :デフォルトの名無しさん:2010/05/06(木) 13:40:43
>>39
symdebで W100 2 0 1 やリダイレクトもできるぞ
(でも意味判らず試すなよ)

43 :デフォルトの名無しさん:2010/05/06(木) 22:18:42
>>41
DOS/V用Turbo-Cはお目に掛かったことがないな。日本でも売られてたの?

44 :デフォルトの名無しさん:2010/05/08(土) 03:03:00
>>43
DOS/V用じゃなくて、IBM-PC/AT互換機用だよ。DOS/V用は記憶にないけれど、あったとすれば日本専用でしょ。
# DOS/V自体が(事実上)日本専用なんだから。

45 :デフォルトの名無しさん:2010/05/08(土) 07:02:36
失礼。当時はAT互換機=DOS/V機だったから。

で、ということは英語版?

46 :デフォルトの名無しさん:2010/05/10(月) 11:15:54
マニュアルが日本語になっていて一部メッセージが日本語になっただけの翻訳版だったかな?
もう忘れたよ……

47 :デフォルトの名無しさん:2010/05/10(月) 13:13:04
Turbo-CのAX版かもね

48 :デフォルトの名無しさん:2010/05/11(火) 22:30:01
TCのマニュアルは物凄く親切な記述だったように覚えてる

49 :デフォルトの名無しさん:2010/05/12(水) 18:52:39
あの頃のBolandはよかったな
ライブラリのバグも少なかった気がする

パソ通の時代から、こういう「おやじ御用達スレ」はなくならんなw

50 :デフォルトの名無しさん:2010/05/13(木) 23:52:33
98用のTurbo-Cに入っていたpc98mouseという関数。
「Microsoft形式のマウスドライバには対応していません」
アンチMSぶりが良く現れてたな。

51 :デフォルトの名無しさん:2010/05/14(金) 23:54:44
98用DOS5.0が出たとき、NEC自身も、mouse.comはDOSシェル専用だから、
市販アプリでは使えないと明記していた。
でも実際にはMS形式のマウスに対応したアプリも多かった。

52 :デフォルトの名無しさん:2010/05/15(土) 17:46:37
NEC版、MS版マウスドライバの見分け方
マウス初期化 (int 33h ax=0) のbxの値で見分けられる。
MS版はbxにボタンの個数が帰ってくるが、NEC版は何も返さない。
予めbx=0としておけば、コール後bx==0がNEC版ドライバ。

53 :デフォルトの名無しさん:2010/05/16(日) 21:03:58
マウス使うのってドライバ経由が普通だっけ?
俺はなんかI/O叩いて使ってたような気がするが
さすがに記憶が曖昧すぎて覚えていない

54 :デフォルトの名無しさん:2010/05/17(月) 22:37:49
マウスドライバやEMSドライバは、一見風変わりなドライバだ。
組み込み後はDOSを経由せずにアプリから直接ドライバとやり取りする。

55 :デフォルトの名無しさん:2010/05/18(火) 07:20:40
>>54
???

56 :デフォルトの名無しさん:2010/05/18(火) 18:55:07
多分、普通のデバイスだと
アプリ -(int 21h)- DOS -(デバイス呼び出し)- デバドラ
だけど、マウスやEMSは
アプリ -(int xxh)- デバドラ
でアプリとデバドラが直接やりとりすることを挙げてるのだと思う。

57 :デフォルトの名無しさん:2010/05/21(金) 09:49:35
TCのインラインアセンブリは擬似命令だろうが何でも使えるので
おおっと思ったが、実はアセンブリソースを吐き出して
コンパイラはノータッチ、後はアセンブラ任せだった。

つまり、インラインアセンブリを使う場合アセンブラが別途必要。
(廉価版のTurboCには付いてなかったんだよ)

58 :デフォルトの名無しさん:2010/05/25(火) 23:01:03
xor ax,ax

59 :デフォルトの名無しさん:2010/05/26(水) 06:02:27
>>58
はるか大昔、それを得意気に使いまくってた上司に sub ax,ax を見せたら、
「そんな分かりにくいコーディングする奴があるかバカヤロォ」と怒られますたw

60 :デフォルトの名無しさん:2010/05/26(水) 09:37:56
>>59
得意も何も、今でも使われている常套手段じゃないか。
怒るのは問題かもしれないが、フラグに影響を与えまくる減算を使うのは間抜けだろう。

61 :デフォルトの名無しさん:2010/05/26(水) 09:52:29
はじめはxor使ってたが、ほとんどのCコンパイラがsub使ってたので途中からsubに変えた。
xorでもフラグは動くんじゃね?

62 :デフォルトの名無しさん:2010/05/26(水) 09:56:38
>>61
「ほとんど」をkwsk。
このスレなんだから、まさかとは思うがx86用じゃないなんて言わないよね。

63 :デフォルトの名無しさん:2010/05/26(水) 10:01:32
>>60
今でこそ常套手段だが、大昔のヘボPGには思いも及ばぬテクだったんだよ。
年代を言うとまた馬鹿が荒らすから言わんが。
そもそも、これを使う文脈でフラグに影響がどうたら言う時点で(ry

64 :デフォルトの名無しさん:2010/05/26(水) 13:18:42
DOS時代からMSCはSUBだったのは覚えている。
アセンブラのソースではよくゼロクリアにXORが使われてたが
8086だったらクロックや命令長で有利とかは無いはずだから、
Z80とか8080時代に何かあったのだろうか。

65 :デフォルトの名無しさん:2010/05/26(水) 14:07:49
>>64
8080/Z80だと命令長はXORもSUBも1バイトだし、クロックも最小だった。
でもなぜか、周りではみんなSUBじゃなくXORを使ってた。
もちろん、>>60の言うようなフラグどうたらの問題ではない。
(フラグを変えたくないようなレアケースではMOV命令を使ったから)

多分…小学校低学年で習うSUBに比べてXORはずっと高度な概念だから、
それを使う方が何となく「カッコ良かった」のかも知れないね。

66 :デフォルトの名無しさん:2010/05/26(水) 23:26:13
一応、理屈の上ではxorの方が
各bitの出力が他のbitに影響を与えない分
回路的には簡単になるはず。

だからといってクロックや消費電力に差がつくかというと
うーんという感じなのだけど。

67 :デフォルトの名無しさん:2010/05/26(水) 23:47:53
このサイト面白いよ。
ttp://hp.vector.co.jp/authors/VA003988/asm.htm

68 :デフォルトの名無しさん:2010/05/27(木) 20:34:59
ゼロクリアに xor 使うのは、決まり文句みたいなものだからね
subより分かりやすい

69 :デフォルトの名無しさん:2010/05/27(木) 21:46:13
subの方がxorより複雑そうなイメージだから
何となくxorの方を使ってしまう
まあ実際速度的に差はないんだろうが

70 :デフォルトの名無しさん:2010/05/28(金) 14:53:15
lsic86試食版はマニュアルがコンパクトにまとまっててよかったな。
標準ライブラリとかあのテキストファイル一枚でそうとう勉強になった。

71 :デフォルトの名無しさん:2010/05/28(金) 23:52:57
x86系なのに、引数渡しにレジスタを使うのは止めて欲しかった

72 :デフォルトの名無しさん:2010/05/31(月) 22:38:33
影の薄かった命令・・・LEA

73 :デフォルトの名無しさん:2010/05/31(月) 22:53:41
アセンブリプログラマにはたいへん有難い命令だが

74 :デフォルトの名無しさん:2010/06/01(火) 06:14:22
8086には、独立したNOP命令がない。(8080にはる)
NOPニモニックは、単にXCHG AX,AXの別名。
まぁ、実用上それで別に問題ないわけだが…
他にも、こういうCPUはたくさんあるんだろうね?

75 :デフォルトの名無しさん:2010/06/01(火) 09:11:10
jmp $+2がnop代わりとか。

76 :デフォルトの名無しさん:2010/06/01(火) 22:40:33
mov ax,axとかcmp bx,bxとか、使い道のない命令がいくつかあるね。
Z80だとLD (HL),(HL)はHLTに割り当てられていた。

77 :デフォルトの名無しさん:2010/06/01(火) 22:44:00
LEAは頻出じゃね?

78 :デフォルトの名無しさん:2010/06/03(木) 00:04:55
jmp short $+2で時間稼ぎ良くやったな

79 :デフォルトの名無しさん:2010/06/05(土) 21:24:35
NOPは3クロック、ショートJMPは11クロックくらいあったっけ確か。

80 :デフォルトの名無しさん:2010/06/08(火) 18:58:44
影の薄かった命令・・・LDS、LES

81 :デフォルトの名無しさん:2010/06/12(土) 13:21:48
おまいの頭皮のようにな

82 :デフォルトの名無しさん:2010/06/12(土) 19:31:09
どうせ面の皮は厚いんだろうけどねw

83 :デフォルトの名無しさん:2010/06/15(火) 11:24:35
Win95の頃になっても、config.sysにfcbsなんてパラメータがあるのに驚いた。
その時代までFCBファンクションなんか使っていたソフトあったのかな。

84 :デフォルトの名無しさん:2010/06/30(水) 22:25:20
int 29hって何だろう・・・
int 2ehって何だろう・・・

DOSの非公開機能って結構あったよね。

85 :デフォルトの名無しさん:2010/07/01(木) 13:12:01
ウイルスにフックされたのか?
((((;゚Д゚))))ガクガクブルブル

86 :デフォルトの名無しさん:2010/07/01(木) 13:22:14
と思ったら簡単に情報が見つかった(汗)
INT 29h 1文字出力
INT 2Eh DOSコマンド実行

87 :デフォルトの名無しさん:2010/07/01(木) 16:51:04
つ Interrupt List

ttp://www.cs.cmu.edu/~ralf/files.html
昔DLしてよくお世話になったけど、今じゃWebでも見れるんだな。
ttp://www.ctyme.com/rbrown.htm
検索できて便利…と思ったら、検索が動かんorz

88 :デフォルトの名無しさん:2010/07/01(木) 22:40:40
MIFES

89 :デフォルトの名無しさん:2010/07/02(金) 17:18:46
俺はVz+VJE(or WXP)派

90 :デフォルトの名無しさん:2010/07/02(金) 20:40:58
Vz+WXII

91 :デフォルトの名無しさん:2010/07/02(金) 20:43:14
DOSエクステンダー(苦笑)

92 :デフォルトの名無しさん:2010/07/02(金) 20:45:21
emm386.sys
HIMEM.SYS

93 :1:2010/07/02(金) 22:48:06
mifes派

94 :デフォルトの名無しさん:2010/07/02(金) 22:49:40
emm386はexe

95 :デフォルトの名無しさん:2010/07/03(土) 00:12:14
.sysの頃もあった。

96 :デフォルトの名無しさん:2010/07/04(日) 09:48:22
デバドラとしても、TSRとしても、外部コマンドとしても使える。
そんな器用なプログラムが流行ったな。

97 :デフォルトの名無しさん:2010/07/04(日) 09:55:51
kwsk

98 :デフォルトの名無しさん:2010/07/04(日) 12:50:32
Vz Editor のことか!!

99 :デフォルトの名無しさん:2010/07/04(日) 13:06:04
WinXPだが、Vzは今でも時々使ってるよ。
あの軽さと独特の使い心地は、そう簡単に手放せるもんじゃない。

100 :デフォルトの名無しさん:2010/07/04(日) 23:57:18
なぜ時々?

いつも使えよ

101 :デフォルトの名無しさん:2010/07/05(月) 00:14:59
TSRでありながらブロックデバイスとして登録される
smartdrv.exeも変わったプログラムだった。

102 :訂正:2010/07/05(月) 09:35:10
98依存だけど、懐かしい思い出が甦るサイト
ttp://www2.muroran-it.ac.jp/circle/mpc/front/old1/program/pc98dos/

103 :デフォルトの名無しさん:2010/07/05(月) 12:30:21
>>100
いや普段はViだからな。
あれとVzは用途がまるで違う。どっちか一つだけにはできない。

104 :デフォルトの名無しさん:2010/07/05(月) 22:20:12
>103
どんなとき、viよりvzが便利なの?
俺もviユーザなので、ちょっと気になった

105 :デフォルトの名無しさん:2010/07/08(木) 00:00:50
俺はDOS付属のedit派。
Windowsメモ帳とほぼ同じメニューだからとっつきやすい。

106 :デフォルトの名無しさん:2010/07/08(木) 18:48:56
男ならedlin

107 :デフォルトの名無しさん:2010/07/08(木) 19:36:14
真の男ならsymdeb

108 :デフォルトの名無しさん:2010/07/08(木) 19:41:31
と思ったら最近のOSには含まれてなかった(汗)
かわりにdebugを実行してみたら16ビットモードで起動した

109 :デフォルトの名無しさん:2010/07/08(木) 20:27:55
viユーザにとってはedlinの方がeditより使いやすい

110 :デフォルトの名無しさん:2010/07/08(木) 21:36:39
>>109は馬鹿な奴

111 :デフォルトの名無しさん:2010/07/08(木) 22:53:47
>>105
editって中身はQuickBASICから言語機能を外したやつだったっけ確か。
edit.comから起動される本体がqbasic.exeとかなってたような気がす。

112 :デフォルトの名無しさん:2010/07/08(木) 23:31:11
にしてもedlinってのはなあ。。。

113 :デフォルトの名無しさん:2010/07/09(金) 00:13:27
お前のeditだと、起動してから使えるようになるまで約10秒。

ところがedlinだと起動から「ファイル名を指定してください.」まで
約0.1秒。こいつは速い!


114 :デフォルトの名無しさん:2010/07/09(金) 09:45:10
男なら type con > main.c

115 :デフォルトの名無しさん:2010/07/09(金) 09:49:46
緊急時の
copy con autoexec.bat

copy con config.sys

ときどきやった

116 :デフォルトの名無しさん:2010/07/09(金) 13:13:12
ま、一度はやるわな

117 :デフォルトの名無しさん:2010/07/09(金) 20:19:03
暇だからDOS用の超軽量エディタでも作るか…

118 :デフォルトの名無しさん:2010/07/09(金) 21:15:59
edlinが14KBか…

>117
10KBで頼む

119 :デフォルトの名無しさん:2010/07/14(水) 22:29:34
メルコのMelwareとかに付いてた簡易エディタがあったよな
と思って調べたら36kBもあった。
中身を覗いたらMetaWare Cという余り聞きなれない処理系が使われてた。

120 :デフォルトの名無しさん:2010/07/23(金) 22:32:20
Z80から8086に入ってきたとき、86には条件リターンがないのに驚いた。

121 :デフォルトの名無しさん:2010/07/23(金) 22:39:19
movでフラグが変わらないとか

122 :デフォルトの名無しさん:2010/07/24(土) 04:44:50
>>120
いやむしろ俺は、8080/Z80系をはじめて触ったとき
条件Jump/条件Call/条件Returnと揃ってることの方に驚いたが…

123 :デフォルトの名無しさん:2010/08/01(日) 22:40:21


21 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)