亚洲欧美第一页_禁久久精品乱码_粉嫩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);

#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一区二区三区免费野_久草精品视频
欧美一级片在线| 久久美女艺术照精彩视频福利播放| 欧美国产日韩亚洲一区| 久久66热re国产| 欧美精品一区男女天堂| 狠狠狠色丁香婷婷综合激情| 国产午夜精品福利| 成人妖精视频yjsp地址| 亚洲精品日韩一| 欧美日韩你懂得| 免费看黄色91| 国产精品伦理在线| 欧洲人成人精品| 麻豆国产91在线播放| 国产亚洲欧美色| 在线观看av一区二区| 日韩激情中文字幕| 久久久精品一品道一区| 一本一本大道香蕉久在线精品| 亚洲动漫第一页| 欧美r级在线观看| 成人听书哪个软件好| 亚洲精品成人精品456| 6080日韩午夜伦伦午夜伦| 国产美女在线观看一区| 一区二区三区日韩在线观看| 91麻豆精品国产91久久久久久 | 日韩三级在线免费观看| 波多野结衣中文字幕一区| 亚洲电影激情视频网站| 久久久久久久性| 在线日韩国产精品| 狠狠久久亚洲欧美| 一区二区三区中文免费| 久久综合资源网| 日本丰满少妇一区二区三区| 久88久久88久久久| 亚洲综合视频网| 国产精品日韩成人| 精品日韩99亚洲| 欧美在线观看一区二区| 国产高清亚洲一区| 蜜乳av一区二区三区| 亚洲欧美另类图片小说| 久久久国产精品麻豆| 欧美肥妇毛茸茸| 91久久精品午夜一区二区| 国产不卡在线一区| 同产精品九九九| 国产精品久久精品日日| 波多野结衣一区二区三区| 欧美aaaaa成人免费观看视频| 日韩美女视频一区二区| 欧美xxxxxxxx| 91精品国产综合久久久久久漫画 | 亚洲视频免费看| 国产亚洲一区二区三区在线观看| 欧美日韩一区三区四区| 91麻豆免费在线观看| 国产很黄免费观看久久| 久久99精品视频| 蜜臀精品久久久久久蜜臀| 天堂影院一区二区| 亚洲国产成人va在线观看天堂| 中文字幕一区二区三区在线不卡| 久久久精品免费网站| 欧美sm极限捆绑bd| 精品久久久久久久人人人人传媒| 欧美一卡二卡在线观看| 欧美一级一级性生活免费录像| 在线播放/欧美激情| 欧美日韩国产精品自在自线| 欧美又粗又大又爽| 欧美在线播放高清精品| 欧美在线免费观看视频| 在线观看欧美精品| 色94色欧美sute亚洲13| 91老师国产黑色丝袜在线| 91蜜桃传媒精品久久久一区二区| 成人av在线影院| aaa亚洲精品| 91美女在线观看| 97se狠狠狠综合亚洲狠狠| 色哟哟一区二区| 中文字幕中文字幕在线一区 | 日本网站在线观看一区二区三区| 91麻豆精品91久久久久同性| 国产高清久久久久| 精品一区二区综合| 久久激情综合网| 亚洲婷婷在线视频| 久久免费美女视频| 色婷婷av一区二区三区之一色屋| 久久精品国内一区二区三区| 亚洲国产一二三| 麻豆成人91精品二区三区| 欧美日韩电影在线播放| 精品一区二区三区免费毛片爱| 亚洲欧美一区二区三区国产精品 | 国内精品嫩模私拍在线| 国产一区二区主播在线| 成人毛片老司机大片| 91色porny蝌蚪| 欧美高清视频不卡网| 亚洲精品一线二线三线无人区| 欧美极品另类videosde| 一区二区免费视频| 久久国产综合精品| 成人av在线一区二区三区| 欧美日韩国产大片| 久久精品一区蜜桃臀影院| 亚洲精品五月天| 毛片av中文字幕一区二区| av激情成人网| 欧美一区二区免费观在线| 国产精品天干天干在线综合| 午夜精品福利一区二区蜜股av| 韩国精品在线观看| 欧洲亚洲国产日韩| 久久久久久久电影| 亚洲妇女屁股眼交7| 懂色av一区二区三区免费看| 欧美日产在线观看| 亚洲国产精品激情在线观看| 五月天亚洲精品| 97精品超碰一区二区三区| 日韩一级免费观看| 亚洲六月丁香色婷婷综合久久 | 亚洲大片精品永久免费| 国产麻豆精品在线观看| 欧美日韩高清一区| 亚洲私人黄色宅男| 国产一级精品在线| 欧美一卡在线观看| 亚洲一区二区视频| 不卡一卡二卡三乱码免费网站| 欧美一区二区久久| 亚洲精品免费在线观看| 国产激情偷乱视频一区二区三区| 欧美疯狂性受xxxxx喷水图片| 国产精品久久免费看| 国内偷窥港台综合视频在线播放| 欧美三级日本三级少妇99| 亚洲天堂精品视频| 欧美人妖巨大在线| 亚洲福利一区二区三区| 色综合色综合色综合色综合色综合 | 亚洲一二三四区不卡| av在线不卡免费看| 国产欧美一区二区三区在线老狼 | 亚洲自拍偷拍麻豆| av亚洲精华国产精华精| 国产三级欧美三级日产三级99| 日本伊人精品一区二区三区观看方式| 一本一道久久a久久精品| 中文字幕第一区综合| 国产乱码字幕精品高清av| 欧美一区二区免费观在线| 天堂蜜桃一区二区三区| 欧美又粗又大又爽| 亚洲一区电影777| 91成人免费电影| 一区二区三区资源| 色94色欧美sute亚洲线路一ni| 最新国产精品久久精品| 成人永久aaa| 国产精品国产三级国产三级人妇| 国产黄色91视频| 亚洲国产岛国毛片在线| 成人av资源站| 最新成人av在线| 在线观看亚洲a| 日韩av中文字幕一区二区| 日韩精品一区在线| 精品一区二区在线视频| 久久久九九九九| www.久久久久久久久| 亚洲欧美电影院| 欧美日韩国产免费一区二区| 五月婷婷色综合| 日韩欧美一区在线观看| 国产在线精品视频| 国产精品视频看| 在线日韩一区二区| 免费在线欧美视频| 久久久www免费人成精品| 成人av电影在线播放| 亚洲与欧洲av电影| 欧美电影免费观看高清完整版| 国产一区二区三区香蕉| 亚洲欧洲av在线| 717成人午夜免费福利电影| 精品一区二区三区不卡| 亚洲国产成人午夜在线一区| 99精品视频在线免费观看| 一区二区三区欧美在线观看| 91精品啪在线观看国产60岁| 国产一区二区精品久久91| 成人免费一区二区三区视频 | 在线观看视频91|