📄 lib.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 + -