📄 c.cpp
字号:
////// Copyright 2002.9.15 //vga_init 初始化时清屏使用#define ushort unsigned short#define uchar char#define INIT_BK (uchar)0#define INIT_COLOR (uchar)0x0a; //global varint g_x=0, g_y=0; char g_color=0; //fuc declaritionvoid kputc(uchar c,uchar color,int x,int y); void setcolor(uchar ); void newline(); void show(uchar *); void clear(); void delay(); void vga_init();//class a{ public: a(){ /*g_y = 15;*/ //show("class A Init"); g_color = INIT_COLOR; //delay #define DELAY_INITVGA 0x0000ffff for(int i =0; i<DELAY_INITVGA; i++); vga_init(); newline(); newline(); newline(); newline(); newline(); } void p(){ show("Compile "__TIME__"."); } };//test class//class a;a aaa; /***************************//* System Entry *//***************************/#ifdef __cplusplusextern "C" {#endif void c() { a ab; //test class //int color; //g_y = 15; //失败,类在这之前初始化 /* if(color>=15) color=color-15; if(color==0)color++; setcolor(color++); setcolor(color++); */ newline(); g_y = 21; show(" Thanks Snow,my love! Suport me forever. "); newline(); g_y = 21+30; show("Copyright "); show(__DATE__"."); //bug if : show (__DATE__); newline(); aaa.p(); newline(); ab.p(); //test class newline(); show("System Halt."); dead: goto dead; while(1); }#ifdef __cplusplus } /*end extern "c"*/#endif /*****************************************************************************//*****************************************************************************//* 延时*/void delay(){ int i=10000; int j=1000; for(i=0;i<10000;i++) { for(j=0;j<10;j++) {;} }}/** 清屏 只适用 80x25 模式*/#if 0void clear(){ int x=0,y=0; setcolor(0); for(;x<25;x++) { for(y=0;y<80;y++) kputc(0,0,x,y); }} #endif/* 设置当前字体颜色属性*/void setcolor(uchar color){ g_color=color;}/* 换行 */void newline(){ if(g_x>=15) g_x=0; else g_x++; g_y=0;}/* * 在屏幕的当前位置显示字符串*/void show(uchar *str){ int i=0; while(str[i] != 0) { if(str[i]!=' ') delay(); /* //not use color rotate if(g_color>=15) g_color-=15; if(g_color==0) g_color++; g_color++; */ kputc(str[i++],g_color,g_x,g_y++); }}void show_center(char *str){ }/* 文本驱动 kprint 把字符 c 以 颜色color 放在 行 : x (0...24 ) 列 : y (0...79 ) 处. (只适用于文本模式 80*25) */void kputc(uchar c,uchar color,int x,int y){ /* 指针 p 指向显存 */ uchar *p = (uchar*)0xb8000; /* 计算行位置*/ p += 2*x*80+y*2; /*放入显存 */ *p = c; *(p+1) = color;}void vga_init(){ uchar *p = (uchar*)0xb8000; for(int row =0; row<25; row++){ for(int col = 0; col<80; col++){ p += 2*row*80+col*2; *p = 0x00; *(p+1) = INIT_BK; } } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -