putblock.c
来自「C语言实现汉字系统源代码」· C语言 代码 · 共 38 行
C
38 行
/*-----------------------------------------------------------
函数 putblock : 恢复屏幕映象块。
-----------------------------------------------------------*/
#include <hanenv.h>
#include <alloc.h>
void putblock(col,line,width,high,block)
int col; /* 屏幕图象块左上角列坐标(以字节为单位) */
int line; /* 屏幕图象块左上角行坐标(以象素为单位) */
int width; /* 屏幕图象块宽度(以字节为单位) */
int high; /* 屏幕图象块高度(以象素为单位) */
char **block; /* 屏幕图象块存储缓冲区 */
{
register unsigned i,j,k;
char *p;
if(block)
{
_VideoBusy = YES;
for(i=1,j=0;i<9;i*=2,j++)
{
p = block[j];
outportb(0x3c4,2); /* 选择颜色平面允许写寄存器 */
outportb(0x3c5,i); /* 允许写第i个平面 */
for(k=0;k<high;k++)
{
movedata(FP_SEG(p),FP_OFF(p),0xa000,(line+k+_ScreenTop)*_ScreenWidth+col,width);
p += width;
}
free(block[j]);
}
outportb(0x3c4,2); /* 恢复允许写所有位平面 */
outportb(0x3c5,0x0f);
_VideoBusy = NO;
free(block);
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?