OSを作ろう
まず初めにOSを作る手順を紹介しよう。基本的にコードを書く→コンパイル→確認という手順になる。これはアプリケーションプログラムを作成する手順と同じである。なのでここではツールの使い方について簡単に説明する。
OS作成に必要なツールを揃えよう
私はdebian lennyを使用しているので下記の用にしてツールが揃う。簡単だね。
$sudo apt-get install gcc yasm qemu mtools
コードを書いてみる
OSを書くにはアセンブラを使う。もちろんC言語も使えるが、かくかくじかじかで初期のコードはアセンブラで書く必要がある。
これは画面に「A」を表示する小さなプログラムである。
「a.s」とでもファイルに名前をつけて保存しよう。コードの詳細は次回説明する。
[BITS 16] jmp 0x07C0:setup ; FDのための記述 name: DB "Name " sector_size: DW 512 cluster_size: DB 1 fat_pos: DW 1 fat_cnt: DB 2 root_size: DW 224 sector_cnt: DW 2880 media_type: DB 0xf0 fat_size: DW 9 sector_cnt_pt: DW 18 head_cnt: DW 2 bpb_pos: DD 0 sector_cnt_l: DD 2880 drive_no: DB 0x00 reserved: DB 0x00 ext_boot_code: DB 0x29 volume_serial: DD 0xffffffff disk_name: DB "DISK " fat_name: DB "FAT12 " times 18 db 0 setup: mov ax, cs mov ds, ax clean: mov ah, 0 ;setup video mode mov al, 0x10 ;video mode. 0x10=80x25 with 16 colors int 0x10 putchar: mov ah, 0x0E ;put char mov al, 'A' mov bh, 0 mov bl, 0x0E ;text color. 0x0E = Yellow int 0x10 end: jmp end bootsign: times 510-($-$$) db 0 dw 0xaa55
アセンブルだ
アセンブラをコンパイルすることをアセンブルと言うらしい。
私はyasmを使ってアセンブルしてみることにした。詳しくはyasmのマニュアルを見るといいでしょう。
$yasm -f bin a.s -o a.bin