Open-source real-mode BIOS

ANSBIOS

一枚用 NASM 从零编写的 16 位实模式 BIOS。实现标准 PC BIOS 中断服务、 ATA PIO 磁盘读取与 VGA 文本输出,可加载并运行真实的引导程序。

64
KiB ROM
16
位实模式
6
中断向量
qemu-system-x86_64

        
Capabilities

实现了哪些能力

启动链路

复位向量跳转到 0xF000:init,安装完整中断向量表,读取 LBA0 引导扇区并交接给 0x7C00,兼容标准引导程序。

INT 13h 磁盘服务

支持 reset、status、CHS 读取、磁盘参数,以及 INT 13h Extensions(0x41 / 0x42 / 0x43),以 ATA PIO LBA28 驱动虚拟硬盘。

INT 10h 视频

实现 teletype、模式设置、光标读写与字符串输出,驱动标准 VGA 80×25 文本模式,输出 banner 与启动信息。

INT 16h 键盘

提供等待按键与查询按键两类功能,将 Enter 映射为回车换行,为引导菜单与交互程序提供基础输入。

系统服务

INT 15h 常规内存检测(0x88 / 0xE801)、INT 11h 设备列表与 INT 12h 内存容量报告,满足标准引导协议的期望。

可读的源码

纯 NASM 编写,无外部依赖。模块化的中断处理程序、显式的寄存器约定与完整注释,便于阅读、调试与二次开发。

Architecture

启动流程

Boot Stage
复位向量 → init → 安装 IVT → PCI / VGA 初始化 → 加载 LBA0 → 跳转 0x7C00
中断服务
INT 10h 视频 / INT 13h 磁盘 / INT 16h 键盘 / INT 15h 系统 / INT 11h 设备 / INT 12h 内存 / INT 1Ah 时间
硬件抽象
ATA PIO LBA28 / 32 位乘法辅助 / VGA 寄存器编程(CRTC / Sequencer / GC / AC / DAC)
引导程序 / OS
使用标准 BIOS 接口的 SYSLINUX、GRUB、FreeDOS 或自定义引导扇区
Roadmap

开发路线

Phase 1

最小可运行 BIOS

中断向量表、串口输出、POST banner、INT 10h / 13h / 16h,以及 ATA PIO 读取 LBA0 引导镜像。

Phase 2

真实引导支持

CHS / LBA 双路径、INT 13h Extensions、磁盘参数与内存报告,使 SYSLINUX / FreeDOS 可正常加载。

Phase 3

VGA 图形输出

让 80×25 文本模式在 QEMU GUI 中正确显示 logo、POST 与引导菜单。

Phase 4

内存图与写入

INT 15h E820 内存图、INT 13h 写操作、软盘 DL=0x00,以及更完整的 POST 流程。

Source

获取 ANSBIOS

当前为 Phase 2 研究版本,用于在 QEMU 中测试与学习。源码以 NASM 编写,构建仅需一个汇编器。

v0.2 Phase 2 / 64 KiB ROM / NASM
build
git clone https://github.com/SanhanaYuzu/ans-virtualbios.git
cd ans-virtualbios
./build.sh
./test.sh gui