diff --git a/ports/x68k/README.md b/ports/x68k/README.md index bca4f010a417..81a38f5fb2d7 100644 --- a/ports/x68k/README.md +++ b/ports/x68k/README.md @@ -70,6 +70,25 @@ MicroPython向けLチカのコードをそのままX680x0版で動かすため * IOCS実行後のd0レジスタの値が関数の戻り値となります。他のレジスタの値が必要な場合は、`rd`, `ra`にそれぞれデータレジスタ、アドレスレジスタの個数を指定することでそれらのレジスタ値を並べたタプルを返します。 * `rd=2`, `ra=1` を指定すると、関数の戻り値は `(d0,d1,d2,a1)` のタプルとなります。 +* `x68k.d.` + * DOSコール番号を定数で定義しています。 + * 例: `x68k.d.PRINT` = 0xff09 +* `x68k.dos(callno [,arg])` + * DOSコールを実行します。`callno`には呼び出すDOSコール番号を指定します。 + * 例: `x68k.dos(x68k.d.GETCHAR)` # DOS _GETCHAR を実行します + * DOSコール実行後のd0レジスタの値が関数の戻り値となります。 + * 追加の引数としてバッファオブジェクトを指定することができます。指定されたオブジェクトの内容がスタックに積み上げられてからDOSコールを実行します。オブジェクトのデータ配置、サイズは呼び出すDOSコールと正しく対応している必要があります。 + * 例: + ``` + import x68k + import struct + import ctypes + + buf=bytearray(94) + x68k.dos(x68k.d.GETDPB,struct.pack('hl',0,ctypes.addressof(buf))) + ``` + * DOS _GETDPBは「1ワードのドライブ番号」「94バイトのバッファを指す1ロングワードのポインタ」をこの順にスタックに積んで呼び出す仕様なので、`struct.pack`のフォーマット文字列`'hl'` によってこのデータ配置を指定しています。 + * `x68k.mpyaddr()` * MicroPython本体のメモリ上の開始アドレスを返します。デバッグ用です。