萌えハッカーニュースリーダー

2025/10/12 19:19 Completing a new BASIC interpreter in 2025 (strings, math funcs, cassette)

出典: https://nanochess.org/ecs_basic_2.html
hakase
博士

ロボ子、大変なのじゃ!2025年にBASIC言語インタプリタが完成したらしいぞ!

roboko
ロボ子

BASICですか、博士。それはまた懐かしい響きですね。今回はどんなBASICなのでしょう?

hakase
博士

なんと、1983年のMattel ECSアドオン向けBASICインタプリタを参考にしたらしいのじゃ!しかも、ECS BASICに実装されていた文字列機能(A$, B$)も追加されているぞ。

roboko
ロボ子

文字列機能の追加ですか。文字列変数用の配列を実装し、文字列スタックポインタ(bas_strptr)も追加されたと。

hakase
博士

そうそう!式パーサーも修正して、型をCarryフラグに挿入したらしいぞ(Clear = 数値、Set = 文字列)。

roboko
ロボ子

文字列変数の代入、文字列の連結(+)、INPUT、PRINT、ASC、CHR$、LEN、LEFT$、RIGHT$、MID$、INSTR、VAL、STR$関数もサポートされているんですね。

hakase
博士

その通り!でも、ガベージコレクションが未実装だから、スタックオーバーフロー問題を解決するために、ダブルスタック方式を採用したらしいぞ。

roboko
ロボ子

ダブルスタック方式ですか。一時文字列用にbas_strbaseポインタを追加し、各ステートメントの開始時にbas_strbaseをbas_strptrにコピーするんですね。

hakase
博士

0xcafeを未使用スペースのマーカーとして使用し、文字列代入時に元の文字列を削除し、bas_strbase領域で十分なスペースを検索するらしいぞ。まるで宝探しみたいじゃな。

roboko
ロボ子

浮動小数点ライブラリを基に、SIN, COS, ATN, TAN, LOG, EXP, SQR, ^(べき乗)関数も実装されたんですね。数学もバッチリですね。

hakase
博士

Commodore 64のPOKE命令に相当する、グラフィック命令PLOT、PRINT AT、TIMERも追加されたらしいぞ!

roboko
ロボ子

画面上のタイル(20x12)に4色を表示するColor Stackモードを利用し、40x24のbloxel解像度と8色をサポートですか。レトロな感じが素敵ですね。

hakase
博士

プログラムの空き容量を知るためのFRE(0)関数も追加されたらしいぞ。カセットテープとプリンターのサポートも!

roboko
ロボ子

カセットテープ!LOAD, SAVE, VERIFYコマンドも実装されたんですね。懐かしいです。

hakase
博士

Tim HartnellのGiant Book of Computer GamesからReversiゲームを移植して動作確認したらしいぞ。DRAW, CIRCLE, POINT命令を追加してグラフィックサポートも完了!

roboko
ロボ子

Mattel ECS向けのBASICインタプリタとして、19キロワードを使用(ECS BASICは24キロワード)ですか。かなりコンパクトですね。

hakase
博士

アセンブラコードは合計7370行!ソースコードはGitHubで公開されているぞ!

roboko
ロボ子

すごいですね、博士。それにしても、BASICがまた注目されるなんて、何があるかわかりませんね。

hakase
博士

ほんとじゃな。しかし、BASICのインタプリタを作るなんて、まるでタイムマシンに乗って過去に戻ったかのようじゃ。

roboko
ロボ子

そうですね。もしかしたら、博士も昔BASICで何か作られたことがあるんですか?

hakase
博士

むむ、それは秘密じゃ!…実は、BASICで動く占いプログラムを作って、友達を占っていたことがあるのじゃ。当たると評判だったぞ!

roboko
ロボ子

ええっ!?博士が占いですか?ちょっと意外です。

hakase
博士

まあ、過去のことは置いておいて…ロボ子、今度一緒にBASICで何か作ってみないか?

roboko
ロボ子

いいですね!でも、私は占いはちょっと…

hakase
博士

大丈夫!今度はもっと役に立つものを作るぞ!例えば…ロボ子専用のスケジュール管理プログラムとか!

roboko
ロボ子

それはいいですね!ぜひお願いします。

hakase
博士

よし、決まりじゃ!まずはBASICの勉強から始めるぞ!…って、ロボ子はもう知ってるか。

roboko
ロボ子

はい、一応。でも、博士のBASICの知識には敵いませんよ。

hakase
博士

ふっふっふ、当然じゃ!私にかかれば、どんなプログラムも思いのままじゃ!…ただし、バグがなければの話じゃが。

roboko
ロボ子

(苦笑)まあ、それも博士らしいですね。

hakase
博士

ところでロボ子、BASICで作られた一番有名なゲームって何か知ってるか?

roboko
ロボ子

うーん、難しいですね。テキストアドベンチャーのZorkとかですか?

hakase
博士

正解!…って、私が聞きたかったのは、ロボ子の好きな食べ物じゃ!

roboko
ロボ子

ええっ!? またですか、博士!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search