论文部分内容阅读
《计算机世界月刊》1993年7期的《利用VGA卡剩余帧缓冲区开发屏幕菜单》存在一些问题,不揣冒昧,想就此写一点自己的体会并对原文做一点补充修正。原文第一个错误是第二屏幕的视频区首地址计算有误,原文是y值加了150KB后,再用这个y值去算第二屏幕首地址,事实上第二屏首地址计算应是这样:h_b_addr=(unsigned char)((480*80)/256)1_b_addr=(unsigned char)((480*80)%256)即第二屏幕从第480条垂直方向扫描线开始。第二个错误是第二屏幕即使作了上述修正后显示也不完全正常。具体讲是这样:标准VGA卡视频缓冲区有256KB,相应于字符显示最大显示行数是50行。第二屏幕的显示行坐标是从30至50,另外,由于第二屏幕有效扫描线数只有338条(垂直方向),这个值是按照256KB视频缓冲容量算出来的即:最大的垂直方向扫描线数=256*1024/4/80=819.2
“Computer World Monthly” in 1993 July issue of “the use of VGA card frame buffer to develop the remaining screen menu,” there are some problems, do not try to ignorance, would like to write some of my own experience and make a little additional amendments to the original. The first error is the original video of the second screen, the first address is calculated incorrectly, the original is y value plus 150KB, then use this y value to calculate the first screen of the second address, in fact, the second screen should be the first address of the address calculation Thus: h_b_addr = (unsigned char) (480 * 80) / 256) 1_b_addr = (unsigned char) ((480 * 80)% 256) That is, the second screen starts from the 480th vertical scanning line. The second error is that the second screen is not completely normal even after the above correction. Specifically, this is: Standard VGA card video buffer 256KB, corresponding to the maximum number of characters displayed line is 50 lines. The second screen has a display line coordinate of from 30 to 50. In addition, since the number of effective second scanning lines is only 338 (vertical direction), this value is calculated in accordance with the buffer capacity of 256 KB video, ie, the maximum vertical scanning line Number = 256 * 1024/4/80 = 819.2