下記のURLのプログラムらをUNIX(Solaris)上でコンパイルするとdos.hファイルが見つからない,というようなエラーが出ます。これらのプログラムをSolaris上でコンパイルし,実行できるようにするにはどう書き換えればよろしいのでしょうか。課題の一部なのですが宜しくお願いします。
http://www-itolab.ics.nitech.ac.jp/creport/enshu …
http://www-itolab.ics.nitech.ac.jp/creport/enshu …
http://www-itolab.ics.nitech.ac.jp/creport/enshu …
No.1
- 回答日時:
「/* Display routine for PC98 */」の部分が問題ですね。
NECのPC-9801に依存したコードがあるようです。
check_point()を書き換えなきゃいけないんじゃないかな。
あとは、自分で考えてみてください。
この回答への補足
本題から外れるかもしれませんが
http://www-itolab.ics.nitech.ac.jp/creport/enshu …
の
/* checks to see if the point is an '*' */
/* Check routine for IBM-PC
check_point(a,b)
int a,b;
{
union REGS regs;
gotoxy(a,b);
regs.h.ah=8;
regs.h.bh=0;
int86(16,®s,®s);
if(regs.h.al=='*') return 1;
return 0;
}
*/
の部分なのですけど,このcheck_point(a,b)はコメント扱いになっているのでしょうか。また,int86やregsとはなんなのでしょうか。
No.2
- 回答日時:
dos.hは、86系のMS-DOS(PC-DOS)でしか有効でないですよ。
int86()とか使ってレジスタに設定してるみたいだし。VRAMをいじってるし。
20年くらい前のソースでは?
おそらくgraphicまわりは、SolarisにあわせてX-Window上のgraphicライブラリ
やらを使うように書き換えなくてはならないと思います。
No.3ベストアンサー
- 回答日時:
#1です。
>このcheck_point(a,b)はコメント扱いになっているのでしょうか。
そうですね。Cでは、/* から */ はコメントです。
これは、IBM-PC用のコードのようです。で、下のほうにある同じ関数が、
NEC PC-9801用のコードのようです。
(IBM-PC用のソースをPC-9801用に移植したものかもしれません)
機能としては、カーソル位置の文字が'*'かどうかを検査するものです。
>また,int86やregsとはなんなのでしょうか。
int86は、Pentiummのご先祖様の8086CPUのソフトウェア割り込みです。
今でもDOSモードで動くと思います。BIOSをCALLする時などに使用します。
(例では、IBM-PCのVIDEO BIOSである INT 10h を呼び出しています)
regsというのは、CPUのレジスタに値をセットするための共用体変数です。
regsにレジスタにセットしたい値をセットして、int86関数をCALLすると、
アセンブラで呼び出すようなことがCで可能になるのです。
サンプル(課題)のソースのコメントアウトされている方の関数(IBM-PC用)を
有効にして、下にある同じ関数名の方(PC-9801用)をコメントアウトして
DOS用のCコンパイラでコンパイル/リンクするとDOSプロンプトで実行できる
と思います。(PC-9801でない普通のWindowsマシンなら)
int86についてはこちらをご参考に。
http://www2.muroran-it.ac.jp/circle/mpc/old/pc98 …
フリーのDOS用のCコンパイラはこちらからダウンロードできます。
http://www.vector.co.jp/soft/maker/lsi/se001169. …
本題については、Solarisでこの機能(check_point()関数)をどう実現
するかということになろうかと思います。
参考URL:http://www2.muroran-it.ac.jp/circle/mpc/old/pc98 …
>これは、IBM-PC用のコードのようです。で、下のほうにある同じ関数が、
NEC PC-9801用のコードのようです
気が付きませんでした。適切なご指摘ありがとうございました。あとは自分で考えてみようと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# プログラムが書けません。 4 2023/01/22 22:57
- C言語・C++・C# 現在プログラムを作っているのですが、実行したときに写真のように結果が表示されるのですが、これを CH 2 2023/01/18 16:22
- C言語・C++・C# C++のcinの動作 5 2023/02/26 00:13
- SEO googleサーチコンソールで、重複URLが多数発生、その修正方法について 2 2023/06/23 16:15
- JavaScript ブックマークレットについて 2 2022/10/09 11:48
- その他(プログラミング・Web制作) FORTRAN77の配列(除算) 2 2023/02/01 14:34
- JavaScript Javascript初心者|jQueryの.val()で値を取得し複数の要素を連結させる方法知りたい 2 2022/06/02 12:06
- JavaScript プラグイン無しでContactform7にdatepickerを実装 3 2022/10/25 02:18
- C言語・C++・C# C++のcase文の書き方 4 2023/02/24 20:50
- HTML・CSS エクセルのファイルのダウンロード 前にアップしたファイルがダウンロードされる 1 2022/11/13 13:02
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アプリケーションのDLLファイル...
-
<unistd.h>をVisualStudioでつ...
-
C言語をコンパイルするとコンピ...
-
64ビットのlinuxで32ビットメモ...
-
C#で char型とstring型の比較で...
-
c言語です コンパイルした時に...
-
minGWでのopneMPコンパイルにつ...
-
gccでc++プログラムをコンパイ...
-
リトルエンディアン、ビッグエ...
-
WindowsでコンパイルできるがUN...
-
arduinoのエラーメッセージ
-
コマンドプロンプトを使ったコ...
-
latex cite, ref
-
#If VBA7 Thenに関して
-
VBAにおいて「デバッグ」と「コ...
-
Cコンパイラ(gcc)について
-
VBA と コンパイル の関係
-
プレコンパイルの意味を教えて...
-
#If True Then の # って何??
-
VC++.NET と UTF-8
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
<unistd.h>をVisualStudioでつ...
-
アプリケーションのDLLファイル...
-
C言語をコンパイルするとコンピ...
-
実行後にコンパイルに失敗しま...
-
math.hに含まれる関数が使えない
-
ビープ音が鳴りません・・・
-
c言語です コンパイルした時に...
-
<math.h>ヘッダを入力している...
-
C#で char型とstring型の比較で...
-
共有ライブラリの内容確認について
-
すべてのリビルド: 0 正常、 0 ...
-
[COBOL] ソースの復帰
-
64ビットのlinuxで32ビットメモ...
-
VS2010環境で2点ほど質問
-
gcc バージョン違いによるコン...
-
ヘッダーファイル『windows.h』...
-
C言語で作ったらWindowsでもMac...
-
自作DLLの中身を暗号化
-
MVSマシンで0C7でABENDしたので...
-
Verilog_HDLでのdefineとifdef
おすすめ情報