v86 0.3.4 → 0.3.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (369) hide show
  1. package/Readme.md +4 -4
  2. package/bios/seabios/.config +113 -0
  3. package/bios/seabios/.config.old +114 -0
  4. package/bios/seabios/.gitignore +4 -0
  5. package/bios/seabios/COPYING +674 -0
  6. package/bios/seabios/COPYING.LESSER +165 -0
  7. package/bios/seabios/Makefile +286 -0
  8. package/bios/seabios/README +17 -0
  9. package/bios/seabios/docs/Build_overview.md +104 -0
  10. package/bios/seabios/docs/Contributing.md +20 -0
  11. package/bios/seabios/docs/Debugging.md +111 -0
  12. package/bios/seabios/docs/Developer_Documentation.md +25 -0
  13. package/bios/seabios/docs/Developer_links.md +86 -0
  14. package/bios/seabios/docs/Download.md +27 -0
  15. package/bios/seabios/docs/Execution_and_code_flow.md +178 -0
  16. package/bios/seabios/docs/Linking_overview.md +160 -0
  17. package/bios/seabios/docs/Mailinglist.md +8 -0
  18. package/bios/seabios/docs/Memory_Model.md +253 -0
  19. package/bios/seabios/docs/README +5 -0
  20. package/bios/seabios/docs/Releases.md +482 -0
  21. package/bios/seabios/docs/Runtime_config.md +193 -0
  22. package/bios/seabios/docs/SeaBIOS.md +17 -0
  23. package/bios/seabios/docs/SeaVGABIOS.md +39 -0
  24. package/bios/seabios/out/autoconf.h +117 -0
  25. package/bios/seabios/out/include/config/acpi/dsdt.h +0 -0
  26. package/bios/seabios/out/include/config/acpi.h +0 -0
  27. package/bios/seabios/out/include/config/ahci.h +0 -0
  28. package/bios/seabios/out/include/config/apmbios.h +0 -0
  29. package/bios/seabios/out/include/config/ata/dma.h +0 -0
  30. package/bios/seabios/out/include/config/ata/pio32.h +0 -0
  31. package/bios/seabios/out/include/config/ata.h +0 -0
  32. package/bios/seabios/out/include/config/auto.conf +69 -0
  33. package/bios/seabios/out/include/config/auto.conf.cmd +9 -0
  34. package/bios/seabios/out/include/config/boot.h +0 -0
  35. package/bios/seabios/out/include/config/bootorder.h +0 -0
  36. package/bios/seabios/out/include/config/build/vgabios.h +0 -0
  37. package/bios/seabios/out/include/config/call32/smm.h +0 -0
  38. package/bios/seabios/out/include/config/cdrom/boot.h +0 -0
  39. package/bios/seabios/out/include/config/cdrom/emu.h +0 -0
  40. package/bios/seabios/out/include/config/debug/level.h +0 -0
  41. package/bios/seabios/out/include/config/drives.h +0 -0
  42. package/bios/seabios/out/include/config/entry/extrastack.h +0 -0
  43. package/bios/seabios/out/include/config/esp/scsi.h +0 -0
  44. package/bios/seabios/out/include/config/flash/floppy.h +0 -0
  45. package/bios/seabios/out/include/config/floppy.h +0 -0
  46. package/bios/seabios/out/include/config/fw/romfile/load.h +0 -0
  47. package/bios/seabios/out/include/config/hardware/irq.h +0 -0
  48. package/bios/seabios/out/include/config/kbd/call/int15/4f.h +0 -0
  49. package/bios/seabios/out/include/config/keyboard.h +0 -0
  50. package/bios/seabios/out/include/config/lpt.h +0 -0
  51. package/bios/seabios/out/include/config/lsi/scsi.h +0 -0
  52. package/bios/seabios/out/include/config/malloc/uppermemory.h +0 -0
  53. package/bios/seabios/out/include/config/megasas.h +0 -0
  54. package/bios/seabios/out/include/config/mouse.h +0 -0
  55. package/bios/seabios/out/include/config/mpt/scsi.h +0 -0
  56. package/bios/seabios/out/include/config/mptable.h +0 -0
  57. package/bios/seabios/out/include/config/mtrr/init.h +0 -0
  58. package/bios/seabios/out/include/config/optionroms.h +0 -0
  59. package/bios/seabios/out/include/config/override/pci/id.h +0 -0
  60. package/bios/seabios/out/include/config/pcibios.h +0 -0
  61. package/bios/seabios/out/include/config/pirtable.h +0 -0
  62. package/bios/seabios/out/include/config/pmm.h +0 -0
  63. package/bios/seabios/out/include/config/pmtimer.h +0 -0
  64. package/bios/seabios/out/include/config/pnpbios.h +0 -0
  65. package/bios/seabios/out/include/config/ps2port.h +0 -0
  66. package/bios/seabios/out/include/config/pvscsi.h +0 -0
  67. package/bios/seabios/out/include/config/qemu/hardware.h +0 -0
  68. package/bios/seabios/out/include/config/qemu.h +0 -0
  69. package/bios/seabios/out/include/config/rom/size.h +0 -0
  70. package/bios/seabios/out/include/config/rtc/timer.h +0 -0
  71. package/bios/seabios/out/include/config/s3/resume.h +0 -0
  72. package/bios/seabios/out/include/config/sdcard.h +0 -0
  73. package/bios/seabios/out/include/config/serial.h +0 -0
  74. package/bios/seabios/out/include/config/tcgbios.h +0 -0
  75. package/bios/seabios/out/include/config/threads.h +0 -0
  76. package/bios/seabios/out/include/config/tristate.conf +4 -0
  77. package/bios/seabios/out/include/config/tsc/timer.h +0 -0
  78. package/bios/seabios/out/include/config/use/smm.h +0 -0
  79. package/bios/seabios/out/include/config/vga/allocate/extra/stack.h +0 -0
  80. package/bios/seabios/out/include/config/vga/bochs/stdvga.h +0 -0
  81. package/bios/seabios/out/include/config/vga/bochs.h +0 -0
  82. package/bios/seabios/out/include/config/vga/did.h +0 -0
  83. package/bios/seabios/out/include/config/vga/extra/stack/size.h +0 -0
  84. package/bios/seabios/out/include/config/vga/fixup/asm.h +0 -0
  85. package/bios/seabios/out/include/config/vga/pci.h +0 -0
  86. package/bios/seabios/out/include/config/vga/stdvga/ports.h +0 -0
  87. package/bios/seabios/out/include/config/vga/vbe.h +0 -0
  88. package/bios/seabios/out/include/config/vga/vid.h +0 -0
  89. package/bios/seabios/out/include/config/vgahooks.h +0 -0
  90. package/bios/seabios/out/include/config/virtio/blk.h +0 -0
  91. package/bios/seabios/out/include/config/virtio/scsi.h +0 -0
  92. package/bios/seabios/out/include/config/xen.h +0 -0
  93. package/bios/seabios/out/scripts/kconfig/conf +0 -0
  94. package/bios/seabios/out/scripts/kconfig/conf.o +0 -0
  95. package/bios/seabios/out/scripts/kconfig/zconf.hash.c +289 -0
  96. package/bios/seabios/out/scripts/kconfig/zconf.lex.c +2420 -0
  97. package/bios/seabios/out/scripts/kconfig/zconf.tab.c +2538 -0
  98. package/bios/seabios/out/scripts/kconfig/zconf.tab.o +0 -0
  99. package/bios/seabios/scripts/acpi_extract.py +366 -0
  100. package/bios/seabios/scripts/acpi_extract_preprocess.py +41 -0
  101. package/bios/seabios/scripts/buildrom.py +56 -0
  102. package/bios/seabios/scripts/buildversion.py +134 -0
  103. package/bios/seabios/scripts/checkrom.py +95 -0
  104. package/bios/seabios/scripts/checkstack.py +226 -0
  105. package/bios/seabios/scripts/checksum.py +16 -0
  106. package/bios/seabios/scripts/encodeint.py +21 -0
  107. package/bios/seabios/scripts/gen-offsets.sh +17 -0
  108. package/bios/seabios/scripts/kconfig/.gitignore +22 -0
  109. package/bios/seabios/scripts/kconfig/Makefile +331 -0
  110. package/bios/seabios/scripts/kconfig/POTFILES.in +12 -0
  111. package/bios/seabios/scripts/kconfig/check.sh +13 -0
  112. package/bios/seabios/scripts/kconfig/conf.c +718 -0
  113. package/bios/seabios/scripts/kconfig/confdata.c +1250 -0
  114. package/bios/seabios/scripts/kconfig/expr.c +1168 -0
  115. package/bios/seabios/scripts/kconfig/expr.h +241 -0
  116. package/bios/seabios/scripts/kconfig/gconf.c +1542 -0
  117. package/bios/seabios/scripts/kconfig/gconf.glade +661 -0
  118. package/bios/seabios/scripts/kconfig/images.c +326 -0
  119. package/bios/seabios/scripts/kconfig/kxgettext.c +235 -0
  120. package/bios/seabios/scripts/kconfig/lex.zconf.c +2430 -0
  121. package/bios/seabios/scripts/kconfig/list.h +131 -0
  122. package/bios/seabios/scripts/kconfig/lkc.h +200 -0
  123. package/bios/seabios/scripts/kconfig/lkc_proto.h +57 -0
  124. package/bios/seabios/scripts/kconfig/lxdialog/.gitignore +4 -0
  125. package/bios/seabios/scripts/kconfig/lxdialog/BIG.FAT.WARNING +4 -0
  126. package/bios/seabios/scripts/kconfig/lxdialog/check-lxdialog.sh +87 -0
  127. package/bios/seabios/scripts/kconfig/lxdialog/checklist.c +332 -0
  128. package/bios/seabios/scripts/kconfig/lxdialog/dialog.h +257 -0
  129. package/bios/seabios/scripts/kconfig/lxdialog/inputbox.c +301 -0
  130. package/bios/seabios/scripts/kconfig/lxdialog/menubox.c +437 -0
  131. package/bios/seabios/scripts/kconfig/lxdialog/textbox.c +408 -0
  132. package/bios/seabios/scripts/kconfig/lxdialog/util.c +713 -0
  133. package/bios/seabios/scripts/kconfig/lxdialog/yesno.c +114 -0
  134. package/bios/seabios/scripts/kconfig/mconf.c +1036 -0
  135. package/bios/seabios/scripts/kconfig/menu.c +697 -0
  136. package/bios/seabios/scripts/kconfig/merge_config.sh +150 -0
  137. package/bios/seabios/scripts/kconfig/nconf.c +1556 -0
  138. package/bios/seabios/scripts/kconfig/nconf.gui.c +656 -0
  139. package/bios/seabios/scripts/kconfig/nconf.h +96 -0
  140. package/bios/seabios/scripts/kconfig/qconf.cc +1795 -0
  141. package/bios/seabios/scripts/kconfig/qconf.h +338 -0
  142. package/bios/seabios/scripts/kconfig/streamline_config.pl +647 -0
  143. package/bios/seabios/scripts/kconfig/symbol.c +1373 -0
  144. package/bios/seabios/scripts/kconfig/util.c +157 -0
  145. package/bios/seabios/scripts/kconfig/zconf.gperf +48 -0
  146. package/bios/seabios/scripts/kconfig/zconf.hash.c_shipped +289 -0
  147. package/bios/seabios/scripts/kconfig/zconf.l +363 -0
  148. package/bios/seabios/scripts/kconfig/zconf.lex.c_shipped +2420 -0
  149. package/bios/seabios/scripts/kconfig/zconf.tab.c_shipped +2538 -0
  150. package/bios/seabios/scripts/kconfig/zconf.y +733 -0
  151. package/bios/seabios/scripts/layoutrom.py +705 -0
  152. package/bios/seabios/scripts/python23compat.py +14 -0
  153. package/bios/seabios/scripts/readserial.py +190 -0
  154. package/bios/seabios/scripts/tarball.sh +36 -0
  155. package/bios/seabios/scripts/test-build.sh +90 -0
  156. package/bios/seabios/scripts/transdump.py +53 -0
  157. package/bios/seabios/scripts/vgafixup.py +96 -0
  158. package/bios/seabios/src/Kconfig +579 -0
  159. package/bios/seabios/src/apm.c +215 -0
  160. package/bios/seabios/src/asm-offsets.c +23 -0
  161. package/bios/seabios/src/biosvar.h +130 -0
  162. package/bios/seabios/src/block.c +623 -0
  163. package/bios/seabios/src/block.h +121 -0
  164. package/bios/seabios/src/bmp.c +117 -0
  165. package/bios/seabios/src/boot.c +793 -0
  166. package/bios/seabios/src/bootsplash.c +255 -0
  167. package/bios/seabios/src/bregs.h +80 -0
  168. package/bios/seabios/src/byteorder.h +71 -0
  169. package/bios/seabios/src/cdrom.c +322 -0
  170. package/bios/seabios/src/clock.c +506 -0
  171. package/bios/seabios/src/code16gcc.s +1 -0
  172. package/bios/seabios/src/config.h +108 -0
  173. package/bios/seabios/src/cp437.c +275 -0
  174. package/bios/seabios/src/cp437.h +1 -0
  175. package/bios/seabios/src/disk.c +779 -0
  176. package/bios/seabios/src/e820map.c +152 -0
  177. package/bios/seabios/src/e820map.h +26 -0
  178. package/bios/seabios/src/entryfuncs.S +165 -0
  179. package/bios/seabios/src/farptr.h +208 -0
  180. package/bios/seabios/src/font.c +139 -0
  181. package/bios/seabios/src/fw/acpi-dsdt-cpu-hotplug.dsl +78 -0
  182. package/bios/seabios/src/fw/acpi-dsdt-dbug.dsl +26 -0
  183. package/bios/seabios/src/fw/acpi-dsdt-hpet.dsl +36 -0
  184. package/bios/seabios/src/fw/acpi-dsdt-isa.dsl +102 -0
  185. package/bios/seabios/src/fw/acpi-dsdt-pci-crs.dsl +90 -0
  186. package/bios/seabios/src/fw/acpi-dsdt.dsl +342 -0
  187. package/bios/seabios/src/fw/acpi-dsdt.hex +554 -0
  188. package/bios/seabios/src/fw/acpi.c +685 -0
  189. package/bios/seabios/src/fw/biostables.c +491 -0
  190. package/bios/seabios/src/fw/coreboot.c +569 -0
  191. package/bios/seabios/src/fw/csm.c +347 -0
  192. package/bios/seabios/src/fw/dev-pci.h +52 -0
  193. package/bios/seabios/src/fw/dev-piix.h +29 -0
  194. package/bios/seabios/src/fw/dev-q35.h +52 -0
  195. package/bios/seabios/src/fw/lzmadecode.c +398 -0
  196. package/bios/seabios/src/fw/lzmadecode.h +67 -0
  197. package/bios/seabios/src/fw/mptable.c +197 -0
  198. package/bios/seabios/src/fw/mtrr.c +105 -0
  199. package/bios/seabios/src/fw/multiboot.c +111 -0
  200. package/bios/seabios/src/fw/paravirt.c +624 -0
  201. package/bios/seabios/src/fw/paravirt.h +63 -0
  202. package/bios/seabios/src/fw/pciinit.c +1187 -0
  203. package/bios/seabios/src/fw/pirtable.c +103 -0
  204. package/bios/seabios/src/fw/q35-acpi-dsdt.dsl +450 -0
  205. package/bios/seabios/src/fw/romfile_loader.c +259 -0
  206. package/bios/seabios/src/fw/romfile_loader.h +91 -0
  207. package/bios/seabios/src/fw/shadow.c +208 -0
  208. package/bios/seabios/src/fw/smbios.c +585 -0
  209. package/bios/seabios/src/fw/smm.c +269 -0
  210. package/bios/seabios/src/fw/smp.c +194 -0
  211. package/bios/seabios/src/fw/ssdt-misc.dsl +104 -0
  212. package/bios/seabios/src/fw/ssdt-misc.hex +88 -0
  213. package/bios/seabios/src/fw/ssdt-pcihp.dsl +36 -0
  214. package/bios/seabios/src/fw/ssdt-pcihp.hex +38 -0
  215. package/bios/seabios/src/fw/ssdt-proc.dsl +48 -0
  216. package/bios/seabios/src/fw/ssdt-proc.hex +35 -0
  217. package/bios/seabios/src/fw/xen.c +149 -0
  218. package/bios/seabios/src/fw/xen.h +125 -0
  219. package/bios/seabios/src/gen-defs.h +19 -0
  220. package/bios/seabios/src/hw/ahci.c +697 -0
  221. package/bios/seabios/src/hw/ahci.h +201 -0
  222. package/bios/seabios/src/hw/ata.c +1046 -0
  223. package/bios/seabios/src/hw/ata.h +163 -0
  224. package/bios/seabios/src/hw/blockcmd.c +372 -0
  225. package/bios/seabios/src/hw/blockcmd.h +114 -0
  226. package/bios/seabios/src/hw/dma.c +67 -0
  227. package/bios/seabios/src/hw/esp-scsi.c +241 -0
  228. package/bios/seabios/src/hw/esp-scsi.h +8 -0
  229. package/bios/seabios/src/hw/floppy.c +741 -0
  230. package/bios/seabios/src/hw/lsi-scsi.c +221 -0
  231. package/bios/seabios/src/hw/lsi-scsi.h +8 -0
  232. package/bios/seabios/src/hw/megasas.c +405 -0
  233. package/bios/seabios/src/hw/megasas.h +8 -0
  234. package/bios/seabios/src/hw/mpt-scsi.c +319 -0
  235. package/bios/seabios/src/hw/mpt-scsi.h +8 -0
  236. package/bios/seabios/src/hw/nvme-int.h +199 -0
  237. package/bios/seabios/src/hw/nvme.c +708 -0
  238. package/bios/seabios/src/hw/nvme.h +17 -0
  239. package/bios/seabios/src/hw/pci.c +133 -0
  240. package/bios/seabios/src/hw/pci.h +47 -0
  241. package/bios/seabios/src/hw/pci_ids.h +2632 -0
  242. package/bios/seabios/src/hw/pci_regs.h +556 -0
  243. package/bios/seabios/src/hw/pcidevice.c +192 -0
  244. package/bios/seabios/src/hw/pcidevice.h +76 -0
  245. package/bios/seabios/src/hw/pic.c +115 -0
  246. package/bios/seabios/src/hw/pic.h +60 -0
  247. package/bios/seabios/src/hw/ps2port.c +543 -0
  248. package/bios/seabios/src/hw/ps2port.h +67 -0
  249. package/bios/seabios/src/hw/pvscsi.c +333 -0
  250. package/bios/seabios/src/hw/pvscsi.h +8 -0
  251. package/bios/seabios/src/hw/ramdisk.c +108 -0
  252. package/bios/seabios/src/hw/rtc.c +100 -0
  253. package/bios/seabios/src/hw/rtc.h +75 -0
  254. package/bios/seabios/src/hw/sdcard.c +572 -0
  255. package/bios/seabios/src/hw/serialio.c +113 -0
  256. package/bios/seabios/src/hw/serialio.h +29 -0
  257. package/bios/seabios/src/hw/timer.c +259 -0
  258. package/bios/seabios/src/hw/tpm_drivers.c +636 -0
  259. package/bios/seabios/src/hw/tpm_drivers.h +127 -0
  260. package/bios/seabios/src/hw/usb-ehci.c +650 -0
  261. package/bios/seabios/src/hw/usb-ehci.h +177 -0
  262. package/bios/seabios/src/hw/usb-hid.c +442 -0
  263. package/bios/seabios/src/hw/usb-hid.h +29 -0
  264. package/bios/seabios/src/hw/usb-hub.c +205 -0
  265. package/bios/seabios/src/hw/usb-hub.h +64 -0
  266. package/bios/seabios/src/hw/usb-msc.c +222 -0
  267. package/bios/seabios/src/hw/usb-msc.h +10 -0
  268. package/bios/seabios/src/hw/usb-ohci.c +568 -0
  269. package/bios/seabios/src/hw/usb-ohci.h +144 -0
  270. package/bios/seabios/src/hw/usb-uas.c +289 -0
  271. package/bios/seabios/src/hw/usb-uas.h +9 -0
  272. package/bios/seabios/src/hw/usb-uhci.c +571 -0
  273. package/bios/seabios/src/hw/usb-uhci.h +128 -0
  274. package/bios/seabios/src/hw/usb-xhci.c +1161 -0
  275. package/bios/seabios/src/hw/usb-xhci.h +133 -0
  276. package/bios/seabios/src/hw/usb.c +499 -0
  277. package/bios/seabios/src/hw/usb.h +254 -0
  278. package/bios/seabios/src/hw/virtio-blk.c +211 -0
  279. package/bios/seabios/src/hw/virtio-blk.h +43 -0
  280. package/bios/seabios/src/hw/virtio-pci.c +501 -0
  281. package/bios/seabios/src/hw/virtio-pci.h +151 -0
  282. package/bios/seabios/src/hw/virtio-ring.c +147 -0
  283. package/bios/seabios/src/hw/virtio-ring.h +121 -0
  284. package/bios/seabios/src/hw/virtio-scsi.c +220 -0
  285. package/bios/seabios/src/hw/virtio-scsi.h +47 -0
  286. package/bios/seabios/src/jpeg.c +1055 -0
  287. package/bios/seabios/src/kbd.c +599 -0
  288. package/bios/seabios/src/list.h +91 -0
  289. package/bios/seabios/src/malloc.c +561 -0
  290. package/bios/seabios/src/malloc.h +70 -0
  291. package/bios/seabios/src/memmap.h +21 -0
  292. package/bios/seabios/src/misc.c +195 -0
  293. package/bios/seabios/src/mouse.c +342 -0
  294. package/bios/seabios/src/optionroms.c +475 -0
  295. package/bios/seabios/src/output.c +584 -0
  296. package/bios/seabios/src/output.h +68 -0
  297. package/bios/seabios/src/pcibios.c +241 -0
  298. package/bios/seabios/src/pmm.c +176 -0
  299. package/bios/seabios/src/pnpbios.c +88 -0
  300. package/bios/seabios/src/post.c +337 -0
  301. package/bios/seabios/src/resume.c +157 -0
  302. package/bios/seabios/src/romfile.c +146 -0
  303. package/bios/seabios/src/romfile.h +21 -0
  304. package/bios/seabios/src/romlayout.S +698 -0
  305. package/bios/seabios/src/sercon.c +677 -0
  306. package/bios/seabios/src/serial.c +317 -0
  307. package/bios/seabios/src/sha1.c +147 -0
  308. package/bios/seabios/src/sha1.h +8 -0
  309. package/bios/seabios/src/stacks.c +771 -0
  310. package/bios/seabios/src/stacks.h +68 -0
  311. package/bios/seabios/src/std/LegacyBios.h +985 -0
  312. package/bios/seabios/src/std/acpi.h +323 -0
  313. package/bios/seabios/src/std/bda.h +174 -0
  314. package/bios/seabios/src/std/disk.h +175 -0
  315. package/bios/seabios/src/std/mptable.h +77 -0
  316. package/bios/seabios/src/std/multiboot.h +260 -0
  317. package/bios/seabios/src/std/optionrom.h +59 -0
  318. package/bios/seabios/src/std/pirtable.h +35 -0
  319. package/bios/seabios/src/std/pmm.h +19 -0
  320. package/bios/seabios/src/std/pnpbios.h +24 -0
  321. package/bios/seabios/src/std/smbios.h +167 -0
  322. package/bios/seabios/src/std/tcg.h +554 -0
  323. package/bios/seabios/src/std/vbe.h +156 -0
  324. package/bios/seabios/src/std/vga.h +63 -0
  325. package/bios/seabios/src/string.c +251 -0
  326. package/bios/seabios/src/string.h +31 -0
  327. package/bios/seabios/src/system.c +357 -0
  328. package/bios/seabios/src/tcgbios.c +2014 -0
  329. package/bios/seabios/src/tcgbios.h +19 -0
  330. package/bios/seabios/src/types.h +156 -0
  331. package/bios/seabios/src/util.h +251 -0
  332. package/bios/seabios/src/version.c +5 -0
  333. package/bios/seabios/src/vgahooks.c +355 -0
  334. package/bios/seabios/src/x86.c +23 -0
  335. package/bios/seabios/src/x86.h +277 -0
  336. package/bios/seabios/vgasrc/Kconfig +211 -0
  337. package/bios/seabios/vgasrc/bochsdisplay.c +59 -0
  338. package/bios/seabios/vgasrc/bochsvga.c +447 -0
  339. package/bios/seabios/vgasrc/bochsvga.h +57 -0
  340. package/bios/seabios/vgasrc/cbvga.c +337 -0
  341. package/bios/seabios/vgasrc/clext.c +627 -0
  342. package/bios/seabios/vgasrc/geodevga.c +434 -0
  343. package/bios/seabios/vgasrc/geodevga.h +89 -0
  344. package/bios/seabios/vgasrc/ramfb.c +163 -0
  345. package/bios/seabios/vgasrc/stdvga.c +485 -0
  346. package/bios/seabios/vgasrc/stdvga.h +81 -0
  347. package/bios/seabios/vgasrc/stdvgaio.c +186 -0
  348. package/bios/seabios/vgasrc/stdvgamodes.c +534 -0
  349. package/bios/seabios/vgasrc/swcursor.c +96 -0
  350. package/bios/seabios/vgasrc/vbe.c +432 -0
  351. package/bios/seabios/vgasrc/vgabios.c +1131 -0
  352. package/bios/seabios/vgasrc/vgabios.h +88 -0
  353. package/bios/seabios/vgasrc/vgaentry.S +161 -0
  354. package/bios/seabios/vgasrc/vgafb.c +661 -0
  355. package/bios/seabios/vgasrc/vgafb.h +42 -0
  356. package/bios/seabios/vgasrc/vgafonts.c +785 -0
  357. package/bios/seabios/vgasrc/vgahw.h +152 -0
  358. package/bios/seabios/vgasrc/vgainit.c +202 -0
  359. package/bios/seabios/vgasrc/vgalayout.lds.S +23 -0
  360. package/bios/seabios/vgasrc/vgautil.h +103 -0
  361. package/bios/seabios/vgasrc/vgaversion.c +6 -0
  362. package/build/binaries.js +1 -1
  363. package/build/index-debug.cjs +1 -1
  364. package/build/index-debug.js +1 -1
  365. package/build/index.cjs +1 -1
  366. package/build/index.js +1 -1
  367. package/build/v86-debug.wasm +0 -0
  368. package/build/v86.wasm +0 -0
  369. package/package.json +1 -1
@@ -0,0 +1,656 @@
1
+ /*
2
+ * Copyright (C) 2008 Nir Tzachar <nir.tzachar@gmail.com?
3
+ * Released under the terms of the GNU GPL v2.0.
4
+ *
5
+ * Derived from menuconfig.
6
+ *
7
+ */
8
+ #include "nconf.h"
9
+
10
+ /* a list of all the different widgets we use */
11
+ attributes_t attributes[ATTR_MAX+1] = {0};
12
+
13
+ /* available colors:
14
+ COLOR_BLACK 0
15
+ COLOR_RED 1
16
+ COLOR_GREEN 2
17
+ COLOR_YELLOW 3
18
+ COLOR_BLUE 4
19
+ COLOR_MAGENTA 5
20
+ COLOR_CYAN 6
21
+ COLOR_WHITE 7
22
+ */
23
+ static void set_normal_colors(void)
24
+ {
25
+ init_pair(NORMAL, -1, -1);
26
+ init_pair(MAIN_HEADING, COLOR_MAGENTA, -1);
27
+
28
+ /* FORE is for the selected item */
29
+ init_pair(MAIN_MENU_FORE, -1, -1);
30
+ /* BACK for all the rest */
31
+ init_pair(MAIN_MENU_BACK, -1, -1);
32
+ init_pair(MAIN_MENU_GREY, -1, -1);
33
+ init_pair(MAIN_MENU_HEADING, COLOR_GREEN, -1);
34
+ init_pair(MAIN_MENU_BOX, COLOR_YELLOW, -1);
35
+
36
+ init_pair(SCROLLWIN_TEXT, -1, -1);
37
+ init_pair(SCROLLWIN_HEADING, COLOR_GREEN, -1);
38
+ init_pair(SCROLLWIN_BOX, COLOR_YELLOW, -1);
39
+
40
+ init_pair(DIALOG_TEXT, -1, -1);
41
+ init_pair(DIALOG_BOX, COLOR_YELLOW, -1);
42
+ init_pair(DIALOG_MENU_BACK, COLOR_YELLOW, -1);
43
+ init_pair(DIALOG_MENU_FORE, COLOR_RED, -1);
44
+
45
+ init_pair(INPUT_BOX, COLOR_YELLOW, -1);
46
+ init_pair(INPUT_HEADING, COLOR_GREEN, -1);
47
+ init_pair(INPUT_TEXT, -1, -1);
48
+ init_pair(INPUT_FIELD, -1, -1);
49
+
50
+ init_pair(FUNCTION_HIGHLIGHT, -1, -1);
51
+ init_pair(FUNCTION_TEXT, COLOR_YELLOW, -1);
52
+ }
53
+
54
+ /* available attributes:
55
+ A_NORMAL Normal display (no highlight)
56
+ A_STANDOUT Best highlighting mode of the terminal.
57
+ A_UNDERLINE Underlining
58
+ A_REVERSE Reverse video
59
+ A_BLINK Blinking
60
+ A_DIM Half bright
61
+ A_BOLD Extra bright or bold
62
+ A_PROTECT Protected mode
63
+ A_INVIS Invisible or blank mode
64
+ A_ALTCHARSET Alternate character set
65
+ A_CHARTEXT Bit-mask to extract a character
66
+ COLOR_PAIR(n) Color-pair number n
67
+ */
68
+ static void normal_color_theme(void)
69
+ {
70
+ /* automatically add color... */
71
+ #define mkattr(name, attr) do { \
72
+ attributes[name] = attr | COLOR_PAIR(name); } while (0)
73
+ mkattr(NORMAL, NORMAL);
74
+ mkattr(MAIN_HEADING, A_BOLD | A_UNDERLINE);
75
+
76
+ mkattr(MAIN_MENU_FORE, A_REVERSE);
77
+ mkattr(MAIN_MENU_BACK, A_NORMAL);
78
+ mkattr(MAIN_MENU_GREY, A_NORMAL);
79
+ mkattr(MAIN_MENU_HEADING, A_BOLD);
80
+ mkattr(MAIN_MENU_BOX, A_NORMAL);
81
+
82
+ mkattr(SCROLLWIN_TEXT, A_NORMAL);
83
+ mkattr(SCROLLWIN_HEADING, A_BOLD);
84
+ mkattr(SCROLLWIN_BOX, A_BOLD);
85
+
86
+ mkattr(DIALOG_TEXT, A_BOLD);
87
+ mkattr(DIALOG_BOX, A_BOLD);
88
+ mkattr(DIALOG_MENU_FORE, A_STANDOUT);
89
+ mkattr(DIALOG_MENU_BACK, A_NORMAL);
90
+
91
+ mkattr(INPUT_BOX, A_NORMAL);
92
+ mkattr(INPUT_HEADING, A_BOLD);
93
+ mkattr(INPUT_TEXT, A_NORMAL);
94
+ mkattr(INPUT_FIELD, A_UNDERLINE);
95
+
96
+ mkattr(FUNCTION_HIGHLIGHT, A_BOLD);
97
+ mkattr(FUNCTION_TEXT, A_REVERSE);
98
+ }
99
+
100
+ static void no_colors_theme(void)
101
+ {
102
+ /* automatically add highlight, no color */
103
+ #define mkattrn(name, attr) { attributes[name] = attr; }
104
+
105
+ mkattrn(NORMAL, NORMAL);
106
+ mkattrn(MAIN_HEADING, A_BOLD | A_UNDERLINE);
107
+
108
+ mkattrn(MAIN_MENU_FORE, A_STANDOUT);
109
+ mkattrn(MAIN_MENU_BACK, A_NORMAL);
110
+ mkattrn(MAIN_MENU_GREY, A_NORMAL);
111
+ mkattrn(MAIN_MENU_HEADING, A_BOLD);
112
+ mkattrn(MAIN_MENU_BOX, A_NORMAL);
113
+
114
+ mkattrn(SCROLLWIN_TEXT, A_NORMAL);
115
+ mkattrn(SCROLLWIN_HEADING, A_BOLD);
116
+ mkattrn(SCROLLWIN_BOX, A_BOLD);
117
+
118
+ mkattrn(DIALOG_TEXT, A_NORMAL);
119
+ mkattrn(DIALOG_BOX, A_BOLD);
120
+ mkattrn(DIALOG_MENU_FORE, A_STANDOUT);
121
+ mkattrn(DIALOG_MENU_BACK, A_NORMAL);
122
+
123
+ mkattrn(INPUT_BOX, A_BOLD);
124
+ mkattrn(INPUT_HEADING, A_BOLD);
125
+ mkattrn(INPUT_TEXT, A_NORMAL);
126
+ mkattrn(INPUT_FIELD, A_UNDERLINE);
127
+
128
+ mkattrn(FUNCTION_HIGHLIGHT, A_BOLD);
129
+ mkattrn(FUNCTION_TEXT, A_REVERSE);
130
+ }
131
+
132
+ void set_colors()
133
+ {
134
+ start_color();
135
+ use_default_colors();
136
+ set_normal_colors();
137
+ if (has_colors()) {
138
+ normal_color_theme();
139
+ } else {
140
+ /* give defaults */
141
+ no_colors_theme();
142
+ }
143
+ }
144
+
145
+
146
+ /* this changes the windows attributes !!! */
147
+ void print_in_middle(WINDOW *win,
148
+ int starty,
149
+ int startx,
150
+ int width,
151
+ const char *string,
152
+ chtype color)
153
+ { int length, x, y;
154
+ float temp;
155
+
156
+
157
+ if (win == NULL)
158
+ win = stdscr;
159
+ getyx(win, y, x);
160
+ if (startx != 0)
161
+ x = startx;
162
+ if (starty != 0)
163
+ y = starty;
164
+ if (width == 0)
165
+ width = 80;
166
+
167
+ length = strlen(string);
168
+ temp = (width - length) / 2;
169
+ x = startx + (int)temp;
170
+ (void) wattrset(win, color);
171
+ mvwprintw(win, y, x, "%s", string);
172
+ refresh();
173
+ }
174
+
175
+ int get_line_no(const char *text)
176
+ {
177
+ int i;
178
+ int total = 1;
179
+
180
+ if (!text)
181
+ return 0;
182
+
183
+ for (i = 0; text[i] != '\0'; i++)
184
+ if (text[i] == '\n')
185
+ total++;
186
+ return total;
187
+ }
188
+
189
+ const char *get_line(const char *text, int line_no)
190
+ {
191
+ int i;
192
+ int lines = 0;
193
+
194
+ if (!text)
195
+ return 0;
196
+
197
+ for (i = 0; text[i] != '\0' && lines < line_no; i++)
198
+ if (text[i] == '\n')
199
+ lines++;
200
+ return text+i;
201
+ }
202
+
203
+ int get_line_length(const char *line)
204
+ {
205
+ int res = 0;
206
+ while (*line != '\0' && *line != '\n') {
207
+ line++;
208
+ res++;
209
+ }
210
+ return res;
211
+ }
212
+
213
+ /* print all lines to the window. */
214
+ void fill_window(WINDOW *win, const char *text)
215
+ {
216
+ int x, y;
217
+ int total_lines = get_line_no(text);
218
+ int i;
219
+
220
+ getmaxyx(win, y, x);
221
+ /* do not go over end of line */
222
+ total_lines = min(total_lines, y);
223
+ for (i = 0; i < total_lines; i++) {
224
+ char tmp[x+10];
225
+ const char *line = get_line(text, i);
226
+ int len = get_line_length(line);
227
+ strncpy(tmp, line, min(len, x));
228
+ tmp[len] = '\0';
229
+ mvwprintw(win, i, 0, "%s", tmp);
230
+ }
231
+ }
232
+
233
+ /* get the message, and buttons.
234
+ * each button must be a char*
235
+ * return the selected button
236
+ *
237
+ * this dialog is used for 2 different things:
238
+ * 1) show a text box, no buttons.
239
+ * 2) show a dialog, with horizontal buttons
240
+ */
241
+ int btn_dialog(WINDOW *main_window, const char *msg, int btn_num, ...)
242
+ {
243
+ va_list ap;
244
+ char *btn;
245
+ int btns_width = 0;
246
+ int msg_lines = 0;
247
+ int msg_width = 0;
248
+ int total_width;
249
+ int win_rows = 0;
250
+ WINDOW *win;
251
+ WINDOW *msg_win;
252
+ WINDOW *menu_win;
253
+ MENU *menu;
254
+ ITEM *btns[btn_num+1];
255
+ int i, x, y;
256
+ int res = -1;
257
+
258
+
259
+ va_start(ap, btn_num);
260
+ for (i = 0; i < btn_num; i++) {
261
+ btn = va_arg(ap, char *);
262
+ btns[i] = new_item(btn, "");
263
+ btns_width += strlen(btn)+1;
264
+ }
265
+ va_end(ap);
266
+ btns[btn_num] = NULL;
267
+
268
+ /* find the widest line of msg: */
269
+ msg_lines = get_line_no(msg);
270
+ for (i = 0; i < msg_lines; i++) {
271
+ const char *line = get_line(msg, i);
272
+ int len = get_line_length(line);
273
+ if (msg_width < len)
274
+ msg_width = len;
275
+ }
276
+
277
+ total_width = max(msg_width, btns_width);
278
+ /* place dialog in middle of screen */
279
+ y = (getmaxy(stdscr)-(msg_lines+4))/2;
280
+ x = (getmaxx(stdscr)-(total_width+4))/2;
281
+
282
+
283
+ /* create the windows */
284
+ if (btn_num > 0)
285
+ win_rows = msg_lines+4;
286
+ else
287
+ win_rows = msg_lines+2;
288
+
289
+ win = newwin(win_rows, total_width+4, y, x);
290
+ keypad(win, TRUE);
291
+ menu_win = derwin(win, 1, btns_width, win_rows-2,
292
+ 1+(total_width+2-btns_width)/2);
293
+ menu = new_menu(btns);
294
+ msg_win = derwin(win, win_rows-2, msg_width, 1,
295
+ 1+(total_width+2-msg_width)/2);
296
+
297
+ set_menu_fore(menu, attributes[DIALOG_MENU_FORE]);
298
+ set_menu_back(menu, attributes[DIALOG_MENU_BACK]);
299
+
300
+ (void) wattrset(win, attributes[DIALOG_BOX]);
301
+ box(win, 0, 0);
302
+
303
+ /* print message */
304
+ (void) wattrset(msg_win, attributes[DIALOG_TEXT]);
305
+ fill_window(msg_win, msg);
306
+
307
+ set_menu_win(menu, win);
308
+ set_menu_sub(menu, menu_win);
309
+ set_menu_format(menu, 1, btn_num);
310
+ menu_opts_off(menu, O_SHOWDESC);
311
+ menu_opts_off(menu, O_SHOWMATCH);
312
+ menu_opts_on(menu, O_ONEVALUE);
313
+ menu_opts_on(menu, O_NONCYCLIC);
314
+ set_menu_mark(menu, "");
315
+ post_menu(menu);
316
+
317
+
318
+ touchwin(win);
319
+ refresh_all_windows(main_window);
320
+ while ((res = wgetch(win))) {
321
+ switch (res) {
322
+ case KEY_LEFT:
323
+ menu_driver(menu, REQ_LEFT_ITEM);
324
+ break;
325
+ case KEY_RIGHT:
326
+ menu_driver(menu, REQ_RIGHT_ITEM);
327
+ break;
328
+ case 10: /* ENTER */
329
+ case 27: /* ESCAPE */
330
+ case ' ':
331
+ case KEY_F(F_BACK):
332
+ case KEY_F(F_EXIT):
333
+ break;
334
+ }
335
+ touchwin(win);
336
+ refresh_all_windows(main_window);
337
+
338
+ if (res == 10 || res == ' ') {
339
+ res = item_index(current_item(menu));
340
+ break;
341
+ } else if (res == 27 || res == KEY_F(F_BACK) ||
342
+ res == KEY_F(F_EXIT)) {
343
+ res = KEY_EXIT;
344
+ break;
345
+ }
346
+ }
347
+
348
+ unpost_menu(menu);
349
+ free_menu(menu);
350
+ for (i = 0; i < btn_num; i++)
351
+ free_item(btns[i]);
352
+
353
+ delwin(win);
354
+ return res;
355
+ }
356
+
357
+ int dialog_inputbox(WINDOW *main_window,
358
+ const char *title, const char *prompt,
359
+ const char *init, char **resultp, int *result_len)
360
+ {
361
+ int prompt_lines = 0;
362
+ int prompt_width = 0;
363
+ WINDOW *win;
364
+ WINDOW *prompt_win;
365
+ WINDOW *form_win;
366
+ PANEL *panel;
367
+ int i, x, y;
368
+ int res = -1;
369
+ int cursor_position = strlen(init);
370
+ int cursor_form_win;
371
+ char *result = *resultp;
372
+
373
+ if (strlen(init)+1 > *result_len) {
374
+ *result_len = strlen(init)+1;
375
+ *resultp = result = realloc(result, *result_len);
376
+ }
377
+
378
+ /* find the widest line of msg: */
379
+ prompt_lines = get_line_no(prompt);
380
+ for (i = 0; i < prompt_lines; i++) {
381
+ const char *line = get_line(prompt, i);
382
+ int len = get_line_length(line);
383
+ prompt_width = max(prompt_width, len);
384
+ }
385
+
386
+ if (title)
387
+ prompt_width = max(prompt_width, strlen(title));
388
+
389
+ /* place dialog in middle of screen */
390
+ y = (getmaxy(stdscr)-(prompt_lines+4))/2;
391
+ x = (getmaxx(stdscr)-(prompt_width+4))/2;
392
+
393
+ strncpy(result, init, *result_len);
394
+
395
+ /* create the windows */
396
+ win = newwin(prompt_lines+6, prompt_width+7, y, x);
397
+ prompt_win = derwin(win, prompt_lines+1, prompt_width, 2, 2);
398
+ form_win = derwin(win, 1, prompt_width, prompt_lines+3, 2);
399
+ keypad(form_win, TRUE);
400
+
401
+ (void) wattrset(form_win, attributes[INPUT_FIELD]);
402
+
403
+ (void) wattrset(win, attributes[INPUT_BOX]);
404
+ box(win, 0, 0);
405
+ (void) wattrset(win, attributes[INPUT_HEADING]);
406
+ if (title)
407
+ mvwprintw(win, 0, 3, "%s", title);
408
+
409
+ /* print message */
410
+ (void) wattrset(prompt_win, attributes[INPUT_TEXT]);
411
+ fill_window(prompt_win, prompt);
412
+
413
+ mvwprintw(form_win, 0, 0, "%*s", prompt_width, " ");
414
+ cursor_form_win = min(cursor_position, prompt_width-1);
415
+ mvwprintw(form_win, 0, 0, "%s",
416
+ result + cursor_position-cursor_form_win);
417
+
418
+ /* create panels */
419
+ panel = new_panel(win);
420
+
421
+ /* show the cursor */
422
+ curs_set(1);
423
+
424
+ touchwin(win);
425
+ refresh_all_windows(main_window);
426
+ while ((res = wgetch(form_win))) {
427
+ int len = strlen(result);
428
+ switch (res) {
429
+ case 10: /* ENTER */
430
+ case 27: /* ESCAPE */
431
+ case KEY_F(F_HELP):
432
+ case KEY_F(F_EXIT):
433
+ case KEY_F(F_BACK):
434
+ break;
435
+ case 127:
436
+ case KEY_BACKSPACE:
437
+ if (cursor_position > 0) {
438
+ memmove(&result[cursor_position-1],
439
+ &result[cursor_position],
440
+ len-cursor_position+1);
441
+ cursor_position--;
442
+ cursor_form_win--;
443
+ len--;
444
+ }
445
+ break;
446
+ case KEY_DC:
447
+ if (cursor_position >= 0 && cursor_position < len) {
448
+ memmove(&result[cursor_position],
449
+ &result[cursor_position+1],
450
+ len-cursor_position+1);
451
+ len--;
452
+ }
453
+ break;
454
+ case KEY_UP:
455
+ case KEY_RIGHT:
456
+ if (cursor_position < len) {
457
+ cursor_position++;
458
+ cursor_form_win++;
459
+ }
460
+ break;
461
+ case KEY_DOWN:
462
+ case KEY_LEFT:
463
+ if (cursor_position > 0) {
464
+ cursor_position--;
465
+ cursor_form_win--;
466
+ }
467
+ break;
468
+ case KEY_HOME:
469
+ cursor_position = 0;
470
+ cursor_form_win = 0;
471
+ break;
472
+ case KEY_END:
473
+ cursor_position = len;
474
+ cursor_form_win = min(cursor_position, prompt_width-1);
475
+ break;
476
+ default:
477
+ if ((isgraph(res) || isspace(res))) {
478
+ /* one for new char, one for '\0' */
479
+ if (len+2 > *result_len) {
480
+ *result_len = len+2;
481
+ *resultp = result = realloc(result,
482
+ *result_len);
483
+ }
484
+ /* insert the char at the proper position */
485
+ memmove(&result[cursor_position+1],
486
+ &result[cursor_position],
487
+ len-cursor_position+1);
488
+ result[cursor_position] = res;
489
+ cursor_position++;
490
+ cursor_form_win++;
491
+ len++;
492
+ } else {
493
+ mvprintw(0, 0, "unknown key: %d\n", res);
494
+ }
495
+ break;
496
+ }
497
+ if (cursor_form_win < 0)
498
+ cursor_form_win = 0;
499
+ else if (cursor_form_win > prompt_width-1)
500
+ cursor_form_win = prompt_width-1;
501
+
502
+ wmove(form_win, 0, 0);
503
+ wclrtoeol(form_win);
504
+ mvwprintw(form_win, 0, 0, "%*s", prompt_width, " ");
505
+ mvwprintw(form_win, 0, 0, "%s",
506
+ result + cursor_position-cursor_form_win);
507
+ wmove(form_win, 0, cursor_form_win);
508
+ touchwin(win);
509
+ refresh_all_windows(main_window);
510
+
511
+ if (res == 10) {
512
+ res = 0;
513
+ break;
514
+ } else if (res == 27 || res == KEY_F(F_BACK) ||
515
+ res == KEY_F(F_EXIT)) {
516
+ res = KEY_EXIT;
517
+ break;
518
+ } else if (res == KEY_F(F_HELP)) {
519
+ res = 1;
520
+ break;
521
+ }
522
+ }
523
+
524
+ /* hide the cursor */
525
+ curs_set(0);
526
+ del_panel(panel);
527
+ delwin(prompt_win);
528
+ delwin(form_win);
529
+ delwin(win);
530
+ return res;
531
+ }
532
+
533
+ /* refresh all windows in the correct order */
534
+ void refresh_all_windows(WINDOW *main_window)
535
+ {
536
+ update_panels();
537
+ touchwin(main_window);
538
+ refresh();
539
+ }
540
+
541
+ /* layman's scrollable window... */
542
+ void show_scroll_win(WINDOW *main_window,
543
+ const char *title,
544
+ const char *text)
545
+ {
546
+ int res;
547
+ int total_lines = get_line_no(text);
548
+ int x, y, lines, columns;
549
+ int start_x = 0, start_y = 0;
550
+ int text_lines = 0, text_cols = 0;
551
+ int total_cols = 0;
552
+ int win_cols = 0;
553
+ int win_lines = 0;
554
+ int i = 0;
555
+ WINDOW *win;
556
+ WINDOW *pad;
557
+ PANEL *panel;
558
+
559
+ getmaxyx(stdscr, lines, columns);
560
+
561
+ /* find the widest line of msg: */
562
+ total_lines = get_line_no(text);
563
+ for (i = 0; i < total_lines; i++) {
564
+ const char *line = get_line(text, i);
565
+ int len = get_line_length(line);
566
+ total_cols = max(total_cols, len+2);
567
+ }
568
+
569
+ /* create the pad */
570
+ pad = newpad(total_lines+10, total_cols+10);
571
+ (void) wattrset(pad, attributes[SCROLLWIN_TEXT]);
572
+ fill_window(pad, text);
573
+
574
+ win_lines = min(total_lines+4, lines-2);
575
+ win_cols = min(total_cols+2, columns-2);
576
+ text_lines = max(win_lines-4, 0);
577
+ text_cols = max(win_cols-2, 0);
578
+
579
+ /* place window in middle of screen */
580
+ y = (lines-win_lines)/2;
581
+ x = (columns-win_cols)/2;
582
+
583
+ win = newwin(win_lines, win_cols, y, x);
584
+ keypad(win, TRUE);
585
+ /* show the help in the help window, and show the help panel */
586
+ (void) wattrset(win, attributes[SCROLLWIN_BOX]);
587
+ box(win, 0, 0);
588
+ (void) wattrset(win, attributes[SCROLLWIN_HEADING]);
589
+ mvwprintw(win, 0, 3, " %s ", title);
590
+ panel = new_panel(win);
591
+
592
+ /* handle scrolling */
593
+ do {
594
+
595
+ copywin(pad, win, start_y, start_x, 2, 2, text_lines,
596
+ text_cols, 0);
597
+ print_in_middle(win,
598
+ text_lines+2,
599
+ 0,
600
+ text_cols,
601
+ "<OK>",
602
+ attributes[DIALOG_MENU_FORE]);
603
+ wrefresh(win);
604
+
605
+ res = wgetch(win);
606
+ switch (res) {
607
+ case KEY_NPAGE:
608
+ case ' ':
609
+ case 'd':
610
+ start_y += text_lines-2;
611
+ break;
612
+ case KEY_PPAGE:
613
+ case 'u':
614
+ start_y -= text_lines+2;
615
+ break;
616
+ case KEY_HOME:
617
+ start_y = 0;
618
+ break;
619
+ case KEY_END:
620
+ start_y = total_lines-text_lines;
621
+ break;
622
+ case KEY_DOWN:
623
+ case 'j':
624
+ start_y++;
625
+ break;
626
+ case KEY_UP:
627
+ case 'k':
628
+ start_y--;
629
+ break;
630
+ case KEY_LEFT:
631
+ case 'h':
632
+ start_x--;
633
+ break;
634
+ case KEY_RIGHT:
635
+ case 'l':
636
+ start_x++;
637
+ break;
638
+ }
639
+ if (res == 10 || res == 27 || res == 'q' ||
640
+ res == KEY_F(F_HELP) || res == KEY_F(F_BACK) ||
641
+ res == KEY_F(F_EXIT))
642
+ break;
643
+ if (start_y < 0)
644
+ start_y = 0;
645
+ if (start_y >= total_lines-text_lines)
646
+ start_y = total_lines-text_lines;
647
+ if (start_x < 0)
648
+ start_x = 0;
649
+ if (start_x >= total_cols-text_cols)
650
+ start_x = total_cols-text_cols;
651
+ } while (res);
652
+
653
+ del_panel(panel);
654
+ delwin(win);
655
+ refresh_all_windows(main_window);
656
+ }