--- nono/doc/index.html 2026/04/29 17:04:30 1.1
+++ nono/doc/index.html 2026/04/29 17:05:07 1.1.1.13
@@ -1,3 +1,8 @@
+
nono document
@@ -9,10 +14,16 @@
--brown: rgb(128, 64, 0);
--green: rgb( 3, 175, 122);
--grey: rgb(132, 145, 158);
+ --cream: rgb(255, 255, 128);
+ --yellow-green: rgb(216, 242, 85);
+ --light-pink: rgb(255, 202, 191);
+ --light-green: rgb(119, 217, 168);
--light-grey: rgb(200, 200, 203);
+
+ --bg-grey: rgb(220, 220, 223);
}
body {
- background-color: var(--light-grey);
+ background-color: var(--bg-grey);
}
q {
color: var(--brown);
@@ -40,55 +51,189 @@ dt.dt-indent {
.strike {
color: var(--grey);
}
+.strike > q {
+ color: var(--grey);
+}
+.new {
+ background-color: var(--light-green);
+}
+.new > q {
+ background-color: var(--light-green);
+}
-nono 0.0.3 (2020/05/16)
+nono 0.3.0 (2022/04/30)
-nono は NetBSD とかで動作する OMRON LUNA-I とかのエミュレータです。
-nono is OMRON LUNA-I emulator runs on NetBSD and so on.
+nono は NetBSD とかで動作する OMRON LUNA-I や LUNA-88K とかのエミュレータです。
+nono is OMRON LUNA-I and LUNA-88K emulator runs on NetBSD and etc.
-ビルド方法 How to build
+
+Index of this page:
+
+
+緑背景は新規または目立った更新のあった箇所です。
+Green Background is new or updated paragraph.
+
+
+
+
+0. ver 0.2.x から ver 0.3.0 への移行方法 How to migrate from ver 0.2.x to ver 0.3.0
+
+ver 0.3.0 ではデバッガに関する設定項目が ver 0.2.x までとは変更になっています。
+これらを設定ファイルに記載している場合は
+このドキュメントの設定の章を参照して修正してください。
+Configuration about debugger has been changed from ver 0.2.x to ver 0.3.0.
+If your configuration file has them, please update by yourself.
+See Configuration section in this document.
+
+
+
+以下の設定項目は廃止になりました。
+The following item has been removed.
+
+
+debugger-port = (default: 0)
+
+
+代わりに以下の2つが追加されています。
+Instead, the following two items are added.
+
+debugger-driver = (default: none)
+debugger-tcp-port = (default: 0)
+
+
+
+
+
+
+1. ビルド方法 How to build
+
+ビルドには以下が必要です。
+NetBSD(pkgsrc) なら wxWidgets は pkgsrc/x11/wxGTK30 です
+(OPTIONS:gtk3 で動作確認しています)。
+
The followings are required for build.
+If you use NetBSD(pkgsrc),
+wxWidgets is pkgsrc/x11/wxGTK30 (OPTIONS:gtk3 is tested).
+
-- pkgsrc/x11/wxGTK30 (OPTIONS:gtk2 is recommended)
+
- make (BSD make, not GNU make)
+
- C/C++ compiler which supports -std=c++14.
+
+(For gcc, 7.4 or newer works at least.
+For clang, 7.0 - 13.0 works at least.)
+ - wxWidgets 3.0.x "stable" branch
+(but 3.1.x "development" branch is not recommended)
+
- gettext
-
-アーカイブを展開したら以下のようにします。
+
+
+(NetBSD 以外でのビルドはサポートしていませんが)
+Ubuntu 20.04 ではたぶん以下のパッケージが必要です。
+You may need the following packages on Ubuntu 20.04
+(though we won't support non-NetBSD platform).
+
+
+-
+bmake
+build-essential
+gettext
+libbsd-dev
+libedit-dev
+libkqueue-dev
+libwxgtk3.0-gtk-dev
+zlib1g-dev
+
+
+
+nono のソースアーカイブを展開したら以下のようにビルドします。
+configure には環境変数 CC、CXX でコンパイラを指定することが出来ます。
+また wx-config が標準的な名前で提供されていないために見付けられない場合には
+環境変数 WX_CONFIG にパスを指定することが出来ます。
+Extract the nono's source archive and build as following.
+You can specify C/C++ compiler using environment variable CC and CXX
+if configure cannot find standard name suitable compiler.
+Also, you can specify wx-config path using environment variable WX_CONFIG
+if configure cannot find wx-config.
+
+-DNOTEST は開発者用のテストツールをビルドしないためのものです。
+With -DNOTEST, the build excludes test tools which is needed
+for developers only.
+
% ./configure
-% make depend
-% make
+% make -DNOTEST depend
+% make -DNOTEST
+% su
+# make install
-まだ make install はないです。
-
wx/nono が GUI 版実行ファイル、
-
cli/nono-cli がコマンドライン版です。
+
+
+2つの実行ファイルがインストールされます。
+nono が GUI 版実行ファイル、
+nono-cli がコマンドライン版です。
+Two executables will be installed.
+nono is the GUI executable and nono-cli is
+the command line executable.
-コマンドラインオプション Command Line Option
+
+2. コマンドラインオプション Command Line Option
-- -A file
-- ホストの file をロードして実行します。
-ファイルが gzip 圧縮されていれば自動的に展開します。
-(展開後の) ファイル形式は a.out (OMAGIC) か ELF で、
-実際にはブートローダとカーネル程度しか想定していません。
-設定ファイルの prom-use-rom=1 とともに指定されると
--A のほうが優先します。
-- -c vmdir
-- VM ディレクトリを指定します。省略するとカレントディレクトリとします。
+- -c vmpath
+- VM ディレクトリ/設定ファイルを指定します。
+vmpath がディレクトリならそのディレクトリの中の nono.cfg
+を設定ファイルとします。
+vmpath がファイルならそれを設定ファイルとします。
+そしていずれの場合も
+設定ファイルがあるディレクトリを VM ディレクトリとします。
+-c オプションを省略すると vmpath をカレントディレクトリとします。
+
Specifies the VM directory/configuration file.
+If vmpath is a directory,
+make nono.cfg in that directory a configuration file.
+Or if vmpath is a file,
+make the specified file a configuration file.
+And in both cases,
+make the directory where that file is located a VM directory.
+If -c option is omitted,
+vmpath is considered as the current directory.
- -f
- 高速モードで起動します。
-GUI なら起動後にもメニューから変更できますが、その初期値を変えるだけです。
+GUI なら起動後にもメニューから変更できますが、その初期値を変えるだけです。
+Boot as the fast mode.
+You can change this mode on GUI menu after boot,
+and the option only changes its initial state.
- --fontsize height
- GUI 版のみ。
全サブウインドウの起動時のフォントサイズを指定します。
-height には 12, 16, 24
-のいずれかを指定します。デフォルトは 12 です。
+height には 12, 16
+のいずれかを指定します。デフォルトは 12 です。
+起動後にメニューから変更できます。
+
+GUI Only.
+Specifies the initial fontsize on all sub windows.
+height is one of 12 or 16.
+The default value is 12.
+You can change this value on GUI menu after boot.
- -s scale
- --scale scale
- GUI 版のみ。
@@ -96,18 +241,50 @@ GUI なら起動後にもメニューか
起動後にもメニューからプリセットされた倍率には変更可能ですが、
任意倍率は起動時のみ指定可能です
(そのうちなんとかしたい)。
-デフォルトは 1.0 です。
+デフォルトは 1.0 です。
+
+GUI Only.
+Specifies the initial main window scale in real number.
+You can change this scale on GUI menu after boot,
+but unlike this option, there are only a few preset choices
+(Should be improved in someday).
+The default value is 1.0
- --show-config
-- 設定ファイルと -V オプションを読み込んだ結果を表示します。
+- 設定ファイルと -V オプションを読み込んだ結果を表示します。
+
Shows the result of reading configuration file and
+parsing -V options.
- -v
-- バージョンを表示します。
+- バージョンを表示します。
+
Shows the version.
- -V name=value
-- 設定ファイルの内容を個別に上書きします。
+- 設定ファイルで指定した name=configvalue の代わりに
+このオプションの name=value を適用します。
+name が正しくない場合はエラー終了します。
+
Use this name=value
+instead of name=configvalue specified in configuration file.
+If name is not correct, it will exit on error.
+- -X file
+- ホストの file をロードして実行します。
+file が相対パスの場合カレントディレクトリからのパスになります。
+ファイルが gzip 圧縮されていれば自動的に展開します。
+(展開後の) ファイル形式は a.out (OMAGIC) か ELF で、
+実際にはブートローダとカーネル程度しか想定していません。
+設定の prom-image、luna-dipsw1 の内容(後述)によらず
+内蔵の互換 PROM で起動し、直ちにホストファイルを実行します。
+
Loads and executes host's file.
+If file is relative path,
+it is path from the current directory.
+If the file is gzip'd, it is automatically extracted.
+The supported file format (after extracting) is a.out (OMAGIC) or ELF.
+Actually, it only assumes bootloaders or kernels.
+Regardless of prom-image and luna-dipsw1 configuration
+(see below),
+the internal emulated PROM loads and executes the host file immediately.
-以下開発用。
+以下開発用。
For developers:
-- -b hexaddr
+- -b hexaddr[,skipcount]
- デバッガのブレークポイントを 16進数で指定します。
- -C
- ログをコンソールにも出力します。
@@ -116,174 +293,1222 @@ GUI なら起動後にもメニューか
- 起動時にデバッガプロンプトで停止します。
- -D
- コンソールをデバッガとして使用します。
--d を指定しなくても起動時にプロンプトで停止します
-(そのうちなんとかしたい)。
+
+過去との互換性のために存在していますが、
+-V debugger-driver=stdio と等価です。
+
- -L name1=level1[,name2=level2,...]
- ログレベルを指定します。
カンマで区切って複数指定することも出来ます。
-Lhelp で name の一覧を表示します。
+- --load-only file
+- -X オプションと同様ですが、PROM のプロンプトで停止します。
- -M name[,name2,...]
- 起動時に表示するモニタウィンドウを指定します。
-カンマで区切って複数指定することも出来ます。
+カンマで区切って複数指定することも出来ます。
+-Mhelp で name の一覧を表示します。
-設定 Configuration
+
+
+3. 設定 Configuration
-VM の設定ファイルはその VM ディレクトリ内の nono.cfg です。
+VM の設定ファイルはその VM ディレクトリ内の nono.cfg
+(または -c で指定したファイル) です。
書式は
key = value 形式で1行1項目ずつです。
key と
value の前後の空白は取り除かれます。
また空行と "
#" で始まる行は無視します。
-知らないキーの行も無視します。
+知らないキーは警告を出した上で無視します。
+
VM configuration file is nono.cfg
+(or the file specified by -c option) in the VM directory.
+Its syntax is key = value format, one per line.
+White spaces before and after key and value are ignored.
+Blank lines, lines beginning with "#" are also ignored.
+The lines with unrecognized key are ignored with a warning.
設定項目は次の通りです。
+The configuration items are:
- vmtype = string
-- VM 種別を指定します。今の所 string に
-指定できるのは luna (LUNA-I) だけですが、省略不可です。
-- debugger-port = integer
-- デバッガの TCP 待ち受けポート番号を指定します。
-0 なら待ち受けを行いません。
-デフォルトは 9999 です(適当)。
-- ethernet-hostdriver = string
-- イーサネットデバイスのホスト側ドライバを指定します。
-none、tap、bpf が指定できます。
+
- VM 種別を以下のいずれかから指定します。
+省略不可です。
+
Specifies the VM type from the following.
+This field is mandatory.
+
+| | luna | … LUNA-I
+ |
| luna88k | … LUNA-88K
+ |
+ - clock-sync = value
+- 仮想マシン内の時刻の同期方法を指定します。
+real なら実時間に同期、virtual なら仮想時間に同期します。
+デフォルトは real です。
+この機能は実験中のため将来予告なく仕様が変更になる可能性があります。
+
Specify how to synchronize the time in virtual machine.
+If real, synchronize with the real time;
+if virtual, synchronize with the virtual time.
+The default is real.
+This feature is under experimentation and may be changed in the future
+without notice.
+- debugger-driver = string
+-
+デバッガのコンソールドライバを指定します。
+stdio、tcp、none が選択可能です。
+stdio は標準入出力を使用します。
+tcp は TCP ポートで TELNET プロトコルで待ち受けます。
none ならホスト側とは一切通信を行いません。
-tap か bpf かはホスト OS によってビルド時に決定します。
-NetBSD なら tap です。
+デフォルトは none です。
+Specifies console driver of the debugger.
+stdio, tcp, and none can be specified.
+stdio uses the standard input/output.
+tcp listens on TCP port using TELNET protocol.
+none doesn't make any communication with the host.
+The default is none.
+
+- debugger-tcp-port = integer
+-
+デバッガのコンソールドライバが tcp の時の TCP 待ち受けポート番号を指定します。
+
Specify the TCP port number that debugger console driver listens.
+
- ethernet-macaddr = string
- イーサネットデバイスの仮想マシン側の MAC アドレスを指定します。
XX:XX:XX:XX:XX:XX
形式で指定します。
auto なら自動的に決定します。
デフォルトは auto です。
+- hostcom-driver = string
+- シリアルポートのホスト側ドライバを指定します。
+stdio、tcp、none が選択可能です。
+stdio は標準入出力を使用します。
+tcp は TCP ポートで TELNET プロトコルで待ち受けます。
+none ならホスト側とは一切通信を行いません。
+デフォルトは none です。
+
Specifies the host driver of serial port.
+stdio, tcp, and none can be specified.
+stdio uses the standard input/output.
+tcp listens on TCP port using TELNET protocol.
+none doesn't make any communication with the host.
+The default is none.
+- hostcom-tcp-port = integer
+- ホストドライバが tcp の時の TCP 待ち受けポート番号を指定します。
+
Specify the TCP port number that host driver listens.
+- hostcom-fallback = integer
+- hostcom-driver で指定したドライバが使用可能でなかった時、
+0 ならプロセスを終了します。1 なら none を選択して実行を継続します。
+デフォルトは 0 です。
+
Specify the behavior when the driver which is selected by
+hostcom-driver is unusable;
+terminate the process if 0,
+or continue to run using the none driver if 1.
+The default is 0.
+- hostkbd-input = string
+- ホストキーボードの入力モードを指定します。
+char ならキャラクタ入力モード、
+jp なら日本語キーボードモードです。
+デフォルトは char です。
+詳細は VM について の章を参照してください。
+
Specifies the input mode of the host keyboard.
+char means the character mode,
+jp means the Japanese keyboard mode.
+The defualt is char.
+See About VM for details.
+- hostnet-driver = string
+- イーサネットデバイスのホスト側ドライバを指定します。
+afpacket、bpf、tap のうち
+ホスト OS がサポートしているものと auto、none が選択可能です。
+afpacket は Linux の AF_PACKET ソケットを使用します。
+bpf は bpf(4) デバイスを使用します。
+tap は tap(4) インタフェースを使用します。
+none ならホスト側とは一切通信を行いません。
+auto ならホスト OS がサポートしているもののうち
+tap → afpacket → bpf を順に試します。
+デフォルトは auto です。
+
Specifies the host driver of ethernet device.
+afpacket, bpf, and tap can be specified
+only if the host OS supports them.
+auto and none can always be specified.
+afpacket uses Linux's AF_PACKET socket,
+bpf uses bpf(4) device,
+and tap uses tap(4) interface.
+none doesn't make any communication with the host.
+If auto is specified,
+it tries tap, afpacket, and bpf in that order
+(if the host OS supports them).
+The default is auto.
+- hostnet-afpacket-ifname = ifname
+- ホストドライバが afpacket の時にバインドするインタフェースを1つ指定します。
+ifname が auto
+なら使用可能なインタフェースを1つ自動的に選択します。
+デフォルトは auto です。
+なお、このホストドライバではローカルホストとの通信は出来ません。
+
Specify an interface name to bind to, when the host driver is afpacket.
+If auto is specified as ifname,
+it selects an usable interface automatically.
+The default is auto.
+Note that this host driver cannot communicate with the localhost.
+- hostnet-bpf-ifname = ifname
+- ホストドライバが bpf の時にバインドするインタフェースを1つ指定します。
+ifname が auto
+なら使用可能なインタフェースを1つ自動的に選択します。
+デフォルトは auto です。
+なお、このホストドライバではローカルホストとの通信は出来ません。
+
Specify an interface name to bind to, when the host driver is bpf.
+If auto is specified as ifname,
+it selects an usable interface automatically.
+The default is auto.
+Note that this host driver cannot communicate with the localhost.
+- hostnet-tap-devpath = path
+- ホストドライバが tap の時に使用するデバイスを1つフルパスで指定します。
+デフォルトは auto で、この場合は自動的にデバイスを選択します。
+この時の探し方はホスト OS によって異なります。
+Linux なら /dev/net/tun を指定したのと同じです。
+OpenBSD なら /dev/tap0 から /dev/tap9 まで
+順番にオープンできるまで試します。
+NetBSD (と FreeBSD) ならまず /dev/tap でクローニングを試み、
+それが失敗すれば /dev/tap0 から /dev/tap9 までを
+順番にオープンできるまで試します。
+いずれの場合も VM ディレクトリかその親ディレクトリに
+nono-ifup, nono-ifdown という名前のシェルスクリプトが必要です。
+何もすることがない場合でも正常終了する空のシェルスクリプトを用意してください。
+
+Specify a device pathname, when the host driver is tap.
+The default is auto.
+The behavior in this case depends on the host OS.
+On Linux, it's the same as /dev/net/tun.
+On OpenBSD, it will try from /dev/tap0 to /dev/tap9
+until successful.
+On NetBSD (and FreeBSD), it will try cloning by /dev/tap first.
+If that fails, then try from /dev/tap0 to /dev/tap9
+until successful.
+In all cases, you need to prepare two shell script files which names are
+nono-ifup and nono-ifdown in the VM directory or
+its parent directory.
+Even if you don't have anything to do in these scripts,
+you need to prepare empty scripts that will terminate successfully.
+- hostnet-fallback = integer
+- hostnet-driver で指定したドライバが使用可能でなかった時、
+0 ならプロセスを終了します。
+1 なら none を選択して実行を継続します。
+デフォルトは 0 です。
+
Specify the behavior when the driver which is selected by
+hostnet-driver is unusable;
+terminate the process if 0,
+or continue to run using the none driver if 1.
+The default is 0.
+- keyboard-connect = integer
+- 起動時にキーボードを本体に接続するかどうかを指定します。
+1 なら接続し、0 なら接続しません。デフォルトは 1 です。
+起動後はメニューから変更可能です。
+
Specify whether to connect keyboard on boot.
+If 1, it is connected; if 0, it isn't connected. The default is 1.
+You can change it on GUI menu after boot.
+- luna-adjust-misused-epoch = integer
+- LUNA で誤った RTC epoch を採用している OS 向けに RTC
+エミュレーションを補正するかどうかを
+指定します。0 なら補正をしません(実機と同じ動作)、
+1 なら補正します(現実世界と同じ動作)。
+デフォルトは 1 で、通常 1 のままで使用して問題ありません。
+
+Specifies whether nono corrects RTC emulation for OSes
+that adopts wrong RTC epoch on LUNA.
+0 means making no correction
+(this is the same behavior as the actual machine).
+1 means making correction
+(this is the same behavior as the real world).
+The default is 1. Normally, leave it 1.
+
+LUNA で採用している RTC (MK48T02) は2桁で保持している年の値が
+4 で割り切れる年をうるう年とする仕様です。
+ところが NetBSD/luna68k、OpenBSD/luna88k などはこの
+RTC の年の値を 1970年からの経過年として使用しています。
+例えば1970年はうるう年ではないため 2月28日の翌日は 3月1日ですが、
+MK48T02 的には 00年であるためうるう年と認識し 2月28日の翌日が2月29日になります。
+このように、これらの OS を使っている場合実機の
+RTC は4年のうち約2年間、1日ずれた日付を指しているようです。
+しかしながら、RTC の時刻は OS 起動時に一度読んだ後は基本的に参照しない上、
+今時必要なら NTP で時間を合わせるため、
+実機でも問題が顕在化することはまずないと思います。
+nono の場合は実機と異なり、アプリケーション実行中しか RTC が進まないため、
+補正がない場合の動作が問題になるのは
+nono を起動したまま偶数年の2月末日から日付をまたいで、
+かつ nono を起動したまま OS を再起動して NTP などで時刻修正を行わなかった時
+だけだと思います。
+このオプションはほぼ開発者向けの動作確認用です。
- luna-dipsw1 = string
- 本体前面 DIPSW#1-1..#1-8 の内容を指定します。
"0" を DOWN、"1" を UP として、
これを8つ並べた形式で、前から順に #1..#8 に対応します。
-デフォルトは 11110111 です。
+
Specifies status of the front panel DIPSW#1-1..#1-8 using 8 digit.
+"0" means DOWN and "1" means UP.
+The first character corresponds to #1 and
+the eighth character corresponds to #8.
+
+LUNA-I でのデフォルトは 11110111 です。
+各スイッチの内容は以下のリンクを参照してください。
+On LUNA-I, the default value is 11110111.
+See the following link about DIPSW.
+→ NetBSD/luna68k: Information
-各スイッチの内容はここ
-(NetBSD/luna68k: Information) を参照してください。
+LUNA-88K でのデフォルトは 11111111 です。
+各スイッチの内容は以下のリンクを参照してください。
+On LUNA-88K, the default value is 11111111.
+See the following link about DIPSW.
+→ OpenBSD manual pages: boot_luna88k(8)
- luna-dipsw2 = string
- 本体前面 DIPSW#2-1..#2-8 の内容を指定します。
書式は luna-dipsw1 と同じです。
デフォルトは 11111111 です。
-
-すべて "1"(UP) なら
-NetBSD/luna68k のブートローダは自動的にカーネルをロードして実行し、
-どれかでも "0"(DOWN) にするとプロンプトで停止するようです。
-(本当は #8 だけで制御するつもりだったんじゃないかという気がします)
+Specifies status of the front panel DIPSW#2-1..#2-8.
+The same syntax as luna-dipsw1 is used.
+The default value is 11111111.
+
+NetBSD/luna68k のブートローダは、
+DIPSW#2 が "11111111" なら自動的にカーネルをロードして実行し、
+どれかでも "0" にするとプロンプトで停止するようです。
+(本当は #8 だけで制御するつもりだったんじゃないかという気がします)
+NetBSD/luna68k bootloader will automatically load and execute the kernel,
+if the DIPSW#2 is "11111111".
+Otherwise, the bootloader will enter interactive mode.
+(I doubt that they actually wanted to switch with only #8)
+
+- luna-video-plane = integer
+- LUNA のビデオボードのプレーン数を 1 か 4 で指定します。
+1 ならモノクロビデオボード、
+4 なら16色 (4bpp) ビデオボードに相当します。
+8bpp ボードは(まだ?)サポートしていません。
+デフォルトは今の所 1 です (将来変更するかもしれません)。
+
Specify number of planes on LUNA video board.
+The valid values are 1 or 4.
+1 means a monochrome video board,
+4 means 16-color (4bpp) video board.
+Note that 8bpp video board is not (yet?) supported.
+The default value is 1 for now (It may be changed in the future).
+- monitor-rate = integer
+- テキスト系モニタウィンドウの更新頻度を Hz 単位で指定します。
+1 から 60 までの間で指定でき、デフォルトは 20Hz です。
+起動後にメニューからプリセットされた頻度には変更可能です。
+
Specifies refresh rate of all text monitor windows in Hz.
+It ranges from 1 to 60. The default is 20Hz.
+You can change this value on GUI menu after boot,
+but unlike this configuration value, there are only a few preset choices.
- mpu-clock = value
- MPU のクロック数を MHz 単位で指定します。
-デフォルトは 20MHz です。
-- prom-use-rom = integer
-- 外部 ROM イメージファイルを使うかどうかを指定します。
-0 なら使わない、1 なら使うです。
-デフォルトは 0 です。
+デフォルトは LUNA-I なら 20MHz、LUNA-88K なら 25MHz です。
+
Specifies the MPU clock in MHz.
+The default value is 20MHz on LUNA-I, or 25MHz on LUNA-88K.
+- mpu-pseudo-stop = integer
+- m88100 にて疑似 STOP 状態を有効にするかどうかを指定します。
+0 なら無効(実機と同じ動作)、1 なら有効で、デフォルトは 1 です。
+m88100 には、m68k の STOP 命令 (割り込みが上がるまで何もせず待つ)
+に相当する命令がなく、
+大抵ビジーウェイトループで割り込みが上がるのを待つことになります。
+これは実機では (消費電力を減らす手段がないという些細な問題以外には)
+何のデメリットもないのですが、
+エミュレータで特に高速動作させている時には割り込みが上がるまで
+(例えば人間がキーを入力するまで) ホスト CPU パワーを使い潰してビジーウェイトループを実行し続けることになり、ホスト CPU があっつあつになります。
+それを防ぐための機能です。
+特徴的な命令列を検出して実現しているので、すべての状況で動作するわけではありません。
+- prom-image = path
+- LUNA-I/LUNA-88K の外部 ROM イメージファイルのパスを指定します。
+path がファイル名のみなら VM ディレクトリとその親ディレクトリからこのファイル名を検索します。
+path が相対パスなら VM ディレクトリからの相対パスになります (現在のディレクトリからではありません)。
+空にすると内蔵 ROM を使用します。
+デフォルトは空です。
+
Specifies the LUNA-I/LUNA-88K's external ROM image file path.
+If the path does not have any path delimiters,
+the VM directory and then its parent directory will be searched.
+If the path is a relative path,
+it will be path from the VM directory, not from the current
+directory.
+If the path is empty, internal emulated ROM will be used.
+The default value is empty.
-実機を持っていない場合はこの値を 0 にしておくと、
+実機を持っていない場合はこの値を空に (= デフォルトのままに) しておくと、
nono 内蔵のなんちゃって下位互換 ROM で起動します。
+If you does not have the real LUNA machines,
+you can boot with nono's internal downward compatible emulated ROM
+if you set this field empty (or leave it as the default).
+
+LUNA-I 実機を持っている場合は
+ROM ファイルを指定することで実機 ROM で起動できます。
+ROM ファイルは実機の 0x41000000-0x4101ffff (128KB) を保存したものです。
+今のところ ROM は V4.22 (Thu Jul 27 11:45:42 1989) のみサポートしています。
+それ以外については何も分かりません。
+If you have the real LUNA-I machine,
+you can boot with the real ROM spcifying the ROM file path.
+The ROM file is extracted from 0x41000000-0x4101ffff (128KB) of
+the real LUNA-I machine.
+For now, only V4.22 (Thu Jul 27 11:45:42 1989) is supported.
+I have no idea about other ROMs.
+
+LUNA-88K 実機の場合は 0x41000000-0x4103ffff (256KB) を保存したものです。
+今のところ ROM は version 1.20 のみサポートしています。
+
+For LUNA-88K,
+the ROM file is extracted from 0x41000000-0x4103ffff (256KB).
+For now, only version 1.20 is supported.
+- ram-size = integer
+- 搭載する RAM サイズを MB 単位で指定します。
+LUNA-I のデフォルトは 16MB です。
+16MB 未満は 4MB 単位で、
+16MB 以上は 255MB まで 1MB 単位で指定できます
+(ちなみに NetBSD/luna68k の起動には最低でも 8MB 必要です)。
+LUNA-88K のデフォルトは 64MB です。
+64MB 未満は 16MB 単位で、
+64MB 以上は暫定で 255MB まで 1MB 単位で指定できます。
+
Specifies the RAM size in MB.
+On LUNA-I, the default is 16MB.
+If the size is less than 16MB, you can specify in 4MB unit.
+If larger, you can specify up to 255MB in 1MB unit.
+By the way, NetBSD/luna68k needs at least 8MB to boot.
+On LUNA-88K, the default is 64MB.
+If the size is less than 64MB, you can specify in 16MB unit.
+If larger, you can specify up to tentative 255MB in 1MB unit.
+- rtc-epoch-year = integer
+- RTC の基準年を指定します。
+デフォルトは 1970年です。
+NetBSD/luna68k、OpenBSD/luna88k はいずれも基準年を 1970年としていますので、
+デフォルトのままで構いません。
+ゲスト OS に 4.4BSD を使用する際は 1900 を指定します。
+
Specifies the RTC epoch year.
+The default is 1970.
+Since both NetBSD/luna68k and OpenBSD/luna88k use 1970 as epoch year,
+there is no need to touch this value.
+If you boot 4.4BSD on LUNA-I as the guest OS, specify 1900.
+- show-statuspanel = integer
+- ステータスパネルを表示するかどうかを指定します。
+0 なら非表示、1 なら表示です。
+起動後はメニューから変更可能です。
+
Specifies whether to display the status panel or not.
+If 0, it is hidden; if 1, it is shown.
+You can change it on GUI menu after boot.
+- spc0-idN-image = devtype[,path]
+- SCSI デバイスとイメージを指定します。キーの N には 0 から 7 が入ります。
+ただし ID 7 は本体が使用しますので指定しないでください。
+値はデバイス種別 devtype とディスクイメージパス path
+を ","(カンマ) で区切って並べた形式です。
+デバイス種別 devtype は以下のいずれかです。
+
+Specifies SCSI device and image. N in the key is 0 to 7.
+But don't specify ID 7 because the host uses it.
+The value is in a form of device type devtype and
+the disk image path path separated by ","(comma).
+devtype can be one of the following:
+
+- hd … HD drive
+
- cd … CD-ROM drive
+
- mo … MO drive
+
+
-実機を持っている場合は ROM ファイルを用意して
-この値を 1 にすると実機 ROM で起動できます。
-ROM ファイルは実機の 0x41000000-0x4101ffff (128KB) を PROM.DAT (大文字)
-という名前で保存したもので、VM ディレクトリに置きます。
-- spc0-idN-image = devtype,path
-- SCSI デバイスを指定します。N には 0 から 7 が入ります。
-ID 7 は本体が使用しますので指定しないでください。
-値はデバイス種別 devtype とイメージパス path
-を ","(カンマ) で区切って並べた形式で、
-今の所デバイス種別 devtype には "hd"(ハードディスク) のみ指定可能です。
-ディスクイメージパスが相対パスなら VM ディレクトリからの相対パスになります。
-
-例えば、nono.cfg と同じディレクトリに置いたディスクイメージ luna.img
-を使う場合、
-LUNA では通常 ID 6 をプライマリ HDD に割り当てるのでこんな感じになります。
+devtype が hd なら path は省略できません。
+devtype が cd か mo なら path は省略可能です。
+イメージパスが相対パスなら VM ディレクトリからの相対パスになります。
+
+If devtype is hd, path cannot be ommitted.
+If devtype is cd or mo, path can be ommitted.
+If the path is relative path, it is from the VM directory.
+
+
+例えば、nono.cfg と同じディレクトリに置いた sd0.img を
+起動 HDD ディスクイメージとして使い
+(LUNA では通常 ID 6 をプライマリ HDD に割り当てます)、
+ID 5 に同じディレクトリの install.iso をセットした CD ドライブを、
+ID 4 に起動時メディアなしの MO ドライブを接続する場合は次のようになります。
+For example, if you use a harddisk image sd0.img placed in the same
+directory as nono.cfg
+(LUNA usually assigns ID 6 to the primary HDD),
+ID 5 for CD-ROM drive that loads install.iso in the same directory,
+and ID 4 for MO drive without media on boot,
+write as following:
-spc0-id6-image = hd,luna.img
+spc0-id6-image = hd,sd0.img
+spc0-id5-image = cd,install.iso
+spc0-id4-image = mo
-- spc0-idN-writeprotect = integer
-- 指定の SCSI デバイスへの書き込みを無視するかどうか指定します。
+
- spc0-idN-seektime = integer
+- 指定の SCSI HDD の平均シークタイムを msec 単位で指定します。
+現在のデフォルトは 0 です (S・S・D!! S・S・D!!)。
+16 程度を指定すると幾分往時に思いを馳せることが出来るかもしれませんが、
+今の所あまり安定していません。
+
Specifies the average seek time of specified SCSI HDD in msec.
+Currently, the default value is 0
+(This may be something like SSD :-).
+If you specify about 16 or so, you can feel nostalgic,
+but this feature is still unstable.
+- spc0-idN-writeignore = integer
+- 指定の SCSI HD デバイスへの書き込みを無視するかどうか指定します。
0 なら通常動作(書き込みを行う)です。
1 なら書き込みコマンドは成功したように振る舞いますが実際には
ディスクイメージに一切書き戻しません。
fsck を気にせずカーネルのデバッグとかを行いたい場合にはどうぞ。
何が起きるか意味が分からない人は指定しないでください。
-デフォルトは 0 です。
+デフォルトは 0 です。
+Specifies whether nono ignores writing to SCSI HD devices.
+0 means normal operation (writes to the devices).
+If 1 is specified,
+nono will not actually write back to the disk image
+even though the write command is succeeded.
+nono's SCSI devices acts as
+write command is successfully done but it never writes back
+to the actual disk image.
+This is useful for kernel debugging because it does not require fsck
+after the kernel hangs.
+But don't use this flag if you don't understand this paragraph.
+The default value is 0.
+
+ちなみに、メディアを書き込み禁止にしたい場合はこれではなく、
+イメージファイルの書き込み権を落としてください。
+By the way, if you want to make the media write-protected,
+clear the write permission from the image file
+(instead of this setting).
+- spc0-idN-writeprotect = integer
+- 古いオプションです。
+代わりに spc0-idN-writeignore を使ってください。
+このオプションは開発用です。
+
Obsolete.
+Use spc0-idN-writeignore instead.
+This option is for developers.
-実行してみる Try it
+
+4. VM について About VM
+4.1. ステータスパネル Status Panel
+
+ステータスパネル中央にあるパフォーマンスメータのアイコンは
+高速モードの状態を表示しています。
+ダブルクリックすると高速/等速モードの指定を切り替えることができます。
+
The performance meter's icon at the center of the status panel
+shows the VM speed status.
+You can switch full speed / syncronized mode by double-clicking
+on this icon.
+
+
+
+| …
+ |
+マークなしの場合、ユーザが等速モードを指定していて、等速モードで実行中です。
+When no icons are displayed,
+the user has specified syncronized mode and
+the VM is running in synchronized mode.
+ |
+
+| …
+ |
+三角3つの場合、ユーザが高速モードを指定していて、高速モードで実行中です。
+高速モード中はパーセントではなく何倍速で動作しているかを表します。
+When an icon (three triangles) is displayed,
+the user has specified full speed mode and
+the VM is running in full speed mode.
+
+
+| …
+ |
+三角2つの場合、ユーザが高速モードを指定していて、等速モードで実行中です。
+以下のいずれかの状態で起きます。
+When an icon (two triangles) is displayed,
+the user has specified full speed mode and
+the VM is running in synchronized mode.
+This will happen when any of the following occurs:
+
+- キー押下中(後述)あるいはキーボードブザー発声中
+
When any keys are pressed (see below),
+or the keyboard buzzer is sounding.
+- STOP instruction on m68k.
+
- pseudo STOP state on m88k.
+
+ | | | | |
+
+
+4.2. キー入力モード Key input mode
+
+LUNA のキーボードは通常日本語キーボードです
+(英語キーボードも存在するようですが…)。
+そのため、ホストが日本語キーボードの場合とそうでない場合のために
+2つの入力モードを用意しています。
+どちらも一長一短があります。
+
Most LUNAs have the Japanese keyboard
+(though I ever heard there are the US keyboard...).
+So nono provides two input modes
+for Japanese keyboard users and non Japanese keyboard users.
+Both have advantages and disadvantages.
+
+JP キーボードモードは、ホストが日本語キーボードであることを前提に
+対応するキーの押下、開放をその都度 VM に入力します。
+メリットとしては動作が実機に近くなり、
+特にキーリピート(をハードウェアが行わないこと)も忠実に再現可能です。
+デメリットは ALT + TAB やアクセラレータキーでメニューを開く場合などに
+キー入力が残ることがあることです
+(キーを押した後でフォーカスが外れるとキーを離したことが
+アプリケーションに通知されないため)。
+またホストが日本語キーボードでなければ使いづらいです。
+JP keyboard mode assumes that the host uses the Japanese keyboard.
+Each time you presses and releases a key,
+nono sends the corresponding key-pressed or key-released to the VM.
+One advantage is that it's close to the real machine behavior,
+and another is that it can reproduce
+the LUNA keyboard itself does not perform a key repeat.
+On the other hand,
+one disadvantage is that key sometimes remains pressed,
+especially when you enter ALT + TAB to switch the application
+or enter accelerator key to open the menu
+(If the application loses the focus after the key is pressed,
+the application will not receive the subsequent key release).
+And another disadvantage is that
+it will be hard to use for non Japenese keyboard users.
+
+一方、キャラクタ入力モードは、ホストから入力された「文字」を
+再び LUNA のキーコードに解釈し直して VM に入力するモードです。
+例えばゲスト OS に "@" を入力したい場合、
+US キーボードなら [SHIFT] + [2] を、
+JP キーボードなら [@] キーを押しますが、
+どちらも VM には [@] キーの押下、[@] キーの開放が連続して送られます。
+US キーボードで [SHIFT] を押したことは通知されません。
+逆に "=" を入力したい場合、
+US キーボードなら [=] キーを、
+JP キーボードなら [SHIFT] + [-] を押しますが、
+どちらも VM には
+[SHIFT]押下 → [-]押下 → [-]開放 → [SHIFT]開放のシーケンスが送られます。
+このようにホストキーボードのレイアウトによらず、
+入力したい文字が入力できるようになり、
+通常のタイピングで困ることはないと思います。
+デメリットは、通常の文字入力以外のタイピングはほぼ出来ないことです。
+[SHIFT] キーを押したままにすることや、
+文字が入力できないキーの組み合わせは入力出来ません。
+もう一つのデメリットはキーリピート(をハードウェアが行わないこと)が再現できず、
+ホスト側のキーリピートが効いてしまうことです
+(本来キーリピートが動作しない ROM やブートローダでもキーリピートが効くことは
+一般ユーザからはメリットに感じられるかも知れませんが)。
+In contrast, in the character mode, when you type a character,
+nono re-converts it into the LUNA's key code and sends it to the VM.
+For example if you want to type "@" in the guest OS,
+you would press [SHIFT] + [2] on the US keyboard or [@] on the JP keyboard.
+In both cases, the sequence of
+[@]-pressed and [@]-released will be sent to the VM.
+Note that the fact that you pressed [SHIFT] key on the US keyboard
+will not be sent to the VM.
+Another example, if you want to type "=",
+you would press [=] on the US keyboard or [SHIFT] + [-] on the JP keyboard.
+In both cases, the sequence of
+[SHIFT]-pressed, [-]-pressed, [-]-released, and [SHIFT]-released
+will be sent to the VM.
+Thus, you can type what character you want to type,
+regardless of your keyboard layout.
+Of course there are some disadvantages.
+Firstly, it's hard to type any special characters,
+for example, you can not type any key conbinations
+that don't generate a character.
+Or you can not hold [SHIFT] key pressed.
+Secondly, the key repeat works (by the host),
+even though it should not work as a correct emulation
+(Although some of you may feel it an advantage).
+
+
+4.3. キャラクタ入力モードのキーコード対応表
+Keycode table in the character mode
+
+キャラクタ入力モードでの、ホストから入力した文字と
+VM に送信されるキーの対応は次の通りです。
+ファンクションキーとカーソルキーは文字ではありませんが
+特別に対応しています。
+HostChar が N/A で示してあるキーはソフトウェアキーボードからのみ入力できます。
+
The following table shows the correspondence between
+the character that typed from the host
+and the key that will be sent to the VM.
+nono can recognize the function keys and arrow keys.
+The keys where the HostChar is N/A can
+only be typed from the software keyboard window.
+
+
+
+
+| HostChar | GuestKey
+ |
|---|
| a 〜 z | [A] 〜 [Z]
+ |
| 0 〜 9 | [0] 〜 [9]
+ |
| SPACE | [SPACE]
+ |
| - | [-]
+ |
| ^ | [^]
+ |
| \ | [\]
+ |
| @ | [@]
+ |
| [ | [[]
+ |
| ; | [;]
+ |
| : | [:]
+ |
| ] | []]
+ |
| , | [,]
+ |
| . | [.]
+ |
| / | [/]
+ |
| ^@ | [CTRL]+[@]
+ |
| ^A 〜 ^Z | [CTRL]+[A] 〜 [CTRL]+[Z]
+ |
| ^[ | [ESC]
+ |
| ^\ | [CTRL]+[\]
+ |
| ^] | [CTRL]+[]]
+ |
| ^^ | [CTRL]+[^]
+ |
| ^_ | [CTRL]+[_]
+ |
| ^H | [BS]
+ |
| ^I | [TAB]
+ |
| ^M | [Enter]
+ |
+
+| HostChar | GuestKey
+ |
|---|
| A 〜 Z | [SHIFT]+[A] 〜 [SHIFT]+[Z]
+ |
| ! | [SHIFT]+[1]
+ |
| " | [SHIFT]+[2]
+ |
| # | [SHIFT]+[3]
+ |
| $ | [SHIFT]+[4]
+ |
| % | [SHIFT]+[5]
+ |
| & | [SHIFT]+[6]
+ |
| ' | [SHIFT]+[7]
+ |
| ( | [SHIFT]+[8]
+ |
| ) | [SHIFT]+[9]
+ |
| = | [SHIFT]+[-]
+ |
| ~ | [SHIFT]+[^]
+ |
| | | [SHIFT]+[\]
+ |
| ` | [SHIFT]+[@]
+ |
| { | [SHIFT]+[[]
+ |
| + | [SHIFT]+[;]
+ |
| * | [SHIFT]+[:]
+ |
| ] | [SHIFT]+[]]
+ |
| < | [SHIFT]+[,]
+ |
| > | [SHIFT]+[.]
+ |
| ? | [SHIFT]+[/]
+ |
| _ | [SHIFT]+[_]
+ |
+
+| HostChar | GuestKey
+ |
|---|
| F1 〜 F10 | [PF1] 〜 [PF10]
+ |
| ↑ | [↑]
+ |
| ← | [←]
+ |
| → | [→]
+ |
| ↓ | [↓]
+ |
| N/A | [確定]
+ |
| N/A | [前面]
+ |
| N/A | [CAP]
+ |
| N/A | [かな]
+ |
| N/A | [変換]
+ |
| N/A | [消去]
+ |
| N/A | [呼出]
+ |
| N/A | [文節←]
+ |
| N/A | [文節→]
+ |
| N/A | Numpad[0]〜[9]
+ |
| N/A | Numpad[+]
+ |
| N/A | Numpad[-]
+ |
| N/A | Numpad[*]
+ |
| N/A | Numpad[/]
+ |
| N/A | Numpad[=]
+ |
| N/A | Numpad[.]
+ |
| N/A | Numpad[Enter]
+ |
+
+
+
+4.4. JP キーボードモードのキーコード対応表
+Keycode table in the JP keyboard mode
-どこかに nono 用のディレクトリを用意し(例えば ~/nono/)、
+JP キーボードモードでの、ホストキーと VM に送信されるキーの対応は次の通りです。
+HostKey が N/A で示してあるキーは
+ソフトウェアキーボードからのみ入力出来ます。
+
The following table shows the correspondence between
+the host key and the guest key.
+The keys where the HostKey is N/A can only be enter from
+the software keyboard window.
+
+
+
+| HostKey | GuestKey
+ |
|---|
| [0] 〜 [9] | [0] 〜 [9]
+ |
| [A] 〜 [Z] | [A] 〜 [Z]
+ |
| [-] | [-]
+ |
| [^] | [^]
+ |
| [\] | [\]
+ |
| [@] | [@]
+ |
| [[] | [[]
+ |
| [;] | [;]
+ |
| [:] | [:]
+ |
| []] | []]
+ |
| [,] | [,]
+ |
| [.] | [.]
+ |
| [/] | [/]
+ |
| [_] | [_]
+ |
+
+| HostKey | GuestKey
+ |
|---|
| [ESC] | [ESC]
+ |
| [TAB] | [TAB]
+ |
| [CTRL] | [CTRL]
+ |
| [BS] | [BS]
+ |
| [Enter] | [Enter]
+ |
| [F1] 〜 [F10] | [PF1] 〜 [PF10]
+ |
| [DEL] | Numpad[DEL]
+ |
| Numpad[0]〜[9] | Numpad[0]〜[9]
+ |
| Numpad[+] | Numpad[+]
+ |
| Numpad[-] | Numpad[-]
+ |
| Numpad[*] | Numpad[*]
+ |
| Numpad[/] | Numpad[/]
+ |
| Numpad[=] | Numpad[=]
+ |
| Numpad[.] | Numpad[.]
+ |
| Numpad[Enter] | Numpad[Enter]
+ |
+
+| HostKey | GuestKey
+ |
|---|
| [SHIFT-L] | [SHIFT-L]
+ |
| [SHIFT-R] | [SHIFT-R]
+ |
| [↑] | [↑]
+ |
| [←] | [←]
+ |
| [→] | [→]
+ |
| [↓] | [↓]
+ |
| N/A | [確定]
+ |
| N/A | [前面]
+ |
| N/A | [CAP]
+ |
| N/A | [かな]
+ |
| N/A | [変換]
+ |
| N/A | [消去]
+ |
| N/A | [呼出]
+ |
| N/A | [文節←]
+ |
| N/A | [文節→]
+ |
+
+
+
+4.5. キーリピート Key Repeat
+
+LUNA では、キーボードがハードウェア側でキーリピートを行わず、
+ソフトウェア(OS など)がキーリピートの処理を行います。
+そのため、キーリピートを実装していない LUNA の PROM や
+NetBSD/luna68k のブートローダではキーリピートは起きず、
+キーリピートを実装している NetBSD/luna68k カーネルではキーリピートが起こせます。
+キーリピートを起こす間隔をゲストのソフトウェアが測定しているということは、
+VM が高速動作するとキーリピートもそれに合わせて発生することになり、
+これをホスト側から防ぐ手段はありません。
+そこで nono ではキー入力が発生している間
+(キーが一つでも押されてからキーが全て離されるまでの間)、
+高速モードが指示されていても VM を一時的に等速モードに落として実行します。
+上記のアイコンがそれを区別しているのはこのためです。
+そのため、何らかの理由でキーが入りっぱなしになった場合
+(ALT + TAB やアクセラレータキーでメニューを開くと起きがちです)
+高速モードが抑制されたままということが起きえます。
+その場合はソフトウェアキーボードからキー入力を解除するなどしてください。
+On LUNA,
+key repeat is done by software(OS), not by the keyboard hardware.
+For this reason,
+key repeat doesn't occur on LUNA's PROM or NetBSD/luna68k's bootloader
+that don't implement it, and
+key repeat occurs on NetBSD/luna68k kernel that implements it.
+Since the timing of key repeat is measured by the guest software,
+if the VM is running faster than the real,
+the key repeat will occur faster, too.
+The host application doesn't have the way to avoid it.
+Therefore, nono will temporarily suppress the full speed mode
+while any keys are pressed.
+That is why the above-mentioned icon distinguishes them.
+If keys continue to be pressed for some reasons,
+the VM also continues to run syncronized mode.
+In this case, you can resolve it by using the software keyboard window.
+
+
+
+
+5. 実行してみる Try it
+5.1. NetBSD/luna68k を実行してみる Try NetBSD/luna68k
+
+つついさんが NetBSD/luna68k 9.2 の liveimage を用意されています。
+
Tsutsui-san has provided a liveimage of NetBSD/luna68k 9.2.
+
+- https://twitter.com/tsutsuii/status/1436381589211017217
+
+ここではこれを起動してみます。
Let's try it.
+
+
+- どこかに nono 用のディレクトリを用意し(例えば ~/nono/)、
その中に VM ディレクトリを用意します (例えば ~/nono/luna/)。
-その中に設定ファイル nono.cfg を用意します。
-nono に -c オプションで VM ディレクトリを指定して起動します。
-これだけでたぶん起動して NVRAM.DAT ファイルが自動的に作られます。
-ROM モニタについては最低限なんとなく雰囲気似せてあるので
-再びこちら (NetBSD/luna68k: Information) 参照のこと。
-ここからどうやって NetBSD/luna68k をインストールするかについては待て次号。
-
-% mkdir -p ~/nono/luna/
-% echo "vmtype=luna" > ~/nono/luna/nono.cfg
-% path/to/nono -c ~/nono/luna
+Create a directory somewhere for nono (for example ~/nono/),
+and create subdirectories for individual VMs in it
+(for example ~/nono/luna/).
+
+
- 以下のリンクからイメージファイルをダウンロードして展開し、
+VM ディレクトリ ~/nono/luna/ に置きます。
+
Download imagefile from the following link,
+extract it and place it in the VM directory, ~/nono/luna/.
+
+http://teokurebsd.org/netbsd/liveimage/20210910-luna68k/
+
+
+ - 以下の内容の設定ファイル nono.cfg を VM ディレクトリ ~/nono/luna/
+に作成します。
+ここでは説明を簡単にするためネットワークなしにしていますが、
+ネットワーク設定は必要に応じて行ってください。
+
Create a configuration file nono.cfg in the VM directory, ~/nono/luna/,
+with following contents.
+By the way, to simplify the explanation, we assume there is no network here.
+However, please configure the network if necessary.
+
+vmtype = luna
+spc0-id6-image = hd,liveimage-luna68k-with-packages-20210910.img
+hostnet-driver = none
+
+
+ - nono -c ~/nono/luna で起動します
+(VM ディレクトリに自動的に NVRAM.DAT が作られます)。
+
Run as nono -c ~/nono/luna.
+(NVRAM.DAT will be created automatically in the VM directory)
+ - Emulated ROM Monitor が起動するので、
+初回は以下のように入力すると NetBSD が起動します。
+
The emulated ROM Monitor will be executed.
+Then, only for the first time,
+entering the following can boot NetBSD.
+
+k⏎
+⏎
+⏎
+d⏎
+boot⏎
+g⏎
+x⏎
+
+画面はこんな感じのはずです (太字が入力部分)。
+You will see a screen like this. The bold text indicates
+the characters you need to enter.
+
+NONO 0.3.0 Emulated ROM Monitor for LUNA-I
+
+** NVRAM Initialized.
+
+>k⏎
+controller: dk ?⏎
+drive unit: 0 ?⏎
+partition : c ?d⏎
+filename : vmunix ?boot⏎
+>g⏎
+Loaded. Entry point = $00700000
+>x⏎
+
+この内容は NVRAM.DAT に記録されているので次回以降は直接 NetBSD が起動します。
+The information you have just entered is recorded in the NVRAM,
+so next time it boots NetBSD automatically.
+ - 初回起動時、
+Updating fontconfig cache はあほみたいに時間がかかりますが、
+nono がハングアップしてるわけではありません(>_<)。
+また初回ログイン時めちゃくちゃ重たいですが、
+これはバックグラウンドで makemandb が動くためで
+nono のせいではありません(>_<)。
+
At the first boot, you will see the console stops after printing
+"Updating fontconfig cache".
+This is because the infamous fontconfig takes very looooong time.
+nono would not have hang-up.
+In addition, after the first login, you will feel it's too heavy.
+This is because the infamous makemandb(8) runs heavily in the background
+for a looooong time.
+It's very sad to me that these two accidents which are far from the ideal
+are the first experiences of newcomers.
+
+ - 終了する時は root
+ユーザで “shutdown -p now” を実行してください。
+LUNA はソフトウェアから電源オフでき、
+VM の電源オフで nono も終了します。
+
To quit, type “shutdown -p now” as the root user.
+LUNA can be powered off by software,
+and nono will terminate when the VM is powered off.
+
+
+
+5.2. OpenBSD/luna88k を実行してみる Try OpenBSD/luna88k
+
+あおやまさんが OpenBSD/luna88k 7.0 の liveimage を用意されています。
+
Aoyama-san has provided a liveimage of OpenBSD/luna88k 7.0.
+
+- https://twitter.com/ao_kenji/status/1473611893386661888
+
+ここではこれを起動してみます。
Let's try it.
+
+
+- どこかに nono 用のディレクトリを用意し(例えば ~/nono/)、
+その中に VM ディレクトリを用意します (例えば ~/nono/luna88k/)。
+
Create a directory somewhere for nono (for example ~/nono/),
+and create subdirectories for individual VMs in it
+(for example ~/nono/luna88k/).
+
+ - 以下のリンクから liveimage-luna88k-raw-20211221.img.gz
+をダウンロードして展開し、
+VM ディレクトリ ~/nono/luna88k/ に置きます。
+
Download liveimage-luna88k-raw-20211221.img.gz from the following link,
+extract it and place it in the VM directory, ~/nono/luna88k/.
+
+http://www.nk-home.net/~aoyama/liveimage/
+
+
+ - 以下の内容の設定ファイル nono.cfg を VM ディレクトリ ~/nono/luna88k/
+に作成します。
+ここでは説明を簡単にするためネットワークなしにしていますが、
+ネットワーク設定は必要に応じて行ってください。
+
Create a configuration file nono.cfg in the VM directory, ~/nono/luna88k/,
+with following contents.
+By the way, to simplify the explanation, we assume there is no network here.
+However, please configure the network if necessary.
+
+vmtype = luna88k
+spc0-id6-image = hd,liveimage-luna88k-raw-20211221.img
+hostnet-driver = none
+ - nono -c ~/nono/luna88k で起動します
+(VM ディレクトリに自動的に NVRAM.DAT が作られます)。
+
Run as nono -c ~/nono/luna88k.
+(NVRAM.DAT will be created automatically in the VM directory)
+ - Emulated ROM Monitor が起動するので、
+初回は以下のように入力すると OpenBSD が起動します。
+
The emulated ROM Monitor will be executed.
+Then, only for the first time,
+entering the following can boot OpenBSD.
+
+nvram boot_filename boot⏎
+y
+b⏎
+
+画面はこんな感じのはずです (太字が入力部分)。
+You will see a screen like this. The bold text indicates
+the characters you need to enter.
+
+NONO 0.3.0 Emulated ROM Monitor for LUNA88K
+
+** NVRAM Initialized.
+
+N>nvram boot_filename boot⏎
+Update boot_filename : "vmunix" -> "boot" (Y/[N]):y
+Updated
+N>b⏎
+
+この内容は NVRAM.DAT に記録されているので次回以降は直接 OpenBSD が起動します。
+The information you have just entered is recorded in the NVRAM,
+so next time it boots OpenBSD automatically.
+
+ - 終了する時は root
+ユーザで “shutdown -p now” を実行してください。
+LUNA-88K はソフトウェアから電源オフでき、
+VM の電源オフで nono も終了します。
+
To quit, type “shutdown -p now” as the root user.
+LUNA-88K can be powered off by software,
+and nono will terminate when the VM is powered off.
+
-ネットワーク設定 Setup network
+
+
+6. ネットワーク設定例 Example of network setup
-設定ファイルに
+wm0 を持つ NetBSD ホストに tap(4) デバイスを用いて
+nono のゲスト OS を接続する場合の設定例です。
+
+-
+設定ファイル nono.cfg に以下の行を追加します
+(と言いつつ NetBSD では書かなくてもデフォルトでこの動作になりますが)
+
Add the following line to configuration file, nono.cfg.
+(Although you don't need to write it since these are default behavior
+on NetBSD)
-ethernet-hostdriver = tap
+hostnet-driver = tap
+hostnet-tap-devpath = auto
-を追加し、VM ディレクトリに nono-ifup、nono-ifdown
-というスクリプトを用意してください。
-nono は tap(4) をオープンし、
-そのデバイス名を引数にこれらのスクリプトを呼びます。
-
-最もシンプルなケースだとおそらく
+
+
- デフォルトでは /dev/tap は一般ユーザからアクセスできないので、
+chmod で適当にパーミッションを与えます。
+番号の付いていないほうの /dev/tap だけでいいです。
+sysinst 等で OS をアップグレードするとパーミッションが 600
+に戻るのがハマりポイントです。
+
By default, /dev/tap is only accessible to privileged user.
+You need to chmod /dev/tap (without unit number) appropriately.
+Note that upgrading using sysinst always reset the permission to 600.
+
+ - bridge(4) インタフェースを作成し、
+ホストの外部(物理)インタフェースをブリッジに追加しておきます。
+
Create a bridge(4) interface, and
+add your physical interface to the bridge.
-# brconfig bridge0 create
+# ifconfig bridge0 create
# brconfig bridge0 add wm0
-のようにして用意しておいた bridge0 に対して、
-(sudo の設定は別途行ってから)
-次のような nono-ifup、nono-ifdown を用意すれば
-wm0 の物理セグメントとブリッジできると思います。
+常用するなら /etc の設定ファイルに書いておきましょう。
+If you use it regularly,
+you can put configuration file into /etc.
+
+/etc/ifconfig.bridge0
+
+create
+up
+!/sbin/brconfig $int add wm0
+
+
+# /etc/rc.d/network restart
+
+
+ -
+一般ユーザに戻って、
+VM ディレクトリかその親ディレクトリに
+次のような 2つのスクリプトを用意します。
+nono は tap(4) をオープンし、
+そのデバイス名を引数にこれらのスクリプトを呼びます。
+sudo の設定は別途行ってください。
+
Return to non-privileged user, and
+create following two scripts in the VM directory or its parent directory.
+nono will open tap(4) and
+invoke these scripts with the name of the device as an argument.
+In addition, you need to set up sudo separately.
nono-ifup
#!/bin/sh
-sudo ifconfig $1 up
-sudo brconfig bridge0 add $1
+sudo /sbin/ifconfig $1 up
+sudo /sbin/brconfig bridge0 add $1
-nono-ifup
+nono-ifdown
#!/bin/sh
-sudo brconfig bridge0 delete $1
-sudo ifconfig $1 down
+sudo /sbin/brconfig bridge0 delete $1
+sudo /sbin/ifconfig $1 down
+
+% chmod +x nono-ifup nono-ifdown
+
+
+ - nono を起動し、
+メニューの「モニタ > ホスト > ホストネットワーク」を開いて
+HostNet Driver: tap になっていれば動いてるはずです。
+
Run nono,
+and open "Monitor > Host > Host Network" window from menu.
+It's OK if you can see "HostNet Driver: tap".
+
+
+
+
+
+
+7. 既知の問題 Known Issues
+
+
+- デバッガのコンソール入力で、
+バックスペースやカーソルキーの入力に対する表示が動作していません。
+
In debugger console, some special characters like backspace or cursor keys
+aren't printed correctly.
+(since ver 0.3.0)
+ - ホストが VirtualBox (on Windows?) で、
+VirtualBox の「マウス統合」が有効にしている場合、
+nono の「マウスモード」でマウスポインタが正しく移動しません。
+
If the host OS is running on VirtualBox (on Windows?) and
+"Mouse integration" on VirtualBox is enabled,
+the mouse pointer will not move as expected in nono's Mouse Mode.
+(2021/12/30)
+
+ - Wayland の場合にウィンドウサイズが正しく設定されない場合があります。
+wxWidgets (3.0.5) のバグと思われます。
+
On Wayland, window size may be incorrect.
+This may be due to wxWidgets (3.0.5) bug.
+(2021/12/30)
+
+ - メインウィンドウの中央付近に nono のサブウィンドウや他のウィンドウが存在する場合、マウスモードに入れません。
+
If there are nono's sub windows or other windows near the center of
+the main window, you will not enter the mouse mode.
(since ver 0.0.2)
+
+
+
+
+
+8. 過去のバージョンからの移行方法 How to migrate from old versions
+
+バージョンアップに伴い設定ファイル等に非互換が発生する場合があります。
+その場合は以下の移行方法を参照して設定ファイル等を更新してください。
+
Some versions may have incompatibilities in the configuration files, etc.
+In such case, you may need to upgrade it by referring the following link.
+
+
+
+
+9. 変更履歴 Changes
+
+
+
+10. 連絡先、ライセンス等 Contact, License, etc
+
+10.1. ライセンス License
+
+
+10.2. 連絡先 Contact us
+
+バグ報告などは以下にお願いします。日本語でおk。
+
If you find any problems, please let me know.
+You may write in English.
+
https://github.com/isaki68k/nono-issue/issues
+10.3. パッチの提供について About contributes
+
+パッチを提供してくださる場合は以下に同意したものとします。
+
If you provide a patch to nono, we assume that you agree the following
+conditions:
+
+- 成果物が nono のライセンスに従って運用あるいは配布されること。
+
All your work are operated or distributed under the nono license.
+ - ライセンスが将来変わる可能性があること。
+
The license may be changed in the future.
+ - 著作部分に関して著作者人格権を行使しないこと。
+
Do not exercise your author's rights.
+
+
+
+10.4. Acknowledgements
+
+nono は以下の広告条項を含むソースコードを利用しています。
+
nono uses source code with the following advertising clause.
+
+This product includes software developed by Gordon Ross
+This product includes software developed by the University of California, Lawrence Berkeley Laboratory.
+
+
-注意 Note
-まだアルファリリースなので、
-すべての仕様は今後互換性なく変更するかも知れません。
-This is alpha quality release.
-All specifications on this page may be changed
-without compatibility in the near future.
-isaki@NetBSD.org
+nono project