質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

BASIC

BASICとは、手続き型言語の一つ。英語に準した簡易な記述になっており、基本的には初心者向けのプログラミング言語です。1970年代以降のコンピュータでよく使用された言語で、様々な拡張を加え現在も利用されています。

Q&A

解決済

2回答

293閲覧

N88BASICのGET命令で文法エラーと言われます。

sanshirou

総合スコア8

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

BASIC

BASICとは、手続き型言語の一つ。英語に準した簡易な記述になっており、基本的には初心者向けのプログラミング言語です。1970年代以降のコンピュータでよく使用された言語で、様々な拡張を加え現在も利用されています。

1グッド

0クリップ

投稿2024/10/02 04:11

実現したいこと

昔のNEC社のN88BASICのプログラムを、DxLibライブラリを用いたC言語に移植しようとしています。その前段階として、Windows11環境で、フリーソフト「N88BASIC for Windows95」をダウンロードして、その上で昔のプログラムを動かそうとしたところ、GET命令のところで「文法エラー」と言われて止まってしまいました。移植しようにも、元のプログラムがどんな動きをしたか確認しないとできないので、とにかくプログラムが動いてくれないと前に進めません。GET命令関連のところを、抜粋しました。

BASIC

1100 DIM IP(8),IQ(8) 2110 GET (319,359)-STEP(2,2),IP 3120 GET (319,370)-STEP(2,2),IQ 4130 FOR I=369 TO 325 STEP -1 5140 PUT (319,I+1),IQ,PSET: GET (319,I)-STEP(2,2),IQ: PUT (319,I),IP,PSET 6150 NEXT I

発生している問題・分からないこと

「文法エラー 行番号110」と表示されました。

エラーメッセージ

error

1文法エラー 行番号110

該当のソースコード

BASIC

1```BASIC 2100 DIM IP(8),IQ(8) 3110 GET (319,359)-STEP(2,2),IP 4120 GET (319,370)-STEP(2,2),IQ 5130 FOR I=369 TO 325 STEP -1 6140 PUT (319,I+1),IQ,PSET: GET (319,I)-STEP(2,2),IQ: PUT (319,I),IP,PSET 7150 NEXT I
### 試したこと・調べたこと - [x] teratailやGoogle等で検索した - [x] ソースコードを自分なりに変更した - [ ] 知人に聞いた - [ ] その他 ##### 上記の詳細・結果 グーグルで、「N88BASIC」「GET命令」「文法エラー」などと検索してみましたが、解決しそうなものはありませんでした。 ### 補足 何をどう直せば文法エラーが回避されるかを知りたいです。移植する上でも、N88BASICのGET命令を、DxLibを用いたC言語で、同等の機能を持つ関数などを自作して対応しようと考えております。何が「文法エラー」なのでしょうか。
melian👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2024/10/02 04:58

そのプログラムが概ねどのような動作をするものなのかは把握している状態でしょうか?
sanshirou

2024/10/02 05:07

>そのプログラムが概ねどのような動作をするものなのかは把握している状態でしょうか? はい。実は、昔、NEC社の98マシンで、N88BASICで実際に動かして使っており、動作は記憶しております。電子銃から粒子をどんどん飛ばして、スリットを通過させて、干渉模様を描かせる、という、量子力学のシミュレーションのプログラムです。98上(OSはMS-DOS)のDisk BASICで動かしていた時には何の問題もありませんでしたが、Windows11上で上記「…for Windows95」ソフトで動かそうとすると、どうもGET命令のところで止まってしまうようです。上に載せたソースコードは、GET命令関連の行だけ抜粋したものです。
melian

2024/10/02 05:30 編集

「N88BASIC for Windows95」というのは、以下のソフトウェアでしょうか? N88互換BASIC for Windows95 https://www.vector.co.jp/soft/win95/prog/se055956.html そうである場合、同梱のサンプルプログラムでは GET 命令は以下の様に書かれています。 GET (0,0)-(159,100),B(0) 変数 B は DIM 宣言で確保されていません。また、STEP(相対指定)を使うサンプルが見つかりません。
sanshirou

2024/10/02 05:45

コメントありがとうございます。STEP()による相対指定を、絶対指定に書き換えたところ、意図通り動きました。 ベストアンサーに選びたいので同じ内容を回答欄に投稿いただけますでしょうか?
guest

回答2

0

ベストアンサー

同梱のサンプルプログラムでは GET 命令は以下の様に使用されています。

GET (0,0)-(159,100),B(0)

STEP(相対指定)を使うサンプルプログラムが見つかりませんので、STEP に対応していないのかもしれません。

※ やはり対応していないのですね

STEP()による相対指定を、絶対指定に書き換えたところ、意図通り動きました。

投稿2024/10/02 05:53

melian

総合スコア20574

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

N88-BASIC for Windows95 は GET 命令をサポートしていません。 サポートしていない命令は単なる変数として解釈する仕組みになっていて、そうすると意味のある解釈を出来ないために文法エラーとして通知されます。

N88-BASIC では GET は二種類の意味がありますが、この場合は画面に表示されているパターンを配列に格納することを意味します。

basic

1GET (319,I)-STEP(2,2),IQ

というのは画面中の座標 319,I から 2,2 の大きさの画像を切り取って IQ に格納するという意味です。

互換と言っても実行環境の都合により完全に同じとはいかない部分があります。 グラフィックやファイルなどは根本的なメカニズムが違うためにそのあたりの辻褄をどう合わせるかというのは立場によって様々な選択肢があります。

たとえば Windows では PC-9801 環境よりも多くの色が使えますが N88-BASIC の事情に合わせて少ない色数 (16色) に制限するのか、それとも Windows の事情に合わせてもっと多くの色を使えるようにする (そのかわり互換性を諦める) のかといったようなことです。 N88-BASIC for Windows95 ではパレットは16色としているものの画面上では256色を扱えるという折衷案をとっているので本来の N88-BASIC とはまるで違う内部構造になってしまうことから GET 命令などをサポートできないのだと思います。

NL-BASIC などはより N88-BASIC との互換性を強く指向しており GET もサポートしているようなので試してみてはどうでしょうか。 (通信系などの命令は非サポート。)

より確実に互換な挙動が欲しいなら本物の N88-BASIC を PC-9801 エミュレータで動作させるという方法も取れるでしょう。

投稿2024/10/02 05:00

SaitoAtsushi

総合スコア5675

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sanshirou

2024/10/02 05:48

回答ありがとうございます。ご提示くださったNL-BASICを試してみましたが、実行の段階でWindowsにブロックされ、「動作保証ができない」とのことでしたので、怖くてそこで諦めました。 ひとまず、ご回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問