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

📄 lib.cpp

📁 基于PC104平台
💻 CPP
字号:
#include "common.h"
#define DISP_BASE 0xb800
#define DISP_MAX_X 80
#define DISP_MAX_Y 25

INT32U AccessCode;
INT32U SecuCode;
// bcd code convert to binary code
WORD BcdtoBin(WORD bcd)
{
   WORD temp = 0;
   temp  = ((bcd & 0xf000) >> 12) * 1000;
   temp += ((bcd & 0x0f00) >> 8) * 100;
   temp += ((bcd & 0x00f0) >> 4) * 10;
   temp += bcd & 0x000f;
   return(temp);
}

// binary code convert to bcd code (4 decimal)
WORD BintoBcd(WORD bin)
{
	WORD temp, value = 0;
	if (bin > 9999) return(0xffff);  // if bin>9999 bcd code is so large
	value = (bin / 1000) << 12;      // kilo
	temp = bin % 1000;
	value |= (temp / 100) << 8;      // hundred
	temp = temp % 100;
	value |= (temp / 10) << 4;       // teen
	temp = temp % 10;
	value |= temp;                   // last one
	return(value);
}

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 schar, INT8U x1, INT8U y1, INT8U width, INT8U high, INT8U color, BOOLEAN shadow, INT8U shcolor, BYTE Frame, BYTE fmcolor)
{
	INT8U       y, x, bkcolor;
	INT8U  far *pscr;
	INT16U      offset;
	char        Ftype[2][6] = {{'

⌨️ 快捷键说明

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