Upgrade to Pro — share decks privately, control downloads, hide ads and more …

NetBSD/luna68kの歴史解説と、LUNAでアニメGIF再生デモと ついでにPC-60...

NetBSD/luna68kの歴史解説と、LUNAでアニメGIF再生デモと ついでにPC-6001デモも作った話 / OSC2025Kyoto

オープンソースカンファレンス2025 Kyotoの「NetBSDのご紹介」のセミナーで発表した『NetBSD/luna68kの歴史解説と、LUNAでアニメGIF再生デモと ついでにPC-6001デモも作った話』のスライドです。

Avatar for Izumi Tsutsui

Izumi Tsutsui

August 03, 2025
Tweet

More Decks by Izumi Tsutsui

Other Decks in Programming

Transcript

  1. NetBSDサポート機種数の推移 1993 1994 1995 1996 1997 1998 1999 2000 2001

    2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 0 10 20 30 40 50 60 5 4 3 3 1 4 4 9 12 7 1 2 1 2 1 0 0 0 1 NetBSD ports removed merged kept added YEAR Number of Ports
  2. NetBSD移植バブル期 1993 1994 1995 1996 1997 1998 1999 2000 2001

    2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 0 10 20 30 40 50 60 5 4 3 3 1 4 4 9 12 7 1 2 1 2 1 0 0 0 1 NetBSD ports removed merged kept added YEAR Number of Ports
  3. かつての NetBSD 移植バブル  20数年前の全盛期のNetBSD ・1997年 bebox ・1998年 newsmips macppc

    next68k sparc64 ・1999年 mmeye evbsh3 hpcmips news68k From Japan From Japan From Japan From Japan From Japan From Japan From Japan
  4. かつての NetBSD 移植バブル ・2000年 luna68k arc prep cobalt amigappc arm26

    sgimips mipsco dreamcast ・2001年 hpcsh sandpoint hpcarm netwinder sun2 cesfic algor cats evbppc amd64 playstation2 evbarm From Japan From Japan From Japan From Japan From Japan From Japan
  5. かつての NetBSD 移植バブル ・2000年 luna68k arc prep cobalt amigappc arm26

    sgimips mipsco dreamcast ・2001年 hpcsh sandpoint hpcarm netwinder sun2 cesfic algor cats evbppc amd64 playstation2 evbarm From Japan From Japan From Japan From Japan From Japan From Japan
  6. LUNAとBSD  4.4BSD/luna68k •純正OSは 4.3BSDベースの UniOS-B ▶SystemVベースの UniOS-Uもあり •前述の4.4BSDには LUNAサポートの

     ソースコードあり ▶OMRONの藤田さんがバークレー校で作業 ➔「次はLUNAですね」とNetBSD開発者に 狙われたのは自然な流れでした
  7. 復活は OSC2011関西@京都  NetBSD/m68k Never die! ・元々は「MC68030 workstation コラボ展示」 ・ご当地ということで

    LUNAをサプライズネタに 詳細はこちら http://www.ceres.dti.ne.jp/tsutsui/osc2011kyoto/index.html
  8. NetBSD/luna68k復活への道  勢いだけの展示ネタでした •4月のOSC神戸でX68030 と ATARI TT030 を展示 ↗ →

    •「次は京都だからLUNAか」と、  過去MLで見かけた方にお願いして  LUNA実機を貸していただく •ELF→a.outバイナリ変換を用意し、  SCSIドライババグを1つ修正して、  それだけで無事に復活!
  9. 動画もイケる? •LUNA-II は RAM 64MB 256色対応 •640x480のDoomは「やや遅いかな?」 くらいで一応ゲームっぽく動く •MPlayer動画も 384x216

    10fps 音声無し だとなんとか動画っぽく再生はできる •しかし、初代LUNAの RAM 16MB かつ モノクロXサーバーだと別の困難が……
  10. 8 bpp フレームバッファの場合 8 bpp:1ドット=1バイト | | | | |

    | | | | | | | | | | | | | | | | | | | | | | | | | | | | 00 FF FF FF FF FF FF FF FF 00 00 00 00 00 FF 00 00 FF FF FF FF 00 00 00 00 FF FF FF FF FF FF FF •画像データは256色なら1ドット=1バイト フルカラーなら1ドット=3バイト •VRAMの読み書きは 1バイト単位 ➔事前に256色減色すればなんとかなる
  11. 1 bpp フレームバッファの場合 1 bpp:1ドット=1ビット |0 1 1 1 1

    1 1 1|1 0 0 0 0 0 1 0|0 1 1 1 1 0 0 0|0 1 1 1 1 1 1 1| | 7F | 82 | 38 | 7F | •256色 1ドット=1バイト の画像でも 1ドットずつ1バイト中の8ビットに詰める という操作がVRAMアクセスで必要 ➔通常アプリはこれをXサーバーにお任せ つまり、描画するたび重い変換が走る? ★モノクロ対応アプリは自前で1 bppデータを持ってる?
  12. 変換なしで表示するには? •画像データを 1バイト=8ドットの形式で 持てば、VRAMへコピーだけで済むはず? •おもむろに ChatGPTに書かせてみながら 聞いてみると、以下でイケるっぽい (1)gif libのライブラリで 8

    bpp 形式で画像を読む (2)それを 1 bpp (1バイト=8ドット)形式に変換 (3)XCreateImage(3) で depth=1 のXImage を生成 (4)そこから XCreatePixmap(3) と XPutImage(3) で depth=1 の pixmap を生成 (5)その pixmap を XCopyPlane(3) で描画指示 等々
  13. ChatGPT活用事例 その2 •減色2値化アルゴリズムを出してくれる •アニメGIF書式とか giflib APIとかも ちゃんと教えてくれる (=いずれも世間の実装でたくさんあるから) •ただし 必ずしも最適解ではない場合も

    ➔指示してないところまで変更してしまい 動かなくなったりする •「展示デモ用にとりあえず動くもの」 「経験のないライブラリの使い方勉強」 というケースではやはり有効
  14. 展示デモに向けて •いろんなサイズ・フレーム数でGIFを作成 •24MB sun3/60 だと 600x760 64 frame つまり 3.6MB

    くらいは再生可能 •16MB LUNA だと、カーネルも削れば 900×500 53 frame の 3MB でも可能? ➔「マルチメディア」ということで、別で作った PC-6001デモのPSG曲と合わせて以下で ①「一千光年」で筆を手に走る初音ミクさん ②「投稿がしたいのに」の初音ミクさん ③宇宙戦艦ヤマトを熱唱する花梨先輩
  15. 一千光年 feat. PC-6001 •PC-6001 SCREEN 4 (256x192 モノクロ) の おける白黒NTSC信号の特性を利用した

    「にじみカラー」がきれいに出てちょっと驚き ➔奇数座標ドットを黒、その隣を白、といったドット 配置の調整で、ある程度 緑/薄紫 の発色制御が可能