N88-日本語BASIC の Windows への移植について

現在でも、多くの NEC N88-日本語BASIC(EPSON BASICを含む)で作られたプログラム資産が残されており、まだ
現役中のものも多く残されております。

では、これらの N88-日本語BASIC を Windows で利用するにはどうすればよいでしょうか。
色々な方法があろうかと思いますが、代表的な手法は以下の3つです。

A.ソースや仕様を基にして、Windows用開発言語(※1)で新規に作り直す
B.Windows上で動く N88互換言語(※2)で修正して利用する
C.FDを D88形式のイメージディスクに変換し、PC-98 のエミュレータ(※3)で利用する

※1・・・「Visual Studio.NET」など
※2・・・「BASIC/98」「99 Basic」「N88互換BASIC for Windows95」など
※3・・・「T98-next」「Anex98」「Neko Project II」など

弊社のお薦めは、何と言っても Aの Windows用開発言語 で作り直すことです。

しかし、
PC-98本体が老朽化して不調だが、機能的には PC-98 で充分・・・
数年後にリプレース予定だが、それまで何とか持ちこたえたい・・・
リプレースしたいが、予算が・・・
設計書が無いので、新規開発の仕様が起こせない・・・
等の、諸般の事情により、「今は、とりあえず Windowsで動けば」というご希望も少なくありません。

このような場合には、弊社では Bの N88互換言語
N88-日本語BASICとの互換を謳っている言語
N88-日本語BASICとの互換性の高い言語
の利用も提案させていただいております。

但し、
あくまでも、「N88と互換性が強い言語」であることを忘れてはいけません。
各N88互換言語の説明には、簡単に移植できるように書かれておりますが、実際にはそう簡単ではありません。



◎N88-日本語BASIC のDisk版とMS-DOS版について

N88-日本語BASICにはROM版、Disk版、MS-DOS版があります。

移植する場合、最終的には、MS-DOS版のアスキー形式のプログラムソース(メモ帳などで読める形式)
に変換したうえで、Windowsで読み込める形にしなければなりません。
Disk版の場合は、Disk版上で一旦、アスキーセーブしなおしてから、更にMS-DOS版に変換し、Windows
で読み込む必要があります。

※データー関係は、無闇にアスキー形式に変換するわけにはゆきません。バイナリー形式で保存されて
  いる場合が多いからです。
  また、プログラムとしては、ファイルI/Oの修正が必要になります。
ROM版はレコーダー(所謂 カセットテープ)に保存されておりますから、Disk版に変換しなければな
  りません。
  ROM版から移植する必要があるプログラムは、ほとんど無いと思われますが。

【ワンポイント】DOS版に変換する際には、半角全角を問わず、記号文字には注意しろ!
フォントの体系が異なるため、記号関連が文字化けする場合があります。
     ※例)半角の 「年」「月」「日」「中黒点」罫線関連・・・etc.
単なる文字化け(眼に見える文字)ならまだいいのですが、一文字前の文字コードの影響により、
バイナリ(16進)値に化けてしまう場合があります。
運が悪ければ、バイナリ(16進)値 以降のプログラムが見えない(編集できない)こともあります。


★N88互換言語について

N88互換言語には、前述のとおり、メーカー製をはじめ、フリーでも多く存在しております。
※フリーの言語で、商用目的を禁じているもの、不安定なものは、弊社は使用致しません。

フリーは、当然ながら保障はありません。
言語自体のバグ修正や将来のバージョンアップに不安もあります。
では、「価格は高くても保証のあるメーカー製が良いのか」というと、そういうわけでもありません。

メーカー製であっても、言語自体の保障はありますが、作られたアプリ自体の保障はないのです。
つまり、本格的な Windows言語への移行段階のためと割り切れば、安定しているフリーでもいい
のでは?と思います。
※法人のお客様からの依頼に関しては、ほとんどの場合、メーカー製の購入を勧めております。
※さすがに、フリーというわけにはいかないので。


N88互換言語には、変換ツールを装備しているものもありますが、
     自動変換ツールでは、そのN88互換言語でエラーが出ないように変換してくれるだけ
と、考えた方が賢明です。
特にグラフィック関連は、元々のハードが異なるのですから、注意が必要です。
同じ命令・関数が存在していても、その意味やパラメータが異なっていたり、別の命令・関数に置き換
わっている場合もあります。
パレットやタイルパターンは、あまり対応されておりませんし、テキスト画面とグラフィック画面を意識した
関数が用意されていないものもあります。
Windows用言語に精通された方々には、「テキスト画面」「グラフィック画面」の存在が不思議かもしれま
せんが、N88-日本語BASICの時代は、テキストとグラフィック画面が独立しておりました。
この特性を意識したプログラムの場合、修正量が大幅に増大します。
また、メモリ関連(PEEK,POKE,SEG・・・ )は、ほとんどが未対応です。
機械語ルーチンは、仕様書・設計書があれば置き換えが可能ですが、無ければあきらめることになります。
結局は、メーカー製であってもフリーであっても、ソースを丁寧に調べて修正することになります。

例えば、変換関数「STR$」を例にあげてみます。
※初歩的な例です。

10 A$=STR$(123)
20 PRINT "結果0=";A$
30 B$="000"+A$
40 PRINT "結果1=";B$
50 C$="000"+MID$(A$,2)
60 PRINT "結果2=";C$

N88-日本語BASICの実行結果
結果0= 123
結果1=000 123
結果2=000123

N88互換言語Aの実行結果
結果0= 123
結果1=000 123
結果2=000123

N88互換言語Bの実行結果
結果0=123
結果1=000123
結果2=00023

結果0については、大きな問題はありませんね。
しかし、他の関数等と組み合わせた場合(行番号30、50 のように)には、自動変換ツールでは人間が
期待する結果になっているかどうかまでは判断できまん。
人間がアプリケーションの仕様に従って、修正する必要があるのです。
場合によっては、思い切った機能削除も考えなければなりません。

どのN88互換言語が一番か、というのではなく、対象アプリケーションごとに
プログラムの修正が一番少ないN88互換言語はどれか
プログラムの機能削除が一番少ないN88互換言語はどれか
対象業務にとって、安定性・信頼性があるN88互換言語はどれか
という具合に、総合的に判断するしかありません。

【ワンポイント】N88-日本語BASIC のヘルプ、マニュアルは手元に置け!
N88互換言語のヘルプ(マニュアル)は当然ですが、案外軽視されがちなのが、本家本元のヘルプ(マニュアル)。
全ての関数、命令の引数を覚えているならば、必要ありませんが、それは無理な話。
何が異なっているのか、どう修正すればいいのかを判断するためには、必須のバイブルです。





弊社では、何本もの移植を請け負ってまいりましたが、以下の制約・方針で行っております。
インターフェースは当然ながら「N88」風のままである
新規機能の追加はしない
    ※どうしても必要なら、Windows用開発言語で補う
メモリ操作やI/Oへの直接アクセスはしない
    ※どうしても必要なら、Windows用開発言語で補う
機械語ルーチンはあきらめる
    ※どうしても必要なら、Windows用開発言語で補う
拡張ボードの操作・アクセスはしない(一部可能)
    ※どうしても必要なら、Windows用開発言語で補う
効果音は無し
画像の特殊効果(パレット操作等)は無し
外字は使わない
あくまでWindows用開発言語に移行するための段階的処置である
ファイルI/O(漢字混在、ランダム等)の修正には、時間と根性が必要
※ファイル仕様、設計書が無い場合は特に
※業務アプリの場合は、特にファイルI/Oに注意が必要

全体的にはN88互換言語を使用し、一部分を他のWindows用開発言語で補うなどの方策も行っており
ますが、あくまでも補うボリュームが少ない場合です。


N88-日本語BASICの資産でお悩みの方は、
               是非、弊社にご相談下さい。



「BASIC/98」のサンプル画面です。
BASIC/98のイメージ画面
注意点(弊社が現時点で把握している問題点)
本体:実行時
シリアル通信関連がメモリを解放しない(CLOSEしてもしなくても)ため、仮想メモリを食い潰す → PCの再起動以外に対策無し
FOR 〜 NEXT ループ内 に OPEN・・・FOR アクセス があると、「FORのないNEXT」のエラーが発生する(構文解釈のバグ?)
RESUME NEXT が実行されない場合がある(本体の内部ポインタ管理にバグがある?)
付属エディタ:編集を繰り返すと、以下の不具合が発生する(エディタの内部ポインタ管理にバグがある?)
ソースファイルを開いた時点で、未確定行が存在してしまう。
ソースファイルを開いた時点で、最終行に空行が付加されてしまう。
行が消失したり、ソースファイルそのものが消失する(致命的なバグ)ことがある。→ バックアップ以外に対策無し
エラーの無い行が、いきなりシンタックスエラーと判断されてしまうことがある。→ 強制実行は可能
その他細かなバグあり。
バグ修正は、望み薄。→ 報告しても反応無し & 最新バージョンでも未修正(企業の姿勢としてはいかがなものか?)
※構造化ロジックを組むことが可能であるため、修正時にロジックの拡張がしやすい。
●弊社での利用方法
法人のお客様の場合はできるだけ「BASIC/98」を購入していただく(フリーを避ける傾向が強いため)
シリアル通信関連は、VSなどの他言語で補う
ソース編集は、他社のエディタを使用し、付属エディタは、文法エラーとラベル二重定義のチェック、リナンバーで使用するのみ


「99BASIC」のサンプル画面です。
99BASICのイメージ画面
注意点(弊社が現時点で把握している問題点)
以下の不具合がある(内部ポインタの管理にバグがある?)
LOAD時、ハングアップする時がある。
※マルチステートメント行で発生しやすい。→ 行分解で対応可
テキスト・グラフィック関連は、N88からの修正量が案外多くなりがち
今後のバージョンアップはほとんど不可能 → 作者不在のため
Windows7では、99BASIC自体の終了時に問題あり
※Windows XP以前における実行速度と安定性は、フリー中 一番と評価(弊社独自の判断)している
●弊社での利用方法
個人のお客様の場合に使用(「BASIC/98」を購入しない)することが多い


お問い合わせはこちらから