Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
LUNA x PC-6001 Dual PSG Demo / OSC2017Kyoto
Search
Izumi Tsutsui
August 04, 2017
Programming
1.2k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
LUNA x PC-6001 Dual PSG Demo / OSC2017Kyoto
OSC2017 京都の NetBSDセミナーで発表した『LUNA × PC-6001 Dual PSG デモができるまで』のスライドです。
Izumi Tsutsui
August 04, 2017
More Decks by Izumi Tsutsui
See All by Izumi Tsutsui
SONY CISC-NEWS NWS-1750 + NWB-225 フレームバッファの NetBSD/news68k ドライバ実装 / OSC2026Hiroshima
tsutsui
0
170
CPUクロック20MHz RAM 16MBの LUNAで 30秒アニメGIF再生デモ / OSC2026Kyoto
tsutsui
0
170
OSC東京でいただいた UIAPduinoマイコンボードで PSG演奏と液晶ドッド絵デモ / osc2026Kagawa
tsutsui
0
460
NetBSD+Raspberry Piで 本物のPSGを鳴らすデモを ブラッシュアップしました / osc2026Tokyo-spring
tsutsui
1
130
NetBSD+Raspberry Piで 本物のPSGを鳴らすデモを OSC駆動の7日間で作った話 / OSC2026Osaka
tsutsui
1
220
PC-6001でPSG曲を鳴らすまでを全部NetBSD上の Makefile に押し込んでみた / osc2025hiroshima
tsutsui
0
410
今年もNetBSD環境を使って PC-6001のPSG演奏デモを作った話 / KOF2025
tsutsui
0
420
NetBSD/luna68kの歴史解説と、LUNAでアニメGIF再生デモと ついでにPC-6001デモも作った話 / OSC2025Kyoto
tsutsui
0
200
NetBSDの解説と NetBSD/luna68kの歴史と ついでにPC-6001展示 / OSC2025Tokyo-spring
tsutsui
0
270
Other Decks in Programming
See All in Programming
IBM Bob Dojo #1 仕様駆動開発入門
oniak3ibm
PRO
0
390
Simple Storage Service(S3) is not simple
iwatsukayura
0
290
すこし踏み込む CancellationToken
htkym
2
1.7k
Atomic Design, Enforced: Scaling Mobile Design Systems (next.app devCon / droidCon Berlin 2026)
steliosf
PRO
0
170
Railsのためのパスキー実践入門 〜マルチテナントSaaSでの意思決定〜
utakaha
2
560
複雑なUIコンポーネントとの ⻑い付き合い⽅:波及するバグからテスト戦略を経て、安全な再設計へ
mixplace
0
410
Jetpack Compose Mechanisms
skydoves
3
820
The Rails Doctrine Decade
koic
2
590
個人開発者よ、Honoを使え(おじさんver)
tanahiro2010
2
260
npm との違いを手がかりにGo の依存管理を理解したい
optim
0
360
なぜCTOを降りてFDEを選んだのか?〜なぜプロダクト企業がFDEで顧客の現場に踏み込むのか〜
gonta
1
210
AI時代のコードレビューは人に向けるな、仕組みに向けろ
texmeijin
5
3.7k
Featured
See All Featured
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
2
360
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.6k
Git: the NoSQL Database
bkeepers
PRO
433
67k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.8k
Documentation Writing (for coders)
carmenintech
77
5.6k
The untapped power of vector embeddings
frankvandijk
2
1.9k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
540
Amusing Abliteration
ianozsvald
1
350
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
480
How STYLIGHT went responsive
nonsquared
100
6.3k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.6k
What's in a price? How to price your products and services
michaelherold
247
13k
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台を接続するとこれも楽しい •締め切り駆動すればなんとかなる •いつも通り 「動いたわーい」でした! まとめ