📄 tinycon.c
字号:
/* * arch/mips/lib/console.c * * Copyright (C) 1994 by Waldorf Electronic, * written by Ralf Baechle and Andreas Busse * * This file is subject to the terms and conditions of the GNU General Public * License. See the file COPYING in the main directory of this archive for * more details. * * FIXME: This file is hacked to be hardwired for the Deskstation * Only thought as a debugging console output. It's as inefficient * as a piece of code can be but probably a good piece of code to * implement a preliminary console for a new target. */#include <linux/tty.h>#include <asm/bootinfo.h>static unsigned int size_x;static unsigned int size_y;static unsigned short cursor_x;static unsigned short cursor_y;static volatile unsigned short *vram_addr;static int console_needs_init = 1;extern struct screen_info screen_info;/* ---------------------------------------------------------------------- * init_console() * ---------------------------------------------------------------------- */void init_console(void){ size_x = 80; size_y = 25; cursor_x = 0; cursor_y = 0; vram_addr = (unsigned short *)0xb00b8000; console_needs_init = 0;}voidset_size_x(unsigned int x){ size_x = x;}voidset_size_y(unsigned int y){ size_y = y;}voidset_vram(unsigned short *vram){ vram_addr = vram;}voidset_crsr(unsigned int x, unsigned int y){ cursor_x = x; cursor_y = y;}voidprint_char(unsigned int x, unsigned int y, unsigned char c){ volatile unsigned short *caddr; caddr = vram_addr + (y * size_x) + x; *caddr = (*caddr & 0xff00) | 0x0f00 | (unsigned short) c;}static voidscroll(void){ volatile unsigned short *caddr; register int i; caddr = vram_addr; for(i=0; i<size_x * (size_y-1); i++) *(caddr++) = *(caddr + size_x); /* blank last line */ caddr = vram_addr + (size_x * (size_y-1)); for(i=0; i<size_x; i++) *(caddr++) = (*caddr & 0xff00) | (unsigned short) ' ';}void print_string(const unsigned char *str){ unsigned char c; if (console_needs_init) init_console(); while((c = *str++)) switch(c) { case '\n': cursor_x = 0; cursor_y++; if(cursor_y == size_y) { scroll(); cursor_y = size_y - 1; } break; default: print_char(cursor_x, cursor_y, c); cursor_x++; if(cursor_x == size_x) { cursor_x = 0; cursor_y++; if(cursor_y == size_y) { scroll(); cursor_y = size_y - 1; } } break; }}/* end of file */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -