Skip to content

Instantly share code, notes, and snippets.

@ao-kenji
Last active December 13, 2024 14:28
Show Gist options
  • Save ao-kenji/e2b9c397d5242da66d23744ac2a5f740 to your computer and use it in GitHub Desktop.
Save ao-kenji/e2b9c397d5242da66d23744ac2a5f740 to your computer and use it in GitHub Desktop.
FUZIX for LUNA XP: スタートガイド

FUZIX for LUNA XP:スタートガイド

Version 0.4 (NBUG例会 2024年12月版)

必要なもの

  • nono または実機で動く OpenBSD/luna88k または NetBSD/luna68k (以下、LUNAと書きます)
  • 以下のファイルを https://www.nk-home.net/~aoyama/tmp/fuzix/ に置いておきますので、LUNAに持っていってください。
ファイル名 サイズ 内容
fuzix.bin 43KB FUZIXカーネルイメージ
lunaxp-disk.img 19MB FUZIXディスクイメージ
xpfe-0.1.0.tar.gz 4.9KB サポートプログラムのソース

以下、OpenBSD/luna88k での実行例を示しますが、NetBSD/luna68k 10.0 でも同様に動作します。

サポートプログラムのコンパイル

LUNA上に持っていった xpfe-0.1.0.tar.gz を展開し、xpfe-0.1.0 ディレクトリの中で makeします。実行バイナリは xpfe です。

luna88k% tar zxf xpfe-0.1.0.tar.gz
luna88k% cd xpfe-0.1.0
luna88k% make
cc -O2 -pipe   -MD -MP  -c xpfe.c
cc -O2 -pipe   -MD -MP  -c xpdisk.c
cc -O2 -pipe   -MD -MP  -c xpload.c
cc -O2 -pipe   -MD -MP  -c xprtc.c
cc -O2 -pipe   -MD -MP  -c xptty.c
cc   -o xpfe xpfe.o xpdisk.o xpload.o xprtc.o xptty.o
luna88k% 

LUNA側の準備

LUNAにはメインCPU・XP・NIC(AMD LANCE Am7990)が共用している3ポートRAMが128KBあり、XP用のメモリとして通常その半分の64KBが割り当てられています。しかしFUZIXを動かすには64KBではメモリが不足するため、以下のいずれかの方法でNICに割り当てているメモリをXPで使用します。

対応方法1: 設定を変更してカーネルを再構築

LUNAのOS(OpenBSD/luna88k, NetBSD/luna68k)でNICに割り当てるメモリを半分の32KBにします。

OpenBSD/luna88kの場合 (2024/11/29以降のソースツリーで対応)

カーネルコンフィグファイル(/usr/src/sys/arch/luna88k/conf/GENERIC など)に、以下のオプションを追加してください。(GENERIC のコンフィグファイルには、あらかじめコメントアウトされた形で記述されています)

option         TRI_PORT_RAM_LANCE_SIZE=0x8000

その後カーネルを再構築し、そのカーネルで起動します。GENERIC カーネルを変更する場合の操作例を示します。

luna88k# cd /usr/src/sys/arch/luna88k/conf
luna88k# vi GENERIC            <-- 上記 option を追加します
luna88k# cd ../compile/GENERIC
luna88k# make config && make && make install
luna88k# shutdown -r now

NetBSD/luna68kの場合

/usr/src/sys/arch/luna68k/dev/if_le.c で定義されている TRI_PORT_RAM_LANCE_SIZE の値を0x8000に変更してカーネルを再構築し、そのカーネルで起動してください。(NetBSDユーザならこの説明で分かりますよね(^_^))

#define TRI_PORT_RAM_LANCE_SIZE		0x10000	/* 64KB */
   ↓
#define TRI_PORT_RAM_LANCE_SIZE		0x8000	/* 32KB */

対応方法2: ネットワークインターフェースを都度無効化

カーネル再構築をしない場合、一時的にLUNAのネットワークインターフェースを無効にしてからFUZIXを起動します。当然ですが、無効にしている間はネットワークは使用できません。

luna88k# ifconfig le0 down

FUZIXの終了後、再度ネットワークインターフェースを有効にしてください。

luna88k# ifconfig le0 up

FUZIXの実行

起動とログイン

対応方法1または2でLUNAの準備ができたらFUZIXを起動します。

/dev/xp を使うにはroot権限が必要なので、コンパイルしたサポートプログラム xpfe はrootで実行します。xpfe の引数は2つで、第1引数がFUZIXカーネルイメージ、第2引数がFUZIXディスクイメージです。今回は第1引数を fuzix.bin、第2引数を lunaxp-disk.img としてください。

正常に起動したら bootdev: で入力待ちになりますので、1 または hda1 を入力後 Enter を押してください。init が起動して login: プロンプトが表示されます。

login: プロンプトが表示されたら root でログインしてください。パスワードは設定されていません。

/bin, /usr/bin, /usr/games あたりにコマンドやプログラムがありますので試してみてください。

また、マンデルブロ集合のプログラム /root/mandelbrot を入れましたのでお楽しみください。

※マンデルブロ集合のプログラムは @DragonBallEZ さんの ASCIIART のソース(C 整数型)を修正して使わせていただきました。https://kyo-ta04.github.io/memo/

luna88k# ./xpfe ../fuzix.bin ../lunaxp-disk.img 
XP binary loaded, type '^\' to detach.
FUZIX version 0.5
Copyright (c) 1988-2002 by H.F.Bower, D.Braun, S.Nitschke, H.Peraza
Copyright (c) 1997-2001 by Arcady Schekochikhin, Adriano C. R. da Cunha
Copyright (c) 2013-2015 Will Sowerbutts <[email protected]>
Copyright (c) 2014-2024 Alan Cox <[email protected]>
Devboot
128KiB total RAM, 64KiB available to processes (15 processes max)
Enabling interrupts ... ok.
0000 :  - OK (39360 blocks)
hda: hda1 hda2 (swap) hda3
bootdev: 1
Mounting root fs (root_dev=1, ro): OK
Starting /init
31 buffers added
init version 0.9.1
Checking root file system.

 ^ ^
 n n   Fuzix 0.5
 >@<
       Welcome to Fuzix
 m m

login: root

Welcome to FUZIX.
# uname -a
Fuzix 0.5  lunaxp
# pwd
/root
# ./mandelbrot
124111111111111111224422222333334568BC67443322222211112331111000000000000000000
11111111111111111122222222233344598C  77943333222221111111110000000000000000000
111111111111112222222233324444556       955633332211111111100000000000000000000
111111111211112222222333465685778       976554444222211111100000000000000000000
11111112222222233333334457 AB9              787B5452111111111100000000000000000
11112222222222333333444667                       532233111111111000000000000000
11111222333444444444555A                       96443324211111110000000000000000
12222223345D6657 6555679                        AA43322211111110000000000000000
222233334569  8C  E8789                          B43322111111110000000000000000
223333345578D        E                            43322211111111111100000000000
3344444789A                                      5 3322111111111111100000000000
5555658A                                       C6433222222111111111100000000000
                                              975443322221111111111100000000000
5555658A                                       C6433222222111111111100000000000
3344444789A                                      5 3322111111111111100000000000
223333345578D        E                            43322211111111111100000000000
222233334569  8C  E8789                          B43322111111110000000000000000
12222223345D6657 6555679                        AA43322211111110000000000000000
11111222333444444444555A                       96443324211111110000000000000000
11112222222222333333444667                       532233111111111000000000000000
11111112222222233333334457 AB9              787B5452111111111100000000000000000
111111111211112222222333465685778       976554444222211111100000000000000000000
111111111111112222222233324444556       955633332211111111100000000000000000000
11111111111111111122222222233344598C  77943333222221111111110000000000000000000
124111111111111111224422222333334568BC67443322222211112331111000000000000000000
Start: Sat Oct 05 14:13:23 2024
End  : Sat Oct 05 14:14:18 2024
#

TIPS

  • date コマンド実行時にJSTで時刻表示するには、環境変数 TZ の値を JST+9 に設定します。

制限

現在の構成ではユーザプロセス用メモリが32KBですので、大きなプログラムは動きません。

# cpp
/usr/bin/cpp: too big
# 

終了

FUZIXを終了するには、プロンプトで shutdown と入力してください。正しくシャットダウンされると XP halted. が表示されます。その後 Control-\ を入力すると xpfe が終了し、LUNAのシェルに戻ります。

# shutdown
Halted.
XP halted.                       <---- この後'Control-\'を入力するとシェルに戻ります
luna88k# 

fsckが走ったら

何らかの理由で正しくシャットダウンできなかった場合、次回起動時に fsck が走ります。何か聞かれたら y を入力してください。fsck 後は再起動が必要ですので、”XP halted.” が表示されたら一度 xpfe を終了して、再度実行してください。

参考

作者

青山 健治 / Kenji Aoyama

X(旧Twitter) @ao_kenji

Mastodon @[email protected]

GitHub https://github.com/ao-kenji/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment