今まではfirstboot.bin、secondboot.bin、third.binをcatでくっつけただけだった。ただ、こうするとファイルシステムが構築できなさそうなので
としてたところを
os.img : ${FIRST} ${SECOND} ${THIRD} Makefile
cat ${FIRST} ${SECOND} ${THIRD} > $@
に変更した。これでファイルシステムを構築できそう。これに伴いJMPで飛ぶ場所をずらし、それで動いてくれた。しかし問題が発生。問題は文字列を表示させるときに起こる。
os.img : ${FIRST} ${SECOND} ${THIRD} Makefile
cat ${SECOND} ${THIRD} > ${KERNEL}
mformat -f 1440 -C -B ${FIRST} -i $@ ::
mcopy -i $@ ${KERNEL} ::
vga.printFormat("Hello World");
とHello Worldと表示させようとすると、何故だか意味不明な文字が表示されてしまう。そして、たまにqemuが落ちる。しかし、
char world[12]; world[0] = 'H'; world[1] = 'e'; world[2] = 'l'; world[3] = 'l'; world[4] = 'o'; world[5] = ' '; world[6] = 'W'; world[7] = 'o'; world[8] = 'r'; world[9] = 'l'; world[10] = 'd'; world[11] = '\0'; vga.printFormat(world);
これだと問題なくHello Worldが表示される。何でだろう?