BASIC Accelerator Ver. 1.0.4   (2017.06.05)

概要

Full BASICのプログラムをObject Pascalのプログラムに変換し,FPC + Lazarusを利用して実行します。
数値は2進浮動小数点数です。(十進演算ではありません)
数値計算が主体のプログラムは,(仮称)十進BASICの2進モード,複素数モードより高速です。
Lazarus 1.6.0〜1.6.4 に対応します。

アップデート
上書きしたときは,OUTPUTフォルダを空にしてください(MACを除く)。

変更履歴
Ver. 1.0.3.0
  LACATE VALUE スライドバー個数の上限を20に引き上げた。
  PRINT文出力の不具合を修正。
  検索・置換の不具合を修正。
Ver. 1.0.2.0
  SET DRAW MODEに変数を指定できないバグを修正。
  エディタの検索,置換機能の不具合を修正した。
Ver. 1.0.1.0
  WAIT DELAY文が正常に機能しない可能性のある不具合を修正。
  Lazarus 1.6.4 (FPC 3.0.2) に対応。
Ver. 1.0.0.0
  PRINT文 画面出力高速化
  SETUP OPTIONS 設定項目変更
Ver. 0.9.8.1
 プログラム保存後,タイトルバーのファイル名が変化しない不具合を修正。
Ver. 0.9.8.0
 lazarus 1.6+FPC3.0対応に改めた。
 OPTION CHARACTERの初期値を MULTIBYTEに変更した。
Ver. 0.9.7.0 Rev.2
 書式に空文字列を指定したUSING$関数が内部エラーとなるバグを修正。
Ver. 0.9.7.0 Rev.1
 64ビット環境でINT関数,CEIL関数が正常に動作しない不具合を修正。
Ver. 0.9.7.0
 グラフィックス出力文の実行時に中断できるようにした。
Ver. 0.9.6.7
 MAT CELLS文がViewPortを無視するバグを修正。
 SET POINTER文がIF-THERE句,IF-MISSING句を持つと翻訳に失敗するバグを修正。
 BREAK文などで中断したとき画像出力の保存などができるようにした。
 テキスト入出力文の実行時に中断できるようにした。
Ver. 0.9.6.6
 EXTYPE関数の値が正しくないことのある不具合を修正。
Ver. 0.9.6.5
 配列を引数とする関数呼び出しでシステムエラーになるバグを修正。
 エラー終了時にEXTYPE関数値を報告しないオプションを追加。
Ver. 0.9.6.4
 十進BASIC 0.6.3.5に対応する修正(Mergeメニューの不具合修正他)
Ver. 0.9.6.3
 Windwos版 十進BASIC ver. 7.7.2 に対応する更新。
Ver. 0.9.6.2
 ASK PIXEL VALUEで領域外の点を指定するとエラーになるバグを修正。
Ver. 0.9.6.1
 Windwos版 十進BASIC ver. 7.7.1 に対応する更新。
Ver. 0.9.6.0
 Windwos版 十進BASIC ver. 7.7.0 に対応する更新。
ver. 0.9.5.9
 モジュール内の外部手続きがモジュールでPUBLICまたはSHARE宣言された変数と同名の局所変数を持てるように修正。


Windows

Set up(fpc + Lazarus)

32ビット版Lazarus1.6をダウンロードしてインストールしてください。
インストール先は,パス名に空白や日本語文字を含まない所を選択してください。
Lazarus Download (SourceForge)
Mirror
Mirror

Set up(BASICAcc)

BASICAcc1040.zipを Decimal BASIC Open Source Projectからダウンロードし,ユーザーの書込み権限のあるところに展開してください。
ただし,パス名に空白や日本語文字を含むところは避けてください。 (たとえば,デスクトップやマイドキュメントは不可。USBメモリは可。)
既存のBASICAccフォルダに上書きでアップデートしたときは,一旦,OUTPUTフォルダを空にしてください。

Lazarusのインストール時にインストール先を変更したときは,BASICAcc.exeの起動後, Set upメニューのpathの設定を書き換えてください。
fpc path は,fpc.exe が存在するフォルダです。
Lazarus path は,lazarusインストール先のフォルダを指定してください。
なお,win32 Lazarus + fpc 3.0.0 をCドライブにインストールした場合,それら2つのPathは

C:\Lazarus\fpc\3.0.0\bin\i386-win32
C:\Lazarus

です。

Note.
Lazarus 1.6.4でも使えますが,SetUpメニューのPathでFPC pathのバージョン番号の部分を正しく書き換えてください。

Note.
内部文字コード,ファイル入出力ともにUTF-8です。shift-JISファイルを使用する場合は,OPEN文に続けて
SET #n CODING "SYSTEM"
を実行してください。
プログラムファイルの入出力はshift-JISですが,Optionメニューの"Editor Option"でプログラムファイル入出力をUTF-8に変えることができます。
プログラム中にユニコード文字を書くときは,Editor Optionを変更してください。

Windowsが64ビットの場合,64ビット版Lazarusを使うこともできます。
Lazarus Win64
SetupメニューのPathで「64bit」を選択し,FPC pathの末尾が \x86_64-win64 であることに注意して FPC PathとLazarus Pathを設定してください。
これらのpathは32bitと独立しています。随時,切り替えて使用することができます。
ただし,Win64版のFPCでは拡張精度浮動小数点演算が利用できないので,べき乗演算や超越関数の計算結果に無視できない誤差を生じる可能性があります。


Linux (32ビット)

Set up(fpc, Lazarus)

i686版 fpc 3.0.2 , fpc-src 3.0.2 , Lazarus 1.6.4 をダウンロードしインストールしてください。
Lazarus Download (SourceForge) (rpm)
Lazarus Download (SourceForge) (deb)


Set up(BASIC Acc)

BASICAcc1040.tar.gzを Decimal BASIC Open Source Projectからダウンロードし,ユーザーの書込み権限のあるフォルダに展開してください。
既存のBASICAccフォルダに上書きでアップデートしたときは,一旦,OUTPUTフォルダを空にしてください。
basicAccを起動して,「failed to set Lazarus Path」と表示されたときは,SetUpメニューのPathでLazarusがインストールされているディレクトリを指定してください。Lazarus Pathで指定するディレクトリは,lazarus本体があって,components, unitsなどのサブディレクトリを含むディレクトリです。

トラブル対策

Can't find unit fileutil のエラーになるとき。
lazarus pathを設定し直してください。
Lazarus pathで指定するフォルダにはcomponentsやunitsなどのフォルダが置かれています。
/usr/lib/lazarus/0.9.30.4/
のようにlazarusフォルダ内のバージョン番号名のフォルダになっている場合や,
/usr/share/lazarus/1.0
などのようになっていることがあります。

NoName.errが見つからないという趣旨のエラーになるとき。
fpcが正しくインストールされていません。/etc/fpc.cfgが存在することを確認してください。
--scriptsを指定せずにalienを用いてrpmパッケージをdeb形式に変換してfpcをインストールすると,この問題を引き起こします。

その他,プログラムの実行結果が現れないとき。
runメニューからcodeを選択し,Pascalコードが表示されたら,そのウィンドウでrunを選ぶとfpcが出すエラーが読めると思います。

既知の不具合

画像の保存ダイアログで保存形式を変えても拡張子が変化せず,手動で書き換える必要がある。

修正履歴

BASICAcc0958-3.tar.xz (2013/11/7 修正)
  Fedora19でAccess violationになり実行できない不具合を修正。
  Lazarus 1.2RC1 に対応。


Linux (64ビット)

Set up(fpc, Lazarus)

x86_64版 fpc 3.0.0, fpc-src 3.0.0 , Lazarus 1.6.0 をダウンロードしてインストールしてください。
Lazarus Download (SourceForge) (rpm)
Lazarus Download (SourceForge) (deb)


Set up(BASIC Acc)

BASICAcc1040_Linux64.tar.xzを Decimal BASIC Open Source Projectからダウンロードし,ユーザーの書込み権限のあるフォルダに展開してください。

修正履歴

BASICAcc0965_Linux64_1.tar.xz
零除算,桁あふれ等の例外が正しく生成されないバグを修正。

BASICAcc0958_Linux64-3.tar.xz (2013/11/7 修正)
  Fedora19でAccess violationになり実行できない不具合を修正。
  Lazarus 1.2RC1 に対応。


MAC(Intel) 

Set up(Xcode tools)

Apple Developer Tools (Xcode tools) をインストールしてください。
OS 10.7以降の場合,Command Line Tools の追加インストールが必要です。
参照 Installing Lazarus on MacOS X.
See also Installing Lazarus on Mac OS X - Free Pascal (PDF)
Note. GDBのインストールは不要です。

Set up(fpc, Lazarus)

Installing Lazarus on MacOS Xを参照し,
fpc 3.0.2 と Lazarus 1.6.4 をダウンロードしインストールしてください。
Lazarus Download

Set up(BASIC Acc)

BASICAcc1040_Mac.zipを Decimal BASIC Open Source Projectからダウンロードし,
ユーザーの書込み権限のあるフォルダに展開してください。
パス名に空白を含むと正しく動作しません。USBメモリを使うときは,ドライブ名を空白を含まないものに変えてください。
Note.
 上書きアップデートを行うと不具合を生じることがあります。また,Lazarusのupdateを行った場合も再インストールしてください。

トラブルシューティング
1.初めて実行するとき
(1) ReportFormに何も表示されず,プログラムも実行されない。
ターミナルでsudo xcrun ccを実行し,最後にagreeを入力する。
参照 Agreeing to the Xcode/iOS license... のエラーがでた時の対処法
(2) ReportFormに,
PPU Source :synedit.pp not found.
が出る。
Lazarus IDEを起動して,パッケージメニューから,「読み込まれているパッケージを開く」を選択し,
以下の各パッケージのコンパイルを実行する。
SynEdit
Printer4Lazarus
(3) 「"NoName"は、開発元が未確認のため開けません。」
Finderで,BASICAcc/outputフォルダ内のNoName.appをCtrlキーを押しながらクリックして表示されるコンテキストメニューから「開く」を選ぶ。
上記(1),(2),(3)は,一度実行すれば,次回からは問題なく動作します。
Note. Mac版BASICAccでは,次のプログラムの実行前に必ずNoNameを終了させてください。
2.プログラムの実行を途中で打ち切りたい
Mac版はBASICAccの側から中止できないので,画面左上のアップルメニューで「強制終了」してください。

既知の不具合
MOUSE POLL文が正しく動作しない。
SET DRAW MODE (NOTXOR, MASK, MERGE, XOR)は機能しない。
画像の保存ダイアログで保存形式を変えても拡張子が変化せず,手動で書き換える必要がある。
プリンタは正しく動作しない。


言語仕様

言語仕様は,JIS Full BASIC (図形機能単位+モジュール+単文字入力)に準拠します。
ただし,以下の命令には対応しません。

OPTION ARITHMETIC DECIMAL

規格との相違

OPTION ARITHMETIC文を省いた場合には,ARITHMETIC NATIVEが指定されたものと解釈します。

次の場合,行番号分岐(GOTO文,IF ・・・ THEN 行番号) は実行できません。

WHEN本体内から保護区の外への分岐
保護区を含み,その保護区内にEXIT DO文を持つDO区の内から外への分岐(fpcコンパイラのエラーになります)
保護区を含み,その保護区内にEXIT FOR文を持つFOR区の内から外への分岐(fpcコンパイラのエラーになります)

WHEN-IN区に属する例外処理区がGOSUB〜RETURNを持つと,いずれの保護区にも属さないGOSUB〜RETURNを書くことができません。(fpcコンパイラのエラーになります)

PROGRAM文,CHAIN文の引数は単純変数に限ります(配列不可)。

文字列変数の最大長指定を無視します(切り詰めを行わない)。

その他,(仮称)十進BASICのJIS非互換項目は, ほぼそのまま本システムの非互換項目になります。

(仮称)十進BASIC(Windows版)との非互換

識別名に使える文字は英数字のみです。

内部の文字コードはUTF-8です。ORD関数,CHR$関数はユニコードで定義されます。書式指定は漢字1文字に対し # 3文字を必要とします。
ファイル入出力もUTF-8ですが,OPEN文実行後,
SET #n: CODING "SYSTEM"
を実行すると,ファイル入出力をShift-JISで行います(日本語Windowsの場合)。

プログラムの保存形式の初期設定はshift-JISになっていますが,Optionメニューの「Editor Option」でUTF-8に変更することができます。

文字列処理の単位の初期値は,Option メニューのCompatibilityで設定します。

CHAIN文に 拡張子が".BAS"のファイルを指定すると関連付けで起動します。

EXECUTE文の引数に配列を指定することはできません。

BREAK文は動作しますが,プログラムを中断するだけの機能しか持ちません。

GOSUB文を含むプログラムは行番号が必須です。

(仮称)十進BASICでは主プログラムの外部から主プログラムの内部手続きを呼び出すプログラムが実行できてしまいますが,その種のプログラムは実行できません。

独自拡張命令 SET BITMAP SIZEの挙動は Windows版十進BASICと少し異なります(拡張部分の色が異なる)。

画像の保存形式にGIFを選ぶことができません(読み込みは可)。

その他,DelphiとLazarusの非互換のために動作が異なるところがあります。

既知の不具合

CHARACTER INPUT文(画面からの入力)は日本語入力に対応しません。

十進BASIC独自拡張のDRAW MODE NOTXOR (MASK, MERGE, XOR) は,正常に機能しないことがあります。
 (Macでは,無視されます。Windows,Linuxでは,PLOT LINES文を実行しないと機能しません。)

未対応の機能

十進BASIC独自拡張の10進1000桁,有理数の演算にも対応しません。(2進演算と複素数演算のみ可能)

Microsoft BASIC互換モードには対応しません。
また,Windows版(仮称)十進BASICが対応するメタファイル,OLE,ActiveX,CallBack,TextWindow にも未対応です。


システム詳細

実行ファイルはoutputフォルダに NoName.exe として生成されます。CHAIN文の連鎖先として用いたいときには,適宜,名称を変更してください。

生成したPascalプログラムは,outputフォルダに NoName.lpr という名称で保存されます。
runメニューのcodeを選択して表示されるコードビューから書き換えて実行させることができます。
BASICの識別名は,数値型の場合は直前に _ を,文字列型の場合は 末尾の $ を除去して直前に s_ を付加した名前に変わります。
ただし,PUBLICまたはSHARE宣言された変数の名前は,_を2個重ねます。
主プログラムの内部手続きの名前は,_0,または,s_0 を付加した名前になります。
BASICのmoduleは,(古い型の)静的オブジェクトに変換されます。
詳細 Full BASICのObject Pascalへの埋め込み

 

著作権

本ソフトウェアはGPLです。

バグ・不具合,その他,動作報告は,
Decimal BASIC Open Source Project 公開討議フォーラム
へお願いします。

CopyRight 2017 SHIRAISHI Kazuo


(仮称)十進BASICのホームページへ