facebook twitter hatena line google mixi email
★お気に入り追加


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

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

ここまで見た
  • 630
  •  
  • 2013/12/06(金) 12:07:18.72
>>629
config.sysに書くcomspecとかだったような
アプリがメモリ食い過ぎてコマンドシェル領域潰してしまった場合に、アプリ終了後にどこからcommand.comリロードするか、みたいな指定だとおもう

ここまで見た
  • 631
  •  
  • 2013/12/06(金) 12:26:09.39
link.exeを起動するとなのか終了した時なのかで違ってくるかもな

ここまで見た
  • 632
  •  
  • 2013/12/06(金) 12:34:01.80
起動するとです。

>Object Modules [.OBJ]:
これが出た時点で空のフロッピーユニットからガッと音がする。

link /? でhelp出してもやっぱりでる。
OS/2とデュアルサポート時代のバージョンなのでその辺が影響してるのかな。
ちなみにWindows2000のOS/2サブシステムで動かすと音は出ません。

ここまで見た
  • 633
  •  
  • 2013/12/06(金) 12:51:03.04
rmdrive a:

ここまで見た
  • 634
  •  
  • 2013/12/06(金) 12:54:09.97
>ガッと音がする。

どこかでぬるぽしているに違いない

ここまで見た
  • 635
  •  
  • 2013/12/06(金) 13:05:22.05
win32で動くdos用link.exe(Lnk563.exe)が見つかったのでそっち使います。
お騒がせしました。

ここまで見た
  • 636
  •  
  • 2013/12/06(金) 13:13:57.24
スレ的にはDOS版使わないとw

ここまで見た
  • 637
  •  
  • 2013/12/06(金) 13:27:37.04
昼休みの話し相手が居て良かったぬ

ここまで見た
  • 638
  •  
  • 2013/12/06(金) 13:29:23.12
超省メモリ設計を認証かなにかと勘違いするお子さまはお呼びじゃない

ここまで見た
  • 639
  •  
  • 2013/12/06(金) 13:33:29.74
Lnk563.exeはDOSエクステンダー対応のようでDOSXNT.EXEがあればDOSでも動きまする。
まあ、386以降とか制限は付きそうだけど。

ここまで見た
  • 640
  •  
  • 2013/12/07(土) 01:21:48.14
Win3.1用のリンカーとDOS用のリンカーって互換性有るんだっけ?どっちもMZ形式のEXE吐くんだよね

ここまで見た
  • 641
  •  
  • 2013/12/07(土) 01:30:31.52
Win3.1のexeは、MZヘッダーからはじまるDOSから起動された時用とNEヘッダーからはじまるWindows用の
二本立てだったと思う

ここまで見た
  • 642
  •  
  • 2013/12/07(土) 01:54:17.26
ああ、This program requires Microsoft Windowsってスタブの部分か

ここまで見た
  • 643
  •  
  • 2013/12/07(土) 01:58:29.34
仮想デバイスドライバのLEフォーマットは、.386も動的ロードが可能な.vxdも一緒なんだっけ?この当時の仮想デバイスドライバは片手間に練習した程度なので良く分かってないんだけど。

ここまで見た
  • 644
  •  
  • 2013/12/07(土) 11:07:44.24
>>640
.defの有無でDOS(MZ)用かWin3.x/OS2用かが決まる
.defの記述でWin3xかOS2かSTUBに何を使うかとか指定できる

ここまで見た
  • 645
  •  
  • 2013/12/07(土) 12:39:54.39
MS版OS/2がまだ残ってた時代か
今思えばWindows MeやVistaどころではない恥部みたいなもんだな

ここまで見た
  • 646
  •  
  • 2013/12/07(土) 12:42:34.23
90年頃のlink.exeだと、/QオプションでQB45用のライブラリ生成するオプションがあったな。なんでlib.exeではなくlinkの仕事なのか不思議てはあったが

ここまで見た
  • 647
  •  
  • 2013/12/07(土) 12:52:53.91
だってあれ、インタプリタでイメージ読み込んで実行できるんだからDLLみたいなもんでしょ>QLB

ここまで見た
  • 648
  •  
  • 2013/12/07(土) 12:54:52.40
そうだ、そう言えばQLBはインタプリタ環境の物だった。EXE生成時は使わないのか。

ここまで見た
  • 649
  •  
  • 2013/12/07(土) 13:03:27.18
QB45の当時はWin3の前夜でまだDLLみたいな知識は無かったしな

所でQBはPC互換機版には1~3も有ったんだけど、使ったことある人居るのかな
最初はQLBも無かったらしいから、行番のないGW-Basic程度だったのかな

ここまで見た
  • 650
  •  
  • 2013/12/07(土) 13:43:48.21
P-CODEを生成するオプションがあったよね
QBやVB、C++でも作れてたみたいだけど用途や仕組みが良くわからなかった

ここまで見た
  • 651
  •  
  • 2013/12/07(土) 13:54:37.07
QBは後に登場するVB以上に革命的だった
GWBasicのマシン語プログラムロードよりもクロス言語開発が楽になったし。事実上、使えるステートメントを無限に拡張できる最初のBasicだと思う。

ここまで見た
  • 652
  •  
  • 2013/12/07(土) 13:58:33.93
テキスト座標指定するQBのlocate文て、GW-Basicと同じrow, col指定だけど、これって9801版のQBも同じ仕様だっけ?
だとするとN88とは順番逆ってことになるけど、9801のN88ソース移植する時どうしてたっけ

ここまで見た
  • 653
  •  
  • 2013/12/07(土) 17:05:00.86
N88とはそもそも基本的なところで互換性のない文法が多すぎて、フツーに全面書き換えだった
そのうちめんどくさくなってdeclare sub N88LOCALE(x%, y%)とか作ったな
中学生の頃

ここまで見た
  • 654
  •  
  • 2013/12/07(土) 17:40:31.08
NEC版QBはMSの標準Basic仕様とN88との板挟みだったわけか。
確かQB自体はGW-Basicを行番付きのまま読み込んで実行できるのも謳い文句になってたしな。

ここまで見た
  • 655
  •  
  • 2013/12/08(日) 00:15:45.37
>>650
QBって、ネイティブコード吐かずに常にP-Codeかと思ってたけど違うの?
ネイティブコードを吐けるBasicは32bit版のみになったVB5からじゃないのかなあ。

ここまで見た
  • 656
  •  
  • 2013/12/08(日) 00:20:55.64
>>655
QBはネイティブコンパイラとインタプリタのデュアル環境で
MS-BASICはネイティブコンパイラ専用。
VB for MS-DOSもネイティブコンパイルできたぞ。

ここまで見た
  • 657
  •  
  • 2013/12/08(日) 00:31:58.04
MS-Basic7.1ってのを数回触った事があったけど、使い道が全然思いつかなかった。GWやQBみたいなテキスト画面制御程度のステートメントさえ全滅だったような。
何か自前のライブラリを当てないと画面もうごかせないのかな、それともまさかのAnsiエスケープシーケンス使え、だったのか、どこかにちゃんとMS謹製ライブラリが居たのか。

ここまで見た
  • 658
  •  
  • 2013/12/08(日) 00:42:49.58
そうか?QBの上位互換だった気がする
int 21hができたり、テキストベースのGUIライブラリやTrueTypeフォントの描画ルーチンが付いてきた記憶がある
くっそ遅かったがw

ここまで見た
  • 659
  •  
  • 2013/12/08(日) 11:21:18.80
MS Basic Compiler 7は劣化Cに成り下がって面白みがなかった
開発環境も使いにくいPWBになってしまったし
QBまではありだな

QB > 僕と契約して・・・

ここまで見た
  • 660
  •  
  • 2013/12/08(日) 11:57:46.43
VB For DOSは出た時話題になったが、既にWin3.0メインで使ってたからスルーしたな

ここまで見た
  • 661
  •  
  • 2013/12/08(日) 12:09:16.18
Basicはお手軽に使えるから良いのであって、大掛かりなアプリ開発するのにBasicわざわざ使うアホは居ないということだ

ここまで見た
  • 662
  •  
  • 2013/12/11(水) 08:23:06.19
PWB付き大型のBasic7て、どういう層をターゲットにした製品だったんだろ
お手軽Basic派はQB45、大型案件はC/C++だろうし、位置づけ微妙

ここまで見た
  • 663
  •  
  • 2013/12/11(水) 08:27:26.69
その中間層をねらってたりして?

# MSは、いろんな意味で、BASICには力を入れているから、売れる可能性にかけているだけかも。

ここまで見た
  • 664
  •  
  • 2013/12/11(水) 08:40:01.19
今のVisual Basic.NETはBasicたる劣勢要素が殆ど無いいわばC#の双子兄弟みたいになったけど、当時のBasic7は性能的にはどうだったんだろう。Cと変わらない、なら価値はあったのかも知れないけど

もっともC#/VB勢は、MFCより遅いんだけどねw

ここまで見た
  • 665
  •  
  • 2013/12/11(水) 09:04:23.91
DOSの頃のBASICにはON EVENT GOSUBやON ERROR GOTOというステートメントがあってだな
(例外処理っぽいのがintしか無い環境で、各ソフトが勝手に割り込みハンドラを書き換えるわけにもいかないから)
全部のステートメントの間にトラップのためのチェックコードが生成されてた
なので何も考えないとCの倍遅い

でも、OFFると、C並の速度は出てた筈
Cコンパイラの方も相応にしょぼかったし

ここまで見た
  • 666
  •  
  • 2013/12/11(水) 09:09:30.57
というかだ、16ビット環境はセグメントがあるせいでポインタ演算は効率悪かったんで
C言語というのはそんな速い言語じゃなかったw
スピードが欲しければアセンブラ一択ですよ

ここまで見た
  • 667
  •  
  • 2013/12/11(水) 09:22:20.63
>というかだ、16ビット環境はセグメントがあるせいでポインタ演算は効率悪かったんで
>C言語というのはそんな速い言語じゃなかったw

プw

ここまで見た
  • 668
  •  
  • 2013/12/11(水) 09:37:15.65
文系は所詮こんな程度w

ここまで見た
  • 669
  •  
  • 2013/12/11(水) 11:15:12.87
ラージポインタは使ってもヒュージポインタを
ぶん回すようなまねはあまりしなかったな
BC7の頃は既に386が流通してて、
巨大なデータ配列をいじりたいならDOS/Extenderだった

ここまで見た
  • 670
  •  
  • 2013/12/11(水) 11:44:00.83
VCPIとか使うとI/O遅そうなイメージ

ここまで見た
  • 671
  •  
  • 2013/12/11(水) 12:02:48.85
当時のPCの場合プロテクトモードの
オーバーヘッドはそれなりにあったのだが、
ソフトEMS使ってるなら普通にDOS使ってるつもりでも仮想86の配下

ここまで見た
  • 672
  •  
  • 2013/12/11(水) 12:07:20.41
エクステンダーってint21h DOS APIは一瞬リアルに切り替えるとかして互換性保ってたとおもうけど、他のbios APIていうか汎用的なint86コールもフックとかしててそのまま使えたの?

ここまで見た
  • 673
  •  
  • 2013/12/11(水) 12:08:48.24
むしろ問題はEMS用にISAやCバスに遅いメモリをつんでた場合で、
これをメインメモリで使い出すとスピードががた落ちしていた
メモリカードバスのメモリなんてもう最悪

ここまで見た
  • 674
  •  
  • 2013/12/11(水) 12:13:30.73
>>672
DPMIしかしらないけど、BIOS系の代表的なのはフックしてたよ
それ以外は一度仮想86に変移してから呼び出すことになる

ここまで見た
  • 675
  •  
  • 2013/12/11(水) 12:22:46.39
>>674
フックしてプロテクトモードのまま動いてたの?もっともDPMIだと割込ベクターだけフックすれば、リアル前提のBIOSルーチンそのまま動いちゃったりする気もするけど

ここまで見た
  • 676
  •  
  • 2013/12/11(水) 12:32:10.09
むしろ、ほぼ全て(EMS関連とint2F関連以外)は
割り込みでプロテクトモードになったら、すぐにスタックを書き換えて
リアルモードでの割り込みハンドラの指すアドレスに戻るようにして
すぐに仮想86に戻るようにしていた

特別な処理が必要になるのは、これらの他はDMA関連のI/Oポートくらい
こいつらはUMBやHMA(FFFF:部)も含め、物理アドレスとは一致しなくなるので
外に出すアドレスを細工する必要があった
あ、あとA20のON/OFFも対応する必要があった

ここまで見た
  • 677
  •  
  • 2013/12/11(水) 12:38:40.10
VCPIやDPMIでも微妙なところはカバーできないので、
結局DOSエクステンダーのランタイムはなくならなかった

ここまで見た
  • 678
  •  
  • 2013/12/11(水) 12:48:52.30
いとしの仮想86
なぜにx64のlong modeからなくなっちゃったの

ここまで見た
  • 679
  •  
  • 2013/12/11(水) 13:03:37.51
>>677
そもそも、それらは仮想86ドライバ上でDOSエクステンダを動作させるための規格
なくなるわけないだろ
VCPIなんか、「LDTやるからてめーでやれ」だし

ここまで見た
  • 680
  •  
  • 2013/12/12(木) 21:15:36.34
DOSって、レトロを楽しむ以外に今は何かに使われてるの

ここまで見た
  • 681
  •  
  • 2013/12/12(木) 22:13:02.96
機械制御とかで使われてるんじゃないの?
ああいうのって画面いらないし、ネットワークもいらないし、
単に機械を制御できればいいだけだからシンプルなOSでいいんだよね。
マイコンでもいいぐらいだけどさすがに少しきついだろうということで
DOSぐらいでちょうどいい。

砂時計アラームタイマー
フリックゾンビ
ここまで見た

★お気に入り追加

このページを共有する
facebook twitter hatena line google mixi email