10: 2008-11-21 (金) 17:46:55 |
現: 2024-01-08 (月) 12:58:41 k-tan |
- | * 「ぐいぐい01」のAPI(1) | + | TITLE:x |
| + | * 「ぐいぐい01」のAPI(1) [#y9335d3e] |
| -(by [[K]], 2008.11.03) | | -(by [[K]], 2008.11.03) |
- | *** 註 | + | *** 註 [#x6de1e58] |
| -一応API番号順です。 | | -一応API番号順です。 |
- | *** 通常API | + | -API関数名はかなり適当なので、各自#defineで関数名を付け直すといいかもしれません。 |
| + | *** 通常API [#r5a96744] |
| -[000000] なにもしない。NOP。 | | -[000000] なにもしない。NOP。 |
| -[000001] リマーク。skip。 | | -[000001] リマーク。skip。 |
| --g01_puts_c255("¥x0d", "hello, world¥n"); のように使う。 | | --g01_puts_c255("¥x0d", "hello, world¥n"); のように使う。 |
| | | |
- | *** ジャンクAPI すべて[ffffff]のサブファンクション | + | *** ジャンクAPI すべて[ffffff]のサブファンクション [#z2492927] |
| //*** ジャンクAPI すべて[3ffffff]のサブファンクション -- commented_out by K, 2008.11.19 | | //*** ジャンクAPI すべて[3ffffff]のサブファンクション -- commented_out by K, 2008.11.19 |
| -[000000] リザーブ。 | | -[000000] リザーブ。 |
| -[000007] void jg01_tekdecomp(int srcsiz, char *p, char *q, int *retcod) | | -[000007] void jg01_tekdecomp(int srcsiz, char *p, char *q, int *retcod) |
| --tek展開関係。詳細省略。 | | --tek展開関係。詳細省略。 |
| + | -[000007] void jg01_rjc(int mod, int siz, char *p, int ofs0, int oofs, int oofs1, int *retcod) |
| + | --rjc関係。詳細省略。 |
| -[000008] void jg01_malloc(int bytes, void **p) | | -[000008] void jg01_malloc(int bytes, void **p) |
| --システムからメモリをもらう。これはbss領域の中を切り分けてもらうなどではなく、それとは別に追加でもらうメモリである。失敗する可能性は十分にあり、失敗すると*pに-1が返される。 | | --システムからメモリをもらう。これはbss領域の中を切り分けてもらうなどではなく、それとは別に追加でもらうメモリである。失敗する可能性は十分にあり、失敗すると*pに-1が返される。 |
| + | --このファンクションでもらったメモリは原則としてデータ用で、ページに実行可能属性を付与されることは保証していない。 |
| + | -[000008] void jg01_malloc1(int bytes, void **p, int i) |
| + | --システムからメモリをもらう。これはbss領域の中を切り分けてもらうなどではなく、それとは別に追加でもらうメモリである。このAPIは絶対に失敗しない。というのは失敗した場合はしかるべきメッセージが表示されてユーザに連絡した後、g01_exit_failure_int32(i);が直ちに実行されるためである。メッセージの内容は環境に依存する。 |
| + | --このAPIはメモリがなければ処理は続行できないという切実な意志をシステムに伝える意味もあり、システムはこのAPIが呼ばれたときにメモリが不足していても安易に異常終了させずに、アプリを少しの間sleepにして、その間にユーザーに対して、このままだと続行できないけどどうするか?何か他の重要ではないアプリを終了させるか?と問い合わせてくる可能性もある。 |
| + | --そういう事情により、このAPIを呼んだ場合しばらくアプリに帰ってこられない場合もありうる。それが困る場合は、上記のjg01_malloc()を使用すること。 |
| + | --このファンクションでもらったメモリは原則としてデータ用で、ページに実行可能属性を付与されることは保証していない。 |
| + | //-[000008] void jg01_malloc_e(int bytes, void **p) |
| + | //--このファンクションでもらったメモリは読み書きのほかに実行もできる。それ以外はjg01_malloc()と同じ。ちなみに起動時に与えられる.dataセクションや.bssセクションやスタックには実行可能権限の付与が保証されていない。 |
| + | //-[000008] void jg01_malloc1_e(int bytes, void **p, int i) |
| + | //--このファンクションでもらったメモリは読み書きのほかに実行もできる。それ以外はjg01_malloc1()と同じ。ちなみに起動時に与えられる.dataセクションや.bssセクションやスタックには実行可能権限の付与が保証されていない。 |
| + | // ↑-- commented_out by K, 2008.11.28 |
| -[000009] void jg01_mfree(int bytes, void *p) | | -[000009] void jg01_mfree(int bytes, void *p) |
- | --jg01_malloc()でもらったメモリを返す。部分的に返すこともできるし、bssの一部などもらってないメモリを返すこともできる。pが-1だと何もしない。アプリの終了時にはメモリは勝手に返されるので、終了処理中にmfreeする必要はない。 | + | --jg01_malloc()類でもらったメモリを返す。部分的に返すこともできるし、bssの一部などもらってないメモリを返すこともできる。pが-1だと何もしない。アプリの終了時にはメモリは勝手に返されるので、終了処理中にmfreeする必要はない。 |
| --ちなみにefg01のひどい手抜き実装だと、mfreeが何もしないということもありうる(苦笑)。 | | --ちなみにefg01のひどい手抜き実装だと、mfreeが何もしないということもありうる(苦笑)。 |
| + | -[00000a] void jg01_sleep1(unsigned int unit, unsigned int tim) |
| + | --指定した時間だけスリープする。待ち時間=tim*2^(unit-32)[sec]。 |
| + | -[00000b] int jg01_inkey2() |
| + | --標準コンソールからキーコードを取得。0の場合はキーバッファが空だった。キーコードはASCIIコードに変換される。Enterは0x0dになる。カーソルキー等は入力できない。 |
| + | -[00000b] int jg01_inkey3() |
| + | --上記とほぼ同じだが、こちらは入力があるまで帰ってこない。 |
| + | -[00000c] void jg01_consctrl4(int x, int y) |
| + | --コンソールの大きさを指定(これをやらずに以下の制御(1と3)はできない) |
| + | -[00000c] void jg01_consctrl3() |
| + | --コンソールをクリア |
| + | -[00000c] void jg01_consctrl1(int x, int y) |
| + | --カーソルの移動 |
| + | -[00000c] void jg01_consctrl2(int f, int b) |
| + | --キャラクタの色指定(XRGBによる16色:Xは拡張色ビット) |
| + | -[00000d] int jg01_randomseed() |
| + | --乱数用の種を得る |