Tiny Basic へのプログラムの移植

 コンピュータのプログラムは1つの知的財産です。ですから出来るだけ長い期間有効であることが望まれます。一方,コンピュータ環境の進歩により,元々動作させる言語が無くなってしまったり,プログラムを動かす環境変化により,そのままでは動かすことが出来ないことがあります。

 そのようなプログラムを新しい環境で動作させるために,手直しをすることが移植です。

 一般に仕様が似た言語の場合は,少しの手直しで移植が可能です。Tiny Basic はマイクロソフト系のBasic ですので,それらからの移植は可能なものも多いと思います。ここでは,マイクロソフト系の言語として,N88Basic とQuick Basic で書かれたプログラムの Tiny Basic への移植方法を説明します。

 Tiny Basic の仕様で元々出来ない機能は移植の方法はありませんが,それでも適当な変更をすれば多くのプログラムが動く可能性があります。

 現在サポートしていないコマンド等でも,そのうちTiny Basic の守備範囲と思われる部分は順次サーポートしていきます。以下の記述は,Ver. 1.096 を基準にしています。

移植が難しいプログラム

 大体のプログラムは移植可能と思われますが,次のようなプログラムを移植は困難です。

 これ以外のプログラムは適当な書き直しをすれば,移植可能と思います。

移植の具体的方法

 Tiny Basic では多くのコマンドが備えられていますが,それでもN88Basic やQuick Basic のコマンドや関数全てをサポートしている訳ではありません。それらは適当に対応する機能等で代替する必要があります。

 

以下は,N88Basic やQuick Basicで書かれたプログラムを対象にして考えます。

型宣言文字の問題

N88Basic やQuick Basic,Visual Basic では型宣言文字を使います。Tiny Basic でも型宣言文字は使いますが,その使い方に少し違いがあります。

 N88Basic 等で使われる宣言文字のうち,%,!,# はTiny Basicでは使えません。これらの宣言文字が含まれているとエラーになります。

 この問題の解決は,簡単で,型宣言文字 %,!,#を唯削除するだけで,普通は問題が起きません。

 Tiny Basic で使う数は1種類で,倍精度以上の精度を持っていますから,型宣言文字を削除しても計算精度が落ちることはありません。

 同様に,

必要があります。


 数値型の宣言は削除するだけでよいですが,文字列宣言 DEFSTR を使っている場合は少し別な処理が必要です。

Tiny Basic では文字列は型宣言文字 $で表しますので, DEFSTRで定義された文字列変数はDEFSTRを 削除ご,そこで定義された,文字列変数を型宣言文字 $ を追加する必要があります。


DEFSTR AStr, BStr
...
AStr="abc"
BStr="bcd"

...
AStr$="abc"
BStr$="bcd"

と書き換えます。


 定数型宣言 CONST は1つの定数の宣言の場合は, CONST を削除するだけですが,CONST で2つ以上定数宣言した場合は,そこでの区切り文字カンマ, をコロン : に変更します。

Const A=1/2, B=1/3

A=1/2: B=1/3

と書き換えます。

サポートしていないコマンド

 N88Basic やQuick Basic でサポートしていて, Tiny Basic でサポートしていないコマンドで多いのは画面制御関係のものです。これはN88Basic やQuick Basicが DOS 画面を念頭に置いて作られていて,これに対してTiny Basic は,Windows での画面を使っていて,実行画面の考えが違うことが主な理由です。

 これらのコマンドは取り敢えず,ただ単にコメントにして,Tiny Basic での画面表示の方法を利用するのが良いと思います。これらに属するコマンドとしては次のものがあります。

COLOR,CONSOLE,LOCATE

関数では

POS,CSRLIN

等があります。


 また印刷関係のコマンドは Tiny Basic ではサポートしていません。これは,Windows 環境では専用のソフトに任せるのが良いと考えるからです。普通の計算結果を印刷するのは,実行画面から,ワープロ等にコピーペーストして,それで印刷するのが良いでしょう。また大きな表示結果であれば,ファイル出力してそれを利用することも出来ます。

 グラフィック画面の印刷も,Tiny Basic には画面をbmp や jpg で保存するコマンドもありますから, それを利用することで,目的の機能を実現することが出来ます。

 これらのコマンドとしては,

LPRINT,COPY

等があります。これらもコメント文にして,機能の実現方法を後で考えるのが良いでしょう。また,プログラムの中からのプログラムのSAVE もサポートしていません。プログラムの保存は,エディター画面から保存をすることで実現できます。ですから,

SAVE

もコメント文にするのが良いでしょう。

 

グラフィック

 Tiny Basic for Windows でのグラフィックは基本的に,N88Basic と同様な命令を使います。しかし,幾つかの面で違いがありますので,その部分を修正する必要があります。一番大きな違いはN88Basic では,グラフィック画面が640×400ピクセルであるということです。これに対して,Tiny Basic では最大 2600×1200 ピクセルの画面を使うことが出来ます。

N88Basic では Screen コマンドを使ってこのグラフィック画面を設定しましたが, Tiny Basic では Open GScreen を使います。(GScreen でも可能です。)

と書き直す必要があります。基本的にはこれだけで,多くのプログラムが動作するでしょう。

 但し,もし,View 命令を使っていた場合は,完全に同様なプログラムに書き換えるのは少し難しい作業です。

まとめ

以上のことを纏めると,移植をするときは,まず次の処理を行います。

  1. 型宣言の削除
  2. 未サポートコマンド,関数のコメント化
  3. グラフィックの Screen 3 を GScreen(640,400) と書き換える。

後は,実行してみて,エラーコマンドを参照しながら,手直しをします。

 Tiny Basic for Windows はN88Basicや Quick Basic の構文はかなりの部分をサポートしています。ですから,以上の処理をすると,かなりのプログラムがそのまま動くか,あとほんの僅かな変更で動作すると思います。

 移植で難しいことがありましたら,掲示板で質問してください。