optionrom.asm 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. ;*
  2. ;* bios/optionrom.asm
  3. ;* https://gitlab.com/bztsrc/imgrec
  4. ;*
  5. ;* Copyright (C) 2020 bzt (bztsrc@gitlab)
  6. ;*
  7. ;* Permission is hereby granted, free of charge, to any person
  8. ;* obtaining a copy of this software and associated documentation
  9. ;* files (the "Software"), to deal in the Software without
  10. ;* restriction, including without limitation the rights to use, copy,
  11. ;* modify, merge, publish, distribute, sublicense, and/or sell copies
  12. ;* of the Software, and to permit persons to whom the Software is
  13. ;* furnished to do so, subject to the following conditions:
  14. ;*
  15. ;* The above copyright notice and this permission notice shall be
  16. ;* included in all copies or substantial portions of the Software.
  17. ;*
  18. ;* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  19. ;* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  20. ;* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
  21. ;* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
  22. ;* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
  23. ;* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  24. ;* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
  25. ;* DEALINGS IN THE SOFTWARE.
  26. ;*
  27. OPTIONROM equ 1
  28. ORG 0600h-32
  29. USE16
  30. loader: db 55h,0AAh ;ROM magic
  31. db (loader_end-loader)/512 ;size in 512 blocks
  32. .executor: jmp near realmode_start ;entry point
  33. .checksum: dw 0 ;checksum
  34. .name: db "IMGRECV", 0
  35. dw 0
  36. dd 0, 0
  37. .pnpptr: dw 0
  38. .flags: dd 0
  39. realmode_start:
  40. include "imgrecv.asm"
  41. db (511-($-loader+511) mod 512) dup 0
  42. loader_end:
  43. chksum = 0
  44. repeat $-loader
  45. load b byte from (loader+%-1)
  46. chksum = (chksum + b) mod 100h
  47. end repeat
  48. store byte (100h-chksum) at (loader.checksum)