Using "C-bus" extension boards on LUNA-88K2 (at OSC 2015 Nagoya)

15
OSC 2015 Nagoya 謎マシンにも翼をください C-bus拡張ボード on LUNA-88K2 Nagoya *BSD Users' Group Kenji Aoyama / ⻘⼭ Twitter: @ao_kenji

Transcript of Using "C-bus" extension boards on LUNA-88K2 (at OSC 2015 Nagoya)

Page 1: Using "C-bus" extension boards on LUNA-88K2 (at OSC 2015 Nagoya)

OSC 2015 Nagoya

謎マシンにも翼をください�

C-bus拡張ボード onLUNA-88K2

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

Twitter: @ao_kenji

Page 2: Using "C-bus" extension boards on LUNA-88K2 (at OSC 2015 Nagoya)

2

自己紹介

• ⻘⼭ 健治 / あおやま けんじ

• パソコン歴– MZ-2000 → X68000XVI → PC-AT

• UNIX歴– Sun3 / SunOS 4.0.x ぐらいから?– FreeBSD → NetBSD → OpenBSD

• OpenBSD/luna88k port maintainer– 2004年〜

Page 3: Using "C-bus" extension boards on LUNA-88K2 (at OSC 2015 Nagoya)

3

LUNA-88K,LUNA-88K2とは?

• LUNAシリーズ– オムロン株式会社が1980年代後半〜90年代

初めに販売していたワークステーション• LUNA, LUNA-II

– CPU:モトローラ68030/68040(m68k)– NetBSD/luna68kが動きます

• LUNA-88K, LUNA-88K2 – CPU:モトローラ88100(m88k) MP対応– OpenBSD/luna88kが動きます

⾒かけたら保護を!

Page 4: Using "C-bus" extension boards on LUNA-88K2 (at OSC 2015 Nagoya)

4

C-bus: LUNA’s final frontier :-)

• OpenBSD/luna88kのデバイスサポート•フレームバッファ•キーボード・マウス・シリアル•ネットワークインタフェース•SCSIコントローラ•フロントパネルLCD•PC-98拡張バス(C-bus)

•シリアル×2•プリンタポート

I/Oプロセッサ (HD647180)の先にあるファームウェアを読み込ませる必要があるがその情報がない

メインCPUから⾒えるところにある

×

メインCPUからアクセスできるのでオムロン純正ではない色々な機能のC-busボードが使える(かも?)ただしDMAは対応していません(LUNA-88K2にはDMACがない)

Page 5: Using "C-bus" extension boards on LUNA-88K2 (at OSC 2015 Nagoya)

5

C-bus: How to access on LUNA

• 物理アドレス– 0x90000000〜 (16MB)

• C-busメモリ領域…24bit分– 0x91000000〜 (64KB)

• C-bus I/Oポート領域…memory mapped– 0x91100000

• 割り込みステータスレジスタ(仮称)

【注意】i386: Little Endianm88k: Big Endianなにか処理が必要かも?

詳しくは https://gist.github.com/ao-kenji/7843096 参照

Page 6: Using "C-bus" extension boards on LUNA-88K2 (at OSC 2015 Nagoya)

6

これまでに作ったデバイスドライバ

cbus

86音源ボード

PCカードスロット

necsb

pcmcia

INTx

INTymainbus

interrupt

level = 4

その他C-busボードpcexmem

pcexio

INTz

OpenBSD 5.7(最新リリース)にも含まれています

Page 7: Using "C-bus" extension boards on LUNA-88K2 (at OSC 2015 Nagoya)

7

cbus(4)

• mainbusとC-busボードの間の中間層– C-bus割り込みの管理– 将来的にはメモリ・I/Oポート領域の重複管

理も必要かも?

Page 8: Using "C-bus" extension boards on LUNA-88K2 (at OSC 2015 Nagoya)

8

pcexmem(4), pxexio(4)

• C-bus用genericドライバ– C-busメモリ領域・I/Oポート領域専用

mmap– 簡単な割り込みハンドリング

• 各種C-busボードをユーザランドから触れるので、実験が楽になりました(自画自賛)

Page 9: Using "C-bus" extension boards on LUNA-88K2 (at OSC 2015 Nagoya)

9

necsb(4)

• 86音源ボードドライバ– PCM部分のみ

• 古のNetBSD/pc98のドライバをcbus(4)に持ってきたもの– 詳細は2014年12月のNBUG例会報告

http://www.slideshare.net/ao_kenji/nbug201412 参照

• LUNAでも/dev/audioが(一応)使えます– 11.025kHzサンプリングのPCMファイルなら

LUNAでも再生できました

Page 10: Using "C-bus" extension boards on LUNA-88K2 (at OSC 2015 Nagoya)

10

pcmcia(4)

• PCMCIAスロット増設ユニットドライバ

• OpenBSDのpcmcia(4)をcbus(4)経由で使えるようにしたもの– 詳細は2015年2月のNBUG例会報告

http://www.slideshare.net/ao_kenji/nbug201502 参照

• 本日展示の無線LANカードはこのドライバ経由で動いています

Page 11: Using "C-bus" extension boards on LUNA-88K2 (at OSC 2015 Nagoya)

11

Now playing with�

• ターゲット– PC-9801-96

グラフィックアクセラレータボード(GAB)B3• Cirrus Logic GD5428• 1MB VRAM

• マルチヘッドもどきにして本日展示しているものです

• 1024x768x8bpp, 800x600x16bpp対応• 今はpcexmem(4)/pcexio(4)を使って

1ドットずつ描画しています

右:純正フレームバッファ左:GAB-B3

Page 12: Using "C-bus" extension boards on LUNA-88K2 (at OSC 2015 Nagoya)

12

GAB-B3を試してみて�

• 「VGA」由来なのでちょっと使いにくい– VRAMをLinear Addressingできるチップだ

が、ボードとしては対応していない様子• 64Kごとのページアクセスしかできない

– どうドライバ化したらいいか検討中• 他のC-bus GABの情報求む!!

– 1280×1024×8bpp以上→ VRAM 2MB希望– 過去XFree98等でサポートされていたもの– VRAMがLinear Addressing対応できるもの

Page 13: Using "C-bus" extension boards on LUNA-88K2 (at OSC 2015 Nagoya)

13

まとめ

• LUNA-88K2で各種C-busボードを動かしてみました

• ドライバを用意したら、DMAを使わないボードがいくつか動きました– CPUパワーが貧弱なので、timeoutになるも

のもあります• 高サンプリングレートでのPCM再生• PCMCIAのWireless LAN

• 今後遊ぶためにも、早めの現物確保を!

Page 14: Using "C-bus" extension boards on LUNA-88K2 (at OSC 2015 Nagoya)

14

謝辞

• 荒尾さん・蛯原さん・江富さん– LUNA-88Kを送付いただきました

• 大島さん– GAB-B3を寄贈いただきました

• 筒井さん– 電源修理 & アドバイスありがとうございます

• Twitterでfavしていただける方– 励みになります

• 家族– 怪しげな趣味に対する理解に感謝!

Page 15: Using "C-bus" extension boards on LUNA-88K2 (at OSC 2015 Nagoya)

15

あとはNBUGブースで�

お待ちしております!!