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
OSC2016 Kyoto PSG tunes on NetBSD luna68k
Search
Izumi Tsutsui
July 29, 2016
Programming
1.4k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
OSC2016 Kyoto PSG tunes on NetBSD luna68k
OSC2016京都のNetBSDセミナーで発表した『NetBSD/luna68kで「PSG音源の調べ」』のスライドです。
Izumi Tsutsui
July 29, 2016
More Decks by Izumi Tsutsui
See All by Izumi Tsutsui
SONY CISC-NEWS NWS-1750 + NWB-225 フレームバッファの NetBSD/news68k ドライバ実装 / OSC2026Hiroshima
tsutsui
0
120
CPUクロック20MHz RAM 16MBの LUNAで 30秒アニメGIF再生デモ / OSC2026Kyoto
tsutsui
0
82
OSC東京でいただいた UIAPduinoマイコンボードで PSG演奏と液晶ドッド絵デモ / osc2026Kagawa
tsutsui
0
380
NetBSD+Raspberry Piで 本物のPSGを鳴らすデモを ブラッシュアップしました / osc2026Tokyo-spring
tsutsui
1
120
NetBSD+Raspberry Piで 本物のPSGを鳴らすデモを OSC駆動の7日間で作った話 / OSC2026Osaka
tsutsui
1
210
PC-6001でPSG曲を鳴らすまでを全部NetBSD上の Makefile に押し込んでみた / osc2025hiroshima
tsutsui
0
400
今年もNetBSD環境を使って PC-6001のPSG演奏デモを作った話 / KOF2025
tsutsui
0
400
NetBSD/luna68kの歴史解説と、LUNAでアニメGIF再生デモと ついでにPC-6001デモも作った話 / OSC2025Kyoto
tsutsui
0
190
NetBSDの解説と NetBSD/luna68kの歴史と ついでにPC-6001展示 / OSC2025Tokyo-spring
tsutsui
0
270
Other Decks in Programming
See All in Programming
WebAssembly in Android Apps 〜 WASMはJNIの夢を見るか
keiji
1
110
setup-vp GitLab対応の裏側
naokihaba
0
110
新卒PdEのリアル
ryu1013
1
500
速く作れる。その次は、速く確かめられる開発へ 〜AIネイティブ開発を支える、Shift Down〜 / Can build fast. Next, moving to development where we can verify fast.
rkaga
5
3.2k
JPUG勉強会 OSSデータベースの内部構造を理解しよう(第2回)
oga5
0
250
速習iPhone Duo対応
yuukiw00w
1
560
モバイル交通系ICへのチャージ実例から考える、クロスプラットフォーム開発におけるiOS実機テスト設計とCI運用
yusuga
1
480
動作中のプログラムの中身をリアルタイムに覗く / Realtime Debugger for CSharp with Roslyn
prota
1
310
【高い買い物LT会】初任給で話題の国産フィジカルAIを買った話
akagami
PRO
0
160
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
130
MVNOの申込からeSIM開通までをiOSアプリでつなぐ- 本人確認・MNP・通信事業者基盤をまたぐ実装
satotakeshi
0
430
マイコン向けの軽量Ruby「PicoRuby」で各種デバイスを制御するネイティブアプリの実現手法
bash0c7
0
410
Featured
See All Featured
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.8k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
330
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.3k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
300
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
670
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
730
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
700
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
280
The Spectacular Lies of Maps
axbom
PRO
1
1k
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
Agile that works and the tools we love
rasmusluckow
331
22k
We Are The Robots
honzajavorek
0
380
Transcript
NetBSD/luna68kで 「PSG音源の調べ」 オープンソース カンファレンス2016京都 Z80といえばあのマシンです Izumi Tsutsui
[email protected]
発表タイトルは OpenBSD/luna88k 青山さんのOSC名古屋のスライドから 拝借しました _o_ http://www.slideshare.net/ao_kenji/osc2016-nagoya
LUNAとは よしだともこ先生のブロクより LUNAというのは、1980年代から1990年代 の初めごろにかけて、京都に本社を持つ オムロン株式会社が発売していた、 UNIXワークステーションの名前です (その当時、私はこの会社のUNIXワークス テーション開発部門で働いていました) http://notredameningen.kyo2.jp/e422862.html
LUNA@OSC京都 2011年にデビュー(?) http://movapic.com/ebijun/pic/3813540
展示→コミット も5年前 http://mail-index.netbsd.org/source-changes/2011/07/16/msg024675.html
最近のluna68kコミット http://www.nerv.org/netbsd/index2.cgi
11コミット/年 ネタ切れすいません
さて
去年はこんな発表でしたが https://speakerdeck.com/tsutsui/osc2015kyoto-netbsd-and-old-machines
20年以上前のマシンを いじっている方は NetBSD界隈に限らず 世の中にたくさん いらっしゃいます
5月の連休中に こんなイベントに行ってきました http://www.dennouyuen.com/
パワーグローブとか https://twitter.com/tsutsuii/status/726658904545873921
PC-8801mkIISRとか https://twitter.com/tsutsuii/status/726637860846096386
160x100ドットとか https://twitter.com/tsutsuii/status/726640229751226368
Acorn26マシンも https://twitter.com/tsutsuii/status/726653193589919744
✌('ω'✌)三✌('ω')✌三(✌'ω')✌ 楽しい!!!
OSCのブースで LUNAとかを見て 喜んでくれる方の 気持ちがちょっと わかりました ( ゚∀゚)
連休後半はPC88の修理をしたり https://twitter.com/tsutsuii/status/729354539531272193
PC-6001を修理したりしてたら
こんなPC-6001動画を発見 https://youtu.be/dpRihhIxznc
ちゃんとアニメしてる! PSGで音楽も鳴ってる! テープからロードしながら 画面スクロールしてる!!! おっさんには衝撃の動画でした
しばらくP6で遊んでました https://twitter.com/Hashi6001/status/737768083301900292
21世紀の8ビットPC開発環境 https://twitter.com/tsutsuii/status/731607753332920321
21世紀の8ビットPC開発環境 https://twitter.com/tsutsuii/status/741703537499897856
21世紀の8ビットPC開発環境 https://twitter.com/tsutsuii/status/746990413190303744
で、こんなのを作りました https://twitter.com/tsutsuii/status/746998884086386688
PC-6001で音楽といえば PSG音源です (27枚目にしてようやく本題)
PSG音源とは • いわゆるピコピコ音 × 3和音 • 元はアーケードゲーム用? • BASICだと PLAY
文で MMLという書式で書いて演奏 こんなの→ "C8<D+D+8G8F8G8D+>D+DD+F"
• 「アプリを実行しながら鳴らす」 →標準のBASICだと結構大変ですが • 割り込みを使うドライバがあります BGMとして鳴らすには http://park10.wakwak.com/~yosh/p6.html
• なぜかWindows用のMMLコンパイラが あったりします BGMデータを作るには http://www.tiny-yarou.com/deepp6.html
なぜか手厚いサポート https://twitter.com/tiny_yarou/status/746785754722926593
元ネタの方に見られたり https://twitter.com/jot6001/status/747404020453507073
こんな感じのP6月間でした https://twitter.com/tsutsuii/status/745584274837889024
と、PC-6001で 遊んでいるうちに OSC京都本番の 7月に入って しまったのですが
OSC沖縄直前のとある日 https://twitter.com/tsutsuii/status/748123873997107200
かつての証言 その1 OSC2011京都 ブース来場者の方 「ハード設計者がZ80を大好きで、 周辺回路制御にZ80が載ることに なったんですが、ソフトを作る側 としてはすごくたいへんでした」
かつての証言 その2 とあるZ80のツイート https://twitter.com/ebijun/status/92406581764956160
かつてのとある資料 OMRON TECHNICS Vol.29 No.1 https://twitter.com/tsutsuii/status/426963345388732416
http://www.slideshare.net/ao_kenji/osc2016-nagoya 最近の証言
というわけで 改めて調査
初代LUNA OMRON TECHNICS Vol.29 No.1 “LUNA(デスクトップWS)のハードウェア”
初代LUNA OMRON TECHNICS Vol.29 No.1 “LUNA(デスクトップWS)のハードウェア” 確かにある
LUNA-II OMRON TECHNICS Vol.31 No.2 “68040を搭載したワークステーションLUNA-IIのハードウェア” 無いっぽい
LUNA-88K2 OMRON TECHNICS Vol.32 “マルチRISCワークステーションLUNA-88K2” やっぱり無い?
某マニュアル 消されてますが ソフト的には ほぼPSG互換です (MSXにも載ってる)
HD647180 とは https://twitter.com/ebijun/status/426961951877394432
HD647180 とは 日立製 Zilog Z80 上位互換マイコン • 6.144MHz クロック
• タイマ、シリアル、DMA内蔵 • MMU内蔵で1MBアドレスサポート • 647180は ワンタイム PROM版
LUNAチェック
YM2149
HD647180XP
リセット信号 割り込み要求 I/Oプロセッサ構成 MC68030 8255 PIO HD647180 共有 メモリ 64KB
アドレス 71000000h 〜 7100FFFFh アドレス 0000h 〜 FFFFh YM2149 SSG タイマ SCI
某マニュアル記載 「XP起動方法」 • 68030から8255経由でリセット信号駆動 • リセット中に、共有メモリへ 647180用 プログラムを書き込み • 書き込みが終わったらリセットを解除
→とりあえずなんとかなりそう? 本体起動直後は8255のリセット信号は解除状態らしい のですが、そのときはどう動いてるのでしょう……
PC-6001 PSGドライバ検討 https://twitter.com/tsutsuii/status/748250450470674432
2msタイマ • PC-6001 では 2.051ms周期割り込み使用 • 演奏開始でフック、演奏停止で戻してる • HD647180には内蔵タイマあり
⇒自前でタイマ割り込みを書けばいける? PSGドライバ機種依存部①
I/Oポート マニュアルに記載あり • $82: データリード, アドレスライト • $83: データライト
……と安心してたら実は$82と$83が逆ということが後で判明(´・ω・`) PSGドライバ機種依存部②
PSGクロック • PC-6001 は 2MHz が入っているらしい • LUNAの YM2149
は 1.536MHz 入力 クロックが異なると音程データもズレるので、 適当にデータを変換してやる必要がある? PSGドライバ機種依存部③
再び天の声 https://twitter.com/tiny_yarou/status/748261462016040960
ファームウェアがありません PSGドライバの次はCPU自体が問題 • パソコンだったらROMが初期化してくれる • LUNAのHD647180にはROMが無い ⇒割り込みとか CPU自身とか、 全部自前で初期化が必要…
HD647180依存部
いきなり書いても 動く自信が無いので 純正のUniOSが どうしているのか 調べてみる
None
心眼grep バイナリダンプでZ80っぽい命令を探索 • C3 とか CD とか C9 とか無いか見てみる
⇒どうもカーネル内には Z80バイナリは無いっぽい? カーネル調査①
XP grep "xp” が名前に含まれる関数を探索 • open/close/ioctl のドライバはある感じ • read/write
は無い? • ioctl が copyin(9) してて 8255のリセットも叩いているっぽい? カーネル調査②
野生の勘grep • カーネルコンフィグ関連ソースには ioctl っぽい定義はあるが中身は記載無し • /dev/xp を触ってるものをバイナリ探索 ⇒
/etc/rc にこんなのが! echo -n 'XP firmware down load' /etc/dnl /etc/BOOT /etc/MAIN • ハンド逆アセンブルでなんとなく把握 ユーザーランド調査
わりと地味作業 • 各種システムレジスタ初期化 • MMU設定、割り込み設定 I/O命令がHD647180独自拡張命令で ZASMで直接書けなくてちょっと面倒…… 初期化処理実装
一応設計書書きました • 2msタイマ割り込み • 割り込みハンドラ登録/解除 • ホストからの再生/停止/フェードコマンド • ホストへのコマンド実行状態の通知
• ループ再生回数の通知 • PSGドライバ本体はほぼ変更なし PSGドライバ実装
デバッグ①
デバッグ②
None
ブートローダー=タイニーカーネル • ブートローダーにZ80コードを組み込み • 専用コマンド追加してダウンロードと リセット発行 • ついでにPSG演奏停止コマンドも実装 •
NFSでサーバー上の曲データも読めるよ! • 音楽鳴らしながらカーネルロードとか ブートローダー万能説
だいぶつかれてきてます…… • 適当に probe / attach を実装 • open
と close は適当にコピペ • ioctl でバイナリを渡してリセット発行 • mmap も用意して共有メモリ上書きも カーネルとアプリと同時に書いて 同時にデバッグしなきゃいけない。 めんどい。 次はカーネルとアプリ実装
“I’m not a programmer”
イベント駆動学習
ようやくデモ完成 https://twitter.com/tsutsuii/status/757044103276134400
• いろんなイベントに行ってみよう • たまには違うマシンも良いです • 過去マシン+最新開発環境=快適! • 自分で鳴らす音楽っていいですね • 「動いたわーい」が何にも勝る
楽しさの原動力でした! まとめ