
#define  u8 unsigned char
#define  s8 signed char

#define u16 unsigned short int
#define s16 signed short int

#define u32 unsigned long int
#define s32 signed long int

#define u64 unsigned long long
#define s64 signed long long

u16 LCD[160*144];

#define TFT_DATA *(volatile u32*) 0x20010000

#define Pixel4     \
 o0=*(u32*) l;     \
 o1=*(u32*)(l+4);  \
 TFT_DATA=o0;      \
 TFT_DATA=o1;      \
 l+=8;

#define Pixel4Last \
 o0=*(u32*) l;     \
 o1=*(u32*)(l+4);  \
 TFT_DATA=o0;      \
 TFT_DATA=o1;      \
 l+=56;

void drawscreen(void)
{
 register u32 y,o0,o1,l=(u32)LCD+16;
 for(y=0;y<144;y++)
 {
  Pixel4
  Pixel4
  Pixel4
  Pixel4
  Pixel4
  Pixel4
  Pixel4
  Pixel4
  Pixel4
  Pixel4
  Pixel4
  Pixel4
  Pixel4
  Pixel4
  Pixel4
  Pixel4
  Pixel4
  Pixel4
  Pixel4
  Pixel4
  Pixel4
  Pixel4
  Pixel4
  Pixel4
  Pixel4
  Pixel4
  Pixel4
  Pixel4
  Pixel4
  Pixel4
  Pixel4
  Pixel4
  Pixel4
  Pixel4
  Pixel4
  Pixel4
  Pixel4
  Pixel4
  Pixel4
  Pixel4Last
 } 
}

void main(void)
{
 while(1) drawscreen();
}
