Z80 アセンブラ&シミュレーター Rz80 with "麻以" ●説明 アセンブラ。Z-80にだけ対応。 シミュレートも対応。 プラグイン次第で拡張可能〜っ! IN,OUT命令はプラグインが無いと意味無し。 使い方で分からないところは無いと思う。 プラグインはまだ仕様が固まっていない。 ●ToDo ・色? ・元に戻す、やり直し が変 ・ブレークポイントを使えるようにする ・とりあえずAB10 MK-Uでも作ろうか、、 ・転送先のアドレスを自動で設定 <出来るけど、あとで(^^; ・カーソル位置の表示の完全化 ・エラーの場所表示で、1行消されるとずれる ・と言うかエディタのパワーアップ <非常に大変っ(って言うか自作(爆 ・IM0でのCALL呼び出しを実行できるようにする <原理が謎 ・ヘルプ <これがメイン(爆死 ・機器のセット ・他のCPUに対応 <これ、結構厳しい、、、 ・ステータスバーに何か表示する <なんやねんっ!(^^; ・『何か』に対応 <してどうする(^^;; ・アイコン付けんと、、、 ヾ(・・;)ォィォィ(c)お姉ちゃん ・裏モード <何ですかそれは? ・シアウェア化!!! <売れそうかも、、、(爆 ・STG機能 <とりあえず、、、 ●麻以DLL仕様 ・ファイル名 Mai.dll ・以下の関数をエクスポートさせる 起動時に必ずよばれる関数 必ず文字列(Mai ver 1.0\0)のポインタを返すこと BOOL __declspec(dllexport) __stdcall MaiGetVersion(HGLOBAL* hg){ char *c = "Mai ver 1.0"; //12文字 必ずこの文字列を返すこと *hg = GlobalAlloc(GPTR,strlen(c)); strcpy((char*)*hg,c); return TRUE; } MaiGetVersionが成功した後、この関数で名前、ポート数を収得する BOOL __declspec(dllexport) __stdcall MaiGetName(HGLOBAL* hg, LONG* count){ char *c = "テストプラグイン"; *hg = GlobalAlloc(GPTR,strlen(c)); strcpy((char*)*hg,c); *count = 2; return TRUE; } シミュレート開始前に呼ばれる BOOL __declspec(dllexport) __stdcall MaiInitialize(HWND handle,LONG port,CONNECTOR *connector); handle Rz80のメインWindowのハンドル、Windowを作る場合に親にすると良い port 設定されたポート番号の最初の番号 connector コネクタ構造体のポインタ、割り込みなどに使う リセットボタンを押されたときに呼ばれる、または、シミュレーション開始直前 BOOL __declspec(dllexport) __stdcall MaiReset(); IN命令により呼ばれる BOOL __declspec(dllexport) __stdcall MaiToRz80(LONG port); port IOの対象のポート番号 出力する場合、connector->OUTDATABUS を書き換える OUT命令により呼ばれる BOOL __declspec(dllexport) __stdcall MaiFromRz80(LONG port,CONNECTOR connector); port IOの対象のポート番号 connector 入力されたデータは、 connector.DATABUS である シミュレーションを閉じるとき呼ばれる この関数が呼ばれた後、50ms以内に麻以を終了できる状態にしなければならない BOOL __declspec(dllexport) __stdcall MaiClose(); typedef struct _CONNECTOR { BOOL M1; //未対応 BOOL MREQ; //未対応 BOOL IORQ; //未対応 BOOL RD; //未対応 BOOL WR; //未対応 BOOL RFSH; //未対応 BOOL BUSAK; //未対応 BOOL HALT; //HALT状態だとTRUE ULONG CLOCK; //未対応 リセットからのTサイクル数 DWORD DATABUS; //書き換え不可のデータバス BOOL WAIT; //未対応 BOOL INT; //割り込むとき TRUEにする BOOL NMI; //割り込むとき TRUEにする BOOL RESET; //リセットするとき TRUEにする BOOL BUSRQ; //未対応 DWORD OUTDATABUS; //書き換え可のデータバス }CONNECTOR; ●更新履歴 2002/05/27 Rz80 v0.059β with "麻以" ・ソフト内部の整理 2001/11/17 Rz80 v0.058β with "麻以" ・オプション>設定を追加 ・ 設定>アセンブラ>RAMの範囲設定 を追加 ・ORGを書かなかったとき、RAMのスタート番地からアセンブルするようにした ・シミュレートはRAMのスタート番地から行うようにした 2001/11/15 Rz80 v0.057β with "麻以" ・アセンブルリストにメニュー追加 ・ 印刷機能付加 ・ フォント変更追加 ・ダイオードの表示"麻以"の安定化 2001/10/21 Rz80 v0.056β with "麻以" ・ファイルを開くのバグ修正 ・ファイルの最後に0x1Aが着いていた場合削除するようにした ・ファイル履歴を開くときも、保存するかどうか確認するようにした ・メモリダンプの表示方法を変更 ・メニュー>オプション>フォント 追加 2001/08/07 Rz80 v0.055β with "麻以" ・ファイル履歴を付加 ・アセンブルエラーの表示方法を微妙に変更 2001/07/28 Rz80 v0.054β with "麻以" ・印刷機能付加 ・シミュレーションをわずかに高速化 2001/07/26 Rz80 v0.053β with "麻以" ・削除が 削除(%D) になっていたのを修正 ・メモリダンプをメモ帳に変更 ・アセンブル後すぐにメモリダンプを表示しても全部00と表示されていたのを修正 ・ダンプ表示中にアセンブルしたとき、すぐにダンプ内容を更新するようにした ・検索、置き換え機能付加 ・メニューの細かい表示を変更 2001/07/25 Rz80 v0.052β with "麻以" ・演算子の間にスペースが有るとエラーが出たのを修正 ・ORGにラベルと演算を使えるようにした ・行にスペースしかないとき、エラーが出るのを修正 ・アセンブルリストをメモ帳にした 2001/07/22 Rz80 v0.051β with "麻以" ・Window位置を記憶するようにした ・ディレクトリも記憶するようにした 2001/07/21 Rz80 v0.050β with "麻以" ・プラグイン選択機能を付加 ・シミュレーション中はプログラムを編集出来無くした 2001/06/01 Rz80 v0.047β with "麻以" ・エディタをメモ帳にした ・それに伴い、多数バグ混入のおそれ 2001/05/28 Rz80 v0.045β with "麻以" ・シミュ>ADD HL,ssとEDで始まる4バイト命令が間違っているのを治した 2001/03/02 Rz80 v0.043β with "麻以" ・"麻以"を追加、ダイオードの表示機能 ・転送機能でCOMポートを選択できるようにした 2001/03/02 Rz80 v0.042β with "麻以" ・TK-85への転送機能を追加 ・TK-85はC0H以上転送できないようにした(何故かエラーが出る) ・転送をマニュアル設定出来るようにした ・シミュレーターを実行中に終了するとエラーが出るのを治した 2001/03/01 Rz80 v0.041β with "麻以" ・DLL"麻以"を追加、Babbage2号の"麻以"を作る ・リセット、INT,NMIに対応 ・IN OUT命令に対応 2001/02/28 Rz80 v0.040β ・DLLでプラグイン機能を付けようと試みる 2001/02/27 Rz80 v0.034β ・ステップ実行で命令が表示されなかったバグを修正 ・CP nをSUB nと表示していたのを修正 2001/02/24 Rz80 v0.033β ・シミュレート機能 I/O以外全命令対応 2001/02/23 Rz80 v0.032β ・シミュレート機能 ・ ED 以外で始まる全命令に対応 2001/02/22 Rz80 v0.031β ・シミュレート機能 ・ ED DF FF 以外で始まる全命令に対応 2001/02/19 Rz80 v0.030β ・シミュレート機能 逆アセンブル機能を追加 ・ ED DF FF CB 以外で始まる全命令に対応 2001/02/18 Rz80 v0.029β ・シミュレート機能追加 ・ ED DF FF CB 以外で始まる全命令に対応 ・ Fレジスタも処理するようにした ・ フラグの状態を SZ-H-PNC で表示するようにした 2001/02/14 Rz80 v0.026β ・シミュレート機能の速度改善(前回より6倍速) ・1バイト命令だけシミュレート機能付加(それ以外は無視) ・ DAAは出来ない ・ Fレジスタは処理結果を反映しない 2001/02/13 Rz80 v0.025β ・さわりだけシミュレート機能付加(まだ使用不可) 2001/02/13 Rz80 v0.024β ・ポケコン(PC-G803)に転送できるようにした ・転送をスレッド処理にし、転送状況を表示するようにした ・転送を中断出来るようにした 2001/02/08 Rz80 v0.022β ・IMEで漢字変換時の色を変えた ・ステータスバーにヒントを表示するようにした 2001/02/08 Rz80 v0.021β ・行にラベルしかないときのエラーを無くした 2001/02/08 Rz80 v0.020β ・おもいっきりアルゴリズムを改造 ・ラベルや数式のチェックを改造 ・+-*/()を使えるようにした 2001/01/18 Rz80 v0.011β ・MP-Z80に転送できるようにした 2001/01/18 Rz80 v0.010β ・オーバーフローはチェックしない事にした ・LD16bitでバグFIX ・ラベルチェックのバグFIX ・長いラベルのチェックが無くなっていたのを復活 ・EQUは先に定義しないといけなくした ・他かなりバグFIX 2001/01/17 Rz80 v0.009β ・JRとDJNZは直接移動数を入れるのではなく移動先を書く事にした ・+-の計算を出来るようにした 計算中に2バイトを超えるとエラー ・2進数でマイナス(16桁)の時正常に変換されていなかったのを修正 ・ちょっとしたバグFIX 2001/01/16 Rz80 v0.008β ・同じ名前のラベル定義だとエラーを出すようにした ・エラーを具体的に表示するようにした ・ちょっとしたバグFIX 2001/01/15 Rz80 v0.007β ・見た目を大幅に変更 ・メモリダンプでキャラクタ表示をするようにした ・専用ファイルの拡張子を .rz8 に決定 ・メインメニュー、ポップアップメニュー追加 ・メニュー項目の以下の機能に対応 ・ ファイル 新規、開く、上書き保存、名前を付けて保存、終了 ・ 編集 元に戻す、やり直し、切り取り、コピー、張り付け、削除、全て選択 ・ 実行 アセンブル、整形、アセンブルリスト、メモリダンプ ・ オプション(爆 2001/01/14 Rz80 v0.006β ・見た目を大幅に変更 ・アセンブルエラーはエディタの方に出るようにした 2000/12/29 Rz80 v0.005β ・アセンブラ全命令対応 ・ラベルの不具合はまだある ・アセンブルリストを出せるようにした ・エラーを表示するようにした ・エラー表示は行番号とエラー番号のみ ・ソースを整形出来るようにした 2000/12/28 Rz80 v0.004α ・アセンブラを途中まで作る ・1バイト命令はアセンブル出来るようになる ・メモリダンプを付ける 2000/12/25 Rz80 v0.002α ・とりあえずプロジェクトを作る ・何も出来ない 2000/12/21 Rz80 v0.001α ・見た目を作る(描く(爆) ・とうぜん何も出来ない