Copyright © 2001-2017 Janus
ROM化支援バイナリエディタ - xedit -
このプログラムはフリーソフトのバイナリエディタです。
元々、他プログラムのバイナリエディット部のデバッグルーチンでしたが、
意外と使えるので機能追加した形で公開しています。
特徴
- 新規ファイルは任意のバイト位置で編集が可能です。(最大 0x10000000 バイト)
- 既存ファイルは任意のバイト位置でパッチ編集が可能です。(最大 0x10000000000000000 バイト)
- 検索・置換・削除・アンドゥ・リドゥ等の基本的機能が使用できます。
- 構造体による解析・編集が可能です。
- クリップボードのテキストデータを数値認識しデータとして取り込めます。
- モトローラS/インテルHEXフォーマット形式のファイルを読み書き出来ます。(マークにより指定範囲のみの書き出しも可能)
- キャラクター表示に以下を選択出来ます。
- ASCII/EBCDIC
- Shift-JIS/EUC-JP/UCS-2/UTF-8(Unicode)
- グラデーション
- サム, ハッシュ, CRC等の算出が出来ます。
- SUM
- MD5/SHA-1/SHA-256
- CRC-8/CRC-16/CRC-32
- Luaスクリプトによる細かな編集が可能です。
- パレット機能によりカーソル位置の数値解析をカスタマイズできます。
- コマンド入力欄から検索・ジャンプなどの基本的機能を命令できます。
- 複数のウインドウ間でデータ比較ができます。
- プラグインで他プロセスメモリ参照等が利用可能です。
アーカイブ内容
ファイル名 |
内容 |
xedit.exe |
ver.1 実行ファイル(final:1.84) |
xedit2.exe |
ver.2 実行ファイル |
xedit.html |
ヘルプファイル(このファイル) |
style.css |
ヘルプファイル用スタイルシート |
bmp.csv |
構造体解析用定義サンプルファイル1(bmpファイルヘッダ定義) |
pci.csv |
構造体解析用定義サンプルファイル2(PCIコンフィグレジスタ定義) |
dump.lua |
Luaスクリプトサンプルファイル1 |
fill.lua |
Luaスクリプトサンプルファイル2 |
patch.lua |
Luaスクリプトサンプルファイル3 |
sum.lua |
Luaスクリプトサンプルファイル4 |
巨大なファイルの中身を閲覧する処理方式です。
ファイルをページと呼ばれる単位で読み込みます。
挿入、削除等のデータ移動を伴う編集は行えませんが、パッチによる部分書き換えが可能です。
検索はページ内で処理されます。
「読み込み専用(パッチ編集)」で開くとページ処理を行います。
- 任意のフォルダーにアーカイブ内容を展開します。(xedit.exe 以外のアーカイブ内容は削除しても動作に問題ありません)
- 必要に応じ xedit.exe へのショートカットを作成します。
xedit.exe を実行すると実行ファイルと同じフォルダに ini ファイルを作成します。
実行ファイルは書き込み権限のあるフォルダに展開して下さい。
- インストール時に展開したファイルを全て削除します。
- 作成された xedit.ini ファイルを削除します。(ver.1 はレジストリを使用していません。)
カーソル移動
- カーソル移動には[↑][↓][←][→]キーを使用します。
- データ先頭位置への移動は[Ctrl+Home]キーを使用します。
- データ末尾位置への移動は[Ctrl+End]キーを使用します。
- また、桁の先頭には[Home]キーを、桁の末尾には[End]キーを使用します。
- [Ctrl+W]キーでデータ部とASCII部のカーソル位置に変更できます。
ページ移動
ページ単位での読み込みが行われた場合、
- 前ページへの移動はデータ先頭位置で[Ctrl+Home]キーを使用します。
- 後ページへの移動はデータ末尾位置で[Ctrl+End]キーを使用します。
データのキーボード入力
通常は 0〜9 及び a〜f(大文字又は小文字)の半角文字が入力可能です。
IMEがオンの場合、またはASCII部にカーソルがある場合は文字コードがそのまま入力されます。
右クリックで表示されるメニューの「貼り付け」を選択することで、クリップボードからデータを入力することも可能です。
[Ctrl+V]でも同様の貼り付け動作が行えます。
この際、クリップボード内のデータは以下の条件を満たしている必要があります。
(条件を満たしていない場合、思い通りの取り込み結果にならない場合があります)
- テキストデータであること。
- 16進数値半角文字列であること。(0x表記は可能)
テキストデータを可能な限り数値変換しデータとして取り込みます。
ただし、IMEがオンの場合、またはASCII部にカーソルがある場合は表示モードに応じた文字列に変換後、数値変換せずに貼り付けます。
(表示モードがASCII, グラデーションの場合は無変換)
貼り付け動作は全て挿入となります。
選択状態での貼り付け動作は選択データを削除後、データを挿入します。
データの挿入
編集は任意の位置から可能です。
空白欄に数値を入力すると、新規データとして記録します。
この際、編集済み最終位置から編集位置まで「画面設定」-「埋め込みデータ」で設定した値が自動で挿入されます。
既存データ上で数値を入力すると、データを上書きします。
既にデータが存在する場所にデータを挿入したい場合は、挿入したい位置にカーソルを移動し、[SPACE]キーを入力します。
「画面設定」-「埋め込みデータ」で設定した値が入力され、カーソル位置以降のデータが後方にシフトされます。
または、[Insert]キーを押して挿入モードに切り替えます。
挿入モードではカーソルの横の長さが通常の1/4になります。
この状態で上位バイト位置にカーソルがある場合にデータを入力すると「画面設定」-「埋め込みデータ」で設定した値が挿入され、
更に、入力したデータで編集されます。再度、[Insert]キーを押すと上書きモードに切り替わります。
データのポイント編集
- カーソル位置で[+]キーを押すとそのデータに 0x01 が加算されます
- カーソル位置で[-]キーを押すとそのデータに 0x01 が減算されます
- カーソル位置で[*]キーを押すとそのデータに 0x10 が加算されます
- カーソル位置で[/]キーを押すとそのデータに 0x10 が減算されます
- カーソル位置で[~]キーを押すとそのデータがビット反転します
- カーソル位置で[>]キーを押すとそのデータを右ビットシフトします
- カーソル位置で[<]キーを押すとそのデータを左ビットシフトします
- カーソル位置で[)]キーを押すとそのデータを右ローテートシフトします
- カーソル位置で[(]キーを押すとそのデータを左ローテートシフトします
それぞれ 0 〜 255 の範囲で演算されます
データファイルからの入出力
ファイル内容を以下のいずれかの方法でファイル編集が可能です。
- 画面にファイルをドロップする。
- 右クリックで表示されるメニューから「ファイルから読み込む」を選択する。
- [Ctrl+O]キーでファイルを開く。
編集内容を以下のいずれかの方法でファイルに保存することが出来ます。
- 右クリックで表示されるメニューから「ファイルへ保存」を選択する。
- [Ctrl+S]キーでファイルを保存する。
ウインドウへのファイルドロップ
ウインドウに編集対象ファイルをドロップするとファイル種別を自動で判別して開きます。
- [CTRL]キーを押したままドロップするとファイル種別の自動判別を行いません。
- [SHIFT]キーを押したままドロップすると読み込み専用(パッチ編集)で開きます。
編集のアンドゥ・リドゥ
- [Ctrl+Z]キーまたは「元に戻す」メニューで編集内容を元に戻すことが出来ます。
- [Ctrl+Y]キーまたは「やり直し」メニューで元に戻した内容をやり直すことが出来ます。
選択編集
範囲選択はマウスカーソルまたは[Shift+↑↓→←]キーにより行います。
また、「選択範囲の指定」メニュー、マーク上での「Ctrl+F2」キーでも選択可能です。
選択すると選択部分のデータは反転表示されます。
選択状態では
- [Delete],[BackSpace]キーを押すとデータを削除します。
- [Ctrl+X]キーを押すとクリップボード転送後にデータを削除します。
- [Ctrl+C]キーを押すとクリップボードにデータを転送します。
- [Ctrl+B]キーを押すとアドレス付きでクリップボードにデータを転送します。
- [Ctrl+T]キーを押すとバイナリデータそのままを文字としてクリップボードに転送します。
- [+],[-],[*].[/],[~] [>],[<],[)],[(]キーを押すとデータをポイント編集します。
これらの機能は全てページ内で有効となります。
検索・置換・アドレスジャンプ
[Ctrl+F],[Ctrl+H],[F5]キーで検索用ダイアログが表示されます。
機能 |
処理内容 |
アドレスジャンプ |
指定アドレスにカーソルを移動します。
アドレスの前に '+', '-' を付加するとカレント位置から相対移動します。
アドレスには計算式を記述できます。
|
データ検索 |
カーソル位置からデータを検索します。
継続検索は後方は[F3]キー又は[Ctrl+PgDn]キーで、
前方は[Shift+F3]キー又は[Ctrl+PgUp]キーで可能です。
|
データ置換 |
カーソル位置から検索データを置換データで置き換えます。 |
データを選択中に継続検索を行うと選択データを検索データとして検索します。
検索結果の数が ini ファイルの SelLimit 以下の場合、ハイライト表示を行います。
SelLimit=0 の場合、この制限を用いず、全ての結果をハイライト表示します。
ただし、マシンによっては処理が重たくなるので環境に応じ SelLimit を変更して下さい。
SelLimit の変更は xedit 終了後に ini ファイルを直接編集してください。
ハイライト表示は [ESC] キーで解除できます。
拡張ジャンプ
カーソル位置のデータを元に分岐先を決定します。
アドレスの前に '+', '-' を付加するとカレント位置から相対移動します。
アドレスには計算式を記述できます。
ジャンプ履歴
ジャンプアドレスの履歴を参照出来ます。
マーク
[Ctrl+M]キーで選択範囲をマーク(別色表示)することが出来ます。
[Shif+F2]キー又は[F2]キーでマーキングした場所にカーソル移動します。
マーク範囲上にカーソルがある場合、[Ctrl+F2]キーでマーク範囲を選択します。
マーク情報は「編集」-「マーク」-「マークの登録/解除」メニューで編集可能です。
ステータスバー
ステータスバーの表示内容をカスタマイズすることが可能です。
カスタマイズするには ini ファイルの StatusBar1, StatusBar2 を直接書き換えます。
StatusBar1 は選択状態の表示内容、StatusBar2 は通常時の表示内容となります。
表示内容には下記置換キーワードが使用できます。
置換キーワードは '<' と '>' で括ってください。
@を挟んで左ブロックと右ブロックを指定して下さい。
sel_start | 選択開始アドレス |
sel_end | 選択終了アドレス |
sel_size | 選択サイズ |
addr | カーソルアドレス |
addr_offset | ページ内カーソルアドレス |
addr_page | ページアドレス |
size | データサイズ |
型名称 | カーソル位置データ |
md | 編集モード(挿入/上書き) |
置換キーワード型名称には構造体解析で指定可能な型名称を指定します。
例) 16進数の4バイト幅でビッグエンディアンを表示する
<DWORD:big>
解析パレット
ステータスバーで表示可能な内容や型による解析をリスト形式で表示します。
表示形式は構造体解析で使用する表示形式を指定します。
ただしステータスバーの時と異なりキーワードを '<', '>' で括る必要はありません。
解析パレットの型に対する「値」列をダブルクリックすることで、対象のデータを編集可能です。
リスト上部のアイコンで表示内容をカスタマイズ可能です。
Luaスクリプト
Luaスクリプトを実行します。
開始 | スクリプトファイルを選択後、実行します。 |
停止 | Luaスクリプト動作を停止させます。 |
フィルデータ
設定した範囲内を指定データで埋め尽くします。
固定値 | 指定したデータで埋め尽くします。指定したデータ長から繰り返しデータ長を決定します。 |
ランダム値 | ランダムなデータ値で埋め尽くします。 |
インクリメント値 | 指定したデータに 1 を加算しながら埋め尽くします。 |
デクリメント値 | 指定したデータに 1 を減算しながら埋め尽くします。 |
数値解析
カーソル位置からエンディアンを考慮した数値解析を行います。
2 バイト以上選択されている場合は選択位置から数値解析を行います。
ステータスバーや解析パレットの内容をコピーしたい場合はこの機能を利用します。
サム/ハッシュ値の計算, CRC計算
選択されているデータを対象に計算します。
サム計算 | 1, 2, 4バイト単位での合計値, XOR値を算出します。 同時に、1 の補数及び 2 の補数も算出します。 |
ハッシュ計算 | MD5, SHA-1, SHA-256でハッシュ値を算出します。 |
CRC計算 | 各パラメータを設定しCRCを算出します。 |
CRCパラメータのデフォルトには下記があります。
TYPE | Bit | TrunPoly. | IniRem. | FinXOR | RefIn | RefRem |
CRC-8 | 8 | 0x07 | 0x00 | 0x00 | Yes | Yes |
CRC-16 | 16 | 0x8005 | 0x0000 | 0x0000 | Yes | Yes |
CRC-16/FILE | 16 | 0x1021 | 0xffff | 0x0000 | Yes | Yes |
CRC-16/CCITT | 16 | 0x1021 | 0xffff | 0x0000 | No | No |
CRC-16/XMODEM | 16 | 0x8408 | 0x0000 | 0x0000 | Yes | Yes |
CRC-16/USB | 16 | 0x8005 | 0xffff | 0xffff | Yes | Yes |
CRC-16/MODBUS | 16 | 0x8005 | 0xffff | 0x0000 | Yes | Yes |
CRC-32 | 32 | 0x04c11db7 | 0xffffffff | 0xffffffff | Yes | Yes |
CRC-32C | 32 | 0x1edc6f41 | 0xffffffff | 0xffffffff | Yes | Yes |
並び替え
選択されているデータの並びをマップにしたがって交換します。
部分的なエンディアン変換等の目的で利用可能です。
データを比較
現在編集中のデータと他ウインドウのデータを比較します。
選択状態の場合、選択範囲内で比較します。
比較可能な他ウインドウが複数ある場合、選択画面を表示します。
比較結果はハイライト表示します。
ハイライト表示の上限は ini ファイルの DiffLimit で変更可能です。
DiffLimit=0 とすると上限を設定しません。
ハイライト表示は[ESC]キーで解除できます。
[Shif+F2]キー又は[F2]キーで不一致箇所にカーソル移動します。
パッチ
読み込み専用(パッチ編集)で開いた場合でデータを選択状態にすると使用できます。
選択部分のコピーがダイアログに展開され、データを編集できます。
ダイアログで「OK」を選ぶと直接ファイル内容を書き換えます。アンドゥ操作は出来ません。
予めバックアップを作成しておくことをお奨めします。
パッチ処理用ダイアログ上での編集は挿入、削除、アンドゥ等の操作が可能です。
オプション
基本 | 表示に関する設定が可能です |
色 | 表示色の設定が可能です |
詳細 | デバッグ用です |
その他 | 各ディレクトリの初期位置を設定可能です |
プラグイン | 拡張機能の追加選択が可能です |
Lua | Luaスクリプトをキーボードに割り当てることが可能です |
実行コマンドは以下となります。
xedit.exe [options] 編集ファイル
options には下記を指定することが可能です。
-ini iniファイル |
使用する ini ファイルを指定します。指定しない場合は
xedit.exe と同じディレクトリ下の xedit.ini を使用します。
(実行ファイル名が xedit の場合)
|
-read |
開始時の問い合わせ表示を行わず、読み込み専用(パッチ編集)で開きます。 |
-edit |
開始時の問い合わせ表示を行わず、編集可能な状態で開きます。 |
-noauto |
編集対象ファイルを開く際、ファイル種別の自動判別を行いません。 |
編集データを構造体に割り当てた状態で解析表示・編集することが可能です。
(構造体解析時は処理速度が大幅に落ちます。)
定義ファイルはカンマ区切りで記述します。
下記構文となります。
構造体名称,+
型名称,変数名[,表示形式]
例えば C 言語で記述する以下の構造体は
struct Sample
{
WORD vID;
WORD dID;
WORD Value;
};
次の様になります。
Sample,+
WORD,vID
WORD,dID
WORD,Value
構造体名称にはスペースを含む名前の指定が可能です。
型名称には「構造体解析の型名称」が指定できます。
変数名には ':' に続きビットアクセス幅を指定可能です。
BYTE,Status.A:2
BYTE,Status.B:3
BYTE,Status.C:3
表示形式には書式やエンディアンの指定が可能です。
複数の書式を設定する場合は ':' で区切ります。
エンディアンの指定がない場合はリトルエンディアンとして表示します。
bin | 2進数表示 |
oct | 8進数表示 |
dec | 10進数符号なし表示 |
hex | 16進数表示 |
int | 10進数符号付き表示 |
little | リトルエンディアン表示 |
big | ビッグエンディアン表示 |
数値 | 表示幅 |
先程の構造体をビッグエンディアンで解析させる場合は次の様になります。
Sample,+
WORD,vID,hex:big
WORD,dID,hex:big
WORD,Value,big
構造体解析には以下の型名称が使用できます。
- double
- long double
- float
- char
- signed char
- unsigned char
- BYTE
- short
- signed short
- unsigned short
- WORD
- SHORT
- USHORT
- long
- signed long
- unsigned long
- DWORD
- LONG
- ULONG
- int
- signed int
- unsigned int
- INT
- UINT
- __int64
- signed __int64
- unsigned __int64
- long long
- signed long long
- unsigned long long
- ULONGLONG
- QWORD
CUIによりコマンド入力が可能です。
使用可能なコマンドは下記となります。
cmd are:
! 外部コマンドの実行
help このメッセージを表示
calc 引数を計算する
lua Luaスクリプトファイルを実行
exe 引数をLuaスクリプトとして実行
jump 絶対アドレスジャンプ
jump+ 相対アドレスジャンプ
find データを検索
findstr 文字列を検索
select 選択範囲を指定
コマンドウインドウでは、Luaスクリプトによるバイナリデータの編集も可能です。
CUI上部のアイコンから操作してください。
Luaスクリプトはグローバルテーブル変数 arg にて自身のスクリプトファイルパス名と引数情報が参照可能です。
- データの更新
書式 | xedit.set(アドレス, データ) |
引数1:アドレス | 対象アドレスを数値で指定します。 |
引数2:データ | 数値又は文字列を指定します。 |
戻り | なし |
概要 | 指定アドレスのデータを更新します。 |
- データの参照
書式 | xedit.get(アドレス) |
引数:アドレス | 対象アドレスを数値で指定します。 |
戻り | 指定アドレスのバイトデータを数値で返します。 |
概要 | 指定アドレスのデータを1バイト参照します。アドレス部にデータがない場合は 0 が返ります。 |
- データの文字列参照
書式 | xedit.gets(アドレス, サイズ) |
引数1:アドレス | 対象アドレスを数値で指定します。 |
引数2:サイズ | 参照するサイズを数値で指定します。 |
戻り | 指定範囲のデータを文字列として返します。 |
概要 | 指定アドレスのデータを1バイト参照します。アドレス部にデータがない場合は 0 が返ります。 |
- データの削除
書式 | xedit.del(アドレス[, サイズ]) |
引数1:アドレス | 対象アドレスを数値で指定します。 |
引数2:サイズ | 削除するサイズを数値で指定します。 |
戻り | なし |
概要 | 指定アドレスのデータを指定バイト数削除します。サイズを省略すると 1 バイト削除します。 |
- データの挿入
書式 | xedit.ins(アドレス, データ) |
引数1:アドレス | 対象アドレスを数値で指定します。 |
引数2:データ | 数値又は文字列を指定します。 |
戻り | なし |
概要 | 指定アドレスにデータを挿入します。 |
- データの検索
書式 | xedit.find(アドレス[, データ]+) |
引数1:アドレス | 検索開始アドレスを数値で指定します。 |
引数2:データ | 数値又は文字列を指定します。 |
戻り1:結果 | 検索結果を boolean で返します。 |
戻り2:アドレス1 | 見つかった開始位置のアドレスを数値で返します。 |
戻り3:アドレス2 | 見つかった終了位置のアドレスを数値で返します。 |
概要 | 指定アドレスからデータを検索します。見つかった場合は、選択状態となります。 |
- カーソル位置の取得
書式 | xedit.get_cur() |
引数 | なし |
戻り:アドレス | カーソル位置のアドレスを数値で返します。 |
概要 | カーソル位置のアドレスを返します。 |
- カーソル位置の設定
書式 | xedit.set_cur(アドレス) |
引数:アドレス | 移動するアドレス位置を数値で指定します。 |
戻り | なし |
概要 | カーソルをアドレス位置に移動させます。 |
- ページ位置の取得
書式 | xedit.get_page() |
引数 | なし |
戻り:ページ番号 | 現在のページ番号を数値で返します。 |
概要 | 現在のページ番号を返します。 |
- ページ位置の設定
書式 | xedit.set_page(ページ番号) |
引数:ページ番号 | 移動するページ番号を数値で指定します。 |
戻り:ページ番号 | 移動後のページ番号を数値で返します。 |
概要 | ページに移動します。 |
- 選択範囲の設定
書式 | xedit.set_sel(開始アドレス, 選択サイズ) |
引数1:開始アドレス | 選択開始アドレスを数値で指定します。 |
引数2:選択サイズ | 選択サイズを数値で指定します。 |
戻り | なし |
概要 | 選択範囲を設定します。すべてを選択する場合は set_sel(0, 0) を、選択を解除する場合は set_sel(1, 0) として下さい。 |
- 選択範囲の取得
書式 | xedit.get_sel() |
引数 | なし |
戻り1:開始アドレス | 選択開始アドレスを数値で返します。 |
戻り2:選択サイズ | 選択サイズを数値で返します。 |
概要 | 選択範囲の情報を返します。選択されていない場合は、戻り:開始アドレスにカーソル位置、選択サイズに 0 を返します。 |
- バッファサイズの取得
書式 | xedit.size() |
引数 | なし |
戻り:サイズ | 編集バッファのサイズを数値で返します。 |
概要 | 編集バッファのサイズを返します。 |
- マーク情報の登録
書式 | xedit.set_mark(アドレス, サイズ[, テキスト色, 背景色]) |
引数1:アドレス | マーク開始アドレスを数値で指定します。 |
引数2:サイズ | マークサイズを数値で指定します。 |
引数3:テキスト色 | マークのテキスト色を数値で指定します。 |
引数4:背景色 | マークの背景色を数値で指定します。 |
戻り | なし |
概要 | 指定範囲をマーク登録します。 |
- マーク情報の取得
書式 | xedit.get_mark() |
引数 | なし |
戻り | マーク情報がある場合、開始アドレスとマークサイズのテーブルをテーブルとして返します。 |
概要 | マーク情報をテーブルで返します。 |
サンプル | 開始アドレスと範囲を表示する。
tbl = xedit.get_mark()
for key, mk in pairs(tbl) do
print(mk[1], mk[2])
end
|
- マーク情報の削除
書式 | xedit.del_mark(アドレス, サイズ) |
引数1:アドレス | マーク開始アドレスを数値で指定します。 |
引数2:サイズ | マーク開サイズを数値で指定します。 |
戻り:結果 | 削除の結果を boolean で返します。 |
概要 | マーク情報を検索し、アドレス・サイズに一致するマーク 1 つを削除します。 |
- CRCの計算
書式 | xedit.crc(タイプ, 開始アドレス, 終了アドレス) |
引数1:タイプ | CRCのTYPE(種別)を文字列で指定します。 |
引数2:開始アドレス | 演算対象開始アドレスを数値で指定します。 |
引数3:終了アドレス | 演算対象終了アドレスを数値で指定します。 |
戻り:演算結果 | CRCの演算結果を数値で返します。 |
概要 | 開始アドレスから終了アドレスの範囲でCRCを算出します。TYPEには"CRC-8"等の文字列で指定します。 |
- ハッシュの計算
書式 | xedit.hash(タイプ, 開始アドレス, 終了アドレス) |
引数1:タイプ | ハッシュの種別を文字列で指定します。 |
引数2:開始アドレス | 演算対象開始アドレスを数値で指定します。 |
引数3:終了アドレス | 演算対象終了アドレスを数値で指定します。 |
戻り:ハッシュ値 | 演算結果をテーブルで返します。 |
概要 | 開始アドレスから終了アドレスの範囲でハッシュを算出します。種別には
が指定可能です。 |
- 構造体編集
書式 | xedit.struct_create(構造体名称) |
引数:構造体名称 | 構造体定義の名称を文字列で指定します。 |
戻り:識別番号 | 構造体の識別番号を数値で返します。 |
概要 | 構造体の作成を開始します。 |
書式 | xedit.struct_add_member(識別番号, メンバ定義) |
引数1:識別番号 | 処理対象とする構造体を数値で指定します。 |
引数2:メンバ定義 | メンバの定義を文字列で指定します。 |
戻り:結果 | 処理結果として成功/失敗を返します。 |
概要 | 構造体定義にメンバを追加します。
識別番号は struct_create で得た結果を指定します。
メンバ定義は「型名称」「変数名」「表示形式」を「,」で区切ります。「表示形式」は省略可能です。メンバ定義は構造体の最後に追加されます。
1つのメンバに定義に対して struct_add_member を1回呼び出してください。
xedit.struct_add_member(fd, "int,name")
xedit.struct_add_member(fd, "int,type")
xedit.struct_add_member(fd, "char,data[8],char")
|
書式 | xedit.struct_close(識別番号) |
引数:識別番号 | 構造体の識別番号を数値で指定します。 |
戻り:結果 | 処理結果として成功/失敗を返します。 |
概要 | 構造体の作成を終了します。同時に、構造体解析のウインドウに定義が追加されます。 |
- 文字列入力ダイアログの表示
書式 | wui.input(タイトル[, 初期値]) |
引数1:タイトル | ダイアログのタイトルを文字列で指定します。 |
引数2:初期値 | 入力文字の初期値を文字列で指定します。 |
戻り1:結果 | 操作結果を boolean で返します。 |
戻り2:入力文字列 | 入力文字列を返します。 |
概要 | 入力用ダイアログボックスを表示します。ダイアログボックスにはファイル選択とディレクトリ選択のボタンが付加されています。 |
- 色選択ダイアログの表示
書式 | wui.color([初期色値]) |
引数:初期色値 | 色情報(RGB)を数値で指定します。 |
戻り1:結果 | 操作結果を boolean で返します。 |
戻り2:色値 | 選択した色値を数値で返します。 |
概要 | 色選択用ダイアログボックスを表示します。 |
- 外部フィルターの実行
書式 | eui.execute(実行ファイル) |
引数:実行ファイル | 実行ファイルのパスを文字列で指定します。 |
戻り:結果 | 実行ファイルのコンソール出力結果を文字列で返します。 |
概要 | 実行ファイルを実行します。戻りには終了コードでなく実行ファイルが出力した文字列となります。 |
- 環境変数の設定
書式 | eui.putenv(文字列) |
引数:文字列 | "ENV=値"の形で文字列を指定します。 |
戻り:結果 | 設定結果を boolean で返します。 |
概要 | 環境変数を登録します。 |
ファイル選択ダイアログで「ファイルの種類」に形式を選択することでモトローラSフォーマットやインテルHEXフォーマットの
(ROM化ファイルと呼ぶことにします)ファイル読み込み/書き込みを行うことが出来ます。
読み込み
両フォーマットとも ROM化を目的としたデータファイルでテキストファイルです。
1行が1レコードで成り立っており1レコードには「ロードアドレス:書き込みデータ」等の情報が記述されています。
(ロードアドレスとは ROMに書き込むアドレスのことです)
xedit では各フォーマットに応じたレコードの解析を行いエディット画面に取り込みます。
ROM化ファイルは必ずしもロードアドレスが 0 番地から始まるとは限りません。
また、すべてのアドレスにデータが埋まるわけでもありません。
よって、xedit では歯抜け部分に「画面設定」-「埋め込みデータ」で指定したバイトデータで埋めます。
また、エラーレコードを発見した場合は、そのレコードの読み込みを無視して次のレコードを継続処理します。
ロードアドレスが重複した記述の場合には後方レコードで情報が上書きされます。
ini ファイルの RomAddrMaskRead を 1 にすると編集可能範囲外のアドレスを検出した場合、
編集可能範囲内にアドレスを変更し、強制的に読み込みます。(保存すると元のデータは失われます)
ini ファイルの RomForceRead を 1 にするとアドレス不正検出でも読み込みを継続します。
(保存すると元のデータは失われます)
読み込みが完了すると、読み込み範囲をハイライト表示します。
ハイライト表示の上限は ini ファイルの DiffLimit で変更可能です。(比較時のハイライト設定と共有)
また、ハイライト部分をマークとして記憶することが可能です。
読み込み範囲のハイライト表示は編集または[ESC]キーを押すことで解除出来ます。
保存
1レコードにデータを 0x10 バイト区切りとして出力します。
各フォーマットに応じた形式で出力するのでそのままROM化データとして使用可能です。
ただし、1レコードが全て「埋め込みデータ」の場合は保存対象レコードから外す事が出来ます。
これは読み込み時に歯抜け部分として挿入したデータを保存対象外とする事でROM化ファイルのサイズを小さく出来ます。
保存時のオプションで選択してください。
マークを記憶または編集している場合はマーク部分のみを出力することが可能です。
上記理由からxedit以外で作成したROM化ファイルを「読み込み」-「保存」を行っても元のファイルと同じテキストを得られる可能性は低いですが、
ROM化においては同一データとなります。
変換
読み込み形式にモトローラSフォーマット(又はインテルHEXフォーマット)を選択し、
書き込む形式にインテルHEXフォーマット(又はモトローラSフォーマット)にすればフォーマット変換として利用することも可能です。
- Ver.1.75まではWindowsXPの動作する環境で確認しています。
- Ver.1.76からはWindows7(64bit)の動作する環境で確認しています。
- 本ソフトウェアに関する著作権は Janus が保有します。
- 本ソフトウェアを使用した上で生じた損害について Janus は一切責任を負いません。
- 本ソフトウェアの保守を行う義務を Janus は負いません。
- 製品名などは、各社の商標・登録商標です。
- 本ソフトウェアは zlib version 1.2.3 を利用しています。
- 本ソフトウェアは技術的制限手段を違法に回避するものではありません。
- 本ソフトウェアはスクリプト Lua 5.3.4 を組み込んでいます。
Copyright(c) 1994-2011 Lua.org, PUC-Rio.
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
2.84 2017/07/07
- v1.81 でのLua不具合対策によるデグレード修正
- パレット表示で編集可能とする
- 符号付型の解析が出来なくなった不具合を修正
1.83 2017/06/24
- Luaのバージョンを5.2.0から5.3.4にする
- 構造体定義にビットアクセスを追加
1.82 2017/06/16
- Luaスクリプトを中断した場合、コマンドが使えなくなる不具合を修正
- Luaのio.readが機能しない場合がある不具合を修正
- Luaの端末のコントロールを差し替え
- CRC計算画面でTypeを変更すると結果表示が先頭に戻る不具合を修正
1.81 2016/09/10
- 読み込み専用で開く場合のメッセージを変更
- パッチダイアログのサイズを見直し
- Luaウインドウのコマンド実行後に更新表示が行われない不具合を修正
- CRC算出結果を表示する画面で文字入力すると異常終了する不具合を修正
1.80 2016/06/15
- マークの選択機能追加
- Luaウインドウの端末制御コントローラを変更
- Luaウインドウコマンドの未実装部を追加
- ROM化ファイル読み込み後のマーク背景が適用されない不具合を修正
- ROM化ファイル読み込み後、マーク先頭位置にジャンプする
- ROM化ファイルの内容が1行255文字以上だと解析に失敗する不具合を修正
1.79 2016/02/16
- Luaスクリプトで構造体を操作可能とする
- Luaスクリプトを分割ウインドウで処理する
- ファイルを開く際の [CTRL], [SHIFT]キー を見直し
- 引数オプション auto を廃止、noauto を追加
- インテルHEXフォーマットの拡張アドレス付近での境界処理不具合を一部修正
- xedit ver2 のベータ版を同梱