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
37
PC-6001のPSG演奏デモをなるべくNetBSD環境を使って作った話 / KOF2024
tsutsui
1
40
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
460
お歳暮で 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
TypeScriptでライブラリとの依存を限定的にする方法
tutinoko
2
660
Ethereum_.pdf
nekomatu
0
460
Pinia Colada が実現するスマートな非同期処理
naokihaba
4
220
Laravel や Symfony で手っ取り早く OpenAPI のドキュメントを作成する
azuki
1
110
Snowflake x dbtで作るセキュアでアジャイルなデータ基盤
tsoshiro
2
520
LLM生成文章の精度評価自動化とプロンプトチューニングの効率化について
layerx
PRO
2
190
型付き API リクエストを実現するいくつかの手法とその選択 / Typed API Request
euxn23
8
2.2k
Amazon Qを使ってIaCを触ろう!
maruto
0
400
とにかくAWS GameDay!AWSは世界の共通言語! / Anyway, AWS GameDay! AWS is the world's lingua franca!
seike460
PRO
1
860
役立つログに取り組もう
irof
28
9.6k
WebフロントエンドにおけるGraphQL(あるいはバックエンドのAPI)との向き合い方 / #241106_plk_frontend
izumin5210
4
1.4k
Kaigi on Rails 2024 〜運営の裏側〜
krpk1900
1
190
Featured
See All Featured
Making the Leap to Tech Lead
cromwellryan
133
8.9k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
42
9.2k
Fashionably flexible responsive web design (full day workshop)
malarkey
405
65k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
47
2.1k
Why Our Code Smells
bkeepers
PRO
334
57k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
A Modern Web Designer's Workflow
chriscoyier
693
190k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
126
18k
What's new in Ruby 2.0
geeforr
343
31k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
506
140k
The Pragmatic Product Professional
lauravandoore
31
6.3k
Put a Button on it: Removing Barriers to Going Fast.
kastner
59
3.5k
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台を接続するとこれも楽しい •締め切り駆動すればなんとかなる •いつも通り 「動いたわーい」でした! まとめ