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