プログラミング
UEFIマシンで起動するBASICインタプリタを作成し、Windowsに移植した
I wrote a BASIC interpreter that boots on UEFI machines and ported it to Windows (tarjan.itch.io)
要約
開発者のTarjan氏は、UEFIマシン上で直接動作し、Windowsにも移植可能なGW-BASIC互換のBASICインタプリタ「Thoreau BASIC」を開発しました。このインタプリタは、従来の64KBメモリ制限を超え、大容量メモリを活用し、グラフィックスやファイルI/O、フルスクリーン編集機能などを備えています。
全文翻訳
Tarjan氏によるThoreau BASIC
Thoreau BASICは、ベアメタル(Windowsバージョンもあり)で動作するGW-BASIC互換のインタプリタです。データセグメントは、ファームウェア(またはWindows)が報告するコンベンショナルメモリの最大ブロックサイズに設定されており、最新のマシンではギガバイト単位になります。
言語は(ほとんど)GW-BASIC互換です。プログラムはASCIIとしてロードおよびセーブされます。
数値型には、32ビットおよび64ビット整数(%、&、&&)、単精度および倍精度、文字列が含まれます。
32ビット幅の行番号。
DEF FN、GOSUB、ON…GOTO/GOSUB、DATA/READ/RESTORE、およびその他の制御フロー。
エラーハンドリング:ON ERROR GOTO、RESUME / RESUME NEXT / RESUME n、ERL、ERR、ON BREAK GOTO
グラフィックス PSET、LINE、CIRCLE、PAINTおよび関連関数がネイティブフレームバッファ解像度で利用可能です。PSET、LINE、PAINTは、16色EGAまたは24ビットR,G,B構文で使用できます。
16色EGAパレットと24ビットカラー:COLOR r,g,b(および背景トリプル)。
ビットマップ:LOADBMPスロット、file$は24/32ビットWindows .BMPをデータセグメントスロットに読み込みます。BITBLTスロット、x、y [,key]は、スプライト用のオプションの透過色キーを使用してビットマップをブリストします。
GRAMAXX / GRAMAXY(グラフィックス)およびTXTMAXX / TXTY(テキスト)は、実際の境界を保持する読み取り可能な変数です。
SCREEN x,yはモードを要求します。SCREEN 1024,768はほとんどすべてのマシンで動作し、通常はブートモードです。シャープな画像を得るためにネイティブ解像度を試してください。GRAMAXX/GRAMAXYはSCREENコマンドの後に更新されます。
テキスト IBM VGA 8×16フォント、ソフトスクロールコンソール。
複数のテキストウィンドウ:WINDOW @n, x1,y1,x2,y2は領域を分割します。PRINT @n, CLS @n, LOCATE @nおよびCOLOR @nは、それぞれ独自のカーソルとペン/紙を持つウィンドウ内で機能します。通常のPRINTは依然として画面全体を占有します。
メモリとハードウェア 64KBの天井がない3ポインタメモリモデル。必要であれば、数億要素の配列。
PEEK、POKE、VARPTR、およびマシンへの読み取り可能なポインタ:LOMEM、HIMEM、FREEBOT、FREETOP、SCRNADR、GRAPITCH。
64ビットHEX$ / OCT$。
ディスクI/O — SAVE、LOAD、MERGE、FILES、KILL、UEFI Simple File Systemで直接実行します。
編集 — フルスクリーンEDIT、AUTO行番号付け、およびRENUM(GOTO/GOSUB/THEN/ELSE/ON…/RESTORE/RESUME/ERL参照をすべて再番号付けおよび書き直し)。
タイミング — TIMER変数はCPUの不変TSCからの高精度クロックを読み取ります。
v1.1.3の新機能
MID$が代入可能になりました
プログラムがエラーで終了したときにERLが格納されず、エラー行が表示されませんでした
INPUT:バックスペースが正しく機能しませんでした
v1.1.2の新機能
利用可能なRAMが4GB未満の場合、Windowsバージョンは終了しました。
BASIC行は、行番号なしで244文字に固定されました。
EDIT/LISTバグ:行番号が32767より大きい場合、空の行0が表示されました。
v1.1.1の新機能
ベアメタル:遅いスクロールとフレームバッファへの書き込みを修正しました。
Windows:自動起動を追加しました。これで、.basファイル名を付けてThorauBASICを呼び出すと、自動的に起動します。
v1.1の新機能
大幅に高速化されました。行ごとのトークンキャッシュ、優先度クライミング式評価器、および変数スロットキャッシュ。計算負荷の高いプログラムで約25倍高速になりました。バンドルされたMandelbrotは〜230秒から10秒未満に低下し、Conway's Lifeはインタラクティブに実行されるようになりました。Lunar Landerは現在固定100fpsで実行されています。
ビットマップ(LOADBMP/BITBLT)、ウィンドウごとの色を持つテキストウィンドウ、ON ERROR/ON BREAK/RESUME、ERL/ERR、RENUM、およびPEEK/POKE/VARPTR。
正確性の修正:正確な64ビット整数演算(オーバーフローは倍精度に昇格)、よりクリーンな数値フォーマット、および全幅HEX$。
追加情報
2時間前に更新
27日前に公開
ステータス開発中
カテゴリツール
著者Tarjan
ジャンル教育
タグbasic, Experimental, gw-basic, interpreter, programming, Retro
コンテンツ生成AIは使用されませんでした
ダウンロード
今すぐダウンロード
価格は自分で決める
ダウンロードボタンをクリックすると、以下のファイルにアクセスできます。
ThoreauBASIC-Windows-1.1.3.zip 1.3 MB
v 1.1.3, Virtual Harddisk, 仮想マシン内で起動するために使用します。 12 MB
v 1.1.3, BASIC64.efi - これをBOOTX64.EFIにリネームし、\EFI\BOOTに配置してください 95 kB
開発ログ
v 1.1.3 - MID$, ERLおよびINPUTのバグ 2時間前
v1.1.2 - 5時間前
v1.1.1 - Windowsの自動起動とベアメタルのスクロール修正 12時間前
Windowsバージョンが登場! 1日前
v1.1 — 25倍高速化、機能追加 1日前
v1.0 マイルストーン 7日前
TIMERが高精度になりました 14日前
ESCが再び機能するようになりました 20日前
すべての投稿を見る
コメント
コメントを残すにはitch.ioでログインしてください。
Rarevogel 20日前 (+1)素晴らしい!私はbuildrootをいじって、可能な限り最小かつ最速で起動するbasicを作成しましたが、このソリューションははるかにクリーンで、OSに依存していません。さらなる開発に興味があります!返信itch.io·Tarjanのすべての投稿を見る·報告·埋め込み·2時間前に更新
ツール › 無料