📄 common.cpp
字号:
#include "class.h"
#define DISP_BASE 0xb800
#define DISP_MAX_X 80
#define DISP_MAX_Y 25
/*CQue::CQue()
{
}
CQue::CQue(INT8U type, INT16U size)
{
Init(type, size);
}
CQue::~CQue()
{
Destroy();
}
BOOLEAN CQue::Init(INT8U type, INT16U size)
{
BufPtr = NULL;
Type = type;
BufSize = size;
Head = 0;
Tail = 0;
Count = 0;
switch (Type) {
case IDINT8U:
BufPtr = new INT8U[BufSize];
break;
case IDINT16U:
BufPtr = new INT16U[BufSize];
break;
}
if (BufPtr == NULL) return FALSE;
else return TRUE;
}
void CQue::Destroy()
{
delete BufPtr;
}
void CQue::Put(INT8U data)
{
INT8U *Buf;
Buf = (INT8U *)BufPtr;
Buf[Head++] = data;
if (Head >= BufSize) {
Head = 0;
if (Tail == Head) Tail++;
}
if (Count < BufSize) Count++;
}
BOOLEAN CQue::Get(INT8U *ptr)
{
INT8U *Buf;
Buf = (INT8U *)BufPtr;
if (Count <= 0) return FALSE;
*ptr = Buf[Tail++];
Count--;
if (Tail >= BufSize) Tail = 0;
return TRUE;
}
BOOLEAN CQue::Empty()
{
if (Count == 0) return TRUE;
return FALSE;
} */
void PC_DispClrScr (INT8U color)
{
INT8U far *pscr;
INT16U i;
pscr = (INT8U far *) MK_FP(DISP_BASE, 0x0000);
for (i = 0; i < (DISP_MAX_X * DISP_MAX_Y); i++) { /* PC display has 80 columns and 25 lines */
*pscr++ = ' '; /* Put ' ' character in video RAM */
*pscr++ = color; /* Put video attribute in video RAM */
}
}
void PC_DispClrLine (INT8U y, INT8U color)
{
INT8U far *pscr;
INT8U i;
pscr = (INT8U *) MK_FP(DISP_BASE, (INT16U)y * DISP_MAX_X * 2);
for (i = 0; i < DISP_MAX_X; i++) {
*pscr++ = ' '; /* Put ' ' character in video RAM */
*pscr++ = color; /* Put video attribute in video RAM */
}
}
void PC_DispChar (INT8U x, INT8U y, INT8U c, INT8U color)
{
INT8U far *pscr;
INT16U offset;
offset = (INT16U)y * DISP_MAX_X * 2 + (INT16U)x * 2; /* Calculate position on the screen */
pscr = (INT8U *) MK_FP(DISP_BASE, offset);
*pscr++ = c; /* Put character in video RAM */
*pscr = color; /* Put video attribute in video RAM */
}
void PC_DispStr (INT8U x, INT8U y, INT8U *s, INT8U color)
{
INT8U far *pscr;
INT16U offset;
offset = (INT16U)y * DISP_MAX_X * 2 + (INT16U)x * 2; /* Calculate position of 1st character */
pscr = (INT8U *) MK_FP(DISP_BASE, offset);
while (*s) {
*pscr++ = *s++; /* Put character in video RAM */
*pscr++ = color; /* Put video attribute in video RAM */
}
}
void PC_DispWindow(INT8U x1, INT8U y1, INT8U width, INT8U len, INT8U color, BOOLEAN shadow, INT8U shcolor, BOOLEAN Frame)
{
INT8U y, x, bkcolor;
INT8U far *pscr;
INT16U offset;
char Ftype[] = {'
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -