OpenBSD/luna88k news at NBUG meeting 2014-04
-
Upload
kenji-aoyama -
Category
Software
-
view
555 -
download
4
Transcript of 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⽉例会
2
2013年12⽉以降のluna88k• wscons 8bpp support
& mlterb-fb 8bpp• モノクロXserverとの共存• 86音源ボード• pcex(4):PC-98スロットドライバ
3
wscons 8bpp support• 4bpp版をを単純に倍にして8bpp化
–原作は@tsutsuiiさんのluna68k版–Bt458の初期化が違ってた
4
mlterm-fb 8bpp• mlterm-fb作者も想定外だったLUNA
のハード構成:-)
5
mlterm-fb 8bpp• Bt458の初期化を直したらOK
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@
7
モノクロXserverとの共存
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タイプの高い壁が…
正しく表示
9
モノクロXserverとの共存• 案1:前面DIP SWで切り替え…△
–実装は簡単だが、切り替え時は再起動?
• 案2:ioctl(2)で変更…○–デバイスドライバ側でdepth(bpp)を変
えられるようにする–アプリケーションから使用するdepthを
通知する(……勝手に追加していいのかな?)
10
モノクロXserverとの共存• 秘密(?)のWSDISPLAYIO_SETGFXMODE
– vga_pci.cに実装されているioctl– マニュアルには記載されてない– グラフィックモードの切り替えに使ってるよ
うだ– (NetBSDにはないらしい)
• このAPIを借用してluna88kで実装– 擬似depth切り替え、colormap設定など
• Xserver側にもluna88k固有処理追加– console/mlterm-fb/Xserverを⾏ったりきた
りしても大丈夫になりました
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
12
86音源ボード• nec86play
– https://github.com/ao-kenji/nec86play– mmapした86音源ボードのテストプログラム– NetBSD/pc98のドライバ+ドライバ初期化ルーチン– 16bit, little endian, stereoのWAVEファイルを再生
13
86音源ボード• 実験結果 (88100@33Mhz)
–22050Hzなら安定して再生できる–44100Hz(CD品質)では、割り込みが間
に合わないことがある–調整したらもう少しいけるかも?
•バッファサイズ•割り込みを発生させる閾値
• 次の課題:ドライバ化
14
pcex(4):PC-98スロットドライバ
• 割り込みを扱うために必要• 機能1:専用のmmap
–/dev/pcexmem•mmapすると、 Cbusボードのメモリ領域にアクセスできる
–/dev/pcexio•mmapすると、CbusボードのI/Oポートにアクセスできる
15
pcex(4):PC-98スロットドライバ
• 機能2:割り込みハンドリング–ioctlで実現
• UniOS-Machに準拠(のつもり)–PCEXSETINTLEVEL
•このドライバで扱うINTレベルを登録–PCEXRESETINTLEVEL
•上記を解除–PCEXWAITINT
•割り込みが起きるまで待つ(タイムアウトつき)
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
17
今後の予定• 86音源ボードのドライバ作成
– 仮名:necsb(4)• テキスト版twitter+カラーアイコン表示
– mikutterデーモンモードなら、ふぁぼられると音が鳴る?
• マルチプロセッサでの時間遅れ対応– マルチプロセッサで定常運用したい– 多少は負荷低減になるのでは?
• これらで「マルチメディア」対応してOSC名古屋へ持っていけたらいいな♪