diff --git a/ports/x68k/README-xfnc.md b/ports/x68k/README-xfnc.md index 55336cf9b07a..33fc22c131f0 100644 --- a/ports/x68k/README-xfnc.md +++ b/ports/x68k/README-xfnc.md @@ -123,6 +123,9 @@ xarray('B', [[58, 15, 2, 0, 220, 0, 0, 0, 0, 3, 0], [28, 4, 0, 5, 1, 37, 2, 1, 7 ### 制約事項 * 一度ロードした外部関数ファイルはアンロードできません。 -* ロードした外部関数ファイルに既に存在する関数名が含まれている場合、関数定義が上書きされます。 -* 既にロードした外部関数ファイルを再度ロードするとすべての関数定義が上書きされますが、古い外部関数ファイルのメモリ領域は MicroPython が終了するまで解放されません。 -* 外部関数ファイルのインフォメーションテーブルにある、初期化/終了/RUN/END/中断など、各種イベント発生時の処理ルーチンの呼び出しは行っていません。 +* ロードしようとした外部関数ファイルと同一のファイルが既にロード済みだった場合、メモリ上にある外部関数を使用して MicroPython 内の関数定義のみを上書きします。 + * ファイルの同一性判定は、そのファイル内に含まれる外部関数名のテーブル(トークンテーブル)をバイナリ比較して一致するかどうかで行われます。 +* 外部関数ファイルのインフォメーションテーブルには X-BASIC の初期化/終了/RUN/END/中断などのイベントの際に呼ぶ処理ルーチンが用意されていますが、これらが呼び出されるタイミングが X-BASIC と異なります。 + * 初期化時ルーチンと RUN 時ルーチンは、外部関数ファイルがロードされる際に呼び出されます。 + * END 時ルーチンと終了時ルーチンは、MicroPython が終了する際に呼び出されます。 + * その他のルーチン(BREAK/CTRL+C, CTRL+D 入力時)が呼ばれることはありません。