文章分类 - 《30天自制操作系统》学习与实践
从零到一学习制作操作系统
摘要:鼠标控制与32位模式切换 一、鼠标控制 1. 鼠标数据解读 unsigned char mouse_dbuf[3], mouse_phase; for (;;) { io_cli(); if (fifo8_status(&keyfifo) + fifo8_status(&mousefifo) ==
阅读全文
摘要:FIFO与鼠标控制 一、FIFO 1. 获取按键编码 实现当按下键盘时,会在屏幕显示按下键的编码 #define PORT_KEYDAT 0x0060 void inthandler21(int *esp) { struct BOOTINFO *binfo = (struct BOOTINFO *)
阅读全文
摘要:第六天 - 分割编译与中断处理 一、文件整理 1. 源文件分割 按照内容对源文件进行分割为多个小文件,修改和编译都会提高make的速度 graphic.c - 描画等图形处理 /* u关于描画的处理 */ void io_hlt(void); void io_cli(void); void io_o
阅读全文
摘要:结构体, 文字显示, GDT/IDT初始化 一、结构体 1. 接受启动信息 避免写死相关的地址常量,改用指针获取启动所需的信息 binfo -- bootinfo scrn --screen void HariMain(void) { char *vram; int xsize, ysize; sh
阅读全文
摘要:C 语言与画面显示 一、C语言内容 1. C 语言实现内存写入 实现一个汇编语言函数,将要显示的内容写入指定的内存地址中 VRAM ; naskfunc.nas文件 ; naskfunc ; TAB=4 [FORMAT "WCOFF"] ; 制作目标文件的模式 [INSTRSET "i486p"]
阅读全文
摘要:32位模式与C语言 一、32位模式 1. 制作IPL(Initial Program Loader) 启动区 - 磁盘最初的512个字节是启动区 IPL - 启动程序装载器,装在启动区内,用于加载真正的操作系统 汇编代码解析: ; ipl.nas ; hello-os ; TAB = 4 ORG 0
阅读全文
摘要:汇编语言学习与Makefile入门 一、汇编学习 汇编核心程序 ; hello-os ; TAB=4 ORG 0x7c00 ; 指明程序装载地址 JMP entry ; 标准FAT12格式软盘专用的代码 Stand FAT12 format floppy code DB 0x90 DB "HELLO
阅读全文
摘要:hello world 一、基础知识 UEFI与BIOS的概念 1. BIOS Basic Input Output System, 基本输入输出系统 简介 是一组固化到计算机内主板上一个daoROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、系统设置信息、开机后自检程序和系统自启动程序
阅读全文