#ifndef COMPILE_H
#include "COMPILE.H"
#endif
#ifdef MEDIA751_A36M_A31E_A31M_A33M_A35E_A35M_X31J_AU1E_AU2E_AU2F_AU2G_AU3E
extern FTL_LIBRARY* PRIM_08_Library_Open();

USIO_FTL_LIBRARY* G9001_USIObase;


#if (defined(MEDIA754_A36M_A31E_A31M_A33M_A35E_A35M_AU1E_AU2E_AU2F_AU2G_AU3E) || (defined(MEDIA692_X31J) && (EXETYPE == C04_SWITCH)))
USIO_19_LockDF0(
)
{
        asm {
                movea.l G9001_USIObase(a5),a0
                movea.l -0x4C(a0),a1
                jmp     (a1)
        }
}
#endif

USIO_18_Empty(
)
{
        asm {
                movea.l G9001_USIObase(a5),a0
                movea.l -0x48(a0),a1
                jmp     (a1)
        }
}

USIO_04_Empty(
)
{
        asm {
                movea.l G9001_USIObase(a5),a0
                movea.l -0x10(a0),a1
                jmp     (a1)
        }
}

USIO_05_Empty(
)
{
        asm {
                movea.l G9001_USIObase(a5),a0
                movea.l -0x14(a0),a1
                jmp     (a1)
        }
}

USIO_06_HidePointer(
)
{
        asm {
                movea.l G9001_USIObase(a5),a0
                movea.l -0x18(a0),a1
                jmp     (a1)
        }
}

USIO_07_ShowPointer(
)
{
        asm {
                movea.l G9001_USIObase(a5),a0
                movea.l -0x1C(a0),a1
                jmp     (a1)
        }
}

USIO_08_(
)
{
        asm {
                movea.l G9001_USIObase(a5),a0
                movea.l -0x20(a0),a1
                jmp     (a1)
        }
}

USIO_12A_(
)
{
        asm {
                movea.l G9001_USIObase(a5),a0
                movea.l -0x30(a0),a1
                jmp     (a1)
        }
}

USIO_10_(
)
{
        asm {
                movea.l G9001_USIObase(a5),a0
                movea.l -0x28(a0),a1
                jmp     (a1)
        }
}

USIO_11_(
)
{
        asm {
                movea.l G9001_USIObase(a5),a0
                movea.l -0x2C(a0),a1
                jmp     (a1)
        }
}

USIO_12B_(
)
{
        asm {
                movea.l G9001_USIObase(a5),a0
                movea.l -0x30(a0),a1
                jmp     (a1)
        }
}

USIO_13_(
)
{
        asm {
                movea.l G9001_USIObase(a5),a0
                movea.l -0x34(a0),a1
                jmp     (a1)
        }
}

USIO_14_GetMouseStatus(
)
{
        asm {
                movea.l G9001_USIObase(a5),a0
                movea.l -0x38(a0),a1
                jmp     (a1)
        }
}

USIO_15_(
)
{
        asm {
                movea.l G9001_USIObase(a5),a0
                movea.l -0x3C(a0),a1
                jmp     (a1)
        }
}

USIO_16_ExtractFirstUsioDataFromQueue(
)
{
        asm {
                movea.l G9001_USIObase(a5),a0
                movea.l -0x40(a0),a1
                jmp     (a1)
        }
}

USIO_17_WaitUntilKeyboardOrMouseInput(
)
{
        asm {
                movea.l G9001_USIObase(a5),a0
                movea.l -0x44(a0),a1
                jmp     (a1)
        }
}

FTL_LIBRARY* F9002_OpenUSIO(P9002_i_MinimumVersion)
int16_t P9002_i_MinimumVersion;
{
#if (defined(MEDIA692_X31J) && (EXETYPE == C10_UNPACK))
        if (P9002_i_MinimumVersion <= 2) {
#else
        if (P9002_i_MinimumVersion <= 3) {
#endif
                G9001_USIObase = PRIM_08_Library_Open(FTL_USIO, (long)P9002_i_MinimumVersion);
        }
        return G9001_USIObase;
}

long F9003_CloseUSIO(P9003_l_)
long P9003_l_;
{
        if (P9003_l_) {
                PRIM_09_Library_Close(FTL_USIO);
        }
}
#endif
