![](https://csdnimg.cn/release/download_crawler_static/87956344/bg4.jpg)
1.2、 动画绘制:
本程序在绘制动画时考虑到动画的连贯性,使用了两个显存页。一个显存页作为显示页,
另一个显存页作为后台页,绘制图像时仅仅对后台页执行像素操作,显示显存页。动画通过
改变图案的绘制位置实现,当图案绘制触及屏幕边缘时改变绘图方向,且绘制图案鹿的方向
与动画运动方向同向。动画绘制过程涉及以下变量作为参数:当前绘制页数(后台页)
RECENTPAGE、上一次绘制页数(显示页)LASTPAGE、当前绘图的顶点坐标 CURSORX,
CURSORY;上一次的绘制坐标 LASTX,LASTY;横向绘图方向 DIRECX;纵向绘图方向
DIRECY;常量的水平绘制速度和垂直绘制速度 VX,VY。下面将详细介绍动画绘制的过程。
1. 通过交换 RECENTPAGE 与 LASTPAGE 的值,完成对后台页与显示页的页码的交换;
2. 根据 DIRECX 判断绘图方向,选择调用贴图函数 ONEBITMAP 或 ZEROBITMAP 在后台
页上以 CURSORX, CURSORY 为顶点绘制图案。其中 ONEBITMAP 为每列从左到右向显
存录入像素,ZEROBITMAP 为每列从右到左向显存录入数据;
3. 显示绘制完成的后台页并将调用宏 CLRSCREEN 把原显示页清屏;
4. 保存绘制坐标 CURSORX, CURSORY 到 LASTX,LASTY,判断图片是否绘制到屏幕边缘。
如是,改变绘图方向 DIRECX、DIRECY;
5. 计算下次绘图的坐标,根据方向选择顶点坐标加绘制速度 VX,VY 或减 VX,VY。
2. 非工作状态计时模块
2.1、 计时功能:
由于计算机的 8259A 可编程中断控制器以 18.2HZ 的频率产生中断信号,每次 8259A 产
生中断信号时 CPU 将处理 1CH 号中断向量所指向的终端处理程序。本程序通过改变 1CH 号
中断处理程序实现计时功能。
在每次 1CH 号中断发生时,若判断运行标志 FLAG 得屏保绘制程序未运行,将定时计数
变量 CLKCNT 减一,若 CLKCNT 归零,则调用屏幕保护函数进入屏保绘制过程。
2.2、 判断是否处于工作状态
在 DOS 环境下,可认为当无字符输入时为非工作状态。因此本程序通过改变键盘中断处
理程序实现非工作状态的计时。具体实现方法为每次有键盘输入时将定时计数变量 CLKCNT
复位,对非工作状态重新计时并调用原键盘中断处理函数。