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

📄 com32io.c

📁 linux内核
💻 C
字号:
/* -*- c -*- ------------------------------------------------------------- * *    *   Copyright 2004-2005 Murali Krishnan Ganapathy - All Rights Reserved * *   This program is free software; you can redistribute it and/or modify *   it under the terms of the GNU General Public License as published by *   the Free Software Foundation, Inc., 53 Temple Place Ste 330, *   Boston MA 02111-1307, USA; either version 2 of the License, or *   (at your option) any later version; incorporated herein by reference. * * ----------------------------------------------------------------------- */#include <string.h>#include <com32.h>#include "com32io.h"#include "syslnx.h"com32sys_t inreg,outreg; // Global register sets for use/* Print character and attribute at cursor */void cprint(char chr,char attr,unsigned int times,char disppage){    REG_AH(inreg) = 0x09;    REG_AL(inreg) = chr;    REG_BH(inreg) = disppage;    REG_BL(inreg) = attr;    REG_CX(inreg) = times;    __intcall(0x10,&inreg,&outreg);}void setdisppage(char num) // Set the display page to specified number{    REG_AH(inreg) = 0x05;    REG_AL(inreg) = num;    __intcall(0x10,&inreg,&outreg);}char getdisppage() // Get current display page {    REG_AH(inreg) = 0x0f;    __intcall(0x10,&inreg,&outreg);    return REG_BH(outreg);}void getpos(char * row, char * col, char page){   REG_AH(inreg) = 0x03;   REG_BH(inreg) = page;   __intcall(0x10,&inreg,&outreg);   *row = REG_DH(outreg);   *col = REG_DL(outreg);}void gotoxy(char row,char col, char page){   REG_AH(inreg) = 0x02;   REG_BH(inreg) = page;   REG_DX(inreg) = (row << 8)+col;   __intcall(0x10,&inreg,&outreg);}unsigned char sleep(unsigned int msec){   unsigned long micro = 1000*msec;   REG_AH(inreg) = 0x86;   REG_CX(inreg) = (micro >> 16);   REG_DX(inreg) = (micro % 0x10000);   __intcall(0x15,&inreg,&outreg);   return REG_AH(outreg);}void beep(){   REG_AH(inreg) = 0x0E;   REG_AL(inreg) = 0x07;   REG_BH(inreg) = 0;    __intcall(0x10,&inreg,&outreg);}void scrollup(){  unsigned int dx = (getnumrows()<< 8) + getnumcols();  REG_AH(inreg) = 0x06;  REG_AL(inreg) = 0x01;  REG_BH(inreg) = 0x07; // Attribute to write blanks lines  REG_DX(inreg) = dx; // BOT RIGHT corner to window  REG_CX(inreg) = 0; // TOP LEFT of window}char inputc(char * scancode){  REG_AH(inreg) = 0x10;  __intcall(0x16,&inreg,&outreg);  if (scancode)      *scancode = REG_AH(outreg);  return REG_AL(outreg);}   void getcursorshape(char *start, char *end){   char page = getdisppage();   REG_AH(inreg) = 0x03;   REG_BH(inreg) = page;   __intcall(0x10,&inreg,&outreg);   *start = REG_CH(outreg);   *end = REG_CL(outreg);}void setcursorshape(char start, char end){   REG_AH(inreg) = 0x01;   REG_CH(inreg) = start;   REG_CL(inreg) = end;   __intcall(0x10,&inreg,&outreg);}char getchar(void){   REG_AH(inreg) = 0x08;   __intcall(0x21,&inreg,&outreg);   return REG_AL(outreg);}void setvideomode(char mode){   REG_AH(inreg) = 0x00;   REG_AL(inreg) = mode;   __intcall(0x10,&inreg,&outreg);}unsigned char checkkbdbuf(){   REG_AH(inreg) = 0x11;   __intcall(0x16,&inreg,&outreg);   return !(outreg.eflags.l & EFLAGS_ZF);}// Get char displayed at current positionunsigned char getcharat(char page){   REG_AH(inreg) = 0x08;   REG_BH(inreg) = page;   __intcall(0x16,&inreg,&outreg);   return REG_AL(outreg);}

⌨️ 快捷键说明

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