--- nono/doc/index.php 2026/04/29 17:04:30 1.1 +++ nono/doc/index.php 2026/04/29 17:04:40 1.1.1.4 @@ -1,3 +1,8 @@ + - - -nono document - - +

nono

nono は NetBSD とかで動作する OMRON LUNA-I とかのエミュレータです。 -nono is OMRON LUNA-I emulator runs on NetBSD and so on. - +nono is OMRON LUNA-I emulator runs on NetBSD and etc.
+ +

はじめに Introduction

+
+nono は NetBSD とかで動作する OMRON LUNA-I とかのエミュレータです。 +LUNA88K は実験的サポートです、まだ動きません。 + +nono is OMRON LUNA-I emulator runs on NetBSD and etc. +LUNA88K is still experimental support and it does not work yet. + +
+

ビルド方法 How to build

-NetBSD/amd64-9.0 の場合以下のパッケージが必要です。 +ビルドには以下が必要です。The following are required for build. - - -アーカイブを展開したら以下のようにします。 + +wxWidgets は NetBSD(pkgsrc) なら +pkgsrc/x11/wxGTK30 (OPTIONS:gtk2 推奨) です。 +If you use NetBSD(pkgsrc), +wxWidgets is pkgsrc/x11/wxGTK30 (OPTIONS:gtk2 is recommended). +

+アーカイブを展開したら以下のようにビルドします。 +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.

 % ./configure
 % make depend
 % make
+% su
+# make install
 
-まだ make install はないです。 -wx/nono が GUI 版実行ファイル、 -cli/nono-cli がコマンドライン版です。 + + + +

+2つの実行ファイルがインストールされます。 +nono が GUI 版実行ファイル、 +nono-cli がコマンドライン版です。 +Two executables will be installed. +nono is GUI executable and nono-cli is +command line executable.

@@ -127,30 +124,54 @@ function option_item($name, $desc) option_item("-A file", <<<_EOM_ ホストの file をロードして実行します。 +file が相対パスの場合カレントディレクトリからのパスになります。 ファイルが gzip 圧縮されていれば自動的に展開します。 (展開後の) ファイル形式は a.out (OMAGIC) か ELF で、 実際にはブートローダとカーネル程度しか想定していません。 -設定ファイルの prom-use-rom=1 とともに指定されると +設定ファイルの prom-image とともに指定されると -A のほうが優先します。 +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 ディレクトリを指定します。省略するとカレントディレクトリとします。 +Specifies the VM directory. If omitted, the current directory is used. _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 +183,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:
{$desc}\n"; } -option_dev("-b hexaddr", <<<_EOM_ +option_dev("-b hexaddr[,skipcount]", <<<_EOM_ デバッガのブレークポイントを 16進数で指定します。 _EOM_ ); @@ -226,6 +261,7 @@ _EOM_ option_dev("-M name[,name2,...]", <<<_EOM_ 起動時に表示するモニタウィンドウを指定します。 カンマで区切って複数指定することも出来ます。 +-Mhelp で name の一覧を表示します。 _EOM_ ); @@ -241,8 +277,15 @@ VM の設定ファイルはその VM デ keyvalue の前後の空白は取り除かれます。 また空行と "#" で始まる行は無視します。 知らないキーの行も無視します。 +VM configuration file is nono.cfg 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:

string", <<<_EOM_ -VM 種別を指定します。今の所 string に -指定できるのは luna (LUNA-I) だけですが、省略不可です。 +VM 種別を以下のいずれかから指定します。 +省略不可です。 +Specifies the VM type from the following. +This field is mandatory. + + +
 luna … LUNA-I +
luna88k … LUNA88K (experimental) +
_EOM_ ); config_item("debugger-port = integer", <<<_EOM_ デバッガの TCP 待ち受けポート番号を指定します。 0 なら待ち受けを行いません。 -デフォルトは 9999 です(適当)。 +デフォルトは 0 です。 +Specifies the TCP port number that debugger listens. +If 0, it will not listen. +The default is 0. _EOM_ ); @@ -285,11 +338,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 +363,95 @@ 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 です。 +Specifies the MPU clock in MHz. The default value is 20MHz. _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.

-実機を持っていない場合はこの値を 0 にしておくと、 -nono 内蔵のなんちゃって下位互換 ROM で起動します。 +実機を持っていない場合はこの値を空に (= デフォルトのままに) しておくと、 +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. +

-実機を持っている場合は ROM ファイルを用意して -この値を 1 にすると実機 ROM で起動できます。 -ROM ファイルは実機の 0x41000000-0x4101ffff (128KB) を PROM.DAT (大文字) -という名前で保存したもので、VM ディレクトリに置きます。 +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. + +

+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 単位で指定します。 +デフォルトは 16MB です。 +Specifies the RAM size in MB. The default is 16MB. _EOM_ ); @@ -336,16 +462,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:

 spc0-id6-image = hd,luna.img
 
_EOM_ ); +config_item("spc0-idN-seektime = integer", <<<_EOM_ +指定の 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. + +_EOM_ +); + config_item("spc0-idN-writeprotect = integer", <<<_EOM_ 指定の SCSI デバイスへの書き込みを無視するかどうか指定します。 0 なら通常動作(書き込みを行う)です。 @@ -354,6 +507,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_ ); @@ -365,36 +531,79 @@ _EOM_

実行してみる Try it

-どこかに nono 用のディレクトリを用意し(例えば ~/nono/)、 +つついさんが NetBSD/luna68k 9.0 の liveimage を用意してくださっています +(いつもありがとうございます)。 +Tsutsui-san has provided NetBSD/luna68k 9.0 liveimage for this +(Thanks as always). +
+
    +
  1. どこかに 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 subdirectory for individual VMs in it (for example ~/nono/luna). +
  2. 以下のリンクからイメージファイルをダウンロードして展開し、 +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/20200518-luna68k/ +
    + +
  3. 同じく VM ディレクトリに設定ファイル nono.cfg を以下の内容で用意します。 +Create a configuration file nono.cfg in the same VM directory, ~/nono/luna, +with following contents: +
    +vmtype = luna
    +spc0-id6-image = hd,liveimage-luna68k-raw-20200518.img
    +
    +
  4. nono -c ~/nono/luna で起動します +(VM ディレクトリに自動的に NVRAM.DAT が作られます)。 +Run as nono -c ~/nono/luna. +(NVRAM.DAT will be created automatically in the VM directory) +
  5. Emulated ROM Monitor が起動するので、 +初回は以下のように入力すると NetBSD が起動します。 +The emulated ROM Monitor will be executed. +Then, only for the first time, +entering the following can boot NetBSD. +
    +k
    +[Enter]
    +[Enter]
    +d
    +boot
    +g
    +x
    +
    +この内容は NVRAM.DAT に記録されているので次回以降は直接 NetBSD が起動します。 +The information you have just entered is recorded in NVRAM, +so next time it boots NetBSD automatically. +
+

+元ツイートはこちらOriginal tweet

ネットワーク設定 Setup network

-設定ファイルに +設定ファイル nono.cfg に以下の行を追加します。 +Add the following line to configuration file, nono.cfg.
 ethernet-hostdriver = tap
 
-を追加し、VM ディレクトリに nono-ifup、nono-ifdown -というスクリプトを用意してください。 +次に VM ディレクトリかその親ディレクトリに nono-ifup、nono-ifdown +というスクリプトを用意します。 nono は tap(4) をオープンし、 そのデバイス名を引数にこれらのスクリプトを呼びます。 +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.

最もシンプルなケースだとおそらく +For example, in the simplest case, probably,

 # brconfig bridge0 create
 # brconfig bridge0 add wm0
@@ -403,7 +612,10 @@ nono は tap(4) をオープンし、
 (sudo の設定は別途行ってから)
 次のような nono-ifup、nono-ifdown を用意すれば
 wm0 の物理セグメントとブリッジできると思います。
-
+If you setup bridge0 as above (and setup sudo) and
+prepare the following nono-ifup, nono-ifdown scripts,
+you can bridge between the guest network and host's wm0.
+
 
nono-ifup
@@ -423,14 +635,57 @@ sudo ifconfig $1 down
 
-

注意 Note

-まだアルファリリースなので、 -すべての仕様は今後互換性なく変更するかも知れません。 -This is alpha quality release. -All specifications on this page may be changed -without compatibility in the near future. +

変更履歴 Changes

+
+See changes.html. +
+ + +

ライセンス License

+ + + +

連絡先 Contact us

+
+バグ報告などは以下にお願いします。日本語でおk。 +If you find any problems, please let me know. +You may write in English.
+https://github.com/isaki68k/nono-issue/issues +
+ + +

パッチの提供について About contributes

+
+パッチを提供してくださる場合は以下に同意したものとします。 +If you provide a patch to nono, you must agree to 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. +
+
    +
+ + +

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.
+
+
+
-isaki@NetBSD.org +nono project