[自制操作系统] 图形界面&VBE工具&MMIO显存&图形库/字库

这里写图片描述

本文记录了在JOS(或在任意OS)上实现图形界面的方法与一些图形库的实现。
本文中支持的新特性:

  • 支持基本图形显示
  • 支持中英文显示(中英文点阵字库)

相关:VBE VESA MMIO 点阵字库
Github : https://github.com/He11oLiu/MOS

About VESA

Video Electronics Standards Association(视频电子标准协会,简称“VESA”)是制定计算机和小型工作站视频设备标准的国际组织,1989年由NEC及其他8家显卡制造商赞助成立。创立VESA的原始目的是要制定分辨率为800x600的SVGA视频显示标准。其后,VESA公告一系列的个人电脑视频周边功能的相关标准。

VBE 功能调用

参考博客CSDN博客

VBE功能调用

  • AH必须等于4FH,表明是VBE标准
  • AL等于VBE功能号,0<= AL <= 0BH
  • BL等于子功能号,也可以没有子功能
  • 调用INT 10H
  • 返回值在AX中
    • AL=4FH:支持该功能
    • AL!=4FH:不支持该功能
    • AH=00H:调用成功
    • AH=01H:调用失败
    • AH=02H:当前硬件配置不支持该功能
    • AH=03H:当前的显示模式不支持该功能

具体功能

此部分参考VESA编程——GUI离我们并不遥远,原作者博客已关闭。

功能0x00:返回控制器信息
输入:
    AX      = 4F00h     返回VBE控制器信息
    ES:DI   =           指向存放VbeInfoBlock结构体的缓冲区指针    
输出:
    AX      =           VBE返回状态

这个函数返回一个VbeInfoBlock结构体,该结构体定义如下:

// Vbe Info Block
typedef struct {
    unsigned char       vbe_signature;
    unsigned short      vbe_version;
    unsigned long       oem_string_ptr;
    unsigned char       capabilities;
    unsigned long       video_mode_ptr;
    unsigned short      total_memory;
    unsigned short      oem_software_rev;
    unsigned long       oem_vendor_name_ptr;
    unsigned long       oem_product_name_ptr;
    unsigned long       oem_product_rev_ptr;
    unsigned char       reserved[222];
    unsigned char       oem_data[256];  
} VbeInfoBlock;
  • vbe_signature是VBE标识,应该填充的是”VESA”
  • vbe_vers
  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值