La source:
// C Source File
// Created 27/09/03; 22:06:17
#define USE_TI92PLUS // Compile for TI-92 Plus
#define USE_V200 // Compile for V200
#define OPTIMIZE_ROM_CALLS // Use ROM Call Optimization
#define MIN_AMS 100 // Compile for AMS 1.00 or higher
#define SAVE_SCREEN // Save/Restore LCD Contents
#include <tigcclib.h> // Include All Header Files
void *Vscreenl = NULL;
void *Vscreend = NULL;
// Main Function
void _main(void)
{
// Préparation: sprites
INT_HANDLER save_int_1;
static unsigned short Imagel[]={0x7E0, 0x1F18, 0x3F04, 0x7F42, 0x7F42, 0xFF41, 0xFF41, 0xFF01, 0xFF01, 0xFFF1, 0xFA51, 0x7A52, 0x7E62, 0x3FC4, 0x1F18, 0x7E0};
static unsigned short Imaged[]={0x7E0, 0x18F8, 0x20FC, 0x42FE, 0x42FE, 0x82FF, 0x82FF, 0x80FF, 0x80FF, 0x8FFF, 0x8A5F, 0x4A5E, 0x467E, 0x23FC, 0x18F8, 0x7E0};
// Ecrans virtuels
void *Vscreenl = malloc(3840);
void *Vscreend = malloc(3840);
// Row read
save_int_1 = GetIntVec (AUTO_INT_1);
SetIntVec (AUTO_INT_1, DUMMY_HANDLER);
// Variables
short quitter = 0;
short x = 0;
short y = 0;
// Niveaux de gris
GrayOn();
do
{
// Effacer EV light- dark
// Afficher Sprites L - D
PortSet(Vscreenl, 239, 127);
clrscr();
Sprite16(x, y, 16, Imagel, Vscreenl, SPRT_XOR);
PortSet(Vscreend, 239, 127);
clrscr();
Sprite16(x, y, 16, Imaged, Vscreend, SPRT_XOR);
// Afficher écrans virtuels
memcpy(GetPlane(DARK_PLANE), Vscreend, 3840);
memcpy(GetPlane(LIGHT_PLANE), Vscreenl, 3840);
// Touche gauche
if(_rowread(0x3FE)&0x10 && x > 0)
{
x--;
}
// Touche droite
if(_rowread(0x3FE)&0x40 && x < 223)
{
x++;
}
// Touche haut
if(_rowread(0x3FE)&0x20 && y > 0)
{
y--;
}
// Touche bas
if(_rowread(0x3FE)&0x80 && y < 111)
{
y++;
}
// Touche Esc
if(_rowread(0x2FF)&0x40)
{
quitter = 1;
}
}while(quitter != 1);
// Libérer les EVs
free(Vscreenl);
free(Vscreend);
// Désactiver les gris
GrayOff();
//Rétablir l'Auto int 1
SetIntVec(AUTO_INT_1, save_int_1);
// Rétablir l'écran
PortRestore();
}