+ビルド方法
How to build
+コマンドラインオプション
Command Line Option
+設定
Configuration
+VM について
About VM
+実行してみる
Try it
+ネットワーク設定
Setup network
+変更履歴
Changes
+連絡先、ライセンス等
Contact, License, etc
+
--- nono/doc/index.php 2026/04/29 17:04:30 1.1 +++ nono/doc/index.php 2026/04/29 17:04:51 1.1.1.7 @@ -1,3 +1,8 @@ + -
- -nono is OMRON LUNA-I emulator runs on NetBSD and so on.- +
nono is OMRON LUNA-I emulator runs on NetBSD and etc.+
+
How to build
Command Line Option
Configuration
About VM
Try it
Setup network
Changes
Contact, License, etc
Introduction
+nono is OMRON LUNA-I emulator runs on NetBSD and etc. +LUNA88K is still experimental support. ++
How to build
The followings are required for build. +If you use NetBSD(pkgsrc), +wxWidgets is pkgsrc/x11/wxGTK30 (OPTIONS:gtk3 is tested).+
+(NetBSD 以外でのビルドはサポートしていませんが)
+Ubuntu 18.04 ではたぶん以下のパッケージが必要です。
+You may need the following packages on Ubuntu 18.04
+(though we won't support non-NetBSD platform).
+
+アーカイブを展開したら以下のようにビルドします。
+configure には環境変数 CC、CXX でコンパイラを指定することが出来ます。
+また wx-config が標準的な名前で提供されていないために見付けられない場合には
+環境変数 WX_CONFIG にパスを指定することが出来ます。
+Extract the 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.
-まだ make install はないです。 -wx/nono が GUI 版実行ファイル、 -cli/nono-cli がコマンドライン版です。 + +% ./configure % make depend % make +% su +# make install
+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
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. +If this option is specified at the same time as +prom-image in configuration file, +this option preceeds. +_EOM_ ); -option_item("-c vmdir", <<<_EOM_ -VM ディレクトリを指定します。省略するとカレントディレクトリとします。 +option_item("-c vmpath", <<<_EOM_ +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. +_EOM_ ); option_item("-f", <<<_EOM_ 高速モードで起動します。 GUI なら起動後にもメニューから変更できますが、その初期値を変えるだけです。 +
Boot as the fast mode. +You can change this mode on GUI menu after boot, +and the option only changes its initial state. +_EOM_ ); option_item("--fontsize height", <<<_EOM_ GUI 版のみ。 全サブウインドウの起動時のフォントサイズを指定します。 -height には 12, 16, 24 +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. +_EOM_ ); @@ -162,27 +229,41 @@ GUI 版のみ。 任意倍率は起動時のみ指定可能です (そのうちなんとかしたい)。 デフォルトは 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_EOM_ ); option_item("--show-config", <<<_EOM_ 設定ファイルと -V オプションを読み込んだ結果を表示します。 +
Shows the result of reading configuration file and +parsing -V options._EOM_ ); option_item("-v", <<<_EOM_ バージョンを表示します。 +
Shows the version._EOM_ ); option_item("-V name=value", <<<_EOM_ -設定ファイルの内容を個別に上書きします。 +設定ファイルで指定した name=configvalue の代わりに +このオプションの name=value を適用します。 +
Use this name=value +instead of name=configvalue specified in configuration file. +_EOM_ ); ?>
For developers:
Configuration
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. +And, blank lines, lines beginning with "#", and +lines with unrecognized key are also ignored. +
設定項目は次の通りです。
+The configuration items are:
Specifies the VM type from the following. +This field is mandatory. ++
| luna | … LUNA-I + | |
| luna88k | … LUNA88K (experimental) + |
Specifies the TCP port number that debugger listens. +If 0, it will not listen. +The default is 0._EOM_ ); @@ -268,7 +371,39 @@ config_item("ethernet-hostdriver = st none、tap、bpf が指定できます。 none ならホスト側とは一切通信を行いません。 tap か bpf かはホスト OS によってビルド時に決定します。 -NetBSD なら tap です。 +NetBSD、OpenBSD、FreeBSD、Linux なら tap です。 +
Specifies the host driver of ethernet device. +none, tap and bpf can be specified. +If none, it doesn't make any communication with the host. +tap or bpf is determined at build time for the host OS. +If the host is NetBSD, OpenBSD, FreeBSD, or Linux, it's tap.+_EOM_ +); + +config_item("ethernet-hostdevice = string", <<<_EOM_ +イーサネットデバイスのホスト側のデバイス名を指定します。 +ethernet-hostdriver が tap の場合ここには +tap デバイスを(フルパスで)指定します。 +
Specifies the host device name of ethernet device. +If ethernet-hostdriver is tap, +this field specifies the full path to the tap device.+
+デフォルトは auto で、この場合の動作はホスト OS ごとに異なります。
+Linux なら "/dev/net/tun" を指定したのと同じです。
+OpenBSD なら /dev/tap0 から /dev/tap9 まで
+順番にオープンできるまで試します。
+NetBSD (と FreeBSD) ならまず /dev/tap でクローニングを試み、
+それが失敗すれば /dev/tap0 から /dev/tap9 までを
+順番にオープンできるまで試します。
+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.
+
_EOM_
);
@@ -285,11 +420,24 @@ config_item("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) を参照してください。
+LUNA88K でのデフォルトは 11111111 です。
+各スイッチの内容は以下のリンクを参照してください。
+On LUNA88K, the default value is 11111111.
+See the following link about DIPSW.
+→ OpenBSD manual pages: boot_luna88k(8)
_EOM_
);
@@ -297,35 +445,121 @@ config_item("luna-dipsw2 = string
本体前面 DIPSW#2-1..#2-8 の内容を指定します。
書式は luna-dipsw1 と同じです。
デフォルトは 11111111 です。
-
-すべて "1"(UP) なら
-NetBSD/luna68k のブートローダは自動的にカーネルをロードして実行し、
-どれかでも "0"(DOWN) にするとプロンプトで停止するようです。
+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)
+
+
+_EOM_
+);
+
+config_item("monitor-rate = integer", <<<_EOM_
+テキスト系モニタウィンドウの更新頻度を 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.
+
_EOM_
);
config_item("mpu-clock = value", <<<_EOM_
MPU のクロック数を MHz 単位で指定します。
-デフォルトは 20MHz です。
+デフォルトは LUNA-I なら 20MHz、LUNA88K なら 25MHz です。
+Specifies the MPU clock in MHz.
+The default value is 20MHz on LUNA-I, or 25MHz on LUNA88K.
_EOM_
);
/* luna には不要
config_item("mpu-has-fpu", ""); */
-config_item("prom-use-rom = integer", <<<_EOM_
-外部 ROM イメージファイルを使うかどうかを指定します。
-0 なら使わない、1 なら使うです。
-デフォルトは 0 です。
+config_item("prom-image = path", <<<_EOM_
+LUNA-I/LUNA88K の外部 ROM イメージファイルのパスを指定します。
+path がファイル名のみなら VM ディレクトリとその親ディレクトリからこのファイル名を検索します。
+path が相対パスなら VM ディレクトリからの相対パスになります (現在のディレクトリからではありません)。
+空にすると内蔵 ROM を使用します。
+デフォルトは空です。
+Specifies the LUNA-I/LUNA88K'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.
+
+実機を持っていない場合はこの値を空に (= デフォルトのままに) しておくと、
+nono 内蔵のなんちゃって下位互換 ROM で起動します(現状 LUNA-I のみ)。
+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).
+For now, it's only for LUNA-I.
+
-実機を持っていない場合はこの値を 0 にしておくと、
-nono 内蔵のなんちゃって下位互換 ROM で起動します。
+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.
+
-実機を持っている場合は ROM ファイルを用意して
-この値を 1 にすると実機 ROM で起動できます。
-ROM ファイルは実機の 0x41000000-0x4101ffff (128KB) を PROM.DAT (大文字)
-という名前で保存したもので、VM ディレクトリに置きます。
+LUNA88K 実機の場合は 0x41000000-0x4103ffff (256KB) を保存したものです。
+ただし現状サポートしていません。
+
+For LUNA88K,
+the ROM file is extracted from 0x41000000-0x4103ffff (256KB).
+However, it's not supported yet.
+
+_EOM_
+);
+
+config_item("ram-size = integer", <<<_EOM_
+搭載する RAM サイズを MB 単位で指定します。
+LUNA-I のデフォルトは 16MB です。
+16MB 未満は 4MB 単位で、
+16MB 以上は 255MB まで 1MB 単位で指定できます
+(ちなみに NetBSD/luna68k の起動には最低でも 8MB 必要です)。
+LUNA88K のデフォルトは 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 LUNA88K, 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.
+
+_EOM_
+);
+
+config_item("show-statuspanel = integer", <<<_EOM_
+ステータスパネルを表示するかどうかを指定します。
+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.
+
_EOM_
);
@@ -336,16 +570,43 @@ ID 7 は本体が使用しますので
を ","(カンマ) で区切って並べた形式で、
今の所デバイス種別 devtype には "hd"(ハードディスク) のみ指定可能です。
ディスクイメージパスが相対パスなら VM ディレクトリからの相対パスになります。
+
+Specifies SCSI device. N 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 image path path separated by ","(comma).
+For now, only "hd" (hard disk) can be specified for devtype.
+If the path is relative path, it is from the VM directory.
+
+
例えば、nono.cfg と同じディレクトリに置いたディスクイメージ luna.img
を使う場合、
LUNA では通常 ID 6 をプライマリ HDD に割り当てるのでこんな感じになります。
+For example, if you use disk image luna.img placed in the same
+directory as nono.cfg,
+since LUNA usually assigns ID 6 to the primary HDD,
+write as following:
_EOM_ ); +config_item("spc0-idN-seektime = integer", <<<_EOM_ +指定の SCSI HDD の平均シークタイムを msec 単位で指定します。 +現在のデフォルトは 0 です (S・S・D!! S・S・D!!)。 +16 程度を指定すると幾分往時に思いを馳せることが出来るかもしれませんが、 +今の所あまり安定していません。 +spc0-id6-image = hd,luna.img
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. ++_EOM_ +); + config_item("spc0-idN-writeprotect = integer", <<<_EOM_ 指定の SCSI デバイスへの書き込みを無視するかどうか指定します。 0 なら通常動作(書き込みを行う)です。 @@ -354,6 +615,19 @@ config_item("spc0-idN-writeprotec fsck を気にせずカーネルのデバッグとかを行いたい場合にはどうぞ。 何が起きるか意味が分からない人は指定しないでください。 デフォルトは 0 です。 +
Specifies whether nono ignores writing to SCSI 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. +_EOM_ ); @@ -363,74 +637,292 @@ _EOM_
About VM
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.+
+ | …
+ |
+三角2つの場合、ユーザが高速モードを指定していて、等速モードで実行中です。
+キー入力中(後述)または VM がアイドル状態(m68k の STOP 命令)などで起きます。
+ | 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 during keystrokes or when the VM is idle +(STOP instruction on m68k). ++
+ | …
+ |
+三角3つの場合、ユーザが高速モードを指定していて、高速モードで実行中です。
+ | When an icon (three triangles) is displayed, +the user has specified full speed mode and +the VM is running in full speed mode. + |
Key input
+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 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. +For this reason, +if keys continue to be pressed for some reason, +the VM also continues to run syncronized mode. +In this case, you can resolve it by using the software keyboard window. ++
Try it
Tsutsui-san has provided NetBSD/luna68k 9.0 liveimage for this +(Thanks as always).+
+-% 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/).+
Download imagefile from the following link, +extract it and place it in the VM directory, ~/nono/luna/.+
+http://teokurebsd.org/netbsd/liveimage/20200518-luna68k/ ++ +
Create a configuration file nono.cfg in the VM directory, ~/nono/luna/, +with following contents:+
++vmtype = luna +spc0-id6-image = hd,liveimage-luna68k-raw-20200518.img +
Run as nono -c ~/nono/luna. +(NVRAM.DAT will be created automatically in the VM directory)+
The emulated ROM Monitor will be executed. +Then, only for the first time, +entering the following can boot NetBSD.+
+この内容は NVRAM.DAT に記録されているので次回以降は直接 NetBSD が起動します。 ++k +[Enter] +[Enter] +d +boot +g +x +
The information you have just entered is recorded in the NVRAM, +so next time it boots NetBSD automatically.+
Setup network
Add the following line to configuration file, nono.cfg.
-を追加し、VM ディレクトリに nono-ifup、nono-ifdown -というスクリプトを用意してください。 +次に VM ディレクトリかその親ディレクトリに nono-ifup、nono-ifdown +というスクリプトを用意します。 nono は tap(4) をオープンし、 そのデバイス名を引数にこれらのスクリプトを呼びます。 +ethernet-hostdriver = tap
Then, prepare two scripts named nono-ifup and nono-ifdown +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.
-最もシンプルなケースだとおそらく
+例えば、NetBSD ホストで、ホストの wm0 セグメントに nono のゲスト OS を接続する場合、
+For example, if you want to connect guest OS to host's wm0 segment
+on NetBSD,
+
By default, /dev/tap is only accessible to privileged user. +You need to chmod /dev/tap (without unit number) appropriately.+sysinst 等で OS をアップグレードするとパーミッションが 600 +に戻るのがハマりポイントです。 + +
Create a bridge(4) interface, and +add your physical interface to the bridge.
-のようにして用意しておいた bridge0 に対して、 -(sudo の設定は別途行ってから) -次のような nono-ifup、nono-ifdown を用意すれば -wm0 の物理セグメントとブリッジできると思います。 - +常用するなら設定ファイルに書いておきましょう。 +-# brconfig bridge0 create +# ifconfig bridge0 create # brconfig bridge0 add wm0
If you want to use this all the time, +you can put configuration file into /etc.+
+/etc/ifconfig.bridge0 ++ ++create +up +!/sbin/brconfig $int add wm0 +++# /etc/rc.d/network restart ++
Return to non-privileged user, and +create following two scripts in the VM directory or its parent directory. +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
Run nono, +and open "Monitor > Host > Host Network" window from menu. +It's OK if you can see "NetDriver: BSD tap" (in this case).+ +
Note
This is alpha quality release. -All specifications on this page may be changed -without compatibility in the near future.+ +
Changes
License
Contact us
If you find any problems, please let me know. +You may write in English.
About contributes
If you provide a patch to nono, you must agree to the following conditions: ++
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.+
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.
+