v86 0.4.0 → 0.5.11
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.
- package/Readme.md +56 -111
- package/build/libv86-debug.js +12680 -0
- package/build/libv86-debug.mjs +732 -0
- package/build/libv86.js +710 -0
- package/build/libv86.mjs +637 -0
- package/build/v86-debug.wasm +0 -0
- package/build/v86-fallback.wasm +0 -0
- package/build/v86.wasm +0 -0
- package/package.json +12 -35
- package/bios/.gitignore +0 -1
- package/bios/COPYING.LESSER +0 -165
- package/bios/bochs-bios.bin +0 -0
- package/bios/bochs-vgabios.bin +0 -0
- package/bios/fetch-and-build-seabios.sh +0 -13
- package/bios/seabios/.config +0 -113
- package/bios/seabios/.config.old +0 -114
- package/bios/seabios/.gitignore +0 -4
- package/bios/seabios/COPYING +0 -674
- package/bios/seabios/COPYING.LESSER +0 -165
- package/bios/seabios/Makefile +0 -286
- package/bios/seabios/README +0 -17
- package/bios/seabios/docs/Build_overview.md +0 -104
- package/bios/seabios/docs/Contributing.md +0 -20
- package/bios/seabios/docs/Debugging.md +0 -111
- package/bios/seabios/docs/Developer_Documentation.md +0 -25
- package/bios/seabios/docs/Developer_links.md +0 -86
- package/bios/seabios/docs/Download.md +0 -27
- package/bios/seabios/docs/Execution_and_code_flow.md +0 -178
- package/bios/seabios/docs/Linking_overview.md +0 -160
- package/bios/seabios/docs/Mailinglist.md +0 -8
- package/bios/seabios/docs/Memory_Model.md +0 -253
- package/bios/seabios/docs/README +0 -5
- package/bios/seabios/docs/Releases.md +0 -482
- package/bios/seabios/docs/Runtime_config.md +0 -193
- package/bios/seabios/docs/SeaBIOS.md +0 -17
- package/bios/seabios/docs/SeaVGABIOS.md +0 -39
- package/bios/seabios/out/autoconf.h +0 -117
- package/bios/seabios/out/include/config/acpi/dsdt.h +0 -0
- package/bios/seabios/out/include/config/acpi.h +0 -0
- package/bios/seabios/out/include/config/ahci.h +0 -0
- package/bios/seabios/out/include/config/apmbios.h +0 -0
- package/bios/seabios/out/include/config/ata/dma.h +0 -0
- package/bios/seabios/out/include/config/ata/pio32.h +0 -0
- package/bios/seabios/out/include/config/ata.h +0 -0
- package/bios/seabios/out/include/config/auto.conf +0 -69
- package/bios/seabios/out/include/config/auto.conf.cmd +0 -9
- package/bios/seabios/out/include/config/boot.h +0 -0
- package/bios/seabios/out/include/config/bootorder.h +0 -0
- package/bios/seabios/out/include/config/build/vgabios.h +0 -0
- package/bios/seabios/out/include/config/call32/smm.h +0 -0
- package/bios/seabios/out/include/config/cdrom/boot.h +0 -0
- package/bios/seabios/out/include/config/cdrom/emu.h +0 -0
- package/bios/seabios/out/include/config/debug/level.h +0 -0
- package/bios/seabios/out/include/config/drives.h +0 -0
- package/bios/seabios/out/include/config/entry/extrastack.h +0 -0
- package/bios/seabios/out/include/config/esp/scsi.h +0 -0
- package/bios/seabios/out/include/config/flash/floppy.h +0 -0
- package/bios/seabios/out/include/config/floppy.h +0 -0
- package/bios/seabios/out/include/config/fw/romfile/load.h +0 -0
- package/bios/seabios/out/include/config/hardware/irq.h +0 -0
- package/bios/seabios/out/include/config/kbd/call/int15/4f.h +0 -0
- package/bios/seabios/out/include/config/keyboard.h +0 -0
- package/bios/seabios/out/include/config/lpt.h +0 -0
- package/bios/seabios/out/include/config/lsi/scsi.h +0 -0
- package/bios/seabios/out/include/config/malloc/uppermemory.h +0 -0
- package/bios/seabios/out/include/config/megasas.h +0 -0
- package/bios/seabios/out/include/config/mouse.h +0 -0
- package/bios/seabios/out/include/config/mpt/scsi.h +0 -0
- package/bios/seabios/out/include/config/mptable.h +0 -0
- package/bios/seabios/out/include/config/mtrr/init.h +0 -0
- package/bios/seabios/out/include/config/optionroms.h +0 -0
- package/bios/seabios/out/include/config/override/pci/id.h +0 -0
- package/bios/seabios/out/include/config/pcibios.h +0 -0
- package/bios/seabios/out/include/config/pirtable.h +0 -0
- package/bios/seabios/out/include/config/pmm.h +0 -0
- package/bios/seabios/out/include/config/pmtimer.h +0 -0
- package/bios/seabios/out/include/config/pnpbios.h +0 -0
- package/bios/seabios/out/include/config/ps2port.h +0 -0
- package/bios/seabios/out/include/config/pvscsi.h +0 -0
- package/bios/seabios/out/include/config/qemu/hardware.h +0 -0
- package/bios/seabios/out/include/config/qemu.h +0 -0
- package/bios/seabios/out/include/config/rom/size.h +0 -0
- package/bios/seabios/out/include/config/rtc/timer.h +0 -0
- package/bios/seabios/out/include/config/s3/resume.h +0 -0
- package/bios/seabios/out/include/config/sdcard.h +0 -0
- package/bios/seabios/out/include/config/serial.h +0 -0
- package/bios/seabios/out/include/config/tcgbios.h +0 -0
- package/bios/seabios/out/include/config/threads.h +0 -0
- package/bios/seabios/out/include/config/tristate.conf +0 -4
- package/bios/seabios/out/include/config/tsc/timer.h +0 -0
- package/bios/seabios/out/include/config/use/smm.h +0 -0
- package/bios/seabios/out/include/config/vga/allocate/extra/stack.h +0 -0
- package/bios/seabios/out/include/config/vga/bochs/stdvga.h +0 -0
- package/bios/seabios/out/include/config/vga/bochs.h +0 -0
- package/bios/seabios/out/include/config/vga/did.h +0 -0
- package/bios/seabios/out/include/config/vga/extra/stack/size.h +0 -0
- package/bios/seabios/out/include/config/vga/fixup/asm.h +0 -0
- package/bios/seabios/out/include/config/vga/pci.h +0 -0
- package/bios/seabios/out/include/config/vga/stdvga/ports.h +0 -0
- package/bios/seabios/out/include/config/vga/vbe.h +0 -0
- package/bios/seabios/out/include/config/vga/vid.h +0 -0
- package/bios/seabios/out/include/config/vgahooks.h +0 -0
- package/bios/seabios/out/include/config/virtio/blk.h +0 -0
- package/bios/seabios/out/include/config/virtio/scsi.h +0 -0
- package/bios/seabios/out/include/config/xen.h +0 -0
- package/bios/seabios/out/scripts/kconfig/conf +0 -0
- package/bios/seabios/out/scripts/kconfig/conf.o +0 -0
- package/bios/seabios/out/scripts/kconfig/zconf.hash.c +0 -289
- package/bios/seabios/out/scripts/kconfig/zconf.lex.c +0 -2420
- package/bios/seabios/out/scripts/kconfig/zconf.tab.c +0 -2538
- package/bios/seabios/out/scripts/kconfig/zconf.tab.o +0 -0
- package/bios/seabios/scripts/acpi_extract.py +0 -366
- package/bios/seabios/scripts/acpi_extract_preprocess.py +0 -41
- package/bios/seabios/scripts/buildrom.py +0 -56
- package/bios/seabios/scripts/buildversion.py +0 -134
- package/bios/seabios/scripts/checkrom.py +0 -95
- package/bios/seabios/scripts/checkstack.py +0 -226
- package/bios/seabios/scripts/checksum.py +0 -16
- package/bios/seabios/scripts/encodeint.py +0 -21
- package/bios/seabios/scripts/gen-offsets.sh +0 -17
- package/bios/seabios/scripts/kconfig/.gitignore +0 -22
- package/bios/seabios/scripts/kconfig/Makefile +0 -331
- package/bios/seabios/scripts/kconfig/POTFILES.in +0 -12
- package/bios/seabios/scripts/kconfig/check.sh +0 -13
- package/bios/seabios/scripts/kconfig/conf.c +0 -718
- package/bios/seabios/scripts/kconfig/confdata.c +0 -1250
- package/bios/seabios/scripts/kconfig/expr.c +0 -1168
- package/bios/seabios/scripts/kconfig/expr.h +0 -241
- package/bios/seabios/scripts/kconfig/gconf.c +0 -1542
- package/bios/seabios/scripts/kconfig/gconf.glade +0 -661
- package/bios/seabios/scripts/kconfig/images.c +0 -326
- package/bios/seabios/scripts/kconfig/kxgettext.c +0 -235
- package/bios/seabios/scripts/kconfig/lex.zconf.c +0 -2430
- package/bios/seabios/scripts/kconfig/list.h +0 -131
- package/bios/seabios/scripts/kconfig/lkc.h +0 -200
- package/bios/seabios/scripts/kconfig/lkc_proto.h +0 -57
- package/bios/seabios/scripts/kconfig/lxdialog/.gitignore +0 -4
- package/bios/seabios/scripts/kconfig/lxdialog/BIG.FAT.WARNING +0 -4
- package/bios/seabios/scripts/kconfig/lxdialog/check-lxdialog.sh +0 -87
- package/bios/seabios/scripts/kconfig/lxdialog/checklist.c +0 -332
- package/bios/seabios/scripts/kconfig/lxdialog/dialog.h +0 -257
- package/bios/seabios/scripts/kconfig/lxdialog/inputbox.c +0 -301
- package/bios/seabios/scripts/kconfig/lxdialog/menubox.c +0 -437
- package/bios/seabios/scripts/kconfig/lxdialog/textbox.c +0 -408
- package/bios/seabios/scripts/kconfig/lxdialog/util.c +0 -713
- package/bios/seabios/scripts/kconfig/lxdialog/yesno.c +0 -114
- package/bios/seabios/scripts/kconfig/mconf.c +0 -1036
- package/bios/seabios/scripts/kconfig/menu.c +0 -697
- package/bios/seabios/scripts/kconfig/merge_config.sh +0 -150
- package/bios/seabios/scripts/kconfig/nconf.c +0 -1556
- package/bios/seabios/scripts/kconfig/nconf.gui.c +0 -656
- package/bios/seabios/scripts/kconfig/nconf.h +0 -96
- package/bios/seabios/scripts/kconfig/qconf.cc +0 -1795
- package/bios/seabios/scripts/kconfig/qconf.h +0 -338
- package/bios/seabios/scripts/kconfig/streamline_config.pl +0 -647
- package/bios/seabios/scripts/kconfig/symbol.c +0 -1373
- package/bios/seabios/scripts/kconfig/util.c +0 -157
- package/bios/seabios/scripts/kconfig/zconf.gperf +0 -48
- package/bios/seabios/scripts/kconfig/zconf.hash.c_shipped +0 -289
- package/bios/seabios/scripts/kconfig/zconf.l +0 -363
- package/bios/seabios/scripts/kconfig/zconf.lex.c_shipped +0 -2420
- package/bios/seabios/scripts/kconfig/zconf.tab.c_shipped +0 -2538
- package/bios/seabios/scripts/kconfig/zconf.y +0 -733
- package/bios/seabios/scripts/layoutrom.py +0 -705
- package/bios/seabios/scripts/python23compat.py +0 -14
- package/bios/seabios/scripts/readserial.py +0 -190
- package/bios/seabios/scripts/tarball.sh +0 -36
- package/bios/seabios/scripts/test-build.sh +0 -90
- package/bios/seabios/scripts/transdump.py +0 -53
- package/bios/seabios/scripts/vgafixup.py +0 -96
- package/bios/seabios/src/Kconfig +0 -579
- package/bios/seabios/src/apm.c +0 -215
- package/bios/seabios/src/asm-offsets.c +0 -23
- package/bios/seabios/src/biosvar.h +0 -130
- package/bios/seabios/src/block.c +0 -623
- package/bios/seabios/src/block.h +0 -121
- package/bios/seabios/src/bmp.c +0 -117
- package/bios/seabios/src/boot.c +0 -793
- package/bios/seabios/src/bootsplash.c +0 -255
- package/bios/seabios/src/bregs.h +0 -80
- package/bios/seabios/src/byteorder.h +0 -71
- package/bios/seabios/src/cdrom.c +0 -322
- package/bios/seabios/src/clock.c +0 -506
- package/bios/seabios/src/code16gcc.s +0 -1
- package/bios/seabios/src/config.h +0 -108
- package/bios/seabios/src/cp437.c +0 -275
- package/bios/seabios/src/cp437.h +0 -1
- package/bios/seabios/src/disk.c +0 -779
- package/bios/seabios/src/e820map.c +0 -152
- package/bios/seabios/src/e820map.h +0 -26
- package/bios/seabios/src/entryfuncs.S +0 -165
- package/bios/seabios/src/farptr.h +0 -208
- package/bios/seabios/src/font.c +0 -139
- package/bios/seabios/src/fw/acpi-dsdt-cpu-hotplug.dsl +0 -78
- package/bios/seabios/src/fw/acpi-dsdt-dbug.dsl +0 -26
- package/bios/seabios/src/fw/acpi-dsdt-hpet.dsl +0 -36
- package/bios/seabios/src/fw/acpi-dsdt-isa.dsl +0 -102
- package/bios/seabios/src/fw/acpi-dsdt-pci-crs.dsl +0 -90
- package/bios/seabios/src/fw/acpi-dsdt.dsl +0 -342
- package/bios/seabios/src/fw/acpi-dsdt.hex +0 -554
- package/bios/seabios/src/fw/acpi.c +0 -685
- package/bios/seabios/src/fw/biostables.c +0 -491
- package/bios/seabios/src/fw/coreboot.c +0 -569
- package/bios/seabios/src/fw/csm.c +0 -347
- package/bios/seabios/src/fw/dev-pci.h +0 -52
- package/bios/seabios/src/fw/dev-piix.h +0 -29
- package/bios/seabios/src/fw/dev-q35.h +0 -52
- package/bios/seabios/src/fw/lzmadecode.c +0 -398
- package/bios/seabios/src/fw/lzmadecode.h +0 -67
- package/bios/seabios/src/fw/mptable.c +0 -197
- package/bios/seabios/src/fw/mtrr.c +0 -105
- package/bios/seabios/src/fw/multiboot.c +0 -111
- package/bios/seabios/src/fw/paravirt.c +0 -624
- package/bios/seabios/src/fw/paravirt.h +0 -63
- package/bios/seabios/src/fw/pciinit.c +0 -1187
- package/bios/seabios/src/fw/pirtable.c +0 -103
- package/bios/seabios/src/fw/q35-acpi-dsdt.dsl +0 -450
- package/bios/seabios/src/fw/romfile_loader.c +0 -259
- package/bios/seabios/src/fw/romfile_loader.h +0 -91
- package/bios/seabios/src/fw/shadow.c +0 -208
- package/bios/seabios/src/fw/smbios.c +0 -585
- package/bios/seabios/src/fw/smm.c +0 -269
- package/bios/seabios/src/fw/smp.c +0 -194
- package/bios/seabios/src/fw/ssdt-misc.dsl +0 -104
- package/bios/seabios/src/fw/ssdt-misc.hex +0 -88
- package/bios/seabios/src/fw/ssdt-pcihp.dsl +0 -36
- package/bios/seabios/src/fw/ssdt-pcihp.hex +0 -38
- package/bios/seabios/src/fw/ssdt-proc.dsl +0 -48
- package/bios/seabios/src/fw/ssdt-proc.hex +0 -35
- package/bios/seabios/src/fw/xen.c +0 -149
- package/bios/seabios/src/fw/xen.h +0 -125
- package/bios/seabios/src/gen-defs.h +0 -19
- package/bios/seabios/src/hw/ahci.c +0 -697
- package/bios/seabios/src/hw/ahci.h +0 -201
- package/bios/seabios/src/hw/ata.c +0 -1046
- package/bios/seabios/src/hw/ata.h +0 -163
- package/bios/seabios/src/hw/blockcmd.c +0 -372
- package/bios/seabios/src/hw/blockcmd.h +0 -114
- package/bios/seabios/src/hw/dma.c +0 -67
- package/bios/seabios/src/hw/esp-scsi.c +0 -241
- package/bios/seabios/src/hw/esp-scsi.h +0 -8
- package/bios/seabios/src/hw/floppy.c +0 -741
- package/bios/seabios/src/hw/lsi-scsi.c +0 -221
- package/bios/seabios/src/hw/lsi-scsi.h +0 -8
- package/bios/seabios/src/hw/megasas.c +0 -405
- package/bios/seabios/src/hw/megasas.h +0 -8
- package/bios/seabios/src/hw/mpt-scsi.c +0 -319
- package/bios/seabios/src/hw/mpt-scsi.h +0 -8
- package/bios/seabios/src/hw/nvme-int.h +0 -199
- package/bios/seabios/src/hw/nvme.c +0 -708
- package/bios/seabios/src/hw/nvme.h +0 -17
- package/bios/seabios/src/hw/pci.c +0 -133
- package/bios/seabios/src/hw/pci.h +0 -47
- package/bios/seabios/src/hw/pci_ids.h +0 -2632
- package/bios/seabios/src/hw/pci_regs.h +0 -556
- package/bios/seabios/src/hw/pcidevice.c +0 -192
- package/bios/seabios/src/hw/pcidevice.h +0 -76
- package/bios/seabios/src/hw/pic.c +0 -115
- package/bios/seabios/src/hw/pic.h +0 -60
- package/bios/seabios/src/hw/ps2port.c +0 -543
- package/bios/seabios/src/hw/ps2port.h +0 -67
- package/bios/seabios/src/hw/pvscsi.c +0 -333
- package/bios/seabios/src/hw/pvscsi.h +0 -8
- package/bios/seabios/src/hw/ramdisk.c +0 -108
- package/bios/seabios/src/hw/rtc.c +0 -100
- package/bios/seabios/src/hw/rtc.h +0 -75
- package/bios/seabios/src/hw/sdcard.c +0 -572
- package/bios/seabios/src/hw/serialio.c +0 -113
- package/bios/seabios/src/hw/serialio.h +0 -29
- package/bios/seabios/src/hw/timer.c +0 -259
- package/bios/seabios/src/hw/tpm_drivers.c +0 -636
- package/bios/seabios/src/hw/tpm_drivers.h +0 -127
- package/bios/seabios/src/hw/usb-ehci.c +0 -650
- package/bios/seabios/src/hw/usb-ehci.h +0 -177
- package/bios/seabios/src/hw/usb-hid.c +0 -442
- package/bios/seabios/src/hw/usb-hid.h +0 -29
- package/bios/seabios/src/hw/usb-hub.c +0 -205
- package/bios/seabios/src/hw/usb-hub.h +0 -64
- package/bios/seabios/src/hw/usb-msc.c +0 -222
- package/bios/seabios/src/hw/usb-msc.h +0 -10
- package/bios/seabios/src/hw/usb-ohci.c +0 -568
- package/bios/seabios/src/hw/usb-ohci.h +0 -144
- package/bios/seabios/src/hw/usb-uas.c +0 -289
- package/bios/seabios/src/hw/usb-uas.h +0 -9
- package/bios/seabios/src/hw/usb-uhci.c +0 -571
- package/bios/seabios/src/hw/usb-uhci.h +0 -128
- package/bios/seabios/src/hw/usb-xhci.c +0 -1161
- package/bios/seabios/src/hw/usb-xhci.h +0 -133
- package/bios/seabios/src/hw/usb.c +0 -499
- package/bios/seabios/src/hw/usb.h +0 -254
- package/bios/seabios/src/hw/virtio-blk.c +0 -211
- package/bios/seabios/src/hw/virtio-blk.h +0 -43
- package/bios/seabios/src/hw/virtio-pci.c +0 -501
- package/bios/seabios/src/hw/virtio-pci.h +0 -151
- package/bios/seabios/src/hw/virtio-ring.c +0 -147
- package/bios/seabios/src/hw/virtio-ring.h +0 -121
- package/bios/seabios/src/hw/virtio-scsi.c +0 -220
- package/bios/seabios/src/hw/virtio-scsi.h +0 -47
- package/bios/seabios/src/jpeg.c +0 -1055
- package/bios/seabios/src/kbd.c +0 -599
- package/bios/seabios/src/list.h +0 -91
- package/bios/seabios/src/malloc.c +0 -561
- package/bios/seabios/src/malloc.h +0 -70
- package/bios/seabios/src/memmap.h +0 -21
- package/bios/seabios/src/misc.c +0 -195
- package/bios/seabios/src/mouse.c +0 -342
- package/bios/seabios/src/optionroms.c +0 -475
- package/bios/seabios/src/output.c +0 -584
- package/bios/seabios/src/output.h +0 -68
- package/bios/seabios/src/pcibios.c +0 -241
- package/bios/seabios/src/pmm.c +0 -176
- package/bios/seabios/src/pnpbios.c +0 -88
- package/bios/seabios/src/post.c +0 -337
- package/bios/seabios/src/resume.c +0 -157
- package/bios/seabios/src/romfile.c +0 -146
- package/bios/seabios/src/romfile.h +0 -21
- package/bios/seabios/src/romlayout.S +0 -698
- package/bios/seabios/src/sercon.c +0 -677
- package/bios/seabios/src/serial.c +0 -317
- package/bios/seabios/src/sha1.c +0 -147
- package/bios/seabios/src/sha1.h +0 -8
- package/bios/seabios/src/stacks.c +0 -771
- package/bios/seabios/src/stacks.h +0 -68
- package/bios/seabios/src/std/LegacyBios.h +0 -985
- package/bios/seabios/src/std/acpi.h +0 -323
- package/bios/seabios/src/std/bda.h +0 -174
- package/bios/seabios/src/std/disk.h +0 -175
- package/bios/seabios/src/std/mptable.h +0 -77
- package/bios/seabios/src/std/multiboot.h +0 -260
- package/bios/seabios/src/std/optionrom.h +0 -59
- package/bios/seabios/src/std/pirtable.h +0 -35
- package/bios/seabios/src/std/pmm.h +0 -19
- package/bios/seabios/src/std/pnpbios.h +0 -24
- package/bios/seabios/src/std/smbios.h +0 -167
- package/bios/seabios/src/std/tcg.h +0 -554
- package/bios/seabios/src/std/vbe.h +0 -156
- package/bios/seabios/src/std/vga.h +0 -63
- package/bios/seabios/src/string.c +0 -251
- package/bios/seabios/src/string.h +0 -31
- package/bios/seabios/src/system.c +0 -357
- package/bios/seabios/src/tcgbios.c +0 -2014
- package/bios/seabios/src/tcgbios.h +0 -19
- package/bios/seabios/src/types.h +0 -156
- package/bios/seabios/src/util.h +0 -251
- package/bios/seabios/src/version.c +0 -5
- package/bios/seabios/src/vgahooks.c +0 -355
- package/bios/seabios/src/x86.c +0 -23
- package/bios/seabios/src/x86.h +0 -277
- package/bios/seabios/vgasrc/Kconfig +0 -211
- package/bios/seabios/vgasrc/bochsdisplay.c +0 -59
- package/bios/seabios/vgasrc/bochsvga.c +0 -447
- package/bios/seabios/vgasrc/bochsvga.h +0 -57
- package/bios/seabios/vgasrc/cbvga.c +0 -337
- package/bios/seabios/vgasrc/clext.c +0 -627
- package/bios/seabios/vgasrc/geodevga.c +0 -434
- package/bios/seabios/vgasrc/geodevga.h +0 -89
- package/bios/seabios/vgasrc/ramfb.c +0 -163
- package/bios/seabios/vgasrc/stdvga.c +0 -485
- package/bios/seabios/vgasrc/stdvga.h +0 -81
- package/bios/seabios/vgasrc/stdvgaio.c +0 -186
- package/bios/seabios/vgasrc/stdvgamodes.c +0 -534
- package/bios/seabios/vgasrc/swcursor.c +0 -96
- package/bios/seabios/vgasrc/vbe.c +0 -432
- package/bios/seabios/vgasrc/vgabios.c +0 -1131
- package/bios/seabios/vgasrc/vgabios.h +0 -88
- package/bios/seabios/vgasrc/vgaentry.S +0 -161
- package/bios/seabios/vgasrc/vgafb.c +0 -661
- package/bios/seabios/vgasrc/vgafb.h +0 -42
- package/bios/seabios/vgasrc/vgafonts.c +0 -785
- package/bios/seabios/vgasrc/vgahw.h +0 -152
- package/bios/seabios/vgasrc/vgainit.c +0 -202
- package/bios/seabios/vgasrc/vgalayout.lds.S +0 -23
- package/bios/seabios/vgasrc/vgautil.h +0 -103
- package/bios/seabios/vgasrc/vgaversion.c +0 -6
- package/bios/seabios-debug.bin +0 -0
- package/bios/seabios-debug.config +0 -117
- package/bios/seabios.bin +0 -0
- package/bios/seabios.config +0 -114
- package/bios/vgabios-debug.bin +0 -0
- package/bios/vgabios.bin +0 -0
- package/build/binaries.js +0 -1
- package/build/index-debug.cjs +0 -1
- package/build/index-debug.js +0 -1
- package/build/index.cjs +0 -1
- package/build/index.js +0 -1
- package/v86.css +0 -259
|
@@ -1,177 +0,0 @@
|
|
|
1
|
-
#ifndef __USB_EHCI_H
|
|
2
|
-
#define __USB_EHCI_H
|
|
3
|
-
|
|
4
|
-
// usb-ehci.c
|
|
5
|
-
void ehci_setup(void);
|
|
6
|
-
void ehci_wait_controllers(void);
|
|
7
|
-
struct usbdevice_s;
|
|
8
|
-
struct usb_endpoint_descriptor;
|
|
9
|
-
struct usb_pipe;
|
|
10
|
-
struct usb_pipe *ehci_realloc_pipe(struct usbdevice_s *usbdev
|
|
11
|
-
, struct usb_pipe *upipe
|
|
12
|
-
, struct usb_endpoint_descriptor *epdesc);
|
|
13
|
-
int ehci_send_pipe(struct usb_pipe *p, int dir, const void *cmd
|
|
14
|
-
, void *data, int datasize);
|
|
15
|
-
int ehci_poll_intr(struct usb_pipe *p, void *data);
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
/****************************************************************
|
|
19
|
-
* ehci structs and flags
|
|
20
|
-
****************************************************************/
|
|
21
|
-
|
|
22
|
-
struct ehci_caps {
|
|
23
|
-
u8 caplength;
|
|
24
|
-
u8 reserved_01;
|
|
25
|
-
u16 hciversion;
|
|
26
|
-
u32 hcsparams;
|
|
27
|
-
u32 hccparams;
|
|
28
|
-
u64 portroute;
|
|
29
|
-
} PACKED;
|
|
30
|
-
|
|
31
|
-
#define HCC_64BIT_ADDR 1
|
|
32
|
-
|
|
33
|
-
#define HCS_N_PORTS_MASK 0xf
|
|
34
|
-
|
|
35
|
-
struct ehci_regs {
|
|
36
|
-
u32 usbcmd;
|
|
37
|
-
u32 usbsts;
|
|
38
|
-
u32 usbintr;
|
|
39
|
-
u32 frindex;
|
|
40
|
-
u32 ctrldssegment;
|
|
41
|
-
u32 periodiclistbase;
|
|
42
|
-
u32 asynclistbase;
|
|
43
|
-
u32 reserved[9];
|
|
44
|
-
u32 configflag;
|
|
45
|
-
u32 portsc[0];
|
|
46
|
-
} PACKED;
|
|
47
|
-
|
|
48
|
-
#define CMD_PARK (1<<11)
|
|
49
|
-
#define CMD_PARK_CNT(c) (((c)>>8)&3)
|
|
50
|
-
#define CMD_LRESET (1<<7)
|
|
51
|
-
#define CMD_IAAD (1<<6)
|
|
52
|
-
#define CMD_ASE (1<<5)
|
|
53
|
-
#define CMD_PSE (1<<4)
|
|
54
|
-
#define CMD_HCRESET (1<<1)
|
|
55
|
-
#define CMD_RUN (1<<0)
|
|
56
|
-
|
|
57
|
-
#define STS_ASS (1<<15)
|
|
58
|
-
#define STS_PSS (1<<14)
|
|
59
|
-
#define STS_RECL (1<<13)
|
|
60
|
-
#define STS_HALT (1<<12)
|
|
61
|
-
#define STS_IAA (1<<5)
|
|
62
|
-
#define STS_FATAL (1<<4)
|
|
63
|
-
#define STS_FLR (1<<3)
|
|
64
|
-
#define STS_PCD (1<<2)
|
|
65
|
-
#define STS_ERR (1<<1)
|
|
66
|
-
#define STS_INT (1<<0)
|
|
67
|
-
|
|
68
|
-
#define FLAG_CF (1<<0)
|
|
69
|
-
|
|
70
|
-
#define PORT_WKOC_E (1<<22)
|
|
71
|
-
#define PORT_WKDISC_E (1<<21)
|
|
72
|
-
#define PORT_WKCONN_E (1<<20)
|
|
73
|
-
#define PORT_TEST_PKT (0x4<<16)
|
|
74
|
-
#define PORT_LED_OFF (0<<14)
|
|
75
|
-
#define PORT_LED_AMBER (1<<14)
|
|
76
|
-
#define PORT_LED_GREEN (2<<14)
|
|
77
|
-
#define PORT_LED_MASK (3<<14)
|
|
78
|
-
#define PORT_OWNER (1<<13)
|
|
79
|
-
#define PORT_POWER (1<<12)
|
|
80
|
-
#define PORT_LINESTATUS_MASK (3<<10)
|
|
81
|
-
#define PORT_LINESTATUS_KSTATE (1<<10)
|
|
82
|
-
#define PORT_RESET (1<<8)
|
|
83
|
-
#define PORT_SUSPEND (1<<7)
|
|
84
|
-
#define PORT_RESUME (1<<6)
|
|
85
|
-
#define PORT_OCC (1<<5)
|
|
86
|
-
#define PORT_OC (1<<4)
|
|
87
|
-
#define PORT_PEC (1<<3)
|
|
88
|
-
#define PORT_PE (1<<2)
|
|
89
|
-
#define PORT_CSC (1<<1)
|
|
90
|
-
#define PORT_CONNECT (1<<0)
|
|
91
|
-
#define PORT_RWC_BITS (PORT_CSC | PORT_PEC | PORT_OCC)
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
#define EHCI_QH_ALIGN 128 // Can't span a 4K boundary, so increase from 32
|
|
95
|
-
|
|
96
|
-
struct ehci_qh {
|
|
97
|
-
u32 next;
|
|
98
|
-
u32 info1;
|
|
99
|
-
u32 info2;
|
|
100
|
-
u32 current;
|
|
101
|
-
|
|
102
|
-
u32 qtd_next;
|
|
103
|
-
u32 alt_next;
|
|
104
|
-
u32 token;
|
|
105
|
-
u32 buf[5];
|
|
106
|
-
u32 buf_hi[5];
|
|
107
|
-
} PACKED;
|
|
108
|
-
|
|
109
|
-
#define QH_CONTROL (1 << 27)
|
|
110
|
-
#define QH_MAXPACKET_SHIFT 16
|
|
111
|
-
#define QH_MAXPACKET_MASK (0x7ff << QH_MAXPACKET_SHIFT)
|
|
112
|
-
#define QH_HEAD (1 << 15)
|
|
113
|
-
#define QH_TOGGLECONTROL (1 << 14)
|
|
114
|
-
#define QH_SPEED_SHIFT 12
|
|
115
|
-
#define QH_SPEED_MASK (0x3 << QH_SPEED_SHIFT)
|
|
116
|
-
#define QH_EP_SHIFT 8
|
|
117
|
-
#define QH_EP_MASK (0xf << QH_EP_SHIFT)
|
|
118
|
-
#define QH_DEVADDR_SHIFT 0
|
|
119
|
-
#define QH_DEVADDR_MASK (0x7f << QH_DEVADDR_SHIFT)
|
|
120
|
-
|
|
121
|
-
#define QH_SMASK_SHIFT 0
|
|
122
|
-
#define QH_SMASK_MASK (0xff << QH_SMASK_SHIFT)
|
|
123
|
-
#define QH_CMASK_SHIFT 8
|
|
124
|
-
#define QH_CMASK_MASK (0xff << QH_CMASK_SHIFT)
|
|
125
|
-
#define QH_HUBADDR_SHIFT 16
|
|
126
|
-
#define QH_HUBADDR_MASK (0x7f << QH_HUBADDR_SHIFT)
|
|
127
|
-
#define QH_HUBPORT_SHIFT 23
|
|
128
|
-
#define QH_HUBPORT_MASK (0x7f << QH_HUBPORT_SHIFT)
|
|
129
|
-
#define QH_MULT_SHIFT 30
|
|
130
|
-
#define QH_MULT_MASK (0x3 << QH_MULT_SHIFT)
|
|
131
|
-
|
|
132
|
-
#define EHCI_PTR_BITS 0x001F
|
|
133
|
-
#define EHCI_PTR_TERM 0x0001
|
|
134
|
-
#define EHCI_PTR_QH 0x0002
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
#define EHCI_QTD_ALIGN 64 // Can't span a 4K boundary, so increase from 32
|
|
138
|
-
|
|
139
|
-
struct ehci_qtd {
|
|
140
|
-
u32 qtd_next;
|
|
141
|
-
u32 alt_next;
|
|
142
|
-
u32 token;
|
|
143
|
-
u32 buf[5];
|
|
144
|
-
u32 buf_hi[5];
|
|
145
|
-
/* keep struct size a multiple of 64 bytes, as we're allocating
|
|
146
|
-
arrays. Without this padding, the second qtd could have the
|
|
147
|
-
wrong alignment. */
|
|
148
|
-
} PACKED __aligned(EHCI_QTD_ALIGN);
|
|
149
|
-
|
|
150
|
-
#define QTD_TOGGLE (1 << 31)
|
|
151
|
-
#define QTD_LENGTH_SHIFT 16
|
|
152
|
-
#define QTD_LENGTH_MASK (0x7fff << QTD_LENGTH_SHIFT)
|
|
153
|
-
#define QTD_CERR_SHIFT 10
|
|
154
|
-
#define QTD_CERR_MASK (0x3 << QTD_CERR_SHIFT)
|
|
155
|
-
#define QTD_IOC (1 << 15)
|
|
156
|
-
#define QTD_PID_OUT (0x0 << 8)
|
|
157
|
-
#define QTD_PID_IN (0x1 << 8)
|
|
158
|
-
#define QTD_PID_SETUP (0x2 << 8)
|
|
159
|
-
#define QTD_STS_ACTIVE (1 << 7)
|
|
160
|
-
#define QTD_STS_HALT (1 << 6)
|
|
161
|
-
#define QTD_STS_DBE (1 << 5)
|
|
162
|
-
#define QTD_STS_BABBLE (1 << 4)
|
|
163
|
-
#define QTD_STS_XACT (1 << 3)
|
|
164
|
-
#define QTD_STS_MMF (1 << 2)
|
|
165
|
-
#define QTD_STS_STS (1 << 1)
|
|
166
|
-
#define QTD_STS_PING (1 << 0)
|
|
167
|
-
|
|
168
|
-
#define ehci_explen(len) (((len) << QTD_LENGTH_SHIFT) & QTD_LENGTH_MASK)
|
|
169
|
-
|
|
170
|
-
#define ehci_maxerr(err) (((err) << QTD_CERR_SHIFT) & QTD_CERR_MASK)
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
struct ehci_framelist {
|
|
174
|
-
u32 links[1024];
|
|
175
|
-
} PACKED;
|
|
176
|
-
|
|
177
|
-
#endif // usb-ehci.h
|
|
@@ -1,442 +0,0 @@
|
|
|
1
|
-
// Code for handling USB Human Interface Devices (HID).
|
|
2
|
-
//
|
|
3
|
-
// Copyright (C) 2009 Kevin O'Connor <kevin@koconnor.net>
|
|
4
|
-
//
|
|
5
|
-
// This file may be distributed under the terms of the GNU LGPLv3 license.
|
|
6
|
-
|
|
7
|
-
#include "biosvar.h" // GET_GLOBAL
|
|
8
|
-
#include "config.h" // CONFIG_*
|
|
9
|
-
#include "output.h" // dprintf
|
|
10
|
-
#include "ps2port.h" // ATKBD_CMD_GETID
|
|
11
|
-
#include "usb.h" // usb_ctrlrequest
|
|
12
|
-
#include "usb-hid.h" // usb_keyboard_setup
|
|
13
|
-
#include "util.h" // process_key
|
|
14
|
-
|
|
15
|
-
struct usb_pipe *keyboard_pipe VARFSEG;
|
|
16
|
-
struct usb_pipe *mouse_pipe VARFSEG;
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
/****************************************************************
|
|
20
|
-
* Setup
|
|
21
|
-
****************************************************************/
|
|
22
|
-
|
|
23
|
-
// Send USB HID protocol message.
|
|
24
|
-
static int
|
|
25
|
-
set_protocol(struct usb_pipe *pipe, u16 val)
|
|
26
|
-
{
|
|
27
|
-
struct usb_ctrlrequest req;
|
|
28
|
-
req.bRequestType = USB_DIR_OUT | USB_TYPE_CLASS | USB_RECIP_INTERFACE;
|
|
29
|
-
req.bRequest = HID_REQ_SET_PROTOCOL;
|
|
30
|
-
req.wValue = val;
|
|
31
|
-
req.wIndex = 0;
|
|
32
|
-
req.wLength = 0;
|
|
33
|
-
return usb_send_default_control(pipe, &req, NULL);
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
// Send USB HID SetIdle request.
|
|
37
|
-
static int
|
|
38
|
-
set_idle(struct usb_pipe *pipe, int ms)
|
|
39
|
-
{
|
|
40
|
-
struct usb_ctrlrequest req;
|
|
41
|
-
req.bRequestType = USB_DIR_OUT | USB_TYPE_CLASS | USB_RECIP_INTERFACE;
|
|
42
|
-
req.bRequest = HID_REQ_SET_IDLE;
|
|
43
|
-
req.wValue = (ms/4)<<8;
|
|
44
|
-
req.wIndex = 0;
|
|
45
|
-
req.wLength = 0;
|
|
46
|
-
return usb_send_default_control(pipe, &req, NULL);
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
#define KEYREPEATWAITMS 500
|
|
50
|
-
#define KEYREPEATMS 33
|
|
51
|
-
|
|
52
|
-
static int
|
|
53
|
-
usb_kbd_setup(struct usbdevice_s *usbdev
|
|
54
|
-
, struct usb_endpoint_descriptor *epdesc)
|
|
55
|
-
{
|
|
56
|
-
if (! CONFIG_USB_KEYBOARD)
|
|
57
|
-
return -1;
|
|
58
|
-
if (keyboard_pipe)
|
|
59
|
-
// XXX - this enables the first found keyboard (could be random)
|
|
60
|
-
return -1;
|
|
61
|
-
|
|
62
|
-
if (epdesc->wMaxPacketSize != 8)
|
|
63
|
-
return -1;
|
|
64
|
-
|
|
65
|
-
// Enable "boot" protocol.
|
|
66
|
-
int ret = set_protocol(usbdev->defpipe, 0);
|
|
67
|
-
if (ret)
|
|
68
|
-
return -1;
|
|
69
|
-
// Periodically send reports to enable key repeat.
|
|
70
|
-
ret = set_idle(usbdev->defpipe, KEYREPEATMS);
|
|
71
|
-
if (ret)
|
|
72
|
-
return -1;
|
|
73
|
-
|
|
74
|
-
keyboard_pipe = usb_alloc_pipe(usbdev, epdesc);
|
|
75
|
-
if (!keyboard_pipe)
|
|
76
|
-
return -1;
|
|
77
|
-
|
|
78
|
-
dprintf(1, "USB keyboard initialized\n");
|
|
79
|
-
return 0;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
static int
|
|
83
|
-
usb_mouse_setup(struct usbdevice_s *usbdev
|
|
84
|
-
, struct usb_endpoint_descriptor *epdesc)
|
|
85
|
-
{
|
|
86
|
-
if (! CONFIG_USB_MOUSE)
|
|
87
|
-
return -1;
|
|
88
|
-
if (mouse_pipe)
|
|
89
|
-
// XXX - this enables the first found mouse (could be random)
|
|
90
|
-
return -1;
|
|
91
|
-
|
|
92
|
-
if (epdesc->wMaxPacketSize < 3 || epdesc->wMaxPacketSize > 8)
|
|
93
|
-
return -1;
|
|
94
|
-
|
|
95
|
-
// Enable "boot" protocol.
|
|
96
|
-
int ret = set_protocol(usbdev->defpipe, 0);
|
|
97
|
-
if (ret)
|
|
98
|
-
return -1;
|
|
99
|
-
|
|
100
|
-
mouse_pipe = usb_alloc_pipe(usbdev, epdesc);
|
|
101
|
-
if (!mouse_pipe)
|
|
102
|
-
return -1;
|
|
103
|
-
|
|
104
|
-
dprintf(1, "USB mouse initialized\n");
|
|
105
|
-
return 0;
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
// Initialize a found USB HID device (if applicable).
|
|
109
|
-
int
|
|
110
|
-
usb_hid_setup(struct usbdevice_s *usbdev)
|
|
111
|
-
{
|
|
112
|
-
if (! CONFIG_USB_KEYBOARD && ! CONFIG_USB_MOUSE)
|
|
113
|
-
return -1;
|
|
114
|
-
dprintf(2, "usb_hid_setup %p\n", usbdev->defpipe);
|
|
115
|
-
|
|
116
|
-
struct usb_interface_descriptor *iface = usbdev->iface;
|
|
117
|
-
if (iface->bInterfaceSubClass != USB_INTERFACE_SUBCLASS_BOOT)
|
|
118
|
-
// Doesn't support boot protocol.
|
|
119
|
-
return -1;
|
|
120
|
-
|
|
121
|
-
// Find intr in endpoint.
|
|
122
|
-
struct usb_endpoint_descriptor *epdesc = usb_find_desc(
|
|
123
|
-
usbdev, USB_ENDPOINT_XFER_INT, USB_DIR_IN);
|
|
124
|
-
if (!epdesc) {
|
|
125
|
-
dprintf(1, "No usb hid intr in?\n");
|
|
126
|
-
return -1;
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
if (iface->bInterfaceProtocol == USB_INTERFACE_PROTOCOL_KEYBOARD)
|
|
130
|
-
return usb_kbd_setup(usbdev, epdesc);
|
|
131
|
-
if (iface->bInterfaceProtocol == USB_INTERFACE_PROTOCOL_MOUSE)
|
|
132
|
-
return usb_mouse_setup(usbdev, epdesc);
|
|
133
|
-
return -1;
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
/****************************************************************
|
|
138
|
-
* Keyboard events
|
|
139
|
-
****************************************************************/
|
|
140
|
-
|
|
141
|
-
// Mapping from USB key id to ps2 key sequence.
|
|
142
|
-
static u16 KeyToScanCode[] VAR16 = {
|
|
143
|
-
0x0000, 0x0000, 0x0000, 0x0000, 0x001e, 0x0030, 0x002e, 0x0020,
|
|
144
|
-
0x0012, 0x0021, 0x0022, 0x0023, 0x0017, 0x0024, 0x0025, 0x0026,
|
|
145
|
-
0x0032, 0x0031, 0x0018, 0x0019, 0x0010, 0x0013, 0x001f, 0x0014,
|
|
146
|
-
0x0016, 0x002f, 0x0011, 0x002d, 0x0015, 0x002c, 0x0002, 0x0003,
|
|
147
|
-
0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b,
|
|
148
|
-
0x001c, 0x0001, 0x000e, 0x000f, 0x0039, 0x000c, 0x000d, 0x001a,
|
|
149
|
-
0x001b, 0x002b, 0x0000, 0x0027, 0x0028, 0x0029, 0x0033, 0x0034,
|
|
150
|
-
0x0035, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040,
|
|
151
|
-
0x0041, 0x0042, 0x0043, 0x0044, 0x0057, 0x0058, 0xe037, 0x0046,
|
|
152
|
-
0xe145, 0xe052, 0xe047, 0xe049, 0xe053, 0xe04f, 0xe051, 0xe04d,
|
|
153
|
-
0xe04b, 0xe050, 0xe048, 0x0045, 0xe035, 0x0037, 0x004a, 0x004e,
|
|
154
|
-
0xe01c, 0x004f, 0x0050, 0x0051, 0x004b, 0x004c, 0x004d, 0x0047,
|
|
155
|
-
0x0048, 0x0049, 0x0052, 0x0053
|
|
156
|
-
};
|
|
157
|
-
|
|
158
|
-
// Mapping from USB modifier id to ps2 key sequence.
|
|
159
|
-
static u16 ModifierToScanCode[] VAR16 = {
|
|
160
|
-
//lcntl, lshift, lalt, lgui, rcntl, rshift, ralt, rgui
|
|
161
|
-
0x001d, 0x002a, 0x0038, 0xe05b, 0xe01d, 0x0036, 0xe038, 0xe05c
|
|
162
|
-
};
|
|
163
|
-
|
|
164
|
-
#define RELEASEBIT 0x80
|
|
165
|
-
|
|
166
|
-
// Format of USB keyboard event data
|
|
167
|
-
struct keyevent {
|
|
168
|
-
u8 modifiers;
|
|
169
|
-
u8 reserved;
|
|
170
|
-
u8 keys[6];
|
|
171
|
-
};
|
|
172
|
-
|
|
173
|
-
// Translate data from KeyToScanCode[] to calls to process_key().
|
|
174
|
-
static void
|
|
175
|
-
prockeys(u16 scancode, u8 key_release, u8 mods)
|
|
176
|
-
{
|
|
177
|
-
if (scancode > 0xff) {
|
|
178
|
-
if (scancode == 0xe145) {
|
|
179
|
-
// XXX - a real AT keyboard would immediately send the key release
|
|
180
|
-
if (mods & ((1<<0) | (1<<4))) {
|
|
181
|
-
// Cntr+Break key
|
|
182
|
-
process_key(0xe0);
|
|
183
|
-
process_key(0x46 | key_release);
|
|
184
|
-
} else {
|
|
185
|
-
// Pause key
|
|
186
|
-
process_key(0xe1);
|
|
187
|
-
process_key(0x1d | key_release);
|
|
188
|
-
process_key(0x45 | key_release);
|
|
189
|
-
}
|
|
190
|
-
return;
|
|
191
|
-
} else if (scancode == 0xe037 && mods & ((1<<2) | (1<<6))) {
|
|
192
|
-
// Alt+SysReq key
|
|
193
|
-
process_key(0x54 | key_release);
|
|
194
|
-
return;
|
|
195
|
-
}
|
|
196
|
-
process_key(0xe0);
|
|
197
|
-
}
|
|
198
|
-
process_key(scancode | key_release);
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
// Handle a USB key press/release event.
|
|
202
|
-
static void
|
|
203
|
-
procscankey(u8 key, u8 key_release, u8 mods)
|
|
204
|
-
{
|
|
205
|
-
if (key >= ARRAY_SIZE(KeyToScanCode))
|
|
206
|
-
return;
|
|
207
|
-
u16 scancode = GET_GLOBAL(KeyToScanCode[key]);
|
|
208
|
-
if (scancode)
|
|
209
|
-
prockeys(scancode, key_release, mods);
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
// Handle a USB modifier press/release event.
|
|
213
|
-
static void
|
|
214
|
-
procmodkey(u8 mods, u8 key_release)
|
|
215
|
-
{
|
|
216
|
-
int i;
|
|
217
|
-
for (i=0; mods; i++)
|
|
218
|
-
if (mods & (1<<i)) {
|
|
219
|
-
// Modifier key change.
|
|
220
|
-
prockeys(GET_GLOBAL(ModifierToScanCode[i]), key_release, 0);
|
|
221
|
-
mods &= ~(1<<i);
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
|
|
225
|
-
struct usbkeyinfo {
|
|
226
|
-
union {
|
|
227
|
-
struct {
|
|
228
|
-
u8 modifiers;
|
|
229
|
-
u8 repeatcount;
|
|
230
|
-
u8 keys[6];
|
|
231
|
-
};
|
|
232
|
-
u64 data;
|
|
233
|
-
};
|
|
234
|
-
};
|
|
235
|
-
struct usbkeyinfo LastUSBkey VARLOW;
|
|
236
|
-
|
|
237
|
-
// Process USB keyboard data.
|
|
238
|
-
static void
|
|
239
|
-
handle_key(struct keyevent *data)
|
|
240
|
-
{
|
|
241
|
-
dprintf(9, "Got key %x %x\n", data->modifiers, data->keys[0]);
|
|
242
|
-
|
|
243
|
-
// Load old keys.
|
|
244
|
-
struct usbkeyinfo old;
|
|
245
|
-
old.data = GET_LOW(LastUSBkey.data);
|
|
246
|
-
|
|
247
|
-
// Check for keys no longer pressed.
|
|
248
|
-
int addpos = 0;
|
|
249
|
-
int i;
|
|
250
|
-
for (i=0; i<ARRAY_SIZE(old.keys); i++) {
|
|
251
|
-
u8 key = old.keys[i];
|
|
252
|
-
if (!key)
|
|
253
|
-
break;
|
|
254
|
-
int j;
|
|
255
|
-
for (j=0;; j++) {
|
|
256
|
-
if (j>=ARRAY_SIZE(data->keys)) {
|
|
257
|
-
// Key released.
|
|
258
|
-
procscankey(key, RELEASEBIT, data->modifiers);
|
|
259
|
-
if (i+1 >= ARRAY_SIZE(old.keys) || !old.keys[i+1])
|
|
260
|
-
// Last pressed key released - disable repeat.
|
|
261
|
-
old.repeatcount = 0xff;
|
|
262
|
-
break;
|
|
263
|
-
}
|
|
264
|
-
if (data->keys[j] == key) {
|
|
265
|
-
// Key still pressed.
|
|
266
|
-
data->keys[j] = 0;
|
|
267
|
-
old.keys[addpos++] = key;
|
|
268
|
-
break;
|
|
269
|
-
}
|
|
270
|
-
}
|
|
271
|
-
}
|
|
272
|
-
procmodkey(old.modifiers & ~data->modifiers, RELEASEBIT);
|
|
273
|
-
|
|
274
|
-
// Process new keys
|
|
275
|
-
procmodkey(data->modifiers & ~old.modifiers, 0);
|
|
276
|
-
old.modifiers = data->modifiers;
|
|
277
|
-
for (i=0; i<ARRAY_SIZE(data->keys); i++) {
|
|
278
|
-
u8 key = data->keys[i];
|
|
279
|
-
if (!key)
|
|
280
|
-
continue;
|
|
281
|
-
// New key pressed.
|
|
282
|
-
procscankey(key, 0, data->modifiers);
|
|
283
|
-
old.keys[addpos++] = key;
|
|
284
|
-
old.repeatcount = KEYREPEATWAITMS / KEYREPEATMS + 1;
|
|
285
|
-
}
|
|
286
|
-
if (addpos < ARRAY_SIZE(old.keys))
|
|
287
|
-
old.keys[addpos] = 0;
|
|
288
|
-
|
|
289
|
-
// Check for key repeat event.
|
|
290
|
-
if (addpos) {
|
|
291
|
-
if (!old.repeatcount)
|
|
292
|
-
procscankey(old.keys[addpos-1], 0, data->modifiers);
|
|
293
|
-
else if (old.repeatcount != 0xff)
|
|
294
|
-
old.repeatcount--;
|
|
295
|
-
}
|
|
296
|
-
|
|
297
|
-
// Update old keys
|
|
298
|
-
SET_LOW(LastUSBkey.data, old.data);
|
|
299
|
-
}
|
|
300
|
-
|
|
301
|
-
// Check if a USB keyboard event is pending and process it if so.
|
|
302
|
-
static void
|
|
303
|
-
usb_check_key(void)
|
|
304
|
-
{
|
|
305
|
-
if (! CONFIG_USB_KEYBOARD)
|
|
306
|
-
return;
|
|
307
|
-
struct usb_pipe *pipe = GET_GLOBAL(keyboard_pipe);
|
|
308
|
-
if (!pipe)
|
|
309
|
-
return;
|
|
310
|
-
|
|
311
|
-
for (;;) {
|
|
312
|
-
struct keyevent data;
|
|
313
|
-
int ret = usb_poll_intr(pipe, &data);
|
|
314
|
-
if (ret)
|
|
315
|
-
break;
|
|
316
|
-
handle_key(&data);
|
|
317
|
-
}
|
|
318
|
-
}
|
|
319
|
-
|
|
320
|
-
// Test if USB keyboard is active.
|
|
321
|
-
inline int
|
|
322
|
-
usb_kbd_active(void)
|
|
323
|
-
{
|
|
324
|
-
if (! CONFIG_USB_KEYBOARD)
|
|
325
|
-
return 0;
|
|
326
|
-
return GET_GLOBAL(keyboard_pipe) != NULL;
|
|
327
|
-
}
|
|
328
|
-
|
|
329
|
-
// Handle a ps2 style keyboard command.
|
|
330
|
-
inline int
|
|
331
|
-
usb_kbd_command(int command, u8 *param)
|
|
332
|
-
{
|
|
333
|
-
if (! CONFIG_USB_KEYBOARD)
|
|
334
|
-
return -1;
|
|
335
|
-
dprintf(9, "usb keyboard cmd=%x\n", command);
|
|
336
|
-
switch (command) {
|
|
337
|
-
case ATKBD_CMD_GETID:
|
|
338
|
-
// Return the id of a standard AT keyboard.
|
|
339
|
-
param[0] = 0xab;
|
|
340
|
-
param[1] = 0x83;
|
|
341
|
-
return 0;
|
|
342
|
-
default:
|
|
343
|
-
return -1;
|
|
344
|
-
}
|
|
345
|
-
}
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
/****************************************************************
|
|
349
|
-
* Mouse events
|
|
350
|
-
****************************************************************/
|
|
351
|
-
|
|
352
|
-
// Format of USB mouse event data
|
|
353
|
-
struct mouseevent {
|
|
354
|
-
u8 buttons;
|
|
355
|
-
u8 x, y;
|
|
356
|
-
u8 reserved[5];
|
|
357
|
-
};
|
|
358
|
-
|
|
359
|
-
// Process USB mouse data.
|
|
360
|
-
static void
|
|
361
|
-
handle_mouse(struct mouseevent *data)
|
|
362
|
-
{
|
|
363
|
-
dprintf(9, "Got mouse b=%x x=%x y=%x\n", data->buttons, data->x, data->y);
|
|
364
|
-
|
|
365
|
-
s8 x = data->x, y = -data->y;
|
|
366
|
-
u8 flag = ((data->buttons & 0x7) | (1<<3)
|
|
367
|
-
| (x & 0x80 ? (1<<4) : 0) | (y & 0x80 ? (1<<5) : 0));
|
|
368
|
-
process_mouse(flag);
|
|
369
|
-
process_mouse(x);
|
|
370
|
-
process_mouse(y);
|
|
371
|
-
}
|
|
372
|
-
|
|
373
|
-
// Check if a USB mouse event is pending and process it if so.
|
|
374
|
-
static void
|
|
375
|
-
usb_check_mouse(void)
|
|
376
|
-
{
|
|
377
|
-
if (! CONFIG_USB_MOUSE)
|
|
378
|
-
return;
|
|
379
|
-
struct usb_pipe *pipe = GET_GLOBAL(mouse_pipe);
|
|
380
|
-
if (!pipe)
|
|
381
|
-
return;
|
|
382
|
-
|
|
383
|
-
for (;;) {
|
|
384
|
-
struct mouseevent data;
|
|
385
|
-
int ret = usb_poll_intr(pipe, &data);
|
|
386
|
-
if (ret)
|
|
387
|
-
break;
|
|
388
|
-
handle_mouse(&data);
|
|
389
|
-
}
|
|
390
|
-
}
|
|
391
|
-
|
|
392
|
-
// Test if USB mouse is active.
|
|
393
|
-
inline int
|
|
394
|
-
usb_mouse_active(void)
|
|
395
|
-
{
|
|
396
|
-
if (! CONFIG_USB_MOUSE)
|
|
397
|
-
return 0;
|
|
398
|
-
return GET_GLOBAL(mouse_pipe) != NULL;
|
|
399
|
-
}
|
|
400
|
-
|
|
401
|
-
// Handle a ps2 style mouse command.
|
|
402
|
-
inline int
|
|
403
|
-
usb_mouse_command(int command, u8 *param)
|
|
404
|
-
{
|
|
405
|
-
if (! CONFIG_USB_MOUSE)
|
|
406
|
-
return -1;
|
|
407
|
-
dprintf(9, "usb mouse cmd=%x\n", command);
|
|
408
|
-
switch (command) {
|
|
409
|
-
case PSMOUSE_CMD_ENABLE:
|
|
410
|
-
case PSMOUSE_CMD_DISABLE:
|
|
411
|
-
case PSMOUSE_CMD_SETSCALE11:
|
|
412
|
-
return 0;
|
|
413
|
-
case PSMOUSE_CMD_SETSCALE21:
|
|
414
|
-
case PSMOUSE_CMD_SETRATE:
|
|
415
|
-
case PSMOUSE_CMD_SETRES:
|
|
416
|
-
// XXX
|
|
417
|
-
return 0;
|
|
418
|
-
case PSMOUSE_CMD_RESET_BAT:
|
|
419
|
-
case PSMOUSE_CMD_GETID:
|
|
420
|
-
// Return the id of a standard AT mouse.
|
|
421
|
-
param[0] = 0xaa;
|
|
422
|
-
param[1] = 0x00;
|
|
423
|
-
return 0;
|
|
424
|
-
|
|
425
|
-
case PSMOUSE_CMD_GETINFO:
|
|
426
|
-
param[0] = 0x00;
|
|
427
|
-
param[1] = 4;
|
|
428
|
-
param[2] = 100;
|
|
429
|
-
return 0;
|
|
430
|
-
|
|
431
|
-
default:
|
|
432
|
-
return -1;
|
|
433
|
-
}
|
|
434
|
-
}
|
|
435
|
-
|
|
436
|
-
// Check for USB events pending - called periodically from timer interrupt.
|
|
437
|
-
void
|
|
438
|
-
usb_check_event(void)
|
|
439
|
-
{
|
|
440
|
-
usb_check_key();
|
|
441
|
-
usb_check_mouse();
|
|
442
|
-
}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
#ifndef __USB_HID_H
|
|
2
|
-
#define __USB_HID_H
|
|
3
|
-
|
|
4
|
-
// usb-hid.c
|
|
5
|
-
struct usbdevice_s;
|
|
6
|
-
int usb_hid_setup(struct usbdevice_s *usbdev);
|
|
7
|
-
int usb_kbd_active(void);
|
|
8
|
-
int usb_kbd_command(int command, u8 *param);
|
|
9
|
-
int usb_mouse_active(void);
|
|
10
|
-
int usb_mouse_command(int command, u8 *param);
|
|
11
|
-
void usb_check_event(void);
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
/****************************************************************
|
|
15
|
-
* hid flags
|
|
16
|
-
****************************************************************/
|
|
17
|
-
|
|
18
|
-
#define USB_INTERFACE_SUBCLASS_BOOT 1
|
|
19
|
-
#define USB_INTERFACE_PROTOCOL_KEYBOARD 1
|
|
20
|
-
#define USB_INTERFACE_PROTOCOL_MOUSE 2
|
|
21
|
-
|
|
22
|
-
#define HID_REQ_GET_REPORT 0x01
|
|
23
|
-
#define HID_REQ_GET_IDLE 0x02
|
|
24
|
-
#define HID_REQ_GET_PROTOCOL 0x03
|
|
25
|
-
#define HID_REQ_SET_REPORT 0x09
|
|
26
|
-
#define HID_REQ_SET_IDLE 0x0A
|
|
27
|
-
#define HID_REQ_SET_PROTOCOL 0x0B
|
|
28
|
-
|
|
29
|
-
#endif // ush-hid.h
|