i80386 / 486 32- bit 専用 DOS 工クステンタ 価格表 osinit(BhttlERJ; / ・ setup ⅲⅱ信い z ョⅱ明 e 「「 0 「 h ョに「・ / ⅱ ( ”第 : c れしをエコい ) xlfatal( " 信信一 initialization 当・ぐ 0 第 ⅱ ( 記 tj 叩 ( ー叩ーにリ e い ) ⅵねⅡ島川 RE not 3 ⅱ 0 d 面ⅵ明 i 日 iz ョ on 勹・ / ・ initialize xlisp •/ ⅲⅱ ( 第 ⅵ印記猷 (t) : に第を増一面い 簡 1 4 : 編 = 能第 lt 応ー田ⅱ -0 version 3. C 咜 / ー ( じ ) ー 1 靆円地ー s ー一面ー Breekpoihf 出を 明 [ 4 聞 IF 間 44 乞引 d2 3 測物 ど囲 2 田 い 49 粉 = 明 09 剏 44 聞 2 0 ル日引祕・じー川Ⅲーー )nen 図日 K nain れ 2n0 「 /. 52 a 日 い「ヨ”ー耘 ee blcxk 5 圏 P. レ「 gest lockable block 5 聞 P. し it 旧日「 address space 76BP. Free linear 5 圏 P. Pa 568P. 耘 p ト′ 0 日一 5 8P. 朝を猷 p ⅵこ猷 7 聞 P. Ⅷ日 size . ま訂は 0 32 = b 代パフォマンスを DOS 上で実現 . ー。 DOS / 4G はコ nte180386 / 486CPlJ か持つ 32- bit パフォーマンスを、 DOS ・ VMM は 80386 / 486 のページング機能を活用し、コードとテータを自動的にティスクへ スワップさせます。 プログラムからダイレクトに活用可能にする、 80386 / 486CPLJ 専用 DOS 工クス ・ VMM の A 曰は、業界標準 DPM Ⅱ . 0 に含まれる仮想メモリ A 曰のスーバセットであり、 テンダです。 DOS / 4G により、 DOS プログラムで最大 4 ギガバイトまでのメ 上位互換性があります。 モリか使用可能になります。また、 32- bit レジスタを使用してセグメント切り替 ・業界標準の DOS 工クステンタ えの無いフラットなメモリ・アクセスか実現されるため、従来の 16- bit プログラ ムに比較して約 50 % アクセス・スピードを向上できます。 ・ 16- b DOS 工クステンダである「 DOS / 16M 」は、 LOtus 、旧 M 、 Ashton-Tate 、 DEC 、 AutoDeskslnfo 「 miX など、 300 社をこえるソフトウェア開発会社の主要製品 DOS / 4G か組み込まれたアプリケーションは 32- bit ・ネイテイプ・プログラ に用いられ、すでに数百万コピーのアプリケーションに組み込まれて出荷されています。 ムでありなから通常の DOS 環境でそのまま動作します。しかも、 WINDOWS ・ DOS / 4G は、この DOS / 16M の上に構築されており、 32 ー bit ネイテイプ・アプリケー 等他のメモリ拡張手段に比べて、既存 DOS アプリケーションからの改変作業は ション開発のためのアップグレード・バスとなります。 最小限で済ませることができます。 32-bitCPLJ のメモリ・パフォーマンスを DOS / 4G でフルに活用することによって、従来のパソコン用アプリケーション・ プログラムのパフォーマンス向上だけでなく、ワークステーション上の大規模プ ログラムのパソコン上への移行か可能になります。 ・ DPM 槻格に完全準拠 ・ 80386 プロテクトモードと DOS とのインターフェース標準規格 DPMI(DOSP 「 otected Modelnterface) に完全準拠しています。 ・従って、 DOS / 4G で作成されたプログラムは、リアル・モード DOS 環境下以外でも WINDOWS 3 を始めとする DP 規格準拠のホスト下で動作、または、共存が可能です。 ・ 32- bit ネイテイプ・モード専用 高機能ソース・レベル・テパッガ D / 32 を装備 ・ 32- bit アプリケーション EXE ファイルを、 80386 / 486 ネイテイプ・プロテクトモード 上でテパッグするための、ウインドウタイプ高機能デバッガです。 DOS/4G \ 880 , ロ 0 ロ ¥ 2 , 640 , ロロロ ・ DOS / 4G で作成された 32- bit プログラムが、ソース・レベルで CodeView と同様な DOS/4G 用 VMM ¥ 58 ロ .000 ¥ 1 , 740 , 0 ロロ 感覚でテパッグできます。 ( 右上画面写真参照 ) DOS/16M ¥ 780.00 ロ ¥ 2.340 , ロロロ ・ 32- bit ネイテイプ・モード専用リンカー GLIJ / 32 を装備 ・マイクロソフト凵 NK と互換性を保ったスクリプト・ファイルや、オプションが使用でき OS / 16M 用 VMM ¥ 48 ロ , ロロ 0 \ 1 .44 ロ , ロロ 0 株式会社 LIFEBOAT ・仮想メモリ・マネージャ VMM ( 別売 ) を用意 ・ DOS / 4G のオプション製品である VMM は、パソコンに実装されている以上のメモリ 〒圓ー東京都千代田区神田錦町 3 ー 6 空間を使用するアプリケーションの実行を可能にします。 PHONE : 03 ー 3293-47 Ⅱ代 FAX : 03-3293 ー 47 田 ※複数マシン ( 最大 20 台 ) で開発を行う際にお得なコーボレート用ライセンスも用意しております。 ※製品についてのお問い合わせは・・・株凵 FEBOAT 営業 1 課 DOS 工クステンダー担当 ( .03-3293-4714 ) までこ連絡ください。 * DOS/4G. DOS/16M は RationaI Systems,Inc. の商標です。 * MS-DOS, MS は Microsoft CO 「 P. の登録商標です。 * その他、プログラム名、システム名、 CPIJ 名は一般に各メーカーの登録商標です。 ・ Copyright Notice く資料請求番号 005 〉 32 ヒット・ 16 ヒット DOS 工クステンタ製品仕様 DOS/16M DOS 4G け 0 元 PC ー 98 田 FM 日 60 / 70 日 16Hx Ⅱ PC -98 田 PC / AT 及び互換機 /32GX f8 圓 / 日 X. EX PC/AT 及 ( 但し、それそれ 8D386 以上搭載機 ) び互換機 ( 但し、それそれ 802 田以上搭載機 ) WATCOM O / 386 Lattice C Microsoft C >High C 386 Mic 「 osoft FO 「 t 「 an ~ 、 Mic 「 OSOft アセンプラ >Mic 「 osoft アセンプラ >MS-DO V3 コ以降 MS-WINDOWS 3.0 以降 を -0 シンクル・ライセンスーコーボレート・ライセンス ァージ
テックソフト & サ - ヒス lnformation from C0mpiler Makers 今回はプロテクトモードて、の割り 込みべクタの設定を応用としてレ ジデントプログラム ( TSR ) について 紹介します。 TSR70 ログラムとは 通常のプログラムのように終了時 にそのプログラムが占有していた メモリをすべて解放するのて、はな く , MS ー DOS の環境下てメモリ内 に常駐して , 何らかの条件が満足 されたときに動作するプログラム てす。一般的な TSR プログラム は , キーポード割り込みを監視し , あるキーの組み合わせが押された ときに動作します 0DOS-EXTEN DERC は ,MS-DOS のファンクシ ョンコールをサポートしていて , その中に常駐終了のファンクショ ン ( 31H ) も含まれています。この ファンクションコールを使うこと によって , 比較的簡単にプログラ ムを常駐させることがてきます。 DOS-EXTENDER はプロテクト メモリがサポートされているのて、 , 640K バイトを越えるような大きな プログラムの常駐も可能てすが , DOS-EXTENDER 特有の問題点も いくつかあります 01X)S-EXTENDE R 上て、 TSR プログラムを扱う場合 のおもな問題点としては以下の三 つが考えられます。 1. DOS-EXTENDER の常駐 2. 割り込みべクタの再配置 3. ふたつの割り込み処理 ( プロテ クトモード , リアルモード ) それぞれの問題点について順に 説明します。 DOS-EXTENDER の常駐 プロテクトモードて動作するプ ログラムを常駐させるためには , DOS-EXTENDER 自身も常駐す る必要があるということてす。し かも , プロテクトモードて動作す るプログラムを実行するときには DOS -EXTENDER 自身は MS ー DOS の環境下の 640K バイトのメモ リ上て動作するのて , たとえ TSR プログラムをプロテクトメモリに 追い出せたとしても , DOS ー EXTENDER 自身は 640K バイトの メモリ上に残ってしまいます。 また , MS ー DOS の常駐終了のフ アンクション ( 31H ) ては , 常駐させ るプログラムのパラグラフサイズ を指定するのてすが , DOS ー EXTENDER-t は , 常駐プログラ ムのパラグラフサイズの指定がて きません。このために , DOS ー EXTENDER 自身が常駐するプロ グラムのサイズと自分自身の大き さを計算して常駐終了させなくて はなりません。ちなみに , DOS- EXTENDER 自身つまり run386. exe はメモリ上ては約 130K バイト を占有しており , 少し大きなリア ルモードてのプログラムを同時に 動かそうとするとメモリが足りな くなってしまいます。また , プロ テクトモードて、動作する TSR が常 駐している状態て , さらにもうひ とっプロテクトモードて動作する プログラムを実行しようとすると , 新たにもうひとっ DOS-EXTEN DER が起動されてしまいます。 れにより , ますます 640K バイトの 壁に直面することになります ( せっ かくのプロテクトモードなのに何 とかならないのてしようか ) 。 割り込みべクタの再配置 DOS-EXTENDER は起動時に 386 プロセッサの例外べクタ領域に 衝突する割り込みを再配置します が , この割り込みべクタの再配置 によって動作しなくなる行儀のよ くないプログラムがあります。も ともとはインテルの予約べクタ領 域だった割り込みべクタの 00h から 1Fh まて、を , IBM PC や PC ー 9801 て はハードウェア割り込みとして使 用しています。このため , 386 とし て使用する際には 386 本来のプロセ ッサ例外とこれらのハードウェア 割り込みとが衝突します。 しかし , 386 のプロセッサ例外は 範囲検査例外 ( 05h ) , 不正命令例外 ( 06h ) , コプロセッサ不在例外 ( 07h ) などの割り込みて、 , いずれもユー ザプログラムの責任によって引き 起こされる割り込みといえます。 プロテクトモードの TSR プログラ ムを常駐させると , DOS-EXTEN DER 自身も常駐するのて , これら の割り込みは再配置されたままに なってしまいます。正しいプログ ラムて、はこれらのプロセッサ例外 による割り込みは引き起こされな いのて、正常に動作しますが , なか には動かなくなってしまうプログ ラムもあります。 プロテクト / リアルモード での割り込み処理 キーポード割り込みなどのハー ドウェア割り込みによって起動さ れる一般的な TSR プログラムて は , 割り込み処理が , プロテクト モード用とリアルモード用のふた っ必要となります ( 説明は 6 月号 155 頁 ) 。処理内容はまったく同じてあ ってもそれぞれをメモリ上に常駐 させておく必要があります。プロ High-C 386 Ver. 1.6 lnformation from Compiler Makers 163 ・ります。 他のプログラムが起動てきなくな のメモリを確保しようとするのて , いと DOS-EXTENDER はすべて これらのオプションを指定しな (-MAXREAL FFFFH) ②リアルメモリを空ける指定 定 (-MAXDATA 0 ) ( 1 ) プロテクトメモリを空ける指 ションを指定します。 には , LINK 時に次のふたつのオプ TSR プログラムを作成する場合 LINK 時のオプション K バイトになります。 EXTENDER 自身を加えると 210 80K バイトとなり , これに DOS ー リアルメモリ上ての常駐サイズは ラムて、も , TSR プログラム自身の います。このような簡単なプログ の両方に割り込み処理を設定して プロテクトモードとリアルモード みて、起動するプログラムなのて , ードウェア割り込 しています。 = 31h ) を追加して TSR プログラムと 使い , 常駐終了の処理 ( int21H , ah た割り込みべクタの設定の関数を TSR プログラムて、す。前回紹介し されるたびに , Beep 音を鳴らす 録ディスク収録 ) はキーが押 ple. c) を紹介します。 sample. c ( 付 の例として , 簡単なサンプル ( sam High-C386 て、の TSR プログラム ます。 メモリの壁にぶつかることになり ても MS-DOS の 640K バイトという 上に常駐する必要があり , またし ログラムは IM バイト以下のメモリ ますが , リアルモード用の TSR プ はプロテクトメモリ上に常駐てき テクトモード用の TSR プログラム
実践 MS-DOS プログラミング入門 SOFT 日 K C 言語による 実践 MS-DOS 1 章 2 章 C 言語のシステムコールの方法 3 実丿造プロクラフロクラ、 三。ーの 4 早 5 章 6 早 7 プログラミング P ー 9800 の ? ラフ、、クシテムと 本書は MAGAZINEJ の好評連載「 C プログラマのための MS ー DOS プログラミング入門」を大幅に加彦正し、改題して まとめたものです。 秋津彰文著定価 2 , 200 円 ( 税込 ) 「 C MAGAZINE 」の好評連載を単行本化。 C フログラミングを行う上で必須な MS ー DOS の 知識を明快に解説し、 C 言語と MS ー DOS の関係を活かしたサンプルプログラムを多数紹介。 秋津影文・一・ - ー著 9 早 Ⅷ羆刪 ソフトバンク出版事業部
0 0 最近は MS-DOS を知らないアプリケーシ に手作業て、行ったという話題て、「こんなくだ ョンユーザが主流を占めるようになりまし らないことをして , 給料をもらっている人 た。 MAC のようなウインドウべースのマシ がいること自体に腹が立ってくる」というも ンと異なり , よくも悪くも DOS を完全に覆 のがありますが , まったく同感てす。仕事 い隠すことが困難てす。多くのパソコン誌 に限らず , 家事ても趣味ても「いかに楽をす が派手にあおったため , 異常な人気の出た るか」 ( いかに手抜きをするかてはありませ MS-WINDOWS3.0ても , あちこちに MS- ん ! ) を常に考えてする人とそうて、ない人と DOS が見え隠れしています。そのため , 単 はわずか 1 年ても相当の実力差となって現 ーのアプリケーションを使っているうちは れてきます。 困らなくても , データを別のアプリケーシ 「いかに楽をするか」のためにさまざまな ョンに移したいとか , いっきに加工したい ツールが登場します。 awk, chd, diff, という要望が出るとアプリケーションユー grep, less, ls, pushd, popd, sed などと MS ザははたと困り , 何から手をつけたらよい ー DOS ューザてあれば , 使ったことがなくて かわからないという状態に陥ってしまいま も名前くらいは知っているツールが登場し す。 ます ( 大半のツールがアスキーの SOFT この段階てアプリケーションユーザの行 WARETOOLS なのはご愛敬というところ 動を眺めるとけっこうおもしろいてしよう。 て、しよう ) 。 MS ー DOS の中級ユーザても , 手入力てひとつひとっデータを再入力した れだけのツールをすべて使いこなしている り , 加工したりするユーザも少なくないて 2 コマンドインタブリタとの失敗しない 人は少ないて、しようから , 本書を読めばか しよう。 MS-DOS を知っているユーザてあ 社交術 なりの刺激になると思います。本誌の読者 れば , 便利なツールをスマートに使いこな 3 標準入出力を使いこなす てあれば , プログラムのひとつやふたっく してデータを再利用するための加工をしま 4 ごちやごちやファイルの整理術 らい簡単に組めるて、しようが , プログラム す。一度手入力したデータはとことん利用 5 プログラムってどんなものか知ってお が組めなくてもツールをとことん使いこな しようというわけてす。この精神が本書に すことて , MS ー DOS のパワーユーザになれ 一貫 . している「ラクしてパソコンを上手に使 6 「常駐もの」ってどんなもの ? るというよいお手本となります。 う」というテーマにつながります。 7 自分なりに MS-DOS をコンフィギュレ 本書ては「初心者ほどハードディスクが必 要だ」と繰り返し強調されています。確か ーションしよう 本書は月刊「 ASCII 』誌に 15 回にわたって 8 仕事をするときの作業の流れを見てみ に便利なアプリケーションが多くなり , ど 連載された「 MS ー DOS ューザーズ・ワークベ れもが肥大化している現状て、は , フロッヒ。 ンチ」に加筆修正して刊行されたものてす。 9 ちょっと便利な TOOLS のコマンドたち ーベースて複数のアプリケーションをうま 初心者には難しく , ある程度 MS ー DOS を使 10 フィルタを使った上手な編集 く使いこなすことは非常に難しいてしよう。 えるユーザが対象になるてしよう。パソコ 11 テキストファイルてデータ管理 最初のパソコンとして安価なノートパソコ ン用語やツールなどが当たり前のように出 12 sed を使ってテキスト編集 ンを購入するにしても , 無理をしててもハ てくるのて , いちいち注釈を読むようては 13 MS-DOS のシステム管理 ードディスクつきにすることを勧めていま 本書のおもしろさが半減してしまいます。 14 アプリケーション間てデータを共有す す。確かに 386 マシン十フロッビーよりも , 筆者の経験に基づいたテーマを取り上げ るために V30 マシン十ハードディスクのほうがはるか ており , 軽快な文章てスラスラと読めてし 15 がんばれノートパソコン に快適て実用的な環境を構成てきますから , まいます。大きなテーマは 16 ほどあり , 次 16 そして戦う MS-DOS ハードディスクは必須といえます。 のようになっています。 これらの共通のテーマは「いかに楽をする 皆さんも本書を読んてラクしてパソコン か」てす。たとえば昭和から平成への切り換 1 ラクしてパソコンを上手に使える MS- を上手に使いこなしてみませんか ! ? え時に , コンヒ。ュータて元号を訂正するの ( 麻桐麗司 ) ・今月の書籍・ 仙田祥平の戦う MS ー DOS 』 ・山田祥平著 ・ A5 判並製 ・定価 1 , 456 円 ■アスキー出版局 DOS 36 C MAGAZINE 1991 8
, 新 MS ー DOS プログラミング入門当 C プログラマのための Fig. 8 環境変数表示ユーティリティのコンノヾイル例 lcc envdsp. c LSI C ー 86 Ver 3.20 tcc —w envdsp. c Turbo C 2 .0 / Tu 「 b0 C 十十 1 .0 M S-C 5.1 / 6.0 cl /J /W3 /Zp envdsp. c /link / st : 0X2800 / cp : 0X500 DOS ファンクション OAh バッファつきキーボード入力 TabIe 4 バッファつきキーボード入力 引数 返り値 機能 AH = OAh DS : DX = 入力バッフアへのポインタ INT 21 h なし このファンクションは入力中に DOS のテンプレート機能が使用できる 以下のフォーマットで文字列を入力する DS : DX 入力文字列 CR 実際に入力された CR を除く文字数 ( 1 バイト ) ( 本ファンクションが設定する ) CR を含むバッフア内の最大文字数 ( 1 バイト ) ( ユーサが設定する ) M S-C 5.1 / 6.0 Fig. 9 環境変数工テイタのコンバイル例 cl /J /W3 /Zp envset. c /link / st : 0X2800 / cp : 0X500 Turbo C 2.0 / TurbO C 十十 1 .0 tCC —W envset. C LSI C ー 86 Ver 3 .20 lCC envset. C ①ー fgetenv 関数て、環境変数を取得 ② cgets 関数て、環境変数を編集 ③ fputenv 関数て、環境変数を設定 しているだけて、すから , とくに難しい箇所 はないと思います。なお , 単純に環境変数 領域を取得すると間違える可能性もあるた め , 以下のことをチェックしています。 ①環境変数が 1 個以上定義されていること ②環境変数領域のメモリプロックが 64K バ あること 変数名 = 定義 , 0 , 0 のパターンて、 ③変数名 = 定義 , 0 , 変数名 = 定義 , イト未満て、あること 0 , 通常環境変数領域の終わりは 2 バイトの 00 h て、判定しますが , COMMAND ℃ OM のす べての環境変数が未定義の場合には , ター ミネータは 2 バイトの 00h て、はなく , 最初の 1 バイト目が 00h となります。この状態のメ モリプロックを環境変数領域と判断するの は危険て、す。よって , ①の条件をつけてい ます。起動時に PATH と COMSPEC が DOS により設定されるため , 意識的に環境変数 を削除しないかぎり問題ないて、しよう。 ②は , MS ー DOS て、は環境変数領域が通常 32K バイト以下て、す。したがって , チェック したほうがよいかもしれません。 ③の制限により , 環境変数の定義文字列 に = を含むことがて、きなくなります。 PROMPT コマンド以外て、は環境変数の定義 文字列に = を含むことがて、きないため , と くに支障はないて、しよう。 環境変数工テイタの コンヾイル コンパイルは Fig. 9 のように行います。 Turbo C/C 十十て、は cgets 関数が機種依存す るため , DOS ファンクション 0Ah ( Table 4 ) を呼び出す cgets 関数を作成しています ( ちな みに , 表示を高速にするため cputs 関数を機 種依存させるのはわかるのて、すが , cgets 関 数を機種依存させる意味はどこにあるのて、 しようか ? 不便なだけだと思うのは筆者 だけて、しようか ? ) 。 プログラム自体は DOS のバージョンに依 存しますが , 機種依存する部分はないのて、 , MS-DOS 3.1 , 3.2 上て、動作するはずて、す。 手元にないため確認していませんが , IBM -PC 用の MS-DOS 3.3 て、は誤動作するかも しれません。もし , 誤動作するようて、あれ ば get envseg 関数て、 DOS のバージョンの判 定を MS-DOS 3.1 と同じほうに分岐するよ うに変更してください 動作確認は PC ー 9801 シリーズの MS-DOS 3.3B と FM-TOWNS の MS-DOS 3.1 て、行 っています。 まとめ C 言語て、は親プロセスの環境変数を操作す るライプラリが提供されていません。その ために親プロセスの環境変数を操作て、きな くて困っている方も多いかと思います。今 回紹介した fgetenv 関数と _fputenv 関数を 応用すれば親プロセスの環境変数を操作す ることもそれほど難しくないと思います。 今回は説明を簡単に済ませたため , より詳 しいことを知りたい方は参考文献 1. および 新 MS ー DOS プログラミング入門 3. ( 付録ディスク収録 ) を参照してください 93
「 DOS / 4G 」 株 LIFEBOAT ( 株 )LIFEBOAT は , DOS の機能拡張製 品「 DOS / 4G 」を発売する。 DOS / 4G は米国ラショナル社て、開発され た DOS ェクステンダて、 , 同ソフトを使用す ることにより , 最大 4G ( ギガ ) バイト・まて、の メモリ空間を利用て、きる。また , 仮想記憶 マネージャ VMM ( オプション ) により , 実装 メモリが不確定なパッケージアプリケーシ C MAGA 2 , 640 , 000 円 の関数の使用方法 , データベースファイル のフォーマットは共通。このため , 異なる OS 対応のデータベースアプリケーションを 効率よく開発て、きる。おもな特徴は以下の とおり。 ・可変長レコードの採用て、フィールドの追 加 , 修正が可能 ・ Windows と OS/2 版はダイナミックリンク ライプラリを使用し , マルチタスクによ るデータアクセスが可能 ・ファイルの排他的オープン , レコードの ロック , アンロックによるネットワーク 環境にも対応 く動作環境 > ・使用メモリ 約 45K バイト ( ほかにキャッシュとして 1 ファイルにつき 4 ~ 64 K バイト ) ・対応 OS MS-Windows Ver. 2.1 以上 OS/2 Ver. 1.1 以上 MS-DOS Ver. 3.0 以上 く動作環境 > ・対応機種 PC ー 9801 シリーズ (XA/X L/XL2/RL ハイレゾリュー ションモード /LT を除く ) ョンの開発が可能となる。 く動作環境 > ・対応機種 ・対応 OS ・対応言語 く価格 > PC ー 9801 , J3100 , PS/55 AX 仕様機種 (JEGA,VGA/AX) DOS/V 採用機種 PC/AT,PS/2 ( ただし , CPU80386 以上搭載 ) MS-DOS Ver. 3.1 以上 MS-Windows Ver. 3.0 以上 WATCOM/386 High C 386 Microsoft アセンプラ ・対応コンパイラ く価格 > MS-C Ver. 5.1 以上 98 , 000 円 シングルユーザライセンス ・対応 OS MS-DOS Ver. 3.1 以上 ・対応コンパイラ MS-C Turbo C Lattice C Quick C く価格 > 15 , 000 円 問い合わせ先 工フェーシステムエンジニアリング ( 株 ) 〒 790 愛媛県松山市北藤原町 1 ー 26 TEL 0899 ( 31 ) 2886 PC ー 9801 版「 BOR ND C 十十 2.0 」 株ボーランドジャパン ( 株 ) ポーランドジャパンは , PC ー 9801 シリ ーズ用コンパイラ「 BORLANDC 十十 2.0 」 を 8 月下旬より発売する。 同ソフトは ANSI C 準拠の C と AT&T Ver. 2.0 準拠の C 十十の 2 種類のコンパイラ のほかに , TURBO DEBUGGER, TURBO ASSEMBLER などのツール類 , さらに Win dows 3.0 のアプリケーション開発に必要と されるすべてのツールが含まれている。 く動作環境 > DOS/4G DOS/4G 用 VMM 880 , 000 円 580 , 000 円 コーポレートライセンス DOS/4G DOS/4G 用 VMM 1 , 740 , 000 円 -DOS, Windows, OS/2C, これら OS 間て 同ライプラリがサポートしている OS は MS ISAM 」を発売する。 データベース管理関数ライプラリ「 Hybrid ハイドロシステム ( 株 ) は , MS ー C 用の高速 ハイドロシステム株 「 Hybrid ISAM 」 TEL 03 ( 3293 ) 4711 〒 101 東京都千代田区神田錦町 3 ー 6 問い合わせ先 ( 株 ) LIFEBOAT 問い合わせ先ハイドロシステム ( 株 ) 〒 102 東京都千代田区神田和泉町 1 ー 6 インターナショナルビル 3F が可能 されてもデータ通信を継続して行うこと 実行中のアプリケーションソフトが変更 ・ドライバ部の送受信用パッフアにより , ・転送速度は 75 ~ 19200BPS まて、サポート 徴は以下のとおり。 同期方式ての通信を可能にする。おもな特 グラムの通信用ドライバとして常駐し , 非 RS ー 232C が簡単はアプリケーションプロ リ「 RS ー 232C が簡単」を発売した。 は , C 言語用 RS ー 232C 通信処理支援ライプラ 工フェーシステムエンジニアリング ( 株 ) 工フェーシステムエンジニアリング株 「 RS ー 232C か簡単」 Ver. 1 ℃ TEL 03 ( 5687 ) 1464 ・対応機種 ・対応 OS ・メモリ ・その他 PC ー 9801 シリーズ ( ハイレゾリ ューションモード対応 , ただ し LT を除く ) MS-DOS Ver. 3.1 以上 MS-Windows Ver. 3.0 以上 640K バイト以上 (Turbo Drive は IM バイトの 拡張メモリ ) ハードディスクドライプ ( 必須 ) く価格 > 98 , 000 円 問い合わせ先 ( 株 ) ポーランドジャパン 〒 107 東京都港区南青山 7 ー 8 ー 1 小田急南青山ビル 9F TEL 03 ( 3486 ) 1400 News square 155
Fig. 6 バス型 ( ネットワークサーバつき ) Fig. 7 テパイスドライノヾの動作 アプリケーションからの アクセス要求 ネットワークドライバの場合 インタフェイスポードを使って , ネ 自分のコンピュータにつなかって ットワークサーノヾにアクセスし MS いるティスク装置か ~ それとも ネットワークドライプか ? ー DOS に代わって応答する 自分のワークステーションに つながっているティスクの場合 システムコールをそのまま MS-DOS に渡す MS ー DOS がティスクに アクセスし , 応答する ロ [ コ 匚コ 匸コ 匸コ ロ [ コ ロ ロ ロ [ コ ロ ロ サ ク ワ ト ッ ネ をコンヒ。ュータの主記憶に置くことがて、き ときには MS ー DOS に通知せず , ネットワー が , MS-DOS にそのようなキャッシュはな クインタフェイスポードを通じてネットワ いようて、す。 MS-DOS にはそういう間題は ます。その結果 , ディスクの見かけの応答 ないのて、すから , これは当然て、すね。しか は速くなるのて、す。なお , ディスク装置の ークサーバにアクセスし , MS-DOS に代わ し , ネットワーク上て、プログラムを作ると データ転送速度よりネットワークのデータ ってアプリケーションに応答すればよいの きにはこういう問題があることを考慮しな 転送速度のほうがずっと速いのて、 , ネット て、す。動作原理は単純て、すね。デバイスド ワークを経由してアクセスしているからと ければなりません。 ライバの動作を簡単な図にしてみました (Fig. いって遅くなることはありません。 こて、 述べたようなディスク管理方式を採用する 動作原理はいたって簡単て、すが , ネット ネットワークサーバ管理は , MS-DOS など ワークドライプを利用するうえて、注意すべ 一般的にめん ネットワークドライプは , デバイスドラ のコンヒ。ュータ OS とは違い きことがあります。たとえば , ネットワー どうになります。 イバの要求に応えられればよいのて、あって , クドライプをディスクキャッシュの対象に MS ー DOS を使う必要はありません ( 使っても するのは危険て、す。なぜなら , ネットワー クドライプは , 一般的には複数のワークス よいのて、すが ) 。したがって , ネットワーク ドライプとして都合のよいディスク管理が テーション間て、共有されているからて、す。 ネットワークサーバの電源を切る前に 共有されているということは , あなたがネ 可能になります。 その一例に , NetWare のネットワークサ どんな操作が必要て、しよう ? ットワークドライプ上のファイルを操作し ーバが , ネットワークドライプとして都合 ネットワークサーバは , たとえばディス なくても , ほかのワークステーションのユ クの持つ情報のうち重要なものを主記憶上 のよいディスク管理を採用しています。そ ーザがネットワークドライプ上のファイル に展開することがて、きます。このことによ に変更を加えることも可能だからて、す。そ の結果 , 自分のワークステーションのハー りワークステーションからの要求に素早く ドディスクより , ネットワークドライプの の変更をあなたのワークステーションは知 応答するて、きます ( ディスクにアクセスする りませんから , ディスクキャッシュは古い ほうがはるかに速くなっています。ネット 代わりに主記憶を操作すればよい ) 。したが ファイルの内容を保持しています。あなた ワークを介しているのに自分のワークステ って , 電源を切る前に主記憶の情報をディ ーションのハードディスクより速いのはな のワークステーションのディスクキャッシ スクに書き戻す必要があります。また , 書 ュは本当には存在しない , 幻のファイルを ぜて、しようか ? き戻し操作の前にネットワークドライプを 保持してしまうのて、す。これは問題て、すね。 MS-DOS はいつ電源を切ってもよいよう にディスク管理します。 UNIX などて、は , 電 ほかのワークステーションの操作を感知し , ネットワーク上のワークステーションから 利用て、きなくする必要もあります。このよ 源を切る前に多くの手続きを必要とします 自分の持っている情報を捨てるディスクキ が , その代わりにディスクのかなりの内容 うに , ネットワークサーバの電源を切る操 ャッシュを取り入れることも考えられます 54 C MAGAZINE 1991 8 ネットワークドライフの性質 ネットワーク管理
べロッパたちにとってまともなプラットホ ームて、あると彼らは主張した。しかし , ういったわめき声はすべて無視されるだろ Windows は , パソコンプログラマたちの 関心を釘づけにした。すべてのデスクに GUI を , という夢がやっと実現するのだ。 Mi crosoft 社は , ' 92 年には新しいコンヒ。ュータ のほとんどが Windows を走らせているだろ うと予測している。 GUI の成功はいくっかの興味深い副作用を もたらした。突然 , DOS プログラミング , Mac プログラミング , そして UNIX プログラ ミングなどの間に存在する違いがどうて、も よくなり , むしろ , どれも同じものに見え てきたのだ。標準性のあるインタフェイス という形て、のユーザ中心の設計が求められ ている。 もっとも重要なのは , サードバーティー 製の各種ツールをどんどん使っていく が , 単に妥当て、あるだけて、はなく , 社会的 に受け入れ可能になってくることだ ( インタ フェイスの統一によってどんなツールて、も 簡単に使えるようになる ) 。これによって達 成される生産性の向上は , マイコンのプロ グラマにとって大勝利ともいえる。—LOB DOS Protected ー M 面 0 lnterface S ね a The DPMI Committee ばんざあい ! 実にタイミングよくも , BorIand, Eclipse, IGC, lntel, L0tus, Microsoft , Phar Lap, Phoenix, Quarter deck, そして RationaI Systems 社の連中が 集まって , 比較的短い期間て、 , DOS の 640K バイトというメモリバリヤをぶち破るため の標準規格を制定したのだ。こういう標準 規格なして、 , これからやっていくことを想 像すると , ゾッとするよね。業界は混乱の 泥沼になるだろうからね。バベルの塔の再 来だよ , まるて。 ' 90 年に発表された標準規 格は , Ver. 0.9 となっているけれど , もう ほとんどのデベロッパが実際に使っている ね。 この計画に協力した企業のめんめんに お祝いの言葉を述べよう。標準性のある環 境作りを目指す業界の一致団結の姿勢は , すべてのプログラマおよびデベロッパにと って , 究極的にプラスする。このことが , マイコンとミニコンの両方を含む , さらに 広いプラットホームにわたる一致協力体制 が生まれることの前兆て、あることを望みた いね。—MGM 聞 DOS 既 5.0 Digi ねー Reserch 0. 「おいおい , Microsoft 社製の v. 4.01 や 3.33 が業界規格だという時代に , DOS クローン に 200 ドルも払うやつがいるのかよ」という 声が聞こえるね。ても , DigitaI Research 社 の DR DOS が提供している機能をちょいと 見てみるべきて、はないかな。 DOS アプリケ ーションが , 620K バイトもの RAM を使える んだ。大きいディスクパーティションを使 えるし , メモリマネジャや複数のシリアル ポート間の転送プログラムも提供している。 それに , Windows を使わない人向けには CUA 準拠の綺麗な GUI がある。 こいつは , MS- DOS 4.01 のよりも , ずっとずっとよいのだ て、は , 誰が使うのか ? 企業内て、 DOS シ ステムをインストールしてメンテナンスし , 一定の市販ソフトや内製ソフトを使用して いく場合 , DR DOS はプログラマないしシ ステムインテグレータてあるあなた , およ びあなたの犠牲者 ( あなたの顧客て、あるその 企業のことさ ) にとって , 輝かしいものとな るだろう。確かに いろいろなソフト会社 が , 同じような各種ユーティリティを提供 してはいるが , DOS と完全な互換性があっ て DOS よりも高性能な , クリーンて、信頼性 の高い OS を装備て、きるのは , ステキなこと 0 0 閼叩ⅵ .0 てはないだろうか ? —ALZ The n ね Cruz Operation e 面 Series 既 2.2 lnteractive Systems UNIX の判じものめいた , ユーザ敵視的な 環境が各方面から批判されている 0Windows 風の GUI がこの OS をコマンドライン狂の夢 魔から , 生産性の高い総合的な開発環境へ と変えつつある。 Architech Series と Open Desktop は , い ずれもこの主題の変奏曲 , すなわち 386 パソ コンへの UNIX および GUI の実装だ。両者と もに , UNIX System V の実装系てあり , X Window System を介して画面を処理し , Motif を実装している。 Open Desktop は , X デスクトッブマネジャをベースとし , 他方 Architech は , L00king Glass を使用してい るが , そのほかの点て、は両者は違いよりも 似ている点のほうが大きい DOS がガス欠し , OS / 2 にも元気がない 今 , UNIX が PC ューザのアップグレードの 方向性として , 現実味を帯びてきた。 lnter active 社と SCO 社は , とても使いやすい UN Ⅸの実装系を提供することによって , の炎を拡大しようとしている。しかも , 両 者とも出荷本数が多いのて , 市場拡大を狙 っているソフトウェアデベロッノヾにとって も魅力ある顧客層が存在するのだ。これは , ほかの UNIX プラットホームには求めること のて、きない現象てある。 Architech と Open Desktop は , ハイエン ドの PC をマルチューザシステムに変え , PC 上または端末上のリモートユーザのサポー トを可能にする。 PC を , 従来ならば高価な ニコンや複雑な LAN の導入を検討してい たような企業にとっての戦略的資源に仕立 てた。今や PC は , 業務グループのコンヒ。ュ ーティングをサポートするコスト効率のよ いプラットホームなのだ。—JDH お lnterface 和 0 贓 t S 冊 Pnf 悶 s 聞可叩 m 聞 t System 1. ① Mic 「 0 Corp CL 誌 ' 90 年ベスト開発ツール賞 27
ラマた Fig. 6 MCB (Memory Control B10Ck) の構造 メモリ管理用のマークで次の 2 種類の値を取る 'M'(4Dh) : 次のメモリプロックに続く 'Z' (5Ah) : 最終メモリプロック OWNER ( このメモリプロックを要求したプロセスの PSP のセグメントアドレス ) 未使用状態のときは 0000h 使用メモリのノヾラグラフ数 ( 16 倍するとバイト数になる ) 低位アドレス アドレス セグメント 次 MCB アドレス セグメント MCB 高位アドレス 十 0 十 1 十 2 十 3 十 4 十 5 次のメモリプロック 管理されているメモリプロック 十 F 未使用 注 ) 次 MCB セグメントアドレス = MCB セグメントアドレス十使用メモリのバラグラフ数十 1 DOS ファンクション 52h 内部変数領域のアドレスの取得 ( DOS 非公開 ) TabIe 3 内部変数領域のアドレスの取得 引数 返り値 機能 AH = 52h INT 21 h ES: BX 内部変数領域のアドレス MS ー DOS の内部変数領域のアドレスを ES : BX に返す ES : BX に返される内容は以下のとおりである アドレス ES : BX-02h ES : BX ES:BX 十 04h ES:BX 十 08h ES:BX 十 OCh バイト数 2 4 4 4 4 内容 CON デバイスドライバのリンクの先頭 クロックテパイスを指すポインタ 内部 FCB プロックのリストを指すポインタ ティスクバラメータブロックのリストを指すポインタ 先頭の MCB のセグメントアドレス MAND.COM 本体て、ないメモリプロックを 探します。このメモリプロックがルートの COMMAND.COM 環境変数領域てす ( 通常 はルートの COMMAND ℃ OM のプログラム 本体の次のメモリプロックとなります ) 。 。 , , ルートの COMMAND.COM ・以外の環境変数領域 MS-DOS 3.1 て、は親プロセスの PSP セグ メントの [2Ch—2Dh] が親プロセスの環境 変数領域のセグメントてす。 MS-DOS 3.2 ( PC ー 9801 シリーズては MS-DOS 3.3 ) ては 厄介なことに , 起動時に渡された環境変数 領域以外に COMMAND.COM が別の環境 変数領域その 2 を作成します。 Fig. 7 に示す ように , 親プロセスの PSP セグメントの [ 2 Ch—2Dh] は起動時に渡されたダミーの環 境変数領域その 1 を指しています。本来の環 境変数領域は COMMAND.COM が新たに 作成した環境変数領域その 2 になるのて、す。 詳しくは調べていませんが , MS-DOS 4. xC は MS-DOS 3.2 と同じようにふたつの 環境変数領域が作成されるものの , 親プロ セスの PSP セグメントの C2Ch—2Dh] は本 来の環境変数領域その 2 を指し示すように変 更されているようてす。 環境変数表示 ユーティリティ それては実際に簡単なサンプルプログラ ムを示します oenvdsp. c( 付録ディスク収録 ) は , 親プロセスの環境変数を表示するユー ティリティてす。結果的に DOS の SET コマ ンドて表示する内容と同じになります。 のユーティリティの最大のポイントが get envseg 関数て、す。この関数は親プロセスの セグメントを引数として与えると , その環 境変数領域のセグメントを返します。この 関数を Fig. 5 や Fig. 7 と見比べながら解析し てください。コンパイルは Fig. 8 のように行 います。 環境変数工テイタ それてはよりまともなユーティリティを 紹介しましよう。 envset. c ( 付録ディスク収 録 ) は環境変数を編集するユーティリティて す。参考文献 1 ( 付録ディスク収録参考文 献 . TXT 参照 ) て、紹介したアセンプラ版をも とに機能を一部変更して , C 言語て新たに書 き直したものてす。 MS ー DOS てはコマンドラインに 12 & ヾイト 新 MS ー DOS プログラミング入門 91 使用法 : envset [ - \ ] [ 環境変数 ] 環境変数工テイタの使用法 を取り除いたユーティリティてす。 ませんが , 環境変数の 128 バイトという制限 きます。 envset. c は機能はあまり高くはあり トという制限が非常につらいものとなって リに実行ファイルを格納するため , 128 バイ 深くなり , しかも , あちこちのディレクト イスクを使用していると , ディレクトリが 障はなかったのてすが , 大容量のハードデ は 128 バイトという制限があってもとくに支 フロッヒ。ーベースて使用していた時代に PATH< す。 にもっともなじみの深い環境変数て、ある だけ例外があります。それは , DOS ューザ 数は 128 バイトもあれば十分てすが , ひとつ 数にも制限が生じます。ほとんどの環境変 という制限があるため , 環境変数のバイト
#include く stdio. h 〉 # i nc lud e く std ⅱ b. h > #include く time. h> from CompiIer Makers / * この行を追加する * / List 1 1 : dd ニ 28 : S. tm_m ー n tm-s. tm-mday=dd; 39 : } 5 : 14 : 00 : 00 : 54000 lnformation List 2 #include く stdio. h> #include く stdlib. h> #include く time. h> VOid main(void) int i, mm, dd; t i me t t i mel, t i me2 : struct tm tm_s; putenv("TZ=xxx9") : tzset() : 2 : 3 : 4 : 5 : 7 : 8 : 9 : 13 : 14 : 17 : 20 : 22 : 23 : 24 : 25 : 26 : 28 : 29 : 30 : 31 : 32 : 33 : 34 : 35 : 36 : 37 : 38 : Fig. 1 void main(void) struct time_t int i, mm, dd : timel, tm tm_ tm_sec hour t i me 2 : S , s . s . dd : 28 : _s. tm_year=90; —S ・ tm—mon =mm¯l : _s. tm_mday=dd; timel ニ mktime(&tm s); for ( i = 0 : s. _S. s. i く 24 : i + ニ 2 ) sec hour= i; _s. tm_year ニ 90; S ・ tm—mon =mm¯l; time2 ニ mktime(&tm-s) : / * 1 時間を 3600 秒として計算した結果を表示する * / printf("%ldYt", time2 ー timel); / * mkt i me で得た値を元に , t i me2 からの経過時間を表示する * / mm, dd, printf ( " 90 / % 2d / % 2d 00 : 00 : 00 つ % 2d : 00 : 00 = printf("%ldYn" (long) ( i * 3600D ) : List 3 3 : void main(void) 2 : 1 : #include く stdio. h> fputs("helloYn ” stdaux) : List 4 1 : #include く stdio. h> 3 : void main(void) 2 : 5 : 6 : setvbuf (stdaux, fputs("heIIoYn" NU しし , _IOBUF, stdaux) ; の : List 1 の実行結果 Fig. 2 実行ファイルの作成に必要なシステム ・八一ドウェア ・ OS ・必要メモリ ・必要ティスク装置 ・推奨システム 旧 M バーソナルシステム / 55 ( PS / 55 ) シリーズ 旧 M DOS Ver. J4.0 , IBM DOS Ver. OS / 2 Ver. 1 .23 以上 640K バイト (DOS) 空きメモリ IM バイト以上 ( OS / 2 ) J4.0 / V もしくは , 旧 M 90 / 10 / 28 90 / 10 / 28 90 / 10 / 28 90 / 10 / 28 90 / 10 / 28 90 / 10 / 28 90 / 10 / 28 90 / 10 / 28 90 / 10 / 28 90 / 10 / 28 90 / 10 / 28 90 / 10 / 28 00 : 00 : 00 - > 00 : 00 : 00 - > 00 : 00 : 00 - > 00 : 00 : 00 - > 00 : 00 : 00 - > 00 : 00 : 00 - 00 : 00 : 00 ー > 00 : 00 : 00 - > 00 : 00 : 00 - > 00 : 00 : 00 - > 00 : 00 : 00 - > 00 : 00 : 00 - > 0 : 00 : 00 2 : 00 : 00 4 : 00 : 00 : 6 : 00 : 00 8 : 00 : 00 10 : 00 : 00 12 : 00 : 00 16 : 00 : 00 18 : 00 : 00 20 : 00 : 00 22 : 00 : 00 : 7200 18000 : 25200 : 32400 28800 : 39600 : 46800 43200 : 61200 : 68400 : 75600 : 82800 0 7200 14400 21600 36000 50400 57600 64800 72000 79200 ハードティスクの空き容量は最低約 8M バイト以上 ( PWB を使用する場合には , 約 9M バイト必要 ) マウス 1 M バイト以上のキャッシュティスク ( DOS ) 1 M バイト以上の凵 M4.0 対応 MS メモリ (DOS) 要。 OS / 2 のみ選択して , 全設定を行うと約 20M バイト必要 ) (SETUP 時に , DOS のみ選択して , 全設定を行うと約 15M バイト必 ・使用可能な日本語入力システム MS-KANJI A 円仕様の日本語入力システム Fig. 3 作成された実行ファイルのターゲットシステム (DOS/V 上で SKK, MKK を使用する場合 , 付属のドライバで対応可能 ) ・八一ドウェア ・ OS ・必要メモリ PS / 55 シリーズ , 旧 M 5550 シリーズ ( ただし , 旧 M 5550 シリーズは , 引 OS ライプラリ , グラフィックラ イプラリを除く ) 日本語 DOS Ver. K3.4 , 旧 M DOS Ver. J4.0 , IBM DOS Ver. J4.0 / V もしくは , 旧 M OS / 2 Ver. 1 .23 以上 ( ただし , DOS K3.4 の場合 , 引 OS , グラフィックライプラリを除く ) 日本語 MS-Windows Ve 「 . 3.0 ( 日本語 MS-Windows ソフトウェア開発キット Ver. 3.0 が必要 ) OS / 2 A 円を使用するアプリケーション開発には旧 M OS / 2 プログラ ミングッール Ver. JI .2 が必要 ) システムと作成プログラムに依存 lnformation from Compiler Makers 157