13
NBUG 2014年12⽉例会 OpenBSD/luna88kのこの1年、または 86音源ボード on LUNA の進捗 Nagoya *BSD Users' Group Kenji Aoyama / ⻘⼭

"PC-9801-86 sound board on LUNA", at NBUG Meeting 2014-12

Embed Size (px)

Citation preview

Page 1: "PC-9801-86 sound board on LUNA", at NBUG Meeting 2014-12

NBUG 2014年12⽉例会

OpenBSD/luna88kのこの1年、または

86音源ボード on LUNAの進捗

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

Page 2: "PC-9801-86 sound board on LUNA", at NBUG Meeting 2014-12

2

ちょうど1年前の12⽉…

7

【作業中】PC-9801-86音源ボード

• PC-98拡張バス遊びのターゲット• 実はこれも2004年に手をつけ始めた

– LUNA-88K2への移植がmiodさんに見つかり(^_^)、official treeへのマージ作業を優先し中断

– その後のディスククラッシュで、いじってたソースが消失(T_T)

• ほぼ10年ぶりに再開• NetBSD/pc98のドライバでなにか音は出てるが�

• OpenBSDのaudioドライバとFIFOの扱いがうまくあってないのかな?

謎マシンに装着された前世紀の拡張ボード→

NBUG

2013年12月例会

Page 3: "PC-9801-86 sound board on LUNA", at NBUG Meeting 2014-12

3

経過(1)

•pcex(4)をcommit•NBUG例会で報告 … cbus(4)構想浮上

2014/4

•/dev/mem をいじって無理やりmmap•テストプログラムnec86playを書く•pcex(4):汎用PC-98スロットドライバを作り始める

2014/2

•冬休み自由研究として、コンソールのカラー化に逃避

•「mmap(2)せよ」(by Sさん)とのお告げを聞く@NBUG例会

2013/12

Page 4: "PC-9801-86 sound board on LUNA", at NBUG Meeting 2014-12

4

cbus(4)構想

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

NBUG

2014年4月例会

Page 5: "PC-9801-86 sound board on LUNA", at NBUG Meeting 2014-12

5

経過(2)

•OSC終わった反動で一休み•夏休み自由研究でyaftの移植に逃避

•OSC名古屋でまさかの電源トラブル•予備機でnec86playによるデモ

2014/7

•OSC名古屋のデモをmikuttermにしようと思いrubyのビルドに挑戦

•rubyはビルドできたが、時間切れ

•CバスはLUNA-88K2にしかないので88Kではpcex(4)のattachをやめる

2014/4

Page 6: "PC-9801-86 sound board on LUNA", at NBUG Meeting 2014-12

6

忘れたわけじゃないんだよ…

Page 7: "PC-9801-86 sound board on LUNA", at NBUG Meeting 2014-12

7

経過(3)

•cbus(4)をcommit2014/12

•cbus(4)構想の具現化2014/11

•mikuttermを動かそうとしたらm88kではgtk+2がコンパイルできず敗退

•tw-sixelやsayakaちゃんに逃避

•古代技術 raster operation 発掘に逃避

Page 8: "PC-9801-86 sound board on LUNA", at NBUG Meeting 2014-12

8

Log message:

Add an intermediate layer driver, cbus(4), to manage its own

interrupts of PC-9801 extension board slot bus (so-called 'C-bus') on

LUNA-88K2.

Existing pcex(4) is now attached at cbus(4), i.e.

cbus0 at mainbus0

pcex0 at cbus0

With this driver, some other PC-9801 boards might be supported on

luna88k in the (near?) future:-)

commit logで自分にプレッシャー

http://marc.info/?l=openbsd-cvs&m=141804506513490

Page 9: "PC-9801-86 sound board on LUNA", at NBUG Meeting 2014-12

9

経過(4)

•necsb(4)をcbus(4)にattach

•いろいろいじりつつ、/dev/audio用のテストプログラムnecsbplayを動かすとそれっぽい音が出た!

2012/12

※開発中画⾯につき、ブートメッセージは変更となる場合があります:-)

Page 10: "PC-9801-86 sound board on LUNA", at NBUG Meeting 2014-12

10

次なる課題が…

… /dev/soundでどうやって再生するんだっけ?

Page 11: "PC-9801-86 sound board on LUNA", at NBUG Meeting 2014-12

11

改めて、OpenBSDのオーディオ周りを調査

• audio(4)– (昔からある) /dev/audio, /dev/sound– open/read/write/ioctl/closeで動かす

• sndio(7)– audio(4)で動く、OpenBSDの標準フレームワーク– sndiod(1)デーモン、ネットワーク対応

• libao(ports)– オーディオアプリケーション用ライブラリ– OpenBSDでは、sndio(7)の上で動いているようだ

http://www.openbsd.org/cgi-bin/man.cgi/OpenBSD-current/man7/sndio.7

https://www.xiph.org/ao/

Page 12: "PC-9801-86 sound board on LUNA", at NBUG Meeting 2014-12

12

色々な構成で試して現状こんな感じ

necsb(4)

/dev/sound

necsb(4)

/dev/sound

necsb(4)

/dev/sound

sndiod(1)

aucat(1)

sndiod(1)

libao(ports)

mpg321(ports)necsbplay

hardware hardware hardware

nec86play

hardware

○ SR=11025Hz ○ SR=11025Hz △ SR=11025Hz音が途切れる

× SR=???Hz途切れ途切れ

(SR:sampling rate)

Command

WAV fileWAV fileWAV file MP3 file

Page 13: "PC-9801-86 sound board on LUNA", at NBUG Meeting 2014-12

13

まとめ

• デバイスドライバが大体できた– Thanks to NetBSD/pc98– 冬休み中にcommitしたいなあ

• アプリケーション・ライブラリ周りの継続調査– バッファサイズなど調整したらMP3も動かないか?

• 気楽に続ければいつかできる– うまく⾏かないときは別の課題に逃避(!?)して充電– 仕事じゃないのだから

• 次のCバスボードは何にしようか?– PCMCIAカードアダプタが面白そう?