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

📄 common.cpp

📁 基于PC104平台
💻 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 + -