kernel-8086.S 600 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. .text
  2. .globl _start
  3. _start:
  4. base:
  5. .code16
  6. jmp cont
  7. serialmsg:
  8. 1:
  9. movb 0(%si), %bl
  10. testb %bl, %bl
  11. jz 1f
  12. movw $0x3fd, %dx
  13. 2:
  14. inb %dx, %al
  15. testb $0x20, %al
  16. jz 2b
  17. movw $0x3f8, %dx
  18. movb %bl, %al
  19. outb %al, %dx
  20. incw %si
  21. jmp 1b
  22. 1:
  23. ret
  24. cont:
  25. #ifdef TARGET_NTLDR
  26. movw $0x2000, %ax
  27. #elif defined (TARGET_CHAINLOADER)
  28. xorw %ax, %ax
  29. #else
  30. #error unsupported target
  31. #endif
  32. movw %ax, %ds
  33. lea message, %si
  34. call serialmsg
  35. #include "qemu-shutdown-x86.S"
  36. 1:
  37. hlt
  38. jmp 1b
  39. message:
  40. .ascii "Boot Test Passed Successfully\n" SUCCESSFUL_BOOT_STRING "\n"
  41. .byte 0
  42. .org 510
  43. .short 0xaa55