マイペースなプログラミング日記

x86エミュレータやFPGA、WebGLにお熱なd-kamiがマイペースに書くブログ

構造を変える

今まではfirstboot.bin、secondboot.bin、third.binをcatでくっつけただけだった。ただ、こうするとファイルシステムが構築できなさそうなので


os.img : ${FIRST} ${SECOND} ${THIRD} Makefile
cat ${FIRST} ${SECOND} ${THIRD} > $@
としてたところを

os.img : ${FIRST} ${SECOND} ${THIRD} Makefile
cat ${SECOND} ${THIRD} > ${KERNEL}
mformat -f 1440 -C -B ${FIRST} -i $@ ::
mcopy -i $@ ${KERNEL} ::
に変更した。これでファイルシステムを構築できそう。これに伴いJMPで飛ぶ場所をずらし、それで動いてくれた。しかし問題が発生。問題は文字列を表示させるときに起こる。

    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が表示される。何でだろう?