OSC 2024 Nagoya

NBUGなひととき

OpenBSD & luna88k近況～ 2024年5月 ～Nagoya *BSD Users' Group
Kenji Aoyama / 青山 健治
Twitter: @ao_kenji
Mastodon:@ao_kenji@bsd.network

LUNA-88Kについて

毎年の復習: LUNAって何?
• LUNAシリーズ

2

見かけたら保護を!

• オムロン株式会社が1980年代後半～90年代初めに販売していたワークステーション• LUNA, LUNA-II• CPU:モトローラ68030/68040(m68k)• NetBSD/luna68kが動きます• LUNA-88K, LUNA-88K2• CPU:モトローラ88100(m88k)• OpenBSD/luna88kが動きます
m88kはアスキー・メディアワークス『忘れ去られたCPU黒歴史』で紹介されていますLUNA-88Kについて

3

LUNA-88K2:こんなマシンです
1992年発売

比較的コンパクトな筐体(ご家庭でも安心)

マルチプロセッサ対応

16桁 x 2行
キャラクタ
液晶パネル
カセット
ストリーマー

XP:Z80上位互換
I/Oプロセッサ
Cバススロット(88K2のみ)

OpenBSDの紹介

OpenBSDとは?
• フリーでマルチプラットホーム対応の 4.4BSD ベースOS• 注力ポイント:移植性・標準化・正当性・セキュリティ/暗号機能の統合• ”Free, Functional, and Secure”• ”Only two remote holes in the default install, in a heck of a longtime!”• 半年に一度リリース、アップグレードコマンドあり• 最新リリース: OpenBSD 7.5 (2024年4月)• セキュリティリリースは随時• マスコットはハリセンボンのPuffy• Webページ: https://www.openbsd.org/

4

OpenBSDの紹介

OpenBSD派生のソフトウェア• Associated projects• その他• tmux (Terminal multiplexer, 端末多重接続ソフト)• doas (sudoのシンプル版)•…

5

OpenBSDの紹介

6

OpenBSD 7.5 リリース
•Released Apr 5, 2024
•56th OpenBSD release

https://www.openbsd.org/75.html

OpenBSD/luna88kの紹介

OpenBSD/luna88kとは?
• OpenBSDのLUNA-88K{,2}への移植• OpenBSD/mvme88kのコア部分＋NetBSD/luna68kのデバイ
ス部分
移植の経緯は“OpenBSD/luna88k移植物語”• 歴史をご覧ください• 2002年1月
こっそり移植開始• 2004年4月
公式ツリーにコミット、port maintainerになる• 2007年8月～2011年8月
電源ユニット故障により4年間放置• 2011年8月
寄贈マシンから電源ユニットを移植→復活• 2012年3月
マルチプロセッサ対応• 2013年6月～ 主にOSC名古屋で展示

7

OpenBSD/luna88kの紹介

20th anniversary• 4月21日で公式ツリーに入れてもらって20周年でした8エミュレータ9nono - LUNA emulator• “OMRON LUNA-I/LUNA-88K (と SHARP X68030 と virtm68k) のエミュレータ”• 方針:ハードウェアもエミュレーション• 最新バージョン 0.7.2(2023/05/11)• NetBSD の pkgsrc、OpenBSD の ports にもなってます• 産地:広島県
http://www.pastel-flower.jp/~isaki/nono/エミュレータ

nono - LUNA emulator
8bpp Xも動きますMC88100
レジスタの表示
実機前面液晶の画面表示
256色
カラーパレットの表示

10エミュレータ

11

OpenBSDでの88100/200のバグ対応• 初期のMC88100にはバグがあり、OpenBSDではそれを回避する(=遅い)コードがデフォルトになっている• バグ修正済みのCPUならば自己書き換えをしてより速いコードにしている• 初期のMC88200にもバグがあり、回避コードがある

OpenBSD:src/sys/arch/m88k/m88k/m88100_machdep.cm88100_apply_patches()より：
if (((get_cpu_pid() & PID_VN) >> VN_SHIFT) > 10) {/** Patch DAE helpers.
CPUのマスクバージョンが10より大き* beforeafter
かったらバグ修正済みなので、速い* branchbranchコードに自己書き換えする* NOP
jmp.n r1
* xxx.usr
xxx.usr* NOP; NOP; NOP* jmp r1*/((u_int32_t *)(do_load_word))[1] = 0xf400c401;((u_int32_t *)(do_load_half))[1] = 0xf400c401;((u_int32_t *)(do_load_byte))[1] = 0xf400c401;((u_int32_t *)(do_store_word))[1] = 0xf400c401;((u_int32_t *)(do_store_half))[1] = 0xf400c401;((u_int32_t *)(do_store_byte))[1] = 0xf400c401;}

エミュレータ

nono に反映いただきました• nonoでは
MC88100/88200のマスクバージョンが0になっていた• IDレジスタに設定するマスクバージョンをバグ修正済みのものに変えるだけでOpenBSD/luna88kが高速に動くようになりました:-)12

エミュレータ

エミュレータ用ディスクイメージ• 半年ごとのリリースにあわせてHDDイメージを更新しています。
http://www.nk-home.net/~aoyama/liveimage/<<READMEより>>liveimage-luna88k-raw-20240404.img.gz (gzip'ed 707MB, 2.00GB uncompressed)
HDD live image of OpenBSD/luna88k 7.5 release.
This may be suitable for emulators that can act as LUNA-88K, such as:- nono, LUNA emulator (OMRON LUNA-I and LUNA-88K emulator)
http://www.pastel-flower.jp/~isaki/nono/
http://www.pastel-flower.jp/~isaki/nono/doc/#tryit- GXemul, a framework for full-system computer architecture emulation
https://gavare.se/gxemul/
https://gavare.se/gxemul/gxemul-stable/doc/machine_luna88k.html

13エミュレータ

14

MAME• MAMEのエミュレート
対象にLUNA-88Kが増えたようです• 物理ROMから吸い出した形でROMイメージを要求しているようなのでまだ試せてません
https://www.mamedev.org/

OpenBSD/luna88k近況

What’s new on luna88k in 7.4 & 7.5• カラーXサーバ(前回のOSC名古屋で展示)• startx –- -depth 1 で1bppサーバと切替可能になりました• 機種共通ブートローダで不足していた機能の充実• ブートローダ内の chmod 相当機能が正しく動くようになりました• 【補足】ブートローダは実行ビットがついている /bsd.upgrade を見つけると、通常のカーネルではなくそちらをロードして実行します。
その後ブートローダが /bsd.upgrade の実行ビットを落とすと、それ以降はインストールされた新カーネルが実行されます。

• libXi(Xの基本ライブラリ)のboundary error対応• xeyesが起動後マウスを動かすとすぐ落ちていたのが直りました• gcc3固有の問題対応いろいろ• 見つけたらまめに直さないとリリース前にはまります15

OpenBSD/luna88k近況

Portsで作れるものが限られてきた• Cmakeやninjaなどのビルドツールが必要なものが増えているがm88kはサポートされていない• m88k + gcc3 だとビルドできないものが多数になってきた• pkgsrc界隈ではどうなんでしょう?

16

OpenBSD/luna88k近況

シリアルマウスまで三千里(1)• ジャンク箱から古の3ボタンマウスが出てきた• LUNAのマウスとして使えないかな?
• とりあえずOpenBSD/amd64で調査• プロトコルは “mousesystem”• Xで認識されない? → いくつか追加設定が必要• OpenBSDのXorgはデフォルトだとwsconsにぶら下がるマウスしか認識しない• 設定ファイルxorg.confのServerFlagsのAutoAddDevicesをfalseにすると手動設定できるようになる• OpenBSDのXorgでは、openできるデバイスファイルが限定されている

17

OpenBSD/luna88k近況

18

シリアルマウスまで三千里(2)• LUNAにつないでみる• シリアルマウスは1200bpsだが、LUNAのオンボードシリアルはハードウェア的に2400/4800/9600bpsにしか切り替えられない• Cバス用の16550搭載シリアルボードを入手• cuすると1文字目だけ送信できるが受信不可• データ受信しても割り込みが上がらない?
• 割り込み設定の確認はPC-9801上で設定ソフト動かす必要あり:-<… To be continued

まとめまとめ• OpenBSD/luna88k• 公式ツリーに入って20年、しぶとく続けています• 7.5で31回目のリリースができました• ついにCバススロットのついたPC-9801が必要か?

• ご家庭にご不要のPC-9801があればお声がけください:-)• (当方PC-9801初心者です)• nono• 着々と更新されています• Xのテストなどで便利に使わせていただいています

19

20

展示ブースでお待ちしています!

Nagoya *BSD Users' GroupKenji Aoyama / 青山 健治
Twitter: @ao_kenji
Mastodon:@ao_kenji@bsd.network