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
920
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
GitHub Actionsを使ってNetBSDマイナー機種用のビルドテストCIを書いてみた話 / OSC2025Osaka
tsutsui
0
45
PC-6001のPSG演奏デモを機会にNetBSDを真面目に説明してみる / OSC2024Ehime
tsutsui
0
240
PC-6001のPSG演奏デモをなるべくNetBSD環境を使って作った話 / KOF2024
tsutsui
1
370
OSC展示とLUNAとNetBSD / OSC2024Kyoto
tsutsui
1
510
digital VAX, NetBSD/vaxの歴史と VAXstation 3100/m30 展示 / OSC2024Osaka
tsutsui
0
1.1k
SONY NEWS NetBSD移植作業とNWS-3260展示 / KOF2023
tsutsui
0
1.4k
37年前の Sun 3/60 のために最新のNetBSDと最新のX.orgをメンテする話 / KOF2022
tsutsui
1
500
お歳暮で Sun3 が送られてきたので NetBSD/sun3 を展示デモしました / OSC2020Osaka
tsutsui
5
2.8k
NetBSD/zaurus 8.1 を直したあと ブース展示デモ内容を作った話 / OSC2019Tokyo-Fall
tsutsui
0
730
Other Decks in Programming
See All in Programming
『テスト書いた方が開発が早いじゃん』を解き明かす #phpcon_nagoya
o0h
PRO
2
200
なぜイベント駆動が必要なのか - CQRS/ESで解く複雑系システムの課題 -
j5ik2o
10
3.6k
昭和の職場からアジャイルの世界へ
kumagoro95
1
380
第3回関東Kaggler会_AtCoderはKaggleの役に立つ
chettub
3
1k
Honoをフロントエンドで使う 3つのやり方
yusukebe
7
3.3k
Flutter × Firebase Genkit で加速する生成 AI アプリ開発
coborinai
0
160
個人アプリを2年ぶりにアプデしたから褒めて / I just updated my personal app, praise me!
lovee
0
340
Writing documentation can be fun with plugin system
okuramasafumi
0
120
CI改善もDatadogとともに
taumu
0
110
Grafana Cloudとソラカメ
devoc
0
170
『GO』アプリ バックエンドサーバのコスト削減
mot_techtalk
0
140
ARA Ansible for the teams
kksat
0
150
Featured
See All Featured
Java REST API Framework Comparison - PWX 2021
mraible
28
8.4k
StorybookのUI Testing Handbookを読んだ
zakiyama
28
5.5k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
30
4.6k
We Have a Design System, Now What?
morganepeng
51
7.4k
Mobile First: as difficult as doing things right
swwweet
223
9.3k
GitHub's CSS Performance
jonrohan
1030
460k
Designing for humans not robots
tammielis
250
25k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
2.1k
Docker and Python
trallard
44
3.3k
RailsConf 2023
tenderlove
29
1k
Fashionably flexible responsive web design (full day workshop)
malarkey
406
66k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
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台を接続するとこれも楽しい •締め切り駆動すればなんとかなる •いつも通り 「動いたわーい」でした! まとめ