OpenBSD/luna88k news at NBUG meeting 2014-04

17
OpenBSD/luna88k - 2014/4 況 - Nagoya *BSD Users' Group Kenji Aoyama / ⻘⼭ [email protected] http://www.nk-home.net/~aoyama/ NBUG 2014年4⽉例会

Transcript of OpenBSD/luna88k news at NBUG meeting 2014-04

Page 1: OpenBSD/luna88k news at NBUG meeting 2014-04

OpenBSD/luna88k- 2014/4 近況報告 -

Nagoya *BSD Users' GroupKenji Aoyama / ⻘⼭ 健治

[email protected]://www.nk-home.net/~aoyama/

NBUG 2014年4⽉例会

Page 2: OpenBSD/luna88k news at NBUG meeting 2014-04

2

2013年12⽉以降のluna88k• wscons 8bpp support

& mlterb-fb 8bpp• モノクロXserverとの共存• 86音源ボード• pcex(4):PC-98スロットドライバ

Page 3: OpenBSD/luna88k news at NBUG meeting 2014-04

3

wscons 8bpp support• 4bpp版をを単純に倍にして8bpp化

–原作は@tsutsuiiさんのluna68k版–Bt458の初期化が違ってた

Page 4: OpenBSD/luna88k news at NBUG meeting 2014-04

4

mlterm-fb 8bpp• mlterm-fb作者も想定外だったLUNA

のハード構成:-)

Page 5: OpenBSD/luna88k news at NBUG meeting 2014-04

5

mlterm-fb 8bpp• Bt458の初期化を直したらOK

Page 6: OpenBSD/luna88k news at NBUG meeting 2014-04

6

Commit logLog message:Add primary support for LUNA-88K 4bpp/8bpp frame buffer.

This brings color support on LUNA's wscons. And, with the help of recentdevelopment version of 'mlterm-fb' (frame buffer version of ports/x11/mlterm),graphic images can be displayed in 16/256 colors on the screen. Thanks toarakiken, the original developer of mlterm!

This diff is based on NetBSD/luna68k work:http://mail-index.netbsd.org/source-changes/2013/12/28/msg050266.html

Need more work to coexist with the monochrome X.Org server.

"go ahead!" miod@

Page 7: OpenBSD/luna88k news at NBUG meeting 2014-04

7

モノクロXserverとの共存

Page 8: OpenBSD/luna88k news at NBUG meeting 2014-04

8

モノクロXserverとの共存• wscons/mlterm-fb使用時はカラー、

Xserver使用時はモノクロにしたい

mlterm-fb(4/8bpp対応)

kernel

Xorg server(1bpp)

kernel

4/8bpp frame buffer 4/8bpp frame buffer

1bpp決め打ち処理

4/8bppを想定した処理 残りのplaneは

表示されたまま

Xserverを4/8bpp対応すれば? → planeタイプの高い壁が…

正しく表示

Page 9: OpenBSD/luna88k news at NBUG meeting 2014-04

9

モノクロXserverとの共存• 案1:前面DIP SWで切り替え…△

–実装は簡単だが、切り替え時は再起動?

• 案2:ioctl(2)で変更…○–デバイスドライバ側でdepth(bpp)を変

えられるようにする–アプリケーションから使用するdepthを

通知する(……勝手に追加していいのかな?)

Page 10: OpenBSD/luna88k news at NBUG meeting 2014-04

10

モノクロXserverとの共存• 秘密(?)のWSDISPLAYIO_SETGFXMODE

– vga_pci.cに実装されているioctl– マニュアルには記載されてない– グラフィックモードの切り替えに使ってるよ

うだ– (NetBSDにはないらしい)

• このAPIを借用してluna88kで実装– 擬似depth切り替え、colormap設定など

• Xserver側にもluna88k固有処理追加– console/mlterm-fb/Xserverを⾏ったりきた

りしても大丈夫になりました

Page 11: OpenBSD/luna88k news at NBUG meeting 2014-04

11

86音源ボード• デバイスドライバは?

–NetBSD/pc98のソースを流用

–うまく音が出ない–「まずはmmapして試したら?」

@2013年12⽉NBUG例会–/dev/memを改造してmmapしてみる

* NEC PC-9801-86 SoundBoard PCM driver for NetBSD/pc98.

* Written by NAGAO Tadaaki, Feb 10, 1996.

*

* Modified by N. Honda, Mar 7, 1998

Page 12: OpenBSD/luna88k news at NBUG meeting 2014-04

12

86音源ボード• nec86play

– https://github.com/ao-kenji/nec86play– mmapした86音源ボードのテストプログラム– NetBSD/pc98のドライバ+ドライバ初期化ルーチン– 16bit, little endian, stereoのWAVEファイルを再生

Page 13: OpenBSD/luna88k news at NBUG meeting 2014-04

13

86音源ボード• 実験結果 (88100@33Mhz)

–22050Hzなら安定して再生できる–44100Hz(CD品質)では、割り込みが間

に合わないことがある–調整したらもう少しいけるかも?

•バッファサイズ•割り込みを発生させる閾値

• 次の課題:ドライバ化

Page 14: OpenBSD/luna88k news at NBUG meeting 2014-04

14

pcex(4):PC-98スロットドライバ

• 割り込みを扱うために必要• 機能1:専用のmmap

–/dev/pcexmem•mmapすると、 Cbusボードのメモリ領域にアクセスできる

–/dev/pcexio•mmapすると、CbusボードのI/Oポートにアクセスできる

Page 15: OpenBSD/luna88k news at NBUG meeting 2014-04

15

pcex(4):PC-98スロットドライバ

• 機能2:割り込みハンドリング–ioctlで実現

• UniOS-Machに準拠(のつもり)–PCEXSETINTLEVEL

•このドライバで扱うINTレベルを登録–PCEXRESETINTLEVEL

•上記を解除–PCEXWAITINT

•割り込みが起きるまで待つ(タイムアウトつき)

Page 16: OpenBSD/luna88k news at NBUG meeting 2014-04

16

pcex(4):PC-98スロットドライバ

• 将来的には、cbus(4)が必要か?

<現状>

pcex0 at mainbus0

<将来>

cbus0 at mainbus0

necsb0 at cbus0

audio0 at necsb0

pcex0 at cbus0 cbus(4)レベルでINTx割り込みを登録/判断

cbus

86音源ボード

他Cbusボード

necsb

pcex

INTx

INTy

mainbus Cbusボードpcex

INTx

mainbus

interrupt

level = 4

interrupt

level = 4

Page 17: OpenBSD/luna88k news at NBUG meeting 2014-04

17

今後の予定• 86音源ボードのドライバ作成

– 仮名:necsb(4)• テキスト版twitter+カラーアイコン表示

– mikutterデーモンモードなら、ふぁぼられると音が鳴る?

• マルチプロセッサでの時間遅れ対応– マルチプロセッサで定常運用したい– 多少は負荷低減になるのでは?

• これらで「マルチメディア」対応してOSC名古屋へ持っていけたらいいな♪