Archive for 编写操作系统

之前搜索过,以前在mac上搞过gdk还是啥的对x11阴影很大,这次想着只管搞一下,开虚拟机太费劲了。 mikecoder.cn/?post=116 安装这篇文章搞定了,备份一下。 brew install sdl ./configure --enable-ne2000 --enable-all-optimizations --enable-cpu-level=6 --enable-x86-64 --enable-vmx=2 --enable-pci --enable-usb --enable-usb-ohci --enable-e1000 --enable-debugger --enable-disasm --disable-debugger-gui --with-sdl --prefix=$HOME/opt/bochs make & make install export BXSHARE="$HOME/opt/bochs/share/bochs" export PATH="$PATH:$HOME/opt/bochs/bin" 就好了。

Continue

clear主要作用是清屏 ax=0600h初始化屏幕 cx起始位置 dx结束位置 然后调用bios中断 clear下边是设置光标的位置 ah=02h dh行,dl列 DispStr主要打印hello world 详细介绍google搜索得到。 boot/boot.asm代码:

org 07c00h
mov ax,cx
mov ds,ax
mov es,ax
call clear
call DispStr
jmp $

clear:
    mov cx,00h
    mov dx, 2580h
    mov bh, 00h
    mov ax, 0600h
    int 10h

    mov bh, 00h
    mov dh, 11h
    mov dl, 00h
    mov ah, 02h
    int 10h
    ret

DispStr:
    mov ax,BootMessage
    mov bp, ax
    mov cx, 12
    mov ax, 1301h
    mov bx, 000ch
    mov dl, 0
    int 10h
    ret

BootMessage:    db  "hello, world!"
times 510-($-$$) db 0
dw 0xaa55

Continue

lisp群里有人写操作系统,我又想起了以前写的。以前写的没做完,当时有很多不明白的,现在决定看书再做一遍。 环境搭建:系统是ubuntu,编译器gcc,make,nasm,虚拟机bochs,然后应该没了。 bochsrc.txt文件配置 floppya: image=./img/a.img, status=inserted,加载软盘镜像 ata0-master: type=disk, path="./img/c.img", mode=flat, cylinders=20, heads=16, spt=63, 硬盘镜像,这个还没用,建了个10M的文件 boot: floppy,,启动顺序 #boot: disk log: ./log/bochsout.txt 日志记录 parport1: enabled=1, file="./log/parport.out"# 并口的数据记录文件 应该在没啥了,有错误可以再改。 Makefile文件配置

build/boot : boot/boot.asm
	nasm boot/boot.asm -o build/boot

a.img : build/boot
	dd if=build/boot of=img/a.img bs=512 count=1 conv=notrunc

run : a.img
	bochs

clean :
	rm build/boot
每次直接make run就可以了
~/code/os$ tree
.
├── bochsrc.txt
├── boot
│   └── boot.asm
├── build
│   └── boot
├── img
│   ├── a.img
│   └── c.img
├── log
│   ├── bochsout.txt
│   └── parport.out
└── Makefile

目录结构,先这样了。慢慢添加

Continue

$ sudo apt-get install build-essential xorg-dev libgtk2.0-dev 编译bochs $ ./configure --enable-debugger --enable-disasm $ sudo make $ sudo make install 记录几个目录: /usr/local/bin/bochs Bochs启动程序 /usr/local/bin/bximage Bochs带的制作磁盘镜像文件的工具 /usr/local/share/doc/bochsrc-sample.txt Bochs的配置文件例子 配置文件官方给的例子有详细的解释,修改一下就好。比如我编译的bochs的版本为 bochs-2.5.1,提示错误: device: hd message:ata0-0:could not open hard drive image file '30M.sample' 你可以新建一个hd img 也可以把配置文件里hd注释掉,再修改一下boot就好了. 这样安装的bochs带有调试功能,如果你想直接运行,可以执行c命令。 [caption id="attachment_698" align="alignnone" width="227" caption="ubuntu bochs调试"]ubuntu bochs调试[/caption]

Continue