0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

UEFI_Basic64

Last updated at Posted at 2024-10-18

UEFI Basic

A simple BASIC language intepreter that runs on UEFI. Feel free to submit a pull request.

これは、UEFI BOOTする、64bit整数版 TinyBASICインタープリターです。

オリジナル版は、68000 Tiny BASIC です。

オリジナル Git Repository からの大きな変更点

・UEFI BOOT と 64bit Linux gcc (CUI) 以外の動作環境の切り捨て

・予約語を普通の文字列型に変更

・整数のビット数を16bitから64bitに変更

・多少の Refactoring を実施

追記: オリジナルのGitHubは2024年時点で消滅しておりました。https://github.com/LHerrmeyer/UEFI_Basic

gnu-efiを使用して、普通のgccでビルドできるVersionも公開

環境構築メモ

(1)・Lubuntu22.04 を用意(普通のUbuntu22.04でも良い) QEMUを動かすので、GUIが必要。

(2)・QEMUを入れる。・・・UEFIブートを試すエミュレータ。

# apt install qemu-system-x86

(3)・OVMFを入れる。・・・UEFIのBIOS(変な言い方だが、そう)というかファームウェアね。 Open Virtual Machine Firmware とかそんな感じの。

# apt install ovmf

(4)・mingw-x64を入れる。・・・元はWindows用のgccなんだけど、UEFIから起動する実行ファイルは PE32+形式なので、それを吐けるコンパイラが必要。

# apt install mingw-w64

たぶんこれだけでいいはず。

QEMU上で動かす

・make uefi すると、BOOTX64.EFIが出来るので、それをQEMUに食わせる。

$ qemu-system-x86_64 -bios OVMF.fd -drive file=fat:rw:fs

・実行するまえに、BOOTX64.EFIをカレントディレクトリの fs以下に配置する。

fs/EFI/BOOT/BOOTX64.EFI

Ubuntu 上で動かす( GUI 不要 )

・makeして、出来た ELF ( ./basic ) をコマンドラインから実行する。

$ make
$ ./basic

・終了は 「bye」

・エラー発生時の行番号は、BASICの行ではなく、 basic.c のエラー発生時の行番号であることに注意

・変数は A-Zしか使用できない。

・文字列変数はない。

・整数は64bit

・配列は実装されない。

・Arduino等にあるような SD Card File I/O や Port Pin Control など、は実装されない。

注意事項

・Linuxコマンドラインでは libcの関数が使用可能だが、UEFIビルドではリンクエラーするので注意。

実機で動くのか?

ちなみに、てきとーなUSBメモリーをFAT32フォーマットして、

USBドライブ名: /EFI/BOOT/BOOTX64.EFI

のようにさっきのファイルを配置して、

C:ドライブだったSSDを抜いておいて起動すると、ちゃんとBASICが起動する。

だけど、メーカーロゴが残ったままだし、全画面じゃないし(中央部分にしかコンソールがprintしない)不満が・・・

感想:ひとりごと

うーん、なんだろう。PIC32MXでBASIC動かしたときもそうだったんだけど。
まともなBASICインタプリタって、どっかに置いてくれないですかね。
バグバグやん。

こいつ、files とか loadとかsaveがない。なんも出来ん。

GitHub URL: (ソースコード)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?