Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
LUNA x PC-6001 Dual PSG Demo / OSC2017Kyoto
Search
Izumi Tsutsui
August 04, 2017
Programming
0
880
LUNA x PC-6001 Dual PSG Demo / OSC2017Kyoto
OSC2017 京都の NetBSDセミナーで発表した『LUNA × PC-6001 Dual PSG デモができるまで』のスライドです。
Izumi Tsutsui
August 04, 2017
Tweet
Share
More Decks by Izumi Tsutsui
See All by Izumi Tsutsui
PC-6001のPSG演奏デモを機会にNetBSDを真面目に説明してみる / OSC2024Ehime
tsutsui
0
38
PC-6001のPSG演奏デモをなるべくNetBSD環境を使って作った話 / KOF2024
tsutsui
1
41
OSC展示とLUNAとNetBSD / OSC2024Kyoto
tsutsui
1
65
digital VAX, NetBSD/vaxの歴史と VAXstation 3100/m30 展示 / OSC2024Osaka
tsutsui
0
450
SONY NEWS NetBSD移植作業とNWS-3260展示 / KOF2023
tsutsui
0
1.3k
37年前の Sun 3/60 のために最新のNetBSDと最新のX.orgをメンテする話 / KOF2022
tsutsui
1
470
お歳暮で Sun3 が送られてきたので NetBSD/sun3 を展示デモしました / OSC2020Osaka
tsutsui
5
2.8k
NetBSD/zaurus 8.1 を直したあと ブース展示デモ内容を作った話 / OSC2019Tokyo-Fall
tsutsui
0
690
NetBSD/zaurus 8.1 をテストしたら動かなかったので動くまで直した話 / KOF2019-NetBSD
tsutsui
1
1.1k
Other Decks in Programming
See All in Programming
タクシーアプリ『GO』のリアルタイムデータ分析基盤における機械学習サービスの活用
mot_techtalk
4
1.5k
TypeScriptでライブラリとの依存を限定的にする方法
tutinoko
3
690
Jakarta EE meets AI
ivargrimstad
0
600
ピラミッド、アイスクリームコーン、SMURF: 自動テストの最適バランスを求めて / Pyramid Ice-Cream-Cone and SMURF
twada
PRO
10
1.3k
WebフロントエンドにおけるGraphQL(あるいはバックエンドのAPI)との向き合い方 / #241106_plk_frontend
izumin5210
4
1.4k
macOS でできる リアルタイム動画像処理
biacco42
9
2.4k
Amazon Qを使ってIaCを触ろう!
maruto
0
410
初めてDefinitelyTypedにPRを出した話
syumai
0
420
A Journey of Contribution and Collaboration in Open Source
ivargrimstad
0
970
Tauriでネイティブアプリを作りたい
tsucchinoko
0
370
聞き手から登壇者へ: RubyKaigi2024 LTでの初挑戦が 教えてくれた、可能性の星
mikik0
1
130
EMになってからチームの成果を最大化するために取り組んだこと/ Maximize team performance as EM
nashiusagi
0
100
Featured
See All Featured
No one is an island. Learnings from fostering a developers community.
thoeni
19
3k
Agile that works and the tools we love
rasmusluckow
327
21k
Building Flexible Design Systems
yeseniaperezcruz
327
38k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5k
Designing for Performance
lara
604
68k
Why You Should Never Use an ORM
jnunemaker
PRO
54
9.1k
BBQ
matthewcrist
85
9.3k
Building Your Own Lightsaber
phodgson
103
6.1k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
42
9.2k
4 Signs Your Business is Dying
shpigford
180
21k
Measuring & Analyzing Core Web Vitals
bluesmoon
4
130
YesSQL, Process and Tooling at Scale
rocio
169
14k
Transcript
LUNA × PC-6001 Dual PSG デモ ができるまで オープンソース カンファレンス2017京都 LUNAとPC-6001
展示ふたたび Izumi Tsutsui
[email protected]
Twitter: @tsutsuii
LUNAとは よしだともこ先生のブロクより LUNAというのは、1980年代から1990年代 の初めごろにかけて、京都に本社を持つ オムロン株式会社が発売していた、 UNIXワークステーションの名前です (その当時、私はこの会社のUNIXワークス テーション開発部門で働いていました) http://notredameningen.kyo2.jp/e422862.html
OSC京都といえば LUNA というわけでもないのですが
LUNA@OSC京都 2011年 NetBSD/luna68k 復活展示 http://movapic.com/ebijun/pic/3813540
LUNA@OSC京都 2012年 LUNA × LUNA-II コラボ展示 https://twitter.com/tsutsuii/status/232152205275324417
LUNA@OSC京都 2013年 mlterm で Twitter https://twitter.com/tsutsuii/status/363490195179442176
LUNA@OSC京都 2014年 「今年はカラーだ!!!」 https://twitter.com/tsutsuii/status/363490195179442176
LUNA@OSC京都 2015年 LUNA-II × LUNA-88K2 https://twitter.com/tsutsuii/status/629857897581666304
LUNA@OSC京都 2016年 LUNA で PSG演奏 https://twitter.com/ebijun/status/758858671329726464
突然の PC-6001
「わけがわからないよ」 と言われてました LUNAは、ご当地京都市に本社のある オムロンさんが平成の初めのころに 販売していたワークステーションです。 メインCPUのMC68030に加えて I/O用の サブプロセッサとしてZ80互換CPUを持ち、 80年代に人気を博した NECのパソコン
PC-6001と同じPSG音源も載せています。 その Z80とPSG音源に着目して、 PC-6001用のPSG音源ドライバとNetBSD を使ってLUNAに音楽を演奏させてみよう、 というデモンストレーション展示です。
PC-6001 とは • NEC製の 8ビットパソコン •1981年 11月 発売
PC-6001 スペック •CPU: 8bit Z80互換 4MHz •RAM: 標準 16KB, 最大32KB
•グラフィック: 128×192ドット 4色 256×192ドット モノクロ2色 •音源:PSG 3和音 •標準価格:89,800円
• いわゆるピコピコ音 × 3和音 • 元はアーケードゲーム用 • イメージとしてはファミコンの 音が近いです (※ファミコンの音源とPSGとは微妙に違います)
PSG音源とは
• 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
PC-6001内のPSG音源IC
MOSAIC.WAV アルバム 「電気の恋人」の歌詞より 「PSGでやっと3和音 それでも感動してた あの頃〜♪」 https://www.amazon.co.jp/dp/B00569BHDY
去年は PC-6001の PSGで遊んでました http://www.nicovideo.jp/watch/sm29263535 http://www.nicovideo.jp/watch/sm29939586
LUNAとPSG音源 OMRON TECHNICS Vol.29 No.1 https://twitter.com/tsutsuii/status/426963345388732416
初代LUNA構成 OMRON TECHNICS Vol.29 No.1 “LUNA(デスクトップWS)のハードウェア” PSG (SSG) は ここにある
メインCPU MC68030 デバイス サブCPU HD647180 デバイス MC68030 HD647180
LUNA内のYM2149 • YAMAHA製の AY-3-8910 互換チップ
HD647180 とは 日立製 Zilog Z80 上位互換マイコン • 6.144MHz クロック
• タイマ、シリアル、DMA内蔵 • MMU内蔵で1MBアドレスサポート • 647180は ワンタイム PROM版
HD647180XP
• Z80互換サブCPU 「ハードウェア設計者の趣味で〜」 (元カーネル開発者という方のお話) • PSG について 「当時のパソコンと同じ機能が必要、 という考えがあったのでは」 (サブCPUに関係されていた方のお話)
なぜLUNAにPSG音源が?
ここまでが前提知識です https://twitter.com/tsutsuii/status/802351863836250112
LUNAのサブCPUはZ80互換 ↓ PC-6001用のPSGドライバを 移植するとLUNAでも動く というのが2016年の展示でした https://speakerdeck.com/tsutsui/osc2016-kyoto-psg-tunes-on-netbsd-luna68k
リセット信号 割り込み要求 LUNA I/Oプロセッサ (XP) 構成 MC68030 NetBSD カーネル 支配下
8255 PIO HD647180 独立動作 共有 メモリ 64KB アドレス 71000000h 〜 7100FFFFh アドレス 0000h 〜 FFFFh YM2149 SSG タイマ SCI
リセット信号 割り込み要求 XPデバイスドライバ実装(1) MC68030 NetBSD カーネル 支配下 8255 PIO HD647180
独立動作 共有 メモリ 64KB アドレス 71000000h 〜 7100FFFFh アドレス 0000h 〜 FFFFh YM2149 SSG タイマ SCI 演奏プログラム PSGドライバ 以下の ioctl(2) を実装 ・指定したZ80コードをロード ・HD647180をリセット ⇒これで演奏プログラムを実行
リセット信号 割り込み要求 XPデバイスドライバ実装(2) MC68030 NetBSD カーネル 支配下 8255 PIO HD647180
独立動作 共有 メモリ 64KB アドレス 71000000h 〜 7100FFFFh アドレス 0000h 〜 FFFFh YM2149 SSG タイマ SCI 演奏プログラム PSGドライバ ユーザープロセス /dev/xp 経由 プロセス 仮想アドレス 制御コマンド PSGドライバ用 曲データ 共有メモリ mmap(2) を実装 ⇒ユーザープロセスから 曲データのダウンロード および演奏開始停止制御が 可能に
ここまでが LUNAのPSGの 復習です
OSC展示と PC-6001
LUNA@OSC大阪 PC-6001VXエミュレータとともに展示 https://twitter.com/ebijun/status/825194007101739008
NetBSD 関係なくない? …と言われつつ結構好評でした
OSC大阪 終了後
https://twitter.com/tsutsuii/status/825797202165391360
https://twitter.com/a_kanda/status/825838696586891264
https://twitter.com/tsutsuii/status/826069353862881280
1月時点で 今年のOSC京都での LUNA+PC-6001展示 が 確定 ( ゚д゚)
PC-6001を展示するなら NetBSD か LUNA と 関係あるネタを 用意しなければ……
というわけで安直に 「PSG 3和音×2台の 6重和音演奏」 というネタに決めました
事前準備 データレコーダー修理 https://twitter.com/tsutsuii/status/881492528742113280
LUNAとPC-6001の PSG演奏の同期方法 を考えてみる
案① 「せーの」で 2台同時に再生開始 ……というのは展示中にズレていくので却下
案② 何かの信号線を 2台の間につなぐ ……とりあえず適当に案を出してみる
LUNA側 サブCPUのシリアルが出ているのでそこに
PC-6001側 シリアルはオプションなので ジョイスティックポートを使う http://p6ers.net/mm/pc-6001/dev/joy2rs232c/
ジョイスティックコネクタ https://twitter.com/tsutsuii/status/886830810187169797
RS232C レベル変換
PSGドライバは 2ms割り込みを使用 ↓ とりあえず 割り込みルーチンで ジョイスティック信号を出力 信号同期方法①
割り込み信号出力 https://twitter.com/tsutsuii/status/891154285852934145
LUNA側の入力はどうするか ↓ これでPSGドライバを直接駆動 信号同期方法② https://twitter.com/tsutsuii/status/886830810187169797
LUNAシリアルのハマり https://twitter.com/tsutsuii/status/887009303340527616
PSGドライバ改造 https://twitter.com/tsutsuii/status/890920242213339140
曲データ作成 https://twitter.com/tsutsuii/status/890895742092562432
曲を耳コピしてMML化 ↓ 3分の曲データ作成に 10時間くらい 2016年展示の曲データ
ぐぐってみると MIDIデータを MML化するツール というものが存在 今年の曲データ
https://twitter.com/tsutsuii/status/874969805714935809
マビノギの 中の人は おっさん説
「東方ピアノEasyモード」 のデータをお借りしました 曲データMIDI http://easypianoscore.jp/
MML調整
None
PC-6001画像表示作成
LUNA側も画像ローダ作成 https://twitter.com/tsutsuii/status/892431116593803264
PC-6001用 テープ準備 https://twitter.com/tsutsuii/status/892795557604843520
というわけで完成 8/4 1:24AM でした…… https://twitter.com/tsutsuii/status/893145536487841793
•サブCPUは共有メモリで制御 •PSG 6重和音演奏は結構楽しい •2台を接続するとこれも楽しい •締め切り駆動すればなんとかなる •いつも通り 「動いたわーい」でした! まとめ