"yaft on luna" at nbug meeting 2014-11

13
NBUG 2014年9⽉例会→11⽉例会 夏休み自研究 yaft × LUNA Nagoya *BSD Users' Group Kenji Aoyama / ⻘⼭ [email protected]

Upload: kenji-aoyama

Post on 13-Jul-2015

351 views

Category:

Software


4 download

TRANSCRIPT

NBUG 2014年9⽉例会→11⽉例会

夏休み自由研究報告

yaft × LUNA

Nagoya *BSD Users' GroupKenji Aoyama / ⻘⼭ 健治[email protected]

2

きっかけ(1)

3

きっかけ(2)

• つぶやいてみたら、作者よりお返事をいただく• ということで、yaftをLUNA-88Kで動かすお話です

4

yaft - yet another framebuffer terminal

• 作者: haru (@uobikiemukot )さん

• yaft is simple framebufferterminal emulator for minimalist(living without X). This softwareis being developed to replaceLinux console for personal use.

• Main target is Linux console, but yaft supports some other framebuffer platform, FreeBSD console and NetBSD/OpenBSD wscons (experimental). And there are other (non framebuffer) ports, yaftx (X Window System) and yaft-android (Android).

http://uobikiemukot.github.io/yaft/

5

yaftの特徴 = 3S(?)

• Simple– 設定ファイルなし…conf.hを編集してコンパイル– フォントもコンパイル時に埋め込み

• Small

• Sixel対応

% ls -l yaft-rwxr-xr-x 1 aoyama staff 323828 Aug 27 21:52 yaft*% ldd yaftyaft:

Start End Type Open Ref GrpRef Name00001000 000b0000 exe 1 0 0 yaft1e39a000 1e4d7000 rlib 0 1 0 /usr/lib/libc.so.74.21ae41000 1ae41000 rtld 0 1 0 /usr/libexec/ld.so

<OpenBSD/luna88kの場合>

6

X版でとりあえず動かしてみる

• yaftx(X版yaft)で動きを確認• 色の設定を工夫すれば1bppでも使えそう?

左:amd64/24bpp

右:luna88k/1bpp

↑amd64/24bpp ↑luna88k/1bpp ↑色の設定を変えたら文字表示された

7

LUNAコンソールでの実装方針を考える

• frame bufferと同サイズのメモリ(バッファ)上でフォント描画を⾏い、最後にframe bufferへ反映している– バッファへ書くタイミングでframe bufferと同じ形にしておけ

ば、プレーン形式でも同様の処理になるはず• フォントパターンはwscons(4)に似た方式で保持してい

る– frame bufferへの書き込みは、LUNAのwscons(4)の実装を真

似れば良さそう• とりあえず1bpp版を動かすことを目標

8

オリジナル版の描画

display

memcpy(2)

font pattern color

buffer

word

frame buffer

color値

9

LUNA版の描画%プレーン形式対応

display

memcpy(2)

font pattern color

buffer

frame buffer

#0

#1

#2

#3

word

plane

#0#1

#2#3

plane ここを実装まずはplane #0のみ

10

作業開始1日後

• なんか出た;-)• キャラクタ単位でゴミデータを表示してる?

11

その2時間後

←きちんと文字が表示された!

日本語はまだ変

修正して日本語も表示OK!

12

その後

• 8bpp・8x16以外のフォント・sixel描画対応• 背景表示以外はだいたい動くようにしたつもり

↓img2sixelによる画像表示

13

• ソースがコンパクトで読みやすい→謎マシンへの対応がしやすい:-)

• 機能が少ない分、軽い(んじゃないかな?)• PHPで動く「sayakaちゃん」(isakiさん作)とあわせて

カラーtwitterのデモによさそう• 次回OSC名古屋をお楽しみに:-)

yaftのまとめ:謎マシン開発者から⾒て

twitter クライアント sayaka ちゃんhttps://github.com/isaki68k/sayaka/

yaft LUNA-88K版https://github.com/ao-kenji/yaft/