⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 print.c

📁 国内一位牛人自己开发的操作系统
💻 C
字号:
#include"../include/os.h"

#define base	((char *)(0xc0000000))

static int thread_id=-1;

void set_print_thread_id(int new_thread_id)
{
	thread_id=new_thread_id;
	return;
}

void kernel_print_string(char *p)
{
	static int i=100,j=200;
	int place;

	if(thread_id>0)
		if(thread_id!=(current.t->semaphore))
			return;
	for(;;p++){
		if(j>=80)
			{i++;j=0;};
		if(i>=25){
			char *d,*s;
			for(i=0;i<24;i++)
				for(j=0;j<80;j++){
					d=(0xb8000+2*(80*i+j))+base;
					s=d+160;*d=(*s);*s=' ';
				}
			i=24;j=0;
		}
		switch(*p){
		case '\0':
			return;
		case '\n':
			for(;j<80;j++){
				place=0xb8000+2*(80*i+j);
				*(place+base)=' ';
			}
			i++;j=0;
			break;
		default:
			place=0xb8000+2*(80*i+j);
			*(place+base)=(*p);
			j++;
			break;
		};
	};
	return;
}

void kernel_print_number(int number)
{
	int i,x;
	char p[9];
	for(i=7;i>=0;i--){
		x=number&0xf;
		number=((number>>4)&(0x0fffffff));
		
		if((x>=0)&&(x<=9))
			p[i]=(char)(x+(int)'0');
		else
			p[i]=(char)(x-10+(int)'A');
	};
	p[8]='\0';
	kernel_print_string(p);
	return;
}
void kernel_print(char *p,int number)
{
	kernel_print_string(p);
	kernel_print_number(number);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -