diff options
Diffstat (limited to 'ex2.hex')
-rw-r--r-- | ex2.hex | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/ex2.hex b/ex2.hex new file mode 100644 index 00000000..6c06565f --- /dev/null +++ b/ex2.hex @@ -0,0 +1,42 @@ +# Test out the video mode by filling in the screen with pixels. +# +# To run, first prepare a realistically sized disk image: +# dd if=/dev/zero of=disk.img count=20160 # 512-byte sectors, so 10MB +# Load the program on the disk image: +# cat baremetal/boot.hex baremetal/ex2.hex |./bootstrap run apps/hex > a.bin +# dd if=a.bin of=disk.img conv=notrunc +# To run: +# qemu-system-i386 disk.img +# Or: +# bochs -f baremetal/boot.bochsrc # boot.bochsrc loads disk.img +# +# Expected output: +# html/baremetal.png + +# main: (address 0x9400) + +# ecx <- LFB +8b # copy *rm32 to r32 + 0d # 00/mod/indirect 001/r32/ecx 101/rm32/use-disp32 + 28 81 00 00 # disp32 [label] + +# eax <- LFB + 0xbffff (1024*768 - 1) +8d # copy-address rm32 to r32 + 81 # 10/mod/*+disp32 000/r32/eax 001/rm32/ecx + ff ff 0b 00 # disp32 + +# $loop: +# if (eax < ecx) break +39 # compare rm32 with r32 + c8 # 11/mod/direct 001/r32/ecx 000/rm32/eax +7c 05 # break if < [label] +# *eax <- al +88 # copy r8 to m8 at r32 + 00 # 00/mod/indirect 000/r8/AL 000/rm32/eax +48 # decrement eax +eb f7 # loop to -9 bytes [label] + +# $break: +e9 fb ff ff ff # hang indefinitely + +# vim:ft=subx |