亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? hellocn.h

?? 小型的操作系統開發的原代碼
?? H
字號:
//***********************************************************************/
//    Author                    : Garry
//    Original Date             : May,27 2004
//    Module Name               : hellocn.h
//    Module Funciton           : 
//                                This module countains the definations,
//                                data types,and procedures.
//    Last modified Author      :
//    Last modified Date        :
//    Last modified Content     :
//                                1.
//                                2.
//    Lines number              :
//***********************************************************************/

#ifndef __HELLO_CHINA__
#define __HELLO_CHINA__

#ifndef __I386__                 //The current version of Hello China only
                                 //face the I386 platform.
#define __I386__
#endif


#define __MINIKER_BASE      0x00100000    //Mini-kernal's base address.
                                                                
#define __MINIKER_LEN       48*1024       //The mini-kernal's length.
#define __MASTER_BASE       0x00110000    //The master's base address.

//PrintStr's base address.
#define __PRINTSTR_BASE     __MINIKER_LEN + __MINIKER_BASE - 0x04   
//ChangeAttr's base address.
#define __CHANGEATTR_BASE   __MINIKER_LEN + __MINIKER_BASE - 0x08   
//ClearScreen's base address.
#define __CLEARSCREEN_BASE  __MINIKER_LEN + __MINIKER_BASE - 0x0c   
//PrintCh's base address.
#define __PRINTCH_BASE      __MINIKER_LEN + __MINIKER_BASE - 0x10
//GotoHome's base address.
#define __GOTOHOME_BASE     __MINIKER_LEN + __MINIKER_BASE - 0x14
//ChangeLine's base address.
#define __CHANGELINE_BASE   __MINIKER_LEN + __MINIKER_BASE - 0x18

#define __HEXTOSTR_BASE     __MINIKER_LEN + __MINIKER_BASE - 0x1c
#define __STRCPY_BASE       __MINIKER_LEN + __MINIKER_BASE - 0x20
#define __STRLEN_BASE       __MINIKER_LEN + __MINIKER_BASE - 0x24

//SetKeyHandler's base address.
#define __SETNOTIFYOS_BASE  __MINIKER_LEN + __MINIKER_BASE - 0x28

//GotoPrev's base address.
#define __GOTOPREV_BASE     __MINIKER_LEN + __MINIKER_BASE - 0x2c

//Timer handler's base address
#define __TIMERHANDLER_BASE __MINIKER_LEN + __MINIKER_BASE - 0x30

//Set GDT entry handler's base address.
#define __SETGDTENTRY_BASE  __MINIKER_LEN + __MINIKER_BASE - 0x34

//Clear GDT entry handler's base address.
#define __CLGDTENTRY_BASE   __MINIKER_LEN + __MINIKER_BASE - 0x38


//
//Hello China's basic data type.
//
#define BYTE                char
#define CHAR                char
#define UCHAR               unsigned char
#define UBYTE               unsigned char
#define WORD                unsigned short
#define UWORD               unsigned short
#define DWORD               unsigned long
#define LPSTR               char*
#define INT                 int
#define UINT                unsigned int
#define FLOAT               float
#define DOUBLE              double

#define __U8                unsigned char
#define __U16               unsigned short
#define __U32               unsigned int

#define BOOL                DWORD
#define FALSE               0x00000000
#define TRUE                0x00000001
#define NULL                0x00000000
#define MAX_DWORD_VALUE     0xFFFFFFFF
#define MAX_WORD_VALUE      0xFFFF
#define MAX_BYTE_VALUE      0xFF
#define MAX_QWORD_VALUE     0xFFFFFFFFFFFFFFFF

#define VOID                void
#define LPVOID              void*

#define LOWORD(dw)          WORD(dw)
#define HIWORD(dw)          WORD(dw >> 16)

#define LOBYTE(wr)          BYTE(wr)
#define HIBYTE(wr)          BYTE(wr >> 16)

/*
//
//64 bits unsigned integer definition and operations.
//
struct U64{
	DWORD        dwHighPart;
	DWORD        dwLowPart;
};

#define __U64 U64

BOOL U64_LARGER(__U64*,__U64*);  //If first U64 number is larger than the second,returns
                                 //TRUE,else,return FALSE.
BOOL U64_EQUAL(__U64*,__U64*);   //If the two numbers are equal,returns TRUE,else returns
                                 //FALSE.
VOID U64_INCREMENT(__U64*);      //Increment the U64 number.
VOID U64_DECREMENT(__U64*);      //Decrement the U64 number.

VOID U64_ADD(__U64*,__U64*,__U64*);    //Add two U64 numbers,store the result into third one.
VOID U64_SUB(__U64*,__U64*,__U64*);    //Substract the second U64 number from first U64 number,
                                 //stores result into third one.
VOID U64_SET_BIT(__U64*,UCHAR);  //Set one bit of a U64 number.
VOID U64_CLEAR_BIT(__U64*,UCHAR); //Clear one bit of a U64 number.

VOID U64_MUL(__U64*,__U64*,__U64*);    //Multiple two U64 numbers,stores result into third one.
VOID U64_DIV(__U64*,__U64*,__U64*);    //Divide the first U64 number by the second,
                                       //stores result into third one.

*/


//
//Handler procedure's defination.
//The key driver will call this procedure when a key down/up event occured.
//

typedef VOID (*KEY_HANDLER)(DWORD);    //In this procedure,the parameter
                                       //is a double word,it can be split
                                       //into two word,the high word is
                                       //reserved,not used,and the low
                                       //word is used as following:
                                       // low byte  : code,if this key
                                       //             event is a extend
                                       //             key,then it's the
                                       //             key's scan code,if
                                       //             the key is a ascii
                                       //             key,then it's the
                                       //             key's ascii code.
                                       // high byte : interrupt as following:
                                       // bit 1     : 1 if Shift key down
                                       // bit 2     : 1 if alt key down
                                       // bit 3     : 1 if ctrl key down
                                       // bit 4     : 1 if capslock key down
                                       // bit 5     : reserved
                                       // bit 6     : reserved
                                       // bit 7     : 1 if is a key up event
                                       // bit 8     : 1 if is a extend key.

typedef VOID(*INT_HANDLER)(DWORD);          //General interrupt handler.

//
//The following are some extend key's scan code.
//
#define VK_ESC             0x01
#define VK_BACKSPACE       0x0e
#define VK_TAB             0x0f
#define VK_RETURN          0x0a
#define VK_LEFT_CTRL       0x1d
#define VK_SHIFT           0x2a
#define VK_LEFT_ALT        0x38
#define VK_CAPS_LOCK       0x3a

#define VK_F1              0x3b
#define VK_F2              0x3c
#define VK_F3              0x3d
#define VK_F4              0x3e
#define VK_F5              0x3f
#define VK_F6              0x40
#define VK_F7              0x41
#define VK_F8              0x42
#define VK_F9              0x43
#define VK_F10             0x44
#define VK_F11             0x57
#define VK_F12             0x58

//
//Control bits.
//
#define KEY_SHIFT_STATUS       0x00000100
#define KEY_ALT_STATUS         0x00000200
#define KEY_CTRL_STATUS        0x00000400
#define KEY_CAPS_LOCK_STATUS   0x00000800

#define KEY_EVENT_UP           0x00004000
#define KEY_EVENT_EXTEND_KEY   0x00008000

//
//Macros to simple the programming.
//
#define ShiftKeyDown(para)     (para & KEY_SHIFT_STATUS)
#define AltKeyDown(para)       (para & KEY_ALT_STATUS)
#define CtrlKeyDown(para)      (para & KEY_CTRL_STATUS)
#define CapsLockKeyDown(para)  (para & KEY_CAPS_LOCK_STATUS)

#define KeyUpEvent(para)       (para & KEY_EVENT_UP)
#define IsExtendKey(para)      (para & KEY_EVENT_EXTEND_KEY)

//
//Interrupt flags control functions.
//
VOID DisableInterrupt();

VOID EnableInterrupt();

//
//The following macros are used to synchronize shared resource accessing.
//

/*#define ENTER_CRITICAL_SECTION()  \
	DisableInterrupt()

#define LEAVE_CRITICAL_SECTION()  \
	EnableInterrupt()*/

//
//Error handling routines or macros definition.
//
#define __ERROR_HANDLER(level,reason,pszmsg) \
	ErrorHandler(level,reason,pszmsg)

VOID ErrorHandler(DWORD dwLevel,DWORD dwReason,LPSTR pszMsg);

VOID __BUG(LPSTR,DWORD);
#define BUG() \
	__BUG(__FILE__,__LINE__)

#define ERROR_LEVEL_FATAL       0x00000001
#define ERROR_LEVEL_CRITICAL    0x00000002
#define ERROR_LEVEL_IMPORTANT   0x00000004
#define ERROR_LEVEL_ALARM       0x00000008
#define ERROR_LEVEL_INFORM      0x00000010

//
//Some kernal mode procedures,implemented in Mini-kernal,the Master and
//device drivers can call these procedures.
//

//Print out a string at current position.
void PrintStr(const char* pszMsg);
//Clear the whole screen.
void ClearScreen();
//Print out a color character at current position.
void PrintCh(unsigned short ch);
//Goto the current line's home.
void GotoHome();
//Change to the next line.
void ChangeLine();
//Goto previous position.
void GotoPrev();

//Set the key board handler,and returns the old one.
KEY_HANDLER SetKeyHandler(KEY_HANDLER pKeyHandler);

//Set the timer interrupt handler.
typedef VOID (*__GENERAL_INTERRUPT_HANDLER)(DWORD,LPVOID);

INT_HANDLER SetTimerHandler(__GENERAL_INTERRUPT_HANDLER);

//This function find first empty GDT entry,and set it,returns the index value
//of the entry.
WORD SetGdtEntry(DWORD,DWORD);

//
//Zero a block of memory.
//
VOID MemZero(LPVOID,DWORD);

//
//Block memory copying operation.
//
VOID MemCpy(LPVOID,LPVOID,DWORD);

//
//Read a byte from port.
//
VOID ReadByteFromPort(UCHAR* pByte,    //Buffer.
					  WORD   wPort);   //I/O port.

//
//Write a byte to port.
//
VOID WriteByteToPort(UCHAR,            //The byte to write out.
					 WORD);            //I/O port.

//
//Read string of data from port.
//
VOID ReadByteStringFromPort(LPVOID,        //The local buffer to store string data.
			    			DWORD,         //How many bytes to be read.
				    		WORD);         //I/O port.

//
//Write string data to port.
//
VOID WriteByteStringToPort(LPVOID,         //The data buffer to be write out.
			    		   DWORD,          //How many byte to write out.
				    	   WORD);          //I/O port.

VOID ReadWordFromPort(WORD* pWord,
					  WORD  wPort);

VOID WriteWordToPort(WORD,
					 WORD);

VOID ReadWordStringFromPort(LPVOID,
							DWORD,
							WORD);

VOID WriteWordStringToPort(LPVOID,
						   DWORD,
						   WORD);


#endif //hellocn.h

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美视频完全免费看| 成人18视频日本| 亚洲电影欧美电影有声小说| 国产精品国产三级国产a| 久久精品男人天堂av| 精品国产乱码久久久久久牛牛| 欧美精品久久久久久久久老牛影院| 欧美亚洲国产一区二区三区va| 欧洲一区在线观看| 欧美午夜电影在线播放| 欧美日韩免费一区二区三区| 欧美酷刑日本凌虐凌虐| 欧美一区二区精品久久911| 欧美一区二区在线看| 久久综合久色欧美综合狠狠| 国产日韩影视精品| 日韩美女视频一区| 亚洲高清免费观看高清完整版在线观看| 亚洲国产cao| 久久99在线观看| 丁香亚洲综合激情啪啪综合| 色av成人天堂桃色av| 91精品国产手机| 久久精品一区四区| 亚洲黄色片在线观看| 日本不卡高清视频| 成人性生交大合| 欧美卡1卡2卡| 国产精品成人免费精品自在线观看| 亚洲精品五月天| 老汉av免费一区二区三区| 国产成人av在线影院| 91久久国产综合久久| 2024国产精品| 夜夜爽夜夜爽精品视频| 九色综合狠狠综合久久| 91在线小视频| 欧美tickling挠脚心丨vk| 亚洲色图一区二区| 久久 天天综合| 欧美日韩精品欧美日韩精品一 | 亚洲国产sm捆绑调教视频| 精品影院一区二区久久久| 91视频在线观看| 欧美一区二区高清| 一区二区三区91| 国产91精品一区二区| 欧美区视频在线观看| 中文字幕一区二区不卡 | 国产东北露脸精品视频| 91福利国产成人精品照片| 久久精品水蜜桃av综合天堂| 视频一区二区三区入口| 91一区在线观看| 久久久久亚洲综合| 午夜精品爽啪视频| 一本大道久久精品懂色aⅴ| 久久女同性恋中文字幕| 日本在线不卡一区| 欧美综合天天夜夜久久| 18欧美乱大交hd1984| 成人一区在线观看| 日韩欧美一级特黄在线播放| 偷拍一区二区三区| 色综合久久久久综合体桃花网| 国产亚洲精品bt天堂精选| 寂寞少妇一区二区三区| 欧美性欧美巨大黑白大战| 一二三四社区欧美黄| 91国偷自产一区二区开放时间| 中文字幕欧美日本乱码一线二线| 高清国产一区二区| 久久久噜噜噜久久中文字幕色伊伊| 久久精品国产网站| 精品88久久久久88久久久| 激情综合五月天| 26uuu色噜噜精品一区二区| 国产真实乱对白精彩久久| 精品久久99ma| 国产精品一区2区| 国产人成亚洲第一网站在线播放 | 日韩av电影免费观看高清完整版| 在线观看不卡一区| 午夜精品一区二区三区免费视频| 欧美日本一区二区| 青草国产精品久久久久久| 日韩欧美在线一区二区三区| 国内精品写真在线观看| 国产精品视频免费看| 色狠狠色噜噜噜综合网| 亚洲大片精品永久免费| 欧美一区二区二区| 国产福利精品一区| 亚洲男人都懂的| 欧美男男青年gay1069videost| 免费在线观看一区| 国产午夜精品久久| 欧美在线免费视屏| 激情久久久久久久久久久久久久久久| 2020日本不卡一区二区视频| 97久久精品人人做人人爽| 亚洲成人黄色影院| 久久精品欧美日韩精品| 一本大道av伊人久久综合| 水蜜桃久久夜色精品一区的特点| 精品黑人一区二区三区久久| av电影在线不卡| 国产一区二区三区在线观看精品 | 久久这里都是精品| a级高清视频欧美日韩| 三级欧美在线一区| 国产精品久久久久久福利一牛影视| 欧美性极品少妇| 国产一区二区三区黄视频 | 欧美一卡在线观看| 不卡视频一二三| 久久99国内精品| 亚洲午夜免费福利视频| 久久免费看少妇高潮| 欧美视频你懂的| a级高清视频欧美日韩| 久久91精品久久久久久秒播 | 欧美日韩国产欧美日美国产精品| 韩国av一区二区三区四区| 亚洲夂夂婷婷色拍ww47| 国产欧美精品一区二区色综合| 欧美片在线播放| 色系网站成人免费| 成人的网站免费观看| 国产一区二区三区在线观看免费| 亚洲第一激情av| 亚洲免费在线视频一区 二区| 久久精品亚洲精品国产欧美| 日韩亚洲国产中文字幕欧美| 在线中文字幕一区二区| www.激情成人| 成人av网站大全| 成人av在线资源网| 国产精品一二一区| 精品无人码麻豆乱码1区2区| 视频一区欧美精品| 午夜精品久久久久久久久| 一级特黄大欧美久久久| 一区二区三区久久| 亚洲精品一二三四区| 亚洲欧美另类小说| 亚洲老司机在线| 一区二区三区毛片| 亚洲一区在线视频观看| 最新中文字幕一区二区三区 | 视频一区免费在线观看| 午夜精品福利在线| 五月婷婷欧美视频| 男人的j进女人的j一区| 日韩电影在线一区二区| 丝袜美腿亚洲色图| 日韩经典中文字幕一区| 免费成人在线网站| 久久91精品久久久久久秒播| 国产精品主播直播| 成人污污视频在线观看| 一本久道中文字幕精品亚洲嫩| 欧美性猛交一区二区三区精品| 欧美日韩成人综合天天影院| 日韩一级精品视频在线观看| 久久只精品国产| 国产精品国产a| 一区二区三区精品久久久| 午夜久久福利影院| 国内成+人亚洲+欧美+综合在线| 国产成人综合网站| 精品国产乱码久久久久久蜜臀| 国产日韩欧美精品综合| 亚洲视频在线观看一区| 午夜私人影院久久久久| 久久精品国产网站| 91在线国内视频| 91精品国产黑色紧身裤美女| 久久这里只有精品视频网| 亚洲欧美电影一区二区| 麻豆久久久久久久| 北条麻妃一区二区三区| 欧美美女一区二区在线观看| 久久婷婷色综合| 亚洲自拍另类综合| 国产美女视频一区| 91国产免费看| 久久久国产精品不卡| 亚洲影院久久精品| 国产成人啪免费观看软件| 欧美专区日韩专区| 国产日韩av一区| 奇米888四色在线精品| 99精品国产视频| 精品国产百合女同互慰| 亚洲一区二区三区影院| 顶级嫩模精品视频在线看| 日韩一区二区三区视频在线| 亚洲欧美电影一区二区| 国产精品91一区二区|