Upgrade to Pro — share decks privately, control downloads, hide ads and more …

LUNA x PC-6001 Dual PSG Demo / OSC2017Kyoto

LUNA x PC-6001 Dual PSG Demo / OSC2017Kyoto

OSC2017 京都の NetBSDセミナーで発表した『LUNA × PC-6001 Dual PSG デモができるまで』のスライドです。

7fe50ce1ac047336d7804e47aec56391?s=128

Izumi Tsutsui

August 04, 2017
Tweet

Transcript

  1. LUNA × PC-6001 Dual PSG デモ ができるまで オープンソース カンファレンス2017京都 LUNAとPC-6001

    展示ふたたび Izumi Tsutsui tsutsui@NetBSD.org Twitter: @tsutsuii
  2. LUNAとは  よしだともこ先生のブロクより LUNAというのは、1980年代から1990年代 の初めごろにかけて、京都に本社を持つ オムロン株式会社が発売していた、 UNIXワークステーションの名前です (その当時、私はこの会社のUNIXワークス  テーション開発部門で働いていました) http://notredameningen.kyo2.jp/e422862.html

  3. OSC京都といえば LUNA というわけでもないのですが

  4. LUNA@OSC京都  2011年 NetBSD/luna68k 復活展示 http://movapic.com/ebijun/pic/3813540

  5. LUNA@OSC京都  2012年 LUNA × LUNA-II コラボ展示 https://twitter.com/tsutsuii/status/232152205275324417

  6. LUNA@OSC京都  2013年 mlterm で Twitter https://twitter.com/tsutsuii/status/363490195179442176

  7. LUNA@OSC京都  2014年 「今年はカラーだ!!!」 https://twitter.com/tsutsuii/status/363490195179442176

  8. LUNA@OSC京都  2015年 LUNA-II × LUNA-88K2 https://twitter.com/tsutsuii/status/629857897581666304

  9. LUNA@OSC京都  2016年 LUNA で PSG演奏 https://twitter.com/ebijun/status/758858671329726464

  10. 突然の PC-6001

  11. 「わけがわからないよ」 と言われてました LUNAは、ご当地京都市に本社のある オムロンさんが平成の初めのころに 販売していたワークステーションです。 メインCPUのMC68030に加えて I/O用の サブプロセッサとしてZ80互換CPUを持ち、 80年代に人気を博した NECのパソコン

    PC-6001と同じPSG音源も載せています。 その Z80とPSG音源に着目して、 PC-6001用のPSG音源ドライバとNetBSD を使ってLUNAに音楽を演奏させてみよう、 というデモンストレーション展示です。
  12. PC-6001 とは • NEC製の 8ビットパソコン •1981年 11月 発売

  13. PC-6001 スペック •CPU: 8bit Z80互換 4MHz •RAM: 標準 16KB, 最大32KB

    •グラフィック: 128×192ドット 4色 256×192ドット モノクロ2色 •音源:PSG 3和音 •標準価格:89,800円
  14. • いわゆるピコピコ音 × 3和音 • 元はアーケードゲーム用 • イメージとしてはファミコンの 音が近いです (※ファミコンの音源とPSGとは微妙に違います)

    PSG音源とは
  15. • NEC PC-6001/mkII • SHARP X1シリーズ • 富士通 FM-7/FM-77シリーズ •

    MSX • SHARP MZ-5500 だいたい ’80年代前半のマシン。 85年以降は FM音源チップ搭載機が主流に PSG音源を搭載したマシン 出典: https://ja.wikipedia.org/wiki/Programmable_Sound_Generator
  16. PC-6001内のPSG音源IC

  17. MOSAIC.WAV アルバム 「電気の恋人」の歌詞より 「PSGでやっと3和音  それでも感動してた あの頃〜♪」 https://www.amazon.co.jp/dp/B00569BHDY

  18. 去年は PC-6001の PSGで遊んでました http://www.nicovideo.jp/watch/sm29263535 http://www.nicovideo.jp/watch/sm29939586

  19. LUNAとPSG音源  OMRON TECHNICS Vol.29 No.1 https://twitter.com/tsutsuii/status/426963345388732416

  20. 初代LUNA構成 OMRON TECHNICS Vol.29 No.1 “LUNA(デスクトップWS)のハードウェア” PSG (SSG) は ここにある

    メインCPU MC68030 デバイス サブCPU HD647180 デバイス MC68030 HD647180
  21. LUNA内のYM2149 • YAMAHA製の AY-3-8910 互換チップ

  22. HD647180 とは  日立製 Zilog Z80 上位互換マイコン • 6.144MHz クロック

    • タイマ、シリアル、DMA内蔵 • MMU内蔵で1MBアドレスサポート • 647180は ワンタイム PROM版
  23. HD647180XP

  24. • Z80互換サブCPU 「ハードウェア設計者の趣味で〜」 (元カーネル開発者という方のお話) • PSG について 「当時のパソコンと同じ機能が必要、  という考えがあったのでは」 (サブCPUに関係されていた方のお話)

    なぜLUNAにPSG音源が?
  25. ここまでが前提知識です https://twitter.com/tsutsuii/status/802351863836250112

  26. LUNAのサブCPUはZ80互換 ↓ PC-6001用のPSGドライバを 移植するとLUNAでも動く というのが2016年の展示でした https://speakerdeck.com/tsutsui/osc2016-kyoto-psg-tunes-on-netbsd-luna68k

  27. リセット信号 割り込み要求 LUNA I/Oプロセッサ (XP) 構成 MC68030 NetBSD カーネル 支配下

    8255 PIO HD647180 独立動作 共有 メモリ 64KB アドレス 71000000h 〜 7100FFFFh アドレス 0000h 〜 FFFFh YM2149 SSG タイマ SCI
  28. リセット信号 割り込み要求 XPデバイスドライバ実装(1) MC68030 NetBSD カーネル 支配下 8255 PIO HD647180

    独立動作 共有 メモリ 64KB アドレス 71000000h 〜 7100FFFFh アドレス 0000h 〜 FFFFh YM2149 SSG タイマ SCI 演奏プログラム PSGドライバ 以下の ioctl(2) を実装 ・指定したZ80コードをロード ・HD647180をリセット  ⇒これで演奏プログラムを実行
  29. リセット信号 割り込み要求 XPデバイスドライバ実装(2) MC68030 NetBSD カーネル 支配下 8255 PIO HD647180

    独立動作 共有 メモリ 64KB アドレス 71000000h 〜 7100FFFFh アドレス 0000h 〜 FFFFh YM2149 SSG タイマ SCI 演奏プログラム PSGドライバ ユーザープロセス /dev/xp 経由 プロセス 仮想アドレス 制御コマンド PSGドライバ用 曲データ 共有メモリ mmap(2) を実装 ⇒ユーザープロセスから  曲データのダウンロード  および演奏開始停止制御が  可能に
  30. ここまでが LUNAのPSGの 復習です

  31. OSC展示と PC-6001

  32. LUNA@OSC大阪  PC-6001VXエミュレータとともに展示 https://twitter.com/ebijun/status/825194007101739008

  33. NetBSD 関係なくない? …と言われつつ結構好評でした

  34. OSC大阪 終了後

  35. https://twitter.com/tsutsuii/status/825797202165391360

  36. https://twitter.com/a_kanda/status/825838696586891264

  37. https://twitter.com/tsutsuii/status/826069353862881280

  38. 1月時点で 今年のOSC京都での LUNA+PC-6001展示 が 確定 ( ゚д゚)

  39. PC-6001を展示するなら NetBSD か LUNA と 関係あるネタを 用意しなければ……

  40. というわけで安直に 「PSG 3和音×2台の 6重和音演奏」 というネタに決めました

  41. 事前準備  データレコーダー修理 https://twitter.com/tsutsuii/status/881492528742113280

  42. LUNAとPC-6001の PSG演奏の同期方法 を考えてみる

  43. 案① 「せーの」で 2台同時に再生開始 ……というのは展示中にズレていくので却下

  44. 案② 何かの信号線を 2台の間につなぐ ……とりあえず適当に案を出してみる

  45. LUNA側  サブCPUのシリアルが出ているのでそこに

  46. PC-6001側  シリアルはオプションなので  ジョイスティックポートを使う http://p6ers.net/mm/pc-6001/dev/joy2rs232c/

  47. ジョイスティックコネクタ https://twitter.com/tsutsuii/status/886830810187169797

  48. RS232C レベル変換

  49. PSGドライバは 2ms割り込みを使用 ↓ とりあえず 割り込みルーチンで ジョイスティック信号を出力 信号同期方法①

  50. 割り込み信号出力 https://twitter.com/tsutsuii/status/891154285852934145

  51. LUNA側の入力はどうするか ↓ これでPSGドライバを直接駆動 信号同期方法② https://twitter.com/tsutsuii/status/886830810187169797

  52. LUNAシリアルのハマり https://twitter.com/tsutsuii/status/887009303340527616

  53. PSGドライバ改造 https://twitter.com/tsutsuii/status/890920242213339140

  54. 曲データ作成 https://twitter.com/tsutsuii/status/890895742092562432

  55. 曲を耳コピしてMML化 ↓ 3分の曲データ作成に 10時間くらい 2016年展示の曲データ

  56. ぐぐってみると MIDIデータを MML化するツール というものが存在 今年の曲データ

  57. https://twitter.com/tsutsuii/status/874969805714935809

  58. マビノギの 中の人は おっさん説

  59. 「東方ピアノEasyモード」 のデータをお借りしました 曲データMIDI http://easypianoscore.jp/

  60. MML調整

  61. None
  62. PC-6001画像表示作成

  63. LUNA側も画像ローダ作成 https://twitter.com/tsutsuii/status/892431116593803264

  64. PC-6001用 テープ準備 https://twitter.com/tsutsuii/status/892795557604843520

  65. というわけで完成 8/4 1:24AM でした…… https://twitter.com/tsutsuii/status/893145536487841793

  66. •サブCPUは共有メモリで制御 •PSG 6重和音演奏は結構楽しい •2台を接続するとこれも楽しい •締め切り駆動すればなんとかなる •いつも通り 「動いたわーい」でした! まとめ