1日目
ソースとスクリーンショット。
ldとかobjcopyとか、いきなりbinutilsの奥儀連発です。アセンブラでフロッピーディスクのイメージ作ってます。機械語をそのまま埋め込んでます。
01/Makefile
TARGET=henaos ${TARGET}.img: ${TARGET}.S gcc -c -o ${TARGET}.o ${TARGET}.S ld -o ${TARGET}.tmp -Ttext 0 ${TARGET}.o objcopy -O binary ${TARGET}.tmp ${TARGET}.img .PHONY: clean clean: rm -f *.o *.tmp *.img .PHONY: run run: ${TARGET}.img qemu -net none -m 8 -boot a -fda ${TARGET}.img
01/henaos.S
#define ENTRY(x) .globl x; .type x,@function; x: .text .code16 /* FAT12 Header */ .byte 0xeb, 0x4e, 0x90 .ascii "HENA-IPL" .value 512 .byte 1 .value 1 .byte 2 .value 224 .value 2880 .byte 0xf0 .value 9 .value 18 .value 2 .long 0 .long 2880 .byte 0x0, 0x0, 0x29 .long 0xffffffff .ascii "HENA-OS " .ascii "FAT12 " .fill 18, 1, 0 ENTRY(_start) /* Program */ .byte 0xb8, 0x00, 0x00, 0x8e, 0xd0, 0xbc, 0x00, 0x7c .byte 0x8e, 0xd8, 0x8e, 0xc0, 0xbe, 0x74, 0x7c, 0x8a .byte 0x04, 0x83, 0xc6, 0x01, 0x3c, 0x00, 0x74, 0x09 .byte 0xb4, 0x0e, 0xbb, 0x0f, 0x00, 0xcd, 0x10, 0xeb .byte 0xee, 0xf4, 0xeb, 0xfd .asciz "\n\nHello, Hena-OS world!!\n" .org 0x1fe /* End of Boot Sector */ .byte 0x55, 0xaa, 0xf0, 0xff, 0xff .org 0x1400 .byte 0xf0, 0xff, 0xff .org 512 * 2880