68030 はキャッシュが未実装です。
これに伴い命令の所要クロック数もまだ正しくなく、
そのためクロック測定などでは正確な値が出ません。
また ATC (アドレス変換キャッシュ) は実際の仕様とは異なり高速化してあります。
68030 cache is not implemented.
Therefore, number of clock cycle is not correct.
ATC (Address Translation Cache) is differ from and faster than the real 68030.
ステータスパネル中央にあるパフォーマンスメータのアイコンは
高速モードの状態を表示しています。
ダブルクリックすると高速/等速モードの指定を切り替えることができます。
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.
| | | | |
LUNA も X68030 もキーボードは通常日本語キーボードです
(LUNA には英語キーボードも存在するようですが…)。
そのため、ホストが日本語キーボードの場合とそうでない場合のために
2つの入力モードを用意しています。
どちらも一長一短があります。
LUNA and X68030 has the Japanese keyboard
(though I ever heard there are US keyboard for LUNA...).
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/X68030 のキーコードに解釈し直して 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/X68030'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).
キャラクタ入力モードでの、ホストから入力した文字と
VM に送信されるキーの対応は次の通りです。
ファンクションキーとカーソルキーは文字ではありませんが
特別に対応しています。
ここに記載のないゲストキーはソフトウェアキーボードからのみ入力できます。
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 that not listed in this table can
only be typed from the software keyboard window.
HostChar | GuestKey
|
---|
a 〜 z | [A] 〜 [Z]
|
0 〜 9 | [0] 〜 [9]
|
SPACE | [SPACE]
|
- | [-]
|
^ | [^]
|
\ | [\]
|
@ | [@]
|
[ | [[]
|
; | [;]
|
: | [:]
|
] | []]
|
, | [,]
|
. | [.]
|
/ | [/]
|
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]
|
F11 | [PF10]
|
↑ | [↑]
|
← | [←]
|
→ | [→]
|
↓ | [↓]
|
^@ | [CTRL]+[@]
|
^A 〜 ^Z | [CTRL]+[A] 〜 [CTRL]+[Z]
|
^[ | [ESC]
|
^\ | [CTRL]+[\]
|
^] | [CTRL]+[]]
|
^^ | [CTRL]+[^]
|
^_ | [CTRL]+[_]
|
^H | [BS]
|
^I | [TAB]
|
^M | [Enter]
|
JP キーボードモードでの、ホストキーと VM に送信されるキーの対応は次の通りです。
ここに記載のないキーはソフトウェアキーボードからのみ入力出来ます。
The following table shows the correspondence between
the host key and the guest key.
The keys that not listed in this table 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]
|
[F11] | [PF10]
|
[SHIFT-L] | [SHIFT-L]
|
[SHIFT-R] | [SHIFT-R]
|
[↑] | [↑]
|
[←] | [←]
|
[→] | [→]
|
[↓] | [↓]
|
HostKey | GuestKey
|
---|
[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]
|
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.
つついさんが 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/)。
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.4.1 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 will boot 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, at the first boot, you will feel it's too heavy for several hours.
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.
あおやまさんが 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.4.1 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 will boot 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.
つついさんが NetBSD/x68k 9.2 の liveimage を用意されています。
ここではこれを起動してみます。
Tsutsui-san has provided a liveimage of NetBSD/x68k 9.2. Let's try it.
- どこかに nono 用のディレクトリを用意し(例えば ~/nono/)、
その中に VM ディレクトリを用意します (例えば ~/nono/x68k/)。
Create a directory somewhere for nono (for example ~/nono/),
and create subdirectories for individual VMs in it
(for example ~/nono/x68k/).
- 以下のリンクから
plain-install か with-packages のお好みのほうをダウンロードして展開し、
VM ディレクトリ ~/nono/x68k/ に置きます。
Download your favorite one of plain-install or with-packages
from the following link,
extract it and place it in the VM directory, ~/nono/x68k/.
http://teokurebsd.org/netbsd/liveimage/20210613-x68k/
- 以下の内容の設定ファイル nono.cfg を VM ディレクトリ ~/nono/x68k/
に作成します。
初回起動時は liveimage は接続しません。
Create a configuration file nono.cfg in the VM directory, ~/nono/x68k/,
with following contents.
You don't need to add the liveimage first time.
vmtype = x68030
- nono -c ~/nono/x68k で起動します。
しばらくすると起動メディアが見付からず白帯が出ますので
メニューの「File > Exit」か×ボタンで終了します。
これで IPLROM により初期化された SRAM が
VM ディレクトリに SRAM.DAT として保存されます。
Run as nono -c ~/nono/x68k.
After a few seconds, a message will be displayed like this captured screen.
It says in Japanese that "Cannot boot from disk. Please set correct one".
Then, terminate the nono by "File > Exit" in menu or close button.
By this operation, SRAM will be initialized by X68030 IPLROM and
be saved as SRAM.DAT in the VM directory.
- ここで設定ファイル nono.cfg に先程ダウンロードしてきたディスクイメージを追加します (2行目)。
Then, add a disk image downloaded earlier to configuration file nono.cfg
(see 2nd line).
vmtype = x68030
spc0-id0-image = hd,liveimage-x68k-with-packages-20210613.hds
- もう一度 nono -c ~/nono/x68k で起動すると、
HDD から NetBSD/x68k が起動します。
次回以降はこれだけで直接 NetBSD が起動します。
Again, run as nono -c ~/nono/x68k.
NetBSD/x68k will be booted from HDD.
Next time, it will boot NetBSD automatically.
- 初回起動後数時間はめちゃくちゃ重たいですが、
これはバックグラウンドで makemandb が動くためで
nono のせいではありません(>_<)。
At the first boot, you will feel it's too heavy for several hours.
This is because the infamous makemandb(8) runs heavily in the background
for a looooong time.
It's very sad to me that an accident which is far from the ideal
is the first experiences of newcomers.
- NetBSD が起動した後なら (正確には powerd(8) が起動していれば)、
終了する時はメニューの「デバイス > 操作 > 電源ボタンを押す」
でシャットダウンして電源オフになり、
VM の電源オフで nono も終了します。
After NetBSD boots up (more precisely, if powerd(8) is running),
you can shutdown and power off by
"Device > Operation > Push Power button" on menu,
and nono will terminate when the VM is powered off.
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)
hostnet-driver = tap
hostnet-tap-devpath = auto
- デフォルトでは /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.
# ifconfig bridge0 create
# brconfig bridge0 add 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 /sbin/ifconfig $1 up
sudo /sbin/brconfig bridge0 add $1
nono-ifdown
#!/bin/sh
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".
バージョンアップに伴い設定ファイル等に非互換が発生する場合があります。
その場合は以下の移行方法を参照して設定ファイル等を更新してください。
Some versions may have incompatibilities in the configuration files, etc.
In such case, you may need to upgrade it by referring the following link.
また nono は無償公開されている X68030 の IPLROM を使用しています。
許諾条件を読んでください。
nono uses X68030 IPLROM image distributed without charge.
You must read
the license agreement
(even though it's Japanese original text only).
パッチを提供してくださる場合は以下に同意したものとします。
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.
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.