1. 缘起:一段被遗忘的图形算法
那是一个闷热的周末午后,我在整理老式硬盘时偶然发现了一个名为"95draw.c"的源文件。文件创建日期显示为1995年,文件头注释写着"SPIRAL CURVE DEMO - VGA MODE 13H"。这个用Turbo C 2.0编写的程序瞬间唤起了我的兴趣——它可能是早期图形编程的活化石。
这种螺旋曲线算法在DOS时代的演示程序(demo)中颇为常见,当时程序员们常在有限的硬件资源下创造视觉奇迹。与现代OpenGL或Canvas绘制不同,这类代码直接操作显存,采用极坐标计算和颜色循环等技巧,是理解早期计算机图形学的绝佳样本。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境重建:DOS时代的开发工具链
2.1 Turbo C 2.0的兼容性方案
原始代码依赖Borland Turbo C 2.0的图形库,这在现代系统上已不可直接运行。经过多次尝试,我找到三种可行的方案:
-
DOSBox模拟器(推荐方案):
bash复制# 安装DOSBox及Turbo C sudo apt install dosbox # 配置挂载目录(示例) mount c ~/dosprogs c: cd \tc tc.exe -
OpenWatcom编译器:
这个跨平台工具链支持16位DOS目标,可编译大部分Turbo C代码:bash复制
wcl -bcl=dos -l=dos4g 95draw.c -
现代编译器适配:
通过替换graphics.h为开源实现(如WinBGIM),可在MinGW环境下编译:c复制#include <winbgim.h> // 替换原#include <graphics.h>
注意:直接修改原始代码前务必创建备份。我建议保留原文件为
95draw.orig.c,所有修改在副本上进行。
2.2 VGA模式13H的显示特性
代码中initgraph(&gd,&gm,"")初始化的是320x200分辨率、256色的VGA模式13H。这种模式下:
- 显存起始地址为
0xA0000 - 像素按线性排列,每像素1字节
- 调色板可编
