MS-DOS - みる会図書館


検索対象: 月刊 C MAGAZINE 1990年5月号
102件見つかりました。

1. 月刊 C MAGAZINE 1990年5月号

0 の 3 高速・コンパクトなコードを生成 レジスタの最適自動割り付け レジスタによるパラメタ渡し アセンプリ言語の埋め込み記述可 ANSI 準拠・プロトタイプ宣言を完全サポート ターゲット CPLJ : 8080 / 8085 / Z80 / 64180 ■ CP / M 版セルフ CP / M -80Ve 「 . 2.2 以上、メモリ 60K CP / M 以上必要 ・ MS - DOS 版クロス アセンプラ・リンカ付き コンパイラ・ドライバ UN Ⅸコン / くチ・プログラム保守ツール make ライプラリ、コンパイラ・ドライバ、プリプロセッサのソース付き MS-DOS ver. 2.11 以上、メモリ 384KB 以上必要 近日発売 LS ℃ -80 ( MS - DOS 版クロス ) のソース・レベル・クロス・デバッカ LDB-80X ・ LS ℃ -80 で開発したプログラムを、 MS-DOS 上 (PC-98) でソース・ レベ ) レテ / くッグ ・操作性に優れたウインドウ指向デパッカ ■ UN Ⅸ版クロス NEWS Sun-3 ・ VSX ぐ / リー . ス、 Kurama ・・ SX -9100 シリーズ、 LUNA ・ HP9000 モテル 300 シリーズ )station 200 MicroVAX ・ VAX-1 1 ・ ※その他の機種については、こ・相談に応じます。 LS ℃ -80 ・ Y98 , 000 円 ・ Y98 , 000 円 しへ セット価格 128 , 000 円 ・・ Y398 , 000 円 ・・ Y398 , 000 円 ・ Y398 , 000 円 ・ Y398 , 000 円より ・ Y398 , 000 円より ・ Y398 , 000 円 ・ Y498 , 000 円 ・ VI , 280 , 000 円 Y48 , 000 円 LS ℃ -86 ターゲット CPLJ : 8086 ROM 化ツール標準装備 far ・ near キーワードをサポート UNIX の cc と同様の使いやすいコンパイラ・ドライバ UN Ⅸコン / くチ・プログラム保守ツール make ライプラリ、コンパイラ・ドライバ、プリプロセッサのソース付き アセンプラ付き MS-DOS Ver. 2 . 1 1 以上、メモリ 384KB 以上必要 ・取扱店 弌土諷 - 広 - 工ル・エス・アイジャパン株式会社 〒ー引東京都渋谷区千駄ヶ谷一丁目 8 番図号 〒刪東京都千代田区外神田ト止Ⅱ東京ラジオデバート 3F TEL ( 03 ) 404 ーロ代・ FAX ( 03 ) 478 ー 0576 TEL ( 03 ) 255 ーロ 53 代・ FAX ( 03 ) 255 ーロ 98 ※標示価格に消費税は含まれていません。 ※ CP/M は Digital Reseach 旧 c. , MS-DOS は Microsoft corpo 「 ation のそれぞれの登録商標です UNIX は BeII Laboratories の米国内での登録商標です。 その他、商品名は各社の商標です。 ※ LDB ー 80X は京都マイクロコンビュータ株の商品です ・開発・発売元

2. 月刊 C MAGAZINE 1990年5月号

について定義します (PragmaC VersionI . 0 コンパイラ / 言語仕様・規約書参照 ) 。 このコンパイラ / 言語仕様・規約は , C コ ンパイラというより , むしろ C 言語のソース ファイルを処理しなければならないプログ ラムにとって , 最低限必要となる規約て、す。 今回発表する CSP もこれらの規則をもとに 作成されていますまた , この規約さえ確 定していれば , プリプロセッサを作成する ことも可能になります。 今回の構文規約は非常に標準的なものて、 すのて、 , あまり問題はないと思いますが , もし , 異論が生じるとしたら次の 2 点につい TbI. 6 標準ライプラリ関数一覧 てて、はないて、しようか。 * 予約語における ANSI 規格からの逸脱 * ワイド文字定数 , ワイド文字列につ 本規約て、定義されている予約語のうち , near, far, huge, fortran, pascal につ いては , ANSI 規格て、は予約語として扱われ ていません。しかし , PragmaC がパーソナ ルコンピュータ上 ( MS ー DOS 上 ) て、稼動する 以上 , ほかの MS-DOS 用 C コンパイラとの互 換性を完全に捨てさるわけにはいきません のて予約語としてあります。 ワイド文字定数およびワイド文字列につ いては , その実態 ( 拡張文字セットの内容 ) が定義されていないため , 現状て、の利用価 値はほとんどないかもしれません。実際 , ANSI 準拠をうたう現行の MS-DOS 用 C コン パイラにおいても , ほとんどサポートされ ていない状況て、す。しかし , 将来的な面を 考えた場合 , 漢字を扱うもっともスムーズ な方法となることも考えられるため , 現段 階から規約として定義しました。次回はデ ータタイプおよび宣言について定義します。 ライプラリ編ロ ] void abort (void) int abs (int x) double acos (double x) void alloc (int size) char asctime (struct tm double asin (double x) VOid assert (expression) double atan (double x) * St 「 eam ) * stream) * St 「 eam) num, int width, ANSI ANSI ANSI UNIX ANSI ANSI ANSI ANSI ANSI ANSI ANSI ANSI ANSI DOS ANSI ANSI ANSI ANSI ANSI UNIX ANSI ANSI UNIX ANSI ANSI ANSI ANSI ANSI ANSI ANSI ANSI ANSI ANSI ANSI ANSI ANSI ANSI ANSI ANSI ANSI int fputc (cha 「 byte, FILE * stream) int fputs (char * string, FILE * stream) int fread (char * where, size t elsize, int nelem, FILE void free (unsigned char * pointe 「 ) FILE freopen (char * filename, cha 「 * fomode, FILE * timeptr) double atan2 (double y, double x) int atexit (void ( * func)) double atof (char * nptr) int atOi (char * npt 「 ) long atOl (char * nptr) int bdOS (int fcode. unsigned long dx ds) VOid bsearch (const void * key, const void * base, int int ( * comp)(const void * , const void VOid callOC (unsigned nelem, size t elsize) double ceil (double x) void clea 「 er 「 (FILE * stream) clock t clock (void) int close (int fd) double cos (double x) double cosh (double x) int creat (cha 「 * filename, unsigned pe 「 mit) char ctime (time t * time 「 ) double difftime (time t timel, time t time2) st 「 uct div t 、 div (int x, int ⅵ void exit (int status) double exp (double x) double fabs (double x) int fclose (FILE * stream) int feof (FILE * stream) int fe 「「 0 「 (FILE * st 「 eam) int fflush (FILE * stream) int fgetc (FILE * stream) int fgetpos (FILE * stream, fpos_t * pos) char fgets (cha 「 * buffer, int bufleng, FILE * stream) double floor (double x) double fmod (double x, double y) FILE fopen (char * filename, char *fomode) int fprintf (FILE * stream, char * format) 48 CMAGAZINE 19 5 double f 「 exp (double value, int * exp) int fscanf (FILE * stream, char * format , ・・・ ) long fseek (FILE * stream,long offset, int base) int fsetpos (FILE * stream, fpos t * pos) long 負 (FILE * stream) int fwrite (char * where, size t elsize, int nelem, int getc (FILE * stream) int getchar(void) unsigned char getenv (cha 「 * name) char gets (char * name) struct tm gmtime (time_t *time 「 ) int inp (unsigned po ) unsigned inpw (unsigned PO ) 日 LE int int86 (int vecno, union REGS * inregs, union REGS * outregs) int int86x (int vecno, union REGS *inregs, union REGS *outregs, union SREGS *segregs) int intdos (union REGS *inregs, union REGS *outregs) int intdosx* (union REGS *inregs, union REGS *out 「 egs, union SREGS * seg 「 egs) int isalnum (char c) int isalpha (char c) int iscntrl (char c) int isdigit (char c) int isgraph (cha 「 c) int 回 owe 「 (char c) int isprint (char c) int ispunct (char c) int isspace (char c) int isuppe 「 (char c) int isxdigit (char c) int longjmp (jmp buf * envp, int value) double IogIO (double x) double log (double x) struct tm localtime (time_t * time 「 ) struct lconv * localeconv (void) idiv t 旧ⅳ (long numerator, long denominato 「 ) double ldexp (double x, int exp) long labs (long x) ANSI ANSI ANSI ANSI ANSI ANSI ANSI ANSI ANSI ANSI ANSI ANSI ANSI ANSI ANSI ANSI DOS DOS ANSI ANSI ANSI ANSI ANSI ANSI ANSI ANSI ANSI ANSI ANSI ANSI ANSI ANSI ANSI ANSI ANSI ANSI ANSI DOS DOS DOS DOS

3. 月刊 C MAGAZINE 1990年5月号

馴第 (f) 門 SOFT 日 K MS - DOS 実用マスターシリーズ 林晴比古 著 全 3 巻 好評発売中 4 ′ S - ロ OS. 実用 7 スターシリーズ・ 新 日本ソフトバンク ◆応用朝 ◆シニア編◆ ◆ビギナー編◆ この 1 冊に MS ー DOS でこんなことが 目からウロコも落ちる できれば・・・と思ったあなたは 実用面で MS ー DOS を MS ー DOS のノウハウ大集合 ー通り使いこなす知識が集約 もうシニアクラス MS-DOS の機能は、大変複雑にな 第 1 巻目をマスターしたレベルの人 初めて MS ー DOS に接するという人 っています。そのためマニュアルを読 を対象にして、 MS-DOS の前知識か を対象に、 MS ー DOS をさらに活用す んでその表面上の操作を理解しても、 るための解説を行っています。本書を ら解説し、「入門者としてここまで知っ まだ、使いこなすことができない場合 読むことによりシステム環境設定の方 ておけば、一ト分に MS ー DOS を使える」 法や、デバイスドライバの組み込み方 があります。大事なことはそのコマン というレベルまて導いていきます。逆 ド ( 機能 ) をどのようなことに使うと便 法、独自メニューの設定方法、ハードデ にいえば知らなくてもいいという知識 利なのかを知ることです。本書では、 イスクや RAM ディスクの活用などにつ や、ここまで説明するとかえって混乱 MS ー DOS を徹底活用する上でのノウ いての知識を得ることができます。後半 するという知識はカットし、なるべく ハウを、多彩な実用例を用いて解説し では、 MS-DOS の全コマンドを機能別 少ない負担で MS ー DOS を「実用マスタ ています。 に分類して、詳細に解説しています。 ー」していきます。 定価 2 , 300 円 ( 税込 ) 定価 2 , 300 円 ( 税込 ) 定価 1 , 900 円 ( 税込 ) 新 林談比古トみ 林晴比古“他を 林物比古ルを出戸 ・応用編 ・一どギナー編 ・ ~ シニア編 日ソフトノレク 日本ソフトノヾンク出版事業部

4. 月刊 C MAGAZINE 1990年5月号

稿こロズラ 非 MS ー DOS ユーザの自己防衛。 , 。 ロ ファイルコンバータ 異機種・異なる DOS 間のファイルをやり とりする方法としては一般的に 1 . プリントアウトしたものを人間また は機械に読み取らせる 2. シリアル転送 3. ディスクを直接読み取らせるコンバ ータソフトを使用する などがあります。しかし , 1 . 2. については ディスクが手元にあったとしても長時間を 要したり , マシンを 2 台必要とするなど , あ まり実用的て、はありません。ましてや素人 プログラマが 2 台ものマシンをもっことなど は考えにくいことて、す。 MS-DOS 全盛時代のいま , 本誌付録ディ スクが MS-DOS フォーマットて、あることは やむを得ないて、しよう。小生の使用する OS ー 9 / 68000 ( 以下 OS ー 9 / 68000 を OS ー 9 と呼びま す ) て、も , MS-DOS ファイルコンバータが Forks などから発売されていますが , NEC の PC ー 98 用がおもて、 , 筆者が使っている富士 通 FMII 用は見当たりません。そこて、 DOS か ら OS ー 9 へのファイルコンバータを自作する はめになったわけて、す。 異なる DOS のファイルを読み書きするた めには , その DOS のディスク構造を解釈 し , ファイルのリンクをたどらなければな りませんが , OS ー 9 の場合にはファイルマネ ージャのレベルて、管理する方法やアプリケ ーションて、管理する方法が考えられます。 素人としては OS ー 9 以外て、も利用て、きるこ とや簡単さを考えて , アプリレベルて、管理 する方法にしました。幸いなことに OS-9 V2.2 て、は MS - DOS ディスク用のデバイスデ 136 CMAGAZINE 1990 5 イスクリプタが追加されていました。さら に OS ー 9 て、は物理的セクタ I / O て、ディスク全 体をひとつのファイルとして扱うことがて、 きるのて、 , 標準の fopen( ) 関数が使えまし た。次に標準の fseek( ),fprintf( ) , fwrite( ),putc( ),fread( ) などが使えること が判明したうえて、プログラムの作成にとり かかりました。 本誌 1990 年 1 月号て、も紹介されているよう に , MS-DOS においてはディレクトリエン トリ , データ格納領域のディスク上の物理 的位置はクラスタ番号によって決定されま す。したがって異なる DOS から MS ー DOS の ファイルを読み取るには , する 7. 後続クラスタがなくなったら fclose ( ) を fread( ) する 続きのクラスタへ fseek( ) してデータ 番号に対応する FAT によってのち , 6 . 1 クラスタ分に達したらそのクラスタ 5. データを fread( ) する fseek( ) する 置をバイト単位て、計算し , そこへ 4. 開始クラスタ番号によって物理的位 して 32 バイトを fread( ) する ディレクトリエントリ位置へ fseek() 3. 目的のファイル名が登録されている 2. それをデバイス単位て、 fopen ( ) する 物理的 I / O 化するデバイスを登録する 1 . MS-DOS フォーマットのディスクを ては高度なものに迫ることがて、きませんて、 法が考えられますが , 素人プログラマとし write バッフアの取り方については種々の方 法や FAT を参照する方法 , あるいは read, ディレクトリエントリ位置を検索する方 という手順になります。 した。また , コンバート作業中はディスク の差し換えが頻繁になりますのて、 , あまり 多くの情報をメモリに蓄えないほうがよい かと思います。 MS ー DOS への書き込みは以上の手順の逆 て、よいのかと思ったのて、すが , さにあらず。 きれいに FORMAT されたディスク ( 空き領 域が 0X00 , 0xE5 て、埋められている ) のみとは 限らないのて、ちょっと手こずりました。 付録のディスクに収録されたソースファ イルを参照していただければおわかりかと 思いますが , extern 関数定義してあるもの が OS ー 9 特有の関数て、す。ほかの OS を使用し ている方の参考になれば幸いて、す。 ー 9 上て、のコンパイル方法は , て、作動するかどうかも試していません。 OS て、す。また FATID が FE , F9 以外のディスク OS ー 9 て、は V2.2 て、なければ作動しないよう 所があるかもしれません。 は同じなのて、きっちり定義て、きていない箇 あります。また OS -9 の C て、は long 型と int 型 ァイル中の改行コード変換は OS ー 9 流にして 使用をとりあえず考えたのて、 , テキストフ み取れるようにしてあります。 OS ー 9 上て、の す。ソースファイルは本誌 2 月号の付録を読 に 3 通り以上のフォーマットがあるようて、 MS-DOS の資料によると FATID が 0xF9 容赦ください るかと思いますが , 素人作ということて、ご 工ラー処理が不完全などいろいろ欠点があ がたりない , 変数名の取り方がおかしい , 体として見にくいソースになったり , 注釈 を増やしたり仕様を変更しましたのて、 , 全 様にしたつもりて、す。思いつくままに機能 ついては , MS ー C の同名の関数とほば同じ仕 dOS findfirst( ) , dOS findnext( ) に

5. 月刊 C MAGAZINE 1990年5月号

コンピュータブンクス 日本ソフトバンクの電脳本 MS-DOS ・プログラミング & リファレンス MS-DOS3.3 広範な各種リファレンスと、 C によるプログラムを 満載。 NEC 製 MS ー DOS はもちろん、エプソン製 MS ー DOS にも対応。 平沢正之著☆定価 2 , 2 圓円 ・ MS - DOS 実用マスターシリーズ 新 MS-D 0 S 入門ビギナー編 / シニア編 / 応用編 初心者にもわかりやすく、実用面て、、 MS-IX)S を 一通り使いこなす知識を集約。 林晴比古著 ☆定価 [ ビギナー ] 1 ,900 円 [ シニア・応用 ] 各 2 , 300 円 ・ビジネスソフトユーサーのための OS 入門 MS - DOS いたれりつくせり本 アプリケーションソフトユーザーが効果的な、、ファ イル整理〃をするための MS ー DOS 入門書。 佐藤みどり著☆定価 1 860 円 PROGRAMMING ・ヒギナーのためのレクチャーフック ・ MACR086 ( MASM ) 活用テクニック プレイ MS-DOS 8086 マクロプログラミンク PLAY MS-DOS を学ぶうえて、必要な知識と必要て、ない知識 MS - DOS 上て、動作するアセンプラ MACR086 に焦 M S ー とをふりわけ、初めての人にて、も無理なく学べる入門 点をあて、その使いこなし方、デバッグの方法を詳細 D 〇 S ☆定価 1 , 960 円 印 : 林晴比古著 西村義孝著☆定価 2 , 680 円 に解説。 ・アセンプリ言語の手引書 8086 アセンプリ言語 必要なとき、ためらうことなく機械語を使いこなす ための手引書決定版。 西村義孝著☆定価 2 , 890 円 ・最も確実で、やさしい入門書 入門 TLJ 日 BO PASCAL Ve に 5.0 プログラミング 本物のプログラマを志す人の TURBO PASCAL 高田直樹著☆定価 3 , 300 円 最新入門書。 ・マッキントッシュで " 0 ・ 0 ・ P " を理解する オプジェクト指向プログラミンク [ 上・ 今後の瀚充となるオプジェクト指向のプログラミン グをから活用まて、解 Kurt J. Schmucker 著 大谷和利監訳☆定価 [ 上 ] 4 , 900 円 [ 下 ] 4 , 700 円 ・ GDC 描画法を教示する決定版 GDC テクニカルブック 豊富な描画機能をもった GDC のコマンド解説とそ の実例を明示。さらには EGC やアセンプラによる高 速イ去まて紹介。星野進ニ著☆定価 3 , 500 円 OS/2 ・ A ごとに C のサンカレプログラム満載 OS/2API フック I カーネル A 曰編 OS / 2 フログラミングューザーのための本格リファ レンスブック。 AP I ごとの図と C によるサンプルフロ グラムを豊富に掲載。坂本浩著☆定価 2 790 円 ・ A 曰ごとに C のサンカレプログラムを満載 ! OS / 2 A 曰ブックⅡテパイスレ 0 、 マウス APIS グラフィックマネジャ、 KKCA 曰編 デバイス I/O リクエストをはじめとしてマウス AP I 坂本浩著☆定価 3 , 000 円 などを詳説。 3.3 いたれりつくせり本 8086 ASSL'.MIMA 8086 当 プロクラミンク BASIC ・構造化プログラミング方法論 Quick BAS 旧プログラミング 基本操作はもちろん、構造化プログラミングの去 まて、も詳解する。便利なサプルーチンなどを多数掲載。 野口雄平・金田知之・高木聡共著☆定価 2 , 000 円 ・より良く、美しいプログラムを書くために BASIC による プログラミングスタイルブック より良く、美しいプログラミングの工ッセンスを、効率 よくまとめたイ料去書。林晴比古著☆定価 1 , 860 円 ・ビジネスプログラムの能率的な開発のために BAS 旧プログラムジェネレータ集 BASIC プログラムの仕様データを入力するだけて、、 ソースプログラムファイルを作成する考え方を説明。 高木征蔵著定価 2 , 800 円 襄 NT 配 R.A - 1 ! GDC テクごカルフック

6. 月刊 C MAGAZINE 1990年5月号

CC msconv . C て、す。デバイスディスクリプタのアセンプ ルはソースファイルの先頭に簡単に説明し てありますのて、そちらを参照してください NEC PC-98, FM16 角 FMII はそれぞれ異 なるのて、ここて、は説明しません。 OS 9 上での操作 プログラムの使い方を説明します。 起動は実行ディレクトリにデバイスドラ イバを置いた状態からプログラムを起動す るだけて、す。デバイスドライバを load , iniz する必要はありません。 argv [ 1 ] にデバイ スドライバ名を指定すればそれを load, attach します。 argv [ 1 ] が省略された場 合は MSdO が指定されたものとして load, attach します。プログラムが起動してプロ ンプト msconv : が表示されたのち , MS- DOS ディスクを所定のドライプに挿入して コマンドを入力します。コマンドの形式は , 2 文字 [ ファイル名 ] [ ファイル名 ] て、す。区切りはスペースて、 , コマンド名を まちがえるとコマンド説明が表示されます。 読み込みファイル名にはふたつのワイルド カードキャラクタ ' * ' , ' ? ' が使用て、きます。 ファイル名の末尾に ' \ ' ' / ' が付加されたと きは , それがディレクトリ名て、あると限定 して検索します。 D, L コマンドからは出力 先を stdout 以外にすることがて、きます。パイ プは使用て、きません。バグなどの可能性も ありますのて、 , MS ー DOS への書き込みは破 壊されてもかまわないディスクを使用する ほうが無難て、しよう。 OS ー 9 への書き込みは 標準関数と標準 RBF マネージャを使用して います。 OS ー 9 て、のプログラム開発環境は , その昔 においては素人から見て MS ー DOS に勝って いたと思っていましたが , MS-DOS の隆盛 とともにその開発環境が値段 , 量ともに逆 転してしまったようて、す。 1 万円以下の C コ ンパイラを見るにつけてもうらやましい限 0 List 1 : / * し Harc 圧縮ファイルの先頭を捜しだしてそこからのデータのみを * / 4 : / * chec ksum を計算して合致するかどうかによって判断する。 3 : / * 圧縮ファイルの先頭が " ヨ ? ? ー " になっている場所を捜して 2 : / * 拡張子コ zh 付のファイルへ書き込む 5 : 6 : 9 : 10 : 20 : 22 : 23 : 24 : 25 : 26 : 27 : 28 : 29 : 30 : 32 : 33 : 34 : 35 : 37 : 38 : 39 : 40 : 42 : 43 : 44 : 45 : 46 : 48 : 49 : 50 : 52 : 53 : 54 : 58 : 59 : 60 : 62 : 63 : 66 : 67 : 68 : 69 : 70 : 73 : 74 : 76 : 78 : 80 : FILE * fp. *op; Char Izhname[13] : fname[13], i nt C : 1 1 : ma i n ( ) int archive-is-msdos_sfxl ( ) , skip_msdos sfxl code(), unsigned Char Buffer[2048] : 8 : #define SEEK_CUR 1 7 : #define SEEK_SET 0 #include く ctype. h> #include く stdio. h> calc-sum() : pr i ntf ( " * * * C MAGAZI N E 自動解凍プログラム切り離し用ユーティリティ ***Yn") : pr i ntf ( " 拡張子コ zh がついたファイルは指定しないで下さい。 yn") : ニ NU しし ) { fopen(fname, i f ( (fp fname) , scanf("Xs" printf("File Name ? " ) : fname) : if ( archive-is_msdos-sfxl(fname) ) { fseek(fp, (long)0, SEEK_SET) : ex i t ( の : printf("Y"%sY" can ・ t find. Yn" skip-msdos-sfxl=code(fp) : fname [strlen (fname) ・ \ 0 冖 sprintf(lzhname, fname) : printf("making Y"%sY"Yn" lzhname) : fopen (lzhname, OP wh Ⅱ e ( (c fread(Buffer, s izeof (char) , fclose(op) : fclose(fp) : fwrite(Buffer, c. 1 , (p) : *name : Char int archive is_msdos sfxl(name) lname (char *)malloc(len + 1); len int i, strlen(name) : * lnane : Char name lname *lname 十十 ー 0 : i for ( i 2048. (p) ) ! ニ 0 ) く len; i 十十 ) tolower(*name 十十 ) : return( (len > = 4 ) & & (!strcmp(lname + len ! strcmp(lname 十 len . CO 田” ) int skip-msdos-sfxl_code(fp) 55 : F ILE *fp : uns igned Char long int fread (Buffer, sizeof (char) , 2048 , n for ( p = Buffer + 2. q = Buffer + n ー 5 : p く q : p + + ) { 56 : { fseek(fp, (long) -n, SEEK-CUR) : return 1 : - Buffer) : pri ntf(' ・ start seek po inter = 0xX04xYn" - Buffer) ー n) . SEEK_CUR) : fseek(fp. (long) ( ( (p - = calc-sum(), p ト 2 ] ) ) { if ( p ト 2 ] 〉 20 & & p[-l] if ( p[0] = int calc_sum(p. 75 : Char i nt len : int sum; for ( sum 0 : len ) 0 : len: len sum 十ニ * p 十十 : return sum & 0xff; Conference Room 137

7. 月刊 C MAGAZINE 1990年5月号

ソフトの道具箱シリース AQGT ライプラリ関数のソースコードを完全公開 / きわめて移植性の高いコードですので , コンパイラのバージョン・アップへの対応や異なる コンパイラへの移植作業は , お客様自身の手で容易に行えます。 組み込みロイヤリティーは無料 / 一般的な業務アプリケーションへの組み込みに対するロイヤリティーは , 一切不要です。 紛せて安心ツ - ル - ~ 一一 した保動自慢確ー 0 C/Dbase 対応言語 : MS-C ( Ve 「 . 5.1 以上 ) Quick C ()e 「 . I. ロ以上 ) 丁 u 「 bo C ()e 「 . 2.0 以上 ) Lattice C ()e 「 . 4. ロ以上 ) C/Window C/Window は仮想画面をサポートした本格的なオ ーバーラップ型マルチウインドウ・アプリケーショ ン開発用の関数ライブラリです。テキストのみなら ずグラフィックスもサポートしていますので , きめ の細やかな画面設計が容易に実現できます。 Dbase-Engine は , MS-DOS 版 C/Dbase ・強力なウインドウ・メカニズムーー最大 1 圓個ま の常駐化ノヾージョンで常駐部 ( En ne ) と Engine でのウインドウを同時オープン可能。各々のウイン へのアクセス関数ライプラリとで構成されます。関 ドウに対する処理はきわめて簡単。文字列処理 , 図 数仕様は , C/Dbase と完全コンノヾチです。 形描画 , ビュー表示の移動 , 拡大 , 縮小 , 表示の 0 ・アプリケーションのプログラム・サイズが小さく N / OFF 等の処理はウインドウことに個有なウイン てすむ。 ドウ番号を用いることにより容易に行える。 ・ Engine 部のソースコードが提供されていない分 ・多彩なテキスト操作処理ーースクリーン・エティ だけ安価。 タのような高機能なテキスト処理を実現する関数も 価格 / 動作環境 用意。 ・ MS ー DOS 版・・・・・・ \ 48. 開 0 ・豊富な図形描画機能 対応機種 : 一般の MS ーロ OS マシン ・メモリ効率の良いグラフィック管理 対応 OS : Ve 「 . 3.0 以上 価格 / 動作環境 対応言語 : MS-C ( Ve 「 . 5.1 以上 ) ・ MS ー DOS 版・・・・・・ \ 66 , 0 Quick C ()e 「 . 1 . ロ以上 ) 対応機種 . PC ー 98 田シリーズ (LT, XA および 丁凵「 bO C ()e 「 . 2. ロ以上 ) XL, 日 L 等の八イレゾモードは除く ) Lattice C ()e 「 . 4.0 以上 ) 対応 OS : Ve 「 . 3.0 以上 対応言語 : MS-C ( Ve 「 . 5.1 以上 ) Quick C ()e 「 . 1 . 0 以上 ) Turbo C ()e 「 . 2.0 以上 ) Lattice C ()e 「 . 4.0 以上 ) C/Dbase は , 検索ロジックに正当な Bt 「 ee ア ルゴリズムを採用した本格的なテータ・べース構築 用の関数ライプラリです。提供関数群は ISAM 関 数 , Data 関数 , Bt 「 ee 関数の 3 つのグループに 大別されます。 ISAM 関数は , 一般的な定型業務用 テータ・べースの構築に最適です。また , Data 関 数および Bt 「 ee 関数は , きわめて汎用的なテータ・ べース ( たとえは , SQL, カード型テータ・べー ス等 ) の構築を可能とします。 ・ OS / 2 , IJN Ⅸ版はマルチ・プロセス対応 - ーーレ コードの排他制御およびファイルの排他制御は完璧。 制御を行う関数は MS-DOS 版にも疑似的にサポ ートされているので , あらかじめ排他制御を考慮し て作成されたアプリケーションはそのままソースコ ード・レベルで移植可能。 ・豊富な検索機能ーーキー値によるアクセスに加え , レコード番号によるアクセスも可能。 ・削除レコードの復旧機能ーー削除レコードはファ イルのノヾージを行うまでファイル内に存在するので , 必要に応じて復旧できる。 ・充実したファイルの破壊対策機能ー - ファイルの 整合性検証および修復の機能は , ユーティリテイだ けでなく関数としても提供される。 ・高速な検索スピード—Bt 「 ee アルゴリズムを 採用しているので , テータ量が多くなればなるほど , 威力を発揮。 価格 / 動作環境 ・ MS ー DOS 版・・・・・・¥ 98.000 対応機種 : 一般の MS-DOS マシン 対応 OS : Ve 「 . 3 . 0 以上 対応言語 : MS-C ( Ve 「 . 5 」以上 ) QUiCk C ()e 「 . 1 . 0 以上 ) 丁 u 由 0 C ( Ve 「 . 2.0 以上 ) Lattice C ()e 「 . 4.0 以上 ) 対応機種 : 一般の OS / 2 マシン 対応 OS : MS OS/2 ()e 「 . l.l 以上 ) 対応言語 : MS-C ( Ve 「 . 5.1 以上 ) ・ IJN Ⅸ版・・・・・・¥ 198. 囲 0 対応機種 . 一般の IJN Ⅸマシン 対応 OS : f に ck ( ) がサポートされているもの 対応言語 : 標準の C Dbase-Engine Window_Engine Window-Engine は , MS-DOS 版 C/WindOW の常駐化ノヾージョンで常駐部 ( En ne ) と Engine へのアクセス関数ライプラリとで構成されます。関 数仕様は , C/WindOW と完全コンノヾチです。 ・アプリケーションのプログラム・サイズが小さく C/BCD は , お金の計算のように高い演算精度が要 てすむ。 ・ En ne 部のソースコードが提供されていない分 求される処理を実現するための関数ライプラリです。 四則演算しかサポートしていませんが , double へ だけ安価。 の型変換を行えば科学技術計算も可能です。 ・ PC ー 98 田以外の機種もサポート。 ・すべて C 言語で記述されているのて , 異 OS への 価格 / 動作環境 移植が容易です。 ・ MS ー DOS 版・・・・・・¥ 33 , 0 ・ BCD 型のテータは C/Dbase, Dbase_En- 対応機種 : お問い合わせください。 gine にてサポートされる ISAM ファイルのキー 対応 OS : Ve 「 . 3. ロ以上 対応言語 : MS-C ()e 「 . 5.1 以上 ) 値としてそのまま使用可能。 Quick C ()e 「 . 1 . 0 以上 ) ・豊富な編集機能ーー s ロ「 intf ( ) のような手軽さで 日 CD 型のテータを編集可能。 丁 u 「 bO C ()e 「 . 2.0 以上 ) 価格 / 動作環境 Lattice C ()e 「 . 4.0 以上 ) ・ MS ー DOS 版・・・・・・¥ 33 , 圓 0 MS-DOS, MS OS / 2 , MS-C, Quick C は米国 Microso 代社の商標です。 対応機種 : 一般の MS-DOS マシン Turbo C は米国 Borland lnternational 社の商標です。 Lattica C は 米国 L 狙 ice 社の商標です。 IJNIX は米国 AT & T 社の商標です。 対応 OS : Ve 「 . 3.0 以上 C/BCD ・お問い合わせ・こ注文は直接下記まで 開発・販売元第第 株式会社 ノ—J レクラフト 〒 182 東京都調布市国領町 2-3-15 センチュリー K & AI 102 TEL. 0424 ( 89 ) 2 FAX. 0424 ( 89 ) 4888 郵便振替 / 東京 9-537910 横浜銀行調布支店 / 普通 1011526 * 価格はいすれも消費税込み

8. 月刊 C MAGAZINE 1990年5月号

Mac 用 MML ソフト 2 種 キヤノン販売 キヤノン販売は , マッキントッシュ用 MML ソフトウェア「 Netway100 」 (IBM コンビュー タ用 ) , 「 Pacer 」 ( DEC コンヒ。ュータ用 ) を発 古した ノし 0 Netway100 は IBM メインフレームの SNA 環境と Mac アップルトーク環境とをつなぐ 役割を果たすサーバ。面倒な工事を行うこ となくアップルトーク環境に 1 ノードとして 追加するだけて、 , Mac が漢字 3270 ターミナ ルとして利用て、きる。また , Mac と IBM メ インフレーム (TSO, CMS) との間てファイ ル転送が行える。 く価格 > NetwayIOO 十 SNA3278J(ソフト ウェア ) ・・ ファイル転送プログラム・・ ・・・ 128 万円 ・・・ 16.8 万円 Pacer には PacerLink と PacerShare とい うふたつのソフトウェアがあり , これによ り Mac と DEC コンヒ。ュータとの間て、コミュ ニケーション , ファイルシェアを行うこと がて、きる。 PacerLink は非同期接続, ィーサーネット への直接接続 , アップルトークをプリッジ した直接接続により Mac と DIC コンヒ。ュータ (VAX/VMS) と接続する。またファイル転 送も可能。 PacerShare は VAX 上て、稼動するアップル シェアと互換性のあるファイルサーバ た PacerShare て、作成したファイルは Mac, VAX / VMS 上いずれても利用て、きる。 く価格 > PacerLink 十 PacerShare ・・・ 86 ~ 1 , 600 万円 問合せ先キヤノン販売 〒 108 東京都港区三田 3 ー 11 ー 28 TEL 03 ー 455 ー 9131 146 CMAGAZINE 19 5 C-MAGA 0S/2 対応版 ArityPro log V5 ライフボート ライフポートは , MS-DOS 上て、動く Prolog 処理系 ArityProlog V5 の OS / 2 対応版を発 ArityProlog V5 OS / 2 版は , MS-DOS 版 と上位互換を保持しており , 従来からサポ ートされていた仮想データベース機能 , C 言 語とのインタフェイス機能 , 浮動小数点演 算を , MS ー DOS 版と同様に利用て、きる。さ らに OS / 2 版に拡張されたことて、 , 複数のス レッドを使ったアプリケーション開発をサ ポートするマルチスレッドプログラミング 応する統合化 C 機能 ・ OS / 2 に搭載されたすべての API 関数に対 ・ヾース幾育皀 ・最高 2G バイトまて、構築可能な仮想データ そのほかの特長は以下のとおり。 などの手法が追加されている。 TEL 03 ー 293 ー 4717 〒 101 東京都千代田区神田錦町 3 ー 6 問合せ先ライフポート (MS-DOS 版十 OS/2 版 ) DUAL 版 19.8 万円 く価格 > OS / 2 版 10 万円 く必要メモリ > 4M バイト以上 く対応 OS > OS/2 Ver. 1.1 以上 FMR シリーズ く対応機種 > PS/55, PC ー 9801 , 小数点演算が可能 ライバを搭載したことにより高速な浮動 ・ 80287 , 80387 に対応するコプロセッサド ンの構築が可能 ・タスク間通信を行う知的アプリケーショ レッド関数の供給 ・最高 20 スレッドまて、管理可能なマルチス ANSI C 規格対応ライプラリ rc PARTS 」シリーズ アイセル アイセルは , ANSI 規格対応の C 言語ソー スライプラリ集「 C PARTS 」シリーズに V 。 1.3 ( 画面制御 / 入力ソースライプラリ ) , Vol.4 ( ISAM ライプラリ ) を発古した ノし 0 「 C PARTS 」シリーズは , 「 ANSI C 規格」 に対応した関数ライプラリて , MS-C, LatticeC, TurboC, QuickC の各コンパイ ラて、利用することがて、きる。また , すべて の関数のソースコード , またライプラリを 用いた実用的なサンプルプログラムが付属 している。 く対応機種 > VoI. 3 は PC ー 9801 シリーズのみ対応 Vol. 4 は PC ー 9801 , FMR, AX, J3100 シリーズ対応 く価格 > C PARTS Vol . 3 ・・・ 14 , 800 円 C PARTS Vol.4 ・・・ 19 , 800 円 問合せ先アイセル 〒 171 東京都豊島区池袋 2 ー 53 ー 8 秋島ビル 5F TEL 03 ー 293 ー 4717 マルチタスク処理を実現する 「マルチタスクアダブタ」 リンクスアイ リンクスアイは MS-DOS 十 MS-C て、マル チタスク処理を実現する「マルチタスクア ダブタ Ver. 1.0 」を発売した。 「マルチタスクアダブタ」は特殊なインス トールが必要なく , シングルタスクて、は実 現が困難な並列処理を開発 , 実行て、きる。 また , 付属の高速 3 分割テキスト表示ライプ ラリ , キーポード入力ライプラリによりマ ルチタスク処理の利点を生かしたプログラ

9. 月刊 C MAGAZINE 1990年5月号

付録、イス収録 S-ProIog er 0 について 佐 付録ディスクに収録した S ー prolog について説明します。 Ca] : ( また S-Prolog は , エジンバラ prolog に準拠した prolog インタブリタで , 動作可能な環境は MS ー DOS です ( ただし , 付属のバイナリファイル は , 98 版の TurboC でコンバイルしてあるので , PC ー 9801 以外では動作 しないことがあります ) 。 no 次に実行をトレースしてみます。 trace という組み込み述語を用い 翻訳の割線法のプログラム•sec. pro" が入っていますから , これ ます。 を実行してみましよう。まず , コマンドラインから , ー ?-trace, append(Ca, b] A 〉 slog sec.pro@ ① と入力します。これで , S ー prolog が立ち上がり , プログラムも読み込 0 Exit trace ② append(Ca, b] まれます。まもなく Ready と表示されて , プロンプト感にが表示さ 0 Call append(Cb] ( 3 ) れます。さっそく例題を解いてみましよう。 Prolog に質問するときに 1 Call append( ロ ④ は , ツー″という記号を用います。 2 Call append( ロ ( 4 ) l?-solve(x = cos(x)) . 2 Exit append(Cb] ( 3 ) これで , 割線法のプログラムが実行され , 次のように表示されま 1 Exit append(Ca, b] ② 0 Exit Ca, b, c, d] 2 .000000 0 .765035 yes トレースを止めるには , notrace という組み込み述語を用います。 0 .742299 0 . 739 田 3 —notrace . [Found a satisfactory solution] yes S ー P 「 olog を終了するには , X ニ 0.739085 ー ?-exit. 解が求まり , 入力待ちになります。ここで別解が必要な場合は第″ を入力するのですが , この場合は必要ないので , 固キーだけを押します。 と入力します。 付属のドキュメントファイル og. doc" は次のような構成になっ すると , ています。興味のある方はこ・覧ください。 yes 【はじめに / 使用にあたって】 と表示されて実行が成功裡に終わります。実行の確認として , 本文 プログラムの版権についての表示 のいうとおり *dif" が定義されているかどうか見てみましよう。 【起動方法 / 練習】 ー ?-listing(dif) . 起動時スイッチの説明 , 実行例 と入力します。すると , 【ファイル & コンバイル】 dif( 0 , 1 ) 付属のファイル一覧と , コンバイルに関する注意事項 ー cos( 0 ) . 【文法 / 演算子 / 組み込み述語 / 工ラーメッセージ】 と表示され , たしかに定義されていることがわかります。 s ー pr 。 log の文法事項と組み込み述語の説明 もうひとつの例として , append を定義してみましよう。ノを入 【データ構造 / 制御構造】 力しない場合は , 定義が追加されます。次のように入力します。 lappend( ロ , Y, Y) . S-ProIog の実行のしくみ lappend()A は ] , Y, CA に ] ) 【組み込み述語の追加方法】 s ー prolog に新たに組み込み述語を追加する場合についての説明 では , 動作を見てみましよう。 【バグ & 注意事項】 現在確認しているバグについての記述 【参考文献 / おわりに】 その他 S ー p 「 olog の作成に要した文献リスト , te 「 log について , で , を入力する ) [c, dJ , Cc, d] , 46 ) ? 48 ) ? す。 ー append(), Y, Z) . ″を入力して別解を求めます。 PROLOG による数式の解法 41

10. 月刊 C MAGAZINE 1990年5月号

ー ion ( m 2 倍以上のアセンプル速度をもっス タンダードモードと高度に洗練さ れた ldeal モードをサポート。 C 言 語や PASCAL などの高級言語と Turbo Assembler とのインタフェ イスも簡単に実現て、きます。 IBM-PC 版 Turbo Debugger& Tools は , 第 2 四半期に出荷される 予定になっており , IBM- PC 版 Turbo Assembler&Debugger 1.0 をおもちの方はサポートセンタ ーにてアップデートの受付を行い ます ( 13 , 000 円 ) 。すて、に , PC ー 9801 版への移植作業も始まっておりま す ( 出荷時期未定。出荷時期につい てのサポートセンターへのお問い 合わせはご遠慮ください ) 。 Q&A 0 fopen でオープンしたファイル ストリームに対して , setvbuf で文 字列パッフアを割り当てています。 入出力処理は正しく動作しますが , fclose した後プログラムの動作が おかしいようです。 A 割り当てている文字列バッ フアを静的領域に確保していませ 18 : } 43 : } んか。 TurboC て、は , fopen が入出 カ用に用意されるバッフアは , 動 的に確保されたものを使うことに なっています。 fclose て、は , この 領域を解放しようとしますが , 静 的領域に確保されたデータ領域は , ヒープ領域と異なり確保 , 解放の 対象にはて、きません。この領域を 無理やり解放しようとするため , 誤動作の原因になっています。 0 findfirst, findnext で , 属性 にディレクトリを指定しているの に , 通常のファイルまで検索され てしまいます。 findfirst, findnext は , MS-DOS のファンクション 4EH, 4FH を使ってファイルの検索を行 っています。これらのファンクシ ョンは , ディレクトリの指定やリ ードオンリー属性などが指定され たときに通常のファイルも検索の 対象としているため , そのように なります。 ディレクトリ属性てあるかどう か確認するためには , ffblk 構造体 のメンノヾ ff attrib とシンポル FA ー DIREC の論理積をとってくださ い (List1 参照 )。 A findfi 「 st,findnext 使用例 List 1 1 : 4 : 7 : 8 : 9 : 10 : 12 : 13 : 14 : 15 : 16 : 17 : 5 : void nain(void) 3 : #include く dos. h> 2 : #include く dir. h> #include く stdio. h> int stat: struct ffblk ffblk; printf("Directories.. stat = findfirst("*. *"・ &ffblk. FA_DIREC) : while (stat = if (ffblk. ff_attrib & FA_DIREC) { printf("Yt く XS 〉 Yn" ffblk. ff_name) : stat ニ findnext(&ffblk) : List2 4 月号 P. 151 の List3 の入れ換え用プログラム 2 : 3 : 6 : 7 : 8 : 9 : 10 : 12 : 13 : 14 : 15 : 20 : 22 : 23 : 24 : 25 : 26 : 28 : 29 : 30 : 32 : 33 : 34 : 35 : 38 : 39 : 40 : 42 : 44 : 45 : 49 : 50 : 52 : 53 : 54 : / * fo 「 small data model * / unsigned dX, unsigned CX, unsigned bX. unsigned ax) unsigned dS. unsigned VOid interrupt trap29(unsigned bp, unsigned di. unsigned si. #pragma warn -par static void interrupt (*save29) ( ) : ニ 1000 : extern unsigned _heaplen : 1 000 : extern unsigned stklen 5 : # i nc lude く dos. h > 4 : # i nc lude く a Ⅱ oc. h 〉 V i s i b Be Ⅱ reg ister unsigned es *attr : / * prevent comp iler usage * / register int i: if ((unsigned char)ax ・ Ya つ { _ES ニ 0Xa200 : for ( i ニ 0 : i く 2 : i + + ) { for (attr - (unsigned -es 事 ) 0 : ニ 0X04 : *attr } else { save29() : (unsigned)attr く 0X2000 : attr + + ) { #pragma warn . par VOid _setargv() / * dummy function * / VOid _setenvp() お詫びと訂正 本誌 1990 年 4 月号の本コーナーの List3 はリ ストにまちがいがありました。今月号に正し いリスト (List2) を掲載しましたのて、 , ご参照 ください。訂正してお詫び申し上げます。 ( 編 / * dummy function * / void main(void) / 事 setvect(0x29. trap29) : save29 : getvect(0x29) : uns igned keepsize: keep(), keepsize) : keepsize : *(unsigned far *)MK_FP (_psp. 2 ) - farcoreIeft()/16 - _psp 十 2 : lnformation 作 om Compi 厄「 M akers 151