- initial import
git-svn-id: http://moon:8086/svn/mips@1 a8ebac50-d88d-4704-bea3-6648445a41b3
This commit is contained in:
@@ -0,0 +1,141 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <math.h>
|
||||
#include "irq.h"
|
||||
#include "libsys.h"
|
||||
|
||||
int enable_response;
|
||||
|
||||
#define ATTR_RESET 0
|
||||
#define ATTR_CSR_BRIGHT 1
|
||||
#define ATTR_CSR_DIM 2
|
||||
#define ATTR_CSR_UNDERSCORE 4
|
||||
#define ATTR_CSR_BLINK 5
|
||||
#define ATTR_CSR_REVERSE 7
|
||||
#define ATTR_CSR_HIDDEN 8
|
||||
#define ATTR_FORE_BLACK 30
|
||||
#define ATTR_FORE_RED 31
|
||||
#define ATTR_FORE_GREEN 32
|
||||
#define ATTR_FORE_YELLOW 33
|
||||
#define ATTR_FORE_BLUE 34
|
||||
#define ATTR_FORE_MAGENTA 35
|
||||
#define ATTR_FORE_CYAN 36
|
||||
#define ATTR_FORE_WHITE 37
|
||||
#define ATTR_BACK_BLACK 40
|
||||
#define ATTR_BACK_RED 41
|
||||
#define ATTR_BACK_GREEN 42
|
||||
#define ATTR_BACK_YELLOW 43
|
||||
#define ATTR_BACK_BLUE 44
|
||||
#define ATTR_BACK_MAGENTA 45
|
||||
#define ATTR_BACK_CYAN 46
|
||||
#define ATTR_BACK_WHITE 47
|
||||
|
||||
|
||||
void ISR_serial_rx(void)
|
||||
{
|
||||
volatile UINT32 *pUART_stat = (UINT32*)sys_uart_stat;
|
||||
volatile UINT32 *pUART_data = (UINT32*)sys_uart_data;
|
||||
|
||||
while((0x10 & *pUART_stat))
|
||||
{
|
||||
if (enable_response)
|
||||
print_byte((char)*pUART_data);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void VT100_CSR_SETPOS(int x, int y)
|
||||
{
|
||||
char str[64];
|
||||
|
||||
sprintf(str, "[%d;%dH", y, x);
|
||||
writechar(0x1B);
|
||||
sputs(str);
|
||||
}
|
||||
|
||||
void VT100_CSR_MOVE_UP(int count)
|
||||
{
|
||||
char str[64];
|
||||
|
||||
sprintf(str, "[%dA", count);
|
||||
writechar(0x1B);
|
||||
sputs(str);
|
||||
}
|
||||
|
||||
void VT100_CSR_MOVE_DOWN(int count)
|
||||
{
|
||||
char str[64];
|
||||
|
||||
sprintf(str, "[%dB", count);
|
||||
writechar(0x1B);
|
||||
sputs(str);
|
||||
}
|
||||
|
||||
void VT100_CSR_MOVE_LEFT(int count)
|
||||
{
|
||||
char str[64];
|
||||
|
||||
sprintf(str, "[%dD", count);
|
||||
writechar(0x1B);
|
||||
sputs(str);
|
||||
}
|
||||
|
||||
void VT100_CSR_MOVE_RIGHT(int count)
|
||||
{
|
||||
char str[64];
|
||||
|
||||
sprintf(str, "[%dC", count);
|
||||
writechar(0x1B);
|
||||
sputs(str);
|
||||
}
|
||||
|
||||
void VT100_ERASE_SCREEN(void)
|
||||
{
|
||||
writechar(0x1B);
|
||||
sputs("[2J");
|
||||
}
|
||||
|
||||
void VT100_SCROLL_ENABLE(void)
|
||||
{
|
||||
writechar(0x1B);
|
||||
sputs("[r");
|
||||
}
|
||||
|
||||
void VT100_ATTR_SET(int attribute)
|
||||
{
|
||||
char str[64];
|
||||
|
||||
sprintf(str, "[%dm", attribute);
|
||||
writechar(0x1B);
|
||||
sputs(str);
|
||||
}
|
||||
|
||||
int main(void)
|
||||
{
|
||||
int i, x, y;
|
||||
// interrupt_register(3, ISR_serial_rx);
|
||||
// interrupt_enable(3);
|
||||
|
||||
VT100_ERASE_SCREEN();
|
||||
VT100_SCROLL_ENABLE();
|
||||
printf("VT100 test:\n");
|
||||
|
||||
for (i=0; i < 8000; i++)
|
||||
{
|
||||
printf("\n");
|
||||
VT100_ATTR_SET(ATTR_FORE_RED);
|
||||
x = (int)(40*(1.1+sin((2*M_PI*i)/80)));
|
||||
VT100_CSR_MOVE_RIGHT(x);
|
||||
writechar('o');
|
||||
writechar(0x0D);
|
||||
VT100_ATTR_SET(ATTR_FORE_BLUE);
|
||||
x = (int)(40*(1.1+cos((2*M_PI*i)/80)));
|
||||
VT100_CSR_MOVE_RIGHT(x);
|
||||
writechar('+');
|
||||
}
|
||||
|
||||
printf("\n");
|
||||
VT100_ATTR_SET(ATTR_RESET);
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user