借り初めのひみつきち

仮ブログです。

再度進捗的な。

最近忙しいです・・・

自作 SIMPLE_TEXT_OUTPUT_PROTOCOL ラッパー

UEFI シェルを動かしてみたら思いのほか便利だったのでスクロール等も対応することにしました。

スクロールは GOP->Blt で実装してますが、 Portrait ネイティブの機種ではやはり遅い・・・
理由は予想ついていたので、一旦バッファーを経由して Blt してみたら見違えるように早くなりました。
とはいえ、一般に VRAM からの読み出しは他のメモリアクセスに比べると遅いので領域が広くなってくるとやはり遅いですね。
VRAM からの読み込みを一切しないようにすればかなり早くできそうですが・・・

元々は別のプロジェクトの製作中に脱線してできたもので、用途も特殊すぎるので一般公開するかどうかは未定です。

HALO 32bit 対応アップデート

github.com
gnu-efi したときのスケルトンプロジェクトの方はマルチプラットフォーム対応しているので、 halo も i386 対応できるんじゃない?って思いついてやってみました。

なぜか GetMemoryMap が失敗すると思ったら、ヘッダファイルが古くて EFIERR マクロが 32bit に対応してなくて EFI_BUFFER_TOO_SMALL を正しくハンドリングできていないだけでした。
結局本体の変更点は 0 で、アセンブリ言語のモジュールを移植するだけで動きました。

実質的に Atom Z3735 対応になるわけですが、 Z3735 搭載してる機種は HW Reduces ACPI 対応でおそらく CSM 対応不可能な機種ばかりで動いてもどうせ PS/2 キーボードが操作できないし、今後は少なくなるから対応する意味薄いかな〜と思ってたわけでした。

ごにょごにょ

そして近日、別のプロジェクトについてご報告できたらいいなと思ったり思わなかったり・・・(ごにょごにょ

進捗的なもの。

さいきんあまり時間がとれてないですが・・・

メニューと日本語表示を実装しました。

f:id:neriring16:20180903124759p:plain

やはり、起動オプションメニューは日本語で表示したいですね。
こういうところに無駄に手間をかけるのがmegosらしさですかね?


自作の SIMPLE_TEXT_OUTPUT_PROTOCOL で UEFI シェルを起動してみました。
(技術デモなので実際にリリースされることはありません。)

f:id:neriring16:20180903124805p:plain

現在謎の青い背景がはみ出るバグがあります。
例えば 80x25 のモードに設定した場合に 80x25 の範囲をはみ出たカーソルを処理しておらず、フォント描画と背景描画のクリッピング基準が異なるのでこのような表示になります。
ついでにスクロールも未実装です。

コンソールアプリケーションの完全な置き換えは目指しておらず、ブートローダーやメニューのテキスト描画に必要な機能だけを実装したのでこのあたりの対応優先度は低いです。