int getsignalw()
{
    int sig;
retry:
    sig = getsignal();
    if (sig == 0) {
        lib_waitsignal(0x0001, 0, 0); /* シグナルがくるまでsleep */
        goto retry;
    }
    return sig;
}/* "movec2.c" */
/*  stack:4k malloc:2k */
#include <guigui00.h>
#define AUTO_MALLOC      0
/* シグナルボックス関係 */
#define REWIND_CODE      1
#define initsignalbox()  lib_initsignalbox0_256(REWIND_CODE)
#define getsignalw()     lib_getsig0w(lib_sigbox_256)
void OsaskMain()
{
    struct LIB_WINDOW *window;
    struct LIB_TEXTBOX *wintitle, *textbox;
    int x, y, c;
    /* ライブラリ初期化&シグナルボックス初期化 */
    initsignalbox();
    /* ウィンドウオープン */
    window = lib_openwindow(AUTO_MALLOC, 0x0200, 20 * 8, 8 * 16);
    wintitle = lib_opentextbox(0x1000, AUTO_MALLOC, 0,  6, 1, 0, 0, window, 0x00c0, 0);
    textbox  = lib_opentextbox(0x0001, AUTO_MALLOC, 0, 20, 8, 0, 0, window, 0x00c0, 0);
    lib_putstring_ASCII(0x0000, 0, 0, wintitle, 0, 0, "movec2");
    /* シグナル定義 */
    lib_definesignal1p0(3, 0x0100, 0x00ac, window, 4); /* カーソルキー(計4つ) */
    lib_definesignal1p0(0, 0x0100, ' ',    window, 8); /* スペースバー */
    lib_definesignal0p0(0, 0, 0, 0);
    /* まず表示 */
    x = 9; y = 3; c = 11;
    lib_putstring_ASCII(0x0000, x, y, textbox, c, 0, "O");
    /* メインループ */
    for (;;) {
        int ox = x, oy = y, oc = c, sig;
        sig = getsignalw();
        if (sig == 4) { /* left */
            if (x > 0)
                x--;
        }
        if (sig == 5) { /* right */
            if (x < 19)
                x++;
        }
        if (sig == 6) { /* up */
            if (y > 0)
                y--;
        }
        if (sig == 7) { /* down */
            if (y < 7)
                y++;
        }
        if (sig == 8) { /* chagne */
            c = (c + 1) & 0x0f;
        }
        /* 何らかの変化があれば表示し直す */
        if (x != ox || y != oy || c != oc) {
            lib_putstring_ASCII(0x0000, ox, oy, textbox, 0, 0, " ");
            lib_putstring_ASCII(0x0000, x,  y,  textbox, c, 0, "O");
        }
    }
}/* シグナルボックス関係 */ #define REWIND_CODE 1 #define initsignalbox() lib_initsignalbox0_4k(REWIND_CODE) #define getsignalw() lib_getsig0w(lib_sigbox_4k) #define sig_ptr lib_sigptr_4k
int getparam()
{
    int param = *sig_ptr++;
    lib_waitsignal(0x0000, 1, 0);
    return param;
}    x = sig_ptr[0];
    y = sig_ptr[1];
    sig_ptr += 2;
    lib_waitsignal(0x0000, 2, 0);void lib_initsignalbox0_256(int rewind)
{
    static struct {
        int rewind, dummy;
        int *ptr;
        int box[256 / 4]; /* ここが4kだったり64kだったりする */
    } sigstr = {
        0, 0, sigstr.box, { 0 }
    };
    static struct LIB_WORK lib_work256;
    sigstr.rewind = rewind; /* lib_getsigが参照するので保存しておく */
    lib_init_nm(&lib_work256);
    lib_opensignalbox_nm(256, sigstr.box, 0, rewind);
}
/* sigstr.ptrがlib_sigptr_256, sigstr.boxがlib_sigbox_256 */(This host) = http://osask.net