|
|
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" > ~/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>
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.