<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>计算机考古 on 软件开发大郭的技术博客</title>
		<link>https://blog.grabbyte.com/categories/%E8%AE%A1%E7%AE%97%E6%9C%BA%E8%80%83%E5%8F%A4/</link>
		<description>Recent content in 计算机考古 on 软件开发大郭的技术博客</description>
		<generator>Hugo</generator>
		<language>en</language>
		
		
		
		
			<lastBuildDate>Tue, 20 May 2025 10:06:07 +0800</lastBuildDate>
		
			<atom:link href="https://blog.grabbyte.com/categories/%E8%AE%A1%E7%AE%97%E6%9C%BA%E8%80%83%E5%8F%A4/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>Rust DOS：使用 Rust 语言创建 DOS 可执行文件</title>
				<link>https://blog.grabbyte.com/p/2025/05/20.html</link>
				<pubDate>Tue, 20 May 2025 10:06:07 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2025/05/20.html</guid>
				<description>&lt;p&gt;Rust 编译 DOS 可执行文件（使用 Rust 创建 DOS 可执行文件或第一阶引导加载器）&#xA;可以使用 Rust 创建 DOS 可执行文件或第一阶引导加载器。&#xA;以下是一个快速演示，展示如何为 DOS 创建 COM 可执行文件。&lt;/p&gt;</description>
			</item>
			<item>
				<title>2000年第一次DOS下玩FC游戏-‌NESticle‌游戏模拟器</title>
				<link>https://blog.grabbyte.com/p/2025/02/02-1450.html</link>
				<pubDate>Sun, 02 Feb 2025 14:50:58 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2025/02/02-1450.html</guid>
				<description>&lt;p&gt;当年2000年上机房第一次玩的游戏,就是用的这个软件,玩超级马里奥,魂斗罗等.&#xA;当时一排是用win95的电脑,一排是用的486的电脑,运行DOS系统,在DOS系统下,我发现了这款&#xA;模拟器,于是开启了玩游戏的新世界.&lt;/p&gt;</description>
			</item>
			<item>
				<title>DOS下的一些编程语言</title>
				<link>https://blog.grabbyte.com/p/2025/02/02.html</link>
				<pubDate>Sun, 02 Feb 2025 13:09:21 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2025/02/02.html</guid>
				<description>&lt;p&gt;Qbasic 7.1 2.29M Microsoft出的很著名也很经典的QBasic版本的最高版本,全图形环境.对于初学编程或想编写简单程序的人来说很实用,而要想编写更强大的软件可以使用下面更强大的编程工具.&lt;/p&gt;</description>
			</item>
			<item>
				<title>DJGPP与Allegro库配合编译MS-DOS游戏</title>
				<link>https://blog.grabbyte.com/p/2023/07/27.html</link>
				<pubDate>Thu, 27 Jul 2023 16:36:34 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2023/07/27.html</guid>
				<description>&lt;h1 id=&#34;简介&#34;&gt;简介&lt;/h1&gt;&#xA;&lt;p&gt;Allegro（&lt;a href=&#34;http://www.allegro.cc/&#34;&gt;http://www.allegro.cc&lt;/a&gt;）是一个库，其中包含一大堆用于制作游戏的有用例程。&lt;/p&gt;&#xA;&lt;p&gt;它具有图形命令，键盘，鼠标和操纵杆读取，采样的声音和音乐播放，以及具有自己的一组3D投影和计算例程的定点数学库。&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;它支持.BMP，.LBM， .PCX 和 .TGA图像。&lt;/li&gt;&#xA;&lt;li&gt;它有一个MIDI播放器，可以路由到MS-DOS上的Adlib声卡补丁。&lt;/li&gt;&#xA;&lt;li&gt;它支持自己的位图字体，但不支持矢量（TrueType/OpenType）字体。&lt;/li&gt;&#xA;&lt;li&gt;它拥有自己完整的GUI库，与其内部位图结构相结合，所有图形样式都模仿Atari ST。&lt;/li&gt;&#xA;&lt;li&gt;它支持一大堆PlayStation和任天堂控制器&amp;hellip;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;您只能使用在家中焊接在一起的适配器连接到计算机的并行端口。&lt;/p&gt;</description>
			</item>
			<item>
				<title>256 色 VGA 编程 C 语言 介绍</title>
				<link>https://blog.grabbyte.com/p/2023/07/23-2005.html</link>
				<pubDate>Sun, 23 Jul 2023 20:05:49 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2023/07/23-2005.html</guid>
				<description>&lt;h1 id=&#34;介绍&#34;&gt;介绍&lt;/h1&gt;&#xA;&lt;p&gt;本节内容：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://www.brackeen.com/vga/intro.html#1&#34;&gt;本教程的适用对象&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://www.brackeen.com/vga/intro.html#2&#34;&gt;所需材料&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://www.brackeen.com/vga/intro.html#3&#34;&gt;文档语法&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;本教程的适用对象&#34;&gt;&lt;a href=&#34;&#34;&gt;本教程的适用对象&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;本教程涵盖了 C 语言中 VGA 编程的许多主题 程序设计语言。本教程的用户应具有 全面了解C语言，还应该有 熟悉DOS和BIOS功能的调用和中断。&lt;/p&gt;</description>
			</item>
			<item>
				<title>256 色 VGA 编程 C 语言</title>
				<link>https://blog.grabbyte.com/p/2023/07/23-2004.html</link>
				<pubDate>Sun, 23 Jul 2023 20:04:46 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2023/07/23-2004.html</guid>
				<description>&lt;p&gt;关于 DOS 操作系统的 VGA 编程的五部分教程。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.brackeen.com/vga/intro.html&#34;&gt;介绍&lt;/a&gt;本教程简介。&lt;a href=&#34;http://www.brackeen.com/vga/basics.html&#34;&gt;VGA 基础知识&lt;/a&gt;设置视频模式、绘制像素和模式0x13内存。&lt;a href=&#34;http://www.brackeen.com/vga/shapes.html&#34;&gt;基本形状和线条&lt;/a&gt;绘制线条、多边形、矩形和圆形。此外，布雷森纳姆的算法，定点数学和预计算表。&lt;a href=&#34;http://www.brackeen.com/vga/bitmaps.html&#34;&gt;位图和调色板操作&lt;/a&gt;BMP 文件格式、绘图位图和调色板操作。&lt;a href=&#34;http://www.brackeen.com/vga/mouse.html&#34;&gt;鼠标支持和动画&lt;/a&gt;动画、鼠标移动和鼠标按钮检测。&lt;a href=&#34;http://www.brackeen.com/vga/unchain.html&#34;&gt;双缓冲、翻页和无链模式&lt;/a&gt;双缓冲、翻页、非链接模式结构以及 256x320 以外的 200 色模式。&lt;a href=&#34;http://www.brackeen.com/vga/resource.html&#34;&gt;链接和其他资源&lt;/a&gt;了解其他站点以及从何处获取编译器。&lt;a href=&#34;http://www.brackeen.com/vga/download.html&#34;&gt;下载&lt;/a&gt;下载源代码、可执行文件或整个教程。&lt;a href=&#34;http://www.brackeen.com/vga/trouble.html&#34;&gt;常见问题解答和故障排除&lt;/a&gt;阅读常见问题解答并解决常见的 VGA 编程问题。## 快速入门&lt;/p&gt;</description>
			</item>
			<item>
				<title>VESA图形模式列表</title>
				<link>https://blog.grabbyte.com/p/2023/06/30-0737.html</link>
				<pubDate>Fri, 30 Jun 2023 07:37:16 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2023/06/30-0737.html</guid>
				<description>&lt;p&gt;VESA图形模式列表：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Values for VESA video mode:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; 00h-FFh OEM video modes (see #00010 at AH=00h)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; 100h&#x9;640x400x256&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; 101h&#x9;640x480x256&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; 102h&#x9;800x600x16&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; 103h&#x9;800x600x256&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; 104h&#x9;1024x768x16&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; 105h&#x9;1024x768x256&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; 106h&#x9;1280x1024x16&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; 107h&#x9;1280x1024x256&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; 108h&#x9;80x60 text&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; 109h&#x9;132x25 text&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; 10Ah&#x9;132x43 text&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; 10Bh&#x9;132x50 text&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; 10Ch&#x9;132x60 text&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;---VBE v1.2+ ---&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; 10Dh&#x9;320x200x32K&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; 10Eh&#x9;320x200x64K&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; 10Fh&#x9;320x200x16M&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; 110h&#x9;640x480x32K&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; 111h&#x9;640x480x64K&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; 112h&#x9;640x480x16M&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; 113h&#x9;800x600x32K&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; 114h&#x9;800x600x64K&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; 115h&#x9;800x600x16M&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; 116h&#x9;1024x768x32K&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; 117h&#x9;1024x768x64K&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; 118h&#x9;1024x768x16M&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; 119h&#x9;1280x1024x32K (1:5:5:5)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; 11Ah&#x9;1280x1024x64K (5:6:5)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; 11Bh&#x9;1280x1024x16M&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;---VBE 2.0+ ---&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; 120h&#x9;1600x1200x256&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; 121h&#x9;1600x1200x32K&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; 122h&#x9;1600x1200x64K&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;81FFh&#x9;special full-memory access mode&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;注意：特殊模式81FFh保留视频存储器的内容&lt;/p&gt;</description>
			</item>
			<item>
				<title>DOS VGA图形驱动开发</title>
				<link>https://blog.grabbyte.com/p/2023/06/30.html</link>
				<pubDate>Fri, 30 Jun 2023 07:32:46 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2023/06/30.html</guid>
				<description>&lt;p&gt;在DOS中，如果你想要高于VGA模式的图形，你需要VESA BIOS扩展。 （VBE）。通常卡仅支持 VESA 模式的有限子集，并且存在不同的 VESA 标准版本（1.2、2.0、3.0）。&#xA;如果您有特定于卡的 VESA 驱动程序，则可以获得完整的 VESA 支持。&lt;/p&gt;</description>
			</item>
			<item>
				<title>DJGPP下调用中断的方法</title>
				<link>https://blog.grabbyte.com/p/2023/06/28-2223.html</link>
				<pubDate>Wed, 28 Jun 2023 22:23:47 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2023/06/28-2223.html</guid>
				<description>&lt;p&gt;DJGPP是DOS下完整的32位的C/C++保护模式的编译器，运行于386以上机器。DJGPP有一个好帮手叫作Allegro，它是个图形/声音编程库，功能非常强大，应用于界面编程非常方便。可以Allegro编程库编写程序，然后用DJGPP编译。&lt;/p&gt;</description>
			</item>
			<item>
				<title>DOS 鼠标中断 33h</title>
				<link>https://blog.grabbyte.com/p/2023/06/28-2207.html</link>
				<pubDate>Wed, 28 Jun 2023 22:07:39 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2023/06/28-2207.html</guid>
				<description>&lt;p&gt;BIOS中断33h，鼠标中断。&lt;/p&gt;&#xA;&lt;p&gt;AH = 0&lt;/p&gt;&#xA;&lt;p&gt;初始化鼠标驱动程序。&lt;/p&gt;&#xA;&lt;p&gt;返回：&lt;/p&gt;&#xA;&lt;p&gt;AX = 按钮数&lt;/p&gt;&#xA;&lt;p&gt;AH = 1&lt;/p&gt;&#xA;&lt;p&gt;打开鼠标&lt;/p&gt;&#xA;&lt;p&gt;AH = 2&lt;/p&gt;&#xA;&lt;p&gt;关闭鼠标&lt;/p&gt;&#xA;&lt;p&gt;AH = 3&lt;/p&gt;&#xA;&lt;p&gt;报告状态。&lt;/p&gt;&#xA;&lt;p&gt;BX = 按下鼠标按钮（1 - 左，2 - 右，3 - 居中），CX = X 坐标，DX = Y 坐标&lt;/p&gt;</description>
			</item>
			<item>
				<title>VSCODE插件 VS Code DOS Development Extension （dos-dev）</title>
				<link>https://blog.grabbyte.com/p/2023/06/28-1940.html</link>
				<pubDate>Wed, 28 Jun 2023 19:40:28 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2023/06/28-1940.html</guid>
				<description>&lt;p&gt;VS Code DOS 开发扩展是一种即插即用解决方案，用于在 C/C++ 中编写和调试 32 位保护模式 DOS 应用程序。&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://marketplace.visualstudio.com/items?itemName=badlogicgames.dos-dev&#34;&gt;dos-dev - Visual Studio Marketplace&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;特征&#34;&gt;特征&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;自动安装所需工具&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.delorie.com/djgpp/&#34;&gt;DJGPP，&lt;/a&gt;GCC 12.1.0的一个分支，用于编译C / C++ 32位保护模式DOS应用程序&lt;/li&gt;&#xA;&lt;li&gt;用于调试的 &lt;a href=&#34;https://github.com/badlogic/gdb-7.1a-djgpp/releases/tag/gdb-7.1a-djgpp&#34;&gt;GDB 分支&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/badlogic/dosbox-x/&#34;&gt;一个DOSBox-x分支&lt;/a&gt;，经过修改以支持通过GDB进行远程调试&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://ninja-build.org/&#34;&gt;忍者&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;VS Code 中 C/C++ 开发的扩展&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools-extension-pack&#34;&gt;C/C++扩展包&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://marketplace.visualstudio.com/items?itemName=ms-vscode.cmake-tools&#34;&gt;极客工具&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://marketplace.visualstudio.com/items?itemName=llvm-vs-code-extensions.vscode-clangd&#34;&gt;叮叮当当&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://marketplace.visualstudio.com/items?itemName=webfreak.debug&#34;&gt;本机调试&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;用于调试的 DOSBox-x 配置&lt;/li&gt;&#xA;&lt;li&gt;DJGPP 的 CMake 工具链文件&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;简单的项目初始化&#xA;&lt;ul&gt;&#xA;&lt;li&gt;基于 CMake 的构建，无论是在 VS Code 中还是在命令行上&lt;/li&gt;&#xA;&lt;li&gt;用于调试的 VS 代码启动配置&lt;/li&gt;&#xA;&lt;li&gt;C/C++ 开发的合理默认设置&lt;/li&gt;&#xA;&lt;li&gt;用于调试的 &lt;a href=&#34;https://sourceware.org/gdb/onlinedocs/gdb/Remote-Stub.html&#34;&gt;GDB 存根&lt;/a&gt;集成&lt;/li&gt;&#xA;&lt;li&gt;演示应用程序0x13等待按键时绘制像素的简单模式&lt;/li&gt;&#xA;&lt;li&gt;明智的 .gitignore&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;通过 GDB 在 VS Code 和命令行中调试支持&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;快速入门&#34;&gt;快速入门&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;安装 CMake&#xA;&lt;ul&gt;&#xA;&lt;li&gt;在 Linux 上，通过包管理器安装这些包&#xA;&lt;code&gt;libncurses5 libfl-dev libslirp-dev libfluidsynth-dev&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;在 VS Code 中安装扩展&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;CTRL+SHIFT+P&lt;/code&gt;（或在 macOS 上）&lt;code&gt;CMD+SHIFT+P&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;ext install badlogicgames.dos-dev&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;打开一个新的空文件夹，然后&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;CTRL+SHIFT+P&lt;/code&gt;（或在 macOS 上）&lt;code&gt;CMD+SHIFT+P&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;DOS: Init Project&lt;/code&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;当系统要求安装 DOS 工具时，请选择 &lt;code&gt;Yes&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;当系统要求安装 clangd 时，请选择 &lt;code&gt;Yes&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;按下可在 DOSBox-x 中构建和调试演示应用程序。&lt;code&gt;F5&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;要求&#34;&gt;要求&lt;/h2&gt;&#xA;&lt;p&gt;您需要安装以下第三方软件：&lt;/p&gt;</description>
			</item>
			<item>
				<title>BIOS中断服务</title>
				<link>https://blog.grabbyte.com/p/2023/06/28.html</link>
				<pubDate>Wed, 28 Jun 2023 11:40:29 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2023/06/28.html</guid>
				<description>&lt;p&gt;&lt;strong&gt;1、显示服务(Video Service——INT 10H)&lt;/strong&gt;&#xA;00H —设置显示器模式0CH —写图形象素&#xA;01H —设置[光标形状0DH —读图形象素&#xA;02H —设置光标位置0EH —在Teletype模式下显示字符&#xA;03H —读取光标信息0FH —读取显示器模式&#xA;04H —读取光笔位置10H —颜色&#xA;05H —设置显示页11H —字体&#xA;06H、07H —初始化或滚屏12H —显示器的配置&#xA;08H —读光标处的字符及其属性13H —在Teletype模式下显示字符串&#xA;09H —在光标处按指定属性显示字符1AH —读取/设置显示组合编码&#xA;0AH —在当前光标处显示字符1BH —读取功能/状态信息&#xA;0BH —设置调色板、背景色或边框1CH —保存/恢复显示器状态&#xA;(1)、功能00H&#xA;功能描述：设置显示器模式&#xA;入口参数：AH＝00H&#xA;AL＝显示器模式，见下表所示&#xA;出口参数：无&#xA;可用的显示模式如下所列：&#xA;显示模式显示模式属性显示模式显示模式属性&#xA;00H40×2516色 文本01H40×2516色 文本&#xA;02H80×2516色 文本03H80×2516色 文本&#xA;04H320×2004色05H320×2004色&#xA;06H640×2002色07H80×252色 文本&#xA;08H160×20016色09H320×20016色&#xA;0AH640×2004色0BH保留　&#xA;0CH保留0DH320×20016色&#xA;0EH640×20016色0FH640×3502(单色)&#xA;10H640×3504色10H640×35016色&#xA;11H640×4802色12H640×48016色&#xA;13H640×480256色&#xA;对于超级VGA显示卡，我们可用AX＝4F02H和下列BX的值来设置其显示模式。&#xA;BX显示模式属性BX显示模式属性&#xA;100H640×400256色101H640×480256色&#xA;102H800×60016色103H800×600256色&#xA;104H1024×76816色105H1024×768256色&#xA;106H1280×102416色107H1280×1024256色&#xA;108H80×60文本模式109H132×25文本模式&#xA;10AH132×43文本模式10BH132×50文本模式&#xA;10CH132×60文本模式&#xA;(2)、功能01H&#xA;功能描述：设置光标形状&#xA;入口参数：AH＝01H&#xA;CH低四位＝光标的起始行&#xA;CL低四位＝光标的终止行&#xA;出口参数：无&#xA;(3)、功能02H&#xA;功能描述：用文本坐标下设置光标位置&#xA;入口参数：AH＝02H&#xA;BH＝显示页码&#xA;DH＝行(Y坐标)&#xA;DL＝列(X坐标)&#xA;出口参数：无&#xA;(4)、功能03H&#xA;功能描述：在文本坐标下，读取光标各种信息&#xA;入口参数：AH＝03H&#xA;BH＝显示页码&#xA;出口参数：CH＝光标的起始行&#xA;CL＝光标的终止行&#xA;DH＝行(Y坐标)&#xA;DL＝列(X坐标)&#xA;(5)、功能04H&#xA;功能描述：获取当前状态和光笔位置&#xA;入口参数：AH＝04H&#xA;出口参数：AH＝00h——光笔未按下/未触发，01h——光笔已按下/已触发&#xA;BX＝象素列(图形X坐标)&#xA;CH＝象素行(图形Y坐标，显示模式：04H~06H)&#xA;CX＝象素行(图形Y坐标，显示模式：0DH~10H)&#xA;DH＝字符行(文本Y坐标)&#xA;DL＝字符列(文本X坐标)&#xA;(6)、功能05H&#xA;功能描述：设置显示页，即选择活动的显示页&#xA;入口参数：AH＝05H&#xA;AL＝显示页&#xA;对于CGA、EGA、MCGA和VGA，其显示页如下表所列： 模式页数显示器类型&#xA;00H、01H0~7CGA、EGA、MCGA、VGA&#xA;02H、03H0~3CGA&#xA;02H、03H0~7EGA、MCGA、VGA&#xA;07H0~7EGA、VGA&#xA;0DH0~7EGA、VGA&#xA;0EH0~3EGA、VGA&#xA;0FH0~1EGA、VGA&#xA;10H0~1EGA、VGA&#xA;对于PCjr：&#xA;AL＝80H——读取CRT/CPU页寄存器&#xA;81H——设置CPU页寄存器&#xA;82H——设置CRT页寄存器&#xA;83H——设置CRT/CPU页寄存器&#xA;BH＝CRT页(子功能号82H和83H)&#xA;BL＝CPU页(子功能号81H和83H)&#xA;出口参数：对于前者，无出口参数，但对PCjr在子功能80H~83H调用下，有：BH＝CRT页寄存器，BL＝CPU页寄存器&#xA;(7)、功能06H和07H&#xA;功能描述：初始化屏幕或滚屏&#xA;入口参数：AH＝06H——向上滚屏，07H——向下滚屏&#xA;AL＝滚动行数(0——清窗口)&#xA;BH＝空白区域的缺省属性&#xA;(CH、CL)＝窗口的左上角位置(Y坐标，X坐标)&#xA;(DH、DL)＝窗口的右下角位置(Y坐标，X坐标)&#xA;出口参数：无&#xA;(8)、功能08H&#xA;功能描述：读光标处的字符及其属性&#xA;入口参数：AH＝08H&#xA;BH＝显示页码&#xA;出口参数：AH＝属性&#xA;AL＝字符&#xA;(9)、功能09H&#xA;功能描述：在当前光标处按指定属性显示字符&#xA;入口参数：AH＝09H&#xA;AL＝字符&#xA;BH＝显示页码&#xA;BL＝属性(文本模式)或颜色(图形模式)&#xA;CX＝重复输出字符的次数&#xA;出口参数：无&#xA;(10)、功能0AH&#xA;功能描述：在当前光标处按原有属性显示字符&#xA;入口参数：AH＝0AH&#xA;AL＝字符&#xA;BH＝显示页码&#xA;BL＝颜色(图形模式，仅适用于PCjr)&#xA;CX＝重复输出字符的次数&#xA;出口参数：无&#xA;(11)、功能0BH&#xA;功能描述：设置调色板、背景色或边框&#xA;入口参数：AH＝0BH&#xA;设置颜色：BH＝00H，BL＝颜色&#xA;选择调色板：BH＝01H，BL＝调色板(320×200、4种颜色的图形模式)&#xA;出口参数：无&#xA;(12)、功能0CH&#xA;功能描述：写图形象素&#xA;入口参数：AH＝0CH&#xA;AL＝象素值&#xA;BH＝页码&#xA;(CX、DX)＝图形坐标列(X)、行(Y)&#xA;出口参数：无&#xA;(13)、功能0DH&#xA;功能描述：读图形象素&#xA;入口参数：AH＝0DH&#xA;BH＝页码&#xA;(CX、DX)＝图形坐标列(X)、行(Y)&#xA;出口参数：AL＝象素值&#xA;(14)、功能0EH&#xA;功能描述：在Teletype模式下显示字符&#xA;入口参数：AH＝0EH&#xA;AL＝字符&#xA;BH＝页码&#xA;BL＝前景色(图形模式)&#xA;出口参数：无&#xA;(15)、功能0FH&#xA;功能描述：读取显示器模式&#xA;入口参数：AH＝0FH&#xA;出口参数：AH＝屏幕字符的列数&#xA;AL＝显示模式(参见功能00H中的说明)&#xA;BH＝页码&#xA;(16)、功能10H&#xA;功能描述：颜色中断。其子功能说明如下： 功能号　子功能名称功能号　子功能名称&#xA;00H — 设置调色板寄存器01H — 设置边框颜色&#xA;02H — 设置调色板和边框03H — 触发闪烁/亮显位&#xA;07H — 读取调色板寄存器08H — 读取边框颜色&#xA;09H — 读取调色板和边框10H — 设置颜色寄存器&#xA;12H — 设置颜色寄存器块13H — 设置颜色页状态&#xA;15H — 读取颜色寄存器17H — 读取颜色寄存器块&#xA;1AH — 读取颜色页状态1BH — 设置灰度值&#xA;(17)、功能11H&#xA;功能描述：字体中断。其子功能说明如下： 子功能号子功能名称&#xA;00H装入用户字体和可编程控制器&#xA;10H装入用户字体和可编程控制器&#xA;01H装入8×14 ROM字体和可编程控制器&#xA;11H装入8×14 ROM字体和可编程控制器&#xA;02H装入8×8 ROM字体和可编程控制器&#xA;12H装入8×8 ROM字体和可编程控制器&#xA;03H设置块指示器&#xA;04H装入8×16 ROM字体和可编程控制器&#xA;14H装入8×16 ROM字体和可编程控制器&#xA;20H设置INT 1Fh字体指针&#xA;21H为用户字体设置INT 43h&#xA;22H为8×14 ROM字体设置INT 43H&#xA;23H为8×8 ROM字体设置INT 43H&#xA;24H为8×16 ROM字体设置INT 43H&#xA;30H读取字体信息&#xA;(18)、功能12H&#xA;功能描述：显示器的配置中断。其子功能说明如下： 功能号 功能名称 功能号 功能名称&#xA;10H — 读取配置信息20H — 选择屏幕打印&#xA;30H — 设置扫描行31H — 允许/禁止装入缺省调色板&#xA;32H — 允许/禁止显示33H — 允许/禁止灰度求和&#xA;34H — 允许/禁止光标模拟35H — 切换活动显示&#xA;36H — 允许/禁止屏幕刷新&#xA;(19)、功能13H&#xA;功能描述：在Teletype模式下显示字符串&#xA;入口参数：AH＝13H&#xA;BH＝页码&#xA;BL＝属性(若AL=00H或01H)&#xA;CX＝显示字符串长度&#xA;(DH、DL)＝坐标(行、列)&#xA;ES:BP＝显示字符串的地址 AL＝显示输出方式&#xA;0——字符串中只含显示字符，其显示属性在BL中。显示后，光标位置不变&#xA;1——字符串中只含显示字符，其显示属性在BL中。显示后，光标位置改变&#xA;2——字符串中含显示字符和显示属性。显示后，光标位置不变&#xA;3——字符串中含显示字符和显示属性。显示后，光标位置改变&#xA;出口参数：无&#xA;(20)、功能1AH&#xA;功能描述：读取/设置显示组合编码，仅PS/2有效，在此从略&#xA;(21)、功能1BH&#xA;功能描述：读取功能/状态信息，仅PS/2有效，在此从略&#xA;(22)、功能1CH&#xA;功能描述：保存/恢复显示器状态，仅PS/2有效，在此从略&#xA;&lt;strong&gt;2、直接磁盘服务(Direct Disk Service——INT 13H)&lt;/strong&gt;&#xA;00H —磁盘系统复位0EH —读扇区缓冲区&#xA;01H —读取磁盘系统状态0FH —写扇区缓冲区&#xA;02H —读扇区10H —读取驱动器状态&#xA;03H —写扇区11H —校准驱动器&#xA;04H —检验扇区12H —控制器RAM诊断&#xA;05H —格式化磁道13H —控制器驱动诊断&#xA;06H —格式化坏磁道14H —控制器内部诊断&#xA;07H —格式化驱动器15H —读取磁盘类型&#xA;08H —读取驱动器参数16H —读取磁盘变化状态&#xA;09H —初始化硬盘参数17H —设置磁盘类型&#xA;0AH —读长扇区18H —设置格式化媒体类型&#xA;0BH —写长扇区19H —磁头保护&#xA;0CH —查寻1AH —格式化ESDI驱动器&#xA;0DH —硬盘系统复位&#xA;(1)、功能00H&#xA;功能描述：磁盘系统复位&#xA;入口参数：AH＝00H&#xA;DL＝驱动器，00H~7FH：软盘；80H~0FFH：硬盘&#xA;出口参数：CF＝0——操作成功，AH＝00H，否则，AH＝状态代码，参见功能号01H中的说明&#xA;(2)、功能01H&#xA;功能描述：读取磁盘系统状态&#xA;入口参数：AH＝01H&#xA;DL＝驱动器，00H~7FH：软盘；80H~0FFH：硬盘&#xA;出口参数：AH＝00H，AL＝状态代码，其定义如下：&#xA;00H — 无错 01H — 非法命令&#xA;02H — 地址目标未发现03H — 磁盘写保护(软盘)&#xA;04H — 扇区未发现05H — 复位失败(硬盘)&#xA;06H — 软盘取出(软盘)07H — 错误的参数表(硬盘)&#xA;08H — DMA越界(软盘)09H — DMA超过64K界限&#xA;0AH — 错误的扇区标志(硬盘)0BH — 错误的磁道标志(硬盘)&#xA;0CH — 介质类型未发现(软盘)0DH — 格式化时非法扇区号(硬盘)&#xA;0EH — 控制数据地址目标被发现(硬盘)0FH — DMA仲裁越界(硬盘)&#xA;10H — 不正确的CRC或ECC编码11H — ECC校正数据错(硬盘)&#xA;　CRC:Cyclic Redundancy Check code&#xA;　ECC:Error Checking &amp;amp; Correcting code&#xA;20H — 控制器失败40H — 查找失败&#xA;80H — 磁盘超时(未响应)AAH — 驱动器未准备好(硬盘)&#xA;BBH — 未定义的错误(硬盘)CCH — 写错误(硬盘)&#xA;E0H — 状态寄存器错(硬盘)FFH — 检测操作失败(硬盘)&#xA;(3)、功能02H&#xA;功能描述：读扇区&#xA;入口参数：AH＝02H&#xA;AL＝扇区数&#xA;CH＝柱面&#xA;CL＝扇区&#xA;DH＝磁头&#xA;DL＝驱动器，00H~7FH：软盘；80H~0FFH：硬盘&#xA;ES:BX＝缓冲区的地址&#xA;出口参数：CF＝0——操作成功，AH＝00H，AL＝传输的扇区数，否则，AH＝状态代码，参见功能号01H中的说明&#xA;(4)、功能03H&#xA;功能描述：写扇区&#xA;入口参数：AH＝03H&#xA;AL＝扇区数&#xA;CH＝柱面&#xA;CL＝扇区&#xA;DH＝磁头&#xA;DL＝驱动器，00H~7FH：软盘；80H~0FFH：硬盘&#xA;ES:BX＝缓冲区的地址&#xA;出口参数：CF＝0——操作成功，AH＝00H，AL＝传输的扇区数，否则，AH＝状态代码，参见功能号01H中的说明&#xA;(5)、功能04H&#xA;功能描述：检验扇区&#xA;入口参数：AH＝04H&#xA;AL＝扇区数&#xA;CH＝柱面&#xA;CL＝扇区&#xA;DH＝磁头&#xA;DL＝驱动器，00H~7FH：软盘；80H~0FFH：硬盘&#xA;ES:BX＝缓冲区的地址&#xA;出口参数：CF＝0——操作成功，AH＝00H，AL＝被检验的扇区数，否则，AH＝状态代码，参见功能号01H中的说明&#xA;(6)、功能05H&#xA;功能描述：格式化磁道&#xA;入口参数：AH＝05H&#xA;AL＝交替(Interleave)&#xA;CH＝柱面&#xA;DH＝磁头&#xA;DL＝驱动器，00H~7FH：软盘；80H~0FFH：硬盘&#xA;ES:BX＝地址域列表的地址&#xA;出口参数：CF＝0——操作成功，AH＝00H，否则，AH＝状态代码，参见功能号01H中的说明&#xA;(7)、功能06H&#xA;功能描述：格式化坏磁道&#xA;入口参数：AH＝06H&#xA;AL＝交替&#xA;CH＝柱面&#xA;DH＝磁头&#xA;DL＝80H~0FFH：硬盘&#xA;ES:BX＝地址域列表的地址&#xA;出口参数：CF＝0——操作成功，AH＝00H，否则，AH＝状态代码，参见功能号01H中的说明&#xA;(8)、功能07H&#xA;功能描述：格式化驱动器&#xA;入口参数：AH＝07H&#xA;AL＝交替&#xA;CH＝柱面&#xA;DL＝80H~0FFH：硬盘&#xA;出口参数：CF＝0——操作成功，AH＝00H，否则，AH＝状态代码，参见功能号01H中的说明&#xA;(9)、功能08H&#xA;功能描述：读取驱动器参数&#xA;入口参数：AH＝08H&#xA;DL＝驱动器，00H~7FH：软盘；80H~0FFH：硬盘&#xA;出口参数：CF＝1——操作失败，AH＝状态代码，参见功能号01H中的说明，否则， BL＝01H — 360K&#xA;＝02H — 1.2M&#xA;＝03H — 720K&#xA;＝04H — 1.44M&#xA;CH＝柱面数的低8位&#xA;CL的位7-6＝柱面数的该2位&#xA;CL的位5-0＝扇区数&#xA;DH＝磁头数&#xA;DL＝驱动器数&#xA;ES:DI＝磁盘驱动器参数表地址&#xA;(10)、功能09H&#xA;功能描述：初始化硬盘参数&#xA;入口参数：AH＝09H&#xA;DL＝80H~0FFH：硬盘(还有有关参数表问题，在此从略)&#xA;出口参数：CF＝0——操作成功，AH＝00H，否则，AH＝状态代码，参见功能号01H中的说明&#xA;(11)、功能0AH&#xA;功能描述：读长扇区，每个扇区随带四个字节的ECC编码&#xA;入口参数：AH＝0AH&#xA;AL＝扇区数&#xA;CH＝柱面&#xA;CL＝扇区&#xA;DH＝磁头&#xA;DL＝80H~0FFH：硬盘&#xA;ES:BX＝缓冲区的地址&#xA;出口参数：CF＝0——操作成功，AH＝00H，AL＝传输的扇区数，否则，AH＝状态代码，参见功能号01H中的说明&#xA;(12)、功能0BH&#xA;功能描述：写长扇区，每个扇区随带四个字节的ECC编码&#xA;入口参数：AH＝0BH&#xA;AL＝扇区数&#xA;CH＝柱面&#xA;CL＝扇区&#xA;DH＝磁头&#xA;DL＝80H~0FFH：硬盘&#xA;ES:BX＝缓冲区的地址&#xA;出口参数：CF＝0——操作成功，AH＝00H，AL＝传输的扇区数，否则，AH＝状态代码，参见功能号01H中的说明&#xA;(13)、功能0CH&#xA;功能描述：查寻&#xA;入口参数：AH＝0CH&#xA;CH＝柱面的低8位&#xA;CL(7-6位)＝柱面的高2位&#xA;DH＝磁头&#xA;DL＝80H~0FFH：硬盘&#xA;出口参数：CF＝0——操作成功，AH＝00H，否则，AH＝状态代码，参见功能号01H中的说明&#xA;(14)、功能0DH&#xA;功能描述：硬盘系统复位&#xA;入口参数：AH＝0DH&#xA;DL＝80H~0FFH：硬盘&#xA;出口参数：CF＝0——操作成功，AH＝00H，否则，AH＝状态代码，参见功能号01H中的说明&#xA;(15)、功能0EH&#xA;功能描述：读扇区缓冲区&#xA;入口参数：AH＝0EH&#xA;ES:BX＝缓冲区的地址&#xA;出口参数：CF＝0——操作成功，否则，AH＝状态代码，参见功能号01H中的说明&#xA;(16)、功能0FH&#xA;功能描述：写扇区缓冲区&#xA;入口参数：AH＝0FH&#xA;ES:BX＝缓冲区的地址&#xA;出口参数：CF＝0——操作成功，否则，AH＝状态代码，参见功能号01H中的说明&#xA;(17)、功能10H&#xA;功能描述：读取驱动器状态&#xA;入口参数：AH＝10H&#xA;DL＝80H~0FFH：硬盘&#xA;出口参数：CF＝0——操作成功，AH＝00H，否则，AH＝状态代码，参见功能号01H中的说明&#xA;(18)、功能11H&#xA;功能描述：校准驱动器&#xA;入口参数：AH＝11H&#xA;DL＝80H~0FFH：硬盘&#xA;出口参数：CF＝0——操作成功，AH＝00H，否则，AH＝状态代码，参见功能号01H中的说明&#xA;(19)、功能12H&#xA;功能描述：控制器RAM诊断&#xA;入口参数：AH＝12H&#xA;出口参数：CF＝0——操作成功，否则，AH＝状态代码，参见功能号01H中的说明&#xA;(20)、功能13H&#xA;功能描述：控制器驱动诊断&#xA;入口参数：AH＝13H&#xA;出口参数：CF＝0——操作成功，否则，AH＝状态代码，参见功能号01H中的说明&#xA;(21)、功能14H&#xA;功能描述：控制器内部诊断&#xA;入口参数：AH＝14H&#xA;出口参数：CF＝0——操作成功，否则，AH＝状态代码，参见功能号01H中的说明&#xA;(22)、功能15H&#xA;功能描述：读取磁盘类型&#xA;入口参数：AH＝15H&#xA;DL＝驱动器，00H~7FH：软盘；80H~0FFH：硬盘&#xA;出口参数：CF＝1——操作失败，AH＝状态代码，参见功能号01H中的说明， 否则，AH＝00H — 未安装驱动器&#xA;＝01H — 无改变线支持的软盘驱动器&#xA;＝02H — 带有改变线支持的软盘驱动器&#xA;＝03H — 硬盘，CX:DX＝512字节的扇区数&#xA;(23)、功能16H&#xA;功能描述：读取磁盘变化状态&#xA;入口参数：AH＝16H&#xA;DL＝00H~7FH：软盘&#xA;出口参数：CF＝0——磁盘未改变，AH＝00H，否则，AH＝06H，参见功能号01H中的说明&#xA;(24)、功能17H&#xA;功能描述：设置磁盘类型&#xA;入口参数：AH＝17H&#xA;DL＝00H~7FH：软盘 AL＝00H — 未用&#xA;＝01H — 360K在360K驱动器中&#xA;＝02H — 360K在1.2M驱动器中&#xA;＝03H — 1.2M在1.2M驱动器中&#xA;＝04H — 720K在720K驱动器中&#xA;出口参数：CF＝0——操作成功，AH＝00H，否则，AH＝状态编码，参见功能号01H中的说明&#xA;(25)、功能18H&#xA;功能描述：设置格式化媒体类型&#xA;入口参数：AH＝18H&#xA;CH＝柱面数&#xA;CL＝每磁道的扇区数&#xA;DL＝00H~7FH：软盘&#xA;出口参数：CF＝0——操作成功，AH＝00H，ES:DI＝介质类型参数表地址，否则，AH＝状态编码，参见功能号01H中的说明&#xA;(26)、功能19H&#xA;功能描述：磁头保护，仅在PS/2中有效，在此从略&#xA;(27)、功能1AH&#xA;功能描述：格式化ESDI驱动器，仅在PS/2中有效，在此从略&#xA;&lt;strong&gt;3、串行口服务(Serial Port Service——INT 14H)&lt;/strong&gt;&#xA;00H —初始化通信口03H —读取通信口状态&#xA;01H —向通信口输出字符04H —扩充初始化通信口&#xA;02H —从通信口读入字符&#xA;(1)、功能00H&#xA;功能描述：初始化通信口&#xA;入口参数：AH＝00H&#xA;DX＝初始化通信口号(0＝COM1，1＝COM2，……)&#xA;AL＝初始化参数，参数的说明如下： 波特率奇偶位停止位字的位数&#xA;76543210&#xA;000 = 110X0 = None0 = 1 bit10 = 7 bits&#xA;001 = 15001 = Odd1 = 2 bits11 = 8 bits&#xA;010 = 30011 = Even&#xA;011 = 600&#xA;100 = 1200&#xA;101 = 2400&#xA;110 = 4800&#xA;111 = 9600&#xA;对于PS/2，可用INT 14H之功能04H和05H来初始化其通信速率大于9600。&#xA;出口参数：AH＝通信口状态，各状态位为1时的含义如下： 位7—超时&#xA;位6—传递移位寄存器为空&#xA;位5—传递保持寄存器为空&#xA;位4—发现终止位3—发现帧错误&#xA;位2—发现奇偶错&#xA;位1—发现越界错&#xA;位0—接受数据准备好&#xA;AL＝Modem状态&#xA;位7—接受单线信号诊断&#xA;位6—环指示器&#xA;位5—数据发送准备好&#xA;位4—清除数据，再发送位3—改变在接受线上的信号诊断&#xA;位2—后边界环指示器&#xA;位1—改变“数据准备好”状态&#xA;位0—改变“清除—发送”状态&#xA;(2)、功能01H&#xA;功能描述：向通信口输出字符&#xA;入口参数：AH＝01H&#xA;AL＝字符&#xA;DX＝初始化通信口号(0＝COM1，1＝COM2，……)&#xA;出口参数：AL的值不变&#xA;AH的位7＝0——操作成功，通信口状态，AH的位6~0是其状态位&#xA;(3)、功能02H&#xA;功能描述：从通信口读入字符&#xA;入口参数：AH＝02H&#xA;DX＝初始化通信口号(0＝COM1，1＝COM2，……)&#xA;出口参数：AL＝接受的字符&#xA;AH的位7＝0——操作成功，通信口状态，AH的位6~0是其状态位&#xA;(4)、功能03H&#xA;功能描述：读取通信口状态&#xA;入口参数：AH＝03H&#xA;DX＝初始化通信口号(0＝COM1，1＝COM2，……)&#xA;出口参数：AH＝通信口状态，AL＝Modem状态，参见功能号00H中的说明&#xA;(5)、功能04H&#xA;功能描述：扩充初始化通信口，仅在PS/2中有效，在此从略&#xA;**4、杂项系统服务(Miscellaneous System Service——INT 15H)&#xA;**00H —开盒式磁带机马达85H —系统请求(SysReq)键&#xA;01H —关盒式磁带机马达86H —延迟&#xA;02H —读盒式磁带机87H —移动扩展内存块&#xA;03H —写盒式磁带机88H —读取扩展内存大小&#xA;0FH —格式化ESDI驱动器定期中断89H —进入保护模式&#xA;21H —读/写自检(POST)错误记录90H —设备等待&#xA;4FH —键盘截听91H —设备加电自检&#xA;80H —设备打开C0H —读取系统环境&#xA;81H —设备关闭C1H —读取扩展BIOS数据区地址&#xA;82H —进程终止C2H —鼠标图形&#xA;83H —事件等待C3H —设置WatcHdog超时&#xA;84H —读游戏杆C4H —可编程选项选择&#xA;(1)、功能00H&#xA;功能描述：开盒式磁带机马达&#xA;入口参数：AH＝00H&#xA;出口参数：CF＝0——操作成功，否则，AH＝状态(86H，若未安装盒式磁带机)&#xA;(2)、功能01H&#xA;功能描述：关盒式磁带机马达&#xA;入口参数：AH＝01H&#xA;出口参数：CF＝0——操作成功，否则，AH＝状态(86H，若未安装盒式磁带机)&#xA;(3)、功能02H&#xA;功能描述：读盒式磁带机&#xA;入口参数：AH＝02H&#xA;CX＝读入的字节数&#xA;ES:BX＝存放数据的缓冲区地址&#xA;出口参数：CF＝0——操作成功，DX＝实际读入的字节数，ES:BX指向最后一个字节的后面地址，否则，AH＝状态码，其值含义如下： 01H&#xA;—— CRC校验码错80H —— 非法命令&#xA;02H —— 位信号混乱86H —— 未安装盒式磁带机&#xA;04H —— 无发现数据&#xA;(4)、功能03H&#xA;功能描述：写盒式磁带机&#xA;入口参数：AH＝03H&#xA;CX＝要写入的字节数&#xA;ES:BX＝已存数据的缓冲区地址&#xA;出口参数：CF＝0——操作成功，CX＝00H，ES:BX指向最后一个字节的后面地址，否则，AH＝状态码，其值含义如下： 80H ——&#xA;非法命令86H —— 未安装盒式磁带机&#xA;(5)、功能0FH&#xA;功能描述：格式化ESDI驱动器定期中断，仅在PS/2中有效，在此从略&#xA;(6)、功能21H&#xA;功能描述：读/写自检(POST)错误记录，仅在PS/2中有效，在此从略&#xA;(7)、功能4FH&#xA;功能描述：键盘截听，仅在PS/2中有效，在此从略&#xA;(8)、功能80H&#xA;功能描述：打开设备&#xA;入口参数：AH＝80H&#xA;BX＝设备号&#xA;CX＝进程号&#xA;出口参数：CF＝0——操作成功，AH＝00H，否则，AH＝状态码&#xA;(9)、功能81H&#xA;功能描述：关闭设备&#xA;入口参数：AH＝81H&#xA;BX＝设备号&#xA;CX＝进程号&#xA;出口参数：CF＝0——操作成功，AH＝00H，否则，AH＝状态码&#xA;(10)、功能82H&#xA;功能描述：进程终止&#xA;入口参数：AH＝81H&#xA;BX＝进程号&#xA;出口参数：CF＝0——操作成功，AH＝00H，否则，AH＝状态码&#xA;(11)、功能83H&#xA;功能描述：事件等待&#xA;入口参数：AH＝83H 若需要事件等待，则：AL＝00H&#xA;CX:DX＝千分秒&#xA;ES:BX＝信号量字节的地址&#xA;否则，调用参数为AL＝01H&#xA;出口参数：若调用时，AL＝00H，操作成功——CF＝0，否则，CF＝1&#xA;(12)、功能84H&#xA;功能描述：读游戏杆&#xA;入口参数：AH＝84H&#xA;DX＝00H——读取开关设置&#xA;　＝01H——读取阻力输入&#xA;出口参数：CF＝1H——操作失败，否则，&#xA;　DX＝00H时，AL＝开关设置(位7～4)&#xA;　DX＝01H时，AX、BX、CX和DX分别为A(x)、A(y)、B(x)和B(y)的值&#xA;(13)、功能85H&#xA;功能描述：系统请求(SysReq)键&#xA;入口参数：AH＝85H&#xA;AL＝00H——键按下&#xA;　＝01H——键放开&#xA;出口参数：CF＝0——操作成功，AH＝00H，否则，AH＝状态码&#xA;(14)、功能86H&#xA;功能描述：延迟&#xA;入口参数：AH＝86H&#xA;CX:DX＝千分秒&#xA;出口参数：CF＝0——操作成功，AH＝00H&#xA;(15)、功能87H&#xA;功能描述：从常规内存和扩展内存之间移动扩展内存块&#xA;入口参数：AH＝87H&#xA;CX＝移动的字数&#xA;ES:SI＝GDT(Global Descriptor Table)的地址，其结构定义如下： 偏移量存储的信息&#xA;00h-0Fh保留，但现全为0&#xA;10h-11h段的长度(2CX-1或更大)&#xA;12h-14h24位源地址&#xA;15h访问权限字节(其值为93h)&#xA;16h-17h保留，但现全为0&#xA;18h-19h段的长度(2CX-1或更大)&#xA;1Ah-1Ch 24位目标源地址&#xA;1Dh访问权限字节(其值为93h)&#xA;1Eh-2Fh保留，但现全为0&#xA;出口参数：CF＝0——操作成功，AH＝00H，否则，AH＝状态码，其含义如下：&#xA;　　01H —— RAM奇偶错&#xA;　　02H —— 异常中断错&#xA;　　03H —— 20号线门地址失败&#xA;(16)、功能88H&#xA;功能描述：读取扩展内存大小&#xA;入口参数：AH＝88H&#xA;出口参数：AX＝扩展内存字节数(以K为单位)&#xA;(17)、功能89H&#xA;功能描述：进入保护模式，CPU从实模式进入保护模式&#xA;入口参数：AH＝89H&#xA;BH＝IRQ0的中断号&#xA;BL＝IRQ8的中断号&#xA;ES:SI＝GDT的地址(参见功能号87H)&#xA;出口参数：CF＝1——操作失败，AH＝0FFH，否则，AH＝00H，CS、DS、ES和SS都是用户定义的选择器&#xA;(18)、功能90H&#xA;功能描述：设备等待&#xA;入口参数：AH＝90H AL＝驱动器类型，具体的驱动器类型定义如下：&#xA;＝00H~7FH——串行再重用设备&#xA;＝80H~0BFH——可重入式设备&#xA;＝0C0H~0FFH——等待访问设备，没有自检功能&#xA;00h — 磁盘&#xA;02h — 键盘&#xA;80h — 网络&#xA;FDh — 软盘马达启动01h — 软盘&#xA;03h — 点设备(Pointing Device)&#xA;FCh — 硬盘复位&#xA;FEh — 打印机&#xA;ES:BX＝对驱动器类型80H~0FFH的请求块地址&#xA;出口参数：CF＝1——操作失败，否则，AH＝00H&#xA;(19)、功能91H&#xA;功能描述：设备加电自检&#xA;入口参数：AH＝91H&#xA;AL＝00H~7FH——串行再重用设备&#xA;　＝80H~0BFH——可重入式设备&#xA;出口参数：AH＝00H&#xA;(20)、功能0C0H&#xA;功能描述：读取系统环境&#xA;入口参数：AH＝0C0H&#xA;出口参数：ES:BX＝配置表地址，配置表的定义如下： 偏移量含义说明&#xA;00h-01h表的大小(字节数)&#xA;02h系统模型&#xA;03h系统子模型&#xA;04hBIOS版本号&#xA;05h配置标志，其各位为1时的说明如下：&#xA;　　位7—DMA通道3使用&#xA;　　位6—存在从属8259&#xA;　　位5—实时时钟有效&#xA;　　位4—键盘截听有效&#xA;　　位3—等待外部事件有效&#xA;　　位2—扩展BIOS数据区&#xA;　　位1—微通道设施&#xA;　　位0—保留&#xA;06h-09h保留&#xA;(21)、功能C1H&#xA;功能描述：读取扩展BIOS数据区地址，仅在PS/2中有效，在此从略&#xA;(22)、功能C2H&#xA;功能描述：鼠标图形，仅在PS/2中有效，在此从略&#xA;(23)、功能C3H&#xA;功能描述：设置WatcHdog超时，仅在PS/2中有效，在此从略&#xA;(24)、功能C4H&#xA;功能描述：可编程选项选择，仅在PS/2中有效，在此从略&#xA;&lt;strong&gt;5、键盘服务(Keyboard Service——INT 16H)&lt;/strong&gt;&#xA;00H、10H —从键盘读入字符03H —设置重复率&#xA;01H、11H —读取键盘状态04H —设置键盘点击&#xA;02H, 12H —读取键盘标志05H —字符及其扫描码进栈&#xA;(1)、功能00H和10H&#xA;功能描述：从键盘读入字符&#xA;入口参数：AH＝00H——读键盘&#xA;＝10H——读扩展键盘，可根据0000:0496H单元的内容判断：扩展键盘是否有效&#xA;出口参数：AH＝键盘的扫描码&#xA;AL＝字符的ASCII码&#xA;(2)、功能01H和11H&#xA;功能描述：读取键盘状态&#xA;入口参数：AH＝01H——检查普通键盘&#xA;＝11H——检查扩展键盘&#xA;出口参数：ZF＝1——无字符输入，否则，AH＝键盘的扫描码，AL＝ASCII码。&#xA;(3)、功能02H和12H&#xA;功能描述：读取键盘标志&#xA;入口参数：AH＝02H——普通键盘的移位标志&#xA;＝12H——扩展键盘的移位标志&#xA;出口参数：AL＝键盘标志(02H和12H都有效)，其各位之值为1时的含义如下： 位7—INS开状态位3—ALT键按下&#xA;位6—CAPS LOCK开状态位2—CTRL键按下&#xA;位5—NUM LOCK开状态位1—左SHIFT键按下&#xA;位4—SCROLL LOCK开状态位0—右SHIFT键按下&#xA;AH＝扩展键盘的标志(12H有效)，其各位之值为1时的含义如下：&#xA;位7—SysReq键按下位3—右ALT键按下&#xA;位6—CAPS LOCK键按下位2—右CTRL键按下&#xA;位5—NUM LOCK键按下位1—左ALT键按下&#xA;位4—SCROLL键按下位0—左CTRL键按下&#xA;(4)、功能03H&#xA;功能描述：设置重复率&#xA;入口参数：AH＝03H 对于PC/AT和PS/2：AL＝05H&#xA;BH＝重复延迟&#xA;BL＝重复率&#xA;对于PCjr：AL＝00H——装入缺省的速率和延迟&#xA;＝01H——增加初始延迟&#xA;＝02H——重复频率降低一半&#xA;＝03H——增加延迟和降低一半重复频率&#xA;＝04H——关闭键盘重复功能&#xA;出口参数：无&#xA;(5)、功能04H&#xA;功能描述：设置键盘点击&#xA;入口参数：AH＝04H AL＝00H——关闭键盘点击功能&#xA;＝01H——打开键盘点击功能&#xA;出口参数：无&#xA;(6)、功能05H&#xA;功能描述：字符及其扫描码进栈&#xA;入口参数：AH＝05H&#xA;CH＝字符的描述码&#xA;CL＝字符的ASCII码&#xA;出口参数：CF＝1——操作成功，AL＝00H，否则，AL＝01H&#xA;**6、并行口服务(Parallel Port Service——INT 17H)&#xA;**00H —向打印机输出字符&#xA;01H —初始化打印机端口&#xA;02H —读取打印机状态&#xA;(1)、功能00H&#xA;功能描述：向打印机输出字符&#xA;入口参数：AH＝00H&#xA;AL＝输出的字符&#xA;DX＝打印机号(0—LPT1，1—LPT2，2—LPT3，……)&#xA;出口参数：AH＝打印机状态。其各位为1时的含义如下： 位7—打印机空闲 位3—I/O错误&#xA;位6—打印机响应位2—保留&#xA;位5—无纸位1—保留&#xA;位4—打印机被选位0—打印机超时&#xA;(2)、功能01H&#xA;功能描述：初始化打印机端口&#xA;入口参数：AH＝01H&#xA;DX＝打印机号(0—LPT1，1—LPT2，2—LPT3，……)&#xA;出口参数：AH＝打印机状态。各位定义如下功能00H所示&#xA;(3)、功能02H&#xA;功能描述：读取打印机状态&#xA;入口参数：AH＝02H&#xA;DX＝打印机号(0—LPT1，1—LPT2，2—LPT3，……)&#xA;出口参数：AH＝打印机状态。各位定义如下功能00H所示&#xA;&lt;strong&gt;7、时钟服务(Clock Service——INT 1AH)&lt;/strong&gt;&#xA;00H —读取时钟“滴答”计数06H —设置闹钟&#xA;01H —设置时钟“滴答”计数07H —闹钟复位&#xA;02H —读取时间0AH —读取天数计数&#xA;03H —设置时间0BH —设置天数计数&#xA;04H —读取日期 80H —设置声音源信息&#xA;05H —设置日期&#xA;(1)、功能00H&#xA;功能描述：读取时钟“滴答”计数&#xA;入口参数：AH＝00H&#xA;出口参数：AL＝00H——未过午夜，否则，表示已过午夜&#xA;CX:DX＝时钟“滴答”计数&#xA;(2)、功能01H&#xA;功能描述：设置时钟“滴答”计数&#xA;入口参数：AH＝01H&#xA;CX:DX＝时钟“滴答”计数&#xA;出口参数：无&#xA;(3)、功能02H&#xA;功能描述：读取时间&#xA;入口参数：AH＝02H&#xA;出口参数：CH＝BCD码格式的小时&#xA;CL＝BCD码格式的分钟&#xA;DH＝BCD码格式的秒&#xA;DL＝00H——标准时间，否则，夏令时&#xA;CF＝0——时钟在走，否则，时钟停止&#xA;(4)、功能03H&#xA;功能描述：设置时间&#xA;入口参数：AH＝03H&#xA;CH＝BCD码格式的小时&#xA;CL＝BCD码格式的分钟&#xA;DH＝BCD码格式的秒&#xA;DL＝00H——标准时间，否则，夏令时&#xA;出口参数：无&#xA;(5)、功能04H&#xA;功能描述：读取日期&#xA;入口参数：AH＝04H&#xA;出口参数：CH＝BCD码格式的世纪&#xA;CL＝BCD码格式的年&#xA;DH＝BCD码格式的月&#xA;DL＝BCD码格式的日&#xA;CF＝0——时钟在走，否则，时钟停止&#xA;(6)、功能05H&#xA;功能描述：设置日期&#xA;入口参数：AH＝05H&#xA;CH＝BCD码格式的世纪&#xA;CL＝BCD码格式的年&#xA;DH＝BCD码格式的月&#xA;DL＝BCD码格式的日&#xA;出口参数：无&#xA;(7)、功能06H&#xA;功能描述：设置闹钟&#xA;入口参数：AH＝06H&#xA;CH＝BCD码格式的小时&#xA;CL＝BCD码格式的分钟&#xA;DH＝BCD码格式的秒&#xA;出口参数：CF＝０——操作成功，否则，闹钟已设置或时钟已停止&#xA;(8)、功能07H&#xA;功能描述：闹钟复位&#xA;入口参数：AH＝07H&#xA;出口参数：无&#xA;(9)、功能0AH&#xA;功能描述：读取天数计数，仅在PS/2有效，在此从略&#xA;(10)、功能0BH&#xA;功能描述：设置天数计数，仅在PS/2有效，在此从略&#xA;(11)、功能80H&#xA;功能描述：设置声音源信息&#xA;入口参数：AH＝80H&#xA;AL＝声音源&#xA;＝00H——8253可编程计时器，通道2&#xA;＝01H——盒式磁带输入&#xA;＝02H——I/O通道上的&amp;quot;Audio In&amp;quot;&#xA;＝03H——声音产生芯片&#xA;出口参数：无&#xA;**8、直接系统服务(Direct System Service)&#xA;**INT 00H —“0”作除数&#xA;INT 01H —单步中断&#xA;INT 02H —非屏蔽中断(NMI)&#xA;INT 03H —断点中断&#xA;INT 04H —算术溢出错误&#xA;INT 05H —打印屏幕和BOUND越界&#xA;INT 06H —非法指令错误&#xA;INT 07H —处理器扩展无效&#xA;INT 08H —时钟中断&#xA;INT 09H —键盘输入&#xA;INT 0BH —通信口(COM2:)&#xA;INT 0CH —通信口(COM1:)&#xA;INT 0EH —磁盘驱动器输入/输出&#xA;INT 11H —读取设备配置&#xA;INT 12H —读取常规内存大小(返回值AX为内存容量，以K为单位)&#xA;INT 18H —ROM BASIC&#xA;INT 19H —重启动系统&#xA;INT 1BH —CTRL+BREAK处理程序&#xA;INT 1CH —用户时钟服务&#xA;INT 1DH —指向显示器参数表指针&#xA;INT 1EH —指向磁盘驱动器参数表指针&#xA;INT 1FH —指向图形字符模式表指针&lt;/p&gt;</description>
			</item>
			<item>
				<title>RHIDE运行提示Load error: no DPMI - Get csdpmi*b.zip</title>
				<link>https://blog.grabbyte.com/p/2023/06/24-2351.html</link>
				<pubDate>Sat, 24 Jun 2023 23:51:14 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2023/06/24-2351.html</guid>
				<description>&lt;p&gt;DOS下用RHIDE开发程序，遇到以下提示：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Load error: no DPMI - Get csdpmi*b.zip&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;下载CWSDPMI.EXE&lt;/p&gt;&#xA;&lt;p&gt;在运行RHIDE前先运行CWSDPMI.EXE，开启DPMI服务&lt;/p&gt;</description>
			</item>
			<item>
				<title>BIOS 中断调用</title>
				<link>https://blog.grabbyte.com/p/2023/06/22.html</link>
				<pubDate>Thu, 22 Jun 2023 11:43:19 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2023/06/22.html</guid>
				<description>&lt;p&gt;BIOS 实现提供可由操作系统和应用程序调用的中断，以使用 IBM PC 兼容^[a]^ 计算机上固件的功能。&lt;/p&gt;&#xA;&lt;p&gt;传统上，BIOS 调用主要由 DOS 程序和其他一些软件（如引导加载程序）使用（包括历史上直接引导并在没有操作系统的情况下运行的相对简单的应用程序软件，尤其是游戏软件）。&lt;/p&gt;</description>
			</item>
			<item>
				<title>通过JS脚本快速下载DJGPP的文件</title>
				<link>https://blog.grabbyte.com/p/2023/06/21-2145.html</link>
				<pubDate>Wed, 21 Jun 2023 21:45:20 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2023/06/21-2145.html</guid>
				<description>&lt;h2 id=&#34;官网下载&#34;&gt;官网下载&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.delorie.com/djgpp/dl/ofc/&#34;&gt;DJGPP Official Releases (delorie.com)&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;选择对应的软件，选择性下载对应的zip包。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://www.delorie.com/djgpp/zip-picker.html &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;批量下载脚本：&lt;/p&gt;&#xA;&lt;p&gt;先进入官网的文件列表页面，F12打开浏览器调试模式，进入到控制台，复制下面的代码进去。&lt;/p&gt;</description>
			</item>
			<item>
				<title>如何在 64 位 Windows 中运行 16 位 Windows/DOS 程序</title>
				<link>https://blog.grabbyte.com/p/2023/06/21.html</link>
				<pubDate>Wed, 21 Jun 2023 17:32:28 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2023/06/21.html</guid>
				<description>&lt;p&gt;DOS时代已经过去了很久，以前有些好玩的小程序或者小游戏，用现在的电脑来运行，会提示无法运行。&lt;/p&gt;&#xA;&lt;p&gt;有人用DOSBOX能模拟DOS大部分的程序，但是有没有一种方法将应用直接运行在windows10上面呢？&lt;/p&gt;</description>
			</item>
			<item>
				<title>用汇编语言做个图形界面程序框架（DOS蓝色风格）</title>
				<link>https://blog.grabbyte.com/p/2023/02/13-1451.html</link>
				<pubDate>Mon, 13 Feb 2023 14:51:54 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2023/02/13-1451.html</guid>
				<description>&lt;p&gt;最近在做工控项目，用到的技术都是上个世纪的DOS系统，程序编译用汇编和C，&lt;/p&gt;&#xA;&lt;p&gt;现在会用这个写程序的很少了，网上的教程不是少这里，就是缺那里，文章都是一通乱复制，&lt;/p&gt;</description>
			</item>
			<item>
				<title>磁带格式介绍及比较</title>
				<link>https://blog.grabbyte.com/p/2023/02/11-2211.html</link>
				<pubDate>Sat, 11 Feb 2023 22:11:19 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2023/02/11-2211.html</guid>
				<description>&lt;h1 id=&#34;什么是磁带格式&#34;&gt;什么是磁带格式&lt;/h1&gt;&#xA;&lt;p&gt;磁带格式是指磁带中数据的记录方式。&lt;/p&gt;&#xA;&lt;p&gt;当前，主流的磁带格式主要分为线性记录和螺旋记录两大阵营，两种技术各有所长。&lt;/p&gt;&#xA;&lt;p&gt;采用线性记录的磁带格式主要有DLT、SuperDLT、LTO等，而采用螺旋记录磁带格式的主要有DAT、AIT等。下面我们对部分磁带格式做简单的介绍。&lt;/p&gt;</description>
			</item>
			<item>
				<title>我想念Commodore64我的第一台控制台和电脑</title>
				<link>https://blog.grabbyte.com/p/2023/02/11-1749.html</link>
				<pubDate>Sat, 11 Feb 2023 17:49:52 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2023/02/11-1749.html</guid>
				<description>&lt;p&gt;作为 80 年代的孩子，我没有 Atari、NES 甚至 Sega Master System。我的第一台游戏机实际上是我们家的第一台电脑：Commodore 64。&lt;/p&gt;&#xA;&lt;p&gt;Commodore 64，也称为 C64，是 Commodore（康懋达国际）公司 1982 年推出的 8 位家用电脑。&lt;/p&gt;</description>
			</item>
			<item>
				<title>Elite（精英）于1985年由Firebird为Commodore 64发布</title>
				<link>https://blog.grabbyte.com/p/2023/02/11-1552.html</link>
				<pubDate>Sat, 11 Feb 2023 15:52:27 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2023/02/11-1552.html</guid>
				<description>&lt;p&gt;Elite于1985年由Firebird为Commodore 64发布。&lt;/p&gt;&#xA;&lt;p&gt;由于增加了C64的图形调色板，这个版本在屏幕上具有大量的颜色。&lt;/p&gt;&#xA;&lt;p&gt;此外，游戏中还有许多任务以及各种各样的船只和其他物体。&lt;/p&gt;</description>
			</item>
			<item>
				<title>NASM 简介</title>
				<link>https://blog.grabbyte.com/p/2023/02/09.html</link>
				<pubDate>Thu, 09 Feb 2023 08:24:53 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2023/02/09.html</guid>
				<description>&lt;h2 id=&#34;nasm-简介&#34;&gt;NASM 简介&lt;/h2&gt;&#xA;&lt;p&gt;NASM 全称 The Netwide Assembler&#xA;，是一款基于 x86 平台的汇编语言编译程序，其设计初衷是为了实现编译器程序跨平台和模块化的特性。 NASM 支持大量的文件格式，包括&#xA;Linux ， BSD ， a.out ， ELF ， COFF ， Mach−O ， Microsoft 16−bit OBJ ， Win32&#xA;以及 Win64 ，同时也支持简单的二进制文件生成。它的语法被设计的简单易懂，相较 Intel 的语法更为简单，支持目前已知的所有 x86&#xA;架构之上的扩展语法，同时也拥有对宏命令的良好支持。&lt;/p&gt;</description>
			</item>
			<item>
				<title>盘点中国第一代程序员，看尽中国软件的前世今生</title>
				<link>https://blog.grabbyte.com/p/2023/02/06.html</link>
				<pubDate>Mon, 06 Feb 2023 15:17:19 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2023/02/06.html</guid>
				<description>&lt;p&gt;2011年7月，仅仅47岁的“中国第一程序员”求伯君彻底退隐江湖。这代表着一个时代的过去，在求伯君风光的年代，程序员身上充满着个人英雄主义的浪漫情怀。&lt;/p&gt;</description>
			</item>
			<item>
				<title>深入分析FreeDos -- 编译</title>
				<link>https://blog.grabbyte.com/p/2023/02/04-1448.html</link>
				<pubDate>Sat, 04 Feb 2023 14:48:58 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2023/02/04-1448.html</guid>
				<description>&lt;h1 id=&#34;开发环境&#34;&gt;开发环境&lt;/h1&gt;&#xA;&lt;p&gt;先建立开发环境，我的环境：&lt;/p&gt;&#xA;&lt;p&gt;主机系统： Windows XP, 最好再装个虚拟机，在虚拟机里装个Linux系统&lt;/p&gt;&#xA;&lt;p&gt;FreeDos版本： 我用的是2.0.20版本， &lt;a href=&#34;http://sourceforge.net/projects/freedos/files/Kernel/2.0.20/&#34;&gt;http://sourceforge.net/projects/freedos/files/Kernel/2.0.20/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;编译软件： &lt;a href=&#34;http://pan.baidu.com/s/1mg5e1oG&#34;&gt;NASM&lt;/a&gt;， &lt;a href=&#34;http://pan.baidu.com/s/1tn70U&#34;&gt;Turbo C 3.0&lt;/a&gt;&lt;/p&gt;</description>
			</item>
			<item>
				<title>深入分析FreeDos -- Image分析</title>
				<link>https://blog.grabbyte.com/p/2023/02/04-1445.html</link>
				<pubDate>Sat, 04 Feb 2023 14:45:27 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2023/02/04-1445.html</guid>
				<description>&lt;p&gt;好了，代码编译OK，也可以运行。现在是不是可以分析Kernel了呢？&lt;/p&gt;&#xA;&lt;p&gt;别急，先分析下Image， 即dostest.img， 这里说的Image可以认为是虚拟软盘。&lt;/p&gt;</description>
			</item>
			<item>
				<title>深入分析FreeDos -- FreeCom编译</title>
				<link>https://blog.grabbyte.com/p/2023/02/04-1441.html</link>
				<pubDate>Sat, 04 Feb 2023 14:41:33 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2023/02/04-1441.html</guid>
				<description>&lt;p&gt;DOS的交互命令工具是COMMAND，FreeDos用的是开源的FreeCom&lt;/p&gt;&#xA;&lt;p&gt;编译此版本还需要TASM汇编软件：TASM&lt;/p&gt;&#xA;&lt;p&gt;由于版本较老，在Windows XP下执行MakeFile，编译后不能正常运行(可能与我环境有关)。&lt;/p&gt;</description>
			</item>
			<item>
				<title>深入分析FreeDos -- COM文件加载与执行</title>
				<link>https://blog.grabbyte.com/p/2023/02/04-1439.html</link>
				<pubDate>Sat, 04 Feb 2023 14:39:57 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2023/02/04-1439.html</guid>
				<description>&lt;p&gt;现在已经走到了执行第一个任务的地方了，如下&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;main()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      |--&amp;gt;init_kernel()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      |&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      |--&amp;gt;kernel() -&amp;gt; p_0() -&amp;gt; DosExec(...&amp;#34;COMMAND.COM&amp;#34;...)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;官方给出的COMMAND.COM是FreeCom，FreeCom有些复杂，既然我们研究的是COM文件加载执行，何不选择一个较小的COM文件，岂不更方便？&lt;/p&gt;</description>
			</item>
			<item>
				<title>深入分析FreeDos -- Kernel初始化</title>
				<link>https://blog.grabbyte.com/p/2023/02/04-1436.html</link>
				<pubDate>Sat, 04 Feb 2023 14:36:06 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2023/02/04-1436.html</guid>
				<description>&lt;p&gt;KERNAL.asm跳转到Main.c中的main函数，下面代码可读性就很强了，跟踪代码的执行流程应该不是难事。&lt;/p&gt;&#xA;&lt;p&gt;我想说的是，kernel定义了很多全局变量，掌握了这些变量的用处，理解kernel基本上就没什么障碍了。&lt;/p&gt;</description>
			</item>
			<item>
				<title>深入分析FreeDos -- KERNEL.ASM</title>
				<link>https://blog.grabbyte.com/p/2023/02/04-1430.html</link>
				<pubDate>Sat, 04 Feb 2023 14:30:27 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2023/02/04-1430.html</guid>
				<description>&lt;p&gt;终于开始KERNEL代码分析了&lt;/p&gt;&#xA;&lt;p&gt;这一节关注KERNEL.ASM文件，如前一节所述，KERNEL.ASM代码主要目的就是将INIT段copy 到内存高处，跳转到高处的INIT段执行，旧的INIT段被用作内核数据区和Stack区。&lt;/p&gt;</description>
			</item>
			<item>
				<title>深入分析FreeDos -- KERNEL.MAP</title>
				<link>https://blog.grabbyte.com/p/2023/02/04-1428.html</link>
				<pubDate>Sat, 04 Feb 2023 14:28:31 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2023/02/04-1428.html</guid>
				<description>&lt;p&gt;虽然CPU已经开始执行KERNEL代码了，先不急分析KERNEL。&lt;/p&gt;&#xA;&lt;p&gt;不知道对于上节boot将KERNEL放置在0x600处还有没有其它疑问？&lt;/p&gt;&#xA;&lt;p&gt;必须要放到0x600处吗?&lt;/p&gt;</description>
			</item>
			<item>
				<title>深入分析FreeDos -- 引导代码</title>
				<link>https://blog.grabbyte.com/p/2023/02/04-1426.html</link>
				<pubDate>Sat, 04 Feb 2023 14:26:56 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2023/02/04-1426.html</guid>
				<description>&lt;p&gt;好了，下面开始分析boot.bin了，放置在软盘的前512字节中。&lt;/p&gt;&#xA;&lt;p&gt;如何判断一个软盘是引导软盘呢？ 这个任务是交给在BIOS的。&lt;/p&gt;&#xA;&lt;p&gt;BIOS会读取软盘的前512字节，如果第511个，512个字节的内容为0x55AA，就认定这是个引导软盘，将这512字节放置在内存0x7c00处，并跳转执行。&lt;/p&gt;</description>
			</item>
			<item>
				<title>DOS中DPMI在C语言中的实现方法</title>
				<link>https://blog.grabbyte.com/p/2023/02/04-1121.html</link>
				<pubDate>Sat, 04 Feb 2023 11:21:13 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2023/02/04-1121.html</guid>
				<description>&lt;h1 id=&#34;前言&#34;&gt;前言&lt;/h1&gt;&#xA;&lt;p&gt;本文使用通俗易懂的表述，深入浅出地介绍DPMI和DOS Extender（以DOS/4GW为例）的理论和基本使用技术，旨在让对DPMI不太了解的程序员能了解DPMI在C语言中的实现方法。限于本人水平及资料匮乏，文中难免存在不当之处，望各位读者不吝赐教。&lt;/p&gt;</description>
			</item>
			<item>
				<title>在DOS下的DJGPP&#43;RHIDE安装实作</title>
				<link>https://blog.grabbyte.com/p/2022/10/08-1521.html</link>
				<pubDate>Sat, 08 Oct 2022 15:21:03 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2022/10/08-1521.html</guid>
				<description>&lt;h1 id=&#34;djgpp介绍&#34;&gt;DJGPP介绍&lt;/h1&gt;&#xA;&lt;p&gt;DJGPP是GCC编译器在DOS操作系统上的一个移植版本，可以用来在DOS操作系统下编译生成32位保护模式的程序。&lt;/p&gt;&#xA;&lt;p&gt;DJGPP的发起人是DJ Delorie，它是开源的，任何人都可以改进它，为它的发展作贡献。大家就可以用它来编写新的DOS软件来使DOS更加强大.&lt;/p&gt;</description>
			</item>
			<item>
				<title>在VC里使用graphics.h绘图(兼容TC代码)</title>
				<link>https://blog.grabbyte.com/p/2022/10/08-152042.html</link>
				<pubDate>Sat, 08 Oct 2022 15:20:42 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2022/10/08-152042.html</guid>
				<description>&lt;h1 id=&#34;前言&#34;&gt;前言&lt;/h1&gt;&#xA;&lt;p&gt;现在都2023年了，好多学校的教学课程还是用DOS的TC（使用&lt;span style=&#34;font-family: verdana, 宋体; font-size: 14px;&#34;&gt;Borland BGI图形库）来进行的，特别是一些图形类的算法，用到到了TC的graphics.h中的函数，&lt;/span&gt;&#xA;在网上找了一下，终于找到一个库是支持这个图形库的，以前在 Turbo C 2.0(以下简称 TC) 或 Borland C++ 3.1 中用来画图的程序，&#xA;简单修改一下就能正常运行。&lt;/p&gt;</description>
			</item>
			<item>
				<title>DVST和CRT的区别</title>
				<link>https://blog.grabbyte.com/p/2022/09/30-144741.html</link>
				<pubDate>Fri, 30 Sep 2022 14:47:41 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2022/09/30-144741.html</guid>
				<description>&lt;h1 id=&#34;dvst和crt的区别&#34;&gt;DVST和CRT的区别&lt;/h1&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;阴极射线管(CRT)： CRT就像一个真空玻璃管。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;真空管的一端装有电子枪，真空管的另一端装有屏幕，屏幕上涂有点状图案，也可以说是磷晶体。磷发出的光很快从屏幕上消失。&#xA;为了使画面在屏幕上保持更长时间，电子束会非常快速地重定向到相同的点。&#xA;因此，屏幕上的磷晶体会持续发光。&#xA;这种类型的 CRT 也称为刷新型 CRT。&lt;/p&gt;</description>
			</item>
			<item>
				<title>汇编语言——寄存器</title>
				<link>https://blog.grabbyte.com/p/2022/09/30.html</link>
				<pubDate>Fri, 30 Sep 2022 14:47:11 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2022/09/30.html</guid>
				<description>&lt;p&gt;接下来我们来介绍寄存器，同时会介绍一些基本的语句（mov,add等)，好了，就让我们进入今天的学习吧！同时，我们以8086为例子来介绍，参考来自王爽老师的书。&lt;/p&gt;</description>
			</item>
			<item>
				<title>汇编语言——基础知识</title>
				<link>https://blog.grabbyte.com/p/2022/09/30-144702.html</link>
				<pubDate>Fri, 30 Sep 2022 14:47:02 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2022/09/30-144702.html</guid>
				<description>&lt;p&gt;今天我们就开始学习有关汇编的相关知识了，感觉和之前学的STM32相类似，所以学习起来并没有感觉很困难，相反，感觉有点好玩，并且理解了底层原理，为等下学习计算机组成原理打下基础，然后笔记主要用来记录不清楚的知识点，怕自己等过会就忘记了。参考书籍是王爽老师的书。&lt;/p&gt;</description>
			</item>
			<item>
				<title>汇编语言——DOSBox</title>
				<link>https://blog.grabbyte.com/p/2022/09/30-1446.html</link>
				<pubDate>Fri, 30 Sep 2022 14:46:45 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2022/09/30-1446.html</guid>
				<description>&lt;p&gt;本篇主要用来介绍我们的实验平台——DOSBox的使用与调试，主要就是改一下窗口大小以及挂载，并且作为学习汇编实验的汇总，不定期更新。&lt;/p&gt;&#xA;&lt;h1 id=&#34;下载与安装&#34;&gt;下载与安装&lt;/h1&gt;&#xA;&lt;p&gt;这个可以到官网去下载，然后安装也很简单，就不介绍了&lt;/p&gt;</description>
			</item>
			<item>
				<title>在DOS或者其他平台上高速执行图像显示的一些算法</title>
				<link>https://blog.grabbyte.com/p/2022/09/30-1438.html</link>
				<pubDate>Fri, 30 Sep 2022 14:38:15 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2022/09/30-1438.html</guid>
				<description>&lt;h1 id=&#34;１利用位移计算乘法&#34;&gt;１.利用位移计算乘法&lt;/h1&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;count_offest&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;_width&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;//移位乘法计算显示偏移值&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;mode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;17&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;8&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;16&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;32&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;64&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;128&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;256&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;512&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1024&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2048&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4096&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;8192&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;16384&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;32768&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;65536&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;offest&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;16&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;=&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;--&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;_width&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;mode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;])&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;n&#34;&gt;offest&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+=&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;n&#34;&gt;_width&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;mode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;];&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;_width&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;break&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;offest&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;h1 id=&#34;２高速绘制点不用乘法&#34;&gt;２.高速绘制点（不用乘法）&lt;/h1&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kt&#34;&gt;void&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;point&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;unsigned&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;char&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;color&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;//高速画点&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;color&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;!=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;NO_COLOR&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;=&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SCR_H&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;=&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SCR_V&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;cp&#34;&gt;#ifdef VESA_320_200&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;buffer&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;8&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;color&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;cp&#34;&gt;#endif&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;cp&#34;&gt;#ifdef VESA_640_480&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;buffer&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;9&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;7&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;color&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;cp&#34;&gt;#endif&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;cp&#34;&gt;#ifdef VESA_800_600&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;buffer&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;9&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;8&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;color&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;cp&#34;&gt;#endif&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;cp&#34;&gt;#ifdef VESA_1024_768&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;buffer&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;color&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;cp&#34;&gt;#endif&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;cp&#34;&gt;#ifdef VESA_1280_1024&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;buffer&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;8&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;color&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;cp&#34;&gt;#endif&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;h1 id=&#34;３镂空算法&#34;&gt;３.镂空算法&lt;/h1&gt;&#xA;&lt;p&gt;镂空算法很多，用的都是AND MASK+OR方式，不要去理它，每一个点要处理两遍，包含三次&lt;/p&gt;</description>
			</item>
			<item>
				<title>Visual C&#43;&#43; 绘图库graphics.h 兼容TC的BGI库</title>
				<link>https://blog.grabbyte.com/p/2022/09/29-205041.html</link>
				<pubDate>Thu, 29 Sep 2022 20:50:41 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2022/09/29-205041.html</guid>
				<description>&lt;p&gt;Visual C++ 绘图库graphics.h 兼容TC的BGI库&lt;/p&gt;</description>
			</item>
			<item>
				<title>8086汇编基本指令</title>
				<link>https://blog.grabbyte.com/p/2022/09/29-204944.html</link>
				<pubDate>Thu, 29 Sep 2022 20:49:44 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2022/09/29-204944.html</guid>
				<description>&lt;p&gt;一、数据传送&#xA;1、MOV&lt;/p&gt;&#xA;&lt;p&gt;描述：赋值指令&#xA;格式：MOV    DST,SRC&#xA;功能： DST &amp;lt;= SRC&#xA;注意：①不能DST,SRC都是存储器，这也是所有双操作数指令的通用要求。&#xA;                 ② 但其中一个是段寄存器时，另一个操作数必须是数据寄存器。&lt;/p&gt;</description>
			</item>
			<item>
				<title>如何将FreeDOS作为嵌入式系统使用</title>
				<link>https://blog.grabbyte.com/p/2022/06/282.html</link>
				<pubDate>Tue, 28 Jun 2022 10:00:00 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2022/06/282.html</guid>
				<description>&lt;p&gt;现在，很多嵌入式系统都是在 Linux 上运行的。但是，在很久很久以前，嵌入式系统要么在一个定制的专有的平台上运行，要么在 DOS 上运行。&lt;/p&gt;&#xA;&lt;p&gt;官网地址：&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.freedos.org&#34;&gt;www.freedos.org&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;官网介绍，大多数人使用 FreeDOS 来完成三项主要任务：&lt;/p&gt;</description>
			</item>
			<item>
				<title>DOS下Debug工具使用说明</title>
				<link>https://blog.grabbyte.com/p/2022/06/271.html</link>
				<pubDate>Mon, 27 Jun 2022 10:00:00 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2022/06/271.html</guid>
				<description>&lt;h1 id=&#34;常用的八个命令&#34;&gt;常用的八个命令&lt;/h1&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;命令&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;解释&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;R&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;查看和修改寄存器&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;D&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;查看内存单元&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;E&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;修改内存单元&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;A&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;输入汇编指令&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;U&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;反汇编，将机器指令变为汇编指令&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;T/P&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;单步执行&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;G&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;连续执行&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Q&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;退出&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h1 id=&#34;命令的详细介绍&#34;&gt;命令的详细介绍&lt;/h1&gt;&#xA;&lt;h2 id=&#34;r命令--查看和修改寄存器&#34;&gt;R命令 — 查看和修改寄存器&lt;/h2&gt;&#xA;&lt;p&gt;R命令有两种用法：&lt;/p&gt;</description>
			</item>
			<item>
				<title>反编译DOS应用程序使用到的工具软件</title>
				<link>https://blog.grabbyte.com/p/2022/06/261.html</link>
				<pubDate>Sun, 26 Jun 2022 10:00:00 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2022/06/261.html</guid>
				<description>&lt;p&gt;我有个项目是做机加工的，需要研究一个二十多年前的16位DOS程序，而作者早就去世了，所以也无法联系作者本人。&lt;/p&gt;&#xA;&lt;p&gt;最终，只能通过将二进制的代码反编译成汇编或者C语言的方式研究程序的算法。&lt;/p&gt;</description>
			</item>
			<item>
				<title>实现FC的RGBS输出</title>
				<link>https://blog.grabbyte.com/p/2022/05/111.html</link>
				<pubDate>Wed, 11 May 2022 10:00:00 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2022/05/111.html</guid>
				<description>&lt;h1 id=&#34;参考源码&#34;&gt;参考源码&lt;/h1&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/strigeus/fpganes.git&#34;&gt;https://github.com/strigeus/fpganes.git&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/RetroEmbedded/UniversalPPU&#34;&gt;https://github.com/RetroEmbedded/UniversalPPU&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/jpwright/fpganes.git&#34;&gt;https://github.com/jpwright/fpganes.git&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/CreeperLin/fpganes.git&#34;&gt;https://github.com/CreeperLin/fpganes.git&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/Feuerwerk/fpgaNES.git&#34;&gt;https://github.com/Feuerwerk/fpgaNES.git&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;这是任天堂娱乐系统在FPGA中的实现。&lt;/p&gt;&#xA;&lt;p&gt;它基于Terasic的开发板Cyclone V GX Starter Kit，并带有Altera Cyclone V。它具有充足的内存，HDMI输出和模拟音频编解码器。&#xA;出于某种原因，他们决定不将ADV7513 HDMI芯片的HDMI音频引脚连接到FPGA。&#xA;但是他们为音频引脚添加了焊点，因此我能够通过FPGA的一些GPIO引脚访问它们，直接通过HDMI连接获得44.1 kHz音频。&#xA;hdmi视频分辨率为640x480，帧速率为50 Hz，每个NES像素具有2x2显示像素。&#xA;在HDMI音频引脚旁边，我将NES Four Score焊接到GPIO端口，只需将控制器插入/拔出到FPGA即可。&lt;/p&gt;</description>
			</item>
			<item>
				<title>使用Altera的FPGA芯片代替FC游戏机的PPU</title>
				<link>https://blog.grabbyte.com/p/2022/05/61.html</link>
				<pubDate>Fri, 06 May 2022 10:00:00 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2022/05/61.html</guid>
				<description>&lt;p&gt;现在FC游戏机的PPU芯片都只有旧的,而且不支持RGB输出,所以想用FPGA来实现一块PPU,实现VGA和HDMI输出到现在的高清电脑显示器&#xA;或者电视机上.&lt;/p&gt;</description>
			</item>
			<item>
				<title>FC游戏开发指南（1）</title>
				<link>https://blog.grabbyte.com/p/2022/04/1071.html</link>
				<pubDate>Sun, 24 Apr 2022 10:00:00 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2022/04/1071.html</guid>
				<description>&lt;p&gt;&lt;img src=&#34;https://blog.grabbyte.com/uploads/images/5abb98b7cf4879bff0d6b8d6f3369f65.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;1任天堂fc红白机&#34;&gt;1、任天堂FC（红白机）&lt;/h2&gt;&#xA;&lt;p&gt;先上图——&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://blog.grabbyte.com/uploads/images/3fcfddf8a4ddfb8b3094d2de39210b54.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;这就是任天堂FC（北美版叫做NES，外形也不同），电子游戏历史上影响力最大的一台游戏主机。&lt;/p&gt;&#xA;&lt;p&gt;在中国玩家里，恐怕只有极少数人玩过它的原版机型，大部分人记忆中的都是“小霸王学习机”，以及小天才、胜天等等外形迥异的兼容机。&lt;/p&gt;</description>
			</item>
			<item>
				<title>FC游戏开发指南（2）软硬件架构</title>
				<link>https://blog.grabbyte.com/p/2022/04/1066.html</link>
				<pubDate>Sun, 24 Apr 2022 10:00:00 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2022/04/1066.html</guid>
				<description>&lt;p&gt;我暂时不直接讲FC具体开发过程，而是打算慢慢介绍FC系统的开发思路。&lt;/p&gt;&#xA;&lt;p&gt;如果直接从具体代码开始，会让读者有“身在此山中，不识真面目”的感觉；当然也不能脱离代码，空谈架构，失去了本系列的意义。&lt;/p&gt;</description>
			</item>
			<item>
				<title>翻译：山姆车库自制电脑芯片系列之首款芯片</title>
				<link>https://blog.grabbyte.com/p/2022/04/952.html</link>
				<pubDate>Wed, 06 Apr 2022 10:00:00 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2022/04/952.html</guid>
				<description>&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;&#xA;&lt;p&gt;我非常兴奋地宣布第一个自制集成电路的细节，并分享这个项目在过去一年中带给我的旅程。我希望我的成功能激励其他人，并帮助启动家用芯片制造的革命。当我开始这个项目时，我不知道自己进入了什么领域，但最终我学到的关于物理，化学，光学，电子学和许多其他领域的知识比我想象的要多。此外，我的努力只得到了世界上最积极的反馈和支持。我衷心感谢所有帮助过我，给我建议，并激励我这个项目的人。特别是我了不起的父母，他们不仅以任何可能的方式支持和鼓励我，而且还给了我一个工作的空间，并忍受了电费……谢谢！&lt;/p&gt;</description>
			</item>
			<item>
				<title>用C语言开发NES游戏（CC65）完整的背景</title>
				<link>https://blog.grabbyte.com/p/2022/01/868.html</link>
				<pubDate>Sun, 30 Jan 2022 10:00:00 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2022/01/868.html</guid>
				<description>&lt;p&gt;将全屏写入 RLE 压缩文件。&lt;/p&gt;&#xA;&lt;p&gt;不久前，我写了另一个博客页面，关于将BMP文件导入NES屏幕工具。这里。。。&lt;/p&gt;&#xA;&lt;p&gt;NES 屏幕工具 BMP 导入&lt;/p&gt;&#xA;&lt;p&gt;通常，我不会将BMP导入NES屏幕工具。我发现这很困难。&lt;/p&gt;</description>
			</item>
			<item>
				<title>Unix传奇</title>
				<link>https://blog.grabbyte.com/p/2022/01/827.html</link>
				<pubDate>Sat, 29 Jan 2022 10:00:00 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2022/01/827.html</guid>
				<description>&lt;p&gt;了解过去，我们才能知其然，更知所 以然。总结过去，我们才会知道我们明天该如何去规划，该如何去走。在时间的滚轮中，许许多的东西就像流星一样一闪而逝，而有些东西却能经受着时间的考验散 发着经久的魅力，让人津津乐道，流传至今。要知道明天怎么去选择，怎么去做，不是盲目地跟从今天各种各样琳琅满目前沿技术，而应该是去 —— 认认真真地 了解和回顾历史。&lt;/p&gt;</description>
			</item>
			<item>
				<title>分子图形软件MOL4D Ribbons</title>
				<link>https://blog.grabbyte.com/p/2022/01/708.html</link>
				<pubDate>Mon, 24 Jan 2022 10:00:00 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2022/01/708.html</guid>
				<description>&lt;p&gt;MOL4D分子图形系列软件 Ribbons&lt;/p&gt;&#xA;&lt;h1 id=&#34;起因&#34;&gt;起因&lt;/h1&gt;&#xA;&lt;p&gt;这是 MOL4D 分子图形系列的存档记录：原作者的博客已被封锁，这款 90 年代 DOS 平台的蛋白质分子图形软件资料面临失传，特此转载保存。原文链接：https://blog.csdn.net/zzwu/article/details/8285144&lt;/p&gt;</description>
			</item>
			<item>
				<title>1986年：IBM PC convertible 5140</title>
				<link>https://blog.grabbyte.com/p/2022/01/681.html</link>
				<pubDate>Wed, 19 Jan 2022 10:00:00 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2022/01/681.html</guid>
				<description>&lt;p&gt;IBM PC Convertible 是 IBM 的第一台电池供电的笔记本电脑，于1986年4月3日推出；它也是 IBM 第一个使用 3.5 英寸软盘驱动器的电脑产品，这种软盘之后成为业界标准。如同现今笔记型电脑一般，该款机型拥有电源管理功能，可由电池供电运作。&lt;/p&gt;</description>
			</item>
			<item>
				<title>CC65 开发FC/NES 游戏（一）环境搭建</title>
				<link>https://blog.grabbyte.com/p/2022/01/599.html</link>
				<pubDate>Thu, 13 Jan 2022 10:00:00 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2022/01/599.html</guid>
				<description>&lt;p&gt;红白机（又叫FC，美国叫NES）&lt;br&gt;&#xA;开发语言，早期的码农们用的是6502的CPU上的汇编语言ASM&lt;br&gt;&#xA;cc65 是 65（C）02 系统的完整交叉开发包，包括功能强大的宏汇编程序、C 编译器、链接器、库管理员和其他几个工具。&lt;/p&gt;</description>
			</item>
			<item>
				<title>CC65 开发FC/NES 游戏（三）使用摇杆</title>
				<link>https://blog.grabbyte.com/p/2022/01/611.html</link>
				<pubDate>Thu, 13 Jan 2022 10:00:00 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2022/01/611.html</guid>
				<description>&lt;h1 id=&#34;起因&#34;&gt;起因&lt;/h1&gt;&#xA;&lt;p&gt;这是 CC65 开发 FC/NES 游戏系列的第三篇：环境搭好了、Hello World 也能显示了，但游戏的核心是&amp;quot;响应玩家输入&amp;quot;。FC 的输入就是那两个手柄，这一篇解决&amp;quot;怎么把手柄按键读进程序&amp;quot;。&lt;/p&gt;</description>
			</item>
			<item>
				<title>CC65 开发FC/NES 游戏（二）Hello world</title>
				<link>https://blog.grabbyte.com/p/2022/01/604.html</link>
				<pubDate>Thu, 13 Jan 2022 10:00:00 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2022/01/604.html</guid>
				<description>&lt;h1 id=&#34;起因&#34;&gt;起因&lt;/h1&gt;&#xA;&lt;p&gt;系列第二篇：上一篇把 cc65 环境装好了，这一篇跑通第一个程序——在 FC/NES 上显示 Hello World，顺便看清 cl65 一条命令背后做了什么、为什么 NES 程序“不能退出”。&lt;/p&gt;</description>
			</item>
			<item>
				<title>CC65 开发FC/NES 游戏（四）方向键控制一个简单的精灵</title>
				<link>https://blog.grabbyte.com/p/2022/01/616.html</link>
				<pubDate>Thu, 13 Jan 2022 10:00:00 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2022/01/616.html</guid>
				<description>&lt;h1 id=&#34;起因&#34;&gt;起因&lt;/h1&gt;&#xA;&lt;p&gt;系列第四篇：上一篇把按键编码摸清了，这一篇让它&amp;quot;动起来&amp;quot;——用方向键控制一个精灵（先用星号占位）在屏幕上移动，顺便第一次接触 PPU（FC 的图像处理器）的寄存器。以后再把星号换成像游戏人物的图片，加上背景图。&lt;/p&gt;</description>
			</item>
			<item>
				<title>FC、NES游戏开发资料汇总</title>
				<link>https://blog.grabbyte.com/p/2022/01/627.html</link>
				<pubDate>Thu, 13 Jan 2022 10:00:00 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2022/01/627.html</guid>
				<description>&lt;h1 id=&#34;nes游戏开发资料&#34;&gt;NES游戏开发资料&lt;/h1&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;汇编&#34;&gt;汇编&lt;/h2&gt;&#xA;&lt;p&gt;ASM汇编中文：&lt;a href=&#34;https://happysoul.github.io/nes/asm_cn/&#34;&gt;搬运来的翻译的中文版的本地镜像&lt;/a&gt; | 原版地址：&lt;a href=&#34;https://blog.csdn.net/kkk584520/article/details/40375219&#34;&gt;CSDN卜居&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;ASM汇编英文原版：&lt;a href=&#34;http://patater.com/gbaguy/nesasm.htm&#34;&gt;英文原版地址(慢)&lt;/a&gt; | &lt;a href=&#34;https://happysoul.github.io/nes/asm_en/nesasm.htm&#34;&gt;英文版的本地镜像&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;6502汇编资料：&lt;a href=&#34;https://happysoul.github.io/nes/6502/&#34;&gt;6502编程大奥秘(修正版)&lt;/a&gt;&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;cc65相关--用c语言开发nes游戏&#34;&gt;CC65相关 – 用C语言开发NES游戏&lt;/h2&gt;&#xA;&lt;p&gt;你要是什么基础都没有就照着这几个例子复制粘贴试试&lt;/p&gt;</description>
			</item>
			<item>
				<title>用C语言开发NES游戏（CC65） 简介</title>
				<link>https://blog.grabbyte.com/p/2022/01/602.html</link>
				<pubDate>Thu, 13 Jan 2022 10:00:00 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2022/01/602.html</guid>
				<description>&lt;p&gt;1983年在日本发布（Famicom），1985年在美国发行。1986年在欧洲&lt;br&gt;&#xA;发行。1987年在澳大利亚发布。1993年作为顶级装载机重新发布，没有麻烦的锁定芯片。&lt;br&gt;&#xA;日本有替代磁盘驱动器系统。FDS。&lt;/p&gt;</description>
			</item>
			<item>
				<title>【计算机博物馆】计算机博物馆-计算机考古</title>
				<link>https://blog.grabbyte.com/p/2022/01/532.html</link>
				<pubDate>Sun, 09 Jan 2022 10:00:00 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2022/01/532.html</guid>
				<description>&lt;h1 id=&#34;起因&#34;&gt;起因&lt;/h1&gt;&#xA;&lt;p&gt;收集计算机考古资料时攒下来的一份在线资源清单：既有能在浏览器里“逛”的虚拟博物馆，也有能下载原版镜像的软件档案馆。按“想看历史脉络”和“想上手体验”两类需求整理，每个资源补一句它是什么、适合什么时候用。&lt;/p&gt;</description>
			</item>
			<item>
				<title>操作系统发展史</title>
				<link>https://blog.grabbyte.com/p/2022/01/483.html</link>
				<pubDate>Fri, 07 Jan 2022 10:00:00 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2022/01/483.html</guid>
				<description>&lt;h2 id=&#34;什么是操作系统&#34;&gt;什么是操作系统&lt;/h2&gt;&#xA;&lt;p&gt;可能很多人都会说，我们平时装的windows7 windows10都是操作系统，没错，他们都是操作系统。还有没有其他的？&lt;/p&gt;&#xA;&lt;p&gt;想想我们使用的手机，Google公司的Android系统，Apple公司笔记本上的的MacOSX、IPhone的IOS，他们都是操作系统。&lt;/p&gt;</description>
			</item>
			<item>
				<title>推荐博客和网站</title>
				<link>https://blog.grabbyte.com/p/2022/01/06.html</link>
				<pubDate>Thu, 06 Jan 2022 20:12:56 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2022/01/06.html</guid>
				<description>&lt;p&gt;时间戳工具：&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://tool.lu/timestamp/&#34;&gt;https://tool.lu/timestamp/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h1 id=&#34;技术博客收藏&#34;&gt;技术博客收藏&lt;/h1&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;小飞博客&lt;a href=&#34;https://xffjs.com/f/article/111.html&#34;&gt;https://xffjs.com/f/article/111.html&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://vintagetek.org/4051-graphic-desktop-system/&#34;&gt;&lt;/a&gt;&lt;a href=&#34;https://vintagetek.org/&#34;&gt;泰克产品、技术和人员的虚拟博物馆 (vintagetek.org)&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://vintagetek.org/4051-graphic-desktop-system/&#34;&gt;&lt;/a&gt;&lt;a href=&#34;https://oldcomputers.net/&#34;&gt;史蒂夫的电脑收藏 (oldcomputers.net)&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;古董电脑博物馆和收藏网站&amp;hellip;&lt;/strong&gt;&#xA;以下是古董电脑收藏的一些英文网站，有中文的收藏网站希望提供线索，寻找其他与您志趣相投的电脑收藏家！&lt;/p&gt;</description>
			</item>
			<item>
				<title>1985年世界上首款笔记本：东芝T1100</title>
				<link>https://blog.grabbyte.com/p/2022/01/06-1155.html</link>
				<pubDate>Thu, 06 Jan 2022 11:55:34 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2022/01/06-1155.html</guid>
				<description>&lt;p&gt;&lt;img src=&#34;https://blog.grabbyte.com/uploads/images/4ee592b22f96c58c41232e921f9237ac.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;电脑简介&#34;&gt;电脑简介&lt;/h2&gt;&#xA;&lt;p&gt;1985年，世界上第一台真正意义上的笔记本电脑东芝 TOSHIBA T1100诞生，它由日本东芝公司设计，搭配不到1MHz的Intel 8086处理器，配置9英寸单色显示屏，装有MS-DOS操作系统。&lt;/p&gt;</description>
			</item>
			<item>
				<title>FC卡带改造烧录卡教程（一）</title>
				<link>https://blog.grabbyte.com/p/2022/01/202.html</link>
				<pubDate>Sat, 01 Jan 2022 10:00:00 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2022/01/202.html</guid>
				<description>&lt;p&gt;看这篇文章之前建议先了解一些FC的基础知识，如Mapper/MMC/PCB/PRG/CHR等等，网上关于这些概念的文档多不胜数，在这里就不一一介绍了，各位可以自行搜索。&lt;/p&gt;</description>
			</item>
			<item>
				<title>FC卡带改造烧录卡教程（二）</title>
				<link>https://blog.grabbyte.com/p/2022/01/310.html</link>
				<pubDate>Sat, 01 Jan 2022 10:00:00 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2022/01/310.html</guid>
				<description>&lt;p&gt;具备一定的基础知识之后，接下来要开始真正的改造了。FC卡带的改造比较锻炼动手能力和耐心，技艺会随着改造的深入而不断提高，所以刚开始要好一些心理准备，比如焊坏板子、摔坏芯片、接错线等等。当然最最重要的是工欲善其事必先利其器，先配齐一套基础工具是必须的……&lt;/p&gt;</description>
			</item>
			<item>
				<title>GKD Mini 模拟器玩DOS游戏</title>
				<link>https://blog.grabbyte.com/p/2021/10/29-2020.html</link>
				<pubDate>Fri, 29 Oct 2021 20:20:43 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2021/10/29-2020.html</guid>
				<description>&lt;p&gt;GKDmini使用了“在复古掌机产业中颇为成熟可靠省电”的MIPS架构处理器，君正X1830，CPU部分为单个Xburst1核心，主频1.5GHz，64KB L1缓存，128KB L2缓存，搭配128MB RAM，没有GPU，但内嵌了ISP和VPU单元，不过Opendingux生态中大部分应用都并未针对VPU做过优化，聊胜于无。理论上，X1830相对于GCW一堆抄板机使用的JZ4770有更好的外围配置，因此超频潜力更大主频更高，在单核为主的低位模拟器生态里，X1830反而有更好的性能表现，当然有一件事情也必须认清，这就是GKD350H上的同款SoC，再强的MIPS也只是MIPS，性能上PS1机种就是它的临界点了。&#xA;&lt;img src=&#34;https://blog.grabbyte.com/uploads/images/587dfefd2f8fd2c0416952596ce5237e.jpg&#34; alt=&#34;&#34;&gt;&#xA;&lt;img src=&#34;https://blog.grabbyte.com/uploads/images/9076243dd34d07b6cfcd1a5d6653ca57.jpg&#34; alt=&#34;&#34;&gt;&#xA;&lt;img src=&#34;https://blog.grabbyte.com/uploads/images/db44b45858bb7a06e2c9a4c5b16cc6eb.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;</description>
			</item>
			<item>
				<title>1970年 Datapoint 2000</title>
				<link>https://blog.grabbyte.com/p/2021/10/18-182300-2.html</link>
				<pubDate>Mon, 18 Oct 2021 18:23:00 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2021/10/18-182300-2.html</guid>
				<description>&lt;p&gt;原文链接：http://oldcomputers.net/&lt;/p&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;参数&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;属性&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Announced:&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;June 1970&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Released:&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;November 1970&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Price:&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;US $7,800 (8K Version I in 1972)&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;US $11,690 (16K Version II in 1972)&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Weight:&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;50 lbs / 25 kg&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;CPU:&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;discrete logic - no CPU chip&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Memory:&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;2K-8K serial shift register (Version I)&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;4K-16K RAM (Version II)&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Display:&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;7x3.5-inch CRT, 80x12 text&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Ports:&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;System bus&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Storage:&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Dual cassette drives - 130K each&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;OS:&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;CTOS- Cassette Tape Operating System&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;Computer Terminal Corporation（CTC）由John Phillip Ray和Austin “Gus” Roche于1968年创立，这两位工程师之前曾在佛罗里达州通用动力公司的迪纳电子工作，该部门协助美国太空登月计划。&lt;/p&gt;</description>
			</item>
			<item>
				<title>DOS下的鼠标程序</title>
				<link>https://blog.grabbyte.com/p/2021/10/18-182300-3.html</link>
				<pubDate>Mon, 18 Oct 2021 18:23:00 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2021/10/18-182300-3.html</guid>
				<description>&lt;h1 id=&#34;代码合入流程&#34;&gt;代码合入流程&lt;/h1&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://blog.grabbyte.com/2022/10/271142.html&#34;&gt;代码合入流程&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h1 id=&#34;api请求地址&#34;&gt;API请求地址&lt;/h1&gt;&#xA;&lt;p&gt;consumer：http://dev.consumer-api.onesales.cn/doc.html#/home&lt;/p&gt;&#xA;&lt;p&gt;manager-api：http://dev.manager-api.onesales.cn/doc.html#/home&lt;/p&gt;</description>
			</item>
			<item>
				<title>Tektronix 4051 (1975)</title>
				<link>https://blog.grabbyte.com/p/2021/10/18-182300-4.html</link>
				<pubDate>Mon, 18 Oct 2021 18:23:00 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2021/10/18-182300-4.html</guid>
				<description>&lt;p&gt;Tektronix 4051 (1975)&lt;/p&gt;&#xA;&lt;p&gt;1976 年，泰克推出了一款名为 4051 的图形工程台式计算机。它由一个1024x768直视存储管，一个3M DC300磁带系统，一个运行BASIC的800KHz摩托罗拉6800和一个用于扩展系统功能的后置RomPack组成。这是一款令人难以置信的产品，是 Tek 21 和 31 计算器的后续产品。&lt;/p&gt;</description>
			</item>
			<item>
				<title>利用VBE显示技术做一个支持图形界面的操作系统</title>
				<link>https://blog.grabbyte.com/p/2021/08/28.html</link>
				<pubDate>Sat, 28 Aug 2021 22:07:47 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2021/08/28.html</guid>
				<description>&lt;h1 id=&#34;前言&#34;&gt;前言&lt;/h1&gt;&#xA;&lt;p&gt;图形界面（GUI）几乎被现在所有的主流操作系统及应用程序使用，这是因为它提供了极好的人机交互接口，微软大名鼎鼎的Windows就是一个非常成功而明显的例子，据说微软的理念有一条就是“让电脑变得越来越傻瓜，任何人都可以操作它”，很显然，要实现这个梦想，GUI界面是必须的。&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
