いいかげんさがねぇ。。。

70.7kg

 

ふむ。

油断は禁物!

 

という事で、怪しい場所は分かった。

要するに、asmheadでメモリに書いておいた値がおかしい為、

C言語側で使うとおかしくなる。って事。

 

で、恥ずかしく思いっきり間違えたものを書いてた。

(修正しておいた。)

 

0x0ff4: 0x0d00 (0x000d)=  3328 (14)→  ???(X方向の解像度で、320つまり0x0140のはず)

 

そう、ここ!

何故このアドレスだけ値が壊れている。。。

 

bootpack.cで、読めているのか?は当然、メモリの値が読めているだろうけど念の為確認。

 

   short *tst_binfo_scrnx, *tst_binfo_scrny;

 

   tst_binfo_scrnx = (short *) 0x1004;

   tst_binfo_scrny = (short *) 0x1006;

   *tst_binfo_scrnx = *binfo_scrnx;

   *tst_binfo_scrny = *binfo_scrny;

 

(qemu) xp/100xh 0x0ff0

0000000000000ff0: 0x000a 0x0008 0x000d 0x00c8 0x0000 0x000a 0x0000 0x0000

0000000000001000: 0x0000 0x0000 0x000d 0x00c8 0x0000 0x0000 0x0000 0x0000

0000000000001010: 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000

0000000000001020: 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000

0000000000001030: 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000

あたり前だが、c言語は意図通り。

やっぱり、asmheadの中身。

なんでこのアドレスだけ。。

 

;     MOV       BYTE [VMODE],8  ; 画面モードをメモする(C言語が参照する)

      MOV       WORD [VMODE],8  ; 画面モードをメモする(C言語が参照する)

      MOV       WORD [SCRNX],320

      MOV       WORD [SCRNY],200

      MOV       DWORD [VRAM],0x000a0000

 

ここも、以前のデバッグ時によく分からず、色々試行錯誤している際に

残った残骸だと思うがアドレス的には問題なさそうであるが、念の為、

アクセスをBYTEもWORDも試したが問題なし。

 

さて、何故、0x0ff4だけ。。。

 

ん???

もしかして、以前コードの進行具合のチェッカーを入れたような。。。

 

MOV             WORD [0x0ff4], 0x000d   ; 進み具合テスト2

いた。。。。。。。😭

 

これかよ。。。。

 

という事で、チェッカーを削除(他にもない事は確認)

 

$ make run

make -r img

make -r haribote.img

nasm ipl10.nas -o ipl10.bin -l ipl10.lst

nasm asmhead.nas -o asmhead.bin -l asmhead.lst

nasm -f elf32 naskfunc.nas -o naskfunc.o -l naskfunc.lst

x86_64-elf-gcc -c -g -march=i486 -m32 -nostdlib bootpack.c -o bootpack.o

x86_64-elf-ld -m elf_i386 -e HariMain -o bootpack.hrb -T hrb.ld bootpack.o naskfunc.o

cat asmhead.bin bootpack.hrb > haribote.sys

mformat -f 1440 -C -B ipl10.bin -i haribote.img ::

mcopy -i haribote.img haribote.sys ::

qemu-system-i386 -L . -m 32 -monitor stdio -s -drive file=haribote.img,format=raw,if=floppy -boot a

QEMU 5.0.0 monitor - type 'help' for more information

(qemu) xp/100xh 0x0ff0

0000000000000ff0: 0x000a 0x0008 0x0140 0x00c8 0x0000 0x000a 0x0000 0x0000

0000000000001000: 0x0000 0x0000 0x0140 0x00c8 0x0000 0x0000 0x0000 0x0000

0000000000001010: 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000

0000000000001020: 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000

0000000000001030: 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000

 

f:id:kanazo3:20200609073857j:plain

おかえり。。。

 

さて、またここから始めよう。

ほんっと、進まねぇ。。

でも、ゆっくり進めば良いか。。。

 

ちなみに、そのまま読み進め、

f:id:kanazo3:20200609074648j:plain

 

まぁ、当然と言えば当然だが、ここまで二日。。(涙)

 

ゆっくり続けよう。。

 

続く。