« Einstein - アプレットのインストール手順 | メイン | Einstein - 起動スクリプト »

2005年02月06日

Einstein - あらためてReadMeを読んでみよう

いろいろと実験していますが、あらためて基本に戻ってReadMeをじっくり読んでみましょう。なにか新しい発見があるかも、です。DR2についているREADMEを訳してみました。

DR=デベロッパリリースですので技術的な内容が多いですが、開発者じゃない人でも簡単に読み飛ばせるように表記しました。この色がついている部分を読み進んでください。誤訳があれば指摘してくださいね。


README.txt for Einstein Emulator DR2

イントロダクション
------------
アインシュタイン・エミュレータはNewton N2プラットフォーム(MP2x00、eMate300)のエミュレータ。StrongARM110ハードウェアとNewtonOSを機能させるための全てのサブシステムをエミュレートしています。
これには不可能と思われていた、Voyagerと呼ばれるASIC(特定用途向けIC)デコードのエミュレーションも含んでいます。たしかに多くのASICはエミュレートされてきましたが、Newtonだけは別物でした。NewtonOSのドライバーを、ARMの特殊なコプロセッサ経由のネイティブコード・ドライバに置き換えるというトリックを使って実現しているわけです。
この方法についてはWorldwide Newton Conferenceで発表しています。

起動に必要な環境
------------
このプログラムは2005年2月27日までの期限付き試用版です。アインシュタイン・エミュレータは今のところMaxOS-XのAppleX11上で動作します。プログラムコードはgccを使ってG4プロセッサに最適化コンパイルされていますが、なるべくほかのプログラムを動作させず、クラッシック環境も停止した状態で、このエミュレータを動かしてください。PowerBookG4チタニウム 1GHzの私の環境では、それなりに動いています。

アインシュタイン・エミュレータはサウンド出力に Portaudioを使っており、サウンド入力もこれで対応する予定です。アインシュタイン・エミュレータDR2はFrankGruendel作のNewtTestのプレビュー版も同梱しています。
http://www.pda-soft.de/newttest.html
http://www.pda-soft.de/ge_newttest.html

アインシュタイン・エミュレータの動作にはMP2x00英語版, MP2x00ドイツ語版または eMate300のROMイメージが必要です。

操作説明
------------
Newton本体からROMイメージを吸い上げる方法には2つあります。

ROMファイルを欲しいという人がいますが、NewtonOSのROMはApple Computer Inc.とライセンシーが著作権を持っていますので、ROMイメージを譲渡することはできません。

Hammer/Newtsbug (シリアル接続を使った場合)
-----------------------------
HammerやNewtsbugといった下位レベル・デバッガを使ってメモリ・ダンプを作ることができます。シリアル接続を使うため、時間がかかります。
必要なものは:
 -クラッシック環境
 -HammerまたはNewtsbug(UNNAで入手できます, http://www.unna.org/)
 -Keyspanなどクラッシック環境で動作するシリアルアダプター

HammerまたはNewtsbugを接続し、メモリーを0から8MBまで保存してください。8MBは16進数で 00800000です。

ROM Dumper (TCP/IP接続の場合)
-------------------
ROM Dumperを使うと早くROMを吸い上げることができます。同梱されているROM DumperをNewton本体にインストールし、startボタンをタップします。10080ポートでlistenするTCP/IPサーバとして機能しますので、ターミナルのncコマンドなどでアクセスし、ROMをダンプします。

ncコマンドの文法は:
nc ipアドレス port番号

Newton側のIPアドレスを192.168.0.3に設定してある場合には
  nc 192.168.0.3 10080 > rom
でROMをダンプすることができます。ROM Dumperのソースファイルもついていますので詳細が知りたい方はそちらを見てください。

ROMイメージを吸い上げたら
-----------------------
ROMイメージファイルの名前を次のようにしておいてください:
717006 (MP2x00英語版の場合)
737041 (MP2100ドイツ語版の場合)
747129 (eMate300の場合)

ROMファイルをEinstein.rexファイルが入っているdataフォルダに入れてください。(Einstein.rexファイルはアインシュタイン・エミュレータ用のROM拡張ファイルで、アインシュタイン・ドライバとFrankのNewtTestプログラムが入っています。)
アインシュタインを起動するには、ターミナルから次のようにタイプします。
  $ ./einstein --machine=XXXX data
ここでXXXXの部分は次のいずれかです。
717006 (MP2x00英語版の場合)
737041 (MP2100ドイツ語版の場合)
747129 (eMate300の場合)

コマンドラインオプションの --machine は英語版ROM(717006)の場合には省略できます。
./einstein --help とタイプするとその他のコマンドラインオプションが表示されます。

nsコマンドとinstallコマンド
-----------------------
DR2からはinstallとnsの2つのコマンドが追加されています。

 einstein> ns command
はNewtonScriptコマンドを実行します。結果がエミュレータコントローラに戻ってこないことに注意してください。たとえばこんなふうに使います:
einstein> ns Backlight(true);

einstein> install path
でパッケージがインストールできます。

モニターモード
------------
DR1からモニターモードが搭載されました。NetBSDプロジェクトの逆アセンプラを使っています。
--monitorオプションでモニターモードに入ると、ブレークポイントの設定ができます。
モニターモードでは以下のブレークポイントがデフォルトでONになっています:
 -文字列をデバッガに渡すためのNewonOS UND命令
  リブート後に実行されNewtonは停止し、モニターに文字列が表示されます。
 -起きてはならないバイオレーション・ブレーク

breakコマンドを使ってブレークポイントを設定することができます。p10コプロセッサのレジスタ0に0x00000116をロードすることによってもブレークポイントをセットすることができます。以下のアセンブラコードは、モニターにブレークしてくるためのサブルーチンです。

 stmdb  sp!, {lr}
 ldr    lr, breakinmonitor_val
 mcr    p10, 0, lr, c0, c0
 ldmia   sp!, {pc}
breakinmonitor_val
 DCD   0x00000116

モニターモードではすでにログが取られているので--logオプションと--monitorオプションは同時には使えません。ログはモニタースクリーンにスクロール表示されるので、ファイルにログを落とすことができます。

モニターモードではシンボルファイルを使うことができます。シンボルファイルのファイル名は、たとえば717006.symbolsのようにROMイメージファイルにあわせます。
ファイルの書式は:
  address symbol comment.
の繰り返しで、address部分は16進数でソートされていなくてはなりません。

このシンボルファイルはHammerやNewtsbugのデバッガイメージを使って、簡単に生成することができます。Newton C++ツールのDumpAIFプログラムの-sオプションを使ってシンボルリストをダンプします。これでプログラム行を好きなように取り扱うことができるようになります。

Flashについて
--------------
DR1からフラッシュメモリをdataディレクトリ内のflashという名のファイルに保存するようになりました。スタートアップ時にROMチェックサムが計算され、フラッシュメモリの0番ブロックがこの値で埋め尽くされます。NewtonハードウェアのROMボードを取り替えると、NewtonOSはフラッシュメモリを消去しようとしますが、これでNewtonOSがフラッシュメモリを消去しないようになります。ROMイメージファイルを--machineオプションを使って切り替える場合には、flashファイルを削除したほうが良いです。

DR2ではflashファイルを新規に作成する時に限り、システムに適合したファクトリー・キャリブレーションデータを書き込んでいます。Newton画面上に「factory calibration・・・」メッセージを出さないようにするには、一度flashファイルを削除した上でアインシュタイン・エミュレータを起動してください。flashファイルへの書き込みはパワーオフの時(エミュレータがパワーオフになる場合、またはフラッシュメモリチップがパワーオフになる場合)に行われます。アインシュタイン・エミュレータでは8MBのフラッシュメモリをエミュレートしています。これは4MBのメモリバンクを2つ実装しているためで、最大の容量です。これ以外にもバンクはあるようなのですが、フラッシュメモリサイズを指定できないようです。

RAMについて
------------
DR2からRAMサイズを64KB単位で指定できるオプションが追加されました。デフォルトは64KB。MP2100では4MBが可能なようです。最大に使用できるRAMサイズは64KBが255ユニット分で16MB近くになるようです。それ以外にもサポート外のRAMバンクもあるようですが。RAM、ROMおよびフラッシュメモリはホストシステム上ではRAMに展開されることに注意してください。スレッドエミュレーションのためにROMとRAMは本来の4倍のサイズで展開(デコードされた命令と関数ポインタを含むため)されています。

パッケージのインストールについて
-----------------------------
パッケージのインストールが遅いのはNewtonとの通信方法に起因しています。基本的にパッケージは236バイトのパケットに分割され、NewtonScriptタスクにイベントとして送信されます。DR2からインストール具合を表すウィンドウが追加されましたが、これはNewtonへ転送されているパケットの進捗を表しているだけです。このウィンドウが閉じると、パケットがバイナリに変換されていきますが、ここに時間がかかります。
また、デフォルトのストアにパッケージサイズの2倍の空きがないとインストールは失敗します。

endpointをエミュレートし、SuckpackageFromEndpointを利用するのがより効果的でしょう。通常のインストーラープログラムを使えるようにAppletalkバインディングを用意すれば面白いですね。

stopボタンを押してインストールを中断することもできますが、ダウンロードを中断することはできません。

デベロッパーのためのノート
--------------------------
DR1から、Einstein.rexファイルにはEinsteinエミュレータのハードウェアを本物と区別するためのGestaltエントリーが定義されています。以下のC言語用の宣言はネイティブコードがアインシュタイン・エミュレータで動作中かどうかをGestaltで判断するための定義です。

#define kGestalt_Einstein_Base 0x03000001
#define kGestalt_Einstein_EmulatorInfo (kGestalt_Einstein_Base + 1)

// Version
#define kDR1Version 0x00010000
#define kDR2Version 0x00010000

// Host CPU.

struct SGestaltEinsteinEmulatorInfo
{
KUInt32 fVersion; ///< Current version.
};

fVersionフィールドはシステム情報のROMVersionと同様にMacOS/NewtonOSのバージョン書式です。位16ビットはメジャーバージョンNo.で下位16ビットはマイナーバージョンです。(DR2はバージョン1.1ということになります)あるいは次のようなNewtonScriptコードで同様の情報を記述してもよいでしょう。

constant kGestaltArg_EinsteinEmulatorInfo := '[0x03000002, [struct,long], 1];
constant kDR1Version := 0x00010000;
constant kDR2Version := 0x00010001;

/**
* Determine if we're under Einstein Emulator, and if so, its version.
*
* @return nil if we're on a hardware unit, the Einstein Emulator version
* otherwise.
*/
DefConst('kDetermineEinsteinEmulatorVersionFn,
func()
begin
local theResult := Gestalt(kGestaltArg_EinsteinEmulatorInfo);
if (theResult) then return theResult[0] else return nil;
end);

ROMエクステンションではアインシュタイン・エミュレータのバージョン情報を取得する GetEinsteinVersionString() 関数も定義されています。

すでに分かっている問題
--------------
 -キーボードがエミュレートされていない。eMateではExtrasドロワを開くために次のNewtonScriptコマンドを使ってください。
   ns GetRoot().extrasdrawer:Open();
 -シリアルポートがエミュレートされていない。
 -PCMCIAカードがエミュレートされていない。
 -X11スクリーンが完全に閉じない(クリックすると閉じる)
 -quitコマンドX11サーバとのコネクションを切る時に若干問題あり。quit後にCtrl-Cでターミナルに戻ります。
 -時々スローダウンすることがある。割り込み処理が関係していると思われる。
 -サウンド出力が、あまりうまく動かない。
 -ソフトウェア側で音量を調整しても、エミュレータ側では無視しているので音量が変わらない。
 -サウンド入力がエミュレートされていない。
 -X11は100万色モードでしか描画しない。また作り方が汚いせいか、リトルエンディアンのX11サーバではカラーマスクが無視されてしまう。

投稿者 Yos : 2005年02月06日 12:54



トラックバック

このエントリーのトラックバックURL:
http://www.clubnewton.com/cgi-bin/mt/mt-tb.cgi/31

このリストは、次のエントリーを参照しています: Einstein - あらためてReadMeを読んでみよう:

» authentic louis vuitton handbag from authentic louis vuitton handbag
Hi!I recently lunched my own project and can't find guestbook script for it. I t... [続きを読む]

トラックバック時刻: 2006年07月13日 17:22

» buy cheap generic cialis from buy cheap generic cialis
Nice layout. But i didnt find information for me that i try to find on your webs... [続きを読む]

トラックバック時刻: 2006年07月16日 12:55

» free tracfone ringtone from free tracfone ringtone
Fun Site to view and learn. Look forward to more. [続きを読む]

トラックバック時刻: 2006年07月16日 22:28

» motorola ringtone from motorola ringtone
Hi. A lot of interesting info. Cool site! [続きを読む]

トラックバック時刻: 2006年07月18日 09:31

» burberry blue label handbag from burberry blue label handbag
Hi!I recently lunched my own project and can't find guestbook script for it. I t... [続きを読む]

トラックバック時刻: 2006年07月23日 22:55

» hombre busca hombre from hombre busca hombre
This web-site is the coolest! Now I don't have to feel so intimated by science! ... [続きを読む]

トラックバック時刻: 2006年07月25日 00:08

» luxury chanel handbag from luxury chanel handbag
I get many good minutes while serfering your site! Thanks. [続きを読む]

トラックバック時刻: 2006年07月26日 05:17

» free monophonic samsung e715 ringtones from free monophonic samsung e715 ringtones
Hi! I want to make the same site that your. I like it very much. Hope thati do i... [続きを読む]

トラックバック時刻: 2006年08月11日 18:24

» free verizon lg 3200 ringtones from free verizon lg 3200 ringtones
Simply post message for testing. Sorry in advance! [続きを読む]

トラックバック時刻: 2006年08月16日 16:48

» ringtones for verizon lg phone from ringtones for verizon lg phone
I enjoyed doing this little project, it was easy to so my little brother. [続きを読む]

トラックバック時刻: 2006年08月17日 15:19

» buy xenical from buy xenical
Nice layout. But i didnt find information for me that i try to find on your webs... [続きを読む]

トラックバック時刻: 2006年08月23日 07:32

» buy xanax from buy xanax
Thanks so much and good luck on your book. I can tell it will be a winner:) [続きを読む]

トラックバック時刻: 2006年08月24日 03:44

» buy remeron from buy remeron
Good Moring Great stuff,Keep up the good work. [続きを読む]

トラックバック時刻: 2006年09月01日 20:43

» online roulette from online roulette
たまに来ますのでよろしくお願いします。 [続きを読む]

トラックバック時刻: 2006年09月12日 14:22

» kyle from kyle
かねこさん2周半お疲れ様でした。 [続きを読む]

トラックバック時刻: 2006年09月15日 01:24

» jake from jake
かねこさん2周半お疲れ様でした。 [続きを読む]

トラックバック時刻: 2006年09月15日 03:52

» online auto loan from online auto loan
たまに来ますのでよろしくお願いします。 [続きを読む]

トラックバック時刻: 2006年09月27日 09:11

» small business health insurance from small business health insurance
かねこさん2周半お疲れ様でした。 [続きを読む]

トラックバック時刻: 2006年10月02日 15:20

» Cingular Ringtones from Cingular Ringtones
Free ringtones free cingular ringtones free download ringtones. Cingualr rington... [続きを読む]

トラックバック時刻: 2006年10月23日 15:30

» qndfs from qndfs
たまに来ますのでよろしくお願いします。 [続きを読む]

トラックバック時刻: 2006年10月25日 05:27

» Grants from Grants
[...]N grants small business grants college grants federal grants and grants sma... [続きを読む]

トラックバック時刻: 2006年10月29日 08:13

» Tramadol. from Tramadol.
Tramadol. What is tramadol. Tramadol medication. [続きを読む]

トラックバック時刻: 2006年10月31日 07:04

» ultram Online Pharmacy from ultram Online Pharmacy
ultram Online Pharmacy [続きを読む]

トラックバック時刻: 2006年11月01日 10:38

» Order valtrex from Order valtrex
Order valtrex [続きを読む]

トラックバック時刻: 2006年11月01日 11:26

» Purchase insurance company Online from Purchase insurance company Online
Purchase insurance company Online [続きを読む]

トラックバック時刻: 2006年11月02日 03:19

» alprazolam Pills Online from alprazolam Pills Online
alprazolam Pills Online [続きを読む]

トラックバック時刻: 2006年11月02日 07:09

» car insurance Pills Online from car insurance Pills Online
car insurance Pills Online [続きを読む]

トラックバック時刻: 2006年11月02日 09:14

» percocet from percocet
percocet [続きを読む]

トラックバック時刻: 2006年11月04日 00:45

» meridia from meridia
meridia [続きを読む]

トラックバック時刻: 2006年11月04日 05:42

» paxil from paxil
paxil [続きを読む]

トラックバック時刻: 2006年11月05日 00:06

» homeowner insurance from homeowner insurance
homeowner insurance [続きを読む]

トラックバック時刻: 2006年11月07日 20:57

» health insurance from health insurance
health insurance [続きを読む]

トラックバック時刻: 2006年11月08日 00:18

» velochiropka17 from velochiropka17
a_Ya__a__a__a_Ta_ra_a,^a,_a_-a__a_S~a_,a_-a__a_Ta_, [続きを読む]

トラックバック時刻: 2006年11月19日 20:30

» garguliatimes20 from garguliatimes20
a_Ya__a__a__a_Ta_ra_a,^a,_a_-a__a_S~a_,a_-a__a_Ta_, [続きを読む]

トラックバック時刻: 2006年11月20日 01:16

コメント

助かります。自分は英語力の低さが楽しいPCライフのボトルネックになってるんで、ありがたいです。といいつつも内容が高度で日本語でもわかりませんでしたが。。。

投稿者 さい : 2005年02月07日 23:23

ども。
ユーザー向けとデベロッパ向けの内容が混在してるから読みにくかったかな。原文の順序変えるのも何なので、読み飛ばしやすいように色分けしてみました。

投稿者 Yos : 2005年02月08日 17:17

コメントしてください




保存しますか?