1 # Test out the video mode by filling in the screen with pixels. 2 # 3 # To build a disk image: 4 # ./translate_subx_baremetal baremetal/ex2.subx # emits disk.img 5 # To run: 6 # qemu-system-i386 disk.img 7 # Or: 8 # bochs -f baremetal/boot.bochsrc # boot.bochsrc loads disk.img 9 # 10 # Expected output: 11 # html/baremetal.png 12 13 # main: (address 0x8800) 14 15 == code 16 17 # ecx <- start of video memory 18 8b/-> *0x7f28 1/r32/ecx 19 20 # eax <- final pixel of video memory 21 8d/copy-address *(ecx + 0x0bffff) 0/r32/eax # 0xbffff = 1024*768 - 1 22 23 # for each pixel in video memory 24 { 25 39/compare %eax 1/r32/ecx 26 7c/jump-if-< break/disp8 27 # write its column number to it 28 88/byte<- *eax 0/r32/AL 29 48/decrement-eax 30 eb/jump loop/disp8 31 } 32 33 # hang indefinitely 34 { 35 eb/jump loop/disp8 36 }