我的学习之旅(12) main.c

49 篇文章 0 订阅
49 篇文章 0 订阅

main.c里面就一个kernel_start()函数。到这可以用c语言写了。接下来的问题是解决打印。否则只能通过单步调试才能知道当前运行到kernel_start()函数了。

先实现一个简单的main.c:

void kernel_start(void)

{

    printk_string(0,0,"kenel_start()\n", DISP_FG_GREEN);

    while(1);

}

打印字符串只需要VGA Chroma Text Video模式,bios在启动后会初始化前面的1Mbyte内存,其中就包括MDA ChromaText Video模式,地址范围:0xb8000 ~ 0xc0000

每2个字节表示打印一个字符,第一个字节表示要打印的内容,第二个字节表示要打印的颜色。

printk.h源代码:

#ifndef __PRINTK_H__

#define __PRINTK_H__


/*Frontground color*/
#define DISP_FG_BLACK           0x00
#define DISP_FG_BLUE            0x01
#define DISP_FG_GREEN           0x02
#define DISP_FG_CYAN            0x03
#define DISP_FG_RED             0x04
#define DISP_FG_PURPLE          0x05
#define DISP_FG_BROWN           0x06
#define DISP_FG_LIGHT_GRAY      0x07
#define DISP_FG_DARK_GRAY       0x08
#define DISP_FG_LIGHT_BLUE      0x09
#define DISP_FG_LIGHT_GREEN     0x0A
#define DISP_FG_LIGHT_CYAN      0x0B
#define DISP_FG_LIGHT_RED       0x0C
#define DISP_FG_LIGHT_PURPLE    0x0D
#define DISP_FG_YELLOW          0x0E
#define DISP_FG_WHITE           0x0F

/*backgraund color*/
#define DISP_BG_BLACK           0x00
#define DISP_BG_BLUE            0x10
#define DISP_BG_GREEN           0x20
#define DISP_BG_CYAN            0x30
#define DISP_BG_RED             0x40
#define DISP_BG_PURPLE          0x50
#define DISP_BG_BROWN           0x60
#define DISP_BG_LIGHT_GRAY      0x70

#define DISP_BLINK                0x80

#define MAX_PRINT_BUF  1024
#endif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值