Annotation of nono/doc/index.html, revision 1.1.1.1

1.1       root        1: <html><head>
                      2: <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
                      3: <title>nono document</title>
                      4: <style type="text/css">
                      5: /* https://jfly.uni-koeln.de/colorset/ */
                      6: 
                      7: :root {
                      8:        --blue:                 rgb(  0,  90, 255);
                      9:        --brown:                rgb(128,  64,   0);
                     10:        --green:                rgb(  3, 175, 122);
                     11:        --grey:                 rgb(132, 145, 158);
                     12:        --light-grey:   rgb(200, 200, 203);
                     13: }
                     14: body {
                     15:        background-color: var(--light-grey);
                     16: }
                     17: q {
                     18:        color: var(--brown);
                     19: }
                     20: q:before {
                     21:        content: "[";
                     22: }
                     23: q:after {
                     24:        content: "]";
                     25: }
                     26: dt.dt-indent {
                     27:        padding-left: 1ex;
                     28: }
                     29: .main {
                     30:        margin-left: 1em;
                     31: }
                     32: .cons {
                     33:        background-color: black;
                     34:        color: white;
                     35: }
                     36: .file {
                     37:        background-color: white;
                     38:        color: black;
                     39: }
                     40: .strike {
                     41:        color: var(--grey);
                     42: }
                     43: </style>
                     44: </head>
                     45: <body>
                     46: <h3>nono 0.0.3 (2020/05/16)</h3>
                     47: 
                     48: nono は NetBSD とかで動作する OMRON LUNA-I とかのエミュレータです。
                     49: <q>nono is OMRON LUNA-I emulator runs on NetBSD and so on.</q>
                     50: 
                     51: <hr>
                     52: <h4>ビルド方法 <q>How to build</q></h4>
                     53: <div class="main">
                     54: NetBSD/amd64-9.0 の場合以下のパッケージが必要です。
                     55: <ul>
                     56: <li>pkgsrc/x11/wxGTK30 (OPTIONS:gtk2 is recommended)
                     57: </ul>
                     58: </dl>
                     59: アーカイブを展開したら以下のようにします。
                     60: <blockquote class="cons"><pre>
                     61: % ./configure
                     62: % make depend
                     63: % make
                     64: </pre></blockquote>
                     65: まだ make install はないです。
                     66: <tt>wx/nono</tt> が GUI 版実行ファイル、
                     67: <tt>cli/nono-cli</tt> がコマンドライン版です。
                     68: 
                     69: </div>
                     70: 
                     71: 
                     72: <h4>コマンドラインオプション <q>Command Line Option</q></h4>
                     73: <div class="main">
                     74: <dl>
                     75: <dt class=dt-indent><tt>-A <i>file</i></tt></dt>
                     76: <dd>ホストの <tt><i>file</i></tt> をロードして実行します。
                     77: ファイルが gzip 圧縮されていれば自動的に展開します。
                     78: (展開後の) ファイル形式は a.out (OMAGIC) か ELF で、
                     79: 実際にはブートローダとカーネル程度しか想定していません。
                     80: 設定ファイルの <tt>prom-use-rom=1</tt> とともに指定されると
                     81: <tt>-A</tt> のほうが優先します。</p></dd>
                     82: <dt class=dt-indent><tt>-c <i>vmdir</i></tt></dt>
                     83: <dd>VM ディレクトリを指定します。省略するとカレントディレクトリとします。</p></dd>
                     84: <dt class=dt-indent><tt>-f</tt></dt>
                     85: <dd>高速モードで起動します。
                     86: GUI なら起動後にもメニューから変更できますが、その初期値を変えるだけです。</p></dd>
                     87: <dt class=dt-indent><tt>--fontsize <i>height</i></tt></dt>
                     88: <dd>GUI 版のみ。
                     89: 全サブウインドウの起動時のフォントサイズを指定します。
                     90: <tt><i>height</i></tt> には 12, 16, 24
                     91: のいずれかを指定します。デフォルトは <tt>12</tt> です。</p></dd>
                     92: <dt class=dt-indent><tt>-s <i>scale</i></tt></dt>
                     93: <dt class=dt-indent><tt>--scale <i>scale</i></tt></dt>
                     94: <dd>GUI 版のみ。
                     95: メインウィンドウの起動時のスケールを実数で指定します。
                     96: 起動後にもメニューからプリセットされた倍率には変更可能ですが、
                     97: 任意倍率は起動時のみ指定可能です
                     98: <span class=strike>(そのうちなんとかしたい)</span>。
                     99: デフォルトは 1.0 です。</p></dd>
                    100: <dt class=dt-indent><tt>--show-config</tt></dt>
                    101: <dd>設定ファイルと <tt>-V</tt> オプションを読み込んだ結果を表示します。</p></dd>
                    102: <dt class=dt-indent><tt>-v</tt></dt>
                    103: <dd>バージョンを表示します。</p></dd>
                    104: <dt class=dt-indent><tt>-V <i>name</i>=<i>value</i></tt></dt>
                    105: <dd>設定ファイルの内容を個別に上書きします。</p></dd>
                    106: </dl>
                    107: 
                    108: 以下開発用。
                    109: <dl>
                    110: <dt class=dt-indent><tt>-b <i>hexaddr</i></tt></dt>
                    111: <dd>デバッガのブレークポイントを 16進数で指定します。</dd>
                    112: <dt class=dt-indent><tt>-C</tt></dt>
                    113: <dd>ログをコンソールにも出力します。
                    114: 通常はログウィンドウにだけ出力されます。</dd>
                    115: <dt class=dt-indent><tt>-d</tt></dt>
                    116: <dd>起動時にデバッガプロンプトで停止します。</dd>
                    117: <dt class=dt-indent><tt>-D</tt></dt>
                    118: <dd>コンソールをデバッガとして使用します。
                    119: -d を指定しなくても起動時にプロンプトで停止します
                    120: <span class=strike>(そのうちなんとかしたい)</span>。</dd>
                    121: <dt class=dt-indent><tt>-L <i>name1</i>=<i>level1</i>[,<i>name2</i>=<i>level2</i>,...]</tt></dt>
                    122: <dd>ログレベルを指定します。
                    123: カンマで区切って複数指定することも出来ます。
                    124: <tt>-Lhelp</tt> で name の一覧を表示します。</dd>
                    125: <dt class=dt-indent><tt>-M <i>name</i>[,<i>name2</i>,...]</tt></dt>
                    126: <dd>起動時に表示するモニタウィンドウを指定します。
                    127: カンマで区切って複数指定することも出来ます。</dd>
                    128: </dl>
                    129: </div>
                    130: 
                    131: <h4>設定 <q>Configuration</q></h4>
                    132: <div class="main">
                    133: VM の設定ファイルはその VM ディレクトリ内の nono.cfg です。
                    134: 書式は <tt>key = value</tt> 形式で1行1項目ずつです。
                    135: <tt>key</tt> と <tt>value</tt> の前後の空白は取り除かれます。
                    136: また空行と "<tt>#</tt>" で始まる行は無視します。
                    137: 知らないキーの行も無視します。
                    138: <p>
                    139: 設定項目は次の通りです。
                    140: <dl>
                    141: <dt class=dt-indent><tt>vmtype = <i>string</i></tt></dt>
                    142: <dd>VM 種別を指定します。今の所 <tt><i>string</i></tt> に
                    143: 指定できるのは <tt>luna</tt> (LUNA-I) だけですが、省略不可です。</p></dd>
                    144: <dt class=dt-indent><tt>debugger-port = <i>integer</i></tt></dt>
                    145: <dd>デバッガの TCP 待ち受けポート番号を指定します。
                    146: 0 なら待ち受けを行いません。
                    147: デフォルトは 9999 です(適当)。</p></dd>
                    148: <dt class=dt-indent><tt>ethernet-hostdriver = <i>string</i></tt></dt>
                    149: <dd>イーサネットデバイスのホスト側ドライバを指定します。
                    150: <tt>none</tt>、<tt>tap</tt>、<tt>bpf</tt> が指定できます。
                    151: <tt>none</tt> ならホスト側とは一切通信を行いません。
                    152: <tt>tap</tt> か <tt>bpf</tt> かはホスト OS によってビルド時に決定します。
                    153: NetBSD なら <tt>tap</tt> です。</p></dd>
                    154: <dt class=dt-indent><tt>ethernet-macaddr = <i>string</i></tt></dt>
                    155: <dd>イーサネットデバイスの仮想マシン側の MAC アドレスを指定します。
                    156: <tt><i>XX</i>:<i>XX</i>:<i>XX</i>:<i>XX</i>:<i>XX</i>:<i>XX</i></tt>
                    157: 形式で指定します。
                    158: <tt>auto</tt> なら自動的に決定します。
                    159: デフォルトは <tt>auto</tt> です。</p></dd>
                    160: <dt class=dt-indent><tt>luna-dipsw1 = <i>string</i></tt></dt>
                    161: <dd>本体前面 DIPSW#1-1..#1-8 の内容を指定します。
                    162: "<tt>0</tt>" を DOWN、"<tt>1</tt>" を UP として、
                    163: これを8つ並べた形式で、前から順に #1..#8 に対応します。
                    164: デフォルトは <tt>11110111</tt> です。
                    165: <br>
                    166: 各スイッチの内容はここ
                    167: (<a href="https://wiki.netbsd.org/ports/luna68k/luna68k_info/"
                    168: >NetBSD/luna68k: Information</a>) を参照してください。</p></dd>
                    169: <dt class=dt-indent><tt>luna-dipsw2 = <i>string</i></tt></dt>
                    170: <dd>本体前面 DIPSW#2-1..#2-8 の内容を指定します。
                    171: 書式は <tt>luna-dipsw1</tt> と同じです。
                    172: デフォルトは <tt>11111111</tt> です。
                    173: <br>
                    174: すべて "<tt>1</tt>"(UP) なら
                    175: NetBSD/luna68k のブートローダは自動的にカーネルをロードして実行し、
                    176: どれかでも "<tt>0</tt>"(DOWN) にするとプロンプトで停止するようです。
                    177: <span class=strike>(本当は #8 だけで制御するつもりだったんじゃないかという気がします)</span></p></dd>
                    178: <dt class=dt-indent><tt>mpu-clock = <i>value</i></tt></dt>
                    179: <dd>MPU のクロック数を MHz 単位で指定します。
                    180: デフォルトは 20MHz  です。</p></dd>
                    181: <dt class=dt-indent><tt>prom-use-rom = <i>integer</i></tt></dt>
                    182: <dd>外部 ROM イメージファイルを使うかどうかを指定します。
                    183: <tt>0</tt> なら使わない、<tt>1</tt> なら使うです。
                    184: デフォルトは <tt>0</tt> です。
                    185: <p>
                    186: 実機を持っていない場合はこの値を <tt>0</tt> にしておくと、
                    187: nono 内蔵のなんちゃって下位互換 ROM で起動します。
                    188: <p>
                    189: 実機を持っている場合は ROM ファイルを用意して
                    190: この値を <tt>1</tt> にすると実機 ROM で起動できます。
                    191: ROM ファイルは実機の 0x41000000-0x4101ffff (128KB) を PROM.DAT (大文字)
                    192: という名前で保存したもので、VM ディレクトリに置きます。</p></dd>
                    193: <dt class=dt-indent><tt>spc0-id<i>N</i>-image = <i>devtype</i>,<i>path</i></tt></dt>
                    194: <dd>SCSI デバイスを指定します。<i>N</i> には 0 から 7 が入ります。
                    195: ID 7 は本体が使用しますので指定しないでください。
                    196: 値はデバイス種別 <i>devtype</i> とイメージパス <i>path</i>
                    197: を "<tt>,</tt>"(カンマ) で区切って並べた形式で、
                    198: 今の所デバイス種別 <i>devtype</i> には "<tt>hd</tt>"(ハードディスク) のみ指定可能です。
                    199: ディスクイメージパスが相対パスなら VM ディレクトリからの相対パスになります。
                    200: <p>
                    201: 例えば、nono.cfg と同じディレクトリに置いたディスクイメージ luna.img
                    202: を使う場合、
                    203: LUNA では通常 ID 6 をプライマリ HDD に割り当てるのでこんな感じになります。
                    204: <blockquote><pre>
                    205: spc0-id6-image = hd,luna.img
                    206: </pre></blockquote></p></dd>
                    207: <dt class=dt-indent><tt>spc0-id<i>N</i>-writeprotect = <i>integer</i></tt></dt>
                    208: <dd>指定の SCSI デバイスへの書き込みを無視するかどうか指定します。
                    209: <tt>0</tt> なら通常動作(書き込みを行う)です。
                    210: <tt>1</tt> なら書き込みコマンドは成功したように振る舞いますが実際には
                    211: ディスクイメージに一切書き戻しません。
                    212: fsck を気にせずカーネルのデバッグとかを行いたい場合にはどうぞ。
                    213: 何が起きるか意味が分からない人は指定しないでください。
                    214: デフォルトは <tt>0</tt> です。</p></dd>
                    215: </dl>
                    216: </div>
                    217: 
                    218: 
                    219: <h4>実行してみる <q>Try it</q></h4>
                    220: <div class="main">
                    221: どこかに nono 用のディレクトリを用意し(例えば ~/nono/)、
                    222: その中に VM ディレクトリを用意します (例えば ~/nono/luna/)。
                    223: その中に設定ファイル nono.cfg を用意します。
                    224: nono に <tt>-c</tt> オプションで VM ディレクトリを指定して起動します。
                    225: これだけでたぶん起動して NVRAM.DAT ファイルが自動的に作られます。
                    226: ROM モニタについては最低限なんとなく雰囲気似せてあるので
                    227: 再びこちら (<a href="https://wiki.netbsd.org/ports/luna68k/luna68k_info/"
                    228: >NetBSD/luna68k: Information</a>) 参照のこと。
                    229: ここからどうやって NetBSD/luna68k をインストールするかについては待て次号。
                    230: <blockquote class="cons"><pre>
                    231: % mkdir -p ~/nono/luna/
                    232: % echo "vmtype=luna" &gt; ~/nono/luna/nono.cfg
                    233: % path/to/nono -c ~/nono/luna
                    234: </pre></blockquote>
                    235: 
                    236: </div>
                    237: 
                    238: 
                    239: <h4>ネットワーク設定 <q>Setup network</q></h4>
                    240: <div class=main>
                    241: 設定ファイルに
                    242: <blockquote class="file"><pre>
                    243: ethernet-hostdriver = tap
                    244: </pre></blockquote>
                    245: を追加し、VM ディレクトリに nono-ifup、nono-ifdown
                    246: というスクリプトを用意してください。
                    247: nono は tap(4) をオープンし、
                    248: そのデバイス名を引数にこれらのスクリプトを呼びます。
                    249: <p>
                    250: 最もシンプルなケースだとおそらく
                    251: <blockquote class="cons"><pre>
                    252: # brconfig bridge0 create
                    253: # brconfig bridge0 add wm0
                    254: </pre></blockquote>
                    255: のようにして用意しておいた bridge0 に対して、
                    256: (sudo の設定は別途行ってから)
                    257: 次のような nono-ifup、nono-ifdown を用意すれば
                    258: wm0 の物理セグメントとブリッジできると思います。
                    259: 
                    260: <blockquote>
                    261: nono-ifup
                    262: <pre class=file>
                    263: #!/bin/sh
                    264: sudo ifconfig $1 up
                    265: sudo brconfig bridge0 add $1
                    266: </pre></blockquote>
                    267: 
                    268: <blockquote>
                    269: nono-ifup
                    270: <pre class=file>
                    271: #!/bin/sh
                    272: sudo brconfig bridge0 delete $1
                    273: sudo ifconfig $1 down
                    274: </pre></blockquote>
                    275: 
                    276: </div>
                    277: 
                    278: 
                    279: <h4>注意 <q>Note</q></h4>
                    280: まだアルファリリースなので、
                    281: すべての仕様は今後互換性なく変更するかも知れません。
                    282: <q>This is alpha quality release.
                    283: All specifications on this page may be changed
                    284: without compatibility in the near future.</q>
                    285: 
                    286: <hr>
                    287: [email protected]
                    288: </body>
                    289: </html>

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.