diff options
Diffstat (limited to 'src/VBox/Devices/PC/BIOS')
50 files changed, 69688 insertions, 0 deletions
diff --git a/src/VBox/Devices/PC/BIOS/Makefile.kmk b/src/VBox/Devices/PC/BIOS/Makefile.kmk new file mode 100644 index 00000000..15881995 --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/Makefile.kmk @@ -0,0 +1,200 @@ +# $Id: Makefile.kmk $ +## @file +# Sub-Makefile for the New BIOS ROM. +# + +# +# Copyright (C) 2012-2019 Oracle Corporation +# +# This file is part of VirtualBox Open Source Edition (OSE), as +# available from http://www.virtualbox.org. This file is free software; +# you can redistribute it and/or modify it under the terms of the GNU +# General Public License (GPL) as published by the Free Software +# Foundation, in version 2 as it comes in the "COPYING" file of the +# VirtualBox OSE distribution. VirtualBox OSE is distributed in the +# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +# + +SUB_DEPTH = ../../../../.. +include $(KBUILD_PATH)/subheader.kmk + + +ifdef VBOX_WITH_OPEN_WATCOM + + # + # VBoxPcBios - The PC BIOS. + # + MISCBINS += VBoxPcBios386 + VBoxPcBios386_TEMPLATE = VBoxBios + VBoxPcBios386_BLD_TYPE = release + VBoxPcBios386_CFLAGS = -3 + VBoxPcBios386_DEFS = \ + VBOX_PC_BIOS \ + VBOX_LANBOOT_SEG=0xE200 \ + VBOX_WITH_SCSI \ + VBOX_WITH_AHCI \ + VBOX_BIOS_CPU=80386 + #VBoxPcBios386_DEFS.debug = DEBUG_ATA DEBUG_POST DEBUG_INT13 + VBoxPcBios386_LDFLAGS = \ + output raw offset=0xF0000 \ + order \ + clname DATA segaddr=0xF000 \ + segment _DATA \ + clname CODE \ + segment _TEXT segaddr=0xF000 offset=0x1600 \ + segment BIOS32 segaddr=0xF000 offset=0xDA00 \ + segment BIOSSEG segaddr=0xF000 offset=0xE000 + VBoxPcBios386_SOURCES = \ + post.c \ + bios.c \ + print.c \ + ata.c \ + floppy.c \ + floppyt.c \ + eltorito.c \ + boot.c \ + keyboard.c \ + disk.c \ + serial.c \ + system.c \ + invop.c \ + timepci.c \ + ps2mouse.c \ + parallel.c \ + logo.c \ + scsi.c \ + ahci.c \ + apm.c \ + pcibios.c \ + pciutil.c \ + vds.c \ + ../../BiosCommonCode/__U4M.asm \ + ../../BiosCommonCode/__U4D.asm \ + ../../BiosCommonCode/__U8RS.asm \ + ../../BiosCommonCode/__U8LS.asm \ + ../../BiosCommonCode/fmemset.asm \ + ../../BiosCommonCode/fmemcpy.asm \ + pcibio32.asm \ + apm_pm.asm \ + $(VBoxPcBios32_0_OUTDIR)/VBoxPcBios32.lib \ + orgs.asm + #$(VBoxPcBios32_1_TARGET) - reference is lost when extending the target. weird. + + # For 32-bit C code in PC BIOS. + LIBRARIES += VBoxPcBios32 + VBoxPcBios32_TEMPLATE = VBoxBios32Lib + VBoxPcBios32_SOURCES = \ + pci32.c + + ../../BiosCommonCode/DoUInt32Div.c_CFLAGS = -mc # asm.h and uint32.h both require far data pointers by default. + + MISCBINS += VBoxPcBios286 + VBoxPcBios286_EXTENDS = VBoxPcBios386 + VBoxPcBios286_CFLAGS = -2 + VBoxPcBios286_DEFS = $(filter-out VBOX_BIOS_CPU=80386,$(VBoxPcBios386_DEFS)) VBOX_BIOS_CPU=80286 + VBoxPcBios286_SOURCES = $(VBoxPcBios386_SOURCES) \ + ../../BiosCommonCode/DoUInt32Div.c \ + ../../BiosCommonCode/ASMBitLastSetU16.asm + + MISCBINS += VBoxPcBios8086 + VBoxPcBios8086_EXTENDS = VBoxPcBios386 + VBoxPcBios8086_CFLAGS = -0 + VBoxPcBios8086_DEFS = $(filter-out VBOX_BIOS_CPU=80386,$(VBoxPcBios386_DEFS)) VBOX_BIOS_CPU=8086 + VBoxPcBios8086_SOURCES = $(VBoxPcBios386_SOURCES) \ + ../../BiosCommonCode/DoUInt32Div.c \ + ../../BiosCommonCode/ASMBitLastSetU16.asm + + + # + # Updates the alternative source files. + # + define def_VBoxPcBiosUpdateAltSource + + $$(PATH_SUB_CURRENT)/VBoxBiosAlternative$(1).asm +| $$(PATH_SUB_CURRENT)/VBoxBiosAlternative$(1).md5sum: \ + $$$$(VBoxPcBios$(1)_1_TARGET) \ + $$(VBOX_MAKE_ALTERNATIVE_SOURCE) \ + $$(VBOX_VBOXCMP) + if1of ($(KBUILD_TYPE), release) + $$(VBOX_MAKE_ALTERNATIVE_SOURCE) \ + --bios-image $$< \ + --bios-map $$(basename $$<).map \ + --bios-sym $$(basename $$<).sym \ + --bios-type system \ + --output $$(VBoxPcBios$(1)_0_OUTDIR)/VBoxBiosAlternative$(1).asm + $$(QUIET)yasm -f bin -o $$(VBoxPcBios$(1)_0_OUTDIR)/VBoxBiosAlternative$(1).bin $$(VBoxPcBios$(1)_0_OUTDIR)/VBoxBiosAlternative$(1).asm + $$(VBOX_VBOXCMP) $$< $$(VBoxPcBios$(1)_0_OUTDIR)/VBoxBiosAlternative$(1).bin + $$(CP) --changed -- $$(VBoxPcBios$(1)_0_OUTDIR)/VBoxBiosAlternative$(1).asm $$(PATH_ROOT)/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative$(1).asm + $$(REDIRECT) -C $$(dir $$(VBoxPcBios$(1)_1_TARGET)) -- \ + $$(MD5SUM_EXT) -bo $$(VBoxPcBios$(1)_0_OUTDIR)/VBoxBiosAlternative$(1).md5sum $$(notdir $$(VBoxPcBios$(1)_1_TARGET)) + $$(CP) --changed -- $$(VBoxPcBios$(1)_0_OUTDIR)/VBoxBiosAlternative$(1).md5sum $$(PATH_ROOT)/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative$(1).md5sum + $$(RM) -f -- $$(VBoxPcBios$(1)_0_OUTDIR)/VBoxBiosAlternative$(1).asm $$(VBoxPcBios$(1)_0_OUTDIR)/VBoxBiosAlternative.bin $$(VBoxPcBios$(1)_0_OUTDIR)/VBoxBiosAlternative$(1).md5sum + else + $$(QUIET)$$(ECHO) "Fatal error: Can only update VBoxBiosAlternative$(1).asm/md5sum with a release build." + $$(QUIET)exit 1 + endif + + endef + + $(evalcall2 def_VBoxPcBiosUpdateAltSource,386) + $(evalcall2 def_VBoxPcBiosUpdateAltSource,286) + $(evalcall2 def_VBoxPcBiosUpdateAltSource,8086) + + update-pcbios-source: \ + $(PATH_SUB_CURRENT)/VBoxBiosAlternative386.asm \ + $(PATH_SUB_CURRENT)/VBoxBiosAlternative286.asm \ + $(PATH_SUB_CURRENT)/VBoxBiosAlternative8086.asm + +endif # VBOX_WITH_OPEN_WATCOM + + +# +# The library containing the PC BIOS image. +# +LIBRARIES += PcBiosBin +PcBiosBin_TEMPLATE = VBOXR3 +PcBiosBin_DEFS = IN_VBOXDD2 + +define def_VBoxPcBiosBin + PcBiosBin_CLEAN += $$(PcBiosBin_0_OUTDIR)/PcBiosBin$(1).c + PcBiosBin_SOURCES += $$(PcBiosBin_0_OUTDIR)/PcBiosBin$(1).c + + ifdef VBOX_WITH_OPEN_WATCOM + $$$$(PcBiosBin_0_OUTDIR)/PcBiosBin$(1).c: $$$$(VBoxPcBios$(1)_1_TARGET) $$(VBOX_BIN2C) | $$$$(dir $$$$@) + $$(call MSG_TOOL,bin2c,PcBiosBin,$$<,$$@) + $$(QUIET)$$(VBOX_BIN2C) -min 64 -max 256 -mask 0xffff -ascii -export PcBiosBinary$(1) $$< $$@ + else + PcBiosBin_CLEAN += $$(PcBiosBin_0_OUTDIR)/VBoxPcBios$(1).rom + + $$$$(PcBiosBin_0_OUTDIR)/PcBiosBin$(1).c + $$$$(PcBiosBin_0_OUTDIR)/VBoxPcBios$(1).rom: \ + $$(PATH_SUB_CURRENT)/VBoxBiosAlternative$(1).asm \ + $$(PATH_SUB_CURRENT)/VBoxBiosAlternative$(1).md5sum \ + $$(VBOX_BIN2C) | $$$$(dir $$$$@) + $$(call MSG_TOOL,bin2c,PcBiosBin,$$<,$$@) + $$(QUIET)yasm -f bin -o $$(PcBiosBin_0_OUTDIR)/VBoxPcBios$(1).rom $$< + $$(QUIET)$$(REDIRECT) -C $$(PcBiosBin_0_OUTDIR) -- \ + $$(MD5SUM_EXT) -c $$(basename $$<).md5sum + $$(QUIET)$$(VBOX_BIN2C) -min 64 -max 256 -mask 0xffff -ascii -export PcBiosBinary$(1) $$(PcBiosBin_0_OUTDIR)/VBoxPcBios$(1).rom $$@ + $$(QUIET)$$(RM) -f -- $$$$(PcBiosBin_0_OUTDIR)/VBoxPcBios$(1).rom + endif +endef +$(evalcall2 def_VBoxPcBiosBin,386) +$(evalcall2 def_VBoxPcBiosBin,286) +$(evalcall2 def_VBoxPcBiosBin,8086) + + + +ifdef VBOX_WITH_OPEN_WATCOM + # + # Install the symbol file for the BIOS. + # + INSTALLS += VBoxPcBiosSym + VBoxPcBiosSym_TEMPLATE = VBoxDbgSyms + VBoxPcBiosSym_SOURCES = \ + $(basename $(VBoxPcBios386_1_TARGET)).sym \ + $(basename $(VBoxPcBios286_1_TARGET)).sym \ + $(basename $(VBoxPcBios8086_1_TARGET)).sym +endif + + +include $(FILE_KBUILD_SUB_FOOTER) + diff --git a/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative286.asm b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative286.asm new file mode 100644 index 00000000..f212565d --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative286.asm @@ -0,0 +1,17427 @@ +; $Id: VBoxBiosAlternative286.asm $ +;; @file +; Auto Generated source file. Do not edit. +; + +; +; Source file: post.c +; +; $Id: VBoxBiosAlternative286.asm $ +; BIOS POST routines. Used only during initialization. +; +; +; +; Copyright (C) 2004-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + +; +; Source file: bios.c +; +; $Id: VBoxBiosAlternative286.asm $ +; PC BIOS - ??? +; +; +; +; Copyright (C) 2006-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; -------------------------------------------------------------------- +; +; This code is based on: +; +; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment +; +; Copyright (C) 2002 MandrakeSoft S.A. +; +; MandrakeSoft S.A. +; 43, rue d'Aboukir +; 75002 Paris - France +; http://www.linux-mandrake.com/ +; http://www.mandrakesoft.com/ +; +; This library is free software; you can redistribute it and/or +; modify it under the terms of the GNU Lesser General Public +; License as published by the Free Software Foundation; either +; version 2 of the License, or (at your option) any later version. +; +; This library is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +; Lesser General Public License for more details. +; +; You should have received a copy of the GNU Lesser General Public +; License along with this library; if not, write to the Free Software +; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +; + +; +; Source file: print.c +; +; $Id: VBoxBiosAlternative286.asm $ +; PC BIOS - ??? +; +; +; +; Copyright (C) 2006-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; -------------------------------------------------------------------- +; +; This code is based on: +; +; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment +; +; Copyright (C) 2002 MandrakeSoft S.A. +; +; MandrakeSoft S.A. +; 43, rue d'Aboukir +; 75002 Paris - France +; http://www.linux-mandrake.com/ +; http://www.mandrakesoft.com/ +; +; This library is free software; you can redistribute it and/or +; modify it under the terms of the GNU Lesser General Public +; License as published by the Free Software Foundation; either +; version 2 of the License, or (at your option) any later version. +; +; This library is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +; Lesser General Public License for more details. +; +; You should have received a copy of the GNU Lesser General Public +; License along with this library; if not, write to the Free Software +; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +; + +; +; Source file: ata.c +; +; $Id: VBoxBiosAlternative286.asm $ +; PC BIOS - ??? +; +; +; +; Copyright (C) 2006-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; -------------------------------------------------------------------- +; +; This code is based on: +; +; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment +; +; Copyright (C) 2002 MandrakeSoft S.A. +; +; MandrakeSoft S.A. +; 43, rue d'Aboukir +; 75002 Paris - France +; http://www.linux-mandrake.com/ +; http://www.mandrakesoft.com/ +; +; This library is free software; you can redistribute it and/or +; modify it under the terms of the GNU Lesser General Public +; License as published by the Free Software Foundation; either +; version 2 of the License, or (at your option) any later version. +; +; This library is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +; Lesser General Public License for more details. +; +; You should have received a copy of the GNU Lesser General Public +; License along with this library; if not, write to the Free Software +; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +; + +; +; Source file: floppy.c +; +; $Id: VBoxBiosAlternative286.asm $ +; PC BIOS - ??? +; +; +; +; Copyright (C) 2006-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; -------------------------------------------------------------------- +; +; This code is based on: +; +; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment +; +; Copyright (C) 2002 MandrakeSoft S.A. +; +; MandrakeSoft S.A. +; 43, rue d'Aboukir +; 75002 Paris - France +; http://www.linux-mandrake.com/ +; http://www.mandrakesoft.com/ +; +; This library is free software; you can redistribute it and/or +; modify it under the terms of the GNU Lesser General Public +; License as published by the Free Software Foundation; either +; version 2 of the License, or (at your option) any later version. +; +; This library is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +; Lesser General Public License for more details. +; +; You should have received a copy of the GNU Lesser General Public +; License along with this library; if not, write to the Free Software +; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +; + +; +; Source file: floppyt.c +; +; $Id: VBoxBiosAlternative286.asm $ +; Floppy drive tables. +; +; +; +; Copyright (C) 2011-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + +; +; Source file: eltorito.c +; +; $Id: VBoxBiosAlternative286.asm $ +; PC BIOS - ??? +; +; +; +; Copyright (C) 2006-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; -------------------------------------------------------------------- +; +; This code is based on: +; +; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment +; +; Copyright (C) 2002 MandrakeSoft S.A. +; +; MandrakeSoft S.A. +; 43, rue d'Aboukir +; 75002 Paris - France +; http://www.linux-mandrake.com/ +; http://www.mandrakesoft.com/ +; +; This library is free software; you can redistribute it and/or +; modify it under the terms of the GNU Lesser General Public +; License as published by the Free Software Foundation; either +; version 2 of the License, or (at your option) any later version. +; +; This library is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +; Lesser General Public License for more details. +; +; You should have received a copy of the GNU Lesser General Public +; License along with this library; if not, write to the Free Software +; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +; + +; +; Source file: boot.c +; +; $Id: VBoxBiosAlternative286.asm $ +; PC BIOS - ??? +; +; +; +; Copyright (C) 2006-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; -------------------------------------------------------------------- +; +; This code is based on: +; +; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment +; +; Copyright (C) 2002 MandrakeSoft S.A. +; +; MandrakeSoft S.A. +; 43, rue d'Aboukir +; 75002 Paris - France +; http://www.linux-mandrake.com/ +; http://www.mandrakesoft.com/ +; +; This library is free software; you can redistribute it and/or +; modify it under the terms of the GNU Lesser General Public +; License as published by the Free Software Foundation; either +; version 2 of the License, or (at your option) any later version. +; +; This library is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +; Lesser General Public License for more details. +; +; You should have received a copy of the GNU Lesser General Public +; License along with this library; if not, write to the Free Software +; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +; + +; +; Source file: keyboard.c +; +; $Id: VBoxBiosAlternative286.asm $ +; PC BIOS - ??? +; +; +; +; Copyright (C) 2006-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; -------------------------------------------------------------------- +; +; This code is based on: +; +; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment +; +; Copyright (C) 2002 MandrakeSoft S.A. +; +; MandrakeSoft S.A. +; 43, rue d'Aboukir +; 75002 Paris - France +; http://www.linux-mandrake.com/ +; http://www.mandrakesoft.com/ +; +; This library is free software; you can redistribute it and/or +; modify it under the terms of the GNU Lesser General Public +; License as published by the Free Software Foundation; either +; version 2 of the License, or (at your option) any later version. +; +; This library is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +; Lesser General Public License for more details. +; +; You should have received a copy of the GNU Lesser General Public +; License along with this library; if not, write to the Free Software +; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +; + +; +; Source file: disk.c +; +; $Id: VBoxBiosAlternative286.asm $ +; PC BIOS - ??? +; +; +; +; Copyright (C) 2006-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; -------------------------------------------------------------------- +; +; This code is based on: +; +; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment +; +; Copyright (C) 2002 MandrakeSoft S.A. +; +; MandrakeSoft S.A. +; 43, rue d'Aboukir +; 75002 Paris - France +; http://www.linux-mandrake.com/ +; http://www.mandrakesoft.com/ +; +; This library is free software; you can redistribute it and/or +; modify it under the terms of the GNU Lesser General Public +; License as published by the Free Software Foundation; either +; version 2 of the License, or (at your option) any later version. +; +; This library is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +; Lesser General Public License for more details. +; +; You should have received a copy of the GNU Lesser General Public +; License along with this library; if not, write to the Free Software +; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +; + +; +; Source file: serial.c +; +; $Id: VBoxBiosAlternative286.asm $ +; PC BIOS - ??? +; +; +; +; Copyright (C) 2006-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; -------------------------------------------------------------------- +; +; This code is based on: +; +; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment +; +; Copyright (C) 2002 MandrakeSoft S.A. +; +; MandrakeSoft S.A. +; 43, rue d'Aboukir +; 75002 Paris - France +; http://www.linux-mandrake.com/ +; http://www.mandrakesoft.com/ +; +; This library is free software; you can redistribute it and/or +; modify it under the terms of the GNU Lesser General Public +; License as published by the Free Software Foundation; either +; version 2 of the License, or (at your option) any later version. +; +; This library is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +; Lesser General Public License for more details. +; +; You should have received a copy of the GNU Lesser General Public +; License along with this library; if not, write to the Free Software +; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +; + +; +; Source file: system.c +; +; $Id: VBoxBiosAlternative286.asm $ +; PC BIOS - ??? +; +; +; +; Copyright (C) 2006-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; -------------------------------------------------------------------- +; +; This code is based on: +; +; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment +; +; Copyright (C) 2002 MandrakeSoft S.A. +; +; MandrakeSoft S.A. +; 43, rue d'Aboukir +; 75002 Paris - France +; http://www.linux-mandrake.com/ +; http://www.mandrakesoft.com/ +; +; This library is free software; you can redistribute it and/or +; modify it under the terms of the GNU Lesser General Public +; License as published by the Free Software Foundation; either +; version 2 of the License, or (at your option) any later version. +; +; This library is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +; Lesser General Public License for more details. +; +; You should have received a copy of the GNU Lesser General Public +; License along with this library; if not, write to the Free Software +; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +; + +; +; Source file: invop.c +; +; $Id: VBoxBiosAlternative286.asm $ +; Real mode invalid opcode handler. +; +; +; +; Copyright (C) 2013-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + +; +; Source file: timepci.c +; +; +; Copyright (C) 2006-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; -------------------------------------------------------------------- +; +; This code is based on: +; +; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment +; +; Copyright (C) 2002 MandrakeSoft S.A. +; +; MandrakeSoft S.A. +; 43, rue d'Aboukir +; 75002 Paris - France +; http://www.linux-mandrake.com/ +; http://www.mandrakesoft.com/ +; +; This library is free software; you can redistribute it and/or +; modify it under the terms of the GNU Lesser General Public +; License as published by the Free Software Foundation; either +; version 2 of the License, or (at your option) any later version. +; +; This library is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +; Lesser General Public License for more details. +; +; You should have received a copy of the GNU Lesser General Public +; License along with this library; if not, write to the Free Software +; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +; + +; +; Source file: ps2mouse.c +; +; $Id: VBoxBiosAlternative286.asm $ +; PC BIOS - ??? +; +; +; +; Copyright (C) 2006-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; -------------------------------------------------------------------- +; +; This code is based on: +; +; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment +; +; Copyright (C) 2002 MandrakeSoft S.A. +; +; MandrakeSoft S.A. +; 43, rue d'Aboukir +; 75002 Paris - France +; http://www.linux-mandrake.com/ +; http://www.mandrakesoft.com/ +; +; This library is free software; you can redistribute it and/or +; modify it under the terms of the GNU Lesser General Public +; License as published by the Free Software Foundation; either +; version 2 of the License, or (at your option) any later version. +; +; This library is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +; Lesser General Public License for more details. +; +; You should have received a copy of the GNU Lesser General Public +; License along with this library; if not, write to the Free Software +; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +; + +; +; Source file: parallel.c +; +; $Id: VBoxBiosAlternative286.asm $ +; PC BIOS - ??? +; +; +; +; Copyright (C) 2006-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; -------------------------------------------------------------------- +; +; This code is based on: +; +; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment +; +; Copyright (C) 2002 MandrakeSoft S.A. +; +; MandrakeSoft S.A. +; 43, rue d'Aboukir +; 75002 Paris - France +; http://www.linux-mandrake.com/ +; http://www.mandrakesoft.com/ +; +; This library is free software; you can redistribute it and/or +; modify it under the terms of the GNU Lesser General Public +; License as published by the Free Software Foundation; either +; version 2 of the License, or (at your option) any later version. +; +; This library is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +; Lesser General Public License for more details. +; +; You should have received a copy of the GNU Lesser General Public +; License along with this library; if not, write to the Free Software +; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +; + +; +; Source file: logo.c +; +; $Id: VBoxBiosAlternative286.asm $ +; Stuff for drawing the BIOS logo. +; +; +; +; Copyright (C) 2004-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + +; +; Source file: scsi.c +; +; $Id: VBoxBiosAlternative286.asm $ +; SCSI host adapter driver to boot from SCSI disks +; +; +; +; Copyright (C) 2004-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + +; +; Source file: ahci.c +; +; $Id: VBoxBiosAlternative286.asm $ +; AHCI host adapter driver to boot from SATA disks. +; +; +; +; Copyright (C) 2011-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + +; +; Source file: apm.c +; +; $Id: VBoxBiosAlternative286.asm $ +; APM BIOS support. Implements APM version 1.2. +; +; +; +; Copyright (C) 2004-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + +; +; Source file: pcibios.c +; +; $Id: VBoxBiosAlternative286.asm $ +; PCI BIOS support. +; +; +; +; Copyright (C) 2004-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + +; +; Source file: pciutil.c +; +; $Id: VBoxBiosAlternative286.asm $ +; Utility routines for calling the PCI BIOS. +; +; +; +; Copyright (C) 2011-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + +; +; Source file: vds.c +; +; $Id: VBoxBiosAlternative286.asm $ +; Utility routines for calling the Virtual DMA Services. +; +; +; +; Copyright (C) 2011-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + +; +; Source file: __U4M.asm +; +; $Id: VBoxBiosAlternative286.asm $ +; Compiler support routines. +; +; +; +; Copyright (C) 2012-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; + +; +; Source file: __U4D.asm +; +; $Id: VBoxBiosAlternative286.asm $ +; Compiler support routines. +; +; +; +; Copyright (C) 2012-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; + +; +; Source file: __U8RS.asm +; +; $Id: VBoxBiosAlternative286.asm $ +; Compiler support routines. +; +; +; +; Copyright (C) 2012-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; + +; +; Source file: __U8LS.asm +; +; $Id: VBoxBiosAlternative286.asm $ +; Compiler support routines. +; +; +; +; Copyright (C) 2012-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; + +; +; Source file: fmemset.asm +; +; $Id: VBoxBiosAlternative286.asm $ +; Compiler support routines. +; +; +; +; Copyright (C) 2012-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; + +; +; Source file: fmemcpy.asm +; +; $Id: VBoxBiosAlternative286.asm $ +; Compiler support routines. +; +; +; +; Copyright (C) 2012-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; + +; +; Source file: pcibio32.asm +; +; $Id: VBoxBiosAlternative286.asm $ +; BIOS32 service directory and 32-bit PCI BIOS entry point +; +; +; +; Copyright (C) 2006-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; -------------------------------------------------------------------- + +; +; Source file: apm_pm.asm +; +; $Id: +; Protected-mode APM implementation. +; +; +; +; Copyright (C) 2006-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; + +; +; Source file: orgs.asm +; +; $Id: VBoxBiosAlternative286.asm $ +; ??? +; +; +; +; Copyright (C) 2006-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; -------------------------------------------------------------------- +; +; This code is based on: +; +; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment +; +; Copyright (C) 2002 MandrakeSoft S.A. +; +; MandrakeSoft S.A. +; 43, rue d'Aboukir +; 75002 Paris - France +; http://www.linux-mandrake.com/ +; http://www.mandrakesoft.com/ +; +; This library is free software; you can redistribute it and/or +; modify it under the terms of the GNU Lesser General Public +; License as published by the Free Software Foundation; either +; version 2 of the License, or (at your option) any later version. +; +; This library is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +; Lesser General Public License for more details. +; +; You should have received a copy of the GNU Lesser General Public +; License along with this library; if not, write to the Free Software +; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +; + +; +; Source file: DoUInt32Div.c +; +; $Id: VBoxBiosAlternative286.asm $ +; AHCI host adapter driver to boot from SATA disks. +; +; +; +; Copyright (C) 2011-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + +; +; Source file: ASMBitLastSetU16.asm +; +; $Id: VBoxBiosAlternative286.asm $ +; BiosCommonCode - ASMBitLastSetU16() - borrowed from IPRT. +; +; +; +; Copyright (C) 2006-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; + +; +; Source file: pci32.c +; +; $Id: VBoxBiosAlternative286.asm $ +; 32-bit PCI BIOS wrapper. +; +; +; +; Copyright (C) 2004-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + + + + +section _DATA progbits vstart=0x0 align=1 ; size=0xb0 class=DATA group=DGROUP + ; disGetNextSymbol 0xf0000 LB 0xb0 -> off=0x0 cb=000000000000005b uValue=00000000000f0000 '_fd_parm' +_fd_parm: ; 0xf0000 LB 0x5b + db 0dfh, 002h, 025h, 002h, 009h, 02ah, 0ffh, 050h, 0f6h, 00fh, 008h, 027h, 080h, 0dfh, 002h, 025h + db 002h, 009h, 02ah, 0ffh, 050h, 0f6h, 00fh, 008h, 027h, 040h, 0dfh, 002h, 025h, 002h, 00fh, 01bh + db 0ffh, 054h, 0f6h, 00fh, 008h, 04fh, 000h, 0dfh, 002h, 025h, 002h, 009h, 02ah, 0ffh, 050h, 0f6h + db 00fh, 008h, 04fh, 080h, 0afh, 002h, 025h, 002h, 012h, 01bh, 0ffh, 06ch, 0f6h, 00fh, 008h, 04fh + db 000h, 0afh, 002h, 025h, 002h, 024h, 01bh, 0ffh, 054h, 0f6h, 00fh, 008h, 04fh, 0c0h, 0afh, 002h + db 025h, 002h, 0ffh, 01bh, 0ffh, 054h, 0f6h, 00fh, 008h, 0ffh, 000h + ; disGetNextSymbol 0xf005b LB 0x55 -> off=0x0 cb=000000000000000f uValue=00000000000f005b '_fd_map' +_fd_map: ; 0xf005b LB 0xf + db 001h, 000h, 002h, 002h, 003h, 003h, 004h, 004h, 005h, 005h, 00eh, 006h, 00fh, 006h, 000h + ; disGetNextSymbol 0xf006a LB 0x46 -> off=0x0 cb=000000000000000c uValue=00000000000f006a '_pktacc' +_pktacc: ; 0xf006a LB 0xc + db 000h, 000h, 000h, 000h, 000h, 000h, 0f3h, 02ah, 053h, 07ch, 00dh, 08ch + ; disGetNextSymbol 0xf0076 LB 0x3a -> off=0x0 cb=000000000000000c uValue=00000000000f0076 '_softrst' +_softrst: ; 0xf0076 LB 0xc + db 000h, 000h, 000h, 000h, 000h, 000h, 078h, 02dh, 03bh, 03bh, 03bh, 03bh + ; disGetNextSymbol 0xf0082 LB 0x2e -> off=0x0 cb=000000000000002e uValue=00000000000f0082 '_dskacc' +_dskacc: ; 0xf0082 LB 0x2e + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 0e3h, 029h, 098h, 02ah, 000h, 000h, 000h, 000h + db 093h, 07ah, 073h, 07bh, 0dfh, 08ah, 087h, 08bh, 000h, 000h, 000h, 000h, 000h, 000h, 05fh, 033h + db 032h, 05fh, 000h, 0dah, 00fh, 000h, 000h, 001h, 0f3h, 000h, 000h, 000h, 000h, 000h + +section CONST progbits vstart=0xb0 align=1 ; size=0xcde class=DATA group=DGROUP + ; disGetNextSymbol 0xf00b0 LB 0xcde -> off=0xcde cb=0000000000000000 uValue=00000000000f0d8e 'bios_cvs_version_string' + db 'NMI Handler called', 00ah, 000h + db 'INT18: BOOT FAILURE', 00ah, 000h + db '%s', 00ah, 000h, 000h + db 'FATAL: ', 000h + db 'bios_printf: unknown %ll format', 00ah, 000h + db 'bios_printf: unknown format', 00ah, 000h + db 'ata-detect: Failed to detect ATA device', 00ah, 000h + db 'ata%d-%d: PCHS=%u/%u/%u LCHS=%u/%u/%u', 00ah, 000h + db 'ata-detect: Failed to detect ATAPI device', 00ah, 000h + db ' slave', 000h + db 'master', 000h + db 'ata%d %s: ', 000h + db '%c', 000h + db ' ATA-%d Hard-Disk (%lu MBytes)', 00ah, 000h + db ' ATAPI-%d CD-ROM/DVD-ROM', 00ah, 000h + db ' ATAPI-%d Device', 00ah, 000h + db 'ata%d %s: Unknown device', 00ah, 000h + db 'ata_cmd_packet', 000h + db '%s: DATA_OUT not supported yet', 00ah, 000h + db 'set_diskette_current_cyl: drive > 1', 00ah, 000h + db 'int13_diskette_function', 000h + db '%s: drive>1 || head>1 ...', 00ah, 000h + db '%s: ctrl not ready', 00ah, 000h + db '%s: write error', 00ah, 000h + db '%s: bad floppy type', 00ah, 000h + db '%s: unsupported AH=%02x', 00ah, 000h, 000h + db 'int13_eltorito', 000h + db '%s: call with AX=%04x not implemented.', 00ah, 000h + db '%s: unsupported AH=%02x', 00ah, 000h + db 'int13_cdemu', 000h + db '%s: function %02x, emulation not active for DL= %02x', 00ah, 000h + db '%s: function %02x, error %02x !', 00ah, 000h + db '%s: function %02x. Can', 027h, 't use 64bits lba', 00ah, 000h + db '%s: function %02x, status %02x !', 00ah, 000h + db '%s: function AH=%02x unsupported, returns fail', 00ah, 000h + db 'int13_cdrom', 000h + db '%s: function %02x, ELDL out of range %02x', 00ah, 000h + db '%s: function %02x, unmapped device for ELDL=%02x', 00ah, 000h, 000h + db 'Booting from %s...', 00ah, 000h + db 'Boot from %s failed', 00ah, 000h + db 'Boot from %s %d failed', 00ah, 000h + db 'No bootable medium found! System halted.', 00ah, 000h + db 'Could not read from the boot medium! System halted.', 00ah, 000h + db 'CDROM boot failure code : %04x', 00ah, 000h + db 'Boot : bseqnr=%d, bootseq=%x', 00dh, 00ah, 000h, 000h + db 'Keyboard error:%u', 00ah, 000h + db 'KBD: int09 handler: AL=0', 00ah, 000h + db 'KBD: int09h_handler(): unknown scancode read: 0x%02x!', 00ah, 000h + db 'KBD: int09h_handler(): scancode & asciicode are zero?', 00ah, 000h + db 'KBD: int16h: out of keyboard input', 00ah, 000h + db 'KBD: unsupported int 16h function %02x', 00ah, 000h + db 'AX=%04x BX=%04x CX=%04x DX=%04x ', 00ah, 000h, 000h + db 'int13_harddisk', 000h + db '%s: function %02x, ELDL out of range %02x', 00ah, 000h + db '%s: function %02x, unmapped device for ELDL=%02x', 00ah, 000h + db '%s: function %02x, count out of range!', 00ah, 000h + db '%s: function %02x, disk %02x, parameters out of range %04x/%04x/%04x!', 00ah + db 000h + db '%s: function %02x, error %02x !', 00ah, 000h + db 'format disk track called', 00ah, 000h + db '%s: function %02xh unimplemented, returns success', 00ah, 000h + db '%s: function %02xh unsupported, returns fail', 00ah, 000h + db 'int13_harddisk_ext', 000h + db '%s: function %02x. LBA out of range', 00ah, 000h, 000h + db 'int15: Func 24h, subfunc %02xh, A20 gate control not supported', 00ah, 000h + db '*** int 15h function AH=bf not yet supported!', 00ah, 000h + db 'EISA BIOS not present', 00ah, 000h + db '*** int 15h function AX=%04x, BX=%04x not yet supported!', 00ah, 000h + db 'sendmouse', 000h + db 'setkbdcomm', 000h + db 'Mouse reset returned %02x (should be ack)', 00ah, 000h + db 'Mouse status returned %02x (should be ack)', 00ah, 000h + db 'INT 15h C2 AL=6, BH=%02x', 00ah, 000h + db 'INT 15h C2 default case entered', 00ah, 000h, 000h + db 'Key pressed: %x', 00ah, 000h + db 00ah, 00ah, ' AHCI controller:', 000h + db 00ah, ' %d) Hard disk', 000h + db 00ah, 00ah, ' SCSI controller:', 000h + db ' IDE controller:', 000h + db 00ah, 00ah, 'AHCI controller:', 00ah, 000h + db 00ah, ' %d) ', 000h + db 'Secondary ', 000h + db 'Primary ', 000h + db 'Slave', 000h + db 'Master', 000h + db 'No hard disks found', 000h + db 00ah, 000h + db 'Press F12 to select boot device.', 00ah, 000h + db 00ah, 'VirtualBox temporary boot device selection', 00ah, 00ah, 'Detected H' + db 'ard disks:', 00ah, 00ah, 000h + db 00ah, 'Other boot devices:', 00ah, ' f) Floppy', 00ah, ' c) CD-ROM', 00ah + db ' l) LAN', 00ah, 00ah, ' b) Continue booting', 00ah, 000h + db 'Delaying boot for %d seconds:', 000h + db ' %d', 000h, 000h + db 'scsi_read_sectors', 000h + db '%s: device_id out of range %d', 00ah, 000h + db 'scsi_write_sectors', 000h + db 'scsi_cmd_packet', 000h + db '%s: DATA_OUT not supported yet', 00ah, 000h + db 'scsi_enumerate_attached_devices', 000h + db '%s: SCSI_INQUIRY failed', 00ah, 000h + db '%s: SCSI_READ_CAPACITY failed', 00ah, 000h + db 'Disk %d has an unsupported sector size of %u', 00ah, 000h + db 'SCSI %d-ID#%d: LCHS=%lu/%u/%u 0x%llx sectors', 00ah, 000h + db 'SCSI %d-ID#%d: CD/DVD-ROM', 00ah, 000h, 000h + db 'ahci_read_sectors', 000h + db '%s: device_id out of range %d', 00ah, 000h + db 'ahci_write_sectors', 000h + db 'ahci_cmd_packet', 000h + db '%s: DATA_OUT not supported yet', 00ah, 000h + db 'AHCI %d-P#%d: PCHS=%u/%u/%u LCHS=%u/%u/%u 0x%llx sectors', 00ah, 000h + db 'Standby', 000h + db 'Suspend', 000h + db 'Shutdown', 000h + db 'APM: Unsupported function AX=%04X BX=%04X called', 00ah, 000h, 000h + db 'PCI: Unsupported function AX=%04X BX=%04X called', 00ah, 000h + +section CONST2 progbits vstart=0xd8e align=1 ; size=0x3fa class=DATA group=DGROUP + ; disGetNextSymbol 0xf0d8e LB 0x3fa -> off=0x0 cb=0000000000000012 uValue=00000000000f0d8e 'bios_cvs_version_string' +bios_cvs_version_string: ; 0xf0d8e LB 0x12 + db 'VirtualBox 6.0.4', 000h, 000h + ; disGetNextSymbol 0xf0da0 LB 0x3e8 -> off=0x0 cb=0000000000000008 uValue=00000000000f0da0 '_bios_prefix_string' +_bios_prefix_string: ; 0xf0da0 LB 0x8 + db 'BIOS: ', 000h, 000h + ; disGetNextSymbol 0xf0da8 LB 0x3e0 -> off=0x0 cb=0000000000000006 uValue=00000000000f0da8 'isotag' +isotag: ; 0xf0da8 LB 0x6 + db 'CD001', 000h + ; disGetNextSymbol 0xf0dae LB 0x3da -> off=0x0 cb=0000000000000018 uValue=00000000000f0dae 'eltorito' +eltorito: ; 0xf0dae LB 0x18 + db 'EL TORITO SPECIFICATION', 000h + ; disGetNextSymbol 0xf0dc6 LB 0x3c2 -> off=0x0 cb=0000000000000028 uValue=00000000000f0dc6 'drivetypes' +drivetypes: ; 0xf0dc6 LB 0x28 + db 046h, 06ch, 06fh, 070h, 070h, 079h, 000h, 000h, 000h, 000h, 048h, 061h, 072h, 064h, 020h, 044h + db 069h, 073h, 06bh, 000h, 043h, 044h, 02dh, 052h, 04fh, 04dh, 000h, 000h, 000h, 000h, 04ch, 041h + db 04eh, 000h, 000h, 000h, 000h, 000h, 000h, 000h + ; disGetNextSymbol 0xf0dee LB 0x39a -> off=0x0 cb=000000000000037a uValue=00000000000f0dee 'scan_to_scanascii' +scan_to_scanascii: ; 0xf0dee LB 0x37a + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 01bh, 001h, 01bh, 001h, 01bh, 001h + db 000h, 001h, 000h, 000h, 031h, 002h, 021h, 002h, 000h, 000h, 000h, 078h, 000h, 000h, 032h, 003h + db 040h, 003h, 000h, 003h, 000h, 079h, 000h, 000h, 033h, 004h, 023h, 004h, 000h, 000h, 000h, 07ah + db 000h, 000h, 034h, 005h, 024h, 005h, 000h, 000h, 000h, 07bh, 000h, 000h, 035h, 006h, 025h, 006h + db 000h, 000h, 000h, 07ch, 000h, 000h, 036h, 007h, 05eh, 007h, 01eh, 007h, 000h, 07dh, 000h, 000h + db 037h, 008h, 026h, 008h, 000h, 000h, 000h, 07eh, 000h, 000h, 038h, 009h, 02ah, 009h, 000h, 000h + db 000h, 07fh, 000h, 000h, 039h, 00ah, 028h, 00ah, 000h, 000h, 000h, 080h, 000h, 000h, 030h, 00bh + db 029h, 00bh, 000h, 000h, 000h, 081h, 000h, 000h, 02dh, 00ch, 05fh, 00ch, 01fh, 00ch, 000h, 082h + db 000h, 000h, 03dh, 00dh, 02bh, 00dh, 000h, 000h, 000h, 083h, 000h, 000h, 008h, 00eh, 008h, 00eh + db 07fh, 00eh, 000h, 000h, 000h, 000h, 009h, 00fh, 000h, 00fh, 000h, 000h, 000h, 000h, 000h, 000h + db 071h, 010h, 051h, 010h, 011h, 010h, 000h, 010h, 040h, 000h, 077h, 011h, 057h, 011h, 017h, 011h + db 000h, 011h, 040h, 000h, 065h, 012h, 045h, 012h, 005h, 012h, 000h, 012h, 040h, 000h, 072h, 013h + db 052h, 013h, 012h, 013h, 000h, 013h, 040h, 000h, 074h, 014h, 054h, 014h, 014h, 014h, 000h, 014h + db 040h, 000h, 079h, 015h, 059h, 015h, 019h, 015h, 000h, 015h, 040h, 000h, 075h, 016h, 055h, 016h + db 015h, 016h, 000h, 016h, 040h, 000h, 069h, 017h, 049h, 017h, 009h, 017h, 000h, 017h, 040h, 000h + db 06fh, 018h, 04fh, 018h, 00fh, 018h, 000h, 018h, 040h, 000h, 070h, 019h, 050h, 019h, 010h, 019h + db 000h, 019h, 040h, 000h, 05bh, 01ah, 07bh, 01ah, 01bh, 01ah, 000h, 000h, 000h, 000h, 05dh, 01bh + db 07dh, 01bh, 01dh, 01bh, 000h, 000h, 000h, 000h, 00dh, 01ch, 00dh, 01ch, 00ah, 01ch, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 061h, 01eh, 041h, 01eh + db 001h, 01eh, 000h, 01eh, 040h, 000h, 073h, 01fh, 053h, 01fh, 013h, 01fh, 000h, 01fh, 040h, 000h + db 064h, 020h, 044h, 020h, 004h, 020h, 000h, 020h, 040h, 000h, 066h, 021h, 046h, 021h, 006h, 021h + db 000h, 021h, 040h, 000h, 067h, 022h, 047h, 022h, 007h, 022h, 000h, 022h, 040h, 000h, 068h, 023h + db 048h, 023h, 008h, 023h, 000h, 023h, 040h, 000h, 06ah, 024h, 04ah, 024h, 00ah, 024h, 000h, 024h + db 040h, 000h, 06bh, 025h, 04bh, 025h, 00bh, 025h, 000h, 025h, 040h, 000h, 06ch, 026h, 04ch, 026h + db 00ch, 026h, 000h, 026h, 040h, 000h, 03bh, 027h, 03ah, 027h, 000h, 000h, 000h, 000h, 000h, 000h + db 027h, 028h, 022h, 028h, 000h, 000h, 000h, 000h, 000h, 000h, 060h, 029h, 07eh, 029h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 05ch, 02bh + db 07ch, 02bh, 01ch, 02bh, 000h, 000h, 000h, 000h, 07ah, 02ch, 05ah, 02ch, 01ah, 02ch, 000h, 02ch + db 040h, 000h, 078h, 02dh, 058h, 02dh, 018h, 02dh, 000h, 02dh, 040h, 000h, 063h, 02eh, 043h, 02eh + db 003h, 02eh, 000h, 02eh, 040h, 000h, 076h, 02fh, 056h, 02fh, 016h, 02fh, 000h, 02fh, 040h, 000h + db 062h, 030h, 042h, 030h, 002h, 030h, 000h, 030h, 040h, 000h, 06eh, 031h, 04eh, 031h, 00eh, 031h + db 000h, 031h, 040h, 000h, 06dh, 032h, 04dh, 032h, 00dh, 032h, 000h, 032h, 040h, 000h, 02ch, 033h + db 03ch, 033h, 000h, 000h, 000h, 000h, 000h, 000h, 02eh, 034h, 03eh, 034h, 000h, 000h, 000h, 000h + db 000h, 000h, 02fh, 035h, 03fh, 035h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 02ah, 037h, 02ah, 037h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 020h, 039h, 020h, 039h, 020h, 039h + db 020h, 039h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 03bh + db 000h, 054h, 000h, 05eh, 000h, 068h, 000h, 000h, 000h, 03ch, 000h, 055h, 000h, 05fh, 000h, 069h + db 000h, 000h, 000h, 03dh, 000h, 056h, 000h, 060h, 000h, 06ah, 000h, 000h, 000h, 03eh, 000h, 057h + db 000h, 061h, 000h, 06bh, 000h, 000h, 000h, 03fh, 000h, 058h, 000h, 062h, 000h, 06ch, 000h, 000h + db 000h, 040h, 000h, 059h, 000h, 063h, 000h, 06dh, 000h, 000h, 000h, 041h, 000h, 05ah, 000h, 064h + db 000h, 06eh, 000h, 000h, 000h, 042h, 000h, 05bh, 000h, 065h, 000h, 06fh, 000h, 000h, 000h, 043h + db 000h, 05ch, 000h, 066h, 000h, 070h, 000h, 000h, 000h, 044h, 000h, 05dh, 000h, 067h, 000h, 071h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 047h, 037h, 047h, 000h, 077h, 000h, 000h, 020h, 000h + db 000h, 048h, 038h, 048h, 000h, 000h, 000h, 000h, 020h, 000h, 000h, 049h, 039h, 049h, 000h, 084h + db 000h, 000h, 020h, 000h, 02dh, 04ah, 02dh, 04ah, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 04bh + db 034h, 04bh, 000h, 073h, 000h, 000h, 020h, 000h, 000h, 04ch, 035h, 04ch, 000h, 000h, 000h, 000h + db 020h, 000h, 000h, 04dh, 036h, 04dh, 000h, 074h, 000h, 000h, 020h, 000h, 02bh, 04eh, 02bh, 04eh + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 04fh, 031h, 04fh, 000h, 075h, 000h, 000h, 020h, 000h + db 000h, 050h, 032h, 050h, 000h, 000h, 000h, 000h, 020h, 000h, 000h, 051h, 033h, 051h, 000h, 076h + db 000h, 000h, 020h, 000h, 000h, 052h, 030h, 052h, 000h, 000h, 000h, 000h, 020h, 000h, 000h, 053h + db 02eh, 053h, 000h, 000h, 000h, 000h, 020h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 05ch, 056h, 07ch, 056h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 085h, 000h, 087h, 000h, 089h, 000h, 08bh, 000h, 000h + db 000h, 086h, 000h, 088h, 000h, 08ah, 000h, 08ch, 000h, 000h + ; disGetNextSymbol 0xf1168 LB 0x20 -> off=0x0 cb=0000000000000020 uValue=00000000000f1168 'panic_msg_keyb_buffer_full' +panic_msg_keyb_buffer_full: ; 0xf1168 LB 0x20 + db '%s: keyboard input buffer full', 00ah, 000h + + ; Padding 0x478 bytes at 0xf1188 + times 1144 db 0 + +section _TEXT progbits vstart=0x1600 align=1 ; size=0x88c8 class=CODE group=AUTO + ; disGetNextSymbol 0xf1600 LB 0x88c8 -> off=0x0 cb=0000000000000050 uValue=00000000000f0000 'rom_scan' +rom_scan: ; 0xf1600 LB 0x50 + push bp ; 55 ; 0xf1600 post.c:73 + mov bp, sp ; 89 e5 ; 0xf1601 + push bx ; 53 ; 0xf1603 + push cx ; 51 ; 0xf1604 + push si ; 56 ; 0xf1605 + push ax ; 50 ; 0xf1606 + push ax ; 50 ; 0xf1607 + mov bx, ax ; 89 c3 ; 0xf1608 + mov cx, dx ; 89 d1 ; 0xf160a + cmp bx, cx ; 39 cb ; 0xf160c post.c:80 + jnc short 01648h ; 73 38 ; 0xf160e + xor si, si ; 31 f6 ; 0xf1610 post.c:81 + mov dx, bx ; 89 da ; 0xf1612 + mov es, bx ; 8e c3 ; 0xf1614 post.c:83 + cmp word [es:si], 0aa55h ; 26 81 3c 55 aa ; 0xf1616 + jne short 01642h ; 75 25 ; 0xf161b + mov word [bp-008h], bx ; 89 5e f8 ; 0xf161d post.c:89 + mov word [bp-00ah], strict word 00003h ; c7 46 f6 03 00 ; 0xf1620 + call far [bp-00ah] ; ff 5e f6 ; 0xf1625 post.c:90 + cli ; fa ; 0xf1628 post.c:91 + mov es, bx ; 8e c3 ; 0xf1629 post.c:95 + mov al, byte [es:si+002h] ; 26 8a 44 02 ; 0xf162b + add AL, strict byte 003h ; 04 03 ; 0xf162f + and AL, strict byte 0fch ; 24 fc ; 0xf1631 + xor ah, ah ; 30 e4 ; 0xf1633 post.c:96 + cwd ; 99 ; 0xf1635 + sal dx, 002h ; c1 e2 02 ; 0xf1636 + db 01bh, 0c2h + ; sbb ax, dx ; 1b c2 ; 0xf1639 + sar ax, 002h ; c1 f8 02 ; 0xf163b + add bx, ax ; 01 c3 ; 0xf163e + jmp short 0160ch ; eb ca ; 0xf1640 post.c:98 + add bx, 00080h ; 81 c3 80 00 ; 0xf1642 post.c:100 + jmp short 0160ch ; eb c4 ; 0xf1646 post.c:102 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf1648 post.c:103 + pop si ; 5e ; 0xf164b + pop cx ; 59 ; 0xf164c + pop bx ; 5b ; 0xf164d + pop bp ; 5d ; 0xf164e + retn ; c3 ; 0xf164f + ; disGetNextSymbol 0xf1650 LB 0x8878 -> off=0x0 cb=000000000000001b uValue=00000000000f0050 'inb_cmos' +inb_cmos: ; 0xf1650 LB 0x1b + push bp ; 55 ; 0xf1650 bios.c:65 + mov bp, sp ; 89 e5 ; 0xf1651 + push dx ; 52 ; 0xf1653 + mov AH, strict byte 070h ; b4 70 ; 0xf1654 bios.c:67 + cmp AL, strict byte 080h ; 3c 80 ; 0xf1656 bios.c:69 + jc short 0165ch ; 72 02 ; 0xf1658 + mov AH, strict byte 072h ; b4 72 ; 0xf165a bios.c:70 + mov dl, ah ; 88 e2 ; 0xf165c bios.c:71 + xor dh, dh ; 30 f6 ; 0xf165e + out DX, AL ; ee ; 0xf1660 + inc dx ; 42 ; 0xf1661 bios.c:72 + in AL, DX ; ec ; 0xf1662 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf1663 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf1665 bios.c:73 + pop dx ; 5a ; 0xf1668 + pop bp ; 5d ; 0xf1669 + retn ; c3 ; 0xf166a + ; disGetNextSymbol 0xf166b LB 0x885d -> off=0x0 cb=000000000000001d uValue=00000000000f006b 'outb_cmos' +outb_cmos: ; 0xf166b LB 0x1d + push bp ; 55 ; 0xf166b bios.c:75 + mov bp, sp ; 89 e5 ; 0xf166c + push bx ; 53 ; 0xf166e + mov bl, dl ; 88 d3 ; 0xf166f + mov AH, strict byte 070h ; b4 70 ; 0xf1671 bios.c:77 + cmp AL, strict byte 080h ; 3c 80 ; 0xf1673 bios.c:79 + jc short 01679h ; 72 02 ; 0xf1675 + mov AH, strict byte 072h ; b4 72 ; 0xf1677 bios.c:80 + mov dl, ah ; 88 e2 ; 0xf1679 bios.c:81 + xor dh, dh ; 30 f6 ; 0xf167b + out DX, AL ; ee ; 0xf167d + inc dx ; 42 ; 0xf167e bios.c:82 + mov al, bl ; 88 d8 ; 0xf167f + out DX, AL ; ee ; 0xf1681 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf1682 bios.c:83 + pop bx ; 5b ; 0xf1685 + pop bp ; 5d ; 0xf1686 + retn ; c3 ; 0xf1687 + ; disGetNextSymbol 0xf1688 LB 0x8840 -> off=0x0 cb=0000000000000061 uValue=00000000000f0088 'dummy_isr_function' +dummy_isr_function: ; 0xf1688 LB 0x61 + push bp ; 55 ; 0xf1688 bios.c:85 + mov bp, sp ; 89 e5 ; 0xf1689 + push ax ; 50 ; 0xf168b + mov CL, strict byte 0ffh ; b1 ff ; 0xf168c bios.c:93 + mov AL, strict byte 00bh ; b0 0b ; 0xf168e bios.c:95 + mov dx, strict word 00020h ; ba 20 00 ; 0xf1690 + out DX, AL ; ee ; 0xf1693 + in AL, DX ; ec ; 0xf1694 bios.c:96 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf1695 + mov bx, ax ; 89 c3 ; 0xf1697 + mov byte [bp-002h], al ; 88 46 fe ; 0xf1699 + test al, al ; 84 c0 ; 0xf169c bios.c:97 + je short 016dah ; 74 3a ; 0xf169e + mov AL, strict byte 00bh ; b0 0b ; 0xf16a0 bios.c:98 + mov dx, 000a0h ; ba a0 00 ; 0xf16a2 + out DX, AL ; ee ; 0xf16a5 + in AL, DX ; ec ; 0xf16a6 bios.c:99 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf16a7 + mov cx, ax ; 89 c1 ; 0xf16a9 + test al, al ; 84 c0 ; 0xf16ab bios.c:100 + je short 016c2h ; 74 13 ; 0xf16ad + mov dx, 000a1h ; ba a1 00 ; 0xf16af bios.c:101 + in AL, DX ; ec ; 0xf16b2 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf16b3 + mov bl, cl ; 88 cb ; 0xf16b5 bios.c:102 + or al, bl ; 08 d8 ; 0xf16b7 + out DX, AL ; ee ; 0xf16b9 + mov AL, strict byte 020h ; b0 20 ; 0xf16ba bios.c:103 + mov dx, 000a0h ; ba a0 00 ; 0xf16bc + out DX, AL ; ee ; 0xf16bf + jmp short 016d1h ; eb 0f ; 0xf16c0 bios.c:104 + mov dx, strict word 00021h ; ba 21 00 ; 0xf16c2 bios.c:105 + in AL, DX ; ec ; 0xf16c5 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf16c6 + and bl, 0fbh ; 80 e3 fb ; 0xf16c8 bios.c:106 + mov byte [bp-002h], bl ; 88 5e fe ; 0xf16cb + or al, bl ; 08 d8 ; 0xf16ce bios.c:107 + out DX, AL ; ee ; 0xf16d0 + mov AL, strict byte 020h ; b0 20 ; 0xf16d1 bios.c:109 + mov dx, strict word 00020h ; ba 20 00 ; 0xf16d3 + out DX, AL ; ee ; 0xf16d6 + mov cl, byte [bp-002h] ; 8a 4e fe ; 0xf16d7 bios.c:110 + mov bx, strict word 0006bh ; bb 6b 00 ; 0xf16da bios.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf16dd + mov es, ax ; 8e c0 ; 0xf16e0 + mov byte [es:bx], cl ; 26 88 0f ; 0xf16e2 + mov sp, bp ; 89 ec ; 0xf16e5 bios.c:113 + pop bp ; 5d ; 0xf16e7 + retn ; c3 ; 0xf16e8 + ; disGetNextSymbol 0xf16e9 LB 0x87df -> off=0x0 cb=0000000000000012 uValue=00000000000f00e9 'nmi_handler_msg' +nmi_handler_msg: ; 0xf16e9 LB 0x12 + push bp ; 55 ; 0xf16e9 bios.c:116 + mov bp, sp ; 89 e5 ; 0xf16ea + push 000b0h ; 68 b0 00 ; 0xf16ec bios.c:118 + push strict byte 00007h ; 6a 07 ; 0xf16ef + call 018ffh ; e8 0b 02 ; 0xf16f1 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf16f4 + mov sp, bp ; 89 ec ; 0xf16f7 bios.c:119 + pop bp ; 5d ; 0xf16f9 + retn ; c3 ; 0xf16fa + ; disGetNextSymbol 0xf16fb LB 0x87cd -> off=0x0 cb=0000000000000012 uValue=00000000000f00fb 'int18_panic_msg' +int18_panic_msg: ; 0xf16fb LB 0x12 + push bp ; 55 ; 0xf16fb bios.c:121 + mov bp, sp ; 89 e5 ; 0xf16fc + push 000c4h ; 68 c4 00 ; 0xf16fe bios.c:123 + push strict byte 00007h ; 6a 07 ; 0xf1701 + call 018ffh ; e8 f9 01 ; 0xf1703 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf1706 + mov sp, bp ; 89 ec ; 0xf1709 bios.c:124 + pop bp ; 5d ; 0xf170b + retn ; c3 ; 0xf170c + ; disGetNextSymbol 0xf170d LB 0x87bb -> off=0x0 cb=0000000000000020 uValue=00000000000f010d 'log_bios_start' +log_bios_start: ; 0xf170d LB 0x20 + push bp ; 55 ; 0xf170d bios.c:126 + mov bp, sp ; 89 e5 ; 0xf170e + mov bx, 00da0h ; bb a0 0d ; 0xf1710 bios.c:131 + mov cx, ds ; 8c d9 ; 0xf1713 + mov ax, strict word 00004h ; b8 04 00 ; 0xf1715 + call 018bch ; e8 a1 01 ; 0xf1718 + push 00d8eh ; 68 8e 0d ; 0xf171b + push 000d9h ; 68 d9 00 ; 0xf171e + push strict byte 00004h ; 6a 04 ; 0xf1721 + call 018ffh ; e8 d9 01 ; 0xf1723 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf1726 + mov sp, bp ; 89 ec ; 0xf1729 bios.c:132 + pop bp ; 5d ; 0xf172b + retn ; c3 ; 0xf172c + ; disGetNextSymbol 0xf172d LB 0x879b -> off=0x0 cb=0000000000000027 uValue=00000000000f012d 'print_bios_banner' +print_bios_banner: ; 0xf172d LB 0x27 + push bp ; 55 ; 0xf172d bios.c:151 + mov bp, sp ; 89 e5 ; 0xf172e + mov bx, strict word 00072h ; bb 72 00 ; 0xf1730 bios.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf1733 + mov es, ax ; 8e c0 ; 0xf1736 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf1738 + mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf173b bios.c:53 + cmp ax, 01234h ; 3d 34 12 ; 0xf1740 bios.c:157 + jne short 0174dh ; 75 08 ; 0xf1743 + mov AL, strict byte 003h ; b0 03 ; 0xf1745 bios.c:160 + mov AH, strict byte 000h ; b4 00 ; 0xf1747 + int 010h ; cd 10 ; 0xf1749 + jmp short 01750h ; eb 03 ; 0xf174b bios.c:161 + call 0762ch ; e8 dc 5e ; 0xf174d bios.c:164 + mov sp, bp ; 89 ec ; 0xf1750 bios.c:191 + pop bp ; 5d ; 0xf1752 + retn ; c3 ; 0xf1753 + ; disGetNextSymbol 0xf1754 LB 0x8774 -> off=0x0 cb=000000000000003b uValue=00000000000f0154 'send' +send: ; 0xf1754 LB 0x3b + push bp ; 55 ; 0xf1754 print.c:72 + mov bp, sp ; 89 e5 ; 0xf1755 + push bx ; 53 ; 0xf1757 + push cx ; 51 ; 0xf1758 + mov bx, ax ; 89 c3 ; 0xf1759 + mov cl, dl ; 88 d1 ; 0xf175b + test AL, strict byte 008h ; a8 08 ; 0xf175d print.c:80 + je short 01767h ; 74 06 ; 0xf175f + mov al, dl ; 88 d0 ; 0xf1761 print.c:81 + mov dx, 00403h ; ba 03 04 ; 0xf1763 + out DX, AL ; ee ; 0xf1766 + test bl, 004h ; f6 c3 04 ; 0xf1767 print.c:82 + je short 01772h ; 74 06 ; 0xf176a + mov al, cl ; 88 c8 ; 0xf176c print.c:83 + mov dx, 00504h ; ba 04 05 ; 0xf176e + out DX, AL ; ee ; 0xf1771 + test bl, 002h ; f6 c3 02 ; 0xf1772 print.c:85 + je short 01788h ; 74 11 ; 0xf1775 + cmp cl, 00ah ; 80 f9 0a ; 0xf1777 print.c:86 + jne short 01782h ; 75 06 ; 0xf177a + mov AL, strict byte 00dh ; b0 0d ; 0xf177c print.c:87 + mov AH, strict byte 00eh ; b4 0e ; 0xf177e + int 010h ; cd 10 ; 0xf1780 + mov al, cl ; 88 c8 ; 0xf1782 print.c:88 + mov AH, strict byte 00eh ; b4 0e ; 0xf1784 + int 010h ; cd 10 ; 0xf1786 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf1788 print.c:90 + pop cx ; 59 ; 0xf178b + pop bx ; 5b ; 0xf178c + pop bp ; 5d ; 0xf178d + retn ; c3 ; 0xf178e + ; disGetNextSymbol 0xf178f LB 0x8739 -> off=0x0 cb=000000000000005f uValue=00000000000f018f 'put_int' +put_int: ; 0xf178f LB 0x5f + push bp ; 55 ; 0xf178f print.c:92 + mov bp, sp ; 89 e5 ; 0xf1790 + push si ; 56 ; 0xf1792 + push di ; 57 ; 0xf1793 + push ax ; 50 ; 0xf1794 + push ax ; 50 ; 0xf1795 + mov si, ax ; 89 c6 ; 0xf1796 + mov word [bp-008h], dx ; 89 56 f8 ; 0xf1798 + mov di, strict word 0000ah ; bf 0a 00 ; 0xf179b print.c:94 + mov ax, dx ; 89 d0 ; 0xf179e + cwd ; 99 ; 0xf17a0 + idiv di ; f7 ff ; 0xf17a1 + mov word [bp-006h], ax ; 89 46 fa ; 0xf17a3 + test ax, ax ; 85 c0 ; 0xf17a6 print.c:95 + je short 017b4h ; 74 0a ; 0xf17a8 + dec bx ; 4b ; 0xf17aa print.c:96 + mov dx, ax ; 89 c2 ; 0xf17ab + mov ax, si ; 89 f0 ; 0xf17ad + call 0178fh ; e8 dd ff ; 0xf17af + jmp short 017cfh ; eb 1b ; 0xf17b2 print.c:97 + dec bx ; 4b ; 0xf17b4 print.c:98 + test bx, bx ; 85 db ; 0xf17b5 + jle short 017c3h ; 7e 0a ; 0xf17b7 + mov dx, strict word 00020h ; ba 20 00 ; 0xf17b9 print.c:99 + mov ax, si ; 89 f0 ; 0xf17bc + call 01754h ; e8 93 ff ; 0xf17be + jmp short 017b4h ; eb f1 ; 0xf17c1 + test cx, cx ; 85 c9 ; 0xf17c3 print.c:100 + je short 017cfh ; 74 08 ; 0xf17c5 + mov dx, strict word 0002dh ; ba 2d 00 ; 0xf17c7 print.c:101 + mov ax, si ; 89 f0 ; 0xf17ca + call 01754h ; e8 85 ff ; 0xf17cc + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf17cf print.c:103 + mov BL, strict byte 00ah ; b3 0a ; 0xf17d2 + mul bl ; f6 e3 ; 0xf17d4 + mov bl, byte [bp-008h] ; 8a 5e f8 ; 0xf17d6 + sub bl, al ; 28 c3 ; 0xf17d9 + add bl, 030h ; 80 c3 30 ; 0xf17db + xor bh, bh ; 30 ff ; 0xf17de + mov dx, bx ; 89 da ; 0xf17e0 + mov ax, si ; 89 f0 ; 0xf17e2 + call 01754h ; e8 6d ff ; 0xf17e4 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf17e7 print.c:104 + pop di ; 5f ; 0xf17ea + pop si ; 5e ; 0xf17eb + pop bp ; 5d ; 0xf17ec + retn ; c3 ; 0xf17ed + ; disGetNextSymbol 0xf17ee LB 0x86da -> off=0x0 cb=000000000000005e uValue=00000000000f01ee 'put_uint' +put_uint: ; 0xf17ee LB 0x5e + push bp ; 55 ; 0xf17ee print.c:106 + mov bp, sp ; 89 e5 ; 0xf17ef + push si ; 56 ; 0xf17f1 + push di ; 57 ; 0xf17f2 + push ax ; 50 ; 0xf17f3 + push ax ; 50 ; 0xf17f4 + mov si, ax ; 89 c6 ; 0xf17f5 + mov word [bp-008h], dx ; 89 56 f8 ; 0xf17f7 + mov ax, dx ; 89 d0 ; 0xf17fa print.c:108 + xor dx, dx ; 31 d2 ; 0xf17fc + mov di, strict word 0000ah ; bf 0a 00 ; 0xf17fe + div di ; f7 f7 ; 0xf1801 + mov word [bp-006h], ax ; 89 46 fa ; 0xf1803 + test ax, ax ; 85 c0 ; 0xf1806 print.c:109 + je short 01814h ; 74 0a ; 0xf1808 + dec bx ; 4b ; 0xf180a print.c:110 + mov dx, ax ; 89 c2 ; 0xf180b + mov ax, si ; 89 f0 ; 0xf180d + call 017eeh ; e8 dc ff ; 0xf180f + jmp short 0182fh ; eb 1b ; 0xf1812 print.c:111 + dec bx ; 4b ; 0xf1814 print.c:112 + test bx, bx ; 85 db ; 0xf1815 + jle short 01823h ; 7e 0a ; 0xf1817 + mov dx, strict word 00020h ; ba 20 00 ; 0xf1819 print.c:113 + mov ax, si ; 89 f0 ; 0xf181c + call 01754h ; e8 33 ff ; 0xf181e + jmp short 01814h ; eb f1 ; 0xf1821 + test cx, cx ; 85 c9 ; 0xf1823 print.c:114 + je short 0182fh ; 74 08 ; 0xf1825 + mov dx, strict word 0002dh ; ba 2d 00 ; 0xf1827 print.c:115 + mov ax, si ; 89 f0 ; 0xf182a + call 01754h ; e8 25 ff ; 0xf182c + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf182f print.c:117 + mov DL, strict byte 00ah ; b2 0a ; 0xf1832 + mul dl ; f6 e2 ; 0xf1834 + mov dl, byte [bp-008h] ; 8a 56 f8 ; 0xf1836 + sub dl, al ; 28 c2 ; 0xf1839 + add dl, 030h ; 80 c2 30 ; 0xf183b + xor dh, dh ; 30 f6 ; 0xf183e + mov ax, si ; 89 f0 ; 0xf1840 + call 01754h ; e8 0f ff ; 0xf1842 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf1845 print.c:118 + pop di ; 5f ; 0xf1848 + pop si ; 5e ; 0xf1849 + pop bp ; 5d ; 0xf184a + retn ; c3 ; 0xf184b + ; disGetNextSymbol 0xf184c LB 0x867c -> off=0x0 cb=0000000000000070 uValue=00000000000f024c 'put_luint' +put_luint: ; 0xf184c LB 0x70 + push bp ; 55 ; 0xf184c print.c:120 + mov bp, sp ; 89 e5 ; 0xf184d + push si ; 56 ; 0xf184f + push di ; 57 ; 0xf1850 + push ax ; 50 ; 0xf1851 + push ax ; 50 ; 0xf1852 + mov si, ax ; 89 c6 ; 0xf1853 + mov word [bp-006h], bx ; 89 5e fa ; 0xf1855 + mov di, dx ; 89 d7 ; 0xf1858 + mov ax, bx ; 89 d8 ; 0xf185a print.c:122 + mov dx, cx ; 89 ca ; 0xf185c + mov bx, strict word 0000ah ; bb 0a 00 ; 0xf185e + xor cx, cx ; 31 c9 ; 0xf1861 + call 09b60h ; e8 fa 82 ; 0xf1863 + mov word [bp-008h], ax ; 89 46 f8 ; 0xf1866 + mov cx, dx ; 89 d1 ; 0xf1869 + mov dx, ax ; 89 c2 ; 0xf186b print.c:123 + or dx, cx ; 09 ca ; 0xf186d + je short 01880h ; 74 0f ; 0xf186f + push word [bp+004h] ; ff 76 04 ; 0xf1871 print.c:124 + lea dx, [di-001h] ; 8d 55 ff ; 0xf1874 + mov bx, ax ; 89 c3 ; 0xf1877 + mov ax, si ; 89 f0 ; 0xf1879 + call 0184ch ; e8 ce ff ; 0xf187b + jmp short 0189dh ; eb 1d ; 0xf187e print.c:125 + dec di ; 4f ; 0xf1880 print.c:126 + test di, di ; 85 ff ; 0xf1881 + jle short 0188fh ; 7e 0a ; 0xf1883 + mov dx, strict word 00020h ; ba 20 00 ; 0xf1885 print.c:127 + mov ax, si ; 89 f0 ; 0xf1888 + call 01754h ; e8 c7 fe ; 0xf188a + jmp short 01880h ; eb f1 ; 0xf188d + cmp word [bp+004h], strict byte 00000h ; 83 7e 04 00 ; 0xf188f print.c:128 + je short 0189dh ; 74 08 ; 0xf1893 + mov dx, strict word 0002dh ; ba 2d 00 ; 0xf1895 print.c:129 + mov ax, si ; 89 f0 ; 0xf1898 + call 01754h ; e8 b7 fe ; 0xf189a + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf189d print.c:131 + mov DL, strict byte 00ah ; b2 0a ; 0xf18a0 + mul dl ; f6 e2 ; 0xf18a2 + mov dl, byte [bp-006h] ; 8a 56 fa ; 0xf18a4 + sub dl, al ; 28 c2 ; 0xf18a7 + add dl, 030h ; 80 c2 30 ; 0xf18a9 + xor dh, dh ; 30 f6 ; 0xf18ac + mov ax, si ; 89 f0 ; 0xf18ae + call 01754h ; e8 a1 fe ; 0xf18b0 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf18b3 print.c:132 + pop di ; 5f ; 0xf18b6 + pop si ; 5e ; 0xf18b7 + pop bp ; 5d ; 0xf18b8 + retn 00002h ; c2 02 00 ; 0xf18b9 + ; disGetNextSymbol 0xf18bc LB 0x860c -> off=0x0 cb=0000000000000021 uValue=00000000000f02bc 'put_str' +put_str: ; 0xf18bc LB 0x21 + push bp ; 55 ; 0xf18bc print.c:134 + mov bp, sp ; 89 e5 ; 0xf18bd + push dx ; 52 ; 0xf18bf + push si ; 56 ; 0xf18c0 + mov si, ax ; 89 c6 ; 0xf18c1 + mov es, cx ; 8e c1 ; 0xf18c3 print.c:138 + mov dl, byte [es:bx] ; 26 8a 17 ; 0xf18c5 + test dl, dl ; 84 d2 ; 0xf18c8 + je short 018d6h ; 74 0a ; 0xf18ca + xor dh, dh ; 30 f6 ; 0xf18cc print.c:139 + mov ax, si ; 89 f0 ; 0xf18ce + call 01754h ; e8 81 fe ; 0xf18d0 + inc bx ; 43 ; 0xf18d3 print.c:140 + jmp short 018c3h ; eb ed ; 0xf18d4 print.c:141 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf18d6 print.c:142 + pop si ; 5e ; 0xf18d9 + pop dx ; 5a ; 0xf18da + pop bp ; 5d ; 0xf18db + retn ; c3 ; 0xf18dc + ; disGetNextSymbol 0xf18dd LB 0x85eb -> off=0x0 cb=0000000000000022 uValue=00000000000f02dd 'put_str_near' +put_str_near: ; 0xf18dd LB 0x22 + push bp ; 55 ; 0xf18dd print.c:144 + mov bp, sp ; 89 e5 ; 0xf18de + push bx ; 53 ; 0xf18e0 + push cx ; 51 ; 0xf18e1 + mov cx, ax ; 89 c1 ; 0xf18e2 + mov bx, dx ; 89 d3 ; 0xf18e4 + mov al, byte [bx] ; 8a 07 ; 0xf18e6 print.c:148 + test al, al ; 84 c0 ; 0xf18e8 + je short 018f8h ; 74 0c ; 0xf18ea + xor ah, ah ; 30 e4 ; 0xf18ec print.c:149 + mov dx, ax ; 89 c2 ; 0xf18ee + mov ax, cx ; 89 c8 ; 0xf18f0 + call 01754h ; e8 5f fe ; 0xf18f2 + inc bx ; 43 ; 0xf18f5 print.c:150 + jmp short 018e6h ; eb ee ; 0xf18f6 print.c:151 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf18f8 print.c:152 + pop cx ; 59 ; 0xf18fb + pop bx ; 5b ; 0xf18fc + pop bp ; 5d ; 0xf18fd + retn ; c3 ; 0xf18fe + ; disGetNextSymbol 0xf18ff LB 0x85c9 -> off=0x0 cb=0000000000000339 uValue=00000000000f02ff 'bios_printf' +bios_printf: ; 0xf18ff LB 0x339 + push bp ; 55 ; 0xf18ff print.c:165 + mov bp, sp ; 89 e5 ; 0xf1900 + push bx ; 53 ; 0xf1902 + push cx ; 51 ; 0xf1903 + push dx ; 52 ; 0xf1904 + push si ; 56 ; 0xf1905 + push di ; 57 ; 0xf1906 + sub sp, strict byte 0001ch ; 83 ec 1c ; 0xf1907 + lea bx, [bp+008h] ; 8d 5e 08 ; 0xf190a print.c:173 + mov word [bp-016h], bx ; 89 5e ea ; 0xf190d + mov [bp-014h], ss ; 8c 56 ec ; 0xf1910 + xor cx, cx ; 31 c9 ; 0xf1913 print.c:175 + xor di, di ; 31 ff ; 0xf1915 print.c:176 + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1917 print.c:178 + and ax, strict word 00007h ; 25 07 00 ; 0xf191a + cmp ax, strict word 00007h ; 3d 07 00 ; 0xf191d + jne short 0192dh ; 75 0b ; 0xf1920 + push 000deh ; 68 de 00 ; 0xf1922 print.c:179 + push strict byte 00002h ; 6a 02 ; 0xf1925 + call 018ffh ; e8 d5 ff ; 0xf1927 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf192a + mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf192d print.c:182 + mov dl, byte [bx] ; 8a 17 ; 0xf1930 + test dl, dl ; 84 d2 ; 0xf1932 + je short 01991h ; 74 5b ; 0xf1934 + cmp dl, 025h ; 80 fa 25 ; 0xf1936 print.c:183 + jne short 01943h ; 75 08 ; 0xf1939 + mov cx, strict word 00001h ; b9 01 00 ; 0xf193b print.c:184 + xor di, di ; 31 ff ; 0xf193e print.c:185 + jmp near 01c16h ; e9 d3 02 ; 0xf1940 print.c:187 + test cx, cx ; 85 c9 ; 0xf1943 + je short 01994h ; 74 4d ; 0xf1945 + cmp dl, 030h ; 80 fa 30 ; 0xf1947 print.c:188 + jc short 01960h ; 72 14 ; 0xf194a + cmp dl, 039h ; 80 fa 39 ; 0xf194c + jnbe short 01960h ; 77 0f ; 0xf194f + mov al, dl ; 88 d0 ; 0xf1951 print.c:189 + xor ah, ah ; 30 e4 ; 0xf1953 + imul di, di, strict byte 0000ah ; 6b ff 0a ; 0xf1955 + sub ax, strict word 00030h ; 2d 30 00 ; 0xf1958 + add di, ax ; 01 c7 ; 0xf195b + jmp near 01c16h ; e9 b6 02 ; 0xf195d print.c:191 + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1960 print.c:192 + mov word [bp-014h], ax ; 89 46 ec ; 0xf1963 + add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1966 + les bx, [bp-016h] ; c4 5e ea ; 0xf196a + mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf196d + mov word [bp-010h], ax ; 89 46 f0 ; 0xf1971 + cmp dl, 078h ; 80 fa 78 ; 0xf1974 print.c:193 + je short 0197eh ; 74 05 ; 0xf1977 + cmp dl, 058h ; 80 fa 58 ; 0xf1979 + jne short 019d8h ; 75 5a ; 0xf197c + test di, di ; 85 ff ; 0xf197e print.c:194 + jne short 01985h ; 75 03 ; 0xf1980 + mov di, strict word 00004h ; bf 04 00 ; 0xf1982 print.c:195 + cmp dl, 078h ; 80 fa 78 ; 0xf1985 print.c:196 + jne short 01997h ; 75 0d ; 0xf1988 + mov word [bp-012h], strict word 00061h ; c7 46 ee 61 00 ; 0xf198a print.c:197 + jmp short 0199ch ; eb 0b ; 0xf198f print.c:198 + jmp near 01c1ch ; e9 88 02 ; 0xf1991 + jmp near 01c0eh ; e9 77 02 ; 0xf1994 + mov word [bp-012h], strict word 00041h ; c7 46 ee 41 00 ; 0xf1997 print.c:199 + lea ax, [di-001h] ; 8d 45 ff ; 0xf199c print.c:200 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf199f + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf19a2 + test ax, ax ; 85 c0 ; 0xf19a5 + jl short 019e9h ; 7c 40 ; 0xf19a7 + mov cx, ax ; 89 c1 ; 0xf19a9 print.c:201 + sal cx, 002h ; c1 e1 02 ; 0xf19ab + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf19ae + shr ax, CL ; d3 e8 ; 0xf19b1 + xor ah, ah ; 30 e4 ; 0xf19b3 + and AL, strict byte 00fh ; 24 0f ; 0xf19b5 + cmp ax, strict word 00009h ; 3d 09 00 ; 0xf19b7 print.c:202 + jnbe short 019c3h ; 77 07 ; 0xf19ba + mov dx, ax ; 89 c2 ; 0xf19bc + add dx, strict byte 00030h ; 83 c2 30 ; 0xf19be + jmp short 019cbh ; eb 08 ; 0xf19c1 + sub ax, strict word 0000ah ; 2d 0a 00 ; 0xf19c3 + mov dx, word [bp-012h] ; 8b 56 ee ; 0xf19c6 + add dx, ax ; 01 c2 ; 0xf19c9 + xor dh, dh ; 30 f6 ; 0xf19cb + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf19cd + call 01754h ; e8 81 fd ; 0xf19d0 + dec word [bp-00ch] ; ff 4e f4 ; 0xf19d3 print.c:203 + jmp short 019a2h ; eb ca ; 0xf19d6 + cmp dl, 075h ; 80 fa 75 ; 0xf19d8 print.c:205 + jne short 019ech ; 75 0f ; 0xf19db + xor cx, cx ; 31 c9 ; 0xf19dd print.c:206 + mov bx, di ; 89 fb ; 0xf19df + mov dx, ax ; 89 c2 ; 0xf19e1 + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf19e3 + call 017eeh ; e8 05 fe ; 0xf19e6 + jmp near 01c0ah ; e9 1e 02 ; 0xf19e9 print.c:208 + cmp dl, 06ch ; 80 fa 6c ; 0xf19ec + jne short 019f9h ; 75 08 ; 0xf19ef + mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf19f1 + cmp dl, byte [bx+001h] ; 3a 57 01 ; 0xf19f4 + je short 019fch ; 74 03 ; 0xf19f7 + jmp near 01acdh ; e9 d1 00 ; 0xf19f9 + add word [bp+006h], strict byte 00002h ; 83 46 06 02 ; 0xf19fc print.c:212 + mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf1a00 print.c:213 + mov dl, byte [bx] ; 8a 17 ; 0xf1a03 + mov word [bp-026h], ax ; 89 46 da ; 0xf1a05 print.c:215 + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1a08 print.c:216 + mov word [bp-014h], ax ; 89 46 ec ; 0xf1a0b + add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1a0e + les bx, [bp-016h] ; c4 5e ea ; 0xf1a12 + mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf1a15 + mov word [bp-024h], ax ; 89 46 dc ; 0xf1a19 + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1a1c print.c:217 + mov word [bp-014h], ax ; 89 46 ec ; 0xf1a1f + add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1a22 + les bx, [bp-016h] ; c4 5e ea ; 0xf1a26 + mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf1a29 + mov word [bp-022h], ax ; 89 46 de ; 0xf1a2d + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1a30 print.c:218 + mov word [bp-014h], ax ; 89 46 ec ; 0xf1a33 + add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1a36 + les bx, [bp-016h] ; c4 5e ea ; 0xf1a3a + mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf1a3d + mov word [bp-020h], ax ; 89 46 e0 ; 0xf1a41 + cmp dl, 078h ; 80 fa 78 ; 0xf1a44 print.c:219 + je short 01a4eh ; 74 05 ; 0xf1a47 + cmp dl, 058h ; 80 fa 58 ; 0xf1a49 + jne short 01aa8h ; 75 5a ; 0xf1a4c + test di, di ; 85 ff ; 0xf1a4e print.c:220 + jne short 01a55h ; 75 03 ; 0xf1a50 + mov di, strict word 00010h ; bf 10 00 ; 0xf1a52 print.c:221 + cmp dl, 078h ; 80 fa 78 ; 0xf1a55 print.c:222 + jne short 01a61h ; 75 07 ; 0xf1a58 + mov word [bp-012h], strict word 00061h ; c7 46 ee 61 00 ; 0xf1a5a print.c:223 + jmp short 01a66h ; eb 05 ; 0xf1a5f print.c:224 + mov word [bp-012h], strict word 00041h ; c7 46 ee 41 00 ; 0xf1a61 print.c:225 + lea ax, [di-001h] ; 8d 45 ff ; 0xf1a66 print.c:226 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf1a69 + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf1a6c + test ax, ax ; 85 c0 ; 0xf1a6f + jl short 01acah ; 7c 57 ; 0xf1a71 + sal ax, 002h ; c1 e0 02 ; 0xf1a73 print.c:227 + mov word [bp-01eh], ax ; 89 46 e2 ; 0xf1a76 + xor ax, ax ; 31 c0 ; 0xf1a79 + mov word [bp-01ch], ax ; 89 46 e4 ; 0xf1a7b + mov word [bp-01ah], ax ; 89 46 e6 ; 0xf1a7e + mov word [bp-018h], ax ; 89 46 e8 ; 0xf1a81 + mov ax, word [bp-020h] ; 8b 46 e0 ; 0xf1a84 + mov bx, word [bp-022h] ; 8b 5e de ; 0xf1a87 + mov cx, word [bp-024h] ; 8b 4e dc ; 0xf1a8a + mov dx, word [bp-026h] ; 8b 56 da ; 0xf1a8d + mov si, word [bp-01eh] ; 8b 76 e2 ; 0xf1a90 + call 09b90h ; e8 fa 80 ; 0xf1a93 + mov ax, dx ; 89 d0 ; 0xf1a96 + xor ah, dh ; 30 f4 ; 0xf1a98 + and AL, strict byte 00fh ; 24 0f ; 0xf1a9a + cmp ax, strict word 00009h ; 3d 09 00 ; 0xf1a9c print.c:228 + jnbe short 01aaah ; 77 09 ; 0xf1a9f + mov dx, ax ; 89 c2 ; 0xf1aa1 + add dx, strict byte 00030h ; 83 c2 30 ; 0xf1aa3 + jmp short 01ab2h ; eb 0a ; 0xf1aa6 + jmp short 01abfh ; eb 15 ; 0xf1aa8 + sub ax, strict word 0000ah ; 2d 0a 00 ; 0xf1aaa + mov dx, word [bp-012h] ; 8b 56 ee ; 0xf1aad + add dx, ax ; 01 c2 ; 0xf1ab0 + xor dh, dh ; 30 f6 ; 0xf1ab2 + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1ab4 + call 01754h ; e8 9a fc ; 0xf1ab7 + dec word [bp-00ch] ; ff 4e f4 ; 0xf1aba print.c:229 + jmp short 01a6ch ; eb ad ; 0xf1abd + push 000e6h ; 68 e6 00 ; 0xf1abf print.c:231 + push strict byte 00007h ; 6a 07 ; 0xf1ac2 + call 018ffh ; e8 38 fe ; 0xf1ac4 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf1ac7 + jmp near 01c0ah ; e9 3d 01 ; 0xf1aca print.c:234 + lea bx, [di-001h] ; 8d 5d ff ; 0xf1acd + cmp dl, 06ch ; 80 fa 6c ; 0xf1ad0 + jne short 01b29h ; 75 54 ; 0xf1ad3 + inc word [bp+006h] ; ff 46 06 ; 0xf1ad5 print.c:235 + mov si, word [bp+006h] ; 8b 76 06 ; 0xf1ad8 print.c:236 + mov dl, byte [si] ; 8a 14 ; 0xf1adb + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1add print.c:237 + mov word [bp-014h], ax ; 89 46 ec ; 0xf1ae0 + add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1ae3 + les si, [bp-016h] ; c4 76 ea ; 0xf1ae7 + mov ax, word [es:si-002h] ; 26 8b 44 fe ; 0xf1aea + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf1aee + cmp dl, 064h ; 80 fa 64 ; 0xf1af1 print.c:238 + jne short 01b22h ; 75 2c ; 0xf1af4 + test byte [bp-00dh], 080h ; f6 46 f3 80 ; 0xf1af6 print.c:239 + je short 01b11h ; 74 15 ; 0xf1afa + push strict byte 00001h ; 6a 01 ; 0xf1afc print.c:240 + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf1afe + mov cx, word [bp-00eh] ; 8b 4e f2 ; 0xf1b01 + neg cx ; f7 d9 ; 0xf1b04 + neg ax ; f7 d8 ; 0xf1b06 + sbb cx, strict byte 00000h ; 83 d9 00 ; 0xf1b08 + mov dx, bx ; 89 da ; 0xf1b0b + mov bx, ax ; 89 c3 ; 0xf1b0d + jmp short 01b1ah ; eb 09 ; 0xf1b0f print.c:241 + push strict byte 00000h ; 6a 00 ; 0xf1b11 print.c:242 + mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf1b13 + mov dx, di ; 89 fa ; 0xf1b16 + mov cx, ax ; 89 c1 ; 0xf1b18 + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1b1a + call 0184ch ; e8 2c fd ; 0xf1b1d + jmp short 01acah ; eb a8 ; 0xf1b20 print.c:244 + cmp dl, 075h ; 80 fa 75 ; 0xf1b22 + jne short 01b2bh ; 75 04 ; 0xf1b25 + jmp short 01b11h ; eb e8 ; 0xf1b27 + jmp short 01b91h ; eb 66 ; 0xf1b29 + cmp dl, 078h ; 80 fa 78 ; 0xf1b2b print.c:247 + je short 01b35h ; 74 05 ; 0xf1b2e + cmp dl, 058h ; 80 fa 58 ; 0xf1b30 + jne short 01acah ; 75 95 ; 0xf1b33 + test di, di ; 85 ff ; 0xf1b35 print.c:249 + jne short 01b3ch ; 75 03 ; 0xf1b37 + mov di, strict word 00008h ; bf 08 00 ; 0xf1b39 print.c:250 + cmp dl, 078h ; 80 fa 78 ; 0xf1b3c print.c:251 + jne short 01b48h ; 75 07 ; 0xf1b3f + mov word [bp-012h], strict word 00061h ; c7 46 ee 61 00 ; 0xf1b41 print.c:252 + jmp short 01b4dh ; eb 05 ; 0xf1b46 print.c:253 + mov word [bp-012h], strict word 00041h ; c7 46 ee 41 00 ; 0xf1b48 print.c:254 + lea ax, [di-001h] ; 8d 45 ff ; 0xf1b4d print.c:255 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf1b50 + cmp word [bp-00ch], strict byte 00000h ; 83 7e f4 00 ; 0xf1b53 + jl short 01bb3h ; 7c 5a ; 0xf1b57 + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf1b59 print.c:256 + mov cx, word [bp-00ch] ; 8b 4e f4 ; 0xf1b5c + sal cx, 002h ; c1 e1 02 ; 0xf1b5f + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf1b62 + jcxz 01b6dh ; e3 06 ; 0xf1b65 + shr dx, 1 ; d1 ea ; 0xf1b67 + rcr ax, 1 ; d1 d8 ; 0xf1b69 + loop 01b67h ; e2 fa ; 0xf1b6b + and ax, strict word 0000fh ; 25 0f 00 ; 0xf1b6d + cmp ax, strict word 00009h ; 3d 09 00 ; 0xf1b70 print.c:257 + jnbe short 01b7ch ; 77 07 ; 0xf1b73 + mov dx, ax ; 89 c2 ; 0xf1b75 + add dx, strict byte 00030h ; 83 c2 30 ; 0xf1b77 + jmp short 01b84h ; eb 08 ; 0xf1b7a + sub ax, strict word 0000ah ; 2d 0a 00 ; 0xf1b7c + mov dx, word [bp-012h] ; 8b 56 ee ; 0xf1b7f + add dx, ax ; 01 c2 ; 0xf1b82 + xor dh, dh ; 30 f6 ; 0xf1b84 + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1b86 + call 01754h ; e8 c8 fb ; 0xf1b89 + dec word [bp-00ch] ; ff 4e f4 ; 0xf1b8c print.c:258 + jmp short 01b53h ; eb c2 ; 0xf1b8f + cmp dl, 064h ; 80 fa 64 ; 0xf1b91 print.c:261 + jne short 01bb5h ; 75 1f ; 0xf1b94 + test byte [bp-00fh], 080h ; f6 46 f1 80 ; 0xf1b96 print.c:262 + je short 01ba6h ; 74 0a ; 0xf1b9a + mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf1b9c print.c:263 + neg dx ; f7 da ; 0xf1b9f + mov cx, strict word 00001h ; b9 01 00 ; 0xf1ba1 + jmp short 01badh ; eb 07 ; 0xf1ba4 print.c:264 + xor cx, cx ; 31 c9 ; 0xf1ba6 print.c:265 + mov bx, di ; 89 fb ; 0xf1ba8 + mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf1baa + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1bad + call 0178fh ; e8 dc fb ; 0xf1bb0 + jmp short 01c0ah ; eb 55 ; 0xf1bb3 print.c:267 + cmp dl, 073h ; 80 fa 73 ; 0xf1bb5 + jne short 01bc7h ; 75 0d ; 0xf1bb8 + mov cx, ds ; 8c d9 ; 0xf1bba print.c:268 + mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf1bbc + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1bbf + call 018bch ; e8 f7 fc ; 0xf1bc2 + jmp short 01c0ah ; eb 43 ; 0xf1bc5 print.c:270 + cmp dl, 053h ; 80 fa 53 ; 0xf1bc7 + jne short 01bedh ; 75 21 ; 0xf1bca + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf1bcc print.c:271 + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf1bcf + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1bd2 print.c:272 + mov word [bp-014h], ax ; 89 46 ec ; 0xf1bd5 + add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1bd8 + les bx, [bp-016h] ; c4 5e ea ; 0xf1bdc + mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf1bdf + mov word [bp-010h], ax ; 89 46 f0 ; 0xf1be3 + mov bx, ax ; 89 c3 ; 0xf1be6 print.c:273 + mov cx, word [bp-00eh] ; 8b 4e f2 ; 0xf1be8 + jmp short 01bbfh ; eb d2 ; 0xf1beb + cmp dl, 063h ; 80 fa 63 ; 0xf1bed print.c:275 + jne short 01bffh ; 75 0d ; 0xf1bf0 + mov dl, byte [bp-010h] ; 8a 56 f0 ; 0xf1bf2 print.c:276 + xor dh, dh ; 30 f6 ; 0xf1bf5 + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1bf7 + call 01754h ; e8 57 fb ; 0xf1bfa + jmp short 01c0ah ; eb 0b ; 0xf1bfd print.c:278 + push 00107h ; 68 07 01 ; 0xf1bff print.c:279 + push strict byte 00007h ; 6a 07 ; 0xf1c02 + call 018ffh ; e8 f8 fc ; 0xf1c04 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf1c07 + xor cx, cx ; 31 c9 ; 0xf1c0a print.c:280 + jmp short 01c16h ; eb 08 ; 0xf1c0c print.c:283 + xor dh, dh ; 30 f6 ; 0xf1c0e print.c:284 + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1c10 + call 01754h ; e8 3e fb ; 0xf1c13 + inc word [bp+006h] ; ff 46 06 ; 0xf1c16 print.c:286 + jmp near 0192dh ; e9 11 fd ; 0xf1c19 print.c:287 + xor ax, ax ; 31 c0 ; 0xf1c1c print.c:288 + mov word [bp-016h], ax ; 89 46 ea ; 0xf1c1e + mov word [bp-014h], ax ; 89 46 ec ; 0xf1c21 + test byte [bp+004h], 001h ; f6 46 04 01 ; 0xf1c24 print.c:289 + je short 01c2eh ; 74 04 ; 0xf1c28 + cli ; fa ; 0xf1c2a print.c:291 + hlt ; f4 ; 0xf1c2b print.c:292 + jmp short 01c2bh ; eb fd ; 0xf1c2c + lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf1c2e print.c:294 + pop di ; 5f ; 0xf1c31 + pop si ; 5e ; 0xf1c32 + pop dx ; 5a ; 0xf1c33 + pop cx ; 59 ; 0xf1c34 + pop bx ; 5b ; 0xf1c35 + pop bp ; 5d ; 0xf1c36 + retn ; c3 ; 0xf1c37 + ; disGetNextSymbol 0xf1c38 LB 0x8290 -> off=0x0 cb=00000000000000e5 uValue=00000000000f0638 'ata_init' +ata_init: ; 0xf1c38 LB 0xe5 + push si ; 56 ; 0xf1c38 ata.c:97 + push bp ; 55 ; 0xf1c39 + mov bp, sp ; 89 e5 ; 0xf1c3a + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf1c3c ata.c:48 + mov si, strict word 00040h ; be 40 00 ; 0xf1c3f + mov es, si ; 8e c6 ; 0xf1c42 + mov bx, word [es:bx] ; 26 8b 1f ; 0xf1c44 + mov si, 00122h ; be 22 01 ; 0xf1c47 ata.c:49 + mov dx, bx ; 89 da ; 0xf1c4a + xor al, al ; 30 c0 ; 0xf1c4c ata.c:105 + jmp short 01c54h ; eb 04 ; 0xf1c4e + cmp AL, strict byte 004h ; 3c 04 ; 0xf1c50 + jnc short 01c7dh ; 73 29 ; 0xf1c52 + mov bl, al ; 88 c3 ; 0xf1c54 ata.c:106 + xor bh, bh ; 30 ff ; 0xf1c56 + imul bx, bx, strict byte 00006h ; 6b db 06 ; 0xf1c58 + mov es, dx ; 8e c2 ; 0xf1c5b + add bx, si ; 01 f3 ; 0xf1c5d + mov byte [es:bx+00204h], 000h ; 26 c6 87 04 02 00 ; 0xf1c5f + mov word [es:bx+00206h], strict word 00000h ; 26 c7 87 06 02 00 00 ; 0xf1c65 ata.c:107 + mov word [es:bx+00208h], strict word 00000h ; 26 c7 87 08 02 00 00 ; 0xf1c6c ata.c:108 + mov byte [es:bx+00205h], 000h ; 26 c6 87 05 02 00 ; 0xf1c73 ata.c:109 + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf1c79 ata.c:110 + jmp short 01c50h ; eb d3 ; 0xf1c7b + xor al, al ; 30 c0 ; 0xf1c7d ata.c:113 + jmp short 01c85h ; eb 04 ; 0xf1c7f + cmp AL, strict byte 008h ; 3c 08 ; 0xf1c81 + jnc short 01cech ; 73 67 ; 0xf1c83 + mov bl, al ; 88 c3 ; 0xf1c85 ata.c:114 + xor bh, bh ; 30 ff ; 0xf1c87 + imul bx, bx, strict byte 0001ch ; 6b db 1c ; 0xf1c89 + mov es, dx ; 8e c2 ; 0xf1c8c + add bx, si ; 01 f3 ; 0xf1c8e + mov word [es:bx+022h], strict word 00000h ; 26 c7 47 22 00 00 ; 0xf1c90 + mov word [es:bx+024h], strict word 00000h ; 26 c7 47 24 00 00 ; 0xf1c96 ata.c:116 + mov byte [es:bx+026h], 000h ; 26 c6 47 26 00 ; 0xf1c9c ata.c:118 + mov word [es:bx+028h], 00200h ; 26 c7 47 28 00 02 ; 0xf1ca1 ata.c:119 + mov byte [es:bx+027h], 000h ; 26 c6 47 27 00 ; 0xf1ca7 ata.c:120 + mov word [es:bx+02ah], strict word 00000h ; 26 c7 47 2a 00 00 ; 0xf1cac ata.c:121 + mov word [es:bx+02ch], strict word 00000h ; 26 c7 47 2c 00 00 ; 0xf1cb2 ata.c:122 + mov word [es:bx+02eh], strict word 00000h ; 26 c7 47 2e 00 00 ; 0xf1cb8 ata.c:123 + mov word [es:bx+030h], strict word 00000h ; 26 c7 47 30 00 00 ; 0xf1cbe ata.c:124 + mov word [es:bx+032h], strict word 00000h ; 26 c7 47 32 00 00 ; 0xf1cc4 ata.c:125 + mov word [es:bx+034h], strict word 00000h ; 26 c7 47 34 00 00 ; 0xf1cca ata.c:126 + mov word [es:bx+03ch], strict word 00000h ; 26 c7 47 3c 00 00 ; 0xf1cd0 ata.c:127 + mov word [es:bx+03ah], strict word 00000h ; 26 c7 47 3a 00 00 ; 0xf1cd6 + mov word [es:bx+038h], strict word 00000h ; 26 c7 47 38 00 00 ; 0xf1cdc + mov word [es:bx+036h], strict word 00000h ; 26 c7 47 36 00 00 ; 0xf1ce2 + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf1ce8 ata.c:128 + jmp short 01c81h ; eb 95 ; 0xf1cea + xor al, al ; 30 c0 ; 0xf1cec ata.c:131 + jmp short 01cf4h ; eb 04 ; 0xf1cee + cmp AL, strict byte 010h ; 3c 10 ; 0xf1cf0 + jnc short 01d0ch ; 73 18 ; 0xf1cf2 + mov bl, al ; 88 c3 ; 0xf1cf4 ata.c:132 + xor bh, bh ; 30 ff ; 0xf1cf6 + mov es, dx ; 8e c2 ; 0xf1cf8 + add bx, si ; 01 f3 ; 0xf1cfa + mov byte [es:bx+001e3h], 010h ; 26 c6 87 e3 01 10 ; 0xf1cfc + mov byte [es:bx+001f4h], 010h ; 26 c6 87 f4 01 10 ; 0xf1d02 ata.c:133 + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf1d08 ata.c:134 + jmp short 01cf0h ; eb e4 ; 0xf1d0a + mov es, dx ; 8e c2 ; 0xf1d0c ata.c:136 + mov byte [es:si+001e2h], 000h ; 26 c6 84 e2 01 00 ; 0xf1d0e + mov byte [es:si+001f3h], 000h ; 26 c6 84 f3 01 00 ; 0xf1d14 ata.c:137 + pop bp ; 5d ; 0xf1d1a ata.c:138 + pop si ; 5e ; 0xf1d1b + retn ; c3 ; 0xf1d1c + ; disGetNextSymbol 0xf1d1d LB 0x81ab -> off=0x0 cb=00000000000000dd uValue=00000000000f071d 'ata_reset' +ata_reset: ; 0xf1d1d LB 0xdd + push bp ; 55 ; 0xf1d1d ata.c:146 + mov bp, sp ; 89 e5 ; 0xf1d1e + push bx ; 53 ; 0xf1d20 + push cx ; 51 ; 0xf1d21 + push dx ; 52 ; 0xf1d22 + push si ; 56 ; 0xf1d23 + push di ; 57 ; 0xf1d24 + push ax ; 50 ; 0xf1d25 + push ax ; 50 ; 0xf1d26 + push ax ; 50 ; 0xf1d27 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf1d28 ata.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf1d2b + mov es, ax ; 8e c0 ; 0xf1d2e + mov ax, word [es:bx] ; 26 8b 07 ; 0xf1d30 + mov di, 00122h ; bf 22 01 ; 0xf1d33 ata.c:49 + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf1d36 + mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf1d39 ata.c:155 + shr dx, 1 ; d1 ea ; 0xf1d3c + mov dh, byte [bp-010h] ; 8a 76 f0 ; 0xf1d3e ata.c:156 + and dh, 001h ; 80 e6 01 ; 0xf1d41 + mov byte [bp-00ch], dh ; 88 76 f4 ; 0xf1d44 + xor dh, dh ; 30 f6 ; 0xf1d47 ata.c:158 + imul bx, dx, strict byte 00006h ; 6b da 06 ; 0xf1d49 + mov es, ax ; 8e c0 ; 0xf1d4c + add bx, di ; 01 fb ; 0xf1d4e + mov cx, word [es:bx+00206h] ; 26 8b 8f 06 02 ; 0xf1d50 + mov si, word [es:bx+00208h] ; 26 8b b7 08 02 ; 0xf1d55 ata.c:159 + lea dx, [si+006h] ; 8d 54 06 ; 0xf1d5a ata.c:164 + mov AL, strict byte 00eh ; b0 0e ; 0xf1d5d + out DX, AL ; ee ; 0xf1d5f + mov bx, 000ffh ; bb ff 00 ; 0xf1d60 ata.c:167 + dec bx ; 4b ; 0xf1d63 ata.c:168 + test bx, bx ; 85 db ; 0xf1d64 + jbe short 01d74h ; 76 0c ; 0xf1d66 + mov dx, cx ; 89 ca ; 0xf1d68 ata.c:169 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf1d6a + in AL, DX ; ec ; 0xf1d6d + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf1d6e + test AL, strict byte 080h ; a8 80 ; 0xf1d70 ata.c:170 + je short 01d63h ; 74 ef ; 0xf1d72 + lea dx, [si+006h] ; 8d 54 06 ; 0xf1d74 ata.c:175 + mov AL, strict byte 00ah ; b0 0a ; 0xf1d77 + out DX, AL ; ee ; 0xf1d79 + imul bx, word [bp-010h], strict byte 0001ch ; 6b 5e f0 1c ; 0xf1d7a ata.c:177 + mov es, [bp-00eh] ; 8e 46 f2 ; 0xf1d7e + add bx, di ; 01 fb ; 0xf1d81 + cmp byte [es:bx+022h], 000h ; 26 80 7f 22 00 ; 0xf1d83 + je short 01dd6h ; 74 4c ; 0xf1d88 + cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf1d8a ata.c:180 + je short 01d95h ; 74 05 ; 0xf1d8e + mov ax, 000b0h ; b8 b0 00 ; 0xf1d90 + jmp short 01d98h ; eb 03 ; 0xf1d93 + mov ax, 000a0h ; b8 a0 00 ; 0xf1d95 + mov dx, cx ; 89 ca ; 0xf1d98 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf1d9a + out DX, AL ; ee ; 0xf1d9d + mov dx, cx ; 89 ca ; 0xf1d9e ata.c:181 + inc dx ; 42 ; 0xf1da0 + inc dx ; 42 ; 0xf1da1 + in AL, DX ; ec ; 0xf1da2 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf1da3 + mov bx, ax ; 89 c3 ; 0xf1da5 + mov dx, cx ; 89 ca ; 0xf1da7 ata.c:182 + add dx, strict byte 00003h ; 83 c2 03 ; 0xf1da9 + in AL, DX ; ec ; 0xf1dac + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf1dad + cmp bl, 001h ; 80 fb 01 ; 0xf1daf ata.c:184 + jne short 01dd6h ; 75 22 ; 0xf1db2 + cmp al, bl ; 38 d8 ; 0xf1db4 + jne short 01dd6h ; 75 1e ; 0xf1db6 + mov bx, strict word 0ffffh ; bb ff ff ; 0xf1db8 ata.c:186 + dec bx ; 4b ; 0xf1dbb ata.c:187 + test bx, bx ; 85 db ; 0xf1dbc + jbe short 01dd6h ; 76 16 ; 0xf1dbe + mov dx, cx ; 89 ca ; 0xf1dc0 ata.c:188 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf1dc2 + in AL, DX ; ec ; 0xf1dc5 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf1dc6 + test AL, strict byte 080h ; a8 80 ; 0xf1dc8 ata.c:189 + je short 01dd6h ; 74 0a ; 0xf1dca + mov ax, strict word 0ffffh ; b8 ff ff ; 0xf1dcc ata.c:191 + dec ax ; 48 ; 0xf1dcf ata.c:192 + test ax, ax ; 85 c0 ; 0xf1dd0 + jnbe short 01dcfh ; 77 fb ; 0xf1dd2 + jmp short 01dbbh ; eb e5 ; 0xf1dd4 ata.c:195 + mov bx, strict word 00010h ; bb 10 00 ; 0xf1dd6 ata.c:200 + dec bx ; 4b ; 0xf1dd9 ata.c:201 + test bx, bx ; 85 db ; 0xf1dda + jbe short 01deah ; 76 0c ; 0xf1ddc + mov dx, cx ; 89 ca ; 0xf1dde ata.c:202 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf1de0 + in AL, DX ; ec ; 0xf1de3 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf1de4 + test AL, strict byte 040h ; a8 40 ; 0xf1de6 ata.c:203 + je short 01dd9h ; 74 ef ; 0xf1de8 + lea dx, [si+006h] ; 8d 54 06 ; 0xf1dea ata.c:208 + mov AL, strict byte 008h ; b0 08 ; 0xf1ded + out DX, AL ; ee ; 0xf1def + lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf1df0 ata.c:209 + pop di ; 5f ; 0xf1df3 + pop si ; 5e ; 0xf1df4 + pop dx ; 5a ; 0xf1df5 + pop cx ; 59 ; 0xf1df6 + pop bx ; 5b ; 0xf1df7 + pop bp ; 5d ; 0xf1df8 + retn ; c3 ; 0xf1df9 + ; disGetNextSymbol 0xf1dfa LB 0x80ce -> off=0x0 cb=00000000000002b5 uValue=00000000000f07fa 'ata_cmd_data_in' +ata_cmd_data_in: ; 0xf1dfa LB 0x2b5 + push bp ; 55 ; 0xf1dfa ata.c:223 + mov bp, sp ; 89 e5 ; 0xf1dfb + push si ; 56 ; 0xf1dfd + push di ; 57 ; 0xf1dfe + sub sp, strict byte 00010h ; 83 ec 10 ; 0xf1dff + push ax ; 50 ; 0xf1e02 + push dx ; 52 ; 0xf1e03 + push bx ; 53 ; 0xf1e04 + push cx ; 51 ; 0xf1e05 + mov es, dx ; 8e c2 ; 0xf1e06 ata.c:233 + mov bx, ax ; 89 c3 ; 0xf1e08 + mov al, byte [es:bx+00ch] ; 26 8a 47 0c ; 0xf1e0a + mov byte [bp-008h], al ; 88 46 f8 ; 0xf1e0e + mov bl, al ; 88 c3 ; 0xf1e11 ata.c:235 + xor bh, ah ; 30 e7 ; 0xf1e13 + mov ax, bx ; 89 d8 ; 0xf1e15 + cwd ; 99 ; 0xf1e17 + db 02bh, 0c2h + ; sub ax, dx ; 2b c2 ; 0xf1e18 + sar ax, 1 ; d1 f8 ; 0xf1e1a + imul ax, ax, strict byte 00006h ; 6b c0 06 ; 0xf1e1c + mov di, word [bp-016h] ; 8b 7e ea ; 0xf1e1f + add di, ax ; 01 c7 ; 0xf1e22 + mov ax, word [es:di+00206h] ; 26 8b 85 06 02 ; 0xf1e24 + mov word [bp-00ah], ax ; 89 46 f6 ; 0xf1e29 + mov ax, word [es:di+00208h] ; 26 8b 85 08 02 ; 0xf1e2c ata.c:236 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf1e31 + imul bx, bx, strict byte 0001ch ; 6b db 1c ; 0xf1e34 ata.c:238 + add bx, word [bp-016h] ; 03 5e ea ; 0xf1e37 + mov ax, word [es:bx+028h] ; 26 8b 47 28 ; 0xf1e3a + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf1e3e + test ax, ax ; 85 c0 ; 0xf1e41 ata.c:239 + jne short 01e4ch ; 75 07 ; 0xf1e43 + mov word [bp-00eh], 08000h ; c7 46 f2 00 80 ; 0xf1e45 ata.c:245 + jmp short 01e4fh ; eb 03 ; 0xf1e4a ata.c:246 + shr word [bp-00eh], 1 ; d1 6e f2 ; 0xf1e4c ata.c:252 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1e4f ata.c:255 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf1e52 + in AL, DX ; ec ; 0xf1e55 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf1e56 + test AL, strict byte 080h ; a8 80 ; 0xf1e58 ata.c:256 + je short 01e6bh ; 74 0f ; 0xf1e5a + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf1e5c ata.c:260 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf1e5f + mov AL, strict byte 008h ; b0 08 ; 0xf1e62 + out DX, AL ; ee ; 0xf1e64 + mov ax, strict word 00001h ; b8 01 00 ; 0xf1e65 ata.c:261 + jmp near 020a8h ; e9 3d 02 ; 0xf1e68 + mov es, [bp-018h] ; 8e 46 e8 ; 0xf1e6b ata.c:264 + mov di, word [bp-016h] ; 8b 7e ea ; 0xf1e6e + mov di, word [es:di+008h] ; 26 8b 7d 08 ; 0xf1e71 + mov bx, word [bp-016h] ; 8b 5e ea ; 0xf1e75 + mov ax, word [es:bx+00ah] ; 26 8b 47 0a ; 0xf1e78 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf1e7c + mov al, byte [es:bx+016h] ; 26 8a 47 16 ; 0xf1e7f ata.c:265 + mov byte [bp-006h], al ; 88 46 fa ; 0xf1e83 + mov ax, word [es:bx+012h] ; 26 8b 47 12 ; 0xf1e86 ata.c:266 + mov word [bp-012h], ax ; 89 46 ee ; 0xf1e8a + mov ah, byte [es:bx+014h] ; 26 8a 67 14 ; 0xf1e8d ata.c:267 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf1e91 ata.c:270 + test al, al ; 84 c0 ; 0xf1e94 + je short 01e9bh ; 74 03 ; 0xf1e96 + jmp near 01f7eh ; e9 e3 00 ; 0xf1e98 + xor bx, bx ; 31 db ; 0xf1e9b ata.c:271 + xor dx, dx ; 31 d2 ; 0xf1e9d + xor ah, ah ; 30 e4 ; 0xf1e9f + mov si, word [bp-016h] ; 8b 76 ea ; 0xf1ea1 + mov cx, word [es:si] ; 26 8b 0c ; 0xf1ea4 + add cx, word [bp-01ch] ; 03 4e e4 ; 0xf1ea7 + mov word [bp-014h], cx ; 89 4e ec ; 0xf1eaa + adc bx, word [es:si+002h] ; 26 13 5c 02 ; 0xf1ead + adc dx, word [es:si+004h] ; 26 13 54 04 ; 0xf1eb1 + adc ax, word [es:si+006h] ; 26 13 44 06 ; 0xf1eb5 + test ax, ax ; 85 c0 ; 0xf1eb9 + jnbe short 01ed0h ; 77 13 ; 0xf1ebb + je short 01ec2h ; 74 03 ; 0xf1ebd + jmp near 01f34h ; e9 72 00 ; 0xf1ebf + test dx, dx ; 85 d2 ; 0xf1ec2 + jnbe short 01ed0h ; 77 0a ; 0xf1ec4 + jne short 01f34h ; 75 6c ; 0xf1ec6 + cmp bx, 01000h ; 81 fb 00 10 ; 0xf1ec8 + jnbe short 01ed0h ; 77 02 ; 0xf1ecc + jne short 01f34h ; 75 64 ; 0xf1ece + mov bx, si ; 89 f3 ; 0xf1ed0 ata.c:273 + mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf1ed2 + mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf1ed6 + mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf1eda + mov dx, word [es:si] ; 26 8b 14 ; 0xf1ede + mov si, strict word 00018h ; be 18 00 ; 0xf1ee1 + call 09b90h ; e8 a9 7c ; 0xf1ee4 + xor dh, dh ; 30 f6 ; 0xf1ee7 + mov word [bp-014h], dx ; 89 56 ec ; 0xf1ee9 + mov bx, word [bp-016h] ; 8b 5e ea ; 0xf1eec ata.c:274 + mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf1eef + mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf1ef3 + mov si, word [bp-016h] ; 8b 76 ea ; 0xf1ef7 + mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf1efa + mov dx, word [es:si] ; 26 8b 14 ; 0xf1efe + mov si, strict word 00020h ; be 20 00 ; 0xf1f01 + call 09b90h ; e8 89 7c ; 0xf1f04 + mov bx, dx ; 89 d3 ; 0xf1f07 + mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xf1f09 ata.c:275 + xor al, al ; 30 c0 ; 0xf1f0c + shr ax, 008h ; c1 e8 08 ; 0xf1f0e + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1f11 + inc dx ; 42 ; 0xf1f14 + inc dx ; 42 ; 0xf1f15 + out DX, AL ; ee ; 0xf1f16 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1f17 ata.c:276 + add dx, strict byte 00003h ; 83 c2 03 ; 0xf1f1a + mov al, byte [bp-014h] ; 8a 46 ec ; 0xf1f1d + out DX, AL ; ee ; 0xf1f20 + mov ax, bx ; 89 d8 ; 0xf1f21 ata.c:277 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1f23 + add dx, strict byte 00004h ; 83 c2 04 ; 0xf1f26 + out DX, AL ; ee ; 0xf1f29 + shr ax, 008h ; c1 e8 08 ; 0xf1f2a ata.c:278 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1f2d + add dx, strict byte 00005h ; 83 c2 05 ; 0xf1f30 + out DX, AL ; ee ; 0xf1f33 + mov es, [bp-018h] ; 8e 46 e8 ; 0xf1f34 ata.c:282 + mov bx, word [bp-016h] ; 8b 5e ea ; 0xf1f37 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf1f3a + mov byte [bp-006h], al ; 88 46 fa ; 0xf1f3d + mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf1f40 ata.c:283 + mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf1f44 + mov si, word [bp-016h] ; 8b 76 ea ; 0xf1f48 + mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf1f4b + mov dx, word [es:si] ; 26 8b 14 ; 0xf1f4f + mov si, strict word 00008h ; be 08 00 ; 0xf1f52 + call 09b90h ; e8 38 7c ; 0xf1f55 + mov word [bp-012h], dx ; 89 56 ee ; 0xf1f58 + mov bx, word [bp-016h] ; 8b 5e ea ; 0xf1f5b ata.c:284 + mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf1f5e + mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf1f62 + mov si, word [bp-016h] ; 8b 76 ea ; 0xf1f66 + mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf1f69 + mov dx, word [es:si] ; 26 8b 14 ; 0xf1f6d + mov si, strict word 00018h ; be 18 00 ; 0xf1f70 + call 09b90h ; e8 1a 7c ; 0xf1f73 + mov ah, dl ; 88 d4 ; 0xf1f76 + and ah, 00fh ; 80 e4 0f ; 0xf1f78 + or ah, 040h ; 80 cc 40 ; 0xf1f7b + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf1f7e ata.c:287 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf1f81 + mov AL, strict byte 00ah ; b0 0a ; 0xf1f84 + out DX, AL ; ee ; 0xf1f86 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1f87 ata.c:288 + inc dx ; 42 ; 0xf1f8a + xor al, al ; 30 c0 ; 0xf1f8b + out DX, AL ; ee ; 0xf1f8d + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1f8e ata.c:289 + inc dx ; 42 ; 0xf1f91 + inc dx ; 42 ; 0xf1f92 + mov al, byte [bp-01ch] ; 8a 46 e4 ; 0xf1f93 + out DX, AL ; ee ; 0xf1f96 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1f97 ata.c:290 + add dx, strict byte 00003h ; 83 c2 03 ; 0xf1f9a + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf1f9d + out DX, AL ; ee ; 0xf1fa0 + mov bx, word [bp-012h] ; 8b 5e ee ; 0xf1fa1 ata.c:291 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1fa4 + add dx, strict byte 00004h ; 83 c2 04 ; 0xf1fa7 + mov al, bl ; 88 d8 ; 0xf1faa + out DX, AL ; ee ; 0xf1fac + mov dx, bx ; 89 da ; 0xf1fad ata.c:292 + shr dx, 008h ; c1 ea 08 ; 0xf1faf + mov bx, word [bp-00ah] ; 8b 5e f6 ; 0xf1fb2 + add bx, strict byte 00005h ; 83 c3 05 ; 0xf1fb5 + mov al, dl ; 88 d0 ; 0xf1fb8 + mov dx, bx ; 89 da ; 0xf1fba + out DX, AL ; ee ; 0xf1fbc + test byte [bp-008h], 001h ; f6 46 f8 01 ; 0xf1fbd ata.c:293 + je short 01fc8h ; 74 05 ; 0xf1fc1 + mov dx, 000b0h ; ba b0 00 ; 0xf1fc3 + jmp short 01fcbh ; eb 03 ; 0xf1fc6 + mov dx, 000a0h ; ba a0 00 ; 0xf1fc8 + mov al, ah ; 88 e0 ; 0xf1fcb + xor ah, ah ; 30 e4 ; 0xf1fcd + or ax, dx ; 09 d0 ; 0xf1fcf + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1fd1 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf1fd4 + out DX, AL ; ee ; 0xf1fd7 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1fd8 ata.c:294 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf1fdb + mov al, byte [bp-01ah] ; 8a 46 e6 ; 0xf1fde + out DX, AL ; ee ; 0xf1fe1 + mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xf1fe2 ata.c:296 + cmp ax, 000c4h ; 3d c4 00 ; 0xf1fe5 + je short 01fefh ; 74 05 ; 0xf1fe8 + cmp ax, strict word 00029h ; 3d 29 00 ; 0xf1fea + jne short 01ff9h ; 75 0a ; 0xf1fed + mov si, word [bp-01ch] ; 8b 76 e4 ; 0xf1fef ata.c:297 + mov word [bp-01ch], strict word 00001h ; c7 46 e4 01 00 ; 0xf1ff2 ata.c:298 + jmp short 01ffch ; eb 03 ; 0xf1ff7 ata.c:299 + mov si, strict word 00001h ; be 01 00 ; 0xf1ff9 ata.c:300 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1ffc ata.c:304 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf1fff + in AL, DX ; ec ; 0xf2002 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2003 + mov bl, al ; 88 c3 ; 0xf2005 + test AL, strict byte 080h ; a8 80 ; 0xf2007 ata.c:305 + jne short 01ffch ; 75 f1 ; 0xf2009 + test AL, strict byte 001h ; a8 01 ; 0xf200b ata.c:309 + je short 0201eh ; 74 0f ; 0xf200d + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf200f ata.c:312 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2012 + mov AL, strict byte 008h ; b0 08 ; 0xf2015 + out DX, AL ; ee ; 0xf2017 + mov ax, strict word 00002h ; b8 02 00 ; 0xf2018 ata.c:313 + jmp near 020a8h ; e9 8a 00 ; 0xf201b + test bl, 008h ; f6 c3 08 ; 0xf201e ata.c:314 + jne short 02032h ; 75 0f ; 0xf2021 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2023 ata.c:317 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2026 + mov AL, strict byte 008h ; b0 08 ; 0xf2029 + out DX, AL ; ee ; 0xf202b + mov ax, strict word 00003h ; b8 03 00 ; 0xf202c ata.c:318 + jmp near 020a8h ; e9 76 00 ; 0xf202f + sti ; fb ; 0xf2032 ata.c:323 + cmp di, 0f800h ; 81 ff 00 f8 ; 0xf2033 ata.c:328 + jc short 02046h ; 72 0d ; 0xf2037 + sub di, 00800h ; 81 ef 00 08 ; 0xf2039 ata.c:329 + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf203d + add ax, 00080h ; 05 80 00 ; 0xf2040 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf2043 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2046 ata.c:336 + mov cx, word [bp-00eh] ; 8b 4e f2 ; 0xf2049 + mov es, [bp-010h] ; 8e 46 f0 ; 0xf204c + rep insw ; f3 6d ; 0xf204f + mov es, [bp-018h] ; 8e 46 e8 ; 0xf2051 ata.c:337 + mov bx, word [bp-016h] ; 8b 5e ea ; 0xf2054 + add word [es:bx+018h], si ; 26 01 77 18 ; 0xf2057 + dec word [bp-01ch] ; ff 4e e4 ; 0xf205b ata.c:338 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf205e ata.c:340 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf2061 + in AL, DX ; ec ; 0xf2064 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2065 + mov bl, al ; 88 c3 ; 0xf2067 + test AL, strict byte 080h ; a8 80 ; 0xf2069 ata.c:341 + jne short 0205eh ; 75 f1 ; 0xf206b + cmp word [bp-01ch], strict byte 00000h ; 83 7e e4 00 ; 0xf206d ata.c:344 + jne short 02087h ; 75 14 ; 0xf2071 + and AL, strict byte 0c9h ; 24 c9 ; 0xf2073 ata.c:345 + cmp AL, strict byte 040h ; 3c 40 ; 0xf2075 + je short 0209dh ; 74 24 ; 0xf2077 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2079 ata.c:349 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf207c + mov AL, strict byte 008h ; b0 08 ; 0xf207f + out DX, AL ; ee ; 0xf2081 + mov ax, strict word 00004h ; b8 04 00 ; 0xf2082 ata.c:350 + jmp short 020a8h ; eb 21 ; 0xf2085 + mov al, bl ; 88 d8 ; 0xf2087 ata.c:355 + and AL, strict byte 0c9h ; 24 c9 ; 0xf2089 + cmp AL, strict byte 048h ; 3c 48 ; 0xf208b + je short 02033h ; 74 a4 ; 0xf208d + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf208f ata.c:359 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2092 + mov AL, strict byte 008h ; b0 08 ; 0xf2095 + out DX, AL ; ee ; 0xf2097 + mov ax, strict word 00005h ; b8 05 00 ; 0xf2098 ata.c:360 + jmp short 020a8h ; eb 0b ; 0xf209b + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf209d ata.c:366 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf20a0 + mov AL, strict byte 008h ; b0 08 ; 0xf20a3 + out DX, AL ; ee ; 0xf20a5 + xor ax, ax ; 31 c0 ; 0xf20a6 ata.c:367 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf20a8 ata.c:368 + pop di ; 5f ; 0xf20ab + pop si ; 5e ; 0xf20ac + pop bp ; 5d ; 0xf20ad + retn ; c3 ; 0xf20ae + ; disGetNextSymbol 0xf20af LB 0x7e19 -> off=0x0 cb=00000000000006aa uValue=00000000000f0aaf 'ata_detect' +ata_detect: ; 0xf20af LB 0x6aa + push bp ; 55 ; 0xf20af ata.c:374 + mov bp, sp ; 89 e5 ; 0xf20b0 + push si ; 56 ; 0xf20b2 + push di ; 57 ; 0xf20b3 + sub sp, 00262h ; 81 ec 62 02 ; 0xf20b4 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf20b8 ata.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf20bb + mov es, ax ; 8e c0 ; 0xf20be + mov ax, word [es:bx] ; 26 8b 07 ; 0xf20c0 + mov word [bp-028h], ax ; 89 46 d8 ; 0xf20c3 ata.c:49 + mov bx, 00122h ; bb 22 01 ; 0xf20c6 ata.c:381 + mov es, ax ; 8e c0 ; 0xf20c9 + mov word [bp-02ch], bx ; 89 5e d4 ; 0xf20cb + mov word [bp-01ch], ax ; 89 46 e4 ; 0xf20ce + mov byte [es:bx+00204h], 000h ; 26 c6 87 04 02 00 ; 0xf20d1 ata.c:384 + mov word [es:bx+00206h], 001f0h ; 26 c7 87 06 02 f0 01 ; 0xf20d7 ata.c:385 + mov word [es:bx+00208h], 003f0h ; 26 c7 87 08 02 f0 03 ; 0xf20de ata.c:386 + mov byte [es:bx+00205h], 00eh ; 26 c6 87 05 02 0e ; 0xf20e5 ata.c:387 + mov byte [es:bx+0020ah], 000h ; 26 c6 87 0a 02 00 ; 0xf20eb ata.c:390 + mov word [es:bx+0020ch], 00170h ; 26 c7 87 0c 02 70 01 ; 0xf20f1 ata.c:391 + mov word [es:bx+0020eh], 00370h ; 26 c7 87 0e 02 70 03 ; 0xf20f8 ata.c:392 + mov byte [es:bx+0020bh], 00fh ; 26 c6 87 0b 02 0f ; 0xf20ff ata.c:393 + xor al, al ; 30 c0 ; 0xf2105 ata.c:414 + mov byte [bp-016h], al ; 88 46 ea ; 0xf2107 + mov byte [bp-00ah], al ; 88 46 f6 ; 0xf210a + mov byte [bp-00ch], al ; 88 46 f4 ; 0xf210d ata.c:416 + jmp near 026d9h ; e9 c6 05 ; 0xf2110 + mov ax, 000a0h ; b8 a0 00 ; 0xf2113 ata.c:431 + lea dx, [bx+006h] ; 8d 57 06 ; 0xf2116 + out DX, AL ; ee ; 0xf2119 + lea si, [bx+002h] ; 8d 77 02 ; 0xf211a ata.c:432 + mov AL, strict byte 055h ; b0 55 ; 0xf211d + mov dx, si ; 89 f2 ; 0xf211f + out DX, AL ; ee ; 0xf2121 + lea di, [bx+003h] ; 8d 7f 03 ; 0xf2122 ata.c:433 + mov AL, strict byte 0aah ; b0 aa ; 0xf2125 + mov dx, di ; 89 fa ; 0xf2127 + out DX, AL ; ee ; 0xf2129 + mov dx, si ; 89 f2 ; 0xf212a ata.c:434 + out DX, AL ; ee ; 0xf212c + mov AL, strict byte 055h ; b0 55 ; 0xf212d ata.c:435 + mov dx, di ; 89 fa ; 0xf212f + out DX, AL ; ee ; 0xf2131 + mov dx, si ; 89 f2 ; 0xf2132 ata.c:436 + out DX, AL ; ee ; 0xf2134 + mov AL, strict byte 0aah ; b0 aa ; 0xf2135 ata.c:437 + mov dx, di ; 89 fa ; 0xf2137 + out DX, AL ; ee ; 0xf2139 + mov dx, si ; 89 f2 ; 0xf213a ata.c:440 + in AL, DX ; ec ; 0xf213c + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf213d + mov cx, ax ; 89 c1 ; 0xf213f + mov dx, di ; 89 fa ; 0xf2141 ata.c:441 + in AL, DX ; ec ; 0xf2143 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2144 + cmp cl, 055h ; 80 f9 55 ; 0xf2146 ata.c:443 + jne short 02195h ; 75 4a ; 0xf2149 + cmp AL, strict byte 0aah ; 3c aa ; 0xf214b + jne short 02195h ; 75 46 ; 0xf214d + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf214f ata.c:444 + xor ah, ah ; 30 e4 ; 0xf2152 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf2154 + mov es, [bp-01ch] ; 8e 46 e4 ; 0xf2157 + mov si, word [bp-02ch] ; 8b 76 d4 ; 0xf215a + add si, ax ; 01 c6 ; 0xf215d + mov byte [es:si+022h], 001h ; 26 c6 44 22 01 ; 0xf215f + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf2164 ata.c:447 + xor ah, ah ; 30 e4 ; 0xf2167 + call 01d1dh ; e8 b1 fb ; 0xf2169 + cmp byte [bp-012h], 000h ; 80 7e ee 00 ; 0xf216c ata.c:450 + je short 02177h ; 74 05 ; 0xf2170 + mov ax, 000b0h ; b8 b0 00 ; 0xf2172 + jmp short 0217ah ; eb 03 ; 0xf2175 + mov ax, 000a0h ; b8 a0 00 ; 0xf2177 + lea dx, [bx+006h] ; 8d 57 06 ; 0xf217a + out DX, AL ; ee ; 0xf217d + lea dx, [bx+002h] ; 8d 57 02 ; 0xf217e ata.c:451 + in AL, DX ; ec ; 0xf2181 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2182 + mov cx, ax ; 89 c1 ; 0xf2184 + lea dx, [bx+003h] ; 8d 57 03 ; 0xf2186 ata.c:452 + in AL, DX ; ec ; 0xf2189 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf218a + cmp cl, 001h ; 80 f9 01 ; 0xf218c ata.c:453 + jne short 021d6h ; 75 45 ; 0xf218f + cmp al, cl ; 38 c8 ; 0xf2191 + je short 02197h ; 74 02 ; 0xf2193 + jmp short 021d6h ; eb 3f ; 0xf2195 + lea dx, [bx+004h] ; 8d 57 04 ; 0xf2197 ata.c:454 + in AL, DX ; ec ; 0xf219a + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf219b + mov cx, ax ; 89 c1 ; 0xf219d + mov ch, al ; 88 c5 ; 0xf219f + lea dx, [bx+005h] ; 8d 57 05 ; 0xf21a1 ata.c:455 + in AL, DX ; ec ; 0xf21a4 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf21a5 + mov word [bp-01ah], ax ; 89 46 e6 ; 0xf21a7 + mov al, byte [bp-01ah] ; 8a 46 e6 ; 0xf21aa + mov byte [bp-010h], al ; 88 46 f0 ; 0xf21ad + lea dx, [bx+007h] ; 8d 57 07 ; 0xf21b0 ata.c:456 + in AL, DX ; ec ; 0xf21b3 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf21b4 + cmp cl, 014h ; 80 f9 14 ; 0xf21b6 ata.c:458 + jne short 021d8h ; 75 1d ; 0xf21b9 + cmp byte [bp-01ah], 0ebh ; 80 7e e6 eb ; 0xf21bb + jne short 021d8h ; 75 17 ; 0xf21bf + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf21c1 ata.c:459 + xor ah, ah ; 30 e4 ; 0xf21c4 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf21c6 + mov es, [bp-01ch] ; 8e 46 e4 ; 0xf21c9 + mov bx, word [bp-02ch] ; 8b 5e d4 ; 0xf21cc + add bx, ax ; 01 c3 ; 0xf21cf + mov byte [es:bx+022h], 003h ; 26 c6 47 22 03 ; 0xf21d1 + jmp short 0221ch ; eb 44 ; 0xf21d6 ata.c:460 + test ch, ch ; 84 ed ; 0xf21d8 + jne short 021fdh ; 75 21 ; 0xf21da + cmp byte [bp-010h], 000h ; 80 7e f0 00 ; 0xf21dc + jne short 021fdh ; 75 1b ; 0xf21e0 + test al, al ; 84 c0 ; 0xf21e2 + je short 021fdh ; 74 17 ; 0xf21e4 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf21e6 ata.c:461 + xor ah, ah ; 30 e4 ; 0xf21e9 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf21eb + mov es, [bp-01ch] ; 8e 46 e4 ; 0xf21ee + mov bx, word [bp-02ch] ; 8b 5e d4 ; 0xf21f1 + add bx, ax ; 01 c3 ; 0xf21f4 + mov byte [es:bx+022h], 002h ; 26 c6 47 22 02 ; 0xf21f6 + jmp short 0221ch ; eb 1f ; 0xf21fb ata.c:462 + cmp ch, 0ffh ; 80 fd ff ; 0xf21fd + jne short 0221ch ; 75 1a ; 0xf2200 + cmp ch, byte [bp-010h] ; 3a 6e f0 ; 0xf2202 + jne short 0221ch ; 75 15 ; 0xf2205 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf2207 ata.c:463 + xor ah, ah ; 30 e4 ; 0xf220a + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf220c + mov es, [bp-01ch] ; 8e 46 e4 ; 0xf220f + mov bx, word [bp-02ch] ; 8b 5e d4 ; 0xf2212 + add bx, ax ; 01 c3 ; 0xf2215 + mov byte [es:bx+022h], 000h ; 26 c6 47 22 00 ; 0xf2217 + mov dx, word [bp-01eh] ; 8b 56 e2 ; 0xf221c ata.c:469 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf221f + mov AL, strict byte 008h ; b0 08 ; 0xf2222 + out DX, AL ; ee ; 0xf2224 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf2225 ata.c:471 + xor ah, ah ; 30 e4 ; 0xf2228 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf222a + mov es, [bp-01ch] ; 8e 46 e4 ; 0xf222d + mov bx, word [bp-02ch] ; 8b 5e d4 ; 0xf2230 + add bx, ax ; 01 c3 ; 0xf2233 + mov al, byte [es:bx+022h] ; 26 8a 47 22 ; 0xf2235 + mov byte [bp-008h], al ; 88 46 f8 ; 0xf2239 + cmp AL, strict byte 002h ; 3c 02 ; 0xf223c ata.c:474 + jne short 02289h ; 75 49 ; 0xf223e + mov byte [es:bx+023h], 0ffh ; 26 c6 47 23 ff ; 0xf2240 ata.c:482 + mov byte [es:bx+026h], 000h ; 26 c6 47 26 00 ; 0xf2245 ata.c:483 + lea dx, [bp-00266h] ; 8d 96 9a fd ; 0xf224a ata.c:484 + mov bx, word [bp-02ch] ; 8b 5e d4 ; 0xf224e + mov word [es:bx+008h], dx ; 26 89 57 08 ; 0xf2251 + mov [es:bx+00ah], ss ; 26 8c 57 0a ; 0xf2255 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf2259 ata.c:485 + mov byte [es:bx+00ch], al ; 26 88 47 0c ; 0xf225c + mov cx, strict word 00001h ; b9 01 00 ; 0xf2260 ata.c:487 + mov bx, 000ech ; bb ec 00 ; 0xf2263 + mov ax, word [bp-02ch] ; 8b 46 d4 ; 0xf2266 + mov dx, es ; 8c c2 ; 0xf2269 + call 01dfah ; e8 8c fb ; 0xf226b + test ax, ax ; 85 c0 ; 0xf226e + je short 0227dh ; 74 0b ; 0xf2270 + push 00124h ; 68 24 01 ; 0xf2272 ata.c:488 + push strict byte 00007h ; 6a 07 ; 0xf2275 + call 018ffh ; e8 85 f6 ; 0xf2277 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf227a + test byte [bp-00266h], 080h ; f6 86 9a fd 80 ; 0xf227d ata.c:490 + je short 0228ch ; 74 08 ; 0xf2282 + mov ax, strict word 00001h ; b8 01 00 ; 0xf2284 + jmp short 0228eh ; eb 05 ; 0xf2287 + jmp near 024a0h ; e9 14 02 ; 0xf2289 + xor ax, ax ; 31 c0 ; 0xf228c + mov byte [bp-00eh], al ; 88 46 f2 ; 0xf228e + mov byte [bp-018h], 000h ; c6 46 e8 00 ; 0xf2291 ata.c:494 + mov word [bp-022h], 00200h ; c7 46 de 00 02 ; 0xf2295 ata.c:496 + mov ax, word [bp-00264h] ; 8b 86 9c fd ; 0xf229a ata.c:498 + mov word [bp-032h], ax ; 89 46 ce ; 0xf229e + mov ax, word [bp-00260h] ; 8b 86 a0 fd ; 0xf22a1 ata.c:499 + mov word [bp-024h], ax ; 89 46 dc ; 0xf22a5 + mov ax, word [bp-0025ah] ; 8b 86 a6 fd ; 0xf22a8 ata.c:500 + mov word [bp-030h], ax ; 89 46 d0 ; 0xf22ac + mov ax, word [bp-001eeh] ; 8b 86 12 fe ; 0xf22af ata.c:502 + mov word [bp-02eh], ax ; 89 46 d2 ; 0xf22b3 + mov si, word [bp-001ech] ; 8b b6 14 fe ; 0xf22b6 + xor ax, ax ; 31 c0 ; 0xf22ba + mov word [bp-020h], ax ; 89 46 e0 ; 0xf22bc + mov word [bp-026h], ax ; 89 46 da ; 0xf22bf + cmp si, 00fffh ; 81 fe ff 0f ; 0xf22c2 ata.c:503 + jne short 022e7h ; 75 1f ; 0xf22c6 + cmp word [bp-02eh], strict byte 0ffffh ; 83 7e d2 ff ; 0xf22c8 + jne short 022e7h ; 75 19 ; 0xf22cc + mov ax, word [bp-00198h] ; 8b 86 68 fe ; 0xf22ce ata.c:504 + mov word [bp-026h], ax ; 89 46 da ; 0xf22d2 + mov ax, word [bp-0019ah] ; 8b 86 66 fe ; 0xf22d5 + mov word [bp-020h], ax ; 89 46 e0 ; 0xf22d9 + mov si, word [bp-0019ch] ; 8b b6 64 fe ; 0xf22dc + mov ax, word [bp-0019eh] ; 8b 86 62 fe ; 0xf22e0 + mov word [bp-02eh], ax ; 89 46 d2 ; 0xf22e4 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf22e7 ata.c:505 + cmp AL, strict byte 001h ; 3c 01 ; 0xf22ea + jc short 022fah ; 72 0c ; 0xf22ec + jbe short 02302h ; 76 12 ; 0xf22ee + cmp AL, strict byte 003h ; 3c 03 ; 0xf22f0 + je short 0230ah ; 74 16 ; 0xf22f2 + cmp AL, strict byte 002h ; 3c 02 ; 0xf22f4 + je short 02306h ; 74 0e ; 0xf22f6 + jmp short 02344h ; eb 4a ; 0xf22f8 + test al, al ; 84 c0 ; 0xf22fa + jne short 02344h ; 75 46 ; 0xf22fc + mov BL, strict byte 01eh ; b3 1e ; 0xf22fe ata.c:508 + jmp short 0230ch ; eb 0a ; 0xf2300 ata.c:509 + mov BL, strict byte 026h ; b3 26 ; 0xf2302 ata.c:511 + jmp short 0230ch ; eb 06 ; 0xf2304 ata.c:512 + mov BL, strict byte 067h ; b3 67 ; 0xf2306 ata.c:514 + jmp short 0230ch ; eb 02 ; 0xf2308 ata.c:515 + mov BL, strict byte 070h ; b3 70 ; 0xf230a ata.c:517 + mov al, bl ; 88 d8 ; 0xf230c ata.c:524 + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf230e + xor ah, ah ; 30 e4 ; 0xf2310 + call 01650h ; e8 3b f3 ; 0xf2312 + xor ah, ah ; 30 e4 ; 0xf2315 + mov dx, ax ; 89 c2 ; 0xf2317 + sal dx, 008h ; c1 e2 08 ; 0xf2319 + mov al, bl ; 88 d8 ; 0xf231c + call 01650h ; e8 2f f3 ; 0xf231e + xor ah, ah ; 30 e4 ; 0xf2321 + add ax, dx ; 01 d0 ; 0xf2323 + mov word [bp-03ah], ax ; 89 46 c6 ; 0xf2325 + mov al, bl ; 88 d8 ; 0xf2328 ata.c:525 + add AL, strict byte 002h ; 04 02 ; 0xf232a + xor ah, ah ; 30 e4 ; 0xf232c + call 01650h ; e8 1f f3 ; 0xf232e + xor ah, ah ; 30 e4 ; 0xf2331 + mov word [bp-03ch], ax ; 89 46 c4 ; 0xf2333 + mov al, bl ; 88 d8 ; 0xf2336 ata.c:526 + add AL, strict byte 007h ; 04 07 ; 0xf2338 + call 01650h ; e8 13 f3 ; 0xf233a + xor ah, ah ; 30 e4 ; 0xf233d + mov word [bp-038h], ax ; 89 46 c8 ; 0xf233f + jmp short 02356h ; eb 12 ; 0xf2342 ata.c:528 + push word [bp-026h] ; ff 76 da ; 0xf2344 ata.c:529 + push word [bp-020h] ; ff 76 e0 ; 0xf2347 + push si ; 56 ; 0xf234a + push word [bp-02eh] ; ff 76 d2 ; 0xf234b + mov dx, ss ; 8c d2 ; 0xf234e + lea ax, [bp-03ch] ; 8d 46 c4 ; 0xf2350 + call 058b0h ; e8 5a 35 ; 0xf2353 + mov bx, 00da0h ; bb a0 0d ; 0xf2356 ata.c:532 + mov cx, ds ; 8c d9 ; 0xf2359 + mov ax, strict word 00004h ; b8 04 00 ; 0xf235b + call 018bch ; e8 5b f5 ; 0xf235e + mov ax, word [bp-038h] ; 8b 46 c8 ; 0xf2361 + push ax ; 50 ; 0xf2364 + mov ax, word [bp-03ch] ; 8b 46 c4 ; 0xf2365 + push ax ; 50 ; 0xf2368 + mov ax, word [bp-03ah] ; 8b 46 c6 ; 0xf2369 + push ax ; 50 ; 0xf236c + push word [bp-030h] ; ff 76 d0 ; 0xf236d + push word [bp-024h] ; ff 76 dc ; 0xf2370 + push word [bp-032h] ; ff 76 ce ; 0xf2373 + mov al, byte [bp-012h] ; 8a 46 ee ; 0xf2376 + xor ah, ah ; 30 e4 ; 0xf2379 + push ax ; 50 ; 0xf237b + mov al, byte [bp-014h] ; 8a 46 ec ; 0xf237c + push ax ; 50 ; 0xf237f + push 0014dh ; 68 4d 01 ; 0xf2380 + push strict byte 00004h ; 6a 04 ; 0xf2383 + call 018ffh ; e8 77 f5 ; 0xf2385 + add sp, strict byte 00014h ; 83 c4 14 ; 0xf2388 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf238b ata.c:534 + xor ah, ah ; 30 e4 ; 0xf238e + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf2390 + mov es, [bp-01ch] ; 8e 46 e4 ; 0xf2393 + mov di, word [bp-02ch] ; 8b 7e d4 ; 0xf2396 + add di, ax ; 01 c7 ; 0xf2399 + mov byte [es:di+023h], 0ffh ; 26 c6 45 23 ff ; 0xf239b + mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf23a0 ata.c:535 + mov byte [es:di+024h], al ; 26 88 45 24 ; 0xf23a3 + mov al, byte [bp-018h] ; 8a 46 e8 ; 0xf23a7 ata.c:536 + mov byte [es:di+026h], al ; 26 88 45 26 ; 0xf23aa + mov ax, word [bp-022h] ; 8b 46 de ; 0xf23ae ata.c:537 + mov word [es:di+028h], ax ; 26 89 45 28 ; 0xf23b1 + mov ax, word [bp-024h] ; 8b 46 dc ; 0xf23b5 ata.c:538 + mov word [es:di+030h], ax ; 26 89 45 30 ; 0xf23b8 + mov ax, word [bp-032h] ; 8b 46 ce ; 0xf23bc ata.c:539 + mov word [es:di+032h], ax ; 26 89 45 32 ; 0xf23bf + mov ax, word [bp-030h] ; 8b 46 d0 ; 0xf23c3 ata.c:540 + mov word [es:di+034h], ax ; 26 89 45 34 ; 0xf23c6 + mov ax, word [bp-026h] ; 8b 46 da ; 0xf23ca ata.c:541 + mov word [es:di+03ch], ax ; 26 89 45 3c ; 0xf23cd + mov ax, word [bp-020h] ; 8b 46 e0 ; 0xf23d1 + mov word [es:di+03ah], ax ; 26 89 45 3a ; 0xf23d4 + mov word [es:di+038h], si ; 26 89 75 38 ; 0xf23d8 + mov ax, word [bp-02eh] ; 8b 46 d2 ; 0xf23dc + mov word [es:di+036h], ax ; 26 89 45 36 ; 0xf23df + lea di, [di+02ah] ; 8d 7d 2a ; 0xf23e3 ata.c:542 + push DS ; 1e ; 0xf23e6 + push SS ; 16 ; 0xf23e7 + pop DS ; 1f ; 0xf23e8 + lea si, [bp-03ch] ; 8d 76 c4 ; 0xf23e9 + movsw ; a5 ; 0xf23ec + movsw ; a5 ; 0xf23ed + movsw ; a5 ; 0xf23ee + pop DS ; 1f ; 0xf23ef + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf23f0 ata.c:543 + cmp AL, strict byte 002h ; 3c 02 ; 0xf23f3 + jnc short 0246ah ; 73 73 ; 0xf23f5 + test al, al ; 84 c0 ; 0xf23f7 ata.c:549 + jne short 02400h ; 75 05 ; 0xf23f9 + mov bx, strict word 0003dh ; bb 3d 00 ; 0xf23fb ata.c:550 + jmp short 02403h ; eb 03 ; 0xf23fe ata.c:551 + mov bx, strict word 0004dh ; bb 4d 00 ; 0xf2400 ata.c:552 + mov cx, word [bp-028h] ; 8b 4e d8 ; 0xf2403 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf2406 ata.c:564 + xor ah, ah ; 30 e4 ; 0xf2409 + imul si, ax, strict byte 00005h ; 6b f0 05 ; 0xf240b + sal si, 002h ; c1 e6 02 ; 0xf240e + add si, 00104h ; 81 c6 04 01 ; 0xf2411 + xor al, al ; 30 c0 ; 0xf2415 + mov es, ax ; 8e c0 ; 0xf2417 + mov word [es:si], bx ; 26 89 1c ; 0xf2419 ata.c:565 + mov word [es:si+002h], cx ; 26 89 4c 02 ; 0xf241c + mov es, cx ; 8e c1 ; 0xf2420 ata.c:571 + mov word [es:bx+00ch], strict word 00000h ; 26 c7 47 0c 00 00 ; 0xf2422 + mov ax, word [es:bx+00ch] ; 26 8b 47 0c ; 0xf2428 + mov word [es:bx+005h], ax ; 26 89 47 05 ; 0xf242c + mov word [es:bx+007h], strict word 00000h ; 26 c7 47 07 00 00 ; 0xf2430 + mov ax, word [bp-03ah] ; 8b 46 c6 ; 0xf2436 ata.c:573 + mov word [es:bx], ax ; 26 89 07 ; 0xf2439 + mov al, byte [bp-03ch] ; 8a 46 c4 ; 0xf243c ata.c:574 + mov byte [es:bx+002h], al ; 26 88 47 02 ; 0xf243f + mov byte [es:bx+003h], 0a0h ; 26 c6 47 03 a0 ; 0xf2443 ata.c:575 + mov al, byte [bp-030h] ; 8a 46 d0 ; 0xf2448 ata.c:576 + mov byte [es:bx+004h], al ; 26 88 47 04 ; 0xf244b + mov ax, word [bp-032h] ; 8b 46 ce ; 0xf244f ata.c:577 + mov word [es:bx+009h], ax ; 26 89 47 09 ; 0xf2452 + mov al, byte [bp-024h] ; 8a 46 dc ; 0xf2456 ata.c:578 + mov byte [es:bx+00bh], al ; 26 88 47 0b ; 0xf2459 + mov al, byte [bp-038h] ; 8a 46 c8 ; 0xf245d ata.c:579 + mov byte [es:bx+00eh], al ; 26 88 47 0e ; 0xf2460 + xor al, al ; 30 c0 ; 0xf2464 ata.c:580 + xor ah, ah ; 30 e4 ; 0xf2466 ata.c:581 + jmp short 02471h ; eb 07 ; 0xf2468 + jmp short 0248ah ; eb 1e ; 0xf246a + cmp ah, 00fh ; 80 fc 0f ; 0xf246c + jnc short 02482h ; 73 11 ; 0xf246f + mov dl, ah ; 88 e2 ; 0xf2471 ata.c:582 + xor dh, dh ; 30 f6 ; 0xf2473 + mov es, cx ; 8e c1 ; 0xf2475 + mov si, bx ; 89 de ; 0xf2477 + add si, dx ; 01 d6 ; 0xf2479 + add al, byte [es:si] ; 26 02 04 ; 0xf247b + db 0feh, 0c4h + ; inc ah ; fe c4 ; 0xf247e + jmp short 0246ch ; eb ea ; 0xf2480 + neg al ; f6 d8 ; 0xf2482 ata.c:583 + mov es, cx ; 8e c1 ; 0xf2484 ata.c:584 + mov byte [es:bx+00fh], al ; 26 88 47 0f ; 0xf2486 + mov bl, byte [bp-00ah] ; 8a 5e f6 ; 0xf248a ata.c:588 + xor bh, bh ; 30 ff ; 0xf248d + mov es, [bp-01ch] ; 8e 46 e4 ; 0xf248f + add bx, word [bp-02ch] ; 03 5e d4 ; 0xf2492 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf2495 + mov byte [es:bx+001e3h], al ; 26 88 87 e3 01 ; 0xf2498 + inc byte [bp-00ah] ; fe 46 f6 ; 0xf249d ata.c:589 + cmp byte [bp-008h], 003h ; 80 7e f8 03 ; 0xf24a0 ata.c:593 + jne short 02506h ; 75 60 ; 0xf24a4 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf24a6 ata.c:598 + xor ah, ah ; 30 e4 ; 0xf24a9 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf24ab + mov es, [bp-01ch] ; 8e 46 e4 ; 0xf24ae + mov bx, word [bp-02ch] ; 8b 5e d4 ; 0xf24b1 + add bx, ax ; 01 c3 ; 0xf24b4 + mov byte [es:bx+023h], 005h ; 26 c6 47 23 05 ; 0xf24b6 + mov byte [es:bx+026h], 000h ; 26 c6 47 26 00 ; 0xf24bb ata.c:599 + lea dx, [bp-00266h] ; 8d 96 9a fd ; 0xf24c0 ata.c:600 + mov bx, word [bp-02ch] ; 8b 5e d4 ; 0xf24c4 + mov word [es:bx+008h], dx ; 26 89 57 08 ; 0xf24c7 + mov [es:bx+00ah], ss ; 26 8c 57 0a ; 0xf24cb + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf24cf ata.c:601 + mov byte [es:bx+00ch], al ; 26 88 47 0c ; 0xf24d2 + mov cx, strict word 00001h ; b9 01 00 ; 0xf24d6 ata.c:603 + mov bx, 000a1h ; bb a1 00 ; 0xf24d9 + mov ax, word [bp-02ch] ; 8b 46 d4 ; 0xf24dc + mov dx, es ; 8c c2 ; 0xf24df + call 01dfah ; e8 16 f9 ; 0xf24e1 + test ax, ax ; 85 c0 ; 0xf24e4 + je short 024f3h ; 74 0b ; 0xf24e6 + push 00174h ; 68 74 01 ; 0xf24e8 ata.c:604 + push strict byte 00007h ; 6a 07 ; 0xf24eb + call 018ffh ; e8 0f f4 ; 0xf24ed + add sp, strict byte 00004h ; 83 c4 04 ; 0xf24f0 + mov cl, byte [bp-00265h] ; 8a 8e 9b fd ; 0xf24f3 ata.c:606 + and cl, 01fh ; 80 e1 1f ; 0xf24f7 + test byte [bp-00266h], 080h ; f6 86 9a fd 80 ; 0xf24fa ata.c:607 + je short 02508h ; 74 07 ; 0xf24ff + mov ax, strict word 00001h ; b8 01 00 ; 0xf2501 + jmp short 0250ah ; eb 04 ; 0xf2504 + jmp short 02540h ; eb 38 ; 0xf2506 + xor ax, ax ; 31 c0 ; 0xf2508 + mov dl, byte [bp-00ch] ; 8a 56 f4 ; 0xf250a ata.c:615 + xor dh, dh ; 30 f6 ; 0xf250d + imul dx, dx, strict byte 0001ch ; 6b d2 1c ; 0xf250f + mov es, [bp-01ch] ; 8e 46 e4 ; 0xf2512 + mov bx, word [bp-02ch] ; 8b 5e d4 ; 0xf2515 + add bx, dx ; 01 d3 ; 0xf2518 + mov byte [es:bx+023h], cl ; 26 88 4f 23 ; 0xf251a + mov byte [es:bx+024h], al ; 26 88 47 24 ; 0xf251e ata.c:616 + mov byte [es:bx+026h], 000h ; 26 c6 47 26 00 ; 0xf2522 ata.c:617 + mov word [es:bx+028h], 00800h ; 26 c7 47 28 00 08 ; 0xf2527 ata.c:618 + mov bl, byte [bp-016h] ; 8a 5e ea ; 0xf252d ata.c:621 + xor bh, bh ; 30 ff ; 0xf2530 + add bx, word [bp-02ch] ; 03 5e d4 ; 0xf2532 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf2535 + mov byte [es:bx+001f4h], al ; 26 88 87 f4 01 ; 0xf2538 + inc byte [bp-016h] ; fe 46 ea ; 0xf253d ata.c:622 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf2540 ata.c:631 + cmp AL, strict byte 003h ; 3c 03 ; 0xf2543 + je short 02577h ; 74 30 ; 0xf2545 + cmp AL, strict byte 002h ; 3c 02 ; 0xf2547 + jne short 025a7h ; 75 5c ; 0xf2549 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf254b ata.c:633 + xor ah, ah ; 30 e4 ; 0xf254e + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf2550 + mov es, [bp-01ch] ; 8e 46 e4 ; 0xf2553 + mov di, word [bp-02ch] ; 8b 7e d4 ; 0xf2556 + add di, ax ; 01 c7 ; 0xf2559 + mov ax, word [es:di+03ch] ; 26 8b 45 3c ; 0xf255b + mov bx, word [es:di+03ah] ; 26 8b 5d 3a ; 0xf255f + mov cx, word [es:di+038h] ; 26 8b 4d 38 ; 0xf2563 + mov dx, word [es:di+036h] ; 26 8b 55 36 ; 0xf2567 + mov si, strict word 0000bh ; be 0b 00 ; 0xf256b + call 09b90h ; e8 1f 76 ; 0xf256e + mov word [bp-02ah], dx ; 89 56 d6 ; 0xf2571 + mov word [bp-034h], cx ; 89 4e cc ; 0xf2574 + mov al, byte [bp-001c5h] ; 8a 86 3b fe ; 0xf2577 ata.c:636 + xor ah, ah ; 30 e4 ; 0xf257b + mov dx, ax ; 89 c2 ; 0xf257d + sal dx, 008h ; c1 e2 08 ; 0xf257f + mov al, byte [bp-001c6h] ; 8a 86 3a fe ; 0xf2582 + or ax, dx ; 09 d0 ; 0xf2586 + mov byte [bp-006h], 00fh ; c6 46 fa 0f ; 0xf2588 ata.c:637 + jmp short 02597h ; eb 09 ; 0xf258c + dec byte [bp-006h] ; fe 4e fa ; 0xf258e ata.c:640 + cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf2591 + jbe short 025a3h ; 76 0c ; 0xf2595 + mov cl, byte [bp-006h] ; 8a 4e fa ; 0xf2597 + mov dx, strict word 00001h ; ba 01 00 ; 0xf259a + sal dx, CL ; d3 e2 ; 0xf259d + test ax, dx ; 85 d0 ; 0xf259f + je short 0258eh ; 74 eb ; 0xf25a1 + xor di, di ; 31 ff ; 0xf25a3 ata.c:643 + jmp short 025aeh ; eb 07 ; 0xf25a5 + jmp short 025ddh ; eb 34 ; 0xf25a7 + cmp di, strict byte 00014h ; 83 ff 14 ; 0xf25a9 + jnl short 025c3h ; 7d 15 ; 0xf25ac + mov si, di ; 89 fe ; 0xf25ae ata.c:644 + add si, di ; 01 fe ; 0xf25b0 + mov al, byte [bp+si-0022fh] ; 8a 82 d1 fd ; 0xf25b2 + mov byte [bp+si-066h], al ; 88 42 9a ; 0xf25b6 + mov al, byte [bp+si-00230h] ; 8a 82 d0 fd ; 0xf25b9 ata.c:645 + mov byte [bp+si-065h], al ; 88 42 9b ; 0xf25bd + inc di ; 47 ; 0xf25c0 ata.c:646 + jmp short 025a9h ; eb e6 ; 0xf25c1 + mov byte [bp-03eh], 000h ; c6 46 c2 00 ; 0xf25c3 ata.c:649 + mov di, strict word 00027h ; bf 27 00 ; 0xf25c7 ata.c:650 + jmp short 025d1h ; eb 05 ; 0xf25ca + dec di ; 4f ; 0xf25cc ata.c:655 + test di, di ; 85 ff ; 0xf25cd + jle short 025ddh ; 7e 0c ; 0xf25cf + cmp byte [bp+di-066h], 020h ; 80 7b 9a 20 ; 0xf25d1 + jne short 025ddh ; 75 06 ; 0xf25d5 + mov byte [bp+di-066h], 000h ; c6 43 9a 00 ; 0xf25d7 + jmp short 025cch ; eb ef ; 0xf25db + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf25dd ata.c:662 + cmp AL, strict byte 003h ; 3c 03 ; 0xf25e0 + je short 02641h ; 74 5d ; 0xf25e2 + cmp AL, strict byte 002h ; 3c 02 ; 0xf25e4 + je short 025efh ; 74 07 ; 0xf25e6 + cmp AL, strict byte 001h ; 3c 01 ; 0xf25e8 + je short 0264ch ; 74 60 ; 0xf25ea + jmp near 026d0h ; e9 e1 00 ; 0xf25ec + cmp byte [bp-012h], 000h ; 80 7e ee 00 ; 0xf25ef ata.c:665 + je short 025fah ; 74 05 ; 0xf25f3 + mov ax, 0019fh ; b8 9f 01 ; 0xf25f5 + jmp short 025fdh ; eb 03 ; 0xf25f8 + mov ax, 001a6h ; b8 a6 01 ; 0xf25fa + push ax ; 50 ; 0xf25fd + mov al, byte [bp-014h] ; 8a 46 ec ; 0xf25fe + xor ah, ah ; 30 e4 ; 0xf2601 + push ax ; 50 ; 0xf2603 + push 001adh ; 68 ad 01 ; 0xf2604 + push strict byte 00002h ; 6a 02 ; 0xf2607 + call 018ffh ; e8 f3 f2 ; 0xf2609 + add sp, strict byte 00008h ; 83 c4 08 ; 0xf260c + xor di, di ; 31 ff ; 0xf260f ata.c:666 + mov al, byte [bp+di-066h] ; 8a 43 9a ; 0xf2611 ata.c:667 + xor ah, ah ; 30 e4 ; 0xf2614 + inc di ; 47 ; 0xf2616 + test ax, ax ; 85 c0 ; 0xf2617 + je short 02629h ; 74 0e ; 0xf2619 + push ax ; 50 ; 0xf261b ata.c:668 + push 001b8h ; 68 b8 01 ; 0xf261c + push strict byte 00002h ; 6a 02 ; 0xf261f + call 018ffh ; e8 db f2 ; 0xf2621 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf2624 + jmp short 02611h ; eb e8 ; 0xf2627 + push word [bp-034h] ; ff 76 cc ; 0xf2629 ata.c:669 + push word [bp-02ah] ; ff 76 d6 ; 0xf262c + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf262f + push ax ; 50 ; 0xf2632 + push 001bbh ; 68 bb 01 ; 0xf2633 + push strict byte 00002h ; 6a 02 ; 0xf2636 + call 018ffh ; e8 c4 f2 ; 0xf2638 + add sp, strict byte 0000ah ; 83 c4 0a ; 0xf263b + jmp near 026d0h ; e9 8f 00 ; 0xf263e ata.c:670 + cmp byte [bp-012h], 000h ; 80 7e ee 00 ; 0xf2641 ata.c:672 + je short 0264eh ; 74 07 ; 0xf2645 + mov ax, 0019fh ; b8 9f 01 ; 0xf2647 + jmp short 02651h ; eb 05 ; 0xf264a + jmp short 026b0h ; eb 62 ; 0xf264c + mov ax, 001a6h ; b8 a6 01 ; 0xf264e + push ax ; 50 ; 0xf2651 + mov al, byte [bp-014h] ; 8a 46 ec ; 0xf2652 + xor ah, ah ; 30 e4 ; 0xf2655 + push ax ; 50 ; 0xf2657 + push 001adh ; 68 ad 01 ; 0xf2658 + push strict byte 00002h ; 6a 02 ; 0xf265b + call 018ffh ; e8 9f f2 ; 0xf265d + add sp, strict byte 00008h ; 83 c4 08 ; 0xf2660 + xor di, di ; 31 ff ; 0xf2663 ata.c:673 + mov al, byte [bp+di-066h] ; 8a 43 9a ; 0xf2665 ata.c:674 + xor ah, ah ; 30 e4 ; 0xf2668 + inc di ; 47 ; 0xf266a + test ax, ax ; 85 c0 ; 0xf266b + je short 0267dh ; 74 0e ; 0xf266d + push ax ; 50 ; 0xf266f ata.c:675 + push 001b8h ; 68 b8 01 ; 0xf2670 + push strict byte 00002h ; 6a 02 ; 0xf2673 + call 018ffh ; e8 87 f2 ; 0xf2675 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf2678 + jmp short 02665h ; eb e8 ; 0xf267b + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf267d ata.c:676 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf2680 + mov es, [bp-01ch] ; 8e 46 e4 ; 0xf2683 + mov bx, word [bp-02ch] ; 8b 5e d4 ; 0xf2686 + add bx, ax ; 01 c3 ; 0xf2689 + cmp byte [es:bx+023h], 005h ; 26 80 7f 23 05 ; 0xf268b + jne short 0269dh ; 75 0b ; 0xf2690 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf2692 ata.c:677 + xor ah, ah ; 30 e4 ; 0xf2695 + push ax ; 50 ; 0xf2697 + push 001dbh ; 68 db 01 ; 0xf2698 + jmp short 026a6h ; eb 09 ; 0xf269b ata.c:678 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf269d ata.c:679 + xor ah, ah ; 30 e4 ; 0xf26a0 + push ax ; 50 ; 0xf26a2 + push 001f5h ; 68 f5 01 ; 0xf26a3 + push strict byte 00002h ; 6a 02 ; 0xf26a6 + call 018ffh ; e8 54 f2 ; 0xf26a8 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf26ab + jmp short 026d0h ; eb 20 ; 0xf26ae ata.c:680 + cmp byte [bp-012h], 000h ; 80 7e ee 00 ; 0xf26b0 ata.c:682 + je short 026bbh ; 74 05 ; 0xf26b4 + mov ax, 0019fh ; b8 9f 01 ; 0xf26b6 + jmp short 026beh ; eb 03 ; 0xf26b9 + mov ax, 001a6h ; b8 a6 01 ; 0xf26bb + push ax ; 50 ; 0xf26be + mov al, byte [bp-014h] ; 8a 46 ec ; 0xf26bf + xor ah, ah ; 30 e4 ; 0xf26c2 + push ax ; 50 ; 0xf26c4 + push 00207h ; 68 07 02 ; 0xf26c5 + push strict byte 00002h ; 6a 02 ; 0xf26c8 + call 018ffh ; e8 32 f2 ; 0xf26ca + add sp, strict byte 00008h ; 83 c4 08 ; 0xf26cd + inc byte [bp-00ch] ; fe 46 f4 ; 0xf26d0 ata.c:687 + cmp byte [bp-00ch], 008h ; 80 7e f4 08 ; 0xf26d3 + jnc short 0272eh ; 73 55 ; 0xf26d7 + mov bl, byte [bp-00ch] ; 8a 5e f4 ; 0xf26d9 + xor bh, bh ; 30 ff ; 0xf26dc + mov ax, bx ; 89 d8 ; 0xf26de + cwd ; 99 ; 0xf26e0 + db 02bh, 0c2h + ; sub ax, dx ; 2b c2 ; 0xf26e1 + sar ax, 1 ; d1 f8 ; 0xf26e3 + mov cx, ax ; 89 c1 ; 0xf26e5 + mov byte [bp-014h], al ; 88 46 ec ; 0xf26e7 + mov ax, bx ; 89 d8 ; 0xf26ea + cwd ; 99 ; 0xf26ec + mov bx, strict word 00002h ; bb 02 00 ; 0xf26ed + idiv bx ; f7 fb ; 0xf26f0 + mov word [bp-036h], dx ; 89 56 ca ; 0xf26f2 + mov al, byte [bp-036h] ; 8a 46 ca ; 0xf26f5 + mov byte [bp-012h], al ; 88 46 ee ; 0xf26f8 + mov al, cl ; 88 c8 ; 0xf26fb + xor ah, ah ; 30 e4 ; 0xf26fd + imul ax, ax, strict byte 00006h ; 6b c0 06 ; 0xf26ff + mov es, [bp-01ch] ; 8e 46 e4 ; 0xf2702 + mov si, word [bp-02ch] ; 8b 76 d4 ; 0xf2705 + add si, ax ; 01 c6 ; 0xf2708 + mov bx, word [es:si+00206h] ; 26 8b 9c 06 02 ; 0xf270a + mov ax, word [es:si+00208h] ; 26 8b 84 08 02 ; 0xf270f + mov word [bp-01eh], ax ; 89 46 e2 ; 0xf2714 + mov dx, ax ; 89 c2 ; 0xf2717 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2719 + mov AL, strict byte 00ah ; b0 0a ; 0xf271c + out DX, AL ; ee ; 0xf271e + cmp byte [bp-036h], 000h ; 80 7e ca 00 ; 0xf271f + jne short 02728h ; 75 03 ; 0xf2723 + jmp near 02113h ; e9 eb f9 ; 0xf2725 + mov ax, 000b0h ; b8 b0 00 ; 0xf2728 + jmp near 02116h ; e9 e8 f9 ; 0xf272b + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf272e ata.c:690 + mov es, [bp-01ch] ; 8e 46 e4 ; 0xf2731 + mov bx, word [bp-02ch] ; 8b 5e d4 ; 0xf2734 + mov byte [es:bx+001e2h], al ; 26 88 87 e2 01 ; 0xf2737 + mov al, byte [bp-016h] ; 8a 46 ea ; 0xf273c ata.c:691 + mov byte [es:bx+001f3h], al ; 26 88 87 f3 01 ; 0xf273f + mov bx, strict word 00075h ; bb 75 00 ; 0xf2744 ata.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf2747 + mov es, ax ; 8e c0 ; 0xf274a + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf274c + mov byte [es:bx], al ; 26 88 07 ; 0xf274f + lea sp, [bp-004h] ; 8d 66 fc ; 0xf2752 ata.c:704 + pop di ; 5f ; 0xf2755 + pop si ; 5e ; 0xf2756 + pop bp ; 5d ; 0xf2757 + retn ; c3 ; 0xf2758 + ; disGetNextSymbol 0xf2759 LB 0x776f -> off=0x0 cb=000000000000028a uValue=00000000000f1159 'ata_cmd_data_out' +ata_cmd_data_out: ; 0xf2759 LB 0x28a + push bp ; 55 ; 0xf2759 ata.c:718 + mov bp, sp ; 89 e5 ; 0xf275a + push si ; 56 ; 0xf275c + push di ; 57 ; 0xf275d + sub sp, strict byte 00020h ; 83 ec 20 ; 0xf275e + mov di, ax ; 89 c7 ; 0xf2761 + mov word [bp-00ah], dx ; 89 56 f6 ; 0xf2763 + mov word [bp-01eh], bx ; 89 5e e2 ; 0xf2766 + mov word [bp-022h], cx ; 89 4e de ; 0xf2769 + mov es, dx ; 8e c2 ; 0xf276c ata.c:730 + mov al, byte [es:di+00ch] ; 26 8a 45 0c ; 0xf276e + xor ah, ah ; 30 e4 ; 0xf2772 + mov dx, ax ; 89 c2 ; 0xf2774 + shr ax, 1 ; d1 e8 ; 0xf2776 ata.c:731 + and dl, 001h ; 80 e2 01 ; 0xf2778 ata.c:732 + mov byte [bp-006h], dl ; 88 56 fa ; 0xf277b + xor ah, ah ; 30 e4 ; 0xf277e ata.c:734 + imul ax, ax, strict byte 00006h ; 6b c0 06 ; 0xf2780 + mov bx, di ; 89 fb ; 0xf2783 + add bx, ax ; 01 c3 ; 0xf2785 + mov ax, word [es:bx+00206h] ; 26 8b 87 06 02 ; 0xf2787 + mov word [bp-008h], ax ; 89 46 f8 ; 0xf278c + mov ax, word [es:bx+00208h] ; 26 8b 87 08 02 ; 0xf278f ata.c:735 + mov word [bp-01ah], ax ; 89 46 e6 ; 0xf2794 + mov word [bp-020h], 00100h ; c7 46 e0 00 01 ; 0xf2797 ata.c:743 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf279c ata.c:745 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf279f + in AL, DX ; ec ; 0xf27a2 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf27a3 + test AL, strict byte 080h ; a8 80 ; 0xf27a5 ata.c:746 + je short 027b8h ; 74 0f ; 0xf27a7 + mov dx, word [bp-01ah] ; 8b 56 e6 ; 0xf27a9 ata.c:749 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf27ac + mov AL, strict byte 008h ; b0 08 ; 0xf27af + out DX, AL ; ee ; 0xf27b1 + mov ax, strict word 00001h ; b8 01 00 ; 0xf27b2 ata.c:750 + jmp near 029dch ; e9 24 02 ; 0xf27b5 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf27b8 ata.c:753 + mov ax, word [es:di+006h] ; 26 8b 45 06 ; 0xf27bb + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf27bf + mov ax, word [es:di+004h] ; 26 8b 45 04 ; 0xf27c2 + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf27c6 + mov ax, word [es:di+002h] ; 26 8b 45 02 ; 0xf27c9 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf27cd + mov ax, word [es:di] ; 26 8b 05 ; 0xf27d0 + mov word [bp-024h], ax ; 89 46 dc ; 0xf27d3 + mov ax, word [es:di+008h] ; 26 8b 45 08 ; 0xf27d6 ata.c:754 + mov word [bp-016h], ax ; 89 46 ea ; 0xf27da + mov ax, word [es:di+00ah] ; 26 8b 45 0a ; 0xf27dd + mov word [bp-012h], ax ; 89 46 ee ; 0xf27e1 + mov ax, word [es:di+016h] ; 26 8b 45 16 ; 0xf27e4 ata.c:755 + mov word [bp-014h], ax ; 89 46 ec ; 0xf27e8 + mov ax, word [es:di+012h] ; 26 8b 45 12 ; 0xf27eb ata.c:756 + mov word [bp-018h], ax ; 89 46 e8 ; 0xf27ef + mov ax, word [es:di+014h] ; 26 8b 45 14 ; 0xf27f2 ata.c:757 + mov word [bp-01ch], ax ; 89 46 e4 ; 0xf27f6 + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf27f9 ata.c:760 + test ax, ax ; 85 c0 ; 0xf27fc + je short 02803h ; 74 03 ; 0xf27fe + jmp near 028cah ; e9 c7 00 ; 0xf2800 + xor bx, bx ; 31 db ; 0xf2803 ata.c:761 + xor dx, dx ; 31 d2 ; 0xf2805 + mov si, word [bp-024h] ; 8b 76 dc ; 0xf2807 + add si, word [bp-022h] ; 03 76 de ; 0xf280a + adc bx, word [bp-010h] ; 13 5e f0 ; 0xf280d + adc ax, word [bp-00eh] ; 13 46 f2 ; 0xf2810 + adc dx, word [bp-00ch] ; 13 56 f4 ; 0xf2813 + test dx, dx ; 85 d2 ; 0xf2816 + jnbe short 0282ah ; 77 10 ; 0xf2818 + jne short 0288dh ; 75 71 ; 0xf281a + test ax, ax ; 85 c0 ; 0xf281c + jnbe short 0282ah ; 77 0a ; 0xf281e + jne short 0288dh ; 75 6b ; 0xf2820 + cmp bx, 01000h ; 81 fb 00 10 ; 0xf2822 + jnbe short 0282ah ; 77 02 ; 0xf2826 + jne short 0288dh ; 75 63 ; 0xf2828 + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf282a ata.c:763 + mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf282d + mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf2830 + mov dx, word [bp-024h] ; 8b 56 dc ; 0xf2833 + mov si, strict word 00018h ; be 18 00 ; 0xf2836 + call 09b90h ; e8 54 73 ; 0xf2839 + xor dh, dh ; 30 f6 ; 0xf283c + mov word [bp-014h], dx ; 89 56 ec ; 0xf283e + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf2841 ata.c:764 + mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf2844 + mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf2847 + mov dx, word [bp-024h] ; 8b 56 dc ; 0xf284a + mov si, strict word 00020h ; be 20 00 ; 0xf284d + call 09b90h ; e8 3d 73 ; 0xf2850 + mov bx, dx ; 89 d3 ; 0xf2853 + mov ax, word [bp-022h] ; 8b 46 de ; 0xf2855 ata.c:765 + xor al, al ; 30 c0 ; 0xf2858 + shr ax, 008h ; c1 e8 08 ; 0xf285a + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf285d + inc dx ; 42 ; 0xf2860 + inc dx ; 42 ; 0xf2861 + out DX, AL ; ee ; 0xf2862 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2863 ata.c:766 + add dx, strict byte 00003h ; 83 c2 03 ; 0xf2866 + mov al, byte [bp-014h] ; 8a 46 ec ; 0xf2869 + out DX, AL ; ee ; 0xf286c + mov ax, bx ; 89 d8 ; 0xf286d ata.c:767 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf286f + add dx, strict byte 00004h ; 83 c2 04 ; 0xf2872 + out DX, AL ; ee ; 0xf2875 + shr ax, 008h ; c1 e8 08 ; 0xf2876 ata.c:768 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2879 + add dx, strict byte 00005h ; 83 c2 05 ; 0xf287c + out DX, AL ; ee ; 0xf287f + xor al, al ; 30 c0 ; 0xf2880 ata.c:771 + mov byte [bp-00fh], al ; 88 46 f1 ; 0xf2882 + xor ah, ah ; 30 e4 ; 0xf2885 + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf2887 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf288a + mov ax, word [bp-024h] ; 8b 46 dc ; 0xf288d ata.c:773 + xor ah, ah ; 30 e4 ; 0xf2890 + mov word [bp-014h], ax ; 89 46 ec ; 0xf2892 + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf2895 ata.c:774 + mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf2898 + mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf289b + mov dx, word [bp-024h] ; 8b 56 dc ; 0xf289e + mov si, strict word 00008h ; be 08 00 ; 0xf28a1 + call 09b90h ; e8 e9 72 ; 0xf28a4 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf28a7 + mov word [bp-00eh], bx ; 89 5e f2 ; 0xf28aa + mov word [bp-010h], cx ; 89 4e f0 ; 0xf28ad + mov word [bp-024h], dx ; 89 56 dc ; 0xf28b0 + mov word [bp-018h], dx ; 89 56 e8 ; 0xf28b3 ata.c:775 + mov si, strict word 00010h ; be 10 00 ; 0xf28b6 ata.c:776 + call 09b90h ; e8 d4 72 ; 0xf28b9 + mov word [bp-024h], dx ; 89 56 dc ; 0xf28bc + mov ax, dx ; 89 d0 ; 0xf28bf ata.c:777 + xor ah, dh ; 30 f4 ; 0xf28c1 + and AL, strict byte 00fh ; 24 0f ; 0xf28c3 + or AL, strict byte 040h ; 0c 40 ; 0xf28c5 + mov word [bp-01ch], ax ; 89 46 e4 ; 0xf28c7 + mov dx, word [bp-01ah] ; 8b 56 e6 ; 0xf28ca ata.c:780 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf28cd + mov AL, strict byte 00ah ; b0 0a ; 0xf28d0 + out DX, AL ; ee ; 0xf28d2 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf28d3 ata.c:781 + inc dx ; 42 ; 0xf28d6 + xor al, al ; 30 c0 ; 0xf28d7 + out DX, AL ; ee ; 0xf28d9 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf28da ata.c:782 + inc dx ; 42 ; 0xf28dd + inc dx ; 42 ; 0xf28de + mov al, byte [bp-022h] ; 8a 46 de ; 0xf28df + out DX, AL ; ee ; 0xf28e2 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf28e3 ata.c:783 + add dx, strict byte 00003h ; 83 c2 03 ; 0xf28e6 + mov al, byte [bp-014h] ; 8a 46 ec ; 0xf28e9 + out DX, AL ; ee ; 0xf28ec + mov ax, word [bp-018h] ; 8b 46 e8 ; 0xf28ed ata.c:784 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf28f0 + add dx, strict byte 00004h ; 83 c2 04 ; 0xf28f3 + out DX, AL ; ee ; 0xf28f6 + shr ax, 008h ; c1 e8 08 ; 0xf28f7 ata.c:785 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf28fa + add dx, strict byte 00005h ; 83 c2 05 ; 0xf28fd + out DX, AL ; ee ; 0xf2900 + cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf2901 ata.c:786 + je short 0290ch ; 74 05 ; 0xf2905 + mov ax, 000b0h ; b8 b0 00 ; 0xf2907 + jmp short 0290fh ; eb 03 ; 0xf290a + mov ax, 000a0h ; b8 a0 00 ; 0xf290c + mov dl, byte [bp-01ch] ; 8a 56 e4 ; 0xf290f + xor dh, dh ; 30 f6 ; 0xf2912 + or ax, dx ; 09 d0 ; 0xf2914 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2916 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2919 + out DX, AL ; ee ; 0xf291c + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf291d ata.c:787 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf2920 + mov al, byte [bp-01eh] ; 8a 46 e2 ; 0xf2923 + out DX, AL ; ee ; 0xf2926 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2927 ata.c:790 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf292a + in AL, DX ; ec ; 0xf292d + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf292e + mov bl, al ; 88 c3 ; 0xf2930 + test AL, strict byte 080h ; a8 80 ; 0xf2932 ata.c:791 + jne short 02927h ; 75 f1 ; 0xf2934 + test AL, strict byte 001h ; a8 01 ; 0xf2936 ata.c:795 + je short 02949h ; 74 0f ; 0xf2938 + mov dx, word [bp-01ah] ; 8b 56 e6 ; 0xf293a ata.c:798 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf293d + mov AL, strict byte 008h ; b0 08 ; 0xf2940 + out DX, AL ; ee ; 0xf2942 + mov ax, strict word 00002h ; b8 02 00 ; 0xf2943 ata.c:799 + jmp near 029dch ; e9 93 00 ; 0xf2946 + test bl, 008h ; f6 c3 08 ; 0xf2949 ata.c:800 + jne short 0295dh ; 75 0f ; 0xf294c + mov dx, word [bp-01ah] ; 8b 56 e6 ; 0xf294e ata.c:803 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2951 + mov AL, strict byte 008h ; b0 08 ; 0xf2954 + out DX, AL ; ee ; 0xf2956 + mov ax, strict word 00003h ; b8 03 00 ; 0xf2957 ata.c:804 + jmp near 029dch ; e9 7f 00 ; 0xf295a + sti ; fb ; 0xf295d ata.c:809 + mov ax, word [bp-016h] ; 8b 46 ea ; 0xf295e ata.c:814 + cmp ax, 0f800h ; 3d 00 f8 ; 0xf2961 + jc short 02976h ; 72 10 ; 0xf2964 + sub ax, 00800h ; 2d 00 08 ; 0xf2966 ata.c:815 + mov dx, word [bp-012h] ; 8b 56 ee ; 0xf2969 + add dx, 00080h ; 81 c2 80 00 ; 0xf296c + mov word [bp-016h], ax ; 89 46 ea ; 0xf2970 + mov word [bp-012h], dx ; 89 56 ee ; 0xf2973 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2976 ata.c:822 + mov cx, word [bp-020h] ; 8b 4e e0 ; 0xf2979 + mov si, word [bp-016h] ; 8b 76 ea ; 0xf297c + mov es, [bp-012h] ; 8e 46 ee ; 0xf297f + db 0f3h, 026h, 06fh + ; rep es outsw ; f3 26 6f ; 0xf2982 + mov word [bp-016h], si ; 89 76 ea ; 0xf2985 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf2988 ata.c:824 + inc word [es:di+018h] ; 26 ff 45 18 ; 0xf298b + dec word [bp-022h] ; ff 4e de ; 0xf298f ata.c:825 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2992 ata.c:827 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf2995 + in AL, DX ; ec ; 0xf2998 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2999 + mov bl, al ; 88 c3 ; 0xf299b + test AL, strict byte 080h ; a8 80 ; 0xf299d ata.c:828 + jne short 02992h ; 75 f1 ; 0xf299f + cmp word [bp-022h], strict byte 00000h ; 83 7e de 00 ; 0xf29a1 ata.c:831 + jne short 029bbh ; 75 14 ; 0xf29a5 + and AL, strict byte 0e9h ; 24 e9 ; 0xf29a7 ata.c:832 + cmp AL, strict byte 040h ; 3c 40 ; 0xf29a9 + je short 029d1h ; 74 24 ; 0xf29ab + mov dx, word [bp-01ah] ; 8b 56 e6 ; 0xf29ad ata.c:836 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf29b0 + mov AL, strict byte 008h ; b0 08 ; 0xf29b3 + out DX, AL ; ee ; 0xf29b5 + mov ax, strict word 00006h ; b8 06 00 ; 0xf29b6 ata.c:837 + jmp short 029dch ; eb 21 ; 0xf29b9 + mov al, bl ; 88 d8 ; 0xf29bb ata.c:842 + and AL, strict byte 0c9h ; 24 c9 ; 0xf29bd + cmp AL, strict byte 048h ; 3c 48 ; 0xf29bf + je short 0295eh ; 74 9b ; 0xf29c1 + mov dx, word [bp-01ah] ; 8b 56 e6 ; 0xf29c3 ata.c:846 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf29c6 + mov AL, strict byte 008h ; b0 08 ; 0xf29c9 + out DX, AL ; ee ; 0xf29cb + mov ax, strict word 00007h ; b8 07 00 ; 0xf29cc ata.c:847 + jmp short 029dch ; eb 0b ; 0xf29cf + mov dx, word [bp-01ah] ; 8b 56 e6 ; 0xf29d1 ata.c:853 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf29d4 + mov AL, strict byte 008h ; b0 08 ; 0xf29d7 + out DX, AL ; ee ; 0xf29d9 + xor ax, ax ; 31 c0 ; 0xf29da ata.c:854 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf29dc ata.c:855 + pop di ; 5f ; 0xf29df + pop si ; 5e ; 0xf29e0 + pop bp ; 5d ; 0xf29e1 + retn ; c3 ; 0xf29e2 + ; disGetNextSymbol 0xf29e3 LB 0x74e5 -> off=0x0 cb=00000000000000b5 uValue=00000000000f13e3 'ata_read_sectors' +ata_read_sectors: ; 0xf29e3 LB 0xb5 + push bp ; 55 ; 0xf29e3 ata.c:865 + mov bp, sp ; 89 e5 ; 0xf29e4 + push si ; 56 ; 0xf29e6 + push di ; 57 ; 0xf29e7 + sub sp, strict byte 00008h ; 83 ec 08 ; 0xf29e8 + mov si, word [bp+004h] ; 8b 76 04 ; 0xf29eb + mov es, [bp+006h] ; 8e 46 06 ; 0xf29ee ata.c:871 + mov al, byte [es:si+00ch] ; 26 8a 44 0c ; 0xf29f1 + mov cx, word [es:si+00eh] ; 26 8b 4c 0e ; 0xf29f5 ata.c:872 + mov dx, cx ; 89 ca ; 0xf29f9 + sal dx, 009h ; c1 e2 09 ; 0xf29fb + cmp word [es:si+016h], strict byte 00000h ; 26 83 7c 16 00 ; 0xf29fe ata.c:874 + je short 02a24h ; 74 1f ; 0xf2a03 + xor ah, ah ; 30 e4 ; 0xf2a05 ata.c:876 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf2a07 + mov [bp-00ch], es ; 8c 46 f4 ; 0xf2a0a + mov di, si ; 89 f7 ; 0xf2a0d + add di, ax ; 01 c7 ; 0xf2a0f + mov word [es:di+028h], dx ; 26 89 55 28 ; 0xf2a11 + mov bx, 000c4h ; bb c4 00 ; 0xf2a15 ata.c:878 + mov ax, si ; 89 f0 ; 0xf2a18 + mov dx, es ; 8c c2 ; 0xf2a1a + call 01dfah ; e8 db f3 ; 0xf2a1c + mov es, [bp-00ch] ; 8e 46 f4 ; 0xf2a1f ata.c:879 + jmp short 02a89h ; eb 65 ; 0xf2a22 ata.c:880 + xor bx, bx ; 31 db ; 0xf2a24 ata.c:882 + mov word [bp-00ch], bx ; 89 5e f4 ; 0xf2a26 + mov word [bp-006h], bx ; 89 5e fa ; 0xf2a29 + mov di, word [es:si] ; 26 8b 3c ; 0xf2a2c + add di, cx ; 01 cf ; 0xf2a2f + mov word [bp-00ah], di ; 89 7e f6 ; 0xf2a31 + mov di, word [es:si+002h] ; 26 8b 7c 02 ; 0xf2a34 + adc di, bx ; 11 df ; 0xf2a38 + mov word [bp-008h], di ; 89 7e f8 ; 0xf2a3a + mov bx, word [es:si+004h] ; 26 8b 5c 04 ; 0xf2a3d + adc bx, word [bp-00ch] ; 13 5e f4 ; 0xf2a41 + mov di, word [es:si+006h] ; 26 8b 7c 06 ; 0xf2a44 + adc di, word [bp-006h] ; 13 7e fa ; 0xf2a48 + test di, di ; 85 ff ; 0xf2a4b + jnbe short 02a60h ; 77 11 ; 0xf2a4d + jne short 02a6ch ; 75 1b ; 0xf2a4f + test bx, bx ; 85 db ; 0xf2a51 + jnbe short 02a60h ; 77 0b ; 0xf2a53 + jne short 02a6ch ; 75 15 ; 0xf2a55 + cmp word [bp-008h], 01000h ; 81 7e f8 00 10 ; 0xf2a57 + jnbe short 02a60h ; 77 02 ; 0xf2a5c + jne short 02a6ch ; 75 0c ; 0xf2a5e + mov bx, strict word 00024h ; bb 24 00 ; 0xf2a60 ata.c:884 + mov ax, si ; 89 f0 ; 0xf2a63 + mov dx, es ; 8c c2 ; 0xf2a65 + call 01dfah ; e8 90 f3 ; 0xf2a67 + jmp short 02a8fh ; eb 23 ; 0xf2a6a ata.c:885 + xor ah, ah ; 30 e4 ; 0xf2a6c ata.c:886 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf2a6e + mov [bp-006h], es ; 8c 46 fa ; 0xf2a71 + mov di, si ; 89 f7 ; 0xf2a74 + add di, ax ; 01 c7 ; 0xf2a76 + mov word [es:di+028h], dx ; 26 89 55 28 ; 0xf2a78 + mov bx, 000c4h ; bb c4 00 ; 0xf2a7c ata.c:888 + mov ax, si ; 89 f0 ; 0xf2a7f + mov dx, es ; 8c c2 ; 0xf2a81 + call 01dfah ; e8 74 f3 ; 0xf2a83 + mov es, [bp-006h] ; 8e 46 fa ; 0xf2a86 ata.c:889 + mov word [es:di+028h], 00200h ; 26 c7 45 28 00 02 ; 0xf2a89 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf2a8f ata.c:893 + pop di ; 5f ; 0xf2a92 + pop si ; 5e ; 0xf2a93 + pop bp ; 5d ; 0xf2a94 + retn 00004h ; c2 04 00 ; 0xf2a95 + ; disGetNextSymbol 0xf2a98 LB 0x7430 -> off=0x0 cb=000000000000005b uValue=00000000000f1498 'ata_write_sectors' +ata_write_sectors: ; 0xf2a98 LB 0x5b + push bp ; 55 ; 0xf2a98 ata.c:902 + mov bp, sp ; 89 e5 ; 0xf2a99 + push si ; 56 ; 0xf2a9b + push di ; 57 ; 0xf2a9c + push ax ; 50 ; 0xf2a9d + les si, [bp+004h] ; c4 76 04 ; 0xf2a9e + mov cx, word [es:si+00eh] ; 26 8b 4c 0e ; 0xf2aa1 ata.c:906 + cmp word [es:si+016h], strict byte 00000h ; 26 83 7c 16 00 ; 0xf2aa5 ata.c:908 + je short 02ab8h ; 74 0c ; 0xf2aaa + mov bx, strict word 00030h ; bb 30 00 ; 0xf2aac ata.c:910 + mov ax, si ; 89 f0 ; 0xf2aaf + mov dx, es ; 8c c2 ; 0xf2ab1 + call 02759h ; e8 a3 fc ; 0xf2ab3 + jmp short 02aeah ; eb 32 ; 0xf2ab6 + xor ax, ax ; 31 c0 ; 0xf2ab8 ata.c:913 + xor bx, bx ; 31 db ; 0xf2aba + xor dx, dx ; 31 d2 ; 0xf2abc + mov di, word [es:si] ; 26 8b 3c ; 0xf2abe + add di, cx ; 01 cf ; 0xf2ac1 + mov word [bp-006h], di ; 89 7e fa ; 0xf2ac3 + adc ax, word [es:si+002h] ; 26 13 44 02 ; 0xf2ac6 + adc bx, word [es:si+004h] ; 26 13 5c 04 ; 0xf2aca + adc dx, word [es:si+006h] ; 26 13 54 06 ; 0xf2ace + test dx, dx ; 85 d2 ; 0xf2ad2 + jnbe short 02ae5h ; 77 0f ; 0xf2ad4 + jne short 02aach ; 75 d4 ; 0xf2ad6 + test bx, bx ; 85 db ; 0xf2ad8 + jnbe short 02ae5h ; 77 09 ; 0xf2ada + jne short 02aach ; 75 ce ; 0xf2adc + cmp ax, 01000h ; 3d 00 10 ; 0xf2ade + jnbe short 02ae5h ; 77 02 ; 0xf2ae1 + jne short 02aach ; 75 c7 ; 0xf2ae3 + mov bx, strict word 00034h ; bb 34 00 ; 0xf2ae5 ata.c:914 + jmp short 02aafh ; eb c5 ; 0xf2ae8 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf2aea ata.c:918 + pop di ; 5f ; 0xf2aed + pop si ; 5e ; 0xf2aee + pop bp ; 5d ; 0xf2aef + retn 00004h ; c2 04 00 ; 0xf2af0 + ; disGetNextSymbol 0xf2af3 LB 0x73d5 -> off=0x0 cb=0000000000000285 uValue=00000000000f14f3 'ata_cmd_packet' +ata_cmd_packet: ; 0xf2af3 LB 0x285 + push bp ; 55 ; 0xf2af3 ata.c:930 + mov bp, sp ; 89 e5 ; 0xf2af4 + push si ; 56 ; 0xf2af6 + push di ; 57 ; 0xf2af7 + sub sp, strict byte 00012h ; 83 ec 12 ; 0xf2af8 + mov byte [bp-006h], dl ; 88 56 fa ; 0xf2afb + mov si, bx ; 89 de ; 0xf2afe + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf2b00 ata.c:48 + mov dx, strict word 00040h ; ba 40 00 ; 0xf2b03 + mov es, dx ; 8e c2 ; 0xf2b06 + mov dx, word [es:bx] ; 26 8b 17 ; 0xf2b08 + mov word [bp-010h], 00122h ; c7 46 f0 22 01 ; 0xf2b0b ata.c:49 + mov word [bp-00eh], dx ; 89 56 f2 ; 0xf2b10 + mov dx, ax ; 89 c2 ; 0xf2b13 ata.c:942 + shr dx, 1 ; d1 ea ; 0xf2b15 + mov ah, dl ; 88 d4 ; 0xf2b17 + and AL, strict byte 001h ; 24 01 ; 0xf2b19 ata.c:943 + mov byte [bp-008h], al ; 88 46 f8 ; 0xf2b1b + cmp byte [bp+00ah], 002h ; 80 7e 0a 02 ; 0xf2b1e ata.c:946 + jne short 02b43h ; 75 1f ; 0xf2b22 + mov bx, 00da0h ; bb a0 0d ; 0xf2b24 ata.c:947 + mov cx, ds ; 8c d9 ; 0xf2b27 + mov ax, strict word 00004h ; b8 04 00 ; 0xf2b29 + call 018bch ; e8 8d ed ; 0xf2b2c + push 00221h ; 68 21 02 ; 0xf2b2f + push 00230h ; 68 30 02 ; 0xf2b32 + push strict byte 00004h ; 6a 04 ; 0xf2b35 + call 018ffh ; e8 c5 ed ; 0xf2b37 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf2b3a + mov ax, strict word 00001h ; b8 01 00 ; 0xf2b3d ata.c:948 + jmp near 02d6fh ; e9 2c 02 ; 0xf2b40 + test byte [bp+004h], 001h ; f6 46 04 01 ; 0xf2b43 ata.c:952 + jne short 02b3dh ; 75 f4 ; 0xf2b47 + mov al, ah ; 88 e0 ; 0xf2b49 ata.c:957 + xor ah, ah ; 30 e4 ; 0xf2b4b + imul ax, ax, strict byte 00006h ; 6b c0 06 ; 0xf2b4d + les bx, [bp-010h] ; c4 5e f0 ; 0xf2b50 + add bx, ax ; 01 c3 ; 0xf2b53 + mov ax, word [es:bx+00206h] ; 26 8b 87 06 02 ; 0xf2b55 + mov word [bp-00ah], ax ; 89 46 f6 ; 0xf2b5a + mov ax, word [es:bx+00208h] ; 26 8b 87 08 02 ; 0xf2b5d ata.c:958 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf2b62 + xor ax, ax ; 31 c0 ; 0xf2b65 ata.c:960 + mov word [bp-014h], ax ; 89 46 ec ; 0xf2b67 + mov word [bp-012h], ax ; 89 46 ee ; 0xf2b6a + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf2b6d ata.c:962 + cmp AL, strict byte 00ch ; 3c 0c ; 0xf2b70 + jnc short 02b7ah ; 73 06 ; 0xf2b72 + mov byte [bp-006h], 00ch ; c6 46 fa 0c ; 0xf2b74 ata.c:963 + jmp short 02b80h ; eb 06 ; 0xf2b78 + jbe short 02b80h ; 76 04 ; 0xf2b7a ata.c:964 + mov byte [bp-006h], 010h ; c6 46 fa 10 ; 0xf2b7c ata.c:965 + shr byte [bp-006h], 1 ; d0 6e fa ; 0xf2b80 ata.c:966 + les bx, [bp-010h] ; c4 5e f0 ; 0xf2b83 ata.c:970 + mov word [es:bx+018h], strict word 00000h ; 26 c7 47 18 00 00 ; 0xf2b86 + mov word [es:bx+01ah], strict word 00000h ; 26 c7 47 1a 00 00 ; 0xf2b8c ata.c:971 + mov word [es:bx+01ch], strict word 00000h ; 26 c7 47 1c 00 00 ; 0xf2b92 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2b98 ata.c:973 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf2b9b + in AL, DX ; ec ; 0xf2b9e + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2b9f + test AL, strict byte 080h ; a8 80 ; 0xf2ba1 ata.c:974 + je short 02babh ; 74 06 ; 0xf2ba3 + mov ax, strict word 00002h ; b8 02 00 ; 0xf2ba5 ata.c:975 + jmp near 02d6fh ; e9 c4 01 ; 0xf2ba8 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2bab ata.c:977 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2bae + mov AL, strict byte 00ah ; b0 0a ; 0xf2bb1 + out DX, AL ; ee ; 0xf2bb3 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2bb4 ata.c:981 + add dx, strict byte 00004h ; 83 c2 04 ; 0xf2bb7 + mov AL, strict byte 0f0h ; b0 f0 ; 0xf2bba + out DX, AL ; ee ; 0xf2bbc + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2bbd ata.c:982 + add dx, strict byte 00005h ; 83 c2 05 ; 0xf2bc0 + mov AL, strict byte 0ffh ; b0 ff ; 0xf2bc3 + out DX, AL ; ee ; 0xf2bc5 + cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf2bc6 ata.c:983 + je short 02bd1h ; 74 05 ; 0xf2bca + mov ax, 000b0h ; b8 b0 00 ; 0xf2bcc + jmp short 02bd4h ; eb 03 ; 0xf2bcf + mov ax, 000a0h ; b8 a0 00 ; 0xf2bd1 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2bd4 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2bd7 + out DX, AL ; ee ; 0xf2bda + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2bdb ata.c:984 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf2bde + mov AL, strict byte 0a0h ; b0 a0 ; 0xf2be1 + out DX, AL ; ee ; 0xf2be3 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2be4 ata.c:988 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf2be7 + in AL, DX ; ec ; 0xf2bea + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2beb + mov bl, al ; 88 c3 ; 0xf2bed + test AL, strict byte 080h ; a8 80 ; 0xf2bef ata.c:989 + jne short 02be4h ; 75 f1 ; 0xf2bf1 + test AL, strict byte 001h ; a8 01 ; 0xf2bf3 ata.c:992 + je short 02c06h ; 74 0f ; 0xf2bf5 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2bf7 ata.c:995 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2bfa + mov AL, strict byte 008h ; b0 08 ; 0xf2bfd + out DX, AL ; ee ; 0xf2bff + mov ax, strict word 00003h ; b8 03 00 ; 0xf2c00 ata.c:996 + jmp near 02d6fh ; e9 69 01 ; 0xf2c03 + test bl, 008h ; f6 c3 08 ; 0xf2c06 ata.c:997 + jne short 02c1ah ; 75 0f ; 0xf2c09 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2c0b ata.c:1000 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2c0e + mov AL, strict byte 008h ; b0 08 ; 0xf2c11 + out DX, AL ; ee ; 0xf2c13 + mov ax, strict word 00004h ; b8 04 00 ; 0xf2c14 ata.c:1001 + jmp near 02d6fh ; e9 55 01 ; 0xf2c17 + sti ; fb ; 0xf2c1a ata.c:1004 + mov ax, si ; 89 f0 ; 0xf2c1b ata.c:1008 + shr ax, 004h ; c1 e8 04 ; 0xf2c1d + add ax, cx ; 01 c8 ; 0xf2c20 + and si, strict byte 0000fh ; 83 e6 0f ; 0xf2c22 + mov cl, byte [bp-006h] ; 8a 4e fa ; 0xf2c25 ata.c:1013 + xor ch, ch ; 30 ed ; 0xf2c28 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2c2a + mov es, ax ; 8e c0 ; 0xf2c2d + db 0f3h, 026h, 06fh + ; rep es outsw ; f3 26 6f ; 0xf2c2f + cmp byte [bp+00ah], 000h ; 80 7e 0a 00 ; 0xf2c32 ata.c:1015 + jne short 02c43h ; 75 0b ; 0xf2c36 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf2c38 ata.c:1016 + in AL, DX ; ec ; 0xf2c3b + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2c3c + mov bl, al ; 88 c3 ; 0xf2c3e + jmp near 02d50h ; e9 0d 01 ; 0xf2c40 ata.c:1018 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2c43 ata.c:1022 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf2c46 + in AL, DX ; ec ; 0xf2c49 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2c4a + mov bl, al ; 88 c3 ; 0xf2c4c + test AL, strict byte 080h ; a8 80 ; 0xf2c4e ata.c:1023 + jne short 02c43h ; 75 f1 ; 0xf2c50 + test AL, strict byte 088h ; a8 88 ; 0xf2c52 ata.c:1028 + je short 02cb6h ; 74 60 ; 0xf2c54 + test AL, strict byte 001h ; a8 01 ; 0xf2c56 ata.c:1031 + je short 02c65h ; 74 0b ; 0xf2c58 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2c5a ata.c:1034 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2c5d + mov AL, strict byte 008h ; b0 08 ; 0xf2c60 + out DX, AL ; ee ; 0xf2c62 + jmp short 02c00h ; eb 9b ; 0xf2c63 + mov al, bl ; 88 d8 ; 0xf2c65 ata.c:1039 + and AL, strict byte 0c9h ; 24 c9 ; 0xf2c67 + cmp AL, strict byte 048h ; 3c 48 ; 0xf2c69 + je short 02c78h ; 74 0b ; 0xf2c6b + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2c6d ata.c:1043 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2c70 + mov AL, strict byte 008h ; b0 08 ; 0xf2c73 + out DX, AL ; ee ; 0xf2c75 + jmp short 02c14h ; eb 9c ; 0xf2c76 + mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf2c78 ata.c:1049 + shr ax, 004h ; c1 e8 04 ; 0xf2c7b + add ax, word [bp+00eh] ; 03 46 0e ; 0xf2c7e + mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf2c81 + and dx, strict byte 0000fh ; 83 e2 0f ; 0xf2c84 + mov word [bp+00ch], dx ; 89 56 0c ; 0xf2c87 + mov word [bp+00eh], ax ; 89 46 0e ; 0xf2c8a + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2c8d ata.c:1054 + add dx, strict byte 00005h ; 83 c2 05 ; 0xf2c90 + in AL, DX ; ec ; 0xf2c93 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2c94 + mov bx, ax ; 89 c3 ; 0xf2c96 + sal bx, 008h ; c1 e3 08 ; 0xf2c98 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2c9b + add dx, strict byte 00004h ; 83 c2 04 ; 0xf2c9e + in AL, DX ; ec ; 0xf2ca1 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2ca2 + add bx, ax ; 01 c3 ; 0xf2ca4 + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf2ca6 ata.c:1057 + cmp bx, ax ; 39 c3 ; 0xf2ca9 + jnc short 02cb9h ; 73 0c ; 0xf2cab + mov cx, bx ; 89 d9 ; 0xf2cad ata.c:1058 + sub word [bp+004h], bx ; 29 5e 04 ; 0xf2caf ata.c:1059 + xor bx, bx ; 31 db ; 0xf2cb2 ata.c:1060 + jmp short 02cc2h ; eb 0c ; 0xf2cb4 ata.c:1062 + jmp near 02d50h ; e9 97 00 ; 0xf2cb6 + mov cx, ax ; 89 c1 ; 0xf2cb9 ata.c:1063 + mov word [bp+004h], strict word 00000h ; c7 46 04 00 00 ; 0xf2cbb ata.c:1064 + sub bx, ax ; 29 c3 ; 0xf2cc0 ata.c:1065 + xor ax, ax ; 31 c0 ; 0xf2cc2 ata.c:1068 + cmp word [bp+008h], strict byte 00000h ; 83 7e 08 00 ; 0xf2cc4 + jne short 02ce0h ; 75 16 ; 0xf2cc8 + cmp bx, word [bp+006h] ; 3b 5e 06 ; 0xf2cca + jbe short 02ce0h ; 76 11 ; 0xf2ccd + sub bx, word [bp+006h] ; 2b 5e 06 ; 0xf2ccf ata.c:1069 + mov word [bp-016h], bx ; 89 5e ea ; 0xf2cd2 + mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf2cd5 ata.c:1070 + mov word [bp+006h], ax ; 89 46 06 ; 0xf2cd8 ata.c:1071 + mov word [bp+008h], ax ; 89 46 08 ; 0xf2cdb + jmp short 02ce9h ; eb 09 ; 0xf2cde ata.c:1073 + mov word [bp-016h], ax ; 89 46 ea ; 0xf2ce0 ata.c:1074 + sub word [bp+006h], bx ; 29 5e 06 ; 0xf2ce3 ata.c:1075 + sbb word [bp+008h], ax ; 19 46 08 ; 0xf2ce6 + mov si, bx ; 89 de ; 0xf2ce9 ata.c:1079 + test cl, 003h ; f6 c1 03 ; 0xf2ceb ata.c:1086 + test bl, 003h ; f6 c3 03 ; 0xf2cee ata.c:1088 + test byte [bp-016h], 003h ; f6 46 ea 03 ; 0xf2cf1 ata.c:1090 + test bl, 001h ; f6 c3 01 ; 0xf2cf5 ata.c:1094 + je short 02d0ah ; 74 10 ; 0xf2cf8 + inc bx ; 43 ; 0xf2cfa ata.c:1095 + cmp word [bp-016h], strict byte 00000h ; 83 7e ea 00 ; 0xf2cfb ata.c:1096 + jbe short 02d0ah ; 76 09 ; 0xf2cff + test byte [bp-016h], 001h ; f6 46 ea 01 ; 0xf2d01 + je short 02d0ah ; 74 03 ; 0xf2d05 + dec word [bp-016h] ; ff 4e ea ; 0xf2d07 ata.c:1097 + shr bx, 1 ; d1 eb ; 0xf2d0a ata.c:1109 + shr cx, 1 ; d1 e9 ; 0xf2d0c ata.c:1110 + shr word [bp-016h], 1 ; d1 6e ea ; 0xf2d0e ata.c:1111 + test cx, cx ; 85 c9 ; 0xf2d11 ata.c:1124 + je short 02d1bh ; 74 06 ; 0xf2d13 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2d15 ata.c:1125 + in ax, DX ; ed ; 0xf2d18 + loop 02d18h ; e2 fd ; 0xf2d19 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2d1b ata.c:1126 + mov cx, bx ; 89 d9 ; 0xf2d1e + les di, [bp+00ch] ; c4 7e 0c ; 0xf2d20 + rep insw ; f3 6d ; 0xf2d23 + mov ax, word [bp-016h] ; 8b 46 ea ; 0xf2d25 ata.c:1127 + test ax, ax ; 85 c0 ; 0xf2d28 + je short 02d31h ; 74 05 ; 0xf2d2a + mov cx, ax ; 89 c1 ; 0xf2d2c ata.c:1128 + in ax, DX ; ed ; 0xf2d2e + loop 02d2eh ; e2 fd ; 0xf2d2f + add word [bp+00ch], si ; 01 76 0c ; 0xf2d31 ata.c:1133 + xor ax, ax ; 31 c0 ; 0xf2d34 ata.c:1136 + add word [bp-014h], si ; 01 76 ec ; 0xf2d36 + adc word [bp-012h], ax ; 11 46 ee ; 0xf2d39 + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf2d3c ata.c:1137 + les bx, [bp-010h] ; c4 5e f0 ; 0xf2d3f + mov word [es:bx+01ah], ax ; 26 89 47 1a ; 0xf2d42 + mov ax, word [bp-012h] ; 8b 46 ee ; 0xf2d46 + mov word [es:bx+01ch], ax ; 26 89 47 1c ; 0xf2d49 + jmp near 02c43h ; e9 f3 fe ; 0xf2d4d ata.c:1138 + mov al, bl ; 88 d8 ; 0xf2d50 ata.c:1142 + and AL, strict byte 0e9h ; 24 e9 ; 0xf2d52 + cmp AL, strict byte 040h ; 3c 40 ; 0xf2d54 + je short 02d64h ; 74 0c ; 0xf2d56 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2d58 ata.c:1146 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2d5b + mov AL, strict byte 008h ; b0 08 ; 0xf2d5e + out DX, AL ; ee ; 0xf2d60 + jmp near 02c14h ; e9 b0 fe ; 0xf2d61 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2d64 ata.c:1151 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2d67 + mov AL, strict byte 008h ; b0 08 ; 0xf2d6a + out DX, AL ; ee ; 0xf2d6c + xor ax, ax ; 31 c0 ; 0xf2d6d ata.c:1152 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf2d6f ata.c:1153 + pop di ; 5f ; 0xf2d72 + pop si ; 5e ; 0xf2d73 + pop bp ; 5d ; 0xf2d74 + retn 0000ch ; c2 0c 00 ; 0xf2d75 + ; disGetNextSymbol 0xf2d78 LB 0x7150 -> off=0x0 cb=000000000000007f uValue=00000000000f1778 'ata_soft_reset' +ata_soft_reset: ; 0xf2d78 LB 0x7f + push bp ; 55 ; 0xf2d78 ata.c:1161 + mov bp, sp ; 89 e5 ; 0xf2d79 + push bx ; 53 ; 0xf2d7b + push cx ; 51 ; 0xf2d7c + push dx ; 52 ; 0xf2d7d + push ax ; 50 ; 0xf2d7e + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf2d7f ata.c:48 + mov dx, strict word 00040h ; ba 40 00 ; 0xf2d82 + mov es, dx ; 8e c2 ; 0xf2d85 + mov es, [es:bx] ; 26 8e 07 ; 0xf2d87 + mov dx, ax ; 89 c2 ; 0xf2d8a ata.c:1170 + shr dx, 1 ; d1 ea ; 0xf2d8c + and AL, strict byte 001h ; 24 01 ; 0xf2d8e ata.c:1171 + mov byte [bp-008h], al ; 88 46 f8 ; 0xf2d90 + mov al, dl ; 88 d0 ; 0xf2d93 ata.c:1173 + xor ah, ah ; 30 e4 ; 0xf2d95 + imul bx, ax, strict byte 00006h ; 6b d8 06 ; 0xf2d97 + add bx, 00122h ; 81 c3 22 01 ; 0xf2d9a + mov cx, word [es:bx+00206h] ; 26 8b 8f 06 02 ; 0xf2d9e + mov bx, word [es:bx+00208h] ; 26 8b 9f 08 02 ; 0xf2da3 ata.c:1174 + lea dx, [bx+006h] ; 8d 57 06 ; 0xf2da8 ata.c:1177 + mov AL, strict byte 00ah ; b0 0a ; 0xf2dab + out DX, AL ; ee ; 0xf2dad + cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf2dae ata.c:1178 + je short 02db9h ; 74 05 ; 0xf2db2 + mov ax, 000b0h ; b8 b0 00 ; 0xf2db4 + jmp short 02dbch ; eb 03 ; 0xf2db7 + mov ax, 000a0h ; b8 a0 00 ; 0xf2db9 + mov dx, cx ; 89 ca ; 0xf2dbc + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2dbe + out DX, AL ; ee ; 0xf2dc1 + mov dx, cx ; 89 ca ; 0xf2dc2 ata.c:1179 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf2dc4 + mov AL, strict byte 008h ; b0 08 ; 0xf2dc7 + out DX, AL ; ee ; 0xf2dc9 + mov dx, cx ; 89 ca ; 0xf2dca ata.c:1183 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf2dcc + in AL, DX ; ec ; 0xf2dcf + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2dd0 + test AL, strict byte 080h ; a8 80 ; 0xf2dd2 ata.c:1184 + jne short 02dcah ; 75 f4 ; 0xf2dd4 + and AL, strict byte 0e9h ; 24 e9 ; 0xf2dd6 ata.c:1188 + cmp AL, strict byte 040h ; 3c 40 ; 0xf2dd8 + je short 02de7h ; 74 0b ; 0xf2dda + lea dx, [bx+006h] ; 8d 57 06 ; 0xf2ddc ata.c:1192 + mov AL, strict byte 008h ; b0 08 ; 0xf2ddf + out DX, AL ; ee ; 0xf2de1 + mov ax, strict word 00001h ; b8 01 00 ; 0xf2de2 ata.c:1193 + jmp short 02defh ; eb 08 ; 0xf2de5 + lea dx, [bx+006h] ; 8d 57 06 ; 0xf2de7 ata.c:1197 + mov AL, strict byte 008h ; b0 08 ; 0xf2dea + out DX, AL ; ee ; 0xf2dec + xor ax, ax ; 31 c0 ; 0xf2ded ata.c:1198 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf2def ata.c:1199 + pop dx ; 5a ; 0xf2df2 + pop cx ; 59 ; 0xf2df3 + pop bx ; 5b ; 0xf2df4 + pop bp ; 5d ; 0xf2df5 + retn ; c3 ; 0xf2df6 + ; disGetNextSymbol 0xf2df7 LB 0x70d1 -> off=0x0 cb=000000000000002b uValue=00000000000f17f7 'set_diskette_current_cyl' +set_diskette_current_cyl: ; 0xf2df7 LB 0x2b + push bp ; 55 ; 0xf2df7 floppy.c:71 + mov bp, sp ; 89 e5 ; 0xf2df8 + push bx ; 53 ; 0xf2dfa + mov dh, al ; 88 c6 ; 0xf2dfb + cmp AL, strict byte 001h ; 3c 01 ; 0xf2dfd floppy.c:73 + jbe short 02e0ch ; 76 0b ; 0xf2dff + push 00250h ; 68 50 02 ; 0xf2e01 floppy.c:74 + push strict byte 00007h ; 6a 07 ; 0xf2e04 + call 018ffh ; e8 f6 ea ; 0xf2e06 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf2e09 + mov bl, dh ; 88 f3 ; 0xf2e0c floppy.c:75 + xor bh, bh ; 30 ff ; 0xf2e0e + add bx, 00094h ; 81 c3 94 00 ; 0xf2e10 + mov ax, strict word 00040h ; b8 40 00 ; 0xf2e14 floppy.c:43 + mov es, ax ; 8e c0 ; 0xf2e17 + mov byte [es:bx], dl ; 26 88 17 ; 0xf2e19 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf2e1c floppy.c:76 + pop bx ; 5b ; 0xf2e1f + pop bp ; 5d ; 0xf2e20 + retn ; c3 ; 0xf2e21 + ; disGetNextSymbol 0xf2e22 LB 0x70a6 -> off=0x0 cb=0000000000000023 uValue=00000000000f1822 'floppy_wait_for_interrupt' +floppy_wait_for_interrupt: ; 0xf2e22 LB 0x23 + push bp ; 55 ; 0xf2e22 floppy.c:96 + mov bp, sp ; 89 e5 ; 0xf2e23 + push bx ; 53 ; 0xf2e25 + cli ; fa ; 0xf2e26 floppy.c:98 + mov bx, strict word 0003eh ; bb 3e 00 ; 0xf2e27 floppy.c:38 + mov ax, strict word 00040h ; b8 40 00 ; 0xf2e2a + mov es, ax ; 8e c0 ; 0xf2e2d + mov al, byte [es:bx] ; 26 8a 07 ; 0xf2e2f + test AL, strict byte 080h ; a8 80 ; 0xf2e32 floppy.c:102 + je short 02e3ah ; 74 04 ; 0xf2e34 + and AL, strict byte 080h ; 24 80 ; 0xf2e36 floppy.c:103 + jmp short 02e3fh ; eb 05 ; 0xf2e38 + sti ; fb ; 0xf2e3a floppy.c:104 + hlt ; f4 ; 0xf2e3b + cli ; fa ; 0xf2e3c + jmp short 02e27h ; eb e8 ; 0xf2e3d floppy.c:105 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf2e3f floppy.c:106 + pop bx ; 5b ; 0xf2e42 + pop bp ; 5d ; 0xf2e43 + retn ; c3 ; 0xf2e44 + ; disGetNextSymbol 0xf2e45 LB 0x7083 -> off=0x0 cb=0000000000000038 uValue=00000000000f1845 'floppy_wait_for_interrupt_or_timeout' +floppy_wait_for_interrupt_or_timeout: ; 0xf2e45 LB 0x38 + push bp ; 55 ; 0xf2e45 floppy.c:116 + mov bp, sp ; 89 e5 ; 0xf2e46 + push bx ; 53 ; 0xf2e48 + cli ; fa ; 0xf2e49 floppy.c:118 + mov bx, strict word 00040h ; bb 40 00 ; 0xf2e4a floppy.c:38 + mov es, bx ; 8e c3 ; 0xf2e4d + mov al, byte [es:bx] ; 26 8a 07 ; 0xf2e4f + test al, al ; 84 c0 ; 0xf2e52 floppy.c:122 + jne short 02e59h ; 75 03 ; 0xf2e54 + sti ; fb ; 0xf2e56 floppy.c:123 + jmp short 02e77h ; eb 1e ; 0xf2e57 floppy.c:124 + mov bx, strict word 0003eh ; bb 3e 00 ; 0xf2e59 floppy.c:38 + mov ax, strict word 00040h ; b8 40 00 ; 0xf2e5c + mov es, ax ; 8e c0 ; 0xf2e5f + mov al, byte [es:bx] ; 26 8a 07 ; 0xf2e61 + test AL, strict byte 080h ; a8 80 ; 0xf2e64 floppy.c:128 + je short 02e72h ; 74 0a ; 0xf2e66 + mov ah, al ; 88 c4 ; 0xf2e68 floppy.c:129 + and ah, 07fh ; 80 e4 7f ; 0xf2e6a + mov byte [es:bx], ah ; 26 88 27 ; 0xf2e6d floppy.c:43 + jmp short 02e77h ; eb 05 ; 0xf2e70 floppy.c:130 + sti ; fb ; 0xf2e72 floppy.c:132 + hlt ; f4 ; 0xf2e73 + cli ; fa ; 0xf2e74 + jmp short 02e4ah ; eb d3 ; 0xf2e75 floppy.c:133 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf2e77 floppy.c:134 + pop bx ; 5b ; 0xf2e7a + pop bp ; 5d ; 0xf2e7b + retn ; c3 ; 0xf2e7c + ; disGetNextSymbol 0xf2e7d LB 0x704b -> off=0x0 cb=000000000000003f uValue=00000000000f187d 'floppy_reset_controller' +floppy_reset_controller: ; 0xf2e7d LB 0x3f + push bp ; 55 ; 0xf2e7d floppy.c:138 + mov bp, sp ; 89 e5 ; 0xf2e7e + push bx ; 53 ; 0xf2e80 + push cx ; 51 ; 0xf2e81 + push dx ; 52 ; 0xf2e82 + mov cx, ax ; 89 c1 ; 0xf2e83 + mov dx, 003f2h ; ba f2 03 ; 0xf2e85 floppy.c:143 + in AL, DX ; ec ; 0xf2e88 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2e89 + mov bx, ax ; 89 c3 ; 0xf2e8b + and AL, strict byte 0fbh ; 24 fb ; 0xf2e8d floppy.c:144 + out DX, AL ; ee ; 0xf2e8f + mov al, bl ; 88 d8 ; 0xf2e90 floppy.c:145 + or AL, strict byte 004h ; 0c 04 ; 0xf2e92 + out DX, AL ; ee ; 0xf2e94 + mov dx, 003f4h ; ba f4 03 ; 0xf2e95 floppy.c:149 + in AL, DX ; ec ; 0xf2e98 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2e99 + and AL, strict byte 0c0h ; 24 c0 ; 0xf2e9b floppy.c:150 + cmp AL, strict byte 080h ; 3c 80 ; 0xf2e9d + jne short 02e95h ; 75 f4 ; 0xf2e9f + mov bx, cx ; 89 cb ; 0xf2ea1 floppy.c:153 + add bx, 00090h ; 81 c3 90 00 ; 0xf2ea3 + mov ax, strict word 00040h ; b8 40 00 ; 0xf2ea7 floppy.c:38 + mov es, ax ; 8e c0 ; 0xf2eaa + mov al, byte [es:bx] ; 26 8a 07 ; 0xf2eac + and AL, strict byte 0efh ; 24 ef ; 0xf2eaf floppy.c:154 + mov byte [es:bx], al ; 26 88 07 ; 0xf2eb1 floppy.c:43 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf2eb4 floppy.c:157 + pop dx ; 5a ; 0xf2eb7 + pop cx ; 59 ; 0xf2eb8 + pop bx ; 5b ; 0xf2eb9 + pop bp ; 5d ; 0xf2eba + retn ; c3 ; 0xf2ebb + ; disGetNextSymbol 0xf2ebc LB 0x700c -> off=0x0 cb=0000000000000074 uValue=00000000000f18bc 'floppy_prepare_controller' +floppy_prepare_controller: ; 0xf2ebc LB 0x74 + push bp ; 55 ; 0xf2ebc floppy.c:159 + mov bp, sp ; 89 e5 ; 0xf2ebd + push bx ; 53 ; 0xf2ebf + push cx ; 51 ; 0xf2ec0 + push dx ; 52 ; 0xf2ec1 + push ax ; 50 ; 0xf2ec2 + mov cx, ax ; 89 c1 ; 0xf2ec3 + mov bx, strict word 0003eh ; bb 3e 00 ; 0xf2ec5 floppy.c:38 + mov ax, strict word 00040h ; b8 40 00 ; 0xf2ec8 + mov es, ax ; 8e c0 ; 0xf2ecb + mov al, byte [es:bx] ; 26 8a 07 ; 0xf2ecd + and AL, strict byte 07fh ; 24 7f ; 0xf2ed0 floppy.c:165 + mov byte [es:bx], al ; 26 88 07 ; 0xf2ed2 floppy.c:43 + mov dx, 003f2h ; ba f2 03 ; 0xf2ed5 floppy.c:169 + in AL, DX ; ec ; 0xf2ed8 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2ed9 + and AL, strict byte 004h ; 24 04 ; 0xf2edb + mov byte [bp-008h], al ; 88 46 f8 ; 0xf2edd + test cx, cx ; 85 c9 ; 0xf2ee0 floppy.c:170 + je short 02ee8h ; 74 04 ; 0xf2ee2 + mov AL, strict byte 020h ; b0 20 ; 0xf2ee4 floppy.c:171 + jmp short 02eeah ; eb 02 ; 0xf2ee6 floppy.c:172 + mov AL, strict byte 010h ; b0 10 ; 0xf2ee8 floppy.c:173 + or AL, strict byte 00ch ; 0c 0c ; 0xf2eea floppy.c:174 + or al, cl ; 08 c8 ; 0xf2eec floppy.c:175 + mov dx, 003f2h ; ba f2 03 ; 0xf2eee floppy.c:176 + out DX, AL ; ee ; 0xf2ef1 + mov bx, strict word 00040h ; bb 40 00 ; 0xf2ef2 floppy.c:43 + mov es, bx ; 8e c3 ; 0xf2ef5 + mov byte [es:bx], 025h ; 26 c6 07 25 ; 0xf2ef7 + mov bx, 0008bh ; bb 8b 00 ; 0xf2efb floppy.c:38 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf2efe + shr al, 006h ; c0 e8 06 ; 0xf2f01 floppy.c:183 + mov dx, 003f7h ; ba f7 03 ; 0xf2f04 floppy.c:184 + out DX, AL ; ee ; 0xf2f07 + mov dx, 003f4h ; ba f4 03 ; 0xf2f08 floppy.c:188 + in AL, DX ; ec ; 0xf2f0b + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2f0c + and AL, strict byte 0c0h ; 24 c0 ; 0xf2f0e floppy.c:189 + cmp AL, strict byte 080h ; 3c 80 ; 0xf2f10 + jne short 02f08h ; 75 f4 ; 0xf2f12 + cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf2f14 floppy.c:191 + jne short 02f28h ; 75 0e ; 0xf2f18 + call 02e22h ; e8 05 ff ; 0xf2f1a floppy.c:202 + mov bx, strict word 0003eh ; bb 3e 00 ; 0xf2f1d floppy.c:43 + mov dx, strict word 00040h ; ba 40 00 ; 0xf2f20 + mov es, dx ; 8e c2 ; 0xf2f23 + mov byte [es:bx], al ; 26 88 07 ; 0xf2f25 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf2f28 floppy.c:206 + pop dx ; 5a ; 0xf2f2b + pop cx ; 59 ; 0xf2f2c + pop bx ; 5b ; 0xf2f2d + pop bp ; 5d ; 0xf2f2e + retn ; c3 ; 0xf2f2f + ; disGetNextSymbol 0xf2f30 LB 0x6f98 -> off=0x0 cb=0000000000000049 uValue=00000000000f1930 'floppy_media_known' +floppy_media_known: ; 0xf2f30 LB 0x49 + push bx ; 53 ; 0xf2f30 floppy.c:208 + push dx ; 52 ; 0xf2f31 + push bp ; 55 ; 0xf2f32 + mov bp, sp ; 89 e5 ; 0xf2f33 + mov bx, strict word 0003eh ; bb 3e 00 ; 0xf2f35 floppy.c:38 + mov dx, strict word 00040h ; ba 40 00 ; 0xf2f38 + mov es, dx ; 8e c2 ; 0xf2f3b + mov bh, byte [es:bx] ; 26 8a 3f ; 0xf2f3d + mov bl, bh ; 88 fb ; 0xf2f40 floppy.c:39 + test ax, ax ; 85 c0 ; 0xf2f42 floppy.c:214 + je short 02f48h ; 74 02 ; 0xf2f44 + shr bl, 1 ; d0 eb ; 0xf2f46 floppy.c:215 + and bl, 001h ; 80 e3 01 ; 0xf2f48 floppy.c:216 + jne short 02f51h ; 75 04 ; 0xf2f4b floppy.c:217 + xor bh, bh ; 30 ff ; 0xf2f4d floppy.c:218 + jmp short 02f73h ; eb 22 ; 0xf2f4f + mov bx, 00090h ; bb 90 00 ; 0xf2f51 floppy.c:220 + test ax, ax ; 85 c0 ; 0xf2f54 floppy.c:221 + je short 02f5bh ; 74 03 ; 0xf2f56 + mov bx, 00091h ; bb 91 00 ; 0xf2f58 floppy.c:222 + mov ax, strict word 00040h ; b8 40 00 ; 0xf2f5b floppy.c:38 + mov es, ax ; 8e c0 ; 0xf2f5e + mov al, byte [es:bx] ; 26 8a 07 ; 0xf2f60 + xor ah, ah ; 30 e4 ; 0xf2f63 floppy.c:225 + sar ax, 004h ; c1 f8 04 ; 0xf2f65 + and AL, strict byte 001h ; 24 01 ; 0xf2f68 + jne short 02f70h ; 75 04 ; 0xf2f6a floppy.c:226 + xor bx, bx ; 31 db ; 0xf2f6c floppy.c:227 + jmp short 02f73h ; eb 03 ; 0xf2f6e + mov bx, strict word 00001h ; bb 01 00 ; 0xf2f70 floppy.c:230 + mov ax, bx ; 89 d8 ; 0xf2f73 floppy.c:231 + pop bp ; 5d ; 0xf2f75 + pop dx ; 5a ; 0xf2f76 + pop bx ; 5b ; 0xf2f77 + retn ; c3 ; 0xf2f78 + ; disGetNextSymbol 0xf2f79 LB 0x6f4f -> off=0x0 cb=0000000000000052 uValue=00000000000f1979 'floppy_read_id' +floppy_read_id: ; 0xf2f79 LB 0x52 + push bp ; 55 ; 0xf2f79 floppy.c:233 + mov bp, sp ; 89 e5 ; 0xf2f7a + push bx ; 53 ; 0xf2f7c + push dx ; 52 ; 0xf2f7d + push si ; 56 ; 0xf2f7e + mov bx, ax ; 89 c3 ; 0xf2f7f + call 02ebch ; e8 38 ff ; 0xf2f81 floppy.c:240 + mov AL, strict byte 04ah ; b0 4a ; 0xf2f84 floppy.c:243 + mov dx, 003f5h ; ba f5 03 ; 0xf2f86 + out DX, AL ; ee ; 0xf2f89 + mov al, bl ; 88 d8 ; 0xf2f8a floppy.c:244 + out DX, AL ; ee ; 0xf2f8c + call 02e22h ; e8 92 fe ; 0xf2f8d floppy.c:259 + xor bx, bx ; 31 db ; 0xf2f90 floppy.c:263 + jmp short 02f99h ; eb 05 ; 0xf2f92 + cmp bx, strict byte 00007h ; 83 fb 07 ; 0xf2f94 + jnl short 02fadh ; 7d 14 ; 0xf2f97 + mov dx, 003f5h ; ba f5 03 ; 0xf2f99 floppy.c:264 + in AL, DX ; ec ; 0xf2f9c + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2f9d + lea si, [bx+042h] ; 8d 77 42 ; 0xf2f9f + mov dx, strict word 00040h ; ba 40 00 ; 0xf2fa2 floppy.c:43 + mov es, dx ; 8e c2 ; 0xf2fa5 + mov byte [es:si], al ; 26 88 04 ; 0xf2fa7 + inc bx ; 43 ; 0xf2faa floppy.c:264 + jmp short 02f94h ; eb e7 ; 0xf2fab + mov bx, strict word 00042h ; bb 42 00 ; 0xf2fad floppy.c:38 + mov ax, strict word 00040h ; b8 40 00 ; 0xf2fb0 + mov es, ax ; 8e c0 ; 0xf2fb3 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf2fb5 + test AL, strict byte 0c0h ; a8 c0 ; 0xf2fb8 floppy.c:39 + je short 02fc0h ; 74 04 ; 0xf2fba + xor ax, ax ; 31 c0 ; 0xf2fbc floppy.c:267 + jmp short 02fc3h ; eb 03 ; 0xf2fbe + mov ax, strict word 00001h ; b8 01 00 ; 0xf2fc0 floppy.c:269 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf2fc3 floppy.c:270 + pop si ; 5e ; 0xf2fc6 + pop dx ; 5a ; 0xf2fc7 + pop bx ; 5b ; 0xf2fc8 + pop bp ; 5d ; 0xf2fc9 + retn ; c3 ; 0xf2fca + ; disGetNextSymbol 0xf2fcb LB 0x6efd -> off=0x0 cb=0000000000000041 uValue=00000000000f19cb 'floppy_drive_recal' +floppy_drive_recal: ; 0xf2fcb LB 0x41 + push bp ; 55 ; 0xf2fcb floppy.c:272 + mov bp, sp ; 89 e5 ; 0xf2fcc + push bx ; 53 ; 0xf2fce + push dx ; 52 ; 0xf2fcf + push si ; 56 ; 0xf2fd0 + mov bx, ax ; 89 c3 ; 0xf2fd1 + call 02ebch ; e8 e6 fe ; 0xf2fd3 floppy.c:277 + mov AL, strict byte 007h ; b0 07 ; 0xf2fd6 floppy.c:280 + mov dx, 003f5h ; ba f5 03 ; 0xf2fd8 + out DX, AL ; ee ; 0xf2fdb + mov al, bl ; 88 d8 ; 0xf2fdc floppy.c:281 + out DX, AL ; ee ; 0xf2fde + call 02e22h ; e8 40 fe ; 0xf2fdf floppy.c:300 + test bx, bx ; 85 db ; 0xf2fe2 floppy.c:304 + je short 02fedh ; 74 07 ; 0xf2fe4 + or AL, strict byte 002h ; 0c 02 ; 0xf2fe6 floppy.c:305 + mov bx, 00095h ; bb 95 00 ; 0xf2fe8 floppy.c:306 + jmp short 02ff2h ; eb 05 ; 0xf2feb floppy.c:307 + or AL, strict byte 001h ; 0c 01 ; 0xf2fed floppy.c:308 + mov bx, 00094h ; bb 94 00 ; 0xf2fef floppy.c:309 + mov si, strict word 0003eh ; be 3e 00 ; 0xf2ff2 floppy.c:43 + mov dx, strict word 00040h ; ba 40 00 ; 0xf2ff5 + mov es, dx ; 8e c2 ; 0xf2ff8 + mov byte [es:si], al ; 26 88 04 ; 0xf2ffa + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf2ffd floppy.c:43 + mov ax, strict word 00001h ; b8 01 00 ; 0xf3001 floppy.c:315 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf3004 + pop si ; 5e ; 0xf3007 + pop dx ; 5a ; 0xf3008 + pop bx ; 5b ; 0xf3009 + pop bp ; 5d ; 0xf300a + retn ; c3 ; 0xf300b + ; disGetNextSymbol 0xf300c LB 0x6ebc -> off=0x0 cb=00000000000000e6 uValue=00000000000f1a0c 'floppy_media_sense' +floppy_media_sense: ; 0xf300c LB 0xe6 + push bp ; 55 ; 0xf300c floppy.c:318 + mov bp, sp ; 89 e5 ; 0xf300d + push bx ; 53 ; 0xf300f + push cx ; 51 ; 0xf3010 + push dx ; 52 ; 0xf3011 + push si ; 56 ; 0xf3012 + push di ; 57 ; 0xf3013 + mov cx, ax ; 89 c1 ; 0xf3014 + call 02fcbh ; e8 b2 ff ; 0xf3016 floppy.c:324 + test ax, ax ; 85 c0 ; 0xf3019 + jne short 03022h ; 75 05 ; 0xf301b + xor dx, dx ; 31 d2 ; 0xf301d floppy.c:325 + jmp near 030e6h ; e9 c4 00 ; 0xf301f + mov ax, strict word 00010h ; b8 10 00 ; 0xf3022 floppy.c:360 + call 01650h ; e8 28 e6 ; 0xf3025 + test cx, cx ; 85 c9 ; 0xf3028 floppy.c:361 + jne short 03033h ; 75 07 ; 0xf302a + mov dl, al ; 88 c2 ; 0xf302c floppy.c:362 + shr dl, 004h ; c0 ea 04 ; 0xf302e + jmp short 03038h ; eb 05 ; 0xf3031 floppy.c:363 + mov dl, al ; 88 c2 ; 0xf3033 floppy.c:364 + and dl, 00fh ; 80 e2 0f ; 0xf3035 + cmp dl, 001h ; 80 fa 01 ; 0xf3038 floppy.c:365 + jne short 03046h ; 75 09 ; 0xf303b + xor dl, dl ; 30 d2 ; 0xf303d floppy.c:367 + mov DH, strict byte 015h ; b6 15 ; 0xf303f floppy.c:368 + mov bx, strict word 00001h ; bb 01 00 ; 0xf3041 floppy.c:369 + jmp short 03084h ; eb 3e ; 0xf3044 floppy.c:371 + cmp dl, 002h ; 80 fa 02 ; 0xf3046 + jne short 03051h ; 75 06 ; 0xf3049 + xor dl, dl ; 30 d2 ; 0xf304b floppy.c:373 + mov DH, strict byte 035h ; b6 35 ; 0xf304d floppy.c:374 + jmp short 03041h ; eb f0 ; 0xf304f + cmp dl, 003h ; 80 fa 03 ; 0xf3051 floppy.c:377 + jne short 0305ch ; 75 06 ; 0xf3054 + xor dl, dl ; 30 d2 ; 0xf3056 floppy.c:379 + mov DH, strict byte 017h ; b6 17 ; 0xf3058 floppy.c:380 + jmp short 03041h ; eb e5 ; 0xf305a + cmp dl, 004h ; 80 fa 04 ; 0xf305c floppy.c:383 + jne short 03067h ; 75 06 ; 0xf305f + xor dl, dl ; 30 d2 ; 0xf3061 floppy.c:385 + mov DH, strict byte 017h ; b6 17 ; 0xf3063 floppy.c:386 + jmp short 03041h ; eb da ; 0xf3065 + cmp dl, 005h ; 80 fa 05 ; 0xf3067 floppy.c:389 + jne short 03072h ; 75 06 ; 0xf306a + mov DL, strict byte 0cch ; b2 cc ; 0xf306c floppy.c:391 + mov DH, strict byte 0d7h ; b6 d7 ; 0xf306e floppy.c:392 + jmp short 03041h ; eb cf ; 0xf3070 + cmp dl, 00eh ; 80 fa 0e ; 0xf3072 floppy.c:396 + je short 0307ch ; 74 05 ; 0xf3075 + cmp dl, 00fh ; 80 fa 0f ; 0xf3077 + jne short 0307eh ; 75 02 ; 0xf307a + jmp short 0306ch ; eb ee ; 0xf307c + xor dl, dl ; 30 d2 ; 0xf307e floppy.c:404 + xor dh, dh ; 30 f6 ; 0xf3080 floppy.c:405 + xor bx, bx ; 31 db ; 0xf3082 floppy.c:406 + mov si, 0008bh ; be 8b 00 ; 0xf3084 floppy.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3087 + mov es, ax ; 8e c0 ; 0xf308a + mov byte [es:si], dl ; 26 88 14 ; 0xf308c + mov ax, cx ; 89 c8 ; 0xf308f floppy.c:410 + call 02f79h ; e8 e5 fe ; 0xf3091 + test ax, ax ; 85 c0 ; 0xf3094 + jne short 030cah ; 75 32 ; 0xf3096 + mov al, dl ; 88 d0 ; 0xf3098 floppy.c:411 + and AL, strict byte 0c0h ; 24 c0 ; 0xf309a + cmp AL, strict byte 080h ; 3c 80 ; 0xf309c + je short 030cah ; 74 2a ; 0xf309e + mov al, dl ; 88 d0 ; 0xf30a0 floppy.c:415 + and AL, strict byte 0c0h ; 24 c0 ; 0xf30a2 + cmp AL, strict byte 0c0h ; 3c c0 ; 0xf30a4 + je short 030b7h ; 74 0f ; 0xf30a6 + mov ah, dl ; 88 d4 ; 0xf30a8 + and ah, 03fh ; 80 e4 3f ; 0xf30aa + cmp AL, strict byte 040h ; 3c 40 ; 0xf30ad + je short 030c3h ; 74 12 ; 0xf30af + test al, al ; 84 c0 ; 0xf30b1 + je short 030bch ; 74 07 ; 0xf30b3 + jmp short 03084h ; eb cd ; 0xf30b5 + and dl, 03fh ; 80 e2 3f ; 0xf30b7 floppy.c:417 + jmp short 03084h ; eb c8 ; 0xf30ba floppy.c:418 + mov dl, ah ; 88 e2 ; 0xf30bc floppy.c:420 + or dl, 040h ; 80 ca 40 ; 0xf30be + jmp short 03084h ; eb c1 ; 0xf30c1 floppy.c:421 + mov dl, ah ; 88 e2 ; 0xf30c3 floppy.c:423 + or dl, 080h ; 80 ca 80 ; 0xf30c5 + jmp short 03084h ; eb ba ; 0xf30c8 floppy.c:427 + test cx, cx ; 85 c9 ; 0xf30ca floppy.c:429 + jne short 030d3h ; 75 05 ; 0xf30cc + mov si, 00090h ; be 90 00 ; 0xf30ce floppy.c:430 + jmp short 030d6h ; eb 03 ; 0xf30d1 floppy.c:431 + mov si, 00091h ; be 91 00 ; 0xf30d3 floppy.c:432 + mov di, 0008bh ; bf 8b 00 ; 0xf30d6 floppy.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf30d9 + mov es, ax ; 8e c0 ; 0xf30dc + mov byte [es:di], dl ; 26 88 15 ; 0xf30de + mov byte [es:si], dh ; 26 88 34 ; 0xf30e1 floppy.c:43 + mov dx, bx ; 89 da ; 0xf30e4 floppy.c:436 + mov ax, dx ; 89 d0 ; 0xf30e6 floppy.c:437 + lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf30e8 + pop di ; 5f ; 0xf30eb + pop si ; 5e ; 0xf30ec + pop dx ; 5a ; 0xf30ed + pop cx ; 59 ; 0xf30ee + pop bx ; 5b ; 0xf30ef + pop bp ; 5d ; 0xf30f0 + retn ; c3 ; 0xf30f1 + ; disGetNextSymbol 0xf30f2 LB 0x6dd6 -> off=0x0 cb=0000000000000028 uValue=00000000000f1af2 'floppy_drive_exists' +floppy_drive_exists: ; 0xf30f2 LB 0x28 + push bp ; 55 ; 0xf30f2 floppy.c:440 + mov bp, sp ; 89 e5 ; 0xf30f3 + push dx ; 52 ; 0xf30f5 + mov dx, ax ; 89 c2 ; 0xf30f6 + mov ax, strict word 00010h ; b8 10 00 ; 0xf30f8 floppy.c:446 + call 01650h ; e8 52 e5 ; 0xf30fb + test dx, dx ; 85 d2 ; 0xf30fe floppy.c:447 + jne short 03107h ; 75 05 ; 0xf3100 + shr al, 004h ; c0 e8 04 ; 0xf3102 floppy.c:448 + jmp short 03109h ; eb 02 ; 0xf3105 floppy.c:449 + and AL, strict byte 00fh ; 24 0f ; 0xf3107 floppy.c:450 + test al, al ; 84 c0 ; 0xf3109 floppy.c:451 + je short 03112h ; 74 05 ; 0xf310b + mov ax, strict word 00001h ; b8 01 00 ; 0xf310d + jmp short 03114h ; eb 02 ; 0xf3110 + xor ah, ah ; 30 e4 ; 0xf3112 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf3114 floppy.c:452 + pop dx ; 5a ; 0xf3117 + pop bp ; 5d ; 0xf3118 + retn ; c3 ; 0xf3119 + ; disGetNextSymbol 0xf311a LB 0x6dae -> off=0x23 cb=00000000000009ce uValue=00000000000f1b3d 'int13_diskette_function' + db 018h, 017h, 016h, 015h, 008h, 005h, 004h, 003h, 002h, 001h, 000h, 0e8h, 03ah, 07bh, 031h, 0fch + db 031h, 01dh, 032h, 01dh, 032h, 01dh, 032h, 0d1h, 035h, 09bh, 037h, 089h, 038h, 0cbh, 038h, 0ffh + db 038h, 073h, 039h +int13_diskette_function: ; 0xf313d LB 0x9ce + push bp ; 55 ; 0xf313d floppy.c:467 + mov bp, sp ; 89 e5 ; 0xf313e + sub sp, strict byte 0000ch ; 83 ec 0c ; 0xf3140 + or byte [bp+01dh], 002h ; 80 4e 1d 02 ; 0xf3143 floppy.c:478 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3147 floppy.c:480 + shr ax, 008h ; c1 e8 08 ; 0xf314a + cmp ax, strict word 00018h ; 3d 18 00 ; 0xf314d + jnbe short 031aeh ; 77 5c ; 0xf3150 + push CS ; 0e ; 0xf3152 + pop ES ; 07 ; 0xf3153 + mov cx, strict word 0000ch ; b9 0c 00 ; 0xf3154 + mov di, 0311ah ; bf 1a 31 ; 0xf3157 + repne scasb ; f2 ae ; 0xf315a + sal cx, 1 ; d1 e1 ; 0xf315c + mov di, cx ; 89 cf ; 0xf315e + mov di, word [cs:di+03125h] ; 2e 8b bd 25 31 ; 0xf3160 + mov dx, word [bp+016h] ; 8b 56 16 ; 0xf3165 + xor dh, dh ; 30 f6 ; 0xf3168 + mov ah, byte [bp+00eh] ; 8a 66 0e ; 0xf316a + mov cx, word [bp+01ch] ; 8b 4e 1c ; 0xf316d + or cl, 001h ; 80 c9 01 ; 0xf3170 + mov si, dx ; 89 d6 ; 0xf3173 + or si, 00100h ; 81 ce 00 01 ; 0xf3175 + jmp di ; ff e7 ; 0xf3179 + mov bl, byte [bp+00eh] ; 8a 5e 0e ; 0xf317b floppy.c:483 + cmp bl, 001h ; 80 fb 01 ; 0xf317e floppy.c:484 + jbe short 0319dh ; 76 1a ; 0xf3181 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3183 floppy.c:485 + xor ah, ah ; 30 e4 ; 0xf3186 + or ah, 001h ; 80 cc 01 ; 0xf3188 + mov word [bp+016h], ax ; 89 46 16 ; 0xf318b + mov bx, strict word 00041h ; bb 41 00 ; 0xf318e floppy.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3191 + mov es, ax ; 8e c0 ; 0xf3194 + mov byte [es:bx], 001h ; 26 c6 07 01 ; 0xf3196 + jmp near 039d5h ; e9 38 08 ; 0xf319a + mov ax, strict word 00010h ; b8 10 00 ; 0xf319d floppy.c:491 + call 01650h ; e8 ad e4 ; 0xf31a0 + test bl, bl ; 84 db ; 0xf31a3 floppy.c:492 + jne short 031b1h ; 75 0a ; 0xf31a5 + mov dl, al ; 88 c2 ; 0xf31a7 floppy.c:493 + shr dl, 004h ; c0 ea 04 ; 0xf31a9 + jmp short 031b6h ; eb 08 ; 0xf31ac floppy.c:494 + jmp near 03ae8h ; e9 37 09 ; 0xf31ae + mov dl, al ; 88 c2 ; 0xf31b1 floppy.c:495 + and dl, 00fh ; 80 e2 0f ; 0xf31b3 + test dl, dl ; 84 d2 ; 0xf31b6 floppy.c:496 + jne short 031d4h ; 75 1a ; 0xf31b8 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf31ba floppy.c:497 + xor ah, ah ; 30 e4 ; 0xf31bd + or ah, 080h ; 80 cc 80 ; 0xf31bf + mov word [bp+016h], ax ; 89 46 16 ; 0xf31c2 + mov bx, strict word 00041h ; bb 41 00 ; 0xf31c5 floppy.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf31c8 + mov es, ax ; 8e c0 ; 0xf31cb + mov byte [es:bx], 080h ; 26 c6 07 80 ; 0xf31cd + jmp near 039d5h ; e9 01 08 ; 0xf31d1 + mov si, strict word 0003eh ; be 3e 00 ; 0xf31d4 floppy.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf31d7 + mov es, ax ; 8e c0 ; 0xf31da + mov byte [es:si], 000h ; 26 c6 04 00 ; 0xf31dc + xor al, al ; 30 c0 ; 0xf31e0 floppy.c:506 + mov byte [bp+017h], al ; 88 46 17 ; 0xf31e2 + mov si, strict word 00041h ; be 41 00 ; 0xf31e5 floppy.c:43 + mov byte [es:si], al ; 26 88 04 ; 0xf31e8 + and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf31eb floppy.c:508 + mov al, bl ; 88 d8 ; 0xf31ef floppy.c:509 + xor ah, ah ; 30 e4 ; 0xf31f1 + xor dx, dx ; 31 d2 ; 0xf31f3 + call 02df7h ; e8 ff fb ; 0xf31f5 + mov sp, bp ; 89 ec ; 0xf31f8 floppy.c:510 + pop bp ; 5d ; 0xf31fa + retn ; c3 ; 0xf31fb + and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf31fc floppy.c:513 + mov bx, 00441h ; bb 41 04 ; 0xf3200 floppy.c:38 + xor ax, ax ; 31 c0 ; 0xf3203 + mov es, ax ; 8e c0 ; 0xf3205 + mov bl, byte [es:bx] ; 26 8a 1f ; 0xf3207 + mov al, bl ; 88 d8 ; 0xf320a floppy.c:515 + xor ah, ah ; 30 e4 ; 0xf320c + sal ax, 008h ; c1 e0 08 ; 0xf320e + or dx, ax ; 09 c2 ; 0xf3211 + mov word [bp+016h], dx ; 89 56 16 ; 0xf3213 + test bl, bl ; 84 db ; 0xf3216 floppy.c:516 + je short 031f8h ; 74 de ; 0xf3218 + jmp near 039d5h ; e9 b8 07 ; 0xf321a + mov bh, byte [bp+016h] ; 8a 7e 16 ; 0xf321d floppy.c:524 + mov ax, word [bp+014h] ; 8b 46 14 ; 0xf3220 floppy.c:525 + shr ax, 008h ; c1 e8 08 ; 0xf3223 + mov byte [bp-004h], al ; 88 46 fc ; 0xf3226 + mov al, byte [bp+014h] ; 8a 46 14 ; 0xf3229 floppy.c:526 + mov byte [bp-002h], al ; 88 46 fe ; 0xf322c + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf322f floppy.c:527 + shr ax, 008h ; c1 e8 08 ; 0xf3232 + mov byte [bp-006h], al ; 88 46 fa ; 0xf3235 + mov bl, byte [bp+00eh] ; 8a 5e 0e ; 0xf3238 floppy.c:528 + cmp bl, 001h ; 80 fb 01 ; 0xf323b floppy.c:530 + jnbe short 0324dh ; 77 0d ; 0xf323e + cmp AL, strict byte 001h ; 3c 01 ; 0xf3240 + jnbe short 0324dh ; 77 09 ; 0xf3242 + test bh, bh ; 84 ff ; 0xf3244 + je short 0324dh ; 74 05 ; 0xf3246 + cmp bh, 048h ; 80 ff 48 ; 0xf3248 + jbe short 03280h ; 76 33 ; 0xf324b + mov bx, 00da0h ; bb a0 0d ; 0xf324d floppy.c:532 + mov cx, ds ; 8c d9 ; 0xf3250 + mov ax, strict word 00004h ; b8 04 00 ; 0xf3252 + call 018bch ; e8 64 e6 ; 0xf3255 + push 00275h ; 68 75 02 ; 0xf3258 + push 0028dh ; 68 8d 02 ; 0xf325b + push strict byte 00004h ; 6a 04 ; 0xf325e + call 018ffh ; e8 9c e6 ; 0xf3260 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf3263 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3266 floppy.c:533 + xor ah, ah ; 30 e4 ; 0xf3269 + or ah, 001h ; 80 cc 01 ; 0xf326b + mov word [bp+016h], ax ; 89 46 16 ; 0xf326e + mov bx, strict word 00041h ; bb 41 00 ; 0xf3271 floppy.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3274 + mov es, ax ; 8e c0 ; 0xf3277 + mov byte [es:bx], 001h ; 26 c6 07 01 ; 0xf3279 + jmp near 0332ah ; e9 aa 00 ; 0xf327d + mov al, bl ; 88 d8 ; 0xf3280 floppy.c:535 + xor ah, ah ; 30 e4 ; 0xf3282 + call 030f2h ; e8 6b fe ; 0xf3284 + test ax, ax ; 85 c0 ; 0xf3287 + jne short 032a5h ; 75 1a ; 0xf3289 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf328b floppy.c:543 + xor ah, ah ; 30 e4 ; 0xf328e + or ah, 080h ; 80 cc 80 ; 0xf3290 + mov word [bp+016h], ax ; 89 46 16 ; 0xf3293 + mov bx, strict word 00041h ; bb 41 00 ; 0xf3296 floppy.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3299 + mov es, ax ; 8e c0 ; 0xf329c + mov byte [es:bx], 080h ; 26 c6 07 80 ; 0xf329e + jmp near 0332ah ; e9 85 00 ; 0xf32a2 + mov cl, bl ; 88 d9 ; 0xf32a5 floppy.c:551 + xor ch, ch ; 30 ed ; 0xf32a7 + mov ax, cx ; 89 c8 ; 0xf32a9 + call 02f30h ; e8 82 fc ; 0xf32ab + test ax, ax ; 85 c0 ; 0xf32ae + jne short 032d8h ; 75 26 ; 0xf32b0 + mov ax, cx ; 89 c8 ; 0xf32b2 floppy.c:552 + call 0300ch ; e8 55 fd ; 0xf32b4 + test ax, ax ; 85 c0 ; 0xf32b7 + jne short 032d8h ; 75 1d ; 0xf32b9 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf32bb floppy.c:554 + xor ah, ah ; 30 e4 ; 0xf32be + or ah, 00ch ; 80 cc 0c ; 0xf32c0 + mov word [bp+016h], ax ; 89 46 16 ; 0xf32c3 + mov bx, strict word 00041h ; bb 41 00 ; 0xf32c6 floppy.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf32c9 + mov es, ax ; 8e c0 ; 0xf32cc + mov byte [es:bx], 00ch ; 26 c6 07 0c ; 0xf32ce + mov byte [bp+016h], ch ; 88 6e 16 ; 0xf32d2 + jmp near 039d5h ; e9 fd 06 ; 0xf32d5 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf32d8 floppy.c:556 + shr ax, 008h ; c1 e8 08 ; 0xf32db + cmp ax, strict word 00002h ; 3d 02 00 ; 0xf32de + jne short 03331h ; 75 4e ; 0xf32e1 + mov dx, word [bp+006h] ; 8b 56 06 ; 0xf32e3 floppy.c:573 + shr dx, 00ch ; c1 ea 0c ; 0xf32e6 + mov ah, dl ; 88 d4 ; 0xf32e9 + mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf32eb floppy.c:574 + sal cx, 004h ; c1 e1 04 ; 0xf32ee + mov si, word [bp+010h] ; 8b 76 10 ; 0xf32f1 floppy.c:575 + add si, cx ; 01 ce ; 0xf32f4 + mov word [bp-008h], si ; 89 76 f8 ; 0xf32f6 + cmp cx, si ; 39 f1 ; 0xf32f9 floppy.c:577 + jbe short 032ffh ; 76 02 ; 0xf32fb + db 0feh, 0c4h + ; inc ah ; fe c4 ; 0xf32fd floppy.c:579 + mov dl, bh ; 88 fa ; 0xf32ff floppy.c:581 + xor dh, dh ; 30 f6 ; 0xf3301 + mov cx, dx ; 89 d1 ; 0xf3303 + sal cx, 009h ; c1 e1 09 ; 0xf3305 + dec cx ; 49 ; 0xf3308 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf3309 floppy.c:584 + add dx, cx ; 01 ca ; 0xf330c + cmp dx, word [bp-008h] ; 3b 56 f8 ; 0xf330e floppy.c:585 + jnc short 03334h ; 73 21 ; 0xf3311 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3313 floppy.c:586 + xor ah, ah ; 30 e4 ; 0xf3316 + or ah, 009h ; 80 cc 09 ; 0xf3318 + mov word [bp+016h], ax ; 89 46 16 ; 0xf331b + mov bx, strict word 00041h ; bb 41 00 ; 0xf331e floppy.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3321 + mov es, ax ; 8e c0 ; 0xf3324 + mov byte [es:bx], 009h ; 26 c6 07 09 ; 0xf3326 + mov byte [bp+016h], 000h ; c6 46 16 00 ; 0xf332a + jmp near 039d5h ; e9 a4 06 ; 0xf332e + jmp near 03481h ; e9 4d 01 ; 0xf3331 + mov AL, strict byte 006h ; b0 06 ; 0xf3334 floppy.c:594 + mov dx, strict word 0000ah ; ba 0a 00 ; 0xf3336 + out DX, AL ; ee ; 0xf3339 + xor al, al ; 30 c0 ; 0xf333a floppy.c:597 + mov dx, strict word 0000ch ; ba 0c 00 ; 0xf333c + out DX, AL ; ee ; 0xf333f + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf3340 floppy.c:598 + mov dx, strict word 00004h ; ba 04 00 ; 0xf3343 + out DX, AL ; ee ; 0xf3346 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf3347 floppy.c:599 + shr dx, 008h ; c1 ea 08 ; 0xf334a + mov al, dl ; 88 d0 ; 0xf334d + mov dx, strict word 00004h ; ba 04 00 ; 0xf334f + out DX, AL ; ee ; 0xf3352 + xor al, al ; 30 c0 ; 0xf3353 floppy.c:601 + mov dx, strict word 0000ch ; ba 0c 00 ; 0xf3355 + out DX, AL ; ee ; 0xf3358 + mov al, cl ; 88 c8 ; 0xf3359 floppy.c:602 + mov dx, strict word 00005h ; ba 05 00 ; 0xf335b + out DX, AL ; ee ; 0xf335e + shr cx, 008h ; c1 e9 08 ; 0xf335f floppy.c:603 + mov al, cl ; 88 c8 ; 0xf3362 + out DX, AL ; ee ; 0xf3364 + mov AL, strict byte 046h ; b0 46 ; 0xf3365 floppy.c:611 + mov dx, strict word 0000bh ; ba 0b 00 ; 0xf3367 + out DX, AL ; ee ; 0xf336a + mov al, ah ; 88 e0 ; 0xf336b floppy.c:615 + mov dx, 00081h ; ba 81 00 ; 0xf336d + out DX, AL ; ee ; 0xf3370 + mov AL, strict byte 002h ; b0 02 ; 0xf3371 floppy.c:618 + mov dx, strict word 0000ah ; ba 0a 00 ; 0xf3373 + out DX, AL ; ee ; 0xf3376 + mov cl, bl ; 88 d9 ; 0xf3377 floppy.c:623 + xor ch, ch ; 30 ed ; 0xf3379 + mov ax, cx ; 89 c8 ; 0xf337b + call 02ebch ; e8 3c fb ; 0xf337d + mov AL, strict byte 0e6h ; b0 e6 ; 0xf3380 floppy.c:626 + mov dx, 003f5h ; ba f5 03 ; 0xf3382 + out DX, AL ; ee ; 0xf3385 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf3386 floppy.c:627 + xor ah, ah ; 30 e4 ; 0xf3389 + mov dx, ax ; 89 c2 ; 0xf338b + sal dx, 002h ; c1 e2 02 ; 0xf338d + mov al, bl ; 88 d8 ; 0xf3390 + or ax, dx ; 09 d0 ; 0xf3392 + mov dx, 003f5h ; ba f5 03 ; 0xf3394 + out DX, AL ; ee ; 0xf3397 + mov al, byte [bp-004h] ; 8a 46 fc ; 0xf3398 floppy.c:628 + out DX, AL ; ee ; 0xf339b + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf339c floppy.c:629 + out DX, AL ; ee ; 0xf339f + mov al, byte [bp-002h] ; 8a 46 fe ; 0xf33a0 floppy.c:630 + out DX, AL ; ee ; 0xf33a3 + mov AL, strict byte 002h ; b0 02 ; 0xf33a4 floppy.c:631 + out DX, AL ; ee ; 0xf33a6 + mov al, byte [bp-002h] ; 8a 46 fe ; 0xf33a7 floppy.c:632 + xor ah, ah ; 30 e4 ; 0xf33aa + mov dl, bh ; 88 fa ; 0xf33ac + xor dh, dh ; 30 f6 ; 0xf33ae + add ax, dx ; 01 d0 ; 0xf33b0 + dec ax ; 48 ; 0xf33b2 + mov dx, 003f5h ; ba f5 03 ; 0xf33b3 + out DX, AL ; ee ; 0xf33b6 + xor al, al ; 30 c0 ; 0xf33b7 floppy.c:633 + out DX, AL ; ee ; 0xf33b9 + mov AL, strict byte 0ffh ; b0 ff ; 0xf33ba floppy.c:634 + out DX, AL ; ee ; 0xf33bc + call 02e45h ; e8 85 fa ; 0xf33bd floppy.c:666 + test al, al ; 84 c0 ; 0xf33c0 floppy.c:667 + jne short 033e3h ; 75 1f ; 0xf33c2 + mov ax, cx ; 89 c8 ; 0xf33c4 floppy.c:669 + call 02e7dh ; e8 b4 fa ; 0xf33c6 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf33c9 floppy.c:670 + xor ah, ah ; 30 e4 ; 0xf33cc + or ah, 080h ; 80 cc 80 ; 0xf33ce + mov word [bp+016h], ax ; 89 46 16 ; 0xf33d1 + mov bx, strict word 00041h ; bb 41 00 ; 0xf33d4 floppy.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf33d7 + mov es, ax ; 8e c0 ; 0xf33da + mov byte [es:bx], 080h ; 26 c6 07 80 ; 0xf33dc + jmp near 032d2h ; e9 ef fe ; 0xf33e0 + mov dx, 003f4h ; ba f4 03 ; 0xf33e3 floppy.c:679 + in AL, DX ; ec ; 0xf33e6 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf33e7 + and AL, strict byte 0c0h ; 24 c0 ; 0xf33e9 floppy.c:680 + cmp AL, strict byte 0c0h ; 3c c0 ; 0xf33eb + je short 033fdh ; 74 0e ; 0xf33ed + push 00275h ; 68 75 02 ; 0xf33ef floppy.c:681 + push 002a8h ; 68 a8 02 ; 0xf33f2 + push strict byte 00007h ; 6a 07 ; 0xf33f5 + call 018ffh ; e8 05 e5 ; 0xf33f7 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf33fa + xor cx, cx ; 31 c9 ; 0xf33fd floppy.c:684 + jmp short 03406h ; eb 05 ; 0xf33ff + cmp cx, strict byte 00007h ; 83 f9 07 ; 0xf3401 + jnl short 0341ch ; 7d 16 ; 0xf3404 + mov dx, 003f5h ; ba f5 03 ; 0xf3406 floppy.c:685 + in AL, DX ; ec ; 0xf3409 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf340a + mov si, cx ; 89 ce ; 0xf340c + add si, strict byte 00042h ; 83 c6 42 ; 0xf340e + mov dx, strict word 00040h ; ba 40 00 ; 0xf3411 floppy.c:43 + mov es, dx ; 8e c2 ; 0xf3414 + mov byte [es:si], al ; 26 88 04 ; 0xf3416 + inc cx ; 41 ; 0xf3419 floppy.c:685 + jmp short 03401h ; eb e5 ; 0xf341a + mov si, strict word 00042h ; be 42 00 ; 0xf341c floppy.c:38 + mov ax, strict word 00040h ; b8 40 00 ; 0xf341f + mov es, ax ; 8e c0 ; 0xf3422 + mov al, byte [es:si] ; 26 8a 04 ; 0xf3424 + test AL, strict byte 0c0h ; a8 c0 ; 0xf3427 floppy.c:39 + je short 0344ch ; 74 21 ; 0xf3429 + mov al, bl ; 88 d8 ; 0xf342b floppy.c:689 + xor ah, ah ; 30 e4 ; 0xf342d + call 02e7dh ; e8 4b fa ; 0xf342f + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3432 floppy.c:690 + xor ah, ah ; 30 e4 ; 0xf3435 + or ah, 020h ; 80 cc 20 ; 0xf3437 + mov word [bp+016h], ax ; 89 46 16 ; 0xf343a + mov bx, strict word 00041h ; bb 41 00 ; 0xf343d floppy.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3440 + mov es, ax ; 8e c0 ; 0xf3443 + mov byte [es:bx], 020h ; 26 c6 07 20 ; 0xf3445 + jmp near 0332ah ; e9 de fe ; 0xf3449 + mov al, bh ; 88 f8 ; 0xf344c floppy.c:698 + xor ah, ah ; 30 e4 ; 0xf344e + sal ax, 009h ; c1 e0 09 ; 0xf3450 + cwd ; 99 ; 0xf3453 + db 02bh, 0c2h + ; sub ax, dx ; 2b c2 ; 0xf3454 + sar ax, 1 ; d1 f8 ; 0xf3456 + mov si, word [bp+010h] ; 8b 76 10 ; 0xf3458 + mov dx, word [bp+006h] ; 8b 56 06 ; 0xf345b + mov di, si ; 89 f7 ; 0xf345e + mov cx, ax ; 89 c1 ; 0xf3460 + mov es, dx ; 8e c2 ; 0xf3462 + push DS ; 1e ; 0xf3464 + mov ds, dx ; 8e da ; 0xf3465 + rep movsw ; f3 a5 ; 0xf3467 + pop DS ; 1f ; 0xf3469 + mov dl, byte [bp-004h] ; 8a 56 fc ; 0xf346a floppy.c:702 + xor dh, dh ; 30 f6 ; 0xf346d + mov al, bl ; 88 d8 ; 0xf346f + xor ah, ah ; 30 e4 ; 0xf3471 + call 02df7h ; e8 81 f9 ; 0xf3473 + mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf3476 floppy.c:704 + and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf347a floppy.c:705 + jmp near 031f8h ; e9 77 fd ; 0xf347e floppy.c:706 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3481 floppy.c:707 + shr ax, 008h ; c1 e8 08 ; 0xf3484 + cmp ax, strict word 00003h ; 3d 03 00 ; 0xf3487 + je short 0348fh ; 74 03 ; 0xf348a + jmp near 035bah ; e9 2b 01 ; 0xf348c + mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf348f floppy.c:718 + shr cx, 00ch ; c1 e9 0c ; 0xf3492 + mov ah, cl ; 88 cc ; 0xf3495 + mov dx, word [bp+006h] ; 8b 56 06 ; 0xf3497 floppy.c:719 + sal dx, 004h ; c1 e2 04 ; 0xf349a + mov si, word [bp+010h] ; 8b 76 10 ; 0xf349d floppy.c:720 + add si, dx ; 01 d6 ; 0xf34a0 + mov word [bp-008h], si ; 89 76 f8 ; 0xf34a2 + cmp dx, si ; 39 f2 ; 0xf34a5 floppy.c:722 + jbe short 034abh ; 76 02 ; 0xf34a7 + db 0feh, 0c4h + ; inc ah ; fe c4 ; 0xf34a9 floppy.c:724 + mov dl, bh ; 88 fa ; 0xf34ab floppy.c:726 + xor dh, dh ; 30 f6 ; 0xf34ad + mov cx, dx ; 89 d1 ; 0xf34af + sal cx, 009h ; c1 e1 09 ; 0xf34b1 + dec cx ; 49 ; 0xf34b4 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf34b5 floppy.c:729 + add dx, cx ; 01 ca ; 0xf34b8 + cmp dx, word [bp-008h] ; 3b 56 f8 ; 0xf34ba floppy.c:730 + jnc short 034c2h ; 73 03 ; 0xf34bd + jmp near 03313h ; e9 51 fe ; 0xf34bf + mov AL, strict byte 006h ; b0 06 ; 0xf34c2 floppy.c:739 + mov dx, strict word 0000ah ; ba 0a 00 ; 0xf34c4 + out DX, AL ; ee ; 0xf34c7 + xor al, al ; 30 c0 ; 0xf34c8 floppy.c:741 + mov dx, strict word 0000ch ; ba 0c 00 ; 0xf34ca + out DX, AL ; ee ; 0xf34cd + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf34ce floppy.c:742 + mov dx, strict word 00004h ; ba 04 00 ; 0xf34d1 + out DX, AL ; ee ; 0xf34d4 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf34d5 floppy.c:743 + shr dx, 008h ; c1 ea 08 ; 0xf34d8 + mov al, dl ; 88 d0 ; 0xf34db + mov dx, strict word 00004h ; ba 04 00 ; 0xf34dd + out DX, AL ; ee ; 0xf34e0 + xor al, al ; 30 c0 ; 0xf34e1 floppy.c:744 + mov dx, strict word 0000ch ; ba 0c 00 ; 0xf34e3 + out DX, AL ; ee ; 0xf34e6 + mov al, cl ; 88 c8 ; 0xf34e7 floppy.c:745 + mov dx, strict word 00005h ; ba 05 00 ; 0xf34e9 + out DX, AL ; ee ; 0xf34ec + shr cx, 008h ; c1 e9 08 ; 0xf34ed floppy.c:746 + mov al, cl ; 88 c8 ; 0xf34f0 + out DX, AL ; ee ; 0xf34f2 + mov AL, strict byte 04ah ; b0 4a ; 0xf34f3 floppy.c:753 + mov dx, strict word 0000bh ; ba 0b 00 ; 0xf34f5 + out DX, AL ; ee ; 0xf34f8 + mov al, ah ; 88 e0 ; 0xf34f9 floppy.c:756 + mov dx, 00081h ; ba 81 00 ; 0xf34fb + out DX, AL ; ee ; 0xf34fe + mov AL, strict byte 002h ; b0 02 ; 0xf34ff floppy.c:759 + mov dx, strict word 0000ah ; ba 0a 00 ; 0xf3501 + out DX, AL ; ee ; 0xf3504 + mov cl, bl ; 88 d9 ; 0xf3505 floppy.c:764 + xor ch, ch ; 30 ed ; 0xf3507 + mov ax, cx ; 89 c8 ; 0xf3509 + call 02ebch ; e8 ae f9 ; 0xf350b + mov AL, strict byte 0c5h ; b0 c5 ; 0xf350e floppy.c:767 + mov dx, 003f5h ; ba f5 03 ; 0xf3510 + out DX, AL ; ee ; 0xf3513 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf3514 floppy.c:768 + xor ah, ah ; 30 e4 ; 0xf3517 + mov dx, ax ; 89 c2 ; 0xf3519 + sal dx, 002h ; c1 e2 02 ; 0xf351b + mov al, bl ; 88 d8 ; 0xf351e + or ax, dx ; 09 d0 ; 0xf3520 + mov dx, 003f5h ; ba f5 03 ; 0xf3522 + out DX, AL ; ee ; 0xf3525 + mov al, byte [bp-004h] ; 8a 46 fc ; 0xf3526 floppy.c:769 + out DX, AL ; ee ; 0xf3529 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf352a floppy.c:770 + out DX, AL ; ee ; 0xf352d + mov al, byte [bp-002h] ; 8a 46 fe ; 0xf352e floppy.c:771 + out DX, AL ; ee ; 0xf3531 + mov AL, strict byte 002h ; b0 02 ; 0xf3532 floppy.c:772 + out DX, AL ; ee ; 0xf3534 + mov dl, byte [bp-002h] ; 8a 56 fe ; 0xf3535 floppy.c:773 + xor dh, dh ; 30 f6 ; 0xf3538 + mov al, bh ; 88 f8 ; 0xf353a + xor ah, ah ; 30 e4 ; 0xf353c + add ax, dx ; 01 d0 ; 0xf353e + dec ax ; 48 ; 0xf3540 + mov dx, 003f5h ; ba f5 03 ; 0xf3541 + out DX, AL ; ee ; 0xf3544 + xor al, al ; 30 c0 ; 0xf3545 floppy.c:774 + out DX, AL ; ee ; 0xf3547 + mov AL, strict byte 0ffh ; b0 ff ; 0xf3548 floppy.c:775 + out DX, AL ; ee ; 0xf354a + call 02e45h ; e8 f7 f8 ; 0xf354b floppy.c:804 + test al, al ; 84 c0 ; 0xf354e floppy.c:805 + jne short 03555h ; 75 03 ; 0xf3550 + jmp near 033c4h ; e9 6f fe ; 0xf3552 + mov dx, 003f4h ; ba f4 03 ; 0xf3555 floppy.c:816 + in AL, DX ; ec ; 0xf3558 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf3559 + and AL, strict byte 0c0h ; 24 c0 ; 0xf355b floppy.c:817 + cmp AL, strict byte 0c0h ; 3c c0 ; 0xf355d + je short 0356fh ; 74 0e ; 0xf355f + push 00275h ; 68 75 02 ; 0xf3561 floppy.c:818 + push 002a8h ; 68 a8 02 ; 0xf3564 + push strict byte 00007h ; 6a 07 ; 0xf3567 + call 018ffh ; e8 93 e3 ; 0xf3569 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf356c + xor cx, cx ; 31 c9 ; 0xf356f floppy.c:821 + jmp short 03578h ; eb 05 ; 0xf3571 + cmp cx, strict byte 00007h ; 83 f9 07 ; 0xf3573 + jnl short 0358eh ; 7d 16 ; 0xf3576 + mov dx, 003f5h ; ba f5 03 ; 0xf3578 floppy.c:822 + in AL, DX ; ec ; 0xf357b + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf357c + mov si, cx ; 89 ce ; 0xf357e + add si, strict byte 00042h ; 83 c6 42 ; 0xf3580 + mov dx, strict word 00040h ; ba 40 00 ; 0xf3583 floppy.c:43 + mov es, dx ; 8e c2 ; 0xf3586 + mov byte [es:si], al ; 26 88 04 ; 0xf3588 + inc cx ; 41 ; 0xf358b floppy.c:822 + jmp short 03573h ; eb e5 ; 0xf358c + mov si, strict word 00042h ; be 42 00 ; 0xf358e floppy.c:38 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3591 + mov es, ax ; 8e c0 ; 0xf3594 + mov al, byte [es:si] ; 26 8a 04 ; 0xf3596 + test AL, strict byte 0c0h ; a8 c0 ; 0xf3599 floppy.c:39 + jne short 035a0h ; 75 03 ; 0xf359b + jmp near 0346ah ; e9 ca fe ; 0xf359d + mov bx, strict word 00043h ; bb 43 00 ; 0xf35a0 floppy.c:38 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf35a3 + test AL, strict byte 002h ; a8 02 ; 0xf35a6 floppy.c:39 + je short 035b2h ; 74 08 ; 0xf35a8 + mov word [bp+016h], 00300h ; c7 46 16 00 03 ; 0xf35aa floppy.c:829 + jmp near 039d5h ; e9 23 04 ; 0xf35af + mov word [bp+016h], 00100h ; c7 46 16 00 01 ; 0xf35b2 floppy.c:832 + jmp near 039d5h ; e9 1b 04 ; 0xf35b7 floppy.c:833 + mov dl, byte [bp-004h] ; 8a 56 fc ; 0xf35ba floppy.c:848 + xor dh, dh ; 30 f6 ; 0xf35bd + mov al, bl ; 88 d8 ; 0xf35bf + xor ah, ah ; 30 e4 ; 0xf35c1 + call 02df7h ; e8 31 f8 ; 0xf35c3 + and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf35c6 floppy.c:850 + mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf35ca floppy.c:851 + jmp near 031f8h ; e9 27 fc ; 0xf35ce floppy.c:852 + mov bh, byte [bp+016h] ; 8a 7e 16 ; 0xf35d1 floppy.c:859 + mov ax, word [bp+014h] ; 8b 46 14 ; 0xf35d4 floppy.c:860 + shr ax, 008h ; c1 e8 08 ; 0xf35d7 + mov byte [bp-004h], al ; 88 46 fc ; 0xf35da + mov dx, word [bp+012h] ; 8b 56 12 ; 0xf35dd floppy.c:861 + shr dx, 008h ; c1 ea 08 ; 0xf35e0 + mov byte [bp-006h], dl ; 88 56 fa ; 0xf35e3 + mov bl, byte [bp+00eh] ; 8a 5e 0e ; 0xf35e6 floppy.c:862 + cmp bl, 001h ; 80 fb 01 ; 0xf35e9 floppy.c:864 + jnbe short 03600h ; 77 12 ; 0xf35ec + cmp dl, 001h ; 80 fa 01 ; 0xf35ee + jnbe short 03600h ; 77 0d ; 0xf35f1 + cmp AL, strict byte 04fh ; 3c 4f ; 0xf35f3 + jnbe short 03600h ; 77 09 ; 0xf35f5 + test bh, bh ; 84 ff ; 0xf35f7 + je short 03600h ; 74 05 ; 0xf35f9 + cmp bh, 012h ; 80 ff 12 ; 0xf35fb + jbe short 0361bh ; 76 1b ; 0xf35fe + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3600 floppy.c:866 + xor ah, ah ; 30 e4 ; 0xf3603 + or ah, 001h ; 80 cc 01 ; 0xf3605 + mov word [bp+016h], ax ; 89 46 16 ; 0xf3608 + mov si, strict word 00041h ; be 41 00 ; 0xf360b floppy.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf360e + mov es, ax ; 8e c0 ; 0xf3611 + mov byte [es:si], 001h ; 26 c6 04 01 ; 0xf3613 + or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf3617 floppy.c:868 + mov al, bl ; 88 d8 ; 0xf361b floppy.c:872 + xor ah, ah ; 30 e4 ; 0xf361d + call 030f2h ; e8 d0 fa ; 0xf361f + test ax, ax ; 85 c0 ; 0xf3622 + jne short 03640h ; 75 1a ; 0xf3624 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3626 floppy.c:873 + xor ah, ah ; 30 e4 ; 0xf3629 + or ah, 080h ; 80 cc 80 ; 0xf362b + mov word [bp+016h], ax ; 89 46 16 ; 0xf362e + mov bx, strict word 00041h ; bb 41 00 ; 0xf3631 floppy.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3634 + mov es, ax ; 8e c0 ; 0xf3637 + mov byte [es:bx], 080h ; 26 c6 07 80 ; 0xf3639 + jmp near 039d5h ; e9 95 03 ; 0xf363d + mov cl, bl ; 88 d9 ; 0xf3640 floppy.c:880 + xor ch, ch ; 30 ed ; 0xf3642 + mov ax, cx ; 89 c8 ; 0xf3644 + call 02f30h ; e8 e7 f8 ; 0xf3646 + test ax, ax ; 85 c0 ; 0xf3649 + jne short 03659h ; 75 0c ; 0xf364b + mov ax, cx ; 89 c8 ; 0xf364d floppy.c:881 + call 0300ch ; e8 ba f9 ; 0xf364f + test ax, ax ; 85 c0 ; 0xf3652 + jne short 03659h ; 75 03 ; 0xf3654 + jmp near 032bbh ; e9 62 fc ; 0xf3656 + mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf3659 floppy.c:892 + shr cx, 00ch ; c1 e9 0c ; 0xf365c + mov ah, cl ; 88 cc ; 0xf365f + mov dx, word [bp+006h] ; 8b 56 06 ; 0xf3661 floppy.c:893 + sal dx, 004h ; c1 e2 04 ; 0xf3664 + mov si, word [bp+010h] ; 8b 76 10 ; 0xf3667 floppy.c:894 + add si, dx ; 01 d6 ; 0xf366a + mov word [bp-008h], si ; 89 76 f8 ; 0xf366c + cmp dx, si ; 39 f2 ; 0xf366f floppy.c:896 + jbe short 03675h ; 76 02 ; 0xf3671 + db 0feh, 0c4h + ; inc ah ; fe c4 ; 0xf3673 floppy.c:898 + mov dl, bh ; 88 fa ; 0xf3675 floppy.c:900 + xor dh, dh ; 30 f6 ; 0xf3677 + mov cx, dx ; 89 d1 ; 0xf3679 + sal cx, 002h ; c1 e1 02 ; 0xf367b + dec cx ; 49 ; 0xf367e + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf367f floppy.c:903 + add dx, cx ; 01 ca ; 0xf3682 + cmp dx, word [bp-008h] ; 3b 56 f8 ; 0xf3684 floppy.c:904 + jnc short 0368ch ; 73 03 ; 0xf3687 + jmp near 03313h ; e9 87 fc ; 0xf3689 + mov AL, strict byte 006h ; b0 06 ; 0xf368c floppy.c:912 + mov dx, strict word 0000ah ; ba 0a 00 ; 0xf368e + out DX, AL ; ee ; 0xf3691 + xor al, al ; 30 c0 ; 0xf3692 floppy.c:913 + mov dx, strict word 0000ch ; ba 0c 00 ; 0xf3694 + out DX, AL ; ee ; 0xf3697 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf3698 floppy.c:914 + mov dx, strict word 00004h ; ba 04 00 ; 0xf369b + out DX, AL ; ee ; 0xf369e + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf369f floppy.c:915 + shr dx, 008h ; c1 ea 08 ; 0xf36a2 + mov al, dl ; 88 d0 ; 0xf36a5 + mov dx, strict word 00004h ; ba 04 00 ; 0xf36a7 + out DX, AL ; ee ; 0xf36aa + xor al, al ; 30 c0 ; 0xf36ab floppy.c:916 + mov dx, strict word 0000ch ; ba 0c 00 ; 0xf36ad + out DX, AL ; ee ; 0xf36b0 + mov al, cl ; 88 c8 ; 0xf36b1 floppy.c:917 + mov dx, strict word 00005h ; ba 05 00 ; 0xf36b3 + out DX, AL ; ee ; 0xf36b6 + shr cx, 008h ; c1 e9 08 ; 0xf36b7 floppy.c:918 + mov al, cl ; 88 c8 ; 0xf36ba + out DX, AL ; ee ; 0xf36bc + mov AL, strict byte 04ah ; b0 4a ; 0xf36bd floppy.c:921 + mov dx, strict word 0000bh ; ba 0b 00 ; 0xf36bf + out DX, AL ; ee ; 0xf36c2 + mov al, ah ; 88 e0 ; 0xf36c3 floppy.c:923 + mov dx, 00081h ; ba 81 00 ; 0xf36c5 + out DX, AL ; ee ; 0xf36c8 + mov AL, strict byte 002h ; b0 02 ; 0xf36c9 floppy.c:924 + mov dx, strict word 0000ah ; ba 0a 00 ; 0xf36cb + out DX, AL ; ee ; 0xf36ce + mov cl, bl ; 88 d9 ; 0xf36cf floppy.c:927 + xor ch, ch ; 30 ed ; 0xf36d1 + mov ax, cx ; 89 c8 ; 0xf36d3 + call 02ebch ; e8 e4 f7 ; 0xf36d5 + mov AL, strict byte 00fh ; b0 0f ; 0xf36d8 floppy.c:930 + mov dx, 003f5h ; ba f5 03 ; 0xf36da + out DX, AL ; ee ; 0xf36dd + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf36de floppy.c:931 + xor ah, ah ; 30 e4 ; 0xf36e1 + mov dx, ax ; 89 c2 ; 0xf36e3 + sal dx, 002h ; c1 e2 02 ; 0xf36e5 + mov al, bl ; 88 d8 ; 0xf36e8 + or dx, ax ; 09 c2 ; 0xf36ea + mov word [bp-00ah], dx ; 89 56 f6 ; 0xf36ec + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf36ef + mov dx, 003f5h ; ba f5 03 ; 0xf36f2 + out DX, AL ; ee ; 0xf36f5 + mov al, byte [bp-004h] ; 8a 46 fc ; 0xf36f6 floppy.c:932 + out DX, AL ; ee ; 0xf36f9 + mov AL, strict byte 04dh ; b0 4d ; 0xf36fa floppy.c:935 + out DX, AL ; ee ; 0xf36fc + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf36fd floppy.c:936 + out DX, AL ; ee ; 0xf3700 + mov AL, strict byte 002h ; b0 02 ; 0xf3701 floppy.c:937 + out DX, AL ; ee ; 0xf3703 + mov al, bh ; 88 f8 ; 0xf3704 floppy.c:938 + out DX, AL ; ee ; 0xf3706 + xor al, bh ; 30 f8 ; 0xf3707 floppy.c:939 + out DX, AL ; ee ; 0xf3709 + mov AL, strict byte 0f6h ; b0 f6 ; 0xf370a floppy.c:940 + out DX, AL ; ee ; 0xf370c + call 02e45h ; e8 35 f7 ; 0xf370d floppy.c:968 + test al, al ; 84 c0 ; 0xf3710 floppy.c:969 + jne short 0371ch ; 75 08 ; 0xf3712 + mov ax, cx ; 89 c8 ; 0xf3714 floppy.c:970 + call 02e7dh ; e8 64 f7 ; 0xf3716 + jmp near 03626h ; e9 0a ff ; 0xf3719 floppy.c:68 + mov dx, 003f4h ; ba f4 03 ; 0xf371c floppy.c:979 + in AL, DX ; ec ; 0xf371f + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf3720 + and AL, strict byte 0c0h ; 24 c0 ; 0xf3722 floppy.c:980 + cmp AL, strict byte 0c0h ; 3c c0 ; 0xf3724 + je short 03736h ; 74 0e ; 0xf3726 + push 00275h ; 68 75 02 ; 0xf3728 floppy.c:981 + push 002a8h ; 68 a8 02 ; 0xf372b + push strict byte 00007h ; 6a 07 ; 0xf372e + call 018ffh ; e8 cc e1 ; 0xf3730 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf3733 + xor cx, cx ; 31 c9 ; 0xf3736 floppy.c:984 + jmp short 0373fh ; eb 05 ; 0xf3738 + cmp cx, strict byte 00007h ; 83 f9 07 ; 0xf373a + jnl short 03755h ; 7d 16 ; 0xf373d + mov dx, 003f5h ; ba f5 03 ; 0xf373f floppy.c:985 + in AL, DX ; ec ; 0xf3742 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf3743 + mov si, cx ; 89 ce ; 0xf3745 + add si, strict byte 00042h ; 83 c6 42 ; 0xf3747 + mov dx, strict word 00040h ; ba 40 00 ; 0xf374a floppy.c:43 + mov es, dx ; 8e c2 ; 0xf374d + mov byte [es:si], al ; 26 88 04 ; 0xf374f + inc cx ; 41 ; 0xf3752 floppy.c:985 + jmp short 0373ah ; eb e5 ; 0xf3753 + mov si, strict word 00042h ; be 42 00 ; 0xf3755 floppy.c:38 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3758 + mov es, ax ; 8e c0 ; 0xf375b + mov al, byte [es:si] ; 26 8a 04 ; 0xf375d + test AL, strict byte 0c0h ; a8 c0 ; 0xf3760 floppy.c:39 + je short 0377fh ; 74 1b ; 0xf3762 + mov si, strict word 00043h ; be 43 00 ; 0xf3764 floppy.c:38 + mov al, byte [es:si] ; 26 8a 04 ; 0xf3767 + test AL, strict byte 002h ; a8 02 ; 0xf376a floppy.c:39 + je short 03771h ; 74 03 ; 0xf376c + jmp near 035aah ; e9 39 fe ; 0xf376e + push 00275h ; 68 75 02 ; 0xf3771 floppy.c:996 + push 002bch ; 68 bc 02 ; 0xf3774 + push strict byte 00007h ; 6a 07 ; 0xf3777 + call 018ffh ; e8 83 e1 ; 0xf3779 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf377c + mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf377f floppy.c:1000 + mov si, strict word 00041h ; be 41 00 ; 0xf3783 floppy.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3786 + mov es, ax ; 8e c0 ; 0xf3789 + mov byte [es:si], 000h ; 26 c6 04 00 ; 0xf378b + mov al, bl ; 88 d8 ; 0xf378f floppy.c:1002 + xor ah, ah ; 30 e4 ; 0xf3791 + xor dx, dx ; 31 d2 ; 0xf3793 + call 02df7h ; e8 5f f6 ; 0xf3795 + jmp near 0347ah ; e9 df fc ; 0xf3798 + mov bl, ah ; 88 e3 ; 0xf379b floppy.c:1009 + cmp ah, 001h ; 80 fc 01 ; 0xf379d floppy.c:1011 + jbe short 037c0h ; 76 1e ; 0xf37a0 + xor ax, ax ; 31 c0 ; 0xf37a2 floppy.c:1012 + mov word [bp+016h], ax ; 89 46 16 ; 0xf37a4 + mov word [bp+010h], ax ; 89 46 10 ; 0xf37a7 floppy.c:1013 + mov word [bp+014h], ax ; 89 46 14 ; 0xf37aa floppy.c:1014 + mov word [bp+012h], ax ; 89 46 12 ; 0xf37ad floppy.c:1015 + mov word [bp+006h], ax ; 89 46 06 ; 0xf37b0 floppy.c:1016 + mov word [bp+008h], ax ; 89 46 08 ; 0xf37b3 floppy.c:1017 + mov al, bh ; 88 f8 ; 0xf37b6 floppy.c:1018 + xor ah, ah ; 30 e4 ; 0xf37b8 + mov word [bp+012h], ax ; 89 46 12 ; 0xf37ba + jmp near 038dfh ; e9 1f 01 ; 0xf37bd + mov ax, strict word 00010h ; b8 10 00 ; 0xf37c0 floppy.c:1019 + call 01650h ; e8 8a de ; 0xf37c3 + mov dl, al ; 88 c2 ; 0xf37c6 + xor bh, bh ; 30 ff ; 0xf37c8 floppy.c:1025 + test AL, strict byte 0f0h ; a8 f0 ; 0xf37ca floppy.c:1026 + je short 037d0h ; 74 02 ; 0xf37cc + mov BH, strict byte 001h ; b7 01 ; 0xf37ce floppy.c:1027 + test dl, 00fh ; f6 c2 0f ; 0xf37d0 floppy.c:1028 + je short 037d7h ; 74 02 ; 0xf37d3 + db 0feh, 0c7h + ; inc bh ; fe c7 ; 0xf37d5 floppy.c:1029 + test bl, bl ; 84 db ; 0xf37d7 floppy.c:1031 + jne short 037e0h ; 75 05 ; 0xf37d9 + shr dl, 004h ; c0 ea 04 ; 0xf37db floppy.c:1032 + jmp short 037e3h ; eb 03 ; 0xf37de floppy.c:1033 + and dl, 00fh ; 80 e2 0f ; 0xf37e0 floppy.c:1034 + mov byte [bp+011h], 000h ; c6 46 11 00 ; 0xf37e3 floppy.c:1037 + mov al, dl ; 88 d0 ; 0xf37e7 + xor ah, ah ; 30 e4 ; 0xf37e9 + mov word [bp+010h], ax ; 89 46 10 ; 0xf37eb + xor al, dl ; 30 d0 ; 0xf37ee floppy.c:1038 + mov word [bp+016h], ax ; 89 46 16 ; 0xf37f0 + mov cx, word [bp+012h] ; 8b 4e 12 ; 0xf37f3 floppy.c:1040 + mov cl, bh ; 88 f9 ; 0xf37f6 + mov word [bp+012h], cx ; 89 4e 12 ; 0xf37f8 + mov ax, cx ; 89 c8 ; 0xf37fb floppy.c:1041 + xor ah, ch ; 30 ec ; 0xf37fd + or ah, 001h ; 80 cc 01 ; 0xf37ff + mov word [bp+012h], ax ; 89 46 12 ; 0xf3802 + cmp dl, 003h ; 80 fa 03 ; 0xf3805 floppy.c:1043 + jc short 0381fh ; 72 15 ; 0xf3808 + jbe short 03846h ; 76 3a ; 0xf380a + cmp dl, 005h ; 80 fa 05 ; 0xf380c + jc short 0384dh ; 72 3c ; 0xf380f + jbe short 03854h ; 76 41 ; 0xf3811 + cmp dl, 00fh ; 80 fa 0f ; 0xf3813 + je short 03862h ; 74 4a ; 0xf3816 + cmp dl, 00eh ; 80 fa 0e ; 0xf3818 + je short 0385bh ; 74 3e ; 0xf381b + jmp short 03869h ; eb 4a ; 0xf381d + cmp dl, 002h ; 80 fa 02 ; 0xf381f + je short 0383fh ; 74 1b ; 0xf3822 + cmp dl, 001h ; 80 fa 01 ; 0xf3824 + je short 03838h ; 74 0f ; 0xf3827 + test dl, dl ; 84 d2 ; 0xf3829 + jne short 03869h ; 75 3c ; 0xf382b + mov word [bp+014h], strict word 00000h ; c7 46 14 00 00 ; 0xf382d floppy.c:1045 + mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf3832 floppy.c:1046 + jmp short 03877h ; eb 3f ; 0xf3836 floppy.c:1047 + mov word [bp+014h], 02709h ; c7 46 14 09 27 ; 0xf3838 floppy.c:1050 + jmp short 03877h ; eb 38 ; 0xf383d floppy.c:1051 + mov word [bp+014h], 04f0fh ; c7 46 14 0f 4f ; 0xf383f floppy.c:1054 + jmp short 03877h ; eb 31 ; 0xf3844 floppy.c:1055 + mov word [bp+014h], 04f09h ; c7 46 14 09 4f ; 0xf3846 floppy.c:1058 + jmp short 03877h ; eb 2a ; 0xf384b floppy.c:1059 + mov word [bp+014h], 04f12h ; c7 46 14 12 4f ; 0xf384d floppy.c:1062 + jmp short 03877h ; eb 23 ; 0xf3852 floppy.c:1063 + mov word [bp+014h], 04f24h ; c7 46 14 24 4f ; 0xf3854 floppy.c:1066 + jmp short 03877h ; eb 1c ; 0xf3859 floppy.c:1067 + mov word [bp+014h], 0fe3fh ; c7 46 14 3f fe ; 0xf385b floppy.c:1070 + jmp short 03877h ; eb 15 ; 0xf3860 floppy.c:1071 + mov word [bp+014h], 0feffh ; c7 46 14 ff fe ; 0xf3862 floppy.c:1074 + jmp short 03877h ; eb 0e ; 0xf3867 floppy.c:1075 + push 00275h ; 68 75 02 ; 0xf3869 floppy.c:1079 + push 002cdh ; 68 cd 02 ; 0xf386c + push strict byte 00007h ; 6a 07 ; 0xf386f + call 018ffh ; e8 8b e0 ; 0xf3871 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf3874 + mov word [bp+006h], 0f000h ; c7 46 06 00 f0 ; 0xf3877 floppy.c:1083 + mov al, dl ; 88 d0 ; 0xf387c floppy.c:1084 + xor ah, ah ; 30 e4 ; 0xf387e + call 03b0bh ; e8 88 02 ; 0xf3880 + mov word [bp+008h], ax ; 89 46 08 ; 0xf3883 + jmp near 0347ah ; e9 f1 fb ; 0xf3886 + mov bl, ah ; 88 e3 ; 0xf3889 floppy.c:1091 + cmp ah, 001h ; 80 fc 01 ; 0xf388b floppy.c:1092 + jbe short 03895h ; 76 05 ; 0xf388e + mov word [bp+016h], dx ; 89 56 16 ; 0xf3890 floppy.c:1093 + jmp short 038dfh ; eb 4a ; 0xf3893 + mov ax, strict word 00010h ; b8 10 00 ; 0xf3895 floppy.c:1099 + call 01650h ; e8 b5 dd ; 0xf3898 + test bl, bl ; 84 db ; 0xf389b floppy.c:1100 + jne short 038a6h ; 75 07 ; 0xf389d + mov dl, al ; 88 c2 ; 0xf389f floppy.c:1101 + shr dl, 004h ; c0 ea 04 ; 0xf38a1 + jmp short 038abh ; eb 05 ; 0xf38a4 floppy.c:1102 + mov dl, al ; 88 c2 ; 0xf38a6 floppy.c:1103 + and dl, 00fh ; 80 e2 0f ; 0xf38a8 + and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf38ab floppy.c:1104 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf38af + xor ah, ah ; 30 e4 ; 0xf38b2 + test dl, dl ; 84 d2 ; 0xf38b4 floppy.c:1105 + je short 038c5h ; 74 0d ; 0xf38b6 + cmp dl, 001h ; 80 fa 01 ; 0xf38b8 floppy.c:1106 + jbe short 038c2h ; 76 05 ; 0xf38bb + or ah, 002h ; 80 cc 02 ; 0xf38bd floppy.c:1108 + jmp short 038c5h ; eb 03 ; 0xf38c0 floppy.c:1109 + or ah, 001h ; 80 cc 01 ; 0xf38c2 floppy.c:1110 + mov word [bp+016h], ax ; 89 46 16 ; 0xf38c5 + jmp near 031f8h ; e9 2d f9 ; 0xf38c8 floppy.c:1113 + cmp ah, 001h ; 80 fc 01 ; 0xf38cb floppy.c:1118 + jbe short 038e5h ; 76 15 ; 0xf38ce + mov word [bp+016h], si ; 89 76 16 ; 0xf38d0 floppy.c:1119 + mov bx, strict word 00041h ; bb 41 00 ; 0xf38d3 floppy.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf38d6 + mov es, ax ; 8e c0 ; 0xf38d9 + mov byte [es:bx], 001h ; 26 c6 07 01 ; 0xf38db + mov word [bp+01ch], cx ; 89 4e 1c ; 0xf38df + jmp near 031f8h ; e9 13 f9 ; 0xf38e2 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf38e5 floppy.c:1125 + xor ah, ah ; 30 e4 ; 0xf38e8 + or ah, 006h ; 80 cc 06 ; 0xf38ea + mov word [bp+016h], ax ; 89 46 16 ; 0xf38ed + mov bx, strict word 00041h ; bb 41 00 ; 0xf38f0 floppy.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf38f3 + mov es, ax ; 8e c0 ; 0xf38f6 + mov byte [es:bx], 006h ; 26 c6 07 06 ; 0xf38f8 + jmp near 039d5h ; e9 d6 00 ; 0xf38fc + mov bl, ah ; 88 e3 ; 0xf38ff floppy.c:1134 + mov dl, byte [bp+016h] ; 8a 56 16 ; 0xf3901 floppy.c:1142 + cmp ah, 001h ; 80 fc 01 ; 0xf3904 floppy.c:1146 + jnbe short 038d0h ; 77 c7 ; 0xf3907 + mov al, bl ; 88 d8 ; 0xf3909 floppy.c:1154 + xor ah, ah ; 30 e4 ; 0xf390b + call 030f2h ; e8 e2 f7 ; 0xf390d + test ax, ax ; 85 c0 ; 0xf3910 + jne short 03917h ; 75 03 ; 0xf3912 + jmp near 03626h ; e9 0f fd ; 0xf3914 + test bl, bl ; 84 db ; 0xf3917 floppy.c:1162 + je short 03920h ; 74 05 ; 0xf3919 + mov bx, 00091h ; bb 91 00 ; 0xf391b + jmp short 03923h ; eb 03 ; 0xf391e + mov bx, 00090h ; bb 90 00 ; 0xf3920 + mov word [bp-008h], bx ; 89 5e f8 ; 0xf3923 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3926 floppy.c:38 + mov es, ax ; 8e c0 ; 0xf3929 + mov bl, byte [es:bx] ; 26 8a 1f ; 0xf392b + and bl, 00fh ; 80 e3 0f ; 0xf392e floppy.c:1166 + cmp dl, 002h ; 80 fa 02 ; 0xf3931 floppy.c:1168 + jc short 03945h ; 72 0f ; 0xf3934 + jbe short 03952h ; 76 1a ; 0xf3936 + cmp dl, 004h ; 80 fa 04 ; 0xf3938 + je short 0394dh ; 74 10 ; 0xf393b + cmp dl, 003h ; 80 fa 03 ; 0xf393d + je short 03957h ; 74 15 ; 0xf3940 + jmp near 03183h ; e9 3e f8 ; 0xf3942 + cmp dl, 001h ; 80 fa 01 ; 0xf3945 + je short 0394dh ; 74 03 ; 0xf3948 + jmp near 03183h ; e9 36 f8 ; 0xf394a + or bl, 090h ; 80 cb 90 ; 0xf394d floppy.c:1171 + jmp short 0395ah ; eb 08 ; 0xf3950 floppy.c:1172 + or bl, 070h ; 80 cb 70 ; 0xf3952 floppy.c:1175 + jmp short 0395ah ; eb 03 ; 0xf3955 floppy.c:1176 + or bl, 010h ; 80 cb 10 ; 0xf3957 floppy.c:1179 + mov ax, strict word 00040h ; b8 40 00 ; 0xf395a floppy.c:43 + mov es, ax ; 8e c0 ; 0xf395d + mov si, word [bp-008h] ; 8b 76 f8 ; 0xf395f + mov byte [es:si], bl ; 26 88 1c ; 0xf3962 + xor al, al ; 30 c0 ; 0xf3965 floppy.c:1198 + mov byte [bp+017h], al ; 88 46 17 ; 0xf3967 + mov bx, strict word 00041h ; bb 41 00 ; 0xf396a floppy.c:43 + mov byte [es:bx], al ; 26 88 07 ; 0xf396d + jmp near 0347ah ; e9 07 fb ; 0xf3970 + mov bl, ah ; 88 e3 ; 0xf3973 floppy.c:1208 + mov dl, byte [bp+014h] ; 8a 56 14 ; 0xf3975 floppy.c:1210 + mov bh, dl ; 88 d7 ; 0xf3978 floppy.c:1211 + and bh, 03fh ; 80 e7 3f ; 0xf397a + sar dx, 006h ; c1 fa 06 ; 0xf397d floppy.c:1212 + sal dx, 008h ; c1 e2 08 ; 0xf3980 + mov word [bp-00ch], dx ; 89 56 f4 ; 0xf3983 + mov dx, word [bp+014h] ; 8b 56 14 ; 0xf3986 + shr dx, 008h ; c1 ea 08 ; 0xf3989 + add dx, word [bp-00ch] ; 03 56 f4 ; 0xf398c + mov byte [bp-004h], dl ; 88 56 fc ; 0xf398f + cmp ah, 001h ; 80 fc 01 ; 0xf3992 floppy.c:1217 + jbe short 0399ah ; 76 03 ; 0xf3995 + jmp near 038d0h ; e9 36 ff ; 0xf3997 + mov al, bl ; 88 d8 ; 0xf399a floppy.c:1225 + xor ah, ah ; 30 e4 ; 0xf399c + call 030f2h ; e8 51 f7 ; 0xf399e + test ax, ax ; 85 c0 ; 0xf39a1 + jne short 039a8h ; 75 03 ; 0xf39a3 + jmp near 03626h ; e9 7e fc ; 0xf39a5 + mov cl, bl ; 88 d9 ; 0xf39a8 floppy.c:1233 + xor ch, ch ; 30 ed ; 0xf39aa + mov ax, cx ; 89 c8 ; 0xf39ac + call 02f30h ; e8 7f f5 ; 0xf39ae + test ax, ax ; 85 c0 ; 0xf39b1 + jne short 039dch ; 75 27 ; 0xf39b3 + mov ax, cx ; 89 c8 ; 0xf39b5 floppy.c:1234 + call 0300ch ; e8 52 f6 ; 0xf39b7 + test ax, ax ; 85 c0 ; 0xf39ba + jne short 039dch ; 75 1e ; 0xf39bc + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf39be floppy.c:1235 + xor ah, ah ; 30 e4 ; 0xf39c1 + or ah, 00ch ; 80 cc 0c ; 0xf39c3 + mov word [bp+016h], ax ; 89 46 16 ; 0xf39c6 + mov bx, strict word 00041h ; bb 41 00 ; 0xf39c9 floppy.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf39cc + mov es, ax ; 8e c0 ; 0xf39cf + mov byte [es:bx], 00ch ; 26 c6 07 0c ; 0xf39d1 + or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf39d5 + jmp near 031f8h ; e9 1c f8 ; 0xf39d9 + mov ax, strict word 00010h ; b8 10 00 ; 0xf39dc floppy.c:1243 + call 01650h ; e8 6e dc ; 0xf39df + test bl, bl ; 84 db ; 0xf39e2 floppy.c:1244 + jne short 039edh ; 75 07 ; 0xf39e4 + mov dl, al ; 88 c2 ; 0xf39e6 floppy.c:1245 + shr dl, 004h ; c0 ea 04 ; 0xf39e8 + jmp short 039f2h ; eb 05 ; 0xf39eb floppy.c:1246 + mov dl, al ; 88 c2 ; 0xf39ed floppy.c:1247 + and dl, 00fh ; 80 e2 0f ; 0xf39ef + test bl, bl ; 84 db ; 0xf39f2 floppy.c:1250 + je short 039fbh ; 74 05 ; 0xf39f4 + mov si, 00091h ; be 91 00 ; 0xf39f6 + jmp short 039feh ; eb 03 ; 0xf39f9 + mov si, 00090h ; be 90 00 ; 0xf39fb + mov word [bp-008h], si ; 89 76 f8 ; 0xf39fe + mov ax, strict word 00040h ; b8 40 00 ; 0xf3a01 floppy.c:38 + mov es, ax ; 8e c0 ; 0xf3a04 + mov bl, byte [es:si] ; 26 8a 1c ; 0xf3a06 + and bl, 00fh ; 80 e3 0f ; 0xf3a09 floppy.c:39 + cmp dl, 003h ; 80 fa 03 ; 0xf3a0c floppy.c:1256 + jc short 03a2ch ; 72 1b ; 0xf3a0f + mov al, bl ; 88 d8 ; 0xf3a11 + or AL, strict byte 090h ; 0c 90 ; 0xf3a13 + cmp dl, 003h ; 80 fa 03 ; 0xf3a15 + jbe short 03a68h ; 76 4e ; 0xf3a18 + mov ah, bl ; 88 dc ; 0xf3a1a + or ah, 010h ; 80 cc 10 ; 0xf3a1c + cmp dl, 005h ; 80 fa 05 ; 0xf3a1f + je short 03a66h ; 74 42 ; 0xf3a22 + cmp dl, 004h ; 80 fa 04 ; 0xf3a24 + je short 03a75h ; 74 4c ; 0xf3a27 + jmp near 03aadh ; e9 81 00 ; 0xf3a29 + cmp dl, 002h ; 80 fa 02 ; 0xf3a2c + je short 03a46h ; 74 15 ; 0xf3a2f + cmp dl, 001h ; 80 fa 01 ; 0xf3a31 + jne short 03a79h ; 75 43 ; 0xf3a34 + cmp byte [bp-004h], 027h ; 80 7e fc 27 ; 0xf3a36 floppy.c:1258 + jne short 03a79h ; 75 3d ; 0xf3a3a + cmp bh, 009h ; 80 ff 09 ; 0xf3a3c + jne short 03a8fh ; 75 4e ; 0xf3a3f + or bl, 090h ; 80 cb 90 ; 0xf3a41 floppy.c:1259 + jmp short 03a8fh ; eb 49 ; 0xf3a44 floppy.c:1261 + cmp byte [bp-004h], 027h ; 80 7e fc 27 ; 0xf3a46 floppy.c:1263 + jne short 03a56h ; 75 0a ; 0xf3a4a + cmp bh, 009h ; 80 ff 09 ; 0xf3a4c + jne short 03a56h ; 75 05 ; 0xf3a4f + or bl, 070h ; 80 cb 70 ; 0xf3a51 floppy.c:1264 + jmp short 03a8fh ; eb 39 ; 0xf3a54 floppy.c:1265 + cmp byte [bp-004h], 04fh ; 80 7e fc 4f ; 0xf3a56 + jne short 03aadh ; 75 51 ; 0xf3a5a + cmp bh, 00fh ; 80 ff 0f ; 0xf3a5c + jne short 03aadh ; 75 4c ; 0xf3a5f + or bl, 010h ; 80 cb 10 ; 0xf3a61 floppy.c:1266 + jmp short 03aadh ; eb 47 ; 0xf3a64 floppy.c:1268 + jmp short 03a91h ; eb 29 ; 0xf3a66 + cmp byte [bp-004h], 04fh ; 80 7e fc 4f ; 0xf3a68 floppy.c:1270 + jne short 03aadh ; 75 3f ; 0xf3a6c + cmp bh, 009h ; 80 ff 09 ; 0xf3a6e + je short 03a77h ; 74 04 ; 0xf3a71 + jmp short 03aadh ; eb 38 ; 0xf3a73 + jmp short 03a7bh ; eb 04 ; 0xf3a75 + mov bl, al ; 88 c3 ; 0xf3a77 floppy.c:1271 + jmp short 03aadh ; eb 32 ; 0xf3a79 floppy.c:1273 + cmp byte [bp-004h], 04fh ; 80 7e fc 4f ; 0xf3a7b floppy.c:1275 + jne short 03aadh ; 75 2c ; 0xf3a7f + cmp bh, 009h ; 80 ff 09 ; 0xf3a81 floppy.c:1276 + jne short 03a88h ; 75 02 ; 0xf3a84 + jmp short 03a77h ; eb ef ; 0xf3a86 + cmp bh, 012h ; 80 ff 12 ; 0xf3a88 floppy.c:1277 + jne short 03aadh ; 75 20 ; 0xf3a8b + mov bl, ah ; 88 e3 ; 0xf3a8d floppy.c:1279 + jmp short 03aadh ; eb 1c ; 0xf3a8f floppy.c:1282 + cmp byte [bp-004h], 04fh ; 80 7e fc 4f ; 0xf3a91 floppy.c:1284 + jne short 03aadh ; 75 16 ; 0xf3a95 + cmp bh, 009h ; 80 ff 09 ; 0xf3a97 floppy.c:1285 + jne short 03a9eh ; 75 02 ; 0xf3a9a + jmp short 03a77h ; eb d9 ; 0xf3a9c + cmp bh, 012h ; 80 ff 12 ; 0xf3a9e floppy.c:1286 + jne short 03aa5h ; 75 02 ; 0xf3aa1 + jmp short 03a8dh ; eb e8 ; 0xf3aa3 + cmp bh, 024h ; 80 ff 24 ; 0xf3aa5 floppy.c:1288 + jne short 03aadh ; 75 03 ; 0xf3aa8 + or bl, 0d0h ; 80 cb d0 ; 0xf3aaa floppy.c:1290 + mov al, bl ; 88 d8 ; 0xf3aad floppy.c:1299 + xor ah, ah ; 30 e4 ; 0xf3aaf + sar ax, 004h ; c1 f8 04 ; 0xf3ab1 + test AL, strict byte 001h ; a8 01 ; 0xf3ab4 + jne short 03abbh ; 75 03 ; 0xf3ab6 + jmp near 039beh ; e9 03 ff ; 0xf3ab8 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3abb floppy.c:43 + mov es, ax ; 8e c0 ; 0xf3abe + mov si, word [bp-008h] ; 8b 76 f8 ; 0xf3ac0 + mov byte [es:si], bl ; 26 88 1c ; 0xf3ac3 + mov word [bp+006h], 0f000h ; c7 46 06 00 f0 ; 0xf3ac6 floppy.c:1312 + mov al, dl ; 88 d0 ; 0xf3acb floppy.c:1313 + xor ah, ah ; 30 e4 ; 0xf3acd + call 03b0bh ; e8 39 00 ; 0xf3acf + mov word [bp+008h], ax ; 89 46 08 ; 0xf3ad2 + mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf3ad5 floppy.c:1316 + mov bx, strict word 00041h ; bb 41 00 ; 0xf3ad9 floppy.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3adc + mov es, ax ; 8e c0 ; 0xf3adf + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf3ae1 + jmp near 0347ah ; e9 92 f9 ; 0xf3ae5 + mov bx, 00da0h ; bb a0 0d ; 0xf3ae8 floppy.c:1322 + mov cx, ds ; 8c d9 ; 0xf3aeb + mov ax, strict word 00004h ; b8 04 00 ; 0xf3aed + call 018bch ; e8 c9 dd ; 0xf3af0 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3af3 + shr ax, 008h ; c1 e8 08 ; 0xf3af6 + push ax ; 50 ; 0xf3af9 + push 00275h ; 68 75 02 ; 0xf3afa + push 002e2h ; 68 e2 02 ; 0xf3afd + push strict byte 00004h ; 6a 04 ; 0xf3b00 + call 018ffh ; e8 fa dd ; 0xf3b02 + add sp, strict byte 00008h ; 83 c4 08 ; 0xf3b05 + jmp near 03183h ; e9 78 f6 ; 0xf3b08 floppy.c:68 + ; disGetNextSymbol 0xf3b0b LB 0x63bd -> off=0x0 cb=0000000000000030 uValue=00000000000f250b 'get_floppy_dpt' +get_floppy_dpt: ; 0xf3b0b LB 0x30 + push bx ; 53 ; 0xf3b0b floppyt.c:94 + push dx ; 52 ; 0xf3b0c + push bp ; 55 ; 0xf3b0d + mov bp, sp ; 89 e5 ; 0xf3b0e + mov dl, al ; 88 c2 ; 0xf3b10 + xor ax, ax ; 31 c0 ; 0xf3b12 floppyt.c:98 + jmp short 03b1ch ; eb 06 ; 0xf3b14 + inc ax ; 40 ; 0xf3b16 floppyt.c:100 + cmp ax, strict word 00007h ; 3d 07 00 ; 0xf3b17 + jnc short 03b34h ; 73 18 ; 0xf3b1a + mov bx, ax ; 89 c3 ; 0xf3b1c + add bx, ax ; 01 c3 ; 0xf3b1e + cmp dl, byte [word bx+0005bh] ; 3a 97 5b 00 ; 0xf3b20 + jne short 03b16h ; 75 f0 ; 0xf3b24 + mov al, byte [word bx+0005ch] ; 8a 87 5c 00 ; 0xf3b26 + xor ah, ah ; 30 e4 ; 0xf3b2a + imul ax, ax, strict byte 0000dh ; 6b c0 0d ; 0xf3b2c + add ax, strict word 00000h ; 05 00 00 ; 0xf3b2f + jmp short 03b37h ; eb 03 ; 0xf3b32 + mov ax, strict word 00041h ; b8 41 00 ; 0xf3b34 floppyt.c:103 + pop bp ; 5d ; 0xf3b37 floppyt.c:104 + pop dx ; 5a ; 0xf3b38 + pop bx ; 5b ; 0xf3b39 + retn ; c3 ; 0xf3b3a + ; disGetNextSymbol 0xf3b3b LB 0x638d -> off=0x0 cb=0000000000000007 uValue=00000000000f253b 'dummy_soft_reset' +dummy_soft_reset: ; 0xf3b3b LB 0x7 + push bp ; 55 ; 0xf3b3b eltorito.c:126 + mov bp, sp ; 89 e5 ; 0xf3b3c + xor ax, ax ; 31 c0 ; 0xf3b3e eltorito.c:129 + pop bp ; 5d ; 0xf3b40 + retn ; c3 ; 0xf3b41 + ; disGetNextSymbol 0xf3b42 LB 0x6386 -> off=0x0 cb=0000000000000017 uValue=00000000000f2542 'cdemu_init' +cdemu_init: ; 0xf3b42 LB 0x17 + push bp ; 55 ; 0xf3b42 eltorito.c:155 + mov bp, sp ; 89 e5 ; 0xf3b43 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3b45 eltorito.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3b48 + mov es, ax ; 8e c0 ; 0xf3b4b + mov es, [es:bx] ; 26 8e 07 ; 0xf3b4d + mov bx, 00366h ; bb 66 03 ; 0xf3b50 eltorito.c:43 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf3b53 + pop bp ; 5d ; 0xf3b57 eltorito.c:162 + retn ; c3 ; 0xf3b58 + ; disGetNextSymbol 0xf3b59 LB 0x636f -> off=0x0 cb=0000000000000016 uValue=00000000000f2559 'cdemu_isactive' +cdemu_isactive: ; 0xf3b59 LB 0x16 + push bp ; 55 ; 0xf3b59 eltorito.c:164 + mov bp, sp ; 89 e5 ; 0xf3b5a + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3b5c eltorito.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3b5f + mov es, ax ; 8e c0 ; 0xf3b62 + mov es, [es:bx] ; 26 8e 07 ; 0xf3b64 + mov bx, 00366h ; bb 66 03 ; 0xf3b67 eltorito.c:38 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf3b6a + pop bp ; 5d ; 0xf3b6d eltorito.c:170 + retn ; c3 ; 0xf3b6e + ; disGetNextSymbol 0xf3b6f LB 0x6359 -> off=0x0 cb=0000000000000016 uValue=00000000000f256f 'cdemu_emulated_drive' +cdemu_emulated_drive: ; 0xf3b6f LB 0x16 + push bp ; 55 ; 0xf3b6f eltorito.c:172 + mov bp, sp ; 89 e5 ; 0xf3b70 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3b72 eltorito.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3b75 + mov es, ax ; 8e c0 ; 0xf3b78 + mov es, [es:bx] ; 26 8e 07 ; 0xf3b7a + mov bx, 00368h ; bb 68 03 ; 0xf3b7d eltorito.c:38 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf3b80 + pop bp ; 5d ; 0xf3b83 eltorito.c:178 + retn ; c3 ; 0xf3b84 + ; disGetNextSymbol 0xf3b85 LB 0x6343 -> off=0x0 cb=000000000000017b uValue=00000000000f2585 'int13_eltorito' +int13_eltorito: ; 0xf3b85 LB 0x17b + push bp ; 55 ; 0xf3b85 eltorito.c:184 + mov bp, sp ; 89 e5 ; 0xf3b86 + push si ; 56 ; 0xf3b88 + push di ; 57 ; 0xf3b89 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3b8a eltorito.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3b8d + mov es, ax ; 8e c0 ; 0xf3b90 + mov di, word [es:bx] ; 26 8b 3f ; 0xf3b92 + mov bx, 00366h ; bb 66 03 ; 0xf3b95 eltorito.c:190 + mov si, word [bp+016h] ; 8b 76 16 ; 0xf3b98 eltorito.c:196 + shr si, 008h ; c1 ee 08 ; 0xf3b9b + cmp si, strict byte 0004bh ; 83 fe 4b ; 0xf3b9e + jc short 03badh ; 72 0a ; 0xf3ba1 + jbe short 03bd4h ; 76 2f ; 0xf3ba3 + cmp si, strict byte 0004dh ; 83 fe 4d ; 0xf3ba5 + jbe short 03bb2h ; 76 08 ; 0xf3ba8 + jmp near 03cc6h ; e9 19 01 ; 0xf3baa + cmp si, strict byte 0004ah ; 83 fe 4a ; 0xf3bad + jne short 03bd1h ; 75 1f ; 0xf3bb0 + mov bx, 00da0h ; bb a0 0d ; 0xf3bb2 eltorito.c:202 + mov cx, ds ; 8c d9 ; 0xf3bb5 + mov ax, strict word 00004h ; b8 04 00 ; 0xf3bb7 + call 018bch ; e8 ff dc ; 0xf3bba + push word [bp+016h] ; ff 76 16 ; 0xf3bbd + push 002fch ; 68 fc 02 ; 0xf3bc0 + push 0030bh ; 68 0b 03 ; 0xf3bc3 + push strict byte 00004h ; 6a 04 ; 0xf3bc6 + call 018ffh ; e8 34 dd ; 0xf3bc8 + add sp, strict byte 00008h ; 83 c4 08 ; 0xf3bcb + jmp near 03ce1h ; e9 10 01 ; 0xf3bce eltorito.c:203 + jmp near 03cc6h ; e9 f2 00 ; 0xf3bd1 + mov es, [bp+004h] ; 8e 46 04 ; 0xf3bd4 eltorito.c:41 + mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3bd7 + mov byte [es:si], 013h ; 26 c6 04 13 ; 0xf3bda + inc si ; 46 ; 0xf3bde eltorito.c:210 + mov ax, es ; 8c c0 ; 0xf3bdf eltorito.c:41 + mov es, di ; 8e c7 ; 0xf3be1 + mov dl, byte [es:bx+001h] ; 26 8a 57 01 ; 0xf3be3 + mov es, ax ; 8e c0 ; 0xf3be7 eltorito.c:43 + mov byte [es:si], dl ; 26 88 14 ; 0xf3be9 + mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3bec eltorito.c:211 + inc si ; 46 ; 0xf3bef + inc si ; 46 ; 0xf3bf0 + mov es, di ; 8e c7 ; 0xf3bf1 eltorito.c:41 + mov dl, byte [es:bx+002h] ; 26 8a 57 02 ; 0xf3bf3 + mov es, ax ; 8e c0 ; 0xf3bf7 eltorito.c:43 + mov byte [es:si], dl ; 26 88 14 ; 0xf3bf9 + mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3bfc eltorito.c:212 + add si, strict byte 00003h ; 83 c6 03 ; 0xf3bff + mov es, di ; 8e c7 ; 0xf3c02 eltorito.c:41 + mov dl, byte [es:bx+003h] ; 26 8a 57 03 ; 0xf3c04 + mov es, ax ; 8e c0 ; 0xf3c08 eltorito.c:43 + mov byte [es:si], dl ; 26 88 14 ; 0xf3c0a + mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3c0d eltorito.c:213 + add si, strict byte 00004h ; 83 c6 04 ; 0xf3c10 + mov es, di ; 8e c7 ; 0xf3c13 eltorito.c:61 + mov dx, word [es:bx+008h] ; 26 8b 57 08 ; 0xf3c15 + mov cx, word [es:bx+00ah] ; 26 8b 4f 0a ; 0xf3c19 + mov es, ax ; 8e c0 ; 0xf3c1d eltorito.c:63 + mov word [es:si], dx ; 26 89 14 ; 0xf3c1f + mov word [es:si+002h], cx ; 26 89 4c 02 ; 0xf3c22 + mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3c26 eltorito.c:214 + add si, strict byte 00008h ; 83 c6 08 ; 0xf3c29 + mov es, di ; 8e c7 ; 0xf3c2c eltorito.c:51 + mov dx, word [es:bx+004h] ; 26 8b 57 04 ; 0xf3c2e + mov es, ax ; 8e c0 ; 0xf3c32 eltorito.c:53 + mov word [es:si], dx ; 26 89 14 ; 0xf3c34 + mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3c37 eltorito.c:215 + add si, strict byte 0000ah ; 83 c6 0a ; 0xf3c3a + mov es, di ; 8e c7 ; 0xf3c3d eltorito.c:51 + mov dx, word [es:bx+006h] ; 26 8b 57 06 ; 0xf3c3f + mov es, ax ; 8e c0 ; 0xf3c43 eltorito.c:53 + mov word [es:si], dx ; 26 89 14 ; 0xf3c45 + mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3c48 eltorito.c:216 + add si, strict byte 0000ch ; 83 c6 0c ; 0xf3c4b + mov es, di ; 8e c7 ; 0xf3c4e eltorito.c:51 + mov dx, word [es:bx+00ch] ; 26 8b 57 0c ; 0xf3c50 + mov es, ax ; 8e c0 ; 0xf3c54 eltorito.c:53 + mov word [es:si], dx ; 26 89 14 ; 0xf3c56 + mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3c59 eltorito.c:217 + add si, strict byte 0000eh ; 83 c6 0e ; 0xf3c5c + mov es, di ; 8e c7 ; 0xf3c5f eltorito.c:51 + mov dx, word [es:bx+00eh] ; 26 8b 57 0e ; 0xf3c61 + mov es, ax ; 8e c0 ; 0xf3c65 eltorito.c:53 + mov word [es:si], dx ; 26 89 14 ; 0xf3c67 + mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3c6a eltorito.c:218 + add si, strict byte 00010h ; 83 c6 10 ; 0xf3c6d + mov es, di ; 8e c7 ; 0xf3c70 eltorito.c:41 + mov dl, byte [es:bx+012h] ; 26 8a 57 12 ; 0xf3c72 + mov es, ax ; 8e c0 ; 0xf3c76 eltorito.c:43 + mov byte [es:si], dl ; 26 88 14 ; 0xf3c78 + mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3c7b eltorito.c:219 + add si, strict byte 00011h ; 83 c6 11 ; 0xf3c7e + mov es, di ; 8e c7 ; 0xf3c81 eltorito.c:41 + mov dl, byte [es:bx+014h] ; 26 8a 57 14 ; 0xf3c83 + mov es, ax ; 8e c0 ; 0xf3c87 eltorito.c:43 + mov byte [es:si], dl ; 26 88 14 ; 0xf3c89 + mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3c8c eltorito.c:220 + add si, strict byte 00012h ; 83 c6 12 ; 0xf3c8f + mov dx, ax ; 89 c2 ; 0xf3c92 eltorito.c:41 + mov es, di ; 8e c7 ; 0xf3c94 + mov al, byte [es:bx+010h] ; 26 8a 47 10 ; 0xf3c96 + mov es, dx ; 8e c2 ; 0xf3c9a eltorito.c:43 + mov byte [es:si], al ; 26 88 04 ; 0xf3c9c + test byte [bp+016h], 0ffh ; f6 46 16 ff ; 0xf3c9f eltorito.c:223 + jne short 03cabh ; 75 06 ; 0xf3ca3 + mov es, di ; 8e c7 ; 0xf3ca5 eltorito.c:225 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf3ca7 + mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf3cab eltorito.c:228 + mov bx, strict word 00074h ; bb 74 00 ; 0xf3caf + mov ax, strict word 00040h ; b8 40 00 ; 0xf3cb2 + mov es, ax ; 8e c0 ; 0xf3cb5 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf3cb7 + and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf3cbb + lea sp, [bp-004h] ; 8d 66 fc ; 0xf3cbf + pop di ; 5f ; 0xf3cc2 + pop si ; 5e ; 0xf3cc3 + pop bp ; 5d ; 0xf3cc4 + retn ; c3 ; 0xf3cc5 + mov bx, 00da0h ; bb a0 0d ; 0xf3cc6 eltorito.c:232 + mov cx, ds ; 8c d9 ; 0xf3cc9 + mov ax, strict word 00004h ; b8 04 00 ; 0xf3ccb + call 018bch ; e8 eb db ; 0xf3cce + mov bx, word [bp+016h] ; 8b 5e 16 ; 0xf3cd1 + shr bx, 008h ; c1 eb 08 ; 0xf3cd4 + push bx ; 53 ; 0xf3cd7 + push 002fch ; 68 fc 02 ; 0xf3cd8 + push 00333h ; 68 33 03 ; 0xf3cdb + jmp near 03bc6h ; e9 e5 fe ; 0xf3cde + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3ce1 eltorito.c:238 + xor ah, ah ; 30 e4 ; 0xf3ce4 + or ah, 001h ; 80 cc 01 ; 0xf3ce6 + mov word [bp+016h], ax ; 89 46 16 ; 0xf3ce9 + shr ax, 008h ; c1 e8 08 ; 0xf3cec eltorito.c:239 + mov bx, strict word 00074h ; bb 74 00 ; 0xf3cef eltorito.c:43 + mov dx, strict word 00040h ; ba 40 00 ; 0xf3cf2 + mov es, dx ; 8e c2 ; 0xf3cf5 + mov byte [es:bx], al ; 26 88 07 ; 0xf3cf7 + or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf3cfa eltorito.c:240 + jmp short 03cbfh ; eb bf ; 0xf3cfe eltorito.c:241 + ; disGetNextSymbol 0xf3d00 LB 0x61c8 -> off=0x0 cb=0000000000000033 uValue=00000000000f2700 'device_is_cdrom' +device_is_cdrom: ; 0xf3d00 LB 0x33 + push bx ; 53 ; 0xf3d00 eltorito.c:256 + push dx ; 52 ; 0xf3d01 + push bp ; 55 ; 0xf3d02 + mov bp, sp ; 89 e5 ; 0xf3d03 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3d05 eltorito.c:48 + mov dx, strict word 00040h ; ba 40 00 ; 0xf3d08 + mov es, dx ; 8e c2 ; 0xf3d0b + mov bx, word [es:bx] ; 26 8b 1f ; 0xf3d0d + cmp AL, strict byte 010h ; 3c 10 ; 0xf3d10 eltorito.c:262 + jc short 03d18h ; 72 04 ; 0xf3d12 + xor ax, ax ; 31 c0 ; 0xf3d14 eltorito.c:263 + jmp short 03d2fh ; eb 17 ; 0xf3d16 + xor ah, ah ; 30 e4 ; 0xf3d18 eltorito.c:268 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf3d1a + mov es, bx ; 8e c3 ; 0xf3d1d + mov bx, ax ; 89 c3 ; 0xf3d1f + add bx, 00122h ; 81 c3 22 01 ; 0xf3d21 + cmp byte [es:bx+023h], 005h ; 26 80 7f 23 05 ; 0xf3d25 + jne short 03d14h ; 75 e8 ; 0xf3d2a + mov ax, strict word 00001h ; b8 01 00 ; 0xf3d2c eltorito.c:269 + pop bp ; 5d ; 0xf3d2f eltorito.c:272 + pop dx ; 5a ; 0xf3d30 + pop bx ; 5b ; 0xf3d31 + retn ; c3 ; 0xf3d32 + ; disGetNextSymbol 0xf3d33 LB 0x6195 -> off=0x0 cb=00000000000003c1 uValue=00000000000f2733 'cdrom_boot' +cdrom_boot: ; 0xf3d33 LB 0x3c1 + push bp ; 55 ; 0xf3d33 eltorito.c:282 + mov bp, sp ; 89 e5 ; 0xf3d34 + push bx ; 53 ; 0xf3d36 + push cx ; 51 ; 0xf3d37 + push dx ; 52 ; 0xf3d38 + push si ; 56 ; 0xf3d39 + push di ; 57 ; 0xf3d3a + sub sp, 0081ch ; 81 ec 1c 08 ; 0xf3d3b + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3d3f eltorito.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3d42 + mov es, ax ; 8e c0 ; 0xf3d45 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf3d47 + mov word [bp-018h], ax ; 89 46 e8 ; 0xf3d4a eltorito.c:49 + mov si, 00366h ; be 66 03 ; 0xf3d4d eltorito.c:295 + mov word [bp-012h], ax ; 89 46 ee ; 0xf3d50 + mov word [bp-014h], 00122h ; c7 46 ec 22 01 ; 0xf3d53 eltorito.c:296 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf3d58 + mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf3d5b eltorito.c:299 + jmp short 03d6ah ; eb 09 ; 0xf3d5f + inc byte [bp-00ch] ; fe 46 f4 ; 0xf3d61 eltorito.c:302 + cmp byte [bp-00ch], 010h ; 80 7e f4 10 ; 0xf3d64 + jnc short 03d76h ; 73 0c ; 0xf3d68 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf3d6a + xor ah, ah ; 30 e4 ; 0xf3d6d + call 03d00h ; e8 8e ff ; 0xf3d6f + test ax, ax ; 85 c0 ; 0xf3d72 + je short 03d61h ; 74 eb ; 0xf3d74 + cmp byte [bp-00ch], 010h ; 80 7e f4 10 ; 0xf3d76 eltorito.c:305 + jc short 03d82h ; 72 06 ; 0xf3d7a + mov ax, strict word 00002h ; b8 02 00 ; 0xf3d7c eltorito.c:306 + jmp near 040eah ; e9 68 03 ; 0xf3d7f + mov cx, strict word 0000ch ; b9 0c 00 ; 0xf3d82 eltorito.c:309 + xor bx, bx ; 31 db ; 0xf3d85 + mov dx, ss ; 8c d2 ; 0xf3d87 + lea ax, [bp-026h] ; 8d 46 da ; 0xf3d89 + call 09bb0h ; e8 21 5e ; 0xf3d8c + mov word [bp-026h], strict word 00028h ; c7 46 da 28 00 ; 0xf3d8f eltorito.c:310 + mov ax, strict word 00011h ; b8 11 00 ; 0xf3d94 eltorito.c:311 + xor dx, dx ; 31 d2 ; 0xf3d97 + xchg ah, al ; 86 c4 ; 0xf3d99 + xchg dh, dl ; 86 d6 ; 0xf3d9b + xchg dx, ax ; 92 ; 0xf3d9d + mov word [bp-024h], ax ; 89 46 dc ; 0xf3d9e + mov word [bp-022h], dx ; 89 56 de ; 0xf3da1 + mov ax, strict word 00001h ; b8 01 00 ; 0xf3da4 eltorito.c:312 + xchg ah, al ; 86 c4 ; 0xf3da7 + mov word [bp-01fh], ax ; 89 46 e1 ; 0xf3da9 + mov es, [bp-010h] ; 8e 46 f0 ; 0xf3dac eltorito.c:314 + mov bx, word [bp-014h] ; 8b 5e ec ; 0xf3daf + mov word [es:bx+00eh], strict word 00001h ; 26 c7 47 0e 01 00 ; 0xf3db2 + mov word [es:bx+010h], 00800h ; 26 c7 47 10 00 08 ; 0xf3db8 eltorito.c:315 + mov byte [bp-00eh], 000h ; c6 46 f2 00 ; 0xf3dbe eltorito.c:317 + jmp short 03dcdh ; eb 09 ; 0xf3dc2 + inc byte [bp-00eh] ; fe 46 f2 ; 0xf3dc4 eltorito.c:322 + cmp byte [bp-00eh], 004h ; 80 7e f2 04 ; 0xf3dc7 + jnbe short 03e09h ; 77 3c ; 0xf3dcb + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf3dcd + xor ah, ah ; 30 e4 ; 0xf3dd0 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf3dd2 + mov es, [bp-010h] ; 8e 46 f0 ; 0xf3dd5 + mov bx, word [bp-014h] ; 8b 5e ec ; 0xf3dd8 + add bx, ax ; 01 c3 ; 0xf3ddb + mov al, byte [es:bx+022h] ; 26 8a 47 22 ; 0xf3ddd + xor ah, ah ; 30 e4 ; 0xf3de1 + mov di, ax ; 89 c7 ; 0xf3de3 + add di, ax ; 01 c7 ; 0xf3de5 + lea dx, [bp-00826h] ; 8d 96 da f7 ; 0xf3de7 + push SS ; 16 ; 0xf3deb + push dx ; 52 ; 0xf3dec + push strict byte 00001h ; 6a 01 ; 0xf3ded + push strict byte 00000h ; 6a 00 ; 0xf3def + push 00800h ; 68 00 08 ; 0xf3df1 + push strict byte 00000h ; 6a 00 ; 0xf3df4 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf3df6 + mov cx, ss ; 8c d1 ; 0xf3df9 + lea bx, [bp-026h] ; 8d 5e da ; 0xf3dfb + mov dx, strict word 0000ch ; ba 0c 00 ; 0xf3dfe + call word [word di+0006ah] ; ff 95 6a 00 ; 0xf3e01 + test ax, ax ; 85 c0 ; 0xf3e05 + jne short 03dc4h ; 75 bb ; 0xf3e07 + test ax, ax ; 85 c0 ; 0xf3e09 eltorito.c:323 + je short 03e13h ; 74 06 ; 0xf3e0b + mov ax, strict word 00003h ; b8 03 00 ; 0xf3e0d eltorito.c:324 + jmp near 040eah ; e9 d7 02 ; 0xf3e10 + cmp byte [bp-00826h], 000h ; 80 be da f7 00 ; 0xf3e13 eltorito.c:327 + je short 03e20h ; 74 06 ; 0xf3e18 + mov ax, strict word 00004h ; b8 04 00 ; 0xf3e1a eltorito.c:328 + jmp near 040eah ; e9 ca 02 ; 0xf3e1d + xor di, di ; 31 ff ; 0xf3e20 eltorito.c:330 + jmp short 03e2ah ; eb 06 ; 0xf3e22 + inc di ; 47 ; 0xf3e24 eltorito.c:332 + cmp di, strict byte 00005h ; 83 ff 05 ; 0xf3e25 + jnc short 03e3ah ; 73 10 ; 0xf3e28 + mov al, byte [bp+di-00825h] ; 8a 83 db f7 ; 0xf3e2a + cmp al, byte [di+00da8h] ; 3a 85 a8 0d ; 0xf3e2e + je short 03e24h ; 74 f0 ; 0xf3e32 + mov ax, strict word 00005h ; b8 05 00 ; 0xf3e34 + jmp near 040eah ; e9 b0 02 ; 0xf3e37 + xor di, di ; 31 ff ; 0xf3e3a eltorito.c:334 + jmp short 03e44h ; eb 06 ; 0xf3e3c + inc di ; 47 ; 0xf3e3e eltorito.c:336 + cmp di, strict byte 00017h ; 83 ff 17 ; 0xf3e3f + jnc short 03e54h ; 73 10 ; 0xf3e42 + mov al, byte [bp+di-0081fh] ; 8a 83 e1 f7 ; 0xf3e44 + cmp al, byte [di+00daeh] ; 3a 85 ae 0d ; 0xf3e48 + je short 03e3eh ; 74 f0 ; 0xf3e4c + mov ax, strict word 00006h ; b8 06 00 ; 0xf3e4e + jmp near 040eah ; e9 96 02 ; 0xf3e51 + mov ax, word [bp-007dfh] ; 8b 86 21 f8 ; 0xf3e54 eltorito.c:339 + mov dx, word [bp-007ddh] ; 8b 96 23 f8 ; 0xf3e58 + mov word [bp-026h], strict word 00028h ; c7 46 da 28 00 ; 0xf3e5c eltorito.c:343 + xchg ah, al ; 86 c4 ; 0xf3e61 eltorito.c:344 + xchg dh, dl ; 86 d6 ; 0xf3e63 + xchg dx, ax ; 92 ; 0xf3e65 + mov word [bp-024h], ax ; 89 46 dc ; 0xf3e66 + mov word [bp-022h], dx ; 89 56 de ; 0xf3e69 + mov ax, strict word 00001h ; b8 01 00 ; 0xf3e6c eltorito.c:345 + xchg ah, al ; 86 c4 ; 0xf3e6f + mov word [bp-01fh], ax ; 89 46 e1 ; 0xf3e71 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf3e74 eltorito.c:352 + xor ah, ah ; 30 e4 ; 0xf3e77 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf3e79 + mov es, [bp-010h] ; 8e 46 f0 ; 0xf3e7c + mov bx, word [bp-014h] ; 8b 5e ec ; 0xf3e7f + add bx, ax ; 01 c3 ; 0xf3e82 + mov al, byte [es:bx+022h] ; 26 8a 47 22 ; 0xf3e84 + xor ah, ah ; 30 e4 ; 0xf3e88 + mov di, ax ; 89 c7 ; 0xf3e8a + add di, ax ; 01 c7 ; 0xf3e8c + lea dx, [bp-00826h] ; 8d 96 da f7 ; 0xf3e8e + push SS ; 16 ; 0xf3e92 + push dx ; 52 ; 0xf3e93 + push strict byte 00001h ; 6a 01 ; 0xf3e94 + push strict byte 00000h ; 6a 00 ; 0xf3e96 + push 00800h ; 68 00 08 ; 0xf3e98 + push strict byte 00000h ; 6a 00 ; 0xf3e9b + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf3e9d + mov cx, ss ; 8c d1 ; 0xf3ea0 + lea bx, [bp-026h] ; 8d 5e da ; 0xf3ea2 + mov dx, strict word 0000ch ; ba 0c 00 ; 0xf3ea5 + call word [word di+0006ah] ; ff 95 6a 00 ; 0xf3ea8 + test ax, ax ; 85 c0 ; 0xf3eac eltorito.c:353 + je short 03eb6h ; 74 06 ; 0xf3eae + mov ax, strict word 00007h ; b8 07 00 ; 0xf3eb0 eltorito.c:354 + jmp near 040eah ; e9 34 02 ; 0xf3eb3 + cmp byte [bp-00826h], 001h ; 80 be da f7 01 ; 0xf3eb6 eltorito.c:359 + je short 03ec3h ; 74 06 ; 0xf3ebb + mov ax, strict word 00008h ; b8 08 00 ; 0xf3ebd eltorito.c:360 + jmp near 040eah ; e9 27 02 ; 0xf3ec0 + cmp byte [bp-00825h], 000h ; 80 be db f7 00 ; 0xf3ec3 eltorito.c:361 + je short 03ed0h ; 74 06 ; 0xf3ec8 + mov ax, strict word 00009h ; b8 09 00 ; 0xf3eca eltorito.c:362 + jmp near 040eah ; e9 1a 02 ; 0xf3ecd + cmp byte [bp-00808h], 055h ; 80 be f8 f7 55 ; 0xf3ed0 eltorito.c:363 + je short 03eddh ; 74 06 ; 0xf3ed5 + mov ax, strict word 0000ah ; b8 0a 00 ; 0xf3ed7 eltorito.c:364 + jmp near 040eah ; e9 0d 02 ; 0xf3eda + cmp byte [bp-00807h], 0aah ; 80 be f9 f7 aa ; 0xf3edd eltorito.c:365 + jne short 03ed7h ; 75 f3 ; 0xf3ee2 + cmp byte [bp-00806h], 088h ; 80 be fa f7 88 ; 0xf3ee4 eltorito.c:366 + je short 03ef1h ; 74 06 ; 0xf3ee9 + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf3eeb eltorito.c:370 + jmp near 040eah ; e9 f9 01 ; 0xf3eee + mov al, byte [bp-00805h] ; 8a 86 fb f7 ; 0xf3ef1 eltorito.c:372 + mov es, [bp-012h] ; 8e 46 ee ; 0xf3ef5 + mov byte [es:si+001h], al ; 26 88 44 01 ; 0xf3ef8 + cmp byte [bp-00805h], 000h ; 80 be fb f7 00 ; 0xf3efc eltorito.c:373 + jne short 03f0ah ; 75 07 ; 0xf3f01 + mov byte [es:si+002h], 0e0h ; 26 c6 44 02 e0 ; 0xf3f03 eltorito.c:376 + jmp short 03f1dh ; eb 13 ; 0xf3f08 eltorito.c:378 + cmp byte [bp-00805h], 004h ; 80 be fb f7 04 ; 0xf3f0a + jnc short 03f18h ; 73 07 ; 0xf3f0f + mov byte [es:si+002h], 000h ; 26 c6 44 02 00 ; 0xf3f11 eltorito.c:379 + jmp short 03f1dh ; eb 05 ; 0xf3f16 eltorito.c:380 + mov byte [es:si+002h], 080h ; 26 c6 44 02 80 ; 0xf3f18 eltorito.c:381 + mov bl, byte [bp-00ch] ; 8a 5e f4 ; 0xf3f1d eltorito.c:383 + xor bh, bh ; 30 ff ; 0xf3f20 + mov ax, bx ; 89 d8 ; 0xf3f22 + cwd ; 99 ; 0xf3f24 + db 02bh, 0c2h + ; sub ax, dx ; 2b c2 ; 0xf3f25 + sar ax, 1 ; d1 f8 ; 0xf3f27 + mov es, [bp-012h] ; 8e 46 ee ; 0xf3f29 + mov byte [es:si+003h], al ; 26 88 44 03 ; 0xf3f2c + mov ax, bx ; 89 d8 ; 0xf3f30 eltorito.c:384 + cwd ; 99 ; 0xf3f32 + mov bx, strict word 00002h ; bb 02 00 ; 0xf3f33 + idiv bx ; f7 fb ; 0xf3f36 + mov word [es:si+004h], dx ; 26 89 54 04 ; 0xf3f38 + mov ax, word [bp-00804h] ; 8b 86 fc f7 ; 0xf3f3c eltorito.c:386 + mov word [bp-016h], ax ; 89 46 ea ; 0xf3f40 + test ax, ax ; 85 c0 ; 0xf3f43 eltorito.c:387 + jne short 03f4ch ; 75 05 ; 0xf3f45 + mov word [bp-016h], 007c0h ; c7 46 ea c0 07 ; 0xf3f47 eltorito.c:388 + mov ax, word [bp-016h] ; 8b 46 ea ; 0xf3f4c eltorito.c:390 + mov es, [bp-012h] ; 8e 46 ee ; 0xf3f4f + mov word [es:si+00ch], ax ; 26 89 44 0c ; 0xf3f52 + mov word [es:si+006h], strict word 00000h ; 26 c7 44 06 00 00 ; 0xf3f56 eltorito.c:391 + mov di, word [bp-00800h] ; 8b be 00 f8 ; 0xf3f5c eltorito.c:393 + mov word [es:si+00eh], di ; 26 89 7c 0e ; 0xf3f60 eltorito.c:394 + test di, di ; 85 ff ; 0xf3f64 eltorito.c:399 + je short 03f6eh ; 74 06 ; 0xf3f66 + cmp di, 00400h ; 81 ff 00 04 ; 0xf3f68 + jbe short 03f74h ; 76 06 ; 0xf3f6c + mov ax, strict word 0000ch ; b8 0c 00 ; 0xf3f6e eltorito.c:400 + jmp near 040eah ; e9 76 01 ; 0xf3f71 + mov ax, word [bp-007feh] ; 8b 86 02 f8 ; 0xf3f74 eltorito.c:402 + mov dx, word [bp-007fch] ; 8b 96 04 f8 ; 0xf3f78 + mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf3f7c eltorito.c:403 + mov word [es:si+00ah], dx ; 26 89 54 0a ; 0xf3f80 + mov word [bp-026h], strict word 00028h ; c7 46 da 28 00 ; 0xf3f84 eltorito.c:409 + xchg ah, al ; 86 c4 ; 0xf3f89 eltorito.c:410 + xchg dh, dl ; 86 d6 ; 0xf3f8b + xchg dx, ax ; 92 ; 0xf3f8d + mov word [bp-024h], ax ; 89 46 dc ; 0xf3f8e + mov word [bp-022h], dx ; 89 56 de ; 0xf3f91 + lea dx, [di-001h] ; 8d 55 ff ; 0xf3f94 eltorito.c:411 + shr dx, 002h ; c1 ea 02 ; 0xf3f97 + inc dx ; 42 ; 0xf3f9a + mov ax, dx ; 89 d0 ; 0xf3f9b + xchg ah, al ; 86 c4 ; 0xf3f9d + mov word [bp-01fh], ax ; 89 46 e1 ; 0xf3f9f + mov es, [bp-010h] ; 8e 46 f0 ; 0xf3fa2 eltorito.c:413 + mov bx, word [bp-014h] ; 8b 5e ec ; 0xf3fa5 + mov word [es:bx+00eh], dx ; 26 89 57 0e ; 0xf3fa8 + mov word [es:bx+010h], 00200h ; 26 c7 47 10 00 02 ; 0xf3fac eltorito.c:414 + mov ax, di ; 89 f8 ; 0xf3fb2 eltorito.c:416 + sal ax, 009h ; c1 e0 09 ; 0xf3fb4 + mov dx, 00800h ; ba 00 08 ; 0xf3fb7 + sub dx, ax ; 29 c2 ; 0xf3fba + mov ax, dx ; 89 d0 ; 0xf3fbc + and ah, 007h ; 80 e4 07 ; 0xf3fbe + mov word [es:bx+020h], ax ; 26 89 47 20 ; 0xf3fc1 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf3fc5 eltorito.c:418 + xor ah, ah ; 30 e4 ; 0xf3fc8 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf3fca + add bx, ax ; 01 c3 ; 0xf3fcd + mov al, byte [es:bx+022h] ; 26 8a 47 22 ; 0xf3fcf + xor ah, ah ; 30 e4 ; 0xf3fd3 + add ax, ax ; 01 c0 ; 0xf3fd5 + mov word [bp-01ah], ax ; 89 46 e6 ; 0xf3fd7 + push word [bp-016h] ; ff 76 ea ; 0xf3fda + push strict byte 00000h ; 6a 00 ; 0xf3fdd + push strict byte 00001h ; 6a 01 ; 0xf3fdf + mov ax, di ; 89 f8 ; 0xf3fe1 + xor di, di ; 31 ff ; 0xf3fe3 + mov cx, strict word 00009h ; b9 09 00 ; 0xf3fe5 + sal ax, 1 ; d1 e0 ; 0xf3fe8 + rcl di, 1 ; d1 d7 ; 0xf3fea + loop 03fe8h ; e2 fa ; 0xf3fec + push di ; 57 ; 0xf3fee + push ax ; 50 ; 0xf3fef + push strict byte 00000h ; 6a 00 ; 0xf3ff0 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf3ff2 + xor ah, ah ; 30 e4 ; 0xf3ff5 + mov cx, ss ; 8c d1 ; 0xf3ff7 + lea bx, [bp-026h] ; 8d 5e da ; 0xf3ff9 + mov dx, strict word 0000ch ; ba 0c 00 ; 0xf3ffc + mov di, word [bp-01ah] ; 8b 7e e6 ; 0xf3fff + call word [word di+0006ah] ; ff 95 6a 00 ; 0xf4002 + mov es, [bp-010h] ; 8e 46 f0 ; 0xf4006 eltorito.c:420 + mov bx, word [bp-014h] ; 8b 5e ec ; 0xf4009 + mov word [es:bx+020h], strict word 00000h ; 26 c7 47 20 00 00 ; 0xf400c + test ax, ax ; 85 c0 ; 0xf4012 eltorito.c:422 + je short 0401ch ; 74 06 ; 0xf4014 + mov ax, strict word 0000dh ; b8 0d 00 ; 0xf4016 eltorito.c:423 + jmp near 040eah ; e9 ce 00 ; 0xf4019 + mov es, [bp-012h] ; 8e 46 ee ; 0xf401c eltorito.c:428 + mov al, byte [es:si+001h] ; 26 8a 44 01 ; 0xf401f + cmp AL, strict byte 002h ; 3c 02 ; 0xf4023 + jc short 04033h ; 72 0c ; 0xf4025 + jbe short 0404eh ; 76 25 ; 0xf4027 + cmp AL, strict byte 004h ; 3c 04 ; 0xf4029 + je short 0405eh ; 74 31 ; 0xf402b + cmp AL, strict byte 003h ; 3c 03 ; 0xf402d + je short 04056h ; 74 25 ; 0xf402f + jmp short 040a2h ; eb 6f ; 0xf4031 + cmp AL, strict byte 001h ; 3c 01 ; 0xf4033 + jne short 040a2h ; 75 6b ; 0xf4035 + mov es, [bp-012h] ; 8e 46 ee ; 0xf4037 eltorito.c:430 + mov word [es:si+014h], strict word 0000fh ; 26 c7 44 14 0f 00 ; 0xf403a + mov word [es:si+012h], strict word 00050h ; 26 c7 44 12 50 00 ; 0xf4040 eltorito.c:431 + mov word [es:si+010h], strict word 00002h ; 26 c7 44 10 02 00 ; 0xf4046 eltorito.c:432 + jmp short 040a2h ; eb 54 ; 0xf404c eltorito.c:433 + mov word [es:si+014h], strict word 00012h ; 26 c7 44 14 12 00 ; 0xf404e eltorito.c:435 + jmp short 04040h ; eb ea ; 0xf4054 + mov word [es:si+014h], strict word 00024h ; 26 c7 44 14 24 00 ; 0xf4056 eltorito.c:440 + jmp short 04040h ; eb e2 ; 0xf405c + mov bx, 001c4h ; bb c4 01 ; 0xf405e eltorito.c:38 + mov es, [bp-016h] ; 8e 46 ea ; 0xf4061 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf4064 + and AL, strict byte 03fh ; 24 3f ; 0xf4067 eltorito.c:39 + xor ah, ah ; 30 e4 ; 0xf4069 + mov es, [bp-012h] ; 8e 46 ee ; 0xf406b + mov word [es:si+014h], ax ; 26 89 44 14 ; 0xf406e + mov es, [bp-016h] ; 8e 46 ea ; 0xf4072 eltorito.c:38 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf4075 + and AL, strict byte 0c0h ; 24 c0 ; 0xf4078 eltorito.c:39 + mov dx, ax ; 89 c2 ; 0xf407a + sal dx, 002h ; c1 e2 02 ; 0xf407c + mov bx, 001c5h ; bb c5 01 ; 0xf407f eltorito.c:38 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf4082 + add ax, dx ; 01 d0 ; 0xf4085 eltorito.c:39 + inc ax ; 40 ; 0xf4087 + mov es, [bp-012h] ; 8e 46 ee ; 0xf4088 + mov word [es:si+012h], ax ; 26 89 44 12 ; 0xf408b + mov bx, 001c3h ; bb c3 01 ; 0xf408f eltorito.c:38 + mov es, [bp-016h] ; 8e 46 ea ; 0xf4092 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf4095 + xor ah, ah ; 30 e4 ; 0xf4098 eltorito.c:39 + inc ax ; 40 ; 0xf409a + mov es, [bp-012h] ; 8e 46 ee ; 0xf409b + mov word [es:si+010h], ax ; 26 89 44 10 ; 0xf409e + mov es, [bp-012h] ; 8e 46 ee ; 0xf40a2 eltorito.c:453 + cmp byte [es:si+001h], 000h ; 26 80 7c 01 00 ; 0xf40a5 + je short 040d0h ; 74 24 ; 0xf40aa + cmp byte [es:si+002h], 000h ; 26 80 7c 02 00 ; 0xf40ac eltorito.c:455 + jne short 040c2h ; 75 0f ; 0xf40b1 + mov bx, strict word 00010h ; bb 10 00 ; 0xf40b3 eltorito.c:38 + mov ax, strict word 00040h ; b8 40 00 ; 0xf40b6 + mov es, ax ; 8e c0 ; 0xf40b9 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf40bb + or AL, strict byte 041h ; 0c 41 ; 0xf40be eltorito.c:39 + jmp short 040cdh ; eb 0b ; 0xf40c0 eltorito.c:457 + mov bx, 00304h ; bb 04 03 ; 0xf40c2 eltorito.c:38 + mov es, [bp-018h] ; 8e 46 e8 ; 0xf40c5 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf40c8 + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf40cb eltorito.c:39 + mov byte [es:bx], al ; 26 88 07 ; 0xf40cd eltorito.c:43 + mov es, [bp-012h] ; 8e 46 ee ; 0xf40d0 eltorito.c:462 + cmp byte [es:si+001h], 000h ; 26 80 7c 01 00 ; 0xf40d3 + je short 040deh ; 74 04 ; 0xf40d8 + mov byte [es:si], 001h ; 26 c6 04 01 ; 0xf40da eltorito.c:463 + mov es, [bp-012h] ; 8e 46 ee ; 0xf40de eltorito.c:466 + mov al, byte [es:si+002h] ; 26 8a 44 02 ; 0xf40e1 + xor ah, ah ; 30 e4 ; 0xf40e5 + sal ax, 008h ; c1 e0 08 ; 0xf40e7 + lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf40ea eltorito.c:467 + pop di ; 5f ; 0xf40ed + pop si ; 5e ; 0xf40ee + pop dx ; 5a ; 0xf40ef + pop cx ; 59 ; 0xf40f0 + pop bx ; 5b ; 0xf40f1 + pop bp ; 5d ; 0xf40f2 + retn ; c3 ; 0xf40f3 + ; disGetNextSymbol 0xf40f4 LB 0x5dd4 -> off=0x59 cb=00000000000005e8 uValue=00000000000f2b4d 'int13_cdemu' + db 050h, 04eh, 049h, 048h, 047h, 046h, 045h, 044h, 043h, 042h, 041h, 018h, 016h, 015h, 014h, 011h + db 010h, 00dh, 00ch, 00bh, 00ah, 009h, 008h, 005h, 004h, 003h, 002h, 001h, 000h, 018h, 047h, 0f7h + db 041h, 02ah, 042h, 052h, 042h, 01fh, 042h, 052h, 042h, 01fh, 042h, 06dh, 044h, 052h, 044h, 018h + db 047h, 018h, 047h, 052h, 044h, 052h, 044h, 052h, 044h, 052h, 044h, 052h, 044h, 014h, 045h, 052h + db 044h, 018h, 047h, 01dh, 045h, 030h, 045h, 018h, 047h, 030h, 045h, 018h, 047h, 018h, 047h, 030h + db 045h, 0ddh, 046h, 018h, 047h, 018h, 047h, 018h, 047h +int13_cdemu: ; 0xf414d LB 0x5e8 + push bp ; 55 ; 0xf414d eltorito.c:477 + mov bp, sp ; 89 e5 ; 0xf414e + push si ; 56 ; 0xf4150 + push di ; 57 ; 0xf4151 + sub sp, strict byte 00038h ; 83 ec 38 ; 0xf4152 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf4155 eltorito.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf4158 + mov es, ax ; 8e c0 ; 0xf415b + mov ax, word [es:bx] ; 26 8b 07 ; 0xf415d + mov dx, 00366h ; ba 66 03 ; 0xf4160 eltorito.c:493 + mov cx, ax ; 89 c1 ; 0xf4163 + mov bx, dx ; 89 d3 ; 0xf4165 + mov word [bp-00ah], ax ; 89 46 f6 ; 0xf4167 + mov si, 00122h ; be 22 01 ; 0xf416a eltorito.c:494 + mov word [bp-008h], ax ; 89 46 f8 ; 0xf416d + mov es, ax ; 8e c0 ; 0xf4170 eltorito.c:501 + mov di, dx ; 89 d7 ; 0xf4172 + mov al, byte [es:di+003h] ; 26 8a 45 03 ; 0xf4174 + add al, al ; 00 c0 ; 0xf4178 + mov byte [bp-006h], al ; 88 46 fa ; 0xf417a + mov al, byte [es:di+004h] ; 26 8a 45 04 ; 0xf417d eltorito.c:502 + add byte [bp-006h], al ; 00 46 fa ; 0xf4181 + mov di, strict word 00074h ; bf 74 00 ; 0xf4184 eltorito.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf4187 + mov es, ax ; 8e c0 ; 0xf418a + mov byte [es:di], 000h ; 26 c6 05 00 ; 0xf418c + mov es, cx ; 8e c1 ; 0xf4190 eltorito.c:507 + mov di, dx ; 89 d7 ; 0xf4192 + cmp byte [es:di], 000h ; 26 80 3d 00 ; 0xf4194 + je short 041a9h ; 74 0f ; 0xf4198 + mov al, byte [es:di+002h] ; 26 8a 45 02 ; 0xf419a + xor ah, ah ; 30 e4 ; 0xf419e + mov dx, word [bp+012h] ; 8b 56 12 ; 0xf41a0 + xor dh, dh ; 30 f6 ; 0xf41a3 + cmp ax, dx ; 39 d0 ; 0xf41a5 + je short 041d2h ; 74 29 ; 0xf41a7 + mov bx, 00da0h ; bb a0 0d ; 0xf41a9 eltorito.c:508 + mov cx, ds ; 8c d9 ; 0xf41ac + mov ax, strict word 00004h ; b8 04 00 ; 0xf41ae + call 018bch ; e8 08 d7 ; 0xf41b1 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf41b4 + xor ah, ah ; 30 e4 ; 0xf41b7 + push ax ; 50 ; 0xf41b9 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf41ba + shr ax, 008h ; c1 e8 08 ; 0xf41bd + push ax ; 50 ; 0xf41c0 + push 0034ch ; 68 4c 03 ; 0xf41c1 + push 00358h ; 68 58 03 ; 0xf41c4 + push strict byte 00004h ; 6a 04 ; 0xf41c7 + call 018ffh ; e8 33 d7 ; 0xf41c9 + add sp, strict byte 0000ah ; 83 c4 0a ; 0xf41cc + jmp near 046f5h ; e9 23 05 ; 0xf41cf eltorito.c:509 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf41d2 eltorito.c:512 + shr ax, 008h ; c1 e8 08 ; 0xf41d5 + cmp ax, strict word 00050h ; 3d 50 00 ; 0xf41d8 + jnbe short 0424fh ; 77 72 ; 0xf41db + push CS ; 0e ; 0xf41dd + pop ES ; 07 ; 0xf41de + mov cx, strict word 0001eh ; b9 1e 00 ; 0xf41df + mov di, 040f4h ; bf f4 40 ; 0xf41e2 + repne scasb ; f2 ae ; 0xf41e5 + sal cx, 1 ; d1 e1 ; 0xf41e7 + mov di, cx ; 89 cf ; 0xf41e9 + mov ax, word [cs:di+04111h] ; 2e 8b 85 11 41 ; 0xf41eb + mov dx, word [bp+016h] ; 8b 56 16 ; 0xf41f0 + xor dh, dh ; 30 f6 ; 0xf41f3 + jmp ax ; ff e0 ; 0xf41f5 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf41f7 eltorito.c:515 + xor ah, ah ; 30 e4 ; 0xf41fa + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf41fc + mov es, [bp-008h] ; 8e 46 f8 ; 0xf41ff + add si, ax ; 01 c6 ; 0xf4202 + mov bl, byte [es:si+022h] ; 26 8a 5c 22 ; 0xf4204 + xor bh, bh ; 30 ff ; 0xf4208 + add bx, bx ; 01 db ; 0xf420a + cmp word [word bx+0006ah], strict byte 00000h ; 83 bf 6a 00 00 ; 0xf420c + je short 0421ch ; 74 09 ; 0xf4211 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf4213 eltorito.c:517 + xor ah, ah ; 30 e4 ; 0xf4216 + call word [word bx+00076h] ; ff 97 76 00 ; 0xf4218 + jmp near 04452h ; e9 33 02 ; 0xf421c eltorito.c:519 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf421f eltorito.c:535 + xor ah, ah ; 30 e4 ; 0xf4222 + or ah, 003h ; 80 cc 03 ; 0xf4224 + jmp near 046fdh ; e9 d3 04 ; 0xf4227 eltorito.c:536 + mov bx, strict word 00074h ; bb 74 00 ; 0xf422a eltorito.c:38 + mov ax, strict word 00040h ; b8 40 00 ; 0xf422d + mov es, ax ; 8e c0 ; 0xf4230 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf4232 + mov bl, al ; 88 c3 ; 0xf4235 eltorito.c:541 + xor bh, bh ; 30 ff ; 0xf4237 + sal bx, 008h ; c1 e3 08 ; 0xf4239 + or dx, bx ; 09 da ; 0xf423c + mov word [bp+016h], dx ; 89 56 16 ; 0xf423e + mov bx, strict word 00074h ; bb 74 00 ; 0xf4241 eltorito.c:43 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf4244 + test al, al ; 84 c0 ; 0xf4248 eltorito.c:545 + je short 042b0h ; 74 64 ; 0xf424a + jmp near 04711h ; e9 c2 04 ; 0xf424c eltorito.c:546 + jmp near 04718h ; e9 c6 04 ; 0xf424f + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf4252 eltorito.c:553 + mov ax, word [es:bx+014h] ; 26 8b 47 14 ; 0xf4255 + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf4259 + mov dx, word [es:bx+012h] ; 26 8b 57 12 ; 0xf425c eltorito.c:554 + mov ax, word [es:bx+010h] ; 26 8b 47 10 ; 0xf4260 eltorito.c:555 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf4264 + mov ax, word [es:bx+008h] ; 26 8b 47 08 ; 0xf4267 eltorito.c:556 + mov word [bp-01ch], ax ; 89 46 e4 ; 0xf426b + mov ax, word [es:bx+00ah] ; 26 8b 47 0a ; 0xf426e + mov word [bp-020h], ax ; 89 46 e0 ; 0xf4272 + mov ax, word [bp+014h] ; 8b 46 14 ; 0xf4275 eltorito.c:558 + and ax, strict word 0003fh ; 25 3f 00 ; 0xf4278 + mov word [bp-022h], ax ; 89 46 de ; 0xf427b + mov bx, word [bp+014h] ; 8b 5e 14 ; 0xf427e eltorito.c:559 + and bx, 000c0h ; 81 e3 c0 00 ; 0xf4281 + sal bx, 002h ; c1 e3 02 ; 0xf4285 + mov ax, word [bp+014h] ; 8b 46 14 ; 0xf4288 + shr ax, 008h ; c1 e8 08 ; 0xf428b + or ax, bx ; 09 d8 ; 0xf428e + mov bx, word [bp+012h] ; 8b 5e 12 ; 0xf4290 eltorito.c:560 + shr bx, 008h ; c1 eb 08 ; 0xf4293 + mov word [bp-012h], bx ; 89 5e ee ; 0xf4296 + mov di, word [bp+016h] ; 8b 7e 16 ; 0xf4299 eltorito.c:561 + and di, 000ffh ; 81 e7 ff 00 ; 0xf429c + je short 042c9h ; 74 27 ; 0xf42a0 eltorito.c:569 + mov bx, word [bp-022h] ; 8b 5e de ; 0xf42a2 eltorito.c:573 + cmp bx, word [bp-00eh] ; 3b 5e f2 ; 0xf42a5 + jnbe short 042bbh ; 77 11 ; 0xf42a8 + cmp ax, dx ; 39 d0 ; 0xf42aa + jc short 042b3h ; 72 05 ; 0xf42ac + jmp short 042bbh ; eb 0b ; 0xf42ae + jmp near 04456h ; e9 a3 01 ; 0xf42b0 + mov dx, word [bp-012h] ; 8b 56 ee ; 0xf42b3 + cmp dx, word [bp-00ch] ; 3b 56 f4 ; 0xf42b6 + jc short 042beh ; 72 03 ; 0xf42b9 + jmp near 046f5h ; e9 37 04 ; 0xf42bb eltorito.c:576 + mov dx, word [bp+016h] ; 8b 56 16 ; 0xf42be eltorito.c:580 + shr dx, 008h ; c1 ea 08 ; 0xf42c1 + cmp dx, strict byte 00004h ; 83 fa 04 ; 0xf42c4 + jne short 042cch ; 75 03 ; 0xf42c7 + jmp near 04452h ; e9 86 01 ; 0xf42c9 eltorito.c:581 + mov dx, word [bp+010h] ; 8b 56 10 ; 0xf42cc eltorito.c:583 + shr dx, 004h ; c1 ea 04 ; 0xf42cf + mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf42d2 + add bx, dx ; 01 d3 ; 0xf42d5 + mov word [bp-014h], bx ; 89 5e ec ; 0xf42d7 + mov dx, word [bp+010h] ; 8b 56 10 ; 0xf42da eltorito.c:584 + and dx, strict byte 0000fh ; 83 e2 0f ; 0xf42dd + mov word [bp-016h], dx ; 89 56 ea ; 0xf42e0 + xor dl, dl ; 30 d2 ; 0xf42e3 eltorito.c:587 + mov bx, word [bp-00ch] ; 8b 5e f4 ; 0xf42e5 + xor cx, cx ; 31 c9 ; 0xf42e8 + call 09b40h ; e8 53 58 ; 0xf42ea + xor bx, bx ; 31 db ; 0xf42ed + add ax, word [bp-012h] ; 03 46 ee ; 0xf42ef + adc dx, bx ; 11 da ; 0xf42f2 + mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf42f4 + xor cx, cx ; 31 c9 ; 0xf42f7 + call 09b40h ; e8 44 58 ; 0xf42f9 + mov bx, dx ; 89 d3 ; 0xf42fc + mov dx, word [bp-022h] ; 8b 56 de ; 0xf42fe + dec dx ; 4a ; 0xf4301 + mov word [bp-024h], strict word 00000h ; c7 46 dc 00 00 ; 0xf4302 + add dx, ax ; 01 c2 ; 0xf4307 + adc bx, word [bp-024h] ; 13 5e dc ; 0xf4309 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf430c eltorito.c:590 + xor al, al ; 30 c0 ; 0xf430f + or ax, di ; 09 f8 ; 0xf4311 + mov word [bp+016h], ax ; 89 46 16 ; 0xf4313 + mov word [bp-030h], dx ; 89 56 d0 ; 0xf4316 eltorito.c:593 + mov word [bp-02eh], bx ; 89 5e d2 ; 0xf4319 + shr word [bp-02eh], 1 ; d1 6e d2 ; 0xf431c + rcr word [bp-030h], 1 ; d1 5e d0 ; 0xf431f + shr word [bp-02eh], 1 ; d1 6e d2 ; 0xf4322 + rcr word [bp-030h], 1 ; d1 5e d0 ; 0xf4325 + mov ax, word [bp-02eh] ; 8b 46 d2 ; 0xf4328 + mov word [bp-026h], ax ; 89 46 da ; 0xf432b + mov ax, dx ; 89 d0 ; 0xf432e eltorito.c:594 + xor ah, dh ; 30 f4 ; 0xf4330 + and AL, strict byte 003h ; 24 03 ; 0xf4332 + mov word [bp-028h], ax ; 89 46 d8 ; 0xf4334 + xor cx, cx ; 31 c9 ; 0xf4337 eltorito.c:597 + mov ax, dx ; 89 d0 ; 0xf4339 + add ax, di ; 01 f8 ; 0xf433b + mov dx, bx ; 89 da ; 0xf433d + adc dx, cx ; 11 ca ; 0xf433f + mov bx, ax ; 89 c3 ; 0xf4341 + add bx, strict byte 0ffffh ; 83 c3 ff ; 0xf4343 + mov ax, dx ; 89 d0 ; 0xf4346 + adc ax, strict word 0ffffh ; 15 ff ff ; 0xf4348 + mov word [bp-02ch], bx ; 89 5e d4 ; 0xf434b + mov word [bp-02ah], ax ; 89 46 d6 ; 0xf434e + shr word [bp-02ah], 1 ; d1 6e d6 ; 0xf4351 + rcr word [bp-02ch], 1 ; d1 5e d4 ; 0xf4354 + shr word [bp-02ah], 1 ; d1 6e d6 ; 0xf4357 + rcr word [bp-02ch], 1 ; d1 5e d4 ; 0xf435a + mov cx, strict word 0000ch ; b9 0c 00 ; 0xf435d eltorito.c:599 + xor bx, bx ; 31 db ; 0xf4360 + mov dx, ss ; 8c d2 ; 0xf4362 + lea ax, [bp-03ch] ; 8d 46 c4 ; 0xf4364 + call 09bb0h ; e8 46 58 ; 0xf4367 + mov word [bp-03ch], strict word 00028h ; c7 46 c4 28 00 ; 0xf436a eltorito.c:600 + mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xf436f eltorito.c:601 + add ax, word [bp-030h] ; 03 46 d0 ; 0xf4372 + mov dx, word [bp-020h] ; 8b 56 e0 ; 0xf4375 + adc dx, word [bp-026h] ; 13 56 da ; 0xf4378 + xchg ah, al ; 86 c4 ; 0xf437b + xchg dh, dl ; 86 d6 ; 0xf437d + xchg dx, ax ; 92 ; 0xf437f + mov word [bp-03ah], ax ; 89 46 c6 ; 0xf4380 + mov word [bp-038h], dx ; 89 56 c8 ; 0xf4383 + mov ax, word [bp-02ch] ; 8b 46 d4 ; 0xf4386 eltorito.c:602 + sub ax, word [bp-030h] ; 2b 46 d0 ; 0xf4389 + inc ax ; 40 ; 0xf438c + xchg ah, al ; 86 c4 ; 0xf438d + mov word [bp-035h], ax ; 89 46 cb ; 0xf438f + mov es, [bp-008h] ; 8e 46 f8 ; 0xf4392 eltorito.c:604 + mov word [es:si+00eh], di ; 26 89 7c 0e ; 0xf4395 + mov word [es:si+010h], 00200h ; 26 c7 44 10 00 02 ; 0xf4399 eltorito.c:605 + mov dx, word [bp-028h] ; 8b 56 d8 ; 0xf439f eltorito.c:607 + sal dx, 009h ; c1 e2 09 ; 0xf43a2 + mov word [es:si+01eh], dx ; 26 89 54 1e ; 0xf43a5 + mov ax, di ; 89 f8 ; 0xf43a9 eltorito.c:608 + xor ah, ah ; 30 e4 ; 0xf43ab + and AL, strict byte 003h ; 24 03 ; 0xf43ad + mov bx, strict word 00004h ; bb 04 00 ; 0xf43af + sub bx, ax ; 29 c3 ; 0xf43b2 + mov ax, bx ; 89 d8 ; 0xf43b4 + sub ax, word [bp-028h] ; 2b 46 d8 ; 0xf43b6 + sal ax, 009h ; c1 e0 09 ; 0xf43b9 + and ah, 007h ; 80 e4 07 ; 0xf43bc + mov word [es:si+020h], ax ; 26 89 44 20 ; 0xf43bf + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf43c3 eltorito.c:610 + xor ah, ah ; 30 e4 ; 0xf43c6 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf43c8 + mov bx, si ; 89 f3 ; 0xf43cb + add bx, ax ; 01 c3 ; 0xf43cd + mov al, byte [es:bx+022h] ; 26 8a 47 22 ; 0xf43cf + xor ah, ah ; 30 e4 ; 0xf43d3 + add ax, ax ; 01 c0 ; 0xf43d5 + mov word [bp-024h], ax ; 89 46 dc ; 0xf43d7 + push word [bp-014h] ; ff 76 ec ; 0xf43da + push word [bp-016h] ; ff 76 ea ; 0xf43dd + push strict byte 00001h ; 6a 01 ; 0xf43e0 + mov bx, di ; 89 fb ; 0xf43e2 + xor di, di ; 31 ff ; 0xf43e4 + mov cx, strict word 00009h ; b9 09 00 ; 0xf43e6 + sal bx, 1 ; d1 e3 ; 0xf43e9 + rcl di, 1 ; d1 d7 ; 0xf43eb + loop 043e9h ; e2 fa ; 0xf43ed + push di ; 57 ; 0xf43ef + push bx ; 53 ; 0xf43f0 + push dx ; 52 ; 0xf43f1 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf43f2 + xor ah, ah ; 30 e4 ; 0xf43f5 + mov cx, ss ; 8c d1 ; 0xf43f7 + lea bx, [bp-03ch] ; 8d 5e c4 ; 0xf43f9 + mov dx, strict word 0000ch ; ba 0c 00 ; 0xf43fc + mov di, word [bp-024h] ; 8b 7e dc ; 0xf43ff + call word [word di+0006ah] ; ff 95 6a 00 ; 0xf4402 + mov dx, ax ; 89 c2 ; 0xf4406 + mov es, [bp-008h] ; 8e 46 f8 ; 0xf4408 eltorito.c:612 + mov word [es:si+01eh], strict word 00000h ; 26 c7 44 1e 00 00 ; 0xf440b + mov word [es:si+020h], strict word 00000h ; 26 c7 44 20 00 00 ; 0xf4411 eltorito.c:613 + test al, al ; 84 c0 ; 0xf4417 eltorito.c:615 + je short 04452h ; 74 37 ; 0xf4419 + mov bx, 00da0h ; bb a0 0d ; 0xf441b eltorito.c:616 + mov cx, ds ; 8c d9 ; 0xf441e + mov ax, strict word 00004h ; b8 04 00 ; 0xf4420 + call 018bch ; e8 96 d4 ; 0xf4423 + mov al, dl ; 88 d0 ; 0xf4426 + xor ah, ah ; 30 e4 ; 0xf4428 + push ax ; 50 ; 0xf442a + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf442b + shr ax, 008h ; c1 e8 08 ; 0xf442e + push ax ; 50 ; 0xf4431 + push 0034ch ; 68 4c 03 ; 0xf4432 + push 0038eh ; 68 8e 03 ; 0xf4435 + push strict byte 00004h ; 6a 04 ; 0xf4438 + call 018ffh ; e8 c2 d4 ; 0xf443a + add sp, strict byte 0000ah ; 83 c4 0a ; 0xf443d + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf4440 eltorito.c:617 + xor ah, ah ; 30 e4 ; 0xf4443 + or ah, 002h ; 80 cc 02 ; 0xf4445 + mov word [bp+016h], ax ; 89 46 16 ; 0xf4448 + mov byte [bp+016h], 000h ; c6 46 16 00 ; 0xf444b eltorito.c:618 + jmp near 04700h ; e9 ae 02 ; 0xf444f eltorito.c:619 + mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf4452 + mov bx, strict word 00074h ; bb 74 00 ; 0xf4456 + mov ax, strict word 00040h ; b8 40 00 ; 0xf4459 + mov es, ax ; 8e c0 ; 0xf445c + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf445e + and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf4462 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf4466 + pop di ; 5f ; 0xf4469 + pop si ; 5e ; 0xf446a + pop bp ; 5d ; 0xf446b + retn ; c3 ; 0xf446c + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf446d eltorito.c:626 + mov ax, word [es:bx+014h] ; 26 8b 47 14 ; 0xf4470 + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf4474 + mov dx, word [es:bx+012h] ; 26 8b 57 12 ; 0xf4477 eltorito.c:627 + dec dx ; 4a ; 0xf447b + mov ax, word [es:bx+010h] ; 26 8b 47 10 ; 0xf447c eltorito.c:628 + dec ax ; 48 ; 0xf4480 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf4481 + mov byte [bp+016h], 000h ; c6 46 16 00 ; 0xf4484 eltorito.c:630 + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf4488 eltorito.c:631 + xor al, al ; 30 c0 ; 0xf448b + mov si, word [bp+014h] ; 8b 76 14 ; 0xf448d eltorito.c:632 + and si, 000ffh ; 81 e6 ff 00 ; 0xf4490 + mov cx, dx ; 89 d1 ; 0xf4494 + xor ch, dh ; 30 f5 ; 0xf4496 + sal cx, 008h ; c1 e1 08 ; 0xf4498 + or si, cx ; 09 ce ; 0xf449b + mov word [bp+014h], si ; 89 76 14 ; 0xf449d + mov cx, dx ; 89 d1 ; 0xf44a0 eltorito.c:633 + shr cx, 002h ; c1 e9 02 ; 0xf44a2 + and cl, 0c0h ; 80 e1 c0 ; 0xf44a5 + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf44a8 + and dl, 03fh ; 80 e2 3f ; 0xf44ab + or cl, dl ; 08 d1 ; 0xf44ae + mov dx, si ; 89 f2 ; 0xf44b0 + mov dl, cl ; 88 ca ; 0xf44b2 + mov word [bp+014h], dx ; 89 56 14 ; 0xf44b4 + mov cx, word [bp+012h] ; 8b 4e 12 ; 0xf44b7 eltorito.c:634 + xor ch, ch ; 30 ed ; 0xf44ba + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf44bc + sal dx, 008h ; c1 e2 08 ; 0xf44bf + or cx, dx ; 09 d1 ; 0xf44c2 + mov word [bp+012h], cx ; 89 4e 12 ; 0xf44c4 + mov dx, cx ; 89 ca ; 0xf44c7 eltorito.c:635 + xor dl, cl ; 30 ca ; 0xf44c9 + or dl, 002h ; 80 ca 02 ; 0xf44cb + mov word [bp+012h], dx ; 89 56 12 ; 0xf44ce + mov dl, byte [es:bx+001h] ; 26 8a 57 01 ; 0xf44d1 eltorito.c:638 + mov word [bp+010h], ax ; 89 46 10 ; 0xf44d5 + cmp dl, 003h ; 80 fa 03 ; 0xf44d8 + je short 044f7h ; 74 1a ; 0xf44db + cmp dl, 002h ; 80 fa 02 ; 0xf44dd + je short 044f3h ; 74 11 ; 0xf44e0 + cmp dl, 001h ; 80 fa 01 ; 0xf44e2 + jne short 044fbh ; 75 14 ; 0xf44e5 + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf44e7 eltorito.c:639 + xor al, al ; 30 c0 ; 0xf44ea + or AL, strict byte 002h ; 0c 02 ; 0xf44ec + mov word [bp+010h], ax ; 89 46 10 ; 0xf44ee + jmp short 044fbh ; eb 08 ; 0xf44f1 + or AL, strict byte 004h ; 0c 04 ; 0xf44f3 eltorito.c:640 + jmp short 044eeh ; eb f7 ; 0xf44f5 + or AL, strict byte 005h ; 0c 05 ; 0xf44f7 eltorito.c:641 + jmp short 044eeh ; eb f3 ; 0xf44f9 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf44fb eltorito.c:645 + cmp byte [es:bx+001h], 004h ; 26 80 7f 01 04 ; 0xf44fe + jc short 04508h ; 72 03 ; 0xf4503 + jmp near 04452h ; e9 4a ff ; 0xf4505 + mov word [bp+008h], 0efc7h ; c7 46 08 c7 ef ; 0xf4508 eltorito.c:646 + mov word [bp+006h], 0f000h ; c7 46 06 00 f0 ; 0xf450d eltorito.c:647 + jmp short 04505h ; eb f1 ; 0xf4512 eltorito.c:649 + or dh, 003h ; 80 ce 03 ; 0xf4514 eltorito.c:654 + mov word [bp+016h], dx ; 89 56 16 ; 0xf4517 + jmp near 04456h ; e9 39 ff ; 0xf451a eltorito.c:655 + mov word [bp+010h], 0aa55h ; c7 46 10 55 aa ; 0xf451d eltorito.c:659 + or dh, 030h ; 80 ce 30 ; 0xf4522 eltorito.c:660 + mov word [bp+016h], dx ; 89 56 16 ; 0xf4525 + mov word [bp+014h], strict word 00007h ; c7 46 14 07 00 ; 0xf4528 eltorito.c:661 + jmp near 04456h ; e9 26 ff ; 0xf452d eltorito.c:662 + mov di, word [bp+00ah] ; 8b 7e 0a ; 0xf4530 eltorito.c:670 + mov es, [bp+004h] ; 8e 46 04 ; 0xf4533 + mov word [bp-01ah], di ; 89 7e e6 ; 0xf4536 + mov [bp-018h], es ; 8c 46 e8 ; 0xf4539 + mov ax, word [es:di+002h] ; 26 8b 45 02 ; 0xf453c eltorito.c:672 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf4540 + mov ax, word [es:di+006h] ; 26 8b 45 06 ; 0xf4543 eltorito.c:673 + mov word [bp-014h], ax ; 89 46 ec ; 0xf4547 + mov ax, word [es:di+004h] ; 26 8b 45 04 ; 0xf454a eltorito.c:674 + mov word [bp-016h], ax ; 89 46 ea ; 0xf454e + mov ax, word [es:di+00ch] ; 26 8b 45 0c ; 0xf4551 eltorito.c:677 + mov dx, word [es:di+00eh] ; 26 8b 55 0e ; 0xf4555 + or ax, dx ; 09 d0 ; 0xf4559 eltorito.c:678 + je short 04575h ; 74 18 ; 0xf455b + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf455d eltorito.c:679 + shr ax, 008h ; c1 e8 08 ; 0xf4560 + push ax ; 50 ; 0xf4563 + push 0034ch ; 68 4c 03 ; 0xf4564 + push 003afh ; 68 af 03 ; 0xf4567 + push strict byte 00007h ; 6a 07 ; 0xf456a + call 018ffh ; e8 90 d3 ; 0xf456c + add sp, strict byte 00008h ; 83 c4 08 ; 0xf456f + jmp near 046f5h ; e9 80 01 ; 0xf4572 eltorito.c:680 + les di, [bp-01ah] ; c4 7e e6 ; 0xf4575 eltorito.c:684 + mov ax, word [es:di+008h] ; 26 8b 45 08 ; 0xf4578 + mov dx, word [es:di+00ah] ; 26 8b 55 0a ; 0xf457c + mov cx, word [bp+016h] ; 8b 4e 16 ; 0xf4580 eltorito.c:687 + shr cx, 008h ; c1 e9 08 ; 0xf4583 + mov word [bp-01eh], cx ; 89 4e e2 ; 0xf4586 + cmp cx, strict byte 00044h ; 83 f9 44 ; 0xf4589 + jne short 04591h ; 75 03 ; 0xf458c + jmp near 04452h ; e9 c1 fe ; 0xf458e + cmp cx, strict byte 00047h ; 83 f9 47 ; 0xf4591 + jne short 04598h ; 75 02 ; 0xf4594 + jmp short 0458eh ; eb f6 ; 0xf4596 eltorito.c:688 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf4598 eltorito.c:695 + mov cx, word [es:bx+008h] ; 26 8b 4f 08 ; 0xf459b + mov word [bp-01ch], cx ; 89 4e e4 ; 0xf459f + mov bx, word [es:bx+00ah] ; 26 8b 5f 0a ; 0xf45a2 + mov word [bp-020h], bx ; 89 5e e0 ; 0xf45a6 + mov word [bp-02ch], ax ; 89 46 d4 ; 0xf45a9 eltorito.c:698 + mov word [bp-02ah], dx ; 89 56 d6 ; 0xf45ac + shr word [bp-02ah], 1 ; d1 6e d6 ; 0xf45af + rcr word [bp-02ch], 1 ; d1 5e d4 ; 0xf45b2 + shr word [bp-02ah], 1 ; d1 6e d6 ; 0xf45b5 + rcr word [bp-02ch], 1 ; d1 5e d4 ; 0xf45b8 + mov bx, word [bp-02ah] ; 8b 5e d6 ; 0xf45bb + mov word [bp-026h], bx ; 89 5e da ; 0xf45be + mov di, ax ; 89 c7 ; 0xf45c1 eltorito.c:699 + and di, strict byte 00003h ; 83 e7 03 ; 0xf45c3 + xor bx, bx ; 31 db ; 0xf45c6 eltorito.c:702 + add ax, word [bp-010h] ; 03 46 f0 ; 0xf45c8 + adc dx, bx ; 11 da ; 0xf45cb + add ax, strict word 0ffffh ; 05 ff ff ; 0xf45cd + adc dx, strict byte 0ffffh ; 83 d2 ff ; 0xf45d0 + mov word [bp-030h], ax ; 89 46 d0 ; 0xf45d3 + mov word [bp-02eh], dx ; 89 56 d2 ; 0xf45d6 + shr word [bp-02eh], 1 ; d1 6e d2 ; 0xf45d9 + rcr word [bp-030h], 1 ; d1 5e d0 ; 0xf45dc + shr word [bp-02eh], 1 ; d1 6e d2 ; 0xf45df + rcr word [bp-030h], 1 ; d1 5e d0 ; 0xf45e2 + mov cx, strict word 0000ch ; b9 0c 00 ; 0xf45e5 eltorito.c:704 + mov dx, ss ; 8c d2 ; 0xf45e8 + lea ax, [bp-03ch] ; 8d 46 c4 ; 0xf45ea + call 09bb0h ; e8 c0 55 ; 0xf45ed + mov word [bp-03ch], strict word 00028h ; c7 46 c4 28 00 ; 0xf45f0 eltorito.c:705 + mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xf45f5 eltorito.c:706 + add ax, word [bp-02ch] ; 03 46 d4 ; 0xf45f8 + mov dx, word [bp-020h] ; 8b 56 e0 ; 0xf45fb + adc dx, word [bp-026h] ; 13 56 da ; 0xf45fe + xchg ah, al ; 86 c4 ; 0xf4601 + xchg dh, dl ; 86 d6 ; 0xf4603 + xchg dx, ax ; 92 ; 0xf4605 + mov word [bp-03ah], ax ; 89 46 c6 ; 0xf4606 + mov word [bp-038h], dx ; 89 56 c8 ; 0xf4609 + mov ax, word [bp-030h] ; 8b 46 d0 ; 0xf460c eltorito.c:707 + sub ax, word [bp-02ch] ; 2b 46 d4 ; 0xf460f + inc ax ; 40 ; 0xf4612 + xchg ah, al ; 86 c4 ; 0xf4613 + mov word [bp-035h], ax ; 89 46 cb ; 0xf4615 + mov dx, di ; 89 fa ; 0xf4618 eltorito.c:709 + sal dx, 009h ; c1 e2 09 ; 0xf461a + mov es, [bp-008h] ; 8e 46 f8 ; 0xf461d + mov word [es:si+01eh], dx ; 26 89 54 1e ; 0xf4620 + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf4624 eltorito.c:710 + xor ah, ah ; 30 e4 ; 0xf4627 + and AL, strict byte 003h ; 24 03 ; 0xf4629 + mov bx, strict word 00004h ; bb 04 00 ; 0xf462b + sub bx, ax ; 29 c3 ; 0xf462e + mov ax, bx ; 89 d8 ; 0xf4630 + sub ax, di ; 29 f8 ; 0xf4632 + sal ax, 009h ; c1 e0 09 ; 0xf4634 + and ah, 007h ; 80 e4 07 ; 0xf4637 + mov word [es:si+020h], ax ; 26 89 44 20 ; 0xf463a + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf463e eltorito.c:712 + xor ah, ah ; 30 e4 ; 0xf4641 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf4643 + mov bx, si ; 89 f3 ; 0xf4646 + add bx, ax ; 01 c3 ; 0xf4648 + mov al, byte [es:bx+022h] ; 26 8a 47 22 ; 0xf464a + xor ah, ah ; 30 e4 ; 0xf464e + add ax, ax ; 01 c0 ; 0xf4650 + mov word [bp-024h], ax ; 89 46 dc ; 0xf4652 + push word [bp-014h] ; ff 76 ec ; 0xf4655 + push word [bp-016h] ; ff 76 ea ; 0xf4658 + push strict byte 00001h ; 6a 01 ; 0xf465b + mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf465d + xor di, di ; 31 ff ; 0xf4660 + mov cx, strict word 00009h ; b9 09 00 ; 0xf4662 + sal bx, 1 ; d1 e3 ; 0xf4665 + rcl di, 1 ; d1 d7 ; 0xf4667 + loop 04665h ; e2 fa ; 0xf4669 + push di ; 57 ; 0xf466b + push bx ; 53 ; 0xf466c + push dx ; 52 ; 0xf466d + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf466e + xor ah, ah ; 30 e4 ; 0xf4671 + mov cx, ss ; 8c d1 ; 0xf4673 + lea bx, [bp-03ch] ; 8d 5e c4 ; 0xf4675 + mov dx, strict word 0000ch ; ba 0c 00 ; 0xf4678 + mov di, word [bp-024h] ; 8b 7e dc ; 0xf467b + call word [word di+0006ah] ; ff 95 6a 00 ; 0xf467e + mov dx, ax ; 89 c2 ; 0xf4682 + mov es, [bp-008h] ; 8e 46 f8 ; 0xf4684 eltorito.c:714 + mov word [es:si+01eh], strict word 00000h ; 26 c7 44 1e 00 00 ; 0xf4687 + mov word [es:si+020h], strict word 00000h ; 26 c7 44 20 00 00 ; 0xf468d eltorito.c:715 + mov bx, word [es:si+01ah] ; 26 8b 5c 1a ; 0xf4693 eltorito.c:717 + mov di, word [es:si+01ch] ; 26 8b 7c 1c ; 0xf4697 + mov cx, strict word 00009h ; b9 09 00 ; 0xf469b + shr di, 1 ; d1 ef ; 0xf469e + rcr bx, 1 ; d1 db ; 0xf46a0 + loop 0469eh ; e2 fa ; 0xf46a2 + les si, [bp-01ah] ; c4 76 e6 ; 0xf46a4 eltorito.c:718 + mov word [es:si+002h], bx ; 26 89 5c 02 ; 0xf46a7 + test al, al ; 84 c0 ; 0xf46ab eltorito.c:720 + jne short 046b2h ; 75 03 ; 0xf46ad + jmp near 04452h ; e9 a0 fd ; 0xf46af + mov bx, 00da0h ; bb a0 0d ; 0xf46b2 eltorito.c:721 + mov cx, ds ; 8c d9 ; 0xf46b5 + mov ax, strict word 00004h ; b8 04 00 ; 0xf46b7 + call 018bch ; e8 ff d1 ; 0xf46ba + mov al, dl ; 88 d0 ; 0xf46bd + xor ah, ah ; 30 e4 ; 0xf46bf + push ax ; 50 ; 0xf46c1 + push word [bp-01eh] ; ff 76 e2 ; 0xf46c2 + push 0034ch ; 68 4c 03 ; 0xf46c5 + push 003d8h ; 68 d8 03 ; 0xf46c8 + push strict byte 00004h ; 6a 04 ; 0xf46cb + call 018ffh ; e8 2f d2 ; 0xf46cd + add sp, strict byte 0000ah ; 83 c4 0a ; 0xf46d0 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf46d3 eltorito.c:722 + xor ah, ah ; 30 e4 ; 0xf46d6 + or ah, 00ch ; 80 cc 0c ; 0xf46d8 + jmp short 046fdh ; eb 20 ; 0xf46db + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf46dd eltorito.c:730 + xor ah, ah ; 30 e4 ; 0xf46e0 + push ax ; 50 ; 0xf46e2 + mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf46e3 + mov dx, word [bp+004h] ; 8b 56 04 ; 0xf46e6 + mov bx, si ; 89 f3 ; 0xf46e9 + mov cx, word [bp-008h] ; 8b 4e f8 ; 0xf46eb + call 05965h ; e8 74 12 ; 0xf46ee + test ax, ax ; 85 c0 ; 0xf46f1 + je short 046afh ; 74 ba ; 0xf46f3 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf46f5 eltorito.c:731 + xor ah, ah ; 30 e4 ; 0xf46f8 + or ah, 001h ; 80 cc 01 ; 0xf46fa + mov word [bp+016h], ax ; 89 46 16 ; 0xf46fd + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf4700 + shr ax, 008h ; c1 e8 08 ; 0xf4703 + mov bx, strict word 00074h ; bb 74 00 ; 0xf4706 + mov dx, strict word 00040h ; ba 40 00 ; 0xf4709 + mov es, dx ; 8e c2 ; 0xf470c + mov byte [es:bx], al ; 26 88 07 ; 0xf470e + or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf4711 + jmp near 04466h ; e9 4e fd ; 0xf4715 + mov bx, 00da0h ; bb a0 0d ; 0xf4718 eltorito.c:747 + mov cx, ds ; 8c d9 ; 0xf471b + mov ax, strict word 00004h ; b8 04 00 ; 0xf471d + call 018bch ; e8 99 d1 ; 0xf4720 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf4723 + shr ax, 008h ; c1 e8 08 ; 0xf4726 + push ax ; 50 ; 0xf4729 + push 0034ch ; 68 4c 03 ; 0xf472a + push 003fah ; 68 fa 03 ; 0xf472d + push strict byte 00004h ; 6a 04 ; 0xf4730 + jmp near 0456ch ; e9 37 fe ; 0xf4732 + ; disGetNextSymbol 0xf4735 LB 0x5793 -> off=0x59 cb=0000000000000379 uValue=00000000000f318e 'int13_cdrom' + db 050h, 04eh, 049h, 048h, 047h, 046h, 045h, 044h, 043h, 042h, 041h, 018h, 016h, 015h, 014h, 011h + db 010h, 00dh, 00ch, 00bh, 00ah, 009h, 008h, 005h, 004h, 003h, 002h, 001h, 000h, 06fh, 048h, 0ech + db 04ah, 034h, 048h, 06fh, 048h, 029h, 048h, 06fh, 048h, 029h, 048h, 06fh, 048h, 0ech, 04ah, 06fh + db 048h, 06fh, 048h, 0ech, 04ah, 0ech, 04ah, 0ech, 04ah, 0ech, 04ah, 0ech, 04ah, 056h, 048h, 0ech + db 04ah, 06fh, 048h, 05ch, 048h, 08bh, 048h, 029h, 048h, 08bh, 048h, 0c9h, 049h, 06fh, 04ah, 08bh + db 048h, 094h, 04ah, 0ach, 04ah, 0b4h, 04ah, 06fh, 048h +int13_cdrom: ; 0xf478e LB 0x379 + push bp ; 55 ; 0xf478e eltorito.c:772 + mov bp, sp ; 89 e5 ; 0xf478f + push si ; 56 ; 0xf4791 + push di ; 57 ; 0xf4792 + sub sp, strict byte 00020h ; 83 ec 20 ; 0xf4793 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf4796 eltorito.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf4799 + mov es, ax ; 8e c0 ; 0xf479c + mov ax, word [es:bx] ; 26 8b 07 ; 0xf479e + mov si, 00122h ; be 22 01 ; 0xf47a1 eltorito.c:782 + mov word [bp-008h], ax ; 89 46 f8 ; 0xf47a4 + mov bx, strict word 00074h ; bb 74 00 ; 0xf47a7 eltorito.c:43 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf47aa + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf47ae eltorito.c:789 + xor ah, ah ; 30 e4 ; 0xf47b1 + cmp ax, 000e0h ; 3d e0 00 ; 0xf47b3 + jc short 047bdh ; 72 05 ; 0xf47b6 + cmp ax, 000f0h ; 3d f0 00 ; 0xf47b8 + jc short 047dbh ; 72 1e ; 0xf47bb + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf47bd eltorito.c:790 + xor ah, ah ; 30 e4 ; 0xf47c0 + push ax ; 50 ; 0xf47c2 + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf47c3 + shr ax, 008h ; c1 e8 08 ; 0xf47c6 + push ax ; 50 ; 0xf47c9 + push 0042ah ; 68 2a 04 ; 0xf47ca + push 00436h ; 68 36 04 ; 0xf47cd + push strict byte 00004h ; 6a 04 ; 0xf47d0 + call 018ffh ; e8 2a d1 ; 0xf47d2 + add sp, strict byte 0000ah ; 83 c4 0a ; 0xf47d5 + jmp near 04acah ; e9 ef 02 ; 0xf47d8 eltorito.c:791 + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf47db eltorito.c:795 + xor ah, ah ; 30 e4 ; 0xf47de + mov es, [bp-008h] ; 8e 46 f8 ; 0xf47e0 + mov bx, si ; 89 f3 ; 0xf47e3 + add bx, ax ; 01 c3 ; 0xf47e5 + mov dl, byte [es:bx+00114h] ; 26 8a 97 14 01 ; 0xf47e7 + mov byte [bp-006h], dl ; 88 56 fa ; 0xf47ec + cmp dl, 010h ; 80 fa 10 ; 0xf47ef eltorito.c:798 + jc short 04804h ; 72 10 ; 0xf47f2 + push ax ; 50 ; 0xf47f4 eltorito.c:799 + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf47f5 + shr ax, 008h ; c1 e8 08 ; 0xf47f8 + push ax ; 50 ; 0xf47fb + push 0042ah ; 68 2a 04 ; 0xf47fc + push 00461h ; 68 61 04 ; 0xf47ff + jmp short 047d0h ; eb cc ; 0xf4802 + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4804 eltorito.c:803 + shr ax, 008h ; c1 e8 08 ; 0xf4807 + cmp ax, strict word 00050h ; 3d 50 00 ; 0xf480a + jnbe short 0486fh ; 77 60 ; 0xf480d + push CS ; 0e ; 0xf480f + pop ES ; 07 ; 0xf4810 + mov cx, strict word 0001eh ; b9 1e 00 ; 0xf4811 + mov di, 04735h ; bf 35 47 ; 0xf4814 + repne scasb ; f2 ae ; 0xf4817 + sal cx, 1 ; d1 e1 ; 0xf4819 + mov di, cx ; 89 cf ; 0xf481b + mov dx, word [cs:di+04752h] ; 2e 8b 95 52 47 ; 0xf481d + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4822 + xor ah, ah ; 30 e4 ; 0xf4825 + jmp dx ; ff e2 ; 0xf4827 + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4829 eltorito.c:821 + xor ah, ah ; 30 e4 ; 0xf482c + or ah, 003h ; 80 cc 03 ; 0xf482e + jmp near 04ad2h ; e9 9e 02 ; 0xf4831 + mov bx, strict word 00074h ; bb 74 00 ; 0xf4834 eltorito.c:38 + mov dx, strict word 00040h ; ba 40 00 ; 0xf4837 + mov es, dx ; 8e c2 ; 0xf483a + mov cl, byte [es:bx] ; 26 8a 0f ; 0xf483c + mov dl, cl ; 88 ca ; 0xf483f eltorito.c:827 + xor dh, dh ; 30 f6 ; 0xf4841 + sal dx, 008h ; c1 e2 08 ; 0xf4843 + or ax, dx ; 09 d0 ; 0xf4846 + mov word [bp+018h], ax ; 89 46 18 ; 0xf4848 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf484b eltorito.c:43 + test cl, cl ; 84 c9 ; 0xf484f eltorito.c:831 + je short 0486ch ; 74 19 ; 0xf4851 + jmp near 04ae6h ; e9 90 02 ; 0xf4853 eltorito.c:832 + or ah, 002h ; 80 cc 02 ; 0xf4856 eltorito.c:838 + jmp near 04ad2h ; e9 76 02 ; 0xf4859 + mov word [bp+012h], 0aa55h ; c7 46 12 55 aa ; 0xf485c eltorito.c:843 + or ah, 030h ; 80 cc 30 ; 0xf4861 eltorito.c:844 + mov word [bp+018h], ax ; 89 46 18 ; 0xf4864 + mov word [bp+016h], strict word 00007h ; c7 46 16 07 00 ; 0xf4867 eltorito.c:845 + jmp near 04af0h ; e9 81 02 ; 0xf486c eltorito.c:846 + mov bx, 00da0h ; bb a0 0d ; 0xf486f + mov cx, ds ; 8c d9 ; 0xf4872 + mov ax, strict word 00004h ; b8 04 00 ; 0xf4874 + call 018bch ; e8 42 d0 ; 0xf4877 + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf487a + shr ax, 008h ; c1 e8 08 ; 0xf487d + push ax ; 50 ; 0xf4880 + push 0042ah ; 68 2a 04 ; 0xf4881 + push 00333h ; 68 33 03 ; 0xf4884 + push strict byte 00004h ; 6a 04 ; 0xf4887 + jmp short 048cbh ; eb 40 ; 0xf4889 + mov bx, word [bp+00ch] ; 8b 5e 0c ; 0xf488b eltorito.c:854 + mov es, [bp+006h] ; 8e 46 06 ; 0xf488e + mov word [bp-010h], bx ; 89 5e f0 ; 0xf4891 + mov [bp-00ch], es ; 8c 46 f4 ; 0xf4894 + mov di, word [es:bx+002h] ; 26 8b 7f 02 ; 0xf4897 eltorito.c:856 + mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf489b eltorito.c:857 + mov word [bp-016h], ax ; 89 46 ea ; 0xf489f + mov ax, word [es:bx+004h] ; 26 8b 47 04 ; 0xf48a2 eltorito.c:858 + mov word [bp-014h], ax ; 89 46 ec ; 0xf48a6 + mov ax, word [es:bx+00ch] ; 26 8b 47 0c ; 0xf48a9 eltorito.c:861 + mov word [bp-012h], ax ; 89 46 ee ; 0xf48ad + mov ax, word [es:bx+00eh] ; 26 8b 47 0e ; 0xf48b0 + mov word [bp-00ah], ax ; 89 46 f6 ; 0xf48b4 + or ax, word [bp-012h] ; 0b 46 ee ; 0xf48b7 eltorito.c:862 + je short 048d4h ; 74 18 ; 0xf48ba + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf48bc eltorito.c:863 + shr ax, 008h ; c1 e8 08 ; 0xf48bf + push ax ; 50 ; 0xf48c2 + push 0042ah ; 68 2a 04 ; 0xf48c3 + push 003afh ; 68 af 03 ; 0xf48c6 + push strict byte 00007h ; 6a 07 ; 0xf48c9 + call 018ffh ; e8 31 d0 ; 0xf48cb + add sp, strict byte 00008h ; 83 c4 08 ; 0xf48ce + jmp near 04acah ; e9 f6 01 ; 0xf48d1 eltorito.c:864 + mov es, [bp-00ch] ; 8e 46 f4 ; 0xf48d4 eltorito.c:868 + mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf48d7 + mov ax, word [es:bx+008h] ; 26 8b 47 08 ; 0xf48da + mov word [bp-012h], ax ; 89 46 ee ; 0xf48de + mov ax, word [es:bx+00ah] ; 26 8b 47 0a ; 0xf48e1 + mov word [bp-00ah], ax ; 89 46 f6 ; 0xf48e5 + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf48e8 eltorito.c:871 + shr ax, 008h ; c1 e8 08 ; 0xf48eb + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf48ee + cmp ax, strict word 00044h ; 3d 44 00 ; 0xf48f1 + je short 048fbh ; 74 05 ; 0xf48f4 + cmp ax, strict word 00047h ; 3d 47 00 ; 0xf48f6 + jne short 048feh ; 75 03 ; 0xf48f9 + jmp near 04aech ; e9 ee 01 ; 0xf48fb eltorito.c:872 + mov cx, strict word 0000ch ; b9 0c 00 ; 0xf48fe eltorito.c:877 + xor bx, bx ; 31 db ; 0xf4901 + mov dx, ss ; 8c d2 ; 0xf4903 + lea ax, [bp-024h] ; 8d 46 dc ; 0xf4905 + call 09bb0h ; e8 a5 52 ; 0xf4908 + mov word [bp-024h], strict word 00028h ; c7 46 dc 28 00 ; 0xf490b eltorito.c:878 + mov ax, word [bp-012h] ; 8b 46 ee ; 0xf4910 eltorito.c:879 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf4913 + xchg ah, al ; 86 c4 ; 0xf4916 + xchg dh, dl ; 86 d6 ; 0xf4918 + xchg dx, ax ; 92 ; 0xf491a + mov word [bp-022h], ax ; 89 46 de ; 0xf491b + mov word [bp-020h], dx ; 89 56 e0 ; 0xf491e + mov ax, di ; 89 f8 ; 0xf4921 eltorito.c:880 + xchg ah, al ; 86 c4 ; 0xf4923 + mov word [bp-01dh], ax ; 89 46 e3 ; 0xf4925 + mov es, [bp-008h] ; 8e 46 f8 ; 0xf4928 eltorito.c:882 + mov word [es:si+00eh], di ; 26 89 7c 0e ; 0xf492b + mov word [es:si+010h], 00800h ; 26 c7 44 10 00 08 ; 0xf492f eltorito.c:883 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf4935 eltorito.c:885 + xor ah, ah ; 30 e4 ; 0xf4938 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf493a + mov bx, si ; 89 f3 ; 0xf493d + add bx, ax ; 01 c3 ; 0xf493f + mov al, byte [es:bx+022h] ; 26 8a 47 22 ; 0xf4941 + xor ah, ah ; 30 e4 ; 0xf4945 + add ax, ax ; 01 c0 ; 0xf4947 + mov word [bp-018h], ax ; 89 46 e8 ; 0xf4949 + push word [bp-016h] ; ff 76 ea ; 0xf494c + push word [bp-014h] ; ff 76 ec ; 0xf494f + push strict byte 00001h ; 6a 01 ; 0xf4952 + mov ax, di ; 89 f8 ; 0xf4954 + xor bx, bx ; 31 db ; 0xf4956 + mov cx, strict word 0000bh ; b9 0b 00 ; 0xf4958 + sal ax, 1 ; d1 e0 ; 0xf495b + rcl bx, 1 ; d1 d3 ; 0xf495d + loop 0495bh ; e2 fa ; 0xf495f + push bx ; 53 ; 0xf4961 + push ax ; 50 ; 0xf4962 + push strict byte 00000h ; 6a 00 ; 0xf4963 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf4965 + xor ah, ah ; 30 e4 ; 0xf4968 + mov cx, ss ; 8c d1 ; 0xf496a + lea bx, [bp-024h] ; 8d 5e dc ; 0xf496c + mov dx, strict word 0000ch ; ba 0c 00 ; 0xf496f + mov di, word [bp-018h] ; 8b 7e e8 ; 0xf4972 + call word [word di+0006ah] ; ff 95 6a 00 ; 0xf4975 + mov dx, ax ; 89 c2 ; 0xf4979 + mov es, [bp-008h] ; 8e 46 f8 ; 0xf497b eltorito.c:887 + mov ax, word [es:si+01ah] ; 26 8b 44 1a ; 0xf497e + mov bx, word [es:si+01ch] ; 26 8b 5c 1c ; 0xf4982 + mov cx, strict word 0000bh ; b9 0b 00 ; 0xf4986 + shr bx, 1 ; d1 eb ; 0xf4989 + rcr ax, 1 ; d1 d8 ; 0xf498b + loop 04989h ; e2 fa ; 0xf498d + mov es, [bp-00ch] ; 8e 46 f4 ; 0xf498f eltorito.c:888 + mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf4992 + mov word [es:bx+002h], ax ; 26 89 47 02 ; 0xf4995 + test dl, dl ; 84 d2 ; 0xf4999 eltorito.c:890 + je short 04a06h ; 74 69 ; 0xf499b + mov bx, 00da0h ; bb a0 0d ; 0xf499d eltorito.c:891 + mov cx, ds ; 8c d9 ; 0xf49a0 + mov ax, strict word 00004h ; b8 04 00 ; 0xf49a2 + call 018bch ; e8 14 cf ; 0xf49a5 + mov al, dl ; 88 d0 ; 0xf49a8 + xor ah, ah ; 30 e4 ; 0xf49aa + push ax ; 50 ; 0xf49ac + push word [bp-00eh] ; ff 76 f2 ; 0xf49ad + push 0042ah ; 68 2a 04 ; 0xf49b0 + push 003d8h ; 68 d8 03 ; 0xf49b3 + push strict byte 00004h ; 6a 04 ; 0xf49b6 + call 018ffh ; e8 44 cf ; 0xf49b8 + add sp, strict byte 0000ah ; 83 c4 0a ; 0xf49bb + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf49be eltorito.c:892 + xor ah, ah ; 30 e4 ; 0xf49c1 + or ah, 00ch ; 80 cc 0c ; 0xf49c3 + jmp near 04ad2h ; e9 09 01 ; 0xf49c6 + cmp ax, strict word 00002h ; 3d 02 00 ; 0xf49c9 eltorito.c:900 + jnbe short 04a38h ; 77 6a ; 0xf49cc + mov dl, byte [bp-006h] ; 8a 56 fa ; 0xf49ce eltorito.c:903 + xor dh, dh ; 30 f6 ; 0xf49d1 + imul dx, dx, strict byte 0001ch ; 6b d2 1c ; 0xf49d3 + mov es, [bp-008h] ; 8e 46 f8 ; 0xf49d6 + mov bx, si ; 89 f3 ; 0xf49d9 + add bx, dx ; 01 d3 ; 0xf49db + mov bl, byte [es:bx+025h] ; 26 8a 5f 25 ; 0xf49dd + cmp ax, strict word 00002h ; 3d 02 00 ; 0xf49e1 eltorito.c:905 + je short 04a3bh ; 74 55 ; 0xf49e4 + cmp ax, strict word 00001h ; 3d 01 00 ; 0xf49e6 + je short 04a28h ; 74 3d ; 0xf49e9 + test ax, ax ; 85 c0 ; 0xf49eb + jne short 04a25h ; 75 36 ; 0xf49ed + cmp bl, 0ffh ; 80 fb ff ; 0xf49ef eltorito.c:907 + jne short 04a08h ; 75 14 ; 0xf49f2 + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf49f4 eltorito.c:908 + xor ah, ah ; 30 e4 ; 0xf49f7 + or ah, 0b4h ; 80 cc b4 ; 0xf49f9 + mov word [bp+018h], ax ; 89 46 18 ; 0xf49fc + xor al, al ; 30 c0 ; 0xf49ff eltorito.c:909 + or AL, strict byte 001h ; 0c 01 ; 0xf4a01 + jmp near 04ad2h ; e9 cc 00 ; 0xf4a03 + jmp short 04a25h ; eb 1d ; 0xf4a06 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf4a08 eltorito.c:911 + xor ah, ah ; 30 e4 ; 0xf4a0b + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf4a0d + db 0feh, 0c3h + ; inc bl ; fe c3 ; 0xf4a10 eltorito.c:912 + mov es, [bp-008h] ; 8e 46 f8 ; 0xf4a12 + add si, ax ; 01 c6 ; 0xf4a15 + mov byte [es:si+025h], bl ; 26 88 5c 25 ; 0xf4a17 + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4a1b eltorito.c:913 + xor al, al ; 30 c0 ; 0xf4a1e + or AL, strict byte 001h ; 0c 01 ; 0xf4a20 + mov word [bp+018h], ax ; 89 46 18 ; 0xf4a22 + jmp near 04aech ; e9 c4 00 ; 0xf4a25 eltorito.c:914 + test bl, bl ; 84 db ; 0xf4a28 eltorito.c:916 + jne short 04a3dh ; 75 11 ; 0xf4a2a + or ah, 0b0h ; 80 cc b0 ; 0xf4a2c eltorito.c:917 + mov word [bp+018h], ax ; 89 46 18 ; 0xf4a2f + mov byte [bp+018h], bl ; 88 5e 18 ; 0xf4a32 eltorito.c:918 + jmp near 04ad5h ; e9 9d 00 ; 0xf4a35 eltorito.c:919 + jmp near 04acah ; e9 8f 00 ; 0xf4a38 + jmp short 04a67h ; eb 2a ; 0xf4a3b + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf4a3d eltorito.c:920 + xor ah, ah ; 30 e4 ; 0xf4a40 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf4a42 + db 0feh, 0cbh + ; dec bl ; fe cb ; 0xf4a45 eltorito.c:921 + mov es, [bp-008h] ; 8e 46 f8 ; 0xf4a47 + add si, ax ; 01 c6 ; 0xf4a4a + mov byte [es:si+025h], bl ; 26 88 5c 25 ; 0xf4a4c + test bl, bl ; 84 db ; 0xf4a50 eltorito.c:922 + jne short 04a58h ; 75 04 ; 0xf4a52 + xor ax, ax ; 31 c0 ; 0xf4a54 + jmp short 04a5bh ; eb 03 ; 0xf4a56 + mov ax, strict word 00001h ; b8 01 00 ; 0xf4a58 + mov dx, word [bp+018h] ; 8b 56 18 ; 0xf4a5b + xor dl, dl ; 30 d2 ; 0xf4a5e + or dx, ax ; 09 c2 ; 0xf4a60 + mov word [bp+018h], dx ; 89 56 18 ; 0xf4a62 + jmp short 04a25h ; eb be ; 0xf4a65 eltorito.c:923 + test bl, bl ; 84 db ; 0xf4a67 eltorito.c:925 + jne short 04a58h ; 75 ed ; 0xf4a69 + xor al, al ; 30 c0 ; 0xf4a6b + jmp short 04a5bh ; eb ec ; 0xf4a6d + mov dl, byte [bp-006h] ; 8a 56 fa ; 0xf4a6f eltorito.c:932 + xor dh, dh ; 30 f6 ; 0xf4a72 + imul dx, dx, strict byte 0001ch ; 6b d2 1c ; 0xf4a74 + mov es, [bp-008h] ; 8e 46 f8 ; 0xf4a77 + mov bx, si ; 89 f3 ; 0xf4a7a + add bx, dx ; 01 d3 ; 0xf4a7c + mov bl, byte [es:bx+025h] ; 26 8a 5f 25 ; 0xf4a7e + test bl, bl ; 84 db ; 0xf4a82 eltorito.c:934 + je short 04a8bh ; 74 05 ; 0xf4a84 + or ah, 0b1h ; 80 cc b1 ; 0xf4a86 eltorito.c:935 + jmp short 04ad2h ; eb 47 ; 0xf4a89 + je short 04aech ; 74 5f ; 0xf4a8b eltorito.c:957 + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4a8d eltorito.c:958 + xor ah, ah ; 30 e4 ; 0xf4a90 + jmp short 04a86h ; eb f2 ; 0xf4a92 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf4a94 eltorito.c:966 + push ax ; 50 ; 0xf4a97 + mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf4a98 + mov dx, word [bp+006h] ; 8b 56 06 ; 0xf4a9b + mov bx, si ; 89 f3 ; 0xf4a9e + mov cx, word [bp-008h] ; 8b 4e f8 ; 0xf4aa0 + call 05965h ; e8 bf 0e ; 0xf4aa3 + test ax, ax ; 85 c0 ; 0xf4aa6 + je short 04aech ; 74 42 ; 0xf4aa8 + jmp short 04acah ; eb 1e ; 0xf4aaa eltorito.c:967 + or ah, 006h ; 80 cc 06 ; 0xf4aac eltorito.c:974 + mov word [bp+018h], ax ; 89 46 18 ; 0xf4aaf + jmp short 04ae6h ; eb 32 ; 0xf4ab2 eltorito.c:975 + cmp ax, strict word 00006h ; 3d 06 00 ; 0xf4ab4 eltorito.c:980 + je short 04aech ; 74 33 ; 0xf4ab7 + cmp ax, strict word 00001h ; 3d 01 00 ; 0xf4ab9 + jc short 04acah ; 72 0c ; 0xf4abc + jbe short 04aech ; 76 2c ; 0xf4abe + cmp ax, strict word 00003h ; 3d 03 00 ; 0xf4ac0 + jc short 04acah ; 72 05 ; 0xf4ac3 + cmp ax, strict word 00004h ; 3d 04 00 ; 0xf4ac5 + jbe short 04aech ; 76 22 ; 0xf4ac8 + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4aca eltorito.c:1007 + xor ah, ah ; 30 e4 ; 0xf4acd + or ah, 001h ; 80 cc 01 ; 0xf4acf + mov word [bp+018h], ax ; 89 46 18 ; 0xf4ad2 + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4ad5 eltorito.c:1009 + shr ax, 008h ; c1 e8 08 ; 0xf4ad8 + mov bx, strict word 00074h ; bb 74 00 ; 0xf4adb eltorito.c:43 + mov dx, strict word 00040h ; ba 40 00 ; 0xf4ade + mov es, dx ; 8e c2 ; 0xf4ae1 + mov byte [es:bx], al ; 26 88 07 ; 0xf4ae3 + or byte [bp+01eh], 001h ; 80 4e 1e 01 ; 0xf4ae6 eltorito.c:1011 + jmp short 04b00h ; eb 14 ; 0xf4aea eltorito.c:1012 + mov byte [bp+019h], 000h ; c6 46 19 00 ; 0xf4aec eltorito.c:1015 + mov bx, strict word 00074h ; bb 74 00 ; 0xf4af0 eltorito.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf4af3 + mov es, ax ; 8e c0 ; 0xf4af6 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf4af8 + and byte [bp+01eh], 0feh ; 80 66 1e fe ; 0xf4afc eltorito.c:1018 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf4b00 eltorito.c:1020 + pop di ; 5f ; 0xf4b03 + pop si ; 5e ; 0xf4b04 + pop bp ; 5d ; 0xf4b05 + retn ; c3 ; 0xf4b06 + ; disGetNextSymbol 0xf4b07 LB 0x53c1 -> off=0x0 cb=000000000000004b uValue=00000000000f3507 'print_boot_device' +print_boot_device: ; 0xf4b07 LB 0x4b + push bp ; 55 ; 0xf4b07 boot.c:109 + mov bp, sp ; 89 e5 ; 0xf4b08 + push cx ; 51 ; 0xf4b0a + test al, al ; 84 c0 ; 0xf4b0b boot.c:117 + je short 04b14h ; 74 05 ; 0xf4b0d + mov dx, strict word 00002h ; ba 02 00 ; 0xf4b0f + jmp short 04b2eh ; eb 1a ; 0xf4b12 boot.c:118 + test dl, dl ; 84 d2 ; 0xf4b14 + je short 04b1dh ; 74 05 ; 0xf4b16 + mov dx, strict word 00003h ; ba 03 00 ; 0xf4b18 + jmp short 04b2eh ; eb 11 ; 0xf4b1b boot.c:119 + test bl, 080h ; f6 c3 80 ; 0xf4b1d + jne short 04b26h ; 75 04 ; 0xf4b20 + xor dh, dh ; 30 f6 ; 0xf4b22 + jmp short 04b2eh ; eb 08 ; 0xf4b24 boot.c:120 + test bl, 080h ; f6 c3 80 ; 0xf4b26 + je short 04b4ch ; 74 21 ; 0xf4b29 + mov dx, strict word 00001h ; ba 01 00 ; 0xf4b2b + mov bx, 00da0h ; bb a0 0d ; 0xf4b2e boot.c:123 + mov cx, ds ; 8c d9 ; 0xf4b31 + mov ax, strict word 00004h ; b8 04 00 ; 0xf4b33 + call 018bch ; e8 83 cd ; 0xf4b36 + imul dx, dx, strict byte 0000ah ; 6b d2 0a ; 0xf4b39 + add dx, 00dc6h ; 81 c2 c6 0d ; 0xf4b3c + push dx ; 52 ; 0xf4b40 + push 00494h ; 68 94 04 ; 0xf4b41 + push strict byte 00004h ; 6a 04 ; 0xf4b44 + call 018ffh ; e8 b6 cd ; 0xf4b46 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf4b49 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf4b4c boot.c:124 + pop cx ; 59 ; 0xf4b4f + pop bp ; 5d ; 0xf4b50 + retn ; c3 ; 0xf4b51 + ; disGetNextSymbol 0xf4b52 LB 0x5376 -> off=0x0 cb=0000000000000096 uValue=00000000000f3552 'print_boot_failure' +print_boot_failure: ; 0xf4b52 LB 0x96 + push bp ; 55 ; 0xf4b52 boot.c:131 + mov bp, sp ; 89 e5 ; 0xf4b53 + push si ; 56 ; 0xf4b55 + mov ah, dl ; 88 d4 ; 0xf4b56 + mov dl, cl ; 88 ca ; 0xf4b58 + mov cl, bl ; 88 d9 ; 0xf4b5a boot.c:134 + and cl, 07fh ; 80 e1 7f ; 0xf4b5c + xor ch, ch ; 30 ed ; 0xf4b5f + mov si, cx ; 89 ce ; 0xf4b61 + test al, al ; 84 c0 ; 0xf4b63 boot.c:142 + je short 04b82h ; 74 1b ; 0xf4b65 + mov bx, 00da0h ; bb a0 0d ; 0xf4b67 boot.c:143 + mov cx, ds ; 8c d9 ; 0xf4b6a + mov ax, strict word 00004h ; b8 04 00 ; 0xf4b6c + call 018bch ; e8 4a cd ; 0xf4b6f + push 00ddah ; 68 da 0d ; 0xf4b72 + push 004a8h ; 68 a8 04 ; 0xf4b75 + push strict byte 00004h ; 6a 04 ; 0xf4b78 + call 018ffh ; e8 82 cd ; 0xf4b7a + add sp, strict byte 00006h ; 83 c4 06 ; 0xf4b7d + jmp short 04bc6h ; eb 44 ; 0xf4b80 boot.c:144 + test ah, ah ; 84 e4 ; 0xf4b82 + je short 04b96h ; 74 10 ; 0xf4b84 + mov bx, 00da0h ; bb a0 0d ; 0xf4b86 boot.c:145 + mov cx, ds ; 8c d9 ; 0xf4b89 + mov ax, strict word 00004h ; b8 04 00 ; 0xf4b8b + call 018bch ; e8 2b cd ; 0xf4b8e + push 00de4h ; 68 e4 0d ; 0xf4b91 + jmp short 04b75h ; eb df ; 0xf4b94 + test bl, 080h ; f6 c3 80 ; 0xf4b96 boot.c:146 + je short 04bach ; 74 11 ; 0xf4b99 + mov bx, 00da0h ; bb a0 0d ; 0xf4b9b boot.c:147 + mov cx, ds ; 8c d9 ; 0xf4b9e + mov ax, strict word 00004h ; b8 04 00 ; 0xf4ba0 + call 018bch ; e8 16 cd ; 0xf4ba3 + push si ; 56 ; 0xf4ba6 + push 00dd0h ; 68 d0 0d ; 0xf4ba7 + jmp short 04bbbh ; eb 0f ; 0xf4baa boot.c:148 + mov bx, 00da0h ; bb a0 0d ; 0xf4bac boot.c:149 + mov cx, ds ; 8c d9 ; 0xf4baf + mov ax, strict word 00004h ; b8 04 00 ; 0xf4bb1 + call 018bch ; e8 05 cd ; 0xf4bb4 + push si ; 56 ; 0xf4bb7 + push 00dc6h ; 68 c6 0d ; 0xf4bb8 + push 004bdh ; 68 bd 04 ; 0xf4bbb + push strict byte 00004h ; 6a 04 ; 0xf4bbe + call 018ffh ; e8 3c cd ; 0xf4bc0 + add sp, strict byte 00008h ; 83 c4 08 ; 0xf4bc3 + cmp byte [bp+004h], 001h ; 80 7e 04 01 ; 0xf4bc6 boot.c:151 + jne short 04be0h ; 75 14 ; 0xf4bca + test dl, dl ; 84 d2 ; 0xf4bcc boot.c:152 + jne short 04bd5h ; 75 05 ; 0xf4bce + push 004d5h ; 68 d5 04 ; 0xf4bd0 boot.c:153 + jmp short 04bd8h ; eb 03 ; 0xf4bd3 boot.c:154 + push 004ffh ; 68 ff 04 ; 0xf4bd5 boot.c:155 + push strict byte 00007h ; 6a 07 ; 0xf4bd8 + call 018ffh ; e8 22 cd ; 0xf4bda + add sp, strict byte 00004h ; 83 c4 04 ; 0xf4bdd + lea sp, [bp-002h] ; 8d 66 fe ; 0xf4be0 boot.c:157 + pop si ; 5e ; 0xf4be3 + pop bp ; 5d ; 0xf4be4 + retn 00002h ; c2 02 00 ; 0xf4be5 + ; disGetNextSymbol 0xf4be8 LB 0x52e0 -> off=0x0 cb=0000000000000027 uValue=00000000000f35e8 'print_cdromboot_failure' +print_cdromboot_failure: ; 0xf4be8 LB 0x27 + push bp ; 55 ; 0xf4be8 boot.c:163 + mov bp, sp ; 89 e5 ; 0xf4be9 + push bx ; 53 ; 0xf4beb + push cx ; 51 ; 0xf4bec + push dx ; 52 ; 0xf4bed + mov dx, ax ; 89 c2 ; 0xf4bee + mov bx, 00da0h ; bb a0 0d ; 0xf4bf0 boot.c:165 + mov cx, ds ; 8c d9 ; 0xf4bf3 + mov ax, strict word 00004h ; b8 04 00 ; 0xf4bf5 + call 018bch ; e8 c1 cc ; 0xf4bf8 + push dx ; 52 ; 0xf4bfb + push 00534h ; 68 34 05 ; 0xf4bfc + push strict byte 00004h ; 6a 04 ; 0xf4bff + call 018ffh ; e8 fb cc ; 0xf4c01 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf4c04 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf4c07 boot.c:167 + pop dx ; 5a ; 0xf4c0a + pop cx ; 59 ; 0xf4c0b + pop bx ; 5b ; 0xf4c0c + pop bp ; 5d ; 0xf4c0d + retn ; c3 ; 0xf4c0e + ; disGetNextSymbol 0xf4c0f LB 0x52b9 -> off=0x0 cb=000000000000025b uValue=00000000000f360f 'int19_function' +int19_function: ; 0xf4c0f LB 0x25b + push bp ; 55 ; 0xf4c0f boot.c:170 + mov bp, sp ; 89 e5 ; 0xf4c10 + push si ; 56 ; 0xf4c12 + push di ; 57 ; 0xf4c13 + sub sp, strict byte 0000ch ; 83 ec 0c ; 0xf4c14 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf4c17 boot.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf4c1a + mov es, ax ; 8e c0 ; 0xf4c1d + mov cx, word [es:bx] ; 26 8b 0f ; 0xf4c1f + mov di, cx ; 89 cf ; 0xf4c22 boot.c:49 + mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf4c24 boot.c:181 + mov ax, strict word 0003dh ; b8 3d 00 ; 0xf4c28 boot.c:204 + call 01650h ; e8 22 ca ; 0xf4c2b + mov dl, al ; 88 c2 ; 0xf4c2e + xor dh, dh ; 30 f6 ; 0xf4c30 + mov ax, strict word 00038h ; b8 38 00 ; 0xf4c32 boot.c:205 + call 01650h ; e8 18 ca ; 0xf4c35 + and AL, strict byte 0f0h ; 24 f0 ; 0xf4c38 + xor ah, ah ; 30 e4 ; 0xf4c3a + sal ax, 004h ; c1 e0 04 ; 0xf4c3c + or dx, ax ; 09 c2 ; 0xf4c3f + mov ax, strict word 0003ch ; b8 3c 00 ; 0xf4c41 boot.c:206 + call 01650h ; e8 09 ca ; 0xf4c44 + and AL, strict byte 00fh ; 24 0f ; 0xf4c47 + xor ah, ah ; 30 e4 ; 0xf4c49 + sal ax, 00ch ; c1 e0 0c ; 0xf4c4b + or dx, ax ; 09 c2 ; 0xf4c4e + mov bx, 0037dh ; bb 7d 03 ; 0xf4c50 boot.c:38 + mov es, cx ; 8e c1 ; 0xf4c53 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf4c55 + test al, al ; 84 c0 ; 0xf4c58 boot.c:39 + je short 04c60h ; 74 04 ; 0xf4c5a + mov dl, al ; 88 c2 ; 0xf4c5c boot.c:38 + xor dh, dh ; 30 f6 ; 0xf4c5e boot.c:39 + cmp byte [bp+004h], 001h ; 80 7e 04 01 ; 0xf4c60 boot.c:210 + jne short 04c76h ; 75 10 ; 0xf4c64 + mov ax, strict word 0003ch ; b8 3c 00 ; 0xf4c66 boot.c:211 + call 01650h ; e8 e4 c9 ; 0xf4c69 + and AL, strict byte 0f0h ; 24 f0 ; 0xf4c6c + xor ah, ah ; 30 e4 ; 0xf4c6e + sar ax, 004h ; c1 f8 04 ; 0xf4c70 + call 0787eh ; e8 08 2c ; 0xf4c73 + cmp byte [bp+004h], 002h ; 80 7e 04 02 ; 0xf4c76 boot.c:213 + jne short 04c7fh ; 75 03 ; 0xf4c7a + shr dx, 004h ; c1 ea 04 ; 0xf4c7c + cmp byte [bp+004h], 003h ; 80 7e 04 03 ; 0xf4c7f boot.c:214 + jne short 04c88h ; 75 03 ; 0xf4c83 + shr dx, 008h ; c1 ea 08 ; 0xf4c85 + cmp byte [bp+004h], 004h ; 80 7e 04 04 ; 0xf4c88 boot.c:215 + jne short 04c91h ; 75 03 ; 0xf4c8c + shr dx, 00ch ; c1 ea 0c ; 0xf4c8e + cmp dx, strict byte 00010h ; 83 fa 10 ; 0xf4c91 boot.c:216 + jnc short 04c9ah ; 73 04 ; 0xf4c94 + mov byte [bp-00ch], 001h ; c6 46 f4 01 ; 0xf4c96 + xor al, al ; 30 c0 ; 0xf4c9a boot.c:217 + mov byte [bp-006h], al ; 88 46 fa ; 0xf4c9c + mov byte [bp-008h], al ; 88 46 f8 ; 0xf4c9f + mov byte [bp-00ah], al ; 88 46 f6 ; 0xf4ca2 boot.c:218 + mov bx, 00da0h ; bb a0 0d ; 0xf4ca5 boot.c:219 + mov cx, ds ; 8c d9 ; 0xf4ca8 + mov ax, strict word 00004h ; b8 04 00 ; 0xf4caa + call 018bch ; e8 0c cc ; 0xf4cad + push dx ; 52 ; 0xf4cb0 + mov al, byte [bp+004h] ; 8a 46 04 ; 0xf4cb1 + xor ah, ah ; 30 e4 ; 0xf4cb4 + push ax ; 50 ; 0xf4cb6 + push 00554h ; 68 54 05 ; 0xf4cb7 + push strict byte 00004h ; 6a 04 ; 0xf4cba + call 018ffh ; e8 40 cc ; 0xf4cbc + add sp, strict byte 00008h ; 83 c4 08 ; 0xf4cbf + and dx, strict byte 0000fh ; 83 e2 0f ; 0xf4cc2 boot.c:221 + cmp dx, strict byte 00002h ; 83 fa 02 ; 0xf4cc5 + jc short 04cd8h ; 72 0e ; 0xf4cc8 + jbe short 04ce7h ; 76 1b ; 0xf4cca + cmp dx, strict byte 00004h ; 83 fa 04 ; 0xf4ccc + je short 04d03h ; 74 32 ; 0xf4ccf + cmp dx, strict byte 00003h ; 83 fa 03 ; 0xf4cd1 + je short 04cf9h ; 74 23 ; 0xf4cd4 + jmp short 04d32h ; eb 5a ; 0xf4cd6 + cmp dx, strict byte 00001h ; 83 fa 01 ; 0xf4cd8 + jne short 04d32h ; 75 55 ; 0xf4cdb + xor al, al ; 30 c0 ; 0xf4cdd boot.c:223 + mov byte [bp-006h], al ; 88 46 fa ; 0xf4cdf + mov byte [bp-008h], al ; 88 46 f8 ; 0xf4ce2 boot.c:224 + jmp short 04d47h ; eb 60 ; 0xf4ce5 boot.c:225 + mov bx, 0037ch ; bb 7c 03 ; 0xf4ce7 boot.c:38 + mov es, di ; 8e c7 ; 0xf4cea + mov al, byte [es:bx] ; 26 8a 07 ; 0xf4cec + add AL, strict byte 080h ; 04 80 ; 0xf4cef boot.c:231 + mov byte [bp-006h], al ; 88 46 fa ; 0xf4cf1 + mov byte [bp-008h], dh ; 88 76 f8 ; 0xf4cf4 boot.c:232 + jmp short 04d47h ; eb 4e ; 0xf4cf7 boot.c:233 + mov byte [bp-006h], 000h ; c6 46 fa 00 ; 0xf4cf9 boot.c:236 + mov byte [bp-008h], 001h ; c6 46 f8 01 ; 0xf4cfd boot.c:237 + jmp short 04d0dh ; eb 0a ; 0xf4d01 boot.c:238 + mov byte [bp-00ah], 001h ; c6 46 f6 01 ; 0xf4d03 boot.c:239 + cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf4d07 boot.c:255 + je short 04d47h ; 74 3a ; 0xf4d0b + call 03d33h ; e8 23 f0 ; 0xf4d0d boot.c:256 + mov dx, ax ; 89 c2 ; 0xf4d10 + test AL, strict byte 0ffh ; a8 ff ; 0xf4d12 boot.c:259 + je short 04d39h ; 74 23 ; 0xf4d14 + call 04be8h ; e8 cf fe ; 0xf4d16 boot.c:260 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf4d19 boot.c:261 + xor ah, ah ; 30 e4 ; 0xf4d1c + push ax ; 50 ; 0xf4d1e + mov bl, byte [bp-006h] ; 8a 5e fa ; 0xf4d1f + xor bh, bh ; 30 ff ; 0xf4d22 + mov dl, byte [bp-00ah] ; 8a 56 f6 ; 0xf4d24 + xor dh, dh ; 30 f6 ; 0xf4d27 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf4d29 + mov cx, strict word 00001h ; b9 01 00 ; 0xf4d2c + call 04b52h ; e8 20 fe ; 0xf4d2f + xor ax, ax ; 31 c0 ; 0xf4d32 + xor dx, dx ; 31 d2 ; 0xf4d34 + jmp near 04e63h ; e9 2a 01 ; 0xf4d36 + mov bx, 00372h ; bb 72 03 ; 0xf4d39 boot.c:48 + mov es, di ; 8e c7 ; 0xf4d3c + mov si, word [es:bx] ; 26 8b 37 ; 0xf4d3e + shr dx, 008h ; c1 ea 08 ; 0xf4d41 boot.c:266 + mov byte [bp-006h], dl ; 88 56 fa ; 0xf4d44 + cmp byte [bp-00ah], 001h ; 80 7e f6 01 ; 0xf4d47 boot.c:272 + jne short 04da2h ; 75 55 ; 0xf4d4b + xor si, si ; 31 f6 ; 0xf4d4d boot.c:275 + mov ax, 0e200h ; b8 00 e2 ; 0xf4d4f + mov es, ax ; 8e c0 ; 0xf4d52 + cmp word [es:si], 0aa55h ; 26 81 3c 55 aa ; 0xf4d54 boot.c:276 + jne short 04d19h ; 75 be ; 0xf4d59 + mov cx, ax ; 89 c1 ; 0xf4d5b boot.c:282 + mov si, word [es:si+01ah] ; 26 8b 74 1a ; 0xf4d5d + cmp word [es:si+002h], 0506eh ; 26 81 7c 02 6e 50 ; 0xf4d61 boot.c:283 + jne short 04d19h ; 75 b0 ; 0xf4d67 + cmp word [es:si], 05024h ; 26 81 3c 24 50 ; 0xf4d69 + jne short 04d19h ; 75 a9 ; 0xf4d6e + mov bx, word [es:si+00eh] ; 26 8b 5c 0e ; 0xf4d70 boot.c:285 + mov dx, word [es:bx] ; 26 8b 17 ; 0xf4d74 + mov ax, word [es:bx+002h] ; 26 8b 47 02 ; 0xf4d77 + cmp ax, 06568h ; 3d 68 65 ; 0xf4d7b boot.c:286 + jne short 04da4h ; 75 24 ; 0xf4d7e + cmp dx, 07445h ; 81 fa 45 74 ; 0xf4d80 + jne short 04da4h ; 75 1e ; 0xf4d84 + mov bl, byte [bp-006h] ; 8a 5e fa ; 0xf4d86 boot.c:288 + xor bh, bh ; 30 ff ; 0xf4d89 + mov dl, byte [bp-00ah] ; 8a 56 f6 ; 0xf4d8b + xor dh, dh ; 30 f6 ; 0xf4d8e + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf4d90 + xor ah, ah ; 30 e4 ; 0xf4d93 + call 04b07h ; e8 6f fd ; 0xf4d95 + mov word [bp-010h], strict word 00006h ; c7 46 f0 06 00 ; 0xf4d98 boot.c:289 + mov word [bp-00eh], cx ; 89 4e f2 ; 0xf4d9d + jmp short 04dc3h ; eb 21 ; 0xf4da0 boot.c:292 + jmp short 04dc9h ; eb 25 ; 0xf4da2 + mov bl, byte [bp-006h] ; 8a 5e fa ; 0xf4da4 boot.c:295 + xor bh, bh ; 30 ff ; 0xf4da7 + mov dl, byte [bp-00ah] ; 8a 56 f6 ; 0xf4da9 + xor dh, dh ; 30 f6 ; 0xf4dac + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf4dae + xor ah, ah ; 30 e4 ; 0xf4db1 + call 04b07h ; e8 51 fd ; 0xf4db3 + sti ; fb ; 0xf4db6 boot.c:296 + mov word [bp-00eh], cx ; 89 4e f2 ; 0xf4db7 boot.c:297 + mov es, cx ; 8e c1 ; 0xf4dba + mov ax, word [es:si+01ah] ; 26 8b 44 1a ; 0xf4dbc + mov word [bp-010h], ax ; 89 46 f0 ; 0xf4dc0 + call far [bp-010h] ; ff 5e f0 ; 0xf4dc3 boot.c:298 + jmp near 04d19h ; e9 50 ff ; 0xf4dc6 boot.c:301 + cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf4dc9 boot.c:309 + jne short 04df6h ; 75 27 ; 0xf4dcd + cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf4dcf + jne short 04df6h ; 75 21 ; 0xf4dd3 + mov si, 007c0h ; be c0 07 ; 0xf4dd5 boot.c:310 + mov es, si ; 8e c6 ; 0xf4dd8 boot.c:312 + mov dl, byte [bp-006h] ; 8a 56 fa ; 0xf4dda + mov ax, 00201h ; b8 01 02 ; 0xf4ddd + mov DH, strict byte 000h ; b6 00 ; 0xf4de0 + mov cx, strict word 00001h ; b9 01 00 ; 0xf4de2 + db 033h, 0dbh + ; xor bx, bx ; 33 db ; 0xf4de5 + int 013h ; cd 13 ; 0xf4de7 + mov ax, strict word 00000h ; b8 00 00 ; 0xf4de9 + sbb ax, strict byte 00000h ; 83 d8 00 ; 0xf4dec + test ax, ax ; 85 c0 ; 0xf4def boot.c:313 + je short 04df6h ; 74 03 ; 0xf4df1 + jmp near 04d19h ; e9 23 ff ; 0xf4df3 + cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf4df6 boot.c:328 + je short 04e00h ; 74 04 ; 0xf4dfa + xor al, al ; 30 c0 ; 0xf4dfc + jmp short 04e02h ; eb 02 ; 0xf4dfe boot.c:329 + mov AL, strict byte 001h ; b0 01 ; 0xf4e00 + cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf4e02 boot.c:333 + je short 04e0ah ; 74 02 ; 0xf4e06 + mov AL, strict byte 001h ; b0 01 ; 0xf4e08 boot.c:334 + xor bx, bx ; 31 db ; 0xf4e0a boot.c:48 + mov es, si ; 8e c6 ; 0xf4e0c + mov cx, word [es:bx] ; 26 8b 0f ; 0xf4e0e + mov bx, strict word 00004h ; bb 04 00 ; 0xf4e11 boot.c:48 + mov dx, word [es:bx] ; 26 8b 17 ; 0xf4e14 + cmp cx, dx ; 39 d1 ; 0xf4e17 boot.c:49 + je short 04e2ah ; 74 0f ; 0xf4e19 + test al, al ; 84 c0 ; 0xf4e1b + jne short 04e42h ; 75 23 ; 0xf4e1d + mov bx, 001feh ; bb fe 01 ; 0xf4e1f boot.c:48 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf4e22 + cmp ax, 0aa55h ; 3d 55 aa ; 0xf4e25 boot.c:49 + je short 04e42h ; 74 18 ; 0xf4e28 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf4e2a boot.c:340 + xor ah, ah ; 30 e4 ; 0xf4e2d + push ax ; 50 ; 0xf4e2f + mov bl, byte [bp-006h] ; 8a 5e fa ; 0xf4e30 + xor bh, bh ; 30 ff ; 0xf4e33 + mov dl, byte [bp-00ah] ; 8a 56 f6 ; 0xf4e35 + xor dh, dh ; 30 f6 ; 0xf4e38 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf4e3a + xor cx, cx ; 31 c9 ; 0xf4e3d + jmp near 04d2fh ; e9 ed fe ; 0xf4e3f + mov bl, byte [bp-006h] ; 8a 5e fa ; 0xf4e42 boot.c:346 + xor bh, bh ; 30 ff ; 0xf4e45 + mov dl, byte [bp-00ah] ; 8a 56 f6 ; 0xf4e47 + xor dh, dh ; 30 f6 ; 0xf4e4a + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf4e4c + xor ah, ah ; 30 e4 ; 0xf4e4f + call 04b07h ; e8 b3 fc ; 0xf4e51 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf4e54 boot.c:352 + xor ah, ah ; 30 e4 ; 0xf4e57 + mov bx, ax ; 89 c3 ; 0xf4e59 + xor dx, dx ; 31 d2 ; 0xf4e5b + xor al, al ; 30 c0 ; 0xf4e5d + add ax, si ; 01 f0 ; 0xf4e5f + adc dx, bx ; 11 da ; 0xf4e61 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf4e63 boot.c:353 + pop di ; 5f ; 0xf4e66 + pop si ; 5e ; 0xf4e67 + pop bp ; 5d ; 0xf4e68 + retn ; c3 ; 0xf4e69 + ; disGetNextSymbol 0xf4e6a LB 0x505e -> off=0x0 cb=0000000000000013 uValue=00000000000f386a 'keyboard_panic' +keyboard_panic: ; 0xf4e6a LB 0x13 + push bp ; 55 ; 0xf4e6a keyboard.c:194 + mov bp, sp ; 89 e5 ; 0xf4e6b + push ax ; 50 ; 0xf4e6d keyboard.c:199 + push 00574h ; 68 74 05 ; 0xf4e6e + push strict byte 00007h ; 6a 07 ; 0xf4e71 + call 018ffh ; e8 89 ca ; 0xf4e73 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf4e76 + mov sp, bp ; 89 ec ; 0xf4e79 keyboard.c:200 + pop bp ; 5d ; 0xf4e7b + retn ; c3 ; 0xf4e7c + ; disGetNextSymbol 0xf4e7d LB 0x504b -> off=0x0 cb=000000000000026a uValue=00000000000f387d 'keyboard_init' +keyboard_init: ; 0xf4e7d LB 0x26a + push bp ; 55 ; 0xf4e7d keyboard.c:208 + mov bp, sp ; 89 e5 ; 0xf4e7e + mov AL, strict byte 0aah ; b0 aa ; 0xf4e80 keyboard.c:214 + mov dx, strict word 00064h ; ba 64 00 ; 0xf4e82 + out DX, AL ; ee ; 0xf4e85 + mov bx, strict word 0ffffh ; bb ff ff ; 0xf4e86 keyboard.c:217 + mov dx, strict word 00064h ; ba 64 00 ; 0xf4e89 keyboard.c:218 + in AL, DX ; ec ; 0xf4e8c + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4e8d + test AL, strict byte 002h ; a8 02 ; 0xf4e8f + je short 04ea0h ; 74 0d ; 0xf4e91 + dec bx ; 4b ; 0xf4e93 + test bx, bx ; 85 db ; 0xf4e94 + jbe short 04ea0h ; 76 08 ; 0xf4e96 + xor al, al ; 30 c0 ; 0xf4e98 + mov dx, 00080h ; ba 80 00 ; 0xf4e9a + out DX, AL ; ee ; 0xf4e9d + jmp short 04e89h ; eb e9 ; 0xf4e9e + test bx, bx ; 85 db ; 0xf4ea0 keyboard.c:219 + jne short 04ea9h ; 75 05 ; 0xf4ea2 + xor ax, ax ; 31 c0 ; 0xf4ea4 + call 04e6ah ; e8 c1 ff ; 0xf4ea6 + mov bx, strict word 0ffffh ; bb ff ff ; 0xf4ea9 keyboard.c:222 + mov dx, strict word 00064h ; ba 64 00 ; 0xf4eac keyboard.c:223 + in AL, DX ; ec ; 0xf4eaf + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4eb0 + test AL, strict byte 001h ; a8 01 ; 0xf4eb2 + jne short 04ec3h ; 75 0d ; 0xf4eb4 + dec bx ; 4b ; 0xf4eb6 + test bx, bx ; 85 db ; 0xf4eb7 + jbe short 04ec3h ; 76 08 ; 0xf4eb9 + mov AL, strict byte 001h ; b0 01 ; 0xf4ebb + mov dx, 00080h ; ba 80 00 ; 0xf4ebd + out DX, AL ; ee ; 0xf4ec0 + jmp short 04each ; eb e9 ; 0xf4ec1 + test bx, bx ; 85 db ; 0xf4ec3 keyboard.c:224 + jne short 04ecdh ; 75 06 ; 0xf4ec5 + mov ax, strict word 00001h ; b8 01 00 ; 0xf4ec7 + call 04e6ah ; e8 9d ff ; 0xf4eca + mov dx, strict word 00060h ; ba 60 00 ; 0xf4ecd keyboard.c:227 + in AL, DX ; ec ; 0xf4ed0 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4ed1 + cmp ax, strict word 00055h ; 3d 55 00 ; 0xf4ed3 + je short 04edeh ; 74 06 ; 0xf4ed6 + mov ax, 003dfh ; b8 df 03 ; 0xf4ed8 keyboard.c:228 + call 04e6ah ; e8 8c ff ; 0xf4edb + mov AL, strict byte 0abh ; b0 ab ; 0xf4ede keyboard.c:232 + mov dx, strict word 00064h ; ba 64 00 ; 0xf4ee0 + out DX, AL ; ee ; 0xf4ee3 + mov bx, strict word 0ffffh ; bb ff ff ; 0xf4ee4 keyboard.c:235 + mov dx, strict word 00064h ; ba 64 00 ; 0xf4ee7 keyboard.c:236 + in AL, DX ; ec ; 0xf4eea + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4eeb + test AL, strict byte 002h ; a8 02 ; 0xf4eed + je short 04efeh ; 74 0d ; 0xf4eef + dec bx ; 4b ; 0xf4ef1 + test bx, bx ; 85 db ; 0xf4ef2 + jbe short 04efeh ; 76 08 ; 0xf4ef4 + mov AL, strict byte 010h ; b0 10 ; 0xf4ef6 + mov dx, 00080h ; ba 80 00 ; 0xf4ef8 + out DX, AL ; ee ; 0xf4efb + jmp short 04ee7h ; eb e9 ; 0xf4efc + test bx, bx ; 85 db ; 0xf4efe keyboard.c:237 + jne short 04f08h ; 75 06 ; 0xf4f00 + mov ax, strict word 0000ah ; b8 0a 00 ; 0xf4f02 + call 04e6ah ; e8 62 ff ; 0xf4f05 + mov bx, strict word 0ffffh ; bb ff ff ; 0xf4f08 keyboard.c:240 + mov dx, strict word 00064h ; ba 64 00 ; 0xf4f0b keyboard.c:241 + in AL, DX ; ec ; 0xf4f0e + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4f0f + test AL, strict byte 001h ; a8 01 ; 0xf4f11 + jne short 04f22h ; 75 0d ; 0xf4f13 + dec bx ; 4b ; 0xf4f15 + test bx, bx ; 85 db ; 0xf4f16 + jbe short 04f22h ; 76 08 ; 0xf4f18 + mov AL, strict byte 011h ; b0 11 ; 0xf4f1a + mov dx, 00080h ; ba 80 00 ; 0xf4f1c + out DX, AL ; ee ; 0xf4f1f + jmp short 04f0bh ; eb e9 ; 0xf4f20 + test bx, bx ; 85 db ; 0xf4f22 keyboard.c:242 + jne short 04f2ch ; 75 06 ; 0xf4f24 + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf4f26 + call 04e6ah ; e8 3e ff ; 0xf4f29 + mov dx, strict word 00060h ; ba 60 00 ; 0xf4f2c keyboard.c:246 + in AL, DX ; ec ; 0xf4f2f + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4f30 + test ax, ax ; 85 c0 ; 0xf4f32 + je short 04f3ch ; 74 06 ; 0xf4f34 + mov ax, 003e0h ; b8 e0 03 ; 0xf4f36 keyboard.c:247 + call 04e6ah ; e8 2e ff ; 0xf4f39 + mov AL, strict byte 0ffh ; b0 ff ; 0xf4f3c keyboard.c:253 + mov dx, strict word 00060h ; ba 60 00 ; 0xf4f3e + out DX, AL ; ee ; 0xf4f41 + mov bx, strict word 0ffffh ; bb ff ff ; 0xf4f42 keyboard.c:256 + mov dx, strict word 00064h ; ba 64 00 ; 0xf4f45 keyboard.c:257 + in AL, DX ; ec ; 0xf4f48 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4f49 + test AL, strict byte 002h ; a8 02 ; 0xf4f4b + je short 04f5ch ; 74 0d ; 0xf4f4d + dec bx ; 4b ; 0xf4f4f + test bx, bx ; 85 db ; 0xf4f50 + jbe short 04f5ch ; 76 08 ; 0xf4f52 + mov AL, strict byte 020h ; b0 20 ; 0xf4f54 + mov dx, 00080h ; ba 80 00 ; 0xf4f56 + out DX, AL ; ee ; 0xf4f59 + jmp short 04f45h ; eb e9 ; 0xf4f5a + test bx, bx ; 85 db ; 0xf4f5c keyboard.c:258 + jne short 04f66h ; 75 06 ; 0xf4f5e + mov ax, strict word 00014h ; b8 14 00 ; 0xf4f60 + call 04e6ah ; e8 04 ff ; 0xf4f63 + mov bx, strict word 0ffffh ; bb ff ff ; 0xf4f66 keyboard.c:261 + mov dx, strict word 00064h ; ba 64 00 ; 0xf4f69 keyboard.c:262 + in AL, DX ; ec ; 0xf4f6c + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4f6d + test AL, strict byte 001h ; a8 01 ; 0xf4f6f + jne short 04f80h ; 75 0d ; 0xf4f71 + dec bx ; 4b ; 0xf4f73 + test bx, bx ; 85 db ; 0xf4f74 + jbe short 04f80h ; 76 08 ; 0xf4f76 + mov AL, strict byte 021h ; b0 21 ; 0xf4f78 + mov dx, 00080h ; ba 80 00 ; 0xf4f7a + out DX, AL ; ee ; 0xf4f7d + jmp short 04f69h ; eb e9 ; 0xf4f7e + test bx, bx ; 85 db ; 0xf4f80 keyboard.c:263 + jne short 04f8ah ; 75 06 ; 0xf4f82 + mov ax, strict word 00015h ; b8 15 00 ; 0xf4f84 + call 04e6ah ; e8 e0 fe ; 0xf4f87 + mov dx, strict word 00060h ; ba 60 00 ; 0xf4f8a keyboard.c:266 + in AL, DX ; ec ; 0xf4f8d + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4f8e + cmp ax, 000fah ; 3d fa 00 ; 0xf4f90 + je short 04f9bh ; 74 06 ; 0xf4f93 + mov ax, 003e1h ; b8 e1 03 ; 0xf4f95 keyboard.c:267 + call 04e6ah ; e8 cf fe ; 0xf4f98 + mov dx, strict word 00064h ; ba 64 00 ; 0xf4f9b keyboard.c:271 + in AL, DX ; ec ; 0xf4f9e + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4f9f + test AL, strict byte 001h ; a8 01 ; 0xf4fa1 + jne short 04fadh ; 75 08 ; 0xf4fa3 + mov AL, strict byte 031h ; b0 31 ; 0xf4fa5 + mov dx, 00080h ; ba 80 00 ; 0xf4fa7 + out DX, AL ; ee ; 0xf4faa + jmp short 04f9bh ; eb ee ; 0xf4fab + mov dx, strict word 00060h ; ba 60 00 ; 0xf4fad keyboard.c:273 + in AL, DX ; ec ; 0xf4fb0 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4fb1 + cmp ax, 000aah ; 3d aa 00 ; 0xf4fb3 + je short 04fc6h ; 74 0e ; 0xf4fb6 + in AL, DX ; ec ; 0xf4fb8 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4fb9 + cmp ax, 000aah ; 3d aa 00 ; 0xf4fbb + je short 04fc6h ; 74 06 ; 0xf4fbe + mov ax, 003e2h ; b8 e2 03 ; 0xf4fc0 keyboard.c:274 + call 04e6ah ; e8 a4 fe ; 0xf4fc3 + mov AL, strict byte 0f5h ; b0 f5 ; 0xf4fc6 keyboard.c:278 + mov dx, strict word 00060h ; ba 60 00 ; 0xf4fc8 + out DX, AL ; ee ; 0xf4fcb + mov bx, strict word 0ffffh ; bb ff ff ; 0xf4fcc keyboard.c:281 + mov dx, strict word 00064h ; ba 64 00 ; 0xf4fcf keyboard.c:282 + in AL, DX ; ec ; 0xf4fd2 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4fd3 + test AL, strict byte 002h ; a8 02 ; 0xf4fd5 + je short 04fe6h ; 74 0d ; 0xf4fd7 + dec bx ; 4b ; 0xf4fd9 + test bx, bx ; 85 db ; 0xf4fda + jbe short 04fe6h ; 76 08 ; 0xf4fdc + mov AL, strict byte 040h ; b0 40 ; 0xf4fde + mov dx, 00080h ; ba 80 00 ; 0xf4fe0 + out DX, AL ; ee ; 0xf4fe3 + jmp short 04fcfh ; eb e9 ; 0xf4fe4 + test bx, bx ; 85 db ; 0xf4fe6 keyboard.c:283 + jne short 04ff0h ; 75 06 ; 0xf4fe8 + mov ax, strict word 00028h ; b8 28 00 ; 0xf4fea + call 04e6ah ; e8 7a fe ; 0xf4fed + mov bx, strict word 0ffffh ; bb ff ff ; 0xf4ff0 keyboard.c:286 + mov dx, strict word 00064h ; ba 64 00 ; 0xf4ff3 keyboard.c:287 + in AL, DX ; ec ; 0xf4ff6 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4ff7 + test AL, strict byte 001h ; a8 01 ; 0xf4ff9 + jne short 0500ah ; 75 0d ; 0xf4ffb + dec bx ; 4b ; 0xf4ffd + test bx, bx ; 85 db ; 0xf4ffe + jbe short 0500ah ; 76 08 ; 0xf5000 + mov AL, strict byte 041h ; b0 41 ; 0xf5002 + mov dx, 00080h ; ba 80 00 ; 0xf5004 + out DX, AL ; ee ; 0xf5007 + jmp short 04ff3h ; eb e9 ; 0xf5008 + test bx, bx ; 85 db ; 0xf500a keyboard.c:288 + jne short 05014h ; 75 06 ; 0xf500c + mov ax, strict word 00029h ; b8 29 00 ; 0xf500e + call 04e6ah ; e8 56 fe ; 0xf5011 + mov dx, strict word 00060h ; ba 60 00 ; 0xf5014 keyboard.c:291 + in AL, DX ; ec ; 0xf5017 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf5018 + cmp ax, 000fah ; 3d fa 00 ; 0xf501a + je short 05025h ; 74 06 ; 0xf501d + mov ax, 003e3h ; b8 e3 03 ; 0xf501f keyboard.c:292 + call 04e6ah ; e8 45 fe ; 0xf5022 + mov AL, strict byte 060h ; b0 60 ; 0xf5025 keyboard.c:296 + mov dx, strict word 00064h ; ba 64 00 ; 0xf5027 + out DX, AL ; ee ; 0xf502a + mov bx, strict word 0ffffh ; bb ff ff ; 0xf502b keyboard.c:299 + mov dx, strict word 00064h ; ba 64 00 ; 0xf502e keyboard.c:300 + in AL, DX ; ec ; 0xf5031 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf5032 + test AL, strict byte 002h ; a8 02 ; 0xf5034 + je short 05045h ; 74 0d ; 0xf5036 + dec bx ; 4b ; 0xf5038 + test bx, bx ; 85 db ; 0xf5039 + jbe short 05045h ; 76 08 ; 0xf503b + mov AL, strict byte 050h ; b0 50 ; 0xf503d + mov dx, 00080h ; ba 80 00 ; 0xf503f + out DX, AL ; ee ; 0xf5042 + jmp short 0502eh ; eb e9 ; 0xf5043 + test bx, bx ; 85 db ; 0xf5045 keyboard.c:301 + jne short 0504fh ; 75 06 ; 0xf5047 + mov ax, strict word 00032h ; b8 32 00 ; 0xf5049 + call 04e6ah ; e8 1b fe ; 0xf504c + mov AL, strict byte 065h ; b0 65 ; 0xf504f keyboard.c:304 + mov dx, strict word 00060h ; ba 60 00 ; 0xf5051 + out DX, AL ; ee ; 0xf5054 + mov bx, strict word 0ffffh ; bb ff ff ; 0xf5055 keyboard.c:307 + mov dx, strict word 00064h ; ba 64 00 ; 0xf5058 keyboard.c:308 + in AL, DX ; ec ; 0xf505b + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf505c + test AL, strict byte 002h ; a8 02 ; 0xf505e + je short 0506fh ; 74 0d ; 0xf5060 + dec bx ; 4b ; 0xf5062 + test bx, bx ; 85 db ; 0xf5063 + jbe short 0506fh ; 76 08 ; 0xf5065 + mov AL, strict byte 060h ; b0 60 ; 0xf5067 + mov dx, 00080h ; ba 80 00 ; 0xf5069 + out DX, AL ; ee ; 0xf506c + jmp short 05058h ; eb e9 ; 0xf506d + test bx, bx ; 85 db ; 0xf506f keyboard.c:309 + jne short 05079h ; 75 06 ; 0xf5071 + mov ax, strict word 0003ch ; b8 3c 00 ; 0xf5073 + call 04e6ah ; e8 f1 fd ; 0xf5076 + mov AL, strict byte 0f4h ; b0 f4 ; 0xf5079 keyboard.c:312 + mov dx, strict word 00060h ; ba 60 00 ; 0xf507b + out DX, AL ; ee ; 0xf507e + mov bx, strict word 0ffffh ; bb ff ff ; 0xf507f keyboard.c:315 + mov dx, strict word 00064h ; ba 64 00 ; 0xf5082 keyboard.c:316 + in AL, DX ; ec ; 0xf5085 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf5086 + test AL, strict byte 002h ; a8 02 ; 0xf5088 + je short 05099h ; 74 0d ; 0xf508a + dec bx ; 4b ; 0xf508c + test bx, bx ; 85 db ; 0xf508d + jbe short 05099h ; 76 08 ; 0xf508f + mov AL, strict byte 070h ; b0 70 ; 0xf5091 + mov dx, 00080h ; ba 80 00 ; 0xf5093 + out DX, AL ; ee ; 0xf5096 + jmp short 05082h ; eb e9 ; 0xf5097 + test bx, bx ; 85 db ; 0xf5099 keyboard.c:317 + jne short 050a3h ; 75 06 ; 0xf509b + mov ax, strict word 00046h ; b8 46 00 ; 0xf509d + call 04e6ah ; e8 c7 fd ; 0xf50a0 + mov bx, strict word 0ffffh ; bb ff ff ; 0xf50a3 keyboard.c:320 + mov dx, strict word 00064h ; ba 64 00 ; 0xf50a6 keyboard.c:321 + in AL, DX ; ec ; 0xf50a9 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf50aa + test AL, strict byte 001h ; a8 01 ; 0xf50ac + jne short 050bdh ; 75 0d ; 0xf50ae + dec bx ; 4b ; 0xf50b0 + test bx, bx ; 85 db ; 0xf50b1 + jbe short 050bdh ; 76 08 ; 0xf50b3 + mov AL, strict byte 071h ; b0 71 ; 0xf50b5 + mov dx, 00080h ; ba 80 00 ; 0xf50b7 + out DX, AL ; ee ; 0xf50ba + jmp short 050a6h ; eb e9 ; 0xf50bb + test bx, bx ; 85 db ; 0xf50bd keyboard.c:322 + jne short 050c7h ; 75 06 ; 0xf50bf + mov ax, strict word 00046h ; b8 46 00 ; 0xf50c1 + call 04e6ah ; e8 a3 fd ; 0xf50c4 + mov dx, strict word 00060h ; ba 60 00 ; 0xf50c7 keyboard.c:325 + in AL, DX ; ec ; 0xf50ca + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf50cb + cmp ax, 000fah ; 3d fa 00 ; 0xf50cd + je short 050d8h ; 74 06 ; 0xf50d0 + mov ax, 003e4h ; b8 e4 03 ; 0xf50d2 keyboard.c:326 + call 04e6ah ; e8 92 fd ; 0xf50d5 + mov AL, strict byte 0a8h ; b0 a8 ; 0xf50d8 keyboard.c:330 + mov dx, strict word 00064h ; ba 64 00 ; 0xf50da + out DX, AL ; ee ; 0xf50dd + xor ax, ax ; 31 c0 ; 0xf50de keyboard.c:335 + call 06511h ; e8 2e 14 ; 0xf50e0 + mov sp, bp ; 89 ec ; 0xf50e3 keyboard.c:336 + pop bp ; 5d ; 0xf50e5 + retn ; c3 ; 0xf50e6 + ; disGetNextSymbol 0xf50e7 LB 0x4de1 -> off=0x0 cb=0000000000000053 uValue=00000000000f3ae7 'enqueue_key' +enqueue_key: ; 0xf50e7 LB 0x53 + push bx ; 53 ; 0xf50e7 keyboard.c:339 + push cx ; 51 ; 0xf50e8 + push si ; 56 ; 0xf50e9 + push di ; 57 ; 0xf50ea + push bp ; 55 ; 0xf50eb + mov bp, sp ; 89 e5 ; 0xf50ec + mov dh, al ; 88 c6 ; 0xf50ee + mov bx, 00080h ; bb 80 00 ; 0xf50f0 keyboard.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf50f3 + mov es, ax ; 8e c0 ; 0xf50f6 + mov di, word [es:bx] ; 26 8b 3f ; 0xf50f8 + mov bx, 00082h ; bb 82 00 ; 0xf50fb keyboard.c:48 + mov si, word [es:bx] ; 26 8b 37 ; 0xf50fe + mov bx, strict word 0001ah ; bb 1a 00 ; 0xf5101 keyboard.c:48 + mov cx, word [es:bx] ; 26 8b 0f ; 0xf5104 + mov bx, strict word 0001ch ; bb 1c 00 ; 0xf5107 keyboard.c:48 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf510a + mov bx, ax ; 89 c3 ; 0xf510d keyboard.c:354 + inc ax ; 40 ; 0xf510f keyboard.c:355 + inc ax ; 40 ; 0xf5110 + cmp ax, si ; 39 f0 ; 0xf5111 keyboard.c:356 + jc short 05117h ; 72 02 ; 0xf5113 + mov ax, di ; 89 f8 ; 0xf5115 keyboard.c:357 + cmp ax, cx ; 39 c8 ; 0xf5117 keyboard.c:359 + jne short 0511fh ; 75 04 ; 0xf5119 + xor ax, cx ; 31 c8 ; 0xf511b keyboard.c:360 + jmp short 05134h ; eb 15 ; 0xf511d + mov cx, strict word 00040h ; b9 40 00 ; 0xf511f keyboard.c:43 + mov es, cx ; 8e c1 ; 0xf5122 + mov byte [es:bx], dl ; 26 88 17 ; 0xf5124 + inc bx ; 43 ; 0xf5127 keyboard.c:363 + mov byte [es:bx], dh ; 26 88 37 ; 0xf5128 keyboard.c:43 + mov bx, strict word 0001ch ; bb 1c 00 ; 0xf512b keyboard.c:53 + mov word [es:bx], ax ; 26 89 07 ; 0xf512e + mov ax, strict word 00001h ; b8 01 00 ; 0xf5131 keyboard.c:365 + pop bp ; 5d ; 0xf5134 keyboard.c:366 + pop di ; 5f ; 0xf5135 + pop si ; 5e ; 0xf5136 + pop cx ; 59 ; 0xf5137 + pop bx ; 5b ; 0xf5138 + retn ; c3 ; 0xf5139 + ; disGetNextSymbol 0xf513a LB 0x4d8e -> off=0x35 cb=00000000000003c4 uValue=00000000000f3b6f 'int09_function' + db 0d4h, 0c6h, 0c5h, 0bah, 0b8h, 0b6h, 0aah, 09dh, 054h, 053h, 046h, 045h, 03ah, 038h, 036h, 02ah + db 01dh, 0e7h, 053h, 026h, 052h, 0f4h, 051h, 0f4h, 051h, 086h, 052h, 0cfh, 051h, 0f7h, 052h, 052h + db 053h, 0cch, 053h, 0b1h, 053h, 055h, 052h, 0f4h, 051h, 0f4h, 051h, 0d4h, 052h, 0e6h, 051h, 03ah + db 053h, 09ch, 053h, 0c7h, 053h +int09_function: ; 0xf516f LB 0x3c4 + push bp ; 55 ; 0xf516f keyboard.c:371 + mov bp, sp ; 89 e5 ; 0xf5170 + push si ; 56 ; 0xf5172 + push di ; 57 ; 0xf5173 + push ax ; 50 ; 0xf5174 + push ax ; 50 ; 0xf5175 + mov al, byte [bp+014h] ; 8a 46 14 ; 0xf5176 keyboard.c:382 + mov byte [bp-008h], al ; 88 46 f8 ; 0xf5179 + test al, al ; 84 c0 ; 0xf517c keyboard.c:384 + jne short 05199h ; 75 19 ; 0xf517e + mov bx, 00da0h ; bb a0 0d ; 0xf5180 keyboard.c:385 + mov cx, ds ; 8c d9 ; 0xf5183 + mov ax, strict word 00004h ; b8 04 00 ; 0xf5185 + call 018bch ; e8 31 c7 ; 0xf5188 + push 00587h ; 68 87 05 ; 0xf518b + push strict byte 00004h ; 6a 04 ; 0xf518e + call 018ffh ; e8 6c c7 ; 0xf5190 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf5193 + jmp near 052cdh ; e9 34 01 ; 0xf5196 keyboard.c:386 + mov bx, strict word 00018h ; bb 18 00 ; 0xf5199 keyboard.c:38 + mov ax, strict word 00040h ; b8 40 00 ; 0xf519c + mov es, ax ; 8e c0 ; 0xf519f + mov bl, byte [es:bx] ; 26 8a 1f ; 0xf51a1 + mov dl, bl ; 88 da ; 0xf51a4 keyboard.c:39 + mov si, 00096h ; be 96 00 ; 0xf51a6 keyboard.c:38 + mov bh, byte [es:si] ; 26 8a 3c ; 0xf51a9 + mov byte [bp-006h], bh ; 88 7e fa ; 0xf51ac keyboard.c:39 + mov si, strict word 00017h ; be 17 00 ; 0xf51af keyboard.c:38 + mov ah, byte [es:si] ; 26 8a 24 ; 0xf51b2 + mov dh, ah ; 88 e6 ; 0xf51b5 keyboard.c:39 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf51b7 keyboard.c:394 + push CS ; 0e ; 0xf51ba + pop ES ; 07 ; 0xf51bb + mov cx, strict word 00012h ; b9 12 00 ; 0xf51bc + mov di, 0513ah ; bf 3a 51 ; 0xf51bf + repne scasb ; f2 ae ; 0xf51c2 + sal cx, 1 ; d1 e1 ; 0xf51c4 + mov di, cx ; 89 cf ; 0xf51c6 + mov cx, word [cs:di+0514bh] ; 2e 8b 8d 4b 51 ; 0xf51c8 + jmp cx ; ff e1 ; 0xf51cd + xor dh, 040h ; 80 f6 40 ; 0xf51cf keyboard.c:396 + mov bx, strict word 00017h ; bb 17 00 ; 0xf51d2 keyboard.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf51d5 + mov es, ax ; 8e c0 ; 0xf51d8 + mov byte [es:bx], dh ; 26 88 37 ; 0xf51da + or dl, 040h ; 80 ca 40 ; 0xf51dd keyboard.c:398 + mov bx, strict word 00018h ; bb 18 00 ; 0xf51e0 keyboard.c:43 + jmp near 053c1h ; e9 db 01 ; 0xf51e3 + and dl, 0bfh ; 80 e2 bf ; 0xf51e6 keyboard.c:402 + mov bx, strict word 00018h ; bb 18 00 ; 0xf51e9 keyboard.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf51ec + mov es, ax ; 8e c0 ; 0xf51ef + jmp near 053c1h ; e9 cd 01 ; 0xf51f1 + test byte [bp-006h], 002h ; f6 46 fa 02 ; 0xf51f4 keyboard.c:411 + jne short 05253h ; 75 59 ; 0xf51f8 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf51fa keyboard.c:412 + and AL, strict byte 07fh ; 24 7f ; 0xf51fd + cmp AL, strict byte 02ah ; 3c 2a ; 0xf51ff + jne short 05208h ; 75 05 ; 0xf5201 + mov ax, strict word 00002h ; b8 02 00 ; 0xf5203 + jmp short 0520bh ; eb 03 ; 0xf5206 + mov ax, strict word 00001h ; b8 01 00 ; 0xf5208 + test byte [bp-008h], 080h ; f6 46 f8 80 ; 0xf520b keyboard.c:413 + je short 05217h ; 74 06 ; 0xf520f + not al ; f6 d0 ; 0xf5211 keyboard.c:414 + and dh, al ; 20 c6 ; 0xf5213 + jmp short 05219h ; eb 02 ; 0xf5215 keyboard.c:415 + or dh, al ; 08 c6 ; 0xf5217 keyboard.c:416 + mov bx, strict word 00017h ; bb 17 00 ; 0xf5219 keyboard.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf521c + mov es, ax ; 8e c0 ; 0xf521f + mov byte [es:bx], dh ; 26 88 37 ; 0xf5221 + jmp short 05253h ; eb 2d ; 0xf5224 keyboard.c:419 + test bh, 001h ; f6 c7 01 ; 0xf5226 keyboard.c:422 + jne short 05284h ; 75 59 ; 0xf5229 + or dh, 004h ; 80 ce 04 ; 0xf522b keyboard.c:423 + mov ax, strict word 00040h ; b8 40 00 ; 0xf522e keyboard.c:41 + mov bx, si ; 89 f3 ; 0xf5231 + mov es, ax ; 8e c0 ; 0xf5233 keyboard.c:43 + mov byte [es:bx], dh ; 26 88 37 ; 0xf5235 + test byte [bp-006h], 002h ; f6 46 fa 02 ; 0xf5238 keyboard.c:425 + je short 0524ah ; 74 0c ; 0xf523c + or byte [bp-006h], 004h ; 80 4e fa 04 ; 0xf523e keyboard.c:426 + mov bx, 00096h ; bb 96 00 ; 0xf5242 keyboard.c:41 + mov dl, byte [bp-006h] ; 8a 56 fa ; 0xf5245 + jmp short 05250h ; eb 06 ; 0xf5248 keyboard.c:428 + or dl, 001h ; 80 ca 01 ; 0xf524a keyboard.c:429 + mov bx, strict word 00018h ; bb 18 00 ; 0xf524d keyboard.c:41 + mov byte [es:bx], dl ; 26 88 17 ; 0xf5250 keyboard.c:43 + jmp short 05284h ; eb 2f ; 0xf5253 keyboard.c:433 + test bh, 001h ; f6 c7 01 ; 0xf5255 keyboard.c:435 + jne short 052aeh ; 75 54 ; 0xf5258 + and dh, 0fbh ; 80 e6 fb ; 0xf525a keyboard.c:436 + mov ax, strict word 00040h ; b8 40 00 ; 0xf525d keyboard.c:43 + mov es, ax ; 8e c0 ; 0xf5260 + mov byte [es:si], dh ; 26 88 34 ; 0xf5262 + test bh, 002h ; f6 c7 02 ; 0xf5265 keyboard.c:438 + je short 0527bh ; 74 11 ; 0xf5268 + and bh, 0fbh ; 80 e7 fb ; 0xf526a keyboard.c:439 + mov byte [bp-006h], bh ; 88 7e fa ; 0xf526d + mov bx, 00096h ; bb 96 00 ; 0xf5270 keyboard.c:43 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf5273 + mov byte [es:bx], al ; 26 88 07 ; 0xf5276 + jmp short 052aeh ; eb 33 ; 0xf5279 keyboard.c:441 + and dl, 0feh ; 80 e2 fe ; 0xf527b keyboard.c:442 + mov bx, strict word 00018h ; bb 18 00 ; 0xf527e keyboard.c:43 + mov byte [es:bx], dl ; 26 88 17 ; 0xf5281 + jmp short 052aeh ; eb 28 ; 0xf5284 keyboard.c:446 + or dh, 008h ; 80 ce 08 ; 0xf5286 keyboard.c:449 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5289 keyboard.c:41 + mov bx, si ; 89 f3 ; 0xf528c + mov es, ax ; 8e c0 ; 0xf528e keyboard.c:43 + mov byte [es:bx], dh ; 26 88 37 ; 0xf5290 + test byte [bp-006h], 002h ; f6 46 fa 02 ; 0xf5293 keyboard.c:451 + je short 052a5h ; 74 0c ; 0xf5297 + or byte [bp-006h], 008h ; 80 4e fa 08 ; 0xf5299 keyboard.c:452 + mov bx, 00096h ; bb 96 00 ; 0xf529d keyboard.c:41 + mov dl, byte [bp-006h] ; 8a 56 fa ; 0xf52a0 + jmp short 052abh ; eb 06 ; 0xf52a3 keyboard.c:454 + or dl, 002h ; 80 ca 02 ; 0xf52a5 keyboard.c:455 + mov bx, strict word 00018h ; bb 18 00 ; 0xf52a8 keyboard.c:41 + mov byte [es:bx], dl ; 26 88 17 ; 0xf52ab keyboard.c:43 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf52ae keyboard.c:458 + and AL, strict byte 07fh ; 24 7f ; 0xf52b1 + cmp AL, strict byte 01dh ; 3c 1d ; 0xf52b3 + je short 052bbh ; 74 04 ; 0xf52b5 + and byte [bp-006h], 0feh ; 80 66 fa fe ; 0xf52b7 + and byte [bp-006h], 0fdh ; 80 66 fa fd ; 0xf52bb + mov bx, 00096h ; bb 96 00 ; 0xf52bf + mov ax, strict word 00040h ; b8 40 00 ; 0xf52c2 + mov es, ax ; 8e c0 ; 0xf52c5 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf52c7 + mov byte [es:bx], al ; 26 88 07 ; 0xf52ca + lea sp, [bp-004h] ; 8d 66 fc ; 0xf52cd + pop di ; 5f ; 0xf52d0 + pop si ; 5e ; 0xf52d1 + pop bp ; 5d ; 0xf52d2 + retn ; c3 ; 0xf52d3 + and dh, 0f7h ; 80 e6 f7 ; 0xf52d4 keyboard.c:460 + mov ax, strict word 00040h ; b8 40 00 ; 0xf52d7 keyboard.c:43 + mov es, ax ; 8e c0 ; 0xf52da + mov byte [es:si], dh ; 26 88 34 ; 0xf52dc + test bh, 002h ; f6 c7 02 ; 0xf52df keyboard.c:462 + je short 052ech ; 74 08 ; 0xf52e2 + and bh, 0f7h ; 80 e7 f7 ; 0xf52e4 keyboard.c:463 + mov byte [bp-006h], bh ; 88 7e fa ; 0xf52e7 + jmp short 05270h ; eb 84 ; 0xf52ea keyboard.c:464 + and dl, 0fdh ; 80 e2 fd ; 0xf52ec keyboard.c:466 + mov bx, strict word 00018h ; bb 18 00 ; 0xf52ef keyboard.c:43 + mov byte [es:bx], dl ; 26 88 17 ; 0xf52f2 + jmp short 052aeh ; eb b7 ; 0xf52f5 keyboard.c:469 + test bh, 003h ; f6 c7 03 ; 0xf52f7 keyboard.c:472 + jne short 05310h ; 75 14 ; 0xf52fa + or dl, 020h ; 80 ca 20 ; 0xf52fc keyboard.c:474 + mov ax, strict word 00040h ; b8 40 00 ; 0xf52ff keyboard.c:41 + mov bx, strict word 00018h ; bb 18 00 ; 0xf5302 + mov es, ax ; 8e c0 ; 0xf5305 keyboard.c:43 + mov byte [es:bx], dl ; 26 88 17 ; 0xf5307 + xor dh, 020h ; 80 f6 20 ; 0xf530a keyboard.c:476 + jmp near 05395h ; e9 85 00 ; 0xf530d keyboard.c:477 + or dl, 008h ; 80 ca 08 ; 0xf5310 keyboard.c:480 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5313 keyboard.c:41 + mov es, ax ; 8e c0 ; 0xf5316 + mov bx, strict word 00018h ; bb 18 00 ; 0xf5318 + mov byte [es:bx], dl ; 26 88 17 ; 0xf531b keyboard.c:43 + mov ax, 000aeh ; b8 ae 00 ; 0xf531e keyboard.c:484 + mov dx, strict word 00064h ; ba 64 00 ; 0xf5321 + out DX, AL ; ee ; 0xf5324 + call 0e034h ; e8 0c 8d ; 0xf5325 keyboard.c:485 + mov bx, strict word 00018h ; bb 18 00 ; 0xf5328 keyboard.c:38 + mov ax, strict word 00040h ; b8 40 00 ; 0xf532b + mov es, ax ; 8e c0 ; 0xf532e + mov al, byte [es:bx] ; 26 8a 07 ; 0xf5330 + test AL, strict byte 008h ; a8 08 ; 0xf5333 keyboard.c:39 + jne short 05328h ; 75 f1 ; 0xf5335 + jmp near 052aeh ; e9 74 ff ; 0xf5337 keyboard.c:492 + test bh, 003h ; f6 c7 03 ; 0xf533a keyboard.c:494 + je short 05342h ; 74 03 ; 0xf533d + jmp near 052aeh ; e9 6c ff ; 0xf533f + and dl, 0dfh ; 80 e2 df ; 0xf5342 keyboard.c:495 + mov bx, strict word 00018h ; bb 18 00 ; 0xf5345 keyboard.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5348 + mov es, ax ; 8e c0 ; 0xf534b + mov byte [es:bx], dl ; 26 88 17 ; 0xf534d + jmp short 0533fh ; eb ed ; 0xf5350 keyboard.c:498 + test bh, 002h ; f6 c7 02 ; 0xf5352 keyboard.c:501 + je short 05384h ; 74 2d ; 0xf5355 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5357 keyboard.c:46 + mov bx, strict word 0001ah ; bb 1a 00 ; 0xf535a + mov es, ax ; 8e c0 ; 0xf535d keyboard.c:48 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf535f + mov bx, strict word 0001ch ; bb 1c 00 ; 0xf5362 keyboard.c:51 + mov word [es:bx], ax ; 26 89 07 ; 0xf5365 keyboard.c:53 + mov bx, strict word 00071h ; bb 71 00 ; 0xf5368 keyboard.c:41 + mov AL, strict byte 080h ; b0 80 ; 0xf536b + mov byte [es:bx], al ; 26 88 07 ; 0xf536d keyboard.c:43 + mov ax, 000aeh ; b8 ae 00 ; 0xf5370 keyboard.c:506 + mov dx, strict word 00064h ; ba 64 00 ; 0xf5373 + out DX, AL ; ee ; 0xf5376 + push bp ; 55 ; 0xf5377 keyboard.c:507 + int 01bh ; cd 1b ; 0xf5378 + pop bp ; 5d ; 0xf537a + xor dx, dx ; 31 d2 ; 0xf537b keyboard.c:508 + xor ax, ax ; 31 c0 ; 0xf537d + call 050e7h ; e8 65 fd ; 0xf537f + jmp short 0533fh ; eb bb ; 0xf5382 keyboard.c:509 + or dl, 010h ; 80 ca 10 ; 0xf5384 keyboard.c:510 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5387 keyboard.c:41 + mov bx, strict word 00018h ; bb 18 00 ; 0xf538a + mov es, ax ; 8e c0 ; 0xf538d keyboard.c:43 + mov byte [es:bx], dl ; 26 88 17 ; 0xf538f + xor dh, 010h ; 80 f6 10 ; 0xf5392 keyboard.c:512 + mov bx, si ; 89 f3 ; 0xf5395 keyboard.c:41 + mov byte [es:bx], dh ; 26 88 37 ; 0xf5397 keyboard.c:43 + jmp short 0533fh ; eb a3 ; 0xf539a keyboard.c:515 + test bh, 002h ; f6 c7 02 ; 0xf539c keyboard.c:518 + jne short 0533fh ; 75 9e ; 0xf539f + and dl, 0efh ; 80 e2 ef ; 0xf53a1 keyboard.c:519 + mov bx, strict word 00018h ; bb 18 00 ; 0xf53a4 keyboard.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf53a7 + mov es, ax ; 8e c0 ; 0xf53aa + mov byte [es:bx], dl ; 26 88 17 ; 0xf53ac + jmp short 0533fh ; eb 8e ; 0xf53af keyboard.c:522 + test bl, 004h ; f6 c3 04 ; 0xf53b1 keyboard.c:525 + jne short 0533fh ; 75 89 ; 0xf53b4 + or dl, 004h ; 80 ca 04 ; 0xf53b6 keyboard.c:526 + mov bx, strict word 00018h ; bb 18 00 ; 0xf53b9 keyboard.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf53bc + mov es, ax ; 8e c0 ; 0xf53bf + mov byte [es:bx], dl ; 26 88 17 ; 0xf53c1 + jmp near 052aeh ; e9 e7 fe ; 0xf53c4 keyboard.c:530 + and dl, 0fbh ; 80 e2 fb ; 0xf53c7 keyboard.c:533 + jmp short 053b9h ; eb ed ; 0xf53ca keyboard.c:534 + mov al, ah ; 88 e0 ; 0xf53cc keyboard.c:539 + and AL, strict byte 00ch ; 24 0c ; 0xf53ce + cmp AL, strict byte 00ch ; 3c 0c ; 0xf53d0 + jne short 053e7h ; 75 13 ; 0xf53d2 + mov ax, strict word 00040h ; b8 40 00 ; 0xf53d4 keyboard.c:51 + mov bx, strict word 00072h ; bb 72 00 ; 0xf53d7 + mov cx, 01234h ; b9 34 12 ; 0xf53da + mov es, ax ; 8e c0 ; 0xf53dd keyboard.c:53 + mov word [es:bx], cx ; 26 89 0f ; 0xf53df + jmp far 0f000h:0e05bh ; ea 5b e0 00 f0 ; 0xf53e2 keyboard.c:542 + test dl, 008h ; f6 c2 08 ; 0xf53e7 keyboard.c:548 + je short 053fdh ; 74 11 ; 0xf53ea + and dl, 0f7h ; 80 e2 f7 ; 0xf53ec keyboard.c:550 + mov bx, strict word 00018h ; bb 18 00 ; 0xf53ef keyboard.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf53f2 + mov es, ax ; 8e c0 ; 0xf53f5 + mov byte [es:bx], dl ; 26 88 17 ; 0xf53f7 + jmp near 052cdh ; e9 d0 fe ; 0xf53fa keyboard.c:552 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf53fd keyboard.c:555 + test AL, strict byte 080h ; a8 80 ; 0xf5400 + je short 05432h ; 74 2e ; 0xf5402 + cmp AL, strict byte 0fah ; 3c fa ; 0xf5404 keyboard.c:557 + jne short 05418h ; 75 10 ; 0xf5406 + mov bx, 00097h ; bb 97 00 ; 0xf5408 keyboard.c:38 + mov ax, strict word 00040h ; b8 40 00 ; 0xf540b + mov es, ax ; 8e c0 ; 0xf540e + mov ah, byte [es:bx] ; 26 8a 27 ; 0xf5410 + or ah, 010h ; 80 cc 10 ; 0xf5413 keyboard.c:39 + jmp short 0542dh ; eb 15 ; 0xf5416 keyboard.c:560 + cmp AL, strict byte 0feh ; 3c fe ; 0xf5418 + je short 0541fh ; 74 03 ; 0xf541a + jmp near 052aeh ; e9 8f fe ; 0xf541c + mov bx, 00097h ; bb 97 00 ; 0xf541f keyboard.c:38 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5422 + mov es, ax ; 8e c0 ; 0xf5425 + mov ah, byte [es:bx] ; 26 8a 27 ; 0xf5427 + or ah, 020h ; 80 cc 20 ; 0xf542a keyboard.c:39 + mov byte [es:bx], ah ; 26 88 27 ; 0xf542d keyboard.c:43 + jmp short 0541ch ; eb ea ; 0xf5430 keyboard.c:564 + cmp byte [bp-008h], 058h ; 80 7e f8 58 ; 0xf5432 keyboard.c:566 + jbe short 05457h ; 76 1f ; 0xf5436 + mov bx, 00da0h ; bb a0 0d ; 0xf5438 keyboard.c:567 + mov cx, ds ; 8c d9 ; 0xf543b + mov ax, strict word 00004h ; b8 04 00 ; 0xf543d + call 018bch ; e8 79 c4 ; 0xf5440 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf5443 + xor ah, ah ; 30 e4 ; 0xf5446 + push ax ; 50 ; 0xf5448 + push 005a1h ; 68 a1 05 ; 0xf5449 + push strict byte 00004h ; 6a 04 ; 0xf544c + call 018ffh ; e8 ae c4 ; 0xf544e + add sp, strict byte 00006h ; 83 c4 06 ; 0xf5451 + jmp near 052cdh ; e9 76 fe ; 0xf5454 keyboard.c:568 + test dh, 008h ; f6 c6 08 ; 0xf5457 keyboard.c:570 + je short 0546fh ; 74 13 ; 0xf545a + mov bl, byte [bp-008h] ; 8a 5e f8 ; 0xf545c keyboard.c:571 + xor bh, bh ; 30 ff ; 0xf545f + imul bx, bx, strict byte 0000ah ; 6b db 0a ; 0xf5461 + mov dl, byte [bx+00df4h] ; 8a 97 f4 0d ; 0xf5464 + mov ax, word [bx+00df4h] ; 8b 87 f4 0d ; 0xf5468 keyboard.c:572 + jmp near 05503h ; e9 94 00 ; 0xf546c keyboard.c:573 + test dh, 004h ; f6 c6 04 ; 0xf546f + je short 05487h ; 74 13 ; 0xf5472 + mov bl, byte [bp-008h] ; 8a 5e f8 ; 0xf5474 keyboard.c:574 + xor bh, bh ; 30 ff ; 0xf5477 + imul bx, bx, strict byte 0000ah ; 6b db 0a ; 0xf5479 + mov dl, byte [bx+00df2h] ; 8a 97 f2 0d ; 0xf547c + mov ax, word [bx+00df2h] ; 8b 87 f2 0d ; 0xf5480 keyboard.c:575 + jmp near 05503h ; e9 7c 00 ; 0xf5484 keyboard.c:576 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf5487 + and AL, strict byte 002h ; 24 02 ; 0xf548a + test al, al ; 84 c0 ; 0xf548c + jbe short 054a6h ; 76 16 ; 0xf548e + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf5490 + cmp AL, strict byte 047h ; 3c 47 ; 0xf5493 + jc short 054a6h ; 72 0f ; 0xf5495 + cmp AL, strict byte 053h ; 3c 53 ; 0xf5497 + jnbe short 054a6h ; 77 0b ; 0xf5499 + mov DL, strict byte 0e0h ; b2 e0 ; 0xf549b keyboard.c:578 + mov bl, al ; 88 c3 ; 0xf549d keyboard.c:579 + xor bh, bh ; 30 ff ; 0xf549f + imul bx, bx, strict byte 0000ah ; 6b db 0a ; 0xf54a1 + jmp short 054ffh ; eb 59 ; 0xf54a4 keyboard.c:580 + test dh, 003h ; f6 c6 03 ; 0xf54a6 + je short 054dbh ; 74 30 ; 0xf54a9 + mov bl, byte [bp-008h] ; 8a 5e f8 ; 0xf54ab keyboard.c:584 + xor bh, bh ; 30 ff ; 0xf54ae + imul bx, bx, strict byte 0000ah ; 6b db 0a ; 0xf54b0 + mov cl, byte [bx+00df6h] ; 8a 8f f6 0d ; 0xf54b3 + xor ch, ch ; 30 ed ; 0xf54b7 + mov al, dh ; 88 f0 ; 0xf54b9 + xor ah, ah ; 30 e4 ; 0xf54bb + test ax, cx ; 85 c8 ; 0xf54bd + je short 054cbh ; 74 0a ; 0xf54bf + mov dl, byte [bx+00deeh] ; 8a 97 ee 0d ; 0xf54c1 keyboard.c:585 + mov ax, word [bx+00deeh] ; 8b 87 ee 0d ; 0xf54c5 keyboard.c:586 + jmp short 054d3h ; eb 08 ; 0xf54c9 keyboard.c:587 + mov dl, byte [bx+00df0h] ; 8a 97 f0 0d ; 0xf54cb keyboard.c:588 + mov ax, word [bx+00df0h] ; 8b 87 f0 0d ; 0xf54cf keyboard.c:589 + shr ax, 008h ; c1 e8 08 ; 0xf54d3 + mov byte [bp-008h], al ; 88 46 f8 ; 0xf54d6 + jmp short 05509h ; eb 2e ; 0xf54d9 keyboard.c:591 + mov bl, byte [bp-008h] ; 8a 5e f8 ; 0xf54db keyboard.c:593 + xor bh, bh ; 30 ff ; 0xf54de + imul bx, bx, strict byte 0000ah ; 6b db 0a ; 0xf54e0 + mov al, byte [bx+00df6h] ; 8a 87 f6 0d ; 0xf54e3 + xor ah, ah ; 30 e4 ; 0xf54e7 + mov dl, dh ; 88 f2 ; 0xf54e9 + xor dh, dh ; 30 f6 ; 0xf54eb + test dx, ax ; 85 c2 ; 0xf54ed + je short 054fbh ; 74 0a ; 0xf54ef + mov dl, byte [bx+00df0h] ; 8a 97 f0 0d ; 0xf54f1 keyboard.c:594 + mov ax, word [bx+00df0h] ; 8b 87 f0 0d ; 0xf54f5 keyboard.c:595 + jmp short 05503h ; eb 08 ; 0xf54f9 keyboard.c:596 + mov dl, byte [bx+00deeh] ; 8a 97 ee 0d ; 0xf54fb keyboard.c:597 + mov ax, word [bx+00deeh] ; 8b 87 ee 0d ; 0xf54ff keyboard.c:598 + shr ax, 008h ; c1 e8 08 ; 0xf5503 + mov byte [bp-008h], al ; 88 46 f8 ; 0xf5506 + cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf5509 keyboard.c:601 + jne short 05529h ; 75 1a ; 0xf550d + test dl, dl ; 84 d2 ; 0xf550f + jne short 05529h ; 75 16 ; 0xf5511 + mov bx, 00da0h ; bb a0 0d ; 0xf5513 keyboard.c:602 + mov cx, ds ; 8c d9 ; 0xf5516 + mov ax, strict word 00004h ; b8 04 00 ; 0xf5518 + call 018bch ; e8 9e c3 ; 0xf551b + push 005d8h ; 68 d8 05 ; 0xf551e + push strict byte 00004h ; 6a 04 ; 0xf5521 + call 018ffh ; e8 d9 c3 ; 0xf5523 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf5526 + xor dh, dh ; 30 f6 ; 0xf5529 keyboard.c:604 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf552b + xor ah, ah ; 30 e4 ; 0xf552e + jmp near 0537fh ; e9 4c fe ; 0xf5530 + ; disGetNextSymbol 0xf5533 LB 0x4995 -> off=0x0 cb=000000000000006c uValue=00000000000f3f33 'dequeue_key' +dequeue_key: ; 0xf5533 LB 0x6c + push si ; 56 ; 0xf5533 keyboard.c:614 + push di ; 57 ; 0xf5534 + enter 00002h, 000h ; c8 02 00 00 ; 0xf5535 + push ax ; 50 ; 0xf5539 + push dx ; 52 ; 0xf553a + mov si, bx ; 89 de ; 0xf553b + mov bx, 00080h ; bb 80 00 ; 0xf553d keyboard.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5540 + mov es, ax ; 8e c0 ; 0xf5543 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf5545 + mov word [bp-002h], ax ; 89 46 fe ; 0xf5548 + mov bx, 00082h ; bb 82 00 ; 0xf554b keyboard.c:48 + mov dx, word [es:bx] ; 26 8b 17 ; 0xf554e + mov bx, strict word 0001ah ; bb 1a 00 ; 0xf5551 keyboard.c:48 + mov bx, word [es:bx] ; 26 8b 1f ; 0xf5554 + mov di, strict word 0001ch ; bf 1c 00 ; 0xf5557 keyboard.c:48 + mov ax, word [es:di] ; 26 8b 05 ; 0xf555a + cmp bx, ax ; 39 c3 ; 0xf555d keyboard.c:630 + je short 05597h ; 74 36 ; 0xf555f + mov al, byte [es:bx] ; 26 8a 07 ; 0xf5561 keyboard.c:38 + lea di, [bx+001h] ; 8d 7f 01 ; 0xf5564 keyboard.c:632 + mov ah, byte [es:di] ; 26 8a 25 ; 0xf5567 keyboard.c:38 + mov es, cx ; 8e c1 ; 0xf556a keyboard.c:633 + mov byte [es:si], al ; 26 88 04 ; 0xf556c + mov es, [bp-006h] ; 8e 46 fa ; 0xf556f keyboard.c:634 + mov si, word [bp-004h] ; 8b 76 fc ; 0xf5572 + mov byte [es:si], ah ; 26 88 24 ; 0xf5575 + cmp word [bp+008h], strict byte 00000h ; 83 7e 08 00 ; 0xf5578 keyboard.c:637 + je short 05592h ; 74 14 ; 0xf557c + inc bx ; 43 ; 0xf557e keyboard.c:638 + inc bx ; 43 ; 0xf557f + cmp bx, dx ; 39 d3 ; 0xf5580 keyboard.c:639 + jc short 05587h ; 72 03 ; 0xf5582 + mov bx, word [bp-002h] ; 8b 5e fe ; 0xf5584 keyboard.c:640 + mov si, strict word 0001ah ; be 1a 00 ; 0xf5587 keyboard.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf558a + mov es, ax ; 8e c0 ; 0xf558d + mov word [es:si], bx ; 26 89 1c ; 0xf558f + mov ax, strict word 00001h ; b8 01 00 ; 0xf5592 keyboard.c:643 + jmp short 05599h ; eb 02 ; 0xf5595 + xor ax, ax ; 31 c0 ; 0xf5597 keyboard.c:646 + leave ; c9 ; 0xf5599 keyboard.c:648 + pop di ; 5f ; 0xf559a + pop si ; 5e ; 0xf559b + retn 00002h ; c2 02 00 ; 0xf559c + ; disGetNextSymbol 0xf559f LB 0x4929 -> off=0x23 cb=00000000000002ee uValue=00000000000f3fc2 'int16_function' + db 0a2h, 092h, 012h, 011h, 010h, 00ah, 009h, 005h, 002h, 001h, 000h, 0c3h, 056h, 07ah, 056h, 00dh + db 057h, 05ah, 057h, 06dh, 057h, 096h, 057h, 09fh, 057h, 010h, 058h, 042h, 058h, 072h, 058h, 0a5h + db 058h, 006h, 057h +int16_function: ; 0xf55c2 LB 0x2ee + push bp ; 55 ; 0xf55c2 keyboard.c:665 + mov bp, sp ; 89 e5 ; 0xf55c3 + push si ; 56 ; 0xf55c5 + push di ; 57 ; 0xf55c6 + sub sp, strict byte 00006h ; 83 ec 06 ; 0xf55c7 + mov bx, strict word 00017h ; bb 17 00 ; 0xf55ca keyboard.c:38 + mov ax, strict word 00040h ; b8 40 00 ; 0xf55cd + mov es, ax ; 8e c0 ; 0xf55d0 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf55d2 + mov bl, al ; 88 c3 ; 0xf55d5 keyboard.c:39 + mov si, 00097h ; be 97 00 ; 0xf55d7 keyboard.c:38 + mov dl, byte [es:si] ; 26 8a 14 ; 0xf55da + mov bh, dl ; 88 d7 ; 0xf55dd keyboard.c:39 + xor ah, ah ; 30 e4 ; 0xf55df keyboard.c:674 + mov cx, ax ; 89 c1 ; 0xf55e1 + sar cx, 004h ; c1 f9 04 ; 0xf55e3 + and cl, 007h ; 80 e1 07 ; 0xf55e6 + mov al, dl ; 88 d0 ; 0xf55e9 + and AL, strict byte 007h ; 24 07 ; 0xf55eb + xor al, cl ; 30 c8 ; 0xf55ed + test ax, ax ; 85 c0 ; 0xf55ef + je short 0565ah ; 74 67 ; 0xf55f1 + cli ; fa ; 0xf55f3 keyboard.c:675 + mov AL, strict byte 0edh ; b0 ed ; 0xf55f4 keyboard.c:676 + mov dx, strict word 00060h ; ba 60 00 ; 0xf55f6 + out DX, AL ; ee ; 0xf55f9 + mov dx, strict word 00064h ; ba 64 00 ; 0xf55fa keyboard.c:677 + in AL, DX ; ec ; 0xf55fd + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf55fe + test AL, strict byte 001h ; a8 01 ; 0xf5600 + jne short 0560ch ; 75 08 ; 0xf5602 + mov AL, strict byte 021h ; b0 21 ; 0xf5604 + mov dx, 00080h ; ba 80 00 ; 0xf5606 + out DX, AL ; ee ; 0xf5609 + jmp short 055fah ; eb ee ; 0xf560a + mov dx, strict word 00060h ; ba 60 00 ; 0xf560c keyboard.c:678 + in AL, DX ; ec ; 0xf560f + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf5610 + cmp ax, 000fah ; 3d fa 00 ; 0xf5612 + jne short 05659h ; 75 42 ; 0xf5615 + mov dl, bh ; 88 fa ; 0xf5617 keyboard.c:679 + and dl, 0c8h ; 80 e2 c8 ; 0xf5619 + mov al, bl ; 88 d8 ; 0xf561c keyboard.c:680 + xor ah, ah ; 30 e4 ; 0xf561e + mov cx, ax ; 89 c1 ; 0xf5620 + sar cx, 004h ; c1 f9 04 ; 0xf5622 + and cl, 007h ; 80 e1 07 ; 0xf5625 + xor dh, dh ; 30 f6 ; 0xf5628 + mov ax, dx ; 89 d0 ; 0xf562a + or al, cl ; 08 c8 ; 0xf562c + mov bh, al ; 88 c7 ; 0xf562e + and AL, strict byte 007h ; 24 07 ; 0xf5630 keyboard.c:681 + mov dx, strict word 00060h ; ba 60 00 ; 0xf5632 + out DX, AL ; ee ; 0xf5635 + mov dx, strict word 00064h ; ba 64 00 ; 0xf5636 keyboard.c:682 + in AL, DX ; ec ; 0xf5639 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf563a + test AL, strict byte 001h ; a8 01 ; 0xf563c + jne short 05648h ; 75 08 ; 0xf563e + mov AL, strict byte 021h ; b0 21 ; 0xf5640 keyboard.c:683 + mov dx, 00080h ; ba 80 00 ; 0xf5642 + out DX, AL ; ee ; 0xf5645 + jmp short 05636h ; eb ee ; 0xf5646 + mov dx, strict word 00060h ; ba 60 00 ; 0xf5648 keyboard.c:684 + in AL, DX ; ec ; 0xf564b + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf564c + mov si, 00097h ; be 97 00 ; 0xf564e keyboard.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5651 + mov es, ax ; 8e c0 ; 0xf5654 + mov byte [es:si], bh ; 26 88 3c ; 0xf5656 + sti ; fb ; 0xf5659 keyboard.c:687 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf565a keyboard.c:690 + shr ax, 008h ; c1 e8 08 ; 0xf565d + cmp ax, 000a2h ; 3d a2 00 ; 0xf5660 + jnbe short 056c3h ; 77 5e ; 0xf5663 + push CS ; 0e ; 0xf5665 + pop ES ; 07 ; 0xf5666 + mov cx, strict word 0000ch ; b9 0c 00 ; 0xf5667 + mov di, 0559fh ; bf 9f 55 ; 0xf566a + repne scasb ; f2 ae ; 0xf566d + sal cx, 1 ; d1 e1 ; 0xf566f + mov di, cx ; 89 cf ; 0xf5671 + mov ax, word [cs:di+055aah] ; 2e 8b 85 aa 55 ; 0xf5673 + jmp ax ; ff e0 ; 0xf5678 + push strict byte 00001h ; 6a 01 ; 0xf567a keyboard.c:692 + mov cx, ss ; 8c d1 ; 0xf567c + lea bx, [bp-006h] ; 8d 5e fa ; 0xf567e + mov dx, ss ; 8c d2 ; 0xf5681 + lea ax, [bp-00ah] ; 8d 46 f6 ; 0xf5683 + call 05533h ; e8 aa fe ; 0xf5686 + test ax, ax ; 85 c0 ; 0xf5689 + jne short 05698h ; 75 0b ; 0xf568b + push 0060fh ; 68 0f 06 ; 0xf568d keyboard.c:693 + push strict byte 00007h ; 6a 07 ; 0xf5690 + call 018ffh ; e8 6a c2 ; 0xf5692 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf5695 + cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf5698 keyboard.c:695 + je short 056a4h ; 74 06 ; 0xf569c + cmp byte [bp-006h], 0f0h ; 80 7e fa f0 ; 0xf569e + je short 056aah ; 74 06 ; 0xf56a2 + cmp byte [bp-006h], 0e0h ; 80 7e fa e0 ; 0xf56a4 keyboard.c:697 + jne short 056aeh ; 75 04 ; 0xf56a8 + mov byte [bp-006h], 000h ; c6 46 fa 00 ; 0xf56aa keyboard.c:698 + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf56ae keyboard.c:699 + xor ah, ah ; 30 e4 ; 0xf56b1 + mov dx, ax ; 89 c2 ; 0xf56b3 + sal dx, 008h ; c1 e2 08 ; 0xf56b5 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf56b8 + or dx, ax ; 09 c2 ; 0xf56bb + mov word [bp+012h], dx ; 89 56 12 ; 0xf56bd + jmp near 05706h ; e9 43 00 ; 0xf56c0 keyboard.c:700 + mov bx, 00da0h ; bb a0 0d ; 0xf56c3 + mov cx, ds ; 8c d9 ; 0xf56c6 + mov ax, strict word 00004h ; b8 04 00 ; 0xf56c8 + call 018bch ; e8 ee c1 ; 0xf56cb + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf56ce + shr ax, 008h ; c1 e8 08 ; 0xf56d1 + push ax ; 50 ; 0xf56d4 + push 00633h ; 68 33 06 ; 0xf56d5 + push strict byte 00004h ; 6a 04 ; 0xf56d8 + call 018ffh ; e8 22 c2 ; 0xf56da + add sp, strict byte 00006h ; 83 c4 06 ; 0xf56dd + mov bx, 00da0h ; bb a0 0d ; 0xf56e0 + mov cx, ds ; 8c d9 ; 0xf56e3 + mov ax, strict word 00004h ; b8 04 00 ; 0xf56e5 + call 018bch ; e8 d1 c1 ; 0xf56e8 + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf56eb + push ax ; 50 ; 0xf56ee + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf56ef + push ax ; 50 ; 0xf56f2 + mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf56f3 + push ax ; 50 ; 0xf56f6 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf56f7 + push ax ; 50 ; 0xf56fa + push 0065bh ; 68 5b 06 ; 0xf56fb + push strict byte 00004h ; 6a 04 ; 0xf56fe + call 018ffh ; e8 fc c1 ; 0xf5700 + add sp, strict byte 0000ch ; 83 c4 0c ; 0xf5703 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf5706 + pop di ; 5f ; 0xf5709 + pop si ; 5e ; 0xf570a + pop bp ; 5d ; 0xf570b + retn ; c3 ; 0xf570c + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf570d keyboard.c:704 + mov word [bp+01eh], ax ; 89 46 1e ; 0xf5710 + push strict byte 00000h ; 6a 00 ; 0xf5713 keyboard.c:705 + mov cx, ss ; 8c d1 ; 0xf5715 + lea bx, [bp-006h] ; 8d 5e fa ; 0xf5717 + mov dx, ss ; 8c d2 ; 0xf571a + lea ax, [bp-00ah] ; 8d 46 f6 ; 0xf571c + call 05533h ; e8 11 fe ; 0xf571f + test ax, ax ; 85 c0 ; 0xf5722 + jne short 0572ch ; 75 06 ; 0xf5724 + or word [bp+01eh], strict byte 00040h ; 83 4e 1e 40 ; 0xf5726 keyboard.c:706 + jmp short 05706h ; eb da ; 0xf572a keyboard.c:707 + cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf572c keyboard.c:709 + je short 05738h ; 74 06 ; 0xf5730 + cmp byte [bp-006h], 0f0h ; 80 7e fa f0 ; 0xf5732 + je short 0573eh ; 74 06 ; 0xf5736 + cmp byte [bp-006h], 0e0h ; 80 7e fa e0 ; 0xf5738 keyboard.c:711 + jne short 05742h ; 75 04 ; 0xf573c + mov byte [bp-006h], 000h ; c6 46 fa 00 ; 0xf573e keyboard.c:712 + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf5742 keyboard.c:713 + xor ah, ah ; 30 e4 ; 0xf5745 + mov dx, ax ; 89 c2 ; 0xf5747 + sal dx, 008h ; c1 e2 08 ; 0xf5749 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf574c + or dx, ax ; 09 c2 ; 0xf574f + mov word [bp+012h], dx ; 89 56 12 ; 0xf5751 + and word [bp+01eh], strict byte 0ffbfh ; 83 66 1e bf ; 0xf5754 keyboard.c:714 + jmp short 05706h ; eb ac ; 0xf5758 keyboard.c:715 + mov bx, strict word 00017h ; bb 17 00 ; 0xf575a keyboard.c:38 + mov ax, strict word 00040h ; b8 40 00 ; 0xf575d + mov es, ax ; 8e c0 ; 0xf5760 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf5762 + mov dx, word [bp+012h] ; 8b 56 12 ; 0xf5765 keyboard.c:719 + mov dl, al ; 88 c2 ; 0xf5768 + jmp near 056bdh ; e9 50 ff ; 0xf576a + mov dl, byte [bp+010h] ; 8a 56 10 ; 0xf576d keyboard.c:723 + xor dh, dh ; 30 f6 ; 0xf5770 + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf5772 + shr ax, 008h ; c1 e8 08 ; 0xf5775 + xor ah, ah ; 30 e4 ; 0xf5778 + call 050e7h ; e8 6a f9 ; 0xf577a + test ax, ax ; 85 c0 ; 0xf577d + jne short 0578eh ; 75 0d ; 0xf577f + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf5781 keyboard.c:724 + xor al, al ; 30 c0 ; 0xf5784 + or AL, strict byte 001h ; 0c 01 ; 0xf5786 + mov word [bp+012h], ax ; 89 46 12 ; 0xf5788 + jmp near 05706h ; e9 78 ff ; 0xf578b keyboard.c:726 + and word [bp+012h], 0ff00h ; 81 66 12 00 ff ; 0xf578e keyboard.c:727 + jmp near 05706h ; e9 70 ff ; 0xf5793 keyboard.c:729 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf5796 keyboard.c:742 + xor al, al ; 30 c0 ; 0xf5799 + or AL, strict byte 030h ; 0c 30 ; 0xf579b + jmp short 05788h ; eb e9 ; 0xf579d + mov byte [bp-008h], 002h ; c6 46 f8 02 ; 0xf579f keyboard.c:746 + xor cx, cx ; 31 c9 ; 0xf57a3 keyboard.c:747 + cli ; fa ; 0xf57a5 keyboard.c:749 + mov AL, strict byte 0f2h ; b0 f2 ; 0xf57a6 keyboard.c:750 + mov dx, strict word 00060h ; ba 60 00 ; 0xf57a8 + out DX, AL ; ee ; 0xf57ab + mov bx, strict word 0ffffh ; bb ff ff ; 0xf57ac keyboard.c:752 + mov dx, strict word 00064h ; ba 64 00 ; 0xf57af keyboard.c:753 + in AL, DX ; ec ; 0xf57b2 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf57b3 + test AL, strict byte 001h ; a8 01 ; 0xf57b5 + jne short 057c6h ; 75 0d ; 0xf57b7 + dec bx ; 4b ; 0xf57b9 + test bx, bx ; 85 db ; 0xf57ba + jbe short 057c6h ; 76 08 ; 0xf57bc + mov dx, 00080h ; ba 80 00 ; 0xf57be keyboard.c:754 + in AL, DX ; ec ; 0xf57c1 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf57c2 + jmp short 057afh ; eb e9 ; 0xf57c4 + test bx, bx ; 85 db ; 0xf57c6 keyboard.c:755 + jbe short 0580ah ; 76 40 ; 0xf57c8 + mov dx, strict word 00060h ; ba 60 00 ; 0xf57ca keyboard.c:756 + in AL, DX ; ec ; 0xf57cd + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf57ce + cmp ax, 000fah ; 3d fa 00 ; 0xf57d0 + jne short 0580ah ; 75 35 ; 0xf57d3 + mov bx, strict word 0ffffh ; bb ff ff ; 0xf57d5 keyboard.c:758 + mov dx, strict word 00064h ; ba 64 00 ; 0xf57d8 keyboard.c:759 + in AL, DX ; ec ; 0xf57db + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf57dc + test AL, strict byte 001h ; a8 01 ; 0xf57de + jne short 057efh ; 75 0d ; 0xf57e0 + dec bx ; 4b ; 0xf57e2 + test bx, bx ; 85 db ; 0xf57e3 + jbe short 057efh ; 76 08 ; 0xf57e5 + mov dx, 00080h ; ba 80 00 ; 0xf57e7 keyboard.c:760 + in AL, DX ; ec ; 0xf57ea + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf57eb + jmp short 057d8h ; eb e9 ; 0xf57ed + test bx, bx ; 85 db ; 0xf57ef keyboard.c:761 + jbe short 05801h ; 76 0e ; 0xf57f1 + shr cx, 008h ; c1 e9 08 ; 0xf57f3 keyboard.c:762 + mov dx, strict word 00060h ; ba 60 00 ; 0xf57f6 keyboard.c:763 + in AL, DX ; ec ; 0xf57f9 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf57fa + sal ax, 008h ; c1 e0 08 ; 0xf57fc + or cx, ax ; 09 c1 ; 0xf57ff + dec byte [bp-008h] ; fe 4e f8 ; 0xf5801 keyboard.c:765 + cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf5804 + jnbe short 057d5h ; 77 cb ; 0xf5808 + mov word [bp+00ch], cx ; 89 4e 0c ; 0xf580a keyboard.c:768 + jmp near 05706h ; e9 f6 fe ; 0xf580d keyboard.c:769 + push strict byte 00001h ; 6a 01 ; 0xf5810 keyboard.c:772 + mov cx, ss ; 8c d1 ; 0xf5812 + lea bx, [bp-006h] ; 8d 5e fa ; 0xf5814 + mov dx, ss ; 8c d2 ; 0xf5817 + lea ax, [bp-00ah] ; 8d 46 f6 ; 0xf5819 + call 05533h ; e8 14 fd ; 0xf581c + test ax, ax ; 85 c0 ; 0xf581f + jne short 0582eh ; 75 0b ; 0xf5821 + push 0060fh ; 68 0f 06 ; 0xf5823 keyboard.c:773 + push strict byte 00007h ; 6a 07 ; 0xf5826 + call 018ffh ; e8 d4 c0 ; 0xf5828 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf582b + cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf582e keyboard.c:775 + jne short 05837h ; 75 03 ; 0xf5832 + jmp near 056aeh ; e9 77 fe ; 0xf5834 + cmp byte [bp-006h], 0f0h ; 80 7e fa f0 ; 0xf5837 + jne short 05840h ; 75 03 ; 0xf583b + jmp near 056aah ; e9 6a fe ; 0xf583d + jmp short 05834h ; eb f2 ; 0xf5840 + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf5842 keyboard.c:782 + mov word [bp+01eh], ax ; 89 46 1e ; 0xf5845 + push strict byte 00000h ; 6a 00 ; 0xf5848 keyboard.c:783 + mov cx, ss ; 8c d1 ; 0xf584a + lea bx, [bp-006h] ; 8d 5e fa ; 0xf584c + mov dx, ss ; 8c d2 ; 0xf584f + lea ax, [bp-00ah] ; 8d 46 f6 ; 0xf5851 + call 05533h ; e8 dc fc ; 0xf5854 + test ax, ax ; 85 c0 ; 0xf5857 + jne short 0585eh ; 75 03 ; 0xf5859 + jmp near 05726h ; e9 c8 fe ; 0xf585b + cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf585e keyboard.c:787 + jne short 05867h ; 75 03 ; 0xf5862 + jmp near 05742h ; e9 db fe ; 0xf5864 + cmp byte [bp-006h], 0f0h ; 80 7e fa f0 ; 0xf5867 + jne short 05870h ; 75 03 ; 0xf586b + jmp near 0573eh ; e9 ce fe ; 0xf586d + jmp short 05864h ; eb f2 ; 0xf5870 + mov bx, strict word 00017h ; bb 17 00 ; 0xf5872 keyboard.c:38 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5875 + mov es, ax ; 8e c0 ; 0xf5878 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf587a + mov dx, word [bp+012h] ; 8b 56 12 ; 0xf587d keyboard.c:795 + mov dl, al ; 88 c2 ; 0xf5880 + mov word [bp+012h], dx ; 89 56 12 ; 0xf5882 + mov bx, strict word 00018h ; bb 18 00 ; 0xf5885 keyboard.c:38 + mov bl, byte [es:bx] ; 26 8a 1f ; 0xf5888 + and bl, 073h ; 80 e3 73 ; 0xf588b keyboard.c:39 + mov si, 00096h ; be 96 00 ; 0xf588e keyboard.c:38 + mov al, byte [es:si] ; 26 8a 04 ; 0xf5891 + and AL, strict byte 00ch ; 24 0c ; 0xf5894 keyboard.c:39 + or al, bl ; 08 d8 ; 0xf5896 + mov dx, word [bp+012h] ; 8b 56 12 ; 0xf5898 keyboard.c:798 + xor dh, dh ; 30 f6 ; 0xf589b + xor ah, ah ; 30 e4 ; 0xf589d + sal ax, 008h ; c1 e0 08 ; 0xf589f + jmp near 056bbh ; e9 16 fe ; 0xf58a2 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf58a5 keyboard.c:803 + xor ah, ah ; 30 e4 ; 0xf58a8 + or ah, 080h ; 80 cc 80 ; 0xf58aa + jmp near 05788h ; e9 d8 fe ; 0xf58ad + ; disGetNextSymbol 0xf58b0 LB 0x4618 -> off=0x0 cb=00000000000000b5 uValue=00000000000f42b0 'set_geom_lba' +set_geom_lba: ; 0xf58b0 LB 0xb5 + push bx ; 53 ; 0xf58b0 disk.c:115 + push cx ; 51 ; 0xf58b1 + push si ; 56 ; 0xf58b2 + push di ; 57 ; 0xf58b3 + enter 00008h, 000h ; c8 08 00 00 ; 0xf58b4 + mov di, ax ; 89 c7 ; 0xf58b8 + mov es, dx ; 8e c2 ; 0xf58ba + mov word [bp-008h], strict word 00000h ; c7 46 f8 00 00 ; 0xf58bc disk.c:117 + mov word [bp-006h], strict word 0007eh ; c7 46 fa 7e 00 ; 0xf58c1 + mov word [bp-002h], 000ffh ; c7 46 fe ff 00 ; 0xf58c6 disk.c:119 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf58cb disk.c:122 + mov bx, word [bp+010h] ; 8b 5e 10 ; 0xf58ce + mov cx, word [bp+00eh] ; 8b 4e 0e ; 0xf58d1 + mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf58d4 + mov si, strict word 00020h ; be 20 00 ; 0xf58d7 + call 09b90h ; e8 b3 42 ; 0xf58da + test ax, ax ; 85 c0 ; 0xf58dd + jne short 058edh ; 75 0c ; 0xf58df + test bx, bx ; 85 db ; 0xf58e1 + jne short 058edh ; 75 08 ; 0xf58e3 + test cx, cx ; 85 c9 ; 0xf58e5 + jne short 058edh ; 75 04 ; 0xf58e7 + test dx, dx ; 85 d2 ; 0xf58e9 + je short 058f4h ; 74 07 ; 0xf58eb + mov bx, strict word 0ffffh ; bb ff ff ; 0xf58ed + mov si, bx ; 89 de ; 0xf58f0 + jmp short 058fah ; eb 06 ; 0xf58f2 + mov bx, word [bp+00ch] ; 8b 5e 0c ; 0xf58f4 + mov si, word [bp+00eh] ; 8b 76 0e ; 0xf58f7 + mov word [bp-004h], bx ; 89 5e fc ; 0xf58fa + xor bx, bx ; 31 db ; 0xf58fd disk.c:124 + jmp short 05906h ; eb 05 ; 0xf58ff + cmp bx, strict byte 00004h ; 83 fb 04 ; 0xf5901 + jnl short 05929h ; 7d 23 ; 0xf5904 + mov ax, word [bp-006h] ; 8b 46 fa ; 0xf5906 disk.c:125 + cmp si, ax ; 39 c6 ; 0xf5909 + jc short 05917h ; 72 0a ; 0xf590b + jne short 05920h ; 75 11 ; 0xf590d + mov ax, word [bp-004h] ; 8b 46 fc ; 0xf590f + cmp ax, word [bp-008h] ; 3b 46 f8 ; 0xf5912 + jnbe short 05920h ; 77 09 ; 0xf5915 + mov ax, word [bp-002h] ; 8b 46 fe ; 0xf5917 disk.c:126 + inc ax ; 40 ; 0xf591a + shr ax, 1 ; d1 e8 ; 0xf591b + mov word [bp-002h], ax ; 89 46 fe ; 0xf591d + shr word [bp-006h], 1 ; d1 6e fa ; 0xf5920 disk.c:127 + rcr word [bp-008h], 1 ; d1 5e f8 ; 0xf5923 + inc bx ; 43 ; 0xf5926 disk.c:128 + jmp short 05901h ; eb d8 ; 0xf5927 + mov ax, word [bp-002h] ; 8b 46 fe ; 0xf5929 disk.c:130 + xor dx, dx ; 31 d2 ; 0xf592c + mov bx, strict word 0003fh ; bb 3f 00 ; 0xf592e + xor cx, cx ; 31 c9 ; 0xf5931 + call 09b40h ; e8 0a 42 ; 0xf5933 + mov bx, ax ; 89 c3 ; 0xf5936 + mov cx, dx ; 89 d1 ; 0xf5938 + mov ax, word [bp-004h] ; 8b 46 fc ; 0xf593a + mov dx, si ; 89 f2 ; 0xf593d + call 09b60h ; e8 1e 42 ; 0xf593f + mov word [es:di+002h], ax ; 26 89 45 02 ; 0xf5942 + cmp ax, 00400h ; 3d 00 04 ; 0xf5946 disk.c:131 + jbe short 05951h ; 76 06 ; 0xf5949 + mov word [es:di+002h], 00400h ; 26 c7 45 02 00 04 ; 0xf594b disk.c:132 + mov ax, word [bp-002h] ; 8b 46 fe ; 0xf5951 disk.c:133 + mov word [es:di], ax ; 26 89 05 ; 0xf5954 + mov word [es:di+004h], strict word 0003fh ; 26 c7 45 04 3f 00 ; 0xf5957 disk.c:134 + leave ; c9 ; 0xf595d disk.c:135 + pop di ; 5f ; 0xf595e + pop si ; 5e ; 0xf595f + pop cx ; 59 ; 0xf5960 + pop bx ; 5b ; 0xf5961 + retn 00008h ; c2 08 00 ; 0xf5962 + ; disGetNextSymbol 0xf5965 LB 0x4563 -> off=0x0 cb=00000000000002fc uValue=00000000000f4365 'edd_fill_dpt' +edd_fill_dpt: ; 0xf5965 LB 0x2fc + push si ; 56 ; 0xf5965 disk.c:137 + push di ; 57 ; 0xf5966 + enter 0000ch, 000h ; c8 0c 00 00 ; 0xf5967 + mov di, ax ; 89 c7 ; 0xf596b + mov word [bp-004h], dx ; 89 56 fc ; 0xf596d + mov word [bp-008h], bx ; 89 5e f8 ; 0xf5970 + mov word [bp-006h], cx ; 89 4e fa ; 0xf5973 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf5976 disk.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5979 + mov es, ax ; 8e c0 ; 0xf597c + mov ax, word [es:bx] ; 26 8b 07 ; 0xf597e + mov word [bp-00ah], ax ; 89 46 f6 ; 0xf5981 disk.c:49 + mov es, dx ; 8e c2 ; 0xf5984 disk.c:142 + mov ax, word [es:di] ; 26 8b 05 ; 0xf5986 + cmp ax, strict word 0001ah ; 3d 1a 00 ; 0xf5989 + jnc short 05994h ; 73 06 ; 0xf598c + mov ax, strict word 0ffffh ; b8 ff ff ; 0xf598e disk.c:143 + jmp near 05c5bh ; e9 c7 02 ; 0xf5991 + jc short 05a05h ; 72 6f ; 0xf5994 disk.c:146 + mov word [es:di], strict word 0001ah ; 26 c7 05 1a 00 ; 0xf5996 disk.c:149 + mov al, byte [bp+008h] ; 8a 46 08 ; 0xf599b disk.c:150 + xor ah, ah ; 30 e4 ; 0xf599e + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf59a0 + mov dx, cx ; 89 ca ; 0xf59a3 + mov bx, word [bp-008h] ; 8b 5e f8 ; 0xf59a5 + add bx, ax ; 01 c3 ; 0xf59a8 + mov es, cx ; 8e c1 ; 0xf59aa + mov ax, word [es:bx+028h] ; 26 8b 47 28 ; 0xf59ac + mov es, [bp-004h] ; 8e 46 fc ; 0xf59b0 + mov word [es:di+018h], ax ; 26 89 45 18 ; 0xf59b3 + mov es, cx ; 8e c1 ; 0xf59b7 disk.c:152 + cmp byte [es:bx+023h], 005h ; 26 80 7f 23 05 ; 0xf59b9 + jne short 05a07h ; 75 47 ; 0xf59be + mov es, [bp-004h] ; 8e 46 fc ; 0xf59c0 disk.c:153 + mov word [es:di+002h], strict word 00074h ; 26 c7 45 02 74 00 ; 0xf59c3 + mov word [es:di+004h], strict word 0ffffh ; 26 c7 45 04 ff ff ; 0xf59c9 disk.c:154 + mov word [es:di+006h], strict word 0ffffh ; 26 c7 45 06 ff ff ; 0xf59cf + mov word [es:di+008h], strict word 0ffffh ; 26 c7 45 08 ff ff ; 0xf59d5 disk.c:155 + mov word [es:di+00ah], strict word 0ffffh ; 26 c7 45 0a ff ff ; 0xf59db + mov word [es:di+00ch], strict word 0ffffh ; 26 c7 45 0c ff ff ; 0xf59e1 disk.c:156 + mov word [es:di+00eh], strict word 0ffffh ; 26 c7 45 0e ff ff ; 0xf59e7 + mov word [es:di+010h], strict word 0ffffh ; 26 c7 45 10 ff ff ; 0xf59ed disk.c:157 + mov word [es:di+012h], strict word 0ffffh ; 26 c7 45 12 ff ff ; 0xf59f3 + mov word [es:di+014h], strict word 0ffffh ; 26 c7 45 14 ff ff ; 0xf59f9 disk.c:158 + mov word [es:di+016h], strict word 0ffffh ; 26 c7 45 16 ff ff ; 0xf59ff + jmp short 05a76h ; eb 6f ; 0xf5a05 disk.c:159 + mov es, [bp-004h] ; 8e 46 fc ; 0xf5a07 disk.c:160 + mov word [es:di+002h], strict word 00002h ; 26 c7 45 02 02 00 ; 0xf5a0a + mov es, cx ; 8e c1 ; 0xf5a10 disk.c:161 + mov ax, word [es:bx+032h] ; 26 8b 47 32 ; 0xf5a12 + mov es, [bp-004h] ; 8e 46 fc ; 0xf5a16 + mov word [es:di+004h], ax ; 26 89 45 04 ; 0xf5a19 + mov word [es:di+006h], strict word 00000h ; 26 c7 45 06 00 00 ; 0xf5a1d + mov es, cx ; 8e c1 ; 0xf5a23 disk.c:162 + mov ax, word [es:bx+030h] ; 26 8b 47 30 ; 0xf5a25 + mov es, [bp-004h] ; 8e 46 fc ; 0xf5a29 + mov word [es:di+008h], ax ; 26 89 45 08 ; 0xf5a2c + mov word [es:di+00ah], strict word 00000h ; 26 c7 45 0a 00 00 ; 0xf5a30 + mov es, cx ; 8e c1 ; 0xf5a36 disk.c:163 + mov ax, word [es:bx+034h] ; 26 8b 47 34 ; 0xf5a38 + mov es, [bp-004h] ; 8e 46 fc ; 0xf5a3c + mov word [es:di+00ch], ax ; 26 89 45 0c ; 0xf5a3f + mov word [es:di+00eh], strict word 00000h ; 26 c7 45 0e 00 00 ; 0xf5a43 + mov es, cx ; 8e c1 ; 0xf5a49 disk.c:164 + mov ax, word [es:bx+03ch] ; 26 8b 47 3c ; 0xf5a4b + mov si, word [es:bx+03ah] ; 26 8b 77 3a ; 0xf5a4f + mov cx, word [es:bx+038h] ; 26 8b 4f 38 ; 0xf5a53 + mov dx, word [es:bx+036h] ; 26 8b 57 36 ; 0xf5a57 + mov es, [bp-004h] ; 8e 46 fc ; 0xf5a5b disk.c:165 + mov word [es:di+010h], dx ; 26 89 55 10 ; 0xf5a5e + mov word [es:di+012h], cx ; 26 89 4d 12 ; 0xf5a62 + mov bx, si ; 89 f3 ; 0xf5a66 disk.c:166 + mov si, strict word 00020h ; be 20 00 ; 0xf5a68 + call 09b90h ; e8 22 41 ; 0xf5a6b + mov word [es:di+014h], dx ; 26 89 55 14 ; 0xf5a6e + mov word [es:di+016h], cx ; 26 89 4d 16 ; 0xf5a72 + mov es, [bp-004h] ; 8e 46 fc ; 0xf5a76 disk.c:171 + cmp word [es:di], strict byte 0001eh ; 26 83 3d 1e ; 0xf5a79 + jc short 05aceh ; 72 4f ; 0xf5a7d + mov word [es:di], strict word 0001eh ; 26 c7 05 1e 00 ; 0xf5a7f disk.c:175 + mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf5a84 disk.c:176 + mov word [es:di+01ch], ax ; 26 89 45 1c ; 0xf5a87 + mov word [es:di+01ah], 00356h ; 26 c7 45 1a 56 03 ; 0xf5a8b disk.c:177 + mov cl, byte [bp+008h] ; 8a 4e 08 ; 0xf5a91 disk.c:180 + xor ch, ch ; 30 ed ; 0xf5a94 + mov ax, cx ; 89 c8 ; 0xf5a96 + cwd ; 99 ; 0xf5a98 + db 02bh, 0c2h + ; sub ax, dx ; 2b c2 ; 0xf5a99 + sar ax, 1 ; d1 f8 ; 0xf5a9b + xor ah, ah ; 30 e4 ; 0xf5a9d disk.c:181 + imul ax, ax, strict byte 00006h ; 6b c0 06 ; 0xf5a9f + les bx, [bp-008h] ; c4 5e f8 ; 0xf5aa2 + add bx, ax ; 01 c3 ; 0xf5aa5 + mov dx, word [es:bx+00206h] ; 26 8b 97 06 02 ; 0xf5aa7 + mov ax, word [es:bx+00208h] ; 26 8b 87 08 02 ; 0xf5aac disk.c:182 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf5ab1 + mov al, byte [es:bx+00205h] ; 26 8a 87 05 02 ; 0xf5ab4 disk.c:183 + mov byte [bp-002h], al ; 88 46 fe ; 0xf5ab9 + imul bx, cx, strict byte 0001ch ; 6b d9 1c ; 0xf5abc disk.c:185 + add bx, word [bp-008h] ; 03 5e f8 ; 0xf5abf + mov cl, byte [es:bx+027h] ; 26 8a 4f 27 ; 0xf5ac2 + test cl, cl ; 84 c9 ; 0xf5ac6 disk.c:187 + jne short 05ad1h ; 75 07 ; 0xf5ac8 + xor bx, bx ; 31 db ; 0xf5aca + jmp short 05ad4h ; eb 06 ; 0xf5acc + jmp near 05b8ah ; e9 b9 00 ; 0xf5ace + mov bx, strict word 00008h ; bb 08 00 ; 0xf5ad1 + or bl, 010h ; 80 cb 10 ; 0xf5ad4 disk.c:188 + mov al, byte [bp+008h] ; 8a 46 08 ; 0xf5ad7 disk.c:189 + xor ah, ah ; 30 e4 ; 0xf5ada + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf5adc + les si, [bp-008h] ; c4 76 f8 ; 0xf5adf + add si, ax ; 01 c6 ; 0xf5ae2 + cmp byte [es:si+023h], 005h ; 26 80 7c 23 05 ; 0xf5ae4 + jne short 05aeeh ; 75 03 ; 0xf5ae9 + or bl, 060h ; 80 cb 60 ; 0xf5aeb disk.c:190 + cmp cl, 001h ; 80 f9 01 ; 0xf5aee disk.c:196 + jne short 05af8h ; 75 05 ; 0xf5af1 + mov ax, strict word 00001h ; b8 01 00 ; 0xf5af3 + jmp short 05afah ; eb 02 ; 0xf5af6 + xor ax, ax ; 31 c0 ; 0xf5af8 + or bx, ax ; 09 c3 ; 0xf5afa + cmp cl, 003h ; 80 f9 03 ; 0xf5afc disk.c:197 + jne short 05b06h ; 75 05 ; 0xf5aff + mov ax, strict word 00003h ; b8 03 00 ; 0xf5b01 + jmp short 05b08h ; eb 02 ; 0xf5b04 + xor ax, ax ; 31 c0 ; 0xf5b06 + or bx, ax ; 09 c3 ; 0xf5b08 + les si, [bp-008h] ; c4 76 f8 ; 0xf5b0a disk.c:199 + mov word [es:si+00234h], dx ; 26 89 94 34 02 ; 0xf5b0d + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf5b12 disk.c:200 + mov word [es:si+00236h], ax ; 26 89 84 36 02 ; 0xf5b15 + mov al, byte [bp+008h] ; 8a 46 08 ; 0xf5b1a disk.c:201 + xor ah, ah ; 30 e4 ; 0xf5b1d + cwd ; 99 ; 0xf5b1f + mov cx, strict word 00002h ; b9 02 00 ; 0xf5b20 + idiv cx ; f7 f9 ; 0xf5b23 + or dl, 00eh ; 80 ca 0e ; 0xf5b25 + sal dx, 004h ; c1 e2 04 ; 0xf5b28 + mov byte [es:si+00238h], dl ; 26 88 94 38 02 ; 0xf5b2b + mov byte [es:si+00239h], 0cbh ; 26 c6 84 39 02 cb ; 0xf5b30 disk.c:202 + mov al, byte [bp-002h] ; 8a 46 fe ; 0xf5b36 disk.c:203 + mov byte [es:si+0023ah], al ; 26 88 84 3a 02 ; 0xf5b39 + mov word [es:si+0023bh], strict word 00001h ; 26 c7 84 3b 02 01 00 ; 0xf5b3e disk.c:204 + mov byte [es:si+0023dh], 000h ; 26 c6 84 3d 02 00 ; 0xf5b45 disk.c:206 + mov word [es:si+0023eh], bx ; 26 89 9c 3e 02 ; 0xf5b4b disk.c:207 + mov bx, si ; 89 f3 ; 0xf5b50 disk.c:208 + mov word [es:bx+00240h], strict word 00000h ; 26 c7 87 40 02 00 00 ; 0xf5b52 + mov byte [es:bx+00242h], 011h ; 26 c6 87 42 02 11 ; 0xf5b59 disk.c:209 + xor bl, bl ; 30 db ; 0xf5b5f disk.c:211 + xor bh, bh ; 30 ff ; 0xf5b61 disk.c:212 + jmp short 05b6ah ; eb 05 ; 0xf5b63 + cmp bh, 00fh ; 80 ff 0f ; 0xf5b65 + jnc short 05b80h ; 73 16 ; 0xf5b68 + mov al, bh ; 88 f8 ; 0xf5b6a disk.c:213 + xor ah, ah ; 30 e4 ; 0xf5b6c + mov si, ax ; 89 c6 ; 0xf5b6e + add si, 00356h ; 81 c6 56 03 ; 0xf5b70 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf5b74 disk.c:38 + mov al, byte [es:si] ; 26 8a 04 ; 0xf5b77 + add bl, al ; 00 c3 ; 0xf5b7a disk.c:39 + db 0feh, 0c7h + ; inc bh ; fe c7 ; 0xf5b7c disk.c:213 + jmp short 05b65h ; eb e5 ; 0xf5b7e + neg bl ; f6 db ; 0xf5b80 disk.c:214 + les si, [bp-008h] ; c4 76 f8 ; 0xf5b82 disk.c:215 + mov byte [es:si+00243h], bl ; 26 88 9c 43 02 ; 0xf5b85 + mov es, [bp-004h] ; 8e 46 fc ; 0xf5b8a disk.c:219 + cmp word [es:di], strict byte 00042h ; 26 83 3d 42 ; 0xf5b8d + jnc short 05b96h ; 73 03 ; 0xf5b91 + jmp near 05c59h ; e9 c3 00 ; 0xf5b93 + mov al, byte [bp+008h] ; 8a 46 08 ; 0xf5b96 disk.c:223 + xor ah, ah ; 30 e4 ; 0xf5b99 + cwd ; 99 ; 0xf5b9b + db 02bh, 0c2h + ; sub ax, dx ; 2b c2 ; 0xf5b9c + sar ax, 1 ; d1 f8 ; 0xf5b9e + xor ah, ah ; 30 e4 ; 0xf5ba0 disk.c:224 + imul ax, ax, strict byte 00006h ; 6b c0 06 ; 0xf5ba2 + les bx, [bp-008h] ; c4 5e f8 ; 0xf5ba5 + add bx, ax ; 01 c3 ; 0xf5ba8 + mov al, byte [es:bx+00204h] ; 26 8a 87 04 02 ; 0xf5baa + mov dx, word [es:bx+00206h] ; 26 8b 97 06 02 ; 0xf5baf disk.c:225 + mov es, [bp-004h] ; 8e 46 fc ; 0xf5bb4 disk.c:227 + mov word [es:di], strict word 00042h ; 26 c7 05 42 00 ; 0xf5bb7 + mov word [es:di+01eh], 0beddh ; 26 c7 45 1e dd be ; 0xf5bbc disk.c:228 + mov word [es:di+020h], strict word 00024h ; 26 c7 45 20 24 00 ; 0xf5bc2 disk.c:229 + mov word [es:di+022h], strict word 00000h ; 26 c7 45 22 00 00 ; 0xf5bc8 disk.c:231 + test al, al ; 84 c0 ; 0xf5bce disk.c:233 + jne short 05bdeh ; 75 0c ; 0xf5bd0 + mov word [es:di+024h], 05349h ; 26 c7 45 24 49 53 ; 0xf5bd2 disk.c:234 + mov word [es:di+026h], 02041h ; 26 c7 45 26 41 20 ; 0xf5bd8 disk.c:236 + mov es, [bp-004h] ; 8e 46 fc ; 0xf5bde disk.c:242 + mov word [es:di+028h], 05441h ; 26 c7 45 28 41 54 ; 0xf5be1 + mov word [es:di+02ah], 02041h ; 26 c7 45 2a 41 20 ; 0xf5be7 disk.c:244 + mov word [es:di+02ch], 02020h ; 26 c7 45 2c 20 20 ; 0xf5bed disk.c:246 + mov word [es:di+02eh], 02020h ; 26 c7 45 2e 20 20 ; 0xf5bf3 disk.c:248 + test al, al ; 84 c0 ; 0xf5bf9 disk.c:251 + jne short 05c13h ; 75 16 ; 0xf5bfb + mov word [es:di+030h], dx ; 26 89 55 30 ; 0xf5bfd disk.c:252 + mov word [es:di+032h], strict word 00000h ; 26 c7 45 32 00 00 ; 0xf5c01 disk.c:253 + mov word [es:di+034h], strict word 00000h ; 26 c7 45 34 00 00 ; 0xf5c07 disk.c:254 + mov word [es:di+036h], strict word 00000h ; 26 c7 45 36 00 00 ; 0xf5c0d + mov al, byte [bp+008h] ; 8a 46 08 ; 0xf5c13 disk.c:259 + and AL, strict byte 001h ; 24 01 ; 0xf5c16 + xor ah, ah ; 30 e4 ; 0xf5c18 + mov es, [bp-004h] ; 8e 46 fc ; 0xf5c1a + mov word [es:di+038h], ax ; 26 89 45 38 ; 0xf5c1d + mov word [es:di+03ah], strict word 00000h ; 26 c7 45 3a 00 00 ; 0xf5c21 disk.c:260 + mov word [es:di+03ch], strict word 00000h ; 26 c7 45 3c 00 00 ; 0xf5c27 disk.c:261 + mov word [es:di+03eh], strict word 00000h ; 26 c7 45 3e 00 00 ; 0xf5c2d + xor bl, bl ; 30 db ; 0xf5c33 disk.c:263 + mov BH, strict byte 01eh ; b7 1e ; 0xf5c35 disk.c:264 + jmp short 05c3eh ; eb 05 ; 0xf5c37 + cmp bh, 040h ; 80 ff 40 ; 0xf5c39 + jnc short 05c50h ; 73 12 ; 0xf5c3c + mov al, bh ; 88 f8 ; 0xf5c3e disk.c:265 + xor ah, ah ; 30 e4 ; 0xf5c40 + mov es, [bp-004h] ; 8e 46 fc ; 0xf5c42 + mov si, di ; 89 fe ; 0xf5c45 + add si, ax ; 01 c6 ; 0xf5c47 + add bl, byte [es:si] ; 26 02 1c ; 0xf5c49 + db 0feh, 0c7h + ; inc bh ; fe c7 ; 0xf5c4c + jmp short 05c39h ; eb e9 ; 0xf5c4e + neg bl ; f6 db ; 0xf5c50 disk.c:266 + mov es, [bp-004h] ; 8e 46 fc ; 0xf5c52 disk.c:267 + mov byte [es:di+041h], bl ; 26 88 5d 41 ; 0xf5c55 + xor ax, ax ; 31 c0 ; 0xf5c59 disk.c:269 + leave ; c9 ; 0xf5c5b disk.c:270 + pop di ; 5f ; 0xf5c5c + pop si ; 5e ; 0xf5c5d + retn 00002h ; c2 02 00 ; 0xf5c5e + ; disGetNextSymbol 0xf5c61 LB 0x4267 -> off=0x32 cb=0000000000000431 uValue=00000000000f4693 'int13_harddisk' + db 01fh, 05dh, 030h, 05dh, 05dh, 05dh, 05dh, 05dh, 05dh, 05dh, 04fh, 05fh, 086h, 060h, 086h, 060h + db 07dh, 05fh, 063h, 060h, 086h, 060h, 086h, 060h, 063h, 060h, 063h, 060h, 086h, 060h, 086h, 060h + db 0e8h, 05fh, 063h, 060h, 086h, 060h, 086h, 060h, 063h, 060h, 019h, 060h, 086h, 060h, 086h, 060h + db 086h, 060h +int13_harddisk: ; 0xf5c93 LB 0x431 + push bp ; 55 ; 0xf5c93 disk.c:272 + mov bp, sp ; 89 e5 ; 0xf5c94 + sub sp, strict byte 00010h ; 83 ec 10 ; 0xf5c96 + or byte [bp+01dh], 002h ; 80 4e 1d 02 ; 0xf5c99 disk.c:283 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf5c9d disk.c:48 + mov dx, strict word 00040h ; ba 40 00 ; 0xf5ca0 + mov es, dx ; 8e c2 ; 0xf5ca3 + mov dx, word [es:bx] ; 26 8b 17 ; 0xf5ca5 + mov si, 00122h ; be 22 01 ; 0xf5ca8 disk.c:49 + mov word [bp-00eh], dx ; 89 56 f2 ; 0xf5cab + mov bx, 0008eh ; bb 8e 00 ; 0xf5cae disk.c:43 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf5cb1 + mov dx, word [bp+00eh] ; 8b 56 0e ; 0xf5cb5 disk.c:289 + xor dh, dh ; 30 f6 ; 0xf5cb8 + cmp dx, 00080h ; 81 fa 80 00 ; 0xf5cba + jc short 05cc6h ; 72 06 ; 0xf5cbe + cmp dx, 00090h ; 81 fa 90 00 ; 0xf5cc0 + jc short 05ce4h ; 72 1e ; 0xf5cc4 + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf5cc6 disk.c:290 + xor ah, ah ; 30 e4 ; 0xf5cc9 + push ax ; 50 ; 0xf5ccb + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5ccc + shr ax, 008h ; c1 e8 08 ; 0xf5ccf + push ax ; 50 ; 0xf5cd2 + push 0067eh ; 68 7e 06 ; 0xf5cd3 + push 0068dh ; 68 8d 06 ; 0xf5cd6 + push strict byte 00004h ; 6a 04 ; 0xf5cd9 + call 018ffh ; e8 21 bc ; 0xf5cdb + add sp, strict byte 0000ah ; 83 c4 0a ; 0xf5cde + jmp near 060a1h ; e9 bd 03 ; 0xf5ce1 disk.c:291 + mov dx, word [bp+00eh] ; 8b 56 0e ; 0xf5ce4 disk.c:295 + xor dh, dh ; 30 f6 ; 0xf5ce7 + mov es, [bp-00eh] ; 8e 46 f2 ; 0xf5ce9 + mov bx, si ; 89 f3 ; 0xf5cec + add bx, dx ; 01 d3 ; 0xf5cee + mov bl, byte [es:bx+00163h] ; 26 8a 9f 63 01 ; 0xf5cf0 + mov byte [bp-002h], bl ; 88 5e fe ; 0xf5cf5 + cmp bl, 010h ; 80 fb 10 ; 0xf5cf8 disk.c:298 + jc short 05d0dh ; 72 10 ; 0xf5cfb + push dx ; 52 ; 0xf5cfd disk.c:299 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5cfe + shr ax, 008h ; c1 e8 08 ; 0xf5d01 + push ax ; 50 ; 0xf5d04 + push 0067eh ; 68 7e 06 ; 0xf5d05 + push 006b8h ; 68 b8 06 ; 0xf5d08 + jmp short 05cd9h ; eb cc ; 0xf5d0b + mov bx, word [bp+016h] ; 8b 5e 16 ; 0xf5d0d disk.c:303 + shr bx, 008h ; c1 eb 08 ; 0xf5d10 + cmp bx, strict byte 00018h ; 83 fb 18 ; 0xf5d13 + jnbe short 05d5ah ; 77 42 ; 0xf5d16 + add bx, bx ; 01 db ; 0xf5d18 + jmp word [cs:bx+05c61h] ; 2e ff a7 61 5c ; 0xf5d1a + cmp byte [bp-002h], 008h ; 80 7e fe 08 ; 0xf5d1f disk.c:308 + jnc short 05d2dh ; 73 08 ; 0xf5d23 + mov al, byte [bp-002h] ; 8a 46 fe ; 0xf5d25 disk.c:310 + xor ah, ah ; 30 e4 ; 0xf5d28 + call 01d1dh ; e8 f0 bf ; 0xf5d2a + jmp near 05f65h ; e9 35 02 ; 0xf5d2d disk.c:311 + mov bx, strict word 00074h ; bb 74 00 ; 0xf5d30 disk.c:38 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5d33 + mov es, ax ; 8e c0 ; 0xf5d36 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf5d38 + mov bx, word [bp+016h] ; 8b 5e 16 ; 0xf5d3b disk.c:316 + xor bh, bh ; 30 ff ; 0xf5d3e + mov dl, al ; 88 c2 ; 0xf5d40 + xor dh, dh ; 30 f6 ; 0xf5d42 + sal dx, 008h ; c1 e2 08 ; 0xf5d44 + or bx, dx ; 09 d3 ; 0xf5d47 + mov word [bp+016h], bx ; 89 5e 16 ; 0xf5d49 + mov bx, strict word 00074h ; bb 74 00 ; 0xf5d4c disk.c:43 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf5d4f + test al, al ; 84 c0 ; 0xf5d53 disk.c:319 + je short 05dbch ; 74 65 ; 0xf5d55 + jmp near 060bdh ; e9 63 03 ; 0xf5d57 + jmp near 06086h ; e9 29 03 ; 0xf5d5a + mov dx, word [bp+016h] ; 8b 56 16 ; 0xf5d5d disk.c:327 + xor dh, dh ; 30 f6 ; 0xf5d60 + mov word [bp-00ah], dx ; 89 56 f6 ; 0xf5d62 + mov di, word [bp+014h] ; 8b 7e 14 ; 0xf5d65 disk.c:328 + shr di, 008h ; c1 ef 08 ; 0xf5d68 + mov dx, word [bp+014h] ; 8b 56 14 ; 0xf5d6b disk.c:329 + xor dh, dh ; 30 f6 ; 0xf5d6e + sal dx, 002h ; c1 e2 02 ; 0xf5d70 + xor dl, dl ; 30 d2 ; 0xf5d73 + and dh, 003h ; 80 e6 03 ; 0xf5d75 + or di, dx ; 09 d7 ; 0xf5d78 + mov dx, word [bp+014h] ; 8b 56 14 ; 0xf5d7a disk.c:330 + and dx, strict byte 0003fh ; 83 e2 3f ; 0xf5d7d + mov word [bp-004h], dx ; 89 56 fc ; 0xf5d80 + mov dx, word [bp+012h] ; 8b 56 12 ; 0xf5d83 disk.c:331 + shr dx, 008h ; c1 ea 08 ; 0xf5d86 + mov word [bp-006h], dx ; 89 56 fa ; 0xf5d89 + cmp word [bp-00ah], 00080h ; 81 7e f6 80 00 ; 0xf5d8c disk.c:334 + jnbe short 05d99h ; 77 06 ; 0xf5d91 + cmp word [bp-00ah], strict byte 00000h ; 83 7e f6 00 ; 0xf5d93 + jne short 05dbfh ; 75 26 ; 0xf5d97 + mov bx, 00da0h ; bb a0 0d ; 0xf5d99 disk.c:335 + mov cx, ds ; 8c d9 ; 0xf5d9c + mov ax, strict word 00004h ; b8 04 00 ; 0xf5d9e + call 018bch ; e8 18 bb ; 0xf5da1 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5da4 + shr ax, 008h ; c1 e8 08 ; 0xf5da7 + push ax ; 50 ; 0xf5daa + push 0067eh ; 68 7e 06 ; 0xf5dab + push 006eah ; 68 ea 06 ; 0xf5dae + push strict byte 00004h ; 6a 04 ; 0xf5db1 + call 018ffh ; e8 49 bb ; 0xf5db3 + add sp, strict byte 00008h ; 83 c4 08 ; 0xf5db6 + jmp near 060a1h ; e9 e5 02 ; 0xf5db9 disk.c:336 + jmp near 05f69h ; e9 aa 01 ; 0xf5dbc + mov dl, byte [bp-002h] ; 8a 56 fe ; 0xf5dbf disk.c:340 + xor dh, dh ; 30 f6 ; 0xf5dc2 + imul dx, dx, strict byte 0001ch ; 6b d2 1c ; 0xf5dc4 + mov es, [bp-00eh] ; 8e 46 f2 ; 0xf5dc7 + mov bx, si ; 89 f3 ; 0xf5dca + add bx, dx ; 01 d3 ; 0xf5dcc + mov dx, word [es:bx+02ch] ; 26 8b 57 2c ; 0xf5dce + mov word [bp-010h], dx ; 89 56 f0 ; 0xf5dd2 + mov cx, word [es:bx+02ah] ; 26 8b 4f 2a ; 0xf5dd5 disk.c:341 + mov dx, word [es:bx+02eh] ; 26 8b 57 2e ; 0xf5dd9 disk.c:342 + mov word [bp-008h], dx ; 89 56 f8 ; 0xf5ddd + cmp di, word [bp-010h] ; 3b 7e f0 ; 0xf5de0 disk.c:345 + jnc short 05df2h ; 73 0d ; 0xf5de3 + cmp cx, word [bp-006h] ; 3b 4e fa ; 0xf5de5 + jbe short 05df2h ; 76 08 ; 0xf5de8 + mov dx, word [bp-004h] ; 8b 56 fc ; 0xf5dea + cmp dx, word [bp-008h] ; 3b 56 f8 ; 0xf5ded + jbe short 05e22h ; 76 30 ; 0xf5df0 + mov bx, 00da0h ; bb a0 0d ; 0xf5df2 disk.c:346 + mov cx, ds ; 8c d9 ; 0xf5df5 + mov ax, strict word 00004h ; b8 04 00 ; 0xf5df7 + call 018bch ; e8 bf ba ; 0xf5dfa + push word [bp-004h] ; ff 76 fc ; 0xf5dfd + push word [bp-006h] ; ff 76 fa ; 0xf5e00 + push di ; 57 ; 0xf5e03 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf5e04 + xor ah, ah ; 30 e4 ; 0xf5e07 + push ax ; 50 ; 0xf5e09 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5e0a + shr ax, 008h ; c1 e8 08 ; 0xf5e0d + push ax ; 50 ; 0xf5e10 + push 0067eh ; 68 7e 06 ; 0xf5e11 + push 00712h ; 68 12 07 ; 0xf5e14 + push strict byte 00004h ; 6a 04 ; 0xf5e17 + call 018ffh ; e8 e3 ba ; 0xf5e19 + add sp, strict byte 00010h ; 83 c4 10 ; 0xf5e1c + jmp near 060a1h ; e9 7f 02 ; 0xf5e1f disk.c:347 + mov dx, word [bp+016h] ; 8b 56 16 ; 0xf5e22 disk.c:351 + shr dx, 008h ; c1 ea 08 ; 0xf5e25 + cmp dx, strict byte 00004h ; 83 fa 04 ; 0xf5e28 + je short 05e4dh ; 74 20 ; 0xf5e2b + mov dl, byte [bp-002h] ; 8a 56 fe ; 0xf5e2d disk.c:356 + xor dh, dh ; 30 f6 ; 0xf5e30 + imul dx, dx, strict byte 0001ch ; 6b d2 1c ; 0xf5e32 + mov es, [bp-00eh] ; 8e 46 f2 ; 0xf5e35 + mov bx, si ; 89 f3 ; 0xf5e38 + add bx, dx ; 01 d3 ; 0xf5e3a + cmp cx, word [es:bx+030h] ; 26 3b 4f 30 ; 0xf5e3c + jne short 05e56h ; 75 14 ; 0xf5e40 + mov dx, word [es:bx+034h] ; 26 8b 57 34 ; 0xf5e42 + cmp dx, word [bp-008h] ; 3b 56 f8 ; 0xf5e46 + je short 05e50h ; 74 05 ; 0xf5e49 + jmp short 05e56h ; eb 09 ; 0xf5e4b + jmp near 05f65h ; e9 15 01 ; 0xf5e4d + cmp byte [bp-002h], 008h ; 80 7e fe 08 ; 0xf5e50 + jc short 05e85h ; 72 2f ; 0xf5e54 + mov ax, di ; 89 f8 ; 0xf5e56 disk.c:357 + xor dx, dx ; 31 d2 ; 0xf5e58 + mov bx, cx ; 89 cb ; 0xf5e5a + xor cx, cx ; 31 c9 ; 0xf5e5c + call 09b40h ; e8 df 3c ; 0xf5e5e + xor bx, bx ; 31 db ; 0xf5e61 + add ax, word [bp-006h] ; 03 46 fa ; 0xf5e63 + adc dx, bx ; 11 da ; 0xf5e66 + mov bx, word [bp-008h] ; 8b 5e f8 ; 0xf5e68 + xor cx, cx ; 31 c9 ; 0xf5e6b + call 09b40h ; e8 d0 3c ; 0xf5e6d + xor bx, bx ; 31 db ; 0xf5e70 + add ax, word [bp-004h] ; 03 46 fc ; 0xf5e72 + adc dx, bx ; 11 da ; 0xf5e75 + add ax, strict word 0ffffh ; 05 ff ff ; 0xf5e77 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf5e7a + mov ax, dx ; 89 d0 ; 0xf5e7d + adc ax, strict word 0ffffh ; 15 ff ff ; 0xf5e7f + mov word [bp-004h], bx ; 89 5e fc ; 0xf5e82 disk.c:358 + mov es, [bp-00eh] ; 8e 46 f2 ; 0xf5e85 disk.c:365 + mov word [es:si+018h], strict word 00000h ; 26 c7 44 18 00 00 ; 0xf5e88 + mov word [es:si+01ah], strict word 00000h ; 26 c7 44 1a 00 00 ; 0xf5e8e disk.c:366 + mov word [es:si+01ch], strict word 00000h ; 26 c7 44 1c 00 00 ; 0xf5e94 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf5e9a disk.c:369 + mov word [es:si], dx ; 26 89 14 ; 0xf5e9d + mov word [es:si+002h], ax ; 26 89 44 02 ; 0xf5ea0 + mov word [es:si+004h], strict word 00000h ; 26 c7 44 04 00 00 ; 0xf5ea4 + mov word [es:si+006h], strict word 00000h ; 26 c7 44 06 00 00 ; 0xf5eaa + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf5eb0 disk.c:370 + mov dx, word [bp+006h] ; 8b 56 06 ; 0xf5eb3 + mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf5eb6 + mov word [es:si+00ah], dx ; 26 89 54 0a ; 0xf5eba + mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf5ebe disk.c:371 + mov word [es:si+00eh], ax ; 26 89 44 0e ; 0xf5ec1 + mov word [es:si+010h], 00200h ; 26 c7 44 10 00 02 ; 0xf5ec5 disk.c:372 + mov word [es:si+012h], di ; 26 89 7c 12 ; 0xf5ecb disk.c:373 + mov ax, word [bp-006h] ; 8b 46 fa ; 0xf5ecf disk.c:374 + mov word [es:si+014h], ax ; 26 89 44 14 ; 0xf5ed2 + mov ax, word [bp-004h] ; 8b 46 fc ; 0xf5ed6 disk.c:375 + mov word [es:si+016h], ax ; 26 89 44 16 ; 0xf5ed9 + mov al, byte [bp-002h] ; 8a 46 fe ; 0xf5edd disk.c:376 + mov byte [es:si+00ch], al ; 26 88 44 0c ; 0xf5ee0 + xor ah, ah ; 30 e4 ; 0xf5ee4 disk.c:378 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf5ee6 + mov bx, si ; 89 f3 ; 0xf5ee9 + add bx, ax ; 01 c3 ; 0xf5eeb + mov al, byte [es:bx+022h] ; 26 8a 47 22 ; 0xf5eed + xor ah, ah ; 30 e4 ; 0xf5ef1 + mov bx, ax ; 89 c3 ; 0xf5ef3 + sal bx, 002h ; c1 e3 02 ; 0xf5ef5 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5ef8 + shr ax, 008h ; c1 e8 08 ; 0xf5efb + add ax, ax ; 01 c0 ; 0xf5efe + add bx, ax ; 01 c3 ; 0xf5f00 + push ES ; 06 ; 0xf5f02 + push si ; 56 ; 0xf5f03 + call word [word bx+0007eh] ; ff 97 7e 00 ; 0xf5f04 + mov dx, ax ; 89 c2 ; 0xf5f08 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5f0a disk.c:381 + xor al, al ; 30 c0 ; 0xf5f0d + mov es, [bp-00eh] ; 8e 46 f2 ; 0xf5f0f + mov bx, word [es:si+018h] ; 26 8b 5c 18 ; 0xf5f12 + or bx, ax ; 09 c3 ; 0xf5f16 + mov word [bp+016h], bx ; 89 5e 16 ; 0xf5f18 + test dl, dl ; 84 d2 ; 0xf5f1b disk.c:383 + je short 05f65h ; 74 46 ; 0xf5f1d + mov bx, 00da0h ; bb a0 0d ; 0xf5f1f disk.c:384 + mov cx, ds ; 8c d9 ; 0xf5f22 + mov ax, strict word 00004h ; b8 04 00 ; 0xf5f24 + call 018bch ; e8 92 b9 ; 0xf5f27 + mov al, dl ; 88 d0 ; 0xf5f2a + xor ah, ah ; 30 e4 ; 0xf5f2c + push ax ; 50 ; 0xf5f2e + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5f2f + shr ax, 008h ; c1 e8 08 ; 0xf5f32 + push ax ; 50 ; 0xf5f35 + push 0067eh ; 68 7e 06 ; 0xf5f36 + push 00759h ; 68 59 07 ; 0xf5f39 + push strict byte 00004h ; 6a 04 ; 0xf5f3c + call 018ffh ; e8 be b9 ; 0xf5f3e + add sp, strict byte 0000ah ; 83 c4 0a ; 0xf5f41 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5f44 disk.c:385 + xor ah, ah ; 30 e4 ; 0xf5f47 + or ah, 00ch ; 80 cc 0c ; 0xf5f49 + jmp near 060a9h ; e9 5a 01 ; 0xf5f4c disk.c:386 + mov bx, 00da0h ; bb a0 0d ; 0xf5f4f disk.c:393 + mov cx, ds ; 8c d9 ; 0xf5f52 + mov ax, strict word 00004h ; b8 04 00 ; 0xf5f54 + call 018bch ; e8 62 b9 ; 0xf5f57 + push 0077ah ; 68 7a 07 ; 0xf5f5a + push strict byte 00004h ; 6a 04 ; 0xf5f5d + call 018ffh ; e8 9d b9 ; 0xf5f5f + add sp, strict byte 00004h ; 83 c4 04 ; 0xf5f62 + mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf5f65 disk.c:394 + mov bx, strict word 00074h ; bb 74 00 ; 0xf5f69 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5f6c + mov es, ax ; 8e c0 ; 0xf5f6f + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf5f71 + and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf5f75 + mov sp, bp ; 89 ec ; 0xf5f79 + pop bp ; 5d ; 0xf5f7b + retn ; c3 ; 0xf5f7c + mov al, byte [bp-002h] ; 8a 46 fe ; 0xf5f7d disk.c:400 + xor ah, ah ; 30 e4 ; 0xf5f80 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf5f82 + mov es, [bp-00eh] ; 8e 46 f2 ; 0xf5f85 + mov di, si ; 89 f7 ; 0xf5f88 + add di, ax ; 01 c7 ; 0xf5f8a + mov bx, word [es:di+02ch] ; 26 8b 5d 2c ; 0xf5f8c + mov cx, word [es:di+02ah] ; 26 8b 4d 2a ; 0xf5f90 disk.c:401 + mov ax, word [es:di+02eh] ; 26 8b 45 2e ; 0xf5f94 disk.c:402 + mov word [bp-008h], ax ; 89 46 f8 ; 0xf5f98 + mov al, byte [es:si+001e2h] ; 26 8a 84 e2 01 ; 0xf5f9b disk.c:404 + xor ah, ah ; 30 e4 ; 0xf5fa0 + mov byte [bp+016h], ah ; 88 66 16 ; 0xf5fa2 disk.c:407 + mov dx, word [bp+014h] ; 8b 56 14 ; 0xf5fa5 disk.c:408 + xor dh, dh ; 30 f6 ; 0xf5fa8 + dec bx ; 4b ; 0xf5faa disk.c:406 + mov si, bx ; 89 de ; 0xf5fab + and si, 000ffh ; 81 e6 ff 00 ; 0xf5fad + sal si, 008h ; c1 e6 08 ; 0xf5fb1 + or dx, si ; 09 f2 ; 0xf5fb4 + mov word [bp+014h], dx ; 89 56 14 ; 0xf5fb6 + shr bx, 002h ; c1 eb 02 ; 0xf5fb9 disk.c:409 + and bl, 0c0h ; 80 e3 c0 ; 0xf5fbc + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf5fbf + and dl, 03fh ; 80 e2 3f ; 0xf5fc2 + or dl, bl ; 08 da ; 0xf5fc5 + mov bx, word [bp+014h] ; 8b 5e 14 ; 0xf5fc7 + mov bl, dl ; 88 d3 ; 0xf5fca + mov word [bp+014h], bx ; 89 5e 14 ; 0xf5fcc + mov dx, word [bp+012h] ; 8b 56 12 ; 0xf5fcf disk.c:410 + xor dh, dh ; 30 f6 ; 0xf5fd2 + sal cx, 008h ; c1 e1 08 ; 0xf5fd4 + sub cx, 00100h ; 81 e9 00 01 ; 0xf5fd7 + or dx, cx ; 09 ca ; 0xf5fdb + mov word [bp+012h], dx ; 89 56 12 ; 0xf5fdd + mov dl, al ; 88 c2 ; 0xf5fe0 disk.c:411 + mov word [bp+012h], dx ; 89 56 12 ; 0xf5fe2 + jmp near 05f65h ; e9 7d ff ; 0xf5fe5 disk.c:416 + mov al, byte [bp-002h] ; 8a 46 fe ; 0xf5fe8 disk.c:423 + xor ah, ah ; 30 e4 ; 0xf5feb + cwd ; 99 ; 0xf5fed + db 02bh, 0c2h + ; sub ax, dx ; 2b c2 ; 0xf5fee + sar ax, 1 ; d1 f8 ; 0xf5ff0 + imul ax, ax, strict byte 00006h ; 6b c0 06 ; 0xf5ff2 + mov es, [bp-00eh] ; 8e 46 f2 ; 0xf5ff5 + add si, ax ; 01 c6 ; 0xf5ff8 + mov dx, word [es:si+00206h] ; 26 8b 94 06 02 ; 0xf5ffa + add dx, strict byte 00007h ; 83 c2 07 ; 0xf5fff + in AL, DX ; ec ; 0xf6002 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf6003 + and AL, strict byte 0c0h ; 24 c0 ; 0xf6005 disk.c:424 + cmp AL, strict byte 040h ; 3c 40 ; 0xf6007 + jne short 0600eh ; 75 03 ; 0xf6009 + jmp near 05f65h ; e9 57 ff ; 0xf600b disk.c:425 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf600e disk.c:427 + xor ah, ah ; 30 e4 ; 0xf6011 + or ah, 0aah ; 80 cc aa ; 0xf6013 + jmp near 060a9h ; e9 90 00 ; 0xf6016 + mov al, byte [bp-002h] ; 8a 46 fe ; 0xf6019 disk.c:435 + xor ah, ah ; 30 e4 ; 0xf601c + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf601e + mov es, [bp-00eh] ; 8e 46 f2 ; 0xf6021 + add si, ax ; 01 c6 ; 0xf6024 + mov di, word [es:si+032h] ; 26 8b 7c 32 ; 0xf6026 + mov ax, word [es:si+030h] ; 26 8b 44 30 ; 0xf602a disk.c:436 + mov word [bp-006h], ax ; 89 46 fa ; 0xf602e + mov ax, word [es:si+034h] ; 26 8b 44 34 ; 0xf6031 disk.c:437 + mov word [bp-004h], ax ; 89 46 fc ; 0xf6035 + mov ax, di ; 89 f8 ; 0xf6038 disk.c:440 + xor dx, dx ; 31 d2 ; 0xf603a + mov bx, word [bp-006h] ; 8b 5e fa ; 0xf603c + xor cx, cx ; 31 c9 ; 0xf603f + call 09b40h ; e8 fc 3a ; 0xf6041 + mov bx, word [bp-004h] ; 8b 5e fc ; 0xf6044 + xor cx, cx ; 31 c9 ; 0xf6047 + call 09b40h ; e8 f4 3a ; 0xf6049 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf604c + mov word [bp+014h], dx ; 89 56 14 ; 0xf604f disk.c:441 + mov word [bp+012h], ax ; 89 46 12 ; 0xf6052 disk.c:442 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6055 disk.c:444 + xor ah, ah ; 30 e4 ; 0xf6058 + or ah, 003h ; 80 cc 03 ; 0xf605a + mov word [bp+016h], ax ; 89 46 16 ; 0xf605d + jmp near 05f69h ; e9 06 ff ; 0xf6060 disk.c:445 + mov bx, 00da0h ; bb a0 0d ; 0xf6063 disk.c:453 + mov cx, ds ; 8c d9 ; 0xf6066 + mov ax, strict word 00004h ; b8 04 00 ; 0xf6068 + call 018bch ; e8 4e b8 ; 0xf606b + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf606e + shr ax, 008h ; c1 e8 08 ; 0xf6071 + push ax ; 50 ; 0xf6074 + push 0067eh ; 68 7e 06 ; 0xf6075 + push 00794h ; 68 94 07 ; 0xf6078 + push strict byte 00004h ; 6a 04 ; 0xf607b + call 018ffh ; e8 7f b8 ; 0xf607d + add sp, strict byte 00008h ; 83 c4 08 ; 0xf6080 + jmp near 05f65h ; e9 df fe ; 0xf6083 disk.c:454 + mov bx, 00da0h ; bb a0 0d ; 0xf6086 disk.c:461 + mov cx, ds ; 8c d9 ; 0xf6089 + mov ax, strict word 00004h ; b8 04 00 ; 0xf608b + call 018bch ; e8 2b b8 ; 0xf608e + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6091 + shr ax, 008h ; c1 e8 08 ; 0xf6094 + push ax ; 50 ; 0xf6097 + push 0067eh ; 68 7e 06 ; 0xf6098 + push 007c7h ; 68 c7 07 ; 0xf609b + jmp near 05db1h ; e9 10 fd ; 0xf609e + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf60a1 disk.c:467 + xor ah, ah ; 30 e4 ; 0xf60a4 + or ah, 001h ; 80 cc 01 ; 0xf60a6 + mov word [bp+016h], ax ; 89 46 16 ; 0xf60a9 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf60ac disk.c:469 + shr ax, 008h ; c1 e8 08 ; 0xf60af + mov bx, strict word 00074h ; bb 74 00 ; 0xf60b2 disk.c:43 + mov dx, strict word 00040h ; ba 40 00 ; 0xf60b5 + mov es, dx ; 8e c2 ; 0xf60b8 + mov byte [es:bx], al ; 26 88 07 ; 0xf60ba + or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf60bd disk.c:471 + jmp near 05f79h ; e9 b5 fe ; 0xf60c1 disk.c:472 + ; disGetNextSymbol 0xf60c4 LB 0x3e04 -> off=0x20 cb=0000000000000297 uValue=00000000000f4ae4 'int13_harddisk_ext' + db 072h, 061h, 0a5h, 061h, 0a5h, 061h, 0a5h, 061h, 063h, 063h, 009h, 063h, 0a5h, 061h, 011h, 063h + db 063h, 063h, 08ah, 061h, 08ah, 061h, 08ah, 061h, 08ah, 061h, 02bh, 063h, 08ah, 061h, 08ah, 061h +int13_harddisk_ext: ; 0xf60e4 LB 0x297 + push bp ; 55 ; 0xf60e4 disk.c:482 + mov bp, sp ; 89 e5 ; 0xf60e5 + sub sp, strict byte 00016h ; 83 ec 16 ; 0xf60e7 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf60ea disk.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf60ed + mov es, ax ; 8e c0 ; 0xf60f0 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf60f2 + mov di, 00122h ; bf 22 01 ; 0xf60f5 disk.c:49 + mov word [bp-006h], ax ; 89 46 fa ; 0xf60f8 + mov bx, 0008eh ; bb 8e 00 ; 0xf60fb disk.c:43 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf60fe + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf6102 disk.c:506 + xor ah, ah ; 30 e4 ; 0xf6105 + cmp ax, 00080h ; 3d 80 00 ; 0xf6107 + jc short 06111h ; 72 05 ; 0xf610a + cmp ax, 00090h ; 3d 90 00 ; 0xf610c + jc short 0612fh ; 72 1e ; 0xf610f + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf6111 disk.c:507 + xor ah, ah ; 30 e4 ; 0xf6114 + push ax ; 50 ; 0xf6116 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6117 + shr ax, 008h ; c1 e8 08 ; 0xf611a + push ax ; 50 ; 0xf611d + push 007f5h ; 68 f5 07 ; 0xf611e + push 0068dh ; 68 8d 06 ; 0xf6121 + push strict byte 00004h ; 6a 04 ; 0xf6124 + call 018ffh ; e8 d6 b7 ; 0xf6126 + add sp, strict byte 0000ah ; 83 c4 0a ; 0xf6129 + jmp near 06341h ; e9 12 02 ; 0xf612c disk.c:508 + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf612f disk.c:512 + xor ah, ah ; 30 e4 ; 0xf6132 + mov es, [bp-006h] ; 8e 46 fa ; 0xf6134 + mov bx, di ; 89 fb ; 0xf6137 + add bx, ax ; 01 c3 ; 0xf6139 + mov dl, byte [es:bx+00163h] ; 26 8a 97 63 01 ; 0xf613b + mov byte [bp-004h], dl ; 88 56 fc ; 0xf6140 + cmp dl, 010h ; 80 fa 10 ; 0xf6143 disk.c:515 + jc short 06158h ; 72 10 ; 0xf6146 + push ax ; 50 ; 0xf6148 disk.c:516 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6149 + shr ax, 008h ; c1 e8 08 ; 0xf614c + push ax ; 50 ; 0xf614f + push 007f5h ; 68 f5 07 ; 0xf6150 + push 006b8h ; 68 b8 06 ; 0xf6153 + jmp short 06124h ; eb cc ; 0xf6156 + mov bx, word [bp+016h] ; 8b 5e 16 ; 0xf6158 disk.c:520 + shr bx, 008h ; c1 eb 08 ; 0xf615b + sub bx, strict byte 00041h ; 83 eb 41 ; 0xf615e + cmp bx, strict byte 0000fh ; 83 fb 0f ; 0xf6161 + jnbe short 0618ah ; 77 24 ; 0xf6164 + add bx, bx ; 01 db ; 0xf6166 + mov cx, word [bp+016h] ; 8b 4e 16 ; 0xf6168 + xor ch, ch ; 30 ed ; 0xf616b + jmp word [cs:bx+060c4h] ; 2e ff a7 c4 60 ; 0xf616d + mov word [bp+010h], 0aa55h ; c7 46 10 55 aa ; 0xf6172 disk.c:522 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6177 disk.c:523 + xor ah, ah ; 30 e4 ; 0xf617a + or ah, 030h ; 80 cc 30 ; 0xf617c + mov word [bp+016h], ax ; 89 46 16 ; 0xf617f + mov word [bp+014h], strict word 00007h ; c7 46 14 07 00 ; 0xf6182 disk.c:524 + jmp near 06367h ; e9 dd 01 ; 0xf6187 disk.c:525 + mov bx, 00da0h ; bb a0 0d ; 0xf618a + mov cx, ds ; 8c d9 ; 0xf618d + mov ax, strict word 00004h ; b8 04 00 ; 0xf618f + call 018bch ; e8 27 b7 ; 0xf6192 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6195 + shr ax, 008h ; c1 e8 08 ; 0xf6198 + push ax ; 50 ; 0xf619b + push 007f5h ; 68 f5 07 ; 0xf619c + push 007c7h ; 68 c7 07 ; 0xf619f + jmp near 06242h ; e9 9d 00 ; 0xf61a2 + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf61a5 disk.c:534 + mov word [bp-016h], bx ; 89 5e ea ; 0xf61a8 + mov es, [bp+004h] ; 8e 46 04 ; 0xf61ab + mov word [bp-014h], bx ; 89 5e ec ; 0xf61ae + mov [bp-012h], es ; 8c 46 ee ; 0xf61b1 + mov ax, word [es:bx+002h] ; 26 8b 47 02 ; 0xf61b4 disk.c:536 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf61b8 + mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf61bb disk.c:537 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf61bf + mov ax, word [es:bx+004h] ; 26 8b 47 04 ; 0xf61c2 disk.c:538 + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf61c6 + mov dx, word [es:bx+00ch] ; 26 8b 57 0c ; 0xf61c9 disk.c:541 + mov cx, word [es:bx+00eh] ; 26 8b 4f 0e ; 0xf61cd + xor ax, ax ; 31 c0 ; 0xf61d1 disk.c:542 + xor bx, bx ; 31 db ; 0xf61d3 + mov si, strict word 00020h ; be 20 00 ; 0xf61d5 + call 09ba0h ; e8 c5 39 ; 0xf61d8 + mov word [bp-008h], ax ; 89 46 f8 ; 0xf61db + mov si, bx ; 89 de ; 0xf61de + mov bx, word [bp-016h] ; 8b 5e ea ; 0xf61e0 disk.c:543 + mov ax, word [es:bx+008h] ; 26 8b 47 08 ; 0xf61e3 + mov word [bp-016h], ax ; 89 46 ea ; 0xf61e7 + mov ax, word [es:bx+00ah] ; 26 8b 47 0a ; 0xf61ea + or dx, word [bp-016h] ; 0b 56 ea ; 0xf61ee + or cx, ax ; 09 c1 ; 0xf61f1 + mov al, byte [bp-004h] ; 8a 46 fc ; 0xf61f3 disk.c:548 + xor ah, ah ; 30 e4 ; 0xf61f6 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf61f8 + mov es, [bp-006h] ; 8e 46 fa ; 0xf61fb + mov bx, di ; 89 fb ; 0xf61fe + add bx, ax ; 01 c3 ; 0xf6200 + mov al, byte [es:bx+022h] ; 26 8a 47 22 ; 0xf6202 + mov byte [bp-002h], al ; 88 46 fe ; 0xf6206 + mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf6209 disk.c:549 + cmp ax, word [es:bx+03ch] ; 26 3b 47 3c ; 0xf620c + jnbe short 0622ah ; 77 18 ; 0xf6210 + jne short 0624dh ; 75 39 ; 0xf6212 + cmp si, word [es:bx+03ah] ; 26 3b 77 3a ; 0xf6214 + jnbe short 0622ah ; 77 10 ; 0xf6218 + jne short 0624dh ; 75 31 ; 0xf621a + cmp cx, word [es:bx+038h] ; 26 3b 4f 38 ; 0xf621c + jnbe short 0622ah ; 77 08 ; 0xf6220 + jne short 0624dh ; 75 29 ; 0xf6222 + cmp dx, word [es:bx+036h] ; 26 3b 57 36 ; 0xf6224 + jc short 0624dh ; 72 23 ; 0xf6228 + mov bx, 00da0h ; bb a0 0d ; 0xf622a disk.c:550 + mov cx, ds ; 8c d9 ; 0xf622d + mov ax, strict word 00004h ; b8 04 00 ; 0xf622f + call 018bch ; e8 87 b6 ; 0xf6232 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6235 + shr ax, 008h ; c1 e8 08 ; 0xf6238 + push ax ; 50 ; 0xf623b + push 007f5h ; 68 f5 07 ; 0xf623c + push 00808h ; 68 08 08 ; 0xf623f + push strict byte 00004h ; 6a 04 ; 0xf6242 + call 018ffh ; e8 b8 b6 ; 0xf6244 + add sp, strict byte 00008h ; 83 c4 08 ; 0xf6247 + jmp near 06341h ; e9 f4 00 ; 0xf624a disk.c:551 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf624d disk.c:555 + shr ax, 008h ; c1 e8 08 ; 0xf6250 + mov word [bp-00ah], ax ; 89 46 f6 ; 0xf6253 + cmp ax, strict word 00044h ; 3d 44 00 ; 0xf6256 + je short 06260h ; 74 05 ; 0xf6259 + cmp ax, strict word 00047h ; 3d 47 00 ; 0xf625b + jne short 06263h ; 75 03 ; 0xf625e + jmp near 06363h ; e9 00 01 ; 0xf6260 disk.c:556 + mov es, [bp-006h] ; 8e 46 fa ; 0xf6263 disk.c:559 + mov word [es:di+018h], strict word 00000h ; 26 c7 45 18 00 00 ; 0xf6266 + mov word [es:di+01ah], strict word 00000h ; 26 c7 45 1a 00 00 ; 0xf626c disk.c:560 + mov word [es:di+01ch], strict word 00000h ; 26 c7 45 1c 00 00 ; 0xf6272 + mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf6278 disk.c:563 + mov word [es:di+006h], ax ; 26 89 45 06 ; 0xf627b + mov word [es:di+004h], si ; 26 89 75 04 ; 0xf627f + mov word [es:di+002h], cx ; 26 89 4d 02 ; 0xf6283 + mov word [es:di], dx ; 26 89 15 ; 0xf6287 + mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf628a disk.c:564 + mov word [es:di+008h], ax ; 26 89 45 08 ; 0xf628d + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf6291 + mov word [es:di+00ah], ax ; 26 89 45 0a ; 0xf6294 + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf6298 disk.c:565 + mov word [es:di+00eh], ax ; 26 89 45 0e ; 0xf629b + mov word [es:di+010h], 00200h ; 26 c7 45 10 00 02 ; 0xf629f disk.c:566 + mov word [es:di+016h], strict word 00000h ; 26 c7 45 16 00 00 ; 0xf62a5 disk.c:567 + mov al, byte [bp-004h] ; 8a 46 fc ; 0xf62ab disk.c:568 + mov byte [es:di+00ch], al ; 26 88 45 0c ; 0xf62ae + mov bx, word [bp-00ah] ; 8b 5e f6 ; 0xf62b2 disk.c:571 + add bx, bx ; 01 db ; 0xf62b5 + mov al, byte [bp-002h] ; 8a 46 fe ; 0xf62b7 + xor ah, ah ; 30 e4 ; 0xf62ba + sal ax, 002h ; c1 e0 02 ; 0xf62bc + add bx, ax ; 01 c3 ; 0xf62bf + push ES ; 06 ; 0xf62c1 + push di ; 57 ; 0xf62c2 + call word [word bx-00002h] ; ff 97 fe ff ; 0xf62c3 + mov dx, ax ; 89 c2 ; 0xf62c7 + mov es, [bp-006h] ; 8e 46 fa ; 0xf62c9 disk.c:572 + mov ax, word [es:di+018h] ; 26 8b 45 18 ; 0xf62cc + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf62d0 + les bx, [bp-014h] ; c4 5e ec ; 0xf62d3 disk.c:573 + mov word [es:bx+002h], ax ; 26 89 47 02 ; 0xf62d6 + test dl, dl ; 84 d2 ; 0xf62da disk.c:575 + je short 06260h ; 74 82 ; 0xf62dc + mov bx, 00da0h ; bb a0 0d ; 0xf62de disk.c:576 + mov cx, ds ; 8c d9 ; 0xf62e1 + mov ax, strict word 00004h ; b8 04 00 ; 0xf62e3 + call 018bch ; e8 d3 b5 ; 0xf62e6 + mov al, dl ; 88 d0 ; 0xf62e9 + xor ah, ah ; 30 e4 ; 0xf62eb + push ax ; 50 ; 0xf62ed + push word [bp-00ah] ; ff 76 f6 ; 0xf62ee + push 007f5h ; 68 f5 07 ; 0xf62f1 + push 00759h ; 68 59 07 ; 0xf62f4 + push strict byte 00004h ; 6a 04 ; 0xf62f7 + call 018ffh ; e8 03 b6 ; 0xf62f9 + add sp, strict byte 0000ah ; 83 c4 0a ; 0xf62fc + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf62ff disk.c:577 + xor ah, ah ; 30 e4 ; 0xf6302 + or ah, 00ch ; 80 cc 0c ; 0xf6304 + jmp short 06349h ; eb 40 ; 0xf6307 disk.c:578 + or ch, 0b2h ; 80 cd b2 ; 0xf6309 disk.c:590 + mov word [bp+016h], cx ; 89 4e 16 ; 0xf630c + jmp short 0634ch ; eb 3b ; 0xf630f disk.c:591 + mov al, byte [bp-004h] ; 8a 46 fc ; 0xf6311 disk.c:595 + xor ah, ah ; 30 e4 ; 0xf6314 + push ax ; 50 ; 0xf6316 + mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf6317 + mov dx, word [bp+004h] ; 8b 56 04 ; 0xf631a + mov bx, di ; 89 fb ; 0xf631d + mov cx, word [bp-006h] ; 8b 4e fa ; 0xf631f + call 05965h ; e8 40 f6 ; 0xf6322 + test ax, ax ; 85 c0 ; 0xf6325 + je short 06363h ; 74 3a ; 0xf6327 + jmp short 06341h ; eb 16 ; 0xf6329 disk.c:596 + cmp cx, strict byte 00006h ; 83 f9 06 ; 0xf632b disk.c:603 + je short 06363h ; 74 33 ; 0xf632e + cmp cx, strict byte 00001h ; 83 f9 01 ; 0xf6330 + jc short 06341h ; 72 0c ; 0xf6333 + jbe short 06363h ; 76 2c ; 0xf6335 + cmp cx, strict byte 00003h ; 83 f9 03 ; 0xf6337 + jc short 06341h ; 72 05 ; 0xf633a + cmp cx, strict byte 00004h ; 83 f9 04 ; 0xf633c + jbe short 06363h ; 76 22 ; 0xf633f + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6341 disk.c:623 + xor ah, ah ; 30 e4 ; 0xf6344 + or ah, 001h ; 80 cc 01 ; 0xf6346 + mov word [bp+016h], ax ; 89 46 16 ; 0xf6349 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf634c disk.c:625 + shr ax, 008h ; c1 e8 08 ; 0xf634f + mov bx, strict word 00074h ; bb 74 00 ; 0xf6352 disk.c:43 + mov dx, strict word 00040h ; ba 40 00 ; 0xf6355 + mov es, dx ; 8e c2 ; 0xf6358 + mov byte [es:bx], al ; 26 88 07 ; 0xf635a + or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf635d disk.c:626 + jmp short 06377h ; eb 14 ; 0xf6361 disk.c:627 + mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf6363 disk.c:630 + mov bx, strict word 00074h ; bb 74 00 ; 0xf6367 disk.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf636a + mov es, ax ; 8e c0 ; 0xf636d + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf636f + and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf6373 disk.c:633 + mov sp, bp ; 89 ec ; 0xf6377 disk.c:635 + pop bp ; 5d ; 0xf6379 + retn ; c3 ; 0xf637a + ; disGetNextSymbol 0xf637b LB 0x3b4d -> off=0x0 cb=0000000000000153 uValue=00000000000f4d7b 'int14_function' +int14_function: ; 0xf637b LB 0x153 + push bp ; 55 ; 0xf637b serial.c:60 + mov bp, sp ; 89 e5 ; 0xf637c + push si ; 56 ; 0xf637e + push di ; 57 ; 0xf637f + sti ; fb ; 0xf6380 serial.c:65 + mov si, word [bp+00eh] ; 8b 76 0e ; 0xf6381 serial.c:67 + add si, si ; 01 f6 ; 0xf6384 + mov ax, strict word 00040h ; b8 40 00 ; 0xf6386 serial.c:48 + mov es, ax ; 8e c0 ; 0xf6389 + mov si, word [es:si] ; 26 8b 34 ; 0xf638b + mov bx, si ; 89 f3 ; 0xf638e serial.c:49 + mov di, word [bp+00eh] ; 8b 7e 0e ; 0xf6390 serial.c:68 + add di, strict byte 0007ch ; 83 c7 7c ; 0xf6393 + mov cl, byte [es:di] ; 26 8a 0d ; 0xf6396 serial.c:38 + cmp word [bp+00eh], strict byte 00004h ; 83 7e 0e 04 ; 0xf6399 serial.c:69 + jnc short 063a3h ; 73 04 ; 0xf639d + test si, si ; 85 f6 ; 0xf639f + jnbe short 063a6h ; 77 03 ; 0xf63a1 + jmp near 064c3h ; e9 1d 01 ; 0xf63a3 + mov al, byte [bp+013h] ; 8a 46 13 ; 0xf63a6 serial.c:70 + cmp AL, strict byte 001h ; 3c 01 ; 0xf63a9 + jc short 063bah ; 72 0d ; 0xf63ab + jbe short 0641ah ; 76 6b ; 0xf63ad + cmp AL, strict byte 003h ; 3c 03 ; 0xf63af + je short 06412h ; 74 5f ; 0xf63b1 + cmp AL, strict byte 002h ; 3c 02 ; 0xf63b3 + je short 06415h ; 74 5e ; 0xf63b5 + jmp near 064bdh ; e9 03 01 ; 0xf63b7 + test al, al ; 84 c0 ; 0xf63ba + jne short 06417h ; 75 59 ; 0xf63bc + lea dx, [bx+003h] ; 8d 57 03 ; 0xf63be serial.c:72 + in AL, DX ; ec ; 0xf63c1 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf63c2 + or AL, strict byte 080h ; 0c 80 ; 0xf63c4 + out DX, AL ; ee ; 0xf63c6 + lea si, [bx+001h] ; 8d 77 01 ; 0xf63c7 + mov al, byte [bp+012h] ; 8a 46 12 ; 0xf63ca serial.c:73 + test AL, strict byte 0e0h ; a8 e0 ; 0xf63cd + jne short 063ddh ; 75 0c ; 0xf63cf + mov AL, strict byte 017h ; b0 17 ; 0xf63d1 serial.c:74 + mov dx, bx ; 89 da ; 0xf63d3 + out DX, AL ; ee ; 0xf63d5 + mov AL, strict byte 004h ; b0 04 ; 0xf63d6 serial.c:75 + mov dx, si ; 89 f2 ; 0xf63d8 + out DX, AL ; ee ; 0xf63da + jmp short 063f4h ; eb 17 ; 0xf63db serial.c:76 + and AL, strict byte 0e0h ; 24 e0 ; 0xf63dd serial.c:77 + xor ah, ah ; 30 e4 ; 0xf63df + sar ax, 005h ; c1 f8 05 ; 0xf63e1 + mov cl, al ; 88 c1 ; 0xf63e4 + mov ax, 00600h ; b8 00 06 ; 0xf63e6 + sar ax, CL ; d3 f8 ; 0xf63e9 + mov dx, bx ; 89 da ; 0xf63eb + out DX, AL ; ee ; 0xf63ed + shr ax, 008h ; c1 e8 08 ; 0xf63ee serial.c:79 + mov dx, si ; 89 f2 ; 0xf63f1 + out DX, AL ; ee ; 0xf63f3 + mov al, byte [bp+012h] ; 8a 46 12 ; 0xf63f4 serial.c:81 + and AL, strict byte 01fh ; 24 1f ; 0xf63f7 + lea dx, [bx+003h] ; 8d 57 03 ; 0xf63f9 + out DX, AL ; ee ; 0xf63fc + lea dx, [bx+005h] ; 8d 57 05 ; 0xf63fd serial.c:82 + in AL, DX ; ec ; 0xf6400 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf6401 + mov byte [bp+013h], al ; 88 46 13 ; 0xf6403 + lea dx, [bx+006h] ; 8d 57 06 ; 0xf6406 serial.c:83 + in AL, DX ; ec ; 0xf6409 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf640a + mov byte [bp+012h], al ; 88 46 12 ; 0xf640c + jmp near 0649eh ; e9 8c 00 ; 0xf640f + jmp near 064ach ; e9 97 00 ; 0xf6412 + jmp short 06465h ; eb 4e ; 0xf6415 + jmp near 064bdh ; e9 a3 00 ; 0xf6417 + mov si, strict word 0006ch ; be 6c 00 ; 0xf641a serial.c:48 + mov si, word [es:si] ; 26 8b 34 ; 0xf641d + lea dx, [bx+005h] ; 8d 57 05 ; 0xf6420 serial.c:88 + in AL, DX ; ec ; 0xf6423 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf6424 + and ax, strict word 00060h ; 25 60 00 ; 0xf6426 + cmp ax, strict word 00060h ; 3d 60 00 ; 0xf6429 + je short 06447h ; 74 19 ; 0xf642c + test cl, cl ; 84 c9 ; 0xf642e + je short 06447h ; 74 15 ; 0xf6430 + mov di, strict word 0006ch ; bf 6c 00 ; 0xf6432 serial.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf6435 + mov es, ax ; 8e c0 ; 0xf6438 + mov ax, word [es:di] ; 26 8b 05 ; 0xf643a + cmp ax, si ; 39 f0 ; 0xf643d serial.c:90 + je short 06420h ; 74 df ; 0xf643f + mov si, ax ; 89 c6 ; 0xf6441 serial.c:91 + db 0feh, 0c9h + ; dec cl ; fe c9 ; 0xf6443 serial.c:92 + jmp short 06420h ; eb d9 ; 0xf6445 serial.c:94 + test cl, cl ; 84 c9 ; 0xf6447 serial.c:95 + je short 06451h ; 74 06 ; 0xf6449 + mov al, byte [bp+012h] ; 8a 46 12 ; 0xf644b + mov dx, bx ; 89 da ; 0xf644e + out DX, AL ; ee ; 0xf6450 + lea dx, [bx+005h] ; 8d 57 05 ; 0xf6451 serial.c:96 + in AL, DX ; ec ; 0xf6454 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf6455 + mov byte [bp+013h], al ; 88 46 13 ; 0xf6457 + test cl, cl ; 84 c9 ; 0xf645a serial.c:97 + jne short 0649eh ; 75 40 ; 0xf645c + or AL, strict byte 080h ; 0c 80 ; 0xf645e + mov byte [bp+013h], al ; 88 46 13 ; 0xf6460 + jmp short 0649eh ; eb 39 ; 0xf6463 + mov si, strict word 0006ch ; be 6c 00 ; 0xf6465 serial.c:48 + mov si, word [es:si] ; 26 8b 34 ; 0xf6468 + lea dx, [bx+005h] ; 8d 57 05 ; 0xf646b serial.c:102 + in AL, DX ; ec ; 0xf646e + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf646f + test AL, strict byte 001h ; a8 01 ; 0xf6471 + jne short 0648eh ; 75 19 ; 0xf6473 + test cl, cl ; 84 c9 ; 0xf6475 + je short 0648eh ; 74 15 ; 0xf6477 + mov di, strict word 0006ch ; bf 6c 00 ; 0xf6479 serial.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf647c + mov es, ax ; 8e c0 ; 0xf647f + mov ax, word [es:di] ; 26 8b 05 ; 0xf6481 + cmp ax, si ; 39 f0 ; 0xf6484 serial.c:104 + je short 0646bh ; 74 e3 ; 0xf6486 + mov si, ax ; 89 c6 ; 0xf6488 serial.c:105 + db 0feh, 0c9h + ; dec cl ; fe c9 ; 0xf648a serial.c:106 + jmp short 0646bh ; eb dd ; 0xf648c serial.c:108 + test cl, cl ; 84 c9 ; 0xf648e serial.c:109 + je short 064a4h ; 74 12 ; 0xf6490 + mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf6492 serial.c:110 + mov dx, bx ; 89 da ; 0xf6496 serial.c:111 + in AL, DX ; ec ; 0xf6498 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf6499 + mov byte [bp+012h], al ; 88 46 12 ; 0xf649b + and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf649e serial.c:112 + jmp short 064c7h ; eb 23 ; 0xf64a2 + lea dx, [bx+005h] ; 8d 57 05 ; 0xf64a4 serial.c:113 + in AL, DX ; ec ; 0xf64a7 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf64a8 + jmp short 06460h ; eb b4 ; 0xf64aa + lea dx, [si+005h] ; 8d 54 05 ; 0xf64ac serial.c:118 + in AL, DX ; ec ; 0xf64af + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf64b0 + mov byte [bp+013h], al ; 88 46 13 ; 0xf64b2 + lea dx, [si+006h] ; 8d 54 06 ; 0xf64b5 serial.c:119 + in AL, DX ; ec ; 0xf64b8 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf64b9 + jmp short 0649bh ; eb de ; 0xf64bb + or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf64bd serial.c:123 + jmp short 064c7h ; eb 04 ; 0xf64c1 serial.c:125 + or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf64c3 serial.c:126 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf64c7 serial.c:128 + pop di ; 5f ; 0xf64ca + pop si ; 5e ; 0xf64cb + pop bp ; 5d ; 0xf64cc + retn ; c3 ; 0xf64cd + ; disGetNextSymbol 0xf64ce LB 0x39fa -> off=0x0 cb=0000000000000043 uValue=00000000000f4ece 'timer_wait' +timer_wait: ; 0xf64ce LB 0x43 + push bp ; 55 ; 0xf64ce system.c:289 + mov bp, sp ; 89 e5 ; 0xf64cf + push bx ; 53 ; 0xf64d1 + push cx ; 51 ; 0xf64d2 + push ax ; 50 ; 0xf64d3 + mov bx, strict word 0000fh ; bb 0f 00 ; 0xf64d4 system.c:296 + xor cx, cx ; 31 c9 ; 0xf64d7 + call 09b60h ; e8 84 36 ; 0xf64d9 + mov cx, ax ; 89 c1 ; 0xf64dc + mov bx, dx ; 89 d3 ; 0xf64de + mov dx, strict word 00061h ; ba 61 00 ; 0xf64e0 system.c:298 + in AL, DX ; ec ; 0xf64e3 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf64e4 + and AL, strict byte 010h ; 24 10 ; 0xf64e6 + mov byte [bp-006h], al ; 88 46 fa ; 0xf64e8 + add cx, strict byte 0ffffh ; 83 c1 ff ; 0xf64eb system.c:299 + adc bx, strict byte 0ffffh ; 83 d3 ff ; 0xf64ee + cmp bx, strict byte 0ffffh ; 83 fb ff ; 0xf64f1 + jne short 064fbh ; 75 05 ; 0xf64f4 + cmp cx, strict byte 0ffffh ; 83 f9 ff ; 0xf64f6 + je short 0650ah ; 74 0f ; 0xf64f9 + mov dx, strict word 00061h ; ba 61 00 ; 0xf64fb system.c:302 + in AL, DX ; ec ; 0xf64fe + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf64ff + and AL, strict byte 010h ; 24 10 ; 0xf6501 + cmp al, byte [bp-006h] ; 3a 46 fa ; 0xf6503 system.c:303 + jne short 064fbh ; 75 f3 ; 0xf6506 + jmp short 064ebh ; eb e1 ; 0xf6508 system.c:305 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf650a system.c:306 + pop cx ; 59 ; 0xf650d + pop bx ; 5b ; 0xf650e + pop bp ; 5d ; 0xf650f + retn ; c3 ; 0xf6510 + ; disGetNextSymbol 0xf6511 LB 0x39b7 -> off=0x0 cb=0000000000000030 uValue=00000000000f4f11 'set_enable_a20' +set_enable_a20: ; 0xf6511 LB 0x30 + push bp ; 55 ; 0xf6511 system.c:308 + mov bp, sp ; 89 e5 ; 0xf6512 + push bx ; 53 ; 0xf6514 + push cx ; 51 ; 0xf6515 + push dx ; 52 ; 0xf6516 + mov bx, ax ; 89 c3 ; 0xf6517 + mov dx, 00092h ; ba 92 00 ; 0xf6519 system.c:315 + in AL, DX ; ec ; 0xf651c + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf651d + mov cl, al ; 88 c1 ; 0xf651f + test bx, bx ; 85 db ; 0xf6521 system.c:318 + je short 0652ah ; 74 05 ; 0xf6523 + or AL, strict byte 002h ; 0c 02 ; 0xf6525 system.c:319 + out DX, AL ; ee ; 0xf6527 + jmp short 0652dh ; eb 03 ; 0xf6528 system.c:320 + and AL, strict byte 0fdh ; 24 fd ; 0xf652a system.c:321 + out DX, AL ; ee ; 0xf652c + test cl, 002h ; f6 c1 02 ; 0xf652d system.c:323 + je short 06537h ; 74 05 ; 0xf6530 + mov ax, strict word 00001h ; b8 01 00 ; 0xf6532 + jmp short 06539h ; eb 02 ; 0xf6535 + xor ax, ax ; 31 c0 ; 0xf6537 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf6539 system.c:324 + pop dx ; 5a ; 0xf653c + pop cx ; 59 ; 0xf653d + pop bx ; 5b ; 0xf653e + pop bp ; 5d ; 0xf653f + retn ; c3 ; 0xf6540 + ; disGetNextSymbol 0xf6541 LB 0x3987 -> off=0x3b cb=0000000000000318 uValue=00000000000f4f7c 'int15_function' + db 0ech, 0e9h, 0d8h, 0c7h, 0c1h, 0c0h, 0bfh, 091h, 090h, 089h, 088h, 086h, 083h, 052h, 04fh, 041h + db 024h, 022h, 000h, 076h, 068h, 0b7h, 065h, 017h, 068h, 0cbh, 065h, 017h, 068h, 06fh, 068h, 050h + db 066h, 060h, 066h, 000h, 067h, 00dh, 067h, 039h, 067h, 059h, 066h, 059h, 066h, 001h, 068h, 029h + db 068h, 03ch, 068h, 017h, 068h, 050h, 068h, 0c1h, 066h, 057h, 068h +int15_function: ; 0xf657c LB 0x318 + push bp ; 55 ; 0xf657c system.c:345 + mov bp, sp ; 89 e5 ; 0xf657d + push si ; 56 ; 0xf657f + push di ; 57 ; 0xf6580 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf6581 system.c:352 + shr ax, 008h ; c1 e8 08 ; 0xf6584 + cmp ax, 000ech ; 3d ec 00 ; 0xf6587 + jnbe short 065c1h ; 77 35 ; 0xf658a + push CS ; 0e ; 0xf658c + pop ES ; 07 ; 0xf658d + mov cx, strict word 00014h ; b9 14 00 ; 0xf658e + mov di, 06541h ; bf 41 65 ; 0xf6591 + repne scasb ; f2 ae ; 0xf6594 + sal cx, 1 ; d1 e1 ; 0xf6596 + mov di, cx ; 89 cf ; 0xf6598 + mov bx, word [cs:di+06554h] ; 2e 8b 9d 54 65 ; 0xf659a + mov dx, word [bp+012h] ; 8b 56 12 ; 0xf659f + xor dh, dh ; 30 f6 ; 0xf65a2 + mov si, word [bp+018h] ; 8b 76 18 ; 0xf65a4 + and si, strict byte 0fffeh ; 83 e6 fe ; 0xf65a7 + mov cx, word [bp+018h] ; 8b 4e 18 ; 0xf65aa + or cl, 001h ; 80 c9 01 ; 0xf65ad + mov ax, dx ; 89 d0 ; 0xf65b0 + or ah, 086h ; 80 cc 86 ; 0xf65b2 + jmp bx ; ff e3 ; 0xf65b5 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf65b7 system.c:354 + xor ah, ah ; 30 e4 ; 0xf65ba + cmp ax, 000c0h ; 3d c0 00 ; 0xf65bc + je short 065c4h ; 74 03 ; 0xf65bf + jmp near 06876h ; e9 b2 02 ; 0xf65c1 system.c:355 + or byte [bp+018h], 001h ; 80 4e 18 01 ; 0xf65c4 system.c:361 + jmp near 06820h ; e9 55 02 ; 0xf65c8 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf65cb system.c:365 + xor ah, ah ; 30 e4 ; 0xf65ce + cmp ax, strict word 00001h ; 3d 01 00 ; 0xf65d0 + jc short 065e3h ; 72 0e ; 0xf65d3 + jbe short 065f7h ; 76 20 ; 0xf65d5 + cmp ax, strict word 00003h ; 3d 03 00 ; 0xf65d7 + je short 06624h ; 74 48 ; 0xf65da + cmp ax, strict word 00002h ; 3d 02 00 ; 0xf65dc + je short 06607h ; 74 26 ; 0xf65df + jmp short 06631h ; eb 4e ; 0xf65e1 + test ax, ax ; 85 c0 ; 0xf65e3 + jne short 06631h ; 75 4a ; 0xf65e5 + xor ax, ax ; 31 c0 ; 0xf65e7 system.c:367 + call 06511h ; e8 25 ff ; 0xf65e9 + and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf65ec system.c:368 + mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf65f0 system.c:369 + jmp near 06659h ; e9 62 00 ; 0xf65f4 system.c:370 + mov ax, strict word 00001h ; b8 01 00 ; 0xf65f7 system.c:372 + call 06511h ; e8 14 ff ; 0xf65fa + and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf65fd system.c:373 + mov byte [bp+013h], dh ; 88 76 13 ; 0xf6601 system.c:374 + jmp near 06659h ; e9 52 00 ; 0xf6604 system.c:375 + mov dx, 00092h ; ba 92 00 ; 0xf6607 system.c:377 + in AL, DX ; ec ; 0xf660a + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf660b + shr ax, 1 ; d1 e8 ; 0xf660d + and ax, strict word 00001h ; 25 01 00 ; 0xf660f + mov dx, word [bp+012h] ; 8b 56 12 ; 0xf6612 + mov dl, al ; 88 c2 ; 0xf6615 + mov word [bp+012h], dx ; 89 56 12 ; 0xf6617 + and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf661a system.c:378 + mov byte [bp+013h], ah ; 88 66 13 ; 0xf661e system.c:379 + jmp near 06659h ; e9 35 00 ; 0xf6621 system.c:380 + and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf6624 system.c:382 + mov byte [bp+013h], dh ; 88 76 13 ; 0xf6628 system.c:383 + mov word [bp+00ch], ax ; 89 46 0c ; 0xf662b system.c:384 + jmp near 06659h ; e9 28 00 ; 0xf662e system.c:385 + mov bx, 00da0h ; bb a0 0d ; 0xf6631 system.c:387 + mov cx, ds ; 8c d9 ; 0xf6634 + mov ax, strict word 00004h ; b8 04 00 ; 0xf6636 + call 018bch ; e8 80 b2 ; 0xf6639 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf663c + xor ah, ah ; 30 e4 ; 0xf663f + push ax ; 50 ; 0xf6641 + push 0082eh ; 68 2e 08 ; 0xf6642 + push strict byte 00004h ; 6a 04 ; 0xf6645 + call 018ffh ; e8 b5 b2 ; 0xf6647 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf664a + jmp near 06817h ; e9 c7 01 ; 0xf664d + and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf6650 system.c:414 + xor al, dl ; 30 d0 ; 0xf6654 system.c:415 + mov byte [bp+013h], al ; 88 46 13 ; 0xf6656 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf6659 system.c:416 + pop di ; 5f ; 0xf665c + pop si ; 5e ; 0xf665d + pop bp ; 5d ; 0xf665e + retn ; c3 ; 0xf665f + test byte [bp+012h], 0ffh ; f6 46 12 ff ; 0xf6660 system.c:419 + jne short 066c9h ; 75 63 ; 0xf6664 + mov bx, 000a0h ; bb a0 00 ; 0xf6666 system.c:38 + mov dx, strict word 00040h ; ba 40 00 ; 0xf6669 + mov es, dx ; 8e c2 ; 0xf666c + mov dl, byte [es:bx] ; 26 8a 17 ; 0xf666e + test dl, 001h ; f6 c2 01 ; 0xf6671 system.c:39 + jne short 066c1h ; 75 4b ; 0xf6674 + mov DL, strict byte 001h ; b2 01 ; 0xf6676 system.c:41 + mov byte [es:bx], dl ; 26 88 17 ; 0xf6678 system.c:43 + mov bx, 00098h ; bb 98 00 ; 0xf667b system.c:51 + mov ax, word [bp+014h] ; 8b 46 14 ; 0xf667e + mov word [es:bx], ax ; 26 89 07 ; 0xf6681 system.c:53 + mov bx, 0009ah ; bb 9a 00 ; 0xf6684 system.c:51 + mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf6687 + mov word [es:bx], dx ; 26 89 17 ; 0xf668a system.c:53 + mov bx, 0009ch ; bb 9c 00 ; 0xf668d system.c:51 + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf6690 + mov word [es:bx], ax ; 26 89 07 ; 0xf6693 system.c:53 + mov bx, 0009eh ; bb 9e 00 ; 0xf6696 system.c:51 + mov dx, word [bp+010h] ; 8b 56 10 ; 0xf6699 + mov word [es:bx], dx ; 26 89 17 ; 0xf669c system.c:53 + and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf669f system.c:428 + mov dx, 000a1h ; ba a1 00 ; 0xf66a3 system.c:429 + in AL, DX ; ec ; 0xf66a6 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf66a7 + and AL, strict byte 0feh ; 24 fe ; 0xf66a9 system.c:430 + out DX, AL ; ee ; 0xf66ab + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf66ac system.c:431 + call 01650h ; e8 9e af ; 0xf66af + mov dl, al ; 88 c2 ; 0xf66b2 system.c:432 + or dl, 040h ; 80 ca 40 ; 0xf66b4 + xor dh, dh ; 30 f6 ; 0xf66b7 + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf66b9 + call 0166bh ; e8 ac af ; 0xf66bc + jmp short 06659h ; eb 98 ; 0xf66bf system.c:433 + mov word [bp+018h], cx ; 89 4e 18 ; 0xf66c1 system.c:436 + mov word [bp+012h], ax ; 89 46 12 ; 0xf66c4 system.c:437 + jmp short 06659h ; eb 90 ; 0xf66c7 system.c:439 + cmp dx, strict byte 00001h ; 83 fa 01 ; 0xf66c9 + jne short 066eah ; 75 1c ; 0xf66cc + mov bx, 000a0h ; bb a0 00 ; 0xf66ce system.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf66d1 + mov es, ax ; 8e c0 ; 0xf66d4 + mov byte [es:bx], dh ; 26 88 37 ; 0xf66d6 + and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf66d9 system.c:442 + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf66dd system.c:443 + call 01650h ; e8 6d af ; 0xf66e0 + mov dl, al ; 88 c2 ; 0xf66e3 system.c:444 + and dl, 0bfh ; 80 e2 bf ; 0xf66e5 + jmp short 066b9h ; eb cf ; 0xf66e8 + mov word [bp+018h], cx ; 89 4e 18 ; 0xf66ea system.c:447 + mov bx, ax ; 89 c3 ; 0xf66ed system.c:449 + xor bh, ah ; 30 e7 ; 0xf66ef + xor al, dl ; 30 d0 ; 0xf66f1 + mov dx, ax ; 89 c2 ; 0xf66f3 + lea ax, [bx-001h] ; 8d 47 ff ; 0xf66f5 + or dx, ax ; 09 c2 ; 0xf66f8 + mov word [bp+012h], dx ; 89 56 12 ; 0xf66fa + jmp near 06659h ; e9 59 ff ; 0xf66fd system.c:452 + sti ; fb ; 0xf6700 system.c:458 + mov dx, word [bp+010h] ; 8b 56 10 ; 0xf6701 system.c:459 + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf6704 + call 064ceh ; e8 c4 fd ; 0xf6707 + jmp near 06659h ; e9 4c ff ; 0xf670a system.c:460 + mov ax, strict word 00031h ; b8 31 00 ; 0xf670d system.c:465 + call 01650h ; e8 3d af ; 0xf6710 + xor ah, ah ; 30 e4 ; 0xf6713 + mov dx, ax ; 89 c2 ; 0xf6715 + sal dx, 008h ; c1 e2 08 ; 0xf6717 + mov ax, strict word 00030h ; b8 30 00 ; 0xf671a + call 01650h ; e8 30 af ; 0xf671d + xor ah, ah ; 30 e4 ; 0xf6720 + or dx, ax ; 09 c2 ; 0xf6722 + mov word [bp+012h], dx ; 89 56 12 ; 0xf6724 + cmp dx, 03c00h ; 81 fa 00 3c ; 0xf6727 system.c:476 + jbe short 06732h ; 76 05 ; 0xf672b + mov word [bp+012h], 03c00h ; c7 46 12 00 3c ; 0xf672d system.c:477 + and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf6732 system.c:480 + jmp near 06659h ; e9 20 ff ; 0xf6736 system.c:485 + cli ; fa ; 0xf6739 system.c:494 + mov ax, strict word 00001h ; b8 01 00 ; 0xf673a system.c:496 + call 06511h ; e8 d1 fd ; 0xf673d + mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf6740 system.c:499 + add bx, strict byte 00038h ; 83 c3 38 ; 0xf6743 + mov es, [bp+014h] ; 8e 46 14 ; 0xf6746 system.c:51 + mov word [es:bx], strict word 0ffffh ; 26 c7 07 ff ff ; 0xf6749 system.c:53 + mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf674e system.c:500 + add bx, strict byte 0003ah ; 83 c3 3a ; 0xf6751 + mov es, [bp+014h] ; 8e 46 14 ; 0xf6754 system.c:51 + mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf6757 system.c:53 + mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf675c system.c:501 + add bx, strict byte 0003ch ; 83 c3 3c ; 0xf675f + mov es, [bp+014h] ; 8e 46 14 ; 0xf6762 system.c:41 + mov byte [es:bx], 00fh ; 26 c6 07 0f ; 0xf6765 + mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf6769 system.c:502 + add bx, strict byte 0003dh ; 83 c3 3d ; 0xf676c + mov es, [bp+014h] ; 8e 46 14 ; 0xf676f system.c:41 + mov byte [es:bx], 09bh ; 26 c6 07 9b ; 0xf6772 + mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf6776 system.c:503 + add bx, strict byte 0003eh ; 83 c3 3e ; 0xf6779 + mov es, [bp+014h] ; 8e 46 14 ; 0xf677c system.c:51 + mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf677f system.c:53 + mov AL, strict byte 011h ; b0 11 ; 0xf6784 system.c:506 + mov dx, strict word 00020h ; ba 20 00 ; 0xf6786 + out DX, AL ; ee ; 0xf6789 + mov dx, 000a0h ; ba a0 00 ; 0xf678a system.c:507 + out DX, AL ; ee ; 0xf678d + mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf678e system.c:508 + shr ax, 008h ; c1 e8 08 ; 0xf6791 + mov dx, strict word 00021h ; ba 21 00 ; 0xf6794 + out DX, AL ; ee ; 0xf6797 + mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf6798 system.c:509 + mov dx, 000a1h ; ba a1 00 ; 0xf679b + out DX, AL ; ee ; 0xf679e + mov AL, strict byte 004h ; b0 04 ; 0xf679f system.c:510 + mov dx, strict word 00021h ; ba 21 00 ; 0xf67a1 + out DX, AL ; ee ; 0xf67a4 + mov AL, strict byte 002h ; b0 02 ; 0xf67a5 system.c:511 + mov dx, 000a1h ; ba a1 00 ; 0xf67a7 + out DX, AL ; ee ; 0xf67aa + mov AL, strict byte 001h ; b0 01 ; 0xf67ab system.c:512 + mov dx, strict word 00021h ; ba 21 00 ; 0xf67ad + out DX, AL ; ee ; 0xf67b0 + mov dx, 000a1h ; ba a1 00 ; 0xf67b1 system.c:513 + out DX, AL ; ee ; 0xf67b4 + mov AL, strict byte 0ffh ; b0 ff ; 0xf67b5 system.c:515 + mov dx, strict word 00021h ; ba 21 00 ; 0xf67b7 + out DX, AL ; ee ; 0xf67ba + mov dx, 000a1h ; ba a1 00 ; 0xf67bb system.c:516 + out DX, AL ; ee ; 0xf67be + mov si, word [bp+006h] ; 8b 76 06 ; 0xf67bf system.c:518 + lgdt [es:si+008h] ; 26 0f 01 54 08 ; 0xf67c2 + lidt [es:si+010h] ; 26 0f 01 5c 10 ; 0xf67c7 + push strict byte 00038h ; 6a 38 ; 0xf67cc + call 067d1h ; e8 00 00 ; 0xf67ce + pop ax ; 58 ; 0xf67d1 + add ax, strict byte 0000eh ; 83 c0 0e ; 0xf67d2 + push ax ; 50 ; 0xf67d5 + smsw ax ; 0f 01 e0 ; 0xf67d6 + or AL, strict byte 001h ; 0c 01 ; 0xf67d9 + lmsw ax ; 0f 01 f0 ; 0xf67db + retf ; cb ; 0xf67de + mov ax, strict word 00018h ; b8 18 00 ; 0xf67df + mov ds, ax ; 8e d8 ; 0xf67e2 + add AL, strict byte 008h ; 04 08 ; 0xf67e4 + mov es, ax ; 8e c0 ; 0xf67e6 + add AL, strict byte 008h ; 04 08 ; 0xf67e8 + mov ss, ax ; 8e d0 ; 0xf67ea + lea ax, [bp+004h] ; 8d 46 04 ; 0xf67ec system.c:519 + db 08bh, 0e0h + ; mov sp, ax ; 8b e0 ; 0xf67ef + popaw ; 61 ; 0xf67f1 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf67f2 + pop cx ; 59 ; 0xf67f5 + pop ax ; 58 ; 0xf67f6 + pop ax ; 58 ; 0xf67f7 + mov ax, strict word 00030h ; b8 30 00 ; 0xf67f8 + push ax ; 50 ; 0xf67fb + push cx ; 51 ; 0xf67fc + retf ; cb ; 0xf67fd + jmp near 06659h ; e9 58 fe ; 0xf67fe system.c:525 + mov bx, 00da0h ; bb a0 0d ; 0xf6801 system.c:532 + mov cx, ds ; 8c d9 ; 0xf6804 + mov ax, strict word 00004h ; b8 04 00 ; 0xf6806 + call 018bch ; e8 b0 b0 ; 0xf6809 + push 0086eh ; 68 6e 08 ; 0xf680c + push strict byte 00004h ; 6a 04 ; 0xf680f + call 018ffh ; e8 eb b0 ; 0xf6811 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf6814 + or byte [bp+018h], 001h ; 80 4e 18 01 ; 0xf6817 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf681b + xor ah, ah ; 30 e4 ; 0xf681e + or ah, 086h ; 80 cc 86 ; 0xf6820 + mov word [bp+012h], ax ; 89 46 12 ; 0xf6823 + jmp near 06659h ; e9 30 fe ; 0xf6826 + mov word [bp+018h], si ; 89 76 18 ; 0xf6829 system.c:538 + mov word [bp+012h], dx ; 89 56 12 ; 0xf682c system.c:539 + mov word [bp+00ch], 0e6f5h ; c7 46 0c f5 e6 ; 0xf682f system.c:540 + mov word [bp+014h], 0f000h ; c7 46 14 00 f0 ; 0xf6834 system.c:541 + jmp near 06659h ; e9 1d fe ; 0xf6839 system.c:542 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf683c system.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf683f + mov es, ax ; 8e c0 ; 0xf6842 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf6844 + mov word [bp+014h], ax ; 89 46 14 ; 0xf6847 system.c:49 + mov word [bp+018h], si ; 89 76 18 ; 0xf684a system.c:546 + jmp near 06659h ; e9 09 fe ; 0xf684d system.c:547 + push 0089dh ; 68 9d 08 ; 0xf6850 system.c:550 + push strict byte 00008h ; 6a 08 ; 0xf6853 + jmp short 06811h ; eb ba ; 0xf6855 + test byte [bp+012h], 0ffh ; f6 46 12 ff ; 0xf6857 system.c:562 + jne short 06876h ; 75 19 ; 0xf685b + mov word [bp+012h], dx ; 89 56 12 ; 0xf685d system.c:564 + mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf6860 system.c:565 + xor ah, ah ; 30 e4 ; 0xf6863 + cmp ax, strict word 00001h ; 3d 01 00 ; 0xf6865 + jc short 0686fh ; 72 05 ; 0xf6868 + cmp ax, strict word 00003h ; 3d 03 00 ; 0xf686a + jbe short 0684ah ; 76 db ; 0xf686d + or byte [bp+018h], 001h ; 80 4e 18 01 ; 0xf686f system.c:568 + jmp near 06659h ; e9 e3 fd ; 0xf6873 system.c:569 + mov bx, 00da0h ; bb a0 0d ; 0xf6876 system.c:573 + mov cx, ds ; 8c d9 ; 0xf6879 + mov ax, strict word 00004h ; b8 04 00 ; 0xf687b + call 018bch ; e8 3b b0 ; 0xf687e + push word [bp+00ch] ; ff 76 0c ; 0xf6881 + push word [bp+012h] ; ff 76 12 ; 0xf6884 + push 008b4h ; 68 b4 08 ; 0xf6887 + push strict byte 00004h ; 6a 04 ; 0xf688a + call 018ffh ; e8 70 b0 ; 0xf688c + add sp, strict byte 00008h ; 83 c4 08 ; 0xf688f + jmp short 06817h ; eb 83 ; 0xf6892 + ; disGetNextSymbol 0xf6894 LB 0x3634 -> off=0x0 cb=0000000000000167 uValue=00000000000f5294 'int15_blkmove' +int15_blkmove: ; 0xf6894 LB 0x167 + push bp ; 55 ; 0xf6894 system.c:858 + mov bp, sp ; 89 e5 ; 0xf6895 + push si ; 56 ; 0xf6897 + push di ; 57 ; 0xf6898 + cli ; fa ; 0xf6899 system.c:868 + mov ax, strict word 00001h ; b8 01 00 ; 0xf689a system.c:870 + call 06511h ; e8 71 fc ; 0xf689d + mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf68a0 system.c:893 + sal cx, 004h ; c1 e1 04 ; 0xf68a3 + mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf68a6 + add ax, cx ; 01 c8 ; 0xf68a9 + mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf68ab system.c:894 + shr bx, 00ch ; c1 eb 0c ; 0xf68ae + mov dl, bl ; 88 da ; 0xf68b1 + cmp ax, cx ; 39 c8 ; 0xf68b3 system.c:895 + jnc short 068b9h ; 73 02 ; 0xf68b5 + db 0feh, 0c2h + ; inc dl ; fe c2 ; 0xf68b7 system.c:896 + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf68b9 system.c:897 + add bx, strict byte 00008h ; 83 c3 08 ; 0xf68bc + mov es, [bp+006h] ; 8e 46 06 ; 0xf68bf system.c:51 + mov word [es:bx], strict word 0002fh ; 26 c7 07 2f 00 ; 0xf68c2 + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf68c7 system.c:898 + add bx, strict byte 0000ah ; 83 c3 0a ; 0xf68ca + mov es, [bp+006h] ; 8e 46 06 ; 0xf68cd system.c:51 + mov word [es:bx], ax ; 26 89 07 ; 0xf68d0 + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf68d3 system.c:899 + add bx, strict byte 0000ch ; 83 c3 0c ; 0xf68d6 + mov es, [bp+006h] ; 8e 46 06 ; 0xf68d9 system.c:41 + mov byte [es:bx], dl ; 26 88 17 ; 0xf68dc system.c:43 + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf68df system.c:900 + add bx, strict byte 0000dh ; 83 c3 0d ; 0xf68e2 + mov es, [bp+006h] ; 8e 46 06 ; 0xf68e5 system.c:41 + mov byte [es:bx], 093h ; 26 c6 07 93 ; 0xf68e8 system.c:43 + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf68ec system.c:901 + add bx, strict byte 0000eh ; 83 c3 0e ; 0xf68ef + mov es, [bp+006h] ; 8e 46 06 ; 0xf68f2 system.c:51 + mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf68f5 + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf68fa system.c:904 + add bx, strict byte 00020h ; 83 c3 20 ; 0xf68fd + mov es, [bp+006h] ; 8e 46 06 ; 0xf6900 system.c:51 + mov word [es:bx], strict word 0ffffh ; 26 c7 07 ff ff ; 0xf6903 + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6908 system.c:905 + add bx, strict byte 00022h ; 83 c3 22 ; 0xf690b + mov es, [bp+006h] ; 8e 46 06 ; 0xf690e system.c:51 + mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf6911 + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6916 system.c:906 + add bx, strict byte 00024h ; 83 c3 24 ; 0xf6919 + mov es, [bp+006h] ; 8e 46 06 ; 0xf691c system.c:41 + mov byte [es:bx], 00fh ; 26 c6 07 0f ; 0xf691f + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6923 system.c:907 + add bx, strict byte 00025h ; 83 c3 25 ; 0xf6926 + mov es, [bp+006h] ; 8e 46 06 ; 0xf6929 system.c:41 + mov byte [es:bx], 09bh ; 26 c6 07 9b ; 0xf692c + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6930 system.c:908 + add bx, strict byte 00026h ; 83 c3 26 ; 0xf6933 + mov es, [bp+006h] ; 8e 46 06 ; 0xf6936 system.c:51 + mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf6939 + mov ax, ss ; 8c d0 ; 0xf693e system.c:911 + mov dx, ax ; 89 c2 ; 0xf6940 + sal ax, 004h ; c1 e0 04 ; 0xf6942 system.c:912 + shr dx, 00ch ; c1 ea 0c ; 0xf6945 + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6948 system.c:914 + add bx, strict byte 00028h ; 83 c3 28 ; 0xf694b + mov es, [bp+006h] ; 8e 46 06 ; 0xf694e system.c:51 + mov word [es:bx], strict word 0ffffh ; 26 c7 07 ff ff ; 0xf6951 + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6956 system.c:915 + add bx, strict byte 0002ah ; 83 c3 2a ; 0xf6959 + mov es, [bp+006h] ; 8e 46 06 ; 0xf695c system.c:51 + mov word [es:bx], ax ; 26 89 07 ; 0xf695f + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6962 system.c:916 + add bx, strict byte 0002ch ; 83 c3 2c ; 0xf6965 + mov es, [bp+006h] ; 8e 46 06 ; 0xf6968 system.c:41 + mov byte [es:bx], dl ; 26 88 17 ; 0xf696b + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf696e system.c:917 + add bx, strict byte 0002dh ; 83 c3 2d ; 0xf6971 + mov es, [bp+006h] ; 8e 46 06 ; 0xf6974 system.c:41 + mov byte [es:bx], 093h ; 26 c6 07 93 ; 0xf6977 system.c:43 + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf697b system.c:918 + add bx, strict byte 0002eh ; 83 c3 2e ; 0xf697e + mov es, [bp+006h] ; 8e 46 06 ; 0xf6981 system.c:51 + mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf6984 + lea bx, [bp+004h] ; 8d 5e 04 ; 0xf6989 system.c:926 + mov si, word [bp+00ah] ; 8b 76 0a ; 0xf698c + mov es, [bp+006h] ; 8e 46 06 ; 0xf698f + mov cx, word [bp+014h] ; 8b 4e 14 ; 0xf6992 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xf6995 + mov ds, ax ; 8e d8 ; 0xf6997 + mov word [00467h], bx ; 89 1e 67 04 ; 0xf6999 + mov [00469h], ss ; 8c 16 69 04 ; 0xf699d + lgdt [es:si+008h] ; 26 0f 01 54 08 ; 0xf69a1 system.c:928 + lidt [cs:0efe1h] ; 2e 0f 01 1e e1 ef ; 0xf69a6 + push strict byte 00020h ; 6a 20 ; 0xf69ac + call 069b1h ; e8 00 00 ; 0xf69ae + pop ax ; 58 ; 0xf69b1 + add ax, strict byte 0000eh ; 83 c0 0e ; 0xf69b2 + push ax ; 50 ; 0xf69b5 + smsw ax ; 0f 01 e0 ; 0xf69b6 + or AL, strict byte 001h ; 0c 01 ; 0xf69b9 + lmsw ax ; 0f 01 f0 ; 0xf69bb + retf ; cb ; 0xf69be + mov ax, strict word 00010h ; b8 10 00 ; 0xf69bf + mov ds, ax ; 8e d8 ; 0xf69c2 + add AL, strict byte 008h ; 04 08 ; 0xf69c4 + mov es, ax ; 8e c0 ; 0xf69c6 + add AL, strict byte 010h ; 04 10 ; 0xf69c8 + mov ss, ax ; 8e d0 ; 0xf69ca + db 033h, 0f6h + ; xor si, si ; 33 f6 ; 0xf69cc system.c:929 + db 033h, 0ffh + ; xor di, di ; 33 ff ; 0xf69ce + cld ; fc ; 0xf69d0 + rep movsw ; f3 a5 ; 0xf69d1 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xf69d3 system.c:930 + out strict byte 080h, AL ; e6 80 ; 0xf69d5 + mov AL, strict byte 00fh ; b0 0f ; 0xf69d7 + out strict byte 070h, AL ; e6 70 ; 0xf69d9 + mov AL, strict byte 009h ; b0 09 ; 0xf69db + out strict byte 071h, AL ; e6 71 ; 0xf69dd + lidt [cs:0efe1h] ; 2e 0f 01 1e e1 ef ; 0xf69df + int3 ; cc ; 0xf69e5 + xor ax, ax ; 31 c0 ; 0xf69e6 system.c:931 + call 06511h ; e8 26 fb ; 0xf69e8 + sti ; fb ; 0xf69eb system.c:936 + mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf69ec system.c:938 + and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf69f0 system.c:939 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf69f4 system.c:940 + pop di ; 5f ; 0xf69f7 + pop si ; 5e ; 0xf69f8 + pop bp ; 5d ; 0xf69f9 + retn ; c3 ; 0xf69fa + ; disGetNextSymbol 0xf69fb LB 0x34cd -> off=0x0 cb=000000000000019b uValue=00000000000f53fb 'inv_op_handler' +inv_op_handler: ; 0xf69fb LB 0x19b + push bp ; 55 ; 0xf69fb invop.c:237 + mov bp, sp ; 89 e5 ; 0xf69fc + push si ; 56 ; 0xf69fe + push di ; 57 ; 0xf69ff + push ax ; 50 ; 0xf6a00 + push ax ; 50 ; 0xf6a01 + les bx, [bp+018h] ; c4 5e 18 ; 0xf6a02 invop.c:239 + cmp byte [es:bx], 0f0h ; 26 80 3f f0 ; 0xf6a05 invop.c:241 + jne short 06a11h ; 75 06 ; 0xf6a09 + inc word [bp+018h] ; ff 46 18 ; 0xf6a0b invop.c:243 + jmp near 06b8fh ; e9 7e 01 ; 0xf6a0e invop.c:244 + cmp word [es:bx], 0050fh ; 26 81 3f 0f 05 ; 0xf6a11 + je short 06a1bh ; 74 03 ; 0xf6a16 + jmp near 06b8bh ; e9 70 01 ; 0xf6a18 + mov si, 00800h ; be 00 08 ; 0xf6a1b invop.c:246 + xor ax, ax ; 31 c0 ; 0xf6a1e + mov word [bp-006h], ax ; 89 46 fa ; 0xf6a20 + mov word [bp-008h], ax ; 89 46 f8 ; 0xf6a23 invop.c:249 + mov es, ax ; 8e c0 ; 0xf6a26 invop.c:257 + mov bx, word [es:si+02ch] ; 26 8b 5c 2c ; 0xf6a28 + sub bx, strict byte 00006h ; 83 eb 06 ; 0xf6a2c + mov dx, word [es:si+020h] ; 26 8b 54 20 ; 0xf6a2f + mov ax, word [es:si+01ah] ; 26 8b 44 1a ; 0xf6a33 invop.c:258 + mov es, dx ; 8e c2 ; 0xf6a37 + mov word [es:bx], ax ; 26 89 07 ; 0xf6a39 + mov es, [bp-006h] ; 8e 46 fa ; 0xf6a3c invop.c:259 + mov ax, word [es:si+022h] ; 26 8b 44 22 ; 0xf6a3f + mov es, dx ; 8e c2 ; 0xf6a43 + mov word [es:bx+002h], ax ; 26 89 47 02 ; 0xf6a45 + mov es, [bp-006h] ; 8e 46 fa ; 0xf6a49 invop.c:260 + mov ax, word [es:si+018h] ; 26 8b 44 18 ; 0xf6a4c + mov es, dx ; 8e c2 ; 0xf6a50 + mov word [es:bx+004h], ax ; 26 89 47 04 ; 0xf6a52 + mov es, [bp-006h] ; 8e 46 fa ; 0xf6a56 invop.c:263 + mov bl, byte [es:si+038h] ; 26 8a 5c 38 ; 0xf6a59 + xor bh, bh ; 30 ff ; 0xf6a5d + mov di, word [es:si+036h] ; 26 8b 7c 36 ; 0xf6a5f + mov ax, word [es:si+024h] ; 26 8b 44 24 ; 0xf6a63 invop.c:264 + xor dx, dx ; 31 d2 ; 0xf6a67 + mov cx, strict word 00004h ; b9 04 00 ; 0xf6a69 + sal ax, 1 ; d1 e0 ; 0xf6a6c + rcl dx, 1 ; d1 d2 ; 0xf6a6e + loop 06a6ch ; e2 fa ; 0xf6a70 + cmp bx, dx ; 39 d3 ; 0xf6a72 + jne short 06a7ah ; 75 04 ; 0xf6a74 + cmp di, ax ; 39 c7 ; 0xf6a76 + je short 06a7fh ; 74 05 ; 0xf6a78 + mov word [bp-008h], strict word 00001h ; c7 46 f8 01 00 ; 0xf6a7a invop.c:265 + mov es, [bp-006h] ; 8e 46 fa ; 0xf6a7f invop.c:266 + mov bl, byte [es:si+04ah] ; 26 8a 5c 4a ; 0xf6a82 + xor bh, bh ; 30 ff ; 0xf6a86 + mov di, word [es:si+048h] ; 26 8b 7c 48 ; 0xf6a88 + mov ax, word [es:si+01eh] ; 26 8b 44 1e ; 0xf6a8c invop.c:267 + xor dx, dx ; 31 d2 ; 0xf6a90 + mov cx, strict word 00004h ; b9 04 00 ; 0xf6a92 + sal ax, 1 ; d1 e0 ; 0xf6a95 + rcl dx, 1 ; d1 d2 ; 0xf6a97 + loop 06a95h ; e2 fa ; 0xf6a99 + cmp bx, dx ; 39 d3 ; 0xf6a9b + jne short 06aa3h ; 75 04 ; 0xf6a9d + cmp di, ax ; 39 c7 ; 0xf6a9f + je short 06aa7h ; 74 04 ; 0xf6aa1 + or byte [bp-008h], 002h ; 80 4e f8 02 ; 0xf6aa3 invop.c:268 + push strict byte 00000h ; 6a 00 ; 0xf6aa7 invop.c:271 + push 00800h ; 68 00 08 ; 0xf6aa9 + push strict byte 0001fh ; 6a 1f ; 0xf6aac + db 08bh, 0dch + ; mov bx, sp ; 8b dc ; 0xf6aae + lgdt [ss:bx] ; 36 0f 01 17 ; 0xf6ab0 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf6ab4 + mov es, [bp-006h] ; 8e 46 fa ; 0xf6ab7 invop.c:274 + mov ax, word [es:si+03ah] ; 26 8b 44 3a ; 0xf6aba + mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf6abe + mov ax, word [es:si+036h] ; 26 8b 44 36 ; 0xf6ac2 invop.c:275 + mov word [es:si+00ah], ax ; 26 89 44 0a ; 0xf6ac6 + mov al, byte [es:si+039h] ; 26 8a 44 39 ; 0xf6aca invop.c:276 + xor ah, ah ; 30 e4 ; 0xf6ace + mov dx, ax ; 89 c2 ; 0xf6ad0 + sal dx, 008h ; c1 e2 08 ; 0xf6ad2 + mov al, byte [es:si+038h] ; 26 8a 44 38 ; 0xf6ad5 + or dx, ax ; 09 c2 ; 0xf6ad9 + mov word [es:si+00ch], dx ; 26 89 54 0c ; 0xf6adb + mov word [es:si+00eh], strict word 00000h ; 26 c7 44 0e 00 00 ; 0xf6adf invop.c:277 + mov ax, word [es:si+04ch] ; 26 8b 44 4c ; 0xf6ae5 invop.c:280 + mov word [es:si], ax ; 26 89 04 ; 0xf6ae9 + mov ax, word [es:si+048h] ; 26 8b 44 48 ; 0xf6aec invop.c:281 + mov word [es:si+002h], ax ; 26 89 44 02 ; 0xf6af0 + mov al, byte [es:si+04bh] ; 26 8a 44 4b ; 0xf6af4 invop.c:282 + xor ah, ah ; 30 e4 ; 0xf6af8 + mov dx, ax ; 89 c2 ; 0xf6afa + sal dx, 008h ; c1 e2 08 ; 0xf6afc + mov al, byte [es:si+04ah] ; 26 8a 44 4a ; 0xf6aff + or dx, ax ; 09 c2 ; 0xf6b03 + mov word [es:si+004h], dx ; 26 89 54 04 ; 0xf6b05 + mov al, byte [es:si+05ch] ; 26 8a 44 5c ; 0xf6b09 invop.c:285 + mov dx, word [es:si+05ah] ; 26 8b 54 5a ; 0xf6b0d + push ax ; 50 ; 0xf6b11 invop.c:286 + push dx ; 52 ; 0xf6b12 + push word [es:si+05eh] ; 26 ff 74 5e ; 0xf6b13 + db 08bh, 0dch + ; mov bx, sp ; 8b dc ; 0xf6b17 + lidt [ss:bx] ; 36 0f 01 1f ; 0xf6b19 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf6b1d + mov cx, word [bp-008h] ; 8b 4e f8 ; 0xf6b20 invop.c:289 + mov ax, 00080h ; b8 80 00 ; 0xf6b23 + mov ss, ax ; 8e d0 ; 0xf6b26 + mov ax, word [ss:0001eh] ; 36 a1 1e 00 ; 0xf6b28 + mov ds, ax ; 8e d8 ; 0xf6b2c + mov ax, word [ss:00024h] ; 36 a1 24 00 ; 0xf6b2e + mov es, ax ; 8e c0 ; 0xf6b32 + smsw ax ; 0f 01 e0 ; 0xf6b34 invop.c:290 + inc ax ; 40 ; 0xf6b37 + lmsw ax ; 0f 01 f0 ; 0xf6b38 + mov ax, strict word 00008h ; b8 08 00 ; 0xf6b3b + test cx, strict word 00001h ; f7 c1 01 00 ; 0xf6b3e + je near 06b48h ; 0f 84 02 00 ; 0xf6b42 + mov es, ax ; 8e c0 ; 0xf6b46 + test cx, strict word 00002h ; f7 c1 02 00 ; 0xf6b48 + je near 06b70h ; 0f 84 20 00 ; 0xf6b4c + mov bx, word [word ss:00000h] ; 36 8b 1e 00 00 ; 0xf6b50 + mov word [word ss:00008h], bx ; 36 89 1e 08 00 ; 0xf6b55 + mov bx, word [word ss:00002h] ; 36 8b 1e 02 00 ; 0xf6b5a + mov word [word ss:0000ah], bx ; 36 89 1e 0a 00 ; 0xf6b5f + mov bx, word [word ss:00004h] ; 36 8b 1e 04 00 ; 0xf6b64 + mov word [word ss:0000ch], bx ; 36 89 1e 0c 00 ; 0xf6b69 + mov ds, ax ; 8e d8 ; 0xf6b6e + mov eax, cr0 ; 0f 20 c0 ; 0xf6b70 + dec ax ; 48 ; 0xf6b73 + mov cr0, eax ; 0f 22 c0 ; 0xf6b74 + mov sp, strict word 00026h ; bc 26 00 ; 0xf6b77 invop.c:291 + popaw ; 61 ; 0xf6b7a + mov sp, word [word ss:0002ch] ; 36 8b 26 2c 00 ; 0xf6b7b + sub sp, strict byte 00006h ; 83 ec 06 ; 0xf6b80 + mov ss, [word ss:00020h] ; 36 8e 16 20 00 ; 0xf6b83 + iret ; cf ; 0xf6b88 + jmp short 06b8fh ; eb 04 ; 0xf6b89 invop.c:343 + sti ; fb ; 0xf6b8b invop.c:347 + hlt ; f4 ; 0xf6b8c invop.c:348 + jmp short 06b8ch ; eb fd ; 0xf6b8d + lea sp, [bp-004h] ; 8d 66 fc ; 0xf6b8f invop.c:350 + pop di ; 5f ; 0xf6b92 + pop si ; 5e ; 0xf6b93 + pop bp ; 5d ; 0xf6b94 + retn ; c3 ; 0xf6b95 + ; disGetNextSymbol 0xf6b96 LB 0x3332 -> off=0x0 cb=0000000000000028 uValue=00000000000f5596 'init_rtc' +init_rtc: ; 0xf6b96 LB 0x28 + push bp ; 55 ; 0xf6b96 timepci.c:74 + mov bp, sp ; 89 e5 ; 0xf6b97 + push dx ; 52 ; 0xf6b99 + mov dx, strict word 00026h ; ba 26 00 ; 0xf6b9a timepci.c:76 + mov ax, strict word 0000ah ; b8 0a 00 ; 0xf6b9d + call 0166bh ; e8 c8 aa ; 0xf6ba0 + mov dx, strict word 00002h ; ba 02 00 ; 0xf6ba3 timepci.c:77 + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6ba6 + call 0166bh ; e8 bf aa ; 0xf6ba9 + mov ax, strict word 0000ch ; b8 0c 00 ; 0xf6bac timepci.c:78 + call 01650h ; e8 9e aa ; 0xf6baf + mov ax, strict word 0000dh ; b8 0d 00 ; 0xf6bb2 timepci.c:79 + call 01650h ; e8 98 aa ; 0xf6bb5 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf6bb8 timepci.c:80 + pop dx ; 5a ; 0xf6bbb + pop bp ; 5d ; 0xf6bbc + retn ; c3 ; 0xf6bbd + ; disGetNextSymbol 0xf6bbe LB 0x330a -> off=0x0 cb=0000000000000021 uValue=00000000000f55be 'rtc_updating' +rtc_updating: ; 0xf6bbe LB 0x21 + push bp ; 55 ; 0xf6bbe timepci.c:82 + mov bp, sp ; 89 e5 ; 0xf6bbf + push dx ; 52 ; 0xf6bc1 + mov dx, 061a8h ; ba a8 61 ; 0xf6bc2 timepci.c:95 + dec dx ; 4a ; 0xf6bc5 timepci.c:96 + je short 06bd6h ; 74 0e ; 0xf6bc6 + mov ax, strict word 0000ah ; b8 0a 00 ; 0xf6bc8 timepci.c:97 + call 01650h ; e8 82 aa ; 0xf6bcb + test AL, strict byte 080h ; a8 80 ; 0xf6bce + jne short 06bc5h ; 75 f3 ; 0xf6bd0 + xor ax, ax ; 31 c0 ; 0xf6bd2 timepci.c:98 + jmp short 06bd9h ; eb 03 ; 0xf6bd4 + mov ax, strict word 00001h ; b8 01 00 ; 0xf6bd6 timepci.c:100 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf6bd9 timepci.c:101 + pop dx ; 5a ; 0xf6bdc + pop bp ; 5d ; 0xf6bdd + retn ; c3 ; 0xf6bde + ; disGetNextSymbol 0xf6bdf LB 0x32e9 -> off=0x0 cb=0000000000000098 uValue=00000000000f55df 'int70_function' +int70_function: ; 0xf6bdf LB 0x98 + push bp ; 55 ; 0xf6bdf timepci.c:110 + mov bp, sp ; 89 e5 ; 0xf6be0 + push si ; 56 ; 0xf6be2 + push ax ; 50 ; 0xf6be3 + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6be4 timepci.c:116 + call 01650h ; e8 66 aa ; 0xf6be7 + mov bl, al ; 88 c3 ; 0xf6bea + mov byte [bp-004h], al ; 88 46 fc ; 0xf6bec + mov ax, strict word 0000ch ; b8 0c 00 ; 0xf6bef timepci.c:117 + call 01650h ; e8 5b aa ; 0xf6bf2 + mov dl, al ; 88 c2 ; 0xf6bf5 + test bl, 060h ; f6 c3 60 ; 0xf6bf7 timepci.c:119 + je short 06c57h ; 74 5b ; 0xf6bfa + test AL, strict byte 020h ; a8 20 ; 0xf6bfc timepci.c:120 + je short 06c04h ; 74 04 ; 0xf6bfe + sti ; fb ; 0xf6c00 timepci.c:122 + int 04ah ; cd 4a ; 0xf6c01 timepci.c:123 + cli ; fa ; 0xf6c03 timepci.c:124 + test dl, 040h ; f6 c2 40 ; 0xf6c04 timepci.c:126 + je short 06c6eh ; 74 65 ; 0xf6c07 + mov bx, 000a0h ; bb a0 00 ; 0xf6c09 timepci.c:38 + mov dx, strict word 00040h ; ba 40 00 ; 0xf6c0c + mov es, dx ; 8e c2 ; 0xf6c0f + mov al, byte [es:bx] ; 26 8a 07 ; 0xf6c11 + test al, al ; 84 c0 ; 0xf6c14 timepci.c:39 + je short 06c6eh ; 74 56 ; 0xf6c16 + mov bx, 0009ch ; bb 9c 00 ; 0xf6c18 timepci.c:58 + mov dx, word [es:bx] ; 26 8b 17 ; 0xf6c1b + mov bx, word [es:bx+002h] ; 26 8b 5f 02 ; 0xf6c1e + test bx, bx ; 85 db ; 0xf6c22 timepci.c:134 + jne short 06c59h ; 75 33 ; 0xf6c24 + cmp dx, 003d1h ; 81 fa d1 03 ; 0xf6c26 + jnc short 06c59h ; 73 2d ; 0xf6c2a + mov bx, 00098h ; bb 98 00 ; 0xf6c2c timepci.c:48 + mov cx, word [es:bx] ; 26 8b 0f ; 0xf6c2f + mov bx, 0009ah ; bb 9a 00 ; 0xf6c32 timepci.c:48 + mov bx, word [es:bx] ; 26 8b 1f ; 0xf6c35 + mov si, 000a0h ; be a0 00 ; 0xf6c38 timepci.c:43 + mov byte [es:si], 000h ; 26 c6 04 00 ; 0xf6c3b + mov dl, byte [bp-004h] ; 8a 56 fc ; 0xf6c3f timepci.c:141 + and dl, 037h ; 80 e2 37 ; 0xf6c42 + xor dh, dh ; 30 f6 ; 0xf6c45 + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6c47 + call 0166bh ; e8 1e aa ; 0xf6c4a + mov es, cx ; 8e c1 ; 0xf6c4d timepci.c:38 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf6c4f + or AL, strict byte 080h ; 0c 80 ; 0xf6c52 timepci.c:39 + mov byte [es:bx], al ; 26 88 07 ; 0xf6c54 timepci.c:43 + jmp short 06c6eh ; eb 15 ; 0xf6c57 timepci.c:143 + mov cx, dx ; 89 d1 ; 0xf6c59 timepci.c:145 + add cx, 0fc2fh ; 81 c1 2f fc ; 0xf6c5b + mov dx, bx ; 89 da ; 0xf6c5f + adc dx, strict byte 0ffffh ; 83 d2 ff ; 0xf6c61 + mov bx, 0009ch ; bb 9c 00 ; 0xf6c64 timepci.c:63 + mov word [es:bx], cx ; 26 89 0f ; 0xf6c67 + mov word [es:bx+002h], dx ; 26 89 57 02 ; 0xf6c6a + call 0e030h ; e8 bf 73 ; 0xf6c6e timepci.c:151 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf6c71 timepci.c:152 + pop si ; 5e ; 0xf6c74 + pop bp ; 5d ; 0xf6c75 + retn ; c3 ; 0xf6c76 + ; disGetNextSymbol 0xf6c77 LB 0x3251 -> off=0x10 cb=00000000000001d9 uValue=00000000000f5687 'int1a_function' + db 09dh, 06ch, 0c4h, 06ch, 0e9h, 06ch, 025h, 06dh, 077h, 06dh, 0aeh, 06dh, 0f5h, 06dh, 050h, 06eh +int1a_function: ; 0xf6c87 LB 0x1d9 + push bp ; 55 ; 0xf6c87 timepci.c:157 + mov bp, sp ; 89 e5 ; 0xf6c88 + sti ; fb ; 0xf6c8a timepci.c:163 + mov al, byte [bp+013h] ; 8a 46 13 ; 0xf6c8b timepci.c:165 + cmp AL, strict byte 007h ; 3c 07 ; 0xf6c8e + jnbe short 06cf0h ; 77 5e ; 0xf6c90 + mov bl, al ; 88 c3 ; 0xf6c92 + xor bh, bh ; 30 ff ; 0xf6c94 + add bx, bx ; 01 db ; 0xf6c96 + jmp word [cs:bx+06c77h] ; 2e ff a7 77 6c ; 0xf6c98 + cli ; fa ; 0xf6c9d timepci.c:167 + mov bx, 0046eh ; bb 6e 04 ; 0xf6c9e timepci.c:168 + xor ax, ax ; 31 c0 ; 0xf6ca1 + mov es, ax ; 8e c0 ; 0xf6ca3 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf6ca5 + mov word [bp+010h], ax ; 89 46 10 ; 0xf6ca8 + mov bx, 0046ch ; bb 6c 04 ; 0xf6cab timepci.c:169 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf6cae + mov word [bp+00eh], ax ; 89 46 0e ; 0xf6cb1 + mov bx, 00470h ; bb 70 04 ; 0xf6cb4 timepci.c:170 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf6cb7 + mov byte [bp+012h], al ; 88 46 12 ; 0xf6cba + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf6cbd timepci.c:171 + sti ; fb ; 0xf6cc1 timepci.c:172 + jmp short 06cf0h ; eb 2c ; 0xf6cc2 timepci.c:175 + cli ; fa ; 0xf6cc4 timepci.c:178 + mov bx, 0046eh ; bb 6e 04 ; 0xf6cc5 timepci.c:179 + xor ax, ax ; 31 c0 ; 0xf6cc8 + mov es, ax ; 8e c0 ; 0xf6cca + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf6ccc + mov word [es:bx], ax ; 26 89 07 ; 0xf6ccf + mov bx, 0046ch ; bb 6c 04 ; 0xf6cd2 timepci.c:180 + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf6cd5 + mov word [es:bx], ax ; 26 89 07 ; 0xf6cd8 + mov bx, 00470h ; bb 70 04 ; 0xf6cdb timepci.c:181 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf6cde + sti ; fb ; 0xf6ce2 timepci.c:182 + mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf6ce3 timepci.c:183 + jmp short 06cf0h ; eb 07 ; 0xf6ce7 timepci.c:185 + call 06bbeh ; e8 d2 fe ; 0xf6ce9 timepci.c:188 + test ax, ax ; 85 c0 ; 0xf6cec + je short 06cf3h ; 74 03 ; 0xf6cee + jmp near 06d21h ; e9 2e 00 ; 0xf6cf0 timepci.c:190 + xor ax, ax ; 31 c0 ; 0xf6cf3 timepci.c:193 + call 01650h ; e8 58 a9 ; 0xf6cf5 + mov byte [bp+00fh], al ; 88 46 0f ; 0xf6cf8 + mov ax, strict word 00002h ; b8 02 00 ; 0xf6cfb timepci.c:194 + call 01650h ; e8 4f a9 ; 0xf6cfe + mov byte [bp+010h], al ; 88 46 10 ; 0xf6d01 + mov ax, strict word 00004h ; b8 04 00 ; 0xf6d04 timepci.c:195 + call 01650h ; e8 46 a9 ; 0xf6d07 + mov dl, al ; 88 c2 ; 0xf6d0a + mov byte [bp+011h], al ; 88 46 11 ; 0xf6d0c + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6d0f timepci.c:196 + call 01650h ; e8 3b a9 ; 0xf6d12 + and AL, strict byte 001h ; 24 01 ; 0xf6d15 + mov byte [bp+00eh], al ; 88 46 0e ; 0xf6d17 + mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf6d1a timepci.c:197 + mov byte [bp+012h], dl ; 88 56 12 ; 0xf6d1e timepci.c:198 + mov sp, bp ; 89 ec ; 0xf6d21 timepci.c:200 + pop bp ; 5d ; 0xf6d23 + retn ; c3 ; 0xf6d24 + call 06bbeh ; e8 96 fe ; 0xf6d25 timepci.c:213 + test ax, ax ; 85 c0 ; 0xf6d28 + je short 06d2fh ; 74 03 ; 0xf6d2a + call 06b96h ; e8 67 fe ; 0xf6d2c timepci.c:214 + mov dl, byte [bp+00fh] ; 8a 56 0f ; 0xf6d2f timepci.c:217 + xor dh, dh ; 30 f6 ; 0xf6d32 + xor ax, ax ; 31 c0 ; 0xf6d34 + call 0166bh ; e8 32 a9 ; 0xf6d36 + mov dl, byte [bp+010h] ; 8a 56 10 ; 0xf6d39 timepci.c:218 + xor dh, dh ; 30 f6 ; 0xf6d3c + mov ax, strict word 00002h ; b8 02 00 ; 0xf6d3e + call 0166bh ; e8 27 a9 ; 0xf6d41 + mov dl, byte [bp+011h] ; 8a 56 11 ; 0xf6d44 timepci.c:219 + xor dh, dh ; 30 f6 ; 0xf6d47 + mov ax, strict word 00004h ; b8 04 00 ; 0xf6d49 + call 0166bh ; e8 1c a9 ; 0xf6d4c + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6d4f timepci.c:221 + call 01650h ; e8 fb a8 ; 0xf6d52 + mov bl, al ; 88 c3 ; 0xf6d55 + and bl, 060h ; 80 e3 60 ; 0xf6d57 + or bl, 002h ; 80 cb 02 ; 0xf6d5a + mov al, byte [bp+00eh] ; 8a 46 0e ; 0xf6d5d + and AL, strict byte 001h ; 24 01 ; 0xf6d60 + or bl, al ; 08 c3 ; 0xf6d62 + mov dl, bl ; 88 da ; 0xf6d64 timepci.c:223 + xor dh, dh ; 30 f6 ; 0xf6d66 + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6d68 + call 0166bh ; e8 fd a8 ; 0xf6d6b + mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf6d6e timepci.c:224 + mov byte [bp+012h], bl ; 88 5e 12 ; 0xf6d72 timepci.c:225 + jmp short 06d21h ; eb aa ; 0xf6d75 timepci.c:227 + mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf6d77 timepci.c:230 + call 06bbeh ; e8 40 fe ; 0xf6d7b timepci.c:231 + test ax, ax ; 85 c0 ; 0xf6d7e + je short 06d84h ; 74 02 ; 0xf6d80 + jmp short 06d21h ; eb 9d ; 0xf6d82 timepci.c:233 + mov ax, strict word 00009h ; b8 09 00 ; 0xf6d84 timepci.c:235 + call 01650h ; e8 c6 a8 ; 0xf6d87 + mov byte [bp+010h], al ; 88 46 10 ; 0xf6d8a + mov ax, strict word 00008h ; b8 08 00 ; 0xf6d8d timepci.c:236 + call 01650h ; e8 bd a8 ; 0xf6d90 + mov byte [bp+00fh], al ; 88 46 0f ; 0xf6d93 + mov ax, strict word 00007h ; b8 07 00 ; 0xf6d96 timepci.c:237 + call 01650h ; e8 b4 a8 ; 0xf6d99 + mov byte [bp+00eh], al ; 88 46 0e ; 0xf6d9c + mov ax, strict word 00032h ; b8 32 00 ; 0xf6d9f timepci.c:238 + call 01650h ; e8 ab a8 ; 0xf6da2 + mov byte [bp+011h], al ; 88 46 11 ; 0xf6da5 + mov byte [bp+012h], al ; 88 46 12 ; 0xf6da8 timepci.c:239 + jmp near 06d21h ; e9 73 ff ; 0xf6dab timepci.c:241 + call 06bbeh ; e8 0d fe ; 0xf6dae timepci.c:254 + test ax, ax ; 85 c0 ; 0xf6db1 + je short 06dbbh ; 74 06 ; 0xf6db3 + call 06b96h ; e8 de fd ; 0xf6db5 timepci.c:255 + jmp near 06d21h ; e9 66 ff ; 0xf6db8 timepci.c:257 + mov dl, byte [bp+010h] ; 8a 56 10 ; 0xf6dbb timepci.c:259 + xor dh, dh ; 30 f6 ; 0xf6dbe + mov ax, strict word 00009h ; b8 09 00 ; 0xf6dc0 + call 0166bh ; e8 a5 a8 ; 0xf6dc3 + mov dl, byte [bp+00fh] ; 8a 56 0f ; 0xf6dc6 timepci.c:260 + xor dh, dh ; 30 f6 ; 0xf6dc9 + mov ax, strict word 00008h ; b8 08 00 ; 0xf6dcb + call 0166bh ; e8 9a a8 ; 0xf6dce + mov dl, byte [bp+00eh] ; 8a 56 0e ; 0xf6dd1 timepci.c:261 + xor dh, dh ; 30 f6 ; 0xf6dd4 + mov ax, strict word 00007h ; b8 07 00 ; 0xf6dd6 + call 0166bh ; e8 8f a8 ; 0xf6dd9 + mov dl, byte [bp+011h] ; 8a 56 11 ; 0xf6ddc timepci.c:262 + xor dh, dh ; 30 f6 ; 0xf6ddf + mov ax, strict word 00032h ; b8 32 00 ; 0xf6de1 + call 0166bh ; e8 84 a8 ; 0xf6de4 + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6de7 timepci.c:263 + call 01650h ; e8 63 a8 ; 0xf6dea + mov bl, al ; 88 c3 ; 0xf6ded + and bl, 07fh ; 80 e3 7f ; 0xf6def + jmp near 06d64h ; e9 6f ff ; 0xf6df2 + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6df5 timepci.c:281 + call 01650h ; e8 55 a8 ; 0xf6df8 + mov bl, al ; 88 c3 ; 0xf6dfb + mov word [bp+012h], strict word 00000h ; c7 46 12 00 00 ; 0xf6dfd timepci.c:282 + test AL, strict byte 020h ; a8 20 ; 0xf6e02 timepci.c:283 + je short 06e09h ; 74 03 ; 0xf6e04 + jmp near 06d21h ; e9 18 ff ; 0xf6e06 timepci.c:286 + call 06bbeh ; e8 b2 fd ; 0xf6e09 timepci.c:288 + test ax, ax ; 85 c0 ; 0xf6e0c + je short 06e13h ; 74 03 ; 0xf6e0e + call 06b96h ; e8 83 fd ; 0xf6e10 timepci.c:289 + mov dl, byte [bp+00fh] ; 8a 56 0f ; 0xf6e13 timepci.c:292 + xor dh, dh ; 30 f6 ; 0xf6e16 + mov ax, strict word 00001h ; b8 01 00 ; 0xf6e18 + call 0166bh ; e8 4d a8 ; 0xf6e1b + mov dl, byte [bp+010h] ; 8a 56 10 ; 0xf6e1e timepci.c:293 + xor dh, dh ; 30 f6 ; 0xf6e21 + mov ax, strict word 00003h ; b8 03 00 ; 0xf6e23 + call 0166bh ; e8 42 a8 ; 0xf6e26 + mov dl, byte [bp+011h] ; 8a 56 11 ; 0xf6e29 timepci.c:294 + xor dh, dh ; 30 f6 ; 0xf6e2c + mov ax, strict word 00005h ; b8 05 00 ; 0xf6e2e + call 0166bh ; e8 37 a8 ; 0xf6e31 + mov dx, 000a1h ; ba a1 00 ; 0xf6e34 timepci.c:295 + in AL, DX ; ec ; 0xf6e37 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf6e38 + and AL, strict byte 0feh ; 24 fe ; 0xf6e3a + out DX, AL ; ee ; 0xf6e3c + mov dl, bl ; 88 da ; 0xf6e3d timepci.c:297 + and dl, 05fh ; 80 e2 5f ; 0xf6e3f + or dl, 020h ; 80 ca 20 ; 0xf6e42 + xor dh, dh ; 30 f6 ; 0xf6e45 + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6e47 + call 0166bh ; e8 1e a8 ; 0xf6e4a + jmp near 06d21h ; e9 d1 fe ; 0xf6e4d timepci.c:299 + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6e50 timepci.c:312 + call 01650h ; e8 fa a7 ; 0xf6e53 + mov bl, al ; 88 c3 ; 0xf6e56 + mov dl, al ; 88 c2 ; 0xf6e58 timepci.c:314 + and dl, 057h ; 80 e2 57 ; 0xf6e5a + jmp near 06d66h ; e9 06 ff ; 0xf6e5d + ; disGetNextSymbol 0xf6e60 LB 0x3068 -> off=0x0 cb=0000000000000034 uValue=00000000000f5860 'send_to_mouse_ctrl' +send_to_mouse_ctrl: ; 0xf6e60 LB 0x34 + push bp ; 55 ; 0xf6e60 ps2mouse.c:77 + mov bp, sp ; 89 e5 ; 0xf6e61 + push bx ; 53 ; 0xf6e63 + push dx ; 52 ; 0xf6e64 + mov bl, al ; 88 c3 ; 0xf6e65 + mov dx, strict word 00064h ; ba 64 00 ; 0xf6e67 ps2mouse.c:81 + in AL, DX ; ec ; 0xf6e6a + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf6e6b + test AL, strict byte 002h ; a8 02 ; 0xf6e6d + je short 06e7fh ; 74 0e ; 0xf6e6f + push 008eeh ; 68 ee 08 ; 0xf6e71 ps2mouse.c:82 + push 01168h ; 68 68 11 ; 0xf6e74 + push strict byte 00007h ; 6a 07 ; 0xf6e77 + call 018ffh ; e8 83 aa ; 0xf6e79 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf6e7c + mov AL, strict byte 0d4h ; b0 d4 ; 0xf6e7f ps2mouse.c:83 + mov dx, strict word 00064h ; ba 64 00 ; 0xf6e81 + out DX, AL ; ee ; 0xf6e84 + mov al, bl ; 88 d8 ; 0xf6e85 ps2mouse.c:84 + mov dx, strict word 00060h ; ba 60 00 ; 0xf6e87 + out DX, AL ; ee ; 0xf6e8a + xor al, bl ; 30 d8 ; 0xf6e8b ps2mouse.c:86 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf6e8d + pop dx ; 5a ; 0xf6e90 + pop bx ; 5b ; 0xf6e91 + pop bp ; 5d ; 0xf6e92 + retn ; c3 ; 0xf6e93 + ; disGetNextSymbol 0xf6e94 LB 0x3034 -> off=0x0 cb=000000000000005d uValue=00000000000f5894 'get_mouse_data' +get_mouse_data: ; 0xf6e94 LB 0x5d + push bp ; 55 ; 0xf6e94 ps2mouse.c:89 + mov bp, sp ; 89 e5 ; 0xf6e95 + push bx ; 53 ; 0xf6e97 + push cx ; 51 ; 0xf6e98 + push ax ; 50 ; 0xf6e99 + mov bx, ax ; 89 c3 ; 0xf6e9a + mov es, dx ; 8e c2 ; 0xf6e9c + mov cx, 02710h ; b9 10 27 ; 0xf6e9e ps2mouse.c:91 + mov dx, strict word 00064h ; ba 64 00 ; 0xf6ea1 ps2mouse.c:94 + in AL, DX ; ec ; 0xf6ea4 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf6ea5 + and ax, strict word 00021h ; 25 21 00 ; 0xf6ea7 + cmp ax, strict word 00021h ; 3d 21 00 ; 0xf6eaa + je short 06ed7h ; 74 28 ; 0xf6ead + test cx, cx ; 85 c9 ; 0xf6eaf + je short 06ed7h ; 74 24 ; 0xf6eb1 + mov dx, strict word 00061h ; ba 61 00 ; 0xf6eb3 ps2mouse.c:97 + in AL, DX ; ec ; 0xf6eb6 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf6eb7 + and AL, strict byte 010h ; 24 10 ; 0xf6eb9 + mov byte [bp-006h], al ; 88 46 fa ; 0xf6ebb + mov dx, strict word 00061h ; ba 61 00 ; 0xf6ebe ps2mouse.c:98 + in AL, DX ; ec ; 0xf6ec1 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf6ec2 + mov dx, ax ; 89 c2 ; 0xf6ec4 + xor dh, ah ; 30 e6 ; 0xf6ec6 + and dl, 010h ; 80 e2 10 ; 0xf6ec8 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf6ecb + xor ah, ah ; 30 e4 ; 0xf6ece + cmp dx, ax ; 39 c2 ; 0xf6ed0 + je short 06ebeh ; 74 ea ; 0xf6ed2 + dec cx ; 49 ; 0xf6ed4 ps2mouse.c:100 + jmp short 06ea1h ; eb ca ; 0xf6ed5 ps2mouse.c:101 + test cx, cx ; 85 c9 ; 0xf6ed7 ps2mouse.c:103 + jne short 06edfh ; 75 04 ; 0xf6ed9 + mov AL, strict byte 001h ; b0 01 ; 0xf6edb ps2mouse.c:104 + jmp short 06eeah ; eb 0b ; 0xf6edd + mov dx, strict word 00060h ; ba 60 00 ; 0xf6edf ps2mouse.c:106 + in AL, DX ; ec ; 0xf6ee2 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf6ee3 + mov byte [es:bx], al ; 26 88 07 ; 0xf6ee5 ps2mouse.c:107 + xor al, al ; 30 c0 ; 0xf6ee8 ps2mouse.c:108 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf6eea ps2mouse.c:109 + pop cx ; 59 ; 0xf6eed + pop bx ; 5b ; 0xf6eee + pop bp ; 5d ; 0xf6eef + retn ; c3 ; 0xf6ef0 + ; disGetNextSymbol 0xf6ef1 LB 0x2fd7 -> off=0x0 cb=0000000000000032 uValue=00000000000f58f1 'set_kbd_command_byte' +set_kbd_command_byte: ; 0xf6ef1 LB 0x32 + push bp ; 55 ; 0xf6ef1 ps2mouse.c:111 + mov bp, sp ; 89 e5 ; 0xf6ef2 + push bx ; 53 ; 0xf6ef4 + push dx ; 52 ; 0xf6ef5 + mov bl, al ; 88 c3 ; 0xf6ef6 + mov dx, strict word 00064h ; ba 64 00 ; 0xf6ef8 ps2mouse.c:113 + in AL, DX ; ec ; 0xf6efb + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf6efc + test AL, strict byte 002h ; a8 02 ; 0xf6efe + je short 06f10h ; 74 0e ; 0xf6f00 + push 008f8h ; 68 f8 08 ; 0xf6f02 ps2mouse.c:114 + push 01168h ; 68 68 11 ; 0xf6f05 + push strict byte 00007h ; 6a 07 ; 0xf6f08 + call 018ffh ; e8 f2 a9 ; 0xf6f0a + add sp, strict byte 00006h ; 83 c4 06 ; 0xf6f0d + mov AL, strict byte 060h ; b0 60 ; 0xf6f10 ps2mouse.c:116 + mov dx, strict word 00064h ; ba 64 00 ; 0xf6f12 + out DX, AL ; ee ; 0xf6f15 + mov al, bl ; 88 d8 ; 0xf6f16 ps2mouse.c:117 + mov dx, strict word 00060h ; ba 60 00 ; 0xf6f18 + out DX, AL ; ee ; 0xf6f1b + lea sp, [bp-004h] ; 8d 66 fc ; 0xf6f1c ps2mouse.c:118 + pop dx ; 5a ; 0xf6f1f + pop bx ; 5b ; 0xf6f20 + pop bp ; 5d ; 0xf6f21 + retn ; c3 ; 0xf6f22 + ; disGetNextSymbol 0xf6f23 LB 0x2fa5 -> off=0x0 cb=000000000000009e uValue=00000000000f5923 'int74_function' +int74_function: ; 0xf6f23 LB 0x9e + push bp ; 55 ; 0xf6f23 ps2mouse.c:121 + mov bp, sp ; 89 e5 ; 0xf6f24 + push si ; 56 ; 0xf6f26 + push ax ; 50 ; 0xf6f27 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf6f28 ps2mouse.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf6f2b + mov es, ax ; 8e c0 ; 0xf6f2e + mov bx, word [es:bx] ; 26 8b 1f ; 0xf6f30 + mov word [bp+004h], strict word 00000h ; c7 46 04 00 00 ; 0xf6f33 ps2mouse.c:129 + mov dx, strict word 00064h ; ba 64 00 ; 0xf6f38 ps2mouse.c:131 + in AL, DX ; ec ; 0xf6f3b + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf6f3c + and AL, strict byte 021h ; 24 21 ; 0xf6f3e ps2mouse.c:132 + cmp AL, strict byte 021h ; 3c 21 ; 0xf6f40 + jne short 06f62h ; 75 1e ; 0xf6f42 + mov dx, strict word 00060h ; ba 60 00 ; 0xf6f44 ps2mouse.c:135 + in AL, DX ; ec ; 0xf6f47 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf6f48 + mov byte [bp-004h], al ; 88 46 fc ; 0xf6f4a + mov si, strict word 00026h ; be 26 00 ; 0xf6f4d ps2mouse.c:38 + mov es, bx ; 8e c3 ; 0xf6f50 + mov al, byte [es:si] ; 26 8a 04 ; 0xf6f52 + mov si, strict word 00027h ; be 27 00 ; 0xf6f55 ps2mouse.c:38 + mov ah, byte [es:si] ; 26 8a 24 ; 0xf6f58 + mov cl, ah ; 88 e1 ; 0xf6f5b ps2mouse.c:39 + test ah, 080h ; f6 c4 80 ; 0xf6f5d ps2mouse.c:141 + jne short 06f64h ; 75 02 ; 0xf6f60 + jmp short 06fbbh ; eb 57 ; 0xf6f62 ps2mouse.c:142 + mov ch, cl ; 88 cd ; 0xf6f64 ps2mouse.c:145 + and ch, 007h ; 80 e5 07 ; 0xf6f66 + mov ah, al ; 88 c4 ; 0xf6f69 ps2mouse.c:146 + and ah, 007h ; 80 e4 07 ; 0xf6f6b + mov dl, ah ; 88 e2 ; 0xf6f6e ps2mouse.c:147 + xor dh, dh ; 30 f6 ; 0xf6f70 + mov si, dx ; 89 d6 ; 0xf6f72 + add si, strict byte 00028h ; 83 c6 28 ; 0xf6f74 + mov es, bx ; 8e c3 ; 0xf6f77 ps2mouse.c:43 + mov dl, byte [bp-004h] ; 8a 56 fc ; 0xf6f79 + mov byte [es:si], dl ; 26 88 14 ; 0xf6f7c + cmp ah, ch ; 38 ec ; 0xf6f7f ps2mouse.c:149 + jc short 06fb1h ; 72 2e ; 0xf6f81 + mov si, strict word 00028h ; be 28 00 ; 0xf6f83 ps2mouse.c:38 + mov al, byte [es:si] ; 26 8a 04 ; 0xf6f86 + xor ah, ah ; 30 e4 ; 0xf6f89 ps2mouse.c:39 + mov word [bp+00ch], ax ; 89 46 0c ; 0xf6f8b + mov si, strict word 00029h ; be 29 00 ; 0xf6f8e ps2mouse.c:38 + mov al, byte [es:si] ; 26 8a 04 ; 0xf6f91 + mov word [bp+00ah], ax ; 89 46 0a ; 0xf6f94 ps2mouse.c:39 + mov si, strict word 0002ah ; be 2a 00 ; 0xf6f97 ps2mouse.c:38 + mov al, byte [es:si] ; 26 8a 04 ; 0xf6f9a + mov word [bp+008h], ax ; 89 46 08 ; 0xf6f9d ps2mouse.c:39 + xor al, al ; 30 c0 ; 0xf6fa0 ps2mouse.c:154 + mov word [bp+006h], ax ; 89 46 06 ; 0xf6fa2 + test cl, 080h ; f6 c1 80 ; 0xf6fa5 ps2mouse.c:157 + je short 06fb3h ; 74 09 ; 0xf6fa8 + mov word [bp+004h], strict word 00001h ; c7 46 04 01 00 ; 0xf6faa ps2mouse.c:158 + jmp short 06fb3h ; eb 02 ; 0xf6faf ps2mouse.c:160 + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf6fb1 ps2mouse.c:161 + mov si, strict word 00026h ; be 26 00 ; 0xf6fb3 ps2mouse.c:43 + mov es, bx ; 8e c3 ; 0xf6fb6 + mov byte [es:si], al ; 26 88 04 ; 0xf6fb8 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf6fbb ps2mouse.c:164 + pop si ; 5e ; 0xf6fbe + pop bp ; 5d ; 0xf6fbf + retn ; c3 ; 0xf6fc0 + ; disGetNextSymbol 0xf6fc1 LB 0x2f07 -> off=0x10 cb=000000000000036c uValue=00000000000f59d1 'int15_function_mouse' + db 012h, 070h, 083h, 070h, 0f6h, 070h, 088h, 071h, 0f4h, 071h, 058h, 070h, 01ch, 072h, 0e5h, 072h +int15_function_mouse: ; 0xf6fd1 LB 0x36c + push bp ; 55 ; 0xf6fd1 ps2mouse.c:166 + mov bp, sp ; 89 e5 ; 0xf6fd2 + sub sp, strict byte 00006h ; 83 ec 06 ; 0xf6fd4 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf6fd7 ps2mouse.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf6fda + mov es, ax ; 8e c0 ; 0xf6fdd + mov dx, word [es:bx] ; 26 8b 17 ; 0xf6fdf + cmp byte [bp+012h], 007h ; 80 7e 12 07 ; 0xf6fe2 ps2mouse.c:188 + jbe short 06ff3h ; 76 0b ; 0xf6fe6 + or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf6fe8 ps2mouse.c:191 + mov byte [bp+013h], 001h ; c6 46 13 01 ; 0xf6fec ps2mouse.c:192 + jmp near 07339h ; e9 46 03 ; 0xf6ff0 ps2mouse.c:193 + mov ax, strict word 00065h ; b8 65 00 ; 0xf6ff3 ps2mouse.c:197 + call 06ef1h ; e8 f8 fe ; 0xf6ff6 + and word [bp+018h], strict byte 0fffeh ; 83 66 18 fe ; 0xf6ff9 ps2mouse.c:198 + mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf6ffd ps2mouse.c:199 + mov bl, byte [bp+012h] ; 8a 5e 12 ; 0xf7001 ps2mouse.c:201 + cmp bl, 007h ; 80 fb 07 ; 0xf7004 + jnbe short 07066h ; 77 5d ; 0xf7007 + xor bh, bh ; 30 ff ; 0xf7009 + add bx, bx ; 01 db ; 0xf700b + jmp word [cs:bx+06fc1h] ; 2e ff a7 c1 6f ; 0xf700d + cmp byte [bp+00dh], 001h ; 80 7e 0d 01 ; 0xf7012 ps2mouse.c:204 + jnbe short 07069h ; 77 51 ; 0xf7016 + mov bx, strict word 00027h ; bb 27 00 ; 0xf7018 ps2mouse.c:38 + mov es, dx ; 8e c2 ; 0xf701b + mov al, byte [es:bx] ; 26 8a 07 ; 0xf701d + test AL, strict byte 080h ; a8 80 ; 0xf7020 ps2mouse.c:212 + jne short 0702fh ; 75 0b ; 0xf7022 + or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf7024 ps2mouse.c:214 + mov byte [bp+013h], 005h ; c6 46 13 05 ; 0xf7028 ps2mouse.c:215 + jmp near 07333h ; e9 04 03 ; 0xf702c ps2mouse.c:216 + cmp byte [bp+00dh], 000h ; 80 7e 0d 00 ; 0xf702f ps2mouse.c:218 + jne short 07039h ; 75 04 ; 0xf7033 + mov AL, strict byte 0f5h ; b0 f5 ; 0xf7035 ps2mouse.c:220 + jmp short 0703bh ; eb 02 ; 0xf7037 ps2mouse.c:221 + mov AL, strict byte 0f4h ; b0 f4 ; 0xf7039 ps2mouse.c:223 + xor ah, ah ; 30 e4 ; 0xf703b ps2mouse.c:226 + call 06e60h ; e8 20 fe ; 0xf703d + test al, al ; 84 c0 ; 0xf7040 ps2mouse.c:227 + jne short 0706ch ; 75 28 ; 0xf7042 + mov dx, ss ; 8c d2 ; 0xf7044 ps2mouse.c:228 + lea ax, [bp-006h] ; 8d 46 fa ; 0xf7046 + call 06e94h ; e8 48 fe ; 0xf7049 + test al, al ; 84 c0 ; 0xf704c ps2mouse.c:229 + je short 070b2h ; 74 62 ; 0xf704e + cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf7050 + jne short 0706ch ; 75 16 ; 0xf7054 + jmp short 070b2h ; eb 5a ; 0xf7056 ps2mouse.c:231 + mov al, byte [bp+00dh] ; 8a 46 0d ; 0xf7058 ps2mouse.c:242 + cmp AL, strict byte 001h ; 3c 01 ; 0xf705b + jc short 07063h ; 72 04 ; 0xf705d + cmp AL, strict byte 008h ; 3c 08 ; 0xf705f + jbe short 0706fh ; 76 0c ; 0xf7061 + jmp near 071eah ; e9 84 01 ; 0xf7063 + jmp near 07320h ; e9 b7 02 ; 0xf7066 + jmp near 0732bh ; e9 bf 02 ; 0xf7069 + jmp near 072c0h ; e9 51 02 ; 0xf706c + mov bx, strict word 00027h ; bb 27 00 ; 0xf706f ps2mouse.c:38 + mov es, dx ; 8e c2 ; 0xf7072 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf7074 + mov ah, byte [bp+00dh] ; 8a 66 0d ; 0xf7077 ps2mouse.c:248 + db 0feh, 0cch + ; dec ah ; fe cc ; 0xf707a + and AL, strict byte 0f8h ; 24 f8 ; 0xf707c + or al, ah ; 08 e0 ; 0xf707e + mov byte [es:bx], al ; 26 88 07 ; 0xf7080 ps2mouse.c:43 + mov bx, strict word 00026h ; bb 26 00 ; 0xf7083 ps2mouse.c:38 + mov es, dx ; 8e c2 ; 0xf7086 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf7088 + and AL, strict byte 0f8h ; 24 f8 ; 0xf708b ps2mouse.c:256 + mov byte [es:bx], al ; 26 88 07 ; 0xf708d ps2mouse.c:43 + mov ax, 000ffh ; b8 ff 00 ; 0xf7090 ps2mouse.c:258 + call 06e60h ; e8 ca fd ; 0xf7093 + test al, al ; 84 c0 ; 0xf7096 ps2mouse.c:259 + jne short 0706ch ; 75 d2 ; 0xf7098 + mov dx, ss ; 8c d2 ; 0xf709a ps2mouse.c:260 + lea ax, [bp-004h] ; 8d 46 fc ; 0xf709c + call 06e94h ; e8 f2 fd ; 0xf709f + mov dl, al ; 88 c2 ; 0xf70a2 + cmp byte [bp-004h], 0feh ; 80 7e fc fe ; 0xf70a4 ps2mouse.c:262 + jne short 070b5h ; 75 0b ; 0xf70a8 + or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf70aa ps2mouse.c:263 + mov byte [bp+013h], 004h ; c6 46 13 04 ; 0xf70ae ps2mouse.c:264 + jmp near 07333h ; e9 7e 02 ; 0xf70b2 ps2mouse.c:265 + cmp byte [bp-004h], 0fah ; 80 7e fc fa ; 0xf70b5 ps2mouse.c:267 + je short 070cch ; 74 11 ; 0xf70b9 + mov al, byte [bp-004h] ; 8a 46 fc ; 0xf70bb ps2mouse.c:268 + xor ah, ah ; 30 e4 ; 0xf70be + push ax ; 50 ; 0xf70c0 + push 00903h ; 68 03 09 ; 0xf70c1 + push strict byte 00007h ; 6a 07 ; 0xf70c4 + call 018ffh ; e8 36 a8 ; 0xf70c6 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf70c9 + test dl, dl ; 84 d2 ; 0xf70cc ps2mouse.c:269 + jne short 0706ch ; 75 9c ; 0xf70ce + mov dx, ss ; 8c d2 ; 0xf70d0 ps2mouse.c:270 + lea ax, [bp-006h] ; 8d 46 fa ; 0xf70d2 + call 06e94h ; e8 bc fd ; 0xf70d5 + test al, al ; 84 c0 ; 0xf70d8 ps2mouse.c:271 + jne short 0706ch ; 75 90 ; 0xf70da + mov dx, ss ; 8c d2 ; 0xf70dc ps2mouse.c:272 + lea ax, [bp-002h] ; 8d 46 fe ; 0xf70de + call 06e94h ; e8 b0 fd ; 0xf70e1 + test al, al ; 84 c0 ; 0xf70e4 ps2mouse.c:273 + jne short 0706ch ; 75 84 ; 0xf70e6 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf70e8 ps2mouse.c:275 + mov byte [bp+00ch], al ; 88 46 0c ; 0xf70eb + mov al, byte [bp-002h] ; 8a 46 fe ; 0xf70ee ps2mouse.c:276 + mov byte [bp+00dh], al ; 88 46 0d ; 0xf70f1 + jmp short 070b2h ; eb bc ; 0xf70f4 ps2mouse.c:277 + mov al, byte [bp+00dh] ; 8a 46 0d ; 0xf70f6 ps2mouse.c:290 + cmp AL, strict byte 003h ; 3c 03 ; 0xf70f9 + jc short 0710dh ; 72 10 ; 0xf70fb + jbe short 0712bh ; 76 2c ; 0xf70fd + cmp AL, strict byte 006h ; 3c 06 ; 0xf70ff + je short 0713dh ; 74 3a ; 0xf7101 + cmp AL, strict byte 005h ; 3c 05 ; 0xf7103 + je short 07137h ; 74 30 ; 0xf7105 + cmp AL, strict byte 004h ; 3c 04 ; 0xf7107 + je short 07131h ; 74 26 ; 0xf7109 + jmp short 07143h ; eb 36 ; 0xf710b + cmp AL, strict byte 002h ; 3c 02 ; 0xf710d + je short 07125h ; 74 14 ; 0xf710f + cmp AL, strict byte 001h ; 3c 01 ; 0xf7111 + je short 0711fh ; 74 0a ; 0xf7113 + test al, al ; 84 c0 ; 0xf7115 + jne short 07143h ; 75 2a ; 0xf7117 + mov byte [bp-006h], 00ah ; c6 46 fa 0a ; 0xf7119 ps2mouse.c:291 + jmp short 07147h ; eb 28 ; 0xf711d + mov byte [bp-006h], 014h ; c6 46 fa 14 ; 0xf711f ps2mouse.c:292 + jmp short 07147h ; eb 22 ; 0xf7123 + mov byte [bp-006h], 028h ; c6 46 fa 28 ; 0xf7125 ps2mouse.c:293 + jmp short 07147h ; eb 1c ; 0xf7129 + mov byte [bp-006h], 03ch ; c6 46 fa 3c ; 0xf712b ps2mouse.c:294 + jmp short 07147h ; eb 16 ; 0xf712f + mov byte [bp-006h], 050h ; c6 46 fa 50 ; 0xf7131 ps2mouse.c:295 + jmp short 07147h ; eb 10 ; 0xf7135 + mov byte [bp-006h], 064h ; c6 46 fa 64 ; 0xf7137 ps2mouse.c:296 + jmp short 07147h ; eb 0a ; 0xf713b + mov byte [bp-006h], 0c8h ; c6 46 fa c8 ; 0xf713d ps2mouse.c:297 + jmp short 07147h ; eb 04 ; 0xf7141 + mov byte [bp-006h], 000h ; c6 46 fa 00 ; 0xf7143 ps2mouse.c:298 + cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf7147 ps2mouse.c:300 + jbe short 0717dh ; 76 30 ; 0xf714b + mov ax, 000f3h ; b8 f3 00 ; 0xf714d ps2mouse.c:301 + call 06e60h ; e8 0d fd ; 0xf7150 + test al, al ; 84 c0 ; 0xf7153 ps2mouse.c:302 + jne short 07172h ; 75 1b ; 0xf7155 + mov dx, ss ; 8c d2 ; 0xf7157 ps2mouse.c:303 + lea ax, [bp-002h] ; 8d 46 fe ; 0xf7159 + call 06e94h ; e8 35 fd ; 0xf715c + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf715f ps2mouse.c:304 + xor ah, ah ; 30 e4 ; 0xf7162 + call 06e60h ; e8 f9 fc ; 0xf7164 + mov dx, ss ; 8c d2 ; 0xf7167 ps2mouse.c:305 + lea ax, [bp-002h] ; 8d 46 fe ; 0xf7169 + call 06e94h ; e8 25 fd ; 0xf716c + jmp near 07333h ; e9 c1 01 ; 0xf716f ps2mouse.c:307 + or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf7172 ps2mouse.c:309 + mov byte [bp+013h], 003h ; c6 46 13 03 ; 0xf7176 ps2mouse.c:310 + jmp near 07333h ; e9 b6 01 ; 0xf717a ps2mouse.c:312 + or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf717d ps2mouse.c:314 + mov byte [bp+013h], 002h ; c6 46 13 02 ; 0xf7181 ps2mouse.c:315 + jmp near 07333h ; e9 ab 01 ; 0xf7185 ps2mouse.c:317 + cmp byte [bp+00dh], 004h ; 80 7e 0d 04 ; 0xf7188 ps2mouse.c:326 + jnc short 071eah ; 73 5c ; 0xf718c + mov ax, 000e8h ; b8 e8 00 ; 0xf718e ps2mouse.c:327 + call 06e60h ; e8 cc fc ; 0xf7191 + test al, al ; 84 c0 ; 0xf7194 ps2mouse.c:328 + jne short 071e0h ; 75 48 ; 0xf7196 + mov dx, ss ; 8c d2 ; 0xf7198 ps2mouse.c:329 + lea ax, [bp-006h] ; 8d 46 fa ; 0xf719a + call 06e94h ; e8 f4 fc ; 0xf719d + cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf71a0 ps2mouse.c:330 + je short 071b7h ; 74 11 ; 0xf71a4 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf71a6 ps2mouse.c:331 + xor ah, ah ; 30 e4 ; 0xf71a9 + push ax ; 50 ; 0xf71ab + push 0092eh ; 68 2e 09 ; 0xf71ac + push strict byte 00007h ; 6a 07 ; 0xf71af + call 018ffh ; e8 4b a7 ; 0xf71b1 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf71b4 + mov al, byte [bp+00dh] ; 8a 46 0d ; 0xf71b7 ps2mouse.c:332 + xor ah, ah ; 30 e4 ; 0xf71ba + call 06e60h ; e8 a1 fc ; 0xf71bc + mov dx, ss ; 8c d2 ; 0xf71bf ps2mouse.c:333 + lea ax, [bp-006h] ; 8d 46 fa ; 0xf71c1 + call 06e94h ; e8 cd fc ; 0xf71c4 + cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf71c7 ps2mouse.c:334 + je short 07219h ; 74 4c ; 0xf71cb + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf71cd ps2mouse.c:335 + xor ah, ah ; 30 e4 ; 0xf71d0 + push ax ; 50 ; 0xf71d2 + push 0092eh ; 68 2e 09 ; 0xf71d3 + push strict byte 00007h ; 6a 07 ; 0xf71d6 + call 018ffh ; e8 24 a7 ; 0xf71d8 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf71db + jmp short 07219h ; eb 39 ; 0xf71de ps2mouse.c:337 + or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf71e0 ps2mouse.c:339 + mov byte [bp+013h], 003h ; c6 46 13 03 ; 0xf71e4 ps2mouse.c:340 + jmp short 07219h ; eb 2f ; 0xf71e8 ps2mouse.c:342 + or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf71ea ps2mouse.c:344 + mov byte [bp+013h], 002h ; c6 46 13 02 ; 0xf71ee ps2mouse.c:345 + jmp short 07219h ; eb 25 ; 0xf71f2 ps2mouse.c:347 + mov ax, 000f2h ; b8 f2 00 ; 0xf71f4 ps2mouse.c:351 + call 06e60h ; e8 66 fc ; 0xf71f7 + test al, al ; 84 c0 ; 0xf71fa ps2mouse.c:352 + jne short 07211h ; 75 13 ; 0xf71fc + mov dx, ss ; 8c d2 ; 0xf71fe ps2mouse.c:353 + lea ax, [bp-006h] ; 8d 46 fa ; 0xf7200 + call 06e94h ; e8 8e fc ; 0xf7203 + mov dx, ss ; 8c d2 ; 0xf7206 ps2mouse.c:354 + lea ax, [bp-002h] ; 8d 46 fe ; 0xf7208 + call 06e94h ; e8 86 fc ; 0xf720b + jmp near 070eeh ; e9 dd fe ; 0xf720e + or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf7211 ps2mouse.c:355 + mov byte [bp+013h], 003h ; c6 46 13 03 ; 0xf7215 ps2mouse.c:360 + jmp near 07333h ; e9 17 01 ; 0xf7219 ps2mouse.c:362 + mov al, byte [bp+00dh] ; 8a 46 0d ; 0xf721c ps2mouse.c:366 + test al, al ; 84 c0 ; 0xf721f + jbe short 0722ah ; 76 07 ; 0xf7221 + cmp AL, strict byte 002h ; 3c 02 ; 0xf7223 + jbe short 07291h ; 76 6a ; 0xf7225 + jmp near 072cah ; e9 a0 00 ; 0xf7227 + mov ax, 000e9h ; b8 e9 00 ; 0xf722a ps2mouse.c:368 + call 06e60h ; e8 30 fc ; 0xf722d + test al, al ; 84 c0 ; 0xf7230 ps2mouse.c:369 + jne short 0729ah ; 75 66 ; 0xf7232 + mov dx, ss ; 8c d2 ; 0xf7234 ps2mouse.c:370 + lea ax, [bp-006h] ; 8d 46 fa ; 0xf7236 + call 06e94h ; e8 58 fc ; 0xf7239 + mov dl, al ; 88 c2 ; 0xf723c + cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf723e ps2mouse.c:371 + je short 07255h ; 74 11 ; 0xf7242 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7244 ps2mouse.c:372 + xor ah, ah ; 30 e4 ; 0xf7247 + push ax ; 50 ; 0xf7249 + push 0092eh ; 68 2e 09 ; 0xf724a + push strict byte 00007h ; 6a 07 ; 0xf724d + call 018ffh ; e8 ad a6 ; 0xf724f + add sp, strict byte 00006h ; 83 c4 06 ; 0xf7252 + test dl, dl ; 84 d2 ; 0xf7255 ps2mouse.c:373 + jne short 0729ah ; 75 41 ; 0xf7257 + mov dx, ss ; 8c d2 ; 0xf7259 ps2mouse.c:374 + lea ax, [bp-006h] ; 8d 46 fa ; 0xf725b + call 06e94h ; e8 33 fc ; 0xf725e + test al, al ; 84 c0 ; 0xf7261 ps2mouse.c:375 + jne short 072c0h ; 75 5b ; 0xf7263 + mov dx, ss ; 8c d2 ; 0xf7265 ps2mouse.c:376 + lea ax, [bp-002h] ; 8d 46 fe ; 0xf7267 + call 06e94h ; e8 27 fc ; 0xf726a + test al, al ; 84 c0 ; 0xf726d ps2mouse.c:377 + jne short 072c0h ; 75 4f ; 0xf726f + mov dx, ss ; 8c d2 ; 0xf7271 ps2mouse.c:378 + lea ax, [bp-004h] ; 8d 46 fc ; 0xf7273 + call 06e94h ; e8 1b fc ; 0xf7276 + test al, al ; 84 c0 ; 0xf7279 ps2mouse.c:379 + jne short 072c0h ; 75 43 ; 0xf727b + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf727d ps2mouse.c:380 + mov byte [bp+00ch], al ; 88 46 0c ; 0xf7280 + mov al, byte [bp-002h] ; 8a 46 fe ; 0xf7283 ps2mouse.c:381 + mov byte [bp+010h], al ; 88 46 10 ; 0xf7286 + mov al, byte [bp-004h] ; 8a 46 fc ; 0xf7289 ps2mouse.c:382 + mov byte [bp+00eh], al ; 88 46 0e ; 0xf728c + jmp short 07219h ; eb 88 ; 0xf728f ps2mouse.c:384 + cmp AL, strict byte 001h ; 3c 01 ; 0xf7291 ps2mouse.c:398 + jne short 0729ch ; 75 07 ; 0xf7293 + mov ax, 000e6h ; b8 e6 00 ; 0xf7295 ps2mouse.c:399 + jmp short 0729fh ; eb 05 ; 0xf7298 ps2mouse.c:400 + jmp short 072c0h ; eb 24 ; 0xf729a + mov ax, 000e7h ; b8 e7 00 ; 0xf729c ps2mouse.c:401 + call 06e60h ; e8 be fb ; 0xf729f + mov dl, al ; 88 c2 ; 0xf72a2 + test dl, dl ; 84 d2 ; 0xf72a4 ps2mouse.c:403 + jne short 072bch ; 75 14 ; 0xf72a6 + mov dx, ss ; 8c d2 ; 0xf72a8 ps2mouse.c:404 + lea ax, [bp-006h] ; 8d 46 fa ; 0xf72aa + call 06e94h ; e8 e4 fb ; 0xf72ad + cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf72b0 ps2mouse.c:405 + je short 072bah ; 74 04 ; 0xf72b4 + mov DL, strict byte 001h ; b2 01 ; 0xf72b6 + jmp short 072bch ; eb 02 ; 0xf72b8 + xor dl, dl ; 30 d2 ; 0xf72ba + test dl, dl ; 84 d2 ; 0xf72bc ps2mouse.c:407 + je short 0731eh ; 74 5e ; 0xf72be + or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf72c0 ps2mouse.c:409 + mov byte [bp+013h], 003h ; c6 46 13 03 ; 0xf72c4 ps2mouse.c:410 + jmp short 07333h ; eb 69 ; 0xf72c8 ps2mouse.c:412 + mov al, byte [bp+00dh] ; 8a 46 0d ; 0xf72ca ps2mouse.c:415 + xor ah, ah ; 30 e4 ; 0xf72cd + push ax ; 50 ; 0xf72cf + push 0095ah ; 68 5a 09 ; 0xf72d0 + push strict byte 00007h ; 6a 07 ; 0xf72d3 + call 018ffh ; e8 27 a6 ; 0xf72d5 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf72d8 + or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf72db ps2mouse.c:417 + mov byte [bp+013h], 001h ; c6 46 13 01 ; 0xf72df ps2mouse.c:418 + jmp short 07333h ; eb 4e ; 0xf72e3 ps2mouse.c:420 + mov cx, word [bp+00ch] ; 8b 4e 0c ; 0xf72e5 ps2mouse.c:425 + mov bx, strict word 00022h ; bb 22 00 ; 0xf72e8 ps2mouse.c:53 + mov es, dx ; 8e c2 ; 0xf72eb + mov word [es:bx], cx ; 26 89 0f ; 0xf72ed + mov bx, strict word 00024h ; bb 24 00 ; 0xf72f0 ps2mouse.c:53 + mov ax, word [bp+014h] ; 8b 46 14 ; 0xf72f3 + mov word [es:bx], ax ; 26 89 07 ; 0xf72f6 + mov bx, strict word 00027h ; bb 27 00 ; 0xf72f9 ps2mouse.c:38 + mov ah, byte [es:bx] ; 26 8a 27 ; 0xf72fc + mov al, ah ; 88 e0 ; 0xf72ff ps2mouse.c:39 + test cx, cx ; 85 c9 ; 0xf7301 ps2mouse.c:429 + jne short 07314h ; 75 0f ; 0xf7303 + cmp word [bp+014h], strict byte 00000h ; 83 7e 14 00 ; 0xf7305 + jne short 07314h ; 75 09 ; 0xf7309 + test ah, 080h ; f6 c4 80 ; 0xf730b ps2mouse.c:431 + je short 07316h ; 74 06 ; 0xf730e + and AL, strict byte 07fh ; 24 7f ; 0xf7310 ps2mouse.c:432 + jmp short 07316h ; eb 02 ; 0xf7312 ps2mouse.c:435 + or AL, strict byte 080h ; 0c 80 ; 0xf7314 ps2mouse.c:437 + mov bx, strict word 00027h ; bb 27 00 ; 0xf7316 ps2mouse.c:43 + mov es, dx ; 8e c2 ; 0xf7319 + mov byte [es:bx], al ; 26 88 07 ; 0xf731b + jmp short 07333h ; eb 13 ; 0xf731e ps2mouse.c:440 + push 00974h ; 68 74 09 ; 0xf7320 ps2mouse.c:443 + push strict byte 00007h ; 6a 07 ; 0xf7323 + call 018ffh ; e8 d7 a5 ; 0xf7325 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf7328 + or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf732b ps2mouse.c:445 + mov byte [bp+013h], 001h ; c6 46 13 01 ; 0xf732f ps2mouse.c:446 + mov ax, strict word 00047h ; b8 47 00 ; 0xf7333 ps2mouse.c:450 + call 06ef1h ; e8 b8 fb ; 0xf7336 + mov sp, bp ; 89 ec ; 0xf7339 ps2mouse.c:451 + pop bp ; 5d ; 0xf733b + retn ; c3 ; 0xf733c + ; disGetNextSymbol 0xf733d LB 0x2b8b -> off=0x0 cb=00000000000000ac uValue=00000000000f5d3d 'int17_function' +int17_function: ; 0xf733d LB 0xac + push bp ; 55 ; 0xf733d parallel.c:60 + mov bp, sp ; 89 e5 ; 0xf733e + push si ; 56 ; 0xf7340 + push di ; 57 ; 0xf7341 + push ax ; 50 ; 0xf7342 + sti ; fb ; 0xf7343 parallel.c:65 + mov bx, word [bp+00eh] ; 8b 5e 0e ; 0xf7344 parallel.c:67 + add bx, bx ; 01 db ; 0xf7347 + add bx, strict byte 00008h ; 83 c3 08 ; 0xf7349 + mov ax, strict word 00040h ; b8 40 00 ; 0xf734c parallel.c:48 + mov es, ax ; 8e c0 ; 0xf734f + mov bx, word [es:bx] ; 26 8b 1f ; 0xf7351 + mov si, bx ; 89 de ; 0xf7354 parallel.c:49 + cmp byte [bp+013h], 003h ; 80 7e 13 03 ; 0xf7356 parallel.c:68 + jnc short 07368h ; 73 0c ; 0xf735a + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf735c + cmp ax, strict word 00003h ; 3d 03 00 ; 0xf735f + jnc short 07368h ; 73 04 ; 0xf7362 + test bx, bx ; 85 db ; 0xf7364 + jnbe short 0736bh ; 77 03 ; 0xf7366 + jmp near 073deh ; e9 73 00 ; 0xf7368 + mov di, ax ; 89 c7 ; 0xf736b parallel.c:69 + add di, strict byte 00078h ; 83 c7 78 ; 0xf736d + mov cl, byte [es:di] ; 26 8a 0d ; 0xf7370 parallel.c:38 + xor ch, ch ; 30 ed ; 0xf7373 parallel.c:39 + sal cx, 008h ; c1 e1 08 ; 0xf7375 + cmp byte [bp+013h], 000h ; 80 7e 13 00 ; 0xf7378 parallel.c:70 + jne short 073aah ; 75 2c ; 0xf737c + mov al, byte [bp+012h] ; 8a 46 12 ; 0xf737e parallel.c:71 + mov dx, bx ; 89 da ; 0xf7381 + out DX, AL ; ee ; 0xf7383 + lea dx, [bx+002h] ; 8d 57 02 ; 0xf7384 parallel.c:72 + in AL, DX ; ec ; 0xf7387 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf7388 + mov word [bp-006h], ax ; 89 46 fa ; 0xf738a + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf738d parallel.c:73 + or AL, strict byte 001h ; 0c 01 ; 0xf7390 + out DX, AL ; ee ; 0xf7392 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7393 parallel.c:74 + and AL, strict byte 0feh ; 24 fe ; 0xf7396 + out DX, AL ; ee ; 0xf7398 + lea dx, [si+001h] ; 8d 54 01 ; 0xf7399 parallel.c:75 + in AL, DX ; ec ; 0xf739c + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf739d + test AL, strict byte 040h ; a8 40 ; 0xf739f + je short 073aah ; 74 07 ; 0xf73a1 + test cx, cx ; 85 c9 ; 0xf73a3 + je short 073aah ; 74 03 ; 0xf73a5 + dec cx ; 49 ; 0xf73a7 parallel.c:76 + jmp short 07399h ; eb ef ; 0xf73a8 parallel.c:77 + cmp byte [bp+013h], 001h ; 80 7e 13 01 ; 0xf73aa parallel.c:79 + jne short 073c5h ; 75 15 ; 0xf73ae + lea dx, [si+002h] ; 8d 54 02 ; 0xf73b0 parallel.c:80 + in AL, DX ; ec ; 0xf73b3 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf73b4 + mov word [bp-006h], ax ; 89 46 fa ; 0xf73b6 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf73b9 parallel.c:81 + and AL, strict byte 0fbh ; 24 fb ; 0xf73bc + out DX, AL ; ee ; 0xf73be + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf73bf parallel.c:82 + or AL, strict byte 004h ; 0c 04 ; 0xf73c2 + out DX, AL ; ee ; 0xf73c4 + lea dx, [si+001h] ; 8d 54 01 ; 0xf73c5 parallel.c:84 + in AL, DX ; ec ; 0xf73c8 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf73c9 + xor AL, strict byte 048h ; 34 48 ; 0xf73cb parallel.c:85 + mov byte [bp+013h], al ; 88 46 13 ; 0xf73cd + test cx, cx ; 85 c9 ; 0xf73d0 parallel.c:86 + jne short 073d8h ; 75 04 ; 0xf73d2 + or byte [bp+013h], 001h ; 80 4e 13 01 ; 0xf73d4 + and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf73d8 parallel.c:87 + jmp short 073e2h ; eb 04 ; 0xf73dc parallel.c:88 + or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf73de parallel.c:89 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf73e2 parallel.c:91 + pop di ; 5f ; 0xf73e5 + pop si ; 5e ; 0xf73e6 + pop bp ; 5d ; 0xf73e7 + retn ; c3 ; 0xf73e8 + ; disGetNextSymbol 0xf73e9 LB 0x2adf -> off=0x0 cb=00000000000000b7 uValue=00000000000f5de9 '_wait_' +_wait_: ; 0xf73e9 LB 0xb7 + push bp ; 55 ; 0xf73e9 logo.c:171 + mov bp, sp ; 89 e5 ; 0xf73ea + push bx ; 53 ; 0xf73ec + push cx ; 51 ; 0xf73ed + push si ; 56 ; 0xf73ee + push di ; 57 ; 0xf73ef + sub sp, strict byte 0000ah ; 83 ec 0a ; 0xf73f0 + mov si, ax ; 89 c6 ; 0xf73f3 + mov byte [bp-00ah], dl ; 88 56 f6 ; 0xf73f5 + mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf73f8 logo.c:176 + pushfw ; 9c ; 0xf73fc logo.c:182 + pop ax ; 58 ; 0xf73fd + mov word [bp-010h], ax ; 89 46 f0 ; 0xf73fe + sti ; fb ; 0xf7401 logo.c:183 + xor dx, dx ; 31 d2 ; 0xf7402 logo.c:189 + mov bx, 0046ch ; bb 6c 04 ; 0xf7404 logo.c:58 + mov es, dx ; 8e c2 ; 0xf7407 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf7409 + mov cx, word [es:bx+002h] ; 26 8b 4f 02 ; 0xf740c + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf7410 logo.c:59 + hlt ; f4 ; 0xf7413 logo.c:193 + mov bx, 0046ch ; bb 6c 04 ; 0xf7414 logo.c:58 + xor ax, ax ; 31 c0 ; 0xf7417 + mov es, ax ; 8e c0 ; 0xf7419 + mov di, word [es:bx] ; 26 8b 3f ; 0xf741b + mov ax, word [es:bx+002h] ; 26 8b 47 02 ; 0xf741e + mov word [bp-012h], di ; 89 7e ee ; 0xf7422 logo.c:59 + mov bx, ax ; 89 c3 ; 0xf7425 + cmp ax, cx ; 39 c8 ; 0xf7427 logo.c:195 + jnbe short 07432h ; 77 07 ; 0xf7429 + jne short 07439h ; 75 0c ; 0xf742b + cmp di, word [bp-00eh] ; 3b 7e f2 ; 0xf742d + jbe short 07439h ; 76 07 ; 0xf7430 + sub di, word [bp-00eh] ; 2b 7e f2 ; 0xf7432 logo.c:197 + sbb ax, cx ; 19 c8 ; 0xf7435 + jmp short 07444h ; eb 0b ; 0xf7437 logo.c:200 + cmp ax, cx ; 39 c8 ; 0xf7439 + jc short 07444h ; 72 07 ; 0xf743b + jne short 07448h ; 75 09 ; 0xf743d + cmp di, word [bp-00eh] ; 3b 7e f2 ; 0xf743f + jnc short 07448h ; 73 04 ; 0xf7442 + sub si, di ; 29 fe ; 0xf7444 logo.c:201 + sbb dx, ax ; 19 c2 ; 0xf7446 + mov ax, word [bp-012h] ; 8b 46 ee ; 0xf7448 logo.c:202 + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf744b + mov cx, bx ; 89 d9 ; 0xf744e + mov ax, 00100h ; b8 00 01 ; 0xf7450 logo.c:204 + int 016h ; cd 16 ; 0xf7453 + je short 0745ch ; 74 05 ; 0xf7455 + mov AL, strict byte 001h ; b0 01 ; 0xf7457 + jmp near 0745eh ; e9 02 00 ; 0xf7459 + db 032h, 0c0h + ; xor al, al ; 32 c0 ; 0xf745c + test al, al ; 84 c0 ; 0xf745e + je short 07485h ; 74 23 ; 0xf7460 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xf7462 logo.c:206 + int 016h ; cd 16 ; 0xf7464 + xchg ah, al ; 86 c4 ; 0xf7466 + mov bl, al ; 88 c3 ; 0xf7468 + mov byte [bp-00ch], al ; 88 46 f4 ; 0xf746a + xor ah, ah ; 30 e4 ; 0xf746d logo.c:207 + push ax ; 50 ; 0xf746f + push 00996h ; 68 96 09 ; 0xf7470 + push strict byte 00004h ; 6a 04 ; 0xf7473 + call 018ffh ; e8 87 a4 ; 0xf7475 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf7478 + cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf747b logo.c:208 + je short 07485h ; 74 04 ; 0xf747f + mov al, bl ; 88 d8 ; 0xf7481 logo.c:209 + jmp short 07497h ; eb 12 ; 0xf7483 + test dx, dx ; 85 d2 ; 0xf7485 logo.c:211 + jnle short 07413h ; 7f 8a ; 0xf7487 + jne short 0748fh ; 75 04 ; 0xf7489 + test si, si ; 85 f6 ; 0xf748b + jnbe short 07413h ; 77 84 ; 0xf748d + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf748f logo.c:212 + push ax ; 50 ; 0xf7492 + popfw ; 9d ; 0xf7493 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf7494 logo.c:213 + lea sp, [bp-008h] ; 8d 66 f8 ; 0xf7497 logo.c:214 + pop di ; 5f ; 0xf749a + pop si ; 5e ; 0xf749b + pop cx ; 59 ; 0xf749c + pop bx ; 5b ; 0xf749d + pop bp ; 5d ; 0xf749e + retn ; c3 ; 0xf749f + ; disGetNextSymbol 0xf74a0 LB 0x2a28 -> off=0x0 cb=0000000000000016 uValue=00000000000f5ea0 'read_logo_byte' +read_logo_byte: ; 0xf74a0 LB 0x16 + push bp ; 55 ; 0xf74a0 logo.c:216 + mov bp, sp ; 89 e5 ; 0xf74a1 + push dx ; 52 ; 0xf74a3 + xor ah, ah ; 30 e4 ; 0xf74a4 logo.c:218 + or ah, 001h ; 80 cc 01 ; 0xf74a6 + mov dx, 003b8h ; ba b8 03 ; 0xf74a9 + out DX, ax ; ef ; 0xf74ac + in AL, DX ; ec ; 0xf74ad logo.c:219 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf74ae + lea sp, [bp-002h] ; 8d 66 fe ; 0xf74b0 logo.c:220 + pop dx ; 5a ; 0xf74b3 + pop bp ; 5d ; 0xf74b4 + retn ; c3 ; 0xf74b5 + ; disGetNextSymbol 0xf74b6 LB 0x2a12 -> off=0x0 cb=0000000000000014 uValue=00000000000f5eb6 'read_logo_word' +read_logo_word: ; 0xf74b6 LB 0x14 + push bp ; 55 ; 0xf74b6 logo.c:222 + mov bp, sp ; 89 e5 ; 0xf74b7 + push dx ; 52 ; 0xf74b9 + xor ah, ah ; 30 e4 ; 0xf74ba logo.c:224 + or ah, 001h ; 80 cc 01 ; 0xf74bc + mov dx, 003b8h ; ba b8 03 ; 0xf74bf + out DX, ax ; ef ; 0xf74c2 + in ax, DX ; ed ; 0xf74c3 logo.c:225 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf74c4 logo.c:226 + pop dx ; 5a ; 0xf74c7 + pop bp ; 5d ; 0xf74c8 + retn ; c3 ; 0xf74c9 + ; disGetNextSymbol 0xf74ca LB 0x29fe -> off=0x0 cb=000000000000013e uValue=00000000000f5eca 'print_detected_harddisks' +print_detected_harddisks: ; 0xf74ca LB 0x13e + push bp ; 55 ; 0xf74ca logo.c:245 + mov bp, sp ; 89 e5 ; 0xf74cb + push bx ; 53 ; 0xf74cd + push cx ; 51 ; 0xf74ce + push dx ; 52 ; 0xf74cf + push si ; 56 ; 0xf74d0 + push di ; 57 ; 0xf74d1 + push ax ; 50 ; 0xf74d2 + push ax ; 50 ; 0xf74d3 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf74d4 logo.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf74d7 + mov es, ax ; 8e c0 ; 0xf74da + mov ax, word [es:bx] ; 26 8b 07 ; 0xf74dc + mov di, ax ; 89 c7 ; 0xf74df logo.c:49 + mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf74e1 logo.c:250 + xor cl, cl ; 30 c9 ; 0xf74e5 logo.c:251 + xor ch, ch ; 30 ed ; 0xf74e7 logo.c:252 + mov bx, 00304h ; bb 04 03 ; 0xf74e9 logo.c:38 + mov es, ax ; 8e c0 ; 0xf74ec + mov al, byte [es:bx] ; 26 8a 07 ; 0xf74ee + mov byte [bp-00eh], al ; 88 46 f2 ; 0xf74f1 logo.c:39 + xor bl, bl ; 30 db ; 0xf74f4 logo.c:257 + cmp bl, byte [bp-00eh] ; 3a 5e f2 ; 0xf74f6 + jnc short 07558h ; 73 5d ; 0xf74f9 + mov al, bl ; 88 d8 ; 0xf74fb logo.c:259 + xor ah, ah ; 30 e4 ; 0xf74fd + mov si, ax ; 89 c6 ; 0xf74ff + add si, 00305h ; 81 c6 05 03 ; 0xf7501 + mov es, di ; 8e c7 ; 0xf7505 logo.c:38 + mov al, byte [es:si] ; 26 8a 04 ; 0xf7507 + mov bh, al ; 88 c7 ; 0xf750a logo.c:39 + cmp AL, strict byte 00ch ; 3c 0c ; 0xf750c logo.c:262 + jc short 07535h ; 72 25 ; 0xf750e + test cl, cl ; 84 c9 ; 0xf7510 logo.c:264 + jne short 07521h ; 75 0d ; 0xf7512 + push 009a7h ; 68 a7 09 ; 0xf7514 logo.c:266 + push strict byte 00002h ; 6a 02 ; 0xf7517 + call 018ffh ; e8 e3 a3 ; 0xf7519 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf751c + mov CL, strict byte 001h ; b1 01 ; 0xf751f logo.c:267 + mov al, bl ; 88 d8 ; 0xf7521 logo.c:270 + xor ah, ah ; 30 e4 ; 0xf7523 + inc ax ; 40 ; 0xf7525 + push ax ; 50 ; 0xf7526 + push 009bch ; 68 bc 09 ; 0xf7527 + push strict byte 00002h ; 6a 02 ; 0xf752a + call 018ffh ; e8 d0 a3 ; 0xf752c + add sp, strict byte 00006h ; 83 c4 06 ; 0xf752f + jmp near 075d5h ; e9 a0 00 ; 0xf7532 logo.c:273 + cmp AL, strict byte 008h ; 3c 08 ; 0xf7535 logo.c:276 + jc short 0754ch ; 72 13 ; 0xf7537 + test ch, ch ; 84 ed ; 0xf7539 logo.c:278 + jne short 0754ah ; 75 0d ; 0xf753b + push 009cfh ; 68 cf 09 ; 0xf753d logo.c:280 + push strict byte 00002h ; 6a 02 ; 0xf7540 + call 018ffh ; e8 ba a3 ; 0xf7542 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf7545 + mov CH, strict byte 001h ; b5 01 ; 0xf7548 logo.c:281 + jmp short 07521h ; eb d5 ; 0xf754a logo.c:282 + cmp AL, strict byte 004h ; 3c 04 ; 0xf754c logo.c:291 + jnc short 0756ch ; 73 1c ; 0xf754e + cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf7550 + je short 0755bh ; 74 05 ; 0xf7554 + jmp short 0756ch ; eb 14 ; 0xf7556 + jmp near 075dah ; e9 7f 00 ; 0xf7558 + push 009e4h ; 68 e4 09 ; 0xf755b logo.c:293 + push strict byte 00002h ; 6a 02 ; 0xf755e + call 018ffh ; e8 9c a3 ; 0xf7560 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf7563 + mov byte [bp-00ch], 001h ; c6 46 f4 01 ; 0xf7566 logo.c:294 + jmp short 07582h ; eb 16 ; 0xf756a logo.c:296 + cmp bh, 004h ; 80 ff 04 ; 0xf756c + jc short 07582h ; 72 11 ; 0xf756f + test cl, cl ; 84 c9 ; 0xf7571 + jne short 07582h ; 75 0d ; 0xf7573 + push 009f6h ; 68 f6 09 ; 0xf7575 logo.c:298 + push strict byte 00002h ; 6a 02 ; 0xf7578 + call 018ffh ; e8 82 a3 ; 0xf757a + add sp, strict byte 00004h ; 83 c4 04 ; 0xf757d + mov CL, strict byte 001h ; b1 01 ; 0xf7580 logo.c:299 + mov al, bl ; 88 d8 ; 0xf7582 logo.c:302 + xor ah, ah ; 30 e4 ; 0xf7584 + inc ax ; 40 ; 0xf7586 + push ax ; 50 ; 0xf7587 + push 00a0ah ; 68 0a 0a ; 0xf7588 + push strict byte 00002h ; 6a 02 ; 0xf758b + call 018ffh ; e8 6f a3 ; 0xf758d + add sp, strict byte 00006h ; 83 c4 06 ; 0xf7590 + cmp bh, 004h ; 80 ff 04 ; 0xf7593 logo.c:309 + jc short 0759bh ; 72 03 ; 0xf7596 + sub bh, 004h ; 80 ef 04 ; 0xf7598 logo.c:310 + mov al, bh ; 88 f8 ; 0xf759b logo.c:312 + xor ah, ah ; 30 e4 ; 0xf759d + cwd ; 99 ; 0xf759f + db 02bh, 0c2h + ; sub ax, dx ; 2b c2 ; 0xf75a0 + sar ax, 1 ; d1 f8 ; 0xf75a2 + test ax, ax ; 85 c0 ; 0xf75a4 + je short 075adh ; 74 05 ; 0xf75a6 + push 00a14h ; 68 14 0a ; 0xf75a8 logo.c:313 + jmp short 075b0h ; eb 03 ; 0xf75ab logo.c:314 + push 00a1fh ; 68 1f 0a ; 0xf75ad logo.c:315 + push strict byte 00002h ; 6a 02 ; 0xf75b0 + call 018ffh ; e8 4a a3 ; 0xf75b2 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf75b5 + mov al, bh ; 88 f8 ; 0xf75b8 logo.c:317 + xor ah, ah ; 30 e4 ; 0xf75ba + cwd ; 99 ; 0xf75bc + mov si, strict word 00002h ; be 02 00 ; 0xf75bd + idiv si ; f7 fe ; 0xf75c0 + test dx, dx ; 85 d2 ; 0xf75c2 + je short 075cbh ; 74 05 ; 0xf75c4 + push 00a28h ; 68 28 0a ; 0xf75c6 logo.c:318 + jmp short 075ceh ; eb 03 ; 0xf75c9 logo.c:319 + push 00a2eh ; 68 2e 0a ; 0xf75cb logo.c:320 + push si ; 56 ; 0xf75ce + call 018ffh ; e8 2d a3 ; 0xf75cf + add sp, strict byte 00004h ; 83 c4 04 ; 0xf75d2 + db 0feh, 0c3h + ; inc bl ; fe c3 ; 0xf75d5 logo.c:322 + jmp near 074f6h ; e9 1c ff ; 0xf75d7 + cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf75da logo.c:324 + jne short 075f3h ; 75 13 ; 0xf75de + test cl, cl ; 84 c9 ; 0xf75e0 + jne short 075f3h ; 75 0f ; 0xf75e2 + test ch, ch ; 84 ed ; 0xf75e4 + jne short 075f3h ; 75 0b ; 0xf75e6 + push 00a35h ; 68 35 0a ; 0xf75e8 logo.c:327 + push strict byte 00002h ; 6a 02 ; 0xf75eb + call 018ffh ; e8 0f a3 ; 0xf75ed + add sp, strict byte 00004h ; 83 c4 04 ; 0xf75f0 + push 00a49h ; 68 49 0a ; 0xf75f3 logo.c:329 + push strict byte 00002h ; 6a 02 ; 0xf75f6 + call 018ffh ; e8 04 a3 ; 0xf75f8 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf75fb + lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf75fe logo.c:330 + pop di ; 5f ; 0xf7601 + pop si ; 5e ; 0xf7602 + pop dx ; 5a ; 0xf7603 + pop cx ; 59 ; 0xf7604 + pop bx ; 5b ; 0xf7605 + pop bp ; 5d ; 0xf7606 + retn ; c3 ; 0xf7607 + ; disGetNextSymbol 0xf7608 LB 0x28c0 -> off=0x0 cb=0000000000000024 uValue=00000000000f6008 'get_boot_drive' +get_boot_drive: ; 0xf7608 LB 0x24 + push bx ; 53 ; 0xf7608 logo.c:332 + push dx ; 52 ; 0xf7609 + push bp ; 55 ; 0xf760a + mov bp, sp ; 89 e5 ; 0xf760b + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf760d logo.c:48 + mov dx, strict word 00040h ; ba 40 00 ; 0xf7610 + mov es, dx ; 8e c2 ; 0xf7613 + mov dx, word [es:bx] ; 26 8b 17 ; 0xf7615 + mov bx, 00304h ; bb 04 03 ; 0xf7618 logo.c:38 + mov es, dx ; 8e c2 ; 0xf761b + mov dl, byte [es:bx] ; 26 8a 17 ; 0xf761d + sub AL, strict byte 002h ; 2c 02 ; 0xf7620 logo.c:340 + cmp al, dl ; 38 d0 ; 0xf7622 logo.c:342 + jc short 07628h ; 72 02 ; 0xf7624 + mov AL, strict byte 0ffh ; b0 ff ; 0xf7626 logo.c:343 + pop bp ; 5d ; 0xf7628 logo.c:347 + pop dx ; 5a ; 0xf7629 + pop bx ; 5b ; 0xf762a + retn ; c3 ; 0xf762b + ; disGetNextSymbol 0xf762c LB 0x289c -> off=0x0 cb=0000000000000252 uValue=00000000000f602c 'show_logo' +show_logo: ; 0xf762c LB 0x252 + push bp ; 55 ; 0xf762c logo.c:349 + mov bp, sp ; 89 e5 ; 0xf762d + push bx ; 53 ; 0xf762f + push cx ; 51 ; 0xf7630 + push dx ; 52 ; 0xf7631 + push si ; 56 ; 0xf7632 + push di ; 57 ; 0xf7633 + sub sp, strict byte 0000eh ; 83 ec 0e ; 0xf7634 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf7637 logo.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf763a + mov es, ax ; 8e c0 ; 0xf763d + mov si, word [es:bx] ; 26 8b 37 ; 0xf763f + mov byte [bp-00eh], 000h ; c6 46 f2 00 ; 0xf7642 logo.c:352 + xor dx, dx ; 31 d2 ; 0xf7646 logo.c:356 + mov AL, strict byte 034h ; b0 34 ; 0xf7648 logo.c:363 + out strict byte 043h, AL ; e6 43 ; 0xf764a + mov AL, strict byte 0d3h ; b0 d3 ; 0xf764c + out strict byte 040h, AL ; e6 40 ; 0xf764e + mov AL, strict byte 048h ; b0 48 ; 0xf7650 + out strict byte 040h, AL ; e6 40 ; 0xf7652 + mov al, dl ; 88 d0 ; 0xf7654 logo.c:366 + xor ah, ah ; 30 e4 ; 0xf7656 + call 074b6h ; e8 5b fe ; 0xf7658 + cmp ax, 066bbh ; 3d bb 66 ; 0xf765b logo.c:367 + jne short 07672h ; 75 12 ; 0xf765e + push SS ; 16 ; 0xf7660 logo.c:371 + pop ES ; 07 ; 0xf7661 + lea di, [bp-018h] ; 8d 7e e8 ; 0xf7662 + mov ax, 04f03h ; b8 03 4f ; 0xf7665 + int 010h ; cd 10 ; 0xf7668 + mov word [es:di], bx ; 26 89 1d ; 0xf766a + cmp ax, strict word 0004fh ; 3d 4f 00 ; 0xf766d + je short 07675h ; 74 03 ; 0xf7670 + jmp near 0775dh ; e9 e8 00 ; 0xf7672 logo.c:372 + mov al, dl ; 88 d0 ; 0xf7675 logo.c:375 + add AL, strict byte 004h ; 04 04 ; 0xf7677 + xor ah, ah ; 30 e4 ; 0xf7679 + call 074a0h ; e8 22 fe ; 0xf767b + mov cl, al ; 88 c1 ; 0xf767e + mov byte [bp-014h], al ; 88 46 ec ; 0xf7680 + mov al, dl ; 88 d0 ; 0xf7683 logo.c:376 + add AL, strict byte 005h ; 04 05 ; 0xf7685 + xor ah, ah ; 30 e4 ; 0xf7687 + call 074a0h ; e8 14 fe ; 0xf7689 + mov dh, al ; 88 c6 ; 0xf768c + mov byte [bp-012h], al ; 88 46 ee ; 0xf768e + mov al, dl ; 88 d0 ; 0xf7691 logo.c:377 + add AL, strict byte 002h ; 04 02 ; 0xf7693 + xor ah, ah ; 30 e4 ; 0xf7695 + call 074b6h ; e8 1c fe ; 0xf7697 + mov bx, ax ; 89 c3 ; 0xf769a + mov word [bp-016h], ax ; 89 46 ea ; 0xf769c + mov al, dl ; 88 d0 ; 0xf769f logo.c:378 + add AL, strict byte 006h ; 04 06 ; 0xf76a1 + xor ah, ah ; 30 e4 ; 0xf76a3 + call 074a0h ; e8 f8 fd ; 0xf76a5 + mov byte [bp-00ch], al ; 88 46 f4 ; 0xf76a8 + test cl, cl ; 84 c9 ; 0xf76ab logo.c:381 + jne short 076b7h ; 75 08 ; 0xf76ad + test dh, dh ; 84 f6 ; 0xf76af + jne short 076b7h ; 75 04 ; 0xf76b1 + test bx, bx ; 85 db ; 0xf76b3 + je short 07672h ; 74 bb ; 0xf76b5 + mov BH, strict byte 020h ; b7 20 ; 0xf76b7 logo.c:385 + mov dx, 001e0h ; ba e0 01 ; 0xf76b9 + mov cx, 00280h ; b9 80 02 ; 0xf76bc + mov ax, 05642h ; b8 42 56 ; 0xf76bf + mov BL, strict byte 000h ; b3 00 ; 0xf76c2 + int 010h ; cd 10 ; 0xf76c4 + cmp ax, strict word 0004fh ; 3d 4f 00 ; 0xf76c6 logo.c:387 + je short 076d3h ; 74 08 ; 0xf76c9 + mov bx, 00142h ; bb 42 01 ; 0xf76cb logo.c:388 + mov ax, 04f02h ; b8 02 4f ; 0xf76ce + int 010h ; cd 10 ; 0xf76d1 + cmp byte [bp-014h], 000h ; 80 7e ec 00 ; 0xf76d3 logo.c:390 + je short 076feh ; 74 25 ; 0xf76d7 + xor bx, bx ; 31 db ; 0xf76d9 logo.c:392 + jmp short 076e3h ; eb 06 ; 0xf76db + inc bx ; 43 ; 0xf76dd logo.c:394 + cmp bx, strict byte 00010h ; 83 fb 10 ; 0xf76de + jnbe short 07705h ; 77 22 ; 0xf76e1 + mov ax, bx ; 89 d8 ; 0xf76e3 + or ah, 002h ; 80 cc 02 ; 0xf76e5 + mov dx, 003b8h ; ba b8 03 ; 0xf76e8 + out DX, ax ; ef ; 0xf76eb + xor dx, dx ; 31 d2 ; 0xf76ec + mov ax, strict word 00001h ; b8 01 00 ; 0xf76ee + call 073e9h ; e8 f5 fc ; 0xf76f1 + cmp AL, strict byte 086h ; 3c 86 ; 0xf76f4 + jne short 076ddh ; 75 e5 ; 0xf76f6 + mov byte [bp-00eh], 001h ; c6 46 f2 01 ; 0xf76f8 + jmp short 07705h ; eb 07 ; 0xf76fc + mov ax, 00210h ; b8 10 02 ; 0xf76fe logo.c:404 + mov dx, 003b8h ; ba b8 03 ; 0xf7701 + out DX, ax ; ef ; 0xf7704 + cmp byte [bp-00eh], 000h ; 80 7e f2 00 ; 0xf7705 logo.c:407 + jne short 0771fh ; 75 14 ; 0xf7709 + mov ax, word [bp-016h] ; 8b 46 ea ; 0xf770b logo.c:409 + shr ax, 004h ; c1 e8 04 ; 0xf770e + mov dx, strict word 00001h ; ba 01 00 ; 0xf7711 + call 073e9h ; e8 d2 fc ; 0xf7714 + cmp AL, strict byte 086h ; 3c 86 ; 0xf7717 logo.c:410 + jne short 0771fh ; 75 04 ; 0xf7719 + mov byte [bp-00eh], 001h ; c6 46 f2 01 ; 0xf771b logo.c:411 + cmp byte [bp-012h], 000h ; 80 7e ee 00 ; 0xf771f logo.c:415 + je short 07750h ; 74 2b ; 0xf7723 + cmp byte [bp-00eh], 000h ; 80 7e f2 00 ; 0xf7725 + jne short 07750h ; 75 25 ; 0xf7729 + mov bx, strict word 00010h ; bb 10 00 ; 0xf772b logo.c:417 + jmp short 07735h ; eb 05 ; 0xf772e + dec bx ; 4b ; 0xf7730 logo.c:419 + test bx, bx ; 85 db ; 0xf7731 + jbe short 0775dh ; 76 28 ; 0xf7733 + mov ax, bx ; 89 d8 ; 0xf7735 + or ah, 002h ; 80 cc 02 ; 0xf7737 + mov dx, 003b8h ; ba b8 03 ; 0xf773a + out DX, ax ; ef ; 0xf773d + xor dx, dx ; 31 d2 ; 0xf773e + mov ax, strict word 00001h ; b8 01 00 ; 0xf7740 + call 073e9h ; e8 a3 fc ; 0xf7743 + cmp AL, strict byte 086h ; 3c 86 ; 0xf7746 + jne short 07730h ; 75 e6 ; 0xf7748 + mov byte [bp-00eh], 001h ; c6 46 f2 01 ; 0xf774a + jmp short 0775dh ; eb 0d ; 0xf774e + cmp byte [bp-00eh], 000h ; 80 7e f2 00 ; 0xf7750 logo.c:428 + jne short 0775dh ; 75 07 ; 0xf7754 + mov ax, 00200h ; b8 00 02 ; 0xf7756 logo.c:429 + mov dx, 003b8h ; ba b8 03 ; 0xf7759 + out DX, ax ; ef ; 0xf775c + mov bx, 0037dh ; bb 7d 03 ; 0xf775d logo.c:43 + mov es, si ; 8e c6 ; 0xf7760 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf7762 + mov AL, strict byte 003h ; b0 03 ; 0xf7766 logo.c:437 + mov AH, strict byte 000h ; b4 00 ; 0xf7768 + int 010h ; cd 10 ; 0xf776a + cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf776c logo.c:440 + je short 07786h ; 74 14 ; 0xf7770 + cmp byte [bp-014h], 000h ; 80 7e ec 00 ; 0xf7772 logo.c:443 + jne short 077b1h ; 75 39 ; 0xf7776 + cmp byte [bp-012h], 000h ; 80 7e ee 00 ; 0xf7778 + jne short 077b1h ; 75 33 ; 0xf777c + cmp word [bp-016h], strict byte 00000h ; 83 7e ea 00 ; 0xf777e + je short 07789h ; 74 05 ; 0xf7782 + jmp short 077b1h ; eb 2b ; 0xf7784 + jmp near 07861h ; e9 d8 00 ; 0xf7786 + cmp byte [bp-00ch], 002h ; 80 7e f4 02 ; 0xf7789 logo.c:445 + jne short 0779ah ; 75 0b ; 0xf778d + push 00a4bh ; 68 4b 0a ; 0xf778f logo.c:446 + push strict byte 00002h ; 6a 02 ; 0xf7792 + call 018ffh ; e8 68 a1 ; 0xf7794 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf7797 + cmp byte [bp-00eh], 000h ; 80 7e f2 00 ; 0xf779a logo.c:449 + jne short 077b1h ; 75 11 ; 0xf779e + mov dx, strict word 00001h ; ba 01 00 ; 0xf77a0 logo.c:452 + mov ax, 000c0h ; b8 c0 00 ; 0xf77a3 + call 073e9h ; e8 40 fc ; 0xf77a6 + cmp AL, strict byte 086h ; 3c 86 ; 0xf77a9 logo.c:453 + jne short 077b1h ; 75 04 ; 0xf77ab + mov byte [bp-00eh], 001h ; c6 46 f2 01 ; 0xf77ad logo.c:454 + cmp byte [bp-00eh], 000h ; 80 7e f2 00 ; 0xf77b1 logo.c:459 + je short 07786h ; 74 cf ; 0xf77b5 + mov byte [bp-010h], 000h ; c6 46 f0 00 ; 0xf77b7 logo.c:461 + mov ax, 00100h ; b8 00 01 ; 0xf77bb logo.c:464 + mov cx, 01000h ; b9 00 10 ; 0xf77be + int 010h ; cd 10 ; 0xf77c1 + mov ax, 00700h ; b8 00 07 ; 0xf77c3 + mov BH, strict byte 007h ; b7 07 ; 0xf77c6 + db 033h, 0c9h + ; xor cx, cx ; 33 c9 ; 0xf77c8 + mov dx, 0184fh ; ba 4f 18 ; 0xf77ca + int 010h ; cd 10 ; 0xf77cd + mov ax, 00200h ; b8 00 02 ; 0xf77cf + db 033h, 0dbh + ; xor bx, bx ; 33 db ; 0xf77d2 + db 033h, 0d2h + ; xor dx, dx ; 33 d2 ; 0xf77d4 + int 010h ; cd 10 ; 0xf77d6 + push 00a6dh ; 68 6d 0a ; 0xf77d8 logo.c:467 + push strict byte 00002h ; 6a 02 ; 0xf77db + call 018ffh ; e8 1f a1 ; 0xf77dd + add sp, strict byte 00004h ; 83 c4 04 ; 0xf77e0 + call 074cah ; e8 e4 fc ; 0xf77e3 logo.c:468 + push 00ab1h ; 68 b1 0a ; 0xf77e6 logo.c:469 + push strict byte 00002h ; 6a 02 ; 0xf77e9 + call 018ffh ; e8 11 a1 ; 0xf77eb + add sp, strict byte 00004h ; 83 c4 04 ; 0xf77ee + mov dx, strict word 00001h ; ba 01 00 ; 0xf77f1 logo.c:478 + mov ax, strict word 00040h ; b8 40 00 ; 0xf77f4 + call 073e9h ; e8 ef fb ; 0xf77f7 + mov bl, al ; 88 c3 ; 0xf77fa + test al, al ; 84 c0 ; 0xf77fc logo.c:479 + je short 077f1h ; 74 f1 ; 0xf77fe + cmp AL, strict byte 030h ; 3c 30 ; 0xf7800 logo.c:481 + je short 07850h ; 74 4c ; 0xf7802 + cmp bl, 002h ; 80 fb 02 ; 0xf7804 logo.c:488 + jc short 07829h ; 72 20 ; 0xf7807 + cmp bl, 009h ; 80 fb 09 ; 0xf7809 + jnbe short 07829h ; 77 1b ; 0xf780c + mov al, bl ; 88 d8 ; 0xf780e logo.c:490 + xor ah, ah ; 30 e4 ; 0xf7810 + call 07608h ; e8 f3 fd ; 0xf7812 + cmp AL, strict byte 0ffh ; 3c ff ; 0xf7815 logo.c:497 + jne short 0781bh ; 75 02 ; 0xf7817 + jmp short 077f1h ; eb d6 ; 0xf7819 logo.c:498 + mov bx, 0037ch ; bb 7c 03 ; 0xf781b logo.c:43 + mov es, si ; 8e c6 ; 0xf781e + mov byte [es:bx], al ; 26 88 07 ; 0xf7820 + mov byte [bp-010h], 002h ; c6 46 f0 02 ; 0xf7823 logo.c:501 + jmp short 07850h ; eb 27 ; 0xf7827 logo.c:502 + cmp bl, 02eh ; 80 fb 2e ; 0xf7829 logo.c:505 + je short 0783eh ; 74 10 ; 0xf782c + cmp bl, 026h ; 80 fb 26 ; 0xf782e + je short 07844h ; 74 11 ; 0xf7831 + cmp bl, 021h ; 80 fb 21 ; 0xf7833 + jne short 0784ah ; 75 12 ; 0xf7836 + mov byte [bp-010h], 001h ; c6 46 f0 01 ; 0xf7838 logo.c:509 + jmp short 07850h ; eb 12 ; 0xf783c logo.c:510 + mov byte [bp-010h], 003h ; c6 46 f0 03 ; 0xf783e logo.c:513 + jmp short 07850h ; eb 0c ; 0xf7842 logo.c:514 + mov byte [bp-010h], 004h ; c6 46 f0 04 ; 0xf7844 logo.c:517 + jmp short 07850h ; eb 06 ; 0xf7848 logo.c:518 + cmp byte [bp-010h], 000h ; 80 7e f0 00 ; 0xf784a logo.c:521 + je short 077f1h ; 74 a1 ; 0xf784e + mov bx, 0037dh ; bb 7d 03 ; 0xf7850 logo.c:43 + mov es, si ; 8e c6 ; 0xf7853 + mov al, byte [bp-010h] ; 8a 46 f0 ; 0xf7855 + mov byte [es:bx], al ; 26 88 07 ; 0xf7858 + mov AL, strict byte 003h ; b0 03 ; 0xf785b logo.c:528 + mov AH, strict byte 000h ; b4 00 ; 0xf785d + int 010h ; cd 10 ; 0xf785f + mov AL, strict byte 034h ; b0 34 ; 0xf7861 logo.c:533 + out strict byte 043h, AL ; e6 43 ; 0xf7863 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xf7865 + out strict byte 040h, AL ; e6 40 ; 0xf7867 + out strict byte 040h, AL ; e6 40 ; 0xf7869 + push bp ; 55 ; 0xf786b + push DS ; 1e ; 0xf786c + mov ds, ax ; 8e d8 ; 0xf786d + call 0edbfh ; e8 4d 75 ; 0xf786f + pop DS ; 1f ; 0xf7872 + pop bp ; 5d ; 0xf7873 + lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf7874 logo.c:536 + pop di ; 5f ; 0xf7877 + pop si ; 5e ; 0xf7878 + pop dx ; 5a ; 0xf7879 + pop cx ; 59 ; 0xf787a + pop bx ; 5b ; 0xf787b + pop bp ; 5d ; 0xf787c + retn ; c3 ; 0xf787d + ; disGetNextSymbol 0xf787e LB 0x264a -> off=0x0 cb=000000000000006b uValue=00000000000f627e 'delay_boot' +delay_boot: ; 0xf787e LB 0x6b + push bp ; 55 ; 0xf787e logo.c:539 + mov bp, sp ; 89 e5 ; 0xf787f + push bx ; 53 ; 0xf7881 + push cx ; 51 ; 0xf7882 + push dx ; 52 ; 0xf7883 + push si ; 56 ; 0xf7884 + push di ; 57 ; 0xf7885 + mov dx, ax ; 89 c2 ; 0xf7886 + test ax, ax ; 85 c0 ; 0xf7888 logo.c:543 + je short 078dfh ; 74 53 ; 0xf788a + mov AL, strict byte 034h ; b0 34 ; 0xf788c logo.c:547 + out strict byte 043h, AL ; e6 43 ; 0xf788e + mov AL, strict byte 0d3h ; b0 d3 ; 0xf7890 + out strict byte 040h, AL ; e6 40 ; 0xf7892 + mov AL, strict byte 048h ; b0 48 ; 0xf7894 + out strict byte 040h, AL ; e6 40 ; 0xf7896 + push dx ; 52 ; 0xf7898 logo.c:549 + push 00afbh ; 68 fb 0a ; 0xf7899 + push strict byte 00002h ; 6a 02 ; 0xf789c + call 018ffh ; e8 5e a0 ; 0xf789e + add sp, strict byte 00006h ; 83 c4 06 ; 0xf78a1 + mov bx, dx ; 89 d3 ; 0xf78a4 logo.c:550 + test bx, bx ; 85 db ; 0xf78a6 + jbe short 078c1h ; 76 17 ; 0xf78a8 + push bx ; 53 ; 0xf78aa logo.c:552 + push 00b19h ; 68 19 0b ; 0xf78ab + push strict byte 00002h ; 6a 02 ; 0xf78ae + call 018ffh ; e8 4c a0 ; 0xf78b0 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf78b3 + xor dx, dx ; 31 d2 ; 0xf78b6 logo.c:553 + mov ax, strict word 00040h ; b8 40 00 ; 0xf78b8 + call 073e9h ; e8 2b fb ; 0xf78bb + dec bx ; 4b ; 0xf78be logo.c:554 + jmp short 078a6h ; eb e5 ; 0xf78bf + push 00a49h ; 68 49 0a ; 0xf78c1 logo.c:555 + push strict byte 00002h ; 6a 02 ; 0xf78c4 + call 018ffh ; e8 36 a0 ; 0xf78c6 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf78c9 + mov AL, strict byte 034h ; b0 34 ; 0xf78cc logo.c:557 + out strict byte 043h, AL ; e6 43 ; 0xf78ce + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xf78d0 + out strict byte 040h, AL ; e6 40 ; 0xf78d2 + out strict byte 040h, AL ; e6 40 ; 0xf78d4 + push bp ; 55 ; 0xf78d6 + push DS ; 1e ; 0xf78d7 + mov ds, ax ; 8e d8 ; 0xf78d8 + call 0edbfh ; e8 e2 74 ; 0xf78da + pop DS ; 1f ; 0xf78dd + pop bp ; 5d ; 0xf78de + lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf78df logo.c:558 + pop di ; 5f ; 0xf78e2 + pop si ; 5e ; 0xf78e3 + pop dx ; 5a ; 0xf78e4 + pop cx ; 59 ; 0xf78e5 + pop bx ; 5b ; 0xf78e6 + pop bp ; 5d ; 0xf78e7 + retn ; c3 ; 0xf78e8 + ; disGetNextSymbol 0xf78e9 LB 0x25df -> off=0x0 cb=00000000000000d5 uValue=00000000000f62e9 'scsi_cmd_data_in' +scsi_cmd_data_in: ; 0xf78e9 LB 0xd5 + push bp ; 55 ; 0xf78e9 scsi.c:99 + mov bp, sp ; 89 e5 ; 0xf78ea + push si ; 56 ; 0xf78ec + push di ; 57 ; 0xf78ed + sub sp, strict byte 00006h ; 83 ec 06 ; 0xf78ee + mov si, ax ; 89 c6 ; 0xf78f1 + mov byte [bp-006h], dl ; 88 56 fa ; 0xf78f3 + mov word [bp-00ah], bx ; 89 5e f6 ; 0xf78f6 + mov word [bp-008h], cx ; 89 4e f8 ; 0xf78f9 + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf78fc + mov dx, si ; 89 f2 ; 0xf78ff scsi.c:107 + in AL, DX ; ec ; 0xf7901 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf7902 + test AL, strict byte 001h ; a8 01 ; 0xf7904 scsi.c:108 + jne short 078ffh ; 75 f7 ; 0xf7906 + mov al, byte [bp+004h] ; 8a 46 04 ; 0xf7908 scsi.c:110 + cmp AL, strict byte 010h ; 3c 10 ; 0xf790b + jne short 07913h ; 75 04 ; 0xf790d + xor ax, ax ; 31 c0 ; 0xf790f + jmp short 07915h ; eb 02 ; 0xf7911 + xor ah, ah ; 30 e4 ; 0xf7913 + mov di, ax ; 89 c7 ; 0xf7915 + mov ax, bx ; 89 d8 ; 0xf7917 + mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf7919 + mov cx, strict word 0000ch ; b9 0c 00 ; 0xf791c + shr dx, 1 ; d1 ea ; 0xf791f + rcr ax, 1 ; d1 d8 ; 0xf7921 + loop 0791fh ; e2 fa ; 0xf7923 + mov cx, ax ; 89 c1 ; 0xf7925 + and cx, 000f0h ; 81 e1 f0 00 ; 0xf7927 + or cx, di ; 09 f9 ; 0xf792b + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf792d scsi.c:111 + mov dx, si ; 89 f2 ; 0xf7930 + out DX, AL ; ee ; 0xf7932 + xor al, al ; 30 c0 ; 0xf7933 scsi.c:112 + out DX, AL ; ee ; 0xf7935 + mov al, cl ; 88 c8 ; 0xf7936 scsi.c:113 + out DX, AL ; ee ; 0xf7938 + mov al, bl ; 88 d8 ; 0xf7939 scsi.c:114 + out DX, AL ; ee ; 0xf793b + mov ax, bx ; 89 d8 ; 0xf793c scsi.c:115 + mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf793e + mov cx, strict word 00008h ; b9 08 00 ; 0xf7941 + shr dx, 1 ; d1 ea ; 0xf7944 + rcr ax, 1 ; d1 d8 ; 0xf7946 + loop 07944h ; e2 fa ; 0xf7948 + mov dx, si ; 89 f2 ; 0xf794a + out DX, AL ; ee ; 0xf794c + xor cx, cx ; 31 c9 ; 0xf794d scsi.c:116 + mov al, byte [bp+004h] ; 8a 46 04 ; 0xf794f + xor ah, ah ; 30 e4 ; 0xf7952 + cmp cx, ax ; 39 c1 ; 0xf7954 + jnc short 07966h ; 73 0e ; 0xf7956 + les di, [bp-00ah] ; c4 7e f6 ; 0xf7958 scsi.c:117 + add di, cx ; 01 cf ; 0xf795b + mov al, byte [es:di] ; 26 8a 05 ; 0xf795d + mov dx, si ; 89 f2 ; 0xf7960 + out DX, AL ; ee ; 0xf7962 + inc cx ; 41 ; 0xf7963 + jmp short 0794fh ; eb e9 ; 0xf7964 + mov dx, si ; 89 f2 ; 0xf7966 scsi.c:121 + in AL, DX ; ec ; 0xf7968 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf7969 + test AL, strict byte 001h ; a8 01 ; 0xf796b scsi.c:122 + jne short 07966h ; 75 f7 ; 0xf796d + test AL, strict byte 002h ; a8 02 ; 0xf796f scsi.c:125 + je short 07981h ; 74 0e ; 0xf7971 + lea dx, [si+003h] ; 8d 54 03 ; 0xf7973 scsi.c:126 + xor al, al ; 30 c0 ; 0xf7976 + out DX, AL ; ee ; 0xf7978 + in AL, DX ; ec ; 0xf7979 scsi.c:128 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf797a + mov di, strict word 00004h ; bf 04 00 ; 0xf797c scsi.c:130 + jmp short 079b3h ; eb 32 ; 0xf797f + lea dx, [si+001h] ; 8d 54 01 ; 0xf7981 scsi.c:136 + cmp word [bp+00ch], strict byte 00000h ; 83 7e 0c 00 ; 0xf7984 + jne short 07990h ; 75 06 ; 0xf7988 + cmp bx, 08000h ; 81 fb 00 80 ; 0xf798a + jbe short 079aah ; 76 1a ; 0xf798e + mov cx, 08000h ; b9 00 80 ; 0xf7990 scsi.c:138 + les di, [bp+006h] ; c4 7e 06 ; 0xf7993 + rep insb ; f3 6c ; 0xf7996 + add bx, 08000h ; 81 c3 00 80 ; 0xf7998 scsi.c:139 + adc word [bp+00ch], strict byte 0ffffh ; 83 56 0c ff ; 0xf799c + mov ax, es ; 8c c0 ; 0xf79a0 + add ax, 00800h ; 05 00 08 ; 0xf79a2 + mov word [bp+008h], ax ; 89 46 08 ; 0xf79a5 + jmp short 07981h ; eb d7 ; 0xf79a8 scsi.c:141 + mov cx, bx ; 89 d9 ; 0xf79aa scsi.c:144 + les di, [bp+006h] ; c4 7e 06 ; 0xf79ac + rep insb ; f3 6c ; 0xf79af + xor di, di ; 31 ff ; 0xf79b1 scsi.c:146 + mov ax, di ; 89 f8 ; 0xf79b3 scsi.c:147 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf79b5 + pop di ; 5f ; 0xf79b8 + pop si ; 5e ; 0xf79b9 + pop bp ; 5d ; 0xf79ba + retn 0000ah ; c2 0a 00 ; 0xf79bb + ; disGetNextSymbol 0xf79be LB 0x250a -> off=0x0 cb=00000000000000d5 uValue=00000000000f63be 'scsi_cmd_data_out' +scsi_cmd_data_out: ; 0xf79be LB 0xd5 + push bp ; 55 ; 0xf79be scsi.c:149 + mov bp, sp ; 89 e5 ; 0xf79bf + push si ; 56 ; 0xf79c1 + push di ; 57 ; 0xf79c2 + sub sp, strict byte 00006h ; 83 ec 06 ; 0xf79c3 + mov di, ax ; 89 c7 ; 0xf79c6 + mov byte [bp-006h], dl ; 88 56 fa ; 0xf79c8 + mov word [bp-00ah], bx ; 89 5e f6 ; 0xf79cb + mov word [bp-008h], cx ; 89 4e f8 ; 0xf79ce + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf79d1 + mov dx, di ; 89 fa ; 0xf79d4 scsi.c:157 + in AL, DX ; ec ; 0xf79d6 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf79d7 + test AL, strict byte 001h ; a8 01 ; 0xf79d9 scsi.c:158 + jne short 079d4h ; 75 f7 ; 0xf79db + mov al, byte [bp+004h] ; 8a 46 04 ; 0xf79dd scsi.c:161 + cmp AL, strict byte 010h ; 3c 10 ; 0xf79e0 + jne short 079e8h ; 75 04 ; 0xf79e2 + xor ax, ax ; 31 c0 ; 0xf79e4 + jmp short 079eah ; eb 02 ; 0xf79e6 + xor ah, ah ; 30 e4 ; 0xf79e8 + mov si, ax ; 89 c6 ; 0xf79ea + mov ax, bx ; 89 d8 ; 0xf79ec + mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf79ee + mov cx, strict word 0000ch ; b9 0c 00 ; 0xf79f1 + shr dx, 1 ; d1 ea ; 0xf79f4 + rcr ax, 1 ; d1 d8 ; 0xf79f6 + loop 079f4h ; e2 fa ; 0xf79f8 + mov cx, ax ; 89 c1 ; 0xf79fa + and cx, 000f0h ; 81 e1 f0 00 ; 0xf79fc + or cx, si ; 09 f1 ; 0xf7a00 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7a02 scsi.c:162 + mov dx, di ; 89 fa ; 0xf7a05 + out DX, AL ; ee ; 0xf7a07 + mov AL, strict byte 001h ; b0 01 ; 0xf7a08 scsi.c:163 + out DX, AL ; ee ; 0xf7a0a + mov al, cl ; 88 c8 ; 0xf7a0b scsi.c:164 + out DX, AL ; ee ; 0xf7a0d + mov al, bl ; 88 d8 ; 0xf7a0e scsi.c:165 + out DX, AL ; ee ; 0xf7a10 + mov ax, bx ; 89 d8 ; 0xf7a11 scsi.c:166 + mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf7a13 + mov cx, strict word 00008h ; b9 08 00 ; 0xf7a16 + shr dx, 1 ; d1 ea ; 0xf7a19 + rcr ax, 1 ; d1 d8 ; 0xf7a1b + loop 07a19h ; e2 fa ; 0xf7a1d + mov dx, di ; 89 fa ; 0xf7a1f + out DX, AL ; ee ; 0xf7a21 + xor cx, cx ; 31 c9 ; 0xf7a22 scsi.c:167 + mov al, byte [bp+004h] ; 8a 46 04 ; 0xf7a24 + xor ah, ah ; 30 e4 ; 0xf7a27 + cmp cx, ax ; 39 c1 ; 0xf7a29 + jnc short 07a3bh ; 73 0e ; 0xf7a2b + les si, [bp-00ah] ; c4 76 f6 ; 0xf7a2d scsi.c:168 + add si, cx ; 01 ce ; 0xf7a30 + mov al, byte [es:si] ; 26 8a 04 ; 0xf7a32 + mov dx, di ; 89 fa ; 0xf7a35 + out DX, AL ; ee ; 0xf7a37 + inc cx ; 41 ; 0xf7a38 + jmp short 07a24h ; eb e9 ; 0xf7a39 + lea dx, [di+001h] ; 8d 55 01 ; 0xf7a3b scsi.c:173 + cmp word [bp+00ch], strict byte 00000h ; 83 7e 0c 00 ; 0xf7a3e + jne short 07a4ah ; 75 06 ; 0xf7a42 + cmp bx, 08000h ; 81 fb 00 80 ; 0xf7a44 + jbe short 07a65h ; 76 1b ; 0xf7a48 + mov cx, 08000h ; b9 00 80 ; 0xf7a4a scsi.c:175 + les si, [bp+006h] ; c4 76 06 ; 0xf7a4d + db 0f3h, 026h, 06eh + ; rep es outsb ; f3 26 6e ; 0xf7a50 + add bx, 08000h ; 81 c3 00 80 ; 0xf7a53 scsi.c:176 + adc word [bp+00ch], strict byte 0ffffh ; 83 56 0c ff ; 0xf7a57 + mov ax, es ; 8c c0 ; 0xf7a5b + add ax, 00800h ; 05 00 08 ; 0xf7a5d + mov word [bp+008h], ax ; 89 46 08 ; 0xf7a60 + jmp short 07a3bh ; eb d6 ; 0xf7a63 scsi.c:178 + mov cx, bx ; 89 d9 ; 0xf7a65 scsi.c:181 + les si, [bp+006h] ; c4 76 06 ; 0xf7a67 + db 0f3h, 026h, 06eh + ; rep es outsb ; f3 26 6e ; 0xf7a6a + mov dx, di ; 89 fa ; 0xf7a6d scsi.c:185 + in AL, DX ; ec ; 0xf7a6f + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf7a70 + test AL, strict byte 001h ; a8 01 ; 0xf7a72 scsi.c:186 + jne short 07a6dh ; 75 f7 ; 0xf7a74 + test AL, strict byte 002h ; a8 02 ; 0xf7a76 scsi.c:189 + je short 07a88h ; 74 0e ; 0xf7a78 + lea dx, [di+003h] ; 8d 55 03 ; 0xf7a7a scsi.c:190 + xor al, al ; 30 c0 ; 0xf7a7d + out DX, AL ; ee ; 0xf7a7f + in AL, DX ; ec ; 0xf7a80 scsi.c:192 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf7a81 + mov ax, strict word 00004h ; b8 04 00 ; 0xf7a83 scsi.c:194 + jmp short 07a8ah ; eb 02 ; 0xf7a86 + xor ax, ax ; 31 c0 ; 0xf7a88 scsi.c:197 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf7a8a scsi.c:198 + pop di ; 5f ; 0xf7a8d + pop si ; 5e ; 0xf7a8e + pop bp ; 5d ; 0xf7a8f + retn 0000ah ; c2 0a 00 ; 0xf7a90 + ; disGetNextSymbol 0xf7a93 LB 0x2435 -> off=0x0 cb=00000000000000e0 uValue=00000000000f6493 'scsi_read_sectors' +scsi_read_sectors: ; 0xf7a93 LB 0xe0 + push bp ; 55 ; 0xf7a93 scsi.c:207 + mov bp, sp ; 89 e5 ; 0xf7a94 + push si ; 56 ; 0xf7a96 + push di ; 57 ; 0xf7a97 + sub sp, strict byte 00016h ; 83 ec 16 ; 0xf7a98 + mov si, word [bp+004h] ; 8b 76 04 ; 0xf7a9b + mov es, [bp+006h] ; 8e 46 06 ; 0xf7a9e scsi.c:216 + mov al, byte [es:si+00ch] ; 26 8a 44 0c ; 0xf7aa1 + sub AL, strict byte 008h ; 2c 08 ; 0xf7aa5 + mov byte [bp-006h], al ; 88 46 fa ; 0xf7aa7 + cmp AL, strict byte 004h ; 3c 04 ; 0xf7aaa scsi.c:217 + jbe short 07abfh ; 76 11 ; 0xf7aac + xor ah, ah ; 30 e4 ; 0xf7aae scsi.c:218 + push ax ; 50 ; 0xf7ab0 + push 00b1eh ; 68 1e 0b ; 0xf7ab1 + push 00b30h ; 68 30 0b ; 0xf7ab4 + push strict byte 00007h ; 6a 07 ; 0xf7ab7 + call 018ffh ; e8 43 9e ; 0xf7ab9 + add sp, strict byte 00008h ; 83 c4 08 ; 0xf7abc + mov es, [bp+006h] ; 8e 46 06 ; 0xf7abf scsi.c:220 + mov di, word [es:si+00eh] ; 26 8b 7c 0e ; 0xf7ac2 + mov word [bp-01ah], 00088h ; c7 46 e6 88 00 ; 0xf7ac6 scsi.c:223 + mov ax, word [es:si+006h] ; 26 8b 44 06 ; 0xf7acb scsi.c:224 + mov bx, word [es:si+004h] ; 26 8b 5c 04 ; 0xf7acf + mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf7ad3 + mov dx, word [es:si] ; 26 8b 14 ; 0xf7ad7 + xchg ah, al ; 86 c4 ; 0xf7ada + xchg bh, bl ; 86 df ; 0xf7adc + xchg ch, cl ; 86 cd ; 0xf7ade + xchg dh, dl ; 86 d6 ; 0xf7ae0 + xchg dx, ax ; 92 ; 0xf7ae2 + xchg bx, cx ; 87 cb ; 0xf7ae3 + mov word [bp-012h], ax ; 89 46 ee ; 0xf7ae5 + mov word [bp-014h], bx ; 89 5e ec ; 0xf7ae8 + mov word [bp-016h], cx ; 89 4e ea ; 0xf7aeb + mov word [bp-018h], dx ; 89 56 e8 ; 0xf7aee + mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf7af1 scsi.c:225 + mov ax, di ; 89 f8 ; 0xf7af5 scsi.c:226 + xor dx, dx ; 31 d2 ; 0xf7af7 + xchg ah, al ; 86 c4 ; 0xf7af9 + xchg dh, dl ; 86 d6 ; 0xf7afb + xchg dx, ax ; 92 ; 0xf7afd + mov word [bp-010h], ax ; 89 46 f0 ; 0xf7afe + mov word [bp-00eh], dx ; 89 56 f2 ; 0xf7b01 + mov byte [bp-00bh], 000h ; c6 46 f5 00 ; 0xf7b04 scsi.c:227 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7b08 scsi.c:230 + xor ah, ah ; 30 e4 ; 0xf7b0b + sal ax, 002h ; c1 e0 02 ; 0xf7b0d + mov bx, si ; 89 f3 ; 0xf7b10 + add bx, ax ; 01 c3 ; 0xf7b12 + mov ax, word [es:bx+0021ch] ; 26 8b 87 1c 02 ; 0xf7b14 + mov dl, byte [es:bx+0021eh] ; 26 8a 97 1e 02 ; 0xf7b19 scsi.c:231 + mov word [bp-00ah], di ; 89 7e f6 ; 0xf7b1e scsi.c:236 + mov word [bp-008h], strict word 00000h ; c7 46 f8 00 00 ; 0xf7b21 + mov cx, strict word 00009h ; b9 09 00 ; 0xf7b26 + sal word [bp-00ah], 1 ; d1 66 f6 ; 0xf7b29 + rcl word [bp-008h], 1 ; d1 56 f8 ; 0xf7b2c + loop 07b29h ; e2 f8 ; 0xf7b2f + push word [bp-008h] ; ff 76 f8 ; 0xf7b31 + push word [bp-00ah] ; ff 76 f6 ; 0xf7b34 + push word [es:si+00ah] ; 26 ff 74 0a ; 0xf7b37 + push word [es:si+008h] ; 26 ff 74 08 ; 0xf7b3b + push strict byte 00010h ; 6a 10 ; 0xf7b3f + xor dh, dh ; 30 f6 ; 0xf7b41 + mov cx, ss ; 8c d1 ; 0xf7b43 + lea bx, [bp-01ah] ; 8d 5e e6 ; 0xf7b45 + call 078e9h ; e8 9e fd ; 0xf7b48 + mov ah, al ; 88 c4 ; 0xf7b4b + test al, al ; 84 c0 ; 0xf7b4d scsi.c:239 + jne short 07b66h ; 75 15 ; 0xf7b4f + mov es, [bp+006h] ; 8e 46 06 ; 0xf7b51 scsi.c:241 + mov word [es:si+018h], di ; 26 89 7c 18 ; 0xf7b54 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf7b58 scsi.c:242 + mov word [es:si+01ah], dx ; 26 89 54 1a ; 0xf7b5b + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf7b5f + mov word [es:si+01ch], dx ; 26 89 54 1c ; 0xf7b62 + mov al, ah ; 88 e0 ; 0xf7b66 scsi.c:246 + xor ah, ah ; 30 e4 ; 0xf7b68 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf7b6a scsi.c:247 + pop di ; 5f ; 0xf7b6d + pop si ; 5e ; 0xf7b6e + pop bp ; 5d ; 0xf7b6f + retn 00004h ; c2 04 00 ; 0xf7b70 + ; disGetNextSymbol 0xf7b73 LB 0x2355 -> off=0x0 cb=00000000000000e0 uValue=00000000000f6573 'scsi_write_sectors' +scsi_write_sectors: ; 0xf7b73 LB 0xe0 + push bp ; 55 ; 0xf7b73 scsi.c:256 + mov bp, sp ; 89 e5 ; 0xf7b74 + push si ; 56 ; 0xf7b76 + push di ; 57 ; 0xf7b77 + sub sp, strict byte 00016h ; 83 ec 16 ; 0xf7b78 + mov si, word [bp+004h] ; 8b 76 04 ; 0xf7b7b + mov es, [bp+006h] ; 8e 46 06 ; 0xf7b7e scsi.c:265 + mov al, byte [es:si+00ch] ; 26 8a 44 0c ; 0xf7b81 + sub AL, strict byte 008h ; 2c 08 ; 0xf7b85 + mov byte [bp-006h], al ; 88 46 fa ; 0xf7b87 + cmp AL, strict byte 004h ; 3c 04 ; 0xf7b8a scsi.c:266 + jbe short 07b9fh ; 76 11 ; 0xf7b8c + xor ah, ah ; 30 e4 ; 0xf7b8e scsi.c:267 + push ax ; 50 ; 0xf7b90 + push 00b4fh ; 68 4f 0b ; 0xf7b91 + push 00b30h ; 68 30 0b ; 0xf7b94 + push strict byte 00007h ; 6a 07 ; 0xf7b97 + call 018ffh ; e8 63 9d ; 0xf7b99 + add sp, strict byte 00008h ; 83 c4 08 ; 0xf7b9c + mov es, [bp+006h] ; 8e 46 06 ; 0xf7b9f scsi.c:269 + mov di, word [es:si+00eh] ; 26 8b 7c 0e ; 0xf7ba2 + mov word [bp-01ah], 0008ah ; c7 46 e6 8a 00 ; 0xf7ba6 scsi.c:272 + mov ax, word [es:si+006h] ; 26 8b 44 06 ; 0xf7bab scsi.c:273 + mov bx, word [es:si+004h] ; 26 8b 5c 04 ; 0xf7baf + mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf7bb3 + mov dx, word [es:si] ; 26 8b 14 ; 0xf7bb7 + xchg ah, al ; 86 c4 ; 0xf7bba + xchg bh, bl ; 86 df ; 0xf7bbc + xchg ch, cl ; 86 cd ; 0xf7bbe + xchg dh, dl ; 86 d6 ; 0xf7bc0 + xchg dx, ax ; 92 ; 0xf7bc2 + xchg bx, cx ; 87 cb ; 0xf7bc3 + mov word [bp-012h], ax ; 89 46 ee ; 0xf7bc5 + mov word [bp-014h], bx ; 89 5e ec ; 0xf7bc8 + mov word [bp-016h], cx ; 89 4e ea ; 0xf7bcb + mov word [bp-018h], dx ; 89 56 e8 ; 0xf7bce + mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf7bd1 scsi.c:274 + mov ax, di ; 89 f8 ; 0xf7bd5 scsi.c:275 + xor dx, dx ; 31 d2 ; 0xf7bd7 + xchg ah, al ; 86 c4 ; 0xf7bd9 + xchg dh, dl ; 86 d6 ; 0xf7bdb + xchg dx, ax ; 92 ; 0xf7bdd + mov word [bp-010h], ax ; 89 46 f0 ; 0xf7bde + mov word [bp-00eh], dx ; 89 56 f2 ; 0xf7be1 + mov byte [bp-00bh], 000h ; c6 46 f5 00 ; 0xf7be4 scsi.c:276 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7be8 scsi.c:278 + xor ah, ah ; 30 e4 ; 0xf7beb + sal ax, 002h ; c1 e0 02 ; 0xf7bed + mov bx, si ; 89 f3 ; 0xf7bf0 + add bx, ax ; 01 c3 ; 0xf7bf2 + mov ax, word [es:bx+0021ch] ; 26 8b 87 1c 02 ; 0xf7bf4 + mov dl, byte [es:bx+0021eh] ; 26 8a 97 1e 02 ; 0xf7bf9 scsi.c:279 + mov word [bp-00ah], di ; 89 7e f6 ; 0xf7bfe scsi.c:284 + mov word [bp-008h], strict word 00000h ; c7 46 f8 00 00 ; 0xf7c01 + mov cx, strict word 00009h ; b9 09 00 ; 0xf7c06 + sal word [bp-00ah], 1 ; d1 66 f6 ; 0xf7c09 + rcl word [bp-008h], 1 ; d1 56 f8 ; 0xf7c0c + loop 07c09h ; e2 f8 ; 0xf7c0f + push word [bp-008h] ; ff 76 f8 ; 0xf7c11 + push word [bp-00ah] ; ff 76 f6 ; 0xf7c14 + push word [es:si+00ah] ; 26 ff 74 0a ; 0xf7c17 + push word [es:si+008h] ; 26 ff 74 08 ; 0xf7c1b + push strict byte 00010h ; 6a 10 ; 0xf7c1f + xor dh, dh ; 30 f6 ; 0xf7c21 + mov cx, ss ; 8c d1 ; 0xf7c23 + lea bx, [bp-01ah] ; 8d 5e e6 ; 0xf7c25 + call 079beh ; e8 93 fd ; 0xf7c28 + mov ah, al ; 88 c4 ; 0xf7c2b + test al, al ; 84 c0 ; 0xf7c2d scsi.c:287 + jne short 07c46h ; 75 15 ; 0xf7c2f + mov es, [bp+006h] ; 8e 46 06 ; 0xf7c31 scsi.c:289 + mov word [es:si+018h], di ; 26 89 7c 18 ; 0xf7c34 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf7c38 scsi.c:290 + mov word [es:si+01ah], dx ; 26 89 54 1a ; 0xf7c3b + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf7c3f + mov word [es:si+01ch], dx ; 26 89 54 1c ; 0xf7c42 + mov al, ah ; 88 e0 ; 0xf7c46 scsi.c:294 + xor ah, ah ; 30 e4 ; 0xf7c48 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf7c4a scsi.c:295 + pop di ; 5f ; 0xf7c4d + pop si ; 5e ; 0xf7c4e + pop bp ; 5d ; 0xf7c4f + retn 00004h ; c2 04 00 ; 0xf7c50 + ; disGetNextSymbol 0xf7c53 LB 0x2275 -> off=0x0 cb=0000000000000176 uValue=00000000000f6653 'scsi_cmd_packet' +scsi_cmd_packet: ; 0xf7c53 LB 0x176 + push bp ; 55 ; 0xf7c53 scsi.c:315 + mov bp, sp ; 89 e5 ; 0xf7c54 + push si ; 56 ; 0xf7c56 + push di ; 57 ; 0xf7c57 + sub sp, strict byte 0000eh ; 83 ec 0e ; 0xf7c58 + mov byte [bp-006h], dl ; 88 56 fa ; 0xf7c5b + mov word [bp-010h], bx ; 89 5e f0 ; 0xf7c5e + mov word [bp-00ah], cx ; 89 4e f6 ; 0xf7c61 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf7c64 scsi.c:48 + mov dx, strict word 00040h ; ba 40 00 ; 0xf7c67 + mov es, dx ; 8e c2 ; 0xf7c6a + mov dx, word [es:bx] ; 26 8b 17 ; 0xf7c6c + mov si, 00122h ; be 22 01 ; 0xf7c6f scsi.c:49 + mov word [bp-012h], dx ; 89 56 ee ; 0xf7c72 + cmp byte [bp+00ah], 002h ; 80 7e 0a 02 ; 0xf7c75 scsi.c:326 + jne short 07c9ah ; 75 1f ; 0xf7c79 + mov bx, 00da0h ; bb a0 0d ; 0xf7c7b scsi.c:327 + mov cx, ds ; 8c d9 ; 0xf7c7e + mov ax, strict word 00004h ; b8 04 00 ; 0xf7c80 + call 018bch ; e8 36 9c ; 0xf7c83 + push 00b62h ; 68 62 0b ; 0xf7c86 + push 00b72h ; 68 72 0b ; 0xf7c89 + push strict byte 00004h ; 6a 04 ; 0xf7c8c + call 018ffh ; e8 6e 9c ; 0xf7c8e + add sp, strict byte 00006h ; 83 c4 06 ; 0xf7c91 + mov dx, strict word 00001h ; ba 01 00 ; 0xf7c94 scsi.c:328 + jmp near 07dbeh ; e9 24 01 ; 0xf7c97 + sub ax, strict word 00008h ; 2d 08 00 ; 0xf7c9a scsi.c:332 + sal ax, 002h ; c1 e0 02 ; 0xf7c9d scsi.c:342 + sub byte [bp-006h], 002h ; 80 6e fa 02 ; 0xf7ca0 scsi.c:340 + mov es, [bp-012h] ; 8e 46 ee ; 0xf7ca4 + mov di, si ; 89 f7 ; 0xf7ca7 + add di, ax ; 01 c7 ; 0xf7ca9 + mov bx, word [es:di+0021ch] ; 26 8b 9d 1c 02 ; 0xf7cab + mov al, byte [es:di+0021eh] ; 26 8a 85 1e 02 ; 0xf7cb0 scsi.c:343 + mov byte [bp-008h], al ; 88 46 f8 ; 0xf7cb5 + mov dx, bx ; 89 da ; 0xf7cb8 scsi.c:347 + in AL, DX ; ec ; 0xf7cba + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf7cbb + test AL, strict byte 001h ; a8 01 ; 0xf7cbd scsi.c:348 + jne short 07cb8h ; 75 f7 ; 0xf7cbf + xor di, di ; 31 ff ; 0xf7cc1 scsi.c:354 + mov ax, word [bp+006h] ; 8b 46 06 ; 0xf7cc3 + add ax, word [bp+004h] ; 03 46 04 ; 0xf7cc6 + adc di, word [bp+008h] ; 13 7e 08 ; 0xf7cc9 + mov es, [bp-012h] ; 8e 46 ee ; 0xf7ccc + mov dx, word [es:si+020h] ; 26 8b 54 20 ; 0xf7ccf + mov word [bp-00eh], dx ; 89 56 f2 ; 0xf7cd3 + xor dx, dx ; 31 d2 ; 0xf7cd6 + mov cx, word [bp-00eh] ; 8b 4e f2 ; 0xf7cd8 + add cx, ax ; 01 c1 ; 0xf7cdb + mov word [bp-00ch], cx ; 89 4e f4 ; 0xf7cdd + adc di, dx ; 11 d7 ; 0xf7ce0 + mov ax, cx ; 89 c8 ; 0xf7ce2 scsi.c:356 + mov dx, di ; 89 fa ; 0xf7ce4 + mov cx, strict word 0000ch ; b9 0c 00 ; 0xf7ce6 + shr dx, 1 ; d1 ea ; 0xf7ce9 + rcr ax, 1 ; d1 d8 ; 0xf7ceb + loop 07ce9h ; e2 fa ; 0xf7ced + mov cx, ax ; 89 c1 ; 0xf7cef + and cx, 000f0h ; 81 e1 f0 00 ; 0xf7cf1 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7cf5 + xor ah, ah ; 30 e4 ; 0xf7cf8 + or cx, ax ; 09 c1 ; 0xf7cfa + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf7cfc scsi.c:357 + mov dx, bx ; 89 da ; 0xf7cff + out DX, AL ; ee ; 0xf7d01 + xor al, al ; 30 c0 ; 0xf7d02 scsi.c:358 + out DX, AL ; ee ; 0xf7d04 + mov al, cl ; 88 c8 ; 0xf7d05 scsi.c:359 + out DX, AL ; ee ; 0xf7d07 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf7d08 scsi.c:360 + out DX, AL ; ee ; 0xf7d0b + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf7d0c scsi.c:361 + mov dx, di ; 89 fa ; 0xf7d0f + mov cx, strict word 00008h ; b9 08 00 ; 0xf7d11 + shr dx, 1 ; d1 ea ; 0xf7d14 + rcr ax, 1 ; d1 d8 ; 0xf7d16 + loop 07d14h ; e2 fa ; 0xf7d18 + mov dx, bx ; 89 da ; 0xf7d1a + out DX, AL ; ee ; 0xf7d1c + xor cx, cx ; 31 c9 ; 0xf7d1d scsi.c:362 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7d1f + xor ah, ah ; 30 e4 ; 0xf7d22 + cmp cx, ax ; 39 c1 ; 0xf7d24 + jnc short 07d39h ; 73 11 ; 0xf7d26 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf7d28 scsi.c:363 + mov di, word [bp-010h] ; 8b 7e f0 ; 0xf7d2b + add di, cx ; 01 cf ; 0xf7d2e + mov al, byte [es:di] ; 26 8a 05 ; 0xf7d30 + mov dx, bx ; 89 da ; 0xf7d33 + out DX, AL ; ee ; 0xf7d35 + inc cx ; 41 ; 0xf7d36 + jmp short 07d1fh ; eb e6 ; 0xf7d37 + mov dx, bx ; 89 da ; 0xf7d39 scsi.c:367 + in AL, DX ; ec ; 0xf7d3b + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf7d3c + test AL, strict byte 001h ; a8 01 ; 0xf7d3e scsi.c:368 + jne short 07d39h ; 75 f7 ; 0xf7d40 + test AL, strict byte 002h ; a8 02 ; 0xf7d42 scsi.c:371 + je short 07d54h ; 74 0e ; 0xf7d44 + lea dx, [bx+003h] ; 8d 57 03 ; 0xf7d46 scsi.c:372 + xor al, al ; 30 c0 ; 0xf7d49 + out DX, AL ; ee ; 0xf7d4b + in AL, DX ; ec ; 0xf7d4c scsi.c:374 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf7d4d + mov dx, strict word 00003h ; ba 03 00 ; 0xf7d4f scsi.c:376 + jmp short 07dbeh ; eb 6a ; 0xf7d52 + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf7d54 scsi.c:381 + test ax, ax ; 85 c0 ; 0xf7d57 + je short 07d63h ; 74 08 ; 0xf7d59 + lea dx, [bx+001h] ; 8d 57 01 ; 0xf7d5b scsi.c:382 + mov cx, ax ; 89 c1 ; 0xf7d5e + in AL, DX ; ec ; 0xf7d60 + loop 07d60h ; e2 fd ; 0xf7d61 + mov ax, word [bp+006h] ; 8b 46 06 ; 0xf7d63 scsi.c:384 + mov es, [bp-012h] ; 8e 46 ee ; 0xf7d66 + mov word [es:si+01ah], ax ; 26 89 44 1a ; 0xf7d69 + mov ax, word [bp+008h] ; 8b 46 08 ; 0xf7d6d + mov word [es:si+01ch], ax ; 26 89 44 1c ; 0xf7d70 + lea ax, [bx+001h] ; 8d 47 01 ; 0xf7d74 scsi.c:389 + cmp word [bp+008h], strict byte 00000h ; 83 7e 08 00 ; 0xf7d77 + jne short 07d84h ; 75 07 ; 0xf7d7b + cmp word [bp+006h], 08000h ; 81 7e 06 00 80 ; 0xf7d7d + jbe short 07da1h ; 76 1d ; 0xf7d82 + mov dx, ax ; 89 c2 ; 0xf7d84 scsi.c:391 + mov cx, 08000h ; b9 00 80 ; 0xf7d86 + les di, [bp+00ch] ; c4 7e 0c ; 0xf7d89 + rep insb ; f3 6c ; 0xf7d8c + add word [bp+006h], 08000h ; 81 46 06 00 80 ; 0xf7d8e scsi.c:392 + adc word [bp+008h], strict byte 0ffffh ; 83 56 08 ff ; 0xf7d93 + mov ax, es ; 8c c0 ; 0xf7d97 + add ax, 00800h ; 05 00 08 ; 0xf7d99 + mov word [bp+00eh], ax ; 89 46 0e ; 0xf7d9c + jmp short 07d74h ; eb d3 ; 0xf7d9f scsi.c:394 + mov dx, ax ; 89 c2 ; 0xf7da1 scsi.c:397 + mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf7da3 + les di, [bp+00ch] ; c4 7e 0c ; 0xf7da6 + rep insb ; f3 6c ; 0xf7da9 + mov es, [bp-012h] ; 8e 46 ee ; 0xf7dab scsi.c:399 + cmp word [es:si+020h], strict byte 00000h ; 26 83 7c 20 00 ; 0xf7dae + je short 07dbch ; 74 07 ; 0xf7db3 + mov cx, word [es:si+020h] ; 26 8b 4c 20 ; 0xf7db5 scsi.c:400 + in AL, DX ; ec ; 0xf7db9 + loop 07db9h ; e2 fd ; 0xf7dba + xor dx, dx ; 31 d2 ; 0xf7dbc scsi.c:402 + mov ax, dx ; 89 d0 ; 0xf7dbe scsi.c:403 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf7dc0 + pop di ; 5f ; 0xf7dc3 + pop si ; 5e ; 0xf7dc4 + pop bp ; 5d ; 0xf7dc5 + retn 0000ch ; c2 0c 00 ; 0xf7dc6 + ; disGetNextSymbol 0xf7dc9 LB 0x20ff -> off=0x0 cb=00000000000004a7 uValue=00000000000f67c9 'scsi_enumerate_attached_devices' +scsi_enumerate_attached_devices: ; 0xf7dc9 LB 0x4a7 + push bp ; 55 ; 0xf7dc9 scsi.c:411 + mov bp, sp ; 89 e5 ; 0xf7dca + push bx ; 53 ; 0xf7dcc + push cx ; 51 ; 0xf7dcd + push dx ; 52 ; 0xf7dce + push si ; 56 ; 0xf7dcf + push di ; 57 ; 0xf7dd0 + sub sp, 0023ch ; 81 ec 3c 02 ; 0xf7dd1 + push ax ; 50 ; 0xf7dd5 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf7dd6 scsi.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf7dd9 + mov es, ax ; 8e c0 ; 0xf7ddc + mov ax, word [es:bx] ; 26 8b 07 ; 0xf7dde + mov di, 00122h ; bf 22 01 ; 0xf7de1 scsi.c:49 + mov word [bp-01ah], ax ; 89 46 e6 ; 0xf7de4 + mov word [bp-012h], strict word 00000h ; c7 46 ee 00 00 ; 0xf7de7 scsi.c:420 + jmp near 081eeh ; e9 ff 03 ; 0xf7dec + cmp AL, strict byte 004h ; 3c 04 ; 0xf7def scsi.c:440 + jc short 07df6h ; 72 03 ; 0xf7df1 + jmp near 08266h ; e9 70 04 ; 0xf7df3 + mov cx, strict word 00010h ; b9 10 00 ; 0xf7df6 scsi.c:455 + xor bx, bx ; 31 db ; 0xf7df9 + mov dx, ss ; 8c d2 ; 0xf7dfb + lea ax, [bp-046h] ; 8d 46 ba ; 0xf7dfd + call 09bb0h ; e8 ad 1d ; 0xf7e00 + mov byte [bp-046h], 09eh ; c6 46 ba 9e ; 0xf7e03 scsi.c:456 + mov byte [bp-045h], 010h ; c6 46 bb 10 ; 0xf7e07 scsi.c:457 + mov byte [bp-039h], 020h ; c6 46 c7 20 ; 0xf7e0b scsi.c:458 + push strict byte 00000h ; 6a 00 ; 0xf7e0f scsi.c:460 + push strict byte 00020h ; 6a 20 ; 0xf7e11 + lea dx, [bp-00246h] ; 8d 96 ba fd ; 0xf7e13 + push SS ; 16 ; 0xf7e17 + push dx ; 52 ; 0xf7e18 + push strict byte 00010h ; 6a 10 ; 0xf7e19 + mov dl, byte [bp-012h] ; 8a 56 ee ; 0xf7e1b + xor dh, dh ; 30 f6 ; 0xf7e1e + mov cx, ss ; 8c d1 ; 0xf7e20 + lea bx, [bp-046h] ; 8d 5e ba ; 0xf7e22 + mov ax, word [bp-00248h] ; 8b 86 b8 fd ; 0xf7e25 + call 078e9h ; e8 bd fa ; 0xf7e29 + test al, al ; 84 c0 ; 0xf7e2c scsi.c:461 + je short 07e3eh ; 74 0e ; 0xf7e2e + push 00b92h ; 68 92 0b ; 0xf7e30 scsi.c:462 + push 00bcbh ; 68 cb 0b ; 0xf7e33 + push strict byte 00007h ; 6a 07 ; 0xf7e36 + call 018ffh ; e8 c4 9a ; 0xf7e38 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf7e3b + mov ax, word [bp-00240h] ; 8b 86 c0 fd ; 0xf7e3e scsi.c:467 + mov bx, word [bp-00242h] ; 8b 9e be fd ; 0xf7e42 + mov cx, word [bp-00244h] ; 8b 8e bc fd ; 0xf7e46 + mov dx, word [bp-00246h] ; 8b 96 ba fd ; 0xf7e4a + xchg ah, al ; 86 c4 ; 0xf7e4e + xchg bh, bl ; 86 df ; 0xf7e50 + xchg ch, cl ; 86 cd ; 0xf7e52 + xchg dh, dl ; 86 d6 ; 0xf7e54 + xchg dx, ax ; 92 ; 0xf7e56 + xchg bx, cx ; 87 cb ; 0xf7e57 + add dx, strict byte 00001h ; 83 c2 01 ; 0xf7e59 + mov word [bp-02ah], dx ; 89 56 d6 ; 0xf7e5c + adc cx, strict byte 00000h ; 83 d1 00 ; 0xf7e5f + mov word [bp-018h], cx ; 89 4e e8 ; 0xf7e62 + adc bx, strict byte 00000h ; 83 d3 00 ; 0xf7e65 + mov word [bp-020h], bx ; 89 5e e0 ; 0xf7e68 + adc ax, strict word 00000h ; 15 00 00 ; 0xf7e6b + mov word [bp-01eh], ax ; 89 46 e2 ; 0xf7e6e + mov al, byte [bp-0023eh] ; 8a 86 c2 fd ; 0xf7e71 scsi.c:469 + xor ah, ah ; 30 e4 ; 0xf7e75 + mov bx, ax ; 89 c3 ; 0xf7e77 + sal bx, 008h ; c1 e3 08 ; 0xf7e79 + mov al, byte [bp-0023dh] ; 8a 86 c3 fd ; 0xf7e7c + xor si, si ; 31 f6 ; 0xf7e80 + or bx, ax ; 09 c3 ; 0xf7e82 + mov al, byte [bp-0023ch] ; 8a 86 c4 fd ; 0xf7e84 + xor dx, dx ; 31 d2 ; 0xf7e88 + mov cx, strict word 00008h ; b9 08 00 ; 0xf7e8a + sal ax, 1 ; d1 e0 ; 0xf7e8d + rcl dx, 1 ; d1 d2 ; 0xf7e8f + loop 07e8dh ; e2 fa ; 0xf7e91 + mov cx, si ; 89 f1 ; 0xf7e93 + or cx, ax ; 09 c1 ; 0xf7e95 + or dx, bx ; 09 da ; 0xf7e97 + mov al, byte [bp-0023bh] ; 8a 86 c5 fd ; 0xf7e99 + xor ah, ah ; 30 e4 ; 0xf7e9d + or cx, ax ; 09 c1 ; 0xf7e9f + mov word [bp-016h], cx ; 89 4e ea ; 0xf7ea1 + test dx, dx ; 85 d2 ; 0xf7ea4 scsi.c:475 + jne short 07eaeh ; 75 06 ; 0xf7ea6 + cmp cx, 00200h ; 81 f9 00 02 ; 0xf7ea8 + je short 07eceh ; 74 20 ; 0xf7eac + mov bx, 00da0h ; bb a0 0d ; 0xf7eae scsi.c:478 + mov cx, ds ; 8c d9 ; 0xf7eb1 + mov ax, strict word 00004h ; b8 04 00 ; 0xf7eb3 + call 018bch ; e8 03 9a ; 0xf7eb6 + push dx ; 52 ; 0xf7eb9 + push word [bp-016h] ; ff 76 ea ; 0xf7eba + push word [bp-012h] ; ff 76 ee ; 0xf7ebd + push 00beah ; 68 ea 0b ; 0xf7ec0 + push strict byte 00004h ; 6a 04 ; 0xf7ec3 + call 018ffh ; e8 37 9a ; 0xf7ec5 + add sp, strict byte 0000ah ; 83 c4 0a ; 0xf7ec8 + jmp near 081e2h ; e9 14 03 ; 0xf7ecb scsi.c:479 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf7ece scsi.c:483 + cmp AL, strict byte 001h ; 3c 01 ; 0xf7ed1 + jc short 07ee1h ; 72 0c ; 0xf7ed3 + jbe short 07ee9h ; 76 12 ; 0xf7ed5 + cmp AL, strict byte 003h ; 3c 03 ; 0xf7ed7 + je short 07ef1h ; 74 16 ; 0xf7ed9 + cmp AL, strict byte 002h ; 3c 02 ; 0xf7edb + je short 07eedh ; 74 0e ; 0xf7edd + jmp short 07f3ah ; eb 59 ; 0xf7edf + test al, al ; 84 c0 ; 0xf7ee1 + jne short 07f3ah ; 75 55 ; 0xf7ee3 + mov BL, strict byte 090h ; b3 90 ; 0xf7ee5 scsi.c:486 + jmp short 07ef3h ; eb 0a ; 0xf7ee7 scsi.c:487 + mov BL, strict byte 098h ; b3 98 ; 0xf7ee9 scsi.c:489 + jmp short 07ef3h ; eb 06 ; 0xf7eeb scsi.c:490 + mov BL, strict byte 0a0h ; b3 a0 ; 0xf7eed scsi.c:492 + jmp short 07ef3h ; eb 02 ; 0xf7eef scsi.c:493 + mov BL, strict byte 0a8h ; b3 a8 ; 0xf7ef1 scsi.c:495 + mov cl, bl ; 88 d9 ; 0xf7ef3 scsi.c:499 + add cl, 007h ; 80 c1 07 ; 0xf7ef5 + xor ch, ch ; 30 ed ; 0xf7ef8 + mov ax, cx ; 89 c8 ; 0xf7efa + call 01650h ; e8 51 97 ; 0xf7efc + test al, al ; 84 c0 ; 0xf7eff + je short 07f3ah ; 74 37 ; 0xf7f01 + mov al, bl ; 88 d8 ; 0xf7f03 scsi.c:504 + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf7f05 + xor ah, ah ; 30 e4 ; 0xf7f07 + call 01650h ; e8 44 97 ; 0xf7f09 + xor ah, ah ; 30 e4 ; 0xf7f0c + mov dx, ax ; 89 c2 ; 0xf7f0e + sal dx, 008h ; c1 e2 08 ; 0xf7f10 + mov al, bl ; 88 d8 ; 0xf7f13 + call 01650h ; e8 38 97 ; 0xf7f15 + xor ah, ah ; 30 e4 ; 0xf7f18 + add ax, dx ; 01 d0 ; 0xf7f1a + cwd ; 99 ; 0xf7f1c + mov si, ax ; 89 c6 ; 0xf7f1d + mov al, bl ; 88 d8 ; 0xf7f1f scsi.c:505 + add AL, strict byte 002h ; 04 02 ; 0xf7f21 + xor ah, ah ; 30 e4 ; 0xf7f23 + call 01650h ; e8 28 97 ; 0xf7f25 + xor ah, ah ; 30 e4 ; 0xf7f28 + mov word [bp-022h], ax ; 89 46 de ; 0xf7f2a + mov ax, cx ; 89 c8 ; 0xf7f2d scsi.c:506 + call 01650h ; e8 1e 97 ; 0xf7f2f + xor ah, ah ; 30 e4 ; 0xf7f32 + mov word [bp-024h], ax ; 89 46 dc ; 0xf7f34 + jmp near 08028h ; e9 ee 00 ; 0xf7f37 scsi.c:508 + mov ax, word [bp-01eh] ; 8b 46 e2 ; 0xf7f3a scsi.c:509 + mov bx, word [bp-020h] ; 8b 5e e0 ; 0xf7f3d + mov cx, word [bp-018h] ; 8b 4e e8 ; 0xf7f40 + mov dx, word [bp-02ah] ; 8b 56 d6 ; 0xf7f43 + mov si, strict word 0000ch ; be 0c 00 ; 0xf7f46 + call 09b90h ; e8 44 1c ; 0xf7f49 + mov word [bp-026h], ax ; 89 46 da ; 0xf7f4c + mov word [bp-010h], bx ; 89 5e f0 ; 0xf7f4f + mov word [bp-014h], cx ; 89 4e ec ; 0xf7f52 + mov word [bp-028h], dx ; 89 56 d8 ; 0xf7f55 + mov ax, word [bp-01eh] ; 8b 46 e2 ; 0xf7f58 scsi.c:513 + test ax, ax ; 85 c0 ; 0xf7f5b + jnbe short 07f74h ; 77 15 ; 0xf7f5d + je short 07f64h ; 74 03 ; 0xf7f5f + jmp near 07fe9h ; e9 85 00 ; 0xf7f61 + cmp word [bp-020h], strict byte 00000h ; 83 7e e0 00 ; 0xf7f64 + jnbe short 07f74h ; 77 0a ; 0xf7f68 + jne short 07f61h ; 75 f5 ; 0xf7f6a + cmp word [bp-018h], strict byte 00040h ; 83 7e e8 40 ; 0xf7f6c + jnbe short 07f74h ; 77 02 ; 0xf7f70 + jne short 07fe9h ; 75 75 ; 0xf7f72 + mov word [bp-022h], 000ffh ; c7 46 de ff 00 ; 0xf7f74 scsi.c:515 + mov word [bp-024h], strict word 0003fh ; c7 46 dc 3f 00 ; 0xf7f79 scsi.c:516 + mov bx, word [bp-020h] ; 8b 5e e0 ; 0xf7f7e scsi.c:518 + mov cx, word [bp-018h] ; 8b 4e e8 ; 0xf7f81 + mov dx, word [bp-02ah] ; 8b 56 d6 ; 0xf7f84 + mov si, strict word 00006h ; be 06 00 ; 0xf7f87 + call 09b90h ; e8 03 1c ; 0xf7f8a + mov si, word [bp-028h] ; 8b 76 d8 ; 0xf7f8d + add si, dx ; 01 d6 ; 0xf7f90 + mov word [bp-036h], si ; 89 76 ca ; 0xf7f92 + mov dx, word [bp-014h] ; 8b 56 ec ; 0xf7f95 + adc dx, cx ; 11 ca ; 0xf7f98 + mov word [bp-034h], dx ; 89 56 cc ; 0xf7f9a + mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf7f9d + adc dx, bx ; 11 da ; 0xf7fa0 + mov word [bp-01ch], dx ; 89 56 e4 ; 0xf7fa2 + mov dx, word [bp-026h] ; 8b 56 da ; 0xf7fa5 + adc dx, ax ; 11 c2 ; 0xf7fa8 + mov word [bp-02eh], dx ; 89 56 d2 ; 0xf7faa + mov ax, dx ; 89 d0 ; 0xf7fad scsi.c:519 + mov bx, word [bp-01ch] ; 8b 5e e4 ; 0xf7faf + mov cx, word [bp-034h] ; 8b 4e cc ; 0xf7fb2 + mov dx, si ; 89 f2 ; 0xf7fb5 + mov si, strict word 00008h ; be 08 00 ; 0xf7fb7 + call 09b90h ; e8 d3 1b ; 0xf7fba + mov word [bp-030h], bx ; 89 5e d0 ; 0xf7fbd + mov word [bp-02ch], cx ; 89 4e d4 ; 0xf7fc0 + mov word [bp-032h], dx ; 89 56 ce ; 0xf7fc3 + mov ax, word [bp-02eh] ; 8b 46 d2 ; 0xf7fc6 + mov bx, word [bp-01ch] ; 8b 5e e4 ; 0xf7fc9 + mov cx, word [bp-034h] ; 8b 4e cc ; 0xf7fcc + mov dx, word [bp-036h] ; 8b 56 ca ; 0xf7fcf + mov si, strict word 00010h ; be 10 00 ; 0xf7fd2 + call 09b90h ; e8 b8 1b ; 0xf7fd5 + mov si, word [bp-032h] ; 8b 76 ce ; 0xf7fd8 + add si, dx ; 01 d6 ; 0xf7fdb + mov dx, word [bp-02ch] ; 8b 56 d4 ; 0xf7fdd + adc dx, cx ; 11 ca ; 0xf7fe0 + mov ax, word [bp-030h] ; 8b 46 d0 ; 0xf7fe2 + adc ax, bx ; 11 d8 ; 0xf7fe5 + jmp short 08028h ; eb 3f ; 0xf7fe7 scsi.c:521 + test ax, ax ; 85 c0 ; 0xf7fe9 + jnbe short 07fffh ; 77 12 ; 0xf7feb + jne short 0800bh ; 75 1c ; 0xf7fed + cmp word [bp-020h], strict byte 00000h ; 83 7e e0 00 ; 0xf7fef + jnbe short 07fffh ; 77 0a ; 0xf7ff3 + jne short 0800bh ; 75 14 ; 0xf7ff5 + cmp word [bp-018h], strict byte 00020h ; 83 7e e8 20 ; 0xf7ff7 + jnbe short 07fffh ; 77 02 ; 0xf7ffb + jne short 0800bh ; 75 0c ; 0xf7ffd + mov word [bp-022h], 00080h ; c7 46 de 80 00 ; 0xf7fff scsi.c:523 + mov word [bp-024h], strict word 00020h ; c7 46 dc 20 00 ; 0xf8004 scsi.c:524 + jmp short 08024h ; eb 19 ; 0xf8009 scsi.c:527 + mov word [bp-022h], strict word 00040h ; c7 46 de 40 00 ; 0xf800b scsi.c:529 + mov word [bp-024h], strict word 00020h ; c7 46 dc 20 00 ; 0xf8010 scsi.c:530 + mov bx, word [bp-020h] ; 8b 5e e0 ; 0xf8015 scsi.c:531 + mov cx, word [bp-018h] ; 8b 4e e8 ; 0xf8018 + mov dx, word [bp-02ah] ; 8b 56 d6 ; 0xf801b + mov si, strict word 0000bh ; be 0b 00 ; 0xf801e + call 09b90h ; e8 6c 1b ; 0xf8021 + mov si, dx ; 89 d6 ; 0xf8024 + mov dx, cx ; 89 ca ; 0xf8026 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf8028 scsi.c:536 + add AL, strict byte 008h ; 04 08 ; 0xf802b + mov byte [bp-00eh], al ; 88 46 f2 ; 0xf802d + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf8030 scsi.c:538 + xor ah, ah ; 30 e4 ; 0xf8033 + sal ax, 002h ; c1 e0 02 ; 0xf8035 + mov es, [bp-01ah] ; 8e 46 e6 ; 0xf8038 + mov bx, di ; 89 fb ; 0xf803b + add bx, ax ; 01 c3 ; 0xf803d + mov ax, word [bp-00248h] ; 8b 86 b8 fd ; 0xf803f + mov word [es:bx+0021ch], ax ; 26 89 87 1c 02 ; 0xf8043 + mov al, byte [bp-012h] ; 8a 46 ee ; 0xf8048 scsi.c:539 + mov byte [es:bx+0021eh], al ; 26 88 87 1e 02 ; 0xf804b + mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf8050 scsi.c:540 + xor ah, ah ; 30 e4 ; 0xf8053 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf8055 + mov bx, di ; 89 fb ; 0xf8058 + add bx, ax ; 01 c3 ; 0xf805a + mov word [es:bx+022h], 0ff04h ; 26 c7 47 22 04 ff ; 0xf805c + mov word [es:bx+024h], strict word 00000h ; 26 c7 47 24 00 00 ; 0xf8062 scsi.c:542 + mov ax, word [bp-016h] ; 8b 46 ea ; 0xf8068 scsi.c:544 + mov word [es:bx+028h], ax ; 26 89 47 28 ; 0xf806b + mov byte [es:bx+027h], 001h ; 26 c6 47 27 01 ; 0xf806f scsi.c:545 + mov ax, word [bp-022h] ; 8b 46 de ; 0xf8074 scsi.c:548 + mov word [es:bx+02ah], ax ; 26 89 47 2a ; 0xf8077 + mov ax, word [bp-024h] ; 8b 46 dc ; 0xf807b scsi.c:549 + mov word [es:bx+02eh], ax ; 26 89 47 2e ; 0xf807e + mov ax, word [bp-022h] ; 8b 46 de ; 0xf8082 scsi.c:550 + mov word [es:bx+030h], ax ; 26 89 47 30 ; 0xf8085 + mov ax, word [bp-024h] ; 8b 46 dc ; 0xf8089 scsi.c:551 + mov word [es:bx+034h], ax ; 26 89 47 34 ; 0xf808c + test dx, dx ; 85 d2 ; 0xf8090 scsi.c:553 + jne short 0809ah ; 75 06 ; 0xf8092 + cmp si, 00400h ; 81 fe 00 04 ; 0xf8094 + jbe short 080a8h ; 76 0e ; 0xf8098 + mov word [es:bx+02ch], 00400h ; 26 c7 47 2c 00 04 ; 0xf809a scsi.c:554 + mov word [es:bx+032h], 00400h ; 26 c7 47 32 00 04 ; 0xf80a0 scsi.c:555 + jmp short 080b0h ; eb 08 ; 0xf80a6 scsi.c:556 + mov word [es:bx+02ch], si ; 26 89 77 2c ; 0xf80a8 scsi.c:557 + mov word [es:bx+032h], si ; 26 89 77 32 ; 0xf80ac scsi.c:558 + mov bx, 00da0h ; bb a0 0d ; 0xf80b0 scsi.c:562 + mov cx, ds ; 8c d9 ; 0xf80b3 + mov ax, strict word 00004h ; b8 04 00 ; 0xf80b5 + call 018bch ; e8 01 98 ; 0xf80b8 + push word [bp-01eh] ; ff 76 e2 ; 0xf80bb + push word [bp-020h] ; ff 76 e0 ; 0xf80be + push word [bp-018h] ; ff 76 e8 ; 0xf80c1 + push word [bp-02ah] ; ff 76 d6 ; 0xf80c4 + push word [bp-024h] ; ff 76 dc ; 0xf80c7 + push word [bp-022h] ; ff 76 de ; 0xf80ca + push dx ; 52 ; 0xf80cd + push si ; 56 ; 0xf80ce + push word [bp-012h] ; ff 76 ee ; 0xf80cf + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf80d2 + xor ah, ah ; 30 e4 ; 0xf80d5 + push ax ; 50 ; 0xf80d7 + push 00c18h ; 68 18 0c ; 0xf80d8 + push strict byte 00004h ; 6a 04 ; 0xf80db + call 018ffh ; e8 1f 98 ; 0xf80dd + add sp, strict byte 00018h ; 83 c4 18 ; 0xf80e0 + mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf80e3 scsi.c:564 + xor ah, ah ; 30 e4 ; 0xf80e6 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf80e8 + mov es, [bp-01ah] ; 8e 46 e6 ; 0xf80eb + mov bx, di ; 89 fb ; 0xf80ee + add bx, ax ; 01 c3 ; 0xf80f0 + mov ax, word [bp-01eh] ; 8b 46 e2 ; 0xf80f2 + mov word [es:bx+03ch], ax ; 26 89 47 3c ; 0xf80f5 + mov ax, word [bp-020h] ; 8b 46 e0 ; 0xf80f9 + mov word [es:bx+03ah], ax ; 26 89 47 3a ; 0xf80fc + mov ax, word [bp-018h] ; 8b 46 e8 ; 0xf8100 + mov word [es:bx+038h], ax ; 26 89 47 38 ; 0xf8103 + mov ax, word [bp-02ah] ; 8b 46 d6 ; 0xf8107 + mov word [es:bx+036h], ax ; 26 89 47 36 ; 0xf810a + mov al, byte [es:di+001e2h] ; 26 8a 85 e2 01 ; 0xf810e scsi.c:567 + mov ah, byte [bp-00ch] ; 8a 66 f4 ; 0xf8113 scsi.c:568 + add ah, 008h ; 80 c4 08 ; 0xf8116 + mov bl, al ; 88 c3 ; 0xf8119 + xor bh, bh ; 30 ff ; 0xf811b + add bx, di ; 01 fb ; 0xf811d + mov byte [es:bx+001e3h], ah ; 26 88 a7 e3 01 ; 0xf811f + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf8124 scsi.c:569 + mov byte [es:di+001e2h], al ; 26 88 85 e2 01 ; 0xf8126 scsi.c:570 + mov bx, strict word 00075h ; bb 75 00 ; 0xf812b scsi.c:38 + mov ax, strict word 00040h ; b8 40 00 ; 0xf812e + mov es, ax ; 8e c0 ; 0xf8131 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf8133 + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf8136 scsi.c:574 + mov byte [es:bx], al ; 26 88 07 ; 0xf8138 scsi.c:43 + inc byte [bp-00ch] ; fe 46 f4 ; 0xf813b scsi.c:577 + jmp near 081d7h ; e9 96 00 ; 0xf813e scsi.c:579 + mov bx, 00da0h ; bb a0 0d ; 0xf8141 scsi.c:591 + mov cx, ds ; 8c d9 ; 0xf8144 + mov ax, strict word 00004h ; b8 04 00 ; 0xf8146 + call 018bch ; e8 70 97 ; 0xf8149 + push word [bp-012h] ; ff 76 ee ; 0xf814c + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf814f + xor ah, ah ; 30 e4 ; 0xf8152 + push ax ; 50 ; 0xf8154 + push 00c46h ; 68 46 0c ; 0xf8155 + push strict byte 00004h ; 6a 04 ; 0xf8158 + call 018ffh ; e8 a2 97 ; 0xf815a + add sp, strict byte 00008h ; 83 c4 08 ; 0xf815d + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf8160 scsi.c:594 + add AL, strict byte 008h ; 04 08 ; 0xf8163 + mov byte [bp-00eh], al ; 88 46 f2 ; 0xf8165 + test byte [bp-00245h], 080h ; f6 86 bb fd 80 ; 0xf8168 scsi.c:596 + je short 08174h ; 74 05 ; 0xf816d + mov dx, strict word 00001h ; ba 01 00 ; 0xf816f + jmp short 08176h ; eb 02 ; 0xf8172 + xor dx, dx ; 31 d2 ; 0xf8174 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf8176 scsi.c:598 + xor ah, ah ; 30 e4 ; 0xf8179 + sal ax, 002h ; c1 e0 02 ; 0xf817b + mov es, [bp-01ah] ; 8e 46 e6 ; 0xf817e + mov bx, di ; 89 fb ; 0xf8181 + add bx, ax ; 01 c3 ; 0xf8183 + mov ax, word [bp-00248h] ; 8b 86 b8 fd ; 0xf8185 + mov word [es:bx+0021ch], ax ; 26 89 87 1c 02 ; 0xf8189 + mov al, byte [bp-012h] ; 8a 46 ee ; 0xf818e scsi.c:599 + mov byte [es:bx+0021eh], al ; 26 88 87 1e 02 ; 0xf8191 + mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf8196 scsi.c:600 + xor ah, ah ; 30 e4 ; 0xf8199 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf819b + mov bx, di ; 89 fb ; 0xf819e + add bx, ax ; 01 c3 ; 0xf81a0 + mov word [es:bx+022h], 00504h ; 26 c7 47 22 04 05 ; 0xf81a2 + mov byte [es:bx+024h], dl ; 26 88 57 24 ; 0xf81a8 scsi.c:602 + mov word [es:bx+028h], 00800h ; 26 c7 47 28 00 08 ; 0xf81ac scsi.c:603 + mov byte [es:bx+027h], 000h ; 26 c6 47 27 00 ; 0xf81b2 scsi.c:604 + mov al, byte [es:di+001f3h] ; 26 8a 85 f3 01 ; 0xf81b7 scsi.c:607 + mov ah, byte [bp-00ch] ; 8a 66 f4 ; 0xf81bc scsi.c:608 + add ah, 008h ; 80 c4 08 ; 0xf81bf + mov bl, al ; 88 c3 ; 0xf81c2 + xor bh, bh ; 30 ff ; 0xf81c4 + add bx, di ; 01 fb ; 0xf81c6 + mov byte [es:bx+001f4h], ah ; 26 88 a7 f4 01 ; 0xf81c8 + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf81cd scsi.c:609 + mov byte [es:di+001f3h], al ; 26 88 85 f3 01 ; 0xf81cf scsi.c:610 + inc byte [bp-00ch] ; fe 46 f4 ; 0xf81d4 scsi.c:612 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf81d7 scsi.c:617 + mov es, [bp-01ah] ; 8e 46 e6 ; 0xf81da + mov byte [es:di+0022ch], al ; 26 88 85 2c 02 ; 0xf81dd + inc word [bp-012h] ; ff 46 ee ; 0xf81e2 scsi.c:618 + cmp word [bp-012h], strict byte 00010h ; 83 7e ee 10 ; 0xf81e5 + jl short 081eeh ; 7c 03 ; 0xf81e9 + jmp near 08266h ; e9 78 00 ; 0xf81eb + mov byte [bp-046h], 012h ; c6 46 ba 12 ; 0xf81ee + xor al, al ; 30 c0 ; 0xf81f2 + mov byte [bp-045h], al ; 88 46 bb ; 0xf81f4 + mov byte [bp-044h], al ; 88 46 bc ; 0xf81f7 + mov byte [bp-043h], al ; 88 46 bd ; 0xf81fa + mov byte [bp-042h], 005h ; c6 46 be 05 ; 0xf81fd + mov byte [bp-041h], al ; 88 46 bf ; 0xf8201 + push strict byte 00000h ; 6a 00 ; 0xf8204 + push strict byte 00005h ; 6a 05 ; 0xf8206 + lea dx, [bp-00246h] ; 8d 96 ba fd ; 0xf8208 + push SS ; 16 ; 0xf820c + push dx ; 52 ; 0xf820d + push strict byte 00006h ; 6a 06 ; 0xf820e + mov dl, byte [bp-012h] ; 8a 56 ee ; 0xf8210 + xor dh, dh ; 30 f6 ; 0xf8213 + mov cx, ss ; 8c d1 ; 0xf8215 + lea bx, [bp-046h] ; 8d 5e ba ; 0xf8217 + mov ax, word [bp-00248h] ; 8b 86 b8 fd ; 0xf821a + call 078e9h ; e8 c8 f6 ; 0xf821e + test al, al ; 84 c0 ; 0xf8221 + je short 08233h ; 74 0e ; 0xf8223 + push 00b92h ; 68 92 0b ; 0xf8225 + push 00bb2h ; 68 b2 0b ; 0xf8228 + push strict byte 00007h ; 6a 07 ; 0xf822b + call 018ffh ; e8 cf 96 ; 0xf822d + add sp, strict byte 00006h ; 83 c4 06 ; 0xf8230 + mov es, [bp-01ah] ; 8e 46 e6 ; 0xf8233 + mov al, byte [es:di+0022ch] ; 26 8a 85 2c 02 ; 0xf8236 + mov byte [bp-00ch], al ; 88 46 f4 ; 0xf823b + test byte [bp-00246h], 0e0h ; f6 86 ba fd e0 ; 0xf823e + jne short 0824fh ; 75 0a ; 0xf8243 + test byte [bp-00246h], 01fh ; f6 86 ba fd 1f ; 0xf8245 + jne short 0824fh ; 75 03 ; 0xf824a + jmp near 07defh ; e9 a0 fb ; 0xf824c + test byte [bp-00246h], 0e0h ; f6 86 ba fd e0 ; 0xf824f + jne short 081d7h ; 75 81 ; 0xf8254 + mov al, byte [bp-00246h] ; 8a 86 ba fd ; 0xf8256 + and AL, strict byte 01fh ; 24 1f ; 0xf825a + cmp AL, strict byte 005h ; 3c 05 ; 0xf825c + jne short 08263h ; 75 03 ; 0xf825e + jmp near 08141h ; e9 de fe ; 0xf8260 + jmp near 081d7h ; e9 71 ff ; 0xf8263 + lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf8266 scsi.c:619 + pop di ; 5f ; 0xf8269 + pop si ; 5e ; 0xf826a + pop dx ; 5a ; 0xf826b + pop cx ; 59 ; 0xf826c + pop bx ; 5b ; 0xf826d + pop bp ; 5d ; 0xf826e + retn ; c3 ; 0xf826f + ; disGetNextSymbol 0xf8270 LB 0x1c58 -> off=0x0 cb=000000000000002a uValue=00000000000f6c70 'scsi_pci_init' +scsi_pci_init: ; 0xf8270 LB 0x2a + push bp ; 55 ; 0xf8270 scsi.c:621 + mov bp, sp ; 89 e5 ; 0xf8271 + push bx ; 53 ; 0xf8273 + push cx ; 51 ; 0xf8274 + call 09966h ; e8 ee 16 ; 0xf8275 scsi.c:625 + mov bx, ax ; 89 c3 ; 0xf8278 + cmp ax, strict word 0ffffh ; 3d ff ff ; 0xf827a scsi.c:626 + je short 08293h ; 74 14 ; 0xf827d + mov dl, bl ; 88 da ; 0xf827f scsi.c:633 + xor dh, dh ; 30 f6 ; 0xf8281 + shr bx, 008h ; c1 eb 08 ; 0xf8283 + mov al, bl ; 88 d8 ; 0xf8286 + xor ah, ah ; 30 e4 ; 0xf8288 + mov cx, strict word 00007h ; b9 07 00 ; 0xf828a + mov bx, strict word 00004h ; bb 04 00 ; 0xf828d + call 09a2fh ; e8 9c 17 ; 0xf8290 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf8293 scsi.c:634 + pop cx ; 59 ; 0xf8296 + pop bx ; 5b ; 0xf8297 + pop bp ; 5d ; 0xf8298 + retn ; c3 ; 0xf8299 + ; disGetNextSymbol 0xf829a LB 0x1c2e -> off=0x0 cb=0000000000000081 uValue=00000000000f6c9a 'scsi_init' +scsi_init: ; 0xf829a LB 0x81 + push bp ; 55 ; 0xf829a scsi.c:639 + mov bp, sp ; 89 e5 ; 0xf829b + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf829d scsi.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf82a0 + mov es, ax ; 8e c0 ; 0xf82a3 + mov es, [es:bx] ; 26 8e 07 ; 0xf82a5 + mov bx, 00122h ; bb 22 01 ; 0xf82a8 scsi.c:49 + mov byte [es:bx+0022ch], 000h ; 26 c6 87 2c 02 00 ; 0xf82ab scsi.c:646 + mov AL, strict byte 055h ; b0 55 ; 0xf82b1 scsi.c:651 + mov dx, 00432h ; ba 32 04 ; 0xf82b3 + out DX, AL ; ee ; 0xf82b6 + in AL, DX ; ec ; 0xf82b7 scsi.c:652 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf82b8 + cmp AL, strict byte 055h ; 3c 55 ; 0xf82ba scsi.c:654 + jne short 082d3h ; 75 15 ; 0xf82bc + xor al, al ; 30 c0 ; 0xf82be scsi.c:658 + mov dx, 00433h ; ba 33 04 ; 0xf82c0 + out DX, AL ; ee ; 0xf82c3 + mov ax, 00430h ; b8 30 04 ; 0xf82c4 scsi.c:659 + call 07dc9h ; e8 ff fa ; 0xf82c7 + mov dx, 01040h ; ba 40 10 ; 0xf82ca scsi.c:660 + mov ax, 0104bh ; b8 4b 10 ; 0xf82cd + call 08270h ; e8 9d ff ; 0xf82d0 + mov AL, strict byte 055h ; b0 55 ; 0xf82d3 scsi.c:668 + mov dx, 00436h ; ba 36 04 ; 0xf82d5 + out DX, AL ; ee ; 0xf82d8 + in AL, DX ; ec ; 0xf82d9 scsi.c:669 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf82da + cmp AL, strict byte 055h ; 3c 55 ; 0xf82dc scsi.c:671 + jne short 082f5h ; 75 15 ; 0xf82de + xor al, al ; 30 c0 ; 0xf82e0 scsi.c:675 + mov dx, 00437h ; ba 37 04 ; 0xf82e2 + out DX, AL ; ee ; 0xf82e5 + mov ax, 00434h ; b8 34 04 ; 0xf82e6 scsi.c:676 + call 07dc9h ; e8 dd fa ; 0xf82e9 + mov dx, strict word 00030h ; ba 30 00 ; 0xf82ec scsi.c:677 + mov ax, 01000h ; b8 00 10 ; 0xf82ef + call 08270h ; e8 7b ff ; 0xf82f2 + mov AL, strict byte 055h ; b0 55 ; 0xf82f5 scsi.c:685 + mov dx, 0043ah ; ba 3a 04 ; 0xf82f7 + out DX, AL ; ee ; 0xf82fa + in AL, DX ; ec ; 0xf82fb scsi.c:686 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf82fc + cmp AL, strict byte 055h ; 3c 55 ; 0xf82fe scsi.c:688 + jne short 08317h ; 75 15 ; 0xf8300 + xor al, al ; 30 c0 ; 0xf8302 scsi.c:692 + mov dx, 0043bh ; ba 3b 04 ; 0xf8304 + out DX, AL ; ee ; 0xf8307 + mov ax, 00438h ; b8 38 04 ; 0xf8308 scsi.c:693 + call 07dc9h ; e8 bb fa ; 0xf830b + mov dx, strict word 00054h ; ba 54 00 ; 0xf830e scsi.c:694 + mov ax, 01000h ; b8 00 10 ; 0xf8311 + call 08270h ; e8 59 ff ; 0xf8314 + mov sp, bp ; 89 ec ; 0xf8317 scsi.c:700 + pop bp ; 5d ; 0xf8319 + retn ; c3 ; 0xf831a + ; disGetNextSymbol 0xf831b LB 0x1bad -> off=0x0 cb=000000000000001c uValue=00000000000f6d1b 'ahci_ctrl_extract_bits' +ahci_ctrl_extract_bits: ; 0xf831b LB 0x1c + push si ; 56 ; 0xf831b ahci.c:279 + push bp ; 55 ; 0xf831c + mov bp, sp ; 89 e5 ; 0xf831d + mov si, ax ; 89 c6 ; 0xf831f + and ax, bx ; 21 d8 ; 0xf8321 ahci.c:281 + and dx, cx ; 21 ca ; 0xf8323 + mov cl, byte [bp+006h] ; 8a 4e 06 ; 0xf8325 + xor ch, ch ; 30 ed ; 0xf8328 + jcxz 08332h ; e3 06 ; 0xf832a + shr dx, 1 ; d1 ea ; 0xf832c + rcr ax, 1 ; d1 d8 ; 0xf832e + loop 0832ch ; e2 fa ; 0xf8330 + pop bp ; 5d ; 0xf8332 ahci.c:282 + pop si ; 5e ; 0xf8333 + retn 00002h ; c2 02 00 ; 0xf8334 + ; disGetNextSymbol 0xf8337 LB 0x1b91 -> off=0x0 cb=000000000000001e uValue=00000000000f6d37 'ahci_addr_to_phys' +ahci_addr_to_phys: ; 0xf8337 LB 0x1e + push bx ; 53 ; 0xf8337 ahci.c:287 + push cx ; 51 ; 0xf8338 + push bp ; 55 ; 0xf8339 + mov bp, sp ; 89 e5 ; 0xf833a + mov bx, ax ; 89 c3 ; 0xf833c + mov ax, dx ; 89 d0 ; 0xf833e + xor dx, dx ; 31 d2 ; 0xf8340 ahci.c:289 + mov cx, strict word 00004h ; b9 04 00 ; 0xf8342 + sal ax, 1 ; d1 e0 ; 0xf8345 + rcl dx, 1 ; d1 d2 ; 0xf8347 + loop 08345h ; e2 fa ; 0xf8349 + xor cx, cx ; 31 c9 ; 0xf834b + add ax, bx ; 01 d8 ; 0xf834d + adc dx, cx ; 11 ca ; 0xf834f + pop bp ; 5d ; 0xf8351 ahci.c:290 + pop cx ; 59 ; 0xf8352 + pop bx ; 5b ; 0xf8353 + retn ; c3 ; 0xf8354 + ; disGetNextSymbol 0xf8355 LB 0x1b73 -> off=0x0 cb=0000000000000156 uValue=00000000000f6d55 'ahci_port_cmd_sync' +ahci_port_cmd_sync: ; 0xf8355 LB 0x156 + push bp ; 55 ; 0xf8355 ahci.c:295 + mov bp, sp ; 89 e5 ; 0xf8356 + push cx ; 51 ; 0xf8358 + push si ; 56 ; 0xf8359 + push di ; 57 ; 0xf835a + push ax ; 50 ; 0xf835b + mov si, ax ; 89 c6 ; 0xf835c + mov cx, dx ; 89 d1 ; 0xf835e + mov dl, bl ; 88 da ; 0xf8360 + mov es, cx ; 8e c1 ; 0xf8362 ahci.c:300 + mov al, byte [es:si+00262h] ; 26 8a 84 62 02 ; 0xf8364 + mov byte [bp-008h], al ; 88 46 f8 ; 0xf8369 + mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf836c ahci.c:301 + cmp AL, strict byte 0ffh ; 3c ff ; 0xf8371 ahci.c:303 + jne short 08378h ; 75 03 ; 0xf8373 + jmp near 084a3h ; e9 2b 01 ; 0xf8375 + mov al, byte [es:si+00263h] ; 26 8a 84 63 02 ; 0xf8378 ahci.c:306 + xor ah, ah ; 30 e4 ; 0xf837d + xor di, di ; 31 ff ; 0xf837f + or di, 00080h ; 81 cf 80 00 ; 0xf8381 + xor dh, dh ; 30 f6 ; 0xf8385 + or di, dx ; 09 d7 ; 0xf8387 + mov word [es:si], di ; 26 89 3c ; 0xf8389 + mov word [es:si+002h], ax ; 26 89 44 02 ; 0xf838c + mov word [es:si+004h], strict word 00000h ; 26 c7 44 04 00 00 ; 0xf8390 ahci.c:307 + mov word [es:si+006h], strict word 00000h ; 26 c7 44 06 00 00 ; 0xf8396 + lea ax, [si+00080h] ; 8d 84 80 00 ; 0xf839c ahci.c:308 + mov dx, cx ; 89 ca ; 0xf83a0 + call 08337h ; e8 92 ff ; 0xf83a2 + mov es, cx ; 8e c1 ; 0xf83a5 + mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf83a7 + mov word [es:si+00ah], dx ; 26 89 54 0a ; 0xf83ab + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf83af ahci.c:311 + xor ah, ah ; 30 e4 ; 0xf83b2 + mov di, ax ; 89 c7 ; 0xf83b4 + sal di, 007h ; c1 e7 07 ; 0xf83b6 + lea ax, [di+00118h] ; 8d 85 18 01 ; 0xf83b9 + xor cx, cx ; 31 c9 ; 0xf83bd ahci.c:252 + mov dx, bx ; 89 da ; 0xf83bf + xchg cx, ax ; 91 ; 0xf83c1 + sal eax, 010h ; 66 c1 e0 10 ; 0xf83c2 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf83c6 + out DX, eax ; 66 ef ; 0xf83c8 + lea si, [bx+004h] ; 8d 77 04 ; 0xf83ca ahci.c:253 + mov dx, si ; 89 f2 ; 0xf83cd + in eax, DX ; 66 ed ; 0xf83cf + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf83d1 + shr eax, 010h ; 66 c1 e8 10 ; 0xf83d3 + xchg dx, ax ; 92 ; 0xf83d7 + or AL, strict byte 011h ; 0c 11 ; 0xf83d8 + mov cx, dx ; 89 d1 ; 0xf83da + mov dx, si ; 89 f2 ; 0xf83dc + xchg cx, ax ; 91 ; 0xf83de + sal eax, 010h ; 66 c1 e0 10 ; 0xf83df + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf83e3 + out DX, eax ; 66 ef ; 0xf83e5 + lea ax, [di+00138h] ; 8d 85 38 01 ; 0xf83e7 ahci.c:315 + cwd ; 99 ; 0xf83eb + mov cx, dx ; 89 d1 ; 0xf83ec + mov dx, bx ; 89 da ; 0xf83ee + xchg cx, ax ; 91 ; 0xf83f0 + sal eax, 010h ; 66 c1 e0 10 ; 0xf83f1 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf83f5 + out DX, eax ; 66 ef ; 0xf83f7 + mov ax, strict word 00001h ; b8 01 00 ; 0xf83f9 + xor cx, cx ; 31 c9 ; 0xf83fc + mov dx, si ; 89 f2 ; 0xf83fe + xchg cx, ax ; 91 ; 0xf8400 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8401 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8405 + out DX, eax ; 66 ef ; 0xf8407 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf8409 ahci.c:319 + xor ah, ah ; 30 e4 ; 0xf840c + sal ax, 007h ; c1 e0 07 ; 0xf840e + add ax, 00110h ; 05 10 01 ; 0xf8411 + xor cx, cx ; 31 c9 ; 0xf8414 ahci.c:271 + mov dx, bx ; 89 da ; 0xf8416 + xchg cx, ax ; 91 ; 0xf8418 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8419 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf841d + out DX, eax ; 66 ef ; 0xf841f + lea dx, [bx+004h] ; 8d 57 04 ; 0xf8421 ahci.c:272 + in eax, DX ; 66 ed ; 0xf8424 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf8426 + shr eax, 010h ; 66 c1 e8 10 ; 0xf8428 + xchg dx, ax ; 92 ; 0xf842c + test dh, 040h ; f6 c6 40 ; 0xf842d + jne short 08436h ; 75 04 ; 0xf8430 + test AL, strict byte 001h ; a8 01 ; 0xf8432 + je short 0843ah ; 74 04 ; 0xf8434 + mov AL, strict byte 001h ; b0 01 ; 0xf8436 + jmp short 0843ch ; eb 02 ; 0xf8438 + xor al, al ; 30 c0 ; 0xf843a + test al, al ; 84 c0 ; 0xf843c ahci.c:273 + je short 08409h ; 74 c9 ; 0xf843e + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf8440 ahci.c:325 + xor ah, ah ; 30 e4 ; 0xf8443 + mov di, ax ; 89 c7 ; 0xf8445 + sal di, 007h ; c1 e7 07 ; 0xf8447 + lea ax, [di+00110h] ; 8d 85 10 01 ; 0xf844a + xor cx, cx ; 31 c9 ; 0xf844e ahci.c:252 + mov dx, bx ; 89 da ; 0xf8450 + xchg cx, ax ; 91 ; 0xf8452 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8453 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8457 + out DX, eax ; 66 ef ; 0xf8459 + lea si, [bx+004h] ; 8d 77 04 ; 0xf845b ahci.c:253 + mov dx, si ; 89 f2 ; 0xf845e + in eax, DX ; 66 ed ; 0xf8460 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf8462 + shr eax, 010h ; 66 c1 e8 10 ; 0xf8464 + xchg dx, ax ; 92 ; 0xf8468 + or AL, strict byte 001h ; 0c 01 ; 0xf8469 + mov cx, dx ; 89 d1 ; 0xf846b + mov dx, si ; 89 f2 ; 0xf846d + xchg cx, ax ; 91 ; 0xf846f + sal eax, 010h ; 66 c1 e0 10 ; 0xf8470 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8474 + out DX, eax ; 66 ef ; 0xf8476 + lea ax, [di+00118h] ; 8d 85 18 01 ; 0xf8478 ahci.c:329 + xor cx, cx ; 31 c9 ; 0xf847c ahci.c:261 + mov dx, bx ; 89 da ; 0xf847e + xchg cx, ax ; 91 ; 0xf8480 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8481 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8485 + out DX, eax ; 66 ef ; 0xf8487 + mov dx, si ; 89 f2 ; 0xf8489 ahci.c:262 + in eax, DX ; 66 ed ; 0xf848b + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf848d + shr eax, 010h ; 66 c1 e8 10 ; 0xf848f + xchg dx, ax ; 92 ; 0xf8493 + and AL, strict byte 0feh ; 24 fe ; 0xf8494 + mov cx, dx ; 89 d1 ; 0xf8496 + mov dx, si ; 89 f2 ; 0xf8498 + xchg cx, ax ; 91 ; 0xf849a + sal eax, 010h ; 66 c1 e0 10 ; 0xf849b + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf849f + out DX, eax ; 66 ef ; 0xf84a1 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf84a3 ahci.c:335 + pop di ; 5f ; 0xf84a6 + pop si ; 5e ; 0xf84a7 + pop cx ; 59 ; 0xf84a8 + pop bp ; 5d ; 0xf84a9 + retn ; c3 ; 0xf84aa + ; disGetNextSymbol 0xf84ab LB 0x1a1d -> off=0x0 cb=0000000000000267 uValue=00000000000f6eab 'ahci_cmd_data' +ahci_cmd_data: ; 0xf84ab LB 0x267 + push bp ; 55 ; 0xf84ab ahci.c:340 + mov bp, sp ; 89 e5 ; 0xf84ac + push cx ; 51 ; 0xf84ae + push si ; 56 ; 0xf84af + push di ; 57 ; 0xf84b0 + sub sp, strict byte 0000ch ; 83 ec 0c ; 0xf84b1 + push ax ; 50 ; 0xf84b4 + push dx ; 52 ; 0xf84b5 + mov byte [bp-008h], bl ; 88 5e f8 ; 0xf84b6 + xor di, di ; 31 ff ; 0xf84b9 ahci.c:342 + mov es, dx ; 8e c2 ; 0xf84bb + mov bx, ax ; 89 c3 ; 0xf84bd + mov ax, word [es:bx+00232h] ; 26 8b 87 32 02 ; 0xf84bf + mov word [bp-00ah], ax ; 89 46 f6 ; 0xf84c4 + mov word [bp-00eh], di ; 89 7e f2 ; 0xf84c7 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf84ca + mov ax, word [es:bx+00eh] ; 26 8b 47 0e ; 0xf84cd ahci.c:343 + mov word [bp-012h], ax ; 89 46 ee ; 0xf84d1 + mov ax, word [es:bx+010h] ; 26 8b 47 10 ; 0xf84d4 ahci.c:344 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf84d8 + mov cx, strict word 00040h ; b9 40 00 ; 0xf84db ahci.c:347 + xor bx, bx ; 31 db ; 0xf84de + mov ax, 00080h ; b8 80 00 ; 0xf84e0 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf84e3 + call 09bb0h ; e8 c7 16 ; 0xf84e6 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf84e9 ahci.c:350 + mov word [es:di+00080h], 08027h ; 26 c7 85 80 00 27 80 ; 0xf84ec + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf84f3 ahci.c:352 + mov byte [es:di+00082h], al ; 26 88 85 82 00 ; 0xf84f6 + mov byte [es:di+00083h], 000h ; 26 c6 85 83 00 00 ; 0xf84fb ahci.c:353 + mov es, [bp-016h] ; 8e 46 ea ; 0xf8501 ahci.c:355 + mov bx, word [bp-014h] ; 8b 5e ec ; 0xf8504 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf8507 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf850a + mov byte [es:di+00084h], al ; 26 88 85 84 00 ; 0xf850d + mov es, [bp-016h] ; 8e 46 ea ; 0xf8512 ahci.c:356 + mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf8515 + mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf8519 + mov si, word [bp-014h] ; 8b 76 ec ; 0xf851d + mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf8520 + mov dx, word [es:si] ; 26 8b 14 ; 0xf8524 + mov si, strict word 00008h ; be 08 00 ; 0xf8527 + call 09b90h ; e8 63 16 ; 0xf852a + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf852d + mov byte [es:di+00085h], dl ; 26 88 95 85 00 ; 0xf8530 + mov es, [bp-016h] ; 8e 46 ea ; 0xf8535 ahci.c:357 + mov bx, word [bp-014h] ; 8b 5e ec ; 0xf8538 + mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf853b + mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf853f + mov si, word [bp-014h] ; 8b 76 ec ; 0xf8543 + mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf8546 + mov dx, word [es:si] ; 26 8b 14 ; 0xf854a + mov si, strict word 00010h ; be 10 00 ; 0xf854d + call 09b90h ; e8 3d 16 ; 0xf8550 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8553 + mov byte [es:di+00086h], dl ; 26 88 95 86 00 ; 0xf8556 + mov byte [es:di+00087h], 040h ; 26 c6 85 87 00 40 ; 0xf855b ahci.c:358 + mov es, [bp-016h] ; 8e 46 ea ; 0xf8561 ahci.c:360 + mov bx, word [bp-014h] ; 8b 5e ec ; 0xf8564 + mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf8567 + mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf856b + mov si, word [bp-014h] ; 8b 76 ec ; 0xf856f + mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf8572 + mov dx, word [es:si] ; 26 8b 14 ; 0xf8576 + mov si, strict word 00018h ; be 18 00 ; 0xf8579 + call 09b90h ; e8 11 16 ; 0xf857c + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf857f + mov byte [es:di+00088h], dl ; 26 88 95 88 00 ; 0xf8582 + mov es, [bp-016h] ; 8e 46 ea ; 0xf8587 ahci.c:361 + mov bx, word [bp-014h] ; 8b 5e ec ; 0xf858a + mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf858d + mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf8591 + mov si, word [bp-014h] ; 8b 76 ec ; 0xf8595 + mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf8598 + mov dx, word [es:si] ; 26 8b 14 ; 0xf859c + mov si, strict word 00020h ; be 20 00 ; 0xf859f + call 09b90h ; e8 eb 15 ; 0xf85a2 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf85a5 + mov byte [es:di+00089h], dl ; 26 88 95 89 00 ; 0xf85a8 + mov es, [bp-016h] ; 8e 46 ea ; 0xf85ad ahci.c:362 + mov bx, word [bp-014h] ; 8b 5e ec ; 0xf85b0 + mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf85b3 + mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf85b7 + mov si, word [bp-014h] ; 8b 76 ec ; 0xf85bb + mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf85be + mov dx, word [es:si] ; 26 8b 14 ; 0xf85c2 + mov si, strict word 00028h ; be 28 00 ; 0xf85c5 + call 09b90h ; e8 c5 15 ; 0xf85c8 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf85cb + mov byte [es:di+0008ah], dl ; 26 88 95 8a 00 ; 0xf85ce + mov byte [es:di+0008bh], 000h ; 26 c6 85 8b 00 00 ; 0xf85d3 ahci.c:363 + mov al, byte [bp-012h] ; 8a 46 ee ; 0xf85d9 ahci.c:365 + mov byte [es:di+0008ch], al ; 26 88 85 8c 00 ; 0xf85dc + mov ax, word [bp-012h] ; 8b 46 ee ; 0xf85e1 ahci.c:366 + shr ax, 008h ; c1 e8 08 ; 0xf85e4 + mov byte [es:di+0008dh], al ; 26 88 85 8d 00 ; 0xf85e7 + mov word [es:di+00276h], strict word 00010h ; 26 c7 85 76 02 10 00 ; 0xf85ec ahci.c:369 + mov ax, word [bp-012h] ; 8b 46 ee ; 0xf85f3 ahci.c:372 + xor dx, dx ; 31 d2 ; 0xf85f6 + mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf85f8 + xor cx, cx ; 31 c9 ; 0xf85fb + call 09b40h ; e8 40 15 ; 0xf85fd + push dx ; 52 ; 0xf8600 + push ax ; 50 ; 0xf8601 + mov es, [bp-016h] ; 8e 46 ea ; 0xf8602 + mov bx, word [bp-014h] ; 8b 5e ec ; 0xf8605 + mov bx, word [es:bx+008h] ; 26 8b 5f 08 ; 0xf8608 + mov si, word [bp-014h] ; 8b 76 ec ; 0xf860c + mov cx, word [es:si+00ah] ; 26 8b 4c 0a ; 0xf860f + mov ax, 0026ah ; b8 6a 02 ; 0xf8613 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf8616 + call 09a8fh ; e8 73 14 ; 0xf8619 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf861c ahci.c:375 + mov dx, word [es:di+0027eh] ; 26 8b 95 7e 02 ; 0xf861f + add dx, strict byte 0ffffh ; 83 c2 ff ; 0xf8624 + mov ax, word [es:di+00280h] ; 26 8b 85 80 02 ; 0xf8627 + adc ax, strict word 0ffffh ; 15 ff ff ; 0xf862c + mov bl, byte [es:di+00263h] ; 26 8a 9d 63 02 ; 0xf862f + xor bh, bh ; 30 ff ; 0xf8634 + sal bx, 004h ; c1 e3 04 ; 0xf8636 + mov word [es:bx+0010ch], dx ; 26 89 97 0c 01 ; 0xf8639 + mov word [es:bx+0010eh], ax ; 26 89 87 0e 01 ; 0xf863e + mov bl, byte [es:di+00263h] ; 26 8a 9d 63 02 ; 0xf8643 ahci.c:376 + xor bh, bh ; 30 ff ; 0xf8648 + sal bx, 004h ; c1 e3 04 ; 0xf864a + mov ax, word [es:di+0027ah] ; 26 8b 85 7a 02 ; 0xf864d + mov dx, word [es:di+0027ch] ; 26 8b 95 7c 02 ; 0xf8652 + mov word [es:bx+00100h], ax ; 26 89 87 00 01 ; 0xf8657 + mov word [es:bx+00102h], dx ; 26 89 97 02 01 ; 0xf865c + inc byte [es:di+00263h] ; 26 fe 85 63 02 ; 0xf8661 ahci.c:377 + mov es, [bp-016h] ; 8e 46 ea ; 0xf8666 ahci.c:379 + mov bx, si ; 89 f3 ; 0xf8669 + mov ax, word [es:bx+020h] ; 26 8b 47 20 ; 0xf866b + test ax, ax ; 85 c0 ; 0xf866f + je short 086aeh ; 74 3b ; 0xf8671 + dec ax ; 48 ; 0xf8673 ahci.c:380 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8674 + mov bl, byte [es:di+00263h] ; 26 8a 9d 63 02 ; 0xf8677 + xor bh, bh ; 30 ff ; 0xf867c + sal bx, 004h ; c1 e3 04 ; 0xf867e + mov word [es:bx+0010ch], ax ; 26 89 87 0c 01 ; 0xf8681 + mov word [es:bx+0010eh], di ; 26 89 bf 0e 01 ; 0xf8686 + mov bl, byte [es:di+00263h] ; 26 8a 9d 63 02 ; 0xf868b ahci.c:381 + xor bh, bh ; 30 ff ; 0xf8690 + sal bx, 004h ; c1 e3 04 ; 0xf8692 + mov dx, word [es:di+00264h] ; 26 8b 95 64 02 ; 0xf8695 + mov ax, word [es:di+00266h] ; 26 8b 85 66 02 ; 0xf869a + mov word [es:bx+00100h], dx ; 26 89 97 00 01 ; 0xf869f + mov word [es:bx+00102h], ax ; 26 89 87 02 01 ; 0xf86a4 + inc byte [es:di+00263h] ; 26 fe 85 63 02 ; 0xf86a9 ahci.c:382 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf86ae ahci.c:397 + cmp AL, strict byte 035h ; 3c 35 ; 0xf86b1 + jne short 086bbh ; 75 06 ; 0xf86b3 + mov byte [bp-008h], 040h ; c6 46 f8 40 ; 0xf86b5 ahci.c:398 + jmp short 086d2h ; eb 17 ; 0xf86b9 ahci.c:399 + cmp AL, strict byte 0a0h ; 3c a0 ; 0xf86bb + jne short 086ceh ; 75 0f ; 0xf86bd + or byte [bp-008h], 020h ; 80 4e f8 20 ; 0xf86bf ahci.c:400 + les bx, [bp-00eh] ; c4 5e f2 ; 0xf86c3 ahci.c:401 + or byte [es:bx+00083h], 001h ; 26 80 8f 83 00 01 ; 0xf86c6 + jmp short 086d2h ; eb 04 ; 0xf86cc ahci.c:402 + mov byte [bp-008h], 000h ; c6 46 f8 00 ; 0xf86ce ahci.c:403 + or byte [bp-008h], 005h ; 80 4e f8 05 ; 0xf86d2 ahci.c:405 + mov bl, byte [bp-008h] ; 8a 5e f8 ; 0xf86d6 ahci.c:407 + xor bh, bh ; 30 ff ; 0xf86d9 + mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf86db + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf86de + call 08355h ; e8 71 fc ; 0xf86e1 + mov cx, word [bp-00ch] ; 8b 4e f4 ; 0xf86e4 ahci.c:410 + mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf86e7 + add bx, 00240h ; 81 c3 40 02 ; 0xf86ea + mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf86ee ahci.c:414 + add ax, 0026ah ; 05 6a 02 ; 0xf86f1 + mov dx, cx ; 89 ca ; 0xf86f4 + call 09b06h ; e8 0d 14 ; 0xf86f6 + mov es, cx ; 8e c1 ; 0xf86f9 ahci.c:415 + mov al, byte [es:bx+003h] ; 26 8a 47 03 ; 0xf86fb + test al, al ; 84 c0 ; 0xf86ff + je short 08708h ; 74 05 ; 0xf8701 + mov ax, strict word 00004h ; b8 04 00 ; 0xf8703 + jmp short 0870ah ; eb 02 ; 0xf8706 + xor ah, ah ; 30 e4 ; 0xf8708 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf870a ahci.c:416 + pop di ; 5f ; 0xf870d + pop si ; 5e ; 0xf870e + pop cx ; 59 ; 0xf870f + pop bp ; 5d ; 0xf8710 + retn ; c3 ; 0xf8711 + ; disGetNextSymbol 0xf8712 LB 0x17b6 -> off=0x0 cb=0000000000000180 uValue=00000000000f7112 'ahci_port_deinit_current' +ahci_port_deinit_current: ; 0xf8712 LB 0x180 + push bp ; 55 ; 0xf8712 ahci.c:421 + mov bp, sp ; 89 e5 ; 0xf8713 + push bx ; 53 ; 0xf8715 + push cx ; 51 ; 0xf8716 + push si ; 56 ; 0xf8717 + push di ; 57 ; 0xf8718 + sub sp, strict byte 00006h ; 83 ec 06 ; 0xf8719 + mov di, ax ; 89 c7 ; 0xf871c + mov word [bp-00eh], dx ; 89 56 f2 ; 0xf871e + mov es, dx ; 8e c2 ; 0xf8721 ahci.c:426 + mov si, word [es:di+00260h] ; 26 8b b5 60 02 ; 0xf8723 + mov al, byte [es:di+00262h] ; 26 8a 85 62 02 ; 0xf8728 ahci.c:427 + mov byte [bp-00ah], al ; 88 46 f6 ; 0xf872d + cmp AL, strict byte 0ffh ; 3c ff ; 0xf8730 ahci.c:429 + je short 08793h ; 74 5f ; 0xf8732 + xor ah, ah ; 30 e4 ; 0xf8734 ahci.c:432 + sal ax, 007h ; c1 e0 07 ; 0xf8736 + add ax, 00118h ; 05 18 01 ; 0xf8739 + xor cx, cx ; 31 c9 ; 0xf873c ahci.c:261 + mov dx, si ; 89 f2 ; 0xf873e + xchg cx, ax ; 91 ; 0xf8740 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8741 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8745 + out DX, eax ; 66 ef ; 0xf8747 + lea bx, [si+004h] ; 8d 5c 04 ; 0xf8749 ahci.c:262 + mov dx, bx ; 89 da ; 0xf874c + in eax, DX ; 66 ed ; 0xf874e + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf8750 + shr eax, 010h ; 66 c1 e8 10 ; 0xf8752 + xchg dx, ax ; 92 ; 0xf8756 + and AL, strict byte 0eeh ; 24 ee ; 0xf8757 + mov cx, dx ; 89 d1 ; 0xf8759 + mov dx, bx ; 89 da ; 0xf875b + xchg cx, ax ; 91 ; 0xf875d + sal eax, 010h ; 66 c1 e0 10 ; 0xf875e + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8762 + out DX, eax ; 66 ef ; 0xf8764 + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf8766 ahci.c:435 + xor ah, ah ; 30 e4 ; 0xf8769 + sal ax, 007h ; c1 e0 07 ; 0xf876b + add ax, 00118h ; 05 18 01 ; 0xf876e + xor cx, cx ; 31 c9 ; 0xf8771 ahci.c:271 + mov dx, si ; 89 f2 ; 0xf8773 + xchg cx, ax ; 91 ; 0xf8775 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8776 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf877a + out DX, eax ; 66 ef ; 0xf877c + lea dx, [si+004h] ; 8d 54 04 ; 0xf877e ahci.c:272 + in eax, DX ; 66 ed ; 0xf8781 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf8783 + shr eax, 010h ; 66 c1 e8 10 ; 0xf8785 + xchg dx, ax ; 92 ; 0xf8789 + test ax, 0c011h ; a9 11 c0 ; 0xf878a + je short 08796h ; 74 07 ; 0xf878d + mov AL, strict byte 001h ; b0 01 ; 0xf878f + jmp short 08798h ; eb 05 ; 0xf8791 + jmp near 08889h ; e9 f3 00 ; 0xf8793 + xor al, al ; 30 c0 ; 0xf8796 + cmp AL, strict byte 001h ; 3c 01 ; 0xf8798 ahci.c:273 + je short 08766h ; 74 ca ; 0xf879a + mov cx, strict word 00020h ; b9 20 00 ; 0xf879c ahci.c:446 + xor bx, bx ; 31 db ; 0xf879f + mov ax, di ; 89 f8 ; 0xf87a1 + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf87a3 + call 09bb0h ; e8 07 14 ; 0xf87a6 + lea ax, [di+00080h] ; 8d 85 80 00 ; 0xf87a9 ahci.c:447 + mov cx, strict word 00040h ; b9 40 00 ; 0xf87ad + xor bx, bx ; 31 db ; 0xf87b0 + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf87b2 + call 09bb0h ; e8 f8 13 ; 0xf87b5 + lea ax, [di+00200h] ; 8d 85 00 02 ; 0xf87b8 ahci.c:448 + mov cx, strict word 00060h ; b9 60 00 ; 0xf87bc + xor bx, bx ; 31 db ; 0xf87bf + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf87c1 + call 09bb0h ; e8 e9 13 ; 0xf87c4 + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf87c7 ahci.c:450 + xor ah, ah ; 30 e4 ; 0xf87ca + sal ax, 007h ; c1 e0 07 ; 0xf87cc + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf87cf + add ax, 00108h ; 05 08 01 ; 0xf87d2 + cwd ; 99 ; 0xf87d5 + mov cx, dx ; 89 d1 ; 0xf87d6 + mov dx, si ; 89 f2 ; 0xf87d8 + xchg cx, ax ; 91 ; 0xf87da + sal eax, 010h ; 66 c1 e0 10 ; 0xf87db + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf87df + out DX, eax ; 66 ef ; 0xf87e1 + lea bx, [si+004h] ; 8d 5c 04 ; 0xf87e3 + xor ax, ax ; 31 c0 ; 0xf87e6 + xor cx, cx ; 31 c9 ; 0xf87e8 + mov dx, bx ; 89 da ; 0xf87ea + xchg cx, ax ; 91 ; 0xf87ec + sal eax, 010h ; 66 c1 e0 10 ; 0xf87ed + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf87f1 + out DX, eax ; 66 ef ; 0xf87f3 + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf87f5 ahci.c:451 + add ax, 0010ch ; 05 0c 01 ; 0xf87f8 + cwd ; 99 ; 0xf87fb + mov cx, dx ; 89 d1 ; 0xf87fc + mov dx, si ; 89 f2 ; 0xf87fe + xchg cx, ax ; 91 ; 0xf8800 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8801 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8805 + out DX, eax ; 66 ef ; 0xf8807 + xor ax, ax ; 31 c0 ; 0xf8809 + xor cx, cx ; 31 c9 ; 0xf880b + mov dx, bx ; 89 da ; 0xf880d + xchg cx, ax ; 91 ; 0xf880f + sal eax, 010h ; 66 c1 e0 10 ; 0xf8810 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8814 + out DX, eax ; 66 ef ; 0xf8816 + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf8818 ahci.c:453 + db 0feh, 0c4h + ; inc ah ; fe c4 ; 0xf881b + cwd ; 99 ; 0xf881d + mov cx, dx ; 89 d1 ; 0xf881e + mov dx, si ; 89 f2 ; 0xf8820 + xchg cx, ax ; 91 ; 0xf8822 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8823 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8827 + out DX, eax ; 66 ef ; 0xf8829 + xor ax, ax ; 31 c0 ; 0xf882b + xor cx, cx ; 31 c9 ; 0xf882d + mov dx, bx ; 89 da ; 0xf882f + xchg cx, ax ; 91 ; 0xf8831 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8832 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8836 + out DX, eax ; 66 ef ; 0xf8838 + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf883a ahci.c:454 + add ax, 00104h ; 05 04 01 ; 0xf883d + cwd ; 99 ; 0xf8840 + mov cx, dx ; 89 d1 ; 0xf8841 + mov dx, si ; 89 f2 ; 0xf8843 + xchg cx, ax ; 91 ; 0xf8845 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8846 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf884a + out DX, eax ; 66 ef ; 0xf884c + xor ax, ax ; 31 c0 ; 0xf884e + xor cx, cx ; 31 c9 ; 0xf8850 + mov dx, bx ; 89 da ; 0xf8852 + xchg cx, ax ; 91 ; 0xf8854 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8855 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8859 + out DX, eax ; 66 ef ; 0xf885b + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf885d ahci.c:457 + add ax, 00114h ; 05 14 01 ; 0xf8860 + cwd ; 99 ; 0xf8863 + mov cx, dx ; 89 d1 ; 0xf8864 + mov dx, si ; 89 f2 ; 0xf8866 + xchg cx, ax ; 91 ; 0xf8868 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8869 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf886d + out DX, eax ; 66 ef ; 0xf886f + xor ax, ax ; 31 c0 ; 0xf8871 + xor cx, cx ; 31 c9 ; 0xf8873 + mov dx, bx ; 89 da ; 0xf8875 + xchg cx, ax ; 91 ; 0xf8877 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8878 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf887c + out DX, eax ; 66 ef ; 0xf887e + mov es, [bp-00eh] ; 8e 46 f2 ; 0xf8880 ahci.c:459 + mov byte [es:di+00262h], 0ffh ; 26 c6 85 62 02 ff ; 0xf8883 + lea sp, [bp-008h] ; 8d 66 f8 ; 0xf8889 ahci.c:461 + pop di ; 5f ; 0xf888c + pop si ; 5e ; 0xf888d + pop cx ; 59 ; 0xf888e + pop bx ; 5b ; 0xf888f + pop bp ; 5d ; 0xf8890 + retn ; c3 ; 0xf8891 + ; disGetNextSymbol 0xf8892 LB 0x1636 -> off=0x0 cb=000000000000024d uValue=00000000000f7292 'ahci_port_init' +ahci_port_init: ; 0xf8892 LB 0x24d + push bp ; 55 ; 0xf8892 ahci.c:467 + mov bp, sp ; 89 e5 ; 0xf8893 + push cx ; 51 ; 0xf8895 + push si ; 56 ; 0xf8896 + push di ; 57 ; 0xf8897 + sub sp, strict byte 00006h ; 83 ec 06 ; 0xf8898 + mov si, ax ; 89 c6 ; 0xf889b + mov word [bp-00ah], dx ; 89 56 f6 ; 0xf889d + mov byte [bp-008h], bl ; 88 5e f8 ; 0xf88a0 + call 08712h ; e8 6c fe ; 0xf88a3 ahci.c:470 + mov al, bl ; 88 d8 ; 0xf88a6 ahci.c:473 + xor ah, ah ; 30 e4 ; 0xf88a8 + sal ax, 007h ; c1 e0 07 ; 0xf88aa + add ax, 00118h ; 05 18 01 ; 0xf88ad + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf88b0 ahci.c:259 + mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf88b3 + xor cx, cx ; 31 c9 ; 0xf88b8 ahci.c:261 + mov dx, bx ; 89 da ; 0xf88ba + xchg cx, ax ; 91 ; 0xf88bc + sal eax, 010h ; 66 c1 e0 10 ; 0xf88bd + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf88c1 + out DX, eax ; 66 ef ; 0xf88c3 + add bx, strict byte 00004h ; 83 c3 04 ; 0xf88c5 ahci.c:262 + mov dx, bx ; 89 da ; 0xf88c8 + in eax, DX ; 66 ed ; 0xf88ca + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf88cc + shr eax, 010h ; 66 c1 e8 10 ; 0xf88ce + xchg dx, ax ; 92 ; 0xf88d2 + and AL, strict byte 0eeh ; 24 ee ; 0xf88d3 + mov cx, dx ; 89 d1 ; 0xf88d5 + mov dx, bx ; 89 da ; 0xf88d7 + xchg cx, ax ; 91 ; 0xf88d9 + sal eax, 010h ; 66 c1 e0 10 ; 0xf88da + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf88de + out DX, eax ; 66 ef ; 0xf88e0 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf88e2 ahci.c:476 + xor ah, ah ; 30 e4 ; 0xf88e5 + sal ax, 007h ; c1 e0 07 ; 0xf88e7 + add ax, 00118h ; 05 18 01 ; 0xf88ea + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf88ed ahci.c:269 + mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf88f0 + xor cx, cx ; 31 c9 ; 0xf88f5 ahci.c:271 + mov dx, bx ; 89 da ; 0xf88f7 + xchg cx, ax ; 91 ; 0xf88f9 + sal eax, 010h ; 66 c1 e0 10 ; 0xf88fa + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf88fe + out DX, eax ; 66 ef ; 0xf8900 + lea dx, [bx+004h] ; 8d 57 04 ; 0xf8902 ahci.c:272 + in eax, DX ; 66 ed ; 0xf8905 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf8907 + shr eax, 010h ; 66 c1 e8 10 ; 0xf8909 + xchg dx, ax ; 92 ; 0xf890d + test ax, 0c011h ; a9 11 c0 ; 0xf890e + je short 08917h ; 74 04 ; 0xf8911 + mov AL, strict byte 001h ; b0 01 ; 0xf8913 + jmp short 08919h ; eb 02 ; 0xf8915 + xor al, al ; 30 c0 ; 0xf8917 + cmp AL, strict byte 001h ; 3c 01 ; 0xf8919 ahci.c:273 + je short 088e2h ; 74 c5 ; 0xf891b + mov cx, strict word 00020h ; b9 20 00 ; 0xf891d ahci.c:487 + xor bx, bx ; 31 db ; 0xf8920 + mov ax, si ; 89 f0 ; 0xf8922 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf8924 + call 09bb0h ; e8 86 12 ; 0xf8927 + lea ax, [si+00080h] ; 8d 84 80 00 ; 0xf892a ahci.c:488 + mov cx, strict word 00040h ; b9 40 00 ; 0xf892e + xor bx, bx ; 31 db ; 0xf8931 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf8933 + call 09bb0h ; e8 77 12 ; 0xf8936 + lea di, [si+00200h] ; 8d bc 00 02 ; 0xf8939 ahci.c:489 + mov cx, strict word 00060h ; b9 60 00 ; 0xf893d + xor bx, bx ; 31 db ; 0xf8940 + mov ax, di ; 89 f8 ; 0xf8942 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf8944 + call 09bb0h ; e8 66 12 ; 0xf8947 + mov bl, byte [bp-008h] ; 8a 5e f8 ; 0xf894a ahci.c:493 + xor bh, bh ; 30 ff ; 0xf894d + sal bx, 007h ; c1 e3 07 ; 0xf894f + lea ax, [bx+00108h] ; 8d 87 08 01 ; 0xf8952 + cwd ; 99 ; 0xf8956 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8957 + mov cx, word [es:si+00260h] ; 26 8b 8c 60 02 ; 0xf895a + mov word [bp-00ch], cx ; 89 4e f4 ; 0xf895f + mov cx, dx ; 89 d1 ; 0xf8962 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf8964 + xchg cx, ax ; 91 ; 0xf8967 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8968 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf896c + out DX, eax ; 66 ef ; 0xf896e + mov ax, di ; 89 f8 ; 0xf8970 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf8972 + call 08337h ; e8 bf f9 ; 0xf8975 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8978 + mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf897b + add di, strict byte 00004h ; 83 c7 04 ; 0xf8980 + mov cx, dx ; 89 d1 ; 0xf8983 + mov dx, di ; 89 fa ; 0xf8985 + xchg cx, ax ; 91 ; 0xf8987 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8988 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf898c + out DX, eax ; 66 ef ; 0xf898e + lea ax, [bx+0010ch] ; 8d 87 0c 01 ; 0xf8990 ahci.c:494 + cwd ; 99 ; 0xf8994 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8995 + mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf8998 + mov cx, dx ; 89 d1 ; 0xf899d + mov dx, di ; 89 fa ; 0xf899f + xchg cx, ax ; 91 ; 0xf89a1 + sal eax, 010h ; 66 c1 e0 10 ; 0xf89a2 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf89a6 + out DX, eax ; 66 ef ; 0xf89a8 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf89aa + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf89ad + add dx, strict byte 00004h ; 83 c2 04 ; 0xf89b2 + xor ax, ax ; 31 c0 ; 0xf89b5 + xor cx, cx ; 31 c9 ; 0xf89b7 + xchg cx, ax ; 91 ; 0xf89b9 + sal eax, 010h ; 66 c1 e0 10 ; 0xf89ba + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf89be + out DX, eax ; 66 ef ; 0xf89c0 + lea ax, [bx+00100h] ; 8d 87 00 01 ; 0xf89c2 ahci.c:497 + cwd ; 99 ; 0xf89c6 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf89c7 + mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf89ca + mov cx, dx ; 89 d1 ; 0xf89cf + mov dx, di ; 89 fa ; 0xf89d1 + xchg cx, ax ; 91 ; 0xf89d3 + sal eax, 010h ; 66 c1 e0 10 ; 0xf89d4 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf89d8 + out DX, eax ; 66 ef ; 0xf89da + mov ax, si ; 89 f0 ; 0xf89dc + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf89de + call 08337h ; e8 53 f9 ; 0xf89e1 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf89e4 + mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf89e7 + add di, strict byte 00004h ; 83 c7 04 ; 0xf89ec + mov cx, dx ; 89 d1 ; 0xf89ef + mov dx, di ; 89 fa ; 0xf89f1 + xchg cx, ax ; 91 ; 0xf89f3 + sal eax, 010h ; 66 c1 e0 10 ; 0xf89f4 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf89f8 + out DX, eax ; 66 ef ; 0xf89fa + lea ax, [bx+00104h] ; 8d 87 04 01 ; 0xf89fc ahci.c:498 + cwd ; 99 ; 0xf8a00 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8a01 + mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf8a04 + mov cx, dx ; 89 d1 ; 0xf8a09 + mov dx, di ; 89 fa ; 0xf8a0b + xchg cx, ax ; 91 ; 0xf8a0d + sal eax, 010h ; 66 c1 e0 10 ; 0xf8a0e + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8a12 + out DX, eax ; 66 ef ; 0xf8a14 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8a16 + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8a19 + add dx, strict byte 00004h ; 83 c2 04 ; 0xf8a1e + xor ax, ax ; 31 c0 ; 0xf8a21 + xor cx, cx ; 31 c9 ; 0xf8a23 + xchg cx, ax ; 91 ; 0xf8a25 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8a26 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8a2a + out DX, eax ; 66 ef ; 0xf8a2c + lea ax, [bx+00114h] ; 8d 87 14 01 ; 0xf8a2e ahci.c:501 + cwd ; 99 ; 0xf8a32 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8a33 + mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf8a36 + mov cx, dx ; 89 d1 ; 0xf8a3b + mov dx, di ; 89 fa ; 0xf8a3d + xchg cx, ax ; 91 ; 0xf8a3f + sal eax, 010h ; 66 c1 e0 10 ; 0xf8a40 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8a44 + out DX, eax ; 66 ef ; 0xf8a46 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8a48 + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8a4b + add dx, strict byte 00004h ; 83 c2 04 ; 0xf8a50 + xor ax, ax ; 31 c0 ; 0xf8a53 + xor cx, cx ; 31 c9 ; 0xf8a55 + xchg cx, ax ; 91 ; 0xf8a57 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8a58 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8a5c + out DX, eax ; 66 ef ; 0xf8a5e + lea ax, [bx+00110h] ; 8d 87 10 01 ; 0xf8a60 ahci.c:502 + cwd ; 99 ; 0xf8a64 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8a65 + mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf8a68 + mov cx, dx ; 89 d1 ; 0xf8a6d + mov dx, di ; 89 fa ; 0xf8a6f + xchg cx, ax ; 91 ; 0xf8a71 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8a72 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8a76 + out DX, eax ; 66 ef ; 0xf8a78 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8a7a + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8a7d + add dx, strict byte 00004h ; 83 c2 04 ; 0xf8a82 + mov ax, strict word 0ffffh ; b8 ff ff ; 0xf8a85 + mov cx, ax ; 89 c1 ; 0xf8a88 + xchg cx, ax ; 91 ; 0xf8a8a + sal eax, 010h ; 66 c1 e0 10 ; 0xf8a8b + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8a8f + out DX, eax ; 66 ef ; 0xf8a91 + lea ax, [bx+00130h] ; 8d 87 30 01 ; 0xf8a93 ahci.c:504 + cwd ; 99 ; 0xf8a97 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8a98 + mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8a9b + mov cx, dx ; 89 d1 ; 0xf8aa0 + mov dx, bx ; 89 da ; 0xf8aa2 + xchg cx, ax ; 91 ; 0xf8aa4 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8aa5 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8aa9 + out DX, eax ; 66 ef ; 0xf8aab + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8aad + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8ab0 + add dx, strict byte 00004h ; 83 c2 04 ; 0xf8ab5 + mov ax, strict word 0ffffh ; b8 ff ff ; 0xf8ab8 + mov cx, ax ; 89 c1 ; 0xf8abb + xchg cx, ax ; 91 ; 0xf8abd + sal eax, 010h ; 66 c1 e0 10 ; 0xf8abe + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8ac2 + out DX, eax ; 66 ef ; 0xf8ac4 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf8ac6 ahci.c:506 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8ac9 + mov byte [es:si+00262h], al ; 26 88 84 62 02 ; 0xf8acc + mov byte [es:si+00263h], 000h ; 26 c6 84 63 02 00 ; 0xf8ad1 ahci.c:507 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf8ad7 ahci.c:508 + pop di ; 5f ; 0xf8ada + pop si ; 5e ; 0xf8adb + pop cx ; 59 ; 0xf8adc + pop bp ; 5d ; 0xf8add + retn ; c3 ; 0xf8ade + ; disGetNextSymbol 0xf8adf LB 0x13e9 -> off=0x0 cb=00000000000000a8 uValue=00000000000f74df 'ahci_read_sectors' +ahci_read_sectors: ; 0xf8adf LB 0xa8 + push bp ; 55 ; 0xf8adf ahci.c:517 + mov bp, sp ; 89 e5 ; 0xf8ae0 + push si ; 56 ; 0xf8ae2 + push di ; 57 ; 0xf8ae3 + push ax ; 50 ; 0xf8ae4 + les bx, [bp+004h] ; c4 5e 04 ; 0xf8ae5 ahci.c:522 + mov bl, byte [es:bx+00ch] ; 26 8a 5f 0c ; 0xf8ae8 + xor bh, bh ; 30 ff ; 0xf8aec + sub bx, strict byte 0000ch ; 83 eb 0c ; 0xf8aee + cmp bx, strict byte 00004h ; 83 fb 04 ; 0xf8af1 ahci.c:523 + jbe short 08b05h ; 76 0f ; 0xf8af4 + push bx ; 53 ; 0xf8af6 ahci.c:524 + push 00c62h ; 68 62 0c ; 0xf8af7 + push 00c74h ; 68 74 0c ; 0xf8afa + push strict byte 00007h ; 6a 07 ; 0xf8afd + call 018ffh ; e8 fd 8d ; 0xf8aff + add sp, strict byte 00008h ; 83 c4 08 ; 0xf8b02 + xor di, di ; 31 ff ; 0xf8b05 ahci.c:530 + les si, [bp+004h] ; c4 76 04 ; 0xf8b07 + mov dx, word [es:si+00232h] ; 26 8b 94 32 02 ; 0xf8b0a + shr eax, 010h ; 66 c1 e8 10 ; 0xf8b0f ahci.c:239 + mov es, dx ; 8e c2 ; 0xf8b13 + mov word [es:di+00268h], ax ; 26 89 85 68 02 ; 0xf8b15 + mov es, [bp+006h] ; 8e 46 06 ; 0xf8b1a ahci.c:531 + add bx, si ; 01 f3 ; 0xf8b1d + mov bl, byte [es:bx+0022dh] ; 26 8a 9f 2d 02 ; 0xf8b1f + xor bh, bh ; 30 ff ; 0xf8b24 + mov di, si ; 89 f7 ; 0xf8b26 + mov dx, word [es:di+00232h] ; 26 8b 95 32 02 ; 0xf8b28 + xor ax, ax ; 31 c0 ; 0xf8b2d + call 08892h ; e8 60 fd ; 0xf8b2f + mov bx, strict word 00025h ; bb 25 00 ; 0xf8b32 ahci.c:532 + mov ax, si ; 89 f0 ; 0xf8b35 + mov dx, word [bp+006h] ; 8b 56 06 ; 0xf8b37 + call 084abh ; e8 6e f9 ; 0xf8b3a + mov word [bp-006h], ax ; 89 46 fa ; 0xf8b3d + mov es, [bp+006h] ; 8e 46 06 ; 0xf8b40 ahci.c:534 + mov bx, si ; 89 f3 ; 0xf8b43 + mov ax, word [es:bx+00eh] ; 26 8b 47 0e ; 0xf8b45 + mov word [es:bx+018h], ax ; 26 89 47 18 ; 0xf8b49 + mov cx, ax ; 89 c1 ; 0xf8b4d ahci.c:536 + sal cx, 009h ; c1 e1 09 ; 0xf8b4f + shr cx, 1 ; d1 e9 ; 0xf8b52 + mov di, word [es:di+008h] ; 26 8b 7d 08 ; 0xf8b54 + mov ax, word [es:bx+00ah] ; 26 8b 47 0a ; 0xf8b58 + mov si, di ; 89 fe ; 0xf8b5c + mov dx, ax ; 89 c2 ; 0xf8b5e + mov es, ax ; 8e c0 ; 0xf8b60 + push DS ; 1e ; 0xf8b62 + mov ds, dx ; 8e da ; 0xf8b63 + rep movsw ; f3 a5 ; 0xf8b65 + pop DS ; 1f ; 0xf8b67 + xor bx, bx ; 31 db ; 0xf8b68 ahci.c:538 + les di, [bp+004h] ; c4 7e 04 ; 0xf8b6a + mov es, [es:di+00232h] ; 26 8e 85 32 02 ; 0xf8b6d + mov ax, word [es:bx+00268h] ; 26 8b 87 68 02 ; 0xf8b72 ahci.c:244 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8b77 + mov ax, word [bp-006h] ; 8b 46 fa ; 0xf8b7b ahci.c:540 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf8b7e + pop di ; 5f ; 0xf8b81 + pop si ; 5e ; 0xf8b82 + pop bp ; 5d ; 0xf8b83 + retn 00004h ; c2 04 00 ; 0xf8b84 + ; disGetNextSymbol 0xf8b87 LB 0x1341 -> off=0x0 cb=0000000000000086 uValue=00000000000f7587 'ahci_write_sectors' +ahci_write_sectors: ; 0xf8b87 LB 0x86 + push bp ; 55 ; 0xf8b87 ahci.c:549 + mov bp, sp ; 89 e5 ; 0xf8b88 + push si ; 56 ; 0xf8b8a + push di ; 57 ; 0xf8b8b + mov si, word [bp+004h] ; 8b 76 04 ; 0xf8b8c + mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf8b8f + mov es, cx ; 8e c1 ; 0xf8b92 ahci.c:554 + mov dl, byte [es:si+00ch] ; 26 8a 54 0c ; 0xf8b94 + xor dh, dh ; 30 f6 ; 0xf8b98 + sub dx, strict byte 0000ch ; 83 ea 0c ; 0xf8b9a + cmp dx, strict byte 00004h ; 83 fa 04 ; 0xf8b9d ahci.c:555 + jbe short 08bb1h ; 76 0f ; 0xf8ba0 + push dx ; 52 ; 0xf8ba2 ahci.c:556 + push 00c93h ; 68 93 0c ; 0xf8ba3 + push 00c74h ; 68 74 0c ; 0xf8ba6 + push strict byte 00007h ; 6a 07 ; 0xf8ba9 + call 018ffh ; e8 51 8d ; 0xf8bab + add sp, strict byte 00008h ; 83 c4 08 ; 0xf8bae + xor bx, bx ; 31 db ; 0xf8bb1 ahci.c:562 + mov es, cx ; 8e c1 ; 0xf8bb3 + mov di, word [es:si+00232h] ; 26 8b bc 32 02 ; 0xf8bb5 + shr eax, 010h ; 66 c1 e8 10 ; 0xf8bba ahci.c:239 + mov es, di ; 8e c7 ; 0xf8bbe + mov word [es:bx+00268h], ax ; 26 89 87 68 02 ; 0xf8bc0 + mov es, cx ; 8e c1 ; 0xf8bc5 ahci.c:563 + mov bx, si ; 89 f3 ; 0xf8bc7 + add bx, dx ; 01 d3 ; 0xf8bc9 + mov bl, byte [es:bx+0022dh] ; 26 8a 9f 2d 02 ; 0xf8bcb + xor bh, bh ; 30 ff ; 0xf8bd0 + mov dx, word [es:si+00232h] ; 26 8b 94 32 02 ; 0xf8bd2 + xor ax, ax ; 31 c0 ; 0xf8bd7 + call 08892h ; e8 b6 fc ; 0xf8bd9 + mov bx, strict word 00035h ; bb 35 00 ; 0xf8bdc ahci.c:564 + mov ax, si ; 89 f0 ; 0xf8bdf + mov dx, cx ; 89 ca ; 0xf8be1 + call 084abh ; e8 c5 f8 ; 0xf8be3 + mov dx, ax ; 89 c2 ; 0xf8be6 + mov es, cx ; 8e c1 ; 0xf8be8 ahci.c:566 + mov ax, word [es:si+00eh] ; 26 8b 44 0e ; 0xf8bea + mov word [es:si+018h], ax ; 26 89 44 18 ; 0xf8bee + xor bx, bx ; 31 db ; 0xf8bf2 ahci.c:567 + mov es, [es:si+00232h] ; 26 8e 84 32 02 ; 0xf8bf4 + mov ax, word [es:bx+00268h] ; 26 8b 87 68 02 ; 0xf8bf9 ahci.c:244 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8bfe + mov ax, dx ; 89 d0 ; 0xf8c02 ahci.c:569 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf8c04 + pop di ; 5f ; 0xf8c07 + pop si ; 5e ; 0xf8c08 + pop bp ; 5d ; 0xf8c09 + retn 00004h ; c2 04 00 ; 0xf8c0a + ; disGetNextSymbol 0xf8c0d LB 0x12bb -> off=0x0 cb=000000000000018a uValue=00000000000f760d 'ahci_cmd_packet' +ahci_cmd_packet: ; 0xf8c0d LB 0x18a + push bp ; 55 ; 0xf8c0d ahci.c:576 + mov bp, sp ; 89 e5 ; 0xf8c0e + push si ; 56 ; 0xf8c10 + push di ; 57 ; 0xf8c11 + sub sp, strict byte 0000eh ; 83 ec 0e ; 0xf8c12 + push ax ; 50 ; 0xf8c15 + mov byte [bp-006h], dl ; 88 56 fa ; 0xf8c16 + mov word [bp-010h], bx ; 89 5e f0 ; 0xf8c19 + mov word [bp-012h], cx ; 89 4e ee ; 0xf8c1c + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf8c1f ahci.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf8c22 + mov es, ax ; 8e c0 ; 0xf8c25 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf8c27 + mov si, 00122h ; be 22 01 ; 0xf8c2a ahci.c:49 + mov word [bp-008h], ax ; 89 46 f8 ; 0xf8c2d + cmp byte [bp+00ah], 002h ; 80 7e 0a 02 ; 0xf8c30 ahci.c:583 + jne short 08c55h ; 75 1f ; 0xf8c34 + mov bx, 00da0h ; bb a0 0d ; 0xf8c36 ahci.c:584 + mov cx, ds ; 8c d9 ; 0xf8c39 + mov ax, strict word 00004h ; b8 04 00 ; 0xf8c3b + call 018bch ; e8 7b 8c ; 0xf8c3e + push 00ca6h ; 68 a6 0c ; 0xf8c41 + push 00cb6h ; 68 b6 0c ; 0xf8c44 + push strict byte 00004h ; 6a 04 ; 0xf8c47 + call 018ffh ; e8 b3 8c ; 0xf8c49 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf8c4c + mov ax, strict word 00001h ; b8 01 00 ; 0xf8c4f ahci.c:585 + jmp near 08d8eh ; e9 39 01 ; 0xf8c52 + test byte [bp+004h], 001h ; f6 46 04 01 ; 0xf8c55 ahci.c:589 + jne short 08c4fh ; 75 f4 ; 0xf8c59 + mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf8c5b ahci.c:603 + mov di, word [bp+008h] ; 8b 7e 08 ; 0xf8c5e + mov cx, strict word 00008h ; b9 08 00 ; 0xf8c61 + sal bx, 1 ; d1 e3 ; 0xf8c64 + rcl di, 1 ; d1 d7 ; 0xf8c66 + loop 08c64h ; e2 fa ; 0xf8c68 + mov es, [bp-008h] ; 8e 46 f8 ; 0xf8c6a + mov word [es:si], bx ; 26 89 1c ; 0xf8c6d + mov word [es:si+002h], di ; 26 89 7c 02 ; 0xf8c70 + mov word [es:si+004h], strict word 00000h ; 26 c7 44 04 00 00 ; 0xf8c74 + mov word [es:si+006h], strict word 00000h ; 26 c7 44 06 00 00 ; 0xf8c7a + mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf8c80 ahci.c:604 + mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf8c83 + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf8c87 + mov word [es:si+00ah], ax ; 26 89 44 0a ; 0xf8c8a + mov bx, word [es:si+010h] ; 26 8b 5c 10 ; 0xf8c8e ahci.c:605 + mov ax, word [bp+006h] ; 8b 46 06 ; 0xf8c92 + mov dx, word [bp+008h] ; 8b 56 08 ; 0xf8c95 + xor cx, cx ; 31 c9 ; 0xf8c98 + call 09b60h ; e8 c3 0e ; 0xf8c9a + mov word [es:si+00eh], ax ; 26 89 44 0e ; 0xf8c9d + xor di, di ; 31 ff ; 0xf8ca1 ahci.c:608 + mov ax, word [es:si+00232h] ; 26 8b 84 32 02 ; 0xf8ca3 + mov word [bp-00ah], ax ; 89 46 f6 ; 0xf8ca8 + mov word [bp-00eh], di ; 89 7e f2 ; 0xf8cab + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf8cae + sub word [bp-014h], strict byte 0000ch ; 83 6e ec 0c ; 0xf8cb1 ahci.c:595 + shr eax, 010h ; 66 c1 e8 10 ; 0xf8cb5 ahci.c:239 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8cb9 + mov word [es:di+00268h], ax ; 26 89 85 68 02 ; 0xf8cbc + mov es, [bp-008h] ; 8e 46 f8 ; 0xf8cc1 ahci.c:611 + mov bx, word [bp-014h] ; 8b 5e ec ; 0xf8cc4 + add bx, si ; 01 f3 ; 0xf8cc7 + mov bl, byte [es:bx+0022dh] ; 26 8a 9f 2d 02 ; 0xf8cc9 + xor bh, bh ; 30 ff ; 0xf8cce + mov dx, word [es:si+00232h] ; 26 8b 94 32 02 ; 0xf8cd0 + xor ax, ax ; 31 c0 ; 0xf8cd5 + call 08892h ; e8 b8 fb ; 0xf8cd7 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf8cda ahci.c:614 + xor ah, ah ; 30 e4 ; 0xf8cdd + push ax ; 50 ; 0xf8cdf + mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf8ce0 + mov cx, word [bp-012h] ; 8b 4e ee ; 0xf8ce3 + mov ax, 000c0h ; b8 c0 00 ; 0xf8ce6 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf8ce9 + call 09bc0h ; e8 d1 0e ; 0xf8cec + mov es, [bp-008h] ; 8e 46 f8 ; 0xf8cef ahci.c:618 + mov word [es:si+018h], di ; 26 89 7c 18 ; 0xf8cf2 + mov word [es:si+01ah], di ; 26 89 7c 1a ; 0xf8cf6 ahci.c:619 + mov word [es:si+01ch], di ; 26 89 7c 1c ; 0xf8cfa + mov ax, word [es:si+01eh] ; 26 8b 44 1e ; 0xf8cfe ahci.c:622 + test ax, ax ; 85 c0 ; 0xf8d02 + je short 08d2dh ; 74 27 ; 0xf8d04 + dec ax ; 48 ; 0xf8d06 ahci.c:623 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8d07 + mov word [es:di+0010ch], ax ; 26 89 85 0c 01 ; 0xf8d0a + mov word [es:di+0010eh], di ; 26 89 bd 0e 01 ; 0xf8d0f + mov dx, word [es:di+00264h] ; 26 8b 95 64 02 ; 0xf8d14 ahci.c:624 + mov ax, word [es:di+00266h] ; 26 8b 85 66 02 ; 0xf8d19 + mov word [es:di+00100h], dx ; 26 89 95 00 01 ; 0xf8d1e + mov word [es:di+00102h], ax ; 26 89 85 02 01 ; 0xf8d23 + inc byte [es:di+00263h] ; 26 fe 85 63 02 ; 0xf8d28 ahci.c:625 + mov bx, 000a0h ; bb a0 00 ; 0xf8d2d ahci.c:628 + mov ax, si ; 89 f0 ; 0xf8d30 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf8d32 + call 084abh ; e8 73 f7 ; 0xf8d35 + les bx, [bp-00eh] ; c4 5e f2 ; 0xf8d38 ahci.c:630 + mov dx, word [es:bx+004h] ; 26 8b 57 04 ; 0xf8d3b + mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf8d3f + mov es, [bp-008h] ; 8e 46 f8 ; 0xf8d43 + mov word [es:si+01ah], dx ; 26 89 54 1a ; 0xf8d46 + mov word [es:si+01ch], ax ; 26 89 44 1c ; 0xf8d4a + mov bx, word [es:si+01ah] ; 26 8b 5c 1a ; 0xf8d4e ahci.c:632 + mov cx, ax ; 89 c1 ; 0xf8d52 + shr cx, 1 ; d1 e9 ; 0xf8d54 + rcr bx, 1 ; d1 db ; 0xf8d56 + mov di, word [es:si+008h] ; 26 8b 7c 08 ; 0xf8d58 + mov ax, word [es:si+00ah] ; 26 8b 44 0a ; 0xf8d5c + mov cx, bx ; 89 d9 ; 0xf8d60 + mov si, di ; 89 fe ; 0xf8d62 + mov dx, ax ; 89 c2 ; 0xf8d64 + mov es, ax ; 8e c0 ; 0xf8d66 + push DS ; 1e ; 0xf8d68 + mov ds, dx ; 8e da ; 0xf8d69 + rep movsw ; f3 a5 ; 0xf8d6b + pop DS ; 1f ; 0xf8d6d + les bx, [bp-00eh] ; c4 5e f2 ; 0xf8d6e ahci.c:244 + mov ax, word [es:bx+00268h] ; 26 8b 87 68 02 ; 0xf8d71 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8d76 + mov es, [bp-00ch] ; 8e 46 f4 ; 0xf8d7a ahci.c:636 + mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf8d7d + or ax, word [es:bx+004h] ; 26 0b 47 04 ; 0xf8d81 + jne short 08d8ch ; 75 05 ; 0xf8d85 + mov ax, strict word 00004h ; b8 04 00 ; 0xf8d87 + jmp short 08d8eh ; eb 02 ; 0xf8d8a + xor ax, ax ; 31 c0 ; 0xf8d8c + lea sp, [bp-004h] ; 8d 66 fc ; 0xf8d8e ahci.c:637 + pop di ; 5f ; 0xf8d91 + pop si ; 5e ; 0xf8d92 + pop bp ; 5d ; 0xf8d93 + retn 0000ch ; c2 0c 00 ; 0xf8d94 + ; disGetNextSymbol 0xf8d97 LB 0x1131 -> off=0x0 cb=0000000000000005 uValue=00000000000f7797 'wait_ticks_device_init' +wait_ticks_device_init: ; 0xf8d97 LB 0x5 + push bp ; 55 ; 0xf8d97 ahci.c:640 + mov bp, sp ; 89 e5 ; 0xf8d98 + pop bp ; 5d ; 0xf8d9a ahci.c:642 + retn ; c3 ; 0xf8d9b + ; disGetNextSymbol 0xf8d9c LB 0x112c -> off=0x0 cb=00000000000004e3 uValue=00000000000f779c 'ahci_port_detect_device' +ahci_port_detect_device: ; 0xf8d9c LB 0x4e3 + push bp ; 55 ; 0xf8d9c ahci.c:644 + mov bp, sp ; 89 e5 ; 0xf8d9d + push cx ; 51 ; 0xf8d9f + push si ; 56 ; 0xf8da0 + push di ; 57 ; 0xf8da1 + sub sp, 0022ch ; 81 ec 2c 02 ; 0xf8da2 + mov si, ax ; 89 c6 ; 0xf8da6 + mov word [bp-010h], dx ; 89 56 f0 ; 0xf8da8 + mov byte [bp-00ah], bl ; 88 5e f6 ; 0xf8dab + mov word [bp-020h], strict word 00000h ; c7 46 e0 00 00 ; 0xf8dae ahci.c:650 + mov cl, bl ; 88 d9 ; 0xf8db3 ahci.c:652 + xor ch, ch ; 30 ed ; 0xf8db5 + mov bx, cx ; 89 cb ; 0xf8db7 + call 08892h ; e8 d6 fa ; 0xf8db9 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf8dbc ahci.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf8dbf + mov es, ax ; 8e c0 ; 0xf8dc2 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf8dc4 + mov word [bp-028h], 00122h ; c7 46 d8 22 01 ; 0xf8dc7 ahci.c:49 + mov word [bp-026h], ax ; 89 46 da ; 0xf8dcc + mov ax, cx ; 89 c8 ; 0xf8dcf ahci.c:657 + sal ax, 007h ; c1 e0 07 ; 0xf8dd1 + add ax, 0012ch ; 05 2c 01 ; 0xf8dd4 + cwd ; 99 ; 0xf8dd7 + mov bx, ax ; 89 c3 ; 0xf8dd8 + mov di, dx ; 89 d7 ; 0xf8dda + mov es, [bp-010h] ; 8e 46 f0 ; 0xf8ddc + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8ddf + mov cx, di ; 89 f9 ; 0xf8de4 + xchg cx, ax ; 91 ; 0xf8de6 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8de7 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8deb + out DX, eax ; 66 ef ; 0xf8ded + mov es, [bp-010h] ; 8e 46 f0 ; 0xf8def + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8df2 + add dx, strict byte 00004h ; 83 c2 04 ; 0xf8df7 + mov ax, strict word 00001h ; b8 01 00 ; 0xf8dfa + xor cx, cx ; 31 c9 ; 0xf8dfd + xchg cx, ax ; 91 ; 0xf8dff + sal eax, 010h ; 66 c1 e0 10 ; 0xf8e00 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8e04 + out DX, eax ; 66 ef ; 0xf8e06 + mov es, [bp-010h] ; 8e 46 f0 ; 0xf8e08 ahci.c:662 + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8e0b + mov ax, bx ; 89 d8 ; 0xf8e10 + mov cx, di ; 89 f9 ; 0xf8e12 + xchg cx, ax ; 91 ; 0xf8e14 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8e15 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8e19 + out DX, eax ; 66 ef ; 0xf8e1b + mov es, [bp-010h] ; 8e 46 f0 ; 0xf8e1d + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8e20 + add dx, strict byte 00004h ; 83 c2 04 ; 0xf8e25 + xor ax, ax ; 31 c0 ; 0xf8e28 + xor cx, cx ; 31 c9 ; 0xf8e2a + xchg cx, ax ; 91 ; 0xf8e2c + sal eax, 010h ; 66 c1 e0 10 ; 0xf8e2d + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8e31 + out DX, eax ; 66 ef ; 0xf8e33 + mov di, strict word 0006ch ; bf 6c 00 ; 0xf8e35 ahci.c:671 + mov ax, strict word 00040h ; b8 40 00 ; 0xf8e38 + mov word [bp-012h], ax ; 89 46 ee ; 0xf8e3b + mov es, ax ; 8e c0 ; 0xf8e3e ahci.c:672 + mov ax, word [es:di] ; 26 8b 05 ; 0xf8e40 + add ax, strict word 00003h ; 05 03 00 ; 0xf8e43 + mov word [bp-024h], ax ; 89 46 dc ; 0xf8e46 + mov ax, word [es:di+002h] ; 26 8b 45 02 ; 0xf8e49 + adc ax, strict word 00000h ; 15 00 00 ; 0xf8e4d + mov word [bp-02ah], ax ; 89 46 d6 ; 0xf8e50 + mov es, [bp-012h] ; 8e 46 ee ; 0xf8e53 ahci.c:674 + mov ax, word [es:di+002h] ; 26 8b 45 02 ; 0xf8e56 + cmp ax, word [bp-02ah] ; 3b 46 d6 ; 0xf8e5a + jc short 08e70h ; 72 11 ; 0xf8e5d + mov ax, word [es:di+002h] ; 26 8b 45 02 ; 0xf8e5f + cmp ax, word [bp-02ah] ; 3b 46 d6 ; 0xf8e63 + jne short 08ebch ; 75 54 ; 0xf8e66 + mov ax, word [es:di] ; 26 8b 05 ; 0xf8e68 + cmp ax, word [bp-024h] ; 3b 46 dc ; 0xf8e6b + jnc short 08ebch ; 73 4c ; 0xf8e6e + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf8e70 ahci.c:677 + xor ah, ah ; 30 e4 ; 0xf8e73 + sal ax, 007h ; c1 e0 07 ; 0xf8e75 + add ax, 00128h ; 05 28 01 ; 0xf8e78 + cwd ; 99 ; 0xf8e7b + mov es, [bp-010h] ; 8e 46 f0 ; 0xf8e7c + mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8e7f + mov cx, dx ; 89 d1 ; 0xf8e84 + mov dx, bx ; 89 da ; 0xf8e86 + xchg cx, ax ; 91 ; 0xf8e88 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8e89 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8e8d + out DX, eax ; 66 ef ; 0xf8e8f + mov es, [bp-010h] ; 8e 46 f0 ; 0xf8e91 + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8e94 + add dx, strict byte 00004h ; 83 c2 04 ; 0xf8e99 + in eax, DX ; 66 ed ; 0xf8e9c + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf8e9e + shr eax, 010h ; 66 c1 e8 10 ; 0xf8ea0 + xchg dx, ax ; 92 ; 0xf8ea4 + mov word [bp-022h], ax ; 89 46 de ; 0xf8ea5 + mov word [bp-01eh], dx ; 89 56 e2 ; 0xf8ea8 + push strict byte 00000h ; 6a 00 ; 0xf8eab ahci.c:678 + mov bx, strict word 0000fh ; bb 0f 00 ; 0xf8ead + xor cx, cx ; 31 c9 ; 0xf8eb0 + call 0831bh ; e8 66 f4 ; 0xf8eb2 + cmp ax, strict word 00003h ; 3d 03 00 ; 0xf8eb5 + jne short 08e53h ; 75 99 ; 0xf8eb8 + jmp short 08ec5h ; eb 09 ; 0xf8eba ahci.c:680 + cmp word [bp-020h], strict byte 00000h ; 83 7e e0 00 ; 0xf8ebc ahci.c:685 + jne short 08ec5h ; 75 03 ; 0xf8ec0 + jmp near 09277h ; e9 b2 03 ; 0xf8ec2 + push strict byte 00000h ; 6a 00 ; 0xf8ec5 ahci.c:690 + mov bx, strict word 0000fh ; bb 0f 00 ; 0xf8ec7 + xor cx, cx ; 31 c9 ; 0xf8eca + mov ax, word [bp-022h] ; 8b 46 de ; 0xf8ecc + mov dx, word [bp-01eh] ; 8b 56 e2 ; 0xf8ecf + call 0831bh ; e8 46 f4 ; 0xf8ed2 + cmp ax, strict word 00003h ; 3d 03 00 ; 0xf8ed5 + jne short 08ec2h ; 75 e8 ; 0xf8ed8 + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf8eda ahci.c:698 + xor ah, ah ; 30 e4 ; 0xf8edd + mov di, ax ; 89 c7 ; 0xf8edf + sal di, 007h ; c1 e7 07 ; 0xf8ee1 + lea ax, [di+00130h] ; 8d 85 30 01 ; 0xf8ee4 + cwd ; 99 ; 0xf8ee8 + mov es, [bp-010h] ; 8e 46 f0 ; 0xf8ee9 + mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8eec + mov cx, dx ; 89 d1 ; 0xf8ef1 + mov dx, bx ; 89 da ; 0xf8ef3 + xchg cx, ax ; 91 ; 0xf8ef5 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8ef6 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8efa + out DX, eax ; 66 ef ; 0xf8efc + mov es, [bp-010h] ; 8e 46 f0 ; 0xf8efe + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8f01 + add dx, strict byte 00004h ; 83 c2 04 ; 0xf8f06 + mov ax, strict word 0ffffh ; b8 ff ff ; 0xf8f09 + mov cx, ax ; 89 c1 ; 0xf8f0c + xchg cx, ax ; 91 ; 0xf8f0e + sal eax, 010h ; 66 c1 e0 10 ; 0xf8f0f + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8f13 + out DX, eax ; 66 ef ; 0xf8f15 + les bx, [bp-028h] ; c4 5e d8 ; 0xf8f17 ahci.c:700 + mov al, byte [es:bx+00231h] ; 26 8a 87 31 02 ; 0xf8f1a + mov byte [bp-00eh], al ; 88 46 f2 ; 0xf8f1f + cmp AL, strict byte 004h ; 3c 04 ; 0xf8f22 ahci.c:705 + jnc short 08ec2h ; 73 9c ; 0xf8f24 + lea ax, [di+00118h] ; 8d 85 18 01 ; 0xf8f26 ahci.c:708 + mov es, [bp-010h] ; 8e 46 f0 ; 0xf8f2a ahci.c:250 + mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8f2d + xor cx, cx ; 31 c9 ; 0xf8f32 ahci.c:252 + mov dx, bx ; 89 da ; 0xf8f34 + xchg cx, ax ; 91 ; 0xf8f36 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8f37 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8f3b + out DX, eax ; 66 ef ; 0xf8f3d + add bx, strict byte 00004h ; 83 c3 04 ; 0xf8f3f ahci.c:253 + mov dx, bx ; 89 da ; 0xf8f42 + in eax, DX ; 66 ed ; 0xf8f44 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf8f46 + shr eax, 010h ; 66 c1 e8 10 ; 0xf8f48 + xchg dx, ax ; 92 ; 0xf8f4c + or AL, strict byte 010h ; 0c 10 ; 0xf8f4d + mov cx, dx ; 89 d1 ; 0xf8f4f + mov dx, bx ; 89 da ; 0xf8f51 + xchg cx, ax ; 91 ; 0xf8f53 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8f54 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8f58 + out DX, eax ; 66 ef ; 0xf8f5a + lea ax, [di+00124h] ; 8d 85 24 01 ; 0xf8f5c ahci.c:712 + cwd ; 99 ; 0xf8f60 + mov es, [bp-010h] ; 8e 46 f0 ; 0xf8f61 + mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8f64 + mov cx, dx ; 89 d1 ; 0xf8f69 + mov dx, bx ; 89 da ; 0xf8f6b + xchg cx, ax ; 91 ; 0xf8f6d + sal eax, 010h ; 66 c1 e0 10 ; 0xf8f6e + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8f72 + out DX, eax ; 66 ef ; 0xf8f74 + mov es, [bp-010h] ; 8e 46 f0 ; 0xf8f76 + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8f79 + add dx, strict byte 00004h ; 83 c2 04 ; 0xf8f7e + in eax, DX ; 66 ed ; 0xf8f81 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf8f83 + shr eax, 010h ; 66 c1 e8 10 ; 0xf8f85 + xchg dx, ax ; 92 ; 0xf8f89 + mov bl, byte [bp-00eh] ; 8a 5e f2 ; 0xf8f8a + add bl, 00ch ; 80 c3 0c ; 0xf8f8d + mov byte [bp-008h], bl ; 88 5e f8 ; 0xf8f90 + test dx, dx ; 85 d2 ; 0xf8f93 ahci.c:713 + jne short 08febh ; 75 54 ; 0xf8f95 + cmp ax, 00101h ; 3d 01 01 ; 0xf8f97 + jne short 08febh ; 75 4f ; 0xf8f9a + les bx, [bp-028h] ; c4 5e d8 ; 0xf8f9c ahci.c:723 + mov word [es:bx+006h], strict word 00000h ; 26 c7 47 06 00 00 ; 0xf8f9f + mov word [es:bx+004h], strict word 00000h ; 26 c7 47 04 00 00 ; 0xf8fa5 + mov word [es:bx+002h], strict word 00000h ; 26 c7 47 02 00 00 ; 0xf8fab + mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf8fb1 + lea dx, [bp-00232h] ; 8d 96 ce fd ; 0xf8fb6 ahci.c:724 + mov word [es:bx+008h], dx ; 26 89 57 08 ; 0xf8fba + mov [es:bx+00ah], ss ; 26 8c 57 0a ; 0xf8fbe + mov word [es:bx+00eh], strict word 00001h ; 26 c7 47 0e 01 00 ; 0xf8fc2 ahci.c:725 + mov word [es:bx+010h], 00200h ; 26 c7 47 10 00 02 ; 0xf8fc8 ahci.c:726 + mov bx, 000ech ; bb ec 00 ; 0xf8fce ahci.c:727 + mov ax, word [bp-028h] ; 8b 46 d8 ; 0xf8fd1 + mov dx, es ; 8c c2 ; 0xf8fd4 + call 084abh ; e8 d2 f4 ; 0xf8fd6 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf8fd9 ahci.c:730 + mov byte [bp-00ch], al ; 88 46 f4 ; 0xf8fdc + test byte [bp-00232h], 080h ; f6 86 ce fd 80 ; 0xf8fdf ahci.c:732 + je short 08feeh ; 74 08 ; 0xf8fe4 + mov ax, strict word 00001h ; b8 01 00 ; 0xf8fe6 + jmp short 08ff0h ; eb 05 ; 0xf8fe9 + jmp near 091b2h ; e9 c4 01 ; 0xf8feb + xor ax, ax ; 31 c0 ; 0xf8fee + mov dl, al ; 88 c2 ; 0xf8ff0 + mov ax, word [bp-00230h] ; 8b 86 d0 fd ; 0xf8ff2 ahci.c:733 + mov word [bp-01ah], ax ; 89 46 e6 ; 0xf8ff6 + mov ax, word [bp-0022ch] ; 8b 86 d4 fd ; 0xf8ff9 ahci.c:734 + mov word [bp-018h], ax ; 89 46 e8 ; 0xf8ffd + mov ax, word [bp-00226h] ; 8b 86 da fd ; 0xf9000 ahci.c:735 + mov word [bp-01ch], ax ; 89 46 e4 ; 0xf9004 + mov di, word [bp-001bah] ; 8b be 46 fe ; 0xf9007 ahci.c:736 + mov si, word [bp-001b8h] ; 8b b6 48 fe ; 0xf900b + xor ax, ax ; 31 c0 ; 0xf900f + mov word [bp-016h], ax ; 89 46 ea ; 0xf9011 + mov word [bp-014h], ax ; 89 46 ec ; 0xf9014 + cmp si, 00fffh ; 81 fe ff 0f ; 0xf9017 ahci.c:738 + jne short 09038h ; 75 1b ; 0xf901b + cmp di, strict byte 0ffffh ; 83 ff ff ; 0xf901d + jne short 09038h ; 75 16 ; 0xf9020 + mov ax, word [bp-00164h] ; 8b 86 9c fe ; 0xf9022 ahci.c:739 + mov word [bp-014h], ax ; 89 46 ec ; 0xf9026 + mov ax, word [bp-00166h] ; 8b 86 9a fe ; 0xf9029 + mov word [bp-016h], ax ; 89 46 ea ; 0xf902d + mov si, word [bp-00168h] ; 8b b6 98 fe ; 0xf9030 + mov di, word [bp-0016ah] ; 8b be 96 fe ; 0xf9034 + mov bl, byte [bp-00eh] ; 8a 5e f2 ; 0xf9038 ahci.c:743 + xor bh, bh ; 30 ff ; 0xf903b + mov es, [bp-026h] ; 8e 46 da ; 0xf903d + add bx, word [bp-028h] ; 03 5e d8 ; 0xf9040 + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf9043 + mov byte [es:bx+0022dh], al ; 26 88 87 2d 02 ; 0xf9046 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf904b ahci.c:744 + xor ah, ah ; 30 e4 ; 0xf904e + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf9050 + mov bx, word [bp-028h] ; 8b 5e d8 ; 0xf9053 + add bx, ax ; 01 c3 ; 0xf9056 + mov word [es:bx+022h], 0ff05h ; 26 c7 47 22 05 ff ; 0xf9058 + mov byte [es:bx+024h], dl ; 26 88 57 24 ; 0xf905e ahci.c:746 + mov byte [es:bx+025h], 000h ; 26 c6 47 25 00 ; 0xf9062 ahci.c:747 + mov word [es:bx+028h], 00200h ; 26 c7 47 28 00 02 ; 0xf9067 ahci.c:748 + mov byte [es:bx+027h], 001h ; 26 c6 47 27 01 ; 0xf906d ahci.c:749 + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf9072 ahci.c:750 + mov word [es:bx+03ch], ax ; 26 89 47 3c ; 0xf9075 + mov ax, word [bp-016h] ; 8b 46 ea ; 0xf9079 + mov word [es:bx+03ah], ax ; 26 89 47 3a ; 0xf907c + mov word [es:bx+038h], si ; 26 89 77 38 ; 0xf9080 + mov word [es:bx+036h], di ; 26 89 7f 36 ; 0xf9084 + mov ax, word [bp-018h] ; 8b 46 e8 ; 0xf9088 ahci.c:752 + mov word [es:bx+030h], ax ; 26 89 47 30 ; 0xf908b + mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xf908f ahci.c:753 + mov word [es:bx+032h], ax ; 26 89 47 32 ; 0xf9092 + mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xf9096 ahci.c:754 + mov word [es:bx+034h], ax ; 26 89 47 34 ; 0xf9099 + mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf909d ahci.c:757 + cmp AL, strict byte 001h ; 3c 01 ; 0xf90a0 + jc short 090b0h ; 72 0c ; 0xf90a2 + jbe short 090b8h ; 76 12 ; 0xf90a4 + cmp AL, strict byte 003h ; 3c 03 ; 0xf90a6 + je short 090c0h ; 74 16 ; 0xf90a8 + cmp AL, strict byte 002h ; 3c 02 ; 0xf90aa + je short 090bch ; 74 0e ; 0xf90ac + jmp short 0910ch ; eb 5c ; 0xf90ae + test al, al ; 84 c0 ; 0xf90b0 + jne short 0910ch ; 75 58 ; 0xf90b2 + mov BL, strict byte 040h ; b3 40 ; 0xf90b4 ahci.c:760 + jmp short 090c2h ; eb 0a ; 0xf90b6 ahci.c:761 + mov BL, strict byte 048h ; b3 48 ; 0xf90b8 ahci.c:763 + jmp short 090c2h ; eb 06 ; 0xf90ba ahci.c:764 + mov BL, strict byte 050h ; b3 50 ; 0xf90bc ahci.c:766 + jmp short 090c2h ; eb 02 ; 0xf90be ahci.c:767 + mov BL, strict byte 058h ; b3 58 ; 0xf90c0 ahci.c:769 + mov dl, bl ; 88 da ; 0xf90c2 ahci.c:773 + add dl, 007h ; 80 c2 07 ; 0xf90c4 + xor dh, dh ; 30 f6 ; 0xf90c7 + mov ax, dx ; 89 d0 ; 0xf90c9 + call 01650h ; e8 82 85 ; 0xf90cb + test al, al ; 84 c0 ; 0xf90ce + je short 0910ch ; 74 3a ; 0xf90d0 + mov al, bl ; 88 d8 ; 0xf90d2 ahci.c:776 + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf90d4 + xor ah, ah ; 30 e4 ; 0xf90d6 + call 01650h ; e8 75 85 ; 0xf90d8 + xor ah, ah ; 30 e4 ; 0xf90db + sal ax, 008h ; c1 e0 08 ; 0xf90dd + mov word [bp-02ch], ax ; 89 46 d4 ; 0xf90e0 + mov al, bl ; 88 d8 ; 0xf90e3 + xor ah, ah ; 30 e4 ; 0xf90e5 + call 01650h ; e8 66 85 ; 0xf90e7 + xor ah, ah ; 30 e4 ; 0xf90ea + mov cx, word [bp-02ch] ; 8b 4e d4 ; 0xf90ec + add cx, ax ; 01 c1 ; 0xf90ef + mov word [bp-030h], cx ; 89 4e d0 ; 0xf90f1 + mov al, bl ; 88 d8 ; 0xf90f4 ahci.c:777 + add AL, strict byte 002h ; 04 02 ; 0xf90f6 + call 01650h ; e8 55 85 ; 0xf90f8 + xor ah, ah ; 30 e4 ; 0xf90fb + mov word [bp-032h], ax ; 89 46 ce ; 0xf90fd + mov ax, dx ; 89 d0 ; 0xf9100 ahci.c:778 + call 01650h ; e8 4b 85 ; 0xf9102 + xor ah, ah ; 30 e4 ; 0xf9105 + mov word [bp-02eh], ax ; 89 46 d2 ; 0xf9107 + jmp short 0911ch ; eb 10 ; 0xf910a ahci.c:780 + push word [bp-014h] ; ff 76 ec ; 0xf910c ahci.c:781 + push word [bp-016h] ; ff 76 ea ; 0xf910f + push si ; 56 ; 0xf9112 + push di ; 57 ; 0xf9113 + mov dx, ss ; 8c d2 ; 0xf9114 + lea ax, [bp-032h] ; 8d 46 ce ; 0xf9116 + call 058b0h ; e8 94 c7 ; 0xf9119 + mov bx, 00da0h ; bb a0 0d ; 0xf911c ahci.c:785 + mov cx, ds ; 8c d9 ; 0xf911f + mov ax, strict word 00004h ; b8 04 00 ; 0xf9121 + call 018bch ; e8 95 87 ; 0xf9124 + push word [bp-014h] ; ff 76 ec ; 0xf9127 + push word [bp-016h] ; ff 76 ea ; 0xf912a + push si ; 56 ; 0xf912d + push di ; 57 ; 0xf912e + mov ax, word [bp-02eh] ; 8b 46 d2 ; 0xf912f + push ax ; 50 ; 0xf9132 + mov ax, word [bp-032h] ; 8b 46 ce ; 0xf9133 + push ax ; 50 ; 0xf9136 + mov ax, word [bp-030h] ; 8b 46 d0 ; 0xf9137 + push ax ; 50 ; 0xf913a + push word [bp-01ch] ; ff 76 e4 ; 0xf913b + push word [bp-018h] ; ff 76 e8 ; 0xf913e + push word [bp-01ah] ; ff 76 e6 ; 0xf9141 + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf9144 + xor ah, ah ; 30 e4 ; 0xf9147 + push ax ; 50 ; 0xf9149 + mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf914a + push ax ; 50 ; 0xf914d + push 00cd6h ; 68 d6 0c ; 0xf914e + push strict byte 00004h ; 6a 04 ; 0xf9151 + call 018ffh ; e8 a9 87 ; 0xf9153 + add sp, strict byte 0001ch ; 83 c4 1c ; 0xf9156 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf9159 ahci.c:787 + xor ah, ah ; 30 e4 ; 0xf915c + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf915e + mov di, word [bp-028h] ; 8b 7e d8 ; 0xf9161 + add di, ax ; 01 c7 ; 0xf9164 + mov es, [bp-026h] ; 8e 46 da ; 0xf9166 + lea di, [di+02ah] ; 8d 7d 2a ; 0xf9169 + push DS ; 1e ; 0xf916c + push SS ; 16 ; 0xf916d + pop DS ; 1f ; 0xf916e + lea si, [bp-032h] ; 8d 76 ce ; 0xf916f + movsw ; a5 ; 0xf9172 + movsw ; a5 ; 0xf9173 + movsw ; a5 ; 0xf9174 + pop DS ; 1f ; 0xf9175 + mov bx, word [bp-028h] ; 8b 5e d8 ; 0xf9176 ahci.c:790 + mov bl, byte [es:bx+001e2h] ; 26 8a 9f e2 01 ; 0xf9179 + mov dl, byte [bp-00eh] ; 8a 56 f2 ; 0xf917e ahci.c:791 + add dl, 00ch ; 80 c2 0c ; 0xf9181 + mov al, bl ; 88 d8 ; 0xf9184 + xor ah, ah ; 30 e4 ; 0xf9186 + mov si, word [bp-028h] ; 8b 76 d8 ; 0xf9188 + add si, ax ; 01 c6 ; 0xf918b + mov byte [es:si+001e3h], dl ; 26 88 94 e3 01 ; 0xf918d + db 0feh, 0c3h + ; inc bl ; fe c3 ; 0xf9192 ahci.c:792 + mov si, word [bp-028h] ; 8b 76 d8 ; 0xf9194 ahci.c:793 + mov byte [es:si+001e2h], bl ; 26 88 9c e2 01 ; 0xf9197 + mov bx, strict word 00075h ; bb 75 00 ; 0xf919c ahci.c:38 + mov ax, strict word 00040h ; b8 40 00 ; 0xf919f + mov es, ax ; 8e c0 ; 0xf91a2 + mov bl, byte [es:bx] ; 26 8a 1f ; 0xf91a4 + db 0feh, 0c3h + ; inc bl ; fe c3 ; 0xf91a7 ahci.c:797 + mov si, strict word 00075h ; be 75 00 ; 0xf91a9 ahci.c:43 + mov byte [es:si], bl ; 26 88 1c ; 0xf91ac + jmp near 09269h ; e9 b7 00 ; 0xf91af ahci.c:800 + cmp dx, 0eb14h ; 81 fa 14 eb ; 0xf91b2 + jne short 0920ch ; 75 54 ; 0xf91b6 + cmp ax, 00101h ; 3d 01 01 ; 0xf91b8 + jne short 0920ch ; 75 4f ; 0xf91bb + les bx, [bp-028h] ; c4 5e d8 ; 0xf91bd ahci.c:805 + mov word [es:bx+006h], strict word 00000h ; 26 c7 47 06 00 00 ; 0xf91c0 + mov word [es:bx+004h], strict word 00000h ; 26 c7 47 04 00 00 ; 0xf91c6 + mov word [es:bx+002h], strict word 00000h ; 26 c7 47 02 00 00 ; 0xf91cc + mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf91d2 + lea dx, [bp-00232h] ; 8d 96 ce fd ; 0xf91d7 ahci.c:806 + mov word [es:bx+008h], dx ; 26 89 57 08 ; 0xf91db + mov [es:bx+00ah], ss ; 26 8c 57 0a ; 0xf91df + mov word [es:bx+00eh], strict word 00001h ; 26 c7 47 0e 01 00 ; 0xf91e3 ahci.c:807 + mov word [es:bx+010h], 00200h ; 26 c7 47 10 00 02 ; 0xf91e9 ahci.c:808 + mov bx, 000a1h ; bb a1 00 ; 0xf91ef ahci.c:809 + mov ax, word [bp-028h] ; 8b 46 d8 ; 0xf91f2 + mov dx, es ; 8c c2 ; 0xf91f5 + call 084abh ; e8 b1 f2 ; 0xf91f7 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf91fa ahci.c:812 + mov byte [bp-00ch], al ; 88 46 f4 ; 0xf91fd + test byte [bp-00232h], 080h ; f6 86 ce fd 80 ; 0xf9200 ahci.c:814 + je short 0920eh ; 74 07 ; 0xf9205 + mov dx, strict word 00001h ; ba 01 00 ; 0xf9207 + jmp short 09210h ; eb 04 ; 0xf920a + jmp short 09269h ; eb 5b ; 0xf920c + xor dx, dx ; 31 d2 ; 0xf920e + mov bl, byte [bp-00eh] ; 8a 5e f2 ; 0xf9210 ahci.c:816 + xor bh, bh ; 30 ff ; 0xf9213 + mov es, [bp-026h] ; 8e 46 da ; 0xf9215 + add bx, word [bp-028h] ; 03 5e d8 ; 0xf9218 + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf921b + mov byte [es:bx+0022dh], al ; 26 88 87 2d 02 ; 0xf921e + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf9223 ahci.c:817 + xor ah, ah ; 30 e4 ; 0xf9226 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf9228 + mov bx, word [bp-028h] ; 8b 5e d8 ; 0xf922b + add bx, ax ; 01 c3 ; 0xf922e + mov word [es:bx+022h], 00505h ; 26 c7 47 22 05 05 ; 0xf9230 + mov byte [es:bx+024h], dl ; 26 88 57 24 ; 0xf9236 ahci.c:819 + mov word [es:bx+028h], 00800h ; 26 c7 47 28 00 08 ; 0xf923a ahci.c:820 + mov byte [es:bx+027h], 000h ; 26 c6 47 27 00 ; 0xf9240 ahci.c:821 + mov bx, word [bp-028h] ; 8b 5e d8 ; 0xf9245 ahci.c:824 + mov al, byte [es:bx+001f3h] ; 26 8a 87 f3 01 ; 0xf9248 + mov ah, byte [bp-00eh] ; 8a 66 f2 ; 0xf924d ahci.c:825 + add ah, 00ch ; 80 c4 0c ; 0xf9250 + mov bl, al ; 88 c3 ; 0xf9253 + xor bh, bh ; 30 ff ; 0xf9255 + add bx, word [bp-028h] ; 03 5e d8 ; 0xf9257 + mov byte [es:bx+001f4h], ah ; 26 88 a7 f4 01 ; 0xf925a + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf925f ahci.c:826 + mov bx, word [bp-028h] ; 8b 5e d8 ; 0xf9261 ahci.c:827 + mov byte [es:bx+001f3h], al ; 26 88 87 f3 01 ; 0xf9264 + inc byte [bp-00eh] ; fe 46 f2 ; 0xf9269 ahci.c:832 + mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf926c ahci.c:833 + les bx, [bp-028h] ; c4 5e d8 ; 0xf926f + mov byte [es:bx+00231h], al ; 26 88 87 31 02 ; 0xf9272 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf9277 ahci.c:838 + pop di ; 5f ; 0xf927a + pop si ; 5e ; 0xf927b + pop cx ; 59 ; 0xf927c + pop bp ; 5d ; 0xf927d + retn ; c3 ; 0xf927e + ; disGetNextSymbol 0xf927f LB 0xc49 -> off=0x0 cb=000000000000003a uValue=00000000000f7c7f 'ahci_mem_alloc' +ahci_mem_alloc: ; 0xf927f LB 0x3a + push bx ; 53 ; 0xf927f ahci.c:843 + push cx ; 51 ; 0xf9280 + push dx ; 52 ; 0xf9281 + push di ; 57 ; 0xf9282 + push bp ; 55 ; 0xf9283 + mov bp, sp ; 89 e5 ; 0xf9284 + mov di, 00413h ; bf 13 04 ; 0xf9286 ahci.c:48 + xor ax, ax ; 31 c0 ; 0xf9289 + mov es, ax ; 8e c0 ; 0xf928b + mov ax, word [es:di] ; 26 8b 05 ; 0xf928d + test ax, ax ; 85 c0 ; 0xf9290 ahci.c:852 + je short 092b3h ; 74 1f ; 0xf9292 + dec ax ; 48 ; 0xf9294 ahci.c:853 + mov bx, ax ; 89 c3 ; 0xf9295 + xor dx, dx ; 31 d2 ; 0xf9297 ahci.c:856 + mov cx, strict word 0000ah ; b9 0a 00 ; 0xf9299 + sal ax, 1 ; d1 e0 ; 0xf929c + rcl dx, 1 ; d1 d2 ; 0xf929e + loop 0929ch ; e2 fa ; 0xf92a0 + mov di, dx ; 89 d7 ; 0xf92a2 + mov cx, strict word 00004h ; b9 04 00 ; 0xf92a4 + shr di, 1 ; d1 ef ; 0xf92a7 + rcr ax, 1 ; d1 d8 ; 0xf92a9 + loop 092a7h ; e2 fa ; 0xf92ab + mov di, 00413h ; bf 13 04 ; 0xf92ad ahci.c:53 + mov word [es:di], bx ; 26 89 1d ; 0xf92b0 + pop bp ; 5d ; 0xf92b3 ahci.c:861 + pop di ; 5f ; 0xf92b4 + pop dx ; 5a ; 0xf92b5 + pop cx ; 59 ; 0xf92b6 + pop bx ; 5b ; 0xf92b7 + retn ; c3 ; 0xf92b8 + ; disGetNextSymbol 0xf92b9 LB 0xc0f -> off=0x0 cb=0000000000000156 uValue=00000000000f7cb9 'ahci_hba_init' +ahci_hba_init: ; 0xf92b9 LB 0x156 + push bp ; 55 ; 0xf92b9 ahci.c:866 + mov bp, sp ; 89 e5 ; 0xf92ba + push bx ; 53 ; 0xf92bc + push cx ; 51 ; 0xf92bd + push dx ; 52 ; 0xf92be + push si ; 56 ; 0xf92bf + push di ; 57 ; 0xf92c0 + sub sp, strict byte 00006h ; 83 ec 06 ; 0xf92c1 + mov si, ax ; 89 c6 ; 0xf92c4 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf92c6 ahci.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf92c9 + mov es, ax ; 8e c0 ; 0xf92cc + mov di, word [es:bx] ; 26 8b 3f ; 0xf92ce + mov bx, 00122h ; bb 22 01 ; 0xf92d1 ahci.c:877 + mov ax, strict word 00010h ; b8 10 00 ; 0xf92d4 ahci.c:879 + xor cx, cx ; 31 c9 ; 0xf92d7 + mov dx, si ; 89 f2 ; 0xf92d9 + xchg cx, ax ; 91 ; 0xf92db + sal eax, 010h ; 66 c1 e0 10 ; 0xf92dc + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf92e0 + out DX, eax ; 66 ef ; 0xf92e2 + lea dx, [si+004h] ; 8d 54 04 ; 0xf92e4 + in eax, DX ; 66 ed ; 0xf92e7 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf92e9 + shr eax, 010h ; 66 c1 e8 10 ; 0xf92eb + xchg dx, ax ; 92 ; 0xf92ef + call 0927fh ; e8 8c ff ; 0xf92f0 ahci.c:885 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf92f3 + test ax, ax ; 85 c0 ; 0xf92f6 ahci.c:886 + jne short 092fdh ; 75 03 ; 0xf92f8 + jmp near 09405h ; e9 08 01 ; 0xf92fa + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf92fd ahci.c:889 + mov es, di ; 8e c7 ; 0xf9300 + mov word [es:bx+00232h], ax ; 26 89 87 32 02 ; 0xf9302 + mov byte [es:bx+00231h], 000h ; 26 c6 87 31 02 00 ; 0xf9307 ahci.c:895 + xor bx, bx ; 31 db ; 0xf930d ahci.c:897 + mov es, ax ; 8e c0 ; 0xf930f + mov byte [es:bx+00262h], 0ffh ; 26 c6 87 62 02 ff ; 0xf9311 ahci.c:898 + mov word [es:bx+00260h], si ; 26 89 b7 60 02 ; 0xf9317 ahci.c:899 + mov word [es:bx+00264h], 0c000h ; 26 c7 87 64 02 00 c0 ; 0xf931c ahci.c:904 + mov word [es:bx+00266h], strict word 0000ch ; 26 c7 87 66 02 0c 00 ; 0xf9323 + mov ax, strict word 00004h ; b8 04 00 ; 0xf932a ahci.c:252 + xor cx, cx ; 31 c9 ; 0xf932d + mov dx, si ; 89 f2 ; 0xf932f + xchg cx, ax ; 91 ; 0xf9331 + sal eax, 010h ; 66 c1 e0 10 ; 0xf9332 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf9336 + out DX, eax ; 66 ef ; 0xf9338 + lea bx, [si+004h] ; 8d 5c 04 ; 0xf933a ahci.c:253 + mov dx, bx ; 89 da ; 0xf933d + in eax, DX ; 66 ed ; 0xf933f + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf9341 + shr eax, 010h ; 66 c1 e8 10 ; 0xf9343 + xchg dx, ax ; 92 ; 0xf9347 + mov cx, dx ; 89 d1 ; 0xf9348 + or AL, strict byte 001h ; 0c 01 ; 0xf934a + mov dx, bx ; 89 da ; 0xf934c + xchg cx, ax ; 91 ; 0xf934e + sal eax, 010h ; 66 c1 e0 10 ; 0xf934f + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf9353 + out DX, eax ; 66 ef ; 0xf9355 + mov ax, strict word 00004h ; b8 04 00 ; 0xf9357 ahci.c:910 + xor cx, cx ; 31 c9 ; 0xf935a + mov dx, si ; 89 f2 ; 0xf935c + xchg cx, ax ; 91 ; 0xf935e + sal eax, 010h ; 66 c1 e0 10 ; 0xf935f + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf9363 + out DX, eax ; 66 ef ; 0xf9365 + lea bx, [si+004h] ; 8d 5c 04 ; 0xf9367 + mov dx, bx ; 89 da ; 0xf936a + in eax, DX ; 66 ed ; 0xf936c + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf936e + shr eax, 010h ; 66 c1 e8 10 ; 0xf9370 + xchg dx, ax ; 92 ; 0xf9374 + test AL, strict byte 001h ; a8 01 ; 0xf9375 ahci.c:911 + jne short 09357h ; 75 de ; 0xf9377 + xor ax, ax ; 31 c0 ; 0xf9379 ahci.c:913 + xor cx, cx ; 31 c9 ; 0xf937b + mov dx, si ; 89 f2 ; 0xf937d + xchg cx, ax ; 91 ; 0xf937f + sal eax, 010h ; 66 c1 e0 10 ; 0xf9380 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf9384 + out DX, eax ; 66 ef ; 0xf9386 + mov dx, bx ; 89 da ; 0xf9388 + in eax, DX ; 66 ed ; 0xf938a + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf938c + shr eax, 010h ; 66 c1 e8 10 ; 0xf938e + xchg dx, ax ; 92 ; 0xf9392 + push strict byte 00000h ; 6a 00 ; 0xf9393 ahci.c:914 + mov bx, strict word 0001fh ; bb 1f 00 ; 0xf9395 + xor cx, cx ; 31 c9 ; 0xf9398 + call 0831bh ; e8 7e ef ; 0xf939a + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf939d + mov byte [bp-00ch], al ; 88 46 f4 ; 0xf939f + mov byte [bp-00eh], 000h ; c6 46 f2 00 ; 0xf93a2 ahci.c:919 + jmp short 093c9h ; eb 21 ; 0xf93a6 ahci.c:920 + xor al, al ; 30 c0 ; 0xf93a8 ahci.c:272 + test al, al ; 84 c0 ; 0xf93aa ahci.c:273 + je short 093c0h ; 74 12 ; 0xf93ac + mov bl, byte [bp-00eh] ; 8a 5e f2 ; 0xf93ae ahci.c:925 + xor bh, bh ; 30 ff ; 0xf93b1 + xor ax, ax ; 31 c0 ; 0xf93b3 + mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf93b5 + call 08d9ch ; e8 e1 f9 ; 0xf93b8 + dec byte [bp-00ch] ; fe 4e f4 ; 0xf93bb ahci.c:926 + je short 09403h ; 74 43 ; 0xf93be ahci.c:927 + inc byte [bp-00eh] ; fe 46 f2 ; 0xf93c0 ahci.c:930 + cmp byte [bp-00eh], 020h ; 80 7e f2 20 ; 0xf93c3 ahci.c:931 + jnc short 09403h ; 73 3a ; 0xf93c7 + mov cl, byte [bp-00eh] ; 8a 4e f2 ; 0xf93c9 + xor ch, ch ; 30 ed ; 0xf93cc + mov bx, strict word 00001h ; bb 01 00 ; 0xf93ce + xor di, di ; 31 ff ; 0xf93d1 + jcxz 093dbh ; e3 06 ; 0xf93d3 + sal bx, 1 ; d1 e3 ; 0xf93d5 + rcl di, 1 ; d1 d7 ; 0xf93d7 + loop 093d5h ; e2 fa ; 0xf93d9 + mov ax, strict word 0000ch ; b8 0c 00 ; 0xf93db + xor cx, cx ; 31 c9 ; 0xf93de + mov dx, si ; 89 f2 ; 0xf93e0 + xchg cx, ax ; 91 ; 0xf93e2 + sal eax, 010h ; 66 c1 e0 10 ; 0xf93e3 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf93e7 + out DX, eax ; 66 ef ; 0xf93e9 + lea dx, [si+004h] ; 8d 54 04 ; 0xf93eb + in eax, DX ; 66 ed ; 0xf93ee + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf93f0 + shr eax, 010h ; 66 c1 e8 10 ; 0xf93f2 + xchg dx, ax ; 92 ; 0xf93f6 + test dx, di ; 85 fa ; 0xf93f7 + jne short 093ffh ; 75 04 ; 0xf93f9 + test ax, bx ; 85 d8 ; 0xf93fb + je short 093a8h ; 74 a9 ; 0xf93fd + mov AL, strict byte 001h ; b0 01 ; 0xf93ff + jmp short 093aah ; eb a7 ; 0xf9401 + xor ax, ax ; 31 c0 ; 0xf9403 ahci.c:933 + lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf9405 ahci.c:934 + pop di ; 5f ; 0xf9408 + pop si ; 5e ; 0xf9409 + pop dx ; 5a ; 0xf940a + pop cx ; 59 ; 0xf940b + pop bx ; 5b ; 0xf940c + pop bp ; 5d ; 0xf940d + retn ; c3 ; 0xf940e + ; disGetNextSymbol 0xf940f LB 0xab9 -> off=0x17 cb=000000000000013a uValue=00000000000f7e26 'ahci_init' + db 00bh, 005h, 004h, 003h, 002h, 001h, 000h, 00fh, 095h, 0edh, 094h, 0f3h, 094h, 0f9h, 094h, 0ffh + db 094h, 005h, 095h, 00bh, 095h, 00fh, 095h +ahci_init: ; 0xf9426 LB 0x13a + push bp ; 55 ; 0xf9426 ahci.c:939 + mov bp, sp ; 89 e5 ; 0xf9427 + push si ; 56 ; 0xf9429 + push di ; 57 ; 0xf942a + sub sp, strict byte 00012h ; 83 ec 12 ; 0xf942b + mov ax, 00601h ; b8 01 06 ; 0xf942e ahci.c:943 + mov dx, strict word 00001h ; ba 01 00 ; 0xf9431 + call 0995eh ; e8 27 05 ; 0xf9434 + mov dx, ax ; 89 c2 ; 0xf9437 + cmp ax, strict word 0ffffh ; 3d ff ff ; 0xf9439 ahci.c:944 + je short 0948ah ; 74 4c ; 0xf943c + xor al, al ; 30 c0 ; 0xf943e ahci.c:949 + shr ax, 008h ; c1 e8 08 ; 0xf9440 + mov byte [bp-006h], al ; 88 46 fa ; 0xf9443 + mov byte [bp-00ah], dl ; 88 56 f6 ; 0xf9446 ahci.c:950 + xor dh, dh ; 30 f6 ; 0xf9449 ahci.c:955 + xor ah, ah ; 30 e4 ; 0xf944b + mov bx, strict word 00034h ; bb 34 00 ; 0xf944d + call 09989h ; e8 36 05 ; 0xf9450 + mov cl, al ; 88 c1 ; 0xf9453 + test cl, cl ; 84 c9 ; 0xf9455 ahci.c:957 + je short 0948dh ; 74 34 ; 0xf9457 + mov bl, cl ; 88 cb ; 0xf9459 ahci.c:959 + xor bh, bh ; 30 ff ; 0xf945b + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf945d + mov byte [bp-00eh], al ; 88 46 f2 ; 0xf9460 + mov byte [bp-00dh], bh ; 88 7e f3 ; 0xf9463 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf9466 + mov byte [bp-014h], al ; 88 46 ec ; 0xf9469 + mov byte [bp-013h], bh ; 88 7e ed ; 0xf946c + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf946f + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf9472 + call 09989h ; e8 11 05 ; 0xf9475 + cmp AL, strict byte 012h ; 3c 12 ; 0xf9478 ahci.c:963 + je short 0948dh ; 74 11 ; 0xf947a + mov bl, cl ; 88 cb ; 0xf947c ahci.c:967 + db 0feh, 0c3h + ; inc bl ; fe c3 ; 0xf947e + xor bh, bh ; 30 ff ; 0xf9480 + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9482 + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf9485 + jmp short 09450h ; eb c6 ; 0xf9488 ahci.c:968 + jmp near 09559h ; e9 cc 00 ; 0xf948a + test cl, cl ; 84 c9 ; 0xf948d ahci.c:970 + je short 0948ah ; 74 f9 ; 0xf948f + add cl, 002h ; 80 c1 02 ; 0xf9491 ahci.c:977 + mov bl, cl ; 88 cb ; 0xf9494 ahci.c:979 + xor bh, bh ; 30 ff ; 0xf9496 + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf9498 + mov byte [bp-012h], al ; 88 46 ee ; 0xf949b + mov byte [bp-011h], bh ; 88 7e ef ; 0xf949e + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf94a1 + mov byte [bp-00ch], al ; 88 46 f4 ; 0xf94a4 + mov byte [bp-00bh], bh ; 88 7e f5 ; 0xf94a7 + mov dx, word [bp-012h] ; 8b 56 ee ; 0xf94aa + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf94ad + call 09989h ; e8 d6 04 ; 0xf94b0 + cmp AL, strict byte 010h ; 3c 10 ; 0xf94b3 ahci.c:980 + jne short 0948ah ; 75 d3 ; 0xf94b5 + mov byte [bp-008h], 000h ; c6 46 f8 00 ; 0xf94b7 ahci.c:983 + mov bl, cl ; 88 cb ; 0xf94bb ahci.c:985 + add bl, 002h ; 80 c3 02 ; 0xf94bd + xor bh, bh ; 30 ff ; 0xf94c0 + mov dx, word [bp-012h] ; 8b 56 ee ; 0xf94c2 + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf94c5 + call 099b7h ; e8 ec 04 ; 0xf94c8 + mov dx, ax ; 89 c2 ; 0xf94cb + and ax, strict word 0000fh ; 25 0f 00 ; 0xf94cd ahci.c:989 + sub ax, strict word 00004h ; 2d 04 00 ; 0xf94d0 + cmp ax, strict word 0000bh ; 3d 0b 00 ; 0xf94d3 + jnbe short 0950fh ; 77 37 ; 0xf94d6 + push CS ; 0e ; 0xf94d8 + pop ES ; 07 ; 0xf94d9 + mov cx, strict word 00008h ; b9 08 00 ; 0xf94da + mov di, 0940fh ; bf 0f 94 ; 0xf94dd + repne scasb ; f2 ae ; 0xf94e0 + sal cx, 1 ; d1 e1 ; 0xf94e2 + mov di, cx ; 89 cf ; 0xf94e4 + mov ax, word [cs:di-06beah] ; 2e 8b 85 16 94 ; 0xf94e6 + jmp ax ; ff e0 ; 0xf94eb + mov byte [bp-008h], 010h ; c6 46 f8 10 ; 0xf94ed ahci.c:992 + jmp short 0950fh ; eb 1c ; 0xf94f1 ahci.c:993 + mov byte [bp-008h], 014h ; c6 46 f8 14 ; 0xf94f3 ahci.c:995 + jmp short 0950fh ; eb 16 ; 0xf94f7 ahci.c:996 + mov byte [bp-008h], 018h ; c6 46 f8 18 ; 0xf94f9 ahci.c:998 + jmp short 0950fh ; eb 10 ; 0xf94fd ahci.c:999 + mov byte [bp-008h], 01ch ; c6 46 f8 1c ; 0xf94ff ahci.c:1001 + jmp short 0950fh ; eb 0a ; 0xf9503 ahci.c:1002 + mov byte [bp-008h], 020h ; c6 46 f8 20 ; 0xf9505 ahci.c:1004 + jmp short 0950fh ; eb 04 ; 0xf9509 ahci.c:1005 + mov byte [bp-008h], 024h ; c6 46 f8 24 ; 0xf950b ahci.c:1007 + mov si, dx ; 89 d6 ; 0xf950f ahci.c:1016 + shr si, 004h ; c1 ee 04 ; 0xf9511 + sal si, 002h ; c1 e6 02 ; 0xf9514 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf9517 ahci.c:1018 + test al, al ; 84 c0 ; 0xf951a + je short 09559h ; 74 3b ; 0xf951c + mov bl, al ; 88 c3 ; 0xf951e ahci.c:1020 + xor bh, bh ; 30 ff ; 0xf9520 + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf9522 + mov byte [bp-010h], al ; 88 46 f0 ; 0xf9525 + mov byte [bp-00fh], bh ; 88 7e f1 ; 0xf9528 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf952b + mov byte [bp-016h], al ; 88 46 ea ; 0xf952e + mov byte [bp-015h], bh ; 88 7e eb ; 0xf9531 + mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf9534 + mov ax, word [bp-016h] ; 8b 46 ea ; 0xf9537 + call 099e1h ; e8 a4 04 ; 0xf953a + test AL, strict byte 001h ; a8 01 ; 0xf953d ahci.c:1024 + je short 09559h ; 74 18 ; 0xf953f + and AL, strict byte 0f0h ; 24 f0 ; 0xf9541 ahci.c:1027 + add si, ax ; 01 c6 ; 0xf9543 + mov cx, strict word 00007h ; b9 07 00 ; 0xf9545 ahci.c:1030 + mov bx, strict word 00004h ; bb 04 00 ; 0xf9548 + mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf954b + mov ax, word [bp-016h] ; 8b 46 ea ; 0xf954e + call 09a2fh ; e8 db 04 ; 0xf9551 + mov ax, si ; 89 f0 ; 0xf9554 ahci.c:1033 + call 092b9h ; e8 60 fd ; 0xf9556 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf9559 ahci.c:1047 + pop di ; 5f ; 0xf955c + pop si ; 5e ; 0xf955d + pop bp ; 5d ; 0xf955e + retn ; c3 ; 0xf955f + ; disGetNextSymbol 0xf9560 LB 0x968 -> off=0x0 cb=000000000000001b uValue=00000000000f7f60 'apm_out_str' +apm_out_str: ; 0xf9560 LB 0x1b + push bp ; 55 ; 0xf9560 apm.c:146 + mov bp, sp ; 89 e5 ; 0xf9561 + push bx ; 53 ; 0xf9563 + mov bx, ax ; 89 c3 ; 0xf9564 + cmp byte [bx], 000h ; 80 3f 00 ; 0xf9566 apm.c:148 + je short 09575h ; 74 0a ; 0xf9569 + mov al, byte [bx] ; 8a 07 ; 0xf956b apm.c:149 + out DX, AL ; ee ; 0xf956d + inc bx ; 43 ; 0xf956e + mov al, byte [bx] ; 8a 07 ; 0xf956f + db 00ah, 0c0h + ; or al, al ; 0a c0 ; 0xf9571 + jne short 0956dh ; 75 f8 ; 0xf9573 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf9575 apm.c:150 + pop bx ; 5b ; 0xf9578 + pop bp ; 5d ; 0xf9579 + retn ; c3 ; 0xf957a + ; disGetNextSymbol 0xf957b LB 0x94d -> off=0x1d cb=00000000000000d7 uValue=00000000000f7f98 'apm_function' + db 00eh, 00bh, 007h, 006h, 005h, 004h, 002h, 001h, 000h, 03eh, 096h, 0c6h, 095h, 069h, 096h, 0d8h + db 095h, 069h, 096h, 0f3h, 095h, 069h, 096h, 0f8h, 095h, 039h, 096h, 032h, 096h +apm_function: ; 0xf9598 LB 0xd7 + push bp ; 55 ; 0xf9598 apm.c:152 + mov bp, sp ; 89 e5 ; 0xf9599 + push di ; 57 ; 0xf959b + and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf959c apm.c:156 + mov dx, word [bp+012h] ; 8b 56 12 ; 0xf95a0 apm.c:157 + xor dh, dh ; 30 f6 ; 0xf95a3 + cmp dx, strict byte 0000eh ; 83 fa 0e ; 0xf95a5 + jnbe short 09615h ; 77 6b ; 0xf95a8 + mov al, dl ; 88 d0 ; 0xf95aa + push CS ; 0e ; 0xf95ac + pop ES ; 07 ; 0xf95ad + mov cx, strict word 0000ah ; b9 0a 00 ; 0xf95ae + mov di, 0957bh ; bf 7b 95 ; 0xf95b1 + repne scasb ; f2 ae ; 0xf95b4 + sal cx, 1 ; d1 e1 ; 0xf95b6 + mov di, cx ; 89 cf ; 0xf95b8 + mov bx, word [cs:di-06a7ch] ; 2e 8b 9d 84 95 ; 0xf95ba + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf95bf + or AL, strict byte 001h ; 0c 01 ; 0xf95c2 + jmp bx ; ff e3 ; 0xf95c4 + mov word [bp+012h], 00102h ; c7 46 12 02 01 ; 0xf95c6 apm.c:159 + mov word [bp+00ch], 0504dh ; c7 46 0c 4d 50 ; 0xf95cb apm.c:160 + mov word [bp+010h], strict word 00003h ; c7 46 10 03 00 ; 0xf95d0 apm.c:161 + jmp near 09669h ; e9 91 00 ; 0xf95d5 apm.c:162 + mov word [bp+012h], 0f000h ; c7 46 12 00 f0 ; 0xf95d8 apm.c:172 + mov word [bp+00ch], 09c34h ; c7 46 0c 34 9c ; 0xf95dd apm.c:173 + mov word [bp+010h], 0f000h ; c7 46 10 00 f0 ; 0xf95e2 apm.c:174 + mov ax, strict word 0fff0h ; b8 f0 ff ; 0xf95e7 apm.c:175 + mov word [bp+006h], ax ; 89 46 06 ; 0xf95ea + mov word [bp+004h], ax ; 89 46 04 ; 0xf95ed apm.c:176 + jmp near 09669h ; e9 76 00 ; 0xf95f0 apm.c:177 + sti ; fb ; 0xf95f3 apm.c:194 + hlt ; f4 ; 0xf95f4 apm.c:195 + jmp near 09669h ; e9 71 00 ; 0xf95f5 apm.c:196 + cmp word [bp+010h], strict byte 00003h ; 83 7e 10 03 ; 0xf95f8 apm.c:200 + je short 0961fh ; 74 21 ; 0xf95fc + cmp word [bp+010h], strict byte 00002h ; 83 7e 10 02 ; 0xf95fe + je short 09617h ; 74 13 ; 0xf9602 + cmp word [bp+010h], strict byte 00001h ; 83 7e 10 01 ; 0xf9604 + jne short 09627h ; 75 1d ; 0xf9608 + mov dx, 0040fh ; ba 0f 04 ; 0xf960a apm.c:202 + mov ax, 00d10h ; b8 10 0d ; 0xf960d + call 09560h ; e8 4d ff ; 0xf9610 + jmp short 09669h ; eb 54 ; 0xf9613 apm.c:203 + jmp short 0963eh ; eb 27 ; 0xf9615 + mov dx, 0040fh ; ba 0f 04 ; 0xf9617 apm.c:205 + mov ax, 00d18h ; b8 18 0d ; 0xf961a + jmp short 09610h ; eb f1 ; 0xf961d + mov dx, 0040fh ; ba 0f 04 ; 0xf961f apm.c:208 + mov ax, 00d20h ; b8 20 0d ; 0xf9622 + jmp short 09610h ; eb e9 ; 0xf9625 + or dh, 00ah ; 80 ce 0a ; 0xf9627 apm.c:211 + mov word [bp+012h], dx ; 89 56 12 ; 0xf962a + mov word [bp+018h], ax ; 89 46 18 ; 0xf962d apm.c:212 + jmp short 09669h ; eb 37 ; 0xf9630 apm.c:214 + mov word [bp+012h], 00102h ; c7 46 12 02 01 ; 0xf9632 apm.c:216 + jmp short 09669h ; eb 30 ; 0xf9637 apm.c:217 + or dh, 080h ; 80 ce 80 ; 0xf9639 apm.c:224 + jmp short 0962ah ; eb ec ; 0xf963c + mov bx, 00da0h ; bb a0 0d ; 0xf963e apm.c:228 + mov cx, ds ; 8c d9 ; 0xf9641 + mov ax, strict word 00004h ; b8 04 00 ; 0xf9643 + call 018bch ; e8 73 82 ; 0xf9646 + push word [bp+00ch] ; ff 76 0c ; 0xf9649 + push word [bp+012h] ; ff 76 12 ; 0xf964c + push 00d29h ; 68 29 0d ; 0xf964f + push strict byte 00004h ; 6a 04 ; 0xf9652 + call 018ffh ; e8 a8 82 ; 0xf9654 + add sp, strict byte 00008h ; 83 c4 08 ; 0xf9657 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf965a apm.c:229 + xor ah, ah ; 30 e4 ; 0xf965d + or ah, 00ch ; 80 cc 0c ; 0xf965f + mov word [bp+012h], ax ; 89 46 12 ; 0xf9662 + or byte [bp+018h], 001h ; 80 4e 18 01 ; 0xf9665 apm.c:230 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf9669 apm.c:232 + pop di ; 5f ; 0xf966c + pop bp ; 5d ; 0xf966d + retn ; c3 ; 0xf966e + ; disGetNextSymbol 0xf966f LB 0x859 -> off=0x0 cb=0000000000000024 uValue=00000000000f806f 'pci16_select_reg' +pci16_select_reg: ; 0xf966f LB 0x24 + push bp ; 55 ; 0xf966f pcibios.c:188 + mov bp, sp ; 89 e5 ; 0xf9670 + push bx ; 53 ; 0xf9672 + and dl, 0fch ; 80 e2 fc ; 0xf9673 pcibios.c:190 + mov bx, dx ; 89 d3 ; 0xf9676 + mov dx, 00cf8h ; ba f8 0c ; 0xf9678 + movzx eax, ax ; 66 0f b7 c0 ; 0xf967b + sal eax, 008h ; 66 c1 e0 08 ; 0xf967f + or eax, strict dword 080000000h ; 66 0d 00 00 00 80 ; 0xf9683 + db 08ah, 0c3h + ; mov al, bl ; 8a c3 ; 0xf9689 + out DX, eax ; 66 ef ; 0xf968b + lea sp, [bp-002h] ; 8d 66 fe ; 0xf968d pcibios.c:191 + pop bx ; 5b ; 0xf9690 + pop bp ; 5d ; 0xf9691 + retn ; c3 ; 0xf9692 + ; disGetNextSymbol 0xf9693 LB 0x835 -> off=0x0 cb=00000000000000ed uValue=00000000000f8093 'pci16_find_device' +pci16_find_device: ; 0xf9693 LB 0xed + push bp ; 55 ; 0xf9693 pcibios.c:221 + mov bp, sp ; 89 e5 ; 0xf9694 + push si ; 56 ; 0xf9696 + push di ; 57 ; 0xf9697 + sub sp, strict byte 0000ch ; 83 ec 0c ; 0xf9698 + push ax ; 50 ; 0xf969b + push dx ; 52 ; 0xf969c + mov si, bx ; 89 de ; 0xf969d + mov di, cx ; 89 cf ; 0xf969f + test cx, cx ; 85 c9 ; 0xf96a1 pcibios.c:231 + xor bx, bx ; 31 db ; 0xf96a3 pcibios.c:238 + mov byte [bp-008h], 000h ; c6 46 f8 00 ; 0xf96a5 pcibios.c:239 + test bl, 007h ; f6 c3 07 ; 0xf96a9 pcibios.c:249 + jne short 096dbh ; 75 2d ; 0xf96ac + mov dx, strict word 0000eh ; ba 0e 00 ; 0xf96ae pcibios.c:250 + mov ax, bx ; 89 d8 ; 0xf96b1 + call 0966fh ; e8 b9 ff ; 0xf96b3 + mov dx, 00cfeh ; ba fe 0c ; 0xf96b6 pcibios.c:251 + in AL, DX ; ec ; 0xf96b9 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf96ba + mov byte [bp-006h], al ; 88 46 fa ; 0xf96bc + cmp AL, strict byte 0ffh ; 3c ff ; 0xf96bf pcibios.c:252 + jne short 096c9h ; 75 06 ; 0xf96c1 + add bx, strict byte 00008h ; 83 c3 08 ; 0xf96c3 pcibios.c:253 + jmp near 0975ch ; e9 93 00 ; 0xf96c6 pcibios.c:254 + test byte [bp-006h], 080h ; f6 46 fa 80 ; 0xf96c9 pcibios.c:256 + je short 096d6h ; 74 07 ; 0xf96cd + mov word [bp-010h], strict word 00001h ; c7 46 f0 01 00 ; 0xf96cf pcibios.c:257 + jmp short 096dbh ; eb 05 ; 0xf96d4 pcibios.c:258 + mov word [bp-010h], strict word 00008h ; c7 46 f0 08 00 ; 0xf96d6 pcibios.c:259 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf96db pcibios.c:270 + and AL, strict byte 007h ; 24 07 ; 0xf96de + cmp AL, strict byte 001h ; 3c 01 ; 0xf96e0 + jne short 09703h ; 75 1f ; 0xf96e2 + mov ax, bx ; 89 d8 ; 0xf96e4 + shr ax, 008h ; c1 e8 08 ; 0xf96e6 + test ax, ax ; 85 c0 ; 0xf96e9 + jne short 09703h ; 75 16 ; 0xf96eb + mov dx, strict word 0001ah ; ba 1a 00 ; 0xf96ed pcibios.c:272 + mov ax, bx ; 89 d8 ; 0xf96f0 + call 0966fh ; e8 7a ff ; 0xf96f2 + mov dx, 00cfeh ; ba fe 0c ; 0xf96f5 pcibios.c:273 + in AL, DX ; ec ; 0xf96f8 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf96f9 + cmp al, byte [bp-008h] ; 3a 46 f8 ; 0xf96fb pcibios.c:274 + jbe short 09703h ; 76 03 ; 0xf96fe + mov byte [bp-008h], al ; 88 46 f8 ; 0xf9700 pcibios.c:275 + test di, di ; 85 ff ; 0xf9703 pcibios.c:279 + je short 0970ch ; 74 05 ; 0xf9705 + mov dx, strict word 00008h ; ba 08 00 ; 0xf9707 + jmp short 0970eh ; eb 02 ; 0xf970a + xor dx, dx ; 31 d2 ; 0xf970c + mov ax, bx ; 89 d8 ; 0xf970e + call 0966fh ; e8 5c ff ; 0xf9710 + mov dx, 00cfch ; ba fc 0c ; 0xf9713 pcibios.c:280 + in eax, DX ; 66 ed ; 0xf9716 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf9718 + shr eax, 010h ; 66 c1 e8 10 ; 0xf971a + xchg dx, ax ; 92 ; 0xf971e + mov word [bp-00ah], ax ; 89 46 f6 ; 0xf971f + mov word [bp-00ch], dx ; 89 56 f4 ; 0xf9722 + mov word [bp-00eh], strict word 00000h ; c7 46 f2 00 00 ; 0xf9725 pcibios.c:281 + test di, di ; 85 ff ; 0xf972a pcibios.c:284 + je short 0973dh ; 74 0f ; 0xf972c + mov cx, strict word 00008h ; b9 08 00 ; 0xf972e pcibios.c:285 + shr dx, 1 ; d1 ea ; 0xf9731 + rcr ax, 1 ; d1 d8 ; 0xf9733 + loop 09731h ; e2 fa ; 0xf9735 + mov word [bp-00ah], ax ; 89 46 f6 ; 0xf9737 + mov word [bp-00ch], dx ; 89 56 f4 ; 0xf973a + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf973d pcibios.c:292 + cmp ax, word [bp-014h] ; 3b 46 ec ; 0xf9740 + jne short 0974dh ; 75 08 ; 0xf9743 + mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf9745 + cmp ax, word [bp-012h] ; 3b 46 ee ; 0xf9748 + je short 09753h ; 74 06 ; 0xf974b + cmp word [bp-00eh], strict byte 00000h ; 83 7e f2 00 ; 0xf974d pcibios.c:293 + je short 09759h ; 74 06 ; 0xf9751 + dec si ; 4e ; 0xf9753 + cmp si, strict byte 0ffffh ; 83 fe ff ; 0xf9754 + je short 0976dh ; 74 14 ; 0xf9757 + add bx, word [bp-010h] ; 03 5e f0 ; 0xf9759 pcibios.c:301 + mov dx, bx ; 89 da ; 0xf975c pcibios.c:302 + shr dx, 008h ; c1 ea 08 ; 0xf975e + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf9761 + xor ah, ah ; 30 e4 ; 0xf9764 + cmp dx, ax ; 39 c2 ; 0xf9766 + jnbe short 0976dh ; 77 03 ; 0xf9768 + jmp near 096a9h ; e9 3c ff ; 0xf976a + cmp si, strict byte 0ffffh ; 83 fe ff ; 0xf976d pcibios.c:304 + jne short 09776h ; 75 04 ; 0xf9770 pcibios.c:308 + mov ax, bx ; 89 d8 ; 0xf9772 + jmp short 09779h ; eb 03 ; 0xf9774 + mov ax, strict word 0ffffh ; b8 ff ff ; 0xf9776 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf9779 pcibios.c:309 + pop di ; 5f ; 0xf977c + pop si ; 5e ; 0xf977d + pop bp ; 5d ; 0xf977e + retn ; c3 ; 0xf977f + ; disGetNextSymbol 0xf9780 LB 0x748 -> off=0xc cb=00000000000001d2 uValue=00000000000f818c 'pci16_function' + db 06dh, 098h, 086h, 098h, 098h, 098h, 0ach, 098h, 0beh, 098h, 0d1h, 098h +pci16_function: ; 0xf978c LB 0x1d2 + push bp ; 55 ; 0xf978c pcibios.c:311 + mov bp, sp ; 89 e5 ; 0xf978d + push si ; 56 ; 0xf978f + push di ; 57 ; 0xf9790 + push ax ; 50 ; 0xf9791 + push ax ; 50 ; 0xf9792 + and word [bp+020h], 000ffh ; 81 66 20 ff 00 ; 0xf9793 pcibios.c:318 + and word [bp+02ch], strict byte 0fffeh ; 83 66 2c fe ; 0xf9798 pcibios.c:319 + mov bx, word [bp+020h] ; 8b 5e 20 ; 0xf979c pcibios.c:321 + xor bh, bh ; 30 ff ; 0xf979f + mov ax, word [bp+020h] ; 8b 46 20 ; 0xf97a1 + xor ah, ah ; 30 e4 ; 0xf97a4 + cmp bx, strict byte 00003h ; 83 fb 03 ; 0xf97a6 + jc short 097beh ; 72 13 ; 0xf97a9 + jbe short 09811h ; 76 64 ; 0xf97ab + cmp bx, strict byte 0000eh ; 83 fb 0e ; 0xf97ad + je short 09819h ; 74 67 ; 0xf97b0 + cmp bx, strict byte 00008h ; 83 fb 08 ; 0xf97b2 + jc short 097c8h ; 72 11 ; 0xf97b5 + cmp bx, strict byte 0000dh ; 83 fb 0d ; 0xf97b7 + jbe short 0981ch ; 76 60 ; 0xf97ba + jmp short 097c8h ; eb 0a ; 0xf97bc + cmp bx, strict byte 00002h ; 83 fb 02 ; 0xf97be + je short 097e7h ; 74 24 ; 0xf97c1 + cmp bx, strict byte 00001h ; 83 fb 01 ; 0xf97c3 + je short 097cbh ; 74 03 ; 0xf97c6 + jmp near 0992ah ; e9 5f 01 ; 0xf97c8 + mov word [bp+020h], strict word 00001h ; c7 46 20 01 00 ; 0xf97cb pcibios.c:323 + mov word [bp+014h], 00210h ; c7 46 14 10 02 ; 0xf97d0 pcibios.c:324 + mov word [bp+01ch], strict word 00000h ; c7 46 1c 00 00 ; 0xf97d5 pcibios.c:326 + mov word [bp+018h], 04350h ; c7 46 18 50 43 ; 0xf97da pcibios.c:327 + mov word [bp+01ah], 02049h ; c7 46 1a 49 20 ; 0xf97df + jmp near 09957h ; e9 70 01 ; 0xf97e4 pcibios.c:328 + cmp word [bp+018h], strict byte 0ffffh ; 83 7e 18 ff ; 0xf97e7 pcibios.c:333 + jne short 097f3h ; 75 06 ; 0xf97eb + or ah, 083h ; 80 cc 83 ; 0xf97ed pcibios.c:334 + jmp near 09950h ; e9 5d 01 ; 0xf97f0 pcibios.c:335 + mov bx, word [bp+008h] ; 8b 5e 08 ; 0xf97f3 pcibios.c:337 + mov dx, word [bp+01ch] ; 8b 56 1c ; 0xf97f6 + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf97f9 + xor cx, cx ; 31 c9 ; 0xf97fc + call 09693h ; e8 92 fe ; 0xf97fe + cmp ax, strict word 0ffffh ; 3d ff ff ; 0xf9801 pcibios.c:338 + jne short 09813h ; 75 0d ; 0xf9804 + mov ax, word [bp+020h] ; 8b 46 20 ; 0xf9806 pcibios.c:339 + xor ah, ah ; 30 e4 ; 0xf9809 + or ah, 086h ; 80 cc 86 ; 0xf980b + jmp near 09950h ; e9 3f 01 ; 0xf980e + jmp short 0981eh ; eb 0b ; 0xf9811 + mov word [bp+014h], ax ; 89 46 14 ; 0xf9813 pcibios.c:340 + jmp near 09957h ; e9 3e 01 ; 0xf9816 pcibios.c:345 + jmp near 098e5h ; e9 c9 00 ; 0xf9819 + jmp short 09843h ; eb 25 ; 0xf981c + mov bx, word [bp+008h] ; 8b 5e 08 ; 0xf981e pcibios.c:347 + mov ax, word [bp+01ch] ; 8b 46 1c ; 0xf9821 + mov dx, word [bp+01eh] ; 8b 56 1e ; 0xf9824 + mov cx, strict word 00001h ; b9 01 00 ; 0xf9827 + call 09693h ; e8 66 fe ; 0xf982a + cmp ax, strict word 0ffffh ; 3d ff ff ; 0xf982d pcibios.c:348 + jne short 0983dh ; 75 0b ; 0xf9830 + mov ax, word [bp+020h] ; 8b 46 20 ; 0xf9832 pcibios.c:349 + xor ah, ah ; 30 e4 ; 0xf9835 + or ah, 086h ; 80 cc 86 ; 0xf9837 + jmp near 09950h ; e9 13 01 ; 0xf983a pcibios.c:350 + mov word [bp+014h], ax ; 89 46 14 ; 0xf983d pcibios.c:352 + jmp near 09957h ; e9 14 01 ; 0xf9840 pcibios.c:354 + cmp word [bp+004h], 00100h ; 81 7e 04 00 01 ; 0xf9843 pcibios.c:361 + jc short 09850h ; 72 06 ; 0xf9848 + or ah, 087h ; 80 cc 87 ; 0xf984a pcibios.c:362 + jmp near 09950h ; e9 00 01 ; 0xf984d pcibios.c:363 + mov dx, word [bp+004h] ; 8b 56 04 ; 0xf9850 pcibios.c:365 + mov ax, word [bp+014h] ; 8b 46 14 ; 0xf9853 + call 0966fh ; e8 16 fe ; 0xf9856 + mov bx, word [bp+020h] ; 8b 5e 20 ; 0xf9859 pcibios.c:366 + xor bh, bh ; 30 ff ; 0xf985c + sub bx, strict byte 00008h ; 83 eb 08 ; 0xf985e + cmp bx, strict byte 00005h ; 83 fb 05 ; 0xf9861 + jnbe short 098ceh ; 77 68 ; 0xf9864 + add bx, bx ; 01 db ; 0xf9866 + jmp word [cs:bx-06880h] ; 2e ff a7 80 97 ; 0xf9868 + mov bx, word [bp+01ch] ; 8b 5e 1c ; 0xf986d pcibios.c:368 + xor bl, bl ; 30 db ; 0xf9870 + mov dx, word [bp+004h] ; 8b 56 04 ; 0xf9872 + and dx, strict byte 00003h ; 83 e2 03 ; 0xf9875 + add dx, 00cfch ; 81 c2 fc 0c ; 0xf9878 + in AL, DX ; ec ; 0xf987c + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf987d + or bx, ax ; 09 c3 ; 0xf987f + mov word [bp+01ch], bx ; 89 5e 1c ; 0xf9881 + jmp short 098ceh ; eb 48 ; 0xf9884 pcibios.c:369 + mov dx, word [bp+004h] ; 8b 56 04 ; 0xf9886 pcibios.c:371 + xor dh, dh ; 30 f6 ; 0xf9889 + and dl, 002h ; 80 e2 02 ; 0xf988b + add dx, 00cfch ; 81 c2 fc 0c ; 0xf988e + in ax, DX ; ed ; 0xf9892 + mov word [bp+01ch], ax ; 89 46 1c ; 0xf9893 + jmp short 098ceh ; eb 36 ; 0xf9896 pcibios.c:372 + mov dx, 00cfch ; ba fc 0c ; 0xf9898 pcibios.c:374 + in eax, DX ; 66 ed ; 0xf989b + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf989d + shr eax, 010h ; 66 c1 e8 10 ; 0xf989f + xchg dx, ax ; 92 ; 0xf98a3 + mov word [bp+01ch], ax ; 89 46 1c ; 0xf98a4 + mov word [bp+01eh], dx ; 89 56 1e ; 0xf98a7 + jmp short 098ceh ; eb 22 ; 0xf98aa pcibios.c:375 + mov ax, word [bp+01ch] ; 8b 46 1c ; 0xf98ac pcibios.c:377 + mov dx, word [bp+004h] ; 8b 56 04 ; 0xf98af + xor dh, dh ; 30 f6 ; 0xf98b2 + and dl, 003h ; 80 e2 03 ; 0xf98b4 + add dx, 00cfch ; 81 c2 fc 0c ; 0xf98b7 + out DX, AL ; ee ; 0xf98bb + jmp short 098ceh ; eb 10 ; 0xf98bc pcibios.c:378 + mov ax, word [bp+01ch] ; 8b 46 1c ; 0xf98be pcibios.c:380 + mov dx, word [bp+004h] ; 8b 56 04 ; 0xf98c1 + xor dh, dh ; 30 f6 ; 0xf98c4 + and dl, 002h ; 80 e2 02 ; 0xf98c6 + add dx, 00cfch ; 81 c2 fc 0c ; 0xf98c9 + out DX, ax ; ef ; 0xf98cd + jmp near 09957h ; e9 86 00 ; 0xf98ce pcibios.c:381 + mov ax, word [bp+01ch] ; 8b 46 1c ; 0xf98d1 pcibios.c:383 + mov cx, word [bp+01eh] ; 8b 4e 1e ; 0xf98d4 + mov dx, 00cfch ; ba fc 0c ; 0xf98d7 + xchg cx, ax ; 91 ; 0xf98da + sal eax, 010h ; 66 c1 e0 10 ; 0xf98db + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf98df + out DX, eax ; 66 ef ; 0xf98e1 + jmp short 09957h ; eb 72 ; 0xf98e3 pcibios.c:387 + mov bx, word [bp+004h] ; 8b 5e 04 ; 0xf98e5 pcibios.c:389 + mov es, [bp+026h] ; 8e 46 26 ; 0xf98e8 + mov word [bp-008h], bx ; 89 5e f8 ; 0xf98eb + mov [bp-006h], es ; 8c 46 fa ; 0xf98ee + mov cx, word [0f380h] ; 8b 0e 80 f3 ; 0xf98f1 pcibios.c:393 + cmp cx, word [es:bx] ; 26 3b 0f ; 0xf98f5 + jbe short 0990bh ; 76 11 ; 0xf98f8 + mov ax, word [bp+020h] ; 8b 46 20 ; 0xf98fa pcibios.c:394 + xor ah, ah ; 30 e4 ; 0xf98fd + or ah, 089h ; 80 cc 89 ; 0xf98ff + mov word [bp+020h], ax ; 89 46 20 ; 0xf9902 + or word [bp+02ch], strict byte 00001h ; 83 4e 2c 01 ; 0xf9905 pcibios.c:395 + jmp short 0991fh ; eb 14 ; 0xf9909 pcibios.c:396 + les di, [es:bx+002h] ; 26 c4 7f 02 ; 0xf990b pcibios.c:397 + mov si, 0f1a0h ; be a0 f1 ; 0xf990f + mov dx, ds ; 8c da ; 0xf9912 + push DS ; 1e ; 0xf9914 + mov ds, dx ; 8e da ; 0xf9915 + rep movsb ; f3 a4 ; 0xf9917 + pop DS ; 1f ; 0xf9919 + mov word [bp+014h], 00a00h ; c7 46 14 00 0a ; 0xf991a pcibios.c:399 + mov ax, word [0f380h] ; a1 80 f3 ; 0xf991f pcibios.c:401 + les bx, [bp-008h] ; c4 5e f8 ; 0xf9922 + mov word [es:bx], ax ; 26 89 07 ; 0xf9925 + jmp short 09957h ; eb 2d ; 0xf9928 pcibios.c:402 + mov bx, 00da0h ; bb a0 0d ; 0xf992a pcibios.c:404 + mov cx, ds ; 8c d9 ; 0xf992d + mov ax, strict word 00004h ; b8 04 00 ; 0xf992f + call 018bch ; e8 87 7f ; 0xf9932 + mov ax, word [bp+014h] ; 8b 46 14 ; 0xf9935 + push ax ; 50 ; 0xf9938 + mov ax, word [bp+020h] ; 8b 46 20 ; 0xf9939 + push ax ; 50 ; 0xf993c + push 00d5ch ; 68 5c 0d ; 0xf993d + push strict byte 00004h ; 6a 04 ; 0xf9940 + call 018ffh ; e8 ba 7f ; 0xf9942 + add sp, strict byte 00008h ; 83 c4 08 ; 0xf9945 + mov ax, word [bp+020h] ; 8b 46 20 ; 0xf9948 pcibios.c:405 + xor ah, ah ; 30 e4 ; 0xf994b + or ah, 081h ; 80 cc 81 ; 0xf994d + mov word [bp+020h], ax ; 89 46 20 ; 0xf9950 + or word [bp+02ch], strict byte 00001h ; 83 4e 2c 01 ; 0xf9953 pcibios.c:406 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf9957 pcibios.c:408 + pop di ; 5f ; 0xf995a + pop si ; 5e ; 0xf995b + pop bp ; 5d ; 0xf995c + retn ; c3 ; 0xf995d + ; disGetNextSymbol 0xf995e LB 0x56a -> off=0x0 cb=0000000000000008 uValue=00000000000f835e 'pci_find_classcode' +pci_find_classcode: ; 0xf995e LB 0x8 + push bp ; 55 ; 0xf995e pciutil.c:126 + mov bp, sp ; 89 e5 ; 0xf995f + mov ax, strict word 0ffffh ; b8 ff ff ; 0xf9961 pciutil.c:133 + pop bp ; 5d ; 0xf9964 + retn ; c3 ; 0xf9965 + ; disGetNextSymbol 0xf9966 LB 0x562 -> off=0x0 cb=0000000000000023 uValue=00000000000f8366 'pci_find_device' +pci_find_device: ; 0xf9966 LB 0x23 + push bp ; 55 ; 0xf9966 pciutil.c:146 + mov bp, sp ; 89 e5 ; 0xf9967 + push bx ; 53 ; 0xf9969 + push cx ; 51 ; 0xf996a + push si ; 56 ; 0xf996b + mov cx, dx ; 89 d1 ; 0xf996c + xor si, si ; 31 f6 ; 0xf996e pciutil.c:148 + mov dx, ax ; 89 c2 ; 0xf9970 + mov ax, 0b102h ; b8 02 b1 ; 0xf9972 + int 01ah ; cd 1a ; 0xf9975 + cmp ah, 000h ; 80 fc 00 ; 0xf9977 + je short 0997fh ; 74 03 ; 0xf997a + mov bx, strict word 0ffffh ; bb ff ff ; 0xf997c + mov ax, bx ; 89 d8 ; 0xf997f + lea sp, [bp-006h] ; 8d 66 fa ; 0xf9981 pciutil.c:149 + pop si ; 5e ; 0xf9984 + pop cx ; 59 ; 0xf9985 + pop bx ; 5b ; 0xf9986 + pop bp ; 5d ; 0xf9987 + retn ; c3 ; 0xf9988 + ; disGetNextSymbol 0xf9989 LB 0x53f -> off=0x0 cb=000000000000002e uValue=00000000000f8389 'pci_read_config_byte' +pci_read_config_byte: ; 0xf9989 LB 0x2e + push bp ; 55 ; 0xf9989 pciutil.c:151 + mov bp, sp ; 89 e5 ; 0xf998a + push cx ; 51 ; 0xf998c + push di ; 57 ; 0xf998d + mov dh, al ; 88 c6 ; 0xf998e + mov bh, dl ; 88 d7 ; 0xf9990 + mov al, bl ; 88 d8 ; 0xf9992 + xor ah, ah ; 30 e4 ; 0xf9994 pciutil.c:153 + mov dl, dh ; 88 f2 ; 0xf9996 + xor dh, dh ; 30 f6 ; 0xf9998 + sal dx, 008h ; c1 e2 08 ; 0xf999a + mov bl, bh ; 88 fb ; 0xf999d + xor bh, bh ; 30 ff ; 0xf999f + or bx, dx ; 09 d3 ; 0xf99a1 + mov di, ax ; 89 c7 ; 0xf99a3 + mov ax, 0b108h ; b8 08 b1 ; 0xf99a5 + int 01ah ; cd 1a ; 0xf99a8 + mov al, cl ; 88 c8 ; 0xf99aa + xor ah, ah ; 30 e4 ; 0xf99ac + xor dx, dx ; 31 d2 ; 0xf99ae pciutil.c:154 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf99b0 + pop di ; 5f ; 0xf99b3 + pop cx ; 59 ; 0xf99b4 + pop bp ; 5d ; 0xf99b5 + retn ; c3 ; 0xf99b6 + ; disGetNextSymbol 0xf99b7 LB 0x511 -> off=0x0 cb=000000000000002a uValue=00000000000f83b7 'pci_read_config_word' +pci_read_config_word: ; 0xf99b7 LB 0x2a + push bp ; 55 ; 0xf99b7 pciutil.c:156 + mov bp, sp ; 89 e5 ; 0xf99b8 + push cx ; 51 ; 0xf99ba + push di ; 57 ; 0xf99bb + mov bh, al ; 88 c7 ; 0xf99bc + mov al, bl ; 88 d8 ; 0xf99be + xor ah, ah ; 30 e4 ; 0xf99c0 pciutil.c:158 + mov bl, bh ; 88 fb ; 0xf99c2 + xor bh, bh ; 30 ff ; 0xf99c4 + mov cx, bx ; 89 d9 ; 0xf99c6 + sal cx, 008h ; c1 e1 08 ; 0xf99c8 + mov bl, dl ; 88 d3 ; 0xf99cb + or bx, cx ; 09 cb ; 0xf99cd + mov di, ax ; 89 c7 ; 0xf99cf + mov ax, 0b109h ; b8 09 b1 ; 0xf99d1 + int 01ah ; cd 1a ; 0xf99d4 + mov ax, cx ; 89 c8 ; 0xf99d6 + xor dx, dx ; 31 d2 ; 0xf99d8 pciutil.c:159 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf99da + pop di ; 5f ; 0xf99dd + pop cx ; 59 ; 0xf99de + pop bp ; 5d ; 0xf99df + retn ; c3 ; 0xf99e0 + ; disGetNextSymbol 0xf99e1 LB 0x4e7 -> off=0x0 cb=000000000000004e uValue=00000000000f83e1 'pci_read_config_dword' +pci_read_config_dword: ; 0xf99e1 LB 0x4e + push bp ; 55 ; 0xf99e1 pciutil.c:161 + mov bp, sp ; 89 e5 ; 0xf99e2 + push cx ; 51 ; 0xf99e4 + push di ; 57 ; 0xf99e5 + push ax ; 50 ; 0xf99e6 + mov dh, al ; 88 c6 ; 0xf99e7 + mov cl, dl ; 88 d1 ; 0xf99e9 + mov byte [bp-006h], bl ; 88 5e fa ; 0xf99eb + mov al, bl ; 88 d8 ; 0xf99ee pciutil.c:166 + xor ah, ah ; 30 e4 ; 0xf99f0 + mov dl, dh ; 88 f2 ; 0xf99f2 + xor dh, dh ; 30 f6 ; 0xf99f4 + mov di, dx ; 89 d7 ; 0xf99f6 + sal di, 008h ; c1 e7 08 ; 0xf99f8 + mov dl, cl ; 88 ca ; 0xf99fb + or dx, di ; 09 fa ; 0xf99fd + mov di, ax ; 89 c7 ; 0xf99ff + mov bx, dx ; 89 d3 ; 0xf9a01 + mov ax, 0b109h ; b8 09 b1 ; 0xf9a03 + int 01ah ; cd 1a ; 0xf9a06 + test cx, cx ; 85 c9 ; 0xf9a08 + jne short 09a20h ; 75 14 ; 0xf9a0a + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf9a0c + xor ah, ah ; 30 e4 ; 0xf9a0f + mov di, ax ; 89 c7 ; 0xf9a11 + inc di ; 47 ; 0xf9a13 + inc di ; 47 ; 0xf9a14 + mov bx, dx ; 89 d3 ; 0xf9a15 + mov ax, 0b109h ; b8 09 b1 ; 0xf9a17 + int 01ah ; cd 1a ; 0xf9a1a + test cx, cx ; 85 c9 ; 0xf9a1c + je short 09a25h ; 74 05 ; 0xf9a1e + mov ax, strict word 00001h ; b8 01 00 ; 0xf9a20 + jmp short 09a27h ; eb 02 ; 0xf9a23 + xor ax, ax ; 31 c0 ; 0xf9a25 + cwd ; 99 ; 0xf9a27 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf9a28 pciutil.c:169 + pop di ; 5f ; 0xf9a2b + pop cx ; 59 ; 0xf9a2c + pop bp ; 5d ; 0xf9a2d + retn ; c3 ; 0xf9a2e + ; disGetNextSymbol 0xf9a2f LB 0x499 -> off=0x0 cb=0000000000000025 uValue=00000000000f842f 'pci_write_config_word' +pci_write_config_word: ; 0xf9a2f LB 0x25 + push bp ; 55 ; 0xf9a2f pciutil.c:171 + mov bp, sp ; 89 e5 ; 0xf9a30 + push di ; 57 ; 0xf9a32 + push ax ; 50 ; 0xf9a33 + mov byte [bp-004h], al ; 88 46 fc ; 0xf9a34 + mov al, bl ; 88 d8 ; 0xf9a37 + xor ah, ah ; 30 e4 ; 0xf9a39 pciutil.c:173 + mov di, ax ; 89 c7 ; 0xf9a3b + mov al, byte [bp-004h] ; 8a 46 fc ; 0xf9a3d + mov bx, ax ; 89 c3 ; 0xf9a40 + sal bx, 008h ; c1 e3 08 ; 0xf9a42 + mov al, dl ; 88 d0 ; 0xf9a45 + or bx, ax ; 09 c3 ; 0xf9a47 + mov ax, 0b10ch ; b8 0c b1 ; 0xf9a49 + int 01ah ; cd 1a ; 0xf9a4c + lea sp, [bp-002h] ; 8d 66 fe ; 0xf9a4e pciutil.c:174 + pop di ; 5f ; 0xf9a51 + pop bp ; 5d ; 0xf9a52 + retn ; c3 ; 0xf9a53 + ; disGetNextSymbol 0xf9a54 LB 0x474 -> off=0x0 cb=000000000000001d uValue=00000000000f8454 'vds_is_present' +vds_is_present: ; 0xf9a54 LB 0x1d + push bx ; 53 ; 0xf9a54 vds.c:32 + push bp ; 55 ; 0xf9a55 + mov bp, sp ; 89 e5 ; 0xf9a56 + mov bx, strict word 0007bh ; bb 7b 00 ; 0xf9a58 vds.c:36 + mov ax, strict word 00040h ; b8 40 00 ; 0xf9a5b + mov es, ax ; 8e c0 ; 0xf9a5e + test byte [es:bx], 020h ; 26 f6 07 20 ; 0xf9a60 vds.c:37 + je short 09a6ch ; 74 06 ; 0xf9a64 + mov ax, strict word 00001h ; b8 01 00 ; 0xf9a66 + pop bp ; 5d ; 0xf9a69 + pop bx ; 5b ; 0xf9a6a + retn ; c3 ; 0xf9a6b + xor ax, ax ; 31 c0 ; 0xf9a6c + pop bp ; 5d ; 0xf9a6e vds.c:38 + pop bx ; 5b ; 0xf9a6f + retn ; c3 ; 0xf9a70 + ; disGetNextSymbol 0xf9a71 LB 0x457 -> off=0x0 cb=000000000000001e uValue=00000000000f8471 'vds_real_to_lin' +vds_real_to_lin: ; 0xf9a71 LB 0x1e + push bx ; 53 ; 0xf9a71 vds.c:67 + push cx ; 51 ; 0xf9a72 + push bp ; 55 ; 0xf9a73 + mov bp, sp ; 89 e5 ; 0xf9a74 + mov bx, ax ; 89 c3 ; 0xf9a76 + mov ax, dx ; 89 d0 ; 0xf9a78 + xor dx, dx ; 31 d2 ; 0xf9a7a vds.c:69 + mov cx, strict word 00004h ; b9 04 00 ; 0xf9a7c + sal ax, 1 ; d1 e0 ; 0xf9a7f + rcl dx, 1 ; d1 d2 ; 0xf9a81 + loop 09a7fh ; e2 fa ; 0xf9a83 + xor cx, cx ; 31 c9 ; 0xf9a85 + add ax, bx ; 01 d8 ; 0xf9a87 + adc dx, cx ; 11 ca ; 0xf9a89 + pop bp ; 5d ; 0xf9a8b vds.c:70 + pop cx ; 59 ; 0xf9a8c + pop bx ; 5b ; 0xf9a8d + retn ; c3 ; 0xf9a8e + ; disGetNextSymbol 0xf9a8f LB 0x439 -> off=0x0 cb=0000000000000077 uValue=00000000000f848f 'vds_build_sg_list' +vds_build_sg_list: ; 0xf9a8f LB 0x77 + push bp ; 55 ; 0xf9a8f vds.c:77 + mov bp, sp ; 89 e5 ; 0xf9a90 + push si ; 56 ; 0xf9a92 + push di ; 57 ; 0xf9a93 + mov di, ax ; 89 c7 ; 0xf9a94 + mov si, dx ; 89 d6 ; 0xf9a96 + mov ax, bx ; 89 d8 ; 0xf9a98 + mov dx, cx ; 89 ca ; 0xf9a9a + mov bx, word [bp+004h] ; 8b 5e 04 ; 0xf9a9c vds.c:82 + mov es, si ; 8e c6 ; 0xf9a9f + mov word [es:di], bx ; 26 89 1d ; 0xf9aa1 + mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf9aa4 + mov word [es:di+002h], bx ; 26 89 5d 02 ; 0xf9aa7 + call 09a71h ; e8 c3 ff ; 0xf9aab vds.c:83 + mov es, si ; 8e c6 ; 0xf9aae + mov word [es:di+004h], ax ; 26 89 45 04 ; 0xf9ab0 + mov word [es:di+006h], dx ; 26 89 55 06 ; 0xf9ab4 + mov word [es:di+008h], strict word 00000h ; 26 c7 45 08 00 00 ; 0xf9ab8 vds.c:84 + call 09a54h ; e8 93 ff ; 0xf9abe vds.c:85 + test ax, ax ; 85 c0 ; 0xf9ac1 + je short 09ad6h ; 74 11 ; 0xf9ac3 + mov es, si ; 8e c6 ; 0xf9ac5 vds.c:87 + mov ax, 08105h ; b8 05 81 ; 0xf9ac7 + mov dx, strict word 00000h ; ba 00 00 ; 0xf9aca + int 04bh ; cd 4b ; 0xf9acd + jc short 09ad3h ; 72 02 ; 0xf9acf + db 032h, 0c0h + ; xor al, al ; 32 c0 ; 0xf9ad1 + cbw ; 98 ; 0xf9ad3 + jmp short 09afdh ; eb 27 ; 0xf9ad4 vds.c:88 + mov es, si ; 8e c6 ; 0xf9ad6 vds.c:90 + mov word [es:di+00eh], strict word 00001h ; 26 c7 45 0e 01 00 ; 0xf9ad8 + mov dx, word [es:di+004h] ; 26 8b 55 04 ; 0xf9ade vds.c:91 + mov ax, word [es:di+006h] ; 26 8b 45 06 ; 0xf9ae2 + mov word [es:di+010h], dx ; 26 89 55 10 ; 0xf9ae6 + mov word [es:di+012h], ax ; 26 89 45 12 ; 0xf9aea + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf9aee vds.c:92 + mov word [es:di+014h], ax ; 26 89 45 14 ; 0xf9af1 + mov ax, bx ; 89 d8 ; 0xf9af5 + mov word [es:di+016h], bx ; 26 89 5d 16 ; 0xf9af7 + xor ax, bx ; 31 d8 ; 0xf9afb vds.c:93 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf9afd vds.c:96 + pop di ; 5f ; 0xf9b00 + pop si ; 5e ; 0xf9b01 + pop bp ; 5d ; 0xf9b02 + retn 00004h ; c2 04 00 ; 0xf9b03 + ; disGetNextSymbol 0xf9b06 LB 0x3c2 -> off=0x0 cb=000000000000002e uValue=00000000000f8506 'vds_free_sg_list' +vds_free_sg_list: ; 0xf9b06 LB 0x2e + push bp ; 55 ; 0xf9b06 vds.c:102 + mov bp, sp ; 89 e5 ; 0xf9b07 + push bx ; 53 ; 0xf9b09 + push di ; 57 ; 0xf9b0a + mov bx, ax ; 89 c3 ; 0xf9b0b + call 09a54h ; e8 44 ff ; 0xf9b0d vds.c:106 + test ax, ax ; 85 c0 ; 0xf9b10 + je short 09b25h ; 74 11 ; 0xf9b12 + mov di, bx ; 89 df ; 0xf9b14 vds.c:108 + mov es, dx ; 8e c2 ; 0xf9b16 + mov ax, 08106h ; b8 06 81 ; 0xf9b18 + mov dx, strict word 00000h ; ba 00 00 ; 0xf9b1b + int 04bh ; cd 4b ; 0xf9b1e + jc short 09b24h ; 72 02 ; 0xf9b20 + db 032h, 0c0h + ; xor al, al ; 32 c0 ; 0xf9b22 + cbw ; 98 ; 0xf9b24 + mov es, dx ; 8e c2 ; 0xf9b25 vds.c:116 + mov word [es:bx+00eh], strict word 00000h ; 26 c7 47 0e 00 00 ; 0xf9b27 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf9b2d vds.c:118 + pop di ; 5f ; 0xf9b30 + pop bx ; 5b ; 0xf9b31 + pop bp ; 5d ; 0xf9b32 + retn ; c3 ; 0xf9b33 + ; disGetNextSymbol 0xf9b34 LB 0x394 -> off=0xc cb=0000000000000020 uValue=00000000000f8540 '__U4M' + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h +__U4M: ; 0xf9b40 LB 0x20 + pushfw ; 9c ; 0xf9b40 __U4M.asm:37 + push si ; 56 ; 0xf9b41 __U4M.asm:65 + push di ; 57 ; 0xf9b42 __U4M.asm:66 + push ax ; 50 ; 0xf9b43 __U4M.asm:79 + db 08bh, 0fah + ; mov di, dx ; 8b fa ; 0xf9b44 __U4M.asm:80 + mul bx ; f7 e3 ; 0xf9b46 __U4M.asm:83 + db 08bh, 0f2h + ; mov si, dx ; 8b f2 ; 0xf9b48 __U4M.asm:84 + xchg di, ax ; 97 ; 0xf9b4a __U4M.asm:85 + mul bx ; f7 e3 ; 0xf9b4b __U4M.asm:88 + db 003h, 0f0h + ; add si, ax ; 03 f0 ; 0xf9b4d __U4M.asm:89 + pop ax ; 58 ; 0xf9b4f __U4M.asm:92 + mul cx ; f7 e1 ; 0xf9b50 __U4M.asm:93 + db 003h, 0f0h + ; add si, ax ; 03 f0 ; 0xf9b52 __U4M.asm:94 + db 08bh, 0d6h + ; mov dx, si ; 8b d6 ; 0xf9b54 __U4M.asm:97 + db 08bh, 0c7h + ; mov ax, di ; 8b c7 ; 0xf9b56 __U4M.asm:98 + pop di ; 5f ; 0xf9b58 __U4M.asm:100 + pop si ; 5e ; 0xf9b59 __U4M.asm:101 + popfw ; 9d ; 0xf9b5a __U4M.asm:103 + retn ; c3 ; 0xf9b5b __U4M.asm:104 + times 0x4 db 0 + ; disGetNextSymbol 0xf9b60 LB 0x368 -> off=0x0 cb=0000000000000030 uValue=00000000000f8560 '__U4D' +__U4D: ; 0xf9b60 LB 0x30 + pushfw ; 9c ; 0xf9b60 __U4D.asm:44 + test cx, cx ; 85 c9 ; 0xf9b61 __U4D.asm:77 + jne short 09b6dh ; 75 08 ; 0xf9b63 __U4D.asm:78 + div bx ; f7 f3 ; 0xf9b65 __U4D.asm:80 + db 08bh, 0dah + ; mov bx, dx ; 8b da ; 0xf9b67 __U4D.asm:82 + db 033h, 0d2h + ; xor dx, dx ; 33 d2 ; 0xf9b69 __U4D.asm:84 + popfw ; 9d ; 0xf9b6b __U4D.asm:86 + retn ; c3 ; 0xf9b6c __U4D.asm:87 + push DS ; 1e ; 0xf9b6d __U4D.asm:91 + push ES ; 06 ; 0xf9b6e __U4D.asm:92 + push bp ; 55 ; 0xf9b6f __U4D.asm:99 + sub sp, strict byte 00004h ; 83 ec 04 ; 0xf9b70 __U4D.asm:100 + db 08bh, 0ech + ; mov bp, sp ; 8b ec ; 0xf9b73 __U4D.asm:101 + push SS ; 16 ; 0xf9b75 __U4D.asm:104 + push bp ; 55 ; 0xf9b76 __U4D.asm:105 + add bp, strict byte 00004h ; 83 c5 04 ; 0xf9b77 __U4D.asm:106 + push cx ; 51 ; 0xf9b7a __U4D.asm:109 + push bx ; 53 ; 0xf9b7b __U4D.asm:110 + push dx ; 52 ; 0xf9b7c __U4D.asm:113 + push ax ; 50 ; 0xf9b7d __U4D.asm:114 + call 09c45h ; e8 c4 00 ; 0xf9b7e __U4D.asm:116 + mov cx, word [bp-002h] ; 8b 4e fe ; 0xf9b81 __U4D.asm:119 + mov bx, word [bp-004h] ; 8b 5e fc ; 0xf9b84 __U4D.asm:120 + db 08bh, 0e5h + ; mov sp, bp ; 8b e5 ; 0xf9b87 __U4D.asm:124 + pop bp ; 5d ; 0xf9b89 __U4D.asm:125 + pop ES ; 07 ; 0xf9b8a __U4D.asm:126 + pop DS ; 1f ; 0xf9b8b __U4D.asm:127 + popfw ; 9d ; 0xf9b8c __U4D.asm:129 + retn ; c3 ; 0xf9b8d __U4D.asm:130 + times 0x2 db 0 + ; disGetNextSymbol 0xf9b90 LB 0x338 -> off=0x0 cb=0000000000000010 uValue=00000000000f8590 '__U8RS' +__U8RS: ; 0xf9b90 LB 0x10 + test si, si ; 85 f6 ; 0xf9b90 __U8RS.asm:40 + je short 09b9fh ; 74 0b ; 0xf9b92 __U8RS.asm:41 + shr ax, 1 ; d1 e8 ; 0xf9b94 __U8RS.asm:43 + rcr bx, 1 ; d1 db ; 0xf9b96 __U8RS.asm:44 + rcr cx, 1 ; d1 d9 ; 0xf9b98 __U8RS.asm:45 + rcr dx, 1 ; d1 da ; 0xf9b9a __U8RS.asm:46 + dec si ; 4e ; 0xf9b9c __U8RS.asm:47 + jne short 09b94h ; 75 f5 ; 0xf9b9d __U8RS.asm:48 + retn ; c3 ; 0xf9b9f __U8RS.asm:50 + ; disGetNextSymbol 0xf9ba0 LB 0x328 -> off=0x0 cb=0000000000000010 uValue=00000000000f85a0 '__U8LS' +__U8LS: ; 0xf9ba0 LB 0x10 + test si, si ; 85 f6 ; 0xf9ba0 __U8LS.asm:40 + je short 09bafh ; 74 0b ; 0xf9ba2 __U8LS.asm:41 + sal dx, 1 ; d1 e2 ; 0xf9ba4 __U8LS.asm:43 + rcl cx, 1 ; d1 d1 ; 0xf9ba6 __U8LS.asm:44 + rcl bx, 1 ; d1 d3 ; 0xf9ba8 __U8LS.asm:45 + rcl ax, 1 ; d1 d0 ; 0xf9baa __U8LS.asm:46 + dec si ; 4e ; 0xf9bac __U8LS.asm:47 + jne short 09ba4h ; 75 f5 ; 0xf9bad __U8LS.asm:48 + retn ; c3 ; 0xf9baf __U8LS.asm:50 + ; disGetNextSymbol 0xf9bb0 LB 0x318 -> off=0x0 cb=0000000000000010 uValue=00000000000f85b0 '_fmemset_' +_fmemset_: ; 0xf9bb0 LB 0x10 + push di ; 57 ; 0xf9bb0 fmemset.asm:42 + mov es, dx ; 8e c2 ; 0xf9bb1 fmemset.asm:44 + db 08bh, 0f8h + ; mov di, ax ; 8b f8 ; 0xf9bb3 fmemset.asm:45 + xchg al, bl ; 86 d8 ; 0xf9bb5 fmemset.asm:46 + rep stosb ; f3 aa ; 0xf9bb7 fmemset.asm:47 + xchg al, bl ; 86 d8 ; 0xf9bb9 fmemset.asm:48 + pop di ; 5f ; 0xf9bbb fmemset.asm:50 + retn ; c3 ; 0xf9bbc fmemset.asm:51 + times 0x3 db 0 + ; disGetNextSymbol 0xf9bc0 LB 0x308 -> off=0x0 cb=000000000000003a uValue=00000000000f85c0 '_fmemcpy_' +_fmemcpy_: ; 0xf9bc0 LB 0x3a + push bp ; 55 ; 0xf9bc0 fmemcpy.asm:42 + db 08bh, 0ech + ; mov bp, sp ; 8b ec ; 0xf9bc1 fmemcpy.asm:43 + push di ; 57 ; 0xf9bc3 fmemcpy.asm:44 + push DS ; 1e ; 0xf9bc4 fmemcpy.asm:45 + push si ; 56 ; 0xf9bc5 fmemcpy.asm:46 + mov es, dx ; 8e c2 ; 0xf9bc6 fmemcpy.asm:48 + db 08bh, 0f8h + ; mov di, ax ; 8b f8 ; 0xf9bc8 fmemcpy.asm:49 + mov ds, cx ; 8e d9 ; 0xf9bca fmemcpy.asm:50 + db 08bh, 0f3h + ; mov si, bx ; 8b f3 ; 0xf9bcc fmemcpy.asm:51 + mov cx, word [bp+004h] ; 8b 4e 04 ; 0xf9bce fmemcpy.asm:52 + rep movsb ; f3 a4 ; 0xf9bd1 fmemcpy.asm:53 + pop si ; 5e ; 0xf9bd3 fmemcpy.asm:55 + pop DS ; 1f ; 0xf9bd4 fmemcpy.asm:56 + pop di ; 5f ; 0xf9bd5 fmemcpy.asm:57 + db 08bh, 0e5h + ; mov sp, bp ; 8b e5 ; 0xf9bd6 fmemcpy.asm:58 + pop bp ; 5d ; 0xf9bd8 fmemcpy.asm:59 + retn ; c3 ; 0xf9bd9 fmemcpy.asm:60 + add byte [bx+si], al ; 00 00 ; 0xf9bda + add byte [bx+si], al ; 00 00 ; 0xf9bdc + add byte [bx+si], al ; 00 00 ; 0xf9bde + adc byte [si-063eeh], bl ; 10 9c 12 9c ; 0xf9be0 + push SS ; 16 ; 0xf9be4 + pushfw ; 9c ; 0xf9be5 + push SS ; 16 ; 0xf9be6 + pushfw ; 9c ; 0xf9be7 + push SS ; 16 ; 0xf9be8 + pushfw ; 9c ; 0xf9be9 + sbb byte [si-063e8h], bl ; 18 9c 18 9c ; 0xf9bea + sbb bl, byte [si-063e2h] ; 1a 9c 1e 9c ; 0xf9bee + push DS ; 1e ; 0xf9bf2 + pushfw ; 9c ; 0xf9bf3 + and byte [si-063dbh], bl ; 20 9c 25 9c ; 0xf9bf4 + daa ; 27 ; 0xf9bf8 + pushfw ; 9c ; 0xf9bf9 + ; disGetNextSymbol 0xf9bfa LB 0x2ce -> off=0x0 cb=000000000000003a uValue=00000000000085fa 'apm_worker' +apm_worker: ; 0xf9bfa LB 0x3a + sti ; fb ; 0xf9bfa apm_pm.asm:56 + push ax ; 50 ; 0xf9bfb apm_pm.asm:58 + db 032h, 0e4h + ; xor ah, ah ; 32 e4 ; 0xf9bfc apm_pm.asm:59 + sub AL, strict byte 004h ; 2c 04 ; 0xf9bfe apm_pm.asm:60 + db 08bh, 0e8h + ; mov bp, ax ; 8b e8 ; 0xf9c00 apm_pm.asm:61 + sal bp, 1 ; d1 e5 ; 0xf9c02 apm_pm.asm:62 + cmp AL, strict byte 00dh ; 3c 0d ; 0xf9c04 apm_pm.asm:63 + pop ax ; 58 ; 0xf9c06 apm_pm.asm:64 + mov AH, strict byte 053h ; b4 53 ; 0xf9c07 apm_pm.asm:65 + jnc short 09c30h ; 73 25 ; 0xf9c09 apm_pm.asm:66 + jmp word [cs:bp-06420h] ; 2e ff a6 e0 9b ; 0xf9c0b apm_pm.asm:68 + jmp short 09c2eh ; eb 1c ; 0xf9c10 apm_pm.asm:71 + sti ; fb ; 0xf9c12 apm_pm.asm:74 + hlt ; f4 ; 0xf9c13 apm_pm.asm:75 + jmp short 09c2eh ; eb 18 ; 0xf9c14 apm_pm.asm:76 + jmp short 09c2eh ; eb 16 ; 0xf9c16 apm_pm.asm:85 + jmp short 09c30h ; eb 16 ; 0xf9c18 apm_pm.asm:91 + mov AH, strict byte 080h ; b4 80 ; 0xf9c1a apm_pm.asm:94 + jmp short 09c32h ; eb 14 ; 0xf9c1c apm_pm.asm:95 + jmp short 09c30h ; eb 10 ; 0xf9c1e apm_pm.asm:100 + mov ax, 00102h ; b8 02 01 ; 0xf9c20 apm_pm.asm:103 + jmp short 09c2eh ; eb 09 ; 0xf9c23 apm_pm.asm:104 + jmp short 09c2eh ; eb 07 ; 0xf9c25 apm_pm.asm:108 + mov BL, strict byte 000h ; b3 00 ; 0xf9c27 apm_pm.asm:111 + mov cx, strict word 00000h ; b9 00 00 ; 0xf9c29 apm_pm.asm:112 + jmp short 09c2eh ; eb 00 ; 0xf9c2c apm_pm.asm:113 + clc ; f8 ; 0xf9c2e apm_pm.asm:116 + retn ; c3 ; 0xf9c2f apm_pm.asm:117 + mov AH, strict byte 009h ; b4 09 ; 0xf9c30 apm_pm.asm:120 + stc ; f9 ; 0xf9c32 apm_pm.asm:123 + retn ; c3 ; 0xf9c33 apm_pm.asm:124 + ; disGetNextSymbol 0xf9c34 LB 0x294 -> off=0x0 cb=0000000000000011 uValue=00000000000f8634 'apm_pm16_entry' +apm_pm16_entry: ; 0xf9c34 LB 0x11 + mov AH, strict byte 002h ; b4 02 ; 0xf9c34 apm_pm.asm:136 + push DS ; 1e ; 0xf9c36 apm_pm.asm:142 + push bp ; 55 ; 0xf9c37 apm_pm.asm:143 + push CS ; 0e ; 0xf9c38 apm_pm.asm:145 + pop bp ; 5d ; 0xf9c39 apm_pm.asm:146 + add bp, strict byte 00008h ; 83 c5 08 ; 0xf9c3a apm_pm.asm:147 + mov ds, bp ; 8e dd ; 0xf9c3d apm_pm.asm:148 + call 09bfah ; e8 b8 ff ; 0xf9c3f apm_pm.asm:150 + pop bp ; 5d ; 0xf9c42 apm_pm.asm:152 + pop DS ; 1f ; 0xf9c43 apm_pm.asm:153 + retf ; cb ; 0xf9c44 apm_pm.asm:155 + ; disGetNextSymbol 0xf9c45 LB 0x283 -> off=0x0 cb=0000000000000265 uValue=00000000000f8645 'DoUInt32Div' +DoUInt32Div: ; 0xf9c45 LB 0x265 + push bp ; 55 ; 0xf9c45 DoUInt32Div.c:28 + mov bp, sp ; 89 e5 ; 0xf9c46 + push si ; 56 ; 0xf9c48 + push di ; 57 ; 0xf9c49 + sub sp, strict byte 00018h ; 83 ec 18 ; 0xf9c4a + lds bx, [bp+00ch] ; c5 5e 0c ; 0xf9c4d + lea si, [bp+004h] ; 8d 76 04 ; 0xf9c50 DoUInt32Div.c:972 + mov word [bp-010h], si ; 89 76 f0 ; 0xf9c53 + mov [bp-00eh], ss ; 8c 56 f2 ; 0xf9c56 + lea di, [bp+008h] ; 8d 7e 08 ; 0xf9c59 + mov [bp-008h], ss ; 8c 56 f8 ; 0xf9c5c + lea si, [bp-01ch] ; 8d 76 e4 ; 0xf9c5f + mov word [bp-00ch], si ; 89 76 f4 ; 0xf9c62 + mov [bp-00ah], ss ; 8c 56 f6 ; 0xf9c65 + mov si, bx ; 89 de ; 0xf9c68 + mov [bp-006h], ds ; 8c 5e fa ; 0xf9c6a + cmp word [bx+002h], strict byte 00000h ; 83 7f 02 00 ; 0xf9c6d DoUInt32Div.c:980 + jne short 09c95h ; 75 22 ; 0xf9c71 + mov ax, word [bx] ; 8b 07 ; 0xf9c73 DoUInt32Div.c:982 + test ax, ax ; 85 c0 ; 0xf9c75 + je short 09c92h ; 74 19 ; 0xf9c77 + cmp ax, strict word 00001h ; 3d 01 00 ; 0xf9c79 DoUInt32Div.c:985 + jne short 09c95h ; 75 17 ; 0xf9c7c + xor ax, ax ; 31 c0 ; 0xf9c7e DoUInt32Div.c:67 + mov word [bp+00ah], ax ; 89 46 0a ; 0xf9c80 + mov word [bp+008h], ax ; 89 46 08 ; 0xf9c83 DoUInt32Div.c:68 + mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xf9c86 DoUInt32Div.c:988 + mov word [bp+004h], ax ; 89 46 04 ; 0xf9c89 + mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xf9c8c + mov word [bp+006h], ax ; 89 46 06 ; 0xf9c8f + jmp near 09e9dh ; e9 08 02 ; 0xf9c92 + lds bx, [bp-00ch] ; c5 5e f4 ; 0xf9c95 DoUInt32Div.c:726 + mov ax, word [bx+002h] ; 8b 47 02 ; 0xf9c98 + mov ds, [bp-006h] ; 8e 5e fa ; 0xf9c9b + cmp ax, word [si+002h] ; 3b 44 02 ; 0xf9c9e + je short 09cbbh ; 74 18 ; 0xf9ca1 + mov ds, [bp-00ah] ; 8e 5e f6 ; 0xf9ca3 DoUInt32Div.c:727 + mov ax, word [bx+002h] ; 8b 47 02 ; 0xf9ca6 + mov ds, [bp-006h] ; 8e 5e fa ; 0xf9ca9 + cmp ax, word [si+002h] ; 3b 44 02 ; 0xf9cac + jbe short 09cb6h ; 76 05 ; 0xf9caf + mov ax, strict word 00001h ; b8 01 00 ; 0xf9cb1 + jmp short 09cdch ; eb 26 ; 0xf9cb4 + mov ax, strict word 0ffffh ; b8 ff ff ; 0xf9cb6 + jmp short 09cdch ; eb 21 ; 0xf9cb9 + mov ds, [bp-00ah] ; 8e 5e f6 ; 0xf9cbb DoUInt32Div.c:728 + mov ax, word [bx] ; 8b 07 ; 0xf9cbe + mov ds, [bp-006h] ; 8e 5e fa ; 0xf9cc0 + cmp ax, word [si] ; 3b 04 ; 0xf9cc3 + je short 09cdah ; 74 13 ; 0xf9cc5 + mov ds, [bp-00ah] ; 8e 5e f6 ; 0xf9cc7 DoUInt32Div.c:729 + mov ax, word [bx] ; 8b 07 ; 0xf9cca + mov ds, [bp-006h] ; 8e 5e fa ; 0xf9ccc + cmp ax, word [si] ; 3b 04 ; 0xf9ccf + jbe short 09cd5h ; 76 02 ; 0xf9cd1 + jmp short 09cb1h ; eb dc ; 0xf9cd3 + mov ax, strict word 0ffffh ; b8 ff ff ; 0xf9cd5 + jmp short 09cdch ; eb 02 ; 0xf9cd8 + xor ax, ax ; 31 c0 ; 0xf9cda DoUInt32Div.c:730 + test ax, ax ; 85 c0 ; 0xf9cdc DoUInt32Div.c:996 + jnl short 09cfeh ; 7d 1e ; 0xf9cde + lds bx, [bp-00ch] ; c5 5e f4 ; 0xf9ce0 DoUInt32Div.c:998 + mov ax, word [bx] ; 8b 07 ; 0xf9ce3 + mov dx, word [bx+002h] ; 8b 57 02 ; 0xf9ce5 + mov ds, [bp-008h] ; 8e 5e f8 ; 0xf9ce8 + mov word [di], ax ; 89 05 ; 0xf9ceb + mov word [di+002h], dx ; 89 55 02 ; 0xf9ced + lds bx, [bp-010h] ; c5 5e f0 ; 0xf9cf0 DoUInt32Div.c:67 + mov word [bx+002h], strict word 00000h ; c7 47 02 00 00 ; 0xf9cf3 + mov word [bx], strict word 00000h ; c7 07 00 00 ; 0xf9cf8 DoUInt32Div.c:68 + jmp short 09c92h ; eb 94 ; 0xf9cfc DoUInt32Div.c:1003 + jne short 09d15h ; 75 15 ; 0xf9cfe + mov ds, [bp-008h] ; 8e 5e f8 ; 0xf9d00 DoUInt32Div.c:67 + mov word [di+002h], ax ; 89 45 02 ; 0xf9d03 + mov word [di], ax ; 89 05 ; 0xf9d06 DoUInt32Div.c:68 + lds bx, [bp-010h] ; c5 5e f0 ; 0xf9d08 DoUInt32Div.c:397 + mov word [bx], strict word 00001h ; c7 07 01 00 ; 0xf9d0b + mov word [bx+002h], ax ; 89 47 02 ; 0xf9d0f DoUInt32Div.c:398 + jmp near 09e9dh ; e9 88 01 ; 0xf9d12 DoUInt32Div.c:1008 + lds bx, [bp-00ch] ; c5 5e f4 ; 0xf9d15 DoUInt32Div.c:954 + mov ax, word [bx+002h] ; 8b 47 02 ; 0xf9d18 + test ax, ax ; 85 c0 ; 0xf9d1b + je short 09d30h ; 74 11 ; 0xf9d1d + push ax ; 50 ; 0xf9d1f DoUInt32Div.c:955 + mov ax, 0f000h ; b8 00 f0 ; 0xf9d20 + mov ds, ax ; 8e d8 ; 0xf9d23 + call 09eb0h ; e8 88 01 ; 0xf9d25 + add sp, strict byte 00002h ; 83 c4 02 ; 0xf9d28 + add ax, strict word 00010h ; 05 10 00 ; 0xf9d2b + jmp short 09d3dh ; eb 0d ; 0xf9d2e DoUInt32Div.c:956 + push word [bx] ; ff 37 ; 0xf9d30 DoUInt32Div.c:957 + mov ax, 0f000h ; b8 00 f0 ; 0xf9d32 + mov ds, ax ; 8e d8 ; 0xf9d35 + call 09eb0h ; e8 76 01 ; 0xf9d37 + add sp, strict byte 00002h ; 83 c4 02 ; 0xf9d3a + mov word [bp-014h], ax ; 89 46 ec ; 0xf9d3d DoUInt32Div.c:959 + mov ds, [bp-006h] ; 8e 5e fa ; 0xf9d40 DoUInt32Div.c:954 + mov ax, word [si+002h] ; 8b 44 02 ; 0xf9d43 + test ax, ax ; 85 c0 ; 0xf9d46 + je short 09d5bh ; 74 11 ; 0xf9d48 + push ax ; 50 ; 0xf9d4a DoUInt32Div.c:955 + mov ax, 0f000h ; b8 00 f0 ; 0xf9d4b + mov ds, ax ; 8e d8 ; 0xf9d4e + call 09eb0h ; e8 5d 01 ; 0xf9d50 + add sp, strict byte 00002h ; 83 c4 02 ; 0xf9d53 + add ax, strict word 00010h ; 05 10 00 ; 0xf9d56 + jmp short 09d68h ; eb 0d ; 0xf9d59 DoUInt32Div.c:956 + push word [si] ; ff 34 ; 0xf9d5b DoUInt32Div.c:957 + mov ax, 0f000h ; b8 00 f0 ; 0xf9d5d + mov ds, ax ; 8e d8 ; 0xf9d60 + call 09eb0h ; e8 4b 01 ; 0xf9d62 + add sp, strict byte 00002h ; 83 c4 02 ; 0xf9d65 + mov dx, word [bp-014h] ; 8b 56 ec ; 0xf9d68 DoUInt32Div.c:959 + sub dx, ax ; 29 c2 ; 0xf9d6b + mov word [bp-012h], dx ; 89 56 ee ; 0xf9d6d + mov ds, [bp-006h] ; 8e 5e fa ; 0xf9d70 DoUInt32Div.c:1014 + mov ax, word [si] ; 8b 04 ; 0xf9d73 + mov word [bp-018h], ax ; 89 46 e8 ; 0xf9d75 + mov ax, word [si+002h] ; 8b 44 02 ; 0xf9d78 + mov word [bp-016h], ax ; 89 46 ea ; 0xf9d7b + test dx, dx ; 85 d2 ; 0xf9d7e DoUInt32Div.c:1015 + je short 09dd8h ; 74 56 ; 0xf9d80 + mov cx, dx ; 89 d1 ; 0xf9d82 DoUInt32Div.c:280 + xor ch, dh ; 30 f5 ; 0xf9d84 + and cl, 01fh ; 80 e1 1f ; 0xf9d86 + mov ax, word [si] ; 8b 04 ; 0xf9d89 DoUInt32Div.c:282 + mov dx, word [si+002h] ; 8b 54 02 ; 0xf9d8b + jcxz 09d96h ; e3 06 ; 0xf9d8e + sal ax, 1 ; d1 e0 ; 0xf9d90 + rcl dx, 1 ; d1 d2 ; 0xf9d92 + loop 09d90h ; e2 fa ; 0xf9d94 + mov word [bp-018h], ax ; 89 46 e8 ; 0xf9d96 + mov word [bp-016h], dx ; 89 56 ea ; 0xf9d99 + mov ax, word [bp-016h] ; 8b 46 ea ; 0xf9d9c DoUInt32Div.c:763 + lds bx, [bp-00ch] ; c5 5e f4 ; 0xf9d9f + cmp ax, word [bx+002h] ; 3b 47 02 ; 0xf9da2 + jnbe short 09db6h ; 77 0f ; 0xf9da5 + mov ax, word [bp-016h] ; 8b 46 ea ; 0xf9da7 + cmp ax, word [bx+002h] ; 3b 47 02 ; 0xf9daa + jne short 09dbah ; 75 0b ; 0xf9dad + mov ax, word [bp-018h] ; 8b 46 e8 ; 0xf9daf + cmp ax, word [bx] ; 3b 07 ; 0xf9db2 + jbe short 09dbah ; 76 04 ; 0xf9db4 + mov AL, strict byte 001h ; b0 01 ; 0xf9db6 + jmp short 09dbch ; eb 02 ; 0xf9db8 + xor al, al ; 30 c0 ; 0xf9dba + test al, al ; 84 c0 ; 0xf9dbc DoUInt32Div.c:769 + je short 09de3h ; 74 23 ; 0xf9dbe + shr word [bp-016h], 1 ; d1 6e ea ; 0xf9dc0 DoUInt32Div.c:680 + rcr word [bp-018h], 1 ; d1 5e e8 ; 0xf9dc3 + dec word [bp-012h] ; ff 4e ee ; 0xf9dc6 + jmp short 09de3h ; eb 18 ; 0xf9dc9 + mov cx, strict word 0001fh ; b9 1f 00 ; 0xf9dcb DoUInt32Div.c:632 + sal word [bp-018h], 1 ; d1 66 e8 ; 0xf9dce + rcl word [bp-016h], 1 ; d1 56 ea ; 0xf9dd1 + loop 09dceh ; e2 f8 ; 0xf9dd4 + jmp short 09dc6h ; eb ee ; 0xf9dd6 DoUInt32Div.c:647 + mov ax, word [si] ; 8b 04 ; 0xf9dd8 DoUInt32Div.c:1025 + mov word [bp-018h], ax ; 89 46 e8 ; 0xf9dda + mov ax, word [si+002h] ; 8b 44 02 ; 0xf9ddd + mov word [bp-016h], ax ; 89 46 ea ; 0xf9de0 + lds bx, [bp-010h] ; c5 5e f0 ; 0xf9de3 DoUInt32Div.c:67 + mov word [bx+002h], strict word 00000h ; c7 47 02 00 00 ; 0xf9de6 + mov word [bx], strict word 00000h ; c7 07 00 00 ; 0xf9deb DoUInt32Div.c:68 + lds bx, [bp-00ch] ; c5 5e f4 ; 0xf9def DoUInt32Div.c:1028 + mov dx, word [bx] ; 8b 17 ; 0xf9df2 + mov ax, word [bx+002h] ; 8b 47 02 ; 0xf9df4 + mov ds, [bp-008h] ; 8e 5e f8 ; 0xf9df7 + mov word [di], dx ; 89 15 ; 0xf9dfa + mov word [di+002h], ax ; 89 45 02 ; 0xf9dfc + mov dx, word [di] ; 8b 15 ; 0xf9dff DoUInt32Div.c:782 + mov ds, [bp-006h] ; 8e 5e fa ; 0xf9e01 + cmp ax, word [si+002h] ; 3b 44 02 ; 0xf9e04 + jnbe short 09e0fh ; 77 06 ; 0xf9e07 + jne short 09e13h ; 75 08 ; 0xf9e09 + cmp dx, word [si] ; 3b 14 ; 0xf9e0b + jc short 09e13h ; 72 04 ; 0xf9e0d + mov AL, strict byte 001h ; b0 01 ; 0xf9e0f + jmp short 09e15h ; eb 02 ; 0xf9e11 + xor al, al ; 30 c0 ; 0xf9e13 + test al, al ; 84 c0 ; 0xf9e15 DoUInt32Div.c:788 + je short 09e7ah ; 74 61 ; 0xf9e17 + mov ds, [bp-008h] ; 8e 5e f8 ; 0xf9e19 DoUInt32Div.c:782 + mov ax, word [di+002h] ; 8b 45 02 ; 0xf9e1c + cmp ax, word [bp-016h] ; 3b 46 ea ; 0xf9e1f + jnbe short 09e30h ; 77 0c ; 0xf9e22 + cmp ax, word [bp-016h] ; 3b 46 ea ; 0xf9e24 + jne short 09e34h ; 75 0b ; 0xf9e27 + mov ax, word [di] ; 8b 05 ; 0xf9e29 + cmp ax, word [bp-018h] ; 3b 46 e8 ; 0xf9e2b + jc short 09e34h ; 72 04 ; 0xf9e2e + mov AL, strict byte 001h ; b0 01 ; 0xf9e30 + jmp short 09e36h ; eb 02 ; 0xf9e32 + xor al, al ; 30 c0 ; 0xf9e34 + test al, al ; 84 c0 ; 0xf9e36 DoUInt32Div.c:788 + je short 09e60h ; 74 26 ; 0xf9e38 + mov ax, word [bp-018h] ; 8b 46 e8 ; 0xf9e3a DoUInt32Div.c:451 + mov ds, [bp-008h] ; 8e 5e f8 ; 0xf9e3d + sub word [di], ax ; 29 05 ; 0xf9e40 + mov ax, word [bp-016h] ; 8b 46 ea ; 0xf9e42 + sbb word [di+002h], ax ; 19 45 02 ; 0xf9e45 + mov ax, strict word 00001h ; b8 01 00 ; 0xf9e48 DoUInt32Div.c:586 + xor dx, dx ; 31 d2 ; 0xf9e4b + mov cx, word [bp-012h] ; 8b 4e ee ; 0xf9e4d + jcxz 09e58h ; e3 06 ; 0xf9e50 + sal ax, 1 ; d1 e0 ; 0xf9e52 + rcl dx, 1 ; d1 d2 ; 0xf9e54 + loop 09e52h ; e2 fa ; 0xf9e56 + lds bx, [bp-010h] ; c5 5e f0 ; 0xf9e58 + or word [bx], ax ; 09 07 ; 0xf9e5b + or word [bx+002h], dx ; 09 57 02 ; 0xf9e5d + mov ds, [bp-008h] ; 8e 5e f8 ; 0xf9e60 DoUInt32Div.c:744 + mov dx, word [di] ; 8b 15 ; 0xf9e63 + mov ax, word [di+002h] ; 8b 45 02 ; 0xf9e65 + mov ds, [bp-006h] ; 8e 5e fa ; 0xf9e68 + cmp ax, word [si+002h] ; 3b 44 02 ; 0xf9e6b + jc short 09e76h ; 72 06 ; 0xf9e6e + jne short 09e7ch ; 75 0a ; 0xf9e70 + cmp dx, word [si] ; 3b 14 ; 0xf9e72 + jnc short 09e7ch ; 73 06 ; 0xf9e74 + mov AL, strict byte 001h ; b0 01 ; 0xf9e76 + jmp short 09e7eh ; eb 04 ; 0xf9e78 + jmp short 09e9dh ; eb 21 ; 0xf9e7a + xor al, al ; 30 c0 ; 0xf9e7c + test al, al ; 84 c0 ; 0xf9e7e DoUInt32Div.c:750 + je short 09e91h ; 74 0f ; 0xf9e80 + jmp short 09e9dh ; eb 19 ; 0xf9e82 DoUInt32Div.c:1043 + mov cx, strict word 0001fh ; b9 1f 00 ; 0xf9e84 DoUInt32Div.c:680 + sal word [bp-018h], 1 ; d1 66 e8 ; 0xf9e87 + rcl word [bp-016h], 1 ; d1 56 ea ; 0xf9e8a + loop 09e87h ; e2 f8 ; 0xf9e8d + jmp short 09e97h ; eb 06 ; 0xf9e8f DoUInt32Div.c:647 + shr word [bp-016h], 1 ; d1 6e ea ; 0xf9e91 DoUInt32Div.c:653 + rcr word [bp-018h], 1 ; d1 5e e8 ; 0xf9e94 + dec word [bp-012h] ; ff 4e ee ; 0xf9e97 DoUInt32Div.c:1045 + jmp near 09e19h ; e9 7c ff ; 0xf9e9a DoUInt32Div.c:1046 + mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xf9e9d DoUInt32Div.c:32 + mov dx, word [bp-01ah] ; 8b 56 e6 ; 0xf9ea0 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf9ea3 DoUInt32Div.c:33 + pop di ; 5f ; 0xf9ea6 + pop si ; 5e ; 0xf9ea7 + pop bp ; 5d ; 0xf9ea8 + retn ; c3 ; 0xf9ea9 + ; disGetNextSymbol 0xf9eaa LB 0x1e -> off=0x6 cb=0000000000000018 uValue=00000000000f88b0 '_ASMBitLastSetU16' + db 000h, 000h, 000h, 000h, 000h, 000h +_ASMBitLastSetU16: ; 0xf9eb0 LB 0x18 + push bp ; 55 ; 0xf9eb0 ASMBitLastSetU16.asm:43 + db 08bh, 0ech + ; mov bp, sp ; 8b ec ; 0xf9eb1 ASMBitLastSetU16.asm:44 + mov cx, word [bp+004h] ; 8b 4e 04 ; 0xf9eb3 ASMBitLastSetU16.asm:46 + test cx, cx ; 85 c9 ; 0xf9eb6 ASMBitLastSetU16.asm:47 + je short 09ec4h ; 74 0a ; 0xf9eb8 ASMBitLastSetU16.asm:48 + mov ax, strict word 00010h ; b8 10 00 ; 0xf9eba ASMBitLastSetU16.asm:50 + sal cx, 1 ; d1 e1 ; 0xf9ebd ASMBitLastSetU16.asm:52 + jc short 09ec6h ; 72 05 ; 0xf9ebf ASMBitLastSetU16.asm:53 + dec ax ; 48 ; 0xf9ec1 ASMBitLastSetU16.asm:54 + jmp short 09ebdh ; eb f9 ; 0xf9ec2 ASMBitLastSetU16.asm:55 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xf9ec4 ASMBitLastSetU16.asm:58 + pop bp ; 5d ; 0xf9ec6 ASMBitLastSetU16.asm:60 + retn ; c3 ; 0xf9ec7 ASMBitLastSetU16.asm:61 + + ; Padding 0x3b38 bytes at 0xf9ec8 + times 15160 db 0 + +section BIOS32 progbits vstart=0xda00 align=1 ; size=0x39d class=CODE group=AUTO + ; disGetNextSymbol 0xfda00 LB 0x39d -> off=0x0 cb=0000000000000026 uValue=00000000000f0000 'bios32_service' +bios32_service: ; 0xfda00 LB 0x26 + pushfw ; 9c ; 0xfda00 pcibio32.asm:52 + cmp bl, 000h ; 80 fb 00 ; 0xfda01 pcibio32.asm:54 + jne short 0da22h ; 75 1c ; 0xfda04 pcibio32.asm:55 + cmp ax, 05024h ; 3d 24 50 ; 0xfda06 pcibio32.asm:57 + inc bx ; 43 ; 0xfda09 + dec cx ; 49 ; 0xfda0a + mov AL, strict byte 080h ; b0 80 ; 0xfda0b pcibio32.asm:58 + jne short 0da20h ; 75 11 ; 0xfda0d pcibio32.asm:59 + mov bx, strict word 00000h ; bb 00 00 ; 0xfda0f pcibio32.asm:61 + db 00fh + add byte [bx+di-01000h], bh ; 00 b9 00 f0 ; 0xfda13 + add byte [bx+si], al ; 00 00 ; 0xfda17 + mov dx, 0da26h ; ba 26 da ; 0xfda19 pcibio32.asm:63 + add byte [bx+si], al ; 00 00 ; 0xfda1c + db 032h, 0c0h + ; xor al, al ; 32 c0 ; 0xfda1e pcibio32.asm:64 + popfw ; 9d ; 0xfda20 pcibio32.asm:66 + retf ; cb ; 0xfda21 pcibio32.asm:67 + mov AL, strict byte 081h ; b0 81 ; 0xfda22 pcibio32.asm:70 + jmp short 0da20h ; eb fa ; 0xfda24 pcibio32.asm:71 + ; disGetNextSymbol 0xfda26 LB 0x377 -> off=0x0 cb=000000000000000d uValue=00000000000f0026 'pcibios32_entry' +pcibios32_entry: ; 0xfda26 LB 0xd + pushfw ; 9c ; 0xfda26 pcibio32.asm:80 + cld ; fc ; 0xfda27 pcibio32.asm:81 + push ES ; 06 ; 0xfda28 pcibio32.asm:83 + pushaw ; 60 ; 0xfda29 pcibio32.asm:84 + call 0db4ah ; e8 1d 01 ; 0xfda2a pcibio32.asm:85 + add byte [bx+si], al ; 00 00 ; 0xfda2d + popaw ; 61 ; 0xfda2f pcibio32.asm:86 + pop ES ; 07 ; 0xfda30 pcibio32.asm:87 + popfw ; 9d ; 0xfda31 pcibio32.asm:89 + retf ; cb ; 0xfda32 pcibio32.asm:90 + ; disGetNextSymbol 0xfda33 LB 0x36a -> off=0x0 cb=0000000000000022 uValue=00000000000f0033 'pci32_select_reg_' +pci32_select_reg_: ; 0xfda33 LB 0x22 + push bp ; 55 ; 0xfda33 pci32.c:188 + mov bp, sp ; 89 e5 ; 0xfda34 + push bx ; 53 ; 0xfda36 + and dl, 0fch ; 80 e2 fc ; 0xfda37 pci32.c:190 + mov bx, dx ; 89 d3 ; 0xfda3a + mov dx, 00cf8h ; ba f8 0c ; 0xfda3c + add byte [bx+si], al ; 00 00 ; 0xfda3f + db 00fh, 0b7h, 0c0h + ; movzx ax, ax ; 0f b7 c0 ; 0xfda41 + sal ax, 008h ; c1 e0 08 ; 0xfda44 + or ax, strict word 00000h ; 0d 00 00 ; 0xfda47 + add byte [bx+si-03c76h], al ; 00 80 8a c3 ; 0xfda4a + out DX, ax ; ef ; 0xfda4e + lea sp, [di-004h] ; 8d 65 fc ; 0xfda4f pci32.c:191 + pop bx ; 5b ; 0xfda52 + pop bp ; 5d ; 0xfda53 + retn ; c3 ; 0xfda54 + ; disGetNextSymbol 0xfda55 LB 0x348 -> off=0x0 cb=00000000000000f7 uValue=00000000000f0055 'pci32_find_device_' +pci32_find_device_: ; 0xfda55 LB 0xf7 + push bp ; 55 ; 0xfda55 pci32.c:221 + mov bp, sp ; 89 e5 ; 0xfda56 + push cx ; 51 ; 0xfda58 + push si ; 56 ; 0xfda59 + push di ; 57 ; 0xfda5a + sub sp, strict byte 00014h ; 83 ec 14 ; 0xfda5b + push ax ; 50 ; 0xfda5e + mov cx, dx ; 89 d1 ; 0xfda5f + mov si, bx ; 89 de ; 0xfda61 + test bx, bx ; 85 db ; 0xfda63 pci32.c:231 + xor bx, bx ; 31 db ; 0xfda65 pci32.c:238 + mov byte [di-010h], 000h ; c6 45 f0 00 ; 0xfda67 pci32.c:239 + test bl, 007h ; f6 c3 07 ; 0xfda6b pci32.c:249 + jne short 0daa6h ; 75 36 ; 0xfda6e + db 00fh, 0b7h, 0c3h + ; movzx ax, bx ; 0f b7 c3 ; 0xfda70 pci32.c:250 + mov dx, strict word 0000eh ; ba 0e 00 ; 0xfda73 + add byte [bx+si], al ; 00 00 ; 0xfda76 + call 0da31h ; e8 b6 ff ; 0xfda78 + db 0ffh + db 0ffh + mov dx, 00cfeh ; ba fe 0c ; 0xfda7d pci32.c:251 + add byte [bx+si], al ; 00 00 ; 0xfda80 + db 02bh, 0c0h + ; sub ax, ax ; 2b c0 ; 0xfda82 + in AL, DX ; ec ; 0xfda84 + mov byte [di-014h], al ; 88 45 ec ; 0xfda85 + cmp AL, strict byte 0ffh ; 3c ff ; 0xfda88 pci32.c:252 + jne short 0da94h ; 75 08 ; 0xfda8a + add bx, strict byte 00008h ; 83 c3 08 ; 0xfda8c pci32.c:253 + jmp near 0db1ch ; e9 8a 00 ; 0xfda8f pci32.c:254 + add byte [bx+si], al ; 00 00 ; 0xfda92 + test byte [di-014h], 080h ; f6 45 ec 80 ; 0xfda94 pci32.c:256 + je short 0daa1h ; 74 07 ; 0xfda98 + mov di, strict word 00001h ; bf 01 00 ; 0xfda9a pci32.c:257 + add byte [bx+si], al ; 00 00 ; 0xfda9d + jmp short 0daa6h ; eb 05 ; 0xfda9f pci32.c:258 + mov di, strict word 00008h ; bf 08 00 ; 0xfdaa1 pci32.c:259 + add byte [bx+si], al ; 00 00 ; 0xfdaa4 + mov al, byte [di-014h] ; 8a 45 ec ; 0xfdaa6 pci32.c:270 + and AL, strict byte 007h ; 24 07 ; 0xfdaa9 + cmp AL, strict byte 001h ; 3c 01 ; 0xfdaab + jne short 0dad5h ; 75 26 ; 0xfdaad + db 00fh, 0b7h, 0c3h + ; movzx ax, bx ; 0f b7 c3 ; 0xfdaaf + mov dx, ax ; 89 c2 ; 0xfdab2 + sar dx, 008h ; c1 fa 08 ; 0xfdab4 + test dx, dx ; 85 d2 ; 0xfdab7 + jne short 0dad5h ; 75 1a ; 0xfdab9 + mov dx, strict word 0001ah ; ba 1a 00 ; 0xfdabb pci32.c:272 + add byte [bx+si], al ; 00 00 ; 0xfdabe + call 0da31h ; e8 6e ff ; 0xfdac0 + db 0ffh + db 0ffh + mov dx, 00cfeh ; ba fe 0c ; 0xfdac5 pci32.c:273 + add byte [bx+si], al ; 00 00 ; 0xfdac8 + db 02bh, 0c0h + ; sub ax, ax ; 2b c0 ; 0xfdaca + in AL, DX ; ec ; 0xfdacc + cmp al, byte [di-010h] ; 3a 45 f0 ; 0xfdacd pci32.c:274 + jbe short 0dad5h ; 76 03 ; 0xfdad0 + mov byte [di-010h], al ; 88 45 f0 ; 0xfdad2 pci32.c:275 + test si, si ; 85 f6 ; 0xfdad5 pci32.c:279 + je short 0dae0h ; 74 07 ; 0xfdad7 + mov ax, strict word 00008h ; b8 08 00 ; 0xfdad9 + add byte [bx+si], al ; 00 00 ; 0xfdadc + jmp short 0dae2h ; eb 02 ; 0xfdade + xor ax, ax ; 31 c0 ; 0xfdae0 + db 00fh, 0b7h, 0d0h + ; movzx dx, ax ; 0f b7 d0 ; 0xfdae2 + db 00fh, 0b7h, 0c3h + ; movzx ax, bx ; 0f b7 c3 ; 0xfdae5 + call 0da31h ; e8 46 ff ; 0xfdae8 + db 0ffh + db 0ffh + mov dx, 00cfch ; ba fc 0c ; 0xfdaed pci32.c:280 + add byte [bx+si], al ; 00 00 ; 0xfdaf0 + in ax, DX ; ed ; 0xfdaf2 + mov word [di-018h], ax ; 89 45 e8 ; 0xfdaf3 + mov word [di-020h], strict word 00000h ; c7 45 e0 00 00 ; 0xfdaf6 pci32.c:281 + add byte [bx+si], al ; 00 00 ; 0xfdafb + test si, si ; 85 f6 ; 0xfdafd pci32.c:284 + je short 0db07h ; 74 06 ; 0xfdaff + shr ax, 008h ; c1 e8 08 ; 0xfdb01 pci32.c:285 + mov word [di-018h], ax ; 89 45 e8 ; 0xfdb04 + mov ax, word [di-018h] ; 8b 45 e8 ; 0xfdb07 pci32.c:292 + cmp ax, word [di-024h] ; 3b 45 dc ; 0xfdb0a + je short 0db15h ; 74 06 ; 0xfdb0d + cmp word [di-020h], strict byte 00000h ; 83 7d e0 00 ; 0xfdb0f pci32.c:293 + je short 0db1ch ; 74 07 ; 0xfdb13 + dec cx ; 49 ; 0xfdb15 + cmp ecx, strict byte 0ffffffffh ; 66 83 f9 ff ; 0xfdb16 + je short 0db34h ; 74 18 ; 0xfdb1a + add bx, di ; 01 fb ; 0xfdb1c pci32.c:301 + db 00fh, 0b7h, 0c3h + ; movzx ax, bx ; 0f b7 c3 ; 0xfdb1e pci32.c:302 + sar ax, 008h ; c1 f8 08 ; 0xfdb21 + mov word [di-01ch], ax ; 89 45 e4 ; 0xfdb24 + movzx ax, byte [di-010h] ; 0f b6 45 f0 ; 0xfdb27 + cmp ax, word [di-01ch] ; 3b 45 e4 ; 0xfdb2b + jnl near 0da69h ; 0f 8d 37 ff ; 0xfdb2e + db 0ffh + jmp word [bp-07dh] ; ff 66 83 ; 0xfdb33 + stc ; f9 ; 0xfdb36 + push word [di+005h] ; ff 75 05 ; 0xfdb37 + db 00fh, 0b7h, 0c3h + ; movzx ax, bx ; 0f b7 c3 ; 0xfdb3a + jmp short 0db44h ; eb 05 ; 0xfdb3d + mov ax, strict word 0ffffh ; b8 ff ff ; 0xfdb3f + add byte [bx+si], al ; 00 00 ; 0xfdb42 + lea sp, [di-00ch] ; 8d 65 f4 ; 0xfdb44 pci32.c:309 + pop di ; 5f ; 0xfdb47 + pop si ; 5e ; 0xfdb48 + pop cx ; 59 ; 0xfdb49 + pop bp ; 5d ; 0xfdb4a + retn ; c3 ; 0xfdb4b + ; disGetNextSymbol 0xfdb4c LB 0x251 -> off=0x0 cb=0000000000000251 uValue=00000000000f014c '_pci32_function' +_pci32_function: ; 0xfdb4c LB 0x251 + push bp ; 55 ; 0xfdb4c pci32.c:311 + mov bp, sp ; 89 e5 ; 0xfdb4d + push bx ; 53 ; 0xfdb4f + push si ; 56 ; 0xfdb50 + push di ; 57 ; 0xfdb51 + push ax ; 50 ; 0xfdb52 + push ax ; 50 ; 0xfdb53 + and dword [di+024h], strict dword 0658100ffh ; 66 81 65 24 ff 00 81 65 ; 0xfdb54 pci32.c:318 + sub AL, strict byte 0feh ; 2c fe ; 0xfdb5c + inc word [bx+si] ; ff 00 ; 0xfdb5e + add byte [bp+di+02445h], cl ; 00 8b 45 24 ; 0xfdb60 + xor ah, ah ; 30 e4 ; 0xfdb64 + cmp eax, strict dword 029720003h ; 66 3d 03 00 72 29 ; 0xfdb66 + jbe near 0dc09h ; 0f 86 99 00 ; 0xfdb6c + add byte [bx+si], al ; 00 00 ; 0xfdb70 + cmp eax, strict dword 0840f000eh ; 66 3d 0e 00 0f 84 ; 0xfdb72 + test ax, strict word 00001h ; a9 01 00 ; 0xfdb78 + add byte [bp+03dh], ah ; 00 66 3d ; 0xfdb7b + or byte [bx+si], al ; 08 00 ; 0xfdb7e + jc near 0dd83h ; 0f 82 ff 01 ; 0xfdb80 + add byte [bx+si], al ; 00 00 ; 0xfdb84 + cmp eax, strict dword 0860f000dh ; 66 3d 0d 00 0f 86 ; 0xfdb86 + test AL, strict byte 000h ; a8 00 ; 0xfdb8c + add byte [bx+si], al ; 00 00 ; 0xfdb8e + jmp near 0dd83h ; e9 f0 01 ; 0xfdb90 + add byte [bx+si], al ; 00 00 ; 0xfdb93 + cmp eax, strict dword 028740002h ; 66 3d 02 00 74 28 ; 0xfdb95 + cmp eax, strict dword 0850f0001h ; 66 3d 01 00 0f 85 ; 0xfdb9b + loopne 0dba4h ; e0 01 ; 0xfdba1 + add byte [bx+si], al ; 00 00 ; 0xfdba3 + mov dword [di+024h], strict dword 0c7660001h ; 66 c7 45 24 01 00 66 c7 ; 0xfdba5 pci32.c:323 + inc bp ; 45 ; 0xfdbad + sbb byte [bx+si], dl ; 18 10 ; 0xfdbae + add dh, byte [bx+di] ; 02 31 ; 0xfdbb0 + sal byte [bp-077h], 045h ; c0 66 89 45 ; 0xfdbb2 + and bh, al ; 20 c7 ; 0xfdbb6 + inc bp ; 45 ; 0xfdbb8 + sbb AL, strict byte 050h ; 1c 50 ; 0xfdbb9 + inc bx ; 43 ; 0xfdbbb + dec cx ; 49 ; 0xfdbbc + and cl, ch ; 20 e9 ; 0xfdbbd + rol byte [bx+di], CL ; d2 01 ; 0xfdbbf + add byte [bx+si], al ; 00 00 ; 0xfdbc1 + cmp dword [di+01ch], strict byte 0ffffffffh ; 66 83 7d 1c ff ; 0xfdbc3 pci32.c:333 + jne short 0dbd7h ; 75 0d ; 0xfdbc8 + mov ax, word [di+024h] ; 8b 45 24 ; 0xfdbca pci32.c:334 + xor ah, ah ; 30 e4 ; 0xfdbcd + or ah, 083h ; 80 cc 83 ; 0xfdbcf + jmp near 0dd8bh ; e9 b6 01 ; 0xfdbd2 pci32.c:335 + add byte [bx+si], al ; 00 00 ; 0xfdbd5 + xor bx, bx ; 31 db ; 0xfdbd7 pci32.c:337 + db 00fh, 0b7h, 055h, 00ch + ; movzx dx, [di+00ch] ; 0f b7 55 0c ; 0xfdbd9 + db 00fh, 0b7h, 045h, 020h + ; movzx ax, [di+020h] ; 0f b7 45 20 ; 0xfdbdd + sal ax, 010h ; c1 e0 10 ; 0xfdbe1 + db 00fh, 0b7h, 04dh, 01ch + ; movzx cx, [di+01ch] ; 0f b7 4d 1c ; 0xfdbe4 + or ax, cx ; 09 c8 ; 0xfdbe8 + call 0da53h ; e8 66 fe ; 0xfdbea + db 0ffh + jmp word [bp+03dh] ; ff 66 3d ; 0xfdbee + db 0ffh + push word [di+00dh] ; ff 75 0d ; 0xfdbf2 + mov ax, word [di+024h] ; 8b 45 24 ; 0xfdbf5 pci32.c:339 + xor ah, ah ; 30 e4 ; 0xfdbf8 + or ah, 086h ; 80 cc 86 ; 0xfdbfa + jmp near 0dd8bh ; e9 8b 01 ; 0xfdbfd + add byte [bx+si], al ; 00 00 ; 0xfdc00 + mov dword [di+018h], eax ; 66 89 45 18 ; 0xfdc02 pci32.c:340 + jmp near 0dd93h ; e9 8a 01 ; 0xfdc06 pci32.c:345 + add byte [bx+si], al ; 00 00 ; 0xfdc09 + db 00fh, 0b7h, 055h, 00ch + ; movzx dx, [di+00ch] ; 0f b7 55 0c ; 0xfdc0b pci32.c:347 + mov ax, word [di+020h] ; 8b 45 20 ; 0xfdc0f + mov bx, strict word 00001h ; bb 01 00 ; 0xfdc12 + add byte [bx+si], al ; 00 00 ; 0xfdc15 + call 0da53h ; e8 39 fe ; 0xfdc17 + db 0ffh + jmp word [bp+03dh] ; ff 66 3d ; 0xfdc1b + db 0ffh + push word [di+00dh] ; ff 75 0d ; 0xfdc1f + mov ax, word [di+024h] ; 8b 45 24 ; 0xfdc22 pci32.c:349 + xor ah, ah ; 30 e4 ; 0xfdc25 + or ah, 086h ; 80 cc 86 ; 0xfdc27 + jmp near 0dd8bh ; e9 5e 01 ; 0xfdc2a pci32.c:350 + add byte [bx+si], al ; 00 00 ; 0xfdc2d + mov dword [di+018h], eax ; 66 89 45 18 ; 0xfdc2f pci32.c:352 + jmp near 0dd93h ; e9 5d 01 ; 0xfdc33 pci32.c:354 + add byte [bx+si], al ; 00 00 ; 0xfdc36 + cmp dword [di+008h], strict dword 00d720100h ; 66 81 7d 08 00 01 72 0d ; 0xfdc38 pci32.c:361 + mov ax, word [di+024h] ; 8b 45 24 ; 0xfdc40 pci32.c:362 + xor ah, ah ; 30 e4 ; 0xfdc43 + or ah, 087h ; 80 cc 87 ; 0xfdc45 + jmp near 0dd8bh ; e9 40 01 ; 0xfdc48 pci32.c:363 + add byte [bx+si], al ; 00 00 ; 0xfdc4b + db 00fh, 0b7h, 055h, 008h + ; movzx dx, [di+008h] ; 0f b7 55 08 ; 0xfdc4d pci32.c:365 + db 00fh, 0b7h, 045h, 018h + ; movzx ax, [di+018h] ; 0f b7 45 18 ; 0xfdc51 + call 0da31h ; e8 d9 fd ; 0xfdc55 + db 0ffh + dec word [bp+di+02445h] ; ff 8b 45 24 ; 0xfdc59 + xor ah, ah ; 30 e4 ; 0xfdc5d + cmp eax, strict dword 02172000ah ; 66 3d 0a 00 72 21 ; 0xfdc5f + jbe short 0dcd6h ; 76 6f ; 0xfdc65 + cmp eax, strict dword 0840f000dh ; 66 3d 0d 00 0f 84 ; 0xfdc67 + test ax, strict word 00000h ; a9 00 00 ; 0xfdc6d + add byte [bp+03dh], ah ; 00 66 3d ; 0xfdc70 + or AL, strict byte 000h ; 0c 00 ; 0xfdc73 + je near 0dcfch ; 0f 84 83 00 ; 0xfdc75 + add byte [bx+si], al ; 00 00 ; 0xfdc79 + cmp eax, strict dword 06374000bh ; 66 3d 0b 00 74 63 ; 0xfdc7b + jmp near 0dd93h ; e9 0f 01 ; 0xfdc81 + add byte [bx+si], al ; 00 00 ; 0xfdc84 + cmp eax, strict dword 02d740009h ; 66 3d 09 00 74 2d ; 0xfdc86 + cmp eax, strict dword 0850f0008h ; 66 3d 08 00 0f 85 ; 0xfdc8c + inc word [bx+si] ; ff 00 ; 0xfdc92 + add byte [bx+si], al ; 00 00 ; 0xfdc94 + mov bx, word [di+020h] ; 8b 5d 20 ; 0xfdc96 pci32.c:368 + xor bl, bl ; 30 db ; 0xfdc99 + mov ax, word [di+008h] ; 8b 45 08 ; 0xfdc9b + xor ah, ah ; 30 e4 ; 0xfdc9e + and AL, strict byte 003h ; 24 03 ; 0xfdca0 + db 00fh, 0b7h, 0d0h + ; movzx dx, ax ; 0f b7 d0 ; 0xfdca2 + add dx, 00cfch ; 81 c2 fc 0c ; 0xfdca5 + add byte [bx+si], al ; 00 00 ; 0xfdca9 + db 02bh, 0c0h + ; sub ax, ax ; 2b c0 ; 0xfdcab + in AL, DX ; ec ; 0xfdcad + or bx, ax ; 09 c3 ; 0xfdcae + mov dword [di+020h], ebx ; 66 89 5d 20 ; 0xfdcb0 + jmp near 0dd93h ; e9 dc 00 ; 0xfdcb4 pci32.c:369 + add byte [bx+si], al ; 00 00 ; 0xfdcb7 + mov ax, word [di+008h] ; 8b 45 08 ; 0xfdcb9 pci32.c:371 + xor ah, ah ; 30 e4 ; 0xfdcbc + and AL, strict byte 002h ; 24 02 ; 0xfdcbe + db 00fh, 0b7h, 0d0h + ; movzx dx, ax ; 0f b7 d0 ; 0xfdcc0 + add dx, 00cfch ; 81 c2 fc 0c ; 0xfdcc3 + add byte [bx+si], al ; 00 00 ; 0xfdcc7 + db 02bh, 0c0h + ; sub ax, ax ; 2b c0 ; 0xfdcc9 + in eax, DX ; 66 ed ; 0xfdccb + mov dword [di+020h], eax ; 66 89 45 20 ; 0xfdccd + jmp near 0dd93h ; e9 bf 00 ; 0xfdcd1 pci32.c:372 + add byte [bx+si], al ; 00 00 ; 0xfdcd4 + mov dx, 00cfch ; ba fc 0c ; 0xfdcd6 pci32.c:374 + add byte [bx+si], al ; 00 00 ; 0xfdcd9 + in ax, DX ; ed ; 0xfdcdb + mov word [di+020h], ax ; 89 45 20 ; 0xfdcdc + jmp near 0dd93h ; e9 b1 00 ; 0xfdcdf pci32.c:375 + add byte [bx+si], al ; 00 00 ; 0xfdce2 + mov ax, word [di+020h] ; 8b 45 20 ; 0xfdce4 pci32.c:377 + mov dx, word [di+008h] ; 8b 55 08 ; 0xfdce7 + xor dh, dh ; 30 f6 ; 0xfdcea + and dl, 003h ; 80 e2 03 ; 0xfdcec + db 00fh, 0b7h, 0d2h + ; movzx dx, dx ; 0f b7 d2 ; 0xfdcef + add dx, 00cfch ; 81 c2 fc 0c ; 0xfdcf2 + add byte [bx+si], al ; 00 00 ; 0xfdcf6 + out DX, AL ; ee ; 0xfdcf8 + jmp near 0dd93h ; e9 97 00 ; 0xfdcf9 pci32.c:378 + add byte [bx+si], al ; 00 00 ; 0xfdcfc + db 00fh, 0b7h, 045h, 020h + ; movzx ax, [di+020h] ; 0f b7 45 20 ; 0xfdcfe pci32.c:380 + mov dx, word [di+008h] ; 8b 55 08 ; 0xfdd02 + xor dh, dh ; 30 f6 ; 0xfdd05 + and dl, 002h ; 80 e2 02 ; 0xfdd07 + db 00fh, 0b7h, 0d2h + ; movzx dx, dx ; 0f b7 d2 ; 0xfdd0a + add dx, 00cfch ; 81 c2 fc 0c ; 0xfdd0d + add byte [bx+si], al ; 00 00 ; 0xfdd11 + out DX, eax ; 66 ef ; 0xfdd13 + jmp near 0dd93h ; e9 7b 00 ; 0xfdd15 pci32.c:381 + add byte [bx+si], al ; 00 00 ; 0xfdd18 + mov ax, word [di+020h] ; 8b 45 20 ; 0xfdd1a pci32.c:383 + mov dx, 00cfch ; ba fc 0c ; 0xfdd1d + add byte [bx+si], al ; 00 00 ; 0xfdd20 + out DX, ax ; ef ; 0xfdd22 + jmp short 0dd95h ; eb 70 ; 0xfdd23 pci32.c:387 + db 00fh, 0b7h, 045h, 008h + ; movzx ax, [di+008h] ; 0f b7 45 08 ; 0xfdd25 pci32.c:389 + mov es, [di+028h] ; 8e 45 28 ; 0xfdd29 + mov [di-010h], es ; 8c 45 f0 ; 0xfdd2c + mov bx, ax ; 89 c3 ; 0xfdd2f + mov edx, dword [di] ; 66 8b 15 ; 0xfdd31 pci32.c:393 + xor bl, 000h ; 80 f3 00 ; 0xfdd34 + add byte [bp+026h], ah ; 00 66 26 ; 0xfdd37 + cmp dx, word [bx+si] ; 3b 10 ; 0xfdd3a + jbe short 0dd50h ; 76 12 ; 0xfdd3c + mov ax, word [di+024h] ; 8b 45 24 ; 0xfdd3e pci32.c:394 + xor ah, ah ; 30 e4 ; 0xfdd41 + or ah, 089h ; 80 cc 89 ; 0xfdd43 + mov dword [di+024h], eax ; 66 89 45 24 ; 0xfdd46 + or word [di+02ch], strict byte 00001h ; 83 4d 2c 01 ; 0xfdd4a pci32.c:395 + jmp short 0dd76h ; eb 26 ; 0xfdd4e pci32.c:396 + db 00fh, 0b7h, 0cah + ; movzx cx, dx ; 0f b7 ca ; 0xfdd50 pci32.c:397 + db 066h, 026h, 08bh, 050h, 006h + ; mov edx, dword [es:bx+si+006h] ; 66 26 8b 50 06 ; 0xfdd53 + mov word [di-014h], dx ; 89 55 ec ; 0xfdd58 + mov di, word [es:bx+si+002h] ; 26 8b 78 02 ; 0xfdd5b + mov dx, ds ; 8c da ; 0xfdd5f + mov si, 0f1a0h ; be a0 f1 ; 0xfdd61 + add byte [bx+si], al ; 00 00 ; 0xfdd64 + mov es, [di-014h] ; 8e 45 ec ; 0xfdd66 + push DS ; 1e ; 0xfdd69 + db 066h, 08eh, 0dah + ; mov ds, edx ; 66 8e da ; 0xfdd6a + rep movsb ; f3 a4 ; 0xfdd6d + pop DS ; 1f ; 0xfdd6f + mov dword [di+018h], strict dword 0a1660a00h ; 66 c7 45 18 00 0a 66 a1 ; 0xfdd70 pci32.c:399 + xor bl, 000h ; 80 f3 00 ; 0xfdd78 + add byte [bp-00fbbh], cl ; 00 8e 45 f0 ; 0xfdd7b + db 066h, 026h, 089h, 003h + ; mov dword [es:bp+di], eax ; 66 26 89 03 ; 0xfdd7f + jmp short 0dd95h ; eb 10 ; 0xfdd83 pci32.c:402 + mov ax, word [di+024h] ; 8b 45 24 ; 0xfdd85 pci32.c:405 + xor ah, ah ; 30 e4 ; 0xfdd88 + or ah, 081h ; 80 cc 81 ; 0xfdd8a + mov dword [di+024h], eax ; 66 89 45 24 ; 0xfdd8d + or word [di+02ch], strict byte 00001h ; 83 4d 2c 01 ; 0xfdd91 pci32.c:406 + lea sp, [di-00ch] ; 8d 65 f4 ; 0xfdd95 pci32.c:408 + pop di ; 5f ; 0xfdd98 + pop si ; 5e ; 0xfdd99 + pop bx ; 5b ; 0xfdd9a + pop bp ; 5d ; 0xfdd9b + retn ; c3 ; 0xfdd9c + + ; Padding 0x3 bytes at 0xfdd9d + times 3 db 0 + +section BIOS32CONST progbits vstart=0xdda0 align=1 ; size=0x0 class=FAR_DATA group=BIOS32_GROUP + +section BIOS32CONST2 progbits vstart=0xdda0 align=1 ; size=0x0 class=FAR_DATA group=BIOS32_GROUP + +section BIOS32_DATA progbits vstart=0xdda0 align=1 ; size=0x0 class=FAR_DATA group=BIOS32_GROUP + + ; Padding 0x260 bytes at 0xfdda0 + times 608 db 0 + +section BIOSSEG progbits vstart=0xe000 align=1 ; size=0x2000 class=CODE group=AUTO + ; disGetNextSymbol 0xfe000 LB 0x2000 -> off=0x0 cb=0000000000000030 uValue=00000000000f0000 'biosorg_check_before_or_at_0E02Eh' +biosorg_check_before_or_at_0E02Eh: ; 0xfe000 LB 0x30 + times 0x2e db 0 + db 'XM' + ; disGetNextSymbol 0xfe030 LB 0x1fd0 -> off=0x0 cb=0000000000000004 uValue=00000000000f0030 'eoi_both_pics' +eoi_both_pics: ; 0xfe030 LB 0x4 + mov AL, strict byte 020h ; b0 20 ; 0xfe030 orgs.asm:238 + out strict byte 0a0h, AL ; e6 a0 ; 0xfe032 orgs.asm:239 + ; disGetNextSymbol 0xfe034 LB 0x1fcc -> off=0x0 cb=0000000000000005 uValue=00000000000f0034 'eoi_master_pic' +eoi_master_pic: ; 0xfe034 LB 0x5 + mov AL, strict byte 020h ; b0 20 ; 0xfe034 orgs.asm:241 + out strict byte 020h, AL ; e6 20 ; 0xfe036 orgs.asm:242 + retn ; c3 ; 0xfe038 orgs.asm:243 + ; disGetNextSymbol 0xfe039 LB 0x1fc7 -> off=0x0 cb=000000000000000b uValue=0000000000000039 'set_int_vects' +set_int_vects: ; 0xfe039 LB 0xb + mov word [bx], ax ; 89 07 ; 0xfe039 orgs.asm:250 + mov word [bx+002h], dx ; 89 57 02 ; 0xfe03b orgs.asm:251 + add bx, strict byte 00004h ; 83 c3 04 ; 0xfe03e orgs.asm:252 + loop 0e039h ; e2 f6 ; 0xfe041 orgs.asm:253 + retn ; c3 ; 0xfe043 orgs.asm:254 + ; disGetNextSymbol 0xfe044 LB 0x1fbc -> off=0x0 cb=0000000000000006 uValue=00000000000f0044 'eoi_jmp_post' +eoi_jmp_post: ; 0xfe044 LB 0x6 + in AL, strict byte 060h ; e4 60 ; 0xfe044 orgs.asm:262 + mov AL, strict byte 020h ; b0 20 ; 0xfe046 orgs.asm:263 + out strict byte 020h, AL ; e6 20 ; 0xfe048 orgs.asm:264 + ; disGetNextSymbol 0xfe04a LB 0x1fb6 -> off=0x0 cb=0000000000000009 uValue=00000000000f004a 'no_eoi_jmp_post' +no_eoi_jmp_post: ; 0xfe04a LB 0x9 + mov ax, strict word 00040h ; b8 40 00 ; 0xfe04a orgs.asm:267 + mov ds, ax ; 8e d8 ; 0xfe04d orgs.asm:268 + jmp far [word 00067h] ; ff 2e 67 00 ; 0xfe04f orgs.asm:269 + ; disGetNextSymbol 0xfe053 LB 0x1fad -> off=0x0 cb=0000000000000002 uValue=00000000000f0053 'seg_40_value' +seg_40_value: ; 0xfe053 LB 0x2 + inc ax ; 40 ; 0xfe053 + times 0x1 db 0 + ; disGetNextSymbol 0xfe055 LB 0x1fab -> off=0x0 cb=0000000000000006 uValue=00000000000f0055 'biosorg_check_before_or_at_0E059h' +biosorg_check_before_or_at_0E059h: ; 0xfe055 LB 0x6 + add byte [bx+si], al ; 00 00 ; 0xfe055 + add byte [bx+si], al ; 00 00 ; 0xfe057 + pop ax ; 58 ; 0xfe059 + dec bp ; 4d ; 0xfe05a + ; disGetNextSymbol 0xfe05b LB 0x1fa5 -> off=0x0 cb=000000000000006e uValue=00000000000f005b 'post' +post: ; 0xfe05b LB 0x6e + cli ; fa ; 0xfe05b orgs.asm:278 + smsw ax ; 0f 01 e0 ; 0xfe05c orgs.asm:284 + test ax, strict word 00001h ; a9 01 00 ; 0xfe05f orgs.asm:285 + je short 0e06ah ; 74 06 ; 0xfe062 orgs.asm:286 + mov AL, strict byte 001h ; b0 01 ; 0xfe064 orgs.asm:295 + out strict byte 092h, AL ; e6 92 ; 0xfe066 orgs.asm:296 + jmp short 0e068h ; eb fe ; 0xfe068 orgs.asm:297 + mov AL, strict byte 00fh ; b0 0f ; 0xfe06a orgs.asm:302 + out strict byte 070h, AL ; e6 70 ; 0xfe06c orgs.asm:303 + in AL, strict byte 071h ; e4 71 ; 0xfe06e orgs.asm:304 + xchg ah, al ; 86 c4 ; 0xfe070 orgs.asm:307 + in AL, strict byte 064h ; e4 64 ; 0xfe072 orgs.asm:311 + test AL, strict byte 004h ; a8 04 ; 0xfe074 orgs.asm:312 + je short 0e08bh ; 74 13 ; 0xfe076 orgs.asm:313 + db 08ah, 0c4h + ; mov al, ah ; 8a c4 ; 0xfe078 orgs.asm:316 + db 00ah, 0c0h + ; or al, al ; 0a c0 ; 0xfe07a orgs.asm:317 + jne short 0e08bh ; 75 0d ; 0xfe07c orgs.asm:318 + mov ds, [cs:0e053h] ; 2e 8e 1e 53 e0 ; 0xfe07e orgs.asm:324 + cmp word [word 00072h], 01234h ; 81 3e 72 00 34 12 ; 0xfe083 orgs.asm:325 + jne short 0e064h ; 75 d9 ; 0xfe089 orgs.asm:326 + mov AL, strict byte 00fh ; b0 0f ; 0xfe08b orgs.asm:330 + out strict byte 070h, AL ; e6 70 ; 0xfe08d orgs.asm:331 + mov AL, strict byte 000h ; b0 00 ; 0xfe08f orgs.asm:332 + out strict byte 071h, AL ; e6 71 ; 0xfe091 orgs.asm:333 + db 08ah, 0c4h + ; mov al, ah ; 8a c4 ; 0xfe093 orgs.asm:337 + cmp AL, strict byte 009h ; 3c 09 ; 0xfe095 orgs.asm:338 + je short 0e0abh ; 74 12 ; 0xfe097 orgs.asm:339 + cmp AL, strict byte 00ah ; 3c 0a ; 0xfe099 orgs.asm:340 + je short 0e0abh ; 74 0e ; 0xfe09b orgs.asm:341 + db 032h, 0c0h + ; xor al, al ; 32 c0 ; 0xfe09d orgs.asm:343 + out strict byte 00dh, AL ; e6 0d ; 0xfe09f orgs.asm:346 + out strict byte 0dah, AL ; e6 da ; 0xfe0a1 orgs.asm:347 + mov AL, strict byte 0c0h ; b0 c0 ; 0xfe0a3 orgs.asm:350 + out strict byte 0d6h, AL ; e6 d6 ; 0xfe0a5 orgs.asm:351 + mov AL, strict byte 000h ; b0 00 ; 0xfe0a7 orgs.asm:352 + out strict byte 0d4h, AL ; e6 d4 ; 0xfe0a9 orgs.asm:353 + db 08ah, 0c4h + ; mov al, ah ; 8a c4 ; 0xfe0ab orgs.asm:357 + cmp AL, strict byte 000h ; 3c 00 ; 0xfe0ad orgs.asm:358 + je short 0e0c9h ; 74 18 ; 0xfe0af orgs.asm:359 + cmp AL, strict byte 00dh ; 3c 0d ; 0xfe0b1 orgs.asm:361 + jnc short 0e0c9h ; 73 14 ; 0xfe0b3 orgs.asm:362 + cmp AL, strict byte 009h ; 3c 09 ; 0xfe0b5 orgs.asm:363 + jne short 0e0bch ; 75 03 ; 0xfe0b7 orgs.asm:364 + jmp near 0e350h ; e9 94 02 ; 0xfe0b9 orgs.asm:365 + mov sp, 00400h ; bc 00 04 ; 0xfe0bc orgs.asm:368 + cmp AL, strict byte 005h ; 3c 05 ; 0xfe0bf orgs.asm:370 + je short 0e044h ; 74 81 ; 0xfe0c1 orgs.asm:371 + cmp AL, strict byte 00ah ; 3c 0a ; 0xfe0c3 orgs.asm:373 + je short 0e04ah ; 74 83 ; 0xfe0c5 orgs.asm:374 + jmp short 0e0c9h ; eb 00 ; 0xfe0c7 orgs.asm:378 + ; disGetNextSymbol 0xfe0c9 LB 0x1f37 -> off=0x0 cb=00000000000001ed uValue=00000000000f00c9 'normal_post' +normal_post: ; 0xfe0c9 LB 0x1ed + mov ax, 07800h ; b8 00 78 ; 0xfe0c9 orgs.asm:387 + db 08bh, 0e0h + ; mov sp, ax ; 8b e0 ; 0xfe0cc orgs.asm:388 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xfe0ce orgs.asm:389 + mov ds, ax ; 8e d8 ; 0xfe0d0 orgs.asm:390 + mov ss, ax ; 8e d0 ; 0xfe0d2 orgs.asm:391 + mov es, ax ; 8e c0 ; 0xfe0d4 orgs.asm:395 + db 033h, 0ffh + ; xor di, di ; 33 ff ; 0xfe0d6 orgs.asm:396 + cld ; fc ; 0xfe0d8 orgs.asm:397 + mov cx, 00239h ; b9 39 02 ; 0xfe0d9 orgs.asm:398 + rep stosw ; f3 ab ; 0xfe0dc orgs.asm:399 + inc di ; 47 ; 0xfe0de orgs.asm:400 + inc di ; 47 ; 0xfe0df orgs.asm:401 + mov cx, 005c6h ; b9 c6 05 ; 0xfe0e0 orgs.asm:402 + rep stosw ; f3 ab ; 0xfe0e3 orgs.asm:403 + db 033h, 0dbh + ; xor bx, bx ; 33 db ; 0xfe0e5 orgs.asm:407 + add bx, 01000h ; 81 c3 00 10 ; 0xfe0e7 orgs.asm:409 + cmp bx, 09000h ; 81 fb 00 90 ; 0xfe0eb orgs.asm:410 + jnc short 0e0fch ; 73 0b ; 0xfe0ef orgs.asm:411 + mov es, bx ; 8e c3 ; 0xfe0f1 orgs.asm:412 + db 033h, 0ffh + ; xor di, di ; 33 ff ; 0xfe0f3 orgs.asm:413 + mov cx, 08000h ; b9 00 80 ; 0xfe0f5 orgs.asm:414 + rep stosw ; f3 ab ; 0xfe0f8 orgs.asm:415 + jmp short 0e0e7h ; eb eb ; 0xfe0fa orgs.asm:416 + mov es, bx ; 8e c3 ; 0xfe0fc orgs.asm:418 + db 033h, 0ffh + ; xor di, di ; 33 ff ; 0xfe0fe orgs.asm:419 + mov cx, 07ff8h ; b9 f8 7f ; 0xfe100 orgs.asm:420 + rep stosw ; f3 ab ; 0xfe103 orgs.asm:421 + db 033h, 0dbh + ; xor bx, bx ; 33 db ; 0xfe105 orgs.asm:422 + push CS ; 0e ; 0xfe107 orgs.asm:104 + pop DS ; 1f ; 0xfe108 orgs.asm:105 + cld ; fc ; 0xfe109 orgs.asm:106 + call 0170dh ; e8 00 36 ; 0xfe10a orgs.asm:426 + db 033h, 0dbh + ; xor bx, bx ; 33 db ; 0xfe10d orgs.asm:433 + mov ds, bx ; 8e db ; 0xfe10f orgs.asm:434 + mov cx, strict word 00060h ; b9 60 00 ; 0xfe111 orgs.asm:435 + mov ax, 0ff53h ; b8 53 ff ; 0xfe114 orgs.asm:436 + mov dx, 0f000h ; ba 00 f0 ; 0xfe117 orgs.asm:437 + call 0e039h ; e8 1c ff ; 0xfe11a orgs.asm:438 + mov bx, 001a0h ; bb a0 01 ; 0xfe11d orgs.asm:443 + mov cx, strict word 00010h ; b9 10 00 ; 0xfe120 orgs.asm:444 + call 0e039h ; e8 13 ff ; 0xfe123 orgs.asm:445 + mov ax, 0027fh ; b8 7f 02 ; 0xfe126 orgs.asm:448 + mov word [00413h], ax ; a3 13 04 ; 0xfe129 orgs.asm:449 + mov ax, 0e9cch ; b8 cc e9 ; 0xfe12c orgs.asm:95 + mov word [00018h], ax ; a3 18 00 ; 0xfe12f orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe132 orgs.asm:97 + mov word [0001ah], ax ; a3 1a 00 ; 0xfe135 orgs.asm:98 + mov ax, 0f84dh ; b8 4d f8 ; 0xfe138 orgs.asm:95 + mov word [00044h], ax ; a3 44 00 ; 0xfe13b orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe13e orgs.asm:97 + mov word [00046h], ax ; a3 46 00 ; 0xfe141 orgs.asm:98 + mov ax, 0f841h ; b8 41 f8 ; 0xfe144 orgs.asm:95 + mov word [00048h], ax ; a3 48 00 ; 0xfe147 orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe14a orgs.asm:97 + mov word [0004ah], ax ; a3 4a 00 ; 0xfe14d orgs.asm:98 + mov ax, 0f859h ; b8 59 f8 ; 0xfe150 orgs.asm:95 + mov word [00054h], ax ; a3 54 00 ; 0xfe153 orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe156 orgs.asm:97 + mov word [00056h], ax ; a3 56 00 ; 0xfe159 orgs.asm:98 + mov ax, 0efd4h ; b8 d4 ef ; 0xfe15c orgs.asm:95 + mov word [0005ch], ax ; a3 5c 00 ; 0xfe15f orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe162 orgs.asm:97 + mov word [0005eh], ax ; a3 5e 00 ; 0xfe165 orgs.asm:98 + mov ax, 0f0a4h ; b8 a4 f0 ; 0xfe168 orgs.asm:95 + mov word [00060h], ax ; a3 60 00 ; 0xfe16b orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe16e orgs.asm:97 + mov word [00062h], ax ; a3 62 00 ; 0xfe171 orgs.asm:98 + mov ax, 0e6f2h ; b8 f2 e6 ; 0xfe174 orgs.asm:95 + mov word [00064h], ax ; a3 64 00 ; 0xfe177 orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe17a orgs.asm:97 + mov word [00066h], ax ; a3 66 00 ; 0xfe17d orgs.asm:98 + mov ax, 0efedh ; b8 ed ef ; 0xfe180 orgs.asm:95 + mov word [00070h], ax ; a3 70 00 ; 0xfe183 orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe186 orgs.asm:97 + mov word [00072h], ax ; a3 72 00 ; 0xfe189 orgs.asm:98 + call 0e778h ; e8 e9 05 ; 0xfe18c orgs.asm:465 + mov ax, 0fe6eh ; b8 6e fe ; 0xfe18f orgs.asm:95 + mov word [00068h], ax ; a3 68 00 ; 0xfe192 orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe195 orgs.asm:97 + mov word [0006ah], ax ; a3 6a 00 ; 0xfe198 orgs.asm:98 + mov ax, 0fea5h ; b8 a5 fe ; 0xfe19b orgs.asm:95 + mov word [00020h], ax ; a3 20 00 ; 0xfe19e orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe1a1 orgs.asm:97 + mov word [00022h], ax ; a3 22 00 ; 0xfe1a4 orgs.asm:98 + mov AL, strict byte 034h ; b0 34 ; 0xfe1a7 orgs.asm:476 + out strict byte 043h, AL ; e6 43 ; 0xfe1a9 orgs.asm:477 + mov AL, strict byte 000h ; b0 00 ; 0xfe1ab orgs.asm:478 + out strict byte 040h, AL ; e6 40 ; 0xfe1ad orgs.asm:479 + out strict byte 040h, AL ; e6 40 ; 0xfe1af orgs.asm:480 + mov ax, 0f065h ; b8 65 f0 ; 0xfe1b1 orgs.asm:95 + mov word [00040h], ax ; a3 40 00 ; 0xfe1b4 orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe1b7 orgs.asm:97 + mov word [00042h], ax ; a3 42 00 ; 0xfe1ba orgs.asm:98 + mov ax, 0e987h ; b8 87 e9 ; 0xfe1bd orgs.asm:95 + mov word [00024h], ax ; a3 24 00 ; 0xfe1c0 orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe1c3 orgs.asm:97 + mov word [00026h], ax ; a3 26 00 ; 0xfe1c6 orgs.asm:98 + mov ax, 0e82eh ; b8 2e e8 ; 0xfe1c9 orgs.asm:95 + mov word [00058h], ax ; a3 58 00 ; 0xfe1cc orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe1cf orgs.asm:97 + mov word [0005ah], ax ; a3 5a 00 ; 0xfe1d2 orgs.asm:98 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xfe1d5 orgs.asm:489 + mov ds, ax ; 8e d8 ; 0xfe1d7 orgs.asm:490 + mov byte [00417h], AL ; a2 17 04 ; 0xfe1d9 orgs.asm:492 + mov byte [00418h], AL ; a2 18 04 ; 0xfe1dc orgs.asm:493 + mov byte [00419h], AL ; a2 19 04 ; 0xfe1df orgs.asm:494 + mov byte [00471h], AL ; a2 71 04 ; 0xfe1e2 orgs.asm:495 + mov byte [00497h], AL ; a2 97 04 ; 0xfe1e5 orgs.asm:496 + mov AL, strict byte 010h ; b0 10 ; 0xfe1e8 orgs.asm:497 + mov byte [00496h], AL ; a2 96 04 ; 0xfe1ea orgs.asm:498 + mov bx, strict word 0001eh ; bb 1e 00 ; 0xfe1ed orgs.asm:500 + mov word [0041ah], bx ; 89 1e 1a 04 ; 0xfe1f0 orgs.asm:501 + mov word [0041ch], bx ; 89 1e 1c 04 ; 0xfe1f4 orgs.asm:502 + mov word [00480h], bx ; 89 1e 80 04 ; 0xfe1f8 orgs.asm:503 + mov bx, strict word 0003eh ; bb 3e 00 ; 0xfe1fc orgs.asm:504 + mov word [00482h], bx ; 89 1e 82 04 ; 0xfe1ff orgs.asm:505 + mov AL, strict byte 014h ; b0 14 ; 0xfe203 orgs.asm:508 + out strict byte 070h, AL ; e6 70 ; 0xfe205 orgs.asm:509 + in AL, strict byte 071h ; e4 71 ; 0xfe207 orgs.asm:510 + mov byte [00410h], AL ; a2 10 04 ; 0xfe209 orgs.asm:511 + push DS ; 1e ; 0xfe20c orgs.asm:513 + push CS ; 0e ; 0xfe20d orgs.asm:104 + pop DS ; 1f ; 0xfe20e orgs.asm:105 + cld ; fc ; 0xfe20f orgs.asm:106 + mov ax, 0c000h ; b8 00 c0 ; 0xfe210 orgs.asm:518 + mov dx, 0c800h ; ba 00 c8 ; 0xfe213 orgs.asm:519 + call 01600h ; e8 e7 33 ; 0xfe216 orgs.asm:520 + call 04e7dh ; e8 61 6c ; 0xfe219 orgs.asm:523 + pop DS ; 1f ; 0xfe21c orgs.asm:524 + mov ax, 0ff53h ; b8 53 ff ; 0xfe21d orgs.asm:95 + mov word [0003ch], ax ; a3 3c 00 ; 0xfe220 orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe223 orgs.asm:97 + mov word [0003eh], ax ; a3 3e 00 ; 0xfe226 orgs.asm:98 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xfe229 orgs.asm:528 + mov ds, ax ; 8e d8 ; 0xfe22b orgs.asm:529 + db 033h, 0dbh + ; xor bx, bx ; 33 db ; 0xfe22d orgs.asm:530 + mov CL, strict byte 014h ; b1 14 ; 0xfe22f orgs.asm:531 + mov dx, 00378h ; ba 78 03 ; 0xfe231 orgs.asm:532 + call 0ecedh ; e8 b6 0a ; 0xfe234 orgs.asm:533 + mov dx, 00278h ; ba 78 02 ; 0xfe237 orgs.asm:534 + call 0ecedh ; e8 b0 0a ; 0xfe23a orgs.asm:535 + sal bx, 00eh ; c1 e3 0e ; 0xfe23d orgs.asm:200 + mov ax, word [00410h] ; a1 10 04 ; 0xfe240 orgs.asm:537 + and ax, 03fffh ; 25 ff 3f ; 0xfe243 orgs.asm:538 + db 00bh, 0c3h + ; or ax, bx ; 0b c3 ; 0xfe246 orgs.asm:539 + mov word [00410h], ax ; a3 10 04 ; 0xfe248 orgs.asm:540 + mov ax, 0e746h ; b8 46 e7 ; 0xfe24b orgs.asm:95 + mov word [0002ch], ax ; a3 2c 00 ; 0xfe24e orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe251 orgs.asm:97 + mov word [0002eh], ax ; a3 2e 00 ; 0xfe254 orgs.asm:98 + mov ax, 0e746h ; b8 46 e7 ; 0xfe257 orgs.asm:95 + mov word [00030h], ax ; a3 30 00 ; 0xfe25a orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe25d orgs.asm:97 + mov word [00032h], ax ; a3 32 00 ; 0xfe260 orgs.asm:98 + mov ax, 0e739h ; b8 39 e7 ; 0xfe263 orgs.asm:95 + mov word [00050h], ax ; a3 50 00 ; 0xfe266 orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe269 orgs.asm:97 + mov word [00052h], ax ; a3 52 00 ; 0xfe26c orgs.asm:98 + db 033h, 0dbh + ; xor bx, bx ; 33 db ; 0xfe26f orgs.asm:546 + mov CL, strict byte 00ah ; b1 0a ; 0xfe271 orgs.asm:547 + mov dx, 003f8h ; ba f8 03 ; 0xfe273 orgs.asm:548 + call 0ed0bh ; e8 92 0a ; 0xfe276 orgs.asm:549 + mov dx, 002f8h ; ba f8 02 ; 0xfe279 orgs.asm:550 + call 0ed0bh ; e8 8c 0a ; 0xfe27c orgs.asm:551 + mov dx, 003e8h ; ba e8 03 ; 0xfe27f orgs.asm:552 + call 0ed0bh ; e8 86 0a ; 0xfe282 orgs.asm:553 + mov dx, 002e8h ; ba e8 02 ; 0xfe285 orgs.asm:554 + call 0ed0bh ; e8 80 0a ; 0xfe288 orgs.asm:555 + sal bx, 009h ; c1 e3 09 ; 0xfe28b orgs.asm:200 + mov ax, word [00410h] ; a1 10 04 ; 0xfe28e orgs.asm:557 + and ax, 0f1ffh ; 25 ff f1 ; 0xfe291 orgs.asm:558 + db 00bh, 0c3h + ; or ax, bx ; 0b c3 ; 0xfe294 orgs.asm:559 + mov word [00410h], ax ; a3 10 04 ; 0xfe296 orgs.asm:560 + mov ax, 0ff53h ; b8 53 ff ; 0xfe299 orgs.asm:95 + mov word [00128h], ax ; a3 28 01 ; 0xfe29c orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe29f orgs.asm:97 + mov word [0012ah], ax ; a3 2a 01 ; 0xfe2a2 orgs.asm:98 + mov ax, 0f8e6h ; b8 e6 f8 ; 0xfe2a5 orgs.asm:95 + mov word [001c0h], ax ; a3 c0 01 ; 0xfe2a8 orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe2ab orgs.asm:97 + mov word [001c2h], ax ; a3 c2 01 ; 0xfe2ae orgs.asm:98 + call 0edbfh ; e8 0b 0b ; 0xfe2b1 orgs.asm:566 + jmp short 0e303h ; eb 4d ; 0xfe2b4 orgs.asm:568 + ; disGetNextSymbol 0xfe2b6 LB 0x1d4a -> off=0x0 cb=000000000000000d uValue=00000000000f02b6 'biosorg_check_before_or_at_0E2C1h' +biosorg_check_before_or_at_0E2C1h: ; 0xfe2b6 LB 0xd + times 0xb db 0 + db 'XM' + ; disGetNextSymbol 0xfe2c3 LB 0x1d3d -> off=0x0 cb=0000000000000007 uValue=00000000000f02c3 'nmi' +nmi: ; 0xfe2c3 LB 0x7 + push CS ; 0e ; 0xfe2c3 orgs.asm:104 + pop DS ; 1f ; 0xfe2c4 orgs.asm:105 + cld ; fc ; 0xfe2c5 orgs.asm:106 + call 016e9h ; e8 20 34 ; 0xfe2c6 orgs.asm:577 + iret ; cf ; 0xfe2c9 orgs.asm:578 + ; disGetNextSymbol 0xfe2ca LB 0x1d36 -> off=0x0 cb=0000000000000008 uValue=00000000000f02ca 'int75_handler' +int75_handler: ; 0xfe2ca LB 0x8 + out strict byte 0f0h, AL ; e6 f0 ; 0xfe2ca orgs.asm:581 + call 0e030h ; e8 61 fd ; 0xfe2cc orgs.asm:582 + int 002h ; cd 02 ; 0xfe2cf orgs.asm:583 + iret ; cf ; 0xfe2d1 orgs.asm:584 + ; disGetNextSymbol 0xfe2d2 LB 0x1d2e -> off=0x0 cb=00000000000000a7 uValue=00000000000f02d2 'hard_drive_post' +hard_drive_post: ; 0xfe2d2 LB 0xa7 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xfe2d2 orgs.asm:589 + mov ds, ax ; 8e d8 ; 0xfe2d4 orgs.asm:590 + mov byte [00474h], AL ; a2 74 04 ; 0xfe2d6 orgs.asm:592 + mov byte [00477h], AL ; a2 77 04 ; 0xfe2d9 orgs.asm:593 + mov byte [0048ch], AL ; a2 8c 04 ; 0xfe2dc orgs.asm:594 + mov byte [0048dh], AL ; a2 8d 04 ; 0xfe2df orgs.asm:595 + mov byte [0048eh], AL ; a2 8e 04 ; 0xfe2e2 orgs.asm:596 + mov AL, strict byte 0c0h ; b0 c0 ; 0xfe2e5 orgs.asm:597 + mov byte [00476h], AL ; a2 76 04 ; 0xfe2e7 orgs.asm:598 + mov ax, 0e3feh ; b8 fe e3 ; 0xfe2ea orgs.asm:95 + mov word [0004ch], ax ; a3 4c 00 ; 0xfe2ed orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe2f0 orgs.asm:97 + mov word [0004eh], ax ; a3 4e 00 ; 0xfe2f3 orgs.asm:98 + mov ax, 0f8d4h ; b8 d4 f8 ; 0xfe2f6 orgs.asm:95 + mov word [001d8h], ax ; a3 d8 01 ; 0xfe2f9 orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe2fc orgs.asm:97 + mov word [001dah], ax ; a3 da 01 ; 0xfe2ff orgs.asm:98 + retn ; c3 ; 0xfe302 orgs.asm:603 + mov ax, 0f8a9h ; b8 a9 f8 ; 0xfe303 orgs.asm:95 + mov word [001d0h], ax ; a3 d0 01 ; 0xfe306 orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe309 orgs.asm:97 + mov word [001d2h], ax ; a3 d2 01 ; 0xfe30c orgs.asm:98 + mov ax, 0e2cah ; b8 ca e2 ; 0xfe30f orgs.asm:95 + mov word [001d4h], ax ; a3 d4 01 ; 0xfe312 orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe315 orgs.asm:97 + mov word [001d6h], ax ; a3 d6 01 ; 0xfe318 orgs.asm:98 + call 0e753h ; e8 35 04 ; 0xfe31b orgs.asm:615 + push CS ; 0e ; 0xfe31e orgs.asm:104 + pop DS ; 1f ; 0xfe31f orgs.asm:105 + cld ; fc ; 0xfe320 orgs.asm:106 + call 01c38h ; e8 14 39 ; 0xfe321 orgs.asm:629 + call 020afh ; e8 88 3d ; 0xfe324 orgs.asm:630 + sti ; fb ; 0xfe327 orgs.asm:637 + call 09426h ; e8 fb b0 ; 0xfe328 orgs.asm:638 + cli ; fa ; 0xfe32b orgs.asm:639 + call 0829ah ; e8 6b 9f ; 0xfe32c orgs.asm:644 + call 0ed2fh ; e8 fd 09 ; 0xfe32f orgs.asm:648 + call 0e2d2h ; e8 9d ff ; 0xfe332 orgs.asm:651 + push CS ; 0e ; 0xfe335 orgs.asm:104 + pop DS ; 1f ; 0xfe336 orgs.asm:105 + cld ; fc ; 0xfe337 orgs.asm:106 + mov ax, 0c800h ; b8 00 c8 ; 0xfe338 orgs.asm:655 + mov dx, 0f000h ; ba 00 f0 ; 0xfe33b orgs.asm:656 + call 01600h ; e8 bf 32 ; 0xfe33e orgs.asm:657 + call 0172dh ; e8 e9 33 ; 0xfe341 orgs.asm:671 + call 03b42h ; e8 fb 57 ; 0xfe344 orgs.asm:674 + sti ; fb ; 0xfe347 orgs.asm:677 + int 019h ; cd 19 ; 0xfe348 orgs.asm:678 + sti ; fb ; 0xfe34a orgs.asm:680 + hlt ; f4 ; 0xfe34b orgs.asm:682 + jmp short 0e34bh ; eb fd ; 0xfe34c orgs.asm:683 + cli ; fa ; 0xfe34e orgs.asm:684 + hlt ; f4 ; 0xfe34f orgs.asm:685 + mov ax, strict word 00040h ; b8 40 00 ; 0xfe350 orgs.asm:694 + mov ds, ax ; 8e d8 ; 0xfe353 orgs.asm:695 + mov ss, [word 00069h] ; 8e 16 69 00 ; 0xfe355 orgs.asm:697 + mov sp, word [word 00067h] ; 8b 26 67 00 ; 0xfe359 orgs.asm:698 + in AL, strict byte 092h ; e4 92 ; 0xfe35d orgs.asm:700 + and AL, strict byte 0fdh ; 24 fd ; 0xfe35f orgs.asm:701 + out strict byte 092h, AL ; e6 92 ; 0xfe361 orgs.asm:702 + lidt [cs:0efe7h] ; 2e 0f 01 1e e7 ef ; 0xfe363 orgs.asm:704 + pop DS ; 1f ; 0xfe369 orgs.asm:706 + pop ES ; 07 ; 0xfe36a orgs.asm:707 + db 08bh, 0ech + ; mov bp, sp ; 8b ec ; 0xfe36b orgs.asm:709 + in AL, strict byte 080h ; e4 80 ; 0xfe36d orgs.asm:711 + mov byte [bp+00fh], al ; 88 46 0f ; 0xfe36f orgs.asm:712 + db 03ah, 0e0h + ; cmp ah, al ; 3a e0 ; 0xfe372 orgs.asm:714 + popaw ; 61 ; 0xfe374 orgs.asm:716 + sti ; fb ; 0xfe375 orgs.asm:717 + retf 00002h ; ca 02 00 ; 0xfe376 orgs.asm:718 + ; disGetNextSymbol 0xfe379 LB 0x1c87 -> off=0x0 cb=0000000000000085 uValue=00000000000f0379 'biosorg_check_before_or_at_0E3FCh' +biosorg_check_before_or_at_0E3FCh: ; 0xfe379 LB 0x85 + times 0x83 db 0 + db 'XM' + ; disGetNextSymbol 0xfe3fe LB 0x1c02 -> off=0x0 cb=0000000000000003 uValue=00000000000f03fe 'int13_handler' +int13_handler: ; 0xfe3fe LB 0x3 + jmp near 0ec5bh ; e9 5a 08 ; 0xfe3fe orgs.asm:728 + ; disGetNextSymbol 0xfe401 LB 0x1bff -> off=0x0 cb=00000000000002f1 uValue=00000000000f0401 'rom_fdpt' +rom_fdpt: ; 0xfe401 LB 0x2f1 + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 058h + db 04dh + ; disGetNextSymbol 0xfe6f2 LB 0x190e -> off=0x0 cb=0000000000000003 uValue=00000000000f06f2 'int19_handler' +int19_handler: ; 0xfe6f2 LB 0x3 + jmp near 0f0ach ; e9 b7 09 ; 0xfe6f2 orgs.asm:744 + ; disGetNextSymbol 0xfe6f5 LB 0x190b -> off=0x0 cb=000000000000000a uValue=00000000000f06f5 'biosorg_check_at_0E6F5h' +biosorg_check_at_0E6F5h: ; 0xfe6f5 LB 0xa + or word [bx+si], ax ; 09 00 ; 0xfe6f5 + cld ; fc ; 0xfe6f7 + add byte [bx+di], al ; 00 01 ; 0xfe6f8 + je short 0e73ch ; 74 40 ; 0xfe6fa + times 0x3 db 0 + ; disGetNextSymbol 0xfe6ff LB 0x1901 -> off=0x0 cb=000000000000002a uValue=00000000000f06ff 'biosorg_check_before_or_at_0E727h' +biosorg_check_before_or_at_0E727h: ; 0xfe6ff LB 0x2a + times 0x28 db 0 + db 'XM' + ; disGetNextSymbol 0xfe729 LB 0x18d7 -> off=0x0 cb=0000000000000010 uValue=00000000000f0729 'biosorg_check_at_0E729h' +biosorg_check_at_0E729h: ; 0xfe729 LB 0x10 + times 0xe db 0 + db 'XM' + ; disGetNextSymbol 0xfe739 LB 0x18c7 -> off=0x0 cb=000000000000001a uValue=00000000000f0739 'biosorg_check_at_0E739h' +biosorg_check_at_0E739h: ; 0xfe739 LB 0x1a + push DS ; 1e ; 0xfe739 orgs.asm:817 + push ES ; 06 ; 0xfe73a orgs.asm:818 + pushaw ; 60 ; 0xfe73b orgs.asm:97 + push CS ; 0e ; 0xfe73c orgs.asm:104 + pop DS ; 1f ; 0xfe73d orgs.asm:105 + cld ; fc ; 0xfe73e orgs.asm:106 + call 0637bh ; e8 39 7c ; 0xfe73f orgs.asm:821 + popaw ; 61 ; 0xfe742 orgs.asm:114 + pop ES ; 07 ; 0xfe743 orgs.asm:823 + pop DS ; 1f ; 0xfe744 orgs.asm:824 + iret ; cf ; 0xfe745 orgs.asm:825 + push DS ; 1e ; 0xfe746 orgs.asm:833 + push ES ; 06 ; 0xfe747 orgs.asm:834 + pushaw ; 60 ; 0xfe748 orgs.asm:97 + push CS ; 0e ; 0xfe749 orgs.asm:104 + pop DS ; 1f ; 0xfe74a orgs.asm:105 + cld ; fc ; 0xfe74b orgs.asm:106 + call 01688h ; e8 39 2f ; 0xfe74c orgs.asm:837 + popaw ; 61 ; 0xfe74f orgs.asm:114 + pop ES ; 07 ; 0xfe750 orgs.asm:839 + pop DS ; 1f ; 0xfe751 orgs.asm:840 + iret ; cf ; 0xfe752 orgs.asm:841 + ; disGetNextSymbol 0xfe753 LB 0x18ad -> off=0x0 cb=0000000000000025 uValue=00000000000f0753 'init_pic' +init_pic: ; 0xfe753 LB 0x25 + mov AL, strict byte 011h ; b0 11 ; 0xfe753 orgs.asm:846 + out strict byte 020h, AL ; e6 20 ; 0xfe755 orgs.asm:847 + out strict byte 0a0h, AL ; e6 a0 ; 0xfe757 orgs.asm:848 + mov AL, strict byte 008h ; b0 08 ; 0xfe759 orgs.asm:849 + out strict byte 021h, AL ; e6 21 ; 0xfe75b orgs.asm:850 + mov AL, strict byte 070h ; b0 70 ; 0xfe75d orgs.asm:851 + out strict byte 0a1h, AL ; e6 a1 ; 0xfe75f orgs.asm:852 + mov AL, strict byte 004h ; b0 04 ; 0xfe761 orgs.asm:853 + out strict byte 021h, AL ; e6 21 ; 0xfe763 orgs.asm:854 + mov AL, strict byte 002h ; b0 02 ; 0xfe765 orgs.asm:855 + out strict byte 0a1h, AL ; e6 a1 ; 0xfe767 orgs.asm:856 + mov AL, strict byte 001h ; b0 01 ; 0xfe769 orgs.asm:857 + out strict byte 021h, AL ; e6 21 ; 0xfe76b orgs.asm:858 + out strict byte 0a1h, AL ; e6 a1 ; 0xfe76d orgs.asm:859 + mov AL, strict byte 0b8h ; b0 b8 ; 0xfe76f orgs.asm:860 + out strict byte 021h, AL ; e6 21 ; 0xfe771 orgs.asm:861 + mov AL, strict byte 08fh ; b0 8f ; 0xfe773 orgs.asm:862 + out strict byte 0a1h, AL ; e6 a1 ; 0xfe775 orgs.asm:863 + retn ; c3 ; 0xfe777 orgs.asm:864 + ; disGetNextSymbol 0xfe778 LB 0x1888 -> off=0x0 cb=0000000000000051 uValue=00000000000f0778 'ebda_post' +ebda_post: ; 0xfe778 LB 0x51 + mov ax, 0e746h ; b8 46 e7 ; 0xfe778 orgs.asm:95 + mov word [00034h], ax ; a3 34 00 ; 0xfe77b orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe77e orgs.asm:97 + mov word [00036h], ax ; a3 36 00 ; 0xfe781 orgs.asm:98 + mov ax, 0e746h ; b8 46 e7 ; 0xfe784 orgs.asm:95 + mov word [0003ch], ax ; a3 3c 00 ; 0xfe787 orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe78a orgs.asm:97 + mov word [0003eh], ax ; a3 3e 00 ; 0xfe78d orgs.asm:98 + mov ax, 0e746h ; b8 46 e7 ; 0xfe790 orgs.asm:95 + mov word [001c8h], ax ; a3 c8 01 ; 0xfe793 orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe796 orgs.asm:97 + mov word [001cah], ax ; a3 ca 01 ; 0xfe799 orgs.asm:98 + mov ax, 0e746h ; b8 46 e7 ; 0xfe79c orgs.asm:95 + mov word [001cch], ax ; a3 cc 01 ; 0xfe79f orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe7a2 orgs.asm:97 + mov word [001ceh], ax ; a3 ce 01 ; 0xfe7a5 orgs.asm:98 + mov ax, 0e746h ; b8 46 e7 ; 0xfe7a8 orgs.asm:95 + mov word [001dch], ax ; a3 dc 01 ; 0xfe7ab orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe7ae orgs.asm:97 + mov word [001deh], ax ; a3 de 01 ; 0xfe7b1 orgs.asm:98 + mov ax, 09fc0h ; b8 c0 9f ; 0xfe7b4 orgs.asm:876 + mov ds, ax ; 8e d8 ; 0xfe7b7 orgs.asm:877 + mov byte [word 00000h], 001h ; c6 06 00 00 01 ; 0xfe7b9 orgs.asm:878 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xfe7be orgs.asm:880 + mov ds, ax ; 8e d8 ; 0xfe7c0 orgs.asm:881 + mov word [0040eh], 09fc0h ; c7 06 0e 04 c0 9f ; 0xfe7c2 orgs.asm:882 + retn ; c3 ; 0xfe7c8 orgs.asm:883 + ; disGetNextSymbol 0xfe7c9 LB 0x1837 -> off=0x0 cb=0000000000000065 uValue=00000000000f07c9 'biosorg_check_before_or_at_0E82Ch' +biosorg_check_before_or_at_0E82Ch: ; 0xfe7c9 LB 0x65 + times 0x63 db 0 + db 'XM' + ; disGetNextSymbol 0xfe82e LB 0x17d2 -> off=0x0 cb=000000000000003d uValue=00000000000f082e 'biosorg_check_at_0E82Eh' +biosorg_check_at_0E82Eh: ; 0xfe82e LB 0x3d + sti ; fb ; 0xfe82e orgs.asm:894 + pushfw ; 9c ; 0xfe82f orgs.asm:897 + push ES ; 06 ; 0xfe830 orgs.asm:898 + push DS ; 1e ; 0xfe831 orgs.asm:899 + pushaw ; 60 ; 0xfe832 orgs.asm:97 + cmp ah, 000h ; 80 fc 00 ; 0xfe833 orgs.asm:902 + je short 0e84ah ; 74 12 ; 0xfe836 orgs.asm:903 + cmp ah, 010h ; 80 fc 10 ; 0xfe838 orgs.asm:905 + je short 0e84ah ; 74 0d ; 0xfe83b orgs.asm:906 + push CS ; 0e ; 0xfe83d orgs.asm:104 + pop DS ; 1f ; 0xfe83e orgs.asm:105 + cld ; fc ; 0xfe83f orgs.asm:106 + call 055c2h ; e8 7f 6d ; 0xfe840 orgs.asm:909 + popaw ; 61 ; 0xfe843 orgs.asm:114 + pop DS ; 1f ; 0xfe844 orgs.asm:911 + pop ES ; 07 ; 0xfe845 orgs.asm:912 + add sp, strict byte 00002h ; 83 c4 02 ; 0xfe846 orgs.asm:913 + iret ; cf ; 0xfe849 orgs.asm:914 + mov bx, strict word 00040h ; bb 40 00 ; 0xfe84a orgs.asm:917 + mov ds, bx ; 8e db ; 0xfe84d orgs.asm:918 + cli ; fa ; 0xfe84f orgs.asm:920 + mov bx, word [word 0001ah] ; 8b 1e 1a 00 ; 0xfe850 orgs.asm:921 + cmp bx, word [word 0001ch] ; 3b 1e 1c 00 ; 0xfe854 orgs.asm:922 + jne short 0e85eh ; 75 04 ; 0xfe858 orgs.asm:923 + sti ; fb ; 0xfe85a orgs.asm:924 + nop ; 90 ; 0xfe85b orgs.asm:925 + jmp short 0e84fh ; eb f1 ; 0xfe85c orgs.asm:933 + push CS ; 0e ; 0xfe85e orgs.asm:104 + pop DS ; 1f ; 0xfe85f orgs.asm:105 + cld ; fc ; 0xfe860 orgs.asm:106 + call 055c2h ; e8 5e 6d ; 0xfe861 orgs.asm:937 + popaw ; 61 ; 0xfe864 orgs.asm:114 + pop DS ; 1f ; 0xfe865 orgs.asm:939 + pop ES ; 07 ; 0xfe866 orgs.asm:940 + add sp, strict byte 00002h ; 83 c4 02 ; 0xfe867 orgs.asm:941 + iret ; cf ; 0xfe86a orgs.asm:949 + ; disGetNextSymbol 0xfe86b LB 0x1795 -> off=0x0 cb=000000000000011c uValue=00000000000f086b 'biosorg_check_before_or_at_0E985h' +biosorg_check_before_or_at_0E985h: ; 0xfe86b LB 0x11c + times 0x11a db 0 + db 'XM' + ; disGetNextSymbol 0xfe987 LB 0x1679 -> off=0x0 cb=0000000000000052 uValue=00000000000f0987 'biosorg_check_at_0E987h' +biosorg_check_at_0E987h: ; 0xfe987 LB 0x52 + cli ; fa ; 0xfe987 orgs.asm:966 + push ax ; 50 ; 0xfe988 orgs.asm:967 + mov AL, strict byte 0adh ; b0 ad ; 0xfe989 orgs.asm:968 + out strict byte 064h, AL ; e6 64 ; 0xfe98b orgs.asm:969 + in AL, strict byte 060h ; e4 60 ; 0xfe98d orgs.asm:971 + push DS ; 1e ; 0xfe98f orgs.asm:972 + pushaw ; 60 ; 0xfe990 orgs.asm:97 + cld ; fc ; 0xfe991 orgs.asm:974 + mov AH, strict byte 04fh ; b4 4f ; 0xfe992 orgs.asm:976 + stc ; f9 ; 0xfe994 orgs.asm:977 + int 015h ; cd 15 ; 0xfe995 orgs.asm:978 + jnc short 0e9c0h ; 73 27 ; 0xfe997 orgs.asm:979 + sti ; fb ; 0xfe999 orgs.asm:981 + cmp AL, strict byte 0e0h ; 3c e0 ; 0xfe99a orgs.asm:984 + jne short 0e9a9h ; 75 0b ; 0xfe99c orgs.asm:985 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xfe99e orgs.asm:986 + mov ds, ax ; 8e d8 ; 0xfe9a0 orgs.asm:987 + or byte [00496h], 002h ; 80 0e 96 04 02 ; 0xfe9a2 orgs.asm:988 + jmp short 0e9c0h ; eb 17 ; 0xfe9a7 orgs.asm:989 + cmp AL, strict byte 0e1h ; 3c e1 ; 0xfe9a9 orgs.asm:992 + jne short 0e9b8h ; 75 0b ; 0xfe9ab orgs.asm:993 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xfe9ad orgs.asm:994 + mov ds, ax ; 8e d8 ; 0xfe9af orgs.asm:995 + or byte [00496h], 001h ; 80 0e 96 04 01 ; 0xfe9b1 orgs.asm:996 + jmp short 0e9c0h ; eb 08 ; 0xfe9b6 orgs.asm:997 + push ES ; 06 ; 0xfe9b8 orgs.asm:1000 + push CS ; 0e ; 0xfe9b9 orgs.asm:104 + pop DS ; 1f ; 0xfe9ba orgs.asm:105 + cld ; fc ; 0xfe9bb orgs.asm:106 + call 0516fh ; e8 b0 67 ; 0xfe9bc orgs.asm:1002 + pop ES ; 07 ; 0xfe9bf orgs.asm:1003 + popaw ; 61 ; 0xfe9c0 orgs.asm:114 + pop DS ; 1f ; 0xfe9c1 orgs.asm:1007 + cli ; fa ; 0xfe9c2 orgs.asm:1008 + call 0e034h ; e8 6e f6 ; 0xfe9c3 orgs.asm:1009 + mov AL, strict byte 0aeh ; b0 ae ; 0xfe9c6 orgs.asm:1011 + out strict byte 064h, AL ; e6 64 ; 0xfe9c8 orgs.asm:1012 + pop ax ; 58 ; 0xfe9ca orgs.asm:1013 + iret ; cf ; 0xfe9cb orgs.asm:1014 + pushaw ; 60 ; 0xfe9cc orgs.asm:97 + push ES ; 06 ; 0xfe9cd orgs.asm:1023 + push DS ; 1e ; 0xfe9ce orgs.asm:1024 + push CS ; 0e ; 0xfe9cf orgs.asm:104 + pop DS ; 1f ; 0xfe9d0 orgs.asm:105 + cld ; fc ; 0xfe9d1 orgs.asm:106 + call 069fbh ; e8 26 80 ; 0xfe9d2 orgs.asm:1026 + pop DS ; 1f ; 0xfe9d5 orgs.asm:1027 + pop ES ; 07 ; 0xfe9d6 orgs.asm:1028 + popaw ; 61 ; 0xfe9d7 orgs.asm:114 + iret ; cf ; 0xfe9d8 orgs.asm:1030 + ; disGetNextSymbol 0xfe9d9 LB 0x1627 -> off=0x0 cb=0000000000000280 uValue=00000000000f09d9 'biosorg_check_before_or_at_0EC57h' +biosorg_check_before_or_at_0EC57h: ; 0xfe9d9 LB 0x280 + times 0x27e db 0 + db 'XM' + ; disGetNextSymbol 0xfec59 LB 0x13a7 -> off=0x0 cb=0000000000000002 uValue=00000000000f0c59 'biosorg_check_at_0EC59h' +biosorg_check_at_0EC59h: ; 0xfec59 LB 0x2 + jmp short 0ecb0h ; eb 55 ; 0xfec59 orgs.asm:1037 + ; disGetNextSymbol 0xfec5b LB 0x13a5 -> off=0x0 cb=0000000000000055 uValue=00000000000f0c5b 'int13_relocated' +int13_relocated: ; 0xfec5b LB 0x55 + cmp ah, 04ah ; 80 fc 4a ; 0xfec5b orgs.asm:1046 + jc short 0ec71h ; 72 11 ; 0xfec5e orgs.asm:1047 + cmp ah, 04dh ; 80 fc 4d ; 0xfec60 orgs.asm:1049 + jnbe short 0ec71h ; 77 0c ; 0xfec63 orgs.asm:1050 + pushaw ; 60 ; 0xfec65 orgs.asm:97 + push ES ; 06 ; 0xfec66 orgs.asm:1053 + push DS ; 1e ; 0xfec67 orgs.asm:1054 + push CS ; 0e ; 0xfec68 orgs.asm:104 + pop DS ; 1f ; 0xfec69 orgs.asm:105 + cld ; fc ; 0xfec6a orgs.asm:106 + push 0ece9h ; 68 e9 ec ; 0xfec6b orgs.asm:83 + jmp near 03b85h ; e9 14 4f ; 0xfec6e orgs.asm:84 + push ES ; 06 ; 0xfec71 orgs.asm:1062 + push ax ; 50 ; 0xfec72 orgs.asm:1063 + push bx ; 53 ; 0xfec73 orgs.asm:1064 + push cx ; 51 ; 0xfec74 orgs.asm:1065 + push dx ; 52 ; 0xfec75 orgs.asm:1066 + call 03b59h ; e8 e0 4e ; 0xfec76 orgs.asm:1069 + cmp AL, strict byte 000h ; 3c 00 ; 0xfec79 orgs.asm:1070 + je short 0ecabh ; 74 2e ; 0xfec7b orgs.asm:1071 + call 03b6fh ; e8 ef 4e ; 0xfec7d orgs.asm:1074 + pop dx ; 5a ; 0xfec80 orgs.asm:1075 + push dx ; 52 ; 0xfec81 orgs.asm:1076 + db 03ah, 0c2h + ; cmp al, dl ; 3a c2 ; 0xfec82 orgs.asm:1077 + jne short 0ec97h ; 75 11 ; 0xfec84 orgs.asm:1078 + pop dx ; 5a ; 0xfec86 orgs.asm:1080 + pop cx ; 59 ; 0xfec87 orgs.asm:1081 + pop bx ; 5b ; 0xfec88 orgs.asm:1082 + pop ax ; 58 ; 0xfec89 orgs.asm:1083 + pop ES ; 07 ; 0xfec8a orgs.asm:1084 + pushaw ; 60 ; 0xfec8b orgs.asm:97 + push ES ; 06 ; 0xfec8c orgs.asm:1087 + push DS ; 1e ; 0xfec8d orgs.asm:1088 + push CS ; 0e ; 0xfec8e orgs.asm:104 + pop DS ; 1f ; 0xfec8f orgs.asm:105 + cld ; fc ; 0xfec90 orgs.asm:106 + push 0ece9h ; 68 e9 ec ; 0xfec91 orgs.asm:83 + jmp near 0414dh ; e9 b6 54 ; 0xfec94 orgs.asm:84 + and dl, 0e0h ; 80 e2 e0 ; 0xfec97 orgs.asm:1094 + db 03ah, 0c2h + ; cmp al, dl ; 3a c2 ; 0xfec9a orgs.asm:1095 + jne short 0ecabh ; 75 0d ; 0xfec9c orgs.asm:1096 + pop dx ; 5a ; 0xfec9e orgs.asm:1098 + pop cx ; 59 ; 0xfec9f orgs.asm:1099 + pop bx ; 5b ; 0xfeca0 orgs.asm:1100 + pop ax ; 58 ; 0xfeca1 orgs.asm:1101 + pop ES ; 07 ; 0xfeca2 orgs.asm:1102 + push ax ; 50 ; 0xfeca3 orgs.asm:1104 + push cx ; 51 ; 0xfeca4 orgs.asm:1105 + push dx ; 52 ; 0xfeca5 orgs.asm:1106 + push bx ; 53 ; 0xfeca6 orgs.asm:1107 + db 0feh, 0cah + ; dec dl ; fe ca ; 0xfeca7 orgs.asm:1109 + jmp short 0ecb4h ; eb 09 ; 0xfeca9 orgs.asm:1110 + pop dx ; 5a ; 0xfecab orgs.asm:1113 + pop cx ; 59 ; 0xfecac orgs.asm:1114 + pop bx ; 5b ; 0xfecad orgs.asm:1115 + pop ax ; 58 ; 0xfecae orgs.asm:1116 + pop ES ; 07 ; 0xfecaf orgs.asm:1117 + ; disGetNextSymbol 0xfecb0 LB 0x1350 -> off=0x0 cb=0000000000000004 uValue=00000000000f0cb0 'int13_noeltorito' +int13_noeltorito: ; 0xfecb0 LB 0x4 + push ax ; 50 ; 0xfecb0 orgs.asm:1120 + push cx ; 51 ; 0xfecb1 orgs.asm:1121 + push dx ; 52 ; 0xfecb2 orgs.asm:1122 + push bx ; 53 ; 0xfecb3 orgs.asm:1123 + ; disGetNextSymbol 0xfecb4 LB 0x134c -> off=0x0 cb=0000000000000014 uValue=00000000000f0cb4 'int13_legacy' +int13_legacy: ; 0xfecb4 LB 0x14 + push dx ; 52 ; 0xfecb4 orgs.asm:1125 + push bp ; 55 ; 0xfecb5 orgs.asm:1126 + push si ; 56 ; 0xfecb6 orgs.asm:1127 + push di ; 57 ; 0xfecb7 orgs.asm:1128 + push ES ; 06 ; 0xfecb8 orgs.asm:1129 + push DS ; 1e ; 0xfecb9 orgs.asm:1130 + push CS ; 0e ; 0xfecba orgs.asm:104 + pop DS ; 1f ; 0xfecbb orgs.asm:105 + cld ; fc ; 0xfecbc orgs.asm:106 + test dl, 080h ; f6 c2 80 ; 0xfecbd orgs.asm:1135 + jne short 0ecc8h ; 75 06 ; 0xfecc0 orgs.asm:1136 + push 0ece9h ; 68 e9 ec ; 0xfecc2 orgs.asm:83 + jmp near 0313dh ; e9 75 44 ; 0xfecc5 orgs.asm:84 + ; disGetNextSymbol 0xfecc8 LB 0x1338 -> off=0x0 cb=0000000000000014 uValue=00000000000f0cc8 'int13_notfloppy' +int13_notfloppy: ; 0xfecc8 LB 0x14 + cmp dl, 0e0h ; 80 fa e0 ; 0xfecc8 orgs.asm:1141 + jc short 0ecdch ; 72 0f ; 0xfeccb orgs.asm:1142 + shr ebx, 010h ; 66 c1 eb 10 ; 0xfeccd orgs.asm:1148 + push bx ; 53 ; 0xfecd1 orgs.asm:1149 + call 0478eh ; e8 b9 5a ; 0xfecd2 orgs.asm:1150 + pop bx ; 5b ; 0xfecd5 orgs.asm:1151 + sal ebx, 010h ; 66 c1 e3 10 ; 0xfecd6 orgs.asm:1152 + jmp short 0ece9h ; eb 0d ; 0xfecda orgs.asm:1154 + ; disGetNextSymbol 0xfecdc LB 0x1324 -> off=0x0 cb=000000000000000d uValue=00000000000f0cdc 'int13_disk' +int13_disk: ; 0xfecdc LB 0xd + cmp ah, 040h ; 80 fc 40 ; 0xfecdc orgs.asm:1158 + jnbe short 0ece6h ; 77 05 ; 0xfecdf orgs.asm:1159 + call 05c93h ; e8 af 6f ; 0xfece1 orgs.asm:1160 + jmp short 0ece9h ; eb 03 ; 0xfece4 orgs.asm:1161 + call 060e4h ; e8 fb 73 ; 0xfece6 orgs.asm:1164 + ; disGetNextSymbol 0xfece9 LB 0x1317 -> off=0x0 cb=0000000000000004 uValue=00000000000f0ce9 'int13_out' +int13_out: ; 0xfece9 LB 0x4 + pop DS ; 1f ; 0xfece9 orgs.asm:1167 + pop ES ; 07 ; 0xfecea orgs.asm:1168 + popaw ; 61 ; 0xfeceb orgs.asm:114 + iret ; cf ; 0xfecec orgs.asm:1170 + ; disGetNextSymbol 0xfeced LB 0x1313 -> off=0x0 cb=000000000000001e uValue=00000000000f0ced 'detect_parport' +detect_parport: ; 0xfeced LB 0x1e + push dx ; 52 ; 0xfeced orgs.asm:1177 + inc dx ; 42 ; 0xfecee orgs.asm:1178 + inc dx ; 42 ; 0xfecef orgs.asm:1179 + in AL, DX ; ec ; 0xfecf0 orgs.asm:1180 + and AL, strict byte 0dfh ; 24 df ; 0xfecf1 orgs.asm:1181 + out DX, AL ; ee ; 0xfecf3 orgs.asm:1182 + pop dx ; 5a ; 0xfecf4 orgs.asm:1183 + mov AL, strict byte 0aah ; b0 aa ; 0xfecf5 orgs.asm:1184 + out DX, AL ; ee ; 0xfecf7 orgs.asm:1185 + in AL, DX ; ec ; 0xfecf8 orgs.asm:1186 + cmp AL, strict byte 0aah ; 3c aa ; 0xfecf9 orgs.asm:1187 + jne short 0ed0ah ; 75 0d ; 0xfecfb orgs.asm:1188 + push bx ; 53 ; 0xfecfd orgs.asm:1190 + sal bx, 1 ; d1 e3 ; 0xfecfe orgs.asm:1191 + mov word [bx+00408h], dx ; 89 97 08 04 ; 0xfed00 orgs.asm:1192 + pop bx ; 5b ; 0xfed04 orgs.asm:1193 + mov byte [bx+00478h], cl ; 88 8f 78 04 ; 0xfed05 orgs.asm:1194 + inc bx ; 43 ; 0xfed09 orgs.asm:1195 + retn ; c3 ; 0xfed0a orgs.asm:1197 + ; disGetNextSymbol 0xfed0b LB 0x12f5 -> off=0x0 cb=0000000000000024 uValue=00000000000f0d0b 'detect_serial' +detect_serial: ; 0xfed0b LB 0x24 + push dx ; 52 ; 0xfed0b orgs.asm:1204 + inc dx ; 42 ; 0xfed0c orgs.asm:1205 + mov AL, strict byte 002h ; b0 02 ; 0xfed0d orgs.asm:1206 + out DX, AL ; ee ; 0xfed0f orgs.asm:1207 + in AL, DX ; ec ; 0xfed10 orgs.asm:1208 + cmp AL, strict byte 002h ; 3c 02 ; 0xfed11 orgs.asm:1209 + jne short 0ed2dh ; 75 18 ; 0xfed13 orgs.asm:1210 + inc dx ; 42 ; 0xfed15 orgs.asm:1212 + in AL, DX ; ec ; 0xfed16 orgs.asm:1213 + cmp AL, strict byte 002h ; 3c 02 ; 0xfed17 orgs.asm:1214 + jne short 0ed2dh ; 75 12 ; 0xfed19 orgs.asm:1215 + dec dx ; 4a ; 0xfed1b orgs.asm:1217 + db 032h, 0c0h + ; xor al, al ; 32 c0 ; 0xfed1c orgs.asm:1218 + pop dx ; 5a ; 0xfed1e orgs.asm:1219 + push bx ; 53 ; 0xfed1f orgs.asm:1220 + sal bx, 1 ; d1 e3 ; 0xfed20 orgs.asm:1221 + mov word [bx+00400h], dx ; 89 97 00 04 ; 0xfed22 orgs.asm:1222 + pop bx ; 5b ; 0xfed26 orgs.asm:1223 + mov byte [bx+0047ch], cl ; 88 8f 7c 04 ; 0xfed27 orgs.asm:1224 + inc bx ; 43 ; 0xfed2b orgs.asm:1225 + retn ; c3 ; 0xfed2c orgs.asm:1226 + pop dx ; 5a ; 0xfed2d orgs.asm:1229 + retn ; c3 ; 0xfed2e orgs.asm:1230 + ; disGetNextSymbol 0xfed2f LB 0x12d1 -> off=0x0 cb=0000000000000087 uValue=00000000000f0d2f 'floppy_post' +floppy_post: ; 0xfed2f LB 0x87 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xfed2f orgs.asm:1240 + mov ds, ax ; 8e d8 ; 0xfed31 orgs.asm:1241 + mov AL, strict byte 000h ; b0 00 ; 0xfed33 orgs.asm:1245 + mov byte [0043eh], AL ; a2 3e 04 ; 0xfed35 orgs.asm:1246 + mov byte [0043fh], AL ; a2 3f 04 ; 0xfed38 orgs.asm:1247 + mov byte [00440h], AL ; a2 40 04 ; 0xfed3b orgs.asm:1248 + mov byte [00441h], AL ; a2 41 04 ; 0xfed3e orgs.asm:1249 + mov byte [00442h], AL ; a2 42 04 ; 0xfed41 orgs.asm:1250 + mov byte [00443h], AL ; a2 43 04 ; 0xfed44 orgs.asm:1251 + mov byte [00444h], AL ; a2 44 04 ; 0xfed47 orgs.asm:1252 + mov byte [00445h], AL ; a2 45 04 ; 0xfed4a orgs.asm:1253 + mov byte [00446h], AL ; a2 46 04 ; 0xfed4d orgs.asm:1254 + mov byte [00447h], AL ; a2 47 04 ; 0xfed50 orgs.asm:1255 + mov byte [00448h], AL ; a2 48 04 ; 0xfed53 orgs.asm:1256 + mov byte [0048bh], AL ; a2 8b 04 ; 0xfed56 orgs.asm:1258 + mov AL, strict byte 010h ; b0 10 ; 0xfed59 orgs.asm:1260 + out strict byte 070h, AL ; e6 70 ; 0xfed5b orgs.asm:1261 + in AL, strict byte 071h ; e4 71 ; 0xfed5d orgs.asm:1262 + db 08ah, 0e0h + ; mov ah, al ; 8a e0 ; 0xfed5f orgs.asm:1263 + shr al, 004h ; c0 e8 04 ; 0xfed61 orgs.asm:169 + je short 0ed6ah ; 74 04 ; 0xfed64 orgs.asm:1268 + mov BL, strict byte 007h ; b3 07 ; 0xfed66 orgs.asm:1269 + jmp short 0ed6ch ; eb 02 ; 0xfed68 orgs.asm:1270 + mov BL, strict byte 000h ; b3 00 ; 0xfed6a orgs.asm:1273 + db 08ah, 0c4h + ; mov al, ah ; 8a c4 ; 0xfed6c orgs.asm:1276 + and AL, strict byte 00fh ; 24 0f ; 0xfed6e orgs.asm:1277 + je short 0ed75h ; 74 03 ; 0xfed70 orgs.asm:1278 + or bl, 070h ; 80 cb 70 ; 0xfed72 orgs.asm:1279 + mov byte [0048fh], bl ; 88 1e 8f 04 ; 0xfed75 orgs.asm:1281 + mov AL, strict byte 000h ; b0 00 ; 0xfed79 orgs.asm:1284 + mov byte [00490h], AL ; a2 90 04 ; 0xfed7b orgs.asm:1285 + mov byte [00491h], AL ; a2 91 04 ; 0xfed7e orgs.asm:1286 + mov byte [00492h], AL ; a2 92 04 ; 0xfed81 orgs.asm:1287 + mov byte [00493h], AL ; a2 93 04 ; 0xfed84 orgs.asm:1288 + mov byte [00494h], AL ; a2 94 04 ; 0xfed87 orgs.asm:1289 + mov byte [00495h], AL ; a2 95 04 ; 0xfed8a orgs.asm:1290 + mov AL, strict byte 002h ; b0 02 ; 0xfed8d orgs.asm:1292 + out strict byte 00ah, AL ; e6 0a ; 0xfed8f orgs.asm:1293 + mov ax, 0efc7h ; b8 c7 ef ; 0xfed91 orgs.asm:95 + mov word [00078h], ax ; a3 78 00 ; 0xfed94 orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfed97 orgs.asm:97 + mov word [0007ah], ax ; a3 7a 00 ; 0xfed9a orgs.asm:98 + mov ax, 0ec59h ; b8 59 ec ; 0xfed9d orgs.asm:95 + mov word [00100h], ax ; a3 00 01 ; 0xfeda0 orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfeda3 orgs.asm:97 + mov word [00102h], ax ; a3 02 01 ; 0xfeda6 orgs.asm:98 + mov ax, 0ef57h ; b8 57 ef ; 0xfeda9 orgs.asm:95 + mov word [00038h], ax ; a3 38 00 ; 0xfedac orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfedaf orgs.asm:97 + mov word [0003ah], ax ; a3 3a 00 ; 0xfedb2 orgs.asm:98 + retn ; c3 ; 0xfedb5 orgs.asm:1299 + ; disGetNextSymbol 0xfedb6 LB 0x124a -> off=0x0 cb=0000000000000009 uValue=0000000000000db6 'bcd_to_bin' +bcd_to_bin: ; 0xfedb6 LB 0x9 + sal ax, 004h ; c1 e0 04 ; 0xfedb6 orgs.asm:1309 + shr al, 004h ; c0 e8 04 ; 0xfedb9 orgs.asm:1310 + aad 00ah ; d5 0a ; 0xfedbc orgs.asm:1318 + retn ; c3 ; 0xfedbe orgs.asm:1319 + ; disGetNextSymbol 0xfedbf LB 0x1241 -> off=0x0 cb=000000000000005a uValue=00000000000f0dbf 'rtc_post' +rtc_post: ; 0xfedbf LB 0x5a + mov AL, strict byte 000h ; b0 00 ; 0xfedbf orgs.asm:1327 + out strict byte 070h, AL ; e6 70 ; 0xfedc1 orgs.asm:1328 + in AL, strict byte 071h ; e4 71 ; 0xfedc3 orgs.asm:1329 + call 0edb6h ; e8 ee ff ; 0xfedc5 orgs.asm:1330 + test al, al ; 84 c0 ; 0xfedc8 orgs.asm:1331 + db 032h, 0e4h + ; xor ah, ah ; 32 e4 ; 0xfedca orgs.asm:1332 + mov dx, 01234h ; ba 34 12 ; 0xfedcc orgs.asm:1333 + mul dx ; f7 e2 ; 0xfedcf orgs.asm:1334 + db 08bh, 0c8h + ; mov cx, ax ; 8b c8 ; 0xfedd1 orgs.asm:1335 + mov AL, strict byte 002h ; b0 02 ; 0xfedd3 orgs.asm:1338 + out strict byte 070h, AL ; e6 70 ; 0xfedd5 orgs.asm:1339 + in AL, strict byte 071h ; e4 71 ; 0xfedd7 orgs.asm:1340 + call 0edb6h ; e8 da ff ; 0xfedd9 orgs.asm:1341 + test al, al ; 84 c0 ; 0xfeddc orgs.asm:1342 + je short 0edebh ; 74 0b ; 0xfedde orgs.asm:1343 + add cx, 04463h ; 81 c1 63 44 ; 0xfede0 orgs.asm:1345 + adc dx, strict byte 00004h ; 83 d2 04 ; 0xfede4 orgs.asm:1346 + db 0feh, 0c8h + ; dec al ; fe c8 ; 0xfede7 orgs.asm:1347 + jne short 0ede0h ; 75 f5 ; 0xfede9 orgs.asm:1348 + mov AL, strict byte 004h ; b0 04 ; 0xfedeb orgs.asm:1352 + out strict byte 070h, AL ; e6 70 ; 0xfeded orgs.asm:1353 + in AL, strict byte 071h ; e4 71 ; 0xfedef orgs.asm:1354 + call 0edb6h ; e8 c2 ff ; 0xfedf1 orgs.asm:1355 + test al, al ; 84 c0 ; 0xfedf4 orgs.asm:1356 + je short 0ee04h ; 74 0c ; 0xfedf6 orgs.asm:1357 + add cx, 0076ch ; 81 c1 6c 07 ; 0xfedf8 orgs.asm:1359 + adc dx, 00100h ; 81 d2 00 01 ; 0xfedfc orgs.asm:1360 + db 0feh, 0c8h + ; dec al ; fe c8 ; 0xfee00 orgs.asm:1361 + jne short 0edf8h ; 75 f4 ; 0xfee02 orgs.asm:1362 + db 08ah, 0cdh + ; mov cl, ch ; 8a cd ; 0xfee04 orgs.asm:1365 + db 08ah, 0eah + ; mov ch, dl ; 8a ea ; 0xfee06 orgs.asm:1366 + db 08ah, 0d6h + ; mov dl, dh ; 8a d6 ; 0xfee08 orgs.asm:1367 + db 032h, 0f6h + ; xor dh, dh ; 32 f6 ; 0xfee0a orgs.asm:1368 + mov word [0046ch], cx ; 89 0e 6c 04 ; 0xfee0c orgs.asm:1369 + mov word [0046eh], dx ; 89 16 6e 04 ; 0xfee10 orgs.asm:1370 + mov byte [00470h], dh ; 88 36 70 04 ; 0xfee14 orgs.asm:1371 + retn ; c3 ; 0xfee18 orgs.asm:1419 + ; disGetNextSymbol 0xfee19 LB 0x11e7 -> off=0x0 cb=000000000000013e uValue=00000000000f0e19 'biosorg_check_before_or_at_0EF55h' +biosorg_check_before_or_at_0EF55h: ; 0xfee19 LB 0x13e + times 0x13c db 0 + db 'XM' + ; disGetNextSymbol 0xfef57 LB 0x10a9 -> off=0x0 cb=000000000000003b uValue=00000000000f0f57 'int0e_handler' +int0e_handler: ; 0xfef57 LB 0x3b + push ax ; 50 ; 0xfef57 orgs.asm:1430 + push dx ; 52 ; 0xfef58 orgs.asm:1431 + mov dx, 003f4h ; ba f4 03 ; 0xfef59 orgs.asm:1432 + in AL, DX ; ec ; 0xfef5c orgs.asm:1433 + and AL, strict byte 0c0h ; 24 c0 ; 0xfef5d orgs.asm:1434 + cmp AL, strict byte 0c0h ; 3c c0 ; 0xfef5f orgs.asm:1435 + je short 0ef81h ; 74 1e ; 0xfef61 orgs.asm:1436 + mov dx, 003f5h ; ba f5 03 ; 0xfef63 orgs.asm:1437 + mov AL, strict byte 008h ; b0 08 ; 0xfef66 orgs.asm:1438 + out DX, AL ; ee ; 0xfef68 orgs.asm:1439 + mov dx, 003f4h ; ba f4 03 ; 0xfef69 orgs.asm:1441 + in AL, DX ; ec ; 0xfef6c orgs.asm:1442 + and AL, strict byte 0c0h ; 24 c0 ; 0xfef6d orgs.asm:1443 + cmp AL, strict byte 0c0h ; 3c c0 ; 0xfef6f orgs.asm:1444 + jne short 0ef69h ; 75 f6 ; 0xfef71 orgs.asm:1445 + mov dx, 003f5h ; ba f5 03 ; 0xfef73 orgs.asm:1448 + in AL, DX ; ec ; 0xfef76 orgs.asm:1449 + mov dx, 003f4h ; ba f4 03 ; 0xfef77 orgs.asm:1450 + in AL, DX ; ec ; 0xfef7a orgs.asm:1451 + and AL, strict byte 0c0h ; 24 c0 ; 0xfef7b orgs.asm:1452 + cmp AL, strict byte 0c0h ; 3c c0 ; 0xfef7d orgs.asm:1453 + je short 0ef73h ; 74 f2 ; 0xfef7f orgs.asm:1454 + push DS ; 1e ; 0xfef81 orgs.asm:1457 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xfef82 orgs.asm:1458 + mov ds, ax ; 8e d8 ; 0xfef84 orgs.asm:1459 + call 0e034h ; e8 ab f0 ; 0xfef86 orgs.asm:1460 + or byte [0043eh], 080h ; 80 0e 3e 04 80 ; 0xfef89 orgs.asm:1462 + pop DS ; 1f ; 0xfef8e orgs.asm:1463 + pop dx ; 5a ; 0xfef8f orgs.asm:1464 + pop ax ; 58 ; 0xfef90 orgs.asm:1465 + iret ; cf ; 0xfef91 orgs.asm:1466 + ; disGetNextSymbol 0xfef92 LB 0x106e -> off=0x0 cb=0000000000000035 uValue=00000000000f0f92 'biosorg_check_before_or_at_0EFC5h' +biosorg_check_before_or_at_0EFC5h: ; 0xfef92 LB 0x35 + times 0x33 db 0 + db 'XM' + ; disGetNextSymbol 0xfefc7 LB 0x1039 -> off=0x0 cb=000000000000000b uValue=00000000000f0fc7 '_diskette_param_table' +_diskette_param_table: ; 0xfefc7 LB 0xb + scasw ; af ; 0xfefc7 + add ah, byte [di] ; 02 25 ; 0xfefc8 + add dl, byte [bp+si] ; 02 12 ; 0xfefca + db 01bh, 0ffh + ; sbb di, di ; 1b ff ; 0xfefcc + insb ; 6c ; 0xfefce + db 0f6h + invd ; 0f 08 ; 0xfefd0 + ; disGetNextSymbol 0xfefd2 LB 0x102e -> off=0x0 cb=0000000000000002 uValue=00000000000f0fd2 'biosorg_check_at_0EFD2h' +biosorg_check_at_0EFD2h: ; 0xfefd2 LB 0x2 + jmp short 0efd4h ; eb 00 ; 0xfefd2 orgs.asm:1493 + ; disGetNextSymbol 0xfefd4 LB 0x102c -> off=0x0 cb=000000000000000d uValue=00000000000f0fd4 'int17_handler' +int17_handler: ; 0xfefd4 LB 0xd + push DS ; 1e ; 0xfefd4 orgs.asm:1496 + push ES ; 06 ; 0xfefd5 orgs.asm:1497 + pushaw ; 60 ; 0xfefd6 orgs.asm:97 + push CS ; 0e ; 0xfefd7 orgs.asm:104 + pop DS ; 1f ; 0xfefd8 orgs.asm:105 + cld ; fc ; 0xfefd9 orgs.asm:106 + call 0733dh ; e8 60 83 ; 0xfefda orgs.asm:1500 + popaw ; 61 ; 0xfefdd orgs.asm:114 + pop ES ; 07 ; 0xfefde orgs.asm:1502 + pop DS ; 1f ; 0xfefdf orgs.asm:1503 + iret ; cf ; 0xfefe0 orgs.asm:1504 + ; disGetNextSymbol 0xfefe1 LB 0x101f -> off=0x0 cb=0000000000000006 uValue=00000000000f0fe1 '_pmode_IDT' +_pmode_IDT: ; 0xfefe1 LB 0x6 + db 000h, 000h, 000h, 000h, 00fh, 000h + ; disGetNextSymbol 0xfefe7 LB 0x1019 -> off=0x0 cb=0000000000000006 uValue=00000000000f0fe7 '_rmode_IDT' +_rmode_IDT: ; 0xfefe7 LB 0x6 + db 0ffh, 003h, 000h, 000h, 000h, 000h + ; disGetNextSymbol 0xfefed LB 0x1013 -> off=0x0 cb=0000000000000001 uValue=00000000000f0fed 'int1c_handler' +int1c_handler: ; 0xfefed LB 0x1 + iret ; cf ; 0xfefed orgs.asm:1539 + ; disGetNextSymbol 0xfefee LB 0x1012 -> off=0x0 cb=0000000000000057 uValue=00000000000f0fee 'biosorg_check_before_or_at_0F043h' +biosorg_check_before_or_at_0F043h: ; 0xfefee LB 0x57 + times 0x55 db 0 + db 'XM' + ; disGetNextSymbol 0xff045 LB 0xfbb -> off=0x0 cb=0000000000000001 uValue=00000000000f1045 'biosorg_check_at_0F045h' +biosorg_check_at_0F045h: ; 0xff045 LB 0x1 + iret ; cf ; 0xff045 orgs.asm:1548 + ; disGetNextSymbol 0xff046 LB 0xfba -> off=0x0 cb=000000000000001f uValue=00000000000f1046 'biosorg_check_before_or_at_0F063h' +biosorg_check_before_or_at_0F063h: ; 0xff046 LB 0x1f + times 0x1d db 0 + db 'XM' + ; disGetNextSymbol 0xff065 LB 0xf9b -> off=0x0 cb=0000000000000001 uValue=00000000000f1065 'int10_handler' +int10_handler: ; 0xff065 LB 0x1 + iret ; cf ; 0xff065 orgs.asm:1557 + ; disGetNextSymbol 0xff066 LB 0xf9a -> off=0x0 cb=000000000000003e uValue=00000000000f1066 'biosorg_check_before_or_at_0F0A2h' +biosorg_check_before_or_at_0F0A2h: ; 0xff066 LB 0x3e + times 0x3c db 0 + db 'XM' + ; disGetNextSymbol 0xff0a4 LB 0xf5c -> off=0x0 cb=0000000000000008 uValue=00000000000f10a4 'biosorg_check_at_0F0A4h' +biosorg_check_at_0F0A4h: ; 0xff0a4 LB 0x8 + push CS ; 0e ; 0xff0a4 orgs.asm:104 + pop DS ; 1f ; 0xff0a5 orgs.asm:105 + cld ; fc ; 0xff0a6 orgs.asm:106 + call 016fbh ; e8 51 26 ; 0xff0a7 orgs.asm:1572 + hlt ; f4 ; 0xff0aa orgs.asm:1574 + iret ; cf ; 0xff0ab orgs.asm:1575 + ; disGetNextSymbol 0xff0ac LB 0xf54 -> off=0x0 cb=0000000000000090 uValue=00000000000f10ac 'int19_relocated' +int19_relocated: ; 0xff0ac LB 0x90 + db 08bh, 0ech + ; mov bp, sp ; 8b ec ; 0xff0ac orgs.asm:1586 + mov ax, word [bp+002h] ; 8b 46 02 ; 0xff0ae orgs.asm:1587 + cmp ax, 0f000h ; 3d 00 f0 ; 0xff0b1 orgs.asm:1588 + je short 0f0c3h ; 74 0d ; 0xff0b4 orgs.asm:1589 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xff0b6 orgs.asm:1591 + mov ds, ax ; 8e d8 ; 0xff0b8 orgs.asm:1592 + mov ax, 01234h ; b8 34 12 ; 0xff0ba orgs.asm:1593 + mov word [001d8h], ax ; a3 d8 01 ; 0xff0bd orgs.asm:1594 + jmp near 0e05bh ; e9 98 ef ; 0xff0c0 orgs.asm:1595 + push CS ; 0e ; 0xff0c3 orgs.asm:104 + pop DS ; 1f ; 0xff0c4 orgs.asm:105 + cld ; fc ; 0xff0c5 orgs.asm:106 + push bp ; 55 ; 0xff0c6 orgs.asm:1602 + db 08bh, 0ech + ; mov bp, sp ; 8b ec ; 0xff0c7 orgs.asm:1603 + mov ax, strict word 00001h ; b8 01 00 ; 0xff0c9 orgs.asm:1606 + push ax ; 50 ; 0xff0cc orgs.asm:1607 + call 04c0fh ; e8 3f 5b ; 0xff0cd orgs.asm:1608 + inc sp ; 44 ; 0xff0d0 orgs.asm:1609 + inc sp ; 44 ; 0xff0d1 orgs.asm:1610 + test ax, ax ; 85 c0 ; 0xff0d2 orgs.asm:1611 + jne short 0f0fdh ; 75 27 ; 0xff0d4 orgs.asm:1612 + mov ax, strict word 00002h ; b8 02 00 ; 0xff0d6 orgs.asm:1615 + push ax ; 50 ; 0xff0d9 orgs.asm:1616 + call 04c0fh ; e8 32 5b ; 0xff0da orgs.asm:1617 + inc sp ; 44 ; 0xff0dd orgs.asm:1618 + inc sp ; 44 ; 0xff0de orgs.asm:1619 + test ax, ax ; 85 c0 ; 0xff0df orgs.asm:1620 + jne short 0f0fdh ; 75 1a ; 0xff0e1 orgs.asm:1621 + mov ax, strict word 00003h ; b8 03 00 ; 0xff0e3 orgs.asm:1624 + push ax ; 50 ; 0xff0e6 orgs.asm:1625 + call 04c0fh ; e8 25 5b ; 0xff0e7 orgs.asm:1626 + inc sp ; 44 ; 0xff0ea orgs.asm:1627 + inc sp ; 44 ; 0xff0eb orgs.asm:1628 + test ax, ax ; 85 c0 ; 0xff0ec orgs.asm:1629 + jne short 0f0fdh ; 75 0d ; 0xff0ee orgs.asm:1630 + mov ax, strict word 00004h ; b8 04 00 ; 0xff0f0 orgs.asm:1633 + push ax ; 50 ; 0xff0f3 orgs.asm:1634 + call 04c0fh ; e8 18 5b ; 0xff0f4 orgs.asm:1635 + inc sp ; 44 ; 0xff0f7 orgs.asm:1636 + inc sp ; 44 ; 0xff0f8 orgs.asm:1637 + test ax, ax ; 85 c0 ; 0xff0f9 orgs.asm:1638 + je short 0f0a4h ; 74 a7 ; 0xff0fb orgs.asm:1639 + mov word [byte bp+000h], ax ; 89 46 00 ; 0xff0fd orgs.asm:1645 + sal ax, 004h ; c1 e0 04 ; 0xff100 orgs.asm:200 + mov word [bp+002h], ax ; 89 46 02 ; 0xff103 orgs.asm:1647 + mov ax, word [byte bp+000h] ; 8b 46 00 ; 0xff106 orgs.asm:1648 + and ax, 0f000h ; 25 00 f0 ; 0xff109 orgs.asm:1657 + mov word [bp+004h], ax ; 89 46 04 ; 0xff10c orgs.asm:1658 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xff10f orgs.asm:1659 + mov ds, ax ; 8e d8 ; 0xff111 orgs.asm:1660 + mov es, ax ; 8e c0 ; 0xff113 orgs.asm:1661 + mov word [byte bp+000h], ax ; 89 46 00 ; 0xff115 orgs.asm:1662 + mov ax, 0aa55h ; b8 55 aa ; 0xff118 orgs.asm:1663 + pop bp ; 5d ; 0xff11b orgs.asm:1665 + iret ; cf ; 0xff11c orgs.asm:1666 + or cx, word [bp+si] ; 0b 0a ; 0xff11d + or word [bp+di], cx ; 09 0b ; 0xff11f + push eax ; 66 50 ; 0xff121 orgs.asm:88 + mov eax, strict dword 000800000h ; 66 b8 00 00 80 00 ; 0xff123 orgs.asm:89 + db 08bh, 0c3h + ; mov ax, bx ; 8b c3 ; 0xff129 orgs.asm:90 + sal eax, 008h ; 66 c1 e0 08 ; 0xff12b orgs.asm:91 + and dl, 0fch ; 80 e2 fc ; 0xff12f orgs.asm:92 + db 00ah, 0c2h + ; or al, dl ; 0a c2 ; 0xff132 orgs.asm:93 + mov dx, 00cf8h ; ba f8 0c ; 0xff134 orgs.asm:94 + out DX, eax ; 66 ef ; 0xff137 orgs.asm:95 + pop eax ; 66 58 ; 0xff139 orgs.asm:96 + retn ; c3 ; 0xff13b orgs.asm:97 + ; disGetNextSymbol 0xff13c LB 0xec4 -> off=0x0 cb=0000000000000012 uValue=00000000000f113c 'pcibios_init_iomem_bases' +pcibios_init_iomem_bases: ; 0xff13c LB 0x12 + push bp ; 55 ; 0xff13c orgs.asm:100 + db 08bh, 0ech + ; mov bp, sp ; 8b ec ; 0xff13d orgs.asm:101 + mov eax, strict dword 00124f9fdh ; 66 b8 fd f9 24 01 ; 0xff13f orgs.asm:103 + mov dx, 00410h ; ba 10 04 ; 0xff145 orgs.asm:104 + out DX, eax ; 66 ef ; 0xff148 orgs.asm:105 + db 08bh, 0e5h + ; mov sp, bp ; 8b e5 ; 0xff14a orgs.asm:218 + pop bp ; 5d ; 0xff14c orgs.asm:219 + retn ; c3 ; 0xff14d orgs.asm:220 + ; disGetNextSymbol 0xff14e LB 0xeb2 -> off=0x0 cb=000000000000000c uValue=00000000000f114e 'pcibios_init_set_elcr' +pcibios_init_set_elcr: ; 0xff14e LB 0xc + push ax ; 50 ; 0xff14e orgs.asm:223 + push cx ; 51 ; 0xff14f orgs.asm:224 + mov dx, 004d0h ; ba d0 04 ; 0xff150 orgs.asm:225 + test AL, strict byte 008h ; a8 08 ; 0xff153 orgs.asm:226 + je short 0f15ah ; 74 03 ; 0xff155 orgs.asm:227 + inc dx ; 42 ; 0xff157 orgs.asm:229 + and AL, strict byte 007h ; 24 07 ; 0xff158 orgs.asm:230 + ; disGetNextSymbol 0xff15a LB 0xea6 -> off=0x0 cb=000000000000000d uValue=00000000000f115a 'is_master_pic' +is_master_pic: ; 0xff15a LB 0xd + db 08ah, 0c8h + ; mov cl, al ; 8a c8 ; 0xff15a orgs.asm:232 + mov BL, strict byte 001h ; b3 01 ; 0xff15c orgs.asm:233 + sal bl, CL ; d2 e3 ; 0xff15e orgs.asm:234 + in AL, DX ; ec ; 0xff160 orgs.asm:235 + db 00ah, 0c3h + ; or al, bl ; 0a c3 ; 0xff161 orgs.asm:236 + out DX, AL ; ee ; 0xff163 orgs.asm:237 + pop cx ; 59 ; 0xff164 orgs.asm:238 + pop ax ; 58 ; 0xff165 orgs.asm:239 + retn ; c3 ; 0xff166 orgs.asm:240 + ; disGetNextSymbol 0xff167 LB 0xe99 -> off=0x0 cb=0000000000000039 uValue=00000000000f1167 'pcibios_init_irqs' +pcibios_init_irqs: ; 0xff167 LB 0x39 + push DS ; 1e ; 0xff167 orgs.asm:243 + push bp ; 55 ; 0xff168 orgs.asm:244 + mov ax, 0f000h ; b8 00 f0 ; 0xff169 orgs.asm:245 + mov ds, ax ; 8e d8 ; 0xff16c orgs.asm:246 + pop bp ; 5d ; 0xff16e orgs.asm:353 + pop DS ; 1f ; 0xff16f orgs.asm:354 + retn ; c3 ; 0xff170 orgs.asm:355 + mov ax, ax ; 89 c0 ; 0xff171 + mov ax, ax ; 89 c0 ; 0xff173 + mov ax, ax ; 89 c0 ; 0xff175 + mov ax, ax ; 89 c0 ; 0xff177 + mov ax, ax ; 89 c0 ; 0xff179 + mov ax, ax ; 89 c0 ; 0xff17b + mov ax, ax ; 89 c0 ; 0xff17d + cld ; fc ; 0xff17f + and AL, strict byte 050h ; 24 50 ; 0xff180 + dec cx ; 49 ; 0xff182 + push dx ; 52 ; 0xff183 + add byte [bx+di], al ; 00 01 ; 0xff184 + add byte [bp+si], al ; 00 02 ; 0xff186 + add byte [bx+si], cl ; 00 08 ; 0xff188 + add byte [bx+si], al ; 00 00 ; 0xff18a + xchg byte [bx+si+07000h], al ; 86 80 00 70 ; 0xff18c + times 0xf db 0 + db 031h + ; disGetNextSymbol 0xff1a0 LB 0xe60 -> off=0x0 cb=00000000000001e0 uValue=00000000000f11a0 '_pci_routing_table' +_pci_routing_table: ; 0xff1a0 LB 0x1e0 + db 000h, 008h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 000h, 000h + db 000h, 010h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 001h, 000h + db 000h, 018h, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 002h, 000h + db 000h, 020h, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 003h, 000h + db 000h, 028h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 004h, 000h + db 000h, 030h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 005h, 000h + db 000h, 038h, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 006h, 000h + db 000h, 040h, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 007h, 000h + db 000h, 048h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 008h, 000h + db 000h, 050h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 009h, 000h + db 000h, 058h, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 00ah, 000h + db 000h, 060h, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 00bh, 000h + db 000h, 068h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 00ch, 000h + db 000h, 070h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 00dh, 000h + db 000h, 078h, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 00eh, 000h + db 000h, 080h, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 00fh, 000h + db 000h, 088h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 010h, 000h + db 000h, 090h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 011h, 000h + db 000h, 098h, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 012h, 000h + db 000h, 0a0h, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 013h, 000h + db 000h, 0a8h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 014h, 000h + db 000h, 0b0h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 015h, 000h + db 000h, 0b8h, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 016h, 000h + db 000h, 0c0h, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 017h, 000h + db 000h, 0c8h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 018h, 000h + db 000h, 0d0h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 019h, 000h + db 000h, 0d8h, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 01ah, 000h + db 000h, 0e0h, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 01bh, 000h + db 000h, 0e8h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 01ch, 000h + db 000h, 0f0h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 01dh, 000h + ; disGetNextSymbol 0xff380 LB 0xc80 -> off=0x0 cb=0000000000000002 uValue=00000000000f1380 '_pci_routing_table_size' +_pci_routing_table_size: ; 0xff380 LB 0x2 + loopne 0f383h ; e0 01 ; 0xff380 + ; disGetNextSymbol 0xff382 LB 0xc7e -> off=0x0 cb=00000000000004bf uValue=00000000000f1382 'biosorg_check_before_or_at_0F83Fh' +biosorg_check_before_or_at_0F83Fh: ; 0xff382 LB 0x4bf + times 0x4bd db 0 + db 'XM' + ; disGetNextSymbol 0xff841 LB 0x7bf -> off=0x0 cb=000000000000000c uValue=00000000000f1841 'int12_handler' +int12_handler: ; 0xff841 LB 0xc + sti ; fb ; 0xff841 orgs.asm:1680 + push DS ; 1e ; 0xff842 orgs.asm:1681 + mov ax, strict word 00040h ; b8 40 00 ; 0xff843 orgs.asm:1682 + mov ds, ax ; 8e d8 ; 0xff846 orgs.asm:1683 + mov ax, word [00013h] ; a1 13 00 ; 0xff848 orgs.asm:1684 + pop DS ; 1f ; 0xff84b orgs.asm:1685 + iret ; cf ; 0xff84c orgs.asm:1686 + ; disGetNextSymbol 0xff84d LB 0x7b3 -> off=0x0 cb=000000000000000c uValue=00000000000f184d 'int11_handler' +int11_handler: ; 0xff84d LB 0xc + sti ; fb ; 0xff84d orgs.asm:1695 + push DS ; 1e ; 0xff84e orgs.asm:1696 + mov ax, strict word 00040h ; b8 40 00 ; 0xff84f orgs.asm:1697 + mov ds, ax ; 8e d8 ; 0xff852 orgs.asm:1698 + mov ax, word [00010h] ; a1 10 00 ; 0xff854 orgs.asm:1699 + pop DS ; 1f ; 0xff857 orgs.asm:1700 + iret ; cf ; 0xff858 orgs.asm:1701 + ; disGetNextSymbol 0xff859 LB 0x7a7 -> off=0x0 cb=0000000000000031 uValue=00000000000f1859 'int15_handler' +int15_handler: ; 0xff859 LB 0x31 + cmp ah, 087h ; 80 fc 87 ; 0xff859 orgs.asm:1711 + jne short 0f86bh ; 75 0d ; 0xff85c orgs.asm:1712 + pushaw ; 60 ; 0xff85e orgs.asm:1717 + push ES ; 06 ; 0xff85f orgs.asm:1718 + push DS ; 1e ; 0xff860 orgs.asm:1719 + push CS ; 0e ; 0xff861 orgs.asm:104 + pop DS ; 1f ; 0xff862 orgs.asm:105 + cld ; fc ; 0xff863 orgs.asm:106 + call 06894h ; e8 2d 70 ; 0xff864 orgs.asm:1721 + pop DS ; 1f ; 0xff867 orgs.asm:1722 + pop ES ; 07 ; 0xff868 orgs.asm:1723 + popaw ; 61 ; 0xff869 orgs.asm:1724 + iret ; cf ; 0xff86a orgs.asm:1725 + pushfw ; 9c ; 0xff86b orgs.asm:1730 + push DS ; 1e ; 0xff86c orgs.asm:1731 + push ES ; 06 ; 0xff86d orgs.asm:1732 + push CS ; 0e ; 0xff86e orgs.asm:104 + pop DS ; 1f ; 0xff86f orgs.asm:105 + cld ; fc ; 0xff870 orgs.asm:106 + pushaw ; 60 ; 0xff871 orgs.asm:97 + cmp ah, 053h ; 80 fc 53 ; 0xff872 orgs.asm:1743 + je short 0f885h ; 74 0e ; 0xff875 orgs.asm:1744 + cmp ah, 0c2h ; 80 fc c2 ; 0xff877 orgs.asm:1745 + je short 0f88ah ; 74 0e ; 0xff87a orgs.asm:1746 + call 0657ch ; e8 fd 6c ; 0xff87c orgs.asm:1748 + popaw ; 61 ; 0xff87f orgs.asm:114 + pop ES ; 07 ; 0xff880 orgs.asm:1754 + pop DS ; 1f ; 0xff881 orgs.asm:1755 + popfw ; 9d ; 0xff882 orgs.asm:1756 + jmp short 0f88fh ; eb 0a ; 0xff883 orgs.asm:1757 + call 09598h ; e8 10 9d ; 0xff885 orgs.asm:1760 + jmp short 0f87fh ; eb f5 ; 0xff888 orgs.asm:1761 + ; disGetNextSymbol 0xff88a LB 0x776 -> off=0x0 cb=0000000000000005 uValue=00000000000f188a 'int15_handler_mouse' +int15_handler_mouse: ; 0xff88a LB 0x5 + call 06fd1h ; e8 44 77 ; 0xff88a orgs.asm:1764 + jmp short 0f87fh ; eb f0 ; 0xff88d orgs.asm:1765 + ; disGetNextSymbol 0xff88f LB 0x771 -> off=0x0 cb=000000000000001a uValue=00000000000f188f 'iret_modify_cf' +iret_modify_cf: ; 0xff88f LB 0x1a + jc short 0f89fh ; 72 0e ; 0xff88f orgs.asm:1782 + push bp ; 55 ; 0xff891 orgs.asm:1783 + db 08bh, 0ech + ; mov bp, sp ; 8b ec ; 0xff892 orgs.asm:1784 + and byte [bp+006h], 0feh ; 80 66 06 fe ; 0xff894 orgs.asm:1785 + or word [bp+006h], 00200h ; 81 4e 06 00 02 ; 0xff898 orgs.asm:1786 + pop bp ; 5d ; 0xff89d orgs.asm:1787 + iret ; cf ; 0xff89e orgs.asm:1788 + push bp ; 55 ; 0xff89f orgs.asm:1790 + db 08bh, 0ech + ; mov bp, sp ; 8b ec ; 0xff8a0 orgs.asm:1791 + or word [bp+006h], 00201h ; 81 4e 06 01 02 ; 0xff8a2 orgs.asm:1792 + pop bp ; 5d ; 0xff8a7 orgs.asm:1793 + iret ; cf ; 0xff8a8 orgs.asm:1794 + ; disGetNextSymbol 0xff8a9 LB 0x757 -> off=0x0 cb=000000000000002b uValue=00000000000f18a9 'int74_handler' +int74_handler: ; 0xff8a9 LB 0x2b + sti ; fb ; 0xff8a9 orgs.asm:1801 + pushaw ; 60 ; 0xff8aa orgs.asm:97 + push ES ; 06 ; 0xff8ab orgs.asm:1803 + push DS ; 1e ; 0xff8ac orgs.asm:1804 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xff8ad orgs.asm:1805 + push ax ; 50 ; 0xff8af orgs.asm:1806 + push ax ; 50 ; 0xff8b0 orgs.asm:1807 + push ax ; 50 ; 0xff8b1 orgs.asm:1808 + push ax ; 50 ; 0xff8b2 orgs.asm:1809 + push ax ; 50 ; 0xff8b3 orgs.asm:1810 + push CS ; 0e ; 0xff8b4 orgs.asm:104 + pop DS ; 1f ; 0xff8b5 orgs.asm:105 + cld ; fc ; 0xff8b6 orgs.asm:106 + call 06f23h ; e8 69 76 ; 0xff8b7 orgs.asm:1812 + pop cx ; 59 ; 0xff8ba orgs.asm:1813 + jcxz 0f8c9h ; e3 0c ; 0xff8bb orgs.asm:1814 + push strict byte 00000h ; 6a 00 ; 0xff8bd orgs.asm:1818 + pop DS ; 1f ; 0xff8bf orgs.asm:1823 + push word [0040eh] ; ff 36 0e 04 ; 0xff8c0 orgs.asm:1824 + pop DS ; 1f ; 0xff8c4 orgs.asm:1825 + call far [word 00022h] ; ff 1e 22 00 ; 0xff8c5 orgs.asm:1826 + cli ; fa ; 0xff8c9 orgs.asm:1828 + call 0e030h ; e8 63 e7 ; 0xff8ca orgs.asm:1829 + add sp, strict byte 00008h ; 83 c4 08 ; 0xff8cd orgs.asm:1830 + pop DS ; 1f ; 0xff8d0 orgs.asm:1831 + pop ES ; 07 ; 0xff8d1 orgs.asm:1832 + popaw ; 61 ; 0xff8d2 orgs.asm:114 + iret ; cf ; 0xff8d3 orgs.asm:1834 + ; disGetNextSymbol 0xff8d4 LB 0x72c -> off=0x0 cb=0000000000000012 uValue=00000000000f18d4 'int76_handler' +int76_handler: ; 0xff8d4 LB 0x12 + push ax ; 50 ; 0xff8d4 orgs.asm:1841 + push DS ; 1e ; 0xff8d5 orgs.asm:1842 + mov ax, strict word 00040h ; b8 40 00 ; 0xff8d6 orgs.asm:1843 + mov ds, ax ; 8e d8 ; 0xff8d9 orgs.asm:1844 + mov byte [0008eh], 0ffh ; c6 06 8e 00 ff ; 0xff8db orgs.asm:1845 + call 0e030h ; e8 4d e7 ; 0xff8e0 orgs.asm:1846 + pop DS ; 1f ; 0xff8e3 orgs.asm:1847 + pop ax ; 58 ; 0xff8e4 orgs.asm:1848 + iret ; cf ; 0xff8e5 orgs.asm:1849 + ; disGetNextSymbol 0xff8e6 LB 0x71a -> off=0x0 cb=000000000000001f uValue=00000000000f18e6 'int70_handler' +int70_handler: ; 0xff8e6 LB 0x1f + push ES ; 06 ; 0xff8e6 orgs.asm:1858 + push DS ; 1e ; 0xff8e7 orgs.asm:1859 + pushaw ; 60 ; 0xff8e8 orgs.asm:97 + push CS ; 0e ; 0xff8e9 orgs.asm:104 + pop DS ; 1f ; 0xff8ea orgs.asm:105 + cld ; fc ; 0xff8eb orgs.asm:106 + call 06bdfh ; e8 f0 72 ; 0xff8ec orgs.asm:1862 + popaw ; 61 ; 0xff8ef orgs.asm:114 + pop DS ; 1f ; 0xff8f0 orgs.asm:1864 + pop ES ; 07 ; 0xff8f1 orgs.asm:1865 + iret ; cf ; 0xff8f2 orgs.asm:1866 + jnbe short 0f8fah ; 77 05 ; 0xff8f3 orgs.asm:1876 + cmp ax, 000b0h ; 3d b0 00 ; 0xff8f5 orgs.asm:1877 + jc short 0f902h ; 72 08 ; 0xff8f8 orgs.asm:1878 + db 033h, 0d2h + ; xor dx, dx ; 33 d2 ; 0xff8fa orgs.asm:1881 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xff8fc orgs.asm:1882 + inc byte [word 00070h] ; fe 06 70 00 ; 0xff8fe orgs.asm:1884 + jmp near 0fec1h ; e9 bc 05 ; 0xff902 orgs.asm:1886 + ; disGetNextSymbol 0xff905 LB 0x6fb -> off=0x0 cb=0000000000000169 uValue=00000000000f1905 'biosorg_check_before_or_at_0FA6Ch' +biosorg_check_before_or_at_0FA6Ch: ; 0xff905 LB 0x169 + times 0x167 db 0 + db 'XM' + ; disGetNextSymbol 0xffa6e LB 0x592 -> off=0x0 cb=0000000000000400 uValue=00000000000f1a6e 'font8x8' +font8x8: ; 0xffa6e LB 0x400 + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 07eh, 081h, 0a5h, 081h, 0bdh, 099h, 081h, 07eh + db 07eh, 0ffh, 0dbh, 0ffh, 0c3h, 0e7h, 0ffh, 07eh, 06ch, 0feh, 0feh, 0feh, 07ch, 038h, 010h, 000h + db 010h, 038h, 07ch, 0feh, 07ch, 038h, 010h, 000h, 038h, 07ch, 038h, 0feh, 0feh, 07ch, 038h, 07ch + db 010h, 010h, 038h, 07ch, 0feh, 07ch, 038h, 07ch, 000h, 000h, 018h, 03ch, 03ch, 018h, 000h, 000h + db 0ffh, 0ffh, 0e7h, 0c3h, 0c3h, 0e7h, 0ffh, 0ffh, 000h, 03ch, 066h, 042h, 042h, 066h, 03ch, 000h + db 0ffh, 0c3h, 099h, 0bdh, 0bdh, 099h, 0c3h, 0ffh, 00fh, 007h, 00fh, 07dh, 0cch, 0cch, 0cch, 078h + db 03ch, 066h, 066h, 066h, 03ch, 018h, 07eh, 018h, 03fh, 033h, 03fh, 030h, 030h, 070h, 0f0h, 0e0h + db 07fh, 063h, 07fh, 063h, 063h, 067h, 0e6h, 0c0h, 099h, 05ah, 03ch, 0e7h, 0e7h, 03ch, 05ah, 099h + db 080h, 0e0h, 0f8h, 0feh, 0f8h, 0e0h, 080h, 000h, 002h, 00eh, 03eh, 0feh, 03eh, 00eh, 002h, 000h + db 018h, 03ch, 07eh, 018h, 018h, 07eh, 03ch, 018h, 066h, 066h, 066h, 066h, 066h, 000h, 066h, 000h + db 07fh, 0dbh, 0dbh, 07bh, 01bh, 01bh, 01bh, 000h, 03eh, 063h, 038h, 06ch, 06ch, 038h, 0cch, 078h + db 000h, 000h, 000h, 000h, 07eh, 07eh, 07eh, 000h, 018h, 03ch, 07eh, 018h, 07eh, 03ch, 018h, 0ffh + db 018h, 03ch, 07eh, 018h, 018h, 018h, 018h, 000h, 018h, 018h, 018h, 018h, 07eh, 03ch, 018h, 000h + db 000h, 018h, 00ch, 0feh, 00ch, 018h, 000h, 000h, 000h, 030h, 060h, 0feh, 060h, 030h, 000h, 000h + db 000h, 000h, 0c0h, 0c0h, 0c0h, 0feh, 000h, 000h, 000h, 024h, 066h, 0ffh, 066h, 024h, 000h, 000h + db 000h, 018h, 03ch, 07eh, 0ffh, 0ffh, 000h, 000h, 000h, 0ffh, 0ffh, 07eh, 03ch, 018h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 030h, 078h, 078h, 030h, 030h, 000h, 030h, 000h + db 06ch, 06ch, 06ch, 000h, 000h, 000h, 000h, 000h, 06ch, 06ch, 0feh, 06ch, 0feh, 06ch, 06ch, 000h + db 030h, 07ch, 0c0h, 078h, 00ch, 0f8h, 030h, 000h, 000h, 0c6h, 0cch, 018h, 030h, 066h, 0c6h, 000h + db 038h, 06ch, 038h, 076h, 0dch, 0cch, 076h, 000h, 060h, 060h, 0c0h, 000h, 000h, 000h, 000h, 000h + db 018h, 030h, 060h, 060h, 060h, 030h, 018h, 000h, 060h, 030h, 018h, 018h, 018h, 030h, 060h, 000h + db 000h, 066h, 03ch, 0ffh, 03ch, 066h, 000h, 000h, 000h, 030h, 030h, 0fch, 030h, 030h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 030h, 030h, 060h, 000h, 000h, 000h, 0fch, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 030h, 030h, 000h, 006h, 00ch, 018h, 030h, 060h, 0c0h, 080h, 000h + db 07ch, 0c6h, 0ceh, 0deh, 0f6h, 0e6h, 07ch, 000h, 030h, 070h, 030h, 030h, 030h, 030h, 0fch, 000h + db 078h, 0cch, 00ch, 038h, 060h, 0cch, 0fch, 000h, 078h, 0cch, 00ch, 038h, 00ch, 0cch, 078h, 000h + db 01ch, 03ch, 06ch, 0cch, 0feh, 00ch, 01eh, 000h, 0fch, 0c0h, 0f8h, 00ch, 00ch, 0cch, 078h, 000h + db 038h, 060h, 0c0h, 0f8h, 0cch, 0cch, 078h, 000h, 0fch, 0cch, 00ch, 018h, 030h, 030h, 030h, 000h + db 078h, 0cch, 0cch, 078h, 0cch, 0cch, 078h, 000h, 078h, 0cch, 0cch, 07ch, 00ch, 018h, 070h, 000h + db 000h, 030h, 030h, 000h, 000h, 030h, 030h, 000h, 000h, 030h, 030h, 000h, 000h, 030h, 030h, 060h + db 018h, 030h, 060h, 0c0h, 060h, 030h, 018h, 000h, 000h, 000h, 0fch, 000h, 000h, 0fch, 000h, 000h + db 060h, 030h, 018h, 00ch, 018h, 030h, 060h, 000h, 078h, 0cch, 00ch, 018h, 030h, 000h, 030h, 000h + db 07ch, 0c6h, 0deh, 0deh, 0deh, 0c0h, 078h, 000h, 030h, 078h, 0cch, 0cch, 0fch, 0cch, 0cch, 000h + db 0fch, 066h, 066h, 07ch, 066h, 066h, 0fch, 000h, 03ch, 066h, 0c0h, 0c0h, 0c0h, 066h, 03ch, 000h + db 0f8h, 06ch, 066h, 066h, 066h, 06ch, 0f8h, 000h, 0feh, 062h, 068h, 078h, 068h, 062h, 0feh, 000h + db 0feh, 062h, 068h, 078h, 068h, 060h, 0f0h, 000h, 03ch, 066h, 0c0h, 0c0h, 0ceh, 066h, 03eh, 000h + db 0cch, 0cch, 0cch, 0fch, 0cch, 0cch, 0cch, 000h, 078h, 030h, 030h, 030h, 030h, 030h, 078h, 000h + db 01eh, 00ch, 00ch, 00ch, 0cch, 0cch, 078h, 000h, 0e6h, 066h, 06ch, 078h, 06ch, 066h, 0e6h, 000h + db 0f0h, 060h, 060h, 060h, 062h, 066h, 0feh, 000h, 0c6h, 0eeh, 0feh, 0feh, 0d6h, 0c6h, 0c6h, 000h + db 0c6h, 0e6h, 0f6h, 0deh, 0ceh, 0c6h, 0c6h, 000h, 038h, 06ch, 0c6h, 0c6h, 0c6h, 06ch, 038h, 000h + db 0fch, 066h, 066h, 07ch, 060h, 060h, 0f0h, 000h, 078h, 0cch, 0cch, 0cch, 0dch, 078h, 01ch, 000h + db 0fch, 066h, 066h, 07ch, 06ch, 066h, 0e6h, 000h, 078h, 0cch, 0e0h, 070h, 01ch, 0cch, 078h, 000h + db 0fch, 0b4h, 030h, 030h, 030h, 030h, 078h, 000h, 0cch, 0cch, 0cch, 0cch, 0cch, 0cch, 0fch, 000h + db 0cch, 0cch, 0cch, 0cch, 0cch, 078h, 030h, 000h, 0c6h, 0c6h, 0c6h, 0d6h, 0feh, 0eeh, 0c6h, 000h + db 0c6h, 0c6h, 06ch, 038h, 038h, 06ch, 0c6h, 000h, 0cch, 0cch, 0cch, 078h, 030h, 030h, 078h, 000h + db 0feh, 0c6h, 08ch, 018h, 032h, 066h, 0feh, 000h, 078h, 060h, 060h, 060h, 060h, 060h, 078h, 000h + db 0c0h, 060h, 030h, 018h, 00ch, 006h, 002h, 000h, 078h, 018h, 018h, 018h, 018h, 018h, 078h, 000h + db 010h, 038h, 06ch, 0c6h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 0ffh + db 030h, 030h, 018h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 078h, 00ch, 07ch, 0cch, 076h, 000h + db 0e0h, 060h, 060h, 07ch, 066h, 066h, 0dch, 000h, 000h, 000h, 078h, 0cch, 0c0h, 0cch, 078h, 000h + db 01ch, 00ch, 00ch, 07ch, 0cch, 0cch, 076h, 000h, 000h, 000h, 078h, 0cch, 0fch, 0c0h, 078h, 000h + db 038h, 06ch, 060h, 0f0h, 060h, 060h, 0f0h, 000h, 000h, 000h, 076h, 0cch, 0cch, 07ch, 00ch, 0f8h + db 0e0h, 060h, 06ch, 076h, 066h, 066h, 0e6h, 000h, 030h, 000h, 070h, 030h, 030h, 030h, 078h, 000h + db 00ch, 000h, 00ch, 00ch, 00ch, 0cch, 0cch, 078h, 0e0h, 060h, 066h, 06ch, 078h, 06ch, 0e6h, 000h + db 070h, 030h, 030h, 030h, 030h, 030h, 078h, 000h, 000h, 000h, 0cch, 0feh, 0feh, 0d6h, 0c6h, 000h + db 000h, 000h, 0f8h, 0cch, 0cch, 0cch, 0cch, 000h, 000h, 000h, 078h, 0cch, 0cch, 0cch, 078h, 000h + db 000h, 000h, 0dch, 066h, 066h, 07ch, 060h, 0f0h, 000h, 000h, 076h, 0cch, 0cch, 07ch, 00ch, 01eh + db 000h, 000h, 0dch, 076h, 066h, 060h, 0f0h, 000h, 000h, 000h, 07ch, 0c0h, 078h, 00ch, 0f8h, 000h + db 010h, 030h, 07ch, 030h, 030h, 034h, 018h, 000h, 000h, 000h, 0cch, 0cch, 0cch, 0cch, 076h, 000h + db 000h, 000h, 0cch, 0cch, 0cch, 078h, 030h, 000h, 000h, 000h, 0c6h, 0d6h, 0feh, 0feh, 06ch, 000h + db 000h, 000h, 0c6h, 06ch, 038h, 06ch, 0c6h, 000h, 000h, 000h, 0cch, 0cch, 0cch, 07ch, 00ch, 0f8h + db 000h, 000h, 0fch, 098h, 030h, 064h, 0fch, 000h, 01ch, 030h, 030h, 0e0h, 030h, 030h, 01ch, 000h + db 018h, 018h, 018h, 000h, 018h, 018h, 018h, 000h, 0e0h, 030h, 030h, 01ch, 030h, 030h, 0e0h, 000h + db 076h, 0dch, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 010h, 038h, 06ch, 0c6h, 0c6h, 0feh, 000h + ; disGetNextSymbol 0xffe6e LB 0x192 -> off=0x0 cb=000000000000000d uValue=00000000000f1e6e 'biosorg_check_at_0FE6Eh' +biosorg_check_at_0FE6Eh: ; 0xffe6e LB 0xd + push ES ; 06 ; 0xffe6e orgs.asm:1920 + push DS ; 1e ; 0xffe6f orgs.asm:1921 + pushaw ; 60 ; 0xffe70 orgs.asm:97 + push CS ; 0e ; 0xffe71 orgs.asm:104 + pop DS ; 1f ; 0xffe72 orgs.asm:105 + cld ; fc ; 0xffe73 orgs.asm:106 + call 06c87h ; e8 10 6e ; 0xffe74 orgs.asm:1925 + popaw ; 61 ; 0xffe77 orgs.asm:114 + pop DS ; 1f ; 0xffe78 orgs.asm:1927 + pop ES ; 07 ; 0xffe79 orgs.asm:1928 + iret ; cf ; 0xffe7a orgs.asm:1929 + ; disGetNextSymbol 0xffe7b LB 0x185 -> off=0x0 cb=000000000000002a uValue=00000000000f1e7b 'biosorg_check_before_or_at_0FEA3h' +biosorg_check_before_or_at_0FEA3h: ; 0xffe7b LB 0x2a + times 0x28 db 0 + db 'XM' + ; disGetNextSymbol 0xffea5 LB 0x15b -> off=0x0 cb=0000000000000042 uValue=00000000000f1ea5 'int08_handler' +int08_handler: ; 0xffea5 LB 0x42 + sti ; fb ; 0xffea5 orgs.asm:1942 + push ax ; 50 ; 0xffea6 orgs.asm:1943 + push DS ; 1e ; 0xffea7 orgs.asm:1945 + push dx ; 52 ; 0xffea8 orgs.asm:1946 + mov ax, strict word 00040h ; b8 40 00 ; 0xffea9 orgs.asm:1947 + mov ds, ax ; 8e d8 ; 0xffeac orgs.asm:1948 + mov ax, word [0006ch] ; a1 6c 00 ; 0xffeae orgs.asm:1954 + mov dx, word [word 0006eh] ; 8b 16 6e 00 ; 0xffeb1 orgs.asm:1955 + inc ax ; 40 ; 0xffeb5 orgs.asm:1956 + jne short 0feb9h ; 75 01 ; 0xffeb6 orgs.asm:1957 + inc dx ; 42 ; 0xffeb8 orgs.asm:1958 + cmp dx, strict byte 00018h ; 83 fa 18 ; 0xffeb9 orgs.asm:1967 + jc short 0fec1h ; 72 03 ; 0xffebc orgs.asm:1968 + jmp near 0f8f3h ; e9 32 fa ; 0xffebe orgs.asm:1969 + mov word [0006ch], ax ; a3 6c 00 ; 0xffec1 orgs.asm:1981 + mov word [word 0006eh], dx ; 89 16 6e 00 ; 0xffec4 orgs.asm:1982 + mov AL, byte [00040h] ; a0 40 00 ; 0xffec8 orgs.asm:1986 + db 00ah, 0c0h + ; or al, al ; 0a c0 ; 0xffecb orgs.asm:1987 + je short 0feddh ; 74 0e ; 0xffecd orgs.asm:1988 + db 0feh, 0c8h + ; dec al ; fe c8 ; 0xffecf orgs.asm:1989 + mov byte [00040h], AL ; a2 40 00 ; 0xffed1 orgs.asm:1990 + jne short 0feddh ; 75 07 ; 0xffed4 orgs.asm:1991 + mov dx, 003f2h ; ba f2 03 ; 0xffed6 orgs.asm:1993 + in AL, DX ; ec ; 0xffed9 orgs.asm:1994 + and AL, strict byte 0cfh ; 24 cf ; 0xffeda orgs.asm:1995 + out DX, AL ; ee ; 0xffedc orgs.asm:1996 + int 01ch ; cd 1c ; 0xffedd orgs.asm:1999 + cli ; fa ; 0xffedf orgs.asm:2001 + call 0e034h ; e8 51 e1 ; 0xffee0 orgs.asm:2002 + pop dx ; 5a ; 0xffee3 orgs.asm:2003 + pop DS ; 1f ; 0xffee4 orgs.asm:2004 + pop ax ; 58 ; 0xffee5 orgs.asm:2009 + iret ; cf ; 0xffee6 orgs.asm:2011 + ; disGetNextSymbol 0xffee7 LB 0x119 -> off=0x0 cb=000000000000000c uValue=00000000000f1ee7 'biosorg_check_before_or_at_0FEF1h' +biosorg_check_before_or_at_0FEF1h: ; 0xffee7 LB 0xc + times 0xa db 0 + db 'XM' + ; disGetNextSymbol 0xffef3 LB 0x10d -> off=0x0 cb=000000000000000d uValue=00000000000f1ef3 'biosorg_check_at_0FEF3h' +biosorg_check_at_0FEF3h: ; 0xffef3 LB 0xd + times 0xb db 0 + db 'XM' + ; disGetNextSymbol 0xfff00 LB 0x100 -> off=0x0 cb=0000000000000019 uValue=00000000000f1f00 'biosorg_check_at_0FF00h' +biosorg_check_at_0FF00h: ; 0xfff00 LB 0x19 + dec di ; 4f ; 0xfff00 + jc short 0ff64h ; 72 61 ; 0xfff01 + arpl [si+065h], bp ; 63 6c 65 ; 0xfff03 + and byte [bp+04dh], dl ; 20 56 4d ; 0xfff06 + and byte [bp+069h], dl ; 20 56 69 ; 0xfff09 + jc short 0ff82h ; 72 74 ; 0xfff0c + jne short 0ff71h ; 75 61 ; 0xfff0e + insb ; 6c ; 0xfff10 + inc dx ; 42 ; 0xfff11 + outsw ; 6f ; 0xfff12 + js short 0ff35h ; 78 20 ; 0xfff13 + inc dx ; 42 ; 0xfff15 + dec cx ; 49 ; 0xfff16 + dec di ; 4f ; 0xfff17 + push bx ; 53 ; 0xfff18 + ; disGetNextSymbol 0xfff19 LB 0xe7 -> off=0x0 cb=000000000000003a uValue=00000000000f1f19 'biosorg_check_before_or_at_0FF51h' +biosorg_check_before_or_at_0FF51h: ; 0xfff19 LB 0x3a + times 0x38 db 0 + db 'XM' + ; disGetNextSymbol 0xfff53 LB 0xad -> off=0x0 cb=0000000000000001 uValue=00000000000f1f53 'dummy_iret' +dummy_iret: ; 0xfff53 LB 0x1 + iret ; cf ; 0xfff53 orgs.asm:2036 + ; disGetNextSymbol 0xfff54 LB 0xac -> off=0x0 cb=000000000000002c uValue=00000000000f1f54 'biosorg_check_at_0FF54h' +biosorg_check_at_0FF54h: ; 0xfff54 LB 0x2c + iret ; cf ; 0xfff54 orgs.asm:2045 + mov ax, ax ; 89 c0 ; 0xfff55 + mov ax, ax ; 89 c0 ; 0xfff57 + mov ax, ax ; 89 c0 ; 0xfff59 + mov ax, ax ; 89 c0 ; 0xfff5b + mov ax, ax ; 89 c0 ; 0xfff5d + cld ; fc ; 0xfff5f + pop di ; 5f ; 0xfff60 + push bx ; 53 ; 0xfff61 + dec bp ; 4d ; 0xfff62 + pop di ; 5f ; 0xfff63 + jnl short 0ff85h ; 7d 1f ; 0xfff64 + add al, byte [di] ; 02 05 ; 0xfff66 + inc word [bx+si] ; ff 00 ; 0xfff68 + add byte [bx+si], al ; 00 00 ; 0xfff6a + add byte [bx+si], al ; 00 00 ; 0xfff6c + add byte [bx+si], al ; 00 00 ; 0xfff6e + pop di ; 5f ; 0xfff70 + inc sp ; 44 ; 0xfff71 + dec bp ; 4d ; 0xfff72 + dec cx ; 49 ; 0xfff73 + pop di ; 5f ; 0xfff74 + and ax, strict word 00000h ; 25 00 00 ; 0xfff75 + add byte [bx+si], dl ; 00 10 ; 0xfff78 + push CS ; 0e ; 0xfff7a + add byte [bx+si], al ; 00 00 ; 0xfff7b + add byte [di], ah ; 00 25 ; 0xfff7d + times 0x1 db 0 + ; disGetNextSymbol 0xfff80 LB 0x80 -> off=0x0 cb=0000000000000070 uValue=00000000000f1f80 'biosorg_check_before_or_at_0FFEEh' +biosorg_check_before_or_at_0FFEEh: ; 0xfff80 LB 0x70 + times 0x6e db 0 + db 'XM' + ; disGetNextSymbol 0xffff0 LB 0x10 -> off=0x0 cb=0000000000000010 uValue=00000000000f1ff0 'cpu_reset' +cpu_reset: ; 0xffff0 LB 0x10 + jmp far 0f000h:0e05bh ; ea 5b e0 00 f0 ; 0xffff0 orgs.asm:2055 + ; disGetNextSymbol 0xffff5 LB 0xb -> off=0xb cb=0000000000000000 uValue=0000000000100000 '_dummy_addr_0x100000' + db 030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fch, 005h diff --git a/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative286.md5sum b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative286.md5sum new file mode 100644 index 00000000..77ac3ff4 --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative286.md5sum @@ -0,0 +1 @@ +3dad0312a44e67bb66402a756cd2eef8 *VBoxPcBios286.rom diff --git a/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative386.asm b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative386.asm new file mode 100644 index 00000000..567b50f4 --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative386.asm @@ -0,0 +1,17325 @@ +; $Id: VBoxBiosAlternative386.asm $ +;; @file +; Auto Generated source file. Do not edit. +; + +; +; Source file: post.c +; +; $Id: VBoxBiosAlternative386.asm $ +; BIOS POST routines. Used only during initialization. +; +; +; +; Copyright (C) 2004-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + +; +; Source file: bios.c +; +; $Id: VBoxBiosAlternative386.asm $ +; PC BIOS - ??? +; +; +; +; Copyright (C) 2006-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; -------------------------------------------------------------------- +; +; This code is based on: +; +; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment +; +; Copyright (C) 2002 MandrakeSoft S.A. +; +; MandrakeSoft S.A. +; 43, rue d'Aboukir +; 75002 Paris - France +; http://www.linux-mandrake.com/ +; http://www.mandrakesoft.com/ +; +; This library is free software; you can redistribute it and/or +; modify it under the terms of the GNU Lesser General Public +; License as published by the Free Software Foundation; either +; version 2 of the License, or (at your option) any later version. +; +; This library is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +; Lesser General Public License for more details. +; +; You should have received a copy of the GNU Lesser General Public +; License along with this library; if not, write to the Free Software +; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +; + +; +; Source file: print.c +; +; $Id: VBoxBiosAlternative386.asm $ +; PC BIOS - ??? +; +; +; +; Copyright (C) 2006-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; -------------------------------------------------------------------- +; +; This code is based on: +; +; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment +; +; Copyright (C) 2002 MandrakeSoft S.A. +; +; MandrakeSoft S.A. +; 43, rue d'Aboukir +; 75002 Paris - France +; http://www.linux-mandrake.com/ +; http://www.mandrakesoft.com/ +; +; This library is free software; you can redistribute it and/or +; modify it under the terms of the GNU Lesser General Public +; License as published by the Free Software Foundation; either +; version 2 of the License, or (at your option) any later version. +; +; This library is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +; Lesser General Public License for more details. +; +; You should have received a copy of the GNU Lesser General Public +; License along with this library; if not, write to the Free Software +; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +; + +; +; Source file: ata.c +; +; $Id: VBoxBiosAlternative386.asm $ +; PC BIOS - ??? +; +; +; +; Copyright (C) 2006-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; -------------------------------------------------------------------- +; +; This code is based on: +; +; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment +; +; Copyright (C) 2002 MandrakeSoft S.A. +; +; MandrakeSoft S.A. +; 43, rue d'Aboukir +; 75002 Paris - France +; http://www.linux-mandrake.com/ +; http://www.mandrakesoft.com/ +; +; This library is free software; you can redistribute it and/or +; modify it under the terms of the GNU Lesser General Public +; License as published by the Free Software Foundation; either +; version 2 of the License, or (at your option) any later version. +; +; This library is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +; Lesser General Public License for more details. +; +; You should have received a copy of the GNU Lesser General Public +; License along with this library; if not, write to the Free Software +; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +; + +; +; Source file: floppy.c +; +; $Id: VBoxBiosAlternative386.asm $ +; PC BIOS - ??? +; +; +; +; Copyright (C) 2006-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; -------------------------------------------------------------------- +; +; This code is based on: +; +; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment +; +; Copyright (C) 2002 MandrakeSoft S.A. +; +; MandrakeSoft S.A. +; 43, rue d'Aboukir +; 75002 Paris - France +; http://www.linux-mandrake.com/ +; http://www.mandrakesoft.com/ +; +; This library is free software; you can redistribute it and/or +; modify it under the terms of the GNU Lesser General Public +; License as published by the Free Software Foundation; either +; version 2 of the License, or (at your option) any later version. +; +; This library is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +; Lesser General Public License for more details. +; +; You should have received a copy of the GNU Lesser General Public +; License along with this library; if not, write to the Free Software +; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +; + +; +; Source file: floppyt.c +; +; $Id: VBoxBiosAlternative386.asm $ +; Floppy drive tables. +; +; +; +; Copyright (C) 2011-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + +; +; Source file: eltorito.c +; +; $Id: VBoxBiosAlternative386.asm $ +; PC BIOS - ??? +; +; +; +; Copyright (C) 2006-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; -------------------------------------------------------------------- +; +; This code is based on: +; +; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment +; +; Copyright (C) 2002 MandrakeSoft S.A. +; +; MandrakeSoft S.A. +; 43, rue d'Aboukir +; 75002 Paris - France +; http://www.linux-mandrake.com/ +; http://www.mandrakesoft.com/ +; +; This library is free software; you can redistribute it and/or +; modify it under the terms of the GNU Lesser General Public +; License as published by the Free Software Foundation; either +; version 2 of the License, or (at your option) any later version. +; +; This library is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +; Lesser General Public License for more details. +; +; You should have received a copy of the GNU Lesser General Public +; License along with this library; if not, write to the Free Software +; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +; + +; +; Source file: boot.c +; +; $Id: VBoxBiosAlternative386.asm $ +; PC BIOS - ??? +; +; +; +; Copyright (C) 2006-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; -------------------------------------------------------------------- +; +; This code is based on: +; +; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment +; +; Copyright (C) 2002 MandrakeSoft S.A. +; +; MandrakeSoft S.A. +; 43, rue d'Aboukir +; 75002 Paris - France +; http://www.linux-mandrake.com/ +; http://www.mandrakesoft.com/ +; +; This library is free software; you can redistribute it and/or +; modify it under the terms of the GNU Lesser General Public +; License as published by the Free Software Foundation; either +; version 2 of the License, or (at your option) any later version. +; +; This library is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +; Lesser General Public License for more details. +; +; You should have received a copy of the GNU Lesser General Public +; License along with this library; if not, write to the Free Software +; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +; + +; +; Source file: keyboard.c +; +; $Id: VBoxBiosAlternative386.asm $ +; PC BIOS - ??? +; +; +; +; Copyright (C) 2006-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; -------------------------------------------------------------------- +; +; This code is based on: +; +; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment +; +; Copyright (C) 2002 MandrakeSoft S.A. +; +; MandrakeSoft S.A. +; 43, rue d'Aboukir +; 75002 Paris - France +; http://www.linux-mandrake.com/ +; http://www.mandrakesoft.com/ +; +; This library is free software; you can redistribute it and/or +; modify it under the terms of the GNU Lesser General Public +; License as published by the Free Software Foundation; either +; version 2 of the License, or (at your option) any later version. +; +; This library is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +; Lesser General Public License for more details. +; +; You should have received a copy of the GNU Lesser General Public +; License along with this library; if not, write to the Free Software +; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +; + +; +; Source file: disk.c +; +; $Id: VBoxBiosAlternative386.asm $ +; PC BIOS - ??? +; +; +; +; Copyright (C) 2006-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; -------------------------------------------------------------------- +; +; This code is based on: +; +; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment +; +; Copyright (C) 2002 MandrakeSoft S.A. +; +; MandrakeSoft S.A. +; 43, rue d'Aboukir +; 75002 Paris - France +; http://www.linux-mandrake.com/ +; http://www.mandrakesoft.com/ +; +; This library is free software; you can redistribute it and/or +; modify it under the terms of the GNU Lesser General Public +; License as published by the Free Software Foundation; either +; version 2 of the License, or (at your option) any later version. +; +; This library is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +; Lesser General Public License for more details. +; +; You should have received a copy of the GNU Lesser General Public +; License along with this library; if not, write to the Free Software +; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +; + +; +; Source file: serial.c +; +; $Id: VBoxBiosAlternative386.asm $ +; PC BIOS - ??? +; +; +; +; Copyright (C) 2006-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; -------------------------------------------------------------------- +; +; This code is based on: +; +; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment +; +; Copyright (C) 2002 MandrakeSoft S.A. +; +; MandrakeSoft S.A. +; 43, rue d'Aboukir +; 75002 Paris - France +; http://www.linux-mandrake.com/ +; http://www.mandrakesoft.com/ +; +; This library is free software; you can redistribute it and/or +; modify it under the terms of the GNU Lesser General Public +; License as published by the Free Software Foundation; either +; version 2 of the License, or (at your option) any later version. +; +; This library is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +; Lesser General Public License for more details. +; +; You should have received a copy of the GNU Lesser General Public +; License along with this library; if not, write to the Free Software +; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +; + +; +; Source file: system.c +; +; $Id: VBoxBiosAlternative386.asm $ +; PC BIOS - ??? +; +; +; +; Copyright (C) 2006-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; -------------------------------------------------------------------- +; +; This code is based on: +; +; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment +; +; Copyright (C) 2002 MandrakeSoft S.A. +; +; MandrakeSoft S.A. +; 43, rue d'Aboukir +; 75002 Paris - France +; http://www.linux-mandrake.com/ +; http://www.mandrakesoft.com/ +; +; This library is free software; you can redistribute it and/or +; modify it under the terms of the GNU Lesser General Public +; License as published by the Free Software Foundation; either +; version 2 of the License, or (at your option) any later version. +; +; This library is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +; Lesser General Public License for more details. +; +; You should have received a copy of the GNU Lesser General Public +; License along with this library; if not, write to the Free Software +; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +; + +; +; Source file: invop.c +; +; $Id: VBoxBiosAlternative386.asm $ +; Real mode invalid opcode handler. +; +; +; +; Copyright (C) 2013-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + +; +; Source file: timepci.c +; +; +; Copyright (C) 2006-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; -------------------------------------------------------------------- +; +; This code is based on: +; +; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment +; +; Copyright (C) 2002 MandrakeSoft S.A. +; +; MandrakeSoft S.A. +; 43, rue d'Aboukir +; 75002 Paris - France +; http://www.linux-mandrake.com/ +; http://www.mandrakesoft.com/ +; +; This library is free software; you can redistribute it and/or +; modify it under the terms of the GNU Lesser General Public +; License as published by the Free Software Foundation; either +; version 2 of the License, or (at your option) any later version. +; +; This library is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +; Lesser General Public License for more details. +; +; You should have received a copy of the GNU Lesser General Public +; License along with this library; if not, write to the Free Software +; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +; + +; +; Source file: ps2mouse.c +; +; $Id: VBoxBiosAlternative386.asm $ +; PC BIOS - ??? +; +; +; +; Copyright (C) 2006-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; -------------------------------------------------------------------- +; +; This code is based on: +; +; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment +; +; Copyright (C) 2002 MandrakeSoft S.A. +; +; MandrakeSoft S.A. +; 43, rue d'Aboukir +; 75002 Paris - France +; http://www.linux-mandrake.com/ +; http://www.mandrakesoft.com/ +; +; This library is free software; you can redistribute it and/or +; modify it under the terms of the GNU Lesser General Public +; License as published by the Free Software Foundation; either +; version 2 of the License, or (at your option) any later version. +; +; This library is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +; Lesser General Public License for more details. +; +; You should have received a copy of the GNU Lesser General Public +; License along with this library; if not, write to the Free Software +; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +; + +; +; Source file: parallel.c +; +; $Id: VBoxBiosAlternative386.asm $ +; PC BIOS - ??? +; +; +; +; Copyright (C) 2006-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; -------------------------------------------------------------------- +; +; This code is based on: +; +; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment +; +; Copyright (C) 2002 MandrakeSoft S.A. +; +; MandrakeSoft S.A. +; 43, rue d'Aboukir +; 75002 Paris - France +; http://www.linux-mandrake.com/ +; http://www.mandrakesoft.com/ +; +; This library is free software; you can redistribute it and/or +; modify it under the terms of the GNU Lesser General Public +; License as published by the Free Software Foundation; either +; version 2 of the License, or (at your option) any later version. +; +; This library is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +; Lesser General Public License for more details. +; +; You should have received a copy of the GNU Lesser General Public +; License along with this library; if not, write to the Free Software +; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +; + +; +; Source file: logo.c +; +; $Id: VBoxBiosAlternative386.asm $ +; Stuff for drawing the BIOS logo. +; +; +; +; Copyright (C) 2004-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + +; +; Source file: scsi.c +; +; $Id: VBoxBiosAlternative386.asm $ +; SCSI host adapter driver to boot from SCSI disks +; +; +; +; Copyright (C) 2004-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + +; +; Source file: ahci.c +; +; $Id: VBoxBiosAlternative386.asm $ +; AHCI host adapter driver to boot from SATA disks. +; +; +; +; Copyright (C) 2011-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + +; +; Source file: apm.c +; +; $Id: VBoxBiosAlternative386.asm $ +; APM BIOS support. Implements APM version 1.2. +; +; +; +; Copyright (C) 2004-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + +; +; Source file: pcibios.c +; +; $Id: VBoxBiosAlternative386.asm $ +; PCI BIOS support. +; +; +; +; Copyright (C) 2004-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + +; +; Source file: pciutil.c +; +; $Id: VBoxBiosAlternative386.asm $ +; Utility routines for calling the PCI BIOS. +; +; +; +; Copyright (C) 2011-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + +; +; Source file: vds.c +; +; $Id: VBoxBiosAlternative386.asm $ +; Utility routines for calling the Virtual DMA Services. +; +; +; +; Copyright (C) 2011-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + +; +; Source file: __U4M.asm +; +; $Id: VBoxBiosAlternative386.asm $ +; Compiler support routines. +; +; +; +; Copyright (C) 2012-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; + +; +; Source file: __U4D.asm +; +; $Id: VBoxBiosAlternative386.asm $ +; Compiler support routines. +; +; +; +; Copyright (C) 2012-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; + +; +; Source file: __U8RS.asm +; +; $Id: VBoxBiosAlternative386.asm $ +; Compiler support routines. +; +; +; +; Copyright (C) 2012-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; + +; +; Source file: __U8LS.asm +; +; $Id: VBoxBiosAlternative386.asm $ +; Compiler support routines. +; +; +; +; Copyright (C) 2012-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; + +; +; Source file: fmemset.asm +; +; $Id: VBoxBiosAlternative386.asm $ +; Compiler support routines. +; +; +; +; Copyright (C) 2012-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; + +; +; Source file: fmemcpy.asm +; +; $Id: VBoxBiosAlternative386.asm $ +; Compiler support routines. +; +; +; +; Copyright (C) 2012-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; + +; +; Source file: pcibio32.asm +; +; $Id: VBoxBiosAlternative386.asm $ +; BIOS32 service directory and 32-bit PCI BIOS entry point +; +; +; +; Copyright (C) 2006-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; -------------------------------------------------------------------- + +; +; Source file: apm_pm.asm +; +; $Id: +; Protected-mode APM implementation. +; +; +; +; Copyright (C) 2006-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; + +; +; Source file: orgs.asm +; +; $Id: VBoxBiosAlternative386.asm $ +; ??? +; +; +; +; Copyright (C) 2006-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; -------------------------------------------------------------------- +; +; This code is based on: +; +; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment +; +; Copyright (C) 2002 MandrakeSoft S.A. +; +; MandrakeSoft S.A. +; 43, rue d'Aboukir +; 75002 Paris - France +; http://www.linux-mandrake.com/ +; http://www.mandrakesoft.com/ +; +; This library is free software; you can redistribute it and/or +; modify it under the terms of the GNU Lesser General Public +; License as published by the Free Software Foundation; either +; version 2 of the License, or (at your option) any later version. +; +; This library is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +; Lesser General Public License for more details. +; +; You should have received a copy of the GNU Lesser General Public +; License along with this library; if not, write to the Free Software +; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +; + +; +; Source file: pci32.c +; +; $Id: VBoxBiosAlternative386.asm $ +; 32-bit PCI BIOS wrapper. +; +; +; +; Copyright (C) 2004-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + + + + +section _DATA progbits vstart=0x0 align=1 ; size=0xb0 class=DATA group=DGROUP + ; disGetNextSymbol 0xf0000 LB 0xb0 -> off=0x0 cb=000000000000005b uValue=00000000000f0000 '_fd_parm' +_fd_parm: ; 0xf0000 LB 0x5b + db 0dfh, 002h, 025h, 002h, 009h, 02ah, 0ffh, 050h, 0f6h, 00fh, 008h, 027h, 080h, 0dfh, 002h, 025h + db 002h, 009h, 02ah, 0ffh, 050h, 0f6h, 00fh, 008h, 027h, 040h, 0dfh, 002h, 025h, 002h, 00fh, 01bh + db 0ffh, 054h, 0f6h, 00fh, 008h, 04fh, 000h, 0dfh, 002h, 025h, 002h, 009h, 02ah, 0ffh, 050h, 0f6h + db 00fh, 008h, 04fh, 080h, 0afh, 002h, 025h, 002h, 012h, 01bh, 0ffh, 06ch, 0f6h, 00fh, 008h, 04fh + db 000h, 0afh, 002h, 025h, 002h, 024h, 01bh, 0ffh, 054h, 0f6h, 00fh, 008h, 04fh, 0c0h, 0afh, 002h + db 025h, 002h, 0ffh, 01bh, 0ffh, 054h, 0f6h, 00fh, 008h, 0ffh, 000h + ; disGetNextSymbol 0xf005b LB 0x55 -> off=0x0 cb=000000000000000f uValue=00000000000f005b '_fd_map' +_fd_map: ; 0xf005b LB 0xf + db 001h, 000h, 002h, 002h, 003h, 003h, 004h, 004h, 005h, 005h, 00eh, 006h, 00fh, 006h, 000h + ; disGetNextSymbol 0xf006a LB 0x46 -> off=0x0 cb=000000000000000c uValue=00000000000f006a '_pktacc' +_pktacc: ; 0xf006a LB 0xc + db 000h, 000h, 000h, 000h, 000h, 000h, 032h, 02ch, 0b3h, 080h, 026h, 090h + ; disGetNextSymbol 0xf0076 LB 0x3a -> off=0x0 cb=000000000000000c uValue=00000000000f0076 '_softrst' +_softrst: ; 0xf0076 LB 0xc + db 000h, 000h, 000h, 000h, 000h, 000h, 011h, 02fh, 07dh, 03ch, 07dh, 03ch + ; disGetNextSymbol 0xf0082 LB 0x2e -> off=0x0 cb=000000000000002e uValue=00000000000f0082 '_dskacc' +_dskacc: ; 0xf0082 LB 0x2e + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 022h, 02bh, 0d7h, 02bh, 000h, 000h, 000h, 000h + db 0fdh, 07eh, 0d8h, 07fh, 0fch, 08eh, 0a2h, 08fh, 000h, 000h, 000h, 000h, 000h, 000h, 05fh, 033h + db 032h, 05fh, 000h, 0dah, 00fh, 000h, 000h, 001h, 0f3h, 000h, 000h, 000h, 000h, 000h + +section CONST progbits vstart=0xb0 align=1 ; size=0xcf0 class=DATA group=DGROUP + ; disGetNextSymbol 0xf00b0 LB 0xcf0 -> off=0xcf0 cb=0000000000000000 uValue=00000000000f0da0 'bios_cvs_version_string' + db 'CPUID EDX: 0x%lx', 00ah, 000h + db 'NMI Handler called', 00ah, 000h + db 'INT18: BOOT FAILURE', 00ah, 000h + db '%s', 00ah, 000h, 000h + db 'FATAL: ', 000h + db 'bios_printf: unknown %ll format', 00ah, 000h + db 'bios_printf: unknown format', 00ah, 000h + db 'ata-detect: Failed to detect ATA device', 00ah, 000h + db 'ata%d-%d: PCHS=%u/%u/%u LCHS=%u/%u/%u', 00ah, 000h + db 'ata-detect: Failed to detect ATAPI device', 00ah, 000h + db ' slave', 000h + db 'master', 000h + db 'ata%d %s: ', 000h + db '%c', 000h + db ' ATA-%d Hard-Disk (%lu MBytes)', 00ah, 000h + db ' ATAPI-%d CD-ROM/DVD-ROM', 00ah, 000h + db ' ATAPI-%d Device', 00ah, 000h + db 'ata%d %s: Unknown device', 00ah, 000h + db 'ata_cmd_packet', 000h + db '%s: DATA_OUT not supported yet', 00ah, 000h + db 'set_diskette_current_cyl: drive > 1', 00ah, 000h + db 'int13_diskette_function', 000h + db '%s: drive>1 || head>1 ...', 00ah, 000h + db '%s: ctrl not ready', 00ah, 000h + db '%s: write error', 00ah, 000h + db '%s: bad floppy type', 00ah, 000h + db '%s: unsupported AH=%02x', 00ah, 000h, 000h + db 'int13_eltorito', 000h + db '%s: call with AX=%04x not implemented.', 00ah, 000h + db '%s: unsupported AH=%02x', 00ah, 000h + db 'int13_cdemu', 000h + db '%s: function %02x, emulation not active for DL= %02x', 00ah, 000h + db '%s: function %02x, error %02x !', 00ah, 000h + db '%s: function %02x. Can', 027h, 't use 64bits lba', 00ah, 000h + db '%s: function %02x, status %02x !', 00ah, 000h + db '%s: function AH=%02x unsupported, returns fail', 00ah, 000h + db 'int13_cdrom', 000h + db '%s: function %02x, ELDL out of range %02x', 00ah, 000h + db '%s: function %02x, unmapped device for ELDL=%02x', 00ah, 000h, 000h + db 'Booting from %s...', 00ah, 000h + db 'Boot from %s failed', 00ah, 000h + db 'Boot from %s %d failed', 00ah, 000h + db 'No bootable medium found! System halted.', 00ah, 000h + db 'Could not read from the boot medium! System halted.', 00ah, 000h + db 'CDROM boot failure code : %04x', 00ah, 000h + db 'Boot : bseqnr=%d, bootseq=%x', 00dh, 00ah, 000h, 000h + db 'Keyboard error:%u', 00ah, 000h + db 'KBD: int09 handler: AL=0', 00ah, 000h + db 'KBD: int09h_handler(): unknown scancode read: 0x%02x!', 00ah, 000h + db 'KBD: int09h_handler(): scancode & asciicode are zero?', 00ah, 000h + db 'KBD: int16h: out of keyboard input', 00ah, 000h + db 'KBD: unsupported int 16h function %02x', 00ah, 000h + db 'AX=%04x BX=%04x CX=%04x DX=%04x ', 00ah, 000h, 000h + db 'int13_harddisk', 000h + db '%s: function %02x, ELDL out of range %02x', 00ah, 000h + db '%s: function %02x, unmapped device for ELDL=%02x', 00ah, 000h + db '%s: function %02x, count out of range!', 00ah, 000h + db '%s: function %02x, disk %02x, parameters out of range %04x/%04x/%04x!', 00ah + db 000h + db '%s: function %02x, error %02x !', 00ah, 000h + db 'format disk track called', 00ah, 000h + db '%s: function %02xh unimplemented, returns success', 00ah, 000h + db '%s: function %02xh unsupported, returns fail', 00ah, 000h + db 'int13_harddisk_ext', 000h + db '%s: function %02x. LBA out of range', 00ah, 000h, 000h + db 'int15: Func 24h, subfunc %02xh, A20 gate control not supported', 00ah, 000h + db '*** int 15h function AH=bf not yet supported!', 00ah, 000h + db 'EISA BIOS not present', 00ah, 000h + db '*** int 15h function AX=%04x, BX=%04x not yet supported!', 00ah, 000h + db 'sendmouse', 000h + db 'setkbdcomm', 000h + db 'Mouse reset returned %02x (should be ack)', 00ah, 000h + db 'Mouse status returned %02x (should be ack)', 00ah, 000h + db 'INT 15h C2 AL=6, BH=%02x', 00ah, 000h + db 'INT 15h C2 default case entered', 00ah, 000h, 000h + db 'Key pressed: %x', 00ah, 000h + db 00ah, 00ah, ' AHCI controller:', 000h + db 00ah, ' %d) Hard disk', 000h + db 00ah, 00ah, ' SCSI controller:', 000h + db ' IDE controller:', 000h + db 00ah, 00ah, 'AHCI controller:', 00ah, 000h + db 00ah, ' %d) ', 000h + db 'Secondary ', 000h + db 'Primary ', 000h + db 'Slave', 000h + db 'Master', 000h + db 'No hard disks found', 000h + db 00ah, 000h + db 'Press F12 to select boot device.', 00ah, 000h + db 00ah, 'VirtualBox temporary boot device selection', 00ah, 00ah, 'Detected H' + db 'ard disks:', 00ah, 00ah, 000h + db 00ah, 'Other boot devices:', 00ah, ' f) Floppy', 00ah, ' c) CD-ROM', 00ah + db ' l) LAN', 00ah, 00ah, ' b) Continue booting', 00ah, 000h + db 'Delaying boot for %d seconds:', 000h + db ' %d', 000h, 000h + db 'scsi_read_sectors', 000h + db '%s: device_id out of range %d', 00ah, 000h + db 'scsi_write_sectors', 000h + db 'scsi_cmd_packet', 000h + db '%s: DATA_OUT not supported yet', 00ah, 000h + db 'scsi_enumerate_attached_devices', 000h + db '%s: SCSI_INQUIRY failed', 00ah, 000h + db '%s: SCSI_READ_CAPACITY failed', 00ah, 000h + db 'Disk %d has an unsupported sector size of %u', 00ah, 000h + db 'SCSI %d-ID#%d: LCHS=%lu/%u/%u 0x%llx sectors', 00ah, 000h + db 'SCSI %d-ID#%d: CD/DVD-ROM', 00ah, 000h, 000h + db 'ahci_read_sectors', 000h + db '%s: device_id out of range %d', 00ah, 000h + db 'ahci_write_sectors', 000h + db 'ahci_cmd_packet', 000h + db '%s: DATA_OUT not supported yet', 00ah, 000h + db 'AHCI %d-P#%d: PCHS=%u/%u/%u LCHS=%u/%u/%u 0x%llx sectors', 00ah, 000h + db 'Standby', 000h + db 'Suspend', 000h + db 'Shutdown', 000h + db 'APM: Unsupported function AX=%04X BX=%04X called', 00ah, 000h, 000h + db 'PCI: Unsupported function AX=%04X BX=%04X called', 00ah, 000h + +section CONST2 progbits vstart=0xda0 align=1 ; size=0x3fa class=DATA group=DGROUP + ; disGetNextSymbol 0xf0da0 LB 0x3fa -> off=0x0 cb=0000000000000012 uValue=00000000000f0da0 'bios_cvs_version_string' +bios_cvs_version_string: ; 0xf0da0 LB 0x12 + db 'VirtualBox 6.0.4', 000h, 000h + ; disGetNextSymbol 0xf0db2 LB 0x3e8 -> off=0x0 cb=0000000000000008 uValue=00000000000f0db2 '_bios_prefix_string' +_bios_prefix_string: ; 0xf0db2 LB 0x8 + db 'BIOS: ', 000h, 000h + ; disGetNextSymbol 0xf0dba LB 0x3e0 -> off=0x0 cb=0000000000000006 uValue=00000000000f0dba 'isotag' +isotag: ; 0xf0dba LB 0x6 + db 'CD001', 000h + ; disGetNextSymbol 0xf0dc0 LB 0x3da -> off=0x0 cb=0000000000000018 uValue=00000000000f0dc0 'eltorito' +eltorito: ; 0xf0dc0 LB 0x18 + db 'EL TORITO SPECIFICATION', 000h + ; disGetNextSymbol 0xf0dd8 LB 0x3c2 -> off=0x0 cb=0000000000000028 uValue=00000000000f0dd8 'drivetypes' +drivetypes: ; 0xf0dd8 LB 0x28 + db 046h, 06ch, 06fh, 070h, 070h, 079h, 000h, 000h, 000h, 000h, 048h, 061h, 072h, 064h, 020h, 044h + db 069h, 073h, 06bh, 000h, 043h, 044h, 02dh, 052h, 04fh, 04dh, 000h, 000h, 000h, 000h, 04ch, 041h + db 04eh, 000h, 000h, 000h, 000h, 000h, 000h, 000h + ; disGetNextSymbol 0xf0e00 LB 0x39a -> off=0x0 cb=000000000000037a uValue=00000000000f0e00 'scan_to_scanascii' +scan_to_scanascii: ; 0xf0e00 LB 0x37a + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 01bh, 001h, 01bh, 001h, 01bh, 001h + db 000h, 001h, 000h, 000h, 031h, 002h, 021h, 002h, 000h, 000h, 000h, 078h, 000h, 000h, 032h, 003h + db 040h, 003h, 000h, 003h, 000h, 079h, 000h, 000h, 033h, 004h, 023h, 004h, 000h, 000h, 000h, 07ah + db 000h, 000h, 034h, 005h, 024h, 005h, 000h, 000h, 000h, 07bh, 000h, 000h, 035h, 006h, 025h, 006h + db 000h, 000h, 000h, 07ch, 000h, 000h, 036h, 007h, 05eh, 007h, 01eh, 007h, 000h, 07dh, 000h, 000h + db 037h, 008h, 026h, 008h, 000h, 000h, 000h, 07eh, 000h, 000h, 038h, 009h, 02ah, 009h, 000h, 000h + db 000h, 07fh, 000h, 000h, 039h, 00ah, 028h, 00ah, 000h, 000h, 000h, 080h, 000h, 000h, 030h, 00bh + db 029h, 00bh, 000h, 000h, 000h, 081h, 000h, 000h, 02dh, 00ch, 05fh, 00ch, 01fh, 00ch, 000h, 082h + db 000h, 000h, 03dh, 00dh, 02bh, 00dh, 000h, 000h, 000h, 083h, 000h, 000h, 008h, 00eh, 008h, 00eh + db 07fh, 00eh, 000h, 000h, 000h, 000h, 009h, 00fh, 000h, 00fh, 000h, 000h, 000h, 000h, 000h, 000h + db 071h, 010h, 051h, 010h, 011h, 010h, 000h, 010h, 040h, 000h, 077h, 011h, 057h, 011h, 017h, 011h + db 000h, 011h, 040h, 000h, 065h, 012h, 045h, 012h, 005h, 012h, 000h, 012h, 040h, 000h, 072h, 013h + db 052h, 013h, 012h, 013h, 000h, 013h, 040h, 000h, 074h, 014h, 054h, 014h, 014h, 014h, 000h, 014h + db 040h, 000h, 079h, 015h, 059h, 015h, 019h, 015h, 000h, 015h, 040h, 000h, 075h, 016h, 055h, 016h + db 015h, 016h, 000h, 016h, 040h, 000h, 069h, 017h, 049h, 017h, 009h, 017h, 000h, 017h, 040h, 000h + db 06fh, 018h, 04fh, 018h, 00fh, 018h, 000h, 018h, 040h, 000h, 070h, 019h, 050h, 019h, 010h, 019h + db 000h, 019h, 040h, 000h, 05bh, 01ah, 07bh, 01ah, 01bh, 01ah, 000h, 000h, 000h, 000h, 05dh, 01bh + db 07dh, 01bh, 01dh, 01bh, 000h, 000h, 000h, 000h, 00dh, 01ch, 00dh, 01ch, 00ah, 01ch, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 061h, 01eh, 041h, 01eh + db 001h, 01eh, 000h, 01eh, 040h, 000h, 073h, 01fh, 053h, 01fh, 013h, 01fh, 000h, 01fh, 040h, 000h + db 064h, 020h, 044h, 020h, 004h, 020h, 000h, 020h, 040h, 000h, 066h, 021h, 046h, 021h, 006h, 021h + db 000h, 021h, 040h, 000h, 067h, 022h, 047h, 022h, 007h, 022h, 000h, 022h, 040h, 000h, 068h, 023h + db 048h, 023h, 008h, 023h, 000h, 023h, 040h, 000h, 06ah, 024h, 04ah, 024h, 00ah, 024h, 000h, 024h + db 040h, 000h, 06bh, 025h, 04bh, 025h, 00bh, 025h, 000h, 025h, 040h, 000h, 06ch, 026h, 04ch, 026h + db 00ch, 026h, 000h, 026h, 040h, 000h, 03bh, 027h, 03ah, 027h, 000h, 000h, 000h, 000h, 000h, 000h + db 027h, 028h, 022h, 028h, 000h, 000h, 000h, 000h, 000h, 000h, 060h, 029h, 07eh, 029h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 05ch, 02bh + db 07ch, 02bh, 01ch, 02bh, 000h, 000h, 000h, 000h, 07ah, 02ch, 05ah, 02ch, 01ah, 02ch, 000h, 02ch + db 040h, 000h, 078h, 02dh, 058h, 02dh, 018h, 02dh, 000h, 02dh, 040h, 000h, 063h, 02eh, 043h, 02eh + db 003h, 02eh, 000h, 02eh, 040h, 000h, 076h, 02fh, 056h, 02fh, 016h, 02fh, 000h, 02fh, 040h, 000h + db 062h, 030h, 042h, 030h, 002h, 030h, 000h, 030h, 040h, 000h, 06eh, 031h, 04eh, 031h, 00eh, 031h + db 000h, 031h, 040h, 000h, 06dh, 032h, 04dh, 032h, 00dh, 032h, 000h, 032h, 040h, 000h, 02ch, 033h + db 03ch, 033h, 000h, 000h, 000h, 000h, 000h, 000h, 02eh, 034h, 03eh, 034h, 000h, 000h, 000h, 000h + db 000h, 000h, 02fh, 035h, 03fh, 035h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 02ah, 037h, 02ah, 037h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 020h, 039h, 020h, 039h, 020h, 039h + db 020h, 039h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 03bh + db 000h, 054h, 000h, 05eh, 000h, 068h, 000h, 000h, 000h, 03ch, 000h, 055h, 000h, 05fh, 000h, 069h + db 000h, 000h, 000h, 03dh, 000h, 056h, 000h, 060h, 000h, 06ah, 000h, 000h, 000h, 03eh, 000h, 057h + db 000h, 061h, 000h, 06bh, 000h, 000h, 000h, 03fh, 000h, 058h, 000h, 062h, 000h, 06ch, 000h, 000h + db 000h, 040h, 000h, 059h, 000h, 063h, 000h, 06dh, 000h, 000h, 000h, 041h, 000h, 05ah, 000h, 064h + db 000h, 06eh, 000h, 000h, 000h, 042h, 000h, 05bh, 000h, 065h, 000h, 06fh, 000h, 000h, 000h, 043h + db 000h, 05ch, 000h, 066h, 000h, 070h, 000h, 000h, 000h, 044h, 000h, 05dh, 000h, 067h, 000h, 071h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 047h, 037h, 047h, 000h, 077h, 000h, 000h, 020h, 000h + db 000h, 048h, 038h, 048h, 000h, 000h, 000h, 000h, 020h, 000h, 000h, 049h, 039h, 049h, 000h, 084h + db 000h, 000h, 020h, 000h, 02dh, 04ah, 02dh, 04ah, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 04bh + db 034h, 04bh, 000h, 073h, 000h, 000h, 020h, 000h, 000h, 04ch, 035h, 04ch, 000h, 000h, 000h, 000h + db 020h, 000h, 000h, 04dh, 036h, 04dh, 000h, 074h, 000h, 000h, 020h, 000h, 02bh, 04eh, 02bh, 04eh + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 04fh, 031h, 04fh, 000h, 075h, 000h, 000h, 020h, 000h + db 000h, 050h, 032h, 050h, 000h, 000h, 000h, 000h, 020h, 000h, 000h, 051h, 033h, 051h, 000h, 076h + db 000h, 000h, 020h, 000h, 000h, 052h, 030h, 052h, 000h, 000h, 000h, 000h, 020h, 000h, 000h, 053h + db 02eh, 053h, 000h, 000h, 000h, 000h, 020h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 05ch, 056h, 07ch, 056h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 085h, 000h, 087h, 000h, 089h, 000h, 08bh, 000h, 000h + db 000h, 086h, 000h, 088h, 000h, 08ah, 000h, 08ch, 000h, 000h + ; disGetNextSymbol 0xf117a LB 0x20 -> off=0x0 cb=0000000000000020 uValue=00000000000f117a 'panic_msg_keyb_buffer_full' +panic_msg_keyb_buffer_full: ; 0xf117a LB 0x20 + db '%s: keyboard input buffer full', 00ah, 000h + + ; Padding 0x466 bytes at 0xf119a + times 1126 db 0 + +section _TEXT progbits vstart=0x1600 align=1 ; size=0x8a45 class=CODE group=AUTO + ; disGetNextSymbol 0xf1600 LB 0x8a45 -> off=0x0 cb=0000000000000050 uValue=00000000000f0000 'rom_scan' +rom_scan: ; 0xf1600 LB 0x50 + push bp ; 55 ; 0xf1600 post.c:73 + mov bp, sp ; 89 e5 ; 0xf1601 + push bx ; 53 ; 0xf1603 + push cx ; 51 ; 0xf1604 + push si ; 56 ; 0xf1605 + push ax ; 50 ; 0xf1606 + push ax ; 50 ; 0xf1607 + mov bx, ax ; 89 c3 ; 0xf1608 + mov cx, dx ; 89 d1 ; 0xf160a + cmp bx, cx ; 39 cb ; 0xf160c post.c:80 + jnc short 01648h ; 73 38 ; 0xf160e + xor si, si ; 31 f6 ; 0xf1610 post.c:81 + mov dx, bx ; 89 da ; 0xf1612 + mov es, bx ; 8e c3 ; 0xf1614 post.c:83 + cmp word [es:si], 0aa55h ; 26 81 3c 55 aa ; 0xf1616 + jne short 01642h ; 75 25 ; 0xf161b + mov word [bp-008h], bx ; 89 5e f8 ; 0xf161d post.c:89 + mov word [bp-00ah], strict word 00003h ; c7 46 f6 03 00 ; 0xf1620 + call far [bp-00ah] ; ff 5e f6 ; 0xf1625 post.c:90 + cli ; fa ; 0xf1628 post.c:91 + mov es, bx ; 8e c3 ; 0xf1629 post.c:95 + mov al, byte [es:si+002h] ; 26 8a 44 02 ; 0xf162b + add AL, strict byte 003h ; 04 03 ; 0xf162f + and AL, strict byte 0fch ; 24 fc ; 0xf1631 + xor ah, ah ; 30 e4 ; 0xf1633 post.c:96 + cwd ; 99 ; 0xf1635 + sal dx, 002h ; c1 e2 02 ; 0xf1636 + db 01bh, 0c2h + ; sbb ax, dx ; 1b c2 ; 0xf1639 + sar ax, 002h ; c1 f8 02 ; 0xf163b + add bx, ax ; 01 c3 ; 0xf163e + jmp short 0160ch ; eb ca ; 0xf1640 post.c:98 + add bx, 00080h ; 81 c3 80 00 ; 0xf1642 post.c:100 + jmp short 0160ch ; eb c4 ; 0xf1646 post.c:102 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf1648 post.c:103 + pop si ; 5e ; 0xf164b + pop cx ; 59 ; 0xf164c + pop bx ; 5b ; 0xf164d + pop bp ; 5d ; 0xf164e + retn ; c3 ; 0xf164f + ; disGetNextSymbol 0xf1650 LB 0x89f5 -> off=0x0 cb=0000000000000042 uValue=00000000000f0050 'is_cpuid_supported' +is_cpuid_supported: ; 0xf1650 LB 0x42 + push bp ; 55 ; 0xf1650 post.c:110 + mov bp, sp ; 89 e5 ; 0xf1651 + push bx ; 53 ; 0xf1653 + push cx ; 51 ; 0xf1654 + push dx ; 52 ; 0xf1655 + pushfd ; 66 9c ; 0xf1656 post.c:114 + pop edx ; 66 5a ; 0xf1658 + db 08bh, 0c2h + ; mov ax, dx ; 8b c2 ; 0xf165a + shr edx, 010h ; 66 c1 ea 10 ; 0xf165c + mov bx, ax ; 89 c3 ; 0xf1660 + mov cx, dx ; 89 d1 ; 0xf1662 + xor dl, 020h ; 80 f2 20 ; 0xf1664 post.c:115 + sal edx, 010h ; 66 c1 e2 10 ; 0xf1667 post.c:116 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf166b + push edx ; 66 52 ; 0xf166d + popfd ; 66 9d ; 0xf166f + pushfd ; 66 9c ; 0xf1671 post.c:117 + pop edx ; 66 5a ; 0xf1673 + db 08bh, 0c2h + ; mov ax, dx ; 8b c2 ; 0xf1675 + shr edx, 010h ; 66 c1 ea 10 ; 0xf1677 + cmp cx, dx ; 39 d1 ; 0xf167b post.c:118 + jne short 01683h ; 75 04 ; 0xf167d + cmp bx, ax ; 39 c3 ; 0xf167f + je short 01688h ; 74 05 ; 0xf1681 + mov ax, strict word 00001h ; b8 01 00 ; 0xf1683 + jmp short 0168ah ; eb 02 ; 0xf1686 + xor ax, ax ; 31 c0 ; 0xf1688 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf168a post.c:119 + pop dx ; 5a ; 0xf168d + pop cx ; 59 ; 0xf168e + pop bx ; 5b ; 0xf168f + pop bp ; 5d ; 0xf1690 + retn ; c3 ; 0xf1691 + ; disGetNextSymbol 0xf1692 LB 0x89b3 -> off=0x0 cb=00000000000000c4 uValue=00000000000f0092 'apic_setup' +apic_setup: ; 0xf1692 LB 0xc4 + push bp ; 55 ; 0xf1692 post.c:144 + mov bp, sp ; 89 e5 ; 0xf1693 + push si ; 56 ; 0xf1695 + push di ; 57 ; 0xf1696 + sub sp, strict byte 00012h ; 83 ec 12 ; 0xf1697 + call 01650h ; e8 b3 ff ; 0xf169a post.c:153 + test ax, ax ; 85 c0 ; 0xf169d + je near 0174fh ; 0f 84 ac 00 ; 0xf169f + mov ax, strict word 00001h ; b8 01 00 ; 0xf16a3 post.c:158 + xor dx, dx ; 31 d2 ; 0xf16a6 + push SS ; 16 ; 0xf16a8 + pop ES ; 07 ; 0xf16a9 + lea di, [bp-016h] ; 8d 7e ea ; 0xf16aa + sal edx, 010h ; 66 c1 e2 10 ; 0xf16ad + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf16b1 + db 066h, 08bh, 0c2h + ; mov eax, edx ; 66 8b c2 ; 0xf16b3 + cpuid ; 0f a2 ; 0xf16b6 + db 066h, 026h, 089h, 005h + ; mov dword [es:di], eax ; 66 26 89 05 ; 0xf16b8 + db 066h, 026h, 089h, 05dh, 004h + ; mov dword [es:di+004h], ebx ; 66 26 89 5d 04 ; 0xf16bc + db 066h, 026h, 089h, 04dh, 008h + ; mov dword [es:di+008h], ecx ; 66 26 89 4d 08 ; 0xf16c1 + db 066h, 026h, 089h, 055h, 00ch + ; mov dword [es:di+00ch], edx ; 66 26 89 55 0c ; 0xf16c6 + mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf16cb post.c:159 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf16ce + push dx ; 52 ; 0xf16d1 + push ax ; 50 ; 0xf16d2 + push 000b0h ; 68 b0 00 ; 0xf16d3 + push strict byte 00004h ; 6a 04 ; 0xf16d6 + call 01a14h ; e8 39 03 ; 0xf16d8 + add sp, strict byte 00008h ; 83 c4 08 ; 0xf16db + mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf16de post.c:160 + test ah, 002h ; f6 c4 02 ; 0xf16e1 + je short 0174fh ; 74 69 ; 0xf16e4 + mov ax, strict word 00078h ; b8 78 00 ; 0xf16e6 post.c:165 + call 01756h ; e8 6a 00 ; 0xf16e9 + xor si, si ; 31 f6 ; 0xf16ec post.c:167 + xor di, di ; 31 ff ; 0xf16ee + cmp AL, strict byte 002h ; 3c 02 ; 0xf16f0 post.c:168 + jne short 016f9h ; 75 05 ; 0xf16f2 + mov di, 00400h ; bf 00 04 ; 0xf16f4 post.c:169 + jmp short 01708h ; eb 0f ; 0xf16f7 post.c:170 + test al, al ; 84 c0 ; 0xf16f9 + jne short 01700h ; 75 03 ; 0xf16fb + mov si, 00800h ; be 00 08 ; 0xf16fd post.c:171 + test di, di ; 85 ff ; 0xf1700 post.c:175 + jne short 01708h ; 75 04 ; 0xf1702 + test si, si ; 85 f6 ; 0xf1704 + je short 0174fh ; 74 47 ; 0xf1706 + mov ax, strict word 0001bh ; b8 1b 00 ; 0xf1708 post.c:176 + xor cx, cx ; 31 c9 ; 0xf170b + sal ecx, 010h ; 66 c1 e1 10 ; 0xf170d + db 08bh, 0c8h + ; mov cx, ax ; 8b c8 ; 0xf1711 + rdmsr ; 0f 32 ; 0xf1713 + xchg edx, eax ; 66 92 ; 0xf1715 + db 08bh, 0d8h + ; mov bx, ax ; 8b d8 ; 0xf1717 + shr eax, 010h ; 66 c1 e8 10 ; 0xf1719 + db 08bh, 0cah + ; mov cx, dx ; 8b ca ; 0xf171d + shr edx, 010h ; 66 c1 ea 10 ; 0xf171f + xchg dx, cx ; 87 ca ; 0xf1723 + mov word [bp-006h], si ; 89 76 fa ; 0xf1725 post.c:177 + not word [bp-006h] ; f7 56 fa ; 0xf1728 + and dx, word [bp-006h] ; 23 56 fa ; 0xf172b + or dx, di ; 09 fa ; 0xf172e post.c:178 + mov si, strict word 0001bh ; be 1b 00 ; 0xf1730 post.c:179 + xor di, di ; 31 ff ; 0xf1733 + sal eax, 010h ; 66 c1 e0 10 ; 0xf1735 + db 08bh, 0c3h + ; mov ax, bx ; 8b c3 ; 0xf1739 + xchg dx, cx ; 87 ca ; 0xf173b + sal edx, 010h ; 66 c1 e2 10 ; 0xf173d + db 08bh, 0d1h + ; mov dx, cx ; 8b d1 ; 0xf1741 + xchg edx, eax ; 66 92 ; 0xf1743 + db 08bh, 0cfh + ; mov cx, di ; 8b cf ; 0xf1745 + sal ecx, 010h ; 66 c1 e1 10 ; 0xf1747 + db 08bh, 0ceh + ; mov cx, si ; 8b ce ; 0xf174b + wrmsr ; 0f 30 ; 0xf174d + lea sp, [bp-004h] ; 8d 66 fc ; 0xf174f post.c:181 + pop di ; 5f ; 0xf1752 + pop si ; 5e ; 0xf1753 + pop bp ; 5d ; 0xf1754 + retn ; c3 ; 0xf1755 + ; disGetNextSymbol 0xf1756 LB 0x88ef -> off=0x0 cb=000000000000001d uValue=00000000000f0156 'inb_cmos' +inb_cmos: ; 0xf1756 LB 0x1d + push bp ; 55 ; 0xf1756 bios.c:65 + mov bp, sp ; 89 e5 ; 0xf1757 + push dx ; 52 ; 0xf1759 + mov AH, strict byte 070h ; b4 70 ; 0xf175a bios.c:67 + cmp AL, strict byte 080h ; 3c 80 ; 0xf175c bios.c:69 + jc short 01762h ; 72 02 ; 0xf175e + mov AH, strict byte 072h ; b4 72 ; 0xf1760 bios.c:70 + movzx dx, ah ; 0f b6 d4 ; 0xf1762 bios.c:71 + out DX, AL ; ee ; 0xf1765 + movzx dx, ah ; 0f b6 d4 ; 0xf1766 bios.c:72 + inc dx ; 42 ; 0xf1769 + in AL, DX ; ec ; 0xf176a + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf176b + lea sp, [bp-002h] ; 8d 66 fe ; 0xf176d bios.c:73 + pop dx ; 5a ; 0xf1770 + pop bp ; 5d ; 0xf1771 + retn ; c3 ; 0xf1772 + ; disGetNextSymbol 0xf1773 LB 0x88d2 -> off=0x0 cb=000000000000001f uValue=00000000000f0173 'outb_cmos' +outb_cmos: ; 0xf1773 LB 0x1f + push bp ; 55 ; 0xf1773 bios.c:75 + mov bp, sp ; 89 e5 ; 0xf1774 + push bx ; 53 ; 0xf1776 + mov ah, dl ; 88 d4 ; 0xf1777 + mov BL, strict byte 070h ; b3 70 ; 0xf1779 bios.c:77 + cmp AL, strict byte 080h ; 3c 80 ; 0xf177b bios.c:79 + jc short 01781h ; 72 02 ; 0xf177d + mov BL, strict byte 072h ; b3 72 ; 0xf177f bios.c:80 + movzx dx, bl ; 0f b6 d3 ; 0xf1781 bios.c:81 + out DX, AL ; ee ; 0xf1784 + movzx dx, bl ; 0f b6 d3 ; 0xf1785 bios.c:82 + inc dx ; 42 ; 0xf1788 + mov al, ah ; 88 e0 ; 0xf1789 + out DX, AL ; ee ; 0xf178b + lea sp, [bp-002h] ; 8d 66 fe ; 0xf178c bios.c:83 + pop bx ; 5b ; 0xf178f + pop bp ; 5d ; 0xf1790 + retn ; c3 ; 0xf1791 + ; disGetNextSymbol 0xf1792 LB 0x88b3 -> off=0x0 cb=000000000000006a uValue=00000000000f0192 'dummy_isr_function' +dummy_isr_function: ; 0xf1792 LB 0x6a + push bp ; 55 ; 0xf1792 bios.c:85 + mov bp, sp ; 89 e5 ; 0xf1793 + push ax ; 50 ; 0xf1795 + mov CH, strict byte 0ffh ; b5 ff ; 0xf1796 bios.c:93 + mov AL, strict byte 00bh ; b0 0b ; 0xf1798 bios.c:95 + mov dx, strict word 00020h ; ba 20 00 ; 0xf179a + out DX, AL ; ee ; 0xf179d + in AL, DX ; ec ; 0xf179e bios.c:96 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf179f + mov bx, ax ; 89 c3 ; 0xf17a1 + mov cl, al ; 88 c1 ; 0xf17a3 + test al, al ; 84 c0 ; 0xf17a5 bios.c:97 + je short 017edh ; 74 44 ; 0xf17a7 + mov AL, strict byte 00bh ; b0 0b ; 0xf17a9 bios.c:98 + mov dx, 000a0h ; ba a0 00 ; 0xf17ab + out DX, AL ; ee ; 0xf17ae + in AL, DX ; ec ; 0xf17af bios.c:99 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf17b0 + mov word [bp-002h], ax ; 89 46 fe ; 0xf17b2 + cmp byte [bp-002h], 000h ; 80 7e fe 00 ; 0xf17b5 bios.c:100 + je short 017d3h ; 74 18 ; 0xf17b9 + mov dx, 000a1h ; ba a1 00 ; 0xf17bb bios.c:101 + in AL, DX ; ec ; 0xf17be + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf17bf + movzx bx, al ; 0f b6 d8 ; 0xf17c1 bios.c:102 + movzx ax, byte [bp-002h] ; 0f b6 46 fe ; 0xf17c4 + or ax, bx ; 09 d8 ; 0xf17c8 + out DX, AL ; ee ; 0xf17ca + mov AL, strict byte 020h ; b0 20 ; 0xf17cb bios.c:103 + mov dx, 000a0h ; ba a0 00 ; 0xf17cd + out DX, AL ; ee ; 0xf17d0 + jmp short 017e5h ; eb 12 ; 0xf17d1 bios.c:104 + mov dx, strict word 00021h ; ba 21 00 ; 0xf17d3 bios.c:105 + in AL, DX ; ec ; 0xf17d6 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf17d7 + and cl, 0fbh ; 80 e1 fb ; 0xf17d9 bios.c:106 + movzx bx, al ; 0f b6 d8 ; 0xf17dc bios.c:107 + movzx ax, cl ; 0f b6 c1 ; 0xf17df + or ax, bx ; 09 d8 ; 0xf17e2 + out DX, AL ; ee ; 0xf17e4 + mov AL, strict byte 020h ; b0 20 ; 0xf17e5 bios.c:109 + mov dx, strict word 00020h ; ba 20 00 ; 0xf17e7 + out DX, AL ; ee ; 0xf17ea + mov ch, cl ; 88 cd ; 0xf17eb bios.c:110 + mov bx, strict word 0006bh ; bb 6b 00 ; 0xf17ed bios.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf17f0 + mov es, ax ; 8e c0 ; 0xf17f3 + mov byte [es:bx], ch ; 26 88 2f ; 0xf17f5 + mov sp, bp ; 89 ec ; 0xf17f8 bios.c:113 + pop bp ; 5d ; 0xf17fa + retn ; c3 ; 0xf17fb + ; disGetNextSymbol 0xf17fc LB 0x8849 -> off=0x0 cb=0000000000000012 uValue=00000000000f01fc 'nmi_handler_msg' +nmi_handler_msg: ; 0xf17fc LB 0x12 + push bp ; 55 ; 0xf17fc bios.c:116 + mov bp, sp ; 89 e5 ; 0xf17fd + push 000c2h ; 68 c2 00 ; 0xf17ff bios.c:118 + push strict byte 00007h ; 6a 07 ; 0xf1802 + call 01a14h ; e8 0d 02 ; 0xf1804 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf1807 + mov sp, bp ; 89 ec ; 0xf180a bios.c:119 + pop bp ; 5d ; 0xf180c + retn ; c3 ; 0xf180d + ; disGetNextSymbol 0xf180e LB 0x8837 -> off=0x0 cb=0000000000000012 uValue=00000000000f020e 'int18_panic_msg' +int18_panic_msg: ; 0xf180e LB 0x12 + push bp ; 55 ; 0xf180e bios.c:121 + mov bp, sp ; 89 e5 ; 0xf180f + push 000d6h ; 68 d6 00 ; 0xf1811 bios.c:123 + push strict byte 00007h ; 6a 07 ; 0xf1814 + call 01a14h ; e8 fb 01 ; 0xf1816 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf1819 + mov sp, bp ; 89 ec ; 0xf181c bios.c:124 + pop bp ; 5d ; 0xf181e + retn ; c3 ; 0xf181f + ; disGetNextSymbol 0xf1820 LB 0x8825 -> off=0x0 cb=0000000000000020 uValue=00000000000f0220 'log_bios_start' +log_bios_start: ; 0xf1820 LB 0x20 + push bp ; 55 ; 0xf1820 bios.c:126 + mov bp, sp ; 89 e5 ; 0xf1821 + mov bx, 00db2h ; bb b2 0d ; 0xf1823 bios.c:131 + mov cx, ds ; 8c d9 ; 0xf1826 + mov ax, strict word 00004h ; b8 04 00 ; 0xf1828 + call 019d3h ; e8 a5 01 ; 0xf182b + push 00da0h ; 68 a0 0d ; 0xf182e + push 000ebh ; 68 eb 00 ; 0xf1831 + push strict byte 00004h ; 6a 04 ; 0xf1834 + call 01a14h ; e8 db 01 ; 0xf1836 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf1839 + mov sp, bp ; 89 ec ; 0xf183c bios.c:132 + pop bp ; 5d ; 0xf183e + retn ; c3 ; 0xf183f + ; disGetNextSymbol 0xf1840 LB 0x8805 -> off=0x0 cb=0000000000000027 uValue=00000000000f0240 'print_bios_banner' +print_bios_banner: ; 0xf1840 LB 0x27 + push bp ; 55 ; 0xf1840 bios.c:151 + mov bp, sp ; 89 e5 ; 0xf1841 + mov bx, strict word 00072h ; bb 72 00 ; 0xf1843 bios.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf1846 + mov es, ax ; 8e c0 ; 0xf1849 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf184b + mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf184e bios.c:53 + cmp ax, 01234h ; 3d 34 12 ; 0xf1853 bios.c:157 + jne short 01860h ; 75 08 ; 0xf1856 + mov AL, strict byte 003h ; b0 03 ; 0xf1858 bios.c:160 + mov AH, strict byte 000h ; b4 00 ; 0xf185a + int 010h ; cd 10 ; 0xf185c + jmp short 01863h ; eb 03 ; 0xf185e bios.c:161 + call 07a98h ; e8 35 62 ; 0xf1860 bios.c:164 + mov sp, bp ; 89 ec ; 0xf1863 bios.c:191 + pop bp ; 5d ; 0xf1865 + retn ; c3 ; 0xf1866 + ; disGetNextSymbol 0xf1867 LB 0x87de -> off=0x0 cb=000000000000003b uValue=00000000000f0267 'send' +send: ; 0xf1867 LB 0x3b + push bp ; 55 ; 0xf1867 print.c:72 + mov bp, sp ; 89 e5 ; 0xf1868 + push bx ; 53 ; 0xf186a + push cx ; 51 ; 0xf186b + mov bx, ax ; 89 c3 ; 0xf186c + mov cl, dl ; 88 d1 ; 0xf186e + test AL, strict byte 008h ; a8 08 ; 0xf1870 print.c:80 + je short 0187ah ; 74 06 ; 0xf1872 + mov al, dl ; 88 d0 ; 0xf1874 print.c:81 + mov dx, 00403h ; ba 03 04 ; 0xf1876 + out DX, AL ; ee ; 0xf1879 + test bl, 004h ; f6 c3 04 ; 0xf187a print.c:82 + je short 01885h ; 74 06 ; 0xf187d + mov al, cl ; 88 c8 ; 0xf187f print.c:83 + mov dx, 00504h ; ba 04 05 ; 0xf1881 + out DX, AL ; ee ; 0xf1884 + test bl, 002h ; f6 c3 02 ; 0xf1885 print.c:85 + je short 0189bh ; 74 11 ; 0xf1888 + cmp cl, 00ah ; 80 f9 0a ; 0xf188a print.c:86 + jne short 01895h ; 75 06 ; 0xf188d + mov AL, strict byte 00dh ; b0 0d ; 0xf188f print.c:87 + mov AH, strict byte 00eh ; b4 0e ; 0xf1891 + int 010h ; cd 10 ; 0xf1893 + mov al, cl ; 88 c8 ; 0xf1895 print.c:88 + mov AH, strict byte 00eh ; b4 0e ; 0xf1897 + int 010h ; cd 10 ; 0xf1899 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf189b print.c:90 + pop cx ; 59 ; 0xf189e + pop bx ; 5b ; 0xf189f + pop bp ; 5d ; 0xf18a0 + retn ; c3 ; 0xf18a1 + ; disGetNextSymbol 0xf18a2 LB 0x87a3 -> off=0x0 cb=000000000000005f uValue=00000000000f02a2 'put_int' +put_int: ; 0xf18a2 LB 0x5f + push bp ; 55 ; 0xf18a2 print.c:92 + mov bp, sp ; 89 e5 ; 0xf18a3 + push si ; 56 ; 0xf18a5 + push di ; 57 ; 0xf18a6 + push ax ; 50 ; 0xf18a7 + push ax ; 50 ; 0xf18a8 + mov si, ax ; 89 c6 ; 0xf18a9 + mov word [bp-008h], dx ; 89 56 f8 ; 0xf18ab + mov di, strict word 0000ah ; bf 0a 00 ; 0xf18ae print.c:94 + mov ax, dx ; 89 d0 ; 0xf18b1 + cwd ; 99 ; 0xf18b3 + idiv di ; f7 ff ; 0xf18b4 + mov word [bp-006h], ax ; 89 46 fa ; 0xf18b6 + test ax, ax ; 85 c0 ; 0xf18b9 print.c:95 + je short 018c7h ; 74 0a ; 0xf18bb + dec bx ; 4b ; 0xf18bd print.c:96 + mov dx, ax ; 89 c2 ; 0xf18be + mov ax, si ; 89 f0 ; 0xf18c0 + call 018a2h ; e8 dd ff ; 0xf18c2 + jmp short 018e2h ; eb 1b ; 0xf18c5 print.c:97 + dec bx ; 4b ; 0xf18c7 print.c:98 + test bx, bx ; 85 db ; 0xf18c8 + jle short 018d6h ; 7e 0a ; 0xf18ca + mov dx, strict word 00020h ; ba 20 00 ; 0xf18cc print.c:99 + mov ax, si ; 89 f0 ; 0xf18cf + call 01867h ; e8 93 ff ; 0xf18d1 + jmp short 018c7h ; eb f1 ; 0xf18d4 + test cx, cx ; 85 c9 ; 0xf18d6 print.c:100 + je short 018e2h ; 74 08 ; 0xf18d8 + mov dx, strict word 0002dh ; ba 2d 00 ; 0xf18da print.c:101 + mov ax, si ; 89 f0 ; 0xf18dd + call 01867h ; e8 85 ff ; 0xf18df + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf18e2 print.c:103 + mov DL, strict byte 00ah ; b2 0a ; 0xf18e5 + mul dl ; f6 e2 ; 0xf18e7 + mov dl, byte [bp-008h] ; 8a 56 f8 ; 0xf18e9 + sub dl, al ; 28 c2 ; 0xf18ec + mov al, dl ; 88 d0 ; 0xf18ee + add AL, strict byte 030h ; 04 30 ; 0xf18f0 + movzx dx, al ; 0f b6 d0 ; 0xf18f2 + mov ax, si ; 89 f0 ; 0xf18f5 + call 01867h ; e8 6d ff ; 0xf18f7 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf18fa print.c:104 + pop di ; 5f ; 0xf18fd + pop si ; 5e ; 0xf18fe + pop bp ; 5d ; 0xf18ff + retn ; c3 ; 0xf1900 + ; disGetNextSymbol 0xf1901 LB 0x8744 -> off=0x0 cb=0000000000000060 uValue=00000000000f0301 'put_uint' +put_uint: ; 0xf1901 LB 0x60 + push bp ; 55 ; 0xf1901 print.c:106 + mov bp, sp ; 89 e5 ; 0xf1902 + push si ; 56 ; 0xf1904 + push di ; 57 ; 0xf1905 + push ax ; 50 ; 0xf1906 + push ax ; 50 ; 0xf1907 + mov si, ax ; 89 c6 ; 0xf1908 + mov word [bp-008h], dx ; 89 56 f8 ; 0xf190a + mov ax, dx ; 89 d0 ; 0xf190d print.c:108 + xor dx, dx ; 31 d2 ; 0xf190f + mov di, strict word 0000ah ; bf 0a 00 ; 0xf1911 + div di ; f7 f7 ; 0xf1914 + mov word [bp-006h], ax ; 89 46 fa ; 0xf1916 + test ax, ax ; 85 c0 ; 0xf1919 print.c:109 + je short 01927h ; 74 0a ; 0xf191b + dec bx ; 4b ; 0xf191d print.c:110 + mov dx, ax ; 89 c2 ; 0xf191e + mov ax, si ; 89 f0 ; 0xf1920 + call 01901h ; e8 dc ff ; 0xf1922 + jmp short 01942h ; eb 1b ; 0xf1925 print.c:111 + dec bx ; 4b ; 0xf1927 print.c:112 + test bx, bx ; 85 db ; 0xf1928 + jle short 01936h ; 7e 0a ; 0xf192a + mov dx, strict word 00020h ; ba 20 00 ; 0xf192c print.c:113 + mov ax, si ; 89 f0 ; 0xf192f + call 01867h ; e8 33 ff ; 0xf1931 + jmp short 01927h ; eb f1 ; 0xf1934 + test cx, cx ; 85 c9 ; 0xf1936 print.c:114 + je short 01942h ; 74 08 ; 0xf1938 + mov dx, strict word 0002dh ; ba 2d 00 ; 0xf193a print.c:115 + mov ax, si ; 89 f0 ; 0xf193d + call 01867h ; e8 25 ff ; 0xf193f + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf1942 print.c:117 + mov DL, strict byte 00ah ; b2 0a ; 0xf1945 + mul dl ; f6 e2 ; 0xf1947 + mov dl, byte [bp-008h] ; 8a 56 f8 ; 0xf1949 + sub dl, al ; 28 c2 ; 0xf194c + mov al, dl ; 88 d0 ; 0xf194e + add AL, strict byte 030h ; 04 30 ; 0xf1950 + movzx dx, al ; 0f b6 d0 ; 0xf1952 + mov ax, si ; 89 f0 ; 0xf1955 + call 01867h ; e8 0d ff ; 0xf1957 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf195a print.c:118 + pop di ; 5f ; 0xf195d + pop si ; 5e ; 0xf195e + pop bp ; 5d ; 0xf195f + retn ; c3 ; 0xf1960 + ; disGetNextSymbol 0xf1961 LB 0x86e4 -> off=0x0 cb=0000000000000072 uValue=00000000000f0361 'put_luint' +put_luint: ; 0xf1961 LB 0x72 + push bp ; 55 ; 0xf1961 print.c:120 + mov bp, sp ; 89 e5 ; 0xf1962 + push si ; 56 ; 0xf1964 + push di ; 57 ; 0xf1965 + push ax ; 50 ; 0xf1966 + push ax ; 50 ; 0xf1967 + mov si, ax ; 89 c6 ; 0xf1968 + mov word [bp-006h], bx ; 89 5e fa ; 0xf196a + mov di, dx ; 89 d7 ; 0xf196d + mov ax, bx ; 89 d8 ; 0xf196f print.c:122 + mov dx, cx ; 89 ca ; 0xf1971 + mov bx, strict word 0000ah ; bb 0a 00 ; 0xf1973 + xor cx, cx ; 31 c9 ; 0xf1976 + call 09f50h ; e8 d5 85 ; 0xf1978 + mov word [bp-008h], ax ; 89 46 f8 ; 0xf197b + mov cx, dx ; 89 d1 ; 0xf197e + mov dx, ax ; 89 c2 ; 0xf1980 print.c:123 + or dx, cx ; 09 ca ; 0xf1982 + je short 01995h ; 74 0f ; 0xf1984 + push word [bp+004h] ; ff 76 04 ; 0xf1986 print.c:124 + lea dx, [di-001h] ; 8d 55 ff ; 0xf1989 + mov bx, ax ; 89 c3 ; 0xf198c + mov ax, si ; 89 f0 ; 0xf198e + call 01961h ; e8 ce ff ; 0xf1990 + jmp short 019b2h ; eb 1d ; 0xf1993 print.c:125 + dec di ; 4f ; 0xf1995 print.c:126 + test di, di ; 85 ff ; 0xf1996 + jle short 019a4h ; 7e 0a ; 0xf1998 + mov dx, strict word 00020h ; ba 20 00 ; 0xf199a print.c:127 + mov ax, si ; 89 f0 ; 0xf199d + call 01867h ; e8 c5 fe ; 0xf199f + jmp short 01995h ; eb f1 ; 0xf19a2 + cmp word [bp+004h], strict byte 00000h ; 83 7e 04 00 ; 0xf19a4 print.c:128 + je short 019b2h ; 74 08 ; 0xf19a8 + mov dx, strict word 0002dh ; ba 2d 00 ; 0xf19aa print.c:129 + mov ax, si ; 89 f0 ; 0xf19ad + call 01867h ; e8 b5 fe ; 0xf19af + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf19b2 print.c:131 + mov DL, strict byte 00ah ; b2 0a ; 0xf19b5 + mul dl ; f6 e2 ; 0xf19b7 + mov dl, byte [bp-006h] ; 8a 56 fa ; 0xf19b9 + sub dl, al ; 28 c2 ; 0xf19bc + mov al, dl ; 88 d0 ; 0xf19be + add AL, strict byte 030h ; 04 30 ; 0xf19c0 + movzx dx, al ; 0f b6 d0 ; 0xf19c2 + mov ax, si ; 89 f0 ; 0xf19c5 + call 01867h ; e8 9d fe ; 0xf19c7 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf19ca print.c:132 + pop di ; 5f ; 0xf19cd + pop si ; 5e ; 0xf19ce + pop bp ; 5d ; 0xf19cf + retn 00002h ; c2 02 00 ; 0xf19d0 + ; disGetNextSymbol 0xf19d3 LB 0x8672 -> off=0x0 cb=0000000000000021 uValue=00000000000f03d3 'put_str' +put_str: ; 0xf19d3 LB 0x21 + push bp ; 55 ; 0xf19d3 print.c:134 + mov bp, sp ; 89 e5 ; 0xf19d4 + push dx ; 52 ; 0xf19d6 + push si ; 56 ; 0xf19d7 + mov si, ax ; 89 c6 ; 0xf19d8 + mov es, cx ; 8e c1 ; 0xf19da print.c:138 + mov dl, byte [es:bx] ; 26 8a 17 ; 0xf19dc + test dl, dl ; 84 d2 ; 0xf19df + je short 019edh ; 74 0a ; 0xf19e1 + xor dh, dh ; 30 f6 ; 0xf19e3 print.c:139 + mov ax, si ; 89 f0 ; 0xf19e5 + call 01867h ; e8 7d fe ; 0xf19e7 + inc bx ; 43 ; 0xf19ea print.c:140 + jmp short 019dah ; eb ed ; 0xf19eb print.c:141 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf19ed print.c:142 + pop si ; 5e ; 0xf19f0 + pop dx ; 5a ; 0xf19f1 + pop bp ; 5d ; 0xf19f2 + retn ; c3 ; 0xf19f3 + ; disGetNextSymbol 0xf19f4 LB 0x8651 -> off=0x0 cb=0000000000000020 uValue=00000000000f03f4 'put_str_near' +put_str_near: ; 0xf19f4 LB 0x20 + push bp ; 55 ; 0xf19f4 print.c:144 + mov bp, sp ; 89 e5 ; 0xf19f5 + push bx ; 53 ; 0xf19f7 + push cx ; 51 ; 0xf19f8 + mov cx, ax ; 89 c1 ; 0xf19f9 + mov bx, dx ; 89 d3 ; 0xf19fb + mov dl, byte [bx] ; 8a 17 ; 0xf19fd print.c:148 + test dl, dl ; 84 d2 ; 0xf19ff + je short 01a0dh ; 74 0a ; 0xf1a01 + xor dh, dh ; 30 f6 ; 0xf1a03 print.c:149 + mov ax, cx ; 89 c8 ; 0xf1a05 + call 01867h ; e8 5d fe ; 0xf1a07 + inc bx ; 43 ; 0xf1a0a print.c:150 + jmp short 019fdh ; eb f0 ; 0xf1a0b print.c:151 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf1a0d print.c:152 + pop cx ; 59 ; 0xf1a10 + pop bx ; 5b ; 0xf1a11 + pop bp ; 5d ; 0xf1a12 + retn ; c3 ; 0xf1a13 + ; disGetNextSymbol 0xf1a14 LB 0x8631 -> off=0x0 cb=000000000000033d uValue=00000000000f0414 'bios_printf' +bios_printf: ; 0xf1a14 LB 0x33d + push bp ; 55 ; 0xf1a14 print.c:165 + mov bp, sp ; 89 e5 ; 0xf1a15 + push bx ; 53 ; 0xf1a17 + push cx ; 51 ; 0xf1a18 + push dx ; 52 ; 0xf1a19 + push si ; 56 ; 0xf1a1a + push di ; 57 ; 0xf1a1b + sub sp, strict byte 0001ch ; 83 ec 1c ; 0xf1a1c + lea bx, [bp+008h] ; 8d 5e 08 ; 0xf1a1f print.c:173 + mov word [bp-016h], bx ; 89 5e ea ; 0xf1a22 + mov [bp-014h], ss ; 8c 56 ec ; 0xf1a25 + xor bx, bx ; 31 db ; 0xf1a28 print.c:175 + xor di, di ; 31 ff ; 0xf1a2a print.c:176 + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1a2c print.c:178 + and ax, strict word 00007h ; 25 07 00 ; 0xf1a2f + cmp ax, strict word 00007h ; 3d 07 00 ; 0xf1a32 + jne short 01a42h ; 75 0b ; 0xf1a35 + push 000f0h ; 68 f0 00 ; 0xf1a37 print.c:179 + push strict byte 00002h ; 6a 02 ; 0xf1a3a + call 01a14h ; e8 d5 ff ; 0xf1a3c + add sp, strict byte 00004h ; 83 c4 04 ; 0xf1a3f + mov si, word [bp+006h] ; 8b 76 06 ; 0xf1a42 print.c:182 + mov dl, byte [si] ; 8a 14 ; 0xf1a45 + test dl, dl ; 84 d2 ; 0xf1a47 + je near 01d35h ; 0f 84 e8 02 ; 0xf1a49 + cmp dl, 025h ; 80 fa 25 ; 0xf1a4d print.c:183 + jne short 01a5ah ; 75 08 ; 0xf1a50 + mov bx, strict word 00001h ; bb 01 00 ; 0xf1a52 print.c:184 + xor di, di ; 31 ff ; 0xf1a55 print.c:185 + jmp near 01d2fh ; e9 d5 02 ; 0xf1a57 print.c:187 + test bx, bx ; 85 db ; 0xf1a5a + je near 01d27h ; 0f 84 c7 02 ; 0xf1a5c + cmp dl, 030h ; 80 fa 30 ; 0xf1a60 print.c:188 + jc short 01a78h ; 72 13 ; 0xf1a63 + cmp dl, 039h ; 80 fa 39 ; 0xf1a65 + jnbe short 01a78h ; 77 0e ; 0xf1a68 + movzx ax, dl ; 0f b6 c2 ; 0xf1a6a print.c:189 + imul di, di, strict byte 0000ah ; 6b ff 0a ; 0xf1a6d + sub ax, strict word 00030h ; 2d 30 00 ; 0xf1a70 + add di, ax ; 01 c7 ; 0xf1a73 + jmp near 01d2fh ; e9 b7 02 ; 0xf1a75 print.c:191 + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1a78 print.c:192 + mov word [bp-014h], ax ; 89 46 ec ; 0xf1a7b + add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1a7e + les bx, [bp-016h] ; c4 5e ea ; 0xf1a82 + mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf1a85 + mov word [bp-012h], ax ; 89 46 ee ; 0xf1a89 + cmp dl, 078h ; 80 fa 78 ; 0xf1a8c print.c:193 + je short 01a96h ; 74 05 ; 0xf1a8f + cmp dl, 058h ; 80 fa 58 ; 0xf1a91 + jne short 01aech ; 75 56 ; 0xf1a94 + test di, di ; 85 ff ; 0xf1a96 print.c:194 + jne short 01a9dh ; 75 03 ; 0xf1a98 + mov di, strict word 00004h ; bf 04 00 ; 0xf1a9a print.c:195 + cmp dl, 078h ; 80 fa 78 ; 0xf1a9d print.c:196 + jne short 01aa9h ; 75 07 ; 0xf1aa0 + mov word [bp-00eh], strict word 00061h ; c7 46 f2 61 00 ; 0xf1aa2 print.c:197 + jmp short 01aaeh ; eb 05 ; 0xf1aa7 print.c:198 + mov word [bp-00eh], strict word 00041h ; c7 46 f2 41 00 ; 0xf1aa9 print.c:199 + lea ax, [di-001h] ; 8d 45 ff ; 0xf1aae print.c:200 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf1ab1 + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf1ab4 + test ax, ax ; 85 c0 ; 0xf1ab7 + jl near 01d23h ; 0f 8c 66 02 ; 0xf1ab9 + mov cx, ax ; 89 c1 ; 0xf1abd print.c:201 + sal cx, 002h ; c1 e1 02 ; 0xf1abf + mov ax, word [bp-012h] ; 8b 46 ee ; 0xf1ac2 + shr ax, CL ; d3 e8 ; 0xf1ac5 + xor ah, ah ; 30 e4 ; 0xf1ac7 + and AL, strict byte 00fh ; 24 0f ; 0xf1ac9 + cmp ax, strict word 00009h ; 3d 09 00 ; 0xf1acb print.c:202 + jnbe short 01ad7h ; 77 07 ; 0xf1ace + mov dx, ax ; 89 c2 ; 0xf1ad0 + add dx, strict byte 00030h ; 83 c2 30 ; 0xf1ad2 + jmp short 01adfh ; eb 08 ; 0xf1ad5 + sub ax, strict word 0000ah ; 2d 0a 00 ; 0xf1ad7 + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf1ada + add dx, ax ; 01 c2 ; 0xf1add + xor dh, dh ; 30 f6 ; 0xf1adf + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1ae1 + call 01867h ; e8 80 fd ; 0xf1ae4 + dec word [bp-00ch] ; ff 4e f4 ; 0xf1ae7 print.c:203 + jmp short 01ab4h ; eb c8 ; 0xf1aea + cmp dl, 075h ; 80 fa 75 ; 0xf1aec print.c:205 + jne short 01b00h ; 75 0f ; 0xf1aef + xor cx, cx ; 31 c9 ; 0xf1af1 print.c:206 + mov bx, di ; 89 fb ; 0xf1af3 + mov dx, ax ; 89 c2 ; 0xf1af5 + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1af7 + call 01901h ; e8 04 fe ; 0xf1afa + jmp near 01d23h ; e9 23 02 ; 0xf1afd print.c:208 + cmp dl, 06ch ; 80 fa 6c ; 0xf1b00 + jne near 01be2h ; 0f 85 db 00 ; 0xf1b03 + mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf1b07 + cmp dl, byte [bx+001h] ; 3a 57 01 ; 0xf1b0a + jne near 01be2h ; 0f 85 d1 00 ; 0xf1b0d + add word [bp+006h], strict byte 00002h ; 83 46 06 02 ; 0xf1b11 print.c:212 + mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf1b15 print.c:213 + mov dl, byte [bx] ; 8a 17 ; 0xf1b18 + mov word [bp-026h], ax ; 89 46 da ; 0xf1b1a print.c:215 + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1b1d print.c:216 + mov word [bp-014h], ax ; 89 46 ec ; 0xf1b20 + add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1b23 + les bx, [bp-016h] ; c4 5e ea ; 0xf1b27 + mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf1b2a + mov word [bp-024h], ax ; 89 46 dc ; 0xf1b2e + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1b31 print.c:217 + mov word [bp-014h], ax ; 89 46 ec ; 0xf1b34 + add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1b37 + les bx, [bp-016h] ; c4 5e ea ; 0xf1b3b + mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf1b3e + mov word [bp-022h], ax ; 89 46 de ; 0xf1b42 + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1b45 print.c:218 + mov word [bp-014h], ax ; 89 46 ec ; 0xf1b48 + add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1b4b + les bx, [bp-016h] ; c4 5e ea ; 0xf1b4f + mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf1b52 + mov word [bp-020h], ax ; 89 46 e0 ; 0xf1b56 + cmp dl, 078h ; 80 fa 78 ; 0xf1b59 print.c:219 + je short 01b63h ; 74 05 ; 0xf1b5c + cmp dl, 058h ; 80 fa 58 ; 0xf1b5e + jne short 01bd4h ; 75 71 ; 0xf1b61 + test di, di ; 85 ff ; 0xf1b63 print.c:220 + jne short 01b6ah ; 75 03 ; 0xf1b65 + mov di, strict word 00010h ; bf 10 00 ; 0xf1b67 print.c:221 + cmp dl, 078h ; 80 fa 78 ; 0xf1b6a print.c:222 + jne short 01b76h ; 75 07 ; 0xf1b6d + mov word [bp-00eh], strict word 00061h ; c7 46 f2 61 00 ; 0xf1b6f print.c:223 + jmp short 01b7bh ; eb 05 ; 0xf1b74 print.c:224 + mov word [bp-00eh], strict word 00041h ; c7 46 f2 41 00 ; 0xf1b76 print.c:225 + lea ax, [di-001h] ; 8d 45 ff ; 0xf1b7b print.c:226 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf1b7e + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf1b81 + test ax, ax ; 85 c0 ; 0xf1b84 + jl near 01d23h ; 0f 8c 99 01 ; 0xf1b86 + sal ax, 002h ; c1 e0 02 ; 0xf1b8a print.c:227 + mov word [bp-01eh], ax ; 89 46 e2 ; 0xf1b8d + xor ax, ax ; 31 c0 ; 0xf1b90 + mov word [bp-01ch], ax ; 89 46 e4 ; 0xf1b92 + mov word [bp-01ah], ax ; 89 46 e6 ; 0xf1b95 + mov word [bp-018h], ax ; 89 46 e8 ; 0xf1b98 + mov ax, word [bp-020h] ; 8b 46 e0 ; 0xf1b9b + mov bx, word [bp-022h] ; 8b 5e de ; 0xf1b9e + mov cx, word [bp-024h] ; 8b 4e dc ; 0xf1ba1 + mov dx, word [bp-026h] ; 8b 56 da ; 0xf1ba4 + mov si, word [bp-01eh] ; 8b 76 e2 ; 0xf1ba7 + call 09f90h ; e8 e3 83 ; 0xf1baa + mov ax, dx ; 89 d0 ; 0xf1bad + xor ah, dh ; 30 f4 ; 0xf1baf + and AL, strict byte 00fh ; 24 0f ; 0xf1bb1 + cmp ax, strict word 00009h ; 3d 09 00 ; 0xf1bb3 print.c:228 + jnbe short 01bbfh ; 77 07 ; 0xf1bb6 + mov dx, ax ; 89 c2 ; 0xf1bb8 + add dx, strict byte 00030h ; 83 c2 30 ; 0xf1bba + jmp short 01bc7h ; eb 08 ; 0xf1bbd + sub ax, strict word 0000ah ; 2d 0a 00 ; 0xf1bbf + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf1bc2 + add dx, ax ; 01 c2 ; 0xf1bc5 + xor dh, dh ; 30 f6 ; 0xf1bc7 + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1bc9 + call 01867h ; e8 98 fc ; 0xf1bcc + dec word [bp-00ch] ; ff 4e f4 ; 0xf1bcf print.c:229 + jmp short 01b81h ; eb ad ; 0xf1bd2 + push 000f8h ; 68 f8 00 ; 0xf1bd4 print.c:231 + push strict byte 00007h ; 6a 07 ; 0xf1bd7 + call 01a14h ; e8 38 fe ; 0xf1bd9 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf1bdc + jmp near 01d23h ; e9 41 01 ; 0xf1bdf print.c:234 + lea bx, [di-001h] ; 8d 5d ff ; 0xf1be2 + cmp dl, 06ch ; 80 fa 6c ; 0xf1be5 + jne near 01cabh ; 0f 85 bf 00 ; 0xf1be8 + inc word [bp+006h] ; ff 46 06 ; 0xf1bec print.c:235 + mov si, word [bp+006h] ; 8b 76 06 ; 0xf1bef print.c:236 + mov dl, byte [si] ; 8a 14 ; 0xf1bf2 + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1bf4 print.c:237 + mov word [bp-014h], ax ; 89 46 ec ; 0xf1bf7 + add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1bfa + les si, [bp-016h] ; c4 76 ea ; 0xf1bfe + mov ax, word [es:si-002h] ; 26 8b 44 fe ; 0xf1c01 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf1c05 + cmp dl, 064h ; 80 fa 64 ; 0xf1c08 print.c:238 + jne short 01c3ah ; 75 2d ; 0xf1c0b + test byte [bp-00fh], 080h ; f6 46 f1 80 ; 0xf1c0d print.c:239 + je short 01c28h ; 74 15 ; 0xf1c11 + push strict byte 00001h ; 6a 01 ; 0xf1c13 print.c:240 + mov ax, word [bp-012h] ; 8b 46 ee ; 0xf1c15 + mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf1c18 + neg cx ; f7 d9 ; 0xf1c1b + neg ax ; f7 d8 ; 0xf1c1d + sbb cx, strict byte 00000h ; 83 d9 00 ; 0xf1c1f + mov dx, bx ; 89 da ; 0xf1c22 + mov bx, ax ; 89 c3 ; 0xf1c24 + jmp short 01c31h ; eb 09 ; 0xf1c26 print.c:241 + push strict byte 00000h ; 6a 00 ; 0xf1c28 print.c:242 + mov bx, word [bp-012h] ; 8b 5e ee ; 0xf1c2a + mov dx, di ; 89 fa ; 0xf1c2d + mov cx, ax ; 89 c1 ; 0xf1c2f + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1c31 + call 01961h ; e8 2a fd ; 0xf1c34 + jmp near 01d23h ; e9 e9 00 ; 0xf1c37 print.c:244 + cmp dl, 075h ; 80 fa 75 ; 0xf1c3a + jne short 01c41h ; 75 02 ; 0xf1c3d + jmp short 01c28h ; eb e7 ; 0xf1c3f + cmp dl, 078h ; 80 fa 78 ; 0xf1c41 print.c:247 + je short 01c4dh ; 74 07 ; 0xf1c44 + cmp dl, 058h ; 80 fa 58 ; 0xf1c46 + jne near 01d23h ; 0f 85 d6 00 ; 0xf1c49 + test di, di ; 85 ff ; 0xf1c4d print.c:249 + jne short 01c54h ; 75 03 ; 0xf1c4f + mov di, strict word 00008h ; bf 08 00 ; 0xf1c51 print.c:250 + cmp dl, 078h ; 80 fa 78 ; 0xf1c54 print.c:251 + jne short 01c60h ; 75 07 ; 0xf1c57 + mov word [bp-00eh], strict word 00061h ; c7 46 f2 61 00 ; 0xf1c59 print.c:252 + jmp short 01c65h ; eb 05 ; 0xf1c5e print.c:253 + mov word [bp-00eh], strict word 00041h ; c7 46 f2 41 00 ; 0xf1c60 print.c:254 + lea ax, [di-001h] ; 8d 45 ff ; 0xf1c65 print.c:255 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf1c68 + cmp word [bp-00ch], strict byte 00000h ; 83 7e f4 00 ; 0xf1c6b + jl near 01d23h ; 0f 8c b0 00 ; 0xf1c6f + mov ax, word [bp-012h] ; 8b 46 ee ; 0xf1c73 print.c:256 + mov cx, word [bp-00ch] ; 8b 4e f4 ; 0xf1c76 + sal cx, 002h ; c1 e1 02 ; 0xf1c79 + mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf1c7c + jcxz 01c87h ; e3 06 ; 0xf1c7f + shr dx, 1 ; d1 ea ; 0xf1c81 + rcr ax, 1 ; d1 d8 ; 0xf1c83 + loop 01c81h ; e2 fa ; 0xf1c85 + and ax, strict word 0000fh ; 25 0f 00 ; 0xf1c87 + cmp ax, strict word 00009h ; 3d 09 00 ; 0xf1c8a print.c:257 + jnbe short 01c96h ; 77 07 ; 0xf1c8d + mov dx, ax ; 89 c2 ; 0xf1c8f + add dx, strict byte 00030h ; 83 c2 30 ; 0xf1c91 + jmp short 01c9eh ; eb 08 ; 0xf1c94 + sub ax, strict word 0000ah ; 2d 0a 00 ; 0xf1c96 + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf1c99 + add dx, ax ; 01 c2 ; 0xf1c9c + xor dh, dh ; 30 f6 ; 0xf1c9e + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1ca0 + call 01867h ; e8 c1 fb ; 0xf1ca3 + dec word [bp-00ch] ; ff 4e f4 ; 0xf1ca6 print.c:258 + jmp short 01c6bh ; eb c0 ; 0xf1ca9 + cmp dl, 064h ; 80 fa 64 ; 0xf1cab print.c:261 + jne short 01ccfh ; 75 1f ; 0xf1cae + test byte [bp-011h], 080h ; f6 46 ef 80 ; 0xf1cb0 print.c:262 + je short 01cc0h ; 74 0a ; 0xf1cb4 + mov dx, word [bp-012h] ; 8b 56 ee ; 0xf1cb6 print.c:263 + neg dx ; f7 da ; 0xf1cb9 + mov cx, strict word 00001h ; b9 01 00 ; 0xf1cbb + jmp short 01cc7h ; eb 07 ; 0xf1cbe print.c:264 + xor cx, cx ; 31 c9 ; 0xf1cc0 print.c:265 + mov bx, di ; 89 fb ; 0xf1cc2 + mov dx, word [bp-012h] ; 8b 56 ee ; 0xf1cc4 + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1cc7 + call 018a2h ; e8 d5 fb ; 0xf1cca + jmp short 01d23h ; eb 54 ; 0xf1ccd print.c:267 + cmp dl, 073h ; 80 fa 73 ; 0xf1ccf + jne short 01ce1h ; 75 0d ; 0xf1cd2 + mov cx, ds ; 8c d9 ; 0xf1cd4 print.c:268 + mov bx, word [bp-012h] ; 8b 5e ee ; 0xf1cd6 + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1cd9 + call 019d3h ; e8 f4 fc ; 0xf1cdc + jmp short 01d23h ; eb 42 ; 0xf1cdf print.c:270 + cmp dl, 053h ; 80 fa 53 ; 0xf1ce1 + jne short 01d07h ; 75 21 ; 0xf1ce4 + mov ax, word [bp-012h] ; 8b 46 ee ; 0xf1ce6 print.c:271 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf1ce9 + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1cec print.c:272 + mov word [bp-014h], ax ; 89 46 ec ; 0xf1cef + add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1cf2 + les bx, [bp-016h] ; c4 5e ea ; 0xf1cf6 + mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf1cf9 + mov word [bp-012h], ax ; 89 46 ee ; 0xf1cfd + mov bx, ax ; 89 c3 ; 0xf1d00 print.c:273 + mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf1d02 + jmp short 01cd9h ; eb d2 ; 0xf1d05 + cmp dl, 063h ; 80 fa 63 ; 0xf1d07 print.c:275 + jne short 01d18h ; 75 0c ; 0xf1d0a + movzx dx, byte [bp-012h] ; 0f b6 56 ee ; 0xf1d0c print.c:276 + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1d10 + call 01867h ; e8 51 fb ; 0xf1d13 + jmp short 01d23h ; eb 0b ; 0xf1d16 print.c:278 + push 00119h ; 68 19 01 ; 0xf1d18 print.c:279 + push strict byte 00007h ; 6a 07 ; 0xf1d1b + call 01a14h ; e8 f4 fc ; 0xf1d1d + add sp, strict byte 00004h ; 83 c4 04 ; 0xf1d20 + xor bx, bx ; 31 db ; 0xf1d23 print.c:280 + jmp short 01d2fh ; eb 08 ; 0xf1d25 print.c:283 + xor dh, dh ; 30 f6 ; 0xf1d27 print.c:284 + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1d29 + call 01867h ; e8 38 fb ; 0xf1d2c + inc word [bp+006h] ; ff 46 06 ; 0xf1d2f print.c:286 + jmp near 01a42h ; e9 0d fd ; 0xf1d32 print.c:287 + xor ax, ax ; 31 c0 ; 0xf1d35 print.c:288 + mov word [bp-016h], ax ; 89 46 ea ; 0xf1d37 + mov word [bp-014h], ax ; 89 46 ec ; 0xf1d3a + test byte [bp+004h], 001h ; f6 46 04 01 ; 0xf1d3d print.c:289 + je short 01d47h ; 74 04 ; 0xf1d41 + cli ; fa ; 0xf1d43 print.c:291 + hlt ; f4 ; 0xf1d44 print.c:292 + jmp short 01d44h ; eb fd ; 0xf1d45 + lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf1d47 print.c:294 + pop di ; 5f ; 0xf1d4a + pop si ; 5e ; 0xf1d4b + pop dx ; 5a ; 0xf1d4c + pop cx ; 59 ; 0xf1d4d + pop bx ; 5b ; 0xf1d4e + pop bp ; 5d ; 0xf1d4f + retn ; c3 ; 0xf1d50 + ; disGetNextSymbol 0xf1d51 LB 0x82f4 -> off=0x0 cb=00000000000000cc uValue=00000000000f0751 'ata_init' +ata_init: ; 0xf1d51 LB 0xcc + push si ; 56 ; 0xf1d51 ata.c:97 + push bp ; 55 ; 0xf1d52 + mov bp, sp ; 89 e5 ; 0xf1d53 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf1d55 ata.c:48 + mov si, strict word 00040h ; be 40 00 ; 0xf1d58 + mov es, si ; 8e c6 ; 0xf1d5b + mov bx, word [es:bx] ; 26 8b 1f ; 0xf1d5d + mov si, 00122h ; be 22 01 ; 0xf1d60 ata.c:49 + mov dx, bx ; 89 da ; 0xf1d63 + xor al, al ; 30 c0 ; 0xf1d65 ata.c:105 + jmp short 01d6dh ; eb 04 ; 0xf1d67 + cmp AL, strict byte 004h ; 3c 04 ; 0xf1d69 + jnc short 01d91h ; 73 24 ; 0xf1d6b + movzx bx, al ; 0f b6 d8 ; 0xf1d6d ata.c:106 + imul bx, bx, strict byte 00006h ; 6b db 06 ; 0xf1d70 + mov es, dx ; 8e c2 ; 0xf1d73 + add bx, si ; 01 f3 ; 0xf1d75 + mov byte [es:bx+00204h], 000h ; 26 c6 87 04 02 00 ; 0xf1d77 + db 066h, 026h, 0c7h, 087h, 006h, 002h, 000h, 000h, 000h, 000h + ; mov dword [es:bx+00206h], strict dword 000000000h ; 66 26 c7 87 06 02 00 00 00 00; 0xf1d7d ata.c:107 + mov byte [es:bx+00205h], 000h ; 26 c6 87 05 02 00 ; 0xf1d87 ata.c:109 + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf1d8d ata.c:110 + jmp short 01d69h ; eb d8 ; 0xf1d8f + xor al, al ; 30 c0 ; 0xf1d91 ata.c:113 + jmp short 01d99h ; eb 04 ; 0xf1d93 + cmp AL, strict byte 008h ; 3c 08 ; 0xf1d95 + jnc short 01dedh ; 73 54 ; 0xf1d97 + movzx bx, al ; 0f b6 d8 ; 0xf1d99 ata.c:114 + imul bx, bx, strict byte 0001ch ; 6b db 1c ; 0xf1d9c + mov es, dx ; 8e c2 ; 0xf1d9f + add bx, si ; 01 f3 ; 0xf1da1 + db 066h, 026h, 0c7h, 047h, 022h, 000h, 000h, 000h, 000h + ; mov dword [es:bx+022h], strict dword 000000000h ; 66 26 c7 47 22 00 00 00 00; 0xf1da3 + mov byte [es:bx+026h], 000h ; 26 c6 47 26 00 ; 0xf1dac ata.c:118 + mov word [es:bx+028h], 00200h ; 26 c7 47 28 00 02 ; 0xf1db1 ata.c:119 + mov byte [es:bx+027h], 000h ; 26 c6 47 27 00 ; 0xf1db7 ata.c:120 + db 066h, 026h, 0c7h, 047h, 02ah, 000h, 000h, 000h, 000h + ; mov dword [es:bx+02ah], strict dword 000000000h ; 66 26 c7 47 2a 00 00 00 00; 0xf1dbc ata.c:121 + db 066h, 026h, 0c7h, 047h, 02eh, 000h, 000h, 000h, 000h + ; mov dword [es:bx+02eh], strict dword 000000000h ; 66 26 c7 47 2e 00 00 00 00; 0xf1dc5 ata.c:123 + db 066h, 026h, 0c7h, 047h, 032h, 000h, 000h, 000h, 000h + ; mov dword [es:bx+032h], strict dword 000000000h ; 66 26 c7 47 32 00 00 00 00; 0xf1dce ata.c:125 + db 066h, 026h, 0c7h, 047h, 03ah, 000h, 000h, 000h, 000h + ; mov dword [es:bx+03ah], strict dword 000000000h ; 66 26 c7 47 3a 00 00 00 00; 0xf1dd7 ata.c:127 + db 066h, 026h, 0c7h, 047h, 036h, 000h, 000h, 000h, 000h + ; mov dword [es:bx+036h], strict dword 000000000h ; 66 26 c7 47 36 00 00 00 00; 0xf1de0 + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf1de9 ata.c:128 + jmp short 01d95h ; eb a8 ; 0xf1deb + xor al, al ; 30 c0 ; 0xf1ded ata.c:131 + jmp short 01df5h ; eb 04 ; 0xf1def + cmp AL, strict byte 010h ; 3c 10 ; 0xf1df1 + jnc short 01e0ch ; 73 17 ; 0xf1df3 + movzx bx, al ; 0f b6 d8 ; 0xf1df5 ata.c:132 + mov es, dx ; 8e c2 ; 0xf1df8 + add bx, si ; 01 f3 ; 0xf1dfa + mov byte [es:bx+001e3h], 010h ; 26 c6 87 e3 01 10 ; 0xf1dfc + mov byte [es:bx+001f4h], 010h ; 26 c6 87 f4 01 10 ; 0xf1e02 ata.c:133 + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf1e08 ata.c:134 + jmp short 01df1h ; eb e5 ; 0xf1e0a + mov es, dx ; 8e c2 ; 0xf1e0c ata.c:136 + mov byte [es:si+001e2h], 000h ; 26 c6 84 e2 01 00 ; 0xf1e0e + mov byte [es:si+001f3h], 000h ; 26 c6 84 f3 01 00 ; 0xf1e14 ata.c:137 + pop bp ; 5d ; 0xf1e1a ata.c:138 + pop si ; 5e ; 0xf1e1b + retn ; c3 ; 0xf1e1c + ; disGetNextSymbol 0xf1e1d LB 0x8228 -> off=0x0 cb=00000000000000dd uValue=00000000000f081d 'ata_reset' +ata_reset: ; 0xf1e1d LB 0xdd + push bp ; 55 ; 0xf1e1d ata.c:146 + mov bp, sp ; 89 e5 ; 0xf1e1e + push bx ; 53 ; 0xf1e20 + push cx ; 51 ; 0xf1e21 + push dx ; 52 ; 0xf1e22 + push si ; 56 ; 0xf1e23 + push di ; 57 ; 0xf1e24 + push ax ; 50 ; 0xf1e25 + push ax ; 50 ; 0xf1e26 + push ax ; 50 ; 0xf1e27 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf1e28 ata.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf1e2b + mov es, ax ; 8e c0 ; 0xf1e2e + mov ax, word [es:bx] ; 26 8b 07 ; 0xf1e30 + mov di, 00122h ; bf 22 01 ; 0xf1e33 ata.c:49 + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf1e36 + mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf1e39 ata.c:155 + shr dx, 1 ; d1 ea ; 0xf1e3c + mov dh, byte [bp-010h] ; 8a 76 f0 ; 0xf1e3e ata.c:156 + and dh, 001h ; 80 e6 01 ; 0xf1e41 + mov byte [bp-00ch], dh ; 88 76 f4 ; 0xf1e44 + xor dh, dh ; 30 f6 ; 0xf1e47 ata.c:158 + imul bx, dx, strict byte 00006h ; 6b da 06 ; 0xf1e49 + mov es, ax ; 8e c0 ; 0xf1e4c + add bx, di ; 01 fb ; 0xf1e4e + mov cx, word [es:bx+00206h] ; 26 8b 8f 06 02 ; 0xf1e50 + mov si, word [es:bx+00208h] ; 26 8b b7 08 02 ; 0xf1e55 ata.c:159 + lea dx, [si+006h] ; 8d 54 06 ; 0xf1e5a ata.c:164 + mov AL, strict byte 00eh ; b0 0e ; 0xf1e5d + out DX, AL ; ee ; 0xf1e5f + mov bx, 000ffh ; bb ff 00 ; 0xf1e60 ata.c:167 + dec bx ; 4b ; 0xf1e63 ata.c:168 + test bx, bx ; 85 db ; 0xf1e64 + jbe short 01e74h ; 76 0c ; 0xf1e66 + mov dx, cx ; 89 ca ; 0xf1e68 ata.c:169 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf1e6a + in AL, DX ; ec ; 0xf1e6d + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf1e6e + test AL, strict byte 080h ; a8 80 ; 0xf1e70 ata.c:170 + je short 01e63h ; 74 ef ; 0xf1e72 + lea dx, [si+006h] ; 8d 54 06 ; 0xf1e74 ata.c:175 + mov AL, strict byte 00ah ; b0 0a ; 0xf1e77 + out DX, AL ; ee ; 0xf1e79 + imul bx, word [bp-010h], strict byte 0001ch ; 6b 5e f0 1c ; 0xf1e7a ata.c:177 + mov es, [bp-00eh] ; 8e 46 f2 ; 0xf1e7e + add bx, di ; 01 fb ; 0xf1e81 + cmp byte [es:bx+022h], 000h ; 26 80 7f 22 00 ; 0xf1e83 + je short 01ed6h ; 74 4c ; 0xf1e88 + cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf1e8a ata.c:180 + je short 01e95h ; 74 05 ; 0xf1e8e + mov ax, 000b0h ; b8 b0 00 ; 0xf1e90 + jmp short 01e98h ; eb 03 ; 0xf1e93 + mov ax, 000a0h ; b8 a0 00 ; 0xf1e95 + mov dx, cx ; 89 ca ; 0xf1e98 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf1e9a + out DX, AL ; ee ; 0xf1e9d + mov dx, cx ; 89 ca ; 0xf1e9e ata.c:181 + inc dx ; 42 ; 0xf1ea0 + inc dx ; 42 ; 0xf1ea1 + in AL, DX ; ec ; 0xf1ea2 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf1ea3 + mov bx, ax ; 89 c3 ; 0xf1ea5 + mov dx, cx ; 89 ca ; 0xf1ea7 ata.c:182 + add dx, strict byte 00003h ; 83 c2 03 ; 0xf1ea9 + in AL, DX ; ec ; 0xf1eac + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf1ead + cmp bl, 001h ; 80 fb 01 ; 0xf1eaf ata.c:184 + jne short 01ed6h ; 75 22 ; 0xf1eb2 + cmp al, bl ; 38 d8 ; 0xf1eb4 + jne short 01ed6h ; 75 1e ; 0xf1eb6 + mov bx, strict word 0ffffh ; bb ff ff ; 0xf1eb8 ata.c:186 + dec bx ; 4b ; 0xf1ebb ata.c:187 + test bx, bx ; 85 db ; 0xf1ebc + jbe short 01ed6h ; 76 16 ; 0xf1ebe + mov dx, cx ; 89 ca ; 0xf1ec0 ata.c:188 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf1ec2 + in AL, DX ; ec ; 0xf1ec5 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf1ec6 + test AL, strict byte 080h ; a8 80 ; 0xf1ec8 ata.c:189 + je short 01ed6h ; 74 0a ; 0xf1eca + mov ax, strict word 0ffffh ; b8 ff ff ; 0xf1ecc ata.c:191 + dec ax ; 48 ; 0xf1ecf ata.c:192 + test ax, ax ; 85 c0 ; 0xf1ed0 + jnbe short 01ecfh ; 77 fb ; 0xf1ed2 + jmp short 01ebbh ; eb e5 ; 0xf1ed4 ata.c:195 + mov bx, strict word 00010h ; bb 10 00 ; 0xf1ed6 ata.c:200 + dec bx ; 4b ; 0xf1ed9 ata.c:201 + test bx, bx ; 85 db ; 0xf1eda + jbe short 01eeah ; 76 0c ; 0xf1edc + mov dx, cx ; 89 ca ; 0xf1ede ata.c:202 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf1ee0 + in AL, DX ; ec ; 0xf1ee3 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf1ee4 + test AL, strict byte 040h ; a8 40 ; 0xf1ee6 ata.c:203 + je short 01ed9h ; 74 ef ; 0xf1ee8 + lea dx, [si+006h] ; 8d 54 06 ; 0xf1eea ata.c:208 + mov AL, strict byte 008h ; b0 08 ; 0xf1eed + out DX, AL ; ee ; 0xf1eef + lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf1ef0 ata.c:209 + pop di ; 5f ; 0xf1ef3 + pop si ; 5e ; 0xf1ef4 + pop dx ; 5a ; 0xf1ef5 + pop cx ; 59 ; 0xf1ef6 + pop bx ; 5b ; 0xf1ef7 + pop bp ; 5d ; 0xf1ef8 + retn ; c3 ; 0xf1ef9 + ; disGetNextSymbol 0xf1efa LB 0x814b -> off=0x0 cb=00000000000002e2 uValue=00000000000f08fa 'ata_cmd_data_in' +ata_cmd_data_in: ; 0xf1efa LB 0x2e2 + push bp ; 55 ; 0xf1efa ata.c:223 + mov bp, sp ; 89 e5 ; 0xf1efb + push si ; 56 ; 0xf1efd + push di ; 57 ; 0xf1efe + sub sp, strict byte 00012h ; 83 ec 12 ; 0xf1eff + push ax ; 50 ; 0xf1f02 + push dx ; 52 ; 0xf1f03 + push bx ; 53 ; 0xf1f04 + push cx ; 51 ; 0xf1f05 + mov es, dx ; 8e c2 ; 0xf1f06 ata.c:233 + mov bx, ax ; 89 c3 ; 0xf1f08 + mov al, byte [es:bx+00ch] ; 26 8a 47 0c ; 0xf1f0a + mov byte [bp-00ah], al ; 88 46 f6 ; 0xf1f0e + movzx bx, al ; 0f b6 d8 ; 0xf1f11 ata.c:235 + mov ax, bx ; 89 d8 ; 0xf1f14 + cwd ; 99 ; 0xf1f16 + db 02bh, 0c2h + ; sub ax, dx ; 2b c2 ; 0xf1f17 + sar ax, 1 ; d1 f8 ; 0xf1f19 + imul ax, ax, strict byte 00006h ; 6b c0 06 ; 0xf1f1b + mov di, word [bp-018h] ; 8b 7e e8 ; 0xf1f1e + add di, ax ; 01 c7 ; 0xf1f21 + mov ax, word [es:di+00206h] ; 26 8b 85 06 02 ; 0xf1f23 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf1f28 + mov ax, word [es:di+00208h] ; 26 8b 85 08 02 ; 0xf1f2b ata.c:236 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf1f30 + imul bx, bx, strict byte 0001ch ; 6b db 1c ; 0xf1f33 ata.c:237 + mov di, word [bp-018h] ; 8b 7e e8 ; 0xf1f36 + add di, bx ; 01 df ; 0xf1f39 + mov al, byte [es:di+026h] ; 26 8a 45 26 ; 0xf1f3b + mov byte [bp-008h], al ; 88 46 f8 ; 0xf1f3f + mov ax, word [es:di+028h] ; 26 8b 45 28 ; 0xf1f42 ata.c:238 + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf1f46 + test ax, ax ; 85 c0 ; 0xf1f49 ata.c:239 + jne short 01f61h ; 75 14 ; 0xf1f4b + cmp byte [bp-008h], 001h ; 80 7e f8 01 ; 0xf1f4d ata.c:241 + jne short 01f5ah ; 75 07 ; 0xf1f51 + mov word [bp-00eh], 04000h ; c7 46 f2 00 40 ; 0xf1f53 ata.c:242 + jmp short 01f70h ; eb 16 ; 0xf1f58 ata.c:243 + mov word [bp-00eh], 08000h ; c7 46 f2 00 80 ; 0xf1f5a ata.c:245 + jmp short 01f70h ; eb 0f ; 0xf1f5f ata.c:246 + cmp byte [bp-008h], 001h ; 80 7e f8 01 ; 0xf1f61 ata.c:248 + jne short 01f6dh ; 75 06 ; 0xf1f65 + shr word [bp-00eh], 002h ; c1 6e f2 02 ; 0xf1f67 ata.c:249 + jmp short 01f70h ; eb 03 ; 0xf1f6b ata.c:250 + shr word [bp-00eh], 1 ; d1 6e f2 ; 0xf1f6d ata.c:252 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf1f70 ata.c:255 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf1f73 + in AL, DX ; ec ; 0xf1f76 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf1f77 + test AL, strict byte 080h ; a8 80 ; 0xf1f79 ata.c:256 + je short 01f8ch ; 74 0f ; 0xf1f7b + mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf1f7d ata.c:260 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf1f80 + mov AL, strict byte 008h ; b0 08 ; 0xf1f83 + out DX, AL ; ee ; 0xf1f85 + mov dx, strict word 00001h ; ba 01 00 ; 0xf1f86 ata.c:261 + jmp near 021d3h ; e9 47 02 ; 0xf1f89 + mov es, [bp-01ah] ; 8e 46 e6 ; 0xf1f8c ata.c:264 + mov di, word [bp-018h] ; 8b 7e e8 ; 0xf1f8f + mov di, word [es:di+008h] ; 26 8b 7d 08 ; 0xf1f92 + mov bx, word [bp-018h] ; 8b 5e e8 ; 0xf1f96 + mov ax, word [es:bx+00ah] ; 26 8b 47 0a ; 0xf1f99 + mov word [bp-012h], ax ; 89 46 ee ; 0xf1f9d + mov al, byte [es:bx+016h] ; 26 8a 47 16 ; 0xf1fa0 ata.c:265 + mov byte [bp-006h], al ; 88 46 fa ; 0xf1fa4 + mov ax, word [es:bx+012h] ; 26 8b 47 12 ; 0xf1fa7 ata.c:266 + mov word [bp-014h], ax ; 89 46 ec ; 0xf1fab + mov bl, byte [es:bx+014h] ; 26 8a 5f 14 ; 0xf1fae ata.c:267 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf1fb2 ata.c:270 + test al, al ; 84 c0 ; 0xf1fb5 + jne near 0209eh ; 0f 85 e3 00 ; 0xf1fb7 + xor bx, bx ; 31 db ; 0xf1fbb ata.c:271 + xor dx, dx ; 31 d2 ; 0xf1fbd + xor ah, ah ; 30 e4 ; 0xf1fbf + mov word [bp-016h], ax ; 89 46 ea ; 0xf1fc1 + mov si, word [bp-018h] ; 8b 76 e8 ; 0xf1fc4 + mov cx, word [es:si] ; 26 8b 0c ; 0xf1fc7 + add cx, word [bp-01eh] ; 03 4e e2 ; 0xf1fca + adc bx, word [es:si+002h] ; 26 13 5c 02 ; 0xf1fcd + adc dx, word [es:si+004h] ; 26 13 54 04 ; 0xf1fd1 + mov ax, word [es:si+006h] ; 26 8b 44 06 ; 0xf1fd5 + adc ax, word [bp-016h] ; 13 46 ea ; 0xf1fd9 + test ax, ax ; 85 c0 ; 0xf1fdc + jnbe short 01ff0h ; 77 10 ; 0xf1fde + jne short 02054h ; 75 72 ; 0xf1fe0 + test dx, dx ; 85 d2 ; 0xf1fe2 + jnbe short 01ff0h ; 77 0a ; 0xf1fe4 + jne short 02054h ; 75 6c ; 0xf1fe6 + cmp bx, 01000h ; 81 fb 00 10 ; 0xf1fe8 + jnbe short 01ff0h ; 77 02 ; 0xf1fec + jne short 02054h ; 75 64 ; 0xf1fee + mov bx, si ; 89 f3 ; 0xf1ff0 ata.c:273 + mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf1ff2 + mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf1ff6 + mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf1ffa + mov dx, word [es:si] ; 26 8b 14 ; 0xf1ffe + mov si, strict word 00018h ; be 18 00 ; 0xf2001 + call 09f90h ; e8 89 7f ; 0xf2004 + xor dh, dh ; 30 f6 ; 0xf2007 + mov word [bp-016h], dx ; 89 56 ea ; 0xf2009 + mov bx, word [bp-018h] ; 8b 5e e8 ; 0xf200c ata.c:274 + mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf200f + mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf2013 + mov si, word [bp-018h] ; 8b 76 e8 ; 0xf2017 + mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf201a + mov dx, word [es:si] ; 26 8b 14 ; 0xf201e + mov si, strict word 00020h ; be 20 00 ; 0xf2021 + call 09f90h ; e8 69 7f ; 0xf2024 + mov bx, dx ; 89 d3 ; 0xf2027 + mov ax, word [bp-01eh] ; 8b 46 e2 ; 0xf2029 ata.c:275 + xor al, al ; 30 c0 ; 0xf202c + shr ax, 008h ; c1 e8 08 ; 0xf202e + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2031 + inc dx ; 42 ; 0xf2034 + inc dx ; 42 ; 0xf2035 + out DX, AL ; ee ; 0xf2036 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2037 ata.c:276 + add dx, strict byte 00003h ; 83 c2 03 ; 0xf203a + mov al, byte [bp-016h] ; 8a 46 ea ; 0xf203d + out DX, AL ; ee ; 0xf2040 + mov ax, bx ; 89 d8 ; 0xf2041 ata.c:277 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2043 + add dx, strict byte 00004h ; 83 c2 04 ; 0xf2046 + out DX, AL ; ee ; 0xf2049 + shr ax, 008h ; c1 e8 08 ; 0xf204a ata.c:278 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf204d + add dx, strict byte 00005h ; 83 c2 05 ; 0xf2050 + out DX, AL ; ee ; 0xf2053 + mov es, [bp-01ah] ; 8e 46 e6 ; 0xf2054 ata.c:282 + mov bx, word [bp-018h] ; 8b 5e e8 ; 0xf2057 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf205a + mov byte [bp-006h], al ; 88 46 fa ; 0xf205d + mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf2060 ata.c:283 + mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf2064 + mov si, word [bp-018h] ; 8b 76 e8 ; 0xf2068 + mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf206b + mov dx, word [es:si] ; 26 8b 14 ; 0xf206f + mov si, strict word 00008h ; be 08 00 ; 0xf2072 + call 09f90h ; e8 18 7f ; 0xf2075 + mov word [bp-014h], dx ; 89 56 ec ; 0xf2078 + mov bx, word [bp-018h] ; 8b 5e e8 ; 0xf207b ata.c:284 + mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf207e + mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf2082 + mov si, word [bp-018h] ; 8b 76 e8 ; 0xf2086 + mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf2089 + mov dx, word [es:si] ; 26 8b 14 ; 0xf208d + mov si, strict word 00018h ; be 18 00 ; 0xf2090 + call 09f90h ; e8 fa 7e ; 0xf2093 + and dx, strict byte 0000fh ; 83 e2 0f ; 0xf2096 + or dl, 040h ; 80 ca 40 ; 0xf2099 + mov bx, dx ; 89 d3 ; 0xf209c + mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf209e ata.c:287 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf20a1 + mov AL, strict byte 00ah ; b0 0a ; 0xf20a4 + out DX, AL ; ee ; 0xf20a6 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf20a7 ata.c:288 + inc dx ; 42 ; 0xf20aa + xor al, al ; 30 c0 ; 0xf20ab + out DX, AL ; ee ; 0xf20ad + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf20ae ata.c:289 + inc dx ; 42 ; 0xf20b1 + inc dx ; 42 ; 0xf20b2 + mov al, byte [bp-01eh] ; 8a 46 e2 ; 0xf20b3 + out DX, AL ; ee ; 0xf20b6 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf20b7 ata.c:290 + add dx, strict byte 00003h ; 83 c2 03 ; 0xf20ba + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf20bd + out DX, AL ; ee ; 0xf20c0 + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf20c1 ata.c:291 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf20c4 + add dx, strict byte 00004h ; 83 c2 04 ; 0xf20c7 + out DX, AL ; ee ; 0xf20ca + shr ax, 008h ; c1 e8 08 ; 0xf20cb ata.c:292 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf20ce + add dx, strict byte 00005h ; 83 c2 05 ; 0xf20d1 + out DX, AL ; ee ; 0xf20d4 + test byte [bp-00ah], 001h ; f6 46 f6 01 ; 0xf20d5 ata.c:293 + je short 020e0h ; 74 05 ; 0xf20d9 + mov ax, 000b0h ; b8 b0 00 ; 0xf20db + jmp short 020e3h ; eb 03 ; 0xf20de + mov ax, 000a0h ; b8 a0 00 ; 0xf20e0 + movzx dx, bl ; 0f b6 d3 ; 0xf20e3 + or ax, dx ; 09 d0 ; 0xf20e6 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf20e8 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf20eb + out DX, AL ; ee ; 0xf20ee + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf20ef ata.c:294 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf20f2 + mov al, byte [bp-01ch] ; 8a 46 e4 ; 0xf20f5 + out DX, AL ; ee ; 0xf20f8 + mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xf20f9 ata.c:296 + cmp ax, 000c4h ; 3d c4 00 ; 0xf20fc + je short 02106h ; 74 05 ; 0xf20ff + cmp ax, strict word 00029h ; 3d 29 00 ; 0xf2101 + jne short 02110h ; 75 0a ; 0xf2104 + mov bx, word [bp-01eh] ; 8b 5e e2 ; 0xf2106 ata.c:297 + mov word [bp-01eh], strict word 00001h ; c7 46 e2 01 00 ; 0xf2109 ata.c:298 + jmp short 02113h ; eb 03 ; 0xf210e ata.c:299 + mov bx, strict word 00001h ; bb 01 00 ; 0xf2110 ata.c:300 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2113 ata.c:304 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf2116 + in AL, DX ; ec ; 0xf2119 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf211a + mov dl, al ; 88 c2 ; 0xf211c + test AL, strict byte 080h ; a8 80 ; 0xf211e ata.c:305 + jne short 02113h ; 75 f1 ; 0xf2120 + test AL, strict byte 001h ; a8 01 ; 0xf2122 ata.c:309 + je short 02135h ; 74 0f ; 0xf2124 + mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf2126 ata.c:312 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2129 + mov AL, strict byte 008h ; b0 08 ; 0xf212c + out DX, AL ; ee ; 0xf212e + mov dx, strict word 00002h ; ba 02 00 ; 0xf212f ata.c:313 + jmp near 021d3h ; e9 9e 00 ; 0xf2132 + test dl, 008h ; f6 c2 08 ; 0xf2135 ata.c:314 + jne short 02149h ; 75 0f ; 0xf2138 + mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf213a ata.c:317 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf213d + mov AL, strict byte 008h ; b0 08 ; 0xf2140 + out DX, AL ; ee ; 0xf2142 + mov dx, strict word 00003h ; ba 03 00 ; 0xf2143 ata.c:318 + jmp near 021d3h ; e9 8a 00 ; 0xf2146 + sti ; fb ; 0xf2149 ata.c:323 + cmp di, 0f800h ; 81 ff 00 f8 ; 0xf214a ata.c:328 + jc short 0215dh ; 72 0d ; 0xf214e + sub di, 00800h ; 81 ef 00 08 ; 0xf2150 ata.c:329 + mov ax, word [bp-012h] ; 8b 46 ee ; 0xf2154 + add ax, 00080h ; 05 80 00 ; 0xf2157 + mov word [bp-012h], ax ; 89 46 ee ; 0xf215a + cmp byte [bp-008h], 001h ; 80 7e f8 01 ; 0xf215d ata.c:332 + jne short 02171h ; 75 0e ; 0xf2161 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2163 ata.c:333 + mov cx, word [bp-00eh] ; 8b 4e f2 ; 0xf2166 + mov es, [bp-012h] ; 8e 46 ee ; 0xf2169 + db 0f3h, 066h, 06dh + ; rep insd ; f3 66 6d ; 0xf216c + jmp short 0217ch ; eb 0b ; 0xf216f ata.c:334 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2171 ata.c:336 + mov cx, word [bp-00eh] ; 8b 4e f2 ; 0xf2174 + mov es, [bp-012h] ; 8e 46 ee ; 0xf2177 + rep insw ; f3 6d ; 0xf217a + mov es, [bp-01ah] ; 8e 46 e6 ; 0xf217c ata.c:337 + mov si, word [bp-018h] ; 8b 76 e8 ; 0xf217f + add word [es:si+018h], bx ; 26 01 5c 18 ; 0xf2182 + dec word [bp-01eh] ; ff 4e e2 ; 0xf2186 ata.c:338 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2189 ata.c:340 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf218c + in AL, DX ; ec ; 0xf218f + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2190 + mov dl, al ; 88 c2 ; 0xf2192 + test AL, strict byte 080h ; a8 80 ; 0xf2194 ata.c:341 + jne short 02189h ; 75 f1 ; 0xf2196 + cmp word [bp-01eh], strict byte 00000h ; 83 7e e2 00 ; 0xf2198 ata.c:344 + jne short 021b2h ; 75 14 ; 0xf219c + and AL, strict byte 0c9h ; 24 c9 ; 0xf219e ata.c:345 + cmp AL, strict byte 040h ; 3c 40 ; 0xf21a0 + je short 021c8h ; 74 24 ; 0xf21a2 + mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf21a4 ata.c:349 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf21a7 + mov AL, strict byte 008h ; b0 08 ; 0xf21aa + out DX, AL ; ee ; 0xf21ac + mov dx, strict word 00004h ; ba 04 00 ; 0xf21ad ata.c:350 + jmp short 021d3h ; eb 21 ; 0xf21b0 + mov al, dl ; 88 d0 ; 0xf21b2 ata.c:355 + and AL, strict byte 0c9h ; 24 c9 ; 0xf21b4 + cmp AL, strict byte 048h ; 3c 48 ; 0xf21b6 + je short 0214ah ; 74 90 ; 0xf21b8 + mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf21ba ata.c:359 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf21bd + mov AL, strict byte 008h ; b0 08 ; 0xf21c0 + out DX, AL ; ee ; 0xf21c2 + mov dx, strict word 00005h ; ba 05 00 ; 0xf21c3 ata.c:360 + jmp short 021d3h ; eb 0b ; 0xf21c6 + mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf21c8 ata.c:366 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf21cb + mov AL, strict byte 008h ; b0 08 ; 0xf21ce + out DX, AL ; ee ; 0xf21d0 + xor dx, dx ; 31 d2 ; 0xf21d1 ata.c:367 + mov ax, dx ; 89 d0 ; 0xf21d3 ata.c:368 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf21d5 + pop di ; 5f ; 0xf21d8 + pop si ; 5e ; 0xf21d9 + pop bp ; 5d ; 0xf21da + retn ; c3 ; 0xf21db + ; disGetNextSymbol 0xf21dc LB 0x7e69 -> off=0x0 cb=000000000000068a uValue=00000000000f0bdc 'ata_detect' +ata_detect: ; 0xf21dc LB 0x68a + push bp ; 55 ; 0xf21dc ata.c:374 + mov bp, sp ; 89 e5 ; 0xf21dd + push si ; 56 ; 0xf21df + push di ; 57 ; 0xf21e0 + sub sp, 00262h ; 81 ec 62 02 ; 0xf21e1 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf21e5 ata.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf21e8 + mov es, ax ; 8e c0 ; 0xf21eb + mov ax, word [es:bx] ; 26 8b 07 ; 0xf21ed + mov word [bp-024h], ax ; 89 46 dc ; 0xf21f0 ata.c:49 + mov bx, 00122h ; bb 22 01 ; 0xf21f3 ata.c:381 + mov es, ax ; 8e c0 ; 0xf21f6 + mov word [bp-01eh], bx ; 89 5e e2 ; 0xf21f8 + mov word [bp-030h], ax ; 89 46 d0 ; 0xf21fb + mov byte [es:bx+00204h], 000h ; 26 c6 87 04 02 00 ; 0xf21fe ata.c:384 + db 066h, 026h, 0c7h, 087h, 006h, 002h, 0f0h, 001h, 0f0h, 003h + ; mov dword [es:bx+00206h], strict dword 003f001f0h ; 66 26 c7 87 06 02 f0 01 f0 03; 0xf2204 ata.c:385 + mov byte [es:bx+00205h], 00eh ; 26 c6 87 05 02 0e ; 0xf220e ata.c:387 + mov byte [es:bx+0020ah], 000h ; 26 c6 87 0a 02 00 ; 0xf2214 ata.c:390 + db 066h, 026h, 0c7h, 087h, 00ch, 002h, 070h, 001h, 070h, 003h + ; mov dword [es:bx+0020ch], strict dword 003700170h ; 66 26 c7 87 0c 02 70 01 70 03; 0xf221a ata.c:391 + mov byte [es:bx+0020bh], 00fh ; 26 c6 87 0b 02 0f ; 0xf2224 ata.c:393 + xor al, al ; 30 c0 ; 0xf222a ata.c:414 + mov byte [bp-00ah], al ; 88 46 f6 ; 0xf222c + mov byte [bp-008h], al ; 88 46 f8 ; 0xf222f + mov byte [bp-016h], al ; 88 46 ea ; 0xf2232 ata.c:416 + jmp near 027eah ; e9 b2 05 ; 0xf2235 + mov ax, 000a0h ; b8 a0 00 ; 0xf2238 ata.c:431 + lea dx, [bx+006h] ; 8d 57 06 ; 0xf223b + out DX, AL ; ee ; 0xf223e + lea si, [bx+002h] ; 8d 77 02 ; 0xf223f ata.c:432 + mov AL, strict byte 055h ; b0 55 ; 0xf2242 + mov dx, si ; 89 f2 ; 0xf2244 + out DX, AL ; ee ; 0xf2246 + lea di, [bx+003h] ; 8d 7f 03 ; 0xf2247 ata.c:433 + mov AL, strict byte 0aah ; b0 aa ; 0xf224a + mov dx, di ; 89 fa ; 0xf224c + out DX, AL ; ee ; 0xf224e + mov dx, si ; 89 f2 ; 0xf224f ata.c:434 + out DX, AL ; ee ; 0xf2251 + mov AL, strict byte 055h ; b0 55 ; 0xf2252 ata.c:435 + mov dx, di ; 89 fa ; 0xf2254 + out DX, AL ; ee ; 0xf2256 + mov dx, si ; 89 f2 ; 0xf2257 ata.c:436 + out DX, AL ; ee ; 0xf2259 + mov AL, strict byte 0aah ; b0 aa ; 0xf225a ata.c:437 + mov dx, di ; 89 fa ; 0xf225c + out DX, AL ; ee ; 0xf225e + mov dx, si ; 89 f2 ; 0xf225f ata.c:440 + in AL, DX ; ec ; 0xf2261 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2262 + mov cx, ax ; 89 c1 ; 0xf2264 + mov dx, di ; 89 fa ; 0xf2266 ata.c:441 + in AL, DX ; ec ; 0xf2268 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2269 + cmp cl, 055h ; 80 f9 55 ; 0xf226b ata.c:443 + jne near 02342h ; 0f 85 d0 00 ; 0xf226e + cmp AL, strict byte 0aah ; 3c aa ; 0xf2272 + jne near 02342h ; 0f 85 ca 00 ; 0xf2274 + movzx ax, byte [bp-016h] ; 0f b6 46 ea ; 0xf2278 ata.c:444 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf227c + mov es, [bp-030h] ; 8e 46 d0 ; 0xf227f + mov si, word [bp-01eh] ; 8b 76 e2 ; 0xf2282 + add si, ax ; 01 c6 ; 0xf2285 + mov byte [es:si+022h], 001h ; 26 c6 44 22 01 ; 0xf2287 + movzx ax, byte [bp-016h] ; 0f b6 46 ea ; 0xf228c ata.c:447 + call 01e1dh ; e8 8a fb ; 0xf2290 + cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf2293 ata.c:450 + je short 0229eh ; 74 05 ; 0xf2297 + mov ax, 000b0h ; b8 b0 00 ; 0xf2299 + jmp short 022a1h ; eb 03 ; 0xf229c + mov ax, 000a0h ; b8 a0 00 ; 0xf229e + lea dx, [bx+006h] ; 8d 57 06 ; 0xf22a1 + out DX, AL ; ee ; 0xf22a4 + lea dx, [bx+002h] ; 8d 57 02 ; 0xf22a5 ata.c:451 + in AL, DX ; ec ; 0xf22a8 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf22a9 + mov cx, ax ; 89 c1 ; 0xf22ab + lea dx, [bx+003h] ; 8d 57 03 ; 0xf22ad ata.c:452 + in AL, DX ; ec ; 0xf22b0 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf22b1 + cmp cl, 001h ; 80 f9 01 ; 0xf22b3 ata.c:453 + jne near 02342h ; 0f 85 88 00 ; 0xf22b6 + cmp al, cl ; 38 c8 ; 0xf22ba + jne near 02342h ; 0f 85 82 00 ; 0xf22bc + lea dx, [bx+004h] ; 8d 57 04 ; 0xf22c0 ata.c:454 + in AL, DX ; ec ; 0xf22c3 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf22c4 + mov cx, ax ; 89 c1 ; 0xf22c6 + mov ch, al ; 88 c5 ; 0xf22c8 + lea dx, [bx+005h] ; 8d 57 05 ; 0xf22ca ata.c:455 + in AL, DX ; ec ; 0xf22cd + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf22ce + mov word [bp-020h], ax ; 89 46 e0 ; 0xf22d0 + mov al, byte [bp-020h] ; 8a 46 e0 ; 0xf22d3 + mov byte [bp-010h], al ; 88 46 f0 ; 0xf22d6 + lea dx, [bx+007h] ; 8d 57 07 ; 0xf22d9 ata.c:456 + in AL, DX ; ec ; 0xf22dc + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf22dd + cmp cl, 014h ; 80 f9 14 ; 0xf22df ata.c:458 + jne short 02300h ; 75 1c ; 0xf22e2 + cmp byte [bp-020h], 0ebh ; 80 7e e0 eb ; 0xf22e4 + jne short 02300h ; 75 16 ; 0xf22e8 + movzx ax, byte [bp-016h] ; 0f b6 46 ea ; 0xf22ea ata.c:459 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf22ee + mov es, [bp-030h] ; 8e 46 d0 ; 0xf22f1 + mov bx, word [bp-01eh] ; 8b 5e e2 ; 0xf22f4 + add bx, ax ; 01 c3 ; 0xf22f7 + mov byte [es:bx+022h], 003h ; 26 c6 47 22 03 ; 0xf22f9 + jmp short 02342h ; eb 42 ; 0xf22fe ata.c:460 + test ch, ch ; 84 ed ; 0xf2300 + jne short 02324h ; 75 20 ; 0xf2302 + cmp byte [bp-010h], 000h ; 80 7e f0 00 ; 0xf2304 + jne short 02324h ; 75 1a ; 0xf2308 + test al, al ; 84 c0 ; 0xf230a + je short 02324h ; 74 16 ; 0xf230c + movzx ax, byte [bp-016h] ; 0f b6 46 ea ; 0xf230e ata.c:461 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf2312 + mov es, [bp-030h] ; 8e 46 d0 ; 0xf2315 + mov bx, word [bp-01eh] ; 8b 5e e2 ; 0xf2318 + add bx, ax ; 01 c3 ; 0xf231b + mov byte [es:bx+022h], 002h ; 26 c6 47 22 02 ; 0xf231d + jmp short 02342h ; eb 1e ; 0xf2322 ata.c:462 + cmp ch, 0ffh ; 80 fd ff ; 0xf2324 + jne short 02342h ; 75 19 ; 0xf2327 + cmp ch, byte [bp-010h] ; 3a 6e f0 ; 0xf2329 + jne short 02342h ; 75 14 ; 0xf232c + movzx ax, byte [bp-016h] ; 0f b6 46 ea ; 0xf232e ata.c:463 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf2332 + mov es, [bp-030h] ; 8e 46 d0 ; 0xf2335 + mov bx, word [bp-01eh] ; 8b 5e e2 ; 0xf2338 + add bx, ax ; 01 c3 ; 0xf233b + mov byte [es:bx+022h], 000h ; 26 c6 47 22 00 ; 0xf233d + mov dx, word [bp-026h] ; 8b 56 da ; 0xf2342 ata.c:469 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2345 + mov AL, strict byte 008h ; b0 08 ; 0xf2348 + out DX, AL ; ee ; 0xf234a + movzx bx, byte [bp-016h] ; 0f b6 5e ea ; 0xf234b ata.c:471 + imul bx, bx, strict byte 0001ch ; 6b db 1c ; 0xf234f + mov es, [bp-030h] ; 8e 46 d0 ; 0xf2352 + add bx, word [bp-01eh] ; 03 5e e2 ; 0xf2355 + mov al, byte [es:bx+022h] ; 26 8a 47 22 ; 0xf2358 + mov byte [bp-00eh], al ; 88 46 f2 ; 0xf235c + cmp AL, strict byte 002h ; 3c 02 ; 0xf235f ata.c:474 + jne near 025bch ; 0f 85 57 02 ; 0xf2361 + mov byte [es:bx+023h], 0ffh ; 26 c6 47 23 ff ; 0xf2365 ata.c:482 + mov byte [es:bx+026h], 000h ; 26 c6 47 26 00 ; 0xf236a ata.c:483 + lea dx, [bp-00266h] ; 8d 96 9a fd ; 0xf236f ata.c:484 + mov bx, word [bp-01eh] ; 8b 5e e2 ; 0xf2373 + mov word [es:bx+008h], dx ; 26 89 57 08 ; 0xf2376 + mov [es:bx+00ah], ss ; 26 8c 57 0a ; 0xf237a + mov al, byte [bp-016h] ; 8a 46 ea ; 0xf237e ata.c:485 + mov byte [es:bx+00ch], al ; 26 88 47 0c ; 0xf2381 + mov cx, strict word 00001h ; b9 01 00 ; 0xf2385 ata.c:487 + mov bx, 000ech ; bb ec 00 ; 0xf2388 + mov ax, word [bp-01eh] ; 8b 46 e2 ; 0xf238b + mov dx, es ; 8c c2 ; 0xf238e + call 01efah ; e8 67 fb ; 0xf2390 + test ax, ax ; 85 c0 ; 0xf2393 + je short 023a2h ; 74 0b ; 0xf2395 + push 00136h ; 68 36 01 ; 0xf2397 ata.c:488 + push strict byte 00007h ; 6a 07 ; 0xf239a + call 01a14h ; e8 75 f6 ; 0xf239c + add sp, strict byte 00004h ; 83 c4 04 ; 0xf239f + test byte [bp-00266h], 080h ; f6 86 9a fd 80 ; 0xf23a2 ata.c:490 + db 00fh, 095h, 0c0h + ; setne al ; 0f 95 c0 ; 0xf23a7 + xor ah, ah ; 30 e4 ; 0xf23aa + mov byte [bp-012h], al ; 88 46 ee ; 0xf23ac + cmp byte [bp-00206h], 000h ; 80 be fa fd 00 ; 0xf23af ata.c:492 + db 00fh, 095h, 0c0h + ; setne al ; 0f 95 c0 ; 0xf23b4 + xor ah, ah ; 30 e4 ; 0xf23b7 + mov byte [bp-018h], al ; 88 46 e8 ; 0xf23b9 + mov word [bp-036h], 00200h ; c7 46 ca 00 02 ; 0xf23bc ata.c:496 + mov ax, word [bp-00264h] ; 8b 86 9c fd ; 0xf23c1 ata.c:498 + mov word [bp-01ah], ax ; 89 46 e6 ; 0xf23c5 + mov ax, word [bp-00260h] ; 8b 86 a0 fd ; 0xf23c8 ata.c:499 + mov word [bp-01ch], ax ; 89 46 e4 ; 0xf23cc + mov ax, word [bp-0025ah] ; 8b 86 a6 fd ; 0xf23cf ata.c:500 + mov word [bp-022h], ax ; 89 46 de ; 0xf23d3 + mov ax, word [bp-001eeh] ; 8b 86 12 fe ; 0xf23d6 ata.c:502 + mov word [bp-02ch], ax ; 89 46 d4 ; 0xf23da + mov si, word [bp-001ech] ; 8b b6 14 fe ; 0xf23dd + xor ax, ax ; 31 c0 ; 0xf23e1 + mov word [bp-032h], ax ; 89 46 ce ; 0xf23e3 + mov word [bp-02eh], ax ; 89 46 d2 ; 0xf23e6 + cmp si, 00fffh ; 81 fe ff 0f ; 0xf23e9 ata.c:503 + jne short 0240eh ; 75 1f ; 0xf23ed + cmp word [bp-02ch], strict byte 0ffffh ; 83 7e d4 ff ; 0xf23ef + jne short 0240eh ; 75 19 ; 0xf23f3 + mov ax, word [bp-00198h] ; 8b 86 68 fe ; 0xf23f5 ata.c:504 + mov word [bp-02eh], ax ; 89 46 d2 ; 0xf23f9 + mov ax, word [bp-0019ah] ; 8b 86 66 fe ; 0xf23fc + mov word [bp-032h], ax ; 89 46 ce ; 0xf2400 + mov si, word [bp-0019ch] ; 8b b6 64 fe ; 0xf2403 + mov ax, word [bp-0019eh] ; 8b 86 62 fe ; 0xf2407 + mov word [bp-02ch], ax ; 89 46 d4 ; 0xf240b + mov al, byte [bp-016h] ; 8a 46 ea ; 0xf240e ata.c:505 + cmp AL, strict byte 001h ; 3c 01 ; 0xf2411 + jc short 02421h ; 72 0c ; 0xf2413 + jbe short 02429h ; 76 12 ; 0xf2415 + cmp AL, strict byte 003h ; 3c 03 ; 0xf2417 + je short 02431h ; 74 16 ; 0xf2419 + cmp AL, strict byte 002h ; 3c 02 ; 0xf241b + je short 0242dh ; 74 0e ; 0xf241d + jmp short 0246eh ; eb 4d ; 0xf241f + test al, al ; 84 c0 ; 0xf2421 + jne short 0246eh ; 75 49 ; 0xf2423 + mov BL, strict byte 01eh ; b3 1e ; 0xf2425 ata.c:508 + jmp short 02433h ; eb 0a ; 0xf2427 ata.c:509 + mov BL, strict byte 026h ; b3 26 ; 0xf2429 ata.c:511 + jmp short 02433h ; eb 06 ; 0xf242b ata.c:512 + mov BL, strict byte 067h ; b3 67 ; 0xf242d ata.c:514 + jmp short 02433h ; eb 02 ; 0xf242f ata.c:515 + mov BL, strict byte 070h ; b3 70 ; 0xf2431 ata.c:517 + mov al, bl ; 88 d8 ; 0xf2433 ata.c:524 + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf2435 + xor ah, ah ; 30 e4 ; 0xf2437 + call 01756h ; e8 1a f3 ; 0xf2439 + xor ah, ah ; 30 e4 ; 0xf243c + mov dx, ax ; 89 c2 ; 0xf243e + sal dx, 008h ; c1 e2 08 ; 0xf2440 + movzx ax, bl ; 0f b6 c3 ; 0xf2443 + call 01756h ; e8 0d f3 ; 0xf2446 + xor ah, ah ; 30 e4 ; 0xf2449 + add ax, dx ; 01 d0 ; 0xf244b + mov word [bp-03ah], ax ; 89 46 c6 ; 0xf244d + mov al, bl ; 88 d8 ; 0xf2450 ata.c:525 + add AL, strict byte 002h ; 04 02 ; 0xf2452 + xor ah, ah ; 30 e4 ; 0xf2454 + call 01756h ; e8 fd f2 ; 0xf2456 + xor ah, ah ; 30 e4 ; 0xf2459 + mov word [bp-03ch], ax ; 89 46 c4 ; 0xf245b + mov al, bl ; 88 d8 ; 0xf245e ata.c:526 + add AL, strict byte 007h ; 04 07 ; 0xf2460 + xor ah, ah ; 30 e4 ; 0xf2462 + call 01756h ; e8 ef f2 ; 0xf2464 + xor ah, ah ; 30 e4 ; 0xf2467 + mov word [bp-038h], ax ; 89 46 c8 ; 0xf2469 + jmp short 02480h ; eb 12 ; 0xf246c ata.c:528 + push word [bp-02eh] ; ff 76 d2 ; 0xf246e ata.c:529 + push word [bp-032h] ; ff 76 ce ; 0xf2471 + push si ; 56 ; 0xf2474 + push word [bp-02ch] ; ff 76 d4 ; 0xf2475 + mov dx, ss ; 8c d2 ; 0xf2478 + lea ax, [bp-03ch] ; 8d 46 c4 ; 0xf247a + call 0599dh ; e8 1d 35 ; 0xf247d + mov bx, 00db2h ; bb b2 0d ; 0xf2480 ata.c:532 + mov cx, ds ; 8c d9 ; 0xf2483 + mov ax, strict word 00004h ; b8 04 00 ; 0xf2485 + call 019d3h ; e8 48 f5 ; 0xf2488 + mov ax, word [bp-038h] ; 8b 46 c8 ; 0xf248b + push ax ; 50 ; 0xf248e + mov ax, word [bp-03ch] ; 8b 46 c4 ; 0xf248f + push ax ; 50 ; 0xf2492 + mov ax, word [bp-03ah] ; 8b 46 c6 ; 0xf2493 + push ax ; 50 ; 0xf2496 + push word [bp-022h] ; ff 76 de ; 0xf2497 + push word [bp-01ch] ; ff 76 e4 ; 0xf249a + push word [bp-01ah] ; ff 76 e6 ; 0xf249d + movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf24a0 + push ax ; 50 ; 0xf24a4 + movzx ax, byte [bp-00ch] ; 0f b6 46 f4 ; 0xf24a5 + push ax ; 50 ; 0xf24a9 + push 0015fh ; 68 5f 01 ; 0xf24aa + push strict byte 00004h ; 6a 04 ; 0xf24ad + call 01a14h ; e8 62 f5 ; 0xf24af + add sp, strict byte 00014h ; 83 c4 14 ; 0xf24b2 + movzx ax, byte [bp-016h] ; 0f b6 46 ea ; 0xf24b5 ata.c:534 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf24b9 + mov es, [bp-030h] ; 8e 46 d0 ; 0xf24bc + mov di, word [bp-01eh] ; 8b 7e e2 ; 0xf24bf + add di, ax ; 01 c7 ; 0xf24c2 + mov byte [es:di+023h], 0ffh ; 26 c6 45 23 ff ; 0xf24c4 + mov al, byte [bp-012h] ; 8a 46 ee ; 0xf24c9 ata.c:535 + mov byte [es:di+024h], al ; 26 88 45 24 ; 0xf24cc + mov al, byte [bp-018h] ; 8a 46 e8 ; 0xf24d0 ata.c:536 + mov byte [es:di+026h], al ; 26 88 45 26 ; 0xf24d3 + mov ax, word [bp-036h] ; 8b 46 ca ; 0xf24d7 ata.c:537 + mov word [es:di+028h], ax ; 26 89 45 28 ; 0xf24da + mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xf24de ata.c:538 + mov word [es:di+030h], ax ; 26 89 45 30 ; 0xf24e1 + mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xf24e5 ata.c:539 + mov word [es:di+032h], ax ; 26 89 45 32 ; 0xf24e8 + mov ax, word [bp-022h] ; 8b 46 de ; 0xf24ec ata.c:540 + mov word [es:di+034h], ax ; 26 89 45 34 ; 0xf24ef + mov ax, word [bp-02eh] ; 8b 46 d2 ; 0xf24f3 ata.c:541 + mov word [es:di+03ch], ax ; 26 89 45 3c ; 0xf24f6 + mov ax, word [bp-032h] ; 8b 46 ce ; 0xf24fa + mov word [es:di+03ah], ax ; 26 89 45 3a ; 0xf24fd + mov word [es:di+038h], si ; 26 89 75 38 ; 0xf2501 + mov ax, word [bp-02ch] ; 8b 46 d4 ; 0xf2505 + mov word [es:di+036h], ax ; 26 89 45 36 ; 0xf2508 + lea di, [di+02ah] ; 8d 7d 2a ; 0xf250c ata.c:542 + push DS ; 1e ; 0xf250f + push SS ; 16 ; 0xf2510 + pop DS ; 1f ; 0xf2511 + lea si, [bp-03ch] ; 8d 76 c4 ; 0xf2512 + movsw ; a5 ; 0xf2515 + movsw ; a5 ; 0xf2516 + movsw ; a5 ; 0xf2517 + pop DS ; 1f ; 0xf2518 + mov al, byte [bp-016h] ; 8a 46 ea ; 0xf2519 ata.c:543 + cmp AL, strict byte 002h ; 3c 02 ; 0xf251c + jnc near 025a7h ; 0f 83 85 00 ; 0xf251e + test al, al ; 84 c0 ; 0xf2522 ata.c:549 + jne short 0252bh ; 75 05 ; 0xf2524 + mov bx, strict word 0003dh ; bb 3d 00 ; 0xf2526 ata.c:550 + jmp short 0252eh ; eb 03 ; 0xf2529 ata.c:551 + mov bx, strict word 0004dh ; bb 4d 00 ; 0xf252b ata.c:552 + mov dx, word [bp-024h] ; 8b 56 dc ; 0xf252e + movzx si, byte [bp-016h] ; 0f b6 76 ea ; 0xf2531 ata.c:564 + imul si, si, strict byte 00005h ; 6b f6 05 ; 0xf2535 + sal si, 002h ; c1 e6 02 ; 0xf2538 + add si, 00104h ; 81 c6 04 01 ; 0xf253b + xor ax, ax ; 31 c0 ; 0xf253f + mov es, ax ; 8e c0 ; 0xf2541 + mov word [es:si], bx ; 26 89 1c ; 0xf2543 ata.c:565 + mov word [es:si+002h], dx ; 26 89 54 02 ; 0xf2546 + mov es, dx ; 8e c2 ; 0xf254a ata.c:571 + mov word [es:bx+00ch], ax ; 26 89 47 0c ; 0xf254c + mov word [es:bx+005h], ax ; 26 89 47 05 ; 0xf2550 + mov word [es:bx+007h], ax ; 26 89 47 07 ; 0xf2554 + mov ax, word [bp-03ah] ; 8b 46 c6 ; 0xf2558 ata.c:573 + mov word [es:bx], ax ; 26 89 07 ; 0xf255b + mov al, byte [bp-03ch] ; 8a 46 c4 ; 0xf255e ata.c:574 + mov byte [es:bx+002h], al ; 26 88 47 02 ; 0xf2561 + mov byte [es:bx+003h], 0a0h ; 26 c6 47 03 a0 ; 0xf2565 ata.c:575 + mov al, byte [bp-022h] ; 8a 46 de ; 0xf256a ata.c:576 + mov byte [es:bx+004h], al ; 26 88 47 04 ; 0xf256d + mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xf2571 ata.c:577 + mov word [es:bx+009h], ax ; 26 89 47 09 ; 0xf2574 + mov al, byte [bp-01ch] ; 8a 46 e4 ; 0xf2578 ata.c:578 + mov byte [es:bx+00bh], al ; 26 88 47 0b ; 0xf257b + mov al, byte [bp-038h] ; 8a 46 c8 ; 0xf257f ata.c:579 + mov byte [es:bx+00eh], al ; 26 88 47 0e ; 0xf2582 + xor al, al ; 30 c0 ; 0xf2586 ata.c:580 + xor ah, ah ; 30 e4 ; 0xf2588 ata.c:581 + jmp short 02591h ; eb 05 ; 0xf258a + cmp ah, 00fh ; 80 fc 0f ; 0xf258c + jnc short 0259fh ; 73 0e ; 0xf258f + movzx si, ah ; 0f b6 f4 ; 0xf2591 ata.c:582 + mov es, dx ; 8e c2 ; 0xf2594 + add si, bx ; 01 de ; 0xf2596 + add al, byte [es:si] ; 26 02 04 ; 0xf2598 + db 0feh, 0c4h + ; inc ah ; fe c4 ; 0xf259b + jmp short 0258ch ; eb ed ; 0xf259d + neg al ; f6 d8 ; 0xf259f ata.c:583 + mov es, dx ; 8e c2 ; 0xf25a1 ata.c:584 + mov byte [es:bx+00fh], al ; 26 88 47 0f ; 0xf25a3 + movzx bx, byte [bp-008h] ; 0f b6 5e f8 ; 0xf25a7 ata.c:588 + mov es, [bp-030h] ; 8e 46 d0 ; 0xf25ab + add bx, word [bp-01eh] ; 03 5e e2 ; 0xf25ae + mov al, byte [bp-016h] ; 8a 46 ea ; 0xf25b1 + mov byte [es:bx+001e3h], al ; 26 88 87 e3 01 ; 0xf25b4 + inc byte [bp-008h] ; fe 46 f8 ; 0xf25b9 ata.c:589 + cmp byte [bp-00eh], 003h ; 80 7e f2 03 ; 0xf25bc ata.c:593 + jne near 0265eh ; 0f 85 9a 00 ; 0xf25c0 + movzx ax, byte [bp-016h] ; 0f b6 46 ea ; 0xf25c4 ata.c:598 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf25c8 + mov es, [bp-030h] ; 8e 46 d0 ; 0xf25cb + mov bx, word [bp-01eh] ; 8b 5e e2 ; 0xf25ce + add bx, ax ; 01 c3 ; 0xf25d1 + mov byte [es:bx+023h], 005h ; 26 c6 47 23 05 ; 0xf25d3 + mov byte [es:bx+026h], 000h ; 26 c6 47 26 00 ; 0xf25d8 ata.c:599 + lea dx, [bp-00266h] ; 8d 96 9a fd ; 0xf25dd ata.c:600 + mov bx, word [bp-01eh] ; 8b 5e e2 ; 0xf25e1 + mov word [es:bx+008h], dx ; 26 89 57 08 ; 0xf25e4 + mov [es:bx+00ah], ss ; 26 8c 57 0a ; 0xf25e8 + mov al, byte [bp-016h] ; 8a 46 ea ; 0xf25ec ata.c:601 + mov byte [es:bx+00ch], al ; 26 88 47 0c ; 0xf25ef + mov cx, strict word 00001h ; b9 01 00 ; 0xf25f3 ata.c:603 + mov bx, 000a1h ; bb a1 00 ; 0xf25f6 + mov ax, word [bp-01eh] ; 8b 46 e2 ; 0xf25f9 + mov dx, es ; 8c c2 ; 0xf25fc + call 01efah ; e8 f9 f8 ; 0xf25fe + test ax, ax ; 85 c0 ; 0xf2601 + je short 02610h ; 74 0b ; 0xf2603 + push 00186h ; 68 86 01 ; 0xf2605 ata.c:604 + push strict byte 00007h ; 6a 07 ; 0xf2608 + call 01a14h ; e8 07 f4 ; 0xf260a + add sp, strict byte 00004h ; 83 c4 04 ; 0xf260d + mov cl, byte [bp-00265h] ; 8a 8e 9b fd ; 0xf2610 ata.c:606 + and cl, 01fh ; 80 e1 1f ; 0xf2614 + test byte [bp-00266h], 080h ; f6 86 9a fd 80 ; 0xf2617 ata.c:607 + db 00fh, 095h, 0c0h + ; setne al ; 0f 95 c0 ; 0xf261c + xor ah, ah ; 30 e4 ; 0xf261f + mov dx, ax ; 89 c2 ; 0xf2621 + cmp byte [bp-00206h], 000h ; 80 be fa fd 00 ; 0xf2623 ata.c:609 + db 00fh, 095h, 0c0h + ; setne al ; 0f 95 c0 ; 0xf2628 + xor ah, ah ; 30 e4 ; 0xf262b + movzx bx, byte [bp-016h] ; 0f b6 5e ea ; 0xf262d ata.c:615 + imul bx, bx, strict byte 0001ch ; 6b db 1c ; 0xf2631 + mov es, [bp-030h] ; 8e 46 d0 ; 0xf2634 + add bx, word [bp-01eh] ; 03 5e e2 ; 0xf2637 + mov byte [es:bx+023h], cl ; 26 88 4f 23 ; 0xf263a + mov byte [es:bx+024h], dl ; 26 88 57 24 ; 0xf263e ata.c:616 + mov byte [es:bx+026h], al ; 26 88 47 26 ; 0xf2642 ata.c:617 + mov word [es:bx+028h], 00800h ; 26 c7 47 28 00 08 ; 0xf2646 ata.c:618 + movzx bx, byte [bp-00ah] ; 0f b6 5e f6 ; 0xf264c ata.c:621 + add bx, word [bp-01eh] ; 03 5e e2 ; 0xf2650 + mov al, byte [bp-016h] ; 8a 46 ea ; 0xf2653 + mov byte [es:bx+001f4h], al ; 26 88 87 f4 01 ; 0xf2656 + inc byte [bp-00ah] ; fe 46 f6 ; 0xf265b ata.c:622 + mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf265e ata.c:631 + cmp AL, strict byte 003h ; 3c 03 ; 0xf2661 + je short 02694h ; 74 2f ; 0xf2663 + cmp AL, strict byte 002h ; 3c 02 ; 0xf2665 + jne near 026f7h ; 0f 85 8c 00 ; 0xf2667 + movzx si, byte [bp-016h] ; 0f b6 76 ea ; 0xf266b ata.c:633 + imul si, si, strict byte 0001ch ; 6b f6 1c ; 0xf266f + mov es, [bp-030h] ; 8e 46 d0 ; 0xf2672 + add si, word [bp-01eh] ; 03 76 e2 ; 0xf2675 + mov ax, word [es:si+03ch] ; 26 8b 44 3c ; 0xf2678 + mov bx, word [es:si+03ah] ; 26 8b 5c 3a ; 0xf267c + mov cx, word [es:si+038h] ; 26 8b 4c 38 ; 0xf2680 + mov dx, word [es:si+036h] ; 26 8b 54 36 ; 0xf2684 + mov si, strict word 0000bh ; be 0b 00 ; 0xf2688 + call 09f90h ; e8 02 79 ; 0xf268b + mov word [bp-02ah], dx ; 89 56 d6 ; 0xf268e + mov word [bp-028h], cx ; 89 4e d8 ; 0xf2691 + movzx dx, byte [bp-001c5h] ; 0f b6 96 3b fe ; 0xf2694 ata.c:636 + sal dx, 008h ; c1 e2 08 ; 0xf2699 + movzx ax, byte [bp-001c6h] ; 0f b6 86 3a fe ; 0xf269c + or ax, dx ; 09 d0 ; 0xf26a1 + mov byte [bp-014h], 00fh ; c6 46 ec 0f ; 0xf26a3 ata.c:637 + jmp short 026b2h ; eb 09 ; 0xf26a7 + dec byte [bp-014h] ; fe 4e ec ; 0xf26a9 ata.c:640 + cmp byte [bp-014h], 000h ; 80 7e ec 00 ; 0xf26ac + jbe short 026bfh ; 76 0d ; 0xf26b0 + movzx cx, byte [bp-014h] ; 0f b6 4e ec ; 0xf26b2 + mov dx, strict word 00001h ; ba 01 00 ; 0xf26b6 + sal dx, CL ; d3 e2 ; 0xf26b9 + test ax, dx ; 85 d0 ; 0xf26bb + je short 026a9h ; 74 ea ; 0xf26bd + xor di, di ; 31 ff ; 0xf26bf ata.c:643 + jmp short 026c8h ; eb 05 ; 0xf26c1 + cmp di, strict byte 00014h ; 83 ff 14 ; 0xf26c3 + jnl short 026ddh ; 7d 15 ; 0xf26c6 + mov si, di ; 89 fe ; 0xf26c8 ata.c:644 + add si, di ; 01 fe ; 0xf26ca + mov al, byte [bp+si-0022fh] ; 8a 82 d1 fd ; 0xf26cc + mov byte [bp+si-066h], al ; 88 42 9a ; 0xf26d0 + mov al, byte [bp+si-00230h] ; 8a 82 d0 fd ; 0xf26d3 ata.c:645 + mov byte [bp+si-065h], al ; 88 42 9b ; 0xf26d7 + inc di ; 47 ; 0xf26da ata.c:646 + jmp short 026c3h ; eb e6 ; 0xf26db + mov byte [bp-03eh], 000h ; c6 46 c2 00 ; 0xf26dd ata.c:649 + mov di, strict word 00027h ; bf 27 00 ; 0xf26e1 ata.c:650 + jmp short 026ebh ; eb 05 ; 0xf26e4 + dec di ; 4f ; 0xf26e6 ata.c:655 + test di, di ; 85 ff ; 0xf26e7 + jle short 026f7h ; 7e 0c ; 0xf26e9 + cmp byte [bp+di-066h], 020h ; 80 7b 9a 20 ; 0xf26eb + jne short 026f7h ; 75 06 ; 0xf26ef + mov byte [bp+di-066h], 000h ; c6 43 9a 00 ; 0xf26f1 + jmp short 026e6h ; eb ef ; 0xf26f5 + mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf26f7 ata.c:662 + cmp AL, strict byte 003h ; 3c 03 ; 0xf26fa + je short 0275ah ; 74 5c ; 0xf26fc + cmp AL, strict byte 002h ; 3c 02 ; 0xf26fe + je short 0270bh ; 74 09 ; 0xf2700 + cmp AL, strict byte 001h ; 3c 01 ; 0xf2702 + je near 027c2h ; 0f 84 ba 00 ; 0xf2704 + jmp near 027e1h ; e9 d6 00 ; 0xf2708 + cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf270b ata.c:665 + je short 02716h ; 74 05 ; 0xf270f + mov ax, 001b1h ; b8 b1 01 ; 0xf2711 + jmp short 02719h ; eb 03 ; 0xf2714 + mov ax, 001b8h ; b8 b8 01 ; 0xf2716 + push ax ; 50 ; 0xf2719 + movzx ax, byte [bp-00ch] ; 0f b6 46 f4 ; 0xf271a + push ax ; 50 ; 0xf271e + push 001bfh ; 68 bf 01 ; 0xf271f + push strict byte 00002h ; 6a 02 ; 0xf2722 + call 01a14h ; e8 ed f2 ; 0xf2724 + add sp, strict byte 00008h ; 83 c4 08 ; 0xf2727 + xor di, di ; 31 ff ; 0xf272a ata.c:666 + movzx ax, byte [bp+di-066h] ; 0f b6 43 9a ; 0xf272c ata.c:667 + inc di ; 47 ; 0xf2730 + test ax, ax ; 85 c0 ; 0xf2731 + je short 02743h ; 74 0e ; 0xf2733 + push ax ; 50 ; 0xf2735 ata.c:668 + push 001cah ; 68 ca 01 ; 0xf2736 + push strict byte 00002h ; 6a 02 ; 0xf2739 + call 01a14h ; e8 d6 f2 ; 0xf273b + add sp, strict byte 00006h ; 83 c4 06 ; 0xf273e + jmp short 0272ch ; eb e9 ; 0xf2741 + push dword [bp-02ah] ; 66 ff 76 d6 ; 0xf2743 ata.c:669 + movzx ax, byte [bp-014h] ; 0f b6 46 ec ; 0xf2747 + push ax ; 50 ; 0xf274b + push 001cdh ; 68 cd 01 ; 0xf274c + push strict byte 00002h ; 6a 02 ; 0xf274f + call 01a14h ; e8 c0 f2 ; 0xf2751 + add sp, strict byte 0000ah ; 83 c4 0a ; 0xf2754 + jmp near 027e1h ; e9 87 00 ; 0xf2757 ata.c:670 + cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf275a ata.c:672 + je short 02765h ; 74 05 ; 0xf275e + mov ax, 001b1h ; b8 b1 01 ; 0xf2760 + jmp short 02768h ; eb 03 ; 0xf2763 + mov ax, 001b8h ; b8 b8 01 ; 0xf2765 + push ax ; 50 ; 0xf2768 + movzx ax, byte [bp-00ch] ; 0f b6 46 f4 ; 0xf2769 + push ax ; 50 ; 0xf276d + push 001bfh ; 68 bf 01 ; 0xf276e + push strict byte 00002h ; 6a 02 ; 0xf2771 + call 01a14h ; e8 9e f2 ; 0xf2773 + add sp, strict byte 00008h ; 83 c4 08 ; 0xf2776 + xor di, di ; 31 ff ; 0xf2779 ata.c:673 + movzx ax, byte [bp+di-066h] ; 0f b6 43 9a ; 0xf277b ata.c:674 + inc di ; 47 ; 0xf277f + test ax, ax ; 85 c0 ; 0xf2780 + je short 02792h ; 74 0e ; 0xf2782 + push ax ; 50 ; 0xf2784 ata.c:675 + push 001cah ; 68 ca 01 ; 0xf2785 + push strict byte 00002h ; 6a 02 ; 0xf2788 + call 01a14h ; e8 87 f2 ; 0xf278a + add sp, strict byte 00006h ; 83 c4 06 ; 0xf278d + jmp short 0277bh ; eb e9 ; 0xf2790 + movzx bx, byte [bp-016h] ; 0f b6 5e ea ; 0xf2792 ata.c:676 + imul bx, bx, strict byte 0001ch ; 6b db 1c ; 0xf2796 + mov es, [bp-030h] ; 8e 46 d0 ; 0xf2799 + add bx, word [bp-01eh] ; 03 5e e2 ; 0xf279c + cmp byte [es:bx+023h], 005h ; 26 80 7f 23 05 ; 0xf279f + jne short 027b0h ; 75 0a ; 0xf27a4 + movzx ax, byte [bp-014h] ; 0f b6 46 ec ; 0xf27a6 ata.c:677 + push ax ; 50 ; 0xf27aa + push 001edh ; 68 ed 01 ; 0xf27ab + jmp short 027b8h ; eb 08 ; 0xf27ae ata.c:678 + movzx ax, byte [bp-014h] ; 0f b6 46 ec ; 0xf27b0 ata.c:679 + push ax ; 50 ; 0xf27b4 + push 00207h ; 68 07 02 ; 0xf27b5 + push strict byte 00002h ; 6a 02 ; 0xf27b8 + call 01a14h ; e8 57 f2 ; 0xf27ba + add sp, strict byte 00006h ; 83 c4 06 ; 0xf27bd + jmp short 027e1h ; eb 1f ; 0xf27c0 ata.c:680 + cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf27c2 ata.c:682 + je short 027cdh ; 74 05 ; 0xf27c6 + mov ax, 001b1h ; b8 b1 01 ; 0xf27c8 + jmp short 027d0h ; eb 03 ; 0xf27cb + mov ax, 001b8h ; b8 b8 01 ; 0xf27cd + push ax ; 50 ; 0xf27d0 + movzx ax, byte [bp-00ch] ; 0f b6 46 f4 ; 0xf27d1 + push ax ; 50 ; 0xf27d5 + push 00219h ; 68 19 02 ; 0xf27d6 + push strict byte 00002h ; 6a 02 ; 0xf27d9 + call 01a14h ; e8 36 f2 ; 0xf27db + add sp, strict byte 00008h ; 83 c4 08 ; 0xf27de + inc byte [bp-016h] ; fe 46 ea ; 0xf27e1 ata.c:687 + cmp byte [bp-016h], 008h ; 80 7e ea 08 ; 0xf27e4 + jnc short 0283bh ; 73 51 ; 0xf27e8 + movzx bx, byte [bp-016h] ; 0f b6 5e ea ; 0xf27ea + mov ax, bx ; 89 d8 ; 0xf27ee + cwd ; 99 ; 0xf27f0 + db 02bh, 0c2h + ; sub ax, dx ; 2b c2 ; 0xf27f1 + sar ax, 1 ; d1 f8 ; 0xf27f3 + mov word [bp-034h], ax ; 89 46 cc ; 0xf27f5 + mov al, byte [bp-034h] ; 8a 46 cc ; 0xf27f8 + mov byte [bp-00ch], al ; 88 46 f4 ; 0xf27fb + mov ax, bx ; 89 d8 ; 0xf27fe + cwd ; 99 ; 0xf2800 + mov bx, strict word 00002h ; bb 02 00 ; 0xf2801 + idiv bx ; f7 fb ; 0xf2804 + mov cx, dx ; 89 d1 ; 0xf2806 + mov byte [bp-006h], dl ; 88 56 fa ; 0xf2808 + movzx ax, byte [bp-034h] ; 0f b6 46 cc ; 0xf280b + imul ax, ax, strict byte 00006h ; 6b c0 06 ; 0xf280f + mov es, [bp-030h] ; 8e 46 d0 ; 0xf2812 + mov si, word [bp-01eh] ; 8b 76 e2 ; 0xf2815 + add si, ax ; 01 c6 ; 0xf2818 + mov bx, word [es:si+00206h] ; 26 8b 9c 06 02 ; 0xf281a + mov ax, word [es:si+00208h] ; 26 8b 84 08 02 ; 0xf281f + mov word [bp-026h], ax ; 89 46 da ; 0xf2824 + mov dx, ax ; 89 c2 ; 0xf2827 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2829 + mov AL, strict byte 00ah ; b0 0a ; 0xf282c + out DX, AL ; ee ; 0xf282e + test cl, cl ; 84 c9 ; 0xf282f + je near 02238h ; 0f 84 03 fa ; 0xf2831 + mov ax, 000b0h ; b8 b0 00 ; 0xf2835 + jmp near 0223bh ; e9 00 fa ; 0xf2838 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf283b ata.c:690 + mov es, [bp-030h] ; 8e 46 d0 ; 0xf283e + mov bx, word [bp-01eh] ; 8b 5e e2 ; 0xf2841 + mov byte [es:bx+001e2h], al ; 26 88 87 e2 01 ; 0xf2844 + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf2849 ata.c:691 + mov byte [es:bx+001f3h], al ; 26 88 87 f3 01 ; 0xf284c + mov bx, strict word 00075h ; bb 75 00 ; 0xf2851 ata.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf2854 + mov es, ax ; 8e c0 ; 0xf2857 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf2859 + mov byte [es:bx], al ; 26 88 07 ; 0xf285c + lea sp, [bp-004h] ; 8d 66 fc ; 0xf285f ata.c:704 + pop di ; 5f ; 0xf2862 + pop si ; 5e ; 0xf2863 + pop bp ; 5d ; 0xf2864 + retn ; c3 ; 0xf2865 + ; disGetNextSymbol 0xf2866 LB 0x77df -> off=0x0 cb=00000000000002bc uValue=00000000000f1266 'ata_cmd_data_out' +ata_cmd_data_out: ; 0xf2866 LB 0x2bc + push bp ; 55 ; 0xf2866 ata.c:718 + mov bp, sp ; 89 e5 ; 0xf2867 + push si ; 56 ; 0xf2869 + push di ; 57 ; 0xf286a + sub sp, strict byte 00022h ; 83 ec 22 ; 0xf286b + mov di, ax ; 89 c7 ; 0xf286e + mov word [bp-00ch], dx ; 89 56 f4 ; 0xf2870 + mov word [bp-024h], bx ; 89 5e dc ; 0xf2873 + mov word [bp-01ah], cx ; 89 4e e6 ; 0xf2876 + mov es, dx ; 8e c2 ; 0xf2879 ata.c:730 + movzx ax, byte [es:di+00ch] ; 26 0f b6 45 0c ; 0xf287b + mov dx, ax ; 89 c2 ; 0xf2880 ata.c:731 + shr dx, 1 ; d1 ea ; 0xf2882 + mov dh, al ; 88 c6 ; 0xf2884 ata.c:732 + and dh, 001h ; 80 e6 01 ; 0xf2886 + mov byte [bp-006h], dh ; 88 76 fa ; 0xf2889 + xor dh, dh ; 30 f6 ; 0xf288c ata.c:734 + imul dx, dx, strict byte 00006h ; 6b d2 06 ; 0xf288e + mov bx, di ; 89 fb ; 0xf2891 + add bx, dx ; 01 d3 ; 0xf2893 + mov dx, word [es:bx+00206h] ; 26 8b 97 06 02 ; 0xf2895 + mov word [bp-00ah], dx ; 89 56 f6 ; 0xf289a + mov dx, word [es:bx+00208h] ; 26 8b 97 08 02 ; 0xf289d ata.c:735 + mov word [bp-012h], dx ; 89 56 ee ; 0xf28a2 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf28a5 ata.c:736 + mov bx, di ; 89 fb ; 0xf28a8 + add bx, ax ; 01 c3 ; 0xf28aa + mov al, byte [es:bx+026h] ; 26 8a 47 26 ; 0xf28ac + mov byte [bp-008h], al ; 88 46 f8 ; 0xf28b0 + cmp AL, strict byte 001h ; 3c 01 ; 0xf28b3 ata.c:739 + jne short 028beh ; 75 07 ; 0xf28b5 + mov word [bp-020h], 00080h ; c7 46 e0 80 00 ; 0xf28b7 ata.c:740 + jmp short 028c3h ; eb 05 ; 0xf28bc ata.c:741 + mov word [bp-020h], 00100h ; c7 46 e0 00 01 ; 0xf28be ata.c:743 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf28c3 ata.c:745 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf28c6 + in AL, DX ; ec ; 0xf28c9 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf28ca + test AL, strict byte 080h ; a8 80 ; 0xf28cc ata.c:746 + je short 028dfh ; 74 0f ; 0xf28ce + mov dx, word [bp-012h] ; 8b 56 ee ; 0xf28d0 ata.c:749 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf28d3 + mov AL, strict byte 008h ; b0 08 ; 0xf28d6 + out DX, AL ; ee ; 0xf28d8 + mov dx, strict word 00001h ; ba 01 00 ; 0xf28d9 ata.c:750 + jmp near 02b19h ; e9 3a 02 ; 0xf28dc + mov es, [bp-00ch] ; 8e 46 f4 ; 0xf28df ata.c:753 + mov ax, word [es:di+006h] ; 26 8b 45 06 ; 0xf28e2 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf28e6 + mov ax, word [es:di+004h] ; 26 8b 45 04 ; 0xf28e9 + mov word [bp-014h], ax ; 89 46 ec ; 0xf28ed + mov ax, word [es:di+002h] ; 26 8b 45 02 ; 0xf28f0 + mov word [bp-016h], ax ; 89 46 ea ; 0xf28f4 + mov ax, word [es:di] ; 26 8b 05 ; 0xf28f7 + mov word [bp-01eh], ax ; 89 46 e2 ; 0xf28fa + mov ax, word [es:di+008h] ; 26 8b 45 08 ; 0xf28fd ata.c:754 + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf2901 + mov ax, word [es:di+00ah] ; 26 8b 45 0a ; 0xf2904 + mov word [bp-018h], ax ; 89 46 e8 ; 0xf2908 + mov ax, word [es:di+016h] ; 26 8b 45 16 ; 0xf290b ata.c:755 + mov word [bp-01ch], ax ; 89 46 e4 ; 0xf290f + mov ax, word [es:di+012h] ; 26 8b 45 12 ; 0xf2912 ata.c:756 + mov word [bp-026h], ax ; 89 46 da ; 0xf2916 + mov ax, word [es:di+014h] ; 26 8b 45 14 ; 0xf2919 ata.c:757 + mov word [bp-022h], ax ; 89 46 de ; 0xf291d + mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xf2920 ata.c:760 + test ax, ax ; 85 c0 ; 0xf2923 + jne near 029f0h ; 0f 85 c7 00 ; 0xf2925 + xor dx, dx ; 31 d2 ; 0xf2929 ata.c:761 + xor bx, bx ; 31 db ; 0xf292b + mov si, word [bp-01eh] ; 8b 76 e2 ; 0xf292d + add si, word [bp-01ah] ; 03 76 e6 ; 0xf2930 + adc dx, word [bp-016h] ; 13 56 ea ; 0xf2933 + adc bx, word [bp-014h] ; 13 5e ec ; 0xf2936 + adc ax, word [bp-010h] ; 13 46 f0 ; 0xf2939 + test ax, ax ; 85 c0 ; 0xf293c + jnbe short 02950h ; 77 10 ; 0xf293e + jne short 029b3h ; 75 71 ; 0xf2940 + test bx, bx ; 85 db ; 0xf2942 + jnbe short 02950h ; 77 0a ; 0xf2944 + jne short 029b3h ; 75 6b ; 0xf2946 + cmp dx, 01000h ; 81 fa 00 10 ; 0xf2948 + jnbe short 02950h ; 77 02 ; 0xf294c + jne short 029b3h ; 75 63 ; 0xf294e + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf2950 ata.c:763 + mov bx, word [bp-014h] ; 8b 5e ec ; 0xf2953 + mov cx, word [bp-016h] ; 8b 4e ea ; 0xf2956 + mov dx, word [bp-01eh] ; 8b 56 e2 ; 0xf2959 + mov si, strict word 00018h ; be 18 00 ; 0xf295c + call 09f90h ; e8 2e 76 ; 0xf295f + xor dh, dh ; 30 f6 ; 0xf2962 + mov word [bp-01ch], dx ; 89 56 e4 ; 0xf2964 + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf2967 ata.c:764 + mov bx, word [bp-014h] ; 8b 5e ec ; 0xf296a + mov cx, word [bp-016h] ; 8b 4e ea ; 0xf296d + mov dx, word [bp-01eh] ; 8b 56 e2 ; 0xf2970 + mov si, strict word 00020h ; be 20 00 ; 0xf2973 + call 09f90h ; e8 17 76 ; 0xf2976 + mov bx, dx ; 89 d3 ; 0xf2979 + mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xf297b ata.c:765 + xor al, al ; 30 c0 ; 0xf297e + shr ax, 008h ; c1 e8 08 ; 0xf2980 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2983 + inc dx ; 42 ; 0xf2986 + inc dx ; 42 ; 0xf2987 + out DX, AL ; ee ; 0xf2988 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2989 ata.c:766 + add dx, strict byte 00003h ; 83 c2 03 ; 0xf298c + mov al, byte [bp-01ch] ; 8a 46 e4 ; 0xf298f + out DX, AL ; ee ; 0xf2992 + mov ax, bx ; 89 d8 ; 0xf2993 ata.c:767 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2995 + add dx, strict byte 00004h ; 83 c2 04 ; 0xf2998 + out DX, AL ; ee ; 0xf299b + shr ax, 008h ; c1 e8 08 ; 0xf299c ata.c:768 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf299f + add dx, strict byte 00005h ; 83 c2 05 ; 0xf29a2 + out DX, AL ; ee ; 0xf29a5 + xor al, al ; 30 c0 ; 0xf29a6 ata.c:771 + mov byte [bp-015h], al ; 88 46 eb ; 0xf29a8 + xor ah, ah ; 30 e4 ; 0xf29ab + mov word [bp-014h], ax ; 89 46 ec ; 0xf29ad + mov word [bp-010h], ax ; 89 46 f0 ; 0xf29b0 + mov ax, word [bp-01eh] ; 8b 46 e2 ; 0xf29b3 ata.c:773 + xor ah, ah ; 30 e4 ; 0xf29b6 + mov word [bp-01ch], ax ; 89 46 e4 ; 0xf29b8 + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf29bb ata.c:774 + mov bx, word [bp-014h] ; 8b 5e ec ; 0xf29be + mov cx, word [bp-016h] ; 8b 4e ea ; 0xf29c1 + mov dx, word [bp-01eh] ; 8b 56 e2 ; 0xf29c4 + mov si, strict word 00008h ; be 08 00 ; 0xf29c7 + call 09f90h ; e8 c3 75 ; 0xf29ca + mov word [bp-010h], ax ; 89 46 f0 ; 0xf29cd + mov word [bp-014h], bx ; 89 5e ec ; 0xf29d0 + mov word [bp-016h], cx ; 89 4e ea ; 0xf29d3 + mov word [bp-01eh], dx ; 89 56 e2 ; 0xf29d6 + mov word [bp-026h], dx ; 89 56 da ; 0xf29d9 ata.c:775 + mov si, strict word 00010h ; be 10 00 ; 0xf29dc ata.c:776 + call 09f90h ; e8 ae 75 ; 0xf29df + mov word [bp-01eh], dx ; 89 56 e2 ; 0xf29e2 + mov ax, dx ; 89 d0 ; 0xf29e5 ata.c:777 + xor ah, dh ; 30 f4 ; 0xf29e7 + and AL, strict byte 00fh ; 24 0f ; 0xf29e9 + or AL, strict byte 040h ; 0c 40 ; 0xf29eb + mov word [bp-022h], ax ; 89 46 de ; 0xf29ed + mov dx, word [bp-012h] ; 8b 56 ee ; 0xf29f0 ata.c:780 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf29f3 + mov AL, strict byte 00ah ; b0 0a ; 0xf29f6 + out DX, AL ; ee ; 0xf29f8 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf29f9 ata.c:781 + inc dx ; 42 ; 0xf29fc + xor al, al ; 30 c0 ; 0xf29fd + out DX, AL ; ee ; 0xf29ff + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2a00 ata.c:782 + inc dx ; 42 ; 0xf2a03 + inc dx ; 42 ; 0xf2a04 + mov al, byte [bp-01ah] ; 8a 46 e6 ; 0xf2a05 + out DX, AL ; ee ; 0xf2a08 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2a09 ata.c:783 + add dx, strict byte 00003h ; 83 c2 03 ; 0xf2a0c + mov al, byte [bp-01ch] ; 8a 46 e4 ; 0xf2a0f + out DX, AL ; ee ; 0xf2a12 + mov ax, word [bp-026h] ; 8b 46 da ; 0xf2a13 ata.c:784 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2a16 + add dx, strict byte 00004h ; 83 c2 04 ; 0xf2a19 + out DX, AL ; ee ; 0xf2a1c + shr ax, 008h ; c1 e8 08 ; 0xf2a1d ata.c:785 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2a20 + add dx, strict byte 00005h ; 83 c2 05 ; 0xf2a23 + out DX, AL ; ee ; 0xf2a26 + cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf2a27 ata.c:786 + je short 02a32h ; 74 05 ; 0xf2a2b + mov ax, 000b0h ; b8 b0 00 ; 0xf2a2d + jmp short 02a35h ; eb 03 ; 0xf2a30 + mov ax, 000a0h ; b8 a0 00 ; 0xf2a32 + movzx dx, byte [bp-022h] ; 0f b6 56 de ; 0xf2a35 + or ax, dx ; 09 d0 ; 0xf2a39 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2a3b + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2a3e + out DX, AL ; ee ; 0xf2a41 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2a42 ata.c:787 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf2a45 + mov al, byte [bp-024h] ; 8a 46 dc ; 0xf2a48 + out DX, AL ; ee ; 0xf2a4b + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2a4c ata.c:790 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf2a4f + in AL, DX ; ec ; 0xf2a52 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2a53 + mov dl, al ; 88 c2 ; 0xf2a55 + test AL, strict byte 080h ; a8 80 ; 0xf2a57 ata.c:791 + jne short 02a4ch ; 75 f1 ; 0xf2a59 + test AL, strict byte 001h ; a8 01 ; 0xf2a5b ata.c:795 + je short 02a6eh ; 74 0f ; 0xf2a5d + mov dx, word [bp-012h] ; 8b 56 ee ; 0xf2a5f ata.c:798 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2a62 + mov AL, strict byte 008h ; b0 08 ; 0xf2a65 + out DX, AL ; ee ; 0xf2a67 + mov dx, strict word 00002h ; ba 02 00 ; 0xf2a68 ata.c:799 + jmp near 02b19h ; e9 ab 00 ; 0xf2a6b + test dl, 008h ; f6 c2 08 ; 0xf2a6e ata.c:800 + jne short 02a82h ; 75 0f ; 0xf2a71 + mov dx, word [bp-012h] ; 8b 56 ee ; 0xf2a73 ata.c:803 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2a76 + mov AL, strict byte 008h ; b0 08 ; 0xf2a79 + out DX, AL ; ee ; 0xf2a7b + mov dx, strict word 00003h ; ba 03 00 ; 0xf2a7c ata.c:804 + jmp near 02b19h ; e9 97 00 ; 0xf2a7f + sti ; fb ; 0xf2a82 ata.c:809 + mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf2a83 ata.c:814 + cmp ax, 0f800h ; 3d 00 f8 ; 0xf2a86 + jc short 02a9bh ; 72 10 ; 0xf2a89 + sub ax, 00800h ; 2d 00 08 ; 0xf2a8b ata.c:815 + mov dx, word [bp-018h] ; 8b 56 e8 ; 0xf2a8e + add dx, 00080h ; 81 c2 80 00 ; 0xf2a91 + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf2a95 + mov word [bp-018h], dx ; 89 56 e8 ; 0xf2a98 + cmp byte [bp-008h], 001h ; 80 7e f8 01 ; 0xf2a9b ata.c:818 + jne short 02ab3h ; 75 12 ; 0xf2a9f + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2aa1 ata.c:819 + mov cx, word [bp-020h] ; 8b 4e e0 ; 0xf2aa4 + mov si, word [bp-00eh] ; 8b 76 f2 ; 0xf2aa7 + mov es, [bp-018h] ; 8e 46 e8 ; 0xf2aaa + db 0f3h, 066h, 026h, 06fh + ; rep es outsd ; f3 66 26 6f ; 0xf2aad + jmp short 02ac2h ; eb 0f ; 0xf2ab1 ata.c:820 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2ab3 ata.c:822 + mov cx, word [bp-020h] ; 8b 4e e0 ; 0xf2ab6 + mov si, word [bp-00eh] ; 8b 76 f2 ; 0xf2ab9 + mov es, [bp-018h] ; 8e 46 e8 ; 0xf2abc + db 0f3h, 026h, 06fh + ; rep es outsw ; f3 26 6f ; 0xf2abf + mov word [bp-00eh], si ; 89 76 f2 ; 0xf2ac2 + mov es, [bp-00ch] ; 8e 46 f4 ; 0xf2ac5 ata.c:824 + inc word [es:di+018h] ; 26 ff 45 18 ; 0xf2ac8 + dec word [bp-01ah] ; ff 4e e6 ; 0xf2acc ata.c:825 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2acf ata.c:827 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf2ad2 + in AL, DX ; ec ; 0xf2ad5 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2ad6 + mov dl, al ; 88 c2 ; 0xf2ad8 + test AL, strict byte 080h ; a8 80 ; 0xf2ada ata.c:828 + jne short 02acfh ; 75 f1 ; 0xf2adc + cmp word [bp-01ah], strict byte 00000h ; 83 7e e6 00 ; 0xf2ade ata.c:831 + jne short 02af8h ; 75 14 ; 0xf2ae2 + and AL, strict byte 0e9h ; 24 e9 ; 0xf2ae4 ata.c:832 + cmp AL, strict byte 040h ; 3c 40 ; 0xf2ae6 + je short 02b0eh ; 74 24 ; 0xf2ae8 + mov dx, word [bp-012h] ; 8b 56 ee ; 0xf2aea ata.c:836 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2aed + mov AL, strict byte 008h ; b0 08 ; 0xf2af0 + out DX, AL ; ee ; 0xf2af2 + mov dx, strict word 00006h ; ba 06 00 ; 0xf2af3 ata.c:837 + jmp short 02b19h ; eb 21 ; 0xf2af6 + mov al, dl ; 88 d0 ; 0xf2af8 ata.c:842 + and AL, strict byte 0c9h ; 24 c9 ; 0xf2afa + cmp AL, strict byte 048h ; 3c 48 ; 0xf2afc + je short 02a83h ; 74 83 ; 0xf2afe + mov dx, word [bp-012h] ; 8b 56 ee ; 0xf2b00 ata.c:846 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2b03 + mov AL, strict byte 008h ; b0 08 ; 0xf2b06 + out DX, AL ; ee ; 0xf2b08 + mov dx, strict word 00007h ; ba 07 00 ; 0xf2b09 ata.c:847 + jmp short 02b19h ; eb 0b ; 0xf2b0c + mov dx, word [bp-012h] ; 8b 56 ee ; 0xf2b0e ata.c:853 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2b11 + mov AL, strict byte 008h ; b0 08 ; 0xf2b14 + out DX, AL ; ee ; 0xf2b16 + xor dx, dx ; 31 d2 ; 0xf2b17 ata.c:854 + mov ax, dx ; 89 d0 ; 0xf2b19 ata.c:855 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf2b1b + pop di ; 5f ; 0xf2b1e + pop si ; 5e ; 0xf2b1f + pop bp ; 5d ; 0xf2b20 + retn ; c3 ; 0xf2b21 + ; disGetNextSymbol 0xf2b22 LB 0x7523 -> off=0x0 cb=00000000000000b5 uValue=00000000000f1522 'ata_read_sectors' +ata_read_sectors: ; 0xf2b22 LB 0xb5 + push bp ; 55 ; 0xf2b22 ata.c:865 + mov bp, sp ; 89 e5 ; 0xf2b23 + push si ; 56 ; 0xf2b25 + push di ; 57 ; 0xf2b26 + sub sp, strict byte 00008h ; 83 ec 08 ; 0xf2b27 + mov si, word [bp+004h] ; 8b 76 04 ; 0xf2b2a + mov es, [bp+006h] ; 8e 46 06 ; 0xf2b2d ata.c:871 + mov al, byte [es:si+00ch] ; 26 8a 44 0c ; 0xf2b30 + mov cx, word [es:si+00eh] ; 26 8b 4c 0e ; 0xf2b34 ata.c:872 + mov dx, cx ; 89 ca ; 0xf2b38 + sal dx, 009h ; c1 e2 09 ; 0xf2b3a + cmp word [es:si+016h], strict byte 00000h ; 26 83 7c 16 00 ; 0xf2b3d ata.c:874 + je short 02b63h ; 74 1f ; 0xf2b42 + xor ah, ah ; 30 e4 ; 0xf2b44 ata.c:876 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf2b46 + mov [bp-00ah], es ; 8c 46 f6 ; 0xf2b49 + mov di, si ; 89 f7 ; 0xf2b4c + add di, ax ; 01 c7 ; 0xf2b4e + mov word [es:di+028h], dx ; 26 89 55 28 ; 0xf2b50 + mov bx, 000c4h ; bb c4 00 ; 0xf2b54 ata.c:878 + mov ax, si ; 89 f0 ; 0xf2b57 + mov dx, es ; 8c c2 ; 0xf2b59 + call 01efah ; e8 9c f3 ; 0xf2b5b + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf2b5e ata.c:879 + jmp short 02bc8h ; eb 65 ; 0xf2b61 ata.c:880 + xor bx, bx ; 31 db ; 0xf2b63 ata.c:882 + mov word [bp-00ah], bx ; 89 5e f6 ; 0xf2b65 + mov word [bp-00ch], bx ; 89 5e f4 ; 0xf2b68 + mov di, word [es:si] ; 26 8b 3c ; 0xf2b6b + add di, cx ; 01 cf ; 0xf2b6e + mov word [bp-008h], di ; 89 7e f8 ; 0xf2b70 + mov di, word [es:si+002h] ; 26 8b 7c 02 ; 0xf2b73 + adc di, bx ; 11 df ; 0xf2b77 + mov word [bp-006h], di ; 89 7e fa ; 0xf2b79 + mov bx, word [es:si+004h] ; 26 8b 5c 04 ; 0xf2b7c + adc bx, word [bp-00ah] ; 13 5e f6 ; 0xf2b80 + mov di, word [es:si+006h] ; 26 8b 7c 06 ; 0xf2b83 + adc di, word [bp-00ch] ; 13 7e f4 ; 0xf2b87 + test di, di ; 85 ff ; 0xf2b8a + jnbe short 02b9fh ; 77 11 ; 0xf2b8c + jne short 02babh ; 75 1b ; 0xf2b8e + test bx, bx ; 85 db ; 0xf2b90 + jnbe short 02b9fh ; 77 0b ; 0xf2b92 + jne short 02babh ; 75 15 ; 0xf2b94 + cmp word [bp-006h], 01000h ; 81 7e fa 00 10 ; 0xf2b96 + jnbe short 02b9fh ; 77 02 ; 0xf2b9b + jne short 02babh ; 75 0c ; 0xf2b9d + mov bx, strict word 00024h ; bb 24 00 ; 0xf2b9f ata.c:884 + mov ax, si ; 89 f0 ; 0xf2ba2 + mov dx, es ; 8c c2 ; 0xf2ba4 + call 01efah ; e8 51 f3 ; 0xf2ba6 + jmp short 02bceh ; eb 23 ; 0xf2ba9 ata.c:885 + xor ah, ah ; 30 e4 ; 0xf2bab ata.c:886 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf2bad + mov [bp-006h], es ; 8c 46 fa ; 0xf2bb0 + mov di, si ; 89 f7 ; 0xf2bb3 + add di, ax ; 01 c7 ; 0xf2bb5 + mov word [es:di+028h], dx ; 26 89 55 28 ; 0xf2bb7 + mov bx, 000c4h ; bb c4 00 ; 0xf2bbb ata.c:888 + mov ax, si ; 89 f0 ; 0xf2bbe + mov dx, es ; 8c c2 ; 0xf2bc0 + call 01efah ; e8 35 f3 ; 0xf2bc2 + mov es, [bp-006h] ; 8e 46 fa ; 0xf2bc5 ata.c:889 + mov word [es:di+028h], 00200h ; 26 c7 45 28 00 02 ; 0xf2bc8 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf2bce ata.c:893 + pop di ; 5f ; 0xf2bd1 + pop si ; 5e ; 0xf2bd2 + pop bp ; 5d ; 0xf2bd3 + retn 00004h ; c2 04 00 ; 0xf2bd4 + ; disGetNextSymbol 0xf2bd7 LB 0x746e -> off=0x0 cb=000000000000005b uValue=00000000000f15d7 'ata_write_sectors' +ata_write_sectors: ; 0xf2bd7 LB 0x5b + push bp ; 55 ; 0xf2bd7 ata.c:902 + mov bp, sp ; 89 e5 ; 0xf2bd8 + push si ; 56 ; 0xf2bda + push di ; 57 ; 0xf2bdb + push ax ; 50 ; 0xf2bdc + les si, [bp+004h] ; c4 76 04 ; 0xf2bdd + mov cx, word [es:si+00eh] ; 26 8b 4c 0e ; 0xf2be0 ata.c:906 + cmp word [es:si+016h], strict byte 00000h ; 26 83 7c 16 00 ; 0xf2be4 ata.c:908 + je short 02bf7h ; 74 0c ; 0xf2be9 + mov bx, strict word 00030h ; bb 30 00 ; 0xf2beb ata.c:910 + mov ax, si ; 89 f0 ; 0xf2bee + mov dx, es ; 8c c2 ; 0xf2bf0 + call 02866h ; e8 71 fc ; 0xf2bf2 + jmp short 02c29h ; eb 32 ; 0xf2bf5 + xor ax, ax ; 31 c0 ; 0xf2bf7 ata.c:913 + xor bx, bx ; 31 db ; 0xf2bf9 + xor dx, dx ; 31 d2 ; 0xf2bfb + mov di, word [es:si] ; 26 8b 3c ; 0xf2bfd + add di, cx ; 01 cf ; 0xf2c00 + mov word [bp-006h], di ; 89 7e fa ; 0xf2c02 + adc ax, word [es:si+002h] ; 26 13 44 02 ; 0xf2c05 + adc bx, word [es:si+004h] ; 26 13 5c 04 ; 0xf2c09 + adc dx, word [es:si+006h] ; 26 13 54 06 ; 0xf2c0d + test dx, dx ; 85 d2 ; 0xf2c11 + jnbe short 02c24h ; 77 0f ; 0xf2c13 + jne short 02bebh ; 75 d4 ; 0xf2c15 + test bx, bx ; 85 db ; 0xf2c17 + jnbe short 02c24h ; 77 09 ; 0xf2c19 + jne short 02bebh ; 75 ce ; 0xf2c1b + cmp ax, 01000h ; 3d 00 10 ; 0xf2c1d + jnbe short 02c24h ; 77 02 ; 0xf2c20 + jne short 02bebh ; 75 c7 ; 0xf2c22 + mov bx, strict word 00034h ; bb 34 00 ; 0xf2c24 ata.c:914 + jmp short 02beeh ; eb c5 ; 0xf2c27 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf2c29 ata.c:918 + pop di ; 5f ; 0xf2c2c + pop si ; 5e ; 0xf2c2d + pop bp ; 5d ; 0xf2c2e + retn 00004h ; c2 04 00 ; 0xf2c2f + ; disGetNextSymbol 0xf2c32 LB 0x7413 -> off=0x0 cb=00000000000002df uValue=00000000000f1632 'ata_cmd_packet' +ata_cmd_packet: ; 0xf2c32 LB 0x2df + push bp ; 55 ; 0xf2c32 ata.c:930 + mov bp, sp ; 89 e5 ; 0xf2c33 + push si ; 56 ; 0xf2c35 + push di ; 57 ; 0xf2c36 + sub sp, strict byte 00014h ; 83 ec 14 ; 0xf2c37 + mov byte [bp-006h], dl ; 88 56 fa ; 0xf2c3a + mov di, bx ; 89 df ; 0xf2c3d + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf2c3f ata.c:48 + mov dx, strict word 00040h ; ba 40 00 ; 0xf2c42 + mov es, dx ; 8e c2 ; 0xf2c45 + mov dx, word [es:bx] ; 26 8b 17 ; 0xf2c47 + mov word [bp-012h], 00122h ; c7 46 ee 22 01 ; 0xf2c4a ata.c:49 + mov word [bp-010h], dx ; 89 56 f0 ; 0xf2c4f + mov dx, ax ; 89 c2 ; 0xf2c52 ata.c:942 + shr dx, 1 ; d1 ea ; 0xf2c54 + mov dh, al ; 88 c6 ; 0xf2c56 ata.c:943 + and dh, 001h ; 80 e6 01 ; 0xf2c58 + mov byte [bp-00ah], dh ; 88 76 f6 ; 0xf2c5b + cmp byte [bp+00ah], 002h ; 80 7e 0a 02 ; 0xf2c5e ata.c:946 + jne short 02c83h ; 75 1f ; 0xf2c62 + mov bx, 00db2h ; bb b2 0d ; 0xf2c64 ata.c:947 + mov cx, ds ; 8c d9 ; 0xf2c67 + mov ax, strict word 00004h ; b8 04 00 ; 0xf2c69 + call 019d3h ; e8 64 ed ; 0xf2c6c + push 00233h ; 68 33 02 ; 0xf2c6f + push 00242h ; 68 42 02 ; 0xf2c72 + push strict byte 00004h ; 6a 04 ; 0xf2c75 + call 01a14h ; e8 9a ed ; 0xf2c77 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf2c7a + mov dx, strict word 00001h ; ba 01 00 ; 0xf2c7d ata.c:948 + jmp near 02f06h ; e9 83 02 ; 0xf2c80 + test byte [bp+004h], 001h ; f6 46 04 01 ; 0xf2c83 ata.c:952 + jne short 02c7dh ; 75 f4 ; 0xf2c87 + xor dh, dh ; 30 f6 ; 0xf2c89 ata.c:957 + imul dx, dx, strict byte 00006h ; 6b d2 06 ; 0xf2c8b + les si, [bp-012h] ; c4 76 ee ; 0xf2c8e + add si, dx ; 01 d6 ; 0xf2c91 + mov bx, word [es:si+00206h] ; 26 8b 9c 06 02 ; 0xf2c93 + mov dx, word [es:si+00208h] ; 26 8b 94 08 02 ; 0xf2c98 ata.c:958 + mov word [bp-018h], dx ; 89 56 e8 ; 0xf2c9d + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf2ca0 ata.c:959 + mov si, word [bp-012h] ; 8b 76 ee ; 0xf2ca3 + add si, ax ; 01 c6 ; 0xf2ca6 + mov al, byte [es:si+026h] ; 26 8a 44 26 ; 0xf2ca8 + mov byte [bp-008h], al ; 88 46 f8 ; 0xf2cac + xor ax, ax ; 31 c0 ; 0xf2caf ata.c:960 + mov word [bp-016h], ax ; 89 46 ea ; 0xf2cb1 + mov word [bp-014h], ax ; 89 46 ec ; 0xf2cb4 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf2cb7 ata.c:962 + cmp AL, strict byte 00ch ; 3c 0c ; 0xf2cba + jnc short 02cc4h ; 73 06 ; 0xf2cbc + mov byte [bp-006h], 00ch ; c6 46 fa 0c ; 0xf2cbe ata.c:963 + jmp short 02ccah ; eb 06 ; 0xf2cc2 + jbe short 02ccah ; 76 04 ; 0xf2cc4 ata.c:964 + mov byte [bp-006h], 010h ; c6 46 fa 10 ; 0xf2cc6 ata.c:965 + shr byte [bp-006h], 1 ; d0 6e fa ; 0xf2cca ata.c:966 + les si, [bp-012h] ; c4 76 ee ; 0xf2ccd ata.c:970 + db 066h, 026h, 0c7h, 044h, 018h, 000h, 000h, 000h, 000h + ; mov dword [es:si+018h], strict dword 000000000h ; 66 26 c7 44 18 00 00 00 00; 0xf2cd0 + mov word [es:si+01ch], strict word 00000h ; 26 c7 44 1c 00 00 ; 0xf2cd9 ata.c:971 + lea dx, [bx+007h] ; 8d 57 07 ; 0xf2cdf ata.c:973 + in AL, DX ; ec ; 0xf2ce2 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2ce3 + test AL, strict byte 080h ; a8 80 ; 0xf2ce5 ata.c:974 + je short 02cefh ; 74 06 ; 0xf2ce7 + mov dx, strict word 00002h ; ba 02 00 ; 0xf2ce9 ata.c:975 + jmp near 02f06h ; e9 17 02 ; 0xf2cec + mov dx, word [bp-018h] ; 8b 56 e8 ; 0xf2cef ata.c:977 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2cf2 + mov AL, strict byte 00ah ; b0 0a ; 0xf2cf5 + out DX, AL ; ee ; 0xf2cf7 + lea dx, [bx+004h] ; 8d 57 04 ; 0xf2cf8 ata.c:981 + mov AL, strict byte 0f0h ; b0 f0 ; 0xf2cfb + out DX, AL ; ee ; 0xf2cfd + lea dx, [bx+005h] ; 8d 57 05 ; 0xf2cfe ata.c:982 + mov AL, strict byte 0ffh ; b0 ff ; 0xf2d01 + out DX, AL ; ee ; 0xf2d03 + cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf2d04 ata.c:983 + je short 02d0fh ; 74 05 ; 0xf2d08 + mov ax, 000b0h ; b8 b0 00 ; 0xf2d0a + jmp short 02d12h ; eb 03 ; 0xf2d0d + mov ax, 000a0h ; b8 a0 00 ; 0xf2d0f + lea dx, [bx+006h] ; 8d 57 06 ; 0xf2d12 + out DX, AL ; ee ; 0xf2d15 + lea dx, [bx+007h] ; 8d 57 07 ; 0xf2d16 ata.c:984 + mov AL, strict byte 0a0h ; b0 a0 ; 0xf2d19 + out DX, AL ; ee ; 0xf2d1b + lea dx, [bx+007h] ; 8d 57 07 ; 0xf2d1c ata.c:988 + in AL, DX ; ec ; 0xf2d1f + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2d20 + mov dl, al ; 88 c2 ; 0xf2d22 + test AL, strict byte 080h ; a8 80 ; 0xf2d24 ata.c:989 + jne short 02d1ch ; 75 f4 ; 0xf2d26 + test AL, strict byte 001h ; a8 01 ; 0xf2d28 ata.c:992 + je short 02d3bh ; 74 0f ; 0xf2d2a + mov dx, word [bp-018h] ; 8b 56 e8 ; 0xf2d2c ata.c:995 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2d2f + mov AL, strict byte 008h ; b0 08 ; 0xf2d32 + out DX, AL ; ee ; 0xf2d34 + mov dx, strict word 00003h ; ba 03 00 ; 0xf2d35 ata.c:996 + jmp near 02f06h ; e9 cb 01 ; 0xf2d38 + test dl, 008h ; f6 c2 08 ; 0xf2d3b ata.c:997 + jne short 02d4fh ; 75 0f ; 0xf2d3e + mov dx, word [bp-018h] ; 8b 56 e8 ; 0xf2d40 ata.c:1000 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2d43 + mov AL, strict byte 008h ; b0 08 ; 0xf2d46 + out DX, AL ; ee ; 0xf2d48 + mov dx, strict word 00004h ; ba 04 00 ; 0xf2d49 ata.c:1001 + jmp near 02f06h ; e9 b7 01 ; 0xf2d4c + sti ; fb ; 0xf2d4f ata.c:1004 + mov ax, di ; 89 f8 ; 0xf2d50 ata.c:1008 + shr ax, 004h ; c1 e8 04 ; 0xf2d52 + add ax, cx ; 01 c8 ; 0xf2d55 + mov si, di ; 89 fe ; 0xf2d57 + and si, strict byte 0000fh ; 83 e6 0f ; 0xf2d59 + movzx cx, byte [bp-006h] ; 0f b6 4e fa ; 0xf2d5c ata.c:1013 + mov dx, bx ; 89 da ; 0xf2d60 + mov es, ax ; 8e c0 ; 0xf2d62 + db 0f3h, 026h, 06fh + ; rep es outsw ; f3 26 6f ; 0xf2d64 + cmp byte [bp+00ah], 000h ; 80 7e 0a 00 ; 0xf2d67 ata.c:1015 + jne short 02d78h ; 75 0b ; 0xf2d6b + lea dx, [bx+007h] ; 8d 57 07 ; 0xf2d6d ata.c:1016 + in AL, DX ; ec ; 0xf2d70 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2d71 + mov dl, al ; 88 c2 ; 0xf2d73 + jmp near 02ee7h ; e9 6f 01 ; 0xf2d75 ata.c:1018 + lea dx, [bx+007h] ; 8d 57 07 ; 0xf2d78 ata.c:1022 + in AL, DX ; ec ; 0xf2d7b + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2d7c + mov dl, al ; 88 c2 ; 0xf2d7e + test AL, strict byte 080h ; a8 80 ; 0xf2d80 ata.c:1023 + jne short 02d78h ; 75 f4 ; 0xf2d82 + test AL, strict byte 088h ; a8 88 ; 0xf2d84 ata.c:1028 + je near 02ee7h ; 0f 84 5d 01 ; 0xf2d86 + test AL, strict byte 001h ; a8 01 ; 0xf2d8a ata.c:1031 + je short 02d99h ; 74 0b ; 0xf2d8c + mov dx, word [bp-018h] ; 8b 56 e8 ; 0xf2d8e ata.c:1034 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2d91 + mov AL, strict byte 008h ; b0 08 ; 0xf2d94 + out DX, AL ; ee ; 0xf2d96 + jmp short 02d35h ; eb 9c ; 0xf2d97 + mov al, dl ; 88 d0 ; 0xf2d99 ata.c:1039 + and AL, strict byte 0c9h ; 24 c9 ; 0xf2d9b + cmp AL, strict byte 048h ; 3c 48 ; 0xf2d9d + je short 02dach ; 74 0b ; 0xf2d9f + mov dx, word [bp-018h] ; 8b 56 e8 ; 0xf2da1 ata.c:1043 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2da4 + mov AL, strict byte 008h ; b0 08 ; 0xf2da7 + out DX, AL ; ee ; 0xf2da9 + jmp short 02d49h ; eb 9d ; 0xf2daa + mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf2dac ata.c:1049 + shr ax, 004h ; c1 e8 04 ; 0xf2daf + mov dx, word [bp+00eh] ; 8b 56 0e ; 0xf2db2 + add dx, ax ; 01 c2 ; 0xf2db5 + mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf2db7 + and ax, strict word 0000fh ; 25 0f 00 ; 0xf2dba + mov word [bp+00ch], ax ; 89 46 0c ; 0xf2dbd + mov word [bp+00eh], dx ; 89 56 0e ; 0xf2dc0 + lea dx, [bx+005h] ; 8d 57 05 ; 0xf2dc3 ata.c:1054 + in AL, DX ; ec ; 0xf2dc6 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2dc7 + mov cx, ax ; 89 c1 ; 0xf2dc9 + sal cx, 008h ; c1 e1 08 ; 0xf2dcb + lea dx, [bx+004h] ; 8d 57 04 ; 0xf2dce + in AL, DX ; ec ; 0xf2dd1 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2dd2 + add cx, ax ; 01 c1 ; 0xf2dd4 + mov word [bp-00ch], cx ; 89 4e f4 ; 0xf2dd6 + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf2dd9 ata.c:1057 + cmp ax, cx ; 39 c8 ; 0xf2ddc + jbe short 02dech ; 76 0c ; 0xf2dde + mov ax, cx ; 89 c8 ; 0xf2de0 ata.c:1059 + sub word [bp+004h], cx ; 29 4e 04 ; 0xf2de2 + xor ax, cx ; 31 c8 ; 0xf2de5 ata.c:1060 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf2de7 + jmp short 02df6h ; eb 0a ; 0xf2dea ata.c:1062 + mov cx, ax ; 89 c1 ; 0xf2dec ata.c:1063 + mov word [bp+004h], strict word 00000h ; c7 46 04 00 00 ; 0xf2dee ata.c:1064 + sub word [bp-00ch], ax ; 29 46 f4 ; 0xf2df3 ata.c:1065 + xor ax, ax ; 31 c0 ; 0xf2df6 ata.c:1068 + cmp word [bp+008h], strict byte 00000h ; 83 7e 08 00 ; 0xf2df8 + jne short 02e1fh ; 75 21 ; 0xf2dfc + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2dfe + cmp dx, word [bp+006h] ; 3b 56 06 ; 0xf2e01 + jbe short 02e1fh ; 76 19 ; 0xf2e04 + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf2e06 ata.c:1069 + sub ax, word [bp+006h] ; 2b 46 06 ; 0xf2e09 + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf2e0c + mov ax, word [bp+006h] ; 8b 46 06 ; 0xf2e0f ata.c:1070 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf2e12 + xor ax, ax ; 31 c0 ; 0xf2e15 ata.c:1071 + mov word [bp+006h], ax ; 89 46 06 ; 0xf2e17 + mov word [bp+008h], ax ; 89 46 08 ; 0xf2e1a + jmp short 02e2bh ; eb 0c ; 0xf2e1d ata.c:1073 + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf2e1f ata.c:1074 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2e22 ata.c:1075 + sub word [bp+006h], dx ; 29 56 06 ; 0xf2e25 + sbb word [bp+008h], ax ; 19 46 08 ; 0xf2e28 + mov si, word [bp-00ch] ; 8b 76 f4 ; 0xf2e2b ata.c:1079 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf2e2e ata.c:1085 + test cl, 003h ; f6 c1 03 ; 0xf2e31 ata.c:1086 + je short 02e38h ; 74 02 ; 0xf2e34 + xor al, al ; 30 c0 ; 0xf2e36 ata.c:1087 + test byte [bp-00ch], 003h ; f6 46 f4 03 ; 0xf2e38 ata.c:1088 + je short 02e40h ; 74 02 ; 0xf2e3c + xor al, al ; 30 c0 ; 0xf2e3e ata.c:1089 + test byte [bp-00eh], 003h ; f6 46 f2 03 ; 0xf2e40 ata.c:1090 + je short 02e48h ; 74 02 ; 0xf2e44 + xor al, al ; 30 c0 ; 0xf2e46 ata.c:1091 + test byte [bp-00ch], 001h ; f6 46 f4 01 ; 0xf2e48 ata.c:1094 + je short 02e60h ; 74 12 ; 0xf2e4c + inc word [bp-00ch] ; ff 46 f4 ; 0xf2e4e ata.c:1095 + cmp word [bp-00eh], strict byte 00000h ; 83 7e f2 00 ; 0xf2e51 ata.c:1096 + jbe short 02e60h ; 76 09 ; 0xf2e55 + test byte [bp-00eh], 001h ; f6 46 f2 01 ; 0xf2e57 + je short 02e60h ; 74 03 ; 0xf2e5b + dec word [bp-00eh] ; ff 4e f2 ; 0xf2e5d ata.c:1097 + cmp AL, strict byte 001h ; 3c 01 ; 0xf2e60 ata.c:1102 + jne short 02e71h ; 75 0d ; 0xf2e62 + shr word [bp-00ch], 002h ; c1 6e f4 02 ; 0xf2e64 ata.c:1103 + shr cx, 002h ; c1 e9 02 ; 0xf2e68 ata.c:1104 + shr word [bp-00eh], 002h ; c1 6e f2 02 ; 0xf2e6b ata.c:1105 + jmp short 02e79h ; eb 08 ; 0xf2e6f ata.c:1106 + shr word [bp-00ch], 1 ; d1 6e f4 ; 0xf2e71 ata.c:1109 + shr cx, 1 ; d1 e9 ; 0xf2e74 ata.c:1110 + shr word [bp-00eh], 1 ; d1 6e f2 ; 0xf2e76 ata.c:1111 + cmp AL, strict byte 001h ; 3c 01 ; 0xf2e79 ata.c:1115 + jne short 02ea9h ; 75 2c ; 0xf2e7b + test cx, cx ; 85 c9 ; 0xf2e7d ata.c:1116 + je short 02e8bh ; 74 0a ; 0xf2e7f + mov dx, bx ; 89 da ; 0xf2e81 ata.c:1117 + push eax ; 66 50 ; 0xf2e83 + in eax, DX ; 66 ed ; 0xf2e85 + loop 02e85h ; e2 fc ; 0xf2e87 + pop eax ; 66 58 ; 0xf2e89 + mov dx, bx ; 89 da ; 0xf2e8b ata.c:1118 + mov cx, word [bp-00ch] ; 8b 4e f4 ; 0xf2e8d + les di, [bp+00ch] ; c4 7e 0c ; 0xf2e90 + db 0f3h, 066h, 06dh + ; rep insd ; f3 66 6d ; 0xf2e93 + mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf2e96 ata.c:1119 + test ax, ax ; 85 c0 ; 0xf2e99 + je short 02ec8h ; 74 2b ; 0xf2e9b + mov cx, ax ; 89 c1 ; 0xf2e9d ata.c:1120 + push eax ; 66 50 ; 0xf2e9f + in eax, DX ; 66 ed ; 0xf2ea1 + loop 02ea1h ; e2 fc ; 0xf2ea3 + pop eax ; 66 58 ; 0xf2ea5 + jmp short 02ec8h ; eb 1f ; 0xf2ea7 ata.c:1121 + test cx, cx ; 85 c9 ; 0xf2ea9 ata.c:1124 + je short 02eb2h ; 74 05 ; 0xf2eab + mov dx, bx ; 89 da ; 0xf2ead ata.c:1125 + in ax, DX ; ed ; 0xf2eaf + loop 02eafh ; e2 fd ; 0xf2eb0 + mov dx, bx ; 89 da ; 0xf2eb2 ata.c:1126 + mov cx, word [bp-00ch] ; 8b 4e f4 ; 0xf2eb4 + les di, [bp+00ch] ; c4 7e 0c ; 0xf2eb7 + rep insw ; f3 6d ; 0xf2eba + mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf2ebc ata.c:1127 + test ax, ax ; 85 c0 ; 0xf2ebf + je short 02ec8h ; 74 05 ; 0xf2ec1 + mov cx, ax ; 89 c1 ; 0xf2ec3 ata.c:1128 + in ax, DX ; ed ; 0xf2ec5 + loop 02ec5h ; e2 fd ; 0xf2ec6 + add word [bp+00ch], si ; 01 76 0c ; 0xf2ec8 ata.c:1133 + xor ax, ax ; 31 c0 ; 0xf2ecb ata.c:1136 + add word [bp-016h], si ; 01 76 ea ; 0xf2ecd + adc word [bp-014h], ax ; 11 46 ec ; 0xf2ed0 + mov ax, word [bp-016h] ; 8b 46 ea ; 0xf2ed3 ata.c:1137 + les si, [bp-012h] ; c4 76 ee ; 0xf2ed6 + mov word [es:si+01ah], ax ; 26 89 44 1a ; 0xf2ed9 + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf2edd + mov word [es:si+01ch], ax ; 26 89 44 1c ; 0xf2ee0 + jmp near 02d78h ; e9 91 fe ; 0xf2ee4 ata.c:1138 + mov al, dl ; 88 d0 ; 0xf2ee7 ata.c:1142 + and AL, strict byte 0e9h ; 24 e9 ; 0xf2ee9 + cmp AL, strict byte 040h ; 3c 40 ; 0xf2eeb + je short 02efbh ; 74 0c ; 0xf2eed + mov dx, word [bp-018h] ; 8b 56 e8 ; 0xf2eef ata.c:1146 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2ef2 + mov AL, strict byte 008h ; b0 08 ; 0xf2ef5 + out DX, AL ; ee ; 0xf2ef7 + jmp near 02d49h ; e9 4e fe ; 0xf2ef8 + mov dx, word [bp-018h] ; 8b 56 e8 ; 0xf2efb ata.c:1151 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2efe + mov AL, strict byte 008h ; b0 08 ; 0xf2f01 + out DX, AL ; ee ; 0xf2f03 + xor dx, dx ; 31 d2 ; 0xf2f04 ata.c:1152 + mov ax, dx ; 89 d0 ; 0xf2f06 ata.c:1153 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf2f08 + pop di ; 5f ; 0xf2f0b + pop si ; 5e ; 0xf2f0c + pop bp ; 5d ; 0xf2f0d + retn 0000ch ; c2 0c 00 ; 0xf2f0e + ; disGetNextSymbol 0xf2f11 LB 0x7134 -> off=0x0 cb=000000000000007b uValue=00000000000f1911 'ata_soft_reset' +ata_soft_reset: ; 0xf2f11 LB 0x7b + push bp ; 55 ; 0xf2f11 ata.c:1161 + mov bp, sp ; 89 e5 ; 0xf2f12 + push bx ; 53 ; 0xf2f14 + push cx ; 51 ; 0xf2f15 + push dx ; 52 ; 0xf2f16 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf2f17 ata.c:48 + mov dx, strict word 00040h ; ba 40 00 ; 0xf2f1a + mov es, dx ; 8e c2 ; 0xf2f1d + mov es, [es:bx] ; 26 8e 07 ; 0xf2f1f + mov dx, ax ; 89 c2 ; 0xf2f22 ata.c:1170 + shr dx, 1 ; d1 ea ; 0xf2f24 + mov ah, al ; 88 c4 ; 0xf2f26 ata.c:1171 + and ah, 001h ; 80 e4 01 ; 0xf2f28 + movzx bx, dl ; 0f b6 da ; 0xf2f2b ata.c:1173 + imul bx, bx, strict byte 00006h ; 6b db 06 ; 0xf2f2e + add bx, 00122h ; 81 c3 22 01 ; 0xf2f31 + mov cx, word [es:bx+00206h] ; 26 8b 8f 06 02 ; 0xf2f35 + mov bx, word [es:bx+00208h] ; 26 8b 9f 08 02 ; 0xf2f3a ata.c:1174 + lea dx, [bx+006h] ; 8d 57 06 ; 0xf2f3f ata.c:1177 + mov AL, strict byte 00ah ; b0 0a ; 0xf2f42 + out DX, AL ; ee ; 0xf2f44 + test ah, ah ; 84 e4 ; 0xf2f45 ata.c:1178 + je short 02f4eh ; 74 05 ; 0xf2f47 + mov ax, 000b0h ; b8 b0 00 ; 0xf2f49 + jmp short 02f51h ; eb 03 ; 0xf2f4c + mov ax, 000a0h ; b8 a0 00 ; 0xf2f4e + mov dx, cx ; 89 ca ; 0xf2f51 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2f53 + out DX, AL ; ee ; 0xf2f56 + mov dx, cx ; 89 ca ; 0xf2f57 ata.c:1179 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf2f59 + mov AL, strict byte 008h ; b0 08 ; 0xf2f5c + out DX, AL ; ee ; 0xf2f5e + mov dx, cx ; 89 ca ; 0xf2f5f ata.c:1183 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf2f61 + in AL, DX ; ec ; 0xf2f64 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2f65 + test AL, strict byte 080h ; a8 80 ; 0xf2f67 ata.c:1184 + jne short 02f5fh ; 75 f4 ; 0xf2f69 + and AL, strict byte 0e9h ; 24 e9 ; 0xf2f6b ata.c:1188 + cmp AL, strict byte 040h ; 3c 40 ; 0xf2f6d + je short 02f7ch ; 74 0b ; 0xf2f6f + lea dx, [bx+006h] ; 8d 57 06 ; 0xf2f71 ata.c:1192 + mov AL, strict byte 008h ; b0 08 ; 0xf2f74 + out DX, AL ; ee ; 0xf2f76 + mov ax, strict word 00001h ; b8 01 00 ; 0xf2f77 ata.c:1193 + jmp short 02f84h ; eb 08 ; 0xf2f7a + lea dx, [bx+006h] ; 8d 57 06 ; 0xf2f7c ata.c:1197 + mov AL, strict byte 008h ; b0 08 ; 0xf2f7f + out DX, AL ; ee ; 0xf2f81 + xor ax, ax ; 31 c0 ; 0xf2f82 ata.c:1198 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf2f84 ata.c:1199 + pop dx ; 5a ; 0xf2f87 + pop cx ; 59 ; 0xf2f88 + pop bx ; 5b ; 0xf2f89 + pop bp ; 5d ; 0xf2f8a + retn ; c3 ; 0xf2f8b + ; disGetNextSymbol 0xf2f8c LB 0x70b9 -> off=0x0 cb=000000000000002a uValue=00000000000f198c 'set_diskette_current_cyl' +set_diskette_current_cyl: ; 0xf2f8c LB 0x2a + push bp ; 55 ; 0xf2f8c floppy.c:71 + mov bp, sp ; 89 e5 ; 0xf2f8d + push bx ; 53 ; 0xf2f8f + mov dh, al ; 88 c6 ; 0xf2f90 + cmp AL, strict byte 001h ; 3c 01 ; 0xf2f92 floppy.c:73 + jbe short 02fa1h ; 76 0b ; 0xf2f94 + push 00262h ; 68 62 02 ; 0xf2f96 floppy.c:74 + push strict byte 00007h ; 6a 07 ; 0xf2f99 + call 01a14h ; e8 76 ea ; 0xf2f9b + add sp, strict byte 00004h ; 83 c4 04 ; 0xf2f9e + movzx bx, dh ; 0f b6 de ; 0xf2fa1 floppy.c:75 + add bx, 00094h ; 81 c3 94 00 ; 0xf2fa4 + mov ax, strict word 00040h ; b8 40 00 ; 0xf2fa8 floppy.c:43 + mov es, ax ; 8e c0 ; 0xf2fab + mov byte [es:bx], dl ; 26 88 17 ; 0xf2fad + lea sp, [bp-002h] ; 8d 66 fe ; 0xf2fb0 floppy.c:76 + pop bx ; 5b ; 0xf2fb3 + pop bp ; 5d ; 0xf2fb4 + retn ; c3 ; 0xf2fb5 + ; disGetNextSymbol 0xf2fb6 LB 0x708f -> off=0x0 cb=0000000000000023 uValue=00000000000f19b6 'floppy_wait_for_interrupt' +floppy_wait_for_interrupt: ; 0xf2fb6 LB 0x23 + push bp ; 55 ; 0xf2fb6 floppy.c:96 + mov bp, sp ; 89 e5 ; 0xf2fb7 + push bx ; 53 ; 0xf2fb9 + cli ; fa ; 0xf2fba floppy.c:98 + mov bx, strict word 0003eh ; bb 3e 00 ; 0xf2fbb floppy.c:38 + mov ax, strict word 00040h ; b8 40 00 ; 0xf2fbe + mov es, ax ; 8e c0 ; 0xf2fc1 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf2fc3 + test AL, strict byte 080h ; a8 80 ; 0xf2fc6 floppy.c:102 + je short 02fceh ; 74 04 ; 0xf2fc8 + and AL, strict byte 080h ; 24 80 ; 0xf2fca floppy.c:103 + jmp short 02fd3h ; eb 05 ; 0xf2fcc + sti ; fb ; 0xf2fce floppy.c:104 + hlt ; f4 ; 0xf2fcf + cli ; fa ; 0xf2fd0 + jmp short 02fbbh ; eb e8 ; 0xf2fd1 floppy.c:105 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf2fd3 floppy.c:106 + pop bx ; 5b ; 0xf2fd6 + pop bp ; 5d ; 0xf2fd7 + retn ; c3 ; 0xf2fd8 + ; disGetNextSymbol 0xf2fd9 LB 0x706c -> off=0x0 cb=0000000000000038 uValue=00000000000f19d9 'floppy_wait_for_interrupt_or_timeout' +floppy_wait_for_interrupt_or_timeout: ; 0xf2fd9 LB 0x38 + push bp ; 55 ; 0xf2fd9 floppy.c:116 + mov bp, sp ; 89 e5 ; 0xf2fda + push bx ; 53 ; 0xf2fdc + cli ; fa ; 0xf2fdd floppy.c:118 + mov bx, strict word 00040h ; bb 40 00 ; 0xf2fde floppy.c:38 + mov es, bx ; 8e c3 ; 0xf2fe1 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf2fe3 + test al, al ; 84 c0 ; 0xf2fe6 floppy.c:122 + jne short 02fedh ; 75 03 ; 0xf2fe8 + sti ; fb ; 0xf2fea floppy.c:123 + jmp short 0300bh ; eb 1e ; 0xf2feb floppy.c:124 + mov bx, strict word 0003eh ; bb 3e 00 ; 0xf2fed floppy.c:38 + mov ax, strict word 00040h ; b8 40 00 ; 0xf2ff0 + mov es, ax ; 8e c0 ; 0xf2ff3 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf2ff5 + test AL, strict byte 080h ; a8 80 ; 0xf2ff8 floppy.c:128 + je short 03006h ; 74 0a ; 0xf2ffa + mov ah, al ; 88 c4 ; 0xf2ffc floppy.c:129 + and ah, 07fh ; 80 e4 7f ; 0xf2ffe + mov byte [es:bx], ah ; 26 88 27 ; 0xf3001 floppy.c:43 + jmp short 0300bh ; eb 05 ; 0xf3004 floppy.c:130 + sti ; fb ; 0xf3006 floppy.c:132 + hlt ; f4 ; 0xf3007 + cli ; fa ; 0xf3008 + jmp short 02fdeh ; eb d3 ; 0xf3009 floppy.c:133 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf300b floppy.c:134 + pop bx ; 5b ; 0xf300e + pop bp ; 5d ; 0xf300f + retn ; c3 ; 0xf3010 + ; disGetNextSymbol 0xf3011 LB 0x7034 -> off=0x0 cb=0000000000000042 uValue=00000000000f1a11 'floppy_reset_controller' +floppy_reset_controller: ; 0xf3011 LB 0x42 + push bp ; 55 ; 0xf3011 floppy.c:138 + mov bp, sp ; 89 e5 ; 0xf3012 + push bx ; 53 ; 0xf3014 + push cx ; 51 ; 0xf3015 + push dx ; 52 ; 0xf3016 + mov cx, ax ; 89 c1 ; 0xf3017 + mov dx, 003f2h ; ba f2 03 ; 0xf3019 floppy.c:143 + in AL, DX ; ec ; 0xf301c + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf301d + mov bx, ax ; 89 c3 ; 0xf301f + movzx ax, bl ; 0f b6 c3 ; 0xf3021 floppy.c:144 + and AL, strict byte 0fbh ; 24 fb ; 0xf3024 + out DX, AL ; ee ; 0xf3026 + mov al, bl ; 88 d8 ; 0xf3027 floppy.c:145 + or AL, strict byte 004h ; 0c 04 ; 0xf3029 + out DX, AL ; ee ; 0xf302b + mov dx, 003f4h ; ba f4 03 ; 0xf302c floppy.c:149 + in AL, DX ; ec ; 0xf302f + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf3030 + and AL, strict byte 0c0h ; 24 c0 ; 0xf3032 floppy.c:150 + cmp AL, strict byte 080h ; 3c 80 ; 0xf3034 + jne short 0302ch ; 75 f4 ; 0xf3036 + mov bx, cx ; 89 cb ; 0xf3038 floppy.c:153 + add bx, 00090h ; 81 c3 90 00 ; 0xf303a + mov ax, strict word 00040h ; b8 40 00 ; 0xf303e floppy.c:38 + mov es, ax ; 8e c0 ; 0xf3041 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf3043 + and AL, strict byte 0efh ; 24 ef ; 0xf3046 floppy.c:154 + mov byte [es:bx], al ; 26 88 07 ; 0xf3048 floppy.c:43 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf304b floppy.c:157 + pop dx ; 5a ; 0xf304e + pop cx ; 59 ; 0xf304f + pop bx ; 5b ; 0xf3050 + pop bp ; 5d ; 0xf3051 + retn ; c3 ; 0xf3052 + ; disGetNextSymbol 0xf3053 LB 0x6ff2 -> off=0x0 cb=0000000000000074 uValue=00000000000f1a53 'floppy_prepare_controller' +floppy_prepare_controller: ; 0xf3053 LB 0x74 + push bp ; 55 ; 0xf3053 floppy.c:159 + mov bp, sp ; 89 e5 ; 0xf3054 + push bx ; 53 ; 0xf3056 + push cx ; 51 ; 0xf3057 + push dx ; 52 ; 0xf3058 + push ax ; 50 ; 0xf3059 + mov cx, ax ; 89 c1 ; 0xf305a + mov bx, strict word 0003eh ; bb 3e 00 ; 0xf305c floppy.c:38 + mov ax, strict word 00040h ; b8 40 00 ; 0xf305f + mov es, ax ; 8e c0 ; 0xf3062 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf3064 + and AL, strict byte 07fh ; 24 7f ; 0xf3067 floppy.c:165 + mov byte [es:bx], al ; 26 88 07 ; 0xf3069 floppy.c:43 + mov dx, 003f2h ; ba f2 03 ; 0xf306c floppy.c:169 + in AL, DX ; ec ; 0xf306f + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf3070 + and AL, strict byte 004h ; 24 04 ; 0xf3072 + mov byte [bp-008h], al ; 88 46 f8 ; 0xf3074 + test cx, cx ; 85 c9 ; 0xf3077 floppy.c:170 + je short 0307fh ; 74 04 ; 0xf3079 + mov AL, strict byte 020h ; b0 20 ; 0xf307b floppy.c:171 + jmp short 03081h ; eb 02 ; 0xf307d floppy.c:172 + mov AL, strict byte 010h ; b0 10 ; 0xf307f floppy.c:173 + or AL, strict byte 00ch ; 0c 0c ; 0xf3081 floppy.c:174 + or al, cl ; 08 c8 ; 0xf3083 floppy.c:175 + mov dx, 003f2h ; ba f2 03 ; 0xf3085 floppy.c:176 + out DX, AL ; ee ; 0xf3088 + mov bx, strict word 00040h ; bb 40 00 ; 0xf3089 floppy.c:43 + mov es, bx ; 8e c3 ; 0xf308c + mov byte [es:bx], 025h ; 26 c6 07 25 ; 0xf308e + mov bx, 0008bh ; bb 8b 00 ; 0xf3092 floppy.c:38 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf3095 + shr al, 006h ; c0 e8 06 ; 0xf3098 floppy.c:183 + mov dx, 003f7h ; ba f7 03 ; 0xf309b floppy.c:184 + out DX, AL ; ee ; 0xf309e + mov dx, 003f4h ; ba f4 03 ; 0xf309f floppy.c:188 + in AL, DX ; ec ; 0xf30a2 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf30a3 + and AL, strict byte 0c0h ; 24 c0 ; 0xf30a5 floppy.c:189 + cmp AL, strict byte 080h ; 3c 80 ; 0xf30a7 + jne short 0309fh ; 75 f4 ; 0xf30a9 + cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf30ab floppy.c:191 + jne short 030bfh ; 75 0e ; 0xf30af + call 02fb6h ; e8 02 ff ; 0xf30b1 floppy.c:202 + mov bx, strict word 0003eh ; bb 3e 00 ; 0xf30b4 floppy.c:43 + mov dx, strict word 00040h ; ba 40 00 ; 0xf30b7 + mov es, dx ; 8e c2 ; 0xf30ba + mov byte [es:bx], al ; 26 88 07 ; 0xf30bc + lea sp, [bp-006h] ; 8d 66 fa ; 0xf30bf floppy.c:206 + pop dx ; 5a ; 0xf30c2 + pop cx ; 59 ; 0xf30c3 + pop bx ; 5b ; 0xf30c4 + pop bp ; 5d ; 0xf30c5 + retn ; c3 ; 0xf30c6 + ; disGetNextSymbol 0xf30c7 LB 0x6f7e -> off=0x0 cb=0000000000000049 uValue=00000000000f1ac7 'floppy_media_known' +floppy_media_known: ; 0xf30c7 LB 0x49 + push bx ; 53 ; 0xf30c7 floppy.c:208 + push dx ; 52 ; 0xf30c8 + push bp ; 55 ; 0xf30c9 + mov bp, sp ; 89 e5 ; 0xf30ca + mov bx, strict word 0003eh ; bb 3e 00 ; 0xf30cc floppy.c:38 + mov dx, strict word 00040h ; ba 40 00 ; 0xf30cf + mov es, dx ; 8e c2 ; 0xf30d2 + mov bh, byte [es:bx] ; 26 8a 3f ; 0xf30d4 + mov bl, bh ; 88 fb ; 0xf30d7 floppy.c:39 + test ax, ax ; 85 c0 ; 0xf30d9 floppy.c:214 + je short 030dfh ; 74 02 ; 0xf30db + shr bl, 1 ; d0 eb ; 0xf30dd floppy.c:215 + and bl, 001h ; 80 e3 01 ; 0xf30df floppy.c:216 + jne short 030e8h ; 75 04 ; 0xf30e2 floppy.c:217 + xor bh, bh ; 30 ff ; 0xf30e4 floppy.c:218 + jmp short 0310ah ; eb 22 ; 0xf30e6 + mov bx, 00090h ; bb 90 00 ; 0xf30e8 floppy.c:220 + test ax, ax ; 85 c0 ; 0xf30eb floppy.c:221 + je short 030f2h ; 74 03 ; 0xf30ed + mov bx, 00091h ; bb 91 00 ; 0xf30ef floppy.c:222 + mov ax, strict word 00040h ; b8 40 00 ; 0xf30f2 floppy.c:38 + mov es, ax ; 8e c0 ; 0xf30f5 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf30f7 + xor ah, ah ; 30 e4 ; 0xf30fa floppy.c:225 + sar ax, 004h ; c1 f8 04 ; 0xf30fc + and AL, strict byte 001h ; 24 01 ; 0xf30ff + jne short 03107h ; 75 04 ; 0xf3101 floppy.c:226 + xor bx, bx ; 31 db ; 0xf3103 floppy.c:227 + jmp short 0310ah ; eb 03 ; 0xf3105 + mov bx, strict word 00001h ; bb 01 00 ; 0xf3107 floppy.c:230 + mov ax, bx ; 89 d8 ; 0xf310a floppy.c:231 + pop bp ; 5d ; 0xf310c + pop dx ; 5a ; 0xf310d + pop bx ; 5b ; 0xf310e + retn ; c3 ; 0xf310f + ; disGetNextSymbol 0xf3110 LB 0x6f35 -> off=0x0 cb=000000000000004e uValue=00000000000f1b10 'floppy_read_id' +floppy_read_id: ; 0xf3110 LB 0x4e + push bp ; 55 ; 0xf3110 floppy.c:233 + mov bp, sp ; 89 e5 ; 0xf3111 + push bx ; 53 ; 0xf3113 + push dx ; 52 ; 0xf3114 + push si ; 56 ; 0xf3115 + mov bx, ax ; 89 c3 ; 0xf3116 + call 03053h ; e8 38 ff ; 0xf3118 floppy.c:240 + mov AL, strict byte 04ah ; b0 4a ; 0xf311b floppy.c:243 + mov dx, 003f5h ; ba f5 03 ; 0xf311d + out DX, AL ; ee ; 0xf3120 + mov al, bl ; 88 d8 ; 0xf3121 floppy.c:244 + out DX, AL ; ee ; 0xf3123 + call 02fb6h ; e8 8f fe ; 0xf3124 floppy.c:259 + xor bx, bx ; 31 db ; 0xf3127 floppy.c:263 + jmp short 03130h ; eb 05 ; 0xf3129 + cmp bx, strict byte 00007h ; 83 fb 07 ; 0xf312b + jnl short 03144h ; 7d 14 ; 0xf312e + mov dx, 003f5h ; ba f5 03 ; 0xf3130 floppy.c:264 + in AL, DX ; ec ; 0xf3133 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf3134 + lea si, [bx+042h] ; 8d 77 42 ; 0xf3136 + mov dx, strict word 00040h ; ba 40 00 ; 0xf3139 floppy.c:43 + mov es, dx ; 8e c2 ; 0xf313c + mov byte [es:si], al ; 26 88 04 ; 0xf313e + inc bx ; 43 ; 0xf3141 floppy.c:264 + jmp short 0312bh ; eb e7 ; 0xf3142 + mov bx, strict word 00042h ; bb 42 00 ; 0xf3144 floppy.c:38 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3147 + mov es, ax ; 8e c0 ; 0xf314a + mov al, byte [es:bx] ; 26 8a 07 ; 0xf314c + test AL, strict byte 0c0h ; a8 c0 ; 0xf314f floppy.c:39 + db 00fh, 094h, 0c0h + ; sete al ; 0f 94 c0 ; 0xf3151 + xor ah, ah ; 30 e4 ; 0xf3154 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf3156 floppy.c:270 + pop si ; 5e ; 0xf3159 + pop dx ; 5a ; 0xf315a + pop bx ; 5b ; 0xf315b + pop bp ; 5d ; 0xf315c + retn ; c3 ; 0xf315d + ; disGetNextSymbol 0xf315e LB 0x6ee7 -> off=0x0 cb=0000000000000041 uValue=00000000000f1b5e 'floppy_drive_recal' +floppy_drive_recal: ; 0xf315e LB 0x41 + push bp ; 55 ; 0xf315e floppy.c:272 + mov bp, sp ; 89 e5 ; 0xf315f + push bx ; 53 ; 0xf3161 + push dx ; 52 ; 0xf3162 + push si ; 56 ; 0xf3163 + mov bx, ax ; 89 c3 ; 0xf3164 + call 03053h ; e8 ea fe ; 0xf3166 floppy.c:277 + mov AL, strict byte 007h ; b0 07 ; 0xf3169 floppy.c:280 + mov dx, 003f5h ; ba f5 03 ; 0xf316b + out DX, AL ; ee ; 0xf316e + mov al, bl ; 88 d8 ; 0xf316f floppy.c:281 + out DX, AL ; ee ; 0xf3171 + call 02fb6h ; e8 41 fe ; 0xf3172 floppy.c:300 + test bx, bx ; 85 db ; 0xf3175 floppy.c:304 + je short 03180h ; 74 07 ; 0xf3177 + or AL, strict byte 002h ; 0c 02 ; 0xf3179 floppy.c:305 + mov bx, 00095h ; bb 95 00 ; 0xf317b floppy.c:306 + jmp short 03185h ; eb 05 ; 0xf317e floppy.c:307 + or AL, strict byte 001h ; 0c 01 ; 0xf3180 floppy.c:308 + mov bx, 00094h ; bb 94 00 ; 0xf3182 floppy.c:309 + mov si, strict word 0003eh ; be 3e 00 ; 0xf3185 floppy.c:43 + mov dx, strict word 00040h ; ba 40 00 ; 0xf3188 + mov es, dx ; 8e c2 ; 0xf318b + mov byte [es:si], al ; 26 88 04 ; 0xf318d + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf3190 floppy.c:43 + mov ax, strict word 00001h ; b8 01 00 ; 0xf3194 floppy.c:315 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf3197 + pop si ; 5e ; 0xf319a + pop dx ; 5a ; 0xf319b + pop bx ; 5b ; 0xf319c + pop bp ; 5d ; 0xf319d + retn ; c3 ; 0xf319e + ; disGetNextSymbol 0xf319f LB 0x6ea6 -> off=0x0 cb=00000000000000e4 uValue=00000000000f1b9f 'floppy_media_sense' +floppy_media_sense: ; 0xf319f LB 0xe4 + push bp ; 55 ; 0xf319f floppy.c:318 + mov bp, sp ; 89 e5 ; 0xf31a0 + push bx ; 53 ; 0xf31a2 + push cx ; 51 ; 0xf31a3 + push dx ; 52 ; 0xf31a4 + push si ; 56 ; 0xf31a5 + mov bx, ax ; 89 c3 ; 0xf31a6 + call 0315eh ; e8 b3 ff ; 0xf31a8 floppy.c:324 + test ax, ax ; 85 c0 ; 0xf31ab + jne short 031b4h ; 75 05 ; 0xf31ad + xor dx, dx ; 31 d2 ; 0xf31af floppy.c:325 + jmp near 03278h ; e9 c4 00 ; 0xf31b1 + mov ax, strict word 00010h ; b8 10 00 ; 0xf31b4 floppy.c:360 + call 01756h ; e8 9c e5 ; 0xf31b7 + test bx, bx ; 85 db ; 0xf31ba floppy.c:361 + jne short 031c5h ; 75 07 ; 0xf31bc + mov dl, al ; 88 c2 ; 0xf31be floppy.c:362 + shr dl, 004h ; c0 ea 04 ; 0xf31c0 + jmp short 031cah ; eb 05 ; 0xf31c3 floppy.c:363 + mov dl, al ; 88 c2 ; 0xf31c5 floppy.c:364 + and dl, 00fh ; 80 e2 0f ; 0xf31c7 + cmp dl, 001h ; 80 fa 01 ; 0xf31ca floppy.c:365 + jne short 031d8h ; 75 09 ; 0xf31cd + xor dl, dl ; 30 d2 ; 0xf31cf floppy.c:367 + mov DH, strict byte 015h ; b6 15 ; 0xf31d1 floppy.c:368 + mov cx, strict word 00001h ; b9 01 00 ; 0xf31d3 floppy.c:369 + jmp short 03216h ; eb 3e ; 0xf31d6 floppy.c:371 + cmp dl, 002h ; 80 fa 02 ; 0xf31d8 + jne short 031e3h ; 75 06 ; 0xf31db + xor dl, dl ; 30 d2 ; 0xf31dd floppy.c:373 + mov DH, strict byte 035h ; b6 35 ; 0xf31df floppy.c:374 + jmp short 031d3h ; eb f0 ; 0xf31e1 + cmp dl, 003h ; 80 fa 03 ; 0xf31e3 floppy.c:377 + jne short 031eeh ; 75 06 ; 0xf31e6 + xor dl, dl ; 30 d2 ; 0xf31e8 floppy.c:379 + mov DH, strict byte 017h ; b6 17 ; 0xf31ea floppy.c:380 + jmp short 031d3h ; eb e5 ; 0xf31ec + cmp dl, 004h ; 80 fa 04 ; 0xf31ee floppy.c:383 + jne short 031f9h ; 75 06 ; 0xf31f1 + xor dl, dl ; 30 d2 ; 0xf31f3 floppy.c:385 + mov DH, strict byte 017h ; b6 17 ; 0xf31f5 floppy.c:386 + jmp short 031d3h ; eb da ; 0xf31f7 + cmp dl, 005h ; 80 fa 05 ; 0xf31f9 floppy.c:389 + jne short 03204h ; 75 06 ; 0xf31fc + mov DL, strict byte 0cch ; b2 cc ; 0xf31fe floppy.c:391 + mov DH, strict byte 0d7h ; b6 d7 ; 0xf3200 floppy.c:392 + jmp short 031d3h ; eb cf ; 0xf3202 + cmp dl, 00eh ; 80 fa 0e ; 0xf3204 floppy.c:396 + je short 0320eh ; 74 05 ; 0xf3207 + cmp dl, 00fh ; 80 fa 0f ; 0xf3209 + jne short 03210h ; 75 02 ; 0xf320c + jmp short 031feh ; eb ee ; 0xf320e + xor dl, dl ; 30 d2 ; 0xf3210 floppy.c:404 + xor dh, dh ; 30 f6 ; 0xf3212 floppy.c:405 + xor cx, cx ; 31 c9 ; 0xf3214 floppy.c:406 + mov si, 0008bh ; be 8b 00 ; 0xf3216 floppy.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3219 + mov es, ax ; 8e c0 ; 0xf321c + mov byte [es:si], dl ; 26 88 14 ; 0xf321e + mov ax, bx ; 89 d8 ; 0xf3221 floppy.c:410 + call 03110h ; e8 ea fe ; 0xf3223 + test ax, ax ; 85 c0 ; 0xf3226 + jne short 0325ch ; 75 32 ; 0xf3228 + mov al, dl ; 88 d0 ; 0xf322a floppy.c:411 + and AL, strict byte 0c0h ; 24 c0 ; 0xf322c + cmp AL, strict byte 080h ; 3c 80 ; 0xf322e + je short 0325ch ; 74 2a ; 0xf3230 + mov al, dl ; 88 d0 ; 0xf3232 floppy.c:415 + and AL, strict byte 0c0h ; 24 c0 ; 0xf3234 + cmp AL, strict byte 0c0h ; 3c c0 ; 0xf3236 + je short 03249h ; 74 0f ; 0xf3238 + mov ah, dl ; 88 d4 ; 0xf323a + and ah, 03fh ; 80 e4 3f ; 0xf323c + cmp AL, strict byte 040h ; 3c 40 ; 0xf323f + je short 03255h ; 74 12 ; 0xf3241 + test al, al ; 84 c0 ; 0xf3243 + je short 0324eh ; 74 07 ; 0xf3245 + jmp short 03216h ; eb cd ; 0xf3247 + and dl, 03fh ; 80 e2 3f ; 0xf3249 floppy.c:417 + jmp short 03216h ; eb c8 ; 0xf324c floppy.c:418 + mov dl, ah ; 88 e2 ; 0xf324e floppy.c:420 + or dl, 040h ; 80 ca 40 ; 0xf3250 + jmp short 03216h ; eb c1 ; 0xf3253 floppy.c:421 + mov dl, ah ; 88 e2 ; 0xf3255 floppy.c:423 + or dl, 080h ; 80 ca 80 ; 0xf3257 + jmp short 03216h ; eb ba ; 0xf325a floppy.c:427 + test bx, bx ; 85 db ; 0xf325c floppy.c:429 + db 00fh, 095h, 0c0h + ; setne al ; 0f 95 c0 ; 0xf325e + movzx bx, al ; 0f b6 d8 ; 0xf3261 + add bx, 00090h ; 81 c3 90 00 ; 0xf3264 + mov si, 0008bh ; be 8b 00 ; 0xf3268 floppy.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf326b + mov es, ax ; 8e c0 ; 0xf326e + mov byte [es:si], dl ; 26 88 14 ; 0xf3270 + mov byte [es:bx], dh ; 26 88 37 ; 0xf3273 floppy.c:43 + mov dx, cx ; 89 ca ; 0xf3276 floppy.c:436 + mov ax, dx ; 89 d0 ; 0xf3278 floppy.c:437 + lea sp, [bp-008h] ; 8d 66 f8 ; 0xf327a + pop si ; 5e ; 0xf327d + pop dx ; 5a ; 0xf327e + pop cx ; 59 ; 0xf327f + pop bx ; 5b ; 0xf3280 + pop bp ; 5d ; 0xf3281 + retn ; c3 ; 0xf3282 + ; disGetNextSymbol 0xf3283 LB 0x6dc2 -> off=0x0 cb=0000000000000024 uValue=00000000000f1c83 'floppy_drive_exists' +floppy_drive_exists: ; 0xf3283 LB 0x24 + push bp ; 55 ; 0xf3283 floppy.c:440 + mov bp, sp ; 89 e5 ; 0xf3284 + push dx ; 52 ; 0xf3286 + mov dx, ax ; 89 c2 ; 0xf3287 + mov ax, strict word 00010h ; b8 10 00 ; 0xf3289 floppy.c:446 + call 01756h ; e8 c7 e4 ; 0xf328c + test dx, dx ; 85 d2 ; 0xf328f floppy.c:447 + jne short 03298h ; 75 05 ; 0xf3291 + shr al, 004h ; c0 e8 04 ; 0xf3293 floppy.c:448 + jmp short 0329ah ; eb 02 ; 0xf3296 floppy.c:449 + and AL, strict byte 00fh ; 24 0f ; 0xf3298 floppy.c:450 + test al, al ; 84 c0 ; 0xf329a floppy.c:451 + db 00fh, 095h, 0c0h + ; setne al ; 0f 95 c0 ; 0xf329c + xor ah, ah ; 30 e4 ; 0xf329f + lea sp, [bp-002h] ; 8d 66 fe ; 0xf32a1 floppy.c:452 + pop dx ; 5a ; 0xf32a4 + pop bp ; 5d ; 0xf32a5 + retn ; c3 ; 0xf32a6 + ; disGetNextSymbol 0xf32a7 LB 0x6d9e -> off=0x23 cb=0000000000000984 uValue=00000000000f1cca 'int13_diskette_function' + db 018h, 017h, 016h, 015h, 008h, 005h, 004h, 003h, 002h, 001h, 000h, 02bh, 03ch, 00ah, 033h, 087h + db 033h, 0a7h, 033h, 0a7h, 033h, 0a7h, 033h, 022h, 037h, 0e0h, 038h, 0d0h, 039h, 012h, 03ah, 046h + db 03ah, 0b8h, 03ah +int13_diskette_function: ; 0xf32ca LB 0x984 + push bp ; 55 ; 0xf32ca floppy.c:467 + mov bp, sp ; 89 e5 ; 0xf32cb + sub sp, strict byte 0000ch ; 83 ec 0c ; 0xf32cd + or byte [bp+01dh], 002h ; 80 4e 1d 02 ; 0xf32d0 floppy.c:478 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf32d4 floppy.c:480 + shr ax, 008h ; c1 e8 08 ; 0xf32d7 + cmp ax, strict word 00018h ; 3d 18 00 ; 0xf32da + jnbe near 03c2bh ; 0f 87 4a 09 ; 0xf32dd + push CS ; 0e ; 0xf32e1 + pop ES ; 07 ; 0xf32e2 + mov cx, strict word 0000ch ; b9 0c 00 ; 0xf32e3 + mov di, 032a7h ; bf a7 32 ; 0xf32e6 + repne scasb ; f2 ae ; 0xf32e9 + sal cx, 1 ; d1 e1 ; 0xf32eb + mov di, cx ; 89 cf ; 0xf32ed + mov di, word [cs:di+032b2h] ; 2e 8b bd b2 32 ; 0xf32ef + mov dx, word [bp+016h] ; 8b 56 16 ; 0xf32f4 + xor dh, dh ; 30 f6 ; 0xf32f7 + mov ah, byte [bp+00eh] ; 8a 66 0e ; 0xf32f9 + mov cx, word [bp+01ch] ; 8b 4e 1c ; 0xf32fc + or cl, 001h ; 80 c9 01 ; 0xf32ff + mov si, dx ; 89 d6 ; 0xf3302 + or si, 00100h ; 81 ce 00 01 ; 0xf3304 + jmp di ; ff e7 ; 0xf3308 + mov bl, byte [bp+00eh] ; 8a 5e 0e ; 0xf330a floppy.c:483 + cmp bl, 001h ; 80 fb 01 ; 0xf330d floppy.c:484 + jbe short 0332ch ; 76 1a ; 0xf3310 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3312 floppy.c:485 + xor ah, ah ; 30 e4 ; 0xf3315 + or ah, 001h ; 80 cc 01 ; 0xf3317 + mov word [bp+016h], ax ; 89 46 16 ; 0xf331a + mov bx, strict word 00041h ; bb 41 00 ; 0xf331d floppy.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3320 + mov es, ax ; 8e c0 ; 0xf3323 + mov byte [es:bx], 001h ; 26 c6 07 01 ; 0xf3325 + jmp near 03b18h ; e9 ec 07 ; 0xf3329 + mov ax, strict word 00010h ; b8 10 00 ; 0xf332c floppy.c:491 + call 01756h ; e8 24 e4 ; 0xf332f + test bl, bl ; 84 db ; 0xf3332 floppy.c:492 + jne short 0333dh ; 75 07 ; 0xf3334 + mov dl, al ; 88 c2 ; 0xf3336 floppy.c:493 + shr dl, 004h ; c0 ea 04 ; 0xf3338 + jmp short 03342h ; eb 05 ; 0xf333b floppy.c:494 + mov dl, al ; 88 c2 ; 0xf333d floppy.c:495 + and dl, 00fh ; 80 e2 0f ; 0xf333f + test dl, dl ; 84 d2 ; 0xf3342 floppy.c:496 + jne short 03360h ; 75 1a ; 0xf3344 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3346 floppy.c:497 + xor ah, ah ; 30 e4 ; 0xf3349 + or ah, 080h ; 80 cc 80 ; 0xf334b + mov word [bp+016h], ax ; 89 46 16 ; 0xf334e + mov bx, strict word 00041h ; bb 41 00 ; 0xf3351 floppy.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3354 + mov es, ax ; 8e c0 ; 0xf3357 + mov byte [es:bx], 080h ; 26 c6 07 80 ; 0xf3359 + jmp near 03b18h ; e9 b8 07 ; 0xf335d + mov si, strict word 0003eh ; be 3e 00 ; 0xf3360 floppy.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3363 + mov es, ax ; 8e c0 ; 0xf3366 + mov byte [es:si], 000h ; 26 c6 04 00 ; 0xf3368 + xor al, al ; 30 c0 ; 0xf336c floppy.c:506 + mov byte [bp+017h], al ; 88 46 17 ; 0xf336e + mov si, strict word 00041h ; be 41 00 ; 0xf3371 floppy.c:43 + mov byte [es:si], al ; 26 88 04 ; 0xf3374 + and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf3377 floppy.c:508 + movzx ax, bl ; 0f b6 c3 ; 0xf337b floppy.c:509 + xor dx, dx ; 31 d2 ; 0xf337e + call 02f8ch ; e8 09 fc ; 0xf3380 + mov sp, bp ; 89 ec ; 0xf3383 floppy.c:510 + pop bp ; 5d ; 0xf3385 + retn ; c3 ; 0xf3386 + and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf3387 floppy.c:513 + mov bx, 00441h ; bb 41 04 ; 0xf338b floppy.c:38 + xor ax, ax ; 31 c0 ; 0xf338e + mov es, ax ; 8e c0 ; 0xf3390 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf3392 + movzx bx, al ; 0f b6 d8 ; 0xf3395 floppy.c:515 + sal bx, 008h ; c1 e3 08 ; 0xf3398 + or dx, bx ; 09 da ; 0xf339b + mov word [bp+016h], dx ; 89 56 16 ; 0xf339d + test al, al ; 84 c0 ; 0xf33a0 floppy.c:516 + je short 03383h ; 74 df ; 0xf33a2 + jmp near 03b18h ; e9 71 07 ; 0xf33a4 + mov bh, byte [bp+016h] ; 8a 7e 16 ; 0xf33a7 floppy.c:524 + mov ax, word [bp+014h] ; 8b 46 14 ; 0xf33aa floppy.c:525 + shr ax, 008h ; c1 e8 08 ; 0xf33ad + mov byte [bp-002h], al ; 88 46 fe ; 0xf33b0 + mov al, byte [bp+014h] ; 8a 46 14 ; 0xf33b3 floppy.c:526 + mov byte [bp-006h], al ; 88 46 fa ; 0xf33b6 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf33b9 floppy.c:527 + shr ax, 008h ; c1 e8 08 ; 0xf33bc + mov byte [bp-004h], al ; 88 46 fc ; 0xf33bf + mov bl, byte [bp+00eh] ; 8a 5e 0e ; 0xf33c2 floppy.c:528 + cmp bl, 001h ; 80 fb 01 ; 0xf33c5 floppy.c:530 + jnbe short 033d7h ; 77 0d ; 0xf33c8 + cmp AL, strict byte 001h ; 3c 01 ; 0xf33ca + jnbe short 033d7h ; 77 09 ; 0xf33cc + test bh, bh ; 84 ff ; 0xf33ce + je short 033d7h ; 74 05 ; 0xf33d0 + cmp bh, 048h ; 80 ff 48 ; 0xf33d2 + jbe short 0340ah ; 76 33 ; 0xf33d5 + mov bx, 00db2h ; bb b2 0d ; 0xf33d7 floppy.c:532 + mov cx, ds ; 8c d9 ; 0xf33da + mov ax, strict word 00004h ; b8 04 00 ; 0xf33dc + call 019d3h ; e8 f1 e5 ; 0xf33df + push 00287h ; 68 87 02 ; 0xf33e2 + push 0029fh ; 68 9f 02 ; 0xf33e5 + push strict byte 00004h ; 6a 04 ; 0xf33e8 + call 01a14h ; e8 27 e6 ; 0xf33ea + add sp, strict byte 00006h ; 83 c4 06 ; 0xf33ed + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf33f0 floppy.c:533 + xor ah, ah ; 30 e4 ; 0xf33f3 + or ah, 001h ; 80 cc 01 ; 0xf33f5 + mov word [bp+016h], ax ; 89 46 16 ; 0xf33f8 + mov bx, strict word 00041h ; bb 41 00 ; 0xf33fb floppy.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf33fe + mov es, ax ; 8e c0 ; 0xf3401 + mov byte [es:bx], 001h ; 26 c6 07 01 ; 0xf3403 + jmp near 03495h ; e9 8b 00 ; 0xf3407 + movzx ax, bl ; 0f b6 c3 ; 0xf340a floppy.c:535 + call 03283h ; e8 73 fe ; 0xf340d + test ax, ax ; 85 c0 ; 0xf3410 + je near 0352ch ; 0f 84 16 01 ; 0xf3412 + movzx cx, bl ; 0f b6 cb ; 0xf3416 floppy.c:551 + mov ax, cx ; 89 c8 ; 0xf3419 + call 030c7h ; e8 a9 fc ; 0xf341b + test ax, ax ; 85 c0 ; 0xf341e + jne short 03444h ; 75 22 ; 0xf3420 + mov ax, cx ; 89 c8 ; 0xf3422 floppy.c:552 + call 0319fh ; e8 78 fd ; 0xf3424 + test ax, ax ; 85 c0 ; 0xf3427 + jne short 03444h ; 75 19 ; 0xf3429 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf342b floppy.c:554 + xor ah, ah ; 30 e4 ; 0xf342e + or ah, 00ch ; 80 cc 0c ; 0xf3430 + mov word [bp+016h], ax ; 89 46 16 ; 0xf3433 + mov bx, strict word 00041h ; bb 41 00 ; 0xf3436 floppy.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3439 + mov es, ax ; 8e c0 ; 0xf343c + mov byte [es:bx], 00ch ; 26 c6 07 0c ; 0xf343e + jmp short 03495h ; eb 51 ; 0xf3442 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3444 floppy.c:562 + shr ax, 008h ; c1 e8 08 ; 0xf3447 + cmp ax, strict word 00002h ; 3d 02 00 ; 0xf344a + jne near 035e0h ; 0f 85 8f 01 ; 0xf344d + mov dx, word [bp+006h] ; 8b 56 06 ; 0xf3451 floppy.c:573 + shr dx, 00ch ; c1 ea 0c ; 0xf3454 + mov ah, dl ; 88 d4 ; 0xf3457 + mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf3459 floppy.c:574 + sal cx, 004h ; c1 e1 04 ; 0xf345c + mov si, word [bp+010h] ; 8b 76 10 ; 0xf345f floppy.c:575 + add si, cx ; 01 ce ; 0xf3462 + mov word [bp-008h], si ; 89 76 f8 ; 0xf3464 + cmp cx, si ; 39 f1 ; 0xf3467 floppy.c:577 + jbe short 0346dh ; 76 02 ; 0xf3469 + db 0feh, 0c4h + ; inc ah ; fe c4 ; 0xf346b floppy.c:579 + movzx cx, bh ; 0f b6 cf ; 0xf346d floppy.c:581 + sal cx, 009h ; c1 e1 09 ; 0xf3470 + dec cx ; 49 ; 0xf3473 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf3474 floppy.c:584 + add dx, cx ; 01 ca ; 0xf3477 + cmp dx, word [bp-008h] ; 3b 56 f8 ; 0xf3479 floppy.c:585 + jnc short 0349ch ; 73 1e ; 0xf347c + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf347e floppy.c:586 + xor ah, ah ; 30 e4 ; 0xf3481 + or ah, 009h ; 80 cc 09 ; 0xf3483 + mov word [bp+016h], ax ; 89 46 16 ; 0xf3486 + mov bx, strict word 00041h ; bb 41 00 ; 0xf3489 floppy.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf348c + mov es, ax ; 8e c0 ; 0xf348f + mov byte [es:bx], 009h ; 26 c6 07 09 ; 0xf3491 + mov byte [bp+016h], 000h ; c6 46 16 00 ; 0xf3495 + jmp near 03b18h ; e9 7c 06 ; 0xf3499 + mov AL, strict byte 006h ; b0 06 ; 0xf349c floppy.c:594 + mov dx, strict word 0000ah ; ba 0a 00 ; 0xf349e + out DX, AL ; ee ; 0xf34a1 + xor al, al ; 30 c0 ; 0xf34a2 floppy.c:597 + mov dx, strict word 0000ch ; ba 0c 00 ; 0xf34a4 + out DX, AL ; ee ; 0xf34a7 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf34a8 floppy.c:598 + mov dx, strict word 00004h ; ba 04 00 ; 0xf34ab + out DX, AL ; ee ; 0xf34ae + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf34af floppy.c:599 + shr dx, 008h ; c1 ea 08 ; 0xf34b2 + mov al, dl ; 88 d0 ; 0xf34b5 + mov dx, strict word 00004h ; ba 04 00 ; 0xf34b7 + out DX, AL ; ee ; 0xf34ba + xor al, al ; 30 c0 ; 0xf34bb floppy.c:601 + mov dx, strict word 0000ch ; ba 0c 00 ; 0xf34bd + out DX, AL ; ee ; 0xf34c0 + mov al, cl ; 88 c8 ; 0xf34c1 floppy.c:602 + mov dx, strict word 00005h ; ba 05 00 ; 0xf34c3 + out DX, AL ; ee ; 0xf34c6 + shr cx, 008h ; c1 e9 08 ; 0xf34c7 floppy.c:603 + mov al, cl ; 88 c8 ; 0xf34ca + out DX, AL ; ee ; 0xf34cc + mov AL, strict byte 046h ; b0 46 ; 0xf34cd floppy.c:611 + mov dx, strict word 0000bh ; ba 0b 00 ; 0xf34cf + out DX, AL ; ee ; 0xf34d2 + mov al, ah ; 88 e0 ; 0xf34d3 floppy.c:615 + mov dx, 00081h ; ba 81 00 ; 0xf34d5 + out DX, AL ; ee ; 0xf34d8 + mov AL, strict byte 002h ; b0 02 ; 0xf34d9 floppy.c:618 + mov dx, strict word 0000ah ; ba 0a 00 ; 0xf34db + out DX, AL ; ee ; 0xf34de + movzx cx, bl ; 0f b6 cb ; 0xf34df floppy.c:623 + mov ax, cx ; 89 c8 ; 0xf34e2 + call 03053h ; e8 6c fb ; 0xf34e4 + mov AL, strict byte 0e6h ; b0 e6 ; 0xf34e7 floppy.c:626 + mov dx, 003f5h ; ba f5 03 ; 0xf34e9 + out DX, AL ; ee ; 0xf34ec + movzx dx, byte [bp-004h] ; 0f b6 56 fc ; 0xf34ed floppy.c:627 + sal dx, 002h ; c1 e2 02 ; 0xf34f1 + movzx ax, bl ; 0f b6 c3 ; 0xf34f4 + or ax, dx ; 09 d0 ; 0xf34f7 + mov dx, 003f5h ; ba f5 03 ; 0xf34f9 + out DX, AL ; ee ; 0xf34fc + mov al, byte [bp-002h] ; 8a 46 fe ; 0xf34fd floppy.c:628 + out DX, AL ; ee ; 0xf3500 + mov al, byte [bp-004h] ; 8a 46 fc ; 0xf3501 floppy.c:629 + out DX, AL ; ee ; 0xf3504 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf3505 floppy.c:630 + out DX, AL ; ee ; 0xf3508 + mov AL, strict byte 002h ; b0 02 ; 0xf3509 floppy.c:631 + out DX, AL ; ee ; 0xf350b + movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf350c floppy.c:632 + movzx dx, bh ; 0f b6 d7 ; 0xf3510 + add ax, dx ; 01 d0 ; 0xf3513 + dec ax ; 48 ; 0xf3515 + mov dx, 003f5h ; ba f5 03 ; 0xf3516 + out DX, AL ; ee ; 0xf3519 + xor al, al ; 30 c0 ; 0xf351a floppy.c:633 + out DX, AL ; ee ; 0xf351c + mov AL, strict byte 0ffh ; b0 ff ; 0xf351d floppy.c:634 + out DX, AL ; ee ; 0xf351f + call 02fd9h ; e8 b6 fa ; 0xf3520 floppy.c:666 + test al, al ; 84 c0 ; 0xf3523 floppy.c:667 + jne short 03546h ; 75 1f ; 0xf3525 + mov ax, cx ; 89 c8 ; 0xf3527 floppy.c:669 + call 03011h ; e8 e5 fa ; 0xf3529 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf352c floppy.c:68 + xor ah, ah ; 30 e4 ; 0xf352f + or ah, 080h ; 80 cc 80 ; 0xf3531 + mov word [bp+016h], ax ; 89 46 16 ; 0xf3534 + mov bx, strict word 00041h ; bb 41 00 ; 0xf3537 + mov ax, strict word 00040h ; b8 40 00 ; 0xf353a + mov es, ax ; 8e c0 ; 0xf353d + mov byte [es:bx], 080h ; 26 c6 07 80 ; 0xf353f + jmp near 03495h ; e9 4f ff ; 0xf3543 + mov dx, 003f4h ; ba f4 03 ; 0xf3546 floppy.c:679 + in AL, DX ; ec ; 0xf3549 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf354a + and AL, strict byte 0c0h ; 24 c0 ; 0xf354c floppy.c:680 + cmp AL, strict byte 0c0h ; 3c c0 ; 0xf354e + je short 03560h ; 74 0e ; 0xf3550 + push 00287h ; 68 87 02 ; 0xf3552 floppy.c:681 + push 002bah ; 68 ba 02 ; 0xf3555 + push strict byte 00007h ; 6a 07 ; 0xf3558 + call 01a14h ; e8 b7 e4 ; 0xf355a + add sp, strict byte 00006h ; 83 c4 06 ; 0xf355d + xor cx, cx ; 31 c9 ; 0xf3560 floppy.c:684 + jmp short 03569h ; eb 05 ; 0xf3562 + cmp cx, strict byte 00007h ; 83 f9 07 ; 0xf3564 + jnl short 0357fh ; 7d 16 ; 0xf3567 + mov dx, 003f5h ; ba f5 03 ; 0xf3569 floppy.c:685 + in AL, DX ; ec ; 0xf356c + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf356d + mov si, cx ; 89 ce ; 0xf356f + add si, strict byte 00042h ; 83 c6 42 ; 0xf3571 + mov dx, strict word 00040h ; ba 40 00 ; 0xf3574 floppy.c:43 + mov es, dx ; 8e c2 ; 0xf3577 + mov byte [es:si], al ; 26 88 04 ; 0xf3579 + inc cx ; 41 ; 0xf357c floppy.c:685 + jmp short 03564h ; eb e5 ; 0xf357d + mov si, strict word 00042h ; be 42 00 ; 0xf357f floppy.c:38 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3582 + mov es, ax ; 8e c0 ; 0xf3585 + mov al, byte [es:si] ; 26 8a 04 ; 0xf3587 + test AL, strict byte 0c0h ; a8 c0 ; 0xf358a floppy.c:39 + je short 035aeh ; 74 20 ; 0xf358c + movzx ax, bl ; 0f b6 c3 ; 0xf358e floppy.c:689 + call 03011h ; e8 7d fa ; 0xf3591 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3594 floppy.c:690 + xor ah, ah ; 30 e4 ; 0xf3597 + or ah, 020h ; 80 cc 20 ; 0xf3599 + mov word [bp+016h], ax ; 89 46 16 ; 0xf359c + mov bx, strict word 00041h ; bb 41 00 ; 0xf359f floppy.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf35a2 + mov es, ax ; 8e c0 ; 0xf35a5 + mov byte [es:bx], 020h ; 26 c6 07 20 ; 0xf35a7 + jmp near 03495h ; e9 e7 fe ; 0xf35ab + movzx ax, bh ; 0f b6 c7 ; 0xf35ae floppy.c:698 + sal ax, 009h ; c1 e0 09 ; 0xf35b1 + cwd ; 99 ; 0xf35b4 + db 02bh, 0c2h + ; sub ax, dx ; 2b c2 ; 0xf35b5 + sar ax, 1 ; d1 f8 ; 0xf35b7 + mov si, word [bp+010h] ; 8b 76 10 ; 0xf35b9 + mov dx, word [bp+006h] ; 8b 56 06 ; 0xf35bc + mov di, si ; 89 f7 ; 0xf35bf + mov cx, ax ; 89 c1 ; 0xf35c1 + mov es, dx ; 8e c2 ; 0xf35c3 + push DS ; 1e ; 0xf35c5 + mov ds, dx ; 8e da ; 0xf35c6 + rep movsw ; f3 a5 ; 0xf35c8 + pop DS ; 1f ; 0xf35ca + movzx dx, byte [bp-002h] ; 0f b6 56 fe ; 0xf35cb floppy.c:702 + movzx ax, bl ; 0f b6 c3 ; 0xf35cf + call 02f8ch ; e8 b7 f9 ; 0xf35d2 + mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf35d5 floppy.c:704 + and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf35d9 floppy.c:705 + jmp near 03383h ; e9 a3 fd ; 0xf35dd floppy.c:706 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf35e0 floppy.c:707 + shr ax, 008h ; c1 e8 08 ; 0xf35e3 + cmp ax, strict word 00003h ; 3d 03 00 ; 0xf35e6 + jne near 0370dh ; 0f 85 20 01 ; 0xf35e9 + mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf35ed floppy.c:718 + shr cx, 00ch ; c1 e9 0c ; 0xf35f0 + mov ah, cl ; 88 cc ; 0xf35f3 + mov dx, word [bp+006h] ; 8b 56 06 ; 0xf35f5 floppy.c:719 + sal dx, 004h ; c1 e2 04 ; 0xf35f8 + mov si, word [bp+010h] ; 8b 76 10 ; 0xf35fb floppy.c:720 + add si, dx ; 01 d6 ; 0xf35fe + mov word [bp-008h], si ; 89 76 f8 ; 0xf3600 + cmp dx, si ; 39 f2 ; 0xf3603 floppy.c:722 + jbe short 03609h ; 76 02 ; 0xf3605 + db 0feh, 0c4h + ; inc ah ; fe c4 ; 0xf3607 floppy.c:724 + movzx cx, bh ; 0f b6 cf ; 0xf3609 floppy.c:726 + sal cx, 009h ; c1 e1 09 ; 0xf360c + dec cx ; 49 ; 0xf360f + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf3610 floppy.c:729 + add dx, cx ; 01 ca ; 0xf3613 + cmp dx, word [bp-008h] ; 3b 56 f8 ; 0xf3615 floppy.c:730 + jc near 0347eh ; 0f 82 62 fe ; 0xf3618 + mov AL, strict byte 006h ; b0 06 ; 0xf361c floppy.c:739 + mov dx, strict word 0000ah ; ba 0a 00 ; 0xf361e + out DX, AL ; ee ; 0xf3621 + xor al, al ; 30 c0 ; 0xf3622 floppy.c:741 + mov dx, strict word 0000ch ; ba 0c 00 ; 0xf3624 + out DX, AL ; ee ; 0xf3627 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf3628 floppy.c:742 + mov dx, strict word 00004h ; ba 04 00 ; 0xf362b + out DX, AL ; ee ; 0xf362e + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf362f floppy.c:743 + shr dx, 008h ; c1 ea 08 ; 0xf3632 + mov al, dl ; 88 d0 ; 0xf3635 + mov dx, strict word 00004h ; ba 04 00 ; 0xf3637 + out DX, AL ; ee ; 0xf363a + xor al, al ; 30 c0 ; 0xf363b floppy.c:744 + mov dx, strict word 0000ch ; ba 0c 00 ; 0xf363d + out DX, AL ; ee ; 0xf3640 + mov al, cl ; 88 c8 ; 0xf3641 floppy.c:745 + mov dx, strict word 00005h ; ba 05 00 ; 0xf3643 + out DX, AL ; ee ; 0xf3646 + shr cx, 008h ; c1 e9 08 ; 0xf3647 floppy.c:746 + mov al, cl ; 88 c8 ; 0xf364a + out DX, AL ; ee ; 0xf364c + mov AL, strict byte 04ah ; b0 4a ; 0xf364d floppy.c:753 + mov dx, strict word 0000bh ; ba 0b 00 ; 0xf364f + out DX, AL ; ee ; 0xf3652 + mov al, ah ; 88 e0 ; 0xf3653 floppy.c:756 + mov dx, 00081h ; ba 81 00 ; 0xf3655 + out DX, AL ; ee ; 0xf3658 + mov AL, strict byte 002h ; b0 02 ; 0xf3659 floppy.c:759 + mov dx, strict word 0000ah ; ba 0a 00 ; 0xf365b + out DX, AL ; ee ; 0xf365e + movzx cx, bl ; 0f b6 cb ; 0xf365f floppy.c:764 + mov ax, cx ; 89 c8 ; 0xf3662 + call 03053h ; e8 ec f9 ; 0xf3664 + mov AL, strict byte 0c5h ; b0 c5 ; 0xf3667 floppy.c:767 + mov dx, 003f5h ; ba f5 03 ; 0xf3669 + out DX, AL ; ee ; 0xf366c + movzx dx, byte [bp-004h] ; 0f b6 56 fc ; 0xf366d floppy.c:768 + sal dx, 002h ; c1 e2 02 ; 0xf3671 + movzx ax, bl ; 0f b6 c3 ; 0xf3674 + or ax, dx ; 09 d0 ; 0xf3677 + mov dx, 003f5h ; ba f5 03 ; 0xf3679 + out DX, AL ; ee ; 0xf367c + mov al, byte [bp-002h] ; 8a 46 fe ; 0xf367d floppy.c:769 + out DX, AL ; ee ; 0xf3680 + mov al, byte [bp-004h] ; 8a 46 fc ; 0xf3681 floppy.c:770 + out DX, AL ; ee ; 0xf3684 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf3685 floppy.c:771 + out DX, AL ; ee ; 0xf3688 + mov AL, strict byte 002h ; b0 02 ; 0xf3689 floppy.c:772 + out DX, AL ; ee ; 0xf368b + movzx dx, byte [bp-006h] ; 0f b6 56 fa ; 0xf368c floppy.c:773 + movzx ax, bh ; 0f b6 c7 ; 0xf3690 + add ax, dx ; 01 d0 ; 0xf3693 + dec ax ; 48 ; 0xf3695 + mov dx, 003f5h ; ba f5 03 ; 0xf3696 + out DX, AL ; ee ; 0xf3699 + xor al, al ; 30 c0 ; 0xf369a floppy.c:774 + out DX, AL ; ee ; 0xf369c + mov AL, strict byte 0ffh ; b0 ff ; 0xf369d floppy.c:775 + out DX, AL ; ee ; 0xf369f + call 02fd9h ; e8 36 f9 ; 0xf36a0 floppy.c:804 + test al, al ; 84 c0 ; 0xf36a3 floppy.c:805 + je near 03527h ; 0f 84 7e fe ; 0xf36a5 + mov dx, 003f4h ; ba f4 03 ; 0xf36a9 floppy.c:816 + in AL, DX ; ec ; 0xf36ac + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf36ad + and AL, strict byte 0c0h ; 24 c0 ; 0xf36af floppy.c:817 + cmp AL, strict byte 0c0h ; 3c c0 ; 0xf36b1 + je short 036c3h ; 74 0e ; 0xf36b3 + push 00287h ; 68 87 02 ; 0xf36b5 floppy.c:818 + push 002bah ; 68 ba 02 ; 0xf36b8 + push strict byte 00007h ; 6a 07 ; 0xf36bb + call 01a14h ; e8 54 e3 ; 0xf36bd + add sp, strict byte 00006h ; 83 c4 06 ; 0xf36c0 + xor cx, cx ; 31 c9 ; 0xf36c3 floppy.c:821 + jmp short 036cch ; eb 05 ; 0xf36c5 + cmp cx, strict byte 00007h ; 83 f9 07 ; 0xf36c7 + jnl short 036e2h ; 7d 16 ; 0xf36ca + mov dx, 003f5h ; ba f5 03 ; 0xf36cc floppy.c:822 + in AL, DX ; ec ; 0xf36cf + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf36d0 + mov si, cx ; 89 ce ; 0xf36d2 + add si, strict byte 00042h ; 83 c6 42 ; 0xf36d4 + mov dx, strict word 00040h ; ba 40 00 ; 0xf36d7 floppy.c:43 + mov es, dx ; 8e c2 ; 0xf36da + mov byte [es:si], al ; 26 88 04 ; 0xf36dc + inc cx ; 41 ; 0xf36df floppy.c:822 + jmp short 036c7h ; eb e5 ; 0xf36e0 + mov si, strict word 00042h ; be 42 00 ; 0xf36e2 floppy.c:38 + mov ax, strict word 00040h ; b8 40 00 ; 0xf36e5 + mov es, ax ; 8e c0 ; 0xf36e8 + mov al, byte [es:si] ; 26 8a 04 ; 0xf36ea + test AL, strict byte 0c0h ; a8 c0 ; 0xf36ed floppy.c:39 + je near 035cbh ; 0f 84 d8 fe ; 0xf36ef + mov bx, strict word 00043h ; bb 43 00 ; 0xf36f3 floppy.c:38 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf36f6 + test AL, strict byte 002h ; a8 02 ; 0xf36f9 floppy.c:39 + je short 03705h ; 74 08 ; 0xf36fb + mov word [bp+016h], 00300h ; c7 46 16 00 03 ; 0xf36fd floppy.c:829 + jmp near 03b18h ; e9 13 04 ; 0xf3702 + mov word [bp+016h], 00100h ; c7 46 16 00 01 ; 0xf3705 floppy.c:832 + jmp near 03b18h ; e9 0b 04 ; 0xf370a floppy.c:833 + movzx dx, byte [bp-002h] ; 0f b6 56 fe ; 0xf370d floppy.c:848 + movzx ax, bl ; 0f b6 c3 ; 0xf3711 + call 02f8ch ; e8 75 f8 ; 0xf3714 + and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf3717 floppy.c:850 + mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf371b floppy.c:851 + jmp near 03383h ; e9 61 fc ; 0xf371f floppy.c:852 + mov bh, byte [bp+016h] ; 8a 7e 16 ; 0xf3722 floppy.c:859 + mov ax, word [bp+014h] ; 8b 46 14 ; 0xf3725 floppy.c:860 + shr ax, 008h ; c1 e8 08 ; 0xf3728 + mov byte [bp-002h], al ; 88 46 fe ; 0xf372b + mov dx, word [bp+012h] ; 8b 56 12 ; 0xf372e floppy.c:861 + shr dx, 008h ; c1 ea 08 ; 0xf3731 + mov byte [bp-004h], dl ; 88 56 fc ; 0xf3734 + mov bl, byte [bp+00eh] ; 8a 5e 0e ; 0xf3737 floppy.c:862 + cmp bl, 001h ; 80 fb 01 ; 0xf373a floppy.c:864 + jnbe short 03751h ; 77 12 ; 0xf373d + cmp dl, 001h ; 80 fa 01 ; 0xf373f + jnbe short 03751h ; 77 0d ; 0xf3742 + cmp AL, strict byte 04fh ; 3c 4f ; 0xf3744 + jnbe short 03751h ; 77 09 ; 0xf3746 + test bh, bh ; 84 ff ; 0xf3748 + je short 03751h ; 74 05 ; 0xf374a + cmp bh, 012h ; 80 ff 12 ; 0xf374c + jbe short 0376ch ; 76 1b ; 0xf374f + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3751 floppy.c:866 + xor ah, ah ; 30 e4 ; 0xf3754 + or ah, 001h ; 80 cc 01 ; 0xf3756 + mov word [bp+016h], ax ; 89 46 16 ; 0xf3759 + mov si, strict word 00041h ; be 41 00 ; 0xf375c floppy.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf375f + mov es, ax ; 8e c0 ; 0xf3762 + mov byte [es:si], 001h ; 26 c6 04 01 ; 0xf3764 + or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf3768 floppy.c:868 + movzx ax, bl ; 0f b6 c3 ; 0xf376c floppy.c:872 + call 03283h ; e8 11 fb ; 0xf376f + test ax, ax ; 85 c0 ; 0xf3772 + jne short 03790h ; 75 1a ; 0xf3774 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3776 floppy.c:873 + xor ah, ah ; 30 e4 ; 0xf3779 + or ah, 080h ; 80 cc 80 ; 0xf377b + mov word [bp+016h], ax ; 89 46 16 ; 0xf377e + mov bx, strict word 00041h ; bb 41 00 ; 0xf3781 floppy.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3784 + mov es, ax ; 8e c0 ; 0xf3787 + mov byte [es:bx], 080h ; 26 c6 07 80 ; 0xf3789 + jmp near 03b18h ; e9 88 03 ; 0xf378d + movzx cx, bl ; 0f b6 cb ; 0xf3790 floppy.c:880 + mov ax, cx ; 89 c8 ; 0xf3793 + call 030c7h ; e8 2f f9 ; 0xf3795 + test ax, ax ; 85 c0 ; 0xf3798 + jne short 037a7h ; 75 0b ; 0xf379a + mov ax, cx ; 89 c8 ; 0xf379c floppy.c:881 + call 0319fh ; e8 fe f9 ; 0xf379e + test ax, ax ; 85 c0 ; 0xf37a1 + je near 0342bh ; 0f 84 84 fc ; 0xf37a3 + mov dx, word [bp+006h] ; 8b 56 06 ; 0xf37a7 floppy.c:892 + shr dx, 00ch ; c1 ea 0c ; 0xf37aa + mov ah, dl ; 88 d4 ; 0xf37ad + mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf37af floppy.c:893 + sal cx, 004h ; c1 e1 04 ; 0xf37b2 + mov si, word [bp+010h] ; 8b 76 10 ; 0xf37b5 floppy.c:894 + add si, cx ; 01 ce ; 0xf37b8 + mov word [bp-008h], si ; 89 76 f8 ; 0xf37ba + cmp cx, si ; 39 f1 ; 0xf37bd floppy.c:896 + jbe short 037c3h ; 76 02 ; 0xf37bf + db 0feh, 0c4h + ; inc ah ; fe c4 ; 0xf37c1 floppy.c:898 + movzx cx, bh ; 0f b6 cf ; 0xf37c3 floppy.c:900 + sal cx, 002h ; c1 e1 02 ; 0xf37c6 + dec cx ; 49 ; 0xf37c9 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf37ca floppy.c:903 + add dx, cx ; 01 ca ; 0xf37cd + cmp dx, word [bp-008h] ; 3b 56 f8 ; 0xf37cf floppy.c:904 + jc near 0347eh ; 0f 82 a8 fc ; 0xf37d2 + mov AL, strict byte 006h ; b0 06 ; 0xf37d6 floppy.c:912 + mov dx, strict word 0000ah ; ba 0a 00 ; 0xf37d8 + out DX, AL ; ee ; 0xf37db + xor al, al ; 30 c0 ; 0xf37dc floppy.c:913 + mov dx, strict word 0000ch ; ba 0c 00 ; 0xf37de + out DX, AL ; ee ; 0xf37e1 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf37e2 floppy.c:914 + mov dx, strict word 00004h ; ba 04 00 ; 0xf37e5 + out DX, AL ; ee ; 0xf37e8 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf37e9 floppy.c:915 + shr dx, 008h ; c1 ea 08 ; 0xf37ec + mov al, dl ; 88 d0 ; 0xf37ef + mov dx, strict word 00004h ; ba 04 00 ; 0xf37f1 + out DX, AL ; ee ; 0xf37f4 + xor al, al ; 30 c0 ; 0xf37f5 floppy.c:916 + mov dx, strict word 0000ch ; ba 0c 00 ; 0xf37f7 + out DX, AL ; ee ; 0xf37fa + mov al, cl ; 88 c8 ; 0xf37fb floppy.c:917 + mov dx, strict word 00005h ; ba 05 00 ; 0xf37fd + out DX, AL ; ee ; 0xf3800 + shr cx, 008h ; c1 e9 08 ; 0xf3801 floppy.c:918 + mov al, cl ; 88 c8 ; 0xf3804 + out DX, AL ; ee ; 0xf3806 + mov AL, strict byte 04ah ; b0 4a ; 0xf3807 floppy.c:921 + mov dx, strict word 0000bh ; ba 0b 00 ; 0xf3809 + out DX, AL ; ee ; 0xf380c + mov al, ah ; 88 e0 ; 0xf380d floppy.c:923 + mov dx, 00081h ; ba 81 00 ; 0xf380f + out DX, AL ; ee ; 0xf3812 + mov AL, strict byte 002h ; b0 02 ; 0xf3813 floppy.c:924 + mov dx, strict word 0000ah ; ba 0a 00 ; 0xf3815 + out DX, AL ; ee ; 0xf3818 + movzx cx, bl ; 0f b6 cb ; 0xf3819 floppy.c:927 + mov ax, cx ; 89 c8 ; 0xf381c + call 03053h ; e8 32 f8 ; 0xf381e + mov AL, strict byte 00fh ; b0 0f ; 0xf3821 floppy.c:930 + mov dx, 003f5h ; ba f5 03 ; 0xf3823 + out DX, AL ; ee ; 0xf3826 + movzx dx, byte [bp-004h] ; 0f b6 56 fc ; 0xf3827 floppy.c:931 + sal dx, 002h ; c1 e2 02 ; 0xf382b + movzx ax, bl ; 0f b6 c3 ; 0xf382e + or dx, ax ; 09 c2 ; 0xf3831 + mov word [bp-00ah], dx ; 89 56 f6 ; 0xf3833 + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf3836 + mov dx, 003f5h ; ba f5 03 ; 0xf3839 + out DX, AL ; ee ; 0xf383c + mov al, byte [bp-002h] ; 8a 46 fe ; 0xf383d floppy.c:932 + out DX, AL ; ee ; 0xf3840 + mov AL, strict byte 04dh ; b0 4d ; 0xf3841 floppy.c:935 + out DX, AL ; ee ; 0xf3843 + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf3844 floppy.c:936 + out DX, AL ; ee ; 0xf3847 + mov AL, strict byte 002h ; b0 02 ; 0xf3848 floppy.c:937 + out DX, AL ; ee ; 0xf384a + mov al, bh ; 88 f8 ; 0xf384b floppy.c:938 + out DX, AL ; ee ; 0xf384d + xor al, bh ; 30 f8 ; 0xf384e floppy.c:939 + out DX, AL ; ee ; 0xf3850 + mov AL, strict byte 0f6h ; b0 f6 ; 0xf3851 floppy.c:940 + out DX, AL ; ee ; 0xf3853 + call 02fd9h ; e8 82 f7 ; 0xf3854 floppy.c:968 + test al, al ; 84 c0 ; 0xf3857 floppy.c:969 + jne short 03863h ; 75 08 ; 0xf3859 + mov ax, cx ; 89 c8 ; 0xf385b floppy.c:970 + call 03011h ; e8 b1 f7 ; 0xf385d + jmp near 03776h ; e9 13 ff ; 0xf3860 floppy.c:68 + mov dx, 003f4h ; ba f4 03 ; 0xf3863 floppy.c:979 + in AL, DX ; ec ; 0xf3866 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf3867 + and AL, strict byte 0c0h ; 24 c0 ; 0xf3869 floppy.c:980 + cmp AL, strict byte 0c0h ; 3c c0 ; 0xf386b + je short 0387dh ; 74 0e ; 0xf386d + push 00287h ; 68 87 02 ; 0xf386f floppy.c:981 + push 002bah ; 68 ba 02 ; 0xf3872 + push strict byte 00007h ; 6a 07 ; 0xf3875 + call 01a14h ; e8 9a e1 ; 0xf3877 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf387a + xor cx, cx ; 31 c9 ; 0xf387d floppy.c:984 + jmp short 03886h ; eb 05 ; 0xf387f + cmp cx, strict byte 00007h ; 83 f9 07 ; 0xf3881 + jnl short 0389ch ; 7d 16 ; 0xf3884 + mov dx, 003f5h ; ba f5 03 ; 0xf3886 floppy.c:985 + in AL, DX ; ec ; 0xf3889 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf388a + mov si, cx ; 89 ce ; 0xf388c + add si, strict byte 00042h ; 83 c6 42 ; 0xf388e + mov dx, strict word 00040h ; ba 40 00 ; 0xf3891 floppy.c:43 + mov es, dx ; 8e c2 ; 0xf3894 + mov byte [es:si], al ; 26 88 04 ; 0xf3896 + inc cx ; 41 ; 0xf3899 floppy.c:985 + jmp short 03881h ; eb e5 ; 0xf389a + mov si, strict word 00042h ; be 42 00 ; 0xf389c floppy.c:38 + mov ax, strict word 00040h ; b8 40 00 ; 0xf389f + mov es, ax ; 8e c0 ; 0xf38a2 + mov al, byte [es:si] ; 26 8a 04 ; 0xf38a4 + test AL, strict byte 0c0h ; a8 c0 ; 0xf38a7 floppy.c:39 + je short 038c5h ; 74 1a ; 0xf38a9 + mov si, strict word 00043h ; be 43 00 ; 0xf38ab floppy.c:38 + mov al, byte [es:si] ; 26 8a 04 ; 0xf38ae + test AL, strict byte 002h ; a8 02 ; 0xf38b1 floppy.c:39 + jne near 036fdh ; 0f 85 46 fe ; 0xf38b3 + push 00287h ; 68 87 02 ; 0xf38b7 floppy.c:996 + push 002ceh ; 68 ce 02 ; 0xf38ba + push strict byte 00007h ; 6a 07 ; 0xf38bd + call 01a14h ; e8 52 e1 ; 0xf38bf + add sp, strict byte 00006h ; 83 c4 06 ; 0xf38c2 + mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf38c5 floppy.c:1000 + mov si, strict word 00041h ; be 41 00 ; 0xf38c9 floppy.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf38cc + mov es, ax ; 8e c0 ; 0xf38cf + mov byte [es:si], 000h ; 26 c6 04 00 ; 0xf38d1 + movzx ax, bl ; 0f b6 c3 ; 0xf38d5 floppy.c:1002 + xor dx, dx ; 31 d2 ; 0xf38d8 + call 02f8ch ; e8 af f6 ; 0xf38da + jmp near 035d9h ; e9 f9 fc ; 0xf38dd + mov bl, ah ; 88 e3 ; 0xf38e0 floppy.c:1009 + cmp ah, 001h ; 80 fc 01 ; 0xf38e2 floppy.c:1011 + jbe short 03904h ; 76 1d ; 0xf38e5 + xor ax, ax ; 31 c0 ; 0xf38e7 floppy.c:1012 + mov word [bp+016h], ax ; 89 46 16 ; 0xf38e9 + mov word [bp+010h], ax ; 89 46 10 ; 0xf38ec floppy.c:1013 + mov word [bp+014h], ax ; 89 46 14 ; 0xf38ef floppy.c:1014 + mov word [bp+012h], ax ; 89 46 12 ; 0xf38f2 floppy.c:1015 + mov word [bp+006h], ax ; 89 46 06 ; 0xf38f5 floppy.c:1016 + mov word [bp+008h], ax ; 89 46 08 ; 0xf38f8 floppy.c:1017 + movzx ax, bh ; 0f b6 c7 ; 0xf38fb floppy.c:1018 + mov word [bp+012h], ax ; 89 46 12 ; 0xf38fe + jmp near 03a26h ; e9 22 01 ; 0xf3901 + mov ax, strict word 00010h ; b8 10 00 ; 0xf3904 floppy.c:1019 + call 01756h ; e8 4c de ; 0xf3907 + mov dl, al ; 88 c2 ; 0xf390a + xor bh, bh ; 30 ff ; 0xf390c floppy.c:1025 + test AL, strict byte 0f0h ; a8 f0 ; 0xf390e floppy.c:1026 + je short 03914h ; 74 02 ; 0xf3910 + mov BH, strict byte 001h ; b7 01 ; 0xf3912 floppy.c:1027 + test dl, 00fh ; f6 c2 0f ; 0xf3914 floppy.c:1028 + je short 0391bh ; 74 02 ; 0xf3917 + db 0feh, 0c7h + ; inc bh ; fe c7 ; 0xf3919 floppy.c:1029 + test bl, bl ; 84 db ; 0xf391b floppy.c:1031 + jne short 03924h ; 75 05 ; 0xf391d + shr dl, 004h ; c0 ea 04 ; 0xf391f floppy.c:1032 + jmp short 03927h ; eb 03 ; 0xf3922 floppy.c:1033 + and dl, 00fh ; 80 e2 0f ; 0xf3924 floppy.c:1034 + mov byte [bp+011h], 000h ; c6 46 11 00 ; 0xf3927 floppy.c:1037 + movzx ax, dl ; 0f b6 c2 ; 0xf392b + mov word [bp+010h], ax ; 89 46 10 ; 0xf392e + mov word [bp+016h], strict word 00000h ; c7 46 16 00 00 ; 0xf3931 floppy.c:1038 + mov cx, word [bp+012h] ; 8b 4e 12 ; 0xf3936 floppy.c:1040 + xor cl, cl ; 30 c9 ; 0xf3939 + movzx ax, bh ; 0f b6 c7 ; 0xf393b + or cx, ax ; 09 c1 ; 0xf393e + mov word [bp+012h], cx ; 89 4e 12 ; 0xf3940 + mov ax, cx ; 89 c8 ; 0xf3943 floppy.c:1041 + xor ah, ch ; 30 ec ; 0xf3945 + or ah, 001h ; 80 cc 01 ; 0xf3947 + mov word [bp+012h], ax ; 89 46 12 ; 0xf394a + cmp dl, 003h ; 80 fa 03 ; 0xf394d floppy.c:1043 + jc short 03967h ; 72 15 ; 0xf3950 + jbe short 0398eh ; 76 3a ; 0xf3952 + cmp dl, 005h ; 80 fa 05 ; 0xf3954 + jc short 03995h ; 72 3c ; 0xf3957 + jbe short 0399ch ; 76 41 ; 0xf3959 + cmp dl, 00fh ; 80 fa 0f ; 0xf395b + je short 039aah ; 74 4a ; 0xf395e + cmp dl, 00eh ; 80 fa 0e ; 0xf3960 + je short 039a3h ; 74 3e ; 0xf3963 + jmp short 039b1h ; eb 4a ; 0xf3965 + cmp dl, 002h ; 80 fa 02 ; 0xf3967 + je short 03987h ; 74 1b ; 0xf396a + cmp dl, 001h ; 80 fa 01 ; 0xf396c + je short 03980h ; 74 0f ; 0xf396f + test dl, dl ; 84 d2 ; 0xf3971 + jne short 039b1h ; 75 3c ; 0xf3973 + mov word [bp+014h], strict word 00000h ; c7 46 14 00 00 ; 0xf3975 floppy.c:1045 + mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf397a floppy.c:1046 + jmp short 039bfh ; eb 3f ; 0xf397e floppy.c:1047 + mov word [bp+014h], 02709h ; c7 46 14 09 27 ; 0xf3980 floppy.c:1050 + jmp short 039bfh ; eb 38 ; 0xf3985 floppy.c:1051 + mov word [bp+014h], 04f0fh ; c7 46 14 0f 4f ; 0xf3987 floppy.c:1054 + jmp short 039bfh ; eb 31 ; 0xf398c floppy.c:1055 + mov word [bp+014h], 04f09h ; c7 46 14 09 4f ; 0xf398e floppy.c:1058 + jmp short 039bfh ; eb 2a ; 0xf3993 floppy.c:1059 + mov word [bp+014h], 04f12h ; c7 46 14 12 4f ; 0xf3995 floppy.c:1062 + jmp short 039bfh ; eb 23 ; 0xf399a floppy.c:1063 + mov word [bp+014h], 04f24h ; c7 46 14 24 4f ; 0xf399c floppy.c:1066 + jmp short 039bfh ; eb 1c ; 0xf39a1 floppy.c:1067 + mov word [bp+014h], 0fe3fh ; c7 46 14 3f fe ; 0xf39a3 floppy.c:1070 + jmp short 039bfh ; eb 15 ; 0xf39a8 floppy.c:1071 + mov word [bp+014h], 0feffh ; c7 46 14 ff fe ; 0xf39aa floppy.c:1074 + jmp short 039bfh ; eb 0e ; 0xf39af floppy.c:1075 + push 00287h ; 68 87 02 ; 0xf39b1 floppy.c:1079 + push 002dfh ; 68 df 02 ; 0xf39b4 + push strict byte 00007h ; 6a 07 ; 0xf39b7 + call 01a14h ; e8 58 e0 ; 0xf39b9 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf39bc + mov word [bp+006h], 0f000h ; c7 46 06 00 f0 ; 0xf39bf floppy.c:1083 + movzx ax, dl ; 0f b6 c2 ; 0xf39c4 floppy.c:1084 + call 03c4eh ; e8 84 02 ; 0xf39c7 + mov word [bp+008h], ax ; 89 46 08 ; 0xf39ca + jmp near 035d9h ; e9 09 fc ; 0xf39cd + mov bl, ah ; 88 e3 ; 0xf39d0 floppy.c:1091 + cmp ah, 001h ; 80 fc 01 ; 0xf39d2 floppy.c:1092 + jbe short 039dch ; 76 05 ; 0xf39d5 + mov word [bp+016h], dx ; 89 56 16 ; 0xf39d7 floppy.c:1093 + jmp short 03a26h ; eb 4a ; 0xf39da + mov ax, strict word 00010h ; b8 10 00 ; 0xf39dc floppy.c:1099 + call 01756h ; e8 74 dd ; 0xf39df + test bl, bl ; 84 db ; 0xf39e2 floppy.c:1100 + jne short 039edh ; 75 07 ; 0xf39e4 + mov dl, al ; 88 c2 ; 0xf39e6 floppy.c:1101 + shr dl, 004h ; c0 ea 04 ; 0xf39e8 + jmp short 039f2h ; eb 05 ; 0xf39eb floppy.c:1102 + mov dl, al ; 88 c2 ; 0xf39ed floppy.c:1103 + and dl, 00fh ; 80 e2 0f ; 0xf39ef + and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf39f2 floppy.c:1104 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf39f6 + xor ah, ah ; 30 e4 ; 0xf39f9 + test dl, dl ; 84 d2 ; 0xf39fb floppy.c:1105 + je short 03a0ch ; 74 0d ; 0xf39fd + cmp dl, 001h ; 80 fa 01 ; 0xf39ff floppy.c:1106 + jbe short 03a09h ; 76 05 ; 0xf3a02 + or ah, 002h ; 80 cc 02 ; 0xf3a04 floppy.c:1108 + jmp short 03a0ch ; eb 03 ; 0xf3a07 floppy.c:1109 + or ah, 001h ; 80 cc 01 ; 0xf3a09 floppy.c:1110 + mov word [bp+016h], ax ; 89 46 16 ; 0xf3a0c + jmp near 03383h ; e9 71 f9 ; 0xf3a0f floppy.c:1113 + cmp ah, 001h ; 80 fc 01 ; 0xf3a12 floppy.c:1118 + jbe short 03a2ch ; 76 15 ; 0xf3a15 + mov word [bp+016h], si ; 89 76 16 ; 0xf3a17 floppy.c:1119 + mov bx, strict word 00041h ; bb 41 00 ; 0xf3a1a floppy.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3a1d + mov es, ax ; 8e c0 ; 0xf3a20 + mov byte [es:bx], 001h ; 26 c6 07 01 ; 0xf3a22 + mov word [bp+01ch], cx ; 89 4e 1c ; 0xf3a26 + jmp near 03383h ; e9 57 f9 ; 0xf3a29 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3a2c floppy.c:1125 + xor ah, ah ; 30 e4 ; 0xf3a2f + or ah, 006h ; 80 cc 06 ; 0xf3a31 + mov word [bp+016h], ax ; 89 46 16 ; 0xf3a34 + mov bx, strict word 00041h ; bb 41 00 ; 0xf3a37 floppy.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3a3a + mov es, ax ; 8e c0 ; 0xf3a3d + mov byte [es:bx], 006h ; 26 c6 07 06 ; 0xf3a3f + jmp near 03b18h ; e9 d2 00 ; 0xf3a43 + mov bl, ah ; 88 e3 ; 0xf3a46 floppy.c:1134 + mov dl, byte [bp+016h] ; 8a 56 16 ; 0xf3a48 floppy.c:1142 + cmp ah, 001h ; 80 fc 01 ; 0xf3a4b floppy.c:1146 + jnbe short 03a17h ; 77 c7 ; 0xf3a4e + movzx ax, bl ; 0f b6 c3 ; 0xf3a50 floppy.c:1154 + call 03283h ; e8 2d f8 ; 0xf3a53 + test ax, ax ; 85 c0 ; 0xf3a56 + je near 03776h ; 0f 84 1a fd ; 0xf3a58 + test bl, bl ; 84 db ; 0xf3a5c floppy.c:1162 + db 00fh, 095h, 0c0h + ; setne al ; 0f 95 c0 ; 0xf3a5e + movzx bx, al ; 0f b6 d8 ; 0xf3a61 + add bx, 00090h ; 81 c3 90 00 ; 0xf3a64 + mov word [bp-008h], bx ; 89 5e f8 ; 0xf3a68 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3a6b floppy.c:38 + mov es, ax ; 8e c0 ; 0xf3a6e + mov bl, byte [es:bx] ; 26 8a 1f ; 0xf3a70 + and bl, 00fh ; 80 e3 0f ; 0xf3a73 floppy.c:1166 + cmp dl, 002h ; 80 fa 02 ; 0xf3a76 floppy.c:1168 + jc short 03a8ah ; 72 0f ; 0xf3a79 + jbe short 03a97h ; 76 1a ; 0xf3a7b + cmp dl, 004h ; 80 fa 04 ; 0xf3a7d + je short 03a92h ; 74 10 ; 0xf3a80 + cmp dl, 003h ; 80 fa 03 ; 0xf3a82 + je short 03a9ch ; 74 15 ; 0xf3a85 + jmp near 03312h ; e9 88 f8 ; 0xf3a87 + cmp dl, 001h ; 80 fa 01 ; 0xf3a8a + je short 03a92h ; 74 03 ; 0xf3a8d + jmp near 03312h ; e9 80 f8 ; 0xf3a8f + or bl, 090h ; 80 cb 90 ; 0xf3a92 floppy.c:1171 + jmp short 03a9fh ; eb 08 ; 0xf3a95 floppy.c:1172 + or bl, 070h ; 80 cb 70 ; 0xf3a97 floppy.c:1175 + jmp short 03a9fh ; eb 03 ; 0xf3a9a floppy.c:1176 + or bl, 010h ; 80 cb 10 ; 0xf3a9c floppy.c:1179 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3a9f floppy.c:43 + mov es, ax ; 8e c0 ; 0xf3aa2 + mov si, word [bp-008h] ; 8b 76 f8 ; 0xf3aa4 + mov byte [es:si], bl ; 26 88 1c ; 0xf3aa7 + xor al, al ; 30 c0 ; 0xf3aaa floppy.c:1198 + mov byte [bp+017h], al ; 88 46 17 ; 0xf3aac + mov bx, strict word 00041h ; bb 41 00 ; 0xf3aaf floppy.c:43 + mov byte [es:bx], al ; 26 88 07 ; 0xf3ab2 + jmp near 035d9h ; e9 21 fb ; 0xf3ab5 + mov bl, ah ; 88 e3 ; 0xf3ab8 floppy.c:1208 + mov dl, byte [bp+014h] ; 8a 56 14 ; 0xf3aba floppy.c:1210 + mov bh, dl ; 88 d7 ; 0xf3abd floppy.c:1211 + and bh, 03fh ; 80 e7 3f ; 0xf3abf + xor dh, dh ; 30 f6 ; 0xf3ac2 floppy.c:1212 + sar dx, 006h ; c1 fa 06 ; 0xf3ac4 + sal dx, 008h ; c1 e2 08 ; 0xf3ac7 + mov word [bp-00ch], dx ; 89 56 f4 ; 0xf3aca + mov dx, word [bp+014h] ; 8b 56 14 ; 0xf3acd + shr dx, 008h ; c1 ea 08 ; 0xf3ad0 + add dx, word [bp-00ch] ; 03 56 f4 ; 0xf3ad3 + mov byte [bp-002h], dl ; 88 56 fe ; 0xf3ad6 + cmp ah, 001h ; 80 fc 01 ; 0xf3ad9 floppy.c:1217 + jnbe near 03a17h ; 0f 87 37 ff ; 0xf3adc + movzx ax, bl ; 0f b6 c3 ; 0xf3ae0 floppy.c:1225 + call 03283h ; e8 9d f7 ; 0xf3ae3 + test ax, ax ; 85 c0 ; 0xf3ae6 + je near 03776h ; 0f 84 8a fc ; 0xf3ae8 + movzx cx, bl ; 0f b6 cb ; 0xf3aec floppy.c:1233 + mov ax, cx ; 89 c8 ; 0xf3aef + call 030c7h ; e8 d3 f5 ; 0xf3af1 + test ax, ax ; 85 c0 ; 0xf3af4 + jne short 03b1fh ; 75 27 ; 0xf3af6 + mov ax, cx ; 89 c8 ; 0xf3af8 floppy.c:1234 + call 0319fh ; e8 a2 f6 ; 0xf3afa + test ax, ax ; 85 c0 ; 0xf3afd + jne short 03b1fh ; 75 1e ; 0xf3aff + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3b01 floppy.c:1235 + xor ah, ah ; 30 e4 ; 0xf3b04 + or ah, 00ch ; 80 cc 0c ; 0xf3b06 + mov word [bp+016h], ax ; 89 46 16 ; 0xf3b09 + mov bx, strict word 00041h ; bb 41 00 ; 0xf3b0c floppy.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3b0f + mov es, ax ; 8e c0 ; 0xf3b12 + mov byte [es:bx], 00ch ; 26 c6 07 0c ; 0xf3b14 + or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf3b18 + jmp near 03383h ; e9 64 f8 ; 0xf3b1c + mov ax, strict word 00010h ; b8 10 00 ; 0xf3b1f floppy.c:1243 + call 01756h ; e8 31 dc ; 0xf3b22 + test bl, bl ; 84 db ; 0xf3b25 floppy.c:1244 + jne short 03b30h ; 75 07 ; 0xf3b27 + mov dl, al ; 88 c2 ; 0xf3b29 floppy.c:1245 + shr dl, 004h ; c0 ea 04 ; 0xf3b2b + jmp short 03b35h ; eb 05 ; 0xf3b2e floppy.c:1246 + mov dl, al ; 88 c2 ; 0xf3b30 floppy.c:1247 + and dl, 00fh ; 80 e2 0f ; 0xf3b32 + test bl, bl ; 84 db ; 0xf3b35 floppy.c:1250 + db 00fh, 095h, 0c0h + ; setne al ; 0f 95 c0 ; 0xf3b37 + movzx si, al ; 0f b6 f0 ; 0xf3b3a + add si, 00090h ; 81 c6 90 00 ; 0xf3b3d + mov word [bp-008h], si ; 89 76 f8 ; 0xf3b41 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3b44 floppy.c:38 + mov es, ax ; 8e c0 ; 0xf3b47 + mov bl, byte [es:si] ; 26 8a 1c ; 0xf3b49 + and bl, 00fh ; 80 e3 0f ; 0xf3b4c floppy.c:39 + cmp dl, 003h ; 80 fa 03 ; 0xf3b4f floppy.c:1256 + jc short 03b71h ; 72 1d ; 0xf3b52 + mov al, bl ; 88 d8 ; 0xf3b54 + or AL, strict byte 090h ; 0c 90 ; 0xf3b56 + cmp dl, 003h ; 80 fa 03 ; 0xf3b58 + jbe short 03bb2h ; 76 55 ; 0xf3b5b + mov ah, bl ; 88 dc ; 0xf3b5d + or ah, 010h ; 80 cc 10 ; 0xf3b5f + cmp dl, 005h ; 80 fa 05 ; 0xf3b62 + je near 03bd7h ; 0f 84 6e 00 ; 0xf3b65 + cmp dl, 004h ; 80 fa 04 ; 0xf3b69 + je short 03bc1h ; 74 53 ; 0xf3b6c + jmp near 03bf3h ; e9 82 00 ; 0xf3b6e + cmp dl, 002h ; 80 fa 02 ; 0xf3b71 + je short 03b92h ; 74 1c ; 0xf3b74 + cmp dl, 001h ; 80 fa 01 ; 0xf3b76 + jne near 03bf3h ; 0f 85 76 00 ; 0xf3b79 + cmp byte [bp-002h], 027h ; 80 7e fe 27 ; 0xf3b7d floppy.c:1258 + jne near 03bf3h ; 0f 85 6e 00 ; 0xf3b81 + cmp bh, 009h ; 80 ff 09 ; 0xf3b85 + jne near 03bf3h ; 0f 85 67 00 ; 0xf3b88 + or bl, 090h ; 80 cb 90 ; 0xf3b8c floppy.c:1259 + jmp near 03bf3h ; e9 61 00 ; 0xf3b8f floppy.c:1261 + cmp byte [bp-002h], 027h ; 80 7e fe 27 ; 0xf3b92 floppy.c:1263 + jne short 03ba2h ; 75 0a ; 0xf3b96 + cmp bh, 009h ; 80 ff 09 ; 0xf3b98 + jne short 03ba2h ; 75 05 ; 0xf3b9b + or bl, 070h ; 80 cb 70 ; 0xf3b9d floppy.c:1264 + jmp short 03bf3h ; eb 51 ; 0xf3ba0 floppy.c:1265 + cmp byte [bp-002h], 04fh ; 80 7e fe 4f ; 0xf3ba2 + jne short 03bf3h ; 75 4b ; 0xf3ba6 + cmp bh, 00fh ; 80 ff 0f ; 0xf3ba8 + jne short 03bf3h ; 75 46 ; 0xf3bab + or bl, 010h ; 80 cb 10 ; 0xf3bad floppy.c:1266 + jmp short 03bf3h ; eb 41 ; 0xf3bb0 floppy.c:1268 + cmp byte [bp-002h], 04fh ; 80 7e fe 4f ; 0xf3bb2 floppy.c:1270 + jne short 03bf3h ; 75 3b ; 0xf3bb6 + cmp bh, 009h ; 80 ff 09 ; 0xf3bb8 + jne short 03bf3h ; 75 36 ; 0xf3bbb + mov bl, al ; 88 c3 ; 0xf3bbd floppy.c:1271 + jmp short 03bf3h ; eb 32 ; 0xf3bbf floppy.c:1273 + cmp byte [bp-002h], 04fh ; 80 7e fe 4f ; 0xf3bc1 floppy.c:1275 + jne short 03bf3h ; 75 2c ; 0xf3bc5 + cmp bh, 009h ; 80 ff 09 ; 0xf3bc7 floppy.c:1276 + jne short 03bceh ; 75 02 ; 0xf3bca + jmp short 03bbdh ; eb ef ; 0xf3bcc + cmp bh, 012h ; 80 ff 12 ; 0xf3bce floppy.c:1277 + jne short 03bf3h ; 75 20 ; 0xf3bd1 + mov bl, ah ; 88 e3 ; 0xf3bd3 floppy.c:1279 + jmp short 03bf3h ; eb 1c ; 0xf3bd5 floppy.c:1282 + cmp byte [bp-002h], 04fh ; 80 7e fe 4f ; 0xf3bd7 floppy.c:1284 + jne short 03bf3h ; 75 16 ; 0xf3bdb + cmp bh, 009h ; 80 ff 09 ; 0xf3bdd floppy.c:1285 + jne short 03be4h ; 75 02 ; 0xf3be0 + jmp short 03bbdh ; eb d9 ; 0xf3be2 + cmp bh, 012h ; 80 ff 12 ; 0xf3be4 floppy.c:1286 + jne short 03bebh ; 75 02 ; 0xf3be7 + jmp short 03bd3h ; eb e8 ; 0xf3be9 + cmp bh, 024h ; 80 ff 24 ; 0xf3beb floppy.c:1288 + jne short 03bf3h ; 75 03 ; 0xf3bee + or bl, 0d0h ; 80 cb d0 ; 0xf3bf0 floppy.c:1290 + movzx ax, bl ; 0f b6 c3 ; 0xf3bf3 floppy.c:1299 + sar ax, 004h ; c1 f8 04 ; 0xf3bf6 + test AL, strict byte 001h ; a8 01 ; 0xf3bf9 + je near 03b01h ; 0f 84 02 ff ; 0xf3bfb + mov ax, strict word 00040h ; b8 40 00 ; 0xf3bff floppy.c:43 + mov es, ax ; 8e c0 ; 0xf3c02 + mov si, word [bp-008h] ; 8b 76 f8 ; 0xf3c04 + mov byte [es:si], bl ; 26 88 1c ; 0xf3c07 + mov word [bp+006h], 0f000h ; c7 46 06 00 f0 ; 0xf3c0a floppy.c:1312 + movzx ax, dl ; 0f b6 c2 ; 0xf3c0f floppy.c:1313 + call 03c4eh ; e8 39 00 ; 0xf3c12 + mov word [bp+008h], ax ; 89 46 08 ; 0xf3c15 + mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf3c18 floppy.c:1316 + mov bx, strict word 00041h ; bb 41 00 ; 0xf3c1c floppy.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3c1f + mov es, ax ; 8e c0 ; 0xf3c22 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf3c24 + jmp near 035d9h ; e9 ae f9 ; 0xf3c28 + mov bx, 00db2h ; bb b2 0d ; 0xf3c2b floppy.c:1322 + mov cx, ds ; 8c d9 ; 0xf3c2e + mov ax, strict word 00004h ; b8 04 00 ; 0xf3c30 + call 019d3h ; e8 9d dd ; 0xf3c33 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3c36 + shr ax, 008h ; c1 e8 08 ; 0xf3c39 + push ax ; 50 ; 0xf3c3c + push 00287h ; 68 87 02 ; 0xf3c3d + push 002f4h ; 68 f4 02 ; 0xf3c40 + push strict byte 00004h ; 6a 04 ; 0xf3c43 + call 01a14h ; e8 cc dd ; 0xf3c45 + add sp, strict byte 00008h ; 83 c4 08 ; 0xf3c48 + jmp near 03312h ; e9 c4 f6 ; 0xf3c4b floppy.c:68 + ; disGetNextSymbol 0xf3c4e LB 0x63f7 -> off=0x0 cb=000000000000002f uValue=00000000000f264e 'get_floppy_dpt' +get_floppy_dpt: ; 0xf3c4e LB 0x2f + push bx ; 53 ; 0xf3c4e floppyt.c:94 + push dx ; 52 ; 0xf3c4f + push bp ; 55 ; 0xf3c50 + mov bp, sp ; 89 e5 ; 0xf3c51 + mov dl, al ; 88 c2 ; 0xf3c53 + xor ax, ax ; 31 c0 ; 0xf3c55 floppyt.c:98 + jmp short 03c5fh ; eb 06 ; 0xf3c57 + inc ax ; 40 ; 0xf3c59 floppyt.c:100 + cmp ax, strict word 00007h ; 3d 07 00 ; 0xf3c5a + jnc short 03c76h ; 73 17 ; 0xf3c5d + mov bx, ax ; 89 c3 ; 0xf3c5f + add bx, ax ; 01 c3 ; 0xf3c61 + cmp dl, byte [word bx+0005bh] ; 3a 97 5b 00 ; 0xf3c63 + jne short 03c59h ; 75 f0 ; 0xf3c67 + movzx ax, byte [word bx+0005ch] ; 0f b6 87 5c 00 ; 0xf3c69 + imul ax, ax, strict byte 0000dh ; 6b c0 0d ; 0xf3c6e + add ax, strict word 00000h ; 05 00 00 ; 0xf3c71 + jmp short 03c79h ; eb 03 ; 0xf3c74 + mov ax, strict word 00041h ; b8 41 00 ; 0xf3c76 floppyt.c:103 + pop bp ; 5d ; 0xf3c79 floppyt.c:104 + pop dx ; 5a ; 0xf3c7a + pop bx ; 5b ; 0xf3c7b + retn ; c3 ; 0xf3c7c + ; disGetNextSymbol 0xf3c7d LB 0x63c8 -> off=0x0 cb=0000000000000007 uValue=00000000000f267d 'dummy_soft_reset' +dummy_soft_reset: ; 0xf3c7d LB 0x7 + push bp ; 55 ; 0xf3c7d eltorito.c:126 + mov bp, sp ; 89 e5 ; 0xf3c7e + xor ax, ax ; 31 c0 ; 0xf3c80 eltorito.c:129 + pop bp ; 5d ; 0xf3c82 + retn ; c3 ; 0xf3c83 + ; disGetNextSymbol 0xf3c84 LB 0x63c1 -> off=0x0 cb=0000000000000017 uValue=00000000000f2684 'cdemu_init' +cdemu_init: ; 0xf3c84 LB 0x17 + push bp ; 55 ; 0xf3c84 eltorito.c:155 + mov bp, sp ; 89 e5 ; 0xf3c85 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3c87 eltorito.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3c8a + mov es, ax ; 8e c0 ; 0xf3c8d + mov es, [es:bx] ; 26 8e 07 ; 0xf3c8f + mov bx, 00366h ; bb 66 03 ; 0xf3c92 eltorito.c:43 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf3c95 + pop bp ; 5d ; 0xf3c99 eltorito.c:162 + retn ; c3 ; 0xf3c9a + ; disGetNextSymbol 0xf3c9b LB 0x63aa -> off=0x0 cb=0000000000000016 uValue=00000000000f269b 'cdemu_isactive' +cdemu_isactive: ; 0xf3c9b LB 0x16 + push bp ; 55 ; 0xf3c9b eltorito.c:164 + mov bp, sp ; 89 e5 ; 0xf3c9c + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3c9e eltorito.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3ca1 + mov es, ax ; 8e c0 ; 0xf3ca4 + mov es, [es:bx] ; 26 8e 07 ; 0xf3ca6 + mov bx, 00366h ; bb 66 03 ; 0xf3ca9 eltorito.c:38 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf3cac + pop bp ; 5d ; 0xf3caf eltorito.c:170 + retn ; c3 ; 0xf3cb0 + ; disGetNextSymbol 0xf3cb1 LB 0x6394 -> off=0x0 cb=0000000000000016 uValue=00000000000f26b1 'cdemu_emulated_drive' +cdemu_emulated_drive: ; 0xf3cb1 LB 0x16 + push bp ; 55 ; 0xf3cb1 eltorito.c:172 + mov bp, sp ; 89 e5 ; 0xf3cb2 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3cb4 eltorito.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3cb7 + mov es, ax ; 8e c0 ; 0xf3cba + mov es, [es:bx] ; 26 8e 07 ; 0xf3cbc + mov bx, 00368h ; bb 68 03 ; 0xf3cbf eltorito.c:38 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf3cc2 + pop bp ; 5d ; 0xf3cc5 eltorito.c:178 + retn ; c3 ; 0xf3cc6 + ; disGetNextSymbol 0xf3cc7 LB 0x637e -> off=0x0 cb=000000000000017a uValue=00000000000f26c7 'int13_eltorito' +int13_eltorito: ; 0xf3cc7 LB 0x17a + push bp ; 55 ; 0xf3cc7 eltorito.c:184 + mov bp, sp ; 89 e5 ; 0xf3cc8 + push si ; 56 ; 0xf3cca + push di ; 57 ; 0xf3ccb + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3ccc eltorito.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3ccf + mov es, ax ; 8e c0 ; 0xf3cd2 + mov di, word [es:bx] ; 26 8b 3f ; 0xf3cd4 + mov bx, 00366h ; bb 66 03 ; 0xf3cd7 eltorito.c:190 + mov si, word [bp+016h] ; 8b 76 16 ; 0xf3cda eltorito.c:196 + shr si, 008h ; c1 ee 08 ; 0xf3cdd + cmp si, strict byte 0004bh ; 83 fe 4b ; 0xf3ce0 + jc short 03cefh ; 72 0a ; 0xf3ce3 + jbe short 03d15h ; 76 2e ; 0xf3ce5 + cmp si, strict byte 0004dh ; 83 fe 4d ; 0xf3ce7 + jbe short 03cf6h ; 76 0a ; 0xf3cea + jmp near 03e07h ; e9 18 01 ; 0xf3cec + cmp si, strict byte 0004ah ; 83 fe 4a ; 0xf3cef + jne near 03e07h ; 0f 85 11 01 ; 0xf3cf2 + mov bx, 00db2h ; bb b2 0d ; 0xf3cf6 eltorito.c:202 + mov cx, ds ; 8c d9 ; 0xf3cf9 + mov ax, strict word 00004h ; b8 04 00 ; 0xf3cfb + call 019d3h ; e8 d2 dc ; 0xf3cfe + push word [bp+016h] ; ff 76 16 ; 0xf3d01 + push 0030eh ; 68 0e 03 ; 0xf3d04 + push 0031dh ; 68 1d 03 ; 0xf3d07 + push strict byte 00004h ; 6a 04 ; 0xf3d0a + call 01a14h ; e8 05 dd ; 0xf3d0c + add sp, strict byte 00008h ; 83 c4 08 ; 0xf3d0f + jmp near 03e22h ; e9 0d 01 ; 0xf3d12 eltorito.c:203 + mov es, [bp+004h] ; 8e 46 04 ; 0xf3d15 eltorito.c:41 + mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3d18 + mov byte [es:si], 013h ; 26 c6 04 13 ; 0xf3d1b + inc si ; 46 ; 0xf3d1f eltorito.c:210 + mov ax, es ; 8c c0 ; 0xf3d20 eltorito.c:41 + mov es, di ; 8e c7 ; 0xf3d22 + mov dl, byte [es:bx+001h] ; 26 8a 57 01 ; 0xf3d24 + mov es, ax ; 8e c0 ; 0xf3d28 eltorito.c:43 + mov byte [es:si], dl ; 26 88 14 ; 0xf3d2a + mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3d2d eltorito.c:211 + inc si ; 46 ; 0xf3d30 + inc si ; 46 ; 0xf3d31 + mov es, di ; 8e c7 ; 0xf3d32 eltorito.c:41 + mov dl, byte [es:bx+002h] ; 26 8a 57 02 ; 0xf3d34 + mov es, ax ; 8e c0 ; 0xf3d38 eltorito.c:43 + mov byte [es:si], dl ; 26 88 14 ; 0xf3d3a + mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3d3d eltorito.c:212 + add si, strict byte 00003h ; 83 c6 03 ; 0xf3d40 + mov es, di ; 8e c7 ; 0xf3d43 eltorito.c:41 + mov dl, byte [es:bx+003h] ; 26 8a 57 03 ; 0xf3d45 + mov es, ax ; 8e c0 ; 0xf3d49 eltorito.c:43 + mov byte [es:si], dl ; 26 88 14 ; 0xf3d4b + mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3d4e eltorito.c:213 + add si, strict byte 00004h ; 83 c6 04 ; 0xf3d51 + mov es, di ; 8e c7 ; 0xf3d54 eltorito.c:61 + mov dx, word [es:bx+008h] ; 26 8b 57 08 ; 0xf3d56 + mov cx, word [es:bx+00ah] ; 26 8b 4f 0a ; 0xf3d5a + mov es, ax ; 8e c0 ; 0xf3d5e eltorito.c:63 + mov word [es:si], dx ; 26 89 14 ; 0xf3d60 + mov word [es:si+002h], cx ; 26 89 4c 02 ; 0xf3d63 + mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3d67 eltorito.c:214 + add si, strict byte 00008h ; 83 c6 08 ; 0xf3d6a + mov es, di ; 8e c7 ; 0xf3d6d eltorito.c:51 + mov dx, word [es:bx+004h] ; 26 8b 57 04 ; 0xf3d6f + mov es, ax ; 8e c0 ; 0xf3d73 eltorito.c:53 + mov word [es:si], dx ; 26 89 14 ; 0xf3d75 + mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3d78 eltorito.c:215 + add si, strict byte 0000ah ; 83 c6 0a ; 0xf3d7b + mov es, di ; 8e c7 ; 0xf3d7e eltorito.c:51 + mov dx, word [es:bx+006h] ; 26 8b 57 06 ; 0xf3d80 + mov es, ax ; 8e c0 ; 0xf3d84 eltorito.c:53 + mov word [es:si], dx ; 26 89 14 ; 0xf3d86 + mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3d89 eltorito.c:216 + add si, strict byte 0000ch ; 83 c6 0c ; 0xf3d8c + mov es, di ; 8e c7 ; 0xf3d8f eltorito.c:51 + mov dx, word [es:bx+00ch] ; 26 8b 57 0c ; 0xf3d91 + mov es, ax ; 8e c0 ; 0xf3d95 eltorito.c:53 + mov word [es:si], dx ; 26 89 14 ; 0xf3d97 + mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3d9a eltorito.c:217 + add si, strict byte 0000eh ; 83 c6 0e ; 0xf3d9d + mov es, di ; 8e c7 ; 0xf3da0 eltorito.c:51 + mov dx, word [es:bx+00eh] ; 26 8b 57 0e ; 0xf3da2 + mov es, ax ; 8e c0 ; 0xf3da6 eltorito.c:53 + mov word [es:si], dx ; 26 89 14 ; 0xf3da8 + mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3dab eltorito.c:218 + add si, strict byte 00010h ; 83 c6 10 ; 0xf3dae + mov es, di ; 8e c7 ; 0xf3db1 eltorito.c:41 + mov dl, byte [es:bx+012h] ; 26 8a 57 12 ; 0xf3db3 + mov es, ax ; 8e c0 ; 0xf3db7 eltorito.c:43 + mov byte [es:si], dl ; 26 88 14 ; 0xf3db9 + mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3dbc eltorito.c:219 + add si, strict byte 00011h ; 83 c6 11 ; 0xf3dbf + mov es, di ; 8e c7 ; 0xf3dc2 eltorito.c:41 + mov dl, byte [es:bx+014h] ; 26 8a 57 14 ; 0xf3dc4 + mov es, ax ; 8e c0 ; 0xf3dc8 eltorito.c:43 + mov byte [es:si], dl ; 26 88 14 ; 0xf3dca + mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3dcd eltorito.c:220 + add si, strict byte 00012h ; 83 c6 12 ; 0xf3dd0 + mov dx, ax ; 89 c2 ; 0xf3dd3 eltorito.c:41 + mov es, di ; 8e c7 ; 0xf3dd5 + mov al, byte [es:bx+010h] ; 26 8a 47 10 ; 0xf3dd7 + mov es, dx ; 8e c2 ; 0xf3ddb eltorito.c:43 + mov byte [es:si], al ; 26 88 04 ; 0xf3ddd + test byte [bp+016h], 0ffh ; f6 46 16 ff ; 0xf3de0 eltorito.c:223 + jne short 03dech ; 75 06 ; 0xf3de4 + mov es, di ; 8e c7 ; 0xf3de6 eltorito.c:225 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf3de8 + mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf3dec eltorito.c:228 + mov bx, strict word 00074h ; bb 74 00 ; 0xf3df0 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3df3 + mov es, ax ; 8e c0 ; 0xf3df6 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf3df8 + and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf3dfc + lea sp, [bp-004h] ; 8d 66 fc ; 0xf3e00 + pop di ; 5f ; 0xf3e03 + pop si ; 5e ; 0xf3e04 + pop bp ; 5d ; 0xf3e05 + retn ; c3 ; 0xf3e06 + mov bx, 00db2h ; bb b2 0d ; 0xf3e07 eltorito.c:232 + mov cx, ds ; 8c d9 ; 0xf3e0a + mov ax, strict word 00004h ; b8 04 00 ; 0xf3e0c + call 019d3h ; e8 c1 db ; 0xf3e0f + mov bx, word [bp+016h] ; 8b 5e 16 ; 0xf3e12 + shr bx, 008h ; c1 eb 08 ; 0xf3e15 + push bx ; 53 ; 0xf3e18 + push 0030eh ; 68 0e 03 ; 0xf3e19 + push 00345h ; 68 45 03 ; 0xf3e1c + jmp near 03d0ah ; e9 e8 fe ; 0xf3e1f + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3e22 eltorito.c:238 + xor ah, ah ; 30 e4 ; 0xf3e25 + or ah, 001h ; 80 cc 01 ; 0xf3e27 + mov word [bp+016h], ax ; 89 46 16 ; 0xf3e2a + shr ax, 008h ; c1 e8 08 ; 0xf3e2d eltorito.c:239 + mov bx, strict word 00074h ; bb 74 00 ; 0xf3e30 eltorito.c:43 + mov dx, strict word 00040h ; ba 40 00 ; 0xf3e33 + mov es, dx ; 8e c2 ; 0xf3e36 + mov byte [es:bx], al ; 26 88 07 ; 0xf3e38 + or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf3e3b eltorito.c:240 + jmp short 03e00h ; eb bf ; 0xf3e3f eltorito.c:241 + ; disGetNextSymbol 0xf3e41 LB 0x6204 -> off=0x0 cb=0000000000000033 uValue=00000000000f2841 'device_is_cdrom' +device_is_cdrom: ; 0xf3e41 LB 0x33 + push bx ; 53 ; 0xf3e41 eltorito.c:256 + push dx ; 52 ; 0xf3e42 + push bp ; 55 ; 0xf3e43 + mov bp, sp ; 89 e5 ; 0xf3e44 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3e46 eltorito.c:48 + mov dx, strict word 00040h ; ba 40 00 ; 0xf3e49 + mov es, dx ; 8e c2 ; 0xf3e4c + mov bx, word [es:bx] ; 26 8b 1f ; 0xf3e4e + cmp AL, strict byte 010h ; 3c 10 ; 0xf3e51 eltorito.c:262 + jc short 03e59h ; 72 04 ; 0xf3e53 + xor ax, ax ; 31 c0 ; 0xf3e55 eltorito.c:263 + jmp short 03e70h ; eb 17 ; 0xf3e57 + xor ah, ah ; 30 e4 ; 0xf3e59 eltorito.c:268 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf3e5b + mov es, bx ; 8e c3 ; 0xf3e5e + mov bx, ax ; 89 c3 ; 0xf3e60 + add bx, 00122h ; 81 c3 22 01 ; 0xf3e62 + cmp byte [es:bx+023h], 005h ; 26 80 7f 23 05 ; 0xf3e66 + jne short 03e55h ; 75 e8 ; 0xf3e6b + mov ax, strict word 00001h ; b8 01 00 ; 0xf3e6d eltorito.c:269 + pop bp ; 5d ; 0xf3e70 eltorito.c:272 + pop dx ; 5a ; 0xf3e71 + pop bx ; 5b ; 0xf3e72 + retn ; c3 ; 0xf3e73 + ; disGetNextSymbol 0xf3e74 LB 0x61d1 -> off=0x0 cb=00000000000003ab uValue=00000000000f2874 'cdrom_boot' +cdrom_boot: ; 0xf3e74 LB 0x3ab + push bp ; 55 ; 0xf3e74 eltorito.c:282 + mov bp, sp ; 89 e5 ; 0xf3e75 + push bx ; 53 ; 0xf3e77 + push cx ; 51 ; 0xf3e78 + push dx ; 52 ; 0xf3e79 + push si ; 56 ; 0xf3e7a + push di ; 57 ; 0xf3e7b + sub sp, 0081ch ; 81 ec 1c 08 ; 0xf3e7c + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3e80 eltorito.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3e83 + mov es, ax ; 8e c0 ; 0xf3e86 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf3e88 + mov word [bp-016h], ax ; 89 46 ea ; 0xf3e8b eltorito.c:49 + mov si, 00366h ; be 66 03 ; 0xf3e8e eltorito.c:295 + mov word [bp-018h], ax ; 89 46 e8 ; 0xf3e91 + mov word [bp-012h], 00122h ; c7 46 ee 22 01 ; 0xf3e94 eltorito.c:296 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf3e99 + mov byte [bp-00eh], 000h ; c6 46 f2 00 ; 0xf3e9c eltorito.c:299 + jmp short 03eabh ; eb 09 ; 0xf3ea0 + inc byte [bp-00eh] ; fe 46 f2 ; 0xf3ea2 eltorito.c:302 + cmp byte [bp-00eh], 010h ; 80 7e f2 10 ; 0xf3ea5 + jnc short 03eb6h ; 73 0b ; 0xf3ea9 + movzx ax, byte [bp-00eh] ; 0f b6 46 f2 ; 0xf3eab + call 03e41h ; e8 8f ff ; 0xf3eaf + test ax, ax ; 85 c0 ; 0xf3eb2 + je short 03ea2h ; 74 ec ; 0xf3eb4 + cmp byte [bp-00eh], 010h ; 80 7e f2 10 ; 0xf3eb6 eltorito.c:305 + jc short 03ec2h ; 72 06 ; 0xf3eba + mov ax, strict word 00002h ; b8 02 00 ; 0xf3ebc eltorito.c:306 + jmp near 04215h ; e9 53 03 ; 0xf3ebf + mov cx, strict word 0000ch ; b9 0c 00 ; 0xf3ec2 eltorito.c:309 + xor bx, bx ; 31 db ; 0xf3ec5 + mov dx, ss ; 8c d2 ; 0xf3ec7 + lea ax, [bp-026h] ; 8d 46 da ; 0xf3ec9 + call 09fb0h ; e8 e1 60 ; 0xf3ecc + mov word [bp-026h], strict word 00028h ; c7 46 da 28 00 ; 0xf3ecf eltorito.c:310 + mov ax, strict word 00011h ; b8 11 00 ; 0xf3ed4 eltorito.c:311 + xor dx, dx ; 31 d2 ; 0xf3ed7 + xchg ah, al ; 86 c4 ; 0xf3ed9 + xchg dh, dl ; 86 d6 ; 0xf3edb + xchg dx, ax ; 92 ; 0xf3edd + mov word [bp-024h], ax ; 89 46 dc ; 0xf3ede + mov word [bp-022h], dx ; 89 56 de ; 0xf3ee1 + mov ax, strict word 00001h ; b8 01 00 ; 0xf3ee4 eltorito.c:312 + xchg ah, al ; 86 c4 ; 0xf3ee7 + mov word [bp-01fh], ax ; 89 46 e1 ; 0xf3ee9 + les bx, [bp-012h] ; c4 5e ee ; 0xf3eec eltorito.c:314 + db 066h, 026h, 0c7h, 047h, 00eh, 001h, 000h, 000h, 008h + ; mov dword [es:bx+00eh], strict dword 008000001h ; 66 26 c7 47 0e 01 00 00 08; 0xf3eef + mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf3ef8 eltorito.c:317 + jmp short 03f07h ; eb 09 ; 0xf3efc + inc byte [bp-00ch] ; fe 46 f4 ; 0xf3efe eltorito.c:322 + cmp byte [bp-00ch], 004h ; 80 7e f4 04 ; 0xf3f01 + jnbe short 03f3dh ; 77 36 ; 0xf3f05 + movzx ax, byte [bp-00eh] ; 0f b6 46 f2 ; 0xf3f07 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf3f0b + les bx, [bp-012h] ; c4 5e ee ; 0xf3f0e + add bx, ax ; 01 c3 ; 0xf3f11 + movzx di, byte [es:bx+022h] ; 26 0f b6 7f 22 ; 0xf3f13 + add di, di ; 01 ff ; 0xf3f18 + lea dx, [bp-00826h] ; 8d 96 da f7 ; 0xf3f1a + push SS ; 16 ; 0xf3f1e + push dx ; 52 ; 0xf3f1f + push strict byte 00001h ; 6a 01 ; 0xf3f20 + push strict byte 00000h ; 6a 00 ; 0xf3f22 + push 00800h ; 68 00 08 ; 0xf3f24 + push strict byte 00000h ; 6a 00 ; 0xf3f27 + movzx ax, byte [bp-00eh] ; 0f b6 46 f2 ; 0xf3f29 + mov cx, ss ; 8c d1 ; 0xf3f2d + lea bx, [bp-026h] ; 8d 5e da ; 0xf3f2f + mov dx, strict word 0000ch ; ba 0c 00 ; 0xf3f32 + call word [word di+0006ah] ; ff 95 6a 00 ; 0xf3f35 + test ax, ax ; 85 c0 ; 0xf3f39 + jne short 03efeh ; 75 c1 ; 0xf3f3b + test ax, ax ; 85 c0 ; 0xf3f3d eltorito.c:323 + je short 03f47h ; 74 06 ; 0xf3f3f + mov ax, strict word 00003h ; b8 03 00 ; 0xf3f41 eltorito.c:324 + jmp near 04215h ; e9 ce 02 ; 0xf3f44 + cmp byte [bp-00826h], 000h ; 80 be da f7 00 ; 0xf3f47 eltorito.c:327 + je short 03f54h ; 74 06 ; 0xf3f4c + mov ax, strict word 00004h ; b8 04 00 ; 0xf3f4e eltorito.c:328 + jmp near 04215h ; e9 c1 02 ; 0xf3f51 + xor di, di ; 31 ff ; 0xf3f54 eltorito.c:330 + jmp short 03f5eh ; eb 06 ; 0xf3f56 + inc di ; 47 ; 0xf3f58 eltorito.c:332 + cmp di, strict byte 00005h ; 83 ff 05 ; 0xf3f59 + jnc short 03f6eh ; 73 10 ; 0xf3f5c + mov al, byte [bp+di-00825h] ; 8a 83 db f7 ; 0xf3f5e + cmp al, byte [di+00dbah] ; 3a 85 ba 0d ; 0xf3f62 + je short 03f58h ; 74 f0 ; 0xf3f66 + mov ax, strict word 00005h ; b8 05 00 ; 0xf3f68 + jmp near 04215h ; e9 a7 02 ; 0xf3f6b + xor di, di ; 31 ff ; 0xf3f6e eltorito.c:334 + jmp short 03f78h ; eb 06 ; 0xf3f70 + inc di ; 47 ; 0xf3f72 eltorito.c:336 + cmp di, strict byte 00017h ; 83 ff 17 ; 0xf3f73 + jnc short 03f88h ; 73 10 ; 0xf3f76 + mov al, byte [bp+di-0081fh] ; 8a 83 e1 f7 ; 0xf3f78 + cmp al, byte [di+00dc0h] ; 3a 85 c0 0d ; 0xf3f7c + je short 03f72h ; 74 f0 ; 0xf3f80 + mov ax, strict word 00006h ; b8 06 00 ; 0xf3f82 + jmp near 04215h ; e9 8d 02 ; 0xf3f85 + mov ax, word [bp-007dfh] ; 8b 86 21 f8 ; 0xf3f88 eltorito.c:339 + mov dx, word [bp-007ddh] ; 8b 96 23 f8 ; 0xf3f8c + mov word [bp-026h], strict word 00028h ; c7 46 da 28 00 ; 0xf3f90 eltorito.c:343 + xchg ah, al ; 86 c4 ; 0xf3f95 eltorito.c:344 + xchg dh, dl ; 86 d6 ; 0xf3f97 + xchg dx, ax ; 92 ; 0xf3f99 + mov word [bp-024h], ax ; 89 46 dc ; 0xf3f9a + mov word [bp-022h], dx ; 89 56 de ; 0xf3f9d + mov ax, strict word 00001h ; b8 01 00 ; 0xf3fa0 eltorito.c:345 + xchg ah, al ; 86 c4 ; 0xf3fa3 + mov word [bp-01fh], ax ; 89 46 e1 ; 0xf3fa5 + movzx ax, byte [bp-00eh] ; 0f b6 46 f2 ; 0xf3fa8 eltorito.c:352 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf3fac + les di, [bp-012h] ; c4 7e ee ; 0xf3faf + add di, ax ; 01 c7 ; 0xf3fb2 + movzx di, byte [es:di+022h] ; 26 0f b6 7d 22 ; 0xf3fb4 + add di, di ; 01 ff ; 0xf3fb9 + lea dx, [bp-00826h] ; 8d 96 da f7 ; 0xf3fbb + push SS ; 16 ; 0xf3fbf + push dx ; 52 ; 0xf3fc0 + push strict byte 00001h ; 6a 01 ; 0xf3fc1 + push strict byte 00000h ; 6a 00 ; 0xf3fc3 + push 00800h ; 68 00 08 ; 0xf3fc5 + push strict byte 00000h ; 6a 00 ; 0xf3fc8 + movzx ax, byte [bp-00eh] ; 0f b6 46 f2 ; 0xf3fca + mov cx, ss ; 8c d1 ; 0xf3fce + lea bx, [bp-026h] ; 8d 5e da ; 0xf3fd0 + mov dx, strict word 0000ch ; ba 0c 00 ; 0xf3fd3 + call word [word di+0006ah] ; ff 95 6a 00 ; 0xf3fd6 + test ax, ax ; 85 c0 ; 0xf3fda eltorito.c:353 + je short 03fe4h ; 74 06 ; 0xf3fdc + mov ax, strict word 00007h ; b8 07 00 ; 0xf3fde eltorito.c:354 + jmp near 04215h ; e9 31 02 ; 0xf3fe1 + cmp byte [bp-00826h], 001h ; 80 be da f7 01 ; 0xf3fe4 eltorito.c:359 + je short 03ff1h ; 74 06 ; 0xf3fe9 + mov ax, strict word 00008h ; b8 08 00 ; 0xf3feb eltorito.c:360 + jmp near 04215h ; e9 24 02 ; 0xf3fee + cmp byte [bp-00825h], 000h ; 80 be db f7 00 ; 0xf3ff1 eltorito.c:361 + je short 03ffeh ; 74 06 ; 0xf3ff6 + mov ax, strict word 00009h ; b8 09 00 ; 0xf3ff8 eltorito.c:362 + jmp near 04215h ; e9 17 02 ; 0xf3ffb + cmp byte [bp-00808h], 055h ; 80 be f8 f7 55 ; 0xf3ffe eltorito.c:363 + je short 0400bh ; 74 06 ; 0xf4003 + mov ax, strict word 0000ah ; b8 0a 00 ; 0xf4005 eltorito.c:364 + jmp near 04215h ; e9 0a 02 ; 0xf4008 + cmp byte [bp-00807h], 0aah ; 80 be f9 f7 aa ; 0xf400b eltorito.c:365 + jne short 04005h ; 75 f3 ; 0xf4010 + cmp byte [bp-00806h], 088h ; 80 be fa f7 88 ; 0xf4012 eltorito.c:366 + je short 0401fh ; 74 06 ; 0xf4017 + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf4019 eltorito.c:370 + jmp near 04215h ; e9 f6 01 ; 0xf401c + mov al, byte [bp-00805h] ; 8a 86 fb f7 ; 0xf401f eltorito.c:372 + mov es, [bp-018h] ; 8e 46 e8 ; 0xf4023 + mov byte [es:si+001h], al ; 26 88 44 01 ; 0xf4026 + cmp byte [bp-00805h], 000h ; 80 be fb f7 00 ; 0xf402a eltorito.c:373 + jne short 04038h ; 75 07 ; 0xf402f + mov byte [es:si+002h], 0e0h ; 26 c6 44 02 e0 ; 0xf4031 eltorito.c:376 + jmp short 0404bh ; eb 13 ; 0xf4036 eltorito.c:378 + cmp byte [bp-00805h], 004h ; 80 be fb f7 04 ; 0xf4038 + jnc short 04046h ; 73 07 ; 0xf403d + mov byte [es:si+002h], 000h ; 26 c6 44 02 00 ; 0xf403f eltorito.c:379 + jmp short 0404bh ; eb 05 ; 0xf4044 eltorito.c:380 + mov byte [es:si+002h], 080h ; 26 c6 44 02 80 ; 0xf4046 eltorito.c:381 + movzx di, byte [bp-00eh] ; 0f b6 7e f2 ; 0xf404b eltorito.c:383 + mov ax, di ; 89 f8 ; 0xf404f + cwd ; 99 ; 0xf4051 + db 02bh, 0c2h + ; sub ax, dx ; 2b c2 ; 0xf4052 + sar ax, 1 ; d1 f8 ; 0xf4054 + mov es, [bp-018h] ; 8e 46 e8 ; 0xf4056 + mov byte [es:si+003h], al ; 26 88 44 03 ; 0xf4059 + mov ax, di ; 89 f8 ; 0xf405d eltorito.c:384 + cwd ; 99 ; 0xf405f + mov bx, strict word 00002h ; bb 02 00 ; 0xf4060 + idiv bx ; f7 fb ; 0xf4063 + mov word [es:si+004h], dx ; 26 89 54 04 ; 0xf4065 + mov ax, word [bp-00804h] ; 8b 86 fc f7 ; 0xf4069 eltorito.c:386 + mov word [bp-014h], ax ; 89 46 ec ; 0xf406d + test ax, ax ; 85 c0 ; 0xf4070 eltorito.c:387 + jne short 04079h ; 75 05 ; 0xf4072 + mov word [bp-014h], 007c0h ; c7 46 ec c0 07 ; 0xf4074 eltorito.c:388 + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf4079 eltorito.c:390 + mov es, [bp-018h] ; 8e 46 e8 ; 0xf407c + mov word [es:si+00ch], ax ; 26 89 44 0c ; 0xf407f + mov word [es:si+006h], strict word 00000h ; 26 c7 44 06 00 00 ; 0xf4083 eltorito.c:391 + mov di, word [bp-00800h] ; 8b be 00 f8 ; 0xf4089 eltorito.c:393 + mov word [es:si+00eh], di ; 26 89 7c 0e ; 0xf408d eltorito.c:394 + test di, di ; 85 ff ; 0xf4091 eltorito.c:399 + je short 0409bh ; 74 06 ; 0xf4093 + cmp di, 00400h ; 81 ff 00 04 ; 0xf4095 + jbe short 040a1h ; 76 06 ; 0xf4099 + mov ax, strict word 0000ch ; b8 0c 00 ; 0xf409b eltorito.c:400 + jmp near 04215h ; e9 74 01 ; 0xf409e + mov ax, word [bp-007feh] ; 8b 86 02 f8 ; 0xf40a1 eltorito.c:402 + mov dx, word [bp-007fch] ; 8b 96 04 f8 ; 0xf40a5 + mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf40a9 eltorito.c:403 + mov word [es:si+00ah], dx ; 26 89 54 0a ; 0xf40ad + mov word [bp-026h], strict word 00028h ; c7 46 da 28 00 ; 0xf40b1 eltorito.c:409 + xchg ah, al ; 86 c4 ; 0xf40b6 eltorito.c:410 + xchg dh, dl ; 86 d6 ; 0xf40b8 + xchg dx, ax ; 92 ; 0xf40ba + mov word [bp-024h], ax ; 89 46 dc ; 0xf40bb + mov word [bp-022h], dx ; 89 56 de ; 0xf40be + lea dx, [di-001h] ; 8d 55 ff ; 0xf40c1 eltorito.c:411 + shr dx, 002h ; c1 ea 02 ; 0xf40c4 + inc dx ; 42 ; 0xf40c7 + mov ax, dx ; 89 d0 ; 0xf40c8 + xchg ah, al ; 86 c4 ; 0xf40ca + mov word [bp-01fh], ax ; 89 46 e1 ; 0xf40cc + les bx, [bp-012h] ; c4 5e ee ; 0xf40cf eltorito.c:413 + mov word [es:bx+00eh], dx ; 26 89 57 0e ; 0xf40d2 + mov word [es:bx+010h], 00200h ; 26 c7 47 10 00 02 ; 0xf40d6 eltorito.c:414 + mov ax, di ; 89 f8 ; 0xf40dc eltorito.c:416 + sal ax, 009h ; c1 e0 09 ; 0xf40de + mov dx, 00800h ; ba 00 08 ; 0xf40e1 + sub dx, ax ; 29 c2 ; 0xf40e4 + mov ax, dx ; 89 d0 ; 0xf40e6 + and ah, 007h ; 80 e4 07 ; 0xf40e8 + mov word [es:bx+020h], ax ; 26 89 47 20 ; 0xf40eb + movzx bx, byte [bp-00eh] ; 0f b6 5e f2 ; 0xf40ef eltorito.c:418 + imul bx, bx, strict byte 0001ch ; 6b db 1c ; 0xf40f3 + add bx, word [bp-012h] ; 03 5e ee ; 0xf40f6 + movzx ax, byte [es:bx+022h] ; 26 0f b6 47 22 ; 0xf40f9 + add ax, ax ; 01 c0 ; 0xf40fe + mov word [bp-01ah], ax ; 89 46 e6 ; 0xf4100 + push word [bp-014h] ; ff 76 ec ; 0xf4103 + push dword 000000001h ; 66 6a 01 ; 0xf4106 + mov ax, di ; 89 f8 ; 0xf4109 + xor di, di ; 31 ff ; 0xf410b + mov cx, strict word 00009h ; b9 09 00 ; 0xf410d + sal ax, 1 ; d1 e0 ; 0xf4110 + rcl di, 1 ; d1 d7 ; 0xf4112 + loop 04110h ; e2 fa ; 0xf4114 + push di ; 57 ; 0xf4116 + push ax ; 50 ; 0xf4117 + push strict byte 00000h ; 6a 00 ; 0xf4118 + movzx ax, byte [bp-00eh] ; 0f b6 46 f2 ; 0xf411a + mov cx, ss ; 8c d1 ; 0xf411e + lea bx, [bp-026h] ; 8d 5e da ; 0xf4120 + mov dx, strict word 0000ch ; ba 0c 00 ; 0xf4123 + mov di, word [bp-01ah] ; 8b 7e e6 ; 0xf4126 + call word [word di+0006ah] ; ff 95 6a 00 ; 0xf4129 + les bx, [bp-012h] ; c4 5e ee ; 0xf412d eltorito.c:420 + mov word [es:bx+020h], strict word 00000h ; 26 c7 47 20 00 00 ; 0xf4130 + test ax, ax ; 85 c0 ; 0xf4136 eltorito.c:422 + je short 04140h ; 74 06 ; 0xf4138 + mov ax, strict word 0000dh ; b8 0d 00 ; 0xf413a eltorito.c:423 + jmp near 04215h ; e9 d5 00 ; 0xf413d + mov es, [bp-018h] ; 8e 46 e8 ; 0xf4140 eltorito.c:428 + mov al, byte [es:si+001h] ; 26 8a 44 01 ; 0xf4143 + cmp AL, strict byte 002h ; 3c 02 ; 0xf4147 + jc short 04157h ; 72 0c ; 0xf4149 + jbe short 0416fh ; 76 22 ; 0xf414b + cmp AL, strict byte 004h ; 3c 04 ; 0xf414d + je short 04185h ; 74 34 ; 0xf414f + cmp AL, strict byte 003h ; 3c 03 ; 0xf4151 + je short 0417ah ; 74 25 ; 0xf4153 + jmp short 041cch ; eb 75 ; 0xf4155 + cmp AL, strict byte 001h ; 3c 01 ; 0xf4157 + jne short 041cch ; 75 71 ; 0xf4159 + mov es, [bp-018h] ; 8e 46 e8 ; 0xf415b eltorito.c:430 + db 066h, 026h, 0c7h, 044h, 012h, 050h, 000h, 00fh, 000h + ; mov dword [es:si+012h], strict dword 0000f0050h ; 66 26 c7 44 12 50 00 0f 00; 0xf415e + mov word [es:si+010h], strict word 00002h ; 26 c7 44 10 02 00 ; 0xf4167 eltorito.c:432 + jmp short 041cch ; eb 5d ; 0xf416d eltorito.c:433 + db 066h, 026h, 0c7h, 044h, 012h, 050h, 000h, 012h, 000h + ; mov dword [es:si+012h], strict dword 000120050h ; 66 26 c7 44 12 50 00 12 00; 0xf416f eltorito.c:435 + jmp short 04167h ; eb ed ; 0xf4178 + db 066h, 026h, 0c7h, 044h, 012h, 050h, 000h, 024h, 000h + ; mov dword [es:si+012h], strict dword 000240050h ; 66 26 c7 44 12 50 00 24 00; 0xf417a eltorito.c:440 + jmp short 04167h ; eb e2 ; 0xf4183 + mov bx, 001c4h ; bb c4 01 ; 0xf4185 eltorito.c:38 + mov es, [bp-014h] ; 8e 46 ec ; 0xf4188 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf418b + and AL, strict byte 03fh ; 24 3f ; 0xf418e eltorito.c:39 + xor ah, ah ; 30 e4 ; 0xf4190 + mov es, [bp-018h] ; 8e 46 e8 ; 0xf4192 + mov word [es:si+014h], ax ; 26 89 44 14 ; 0xf4195 + mov es, [bp-014h] ; 8e 46 ec ; 0xf4199 eltorito.c:38 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf419c + and ax, 000c0h ; 25 c0 00 ; 0xf419f eltorito.c:39 + mov dx, ax ; 89 c2 ; 0xf41a2 + sal dx, 002h ; c1 e2 02 ; 0xf41a4 + mov bx, 001c5h ; bb c5 01 ; 0xf41a7 eltorito.c:38 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf41aa + xor ah, ah ; 30 e4 ; 0xf41ad eltorito.c:39 + add ax, dx ; 01 d0 ; 0xf41af + inc ax ; 40 ; 0xf41b1 + mov es, [bp-018h] ; 8e 46 e8 ; 0xf41b2 + mov word [es:si+012h], ax ; 26 89 44 12 ; 0xf41b5 + mov di, 001c3h ; bf c3 01 ; 0xf41b9 eltorito.c:38 + mov es, [bp-014h] ; 8e 46 ec ; 0xf41bc + mov al, byte [es:di] ; 26 8a 05 ; 0xf41bf + xor ah, ah ; 30 e4 ; 0xf41c2 eltorito.c:39 + inc ax ; 40 ; 0xf41c4 + mov es, [bp-018h] ; 8e 46 e8 ; 0xf41c5 + mov word [es:si+010h], ax ; 26 89 44 10 ; 0xf41c8 + mov es, [bp-018h] ; 8e 46 e8 ; 0xf41cc eltorito.c:453 + cmp byte [es:si+001h], 000h ; 26 80 7c 01 00 ; 0xf41cf + je short 041fch ; 74 26 ; 0xf41d4 + cmp byte [es:si+002h], 000h ; 26 80 7c 02 00 ; 0xf41d6 eltorito.c:455 + jne short 041eeh ; 75 11 ; 0xf41db + mov bx, strict word 00010h ; bb 10 00 ; 0xf41dd eltorito.c:38 + mov ax, strict word 00040h ; b8 40 00 ; 0xf41e0 + mov es, ax ; 8e c0 ; 0xf41e3 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf41e5 + or AL, strict byte 041h ; 0c 41 ; 0xf41e8 eltorito.c:39 + mov di, bx ; 89 df ; 0xf41ea eltorito.c:43 + jmp short 041f9h ; eb 0b ; 0xf41ec eltorito.c:457 + mov di, 00304h ; bf 04 03 ; 0xf41ee eltorito.c:38 + mov es, [bp-016h] ; 8e 46 ea ; 0xf41f1 + mov al, byte [es:di] ; 26 8a 05 ; 0xf41f4 + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf41f7 eltorito.c:39 + mov byte [es:di], al ; 26 88 05 ; 0xf41f9 eltorito.c:43 + mov es, [bp-018h] ; 8e 46 e8 ; 0xf41fc eltorito.c:462 + cmp byte [es:si+001h], 000h ; 26 80 7c 01 00 ; 0xf41ff + je short 0420ah ; 74 04 ; 0xf4204 + mov byte [es:si], 001h ; 26 c6 04 01 ; 0xf4206 eltorito.c:463 + mov es, [bp-018h] ; 8e 46 e8 ; 0xf420a eltorito.c:466 + movzx ax, byte [es:si+002h] ; 26 0f b6 44 02 ; 0xf420d + sal ax, 008h ; c1 e0 08 ; 0xf4212 + lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf4215 eltorito.c:467 + pop di ; 5f ; 0xf4218 + pop si ; 5e ; 0xf4219 + pop dx ; 5a ; 0xf421a + pop cx ; 59 ; 0xf421b + pop bx ; 5b ; 0xf421c + pop bp ; 5d ; 0xf421d + retn ; c3 ; 0xf421e + ; disGetNextSymbol 0xf421f LB 0x5e26 -> off=0x59 cb=00000000000005d8 uValue=00000000000f2c78 'int13_cdemu' + db 050h, 04eh, 049h, 048h, 047h, 046h, 045h, 044h, 043h, 042h, 041h, 018h, 016h, 015h, 014h, 011h + db 010h, 00dh, 00ch, 00bh, 00ah, 009h, 008h, 005h, 004h, 003h, 002h, 001h, 000h, 033h, 048h, 023h + db 043h, 06dh, 043h, 091h, 043h, 062h, 043h, 091h, 043h, 062h, 043h, 08ah, 045h, 047h, 043h, 033h + db 048h, 033h, 048h, 047h, 043h, 047h, 043h, 047h, 043h, 047h, 043h, 047h, 043h, 032h, 046h, 047h + db 043h, 033h, 048h, 03bh, 046h, 04eh, 046h, 033h, 048h, 04eh, 046h, 033h, 048h, 033h, 048h, 04eh + db 046h, 0f7h, 047h, 033h, 048h, 033h, 048h, 033h, 048h +int13_cdemu: ; 0xf4278 LB 0x5d8 + push bp ; 55 ; 0xf4278 eltorito.c:477 + mov bp, sp ; 89 e5 ; 0xf4279 + push si ; 56 ; 0xf427b + push di ; 57 ; 0xf427c + sub sp, strict byte 00038h ; 83 ec 38 ; 0xf427d + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf4280 eltorito.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf4283 + mov es, ax ; 8e c0 ; 0xf4286 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf4288 + mov dx, 00366h ; ba 66 03 ; 0xf428b eltorito.c:493 + mov cx, ax ; 89 c1 ; 0xf428e + mov bx, dx ; 89 d3 ; 0xf4290 + mov word [bp-00ah], ax ; 89 46 f6 ; 0xf4292 + mov si, 00122h ; be 22 01 ; 0xf4295 eltorito.c:494 + mov word [bp-008h], ax ; 89 46 f8 ; 0xf4298 + mov es, ax ; 8e c0 ; 0xf429b eltorito.c:501 + mov di, dx ; 89 d7 ; 0xf429d + mov al, byte [es:di+003h] ; 26 8a 45 03 ; 0xf429f + add al, al ; 00 c0 ; 0xf42a3 + mov byte [bp-006h], al ; 88 46 fa ; 0xf42a5 + mov al, byte [es:di+004h] ; 26 8a 45 04 ; 0xf42a8 eltorito.c:502 + add byte [bp-006h], al ; 00 46 fa ; 0xf42ac + mov di, strict word 00074h ; bf 74 00 ; 0xf42af eltorito.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf42b2 + mov es, ax ; 8e c0 ; 0xf42b5 + mov byte [es:di], 000h ; 26 c6 05 00 ; 0xf42b7 + mov es, cx ; 8e c1 ; 0xf42bb eltorito.c:507 + mov di, dx ; 89 d7 ; 0xf42bd + cmp byte [es:di], 000h ; 26 80 3d 00 ; 0xf42bf + je short 042d3h ; 74 0e ; 0xf42c3 + movzx dx, byte [es:di+002h] ; 26 0f b6 55 02 ; 0xf42c5 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf42ca + xor ah, ah ; 30 e4 ; 0xf42cd + cmp dx, ax ; 39 c2 ; 0xf42cf + je short 042fch ; 74 29 ; 0xf42d1 + mov bx, 00db2h ; bb b2 0d ; 0xf42d3 eltorito.c:508 + mov cx, ds ; 8c d9 ; 0xf42d6 + mov ax, strict word 00004h ; b8 04 00 ; 0xf42d8 + call 019d3h ; e8 f5 d6 ; 0xf42db + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf42de + xor ah, ah ; 30 e4 ; 0xf42e1 + push ax ; 50 ; 0xf42e3 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf42e4 + shr ax, 008h ; c1 e8 08 ; 0xf42e7 + push ax ; 50 ; 0xf42ea + push 0035eh ; 68 5e 03 ; 0xf42eb + push 0036ah ; 68 6a 03 ; 0xf42ee + push strict byte 00004h ; 6a 04 ; 0xf42f1 + call 01a14h ; e8 1e d7 ; 0xf42f3 + add sp, strict byte 0000ah ; 83 c4 0a ; 0xf42f6 + jmp near 04810h ; e9 14 05 ; 0xf42f9 eltorito.c:509 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf42fc eltorito.c:512 + shr ax, 008h ; c1 e8 08 ; 0xf42ff + cmp ax, strict word 00050h ; 3d 50 00 ; 0xf4302 + jnbe near 04833h ; 0f 87 2a 05 ; 0xf4305 + push CS ; 0e ; 0xf4309 + pop ES ; 07 ; 0xf430a + mov cx, strict word 0001eh ; b9 1e 00 ; 0xf430b + mov di, 0421fh ; bf 1f 42 ; 0xf430e + repne scasb ; f2 ae ; 0xf4311 + sal cx, 1 ; d1 e1 ; 0xf4313 + mov di, cx ; 89 cf ; 0xf4315 + mov dx, word [cs:di+0423ch] ; 2e 8b 95 3c 42 ; 0xf4317 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf431c + xor ah, ah ; 30 e4 ; 0xf431f + jmp dx ; ff e2 ; 0xf4321 + movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf4323 eltorito.c:515 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf4327 + mov es, [bp-008h] ; 8e 46 f8 ; 0xf432a + add si, ax ; 01 c6 ; 0xf432d + movzx bx, byte [es:si+022h] ; 26 0f b6 5c 22 ; 0xf432f + add bx, bx ; 01 db ; 0xf4334 + cmp word [word bx+0006ah], strict byte 00000h ; 83 bf 6a 00 00 ; 0xf4336 + je near 04347h ; 0f 84 08 00 ; 0xf433b + movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf433f eltorito.c:517 + call word [word bx+00076h] ; ff 97 76 00 ; 0xf4343 + mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf4347 eltorito.c:519 + mov bx, strict word 00074h ; bb 74 00 ; 0xf434b + mov ax, strict word 00040h ; b8 40 00 ; 0xf434e + mov es, ax ; 8e c0 ; 0xf4351 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf4353 + and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf4357 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf435b + pop di ; 5f ; 0xf435e + pop si ; 5e ; 0xf435f + pop bp ; 5d ; 0xf4360 + retn ; c3 ; 0xf4361 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf4362 eltorito.c:535 + xor ah, ah ; 30 e4 ; 0xf4365 + or ah, 003h ; 80 cc 03 ; 0xf4367 + jmp near 04818h ; e9 ab 04 ; 0xf436a eltorito.c:536 + mov bx, strict word 00074h ; bb 74 00 ; 0xf436d eltorito.c:38 + mov dx, strict word 00040h ; ba 40 00 ; 0xf4370 + mov es, dx ; 8e c2 ; 0xf4373 + mov dl, byte [es:bx] ; 26 8a 17 ; 0xf4375 + movzx bx, dl ; 0f b6 da ; 0xf4378 eltorito.c:541 + sal bx, 008h ; c1 e3 08 ; 0xf437b + or ax, bx ; 09 d8 ; 0xf437e + mov word [bp+016h], ax ; 89 46 16 ; 0xf4380 + mov bx, strict word 00074h ; bb 74 00 ; 0xf4383 eltorito.c:43 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf4386 + test dl, dl ; 84 d2 ; 0xf438a eltorito.c:545 + je short 0434bh ; 74 bd ; 0xf438c + jmp near 0482ch ; e9 9b 04 ; 0xf438e eltorito.c:546 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf4391 eltorito.c:553 + mov ax, word [es:bx+014h] ; 26 8b 47 14 ; 0xf4394 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf4398 + mov dx, word [es:bx+012h] ; 26 8b 57 12 ; 0xf439b eltorito.c:554 + mov ax, word [es:bx+010h] ; 26 8b 47 10 ; 0xf439f eltorito.c:555 + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf43a3 + mov ax, word [es:bx+008h] ; 26 8b 47 08 ; 0xf43a6 eltorito.c:556 + mov word [bp-020h], ax ; 89 46 e0 ; 0xf43aa + mov ax, word [es:bx+00ah] ; 26 8b 47 0a ; 0xf43ad + mov word [bp-01eh], ax ; 89 46 e2 ; 0xf43b1 + mov ax, word [bp+014h] ; 8b 46 14 ; 0xf43b4 eltorito.c:558 + and ax, strict word 0003fh ; 25 3f 00 ; 0xf43b7 + mov word [bp-022h], ax ; 89 46 de ; 0xf43ba + mov bx, word [bp+014h] ; 8b 5e 14 ; 0xf43bd eltorito.c:559 + and bx, 000c0h ; 81 e3 c0 00 ; 0xf43c0 + sal bx, 002h ; c1 e3 02 ; 0xf43c4 + mov ax, word [bp+014h] ; 8b 46 14 ; 0xf43c7 + shr ax, 008h ; c1 e8 08 ; 0xf43ca + or ax, bx ; 09 d8 ; 0xf43cd + mov bx, word [bp+012h] ; 8b 5e 12 ; 0xf43cf eltorito.c:560 + shr bx, 008h ; c1 eb 08 ; 0xf43d2 + mov word [bp-012h], bx ; 89 5e ee ; 0xf43d5 + mov di, word [bp+016h] ; 8b 7e 16 ; 0xf43d8 eltorito.c:561 + and di, 000ffh ; 81 e7 ff 00 ; 0xf43db + jne short 043e4h ; 75 03 ; 0xf43df eltorito.c:569 + jmp near 04347h ; e9 63 ff ; 0xf43e1 eltorito.c:570 + mov bx, word [bp-022h] ; 8b 5e de ; 0xf43e4 eltorito.c:573 + cmp bx, word [bp-00ch] ; 3b 5e f4 ; 0xf43e7 + jnbe near 04810h ; 0f 87 22 04 ; 0xf43ea + cmp ax, dx ; 39 d0 ; 0xf43ee + jnc near 04810h ; 0f 83 1c 04 ; 0xf43f0 + mov dx, word [bp-012h] ; 8b 56 ee ; 0xf43f4 + cmp dx, word [bp-00eh] ; 3b 56 f2 ; 0xf43f7 + jnc near 04810h ; 0f 83 12 04 ; 0xf43fa + mov dx, word [bp+016h] ; 8b 56 16 ; 0xf43fe eltorito.c:580 + shr dx, 008h ; c1 ea 08 ; 0xf4401 + cmp dx, strict byte 00004h ; 83 fa 04 ; 0xf4404 + jne short 0440ch ; 75 03 ; 0xf4407 + jmp near 04347h ; e9 3b ff ; 0xf4409 eltorito.c:581 + mov dx, word [bp+010h] ; 8b 56 10 ; 0xf440c eltorito.c:583 + shr dx, 004h ; c1 ea 04 ; 0xf440f + mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf4412 + add bx, dx ; 01 d3 ; 0xf4415 + mov word [bp-016h], bx ; 89 5e ea ; 0xf4417 + mov dx, word [bp+010h] ; 8b 56 10 ; 0xf441a eltorito.c:584 + and dx, strict byte 0000fh ; 83 e2 0f ; 0xf441d + mov word [bp-014h], dx ; 89 56 ec ; 0xf4420 + xor dl, dl ; 30 d2 ; 0xf4423 eltorito.c:587 + mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf4425 + xor cx, cx ; 31 c9 ; 0xf4428 + call 09f10h ; e8 e3 5a ; 0xf442a + xor bx, bx ; 31 db ; 0xf442d + add ax, word [bp-012h] ; 03 46 ee ; 0xf442f + adc dx, bx ; 11 da ; 0xf4432 + mov bx, word [bp-00ch] ; 8b 5e f4 ; 0xf4434 + xor cx, cx ; 31 c9 ; 0xf4437 + call 09f10h ; e8 d4 5a ; 0xf4439 + mov bx, dx ; 89 d3 ; 0xf443c + mov dx, word [bp-022h] ; 8b 56 de ; 0xf443e + dec dx ; 4a ; 0xf4441 + mov word [bp-026h], strict word 00000h ; c7 46 da 00 00 ; 0xf4442 + add dx, ax ; 01 c2 ; 0xf4447 + adc bx, word [bp-026h] ; 13 5e da ; 0xf4449 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf444c eltorito.c:590 + xor al, al ; 30 c0 ; 0xf444f + or ax, di ; 09 f8 ; 0xf4451 + mov word [bp+016h], ax ; 89 46 16 ; 0xf4453 + mov word [bp-02ch], dx ; 89 56 d4 ; 0xf4456 eltorito.c:593 + mov word [bp-02ah], bx ; 89 5e d6 ; 0xf4459 + shr word [bp-02ah], 1 ; d1 6e d6 ; 0xf445c + rcr word [bp-02ch], 1 ; d1 5e d4 ; 0xf445f + shr word [bp-02ah], 1 ; d1 6e d6 ; 0xf4462 + rcr word [bp-02ch], 1 ; d1 5e d4 ; 0xf4465 + mov ax, word [bp-02ah] ; 8b 46 d6 ; 0xf4468 + mov word [bp-028h], ax ; 89 46 d8 ; 0xf446b + mov ax, dx ; 89 d0 ; 0xf446e eltorito.c:594 + xor ah, dh ; 30 f4 ; 0xf4470 + and AL, strict byte 003h ; 24 03 ; 0xf4472 + mov word [bp-024h], ax ; 89 46 dc ; 0xf4474 + xor cx, cx ; 31 c9 ; 0xf4477 eltorito.c:597 + mov ax, dx ; 89 d0 ; 0xf4479 + add ax, di ; 01 f8 ; 0xf447b + mov dx, bx ; 89 da ; 0xf447d + adc dx, cx ; 11 ca ; 0xf447f + add ax, strict word 0ffffh ; 05 ff ff ; 0xf4481 + adc dx, strict byte 0ffffh ; 83 d2 ff ; 0xf4484 + mov word [bp-030h], ax ; 89 46 d0 ; 0xf4487 + mov word [bp-02eh], dx ; 89 56 d2 ; 0xf448a + shr word [bp-02eh], 1 ; d1 6e d2 ; 0xf448d + rcr word [bp-030h], 1 ; d1 5e d0 ; 0xf4490 + shr word [bp-02eh], 1 ; d1 6e d2 ; 0xf4493 + rcr word [bp-030h], 1 ; d1 5e d0 ; 0xf4496 + mov cx, strict word 0000ch ; b9 0c 00 ; 0xf4499 eltorito.c:599 + xor bx, bx ; 31 db ; 0xf449c + mov dx, ss ; 8c d2 ; 0xf449e + lea ax, [bp-03ch] ; 8d 46 c4 ; 0xf44a0 + call 09fb0h ; e8 0a 5b ; 0xf44a3 + mov word [bp-03ch], strict word 00028h ; c7 46 c4 28 00 ; 0xf44a6 eltorito.c:600 + mov ax, word [bp-020h] ; 8b 46 e0 ; 0xf44ab eltorito.c:601 + add ax, word [bp-02ch] ; 03 46 d4 ; 0xf44ae + mov dx, word [bp-01eh] ; 8b 56 e2 ; 0xf44b1 + adc dx, word [bp-028h] ; 13 56 d8 ; 0xf44b4 + xchg ah, al ; 86 c4 ; 0xf44b7 + xchg dh, dl ; 86 d6 ; 0xf44b9 + xchg dx, ax ; 92 ; 0xf44bb + mov word [bp-03ah], ax ; 89 46 c6 ; 0xf44bc + mov word [bp-038h], dx ; 89 56 c8 ; 0xf44bf + mov ax, word [bp-030h] ; 8b 46 d0 ; 0xf44c2 eltorito.c:602 + sub ax, word [bp-02ch] ; 2b 46 d4 ; 0xf44c5 + inc ax ; 40 ; 0xf44c8 + xchg ah, al ; 86 c4 ; 0xf44c9 + mov word [bp-035h], ax ; 89 46 cb ; 0xf44cb + mov es, [bp-008h] ; 8e 46 f8 ; 0xf44ce eltorito.c:604 + mov word [es:si+00eh], di ; 26 89 7c 0e ; 0xf44d1 + mov word [es:si+010h], 00200h ; 26 c7 44 10 00 02 ; 0xf44d5 eltorito.c:605 + mov ax, word [bp-024h] ; 8b 46 dc ; 0xf44db eltorito.c:607 + sal ax, 009h ; c1 e0 09 ; 0xf44de + mov word [es:si+01eh], ax ; 26 89 44 1e ; 0xf44e1 + mov dx, di ; 89 fa ; 0xf44e5 eltorito.c:608 + xor dh, dh ; 30 f6 ; 0xf44e7 + and dl, 003h ; 80 e2 03 ; 0xf44e9 + mov bx, strict word 00004h ; bb 04 00 ; 0xf44ec + sub bx, dx ; 29 d3 ; 0xf44ef + mov dx, bx ; 89 da ; 0xf44f1 + sub dx, word [bp-024h] ; 2b 56 dc ; 0xf44f3 + sal dx, 009h ; c1 e2 09 ; 0xf44f6 + and dh, 007h ; 80 e6 07 ; 0xf44f9 + mov word [es:si+020h], dx ; 26 89 54 20 ; 0xf44fc + movzx dx, byte [bp-006h] ; 0f b6 56 fa ; 0xf4500 eltorito.c:610 + imul dx, dx, strict byte 0001ch ; 6b d2 1c ; 0xf4504 + mov bx, si ; 89 f3 ; 0xf4507 + add bx, dx ; 01 d3 ; 0xf4509 + movzx dx, byte [es:bx+022h] ; 26 0f b6 57 22 ; 0xf450b + add dx, dx ; 01 d2 ; 0xf4510 + mov word [bp-026h], dx ; 89 56 da ; 0xf4512 + push word [bp-016h] ; ff 76 ea ; 0xf4515 + push word [bp-014h] ; ff 76 ec ; 0xf4518 + push strict byte 00001h ; 6a 01 ; 0xf451b + mov bx, di ; 89 fb ; 0xf451d + xor di, di ; 31 ff ; 0xf451f + mov cx, strict word 00009h ; b9 09 00 ; 0xf4521 + sal bx, 1 ; d1 e3 ; 0xf4524 + rcl di, 1 ; d1 d7 ; 0xf4526 + loop 04524h ; e2 fa ; 0xf4528 + push di ; 57 ; 0xf452a + push bx ; 53 ; 0xf452b + push ax ; 50 ; 0xf452c + movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf452d + mov cx, ss ; 8c d1 ; 0xf4531 + lea bx, [bp-03ch] ; 8d 5e c4 ; 0xf4533 + mov dx, strict word 0000ch ; ba 0c 00 ; 0xf4536 + mov di, word [bp-026h] ; 8b 7e da ; 0xf4539 + call word [word di+0006ah] ; ff 95 6a 00 ; 0xf453c + mov dx, ax ; 89 c2 ; 0xf4540 + mov es, [bp-008h] ; 8e 46 f8 ; 0xf4542 eltorito.c:612 + db 066h, 026h, 0c7h, 044h, 01eh, 000h, 000h, 000h, 000h + ; mov dword [es:si+01eh], strict dword 000000000h ; 66 26 c7 44 1e 00 00 00 00; 0xf4545 + test al, al ; 84 c0 ; 0xf454e eltorito.c:613 + je near 04347h ; 0f 84 f3 fd ; 0xf4550 + mov bx, 00db2h ; bb b2 0d ; 0xf4554 eltorito.c:616 + mov cx, ds ; 8c d9 ; 0xf4557 + mov ax, strict word 00004h ; b8 04 00 ; 0xf4559 + call 019d3h ; e8 74 d4 ; 0xf455c + movzx ax, dl ; 0f b6 c2 ; 0xf455f + push ax ; 50 ; 0xf4562 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf4563 + shr ax, 008h ; c1 e8 08 ; 0xf4566 + push ax ; 50 ; 0xf4569 + push 0035eh ; 68 5e 03 ; 0xf456a + push 003a0h ; 68 a0 03 ; 0xf456d + push strict byte 00004h ; 6a 04 ; 0xf4570 + call 01a14h ; e8 9f d4 ; 0xf4572 + add sp, strict byte 0000ah ; 83 c4 0a ; 0xf4575 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf4578 eltorito.c:617 + xor ah, ah ; 30 e4 ; 0xf457b + or ah, 002h ; 80 cc 02 ; 0xf457d + mov word [bp+016h], ax ; 89 46 16 ; 0xf4580 + mov byte [bp+016h], 000h ; c6 46 16 00 ; 0xf4583 eltorito.c:618 + jmp near 0481bh ; e9 91 02 ; 0xf4587 eltorito.c:619 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf458a eltorito.c:626 + mov ax, word [es:bx+014h] ; 26 8b 47 14 ; 0xf458d + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf4591 + mov dx, word [es:bx+012h] ; 26 8b 57 12 ; 0xf4594 eltorito.c:627 + dec dx ; 4a ; 0xf4598 + mov ax, word [es:bx+010h] ; 26 8b 47 10 ; 0xf4599 eltorito.c:628 + dec ax ; 48 ; 0xf459d + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf459e + mov byte [bp+016h], 000h ; c6 46 16 00 ; 0xf45a1 eltorito.c:630 + mov si, word [bp+010h] ; 8b 76 10 ; 0xf45a5 eltorito.c:631 + and si, 0ff00h ; 81 e6 00 ff ; 0xf45a8 + mov ax, word [bp+014h] ; 8b 46 14 ; 0xf45ac eltorito.c:632 + xor ah, ah ; 30 e4 ; 0xf45af + mov cx, dx ; 89 d1 ; 0xf45b1 + xor ch, dh ; 30 f5 ; 0xf45b3 + sal cx, 008h ; c1 e1 08 ; 0xf45b5 + or ax, cx ; 09 c8 ; 0xf45b8 + mov word [bp+014h], ax ; 89 46 14 ; 0xf45ba + mov ax, dx ; 89 d0 ; 0xf45bd eltorito.c:633 + shr ax, 002h ; c1 e8 02 ; 0xf45bf + and AL, strict byte 0c0h ; 24 c0 ; 0xf45c2 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf45c4 + and dl, 03fh ; 80 e2 3f ; 0xf45c7 + or al, dl ; 08 d0 ; 0xf45ca + mov dx, word [bp+014h] ; 8b 56 14 ; 0xf45cc + mov dl, al ; 88 c2 ; 0xf45cf + mov word [bp+014h], dx ; 89 56 14 ; 0xf45d1 + mov dx, word [bp+012h] ; 8b 56 12 ; 0xf45d4 eltorito.c:634 + xor dh, dh ; 30 f6 ; 0xf45d7 + mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf45d9 + sal ax, 008h ; c1 e0 08 ; 0xf45dc + or dx, ax ; 09 c2 ; 0xf45df + mov word [bp+012h], dx ; 89 56 12 ; 0xf45e1 + mov ax, dx ; 89 d0 ; 0xf45e4 eltorito.c:635 + xor al, dl ; 30 d0 ; 0xf45e6 + or AL, strict byte 002h ; 0c 02 ; 0xf45e8 + mov word [bp+012h], ax ; 89 46 12 ; 0xf45ea + mov al, byte [es:bx+001h] ; 26 8a 47 01 ; 0xf45ed eltorito.c:638 + mov word [bp+010h], si ; 89 76 10 ; 0xf45f1 + cmp AL, strict byte 003h ; 3c 03 ; 0xf45f4 + je short 04614h ; 74 1c ; 0xf45f6 + cmp AL, strict byte 002h ; 3c 02 ; 0xf45f8 + je short 0460ch ; 74 10 ; 0xf45fa + cmp AL, strict byte 001h ; 3c 01 ; 0xf45fc + jne short 04619h ; 75 19 ; 0xf45fe + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf4600 eltorito.c:639 + xor al, al ; 30 c0 ; 0xf4603 + or AL, strict byte 002h ; 0c 02 ; 0xf4605 + mov word [bp+010h], ax ; 89 46 10 ; 0xf4607 + jmp short 04619h ; eb 0d ; 0xf460a + or si, strict byte 00004h ; 83 ce 04 ; 0xf460c eltorito.c:640 + mov word [bp+010h], si ; 89 76 10 ; 0xf460f + jmp short 04619h ; eb 05 ; 0xf4612 + or si, strict byte 00005h ; 83 ce 05 ; 0xf4614 eltorito.c:641 + jmp short 0460fh ; eb f6 ; 0xf4617 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf4619 eltorito.c:645 + cmp byte [es:bx+001h], 004h ; 26 80 7f 01 04 ; 0xf461c + jnc near 04347h ; 0f 83 22 fd ; 0xf4621 + mov word [bp+008h], 0efc7h ; c7 46 08 c7 ef ; 0xf4625 eltorito.c:646 + mov word [bp+006h], 0f000h ; c7 46 06 00 f0 ; 0xf462a eltorito.c:647 + jmp near 04347h ; e9 15 fd ; 0xf462f eltorito.c:649 + or ah, 003h ; 80 cc 03 ; 0xf4632 eltorito.c:654 + mov word [bp+016h], ax ; 89 46 16 ; 0xf4635 + jmp near 0434bh ; e9 10 fd ; 0xf4638 eltorito.c:655 + mov word [bp+010h], 0aa55h ; c7 46 10 55 aa ; 0xf463b eltorito.c:659 + or ah, 030h ; 80 cc 30 ; 0xf4640 eltorito.c:660 + mov word [bp+016h], ax ; 89 46 16 ; 0xf4643 + mov word [bp+014h], strict word 00007h ; c7 46 14 07 00 ; 0xf4646 eltorito.c:661 + jmp near 0434bh ; e9 fd fc ; 0xf464b eltorito.c:662 + mov di, word [bp+00ah] ; 8b 7e 0a ; 0xf464e eltorito.c:670 + mov es, [bp+004h] ; 8e 46 04 ; 0xf4651 + mov word [bp-01ch], di ; 89 7e e4 ; 0xf4654 + mov [bp-01ah], es ; 8c 46 e6 ; 0xf4657 + mov ax, word [es:di+002h] ; 26 8b 45 02 ; 0xf465a eltorito.c:672 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf465e + mov ax, word [es:di+006h] ; 26 8b 45 06 ; 0xf4661 eltorito.c:673 + mov word [bp-016h], ax ; 89 46 ea ; 0xf4665 + mov ax, word [es:di+004h] ; 26 8b 45 04 ; 0xf4668 eltorito.c:674 + mov word [bp-014h], ax ; 89 46 ec ; 0xf466c + mov ax, word [es:di+00ch] ; 26 8b 45 0c ; 0xf466f eltorito.c:677 + mov dx, word [es:di+00eh] ; 26 8b 55 0e ; 0xf4673 + or ax, dx ; 09 d0 ; 0xf4677 eltorito.c:678 + je short 04693h ; 74 18 ; 0xf4679 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf467b eltorito.c:679 + shr ax, 008h ; c1 e8 08 ; 0xf467e + push ax ; 50 ; 0xf4681 + push 0035eh ; 68 5e 03 ; 0xf4682 + push 003c1h ; 68 c1 03 ; 0xf4685 + push strict byte 00007h ; 6a 07 ; 0xf4688 + call 01a14h ; e8 87 d3 ; 0xf468a + add sp, strict byte 00008h ; 83 c4 08 ; 0xf468d + jmp near 04810h ; e9 7d 01 ; 0xf4690 eltorito.c:680 + les di, [bp-01ch] ; c4 7e e4 ; 0xf4693 eltorito.c:684 + mov ax, word [es:di+008h] ; 26 8b 45 08 ; 0xf4696 + mov dx, word [es:di+00ah] ; 26 8b 55 0a ; 0xf469a + mov cx, word [bp+016h] ; 8b 4e 16 ; 0xf469e eltorito.c:687 + shr cx, 008h ; c1 e9 08 ; 0xf46a1 + mov word [bp-018h], cx ; 89 4e e8 ; 0xf46a4 + cmp cx, strict byte 00044h ; 83 f9 44 ; 0xf46a7 + je near 04347h ; 0f 84 99 fc ; 0xf46aa + cmp cx, strict byte 00047h ; 83 f9 47 ; 0xf46ae + jne short 046b6h ; 75 03 ; 0xf46b1 + jmp near 04347h ; e9 91 fc ; 0xf46b3 eltorito.c:688 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf46b6 eltorito.c:695 + mov cx, word [es:bx+008h] ; 26 8b 4f 08 ; 0xf46b9 + mov word [bp-020h], cx ; 89 4e e0 ; 0xf46bd + mov bx, word [es:bx+00ah] ; 26 8b 5f 0a ; 0xf46c0 + mov word [bp-01eh], bx ; 89 5e e2 ; 0xf46c4 + mov word [bp-030h], ax ; 89 46 d0 ; 0xf46c7 eltorito.c:698 + mov word [bp-02eh], dx ; 89 56 d2 ; 0xf46ca + shr word [bp-02eh], 1 ; d1 6e d2 ; 0xf46cd + rcr word [bp-030h], 1 ; d1 5e d0 ; 0xf46d0 + shr word [bp-02eh], 1 ; d1 6e d2 ; 0xf46d3 + rcr word [bp-030h], 1 ; d1 5e d0 ; 0xf46d6 + mov di, word [bp-02eh] ; 8b 7e d2 ; 0xf46d9 + mov bx, ax ; 89 c3 ; 0xf46dc eltorito.c:699 + xor bh, ah ; 30 e7 ; 0xf46de + and bl, 003h ; 80 e3 03 ; 0xf46e0 + mov word [bp-024h], bx ; 89 5e dc ; 0xf46e3 + xor bx, bx ; 31 db ; 0xf46e6 eltorito.c:702 + add ax, word [bp-010h] ; 03 46 f0 ; 0xf46e8 + adc dx, bx ; 11 da ; 0xf46eb + add ax, strict word 0ffffh ; 05 ff ff ; 0xf46ed + adc dx, strict byte 0ffffh ; 83 d2 ff ; 0xf46f0 + mov word [bp-02ch], ax ; 89 46 d4 ; 0xf46f3 + mov word [bp-02ah], dx ; 89 56 d6 ; 0xf46f6 + shr word [bp-02ah], 1 ; d1 6e d6 ; 0xf46f9 + rcr word [bp-02ch], 1 ; d1 5e d4 ; 0xf46fc + shr word [bp-02ah], 1 ; d1 6e d6 ; 0xf46ff + rcr word [bp-02ch], 1 ; d1 5e d4 ; 0xf4702 + mov cx, strict word 0000ch ; b9 0c 00 ; 0xf4705 eltorito.c:704 + mov dx, ss ; 8c d2 ; 0xf4708 + lea ax, [bp-03ch] ; 8d 46 c4 ; 0xf470a + call 09fb0h ; e8 a0 58 ; 0xf470d + mov word [bp-03ch], strict word 00028h ; c7 46 c4 28 00 ; 0xf4710 eltorito.c:705 + mov ax, word [bp-020h] ; 8b 46 e0 ; 0xf4715 eltorito.c:706 + add ax, word [bp-030h] ; 03 46 d0 ; 0xf4718 + mov dx, word [bp-01eh] ; 8b 56 e2 ; 0xf471b + adc dx, di ; 11 fa ; 0xf471e + xchg ah, al ; 86 c4 ; 0xf4720 + xchg dh, dl ; 86 d6 ; 0xf4722 + xchg dx, ax ; 92 ; 0xf4724 + mov word [bp-03ah], ax ; 89 46 c6 ; 0xf4725 + mov word [bp-038h], dx ; 89 56 c8 ; 0xf4728 + mov ax, word [bp-02ch] ; 8b 46 d4 ; 0xf472b eltorito.c:707 + sub ax, word [bp-030h] ; 2b 46 d0 ; 0xf472e + inc ax ; 40 ; 0xf4731 + xchg ah, al ; 86 c4 ; 0xf4732 + mov word [bp-035h], ax ; 89 46 cb ; 0xf4734 + mov ax, word [bp-024h] ; 8b 46 dc ; 0xf4737 eltorito.c:709 + sal ax, 009h ; c1 e0 09 ; 0xf473a + mov es, [bp-008h] ; 8e 46 f8 ; 0xf473d + mov word [es:si+01eh], ax ; 26 89 44 1e ; 0xf4740 + mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf4744 eltorito.c:710 + xor dh, dh ; 30 f6 ; 0xf4747 + and dl, 003h ; 80 e2 03 ; 0xf4749 + mov bx, strict word 00004h ; bb 04 00 ; 0xf474c + sub bx, dx ; 29 d3 ; 0xf474f + mov dx, bx ; 89 da ; 0xf4751 + sub dx, word [bp-024h] ; 2b 56 dc ; 0xf4753 + sal dx, 009h ; c1 e2 09 ; 0xf4756 + and dh, 007h ; 80 e6 07 ; 0xf4759 + mov word [es:si+020h], dx ; 26 89 54 20 ; 0xf475c + movzx dx, byte [bp-006h] ; 0f b6 56 fa ; 0xf4760 eltorito.c:712 + imul dx, dx, strict byte 0001ch ; 6b d2 1c ; 0xf4764 + mov bx, si ; 89 f3 ; 0xf4767 + add bx, dx ; 01 d3 ; 0xf4769 + movzx dx, byte [es:bx+022h] ; 26 0f b6 57 22 ; 0xf476b + add dx, dx ; 01 d2 ; 0xf4770 + mov word [bp-026h], dx ; 89 56 da ; 0xf4772 + push word [bp-016h] ; ff 76 ea ; 0xf4775 + push word [bp-014h] ; ff 76 ec ; 0xf4778 + push strict byte 00001h ; 6a 01 ; 0xf477b + mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf477d + xor di, di ; 31 ff ; 0xf4780 + mov cx, strict word 00009h ; b9 09 00 ; 0xf4782 + sal bx, 1 ; d1 e3 ; 0xf4785 + rcl di, 1 ; d1 d7 ; 0xf4787 + loop 04785h ; e2 fa ; 0xf4789 + push di ; 57 ; 0xf478b + push bx ; 53 ; 0xf478c + push ax ; 50 ; 0xf478d + movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf478e + mov cx, ss ; 8c d1 ; 0xf4792 + lea bx, [bp-03ch] ; 8d 5e c4 ; 0xf4794 + mov dx, strict word 0000ch ; ba 0c 00 ; 0xf4797 + mov di, word [bp-026h] ; 8b 7e da ; 0xf479a + call word [word di+0006ah] ; ff 95 6a 00 ; 0xf479d + mov dx, ax ; 89 c2 ; 0xf47a1 + mov es, [bp-008h] ; 8e 46 f8 ; 0xf47a3 eltorito.c:714 + db 066h, 026h, 0c7h, 044h, 01eh, 000h, 000h, 000h, 000h + ; mov dword [es:si+01eh], strict dword 000000000h ; 66 26 c7 44 1e 00 00 00 00; 0xf47a6 + mov bx, word [es:si+01ah] ; 26 8b 5c 1a ; 0xf47af eltorito.c:717 + mov di, word [es:si+01ch] ; 26 8b 7c 1c ; 0xf47b3 + mov cx, strict word 00009h ; b9 09 00 ; 0xf47b7 + shr di, 1 ; d1 ef ; 0xf47ba + rcr bx, 1 ; d1 db ; 0xf47bc + loop 047bah ; e2 fa ; 0xf47be + les si, [bp-01ch] ; c4 76 e4 ; 0xf47c0 eltorito.c:718 + mov word [es:si+002h], bx ; 26 89 5c 02 ; 0xf47c3 + test al, al ; 84 c0 ; 0xf47c7 eltorito.c:720 + je near 04347h ; 0f 84 7a fb ; 0xf47c9 + mov bx, 00db2h ; bb b2 0d ; 0xf47cd eltorito.c:721 + mov cx, ds ; 8c d9 ; 0xf47d0 + mov ax, strict word 00004h ; b8 04 00 ; 0xf47d2 + call 019d3h ; e8 fb d1 ; 0xf47d5 + movzx ax, dl ; 0f b6 c2 ; 0xf47d8 + push ax ; 50 ; 0xf47db + push word [bp-018h] ; ff 76 e8 ; 0xf47dc + push 0035eh ; 68 5e 03 ; 0xf47df + push 003eah ; 68 ea 03 ; 0xf47e2 + push strict byte 00004h ; 6a 04 ; 0xf47e5 + call 01a14h ; e8 2a d2 ; 0xf47e7 + add sp, strict byte 0000ah ; 83 c4 0a ; 0xf47ea + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf47ed eltorito.c:722 + xor ah, ah ; 30 e4 ; 0xf47f0 + or ah, 00ch ; 80 cc 0c ; 0xf47f2 + jmp short 04818h ; eb 21 ; 0xf47f5 + movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf47f7 eltorito.c:730 + push ax ; 50 ; 0xf47fb + mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf47fc + mov dx, word [bp+004h] ; 8b 56 04 ; 0xf47ff + mov bx, si ; 89 f3 ; 0xf4802 + mov cx, word [bp-008h] ; 8b 4e f8 ; 0xf4804 + call 05a50h ; e8 46 12 ; 0xf4807 + test ax, ax ; 85 c0 ; 0xf480a + je near 04347h ; 0f 84 37 fb ; 0xf480c + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf4810 eltorito.c:731 + xor ah, ah ; 30 e4 ; 0xf4813 + or ah, 001h ; 80 cc 01 ; 0xf4815 + mov word [bp+016h], ax ; 89 46 16 ; 0xf4818 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf481b + shr ax, 008h ; c1 e8 08 ; 0xf481e + mov bx, strict word 00074h ; bb 74 00 ; 0xf4821 + mov dx, strict word 00040h ; ba 40 00 ; 0xf4824 + mov es, dx ; 8e c2 ; 0xf4827 + mov byte [es:bx], al ; 26 88 07 ; 0xf4829 + or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf482c + jmp near 0435bh ; e9 28 fb ; 0xf4830 + mov bx, 00db2h ; bb b2 0d ; 0xf4833 eltorito.c:747 + mov cx, ds ; 8c d9 ; 0xf4836 + mov ax, strict word 00004h ; b8 04 00 ; 0xf4838 + call 019d3h ; e8 95 d1 ; 0xf483b + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf483e + shr ax, 008h ; c1 e8 08 ; 0xf4841 + push ax ; 50 ; 0xf4844 + push 0035eh ; 68 5e 03 ; 0xf4845 + push 0040ch ; 68 0c 04 ; 0xf4848 + push strict byte 00004h ; 6a 04 ; 0xf484b + jmp near 0468ah ; e9 3a fe ; 0xf484d + ; disGetNextSymbol 0xf4850 LB 0x57f5 -> off=0x59 cb=0000000000000362 uValue=00000000000f32a9 'int13_cdrom' + db 050h, 04eh, 049h, 048h, 047h, 046h, 045h, 044h, 043h, 042h, 041h, 018h, 016h, 015h, 014h, 011h + db 010h, 00dh, 00ch, 00bh, 00ah, 009h, 008h, 005h, 004h, 003h, 002h, 001h, 000h, 0eeh, 04bh, 050h + db 04bh, 051h, 049h, 0eeh, 04bh, 046h, 049h, 0eeh, 04bh, 046h, 049h, 0eeh, 04bh, 050h, 04bh, 0eeh + db 04bh, 0eeh, 04bh, 050h, 04bh, 050h, 04bh, 050h, 04bh, 050h, 04bh, 050h, 04bh, 077h, 049h, 050h + db 04bh, 0eeh, 04bh, 07dh, 049h, 090h, 049h, 046h, 049h, 090h, 049h, 0c1h, 04ah, 06bh, 04bh, 090h + db 049h, 08fh, 04bh, 0c8h, 04bh, 0d0h, 04bh, 0eeh, 04bh +int13_cdrom: ; 0xf48a9 LB 0x362 + push bp ; 55 ; 0xf48a9 eltorito.c:772 + mov bp, sp ; 89 e5 ; 0xf48aa + push si ; 56 ; 0xf48ac + push di ; 57 ; 0xf48ad + sub sp, strict byte 0001eh ; 83 ec 1e ; 0xf48ae + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf48b1 eltorito.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf48b4 + mov es, ax ; 8e c0 ; 0xf48b7 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf48b9 + mov si, 00122h ; be 22 01 ; 0xf48bc eltorito.c:782 + mov word [bp-008h], ax ; 89 46 f8 ; 0xf48bf + mov bx, strict word 00074h ; bb 74 00 ; 0xf48c2 eltorito.c:43 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf48c5 + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf48c9 eltorito.c:789 + xor ah, ah ; 30 e4 ; 0xf48cc + cmp ax, 000e0h ; 3d e0 00 ; 0xf48ce + jc short 048d8h ; 72 05 ; 0xf48d1 + cmp ax, 000f0h ; 3d f0 00 ; 0xf48d3 + jc short 048f6h ; 72 1e ; 0xf48d6 + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf48d8 eltorito.c:790 + xor ah, ah ; 30 e4 ; 0xf48db + push ax ; 50 ; 0xf48dd + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf48de + shr ax, 008h ; c1 e8 08 ; 0xf48e1 + push ax ; 50 ; 0xf48e4 + push 0043ch ; 68 3c 04 ; 0xf48e5 + push 00448h ; 68 48 04 ; 0xf48e8 + push strict byte 00004h ; 6a 04 ; 0xf48eb + call 01a14h ; e8 24 d1 ; 0xf48ed + add sp, strict byte 0000ah ; 83 c4 0a ; 0xf48f0 + jmp near 04ba6h ; e9 b0 02 ; 0xf48f3 eltorito.c:791 + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf48f6 eltorito.c:795 + xor ah, ah ; 30 e4 ; 0xf48f9 + mov es, [bp-008h] ; 8e 46 f8 ; 0xf48fb + mov bx, si ; 89 f3 ; 0xf48fe + add bx, ax ; 01 c3 ; 0xf4900 + mov dl, byte [es:bx+00114h] ; 26 8a 97 14 01 ; 0xf4902 + mov byte [bp-006h], dl ; 88 56 fa ; 0xf4907 + cmp dl, 010h ; 80 fa 10 ; 0xf490a eltorito.c:798 + jc short 0491fh ; 72 10 ; 0xf490d + push ax ; 50 ; 0xf490f eltorito.c:799 + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4910 + shr ax, 008h ; c1 e8 08 ; 0xf4913 + push ax ; 50 ; 0xf4916 + push 0043ch ; 68 3c 04 ; 0xf4917 + push 00473h ; 68 73 04 ; 0xf491a + jmp short 048ebh ; eb cc ; 0xf491d + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf491f eltorito.c:803 + shr ax, 008h ; c1 e8 08 ; 0xf4922 + cmp ax, strict word 00050h ; 3d 50 00 ; 0xf4925 + jnbe near 04beeh ; 0f 87 c2 02 ; 0xf4928 + push CS ; 0e ; 0xf492c + pop ES ; 07 ; 0xf492d + mov cx, strict word 0001eh ; b9 1e 00 ; 0xf492e + mov di, 04850h ; bf 50 48 ; 0xf4931 + repne scasb ; f2 ae ; 0xf4934 + sal cx, 1 ; d1 e1 ; 0xf4936 + mov di, cx ; 89 cf ; 0xf4938 + mov dx, word [cs:di+0486dh] ; 2e 8b 95 6d 48 ; 0xf493a + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf493f + xor ah, ah ; 30 e4 ; 0xf4942 + jmp dx ; ff e2 ; 0xf4944 + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4946 eltorito.c:821 + xor ah, ah ; 30 e4 ; 0xf4949 + or ah, 003h ; 80 cc 03 ; 0xf494b + jmp near 04baeh ; e9 5d 02 ; 0xf494e + mov bx, strict word 00074h ; bb 74 00 ; 0xf4951 eltorito.c:38 + mov dx, strict word 00040h ; ba 40 00 ; 0xf4954 + mov es, dx ; 8e c2 ; 0xf4957 + mov dl, byte [es:bx] ; 26 8a 17 ; 0xf4959 + movzx bx, dl ; 0f b6 da ; 0xf495c eltorito.c:827 + sal bx, 008h ; c1 e3 08 ; 0xf495f + or ax, bx ; 09 d8 ; 0xf4962 + mov word [bp+018h], ax ; 89 46 18 ; 0xf4964 + mov bx, strict word 00074h ; bb 74 00 ; 0xf4967 eltorito.c:43 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf496a + test dl, dl ; 84 d2 ; 0xf496e eltorito.c:831 + je near 04b54h ; 0f 84 e0 01 ; 0xf4970 + jmp near 04bc2h ; e9 4b 02 ; 0xf4974 eltorito.c:832 + or ah, 002h ; 80 cc 02 ; 0xf4977 eltorito.c:838 + jmp near 04baeh ; e9 31 02 ; 0xf497a + mov word [bp+012h], 0aa55h ; c7 46 12 55 aa ; 0xf497d eltorito.c:843 + or ah, 030h ; 80 cc 30 ; 0xf4982 eltorito.c:844 + mov word [bp+018h], ax ; 89 46 18 ; 0xf4985 + mov word [bp+016h], strict word 00007h ; c7 46 16 07 00 ; 0xf4988 eltorito.c:845 + jmp near 04b54h ; e9 c4 01 ; 0xf498d eltorito.c:846 + mov bx, word [bp+00ch] ; 8b 5e 0c ; 0xf4990 eltorito.c:854 + mov es, [bp+006h] ; 8e 46 06 ; 0xf4993 + mov word [bp-010h], bx ; 89 5e f0 ; 0xf4996 + mov [bp-00eh], es ; 8c 46 f2 ; 0xf4999 + mov ax, word [es:bx+002h] ; 26 8b 47 02 ; 0xf499c eltorito.c:856 + mov word [bp-00ah], ax ; 89 46 f6 ; 0xf49a0 + mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf49a3 eltorito.c:857 + mov word [bp-016h], ax ; 89 46 ea ; 0xf49a7 + mov ax, word [es:bx+004h] ; 26 8b 47 04 ; 0xf49aa eltorito.c:858 + mov word [bp-014h], ax ; 89 46 ec ; 0xf49ae + mov di, word [es:bx+00ch] ; 26 8b 7f 0c ; 0xf49b1 eltorito.c:861 + mov ax, word [es:bx+00eh] ; 26 8b 47 0e ; 0xf49b5 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf49b9 + or di, ax ; 09 c7 ; 0xf49bc eltorito.c:862 + je short 049d8h ; 74 18 ; 0xf49be + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf49c0 eltorito.c:863 + shr ax, 008h ; c1 e8 08 ; 0xf49c3 + push ax ; 50 ; 0xf49c6 + push 0043ch ; 68 3c 04 ; 0xf49c7 + push 003c1h ; 68 c1 03 ; 0xf49ca + push strict byte 00007h ; 6a 07 ; 0xf49cd + call 01a14h ; e8 42 d0 ; 0xf49cf + add sp, strict byte 00008h ; 83 c4 08 ; 0xf49d2 + jmp near 04ba6h ; e9 ce 01 ; 0xf49d5 eltorito.c:864 + les di, [bp-010h] ; c4 7e f0 ; 0xf49d8 eltorito.c:868 + mov di, word [es:di+008h] ; 26 8b 7d 08 ; 0xf49db + mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf49df + mov ax, word [es:bx+00ah] ; 26 8b 47 0a ; 0xf49e2 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf49e6 + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf49e9 eltorito.c:871 + shr ax, 008h ; c1 e8 08 ; 0xf49ec + mov word [bp-012h], ax ; 89 46 ee ; 0xf49ef + cmp ax, strict word 00044h ; 3d 44 00 ; 0xf49f2 + je near 04b50h ; 0f 84 57 01 ; 0xf49f5 + cmp ax, strict word 00047h ; 3d 47 00 ; 0xf49f9 + je near 04b50h ; 0f 84 50 01 ; 0xf49fc + mov cx, strict word 0000ch ; b9 0c 00 ; 0xf4a00 eltorito.c:877 + xor bx, bx ; 31 db ; 0xf4a03 + mov dx, ss ; 8c d2 ; 0xf4a05 + lea ax, [bp-022h] ; 8d 46 de ; 0xf4a07 + call 09fb0h ; e8 a3 55 ; 0xf4a0a + mov word [bp-022h], strict word 00028h ; c7 46 de 28 00 ; 0xf4a0d eltorito.c:878 + mov ax, di ; 89 f8 ; 0xf4a12 eltorito.c:879 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf4a14 + xchg ah, al ; 86 c4 ; 0xf4a17 + xchg dh, dl ; 86 d6 ; 0xf4a19 + xchg dx, ax ; 92 ; 0xf4a1b + mov word [bp-020h], ax ; 89 46 e0 ; 0xf4a1c + mov word [bp-01eh], dx ; 89 56 e2 ; 0xf4a1f + mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf4a22 eltorito.c:880 + xchg ah, al ; 86 c4 ; 0xf4a25 + mov word [bp-01bh], ax ; 89 46 e5 ; 0xf4a27 + les ax, [bp-00ah] ; c4 46 f6 ; 0xf4a2a eltorito.c:882 + mov word [es:si+00eh], ax ; 26 89 44 0e ; 0xf4a2d + mov word [es:si+010h], 00800h ; 26 c7 44 10 00 08 ; 0xf4a31 eltorito.c:883 + movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf4a37 eltorito.c:885 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf4a3b + mov bx, si ; 89 f3 ; 0xf4a3e + add bx, ax ; 01 c3 ; 0xf4a40 + movzx di, byte [es:bx+022h] ; 26 0f b6 7f 22 ; 0xf4a42 + add di, di ; 01 ff ; 0xf4a47 + push word [bp-016h] ; ff 76 ea ; 0xf4a49 + push word [bp-014h] ; ff 76 ec ; 0xf4a4c + push strict byte 00001h ; 6a 01 ; 0xf4a4f + mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf4a51 + xor bx, bx ; 31 db ; 0xf4a54 + mov cx, strict word 0000bh ; b9 0b 00 ; 0xf4a56 + sal ax, 1 ; d1 e0 ; 0xf4a59 + rcl bx, 1 ; d1 d3 ; 0xf4a5b + loop 04a59h ; e2 fa ; 0xf4a5d + push bx ; 53 ; 0xf4a5f + push ax ; 50 ; 0xf4a60 + push strict byte 00000h ; 6a 00 ; 0xf4a61 + movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf4a63 + mov cx, ss ; 8c d1 ; 0xf4a67 + lea bx, [bp-022h] ; 8d 5e de ; 0xf4a69 + mov dx, strict word 0000ch ; ba 0c 00 ; 0xf4a6c + call word [word di+0006ah] ; ff 95 6a 00 ; 0xf4a6f + mov dx, ax ; 89 c2 ; 0xf4a73 + mov es, [bp-008h] ; 8e 46 f8 ; 0xf4a75 eltorito.c:887 + mov ax, word [es:si+01ah] ; 26 8b 44 1a ; 0xf4a78 + mov bx, word [es:si+01ch] ; 26 8b 5c 1c ; 0xf4a7c + mov cx, strict word 0000bh ; b9 0b 00 ; 0xf4a80 + shr bx, 1 ; d1 eb ; 0xf4a83 + rcr ax, 1 ; d1 d8 ; 0xf4a85 + loop 04a83h ; e2 fa ; 0xf4a87 + les bx, [bp-010h] ; c4 5e f0 ; 0xf4a89 eltorito.c:888 + mov word [es:bx+002h], ax ; 26 89 47 02 ; 0xf4a8c + test dl, dl ; 84 d2 ; 0xf4a90 eltorito.c:890 + je near 04b50h ; 0f 84 ba 00 ; 0xf4a92 + mov bx, 00db2h ; bb b2 0d ; 0xf4a96 eltorito.c:891 + mov cx, ds ; 8c d9 ; 0xf4a99 + mov ax, strict word 00004h ; b8 04 00 ; 0xf4a9b + call 019d3h ; e8 32 cf ; 0xf4a9e + movzx ax, dl ; 0f b6 c2 ; 0xf4aa1 + push ax ; 50 ; 0xf4aa4 + push word [bp-012h] ; ff 76 ee ; 0xf4aa5 + push 0043ch ; 68 3c 04 ; 0xf4aa8 + push 003eah ; 68 ea 03 ; 0xf4aab + push strict byte 00004h ; 6a 04 ; 0xf4aae + call 01a14h ; e8 61 cf ; 0xf4ab0 + add sp, strict byte 0000ah ; 83 c4 0a ; 0xf4ab3 + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4ab6 eltorito.c:892 + xor ah, ah ; 30 e4 ; 0xf4ab9 + or ah, 00ch ; 80 cc 0c ; 0xf4abb + jmp near 04baeh ; e9 ed 00 ; 0xf4abe + cmp ax, strict word 00002h ; 3d 02 00 ; 0xf4ac1 eltorito.c:900 + jnbe near 04ba6h ; 0f 87 de 00 ; 0xf4ac4 + movzx dx, byte [bp-006h] ; 0f b6 56 fa ; 0xf4ac8 eltorito.c:903 + imul dx, dx, strict byte 0001ch ; 6b d2 1c ; 0xf4acc + mov es, [bp-008h] ; 8e 46 f8 ; 0xf4acf + mov bx, si ; 89 f3 ; 0xf4ad2 + add bx, dx ; 01 d3 ; 0xf4ad4 + mov bl, byte [es:bx+025h] ; 26 8a 5f 25 ; 0xf4ad6 + cmp ax, strict word 00002h ; 3d 02 00 ; 0xf4ada eltorito.c:905 + je short 04b3eh ; 74 5f ; 0xf4add + cmp ax, strict word 00001h ; 3d 01 00 ; 0xf4adf + je short 04b1ch ; 74 38 ; 0xf4ae2 + test ax, ax ; 85 c0 ; 0xf4ae4 + jne near 04b50h ; 0f 85 66 00 ; 0xf4ae6 + cmp bl, 0ffh ; 80 fb ff ; 0xf4aea eltorito.c:907 + jne short 04b01h ; 75 12 ; 0xf4aed + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4aef eltorito.c:908 + xor ah, ah ; 30 e4 ; 0xf4af2 + or ah, 0b4h ; 80 cc b4 ; 0xf4af4 + mov word [bp+018h], ax ; 89 46 18 ; 0xf4af7 + xor al, al ; 30 c0 ; 0xf4afa eltorito.c:909 + or AL, strict byte 001h ; 0c 01 ; 0xf4afc + jmp near 04baeh ; e9 ad 00 ; 0xf4afe + movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf4b01 eltorito.c:911 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf4b05 + db 0feh, 0c3h + ; inc bl ; fe c3 ; 0xf4b08 eltorito.c:912 + mov es, [bp-008h] ; 8e 46 f8 ; 0xf4b0a + add si, ax ; 01 c6 ; 0xf4b0d + mov byte [es:si+025h], bl ; 26 88 5c 25 ; 0xf4b0f + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4b13 eltorito.c:913 + xor al, al ; 30 c0 ; 0xf4b16 + or AL, strict byte 001h ; 0c 01 ; 0xf4b18 + jmp short 04b4dh ; eb 31 ; 0xf4b1a + test bl, bl ; 84 db ; 0xf4b1c eltorito.c:916 + jne short 04b2ch ; 75 0c ; 0xf4b1e + or ah, 0b0h ; 80 cc b0 ; 0xf4b20 eltorito.c:917 + mov word [bp+018h], ax ; 89 46 18 ; 0xf4b23 + mov byte [bp+018h], bl ; 88 5e 18 ; 0xf4b26 eltorito.c:918 + jmp near 04bb1h ; e9 85 00 ; 0xf4b29 eltorito.c:919 + movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf4b2c eltorito.c:920 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf4b30 + db 0feh, 0cbh + ; dec bl ; fe cb ; 0xf4b33 eltorito.c:921 + mov es, [bp-008h] ; 8e 46 f8 ; 0xf4b35 + add si, ax ; 01 c6 ; 0xf4b38 + mov byte [es:si+025h], bl ; 26 88 5c 25 ; 0xf4b3a + test bl, bl ; 84 db ; 0xf4b3e eltorito.c:922 + db 00fh, 095h, 0c0h + ; setne al ; 0f 95 c0 ; 0xf4b40 + movzx dx, al ; 0f b6 d0 ; 0xf4b43 + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4b46 + xor al, al ; 30 c0 ; 0xf4b49 + or ax, dx ; 09 d0 ; 0xf4b4b + mov word [bp+018h], ax ; 89 46 18 ; 0xf4b4d + mov byte [bp+019h], 000h ; c6 46 19 00 ; 0xf4b50 eltorito.c:928 + mov bx, strict word 00074h ; bb 74 00 ; 0xf4b54 + mov ax, strict word 00040h ; b8 40 00 ; 0xf4b57 + mov es, ax ; 8e c0 ; 0xf4b5a + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf4b5c + and byte [bp+01eh], 0feh ; 80 66 1e fe ; 0xf4b60 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf4b64 + pop di ; 5f ; 0xf4b67 + pop si ; 5e ; 0xf4b68 + pop bp ; 5d ; 0xf4b69 + retn ; c3 ; 0xf4b6a + movzx dx, byte [bp-006h] ; 0f b6 56 fa ; 0xf4b6b eltorito.c:932 + imul dx, dx, strict byte 0001ch ; 6b d2 1c ; 0xf4b6f + mov es, [bp-008h] ; 8e 46 f8 ; 0xf4b72 + mov bx, si ; 89 f3 ; 0xf4b75 + add bx, dx ; 01 d3 ; 0xf4b77 + mov bl, byte [es:bx+025h] ; 26 8a 5f 25 ; 0xf4b79 + test bl, bl ; 84 db ; 0xf4b7d eltorito.c:934 + je short 04b86h ; 74 05 ; 0xf4b7f + or ah, 0b1h ; 80 cc b1 ; 0xf4b81 eltorito.c:935 + jmp short 04baeh ; eb 28 ; 0xf4b84 + je short 04b50h ; 74 c8 ; 0xf4b86 eltorito.c:957 + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4b88 eltorito.c:958 + xor ah, ah ; 30 e4 ; 0xf4b8b + jmp short 04b81h ; eb f2 ; 0xf4b8d + movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf4b8f eltorito.c:966 + push ax ; 50 ; 0xf4b93 + mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf4b94 + mov dx, word [bp+006h] ; 8b 56 06 ; 0xf4b97 + mov bx, si ; 89 f3 ; 0xf4b9a + mov cx, word [bp-008h] ; 8b 4e f8 ; 0xf4b9c + call 05a50h ; e8 ae 0e ; 0xf4b9f + test ax, ax ; 85 c0 ; 0xf4ba2 + je short 04b50h ; 74 aa ; 0xf4ba4 + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4ba6 eltorito.c:967 + xor ah, ah ; 30 e4 ; 0xf4ba9 + or ah, 001h ; 80 cc 01 ; 0xf4bab + mov word [bp+018h], ax ; 89 46 18 ; 0xf4bae + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4bb1 + shr ax, 008h ; c1 e8 08 ; 0xf4bb4 + mov bx, strict word 00074h ; bb 74 00 ; 0xf4bb7 + mov dx, strict word 00040h ; ba 40 00 ; 0xf4bba + mov es, dx ; 8e c2 ; 0xf4bbd + mov byte [es:bx], al ; 26 88 07 ; 0xf4bbf + or byte [bp+01eh], 001h ; 80 4e 1e 01 ; 0xf4bc2 + jmp short 04b64h ; eb 9c ; 0xf4bc6 + or ah, 006h ; 80 cc 06 ; 0xf4bc8 eltorito.c:974 + mov word [bp+018h], ax ; 89 46 18 ; 0xf4bcb + jmp short 04bc2h ; eb f2 ; 0xf4bce eltorito.c:975 + cmp ax, strict word 00006h ; 3d 06 00 ; 0xf4bd0 eltorito.c:980 + je near 04b50h ; 0f 84 79 ff ; 0xf4bd3 + cmp ax, strict word 00001h ; 3d 01 00 ; 0xf4bd7 + jc short 04ba6h ; 72 ca ; 0xf4bda + jbe near 04b50h ; 0f 86 70 ff ; 0xf4bdc + cmp ax, strict word 00003h ; 3d 03 00 ; 0xf4be0 + jc short 04ba6h ; 72 c1 ; 0xf4be3 + cmp ax, strict word 00004h ; 3d 04 00 ; 0xf4be5 + jbe near 04b50h ; 0f 86 64 ff ; 0xf4be8 + jmp short 04ba6h ; eb b8 ; 0xf4bec eltorito.c:988 + mov bx, 00db2h ; bb b2 0d ; 0xf4bee eltorito.c:1001 + mov cx, ds ; 8c d9 ; 0xf4bf1 + mov ax, strict word 00004h ; b8 04 00 ; 0xf4bf3 + call 019d3h ; e8 da cd ; 0xf4bf6 + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4bf9 + shr ax, 008h ; c1 e8 08 ; 0xf4bfc + push ax ; 50 ; 0xf4bff + push 0043ch ; 68 3c 04 ; 0xf4c00 + push 00345h ; 68 45 03 ; 0xf4c03 + push strict byte 00004h ; 6a 04 ; 0xf4c06 + jmp near 049cfh ; e9 c4 fd ; 0xf4c08 + ; disGetNextSymbol 0xf4c0b LB 0x543a -> off=0x0 cb=000000000000004b uValue=00000000000f360b 'print_boot_device' +print_boot_device: ; 0xf4c0b LB 0x4b + push bp ; 55 ; 0xf4c0b boot.c:109 + mov bp, sp ; 89 e5 ; 0xf4c0c + push cx ; 51 ; 0xf4c0e + test al, al ; 84 c0 ; 0xf4c0f boot.c:117 + je short 04c18h ; 74 05 ; 0xf4c11 + mov dx, strict word 00002h ; ba 02 00 ; 0xf4c13 + jmp short 04c32h ; eb 1a ; 0xf4c16 boot.c:118 + test dl, dl ; 84 d2 ; 0xf4c18 + je short 04c21h ; 74 05 ; 0xf4c1a + mov dx, strict word 00003h ; ba 03 00 ; 0xf4c1c + jmp short 04c32h ; eb 11 ; 0xf4c1f boot.c:119 + test bl, 080h ; f6 c3 80 ; 0xf4c21 + jne short 04c2ah ; 75 04 ; 0xf4c24 + xor dh, dh ; 30 f6 ; 0xf4c26 + jmp short 04c32h ; eb 08 ; 0xf4c28 boot.c:120 + test bl, 080h ; f6 c3 80 ; 0xf4c2a + je short 04c50h ; 74 21 ; 0xf4c2d + mov dx, strict word 00001h ; ba 01 00 ; 0xf4c2f + mov bx, 00db2h ; bb b2 0d ; 0xf4c32 boot.c:123 + mov cx, ds ; 8c d9 ; 0xf4c35 + mov ax, strict word 00004h ; b8 04 00 ; 0xf4c37 + call 019d3h ; e8 96 cd ; 0xf4c3a + imul dx, dx, strict byte 0000ah ; 6b d2 0a ; 0xf4c3d + add dx, 00dd8h ; 81 c2 d8 0d ; 0xf4c40 + push dx ; 52 ; 0xf4c44 + push 004a6h ; 68 a6 04 ; 0xf4c45 + push strict byte 00004h ; 6a 04 ; 0xf4c48 + call 01a14h ; e8 c7 cd ; 0xf4c4a + add sp, strict byte 00006h ; 83 c4 06 ; 0xf4c4d + lea sp, [bp-002h] ; 8d 66 fe ; 0xf4c50 boot.c:124 + pop cx ; 59 ; 0xf4c53 + pop bp ; 5d ; 0xf4c54 + retn ; c3 ; 0xf4c55 + ; disGetNextSymbol 0xf4c56 LB 0x53ef -> off=0x0 cb=0000000000000093 uValue=00000000000f3656 'print_boot_failure' +print_boot_failure: ; 0xf4c56 LB 0x93 + push bp ; 55 ; 0xf4c56 boot.c:131 + mov bp, sp ; 89 e5 ; 0xf4c57 + push si ; 56 ; 0xf4c59 + mov dh, cl ; 88 ce ; 0xf4c5a + mov ah, bl ; 88 dc ; 0xf4c5c boot.c:134 + and ah, 07fh ; 80 e4 7f ; 0xf4c5e + movzx si, ah ; 0f b6 f4 ; 0xf4c61 + test al, al ; 84 c0 ; 0xf4c64 boot.c:142 + je short 04c83h ; 74 1b ; 0xf4c66 + mov bx, 00db2h ; bb b2 0d ; 0xf4c68 boot.c:143 + mov cx, ds ; 8c d9 ; 0xf4c6b + mov ax, strict word 00004h ; b8 04 00 ; 0xf4c6d + call 019d3h ; e8 60 cd ; 0xf4c70 + push 00dech ; 68 ec 0d ; 0xf4c73 + push 004bah ; 68 ba 04 ; 0xf4c76 + push strict byte 00004h ; 6a 04 ; 0xf4c79 + call 01a14h ; e8 96 cd ; 0xf4c7b + add sp, strict byte 00006h ; 83 c4 06 ; 0xf4c7e + jmp short 04cc7h ; eb 44 ; 0xf4c81 boot.c:144 + test dl, dl ; 84 d2 ; 0xf4c83 + je short 04c97h ; 74 10 ; 0xf4c85 + mov bx, 00db2h ; bb b2 0d ; 0xf4c87 boot.c:145 + mov cx, ds ; 8c d9 ; 0xf4c8a + mov ax, strict word 00004h ; b8 04 00 ; 0xf4c8c + call 019d3h ; e8 41 cd ; 0xf4c8f + push 00df6h ; 68 f6 0d ; 0xf4c92 + jmp short 04c76h ; eb df ; 0xf4c95 + test bl, 080h ; f6 c3 80 ; 0xf4c97 boot.c:146 + je short 04cadh ; 74 11 ; 0xf4c9a + mov bx, 00db2h ; bb b2 0d ; 0xf4c9c boot.c:147 + mov cx, ds ; 8c d9 ; 0xf4c9f + mov ax, strict word 00004h ; b8 04 00 ; 0xf4ca1 + call 019d3h ; e8 2c cd ; 0xf4ca4 + push si ; 56 ; 0xf4ca7 + push 00de2h ; 68 e2 0d ; 0xf4ca8 + jmp short 04cbch ; eb 0f ; 0xf4cab boot.c:148 + mov bx, 00db2h ; bb b2 0d ; 0xf4cad boot.c:149 + mov cx, ds ; 8c d9 ; 0xf4cb0 + mov ax, strict word 00004h ; b8 04 00 ; 0xf4cb2 + call 019d3h ; e8 1b cd ; 0xf4cb5 + push si ; 56 ; 0xf4cb8 + push 00dd8h ; 68 d8 0d ; 0xf4cb9 + push 004cfh ; 68 cf 04 ; 0xf4cbc + push strict byte 00004h ; 6a 04 ; 0xf4cbf + call 01a14h ; e8 50 cd ; 0xf4cc1 + add sp, strict byte 00008h ; 83 c4 08 ; 0xf4cc4 + cmp byte [bp+004h], 001h ; 80 7e 04 01 ; 0xf4cc7 boot.c:151 + jne short 04ce1h ; 75 14 ; 0xf4ccb + test dh, dh ; 84 f6 ; 0xf4ccd boot.c:152 + jne short 04cd6h ; 75 05 ; 0xf4ccf + push 004e7h ; 68 e7 04 ; 0xf4cd1 boot.c:153 + jmp short 04cd9h ; eb 03 ; 0xf4cd4 boot.c:154 + push 00511h ; 68 11 05 ; 0xf4cd6 boot.c:155 + push strict byte 00007h ; 6a 07 ; 0xf4cd9 + call 01a14h ; e8 36 cd ; 0xf4cdb + add sp, strict byte 00004h ; 83 c4 04 ; 0xf4cde + lea sp, [bp-002h] ; 8d 66 fe ; 0xf4ce1 boot.c:157 + pop si ; 5e ; 0xf4ce4 + pop bp ; 5d ; 0xf4ce5 + retn 00002h ; c2 02 00 ; 0xf4ce6 + ; disGetNextSymbol 0xf4ce9 LB 0x535c -> off=0x0 cb=0000000000000027 uValue=00000000000f36e9 'print_cdromboot_failure' +print_cdromboot_failure: ; 0xf4ce9 LB 0x27 + push bp ; 55 ; 0xf4ce9 boot.c:163 + mov bp, sp ; 89 e5 ; 0xf4cea + push bx ; 53 ; 0xf4cec + push cx ; 51 ; 0xf4ced + push dx ; 52 ; 0xf4cee + mov dx, ax ; 89 c2 ; 0xf4cef + mov bx, 00db2h ; bb b2 0d ; 0xf4cf1 boot.c:165 + mov cx, ds ; 8c d9 ; 0xf4cf4 + mov ax, strict word 00004h ; b8 04 00 ; 0xf4cf6 + call 019d3h ; e8 d7 cc ; 0xf4cf9 + push dx ; 52 ; 0xf4cfc + push 00546h ; 68 46 05 ; 0xf4cfd + push strict byte 00004h ; 6a 04 ; 0xf4d00 + call 01a14h ; e8 0f cd ; 0xf4d02 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf4d05 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf4d08 boot.c:167 + pop dx ; 5a ; 0xf4d0b + pop cx ; 59 ; 0xf4d0c + pop bx ; 5b ; 0xf4d0d + pop bp ; 5d ; 0xf4d0e + retn ; c3 ; 0xf4d0f + ; disGetNextSymbol 0xf4d10 LB 0x5335 -> off=0x0 cb=0000000000000245 uValue=00000000000f3710 'int19_function' +int19_function: ; 0xf4d10 LB 0x245 + push bp ; 55 ; 0xf4d10 boot.c:170 + mov bp, sp ; 89 e5 ; 0xf4d11 + push si ; 56 ; 0xf4d13 + push di ; 57 ; 0xf4d14 + sub sp, strict byte 0000eh ; 83 ec 0e ; 0xf4d15 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf4d18 boot.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf4d1b + mov es, ax ; 8e c0 ; 0xf4d1e + mov bx, word [es:bx] ; 26 8b 1f ; 0xf4d20 + mov word [bp-00eh], bx ; 89 5e f2 ; 0xf4d23 boot.c:49 + mov byte [bp-006h], 000h ; c6 46 fa 00 ; 0xf4d26 boot.c:181 + mov ax, strict word 0003dh ; b8 3d 00 ; 0xf4d2a boot.c:204 + call 01756h ; e8 26 ca ; 0xf4d2d + movzx dx, al ; 0f b6 d0 ; 0xf4d30 + mov ax, strict word 00038h ; b8 38 00 ; 0xf4d33 boot.c:205 + call 01756h ; e8 1d ca ; 0xf4d36 + and AL, strict byte 0f0h ; 24 f0 ; 0xf4d39 + xor ah, ah ; 30 e4 ; 0xf4d3b + sal ax, 004h ; c1 e0 04 ; 0xf4d3d + or dx, ax ; 09 c2 ; 0xf4d40 + mov ax, strict word 0003ch ; b8 3c 00 ; 0xf4d42 boot.c:206 + call 01756h ; e8 0e ca ; 0xf4d45 + and AL, strict byte 00fh ; 24 0f ; 0xf4d48 + xor ah, ah ; 30 e4 ; 0xf4d4a + sal ax, 00ch ; c1 e0 0c ; 0xf4d4c + or dx, ax ; 09 c2 ; 0xf4d4f + mov di, 0037dh ; bf 7d 03 ; 0xf4d51 boot.c:38 + mov es, bx ; 8e c3 ; 0xf4d54 + mov al, byte [es:di] ; 26 8a 05 ; 0xf4d56 + test al, al ; 84 c0 ; 0xf4d59 boot.c:39 + je short 04d60h ; 74 03 ; 0xf4d5b + movzx dx, al ; 0f b6 d0 ; 0xf4d5d boot.c:39 + cmp byte [bp+004h], 001h ; 80 7e 04 01 ; 0xf4d60 boot.c:210 + jne short 04d76h ; 75 10 ; 0xf4d64 + mov ax, strict word 0003ch ; b8 3c 00 ; 0xf4d66 boot.c:211 + call 01756h ; e8 ea c9 ; 0xf4d69 + and AL, strict byte 0f0h ; 24 f0 ; 0xf4d6c + xor ah, ah ; 30 e4 ; 0xf4d6e + sar ax, 004h ; c1 f8 04 ; 0xf4d70 + call 07cech ; e8 76 2f ; 0xf4d73 + cmp byte [bp+004h], 002h ; 80 7e 04 02 ; 0xf4d76 boot.c:213 + jne short 04d7fh ; 75 03 ; 0xf4d7a + shr dx, 004h ; c1 ea 04 ; 0xf4d7c + cmp byte [bp+004h], 003h ; 80 7e 04 03 ; 0xf4d7f boot.c:214 + jne short 04d88h ; 75 03 ; 0xf4d83 + shr dx, 008h ; c1 ea 08 ; 0xf4d85 + cmp byte [bp+004h], 004h ; 80 7e 04 04 ; 0xf4d88 boot.c:215 + jne short 04d91h ; 75 03 ; 0xf4d8c + shr dx, 00ch ; c1 ea 0c ; 0xf4d8e + cmp dx, strict byte 00010h ; 83 fa 10 ; 0xf4d91 boot.c:216 + jnc short 04d9ah ; 73 04 ; 0xf4d94 + mov byte [bp-006h], 001h ; c6 46 fa 01 ; 0xf4d96 + xor al, al ; 30 c0 ; 0xf4d9a boot.c:217 + mov byte [bp-008h], al ; 88 46 f8 ; 0xf4d9c + mov byte [bp-00ah], al ; 88 46 f6 ; 0xf4d9f + mov byte [bp-00ch], al ; 88 46 f4 ; 0xf4da2 boot.c:218 + mov bx, 00db2h ; bb b2 0d ; 0xf4da5 boot.c:219 + mov cx, ds ; 8c d9 ; 0xf4da8 + mov ax, strict word 00004h ; b8 04 00 ; 0xf4daa + call 019d3h ; e8 23 cc ; 0xf4dad + push dx ; 52 ; 0xf4db0 + movzx ax, byte [bp+004h] ; 0f b6 46 04 ; 0xf4db1 + push ax ; 50 ; 0xf4db5 + push 00566h ; 68 66 05 ; 0xf4db6 + push strict byte 00004h ; 6a 04 ; 0xf4db9 + call 01a14h ; e8 56 cc ; 0xf4dbb + add sp, strict byte 00008h ; 83 c4 08 ; 0xf4dbe + and dx, strict byte 0000fh ; 83 e2 0f ; 0xf4dc1 boot.c:221 + cmp dx, strict byte 00002h ; 83 fa 02 ; 0xf4dc4 + jc short 04dd7h ; 72 0e ; 0xf4dc7 + jbe short 04de6h ; 76 1b ; 0xf4dc9 + cmp dx, strict byte 00004h ; 83 fa 04 ; 0xf4dcb + je short 04e03h ; 74 33 ; 0xf4dce + cmp dx, strict byte 00003h ; 83 fa 03 ; 0xf4dd0 + je short 04df9h ; 74 24 ; 0xf4dd3 + jmp short 04e30h ; eb 59 ; 0xf4dd5 + cmp dx, strict byte 00001h ; 83 fa 01 ; 0xf4dd7 + jne short 04e30h ; 75 54 ; 0xf4dda + xor al, al ; 30 c0 ; 0xf4ddc boot.c:223 + mov byte [bp-008h], al ; 88 46 f8 ; 0xf4dde + mov byte [bp-00ah], al ; 88 46 f6 ; 0xf4de1 boot.c:224 + jmp short 04e46h ; eb 60 ; 0xf4de4 boot.c:225 + mov bx, 0037ch ; bb 7c 03 ; 0xf4de6 boot.c:38 + mov es, [bp-00eh] ; 8e 46 f2 ; 0xf4de9 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf4dec + add AL, strict byte 080h ; 04 80 ; 0xf4def boot.c:231 + mov byte [bp-008h], al ; 88 46 f8 ; 0xf4df1 + mov byte [bp-00ah], dh ; 88 76 f6 ; 0xf4df4 boot.c:232 + jmp short 04e46h ; eb 4d ; 0xf4df7 boot.c:233 + mov byte [bp-008h], 000h ; c6 46 f8 00 ; 0xf4df9 boot.c:236 + mov byte [bp-00ah], 001h ; c6 46 f6 01 ; 0xf4dfd boot.c:237 + jmp short 04e0dh ; eb 0a ; 0xf4e01 boot.c:238 + mov byte [bp-00ch], 001h ; c6 46 f4 01 ; 0xf4e03 boot.c:239 + cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf4e07 boot.c:255 + je short 04e46h ; 74 39 ; 0xf4e0b + call 03e74h ; e8 64 f0 ; 0xf4e0d boot.c:256 + mov dx, ax ; 89 c2 ; 0xf4e10 + test AL, strict byte 0ffh ; a8 ff ; 0xf4e12 boot.c:259 + je short 04e37h ; 74 21 ; 0xf4e14 + call 04ce9h ; e8 d0 fe ; 0xf4e16 boot.c:260 + movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf4e19 boot.c:261 + push ax ; 50 ; 0xf4e1d + movzx bx, byte [bp-008h] ; 0f b6 5e f8 ; 0xf4e1e + movzx dx, byte [bp-00ch] ; 0f b6 56 f4 ; 0xf4e22 + movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf4e26 + mov cx, strict word 00001h ; b9 01 00 ; 0xf4e2a + call 04c56h ; e8 26 fe ; 0xf4e2d + xor ax, ax ; 31 c0 ; 0xf4e30 + xor dx, dx ; 31 d2 ; 0xf4e32 + jmp near 04f4eh ; e9 17 01 ; 0xf4e34 + mov bx, 00372h ; bb 72 03 ; 0xf4e37 boot.c:48 + mov es, [bp-00eh] ; 8e 46 f2 ; 0xf4e3a + mov si, word [es:bx] ; 26 8b 37 ; 0xf4e3d + shr dx, 008h ; c1 ea 08 ; 0xf4e40 boot.c:266 + mov byte [bp-008h], dl ; 88 56 f8 ; 0xf4e43 + cmp byte [bp-00ch], 001h ; 80 7e f4 01 ; 0xf4e46 boot.c:272 + jne near 04ec2h ; 0f 85 74 00 ; 0xf4e4a + xor si, si ; 31 f6 ; 0xf4e4e boot.c:275 + mov ax, 0e200h ; b8 00 e2 ; 0xf4e50 + mov es, ax ; 8e c0 ; 0xf4e53 + cmp word [es:si], 0aa55h ; 26 81 3c 55 aa ; 0xf4e55 boot.c:276 + jne short 04e19h ; 75 bd ; 0xf4e5a + mov di, ax ; 89 c7 ; 0xf4e5c boot.c:282 + mov si, word [es:si+01ah] ; 26 8b 74 1a ; 0xf4e5e + cmp word [es:si+002h], 0506eh ; 26 81 7c 02 6e 50 ; 0xf4e62 boot.c:283 + jne short 04e19h ; 75 af ; 0xf4e68 + cmp word [es:si], 05024h ; 26 81 3c 24 50 ; 0xf4e6a + jne short 04e19h ; 75 a8 ; 0xf4e6f + mov bx, word [es:si+00eh] ; 26 8b 5c 0e ; 0xf4e71 boot.c:285 + mov dx, word [es:bx] ; 26 8b 17 ; 0xf4e75 + mov ax, word [es:bx+002h] ; 26 8b 47 02 ; 0xf4e78 + cmp ax, 06568h ; 3d 68 65 ; 0xf4e7c boot.c:286 + jne short 04ea0h ; 75 1f ; 0xf4e7f + cmp dx, 07445h ; 81 fa 45 74 ; 0xf4e81 + jne short 04ea0h ; 75 19 ; 0xf4e85 + movzx bx, byte [bp-008h] ; 0f b6 5e f8 ; 0xf4e87 boot.c:288 + movzx dx, byte [bp-00ch] ; 0f b6 56 f4 ; 0xf4e8b + movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf4e8f + call 04c0bh ; e8 75 fd ; 0xf4e93 + mov word [bp-012h], strict word 00006h ; c7 46 ee 06 00 ; 0xf4e96 boot.c:289 + mov word [bp-010h], di ; 89 7e f0 ; 0xf4e9b + jmp short 04ebch ; eb 1c ; 0xf4e9e boot.c:292 + movzx bx, byte [bp-008h] ; 0f b6 5e f8 ; 0xf4ea0 boot.c:295 + movzx dx, byte [bp-00ch] ; 0f b6 56 f4 ; 0xf4ea4 + movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf4ea8 + call 04c0bh ; e8 5c fd ; 0xf4eac + sti ; fb ; 0xf4eaf boot.c:296 + mov word [bp-010h], di ; 89 7e f0 ; 0xf4eb0 boot.c:297 + mov es, di ; 8e c7 ; 0xf4eb3 + mov ax, word [es:si+01ah] ; 26 8b 44 1a ; 0xf4eb5 + mov word [bp-012h], ax ; 89 46 ee ; 0xf4eb9 + call far [bp-012h] ; ff 5e ee ; 0xf4ebc boot.c:298 + jmp near 04e19h ; e9 57 ff ; 0xf4ebf boot.c:301 + cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf4ec2 boot.c:309 + jne short 04eeeh ; 75 26 ; 0xf4ec6 + cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf4ec8 + jne short 04eeeh ; 75 20 ; 0xf4ecc + mov si, 007c0h ; be c0 07 ; 0xf4ece boot.c:310 + mov es, si ; 8e c6 ; 0xf4ed1 boot.c:312 + mov dl, byte [bp-008h] ; 8a 56 f8 ; 0xf4ed3 + mov ax, 00201h ; b8 01 02 ; 0xf4ed6 + mov DH, strict byte 000h ; b6 00 ; 0xf4ed9 + mov cx, strict word 00001h ; b9 01 00 ; 0xf4edb + db 033h, 0dbh + ; xor bx, bx ; 33 db ; 0xf4ede + int 013h ; cd 13 ; 0xf4ee0 + mov ax, strict word 00000h ; b8 00 00 ; 0xf4ee2 + sbb ax, strict byte 00000h ; 83 d8 00 ; 0xf4ee5 + test ax, ax ; 85 c0 ; 0xf4ee8 boot.c:313 + jne near 04e19h ; 0f 85 2b ff ; 0xf4eea + cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf4eee boot.c:328 + db 00fh, 094h, 0c0h + ; sete al ; 0f 94 c0 ; 0xf4ef2 + cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf4ef5 boot.c:333 + je short 04efdh ; 74 02 ; 0xf4ef9 + mov AL, strict byte 001h ; b0 01 ; 0xf4efb boot.c:334 + xor bx, bx ; 31 db ; 0xf4efd boot.c:48 + mov es, si ; 8e c6 ; 0xf4eff + mov dx, word [es:bx] ; 26 8b 17 ; 0xf4f01 + mov bx, strict word 00004h ; bb 04 00 ; 0xf4f04 boot.c:48 + mov bx, word [es:bx] ; 26 8b 1f ; 0xf4f07 + cmp dx, bx ; 39 da ; 0xf4f0a boot.c:49 + je short 04f1dh ; 74 0f ; 0xf4f0c + test al, al ; 84 c0 ; 0xf4f0e + jne short 04f33h ; 75 21 ; 0xf4f10 + mov bx, 001feh ; bb fe 01 ; 0xf4f12 boot.c:48 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf4f15 + cmp ax, 0aa55h ; 3d 55 aa ; 0xf4f18 boot.c:49 + je short 04f33h ; 74 16 ; 0xf4f1b + movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf4f1d boot.c:340 + push ax ; 50 ; 0xf4f21 + movzx bx, byte [bp-008h] ; 0f b6 5e f8 ; 0xf4f22 + movzx dx, byte [bp-00ch] ; 0f b6 56 f4 ; 0xf4f26 + movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf4f2a + xor cx, cx ; 31 c9 ; 0xf4f2e + jmp near 04e2dh ; e9 fa fe ; 0xf4f30 + movzx bx, byte [bp-008h] ; 0f b6 5e f8 ; 0xf4f33 boot.c:346 + movzx dx, byte [bp-00ch] ; 0f b6 56 f4 ; 0xf4f37 + movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf4f3b + call 04c0bh ; e8 c9 fc ; 0xf4f3f + movzx bx, byte [bp-008h] ; 0f b6 5e f8 ; 0xf4f42 boot.c:352 + xor dx, dx ; 31 d2 ; 0xf4f46 + xor ax, ax ; 31 c0 ; 0xf4f48 + add ax, si ; 01 f0 ; 0xf4f4a + adc dx, bx ; 11 da ; 0xf4f4c + lea sp, [bp-004h] ; 8d 66 fc ; 0xf4f4e boot.c:353 + pop di ; 5f ; 0xf4f51 + pop si ; 5e ; 0xf4f52 + pop bp ; 5d ; 0xf4f53 + retn ; c3 ; 0xf4f54 + ; disGetNextSymbol 0xf4f55 LB 0x50f0 -> off=0x0 cb=0000000000000013 uValue=00000000000f3955 'keyboard_panic' +keyboard_panic: ; 0xf4f55 LB 0x13 + push bp ; 55 ; 0xf4f55 keyboard.c:194 + mov bp, sp ; 89 e5 ; 0xf4f56 + push ax ; 50 ; 0xf4f58 keyboard.c:199 + push 00586h ; 68 86 05 ; 0xf4f59 + push strict byte 00007h ; 6a 07 ; 0xf4f5c + call 01a14h ; e8 b3 ca ; 0xf4f5e + add sp, strict byte 00006h ; 83 c4 06 ; 0xf4f61 + mov sp, bp ; 89 ec ; 0xf4f64 keyboard.c:200 + pop bp ; 5d ; 0xf4f66 + retn ; c3 ; 0xf4f67 + ; disGetNextSymbol 0xf4f68 LB 0x50dd -> off=0x0 cb=000000000000026a uValue=00000000000f3968 'keyboard_init' +keyboard_init: ; 0xf4f68 LB 0x26a + push bp ; 55 ; 0xf4f68 keyboard.c:208 + mov bp, sp ; 89 e5 ; 0xf4f69 + mov AL, strict byte 0aah ; b0 aa ; 0xf4f6b keyboard.c:214 + mov dx, strict word 00064h ; ba 64 00 ; 0xf4f6d + out DX, AL ; ee ; 0xf4f70 + mov bx, strict word 0ffffh ; bb ff ff ; 0xf4f71 keyboard.c:217 + mov dx, strict word 00064h ; ba 64 00 ; 0xf4f74 keyboard.c:218 + in AL, DX ; ec ; 0xf4f77 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4f78 + test AL, strict byte 002h ; a8 02 ; 0xf4f7a + je short 04f8bh ; 74 0d ; 0xf4f7c + dec bx ; 4b ; 0xf4f7e + test bx, bx ; 85 db ; 0xf4f7f + jbe short 04f8bh ; 76 08 ; 0xf4f81 + xor al, al ; 30 c0 ; 0xf4f83 + mov dx, 00080h ; ba 80 00 ; 0xf4f85 + out DX, AL ; ee ; 0xf4f88 + jmp short 04f74h ; eb e9 ; 0xf4f89 + test bx, bx ; 85 db ; 0xf4f8b keyboard.c:219 + jne short 04f94h ; 75 05 ; 0xf4f8d + xor ax, ax ; 31 c0 ; 0xf4f8f + call 04f55h ; e8 c1 ff ; 0xf4f91 + mov bx, strict word 0ffffh ; bb ff ff ; 0xf4f94 keyboard.c:222 + mov dx, strict word 00064h ; ba 64 00 ; 0xf4f97 keyboard.c:223 + in AL, DX ; ec ; 0xf4f9a + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4f9b + test AL, strict byte 001h ; a8 01 ; 0xf4f9d + jne short 04faeh ; 75 0d ; 0xf4f9f + dec bx ; 4b ; 0xf4fa1 + test bx, bx ; 85 db ; 0xf4fa2 + jbe short 04faeh ; 76 08 ; 0xf4fa4 + mov AL, strict byte 001h ; b0 01 ; 0xf4fa6 + mov dx, 00080h ; ba 80 00 ; 0xf4fa8 + out DX, AL ; ee ; 0xf4fab + jmp short 04f97h ; eb e9 ; 0xf4fac + test bx, bx ; 85 db ; 0xf4fae keyboard.c:224 + jne short 04fb8h ; 75 06 ; 0xf4fb0 + mov ax, strict word 00001h ; b8 01 00 ; 0xf4fb2 + call 04f55h ; e8 9d ff ; 0xf4fb5 + mov dx, strict word 00060h ; ba 60 00 ; 0xf4fb8 keyboard.c:227 + in AL, DX ; ec ; 0xf4fbb + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4fbc + cmp ax, strict word 00055h ; 3d 55 00 ; 0xf4fbe + je short 04fc9h ; 74 06 ; 0xf4fc1 + mov ax, 003dfh ; b8 df 03 ; 0xf4fc3 keyboard.c:228 + call 04f55h ; e8 8c ff ; 0xf4fc6 + mov AL, strict byte 0abh ; b0 ab ; 0xf4fc9 keyboard.c:232 + mov dx, strict word 00064h ; ba 64 00 ; 0xf4fcb + out DX, AL ; ee ; 0xf4fce + mov bx, strict word 0ffffh ; bb ff ff ; 0xf4fcf keyboard.c:235 + mov dx, strict word 00064h ; ba 64 00 ; 0xf4fd2 keyboard.c:236 + in AL, DX ; ec ; 0xf4fd5 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4fd6 + test AL, strict byte 002h ; a8 02 ; 0xf4fd8 + je short 04fe9h ; 74 0d ; 0xf4fda + dec bx ; 4b ; 0xf4fdc + test bx, bx ; 85 db ; 0xf4fdd + jbe short 04fe9h ; 76 08 ; 0xf4fdf + mov AL, strict byte 010h ; b0 10 ; 0xf4fe1 + mov dx, 00080h ; ba 80 00 ; 0xf4fe3 + out DX, AL ; ee ; 0xf4fe6 + jmp short 04fd2h ; eb e9 ; 0xf4fe7 + test bx, bx ; 85 db ; 0xf4fe9 keyboard.c:237 + jne short 04ff3h ; 75 06 ; 0xf4feb + mov ax, strict word 0000ah ; b8 0a 00 ; 0xf4fed + call 04f55h ; e8 62 ff ; 0xf4ff0 + mov bx, strict word 0ffffh ; bb ff ff ; 0xf4ff3 keyboard.c:240 + mov dx, strict word 00064h ; ba 64 00 ; 0xf4ff6 keyboard.c:241 + in AL, DX ; ec ; 0xf4ff9 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4ffa + test AL, strict byte 001h ; a8 01 ; 0xf4ffc + jne short 0500dh ; 75 0d ; 0xf4ffe + dec bx ; 4b ; 0xf5000 + test bx, bx ; 85 db ; 0xf5001 + jbe short 0500dh ; 76 08 ; 0xf5003 + mov AL, strict byte 011h ; b0 11 ; 0xf5005 + mov dx, 00080h ; ba 80 00 ; 0xf5007 + out DX, AL ; ee ; 0xf500a + jmp short 04ff6h ; eb e9 ; 0xf500b + test bx, bx ; 85 db ; 0xf500d keyboard.c:242 + jne short 05017h ; 75 06 ; 0xf500f + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf5011 + call 04f55h ; e8 3e ff ; 0xf5014 + mov dx, strict word 00060h ; ba 60 00 ; 0xf5017 keyboard.c:246 + in AL, DX ; ec ; 0xf501a + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf501b + test ax, ax ; 85 c0 ; 0xf501d + je short 05027h ; 74 06 ; 0xf501f + mov ax, 003e0h ; b8 e0 03 ; 0xf5021 keyboard.c:247 + call 04f55h ; e8 2e ff ; 0xf5024 + mov AL, strict byte 0ffh ; b0 ff ; 0xf5027 keyboard.c:253 + mov dx, strict word 00060h ; ba 60 00 ; 0xf5029 + out DX, AL ; ee ; 0xf502c + mov bx, strict word 0ffffh ; bb ff ff ; 0xf502d keyboard.c:256 + mov dx, strict word 00064h ; ba 64 00 ; 0xf5030 keyboard.c:257 + in AL, DX ; ec ; 0xf5033 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf5034 + test AL, strict byte 002h ; a8 02 ; 0xf5036 + je short 05047h ; 74 0d ; 0xf5038 + dec bx ; 4b ; 0xf503a + test bx, bx ; 85 db ; 0xf503b + jbe short 05047h ; 76 08 ; 0xf503d + mov AL, strict byte 020h ; b0 20 ; 0xf503f + mov dx, 00080h ; ba 80 00 ; 0xf5041 + out DX, AL ; ee ; 0xf5044 + jmp short 05030h ; eb e9 ; 0xf5045 + test bx, bx ; 85 db ; 0xf5047 keyboard.c:258 + jne short 05051h ; 75 06 ; 0xf5049 + mov ax, strict word 00014h ; b8 14 00 ; 0xf504b + call 04f55h ; e8 04 ff ; 0xf504e + mov bx, strict word 0ffffh ; bb ff ff ; 0xf5051 keyboard.c:261 + mov dx, strict word 00064h ; ba 64 00 ; 0xf5054 keyboard.c:262 + in AL, DX ; ec ; 0xf5057 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf5058 + test AL, strict byte 001h ; a8 01 ; 0xf505a + jne short 0506bh ; 75 0d ; 0xf505c + dec bx ; 4b ; 0xf505e + test bx, bx ; 85 db ; 0xf505f + jbe short 0506bh ; 76 08 ; 0xf5061 + mov AL, strict byte 021h ; b0 21 ; 0xf5063 + mov dx, 00080h ; ba 80 00 ; 0xf5065 + out DX, AL ; ee ; 0xf5068 + jmp short 05054h ; eb e9 ; 0xf5069 + test bx, bx ; 85 db ; 0xf506b keyboard.c:263 + jne short 05075h ; 75 06 ; 0xf506d + mov ax, strict word 00015h ; b8 15 00 ; 0xf506f + call 04f55h ; e8 e0 fe ; 0xf5072 + mov dx, strict word 00060h ; ba 60 00 ; 0xf5075 keyboard.c:266 + in AL, DX ; ec ; 0xf5078 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf5079 + cmp ax, 000fah ; 3d fa 00 ; 0xf507b + je short 05086h ; 74 06 ; 0xf507e + mov ax, 003e1h ; b8 e1 03 ; 0xf5080 keyboard.c:267 + call 04f55h ; e8 cf fe ; 0xf5083 + mov dx, strict word 00064h ; ba 64 00 ; 0xf5086 keyboard.c:271 + in AL, DX ; ec ; 0xf5089 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf508a + test AL, strict byte 001h ; a8 01 ; 0xf508c + jne short 05098h ; 75 08 ; 0xf508e + mov AL, strict byte 031h ; b0 31 ; 0xf5090 + mov dx, 00080h ; ba 80 00 ; 0xf5092 + out DX, AL ; ee ; 0xf5095 + jmp short 05086h ; eb ee ; 0xf5096 + mov dx, strict word 00060h ; ba 60 00 ; 0xf5098 keyboard.c:273 + in AL, DX ; ec ; 0xf509b + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf509c + cmp ax, 000aah ; 3d aa 00 ; 0xf509e + je short 050b1h ; 74 0e ; 0xf50a1 + in AL, DX ; ec ; 0xf50a3 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf50a4 + cmp ax, 000aah ; 3d aa 00 ; 0xf50a6 + je short 050b1h ; 74 06 ; 0xf50a9 + mov ax, 003e2h ; b8 e2 03 ; 0xf50ab keyboard.c:274 + call 04f55h ; e8 a4 fe ; 0xf50ae + mov AL, strict byte 0f5h ; b0 f5 ; 0xf50b1 keyboard.c:278 + mov dx, strict word 00060h ; ba 60 00 ; 0xf50b3 + out DX, AL ; ee ; 0xf50b6 + mov bx, strict word 0ffffh ; bb ff ff ; 0xf50b7 keyboard.c:281 + mov dx, strict word 00064h ; ba 64 00 ; 0xf50ba keyboard.c:282 + in AL, DX ; ec ; 0xf50bd + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf50be + test AL, strict byte 002h ; a8 02 ; 0xf50c0 + je short 050d1h ; 74 0d ; 0xf50c2 + dec bx ; 4b ; 0xf50c4 + test bx, bx ; 85 db ; 0xf50c5 + jbe short 050d1h ; 76 08 ; 0xf50c7 + mov AL, strict byte 040h ; b0 40 ; 0xf50c9 + mov dx, 00080h ; ba 80 00 ; 0xf50cb + out DX, AL ; ee ; 0xf50ce + jmp short 050bah ; eb e9 ; 0xf50cf + test bx, bx ; 85 db ; 0xf50d1 keyboard.c:283 + jne short 050dbh ; 75 06 ; 0xf50d3 + mov ax, strict word 00028h ; b8 28 00 ; 0xf50d5 + call 04f55h ; e8 7a fe ; 0xf50d8 + mov bx, strict word 0ffffh ; bb ff ff ; 0xf50db keyboard.c:286 + mov dx, strict word 00064h ; ba 64 00 ; 0xf50de keyboard.c:287 + in AL, DX ; ec ; 0xf50e1 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf50e2 + test AL, strict byte 001h ; a8 01 ; 0xf50e4 + jne short 050f5h ; 75 0d ; 0xf50e6 + dec bx ; 4b ; 0xf50e8 + test bx, bx ; 85 db ; 0xf50e9 + jbe short 050f5h ; 76 08 ; 0xf50eb + mov AL, strict byte 041h ; b0 41 ; 0xf50ed + mov dx, 00080h ; ba 80 00 ; 0xf50ef + out DX, AL ; ee ; 0xf50f2 + jmp short 050deh ; eb e9 ; 0xf50f3 + test bx, bx ; 85 db ; 0xf50f5 keyboard.c:288 + jne short 050ffh ; 75 06 ; 0xf50f7 + mov ax, strict word 00029h ; b8 29 00 ; 0xf50f9 + call 04f55h ; e8 56 fe ; 0xf50fc + mov dx, strict word 00060h ; ba 60 00 ; 0xf50ff keyboard.c:291 + in AL, DX ; ec ; 0xf5102 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf5103 + cmp ax, 000fah ; 3d fa 00 ; 0xf5105 + je short 05110h ; 74 06 ; 0xf5108 + mov ax, 003e3h ; b8 e3 03 ; 0xf510a keyboard.c:292 + call 04f55h ; e8 45 fe ; 0xf510d + mov AL, strict byte 060h ; b0 60 ; 0xf5110 keyboard.c:296 + mov dx, strict word 00064h ; ba 64 00 ; 0xf5112 + out DX, AL ; ee ; 0xf5115 + mov bx, strict word 0ffffh ; bb ff ff ; 0xf5116 keyboard.c:299 + mov dx, strict word 00064h ; ba 64 00 ; 0xf5119 keyboard.c:300 + in AL, DX ; ec ; 0xf511c + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf511d + test AL, strict byte 002h ; a8 02 ; 0xf511f + je short 05130h ; 74 0d ; 0xf5121 + dec bx ; 4b ; 0xf5123 + test bx, bx ; 85 db ; 0xf5124 + jbe short 05130h ; 76 08 ; 0xf5126 + mov AL, strict byte 050h ; b0 50 ; 0xf5128 + mov dx, 00080h ; ba 80 00 ; 0xf512a + out DX, AL ; ee ; 0xf512d + jmp short 05119h ; eb e9 ; 0xf512e + test bx, bx ; 85 db ; 0xf5130 keyboard.c:301 + jne short 0513ah ; 75 06 ; 0xf5132 + mov ax, strict word 00032h ; b8 32 00 ; 0xf5134 + call 04f55h ; e8 1b fe ; 0xf5137 + mov AL, strict byte 065h ; b0 65 ; 0xf513a keyboard.c:304 + mov dx, strict word 00060h ; ba 60 00 ; 0xf513c + out DX, AL ; ee ; 0xf513f + mov bx, strict word 0ffffh ; bb ff ff ; 0xf5140 keyboard.c:307 + mov dx, strict word 00064h ; ba 64 00 ; 0xf5143 keyboard.c:308 + in AL, DX ; ec ; 0xf5146 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf5147 + test AL, strict byte 002h ; a8 02 ; 0xf5149 + je short 0515ah ; 74 0d ; 0xf514b + dec bx ; 4b ; 0xf514d + test bx, bx ; 85 db ; 0xf514e + jbe short 0515ah ; 76 08 ; 0xf5150 + mov AL, strict byte 060h ; b0 60 ; 0xf5152 + mov dx, 00080h ; ba 80 00 ; 0xf5154 + out DX, AL ; ee ; 0xf5157 + jmp short 05143h ; eb e9 ; 0xf5158 + test bx, bx ; 85 db ; 0xf515a keyboard.c:309 + jne short 05164h ; 75 06 ; 0xf515c + mov ax, strict word 0003ch ; b8 3c 00 ; 0xf515e + call 04f55h ; e8 f1 fd ; 0xf5161 + mov AL, strict byte 0f4h ; b0 f4 ; 0xf5164 keyboard.c:312 + mov dx, strict word 00060h ; ba 60 00 ; 0xf5166 + out DX, AL ; ee ; 0xf5169 + mov bx, strict word 0ffffh ; bb ff ff ; 0xf516a keyboard.c:315 + mov dx, strict word 00064h ; ba 64 00 ; 0xf516d keyboard.c:316 + in AL, DX ; ec ; 0xf5170 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf5171 + test AL, strict byte 002h ; a8 02 ; 0xf5173 + je short 05184h ; 74 0d ; 0xf5175 + dec bx ; 4b ; 0xf5177 + test bx, bx ; 85 db ; 0xf5178 + jbe short 05184h ; 76 08 ; 0xf517a + mov AL, strict byte 070h ; b0 70 ; 0xf517c + mov dx, 00080h ; ba 80 00 ; 0xf517e + out DX, AL ; ee ; 0xf5181 + jmp short 0516dh ; eb e9 ; 0xf5182 + test bx, bx ; 85 db ; 0xf5184 keyboard.c:317 + jne short 0518eh ; 75 06 ; 0xf5186 + mov ax, strict word 00046h ; b8 46 00 ; 0xf5188 + call 04f55h ; e8 c7 fd ; 0xf518b + mov bx, strict word 0ffffh ; bb ff ff ; 0xf518e keyboard.c:320 + mov dx, strict word 00064h ; ba 64 00 ; 0xf5191 keyboard.c:321 + in AL, DX ; ec ; 0xf5194 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf5195 + test AL, strict byte 001h ; a8 01 ; 0xf5197 + jne short 051a8h ; 75 0d ; 0xf5199 + dec bx ; 4b ; 0xf519b + test bx, bx ; 85 db ; 0xf519c + jbe short 051a8h ; 76 08 ; 0xf519e + mov AL, strict byte 071h ; b0 71 ; 0xf51a0 + mov dx, 00080h ; ba 80 00 ; 0xf51a2 + out DX, AL ; ee ; 0xf51a5 + jmp short 05191h ; eb e9 ; 0xf51a6 + test bx, bx ; 85 db ; 0xf51a8 keyboard.c:322 + jne short 051b2h ; 75 06 ; 0xf51aa + mov ax, strict word 00046h ; b8 46 00 ; 0xf51ac + call 04f55h ; e8 a3 fd ; 0xf51af + mov dx, strict word 00060h ; ba 60 00 ; 0xf51b2 keyboard.c:325 + in AL, DX ; ec ; 0xf51b5 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf51b6 + cmp ax, 000fah ; 3d fa 00 ; 0xf51b8 + je short 051c3h ; 74 06 ; 0xf51bb + mov ax, 003e4h ; b8 e4 03 ; 0xf51bd keyboard.c:326 + call 04f55h ; e8 92 fd ; 0xf51c0 + mov AL, strict byte 0a8h ; b0 a8 ; 0xf51c3 keyboard.c:330 + mov dx, strict word 00064h ; ba 64 00 ; 0xf51c5 + out DX, AL ; ee ; 0xf51c8 + xor ax, ax ; 31 c0 ; 0xf51c9 keyboard.c:335 + call 065ebh ; e8 1d 14 ; 0xf51cb + mov sp, bp ; 89 ec ; 0xf51ce keyboard.c:336 + pop bp ; 5d ; 0xf51d0 + retn ; c3 ; 0xf51d1 + ; disGetNextSymbol 0xf51d2 LB 0x4e73 -> off=0x0 cb=0000000000000053 uValue=00000000000f3bd2 'enqueue_key' +enqueue_key: ; 0xf51d2 LB 0x53 + push bx ; 53 ; 0xf51d2 keyboard.c:339 + push cx ; 51 ; 0xf51d3 + push si ; 56 ; 0xf51d4 + push di ; 57 ; 0xf51d5 + push bp ; 55 ; 0xf51d6 + mov bp, sp ; 89 e5 ; 0xf51d7 + mov dh, al ; 88 c6 ; 0xf51d9 + mov bx, 00080h ; bb 80 00 ; 0xf51db keyboard.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf51de + mov es, ax ; 8e c0 ; 0xf51e1 + mov di, word [es:bx] ; 26 8b 3f ; 0xf51e3 + mov bx, 00082h ; bb 82 00 ; 0xf51e6 keyboard.c:48 + mov si, word [es:bx] ; 26 8b 37 ; 0xf51e9 + mov bx, strict word 0001ah ; bb 1a 00 ; 0xf51ec keyboard.c:48 + mov cx, word [es:bx] ; 26 8b 0f ; 0xf51ef + mov bx, strict word 0001ch ; bb 1c 00 ; 0xf51f2 keyboard.c:48 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf51f5 + mov bx, ax ; 89 c3 ; 0xf51f8 keyboard.c:354 + inc ax ; 40 ; 0xf51fa keyboard.c:355 + inc ax ; 40 ; 0xf51fb + cmp ax, si ; 39 f0 ; 0xf51fc keyboard.c:356 + jc short 05202h ; 72 02 ; 0xf51fe + mov ax, di ; 89 f8 ; 0xf5200 keyboard.c:357 + cmp ax, cx ; 39 c8 ; 0xf5202 keyboard.c:359 + jne short 0520ah ; 75 04 ; 0xf5204 + xor ax, cx ; 31 c8 ; 0xf5206 keyboard.c:360 + jmp short 0521fh ; eb 15 ; 0xf5208 + mov cx, strict word 00040h ; b9 40 00 ; 0xf520a keyboard.c:43 + mov es, cx ; 8e c1 ; 0xf520d + mov byte [es:bx], dl ; 26 88 17 ; 0xf520f + inc bx ; 43 ; 0xf5212 keyboard.c:363 + mov byte [es:bx], dh ; 26 88 37 ; 0xf5213 keyboard.c:43 + mov bx, strict word 0001ch ; bb 1c 00 ; 0xf5216 keyboard.c:53 + mov word [es:bx], ax ; 26 89 07 ; 0xf5219 + mov ax, strict word 00001h ; b8 01 00 ; 0xf521c keyboard.c:365 + pop bp ; 5d ; 0xf521f keyboard.c:366 + pop di ; 5f ; 0xf5220 + pop si ; 5e ; 0xf5221 + pop cx ; 59 ; 0xf5222 + pop bx ; 5b ; 0xf5223 + retn ; c3 ; 0xf5224 + ; disGetNextSymbol 0xf5225 LB 0x4e20 -> off=0x35 cb=00000000000003cd uValue=00000000000f3c5a 'int09_function' + db 0d4h, 0c6h, 0c5h, 0bah, 0b8h, 0b6h, 0aah, 09dh, 054h, 053h, 046h, 045h, 03ah, 038h, 036h, 02ah + db 01dh, 0e6h, 054h, 036h, 053h, 0dfh, 052h, 0dfh, 052h, 09bh, 053h, 0bah, 052h, 0eeh, 053h, 049h + db 054h, 0cbh, 054h, 0aeh, 054h, 066h, 053h, 0dfh, 052h, 0dfh, 052h, 0c7h, 053h, 0d1h, 052h, 031h + db 054h, 096h, 054h, 0c6h, 054h +int09_function: ; 0xf525a LB 0x3cd + push bp ; 55 ; 0xf525a keyboard.c:371 + mov bp, sp ; 89 e5 ; 0xf525b + push si ; 56 ; 0xf525d + push di ; 57 ; 0xf525e + push ax ; 50 ; 0xf525f + push ax ; 50 ; 0xf5260 + mov al, byte [bp+014h] ; 8a 46 14 ; 0xf5261 keyboard.c:382 + mov byte [bp-006h], al ; 88 46 fa ; 0xf5264 + test al, al ; 84 c0 ; 0xf5267 keyboard.c:384 + jne short 05284h ; 75 19 ; 0xf5269 + mov bx, 00db2h ; bb b2 0d ; 0xf526b keyboard.c:385 + mov cx, ds ; 8c d9 ; 0xf526e + mov ax, strict word 00004h ; b8 04 00 ; 0xf5270 + call 019d3h ; e8 5d c7 ; 0xf5273 + push 00599h ; 68 99 05 ; 0xf5276 + push strict byte 00004h ; 6a 04 ; 0xf5279 + call 01a14h ; e8 96 c7 ; 0xf527b + add sp, strict byte 00004h ; 83 c4 04 ; 0xf527e + jmp near 0532fh ; e9 ab 00 ; 0xf5281 keyboard.c:386 + mov bx, strict word 00018h ; bb 18 00 ; 0xf5284 keyboard.c:38 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5287 + mov es, ax ; 8e c0 ; 0xf528a + mov bl, byte [es:bx] ; 26 8a 1f ; 0xf528c + mov dl, bl ; 88 da ; 0xf528f keyboard.c:39 + mov si, 00096h ; be 96 00 ; 0xf5291 keyboard.c:38 + mov bh, byte [es:si] ; 26 8a 3c ; 0xf5294 + mov byte [bp-008h], bh ; 88 7e f8 ; 0xf5297 keyboard.c:39 + mov si, strict word 00017h ; be 17 00 ; 0xf529a keyboard.c:38 + mov ah, byte [es:si] ; 26 8a 24 ; 0xf529d + mov dh, ah ; 88 e6 ; 0xf52a0 keyboard.c:39 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf52a2 keyboard.c:394 + push CS ; 0e ; 0xf52a5 + pop ES ; 07 ; 0xf52a6 + mov cx, strict word 00012h ; b9 12 00 ; 0xf52a7 + mov di, 05225h ; bf 25 52 ; 0xf52aa + repne scasb ; f2 ae ; 0xf52ad + sal cx, 1 ; d1 e1 ; 0xf52af + mov di, cx ; 89 cf ; 0xf52b1 + mov si, word [cs:di+05236h] ; 2e 8b b5 36 52 ; 0xf52b3 + jmp si ; ff e6 ; 0xf52b8 + xor dh, 040h ; 80 f6 40 ; 0xf52ba keyboard.c:396 + mov bx, strict word 00017h ; bb 17 00 ; 0xf52bd keyboard.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf52c0 + mov es, ax ; 8e c0 ; 0xf52c3 + mov byte [es:bx], dh ; 26 88 37 ; 0xf52c5 + or dl, 040h ; 80 ca 40 ; 0xf52c8 keyboard.c:398 + mov bx, strict word 00018h ; bb 18 00 ; 0xf52cb keyboard.c:43 + jmp near 054c0h ; e9 ef 01 ; 0xf52ce + and dl, 0bfh ; 80 e2 bf ; 0xf52d1 keyboard.c:402 + mov bx, strict word 00018h ; bb 18 00 ; 0xf52d4 keyboard.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf52d7 + mov es, ax ; 8e c0 ; 0xf52da + jmp near 054c0h ; e9 e1 01 ; 0xf52dc + test byte [bp-008h], 002h ; f6 46 f8 02 ; 0xf52df keyboard.c:411 + jne near 05310h ; 0f 85 29 00 ; 0xf52e3 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf52e7 keyboard.c:412 + and AL, strict byte 07fh ; 24 7f ; 0xf52ea + cmp AL, strict byte 02ah ; 3c 2a ; 0xf52ec + db 00fh, 094h, 0c0h + ; sete al ; 0f 94 c0 ; 0xf52ee + movzx bx, al ; 0f b6 d8 ; 0xf52f1 + inc bx ; 43 ; 0xf52f4 + test byte [bp-006h], 080h ; f6 46 fa 80 ; 0xf52f5 keyboard.c:413 + je short 05303h ; 74 08 ; 0xf52f9 + mov al, bl ; 88 d8 ; 0xf52fb keyboard.c:414 + not al ; f6 d0 ; 0xf52fd + and dh, al ; 20 c6 ; 0xf52ff + jmp short 05305h ; eb 02 ; 0xf5301 keyboard.c:415 + or dh, bl ; 08 de ; 0xf5303 keyboard.c:416 + mov bx, strict word 00017h ; bb 17 00 ; 0xf5305 keyboard.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5308 + mov es, ax ; 8e c0 ; 0xf530b + mov byte [es:bx], dh ; 26 88 37 ; 0xf530d + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf5310 keyboard.c:419 + and AL, strict byte 07fh ; 24 7f ; 0xf5313 + cmp AL, strict byte 01dh ; 3c 1d ; 0xf5315 + je short 0531dh ; 74 04 ; 0xf5317 + and byte [bp-008h], 0feh ; 80 66 f8 fe ; 0xf5319 + and byte [bp-008h], 0fdh ; 80 66 f8 fd ; 0xf531d + mov bx, 00096h ; bb 96 00 ; 0xf5321 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5324 + mov es, ax ; 8e c0 ; 0xf5327 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf5329 + mov byte [es:bx], al ; 26 88 07 ; 0xf532c + lea sp, [bp-004h] ; 8d 66 fc ; 0xf532f + pop di ; 5f ; 0xf5332 + pop si ; 5e ; 0xf5333 + pop bp ; 5d ; 0xf5334 + retn ; c3 ; 0xf5335 + test bh, 001h ; f6 c7 01 ; 0xf5336 keyboard.c:422 + jne short 05310h ; 75 d5 ; 0xf5339 + or dh, 004h ; 80 ce 04 ; 0xf533b keyboard.c:423 + mov ax, strict word 00040h ; b8 40 00 ; 0xf533e keyboard.c:41 + mov bx, strict word 00017h ; bb 17 00 ; 0xf5341 + mov es, ax ; 8e c0 ; 0xf5344 keyboard.c:43 + mov byte [es:bx], dh ; 26 88 37 ; 0xf5346 + test byte [bp-008h], 002h ; f6 46 f8 02 ; 0xf5349 keyboard.c:425 + je short 0535bh ; 74 0c ; 0xf534d + or byte [bp-008h], 004h ; 80 4e f8 04 ; 0xf534f keyboard.c:426 + mov bx, 00096h ; bb 96 00 ; 0xf5353 keyboard.c:41 + mov dl, byte [bp-008h] ; 8a 56 f8 ; 0xf5356 + jmp short 05361h ; eb 06 ; 0xf5359 keyboard.c:428 + or dl, 001h ; 80 ca 01 ; 0xf535b keyboard.c:429 + mov bx, strict word 00018h ; bb 18 00 ; 0xf535e keyboard.c:41 + mov byte [es:bx], dl ; 26 88 17 ; 0xf5361 keyboard.c:43 + jmp short 05310h ; eb aa ; 0xf5364 keyboard.c:433 + test bh, 001h ; f6 c7 01 ; 0xf5366 keyboard.c:435 + jne short 05310h ; 75 a5 ; 0xf5369 + and dh, 0fbh ; 80 e6 fb ; 0xf536b keyboard.c:436 + mov si, strict word 00017h ; be 17 00 ; 0xf536e keyboard.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5371 + mov es, ax ; 8e c0 ; 0xf5374 + mov byte [es:si], dh ; 26 88 34 ; 0xf5376 + test bh, 002h ; f6 c7 02 ; 0xf5379 keyboard.c:438 + je short 0538fh ; 74 11 ; 0xf537c + and bh, 0fbh ; 80 e7 fb ; 0xf537e keyboard.c:439 + mov byte [bp-008h], bh ; 88 7e f8 ; 0xf5381 + mov bx, 00096h ; bb 96 00 ; 0xf5384 keyboard.c:43 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf5387 + mov byte [es:bx], al ; 26 88 07 ; 0xf538a + jmp short 05310h ; eb 81 ; 0xf538d keyboard.c:441 + and dl, 0feh ; 80 e2 fe ; 0xf538f keyboard.c:442 + mov bx, strict word 00018h ; bb 18 00 ; 0xf5392 keyboard.c:43 + mov byte [es:bx], dl ; 26 88 17 ; 0xf5395 + jmp near 05310h ; e9 75 ff ; 0xf5398 keyboard.c:446 + or dh, 008h ; 80 ce 08 ; 0xf539b keyboard.c:449 + mov ax, strict word 00040h ; b8 40 00 ; 0xf539e keyboard.c:41 + mov bx, strict word 00017h ; bb 17 00 ; 0xf53a1 + mov es, ax ; 8e c0 ; 0xf53a4 keyboard.c:43 + mov byte [es:bx], dh ; 26 88 37 ; 0xf53a6 + test byte [bp-008h], 002h ; f6 46 f8 02 ; 0xf53a9 keyboard.c:451 + je short 053bbh ; 74 0c ; 0xf53ad + or byte [bp-008h], 008h ; 80 4e f8 08 ; 0xf53af keyboard.c:452 + mov bx, 00096h ; bb 96 00 ; 0xf53b3 keyboard.c:41 + mov dl, byte [bp-008h] ; 8a 56 f8 ; 0xf53b6 + jmp short 053c1h ; eb 06 ; 0xf53b9 keyboard.c:454 + or dl, 002h ; 80 ca 02 ; 0xf53bb keyboard.c:455 + mov bx, strict word 00018h ; bb 18 00 ; 0xf53be keyboard.c:41 + mov byte [es:bx], dl ; 26 88 17 ; 0xf53c1 keyboard.c:43 + jmp near 05310h ; e9 49 ff ; 0xf53c4 keyboard.c:458 + and dh, 0f7h ; 80 e6 f7 ; 0xf53c7 keyboard.c:460 + mov si, strict word 00017h ; be 17 00 ; 0xf53ca keyboard.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf53cd + mov es, ax ; 8e c0 ; 0xf53d0 + mov byte [es:si], dh ; 26 88 34 ; 0xf53d2 + test bh, 002h ; f6 c7 02 ; 0xf53d5 keyboard.c:462 + je short 053e2h ; 74 08 ; 0xf53d8 + and bh, 0f7h ; 80 e7 f7 ; 0xf53da keyboard.c:463 + mov byte [bp-008h], bh ; 88 7e f8 ; 0xf53dd + jmp short 05384h ; eb a2 ; 0xf53e0 keyboard.c:464 + and dl, 0fdh ; 80 e2 fd ; 0xf53e2 keyboard.c:466 + mov bx, strict word 00018h ; bb 18 00 ; 0xf53e5 keyboard.c:43 + mov byte [es:bx], dl ; 26 88 17 ; 0xf53e8 + jmp near 05310h ; e9 22 ff ; 0xf53eb keyboard.c:469 + test bh, 003h ; f6 c7 03 ; 0xf53ee keyboard.c:472 + jne short 05407h ; 75 14 ; 0xf53f1 + or dl, 020h ; 80 ca 20 ; 0xf53f3 keyboard.c:474 + mov ax, strict word 00040h ; b8 40 00 ; 0xf53f6 keyboard.c:41 + mov es, ax ; 8e c0 ; 0xf53f9 + mov bx, strict word 00018h ; bb 18 00 ; 0xf53fb + mov byte [es:bx], dl ; 26 88 17 ; 0xf53fe keyboard.c:43 + xor dh, 020h ; 80 f6 20 ; 0xf5401 keyboard.c:476 + jmp near 0548dh ; e9 86 00 ; 0xf5404 keyboard.c:477 + or dl, 008h ; 80 ca 08 ; 0xf5407 keyboard.c:480 + mov ax, strict word 00040h ; b8 40 00 ; 0xf540a keyboard.c:41 + mov bx, strict word 00018h ; bb 18 00 ; 0xf540d + mov es, ax ; 8e c0 ; 0xf5410 keyboard.c:43 + mov byte [es:bx], dl ; 26 88 17 ; 0xf5412 + mov ax, 000aeh ; b8 ae 00 ; 0xf5415 keyboard.c:484 + mov dx, strict word 00064h ; ba 64 00 ; 0xf5418 + out DX, AL ; ee ; 0xf541b + call 0e034h ; e8 15 8c ; 0xf541c keyboard.c:485 + mov bx, strict word 00018h ; bb 18 00 ; 0xf541f keyboard.c:38 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5422 + mov es, ax ; 8e c0 ; 0xf5425 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf5427 + test AL, strict byte 008h ; a8 08 ; 0xf542a keyboard.c:39 + jne short 0541fh ; 75 f1 ; 0xf542c + jmp near 05310h ; e9 df fe ; 0xf542e keyboard.c:492 + test bh, 003h ; f6 c7 03 ; 0xf5431 keyboard.c:494 + jne near 05310h ; 0f 85 d8 fe ; 0xf5434 + and dl, 0dfh ; 80 e2 df ; 0xf5438 keyboard.c:495 + mov bx, strict word 00018h ; bb 18 00 ; 0xf543b keyboard.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf543e + mov es, ax ; 8e c0 ; 0xf5441 + mov byte [es:bx], dl ; 26 88 17 ; 0xf5443 + jmp near 05310h ; e9 c7 fe ; 0xf5446 keyboard.c:498 + test bh, 002h ; f6 c7 02 ; 0xf5449 keyboard.c:501 + je short 0547ch ; 74 2e ; 0xf544c + mov ax, strict word 00040h ; b8 40 00 ; 0xf544e keyboard.c:46 + mov bx, strict word 0001ah ; bb 1a 00 ; 0xf5451 + mov es, ax ; 8e c0 ; 0xf5454 keyboard.c:48 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf5456 + mov bx, strict word 0001ch ; bb 1c 00 ; 0xf5459 keyboard.c:51 + mov word [es:bx], ax ; 26 89 07 ; 0xf545c keyboard.c:53 + mov bx, strict word 00071h ; bb 71 00 ; 0xf545f keyboard.c:41 + mov DL, strict byte 080h ; b2 80 ; 0xf5462 + mov byte [es:bx], dl ; 26 88 17 ; 0xf5464 keyboard.c:43 + mov ax, 000aeh ; b8 ae 00 ; 0xf5467 keyboard.c:506 + mov dx, strict word 00064h ; ba 64 00 ; 0xf546a + out DX, AL ; ee ; 0xf546d + push bp ; 55 ; 0xf546e keyboard.c:507 + int 01bh ; cd 1b ; 0xf546f + pop bp ; 5d ; 0xf5471 + xor dx, dx ; 31 d2 ; 0xf5472 keyboard.c:508 + xor ax, ax ; 31 c0 ; 0xf5474 + call 051d2h ; e8 59 fd ; 0xf5476 + jmp near 05310h ; e9 94 fe ; 0xf5479 keyboard.c:509 + or dl, 010h ; 80 ca 10 ; 0xf547c keyboard.c:510 + mov ax, strict word 00040h ; b8 40 00 ; 0xf547f keyboard.c:41 + mov es, ax ; 8e c0 ; 0xf5482 + mov bx, strict word 00018h ; bb 18 00 ; 0xf5484 + mov byte [es:bx], dl ; 26 88 17 ; 0xf5487 keyboard.c:43 + xor dh, 010h ; 80 f6 10 ; 0xf548a keyboard.c:512 + mov bx, strict word 00017h ; bb 17 00 ; 0xf548d keyboard.c:41 + mov byte [es:bx], dh ; 26 88 37 ; 0xf5490 keyboard.c:43 + jmp near 05310h ; e9 7a fe ; 0xf5493 keyboard.c:515 + test bh, 002h ; f6 c7 02 ; 0xf5496 keyboard.c:518 + jne near 05310h ; 0f 85 73 fe ; 0xf5499 + and dl, 0efh ; 80 e2 ef ; 0xf549d keyboard.c:519 + mov bx, strict word 00018h ; bb 18 00 ; 0xf54a0 keyboard.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf54a3 + mov es, ax ; 8e c0 ; 0xf54a6 + mov byte [es:bx], dl ; 26 88 17 ; 0xf54a8 + jmp near 05310h ; e9 62 fe ; 0xf54ab keyboard.c:522 + test bl, 004h ; f6 c3 04 ; 0xf54ae keyboard.c:525 + jne near 05310h ; 0f 85 5b fe ; 0xf54b1 + or dl, 004h ; 80 ca 04 ; 0xf54b5 keyboard.c:526 + mov bx, strict word 00018h ; bb 18 00 ; 0xf54b8 keyboard.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf54bb + mov es, ax ; 8e c0 ; 0xf54be + mov byte [es:bx], dl ; 26 88 17 ; 0xf54c0 + jmp near 05310h ; e9 4a fe ; 0xf54c3 keyboard.c:530 + and dl, 0fbh ; 80 e2 fb ; 0xf54c6 keyboard.c:533 + jmp short 054b8h ; eb ed ; 0xf54c9 keyboard.c:534 + mov al, ah ; 88 e0 ; 0xf54cb keyboard.c:539 + and AL, strict byte 00ch ; 24 0c ; 0xf54cd + cmp AL, strict byte 00ch ; 3c 0c ; 0xf54cf + jne short 054e6h ; 75 13 ; 0xf54d1 + mov ax, strict word 00040h ; b8 40 00 ; 0xf54d3 keyboard.c:51 + mov es, ax ; 8e c0 ; 0xf54d6 + mov bx, strict word 00072h ; bb 72 00 ; 0xf54d8 + mov ax, 01234h ; b8 34 12 ; 0xf54db + mov word [es:bx], ax ; 26 89 07 ; 0xf54de keyboard.c:53 + jmp far 0f000h:0e05bh ; ea 5b e0 00 f0 ; 0xf54e1 keyboard.c:542 + test dl, 008h ; f6 c2 08 ; 0xf54e6 keyboard.c:548 + je short 054fch ; 74 11 ; 0xf54e9 + and dl, 0f7h ; 80 e2 f7 ; 0xf54eb keyboard.c:550 + mov bx, strict word 00018h ; bb 18 00 ; 0xf54ee keyboard.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf54f1 + mov es, ax ; 8e c0 ; 0xf54f4 + mov byte [es:bx], dl ; 26 88 17 ; 0xf54f6 + jmp near 0532fh ; e9 33 fe ; 0xf54f9 keyboard.c:552 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf54fc keyboard.c:555 + test AL, strict byte 080h ; a8 80 ; 0xf54ff + je short 05531h ; 74 2e ; 0xf5501 + cmp AL, strict byte 0fah ; 3c fa ; 0xf5503 keyboard.c:557 + jne short 05517h ; 75 10 ; 0xf5505 + mov bx, 00097h ; bb 97 00 ; 0xf5507 keyboard.c:38 + mov ax, strict word 00040h ; b8 40 00 ; 0xf550a + mov es, ax ; 8e c0 ; 0xf550d + mov ah, byte [es:bx] ; 26 8a 27 ; 0xf550f + or ah, 010h ; 80 cc 10 ; 0xf5512 keyboard.c:39 + jmp short 0552bh ; eb 14 ; 0xf5515 keyboard.c:560 + cmp AL, strict byte 0feh ; 3c fe ; 0xf5517 + jne near 05310h ; 0f 85 f3 fd ; 0xf5519 + mov bx, 00097h ; bb 97 00 ; 0xf551d keyboard.c:38 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5520 + mov es, ax ; 8e c0 ; 0xf5523 + mov ah, byte [es:bx] ; 26 8a 27 ; 0xf5525 + or ah, 020h ; 80 cc 20 ; 0xf5528 keyboard.c:39 + mov byte [es:bx], ah ; 26 88 27 ; 0xf552b keyboard.c:43 + jmp near 05310h ; e9 df fd ; 0xf552e keyboard.c:564 + cmp byte [bp-006h], 058h ; 80 7e fa 58 ; 0xf5531 keyboard.c:566 + jbe short 05555h ; 76 1e ; 0xf5535 + mov bx, 00db2h ; bb b2 0d ; 0xf5537 keyboard.c:567 + mov cx, ds ; 8c d9 ; 0xf553a + mov ax, strict word 00004h ; b8 04 00 ; 0xf553c + call 019d3h ; e8 91 c4 ; 0xf553f + movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf5542 + push ax ; 50 ; 0xf5546 + push 005b3h ; 68 b3 05 ; 0xf5547 + push strict byte 00004h ; 6a 04 ; 0xf554a + call 01a14h ; e8 c5 c4 ; 0xf554c + add sp, strict byte 00006h ; 83 c4 06 ; 0xf554f + jmp near 0532fh ; e9 da fd ; 0xf5552 keyboard.c:568 + test dh, 008h ; f6 c6 08 ; 0xf5555 keyboard.c:570 + je short 0556ch ; 74 12 ; 0xf5558 + movzx bx, byte [bp-006h] ; 0f b6 5e fa ; 0xf555a keyboard.c:571 + imul bx, bx, strict byte 0000ah ; 6b db 0a ; 0xf555e + mov dl, byte [bx+00e06h] ; 8a 97 06 0e ; 0xf5561 + mov ax, word [bx+00e06h] ; 8b 87 06 0e ; 0xf5565 keyboard.c:572 + jmp near 055f8h ; e9 8c 00 ; 0xf5569 keyboard.c:573 + test dh, 004h ; f6 c6 04 ; 0xf556c + je short 05583h ; 74 12 ; 0xf556f + movzx bx, byte [bp-006h] ; 0f b6 5e fa ; 0xf5571 keyboard.c:574 + imul bx, bx, strict byte 0000ah ; 6b db 0a ; 0xf5575 + mov dl, byte [bx+00e04h] ; 8a 97 04 0e ; 0xf5578 + mov ax, word [bx+00e04h] ; 8b 87 04 0e ; 0xf557c keyboard.c:575 + jmp near 055f8h ; e9 75 00 ; 0xf5580 keyboard.c:576 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf5583 + and AL, strict byte 002h ; 24 02 ; 0xf5586 + test al, al ; 84 c0 ; 0xf5588 + jbe short 055a1h ; 76 15 ; 0xf558a + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf558c + cmp AL, strict byte 047h ; 3c 47 ; 0xf558f + jc short 055a1h ; 72 0e ; 0xf5591 + cmp AL, strict byte 053h ; 3c 53 ; 0xf5593 + jnbe short 055a1h ; 77 0a ; 0xf5595 + mov DL, strict byte 0e0h ; b2 e0 ; 0xf5597 keyboard.c:578 + movzx bx, al ; 0f b6 d8 ; 0xf5599 keyboard.c:579 + imul bx, bx, strict byte 0000ah ; 6b db 0a ; 0xf559c + jmp short 055f4h ; eb 53 ; 0xf559f keyboard.c:580 + test dh, 003h ; f6 c6 03 ; 0xf55a1 + je short 055d3h ; 74 2d ; 0xf55a4 + movzx bx, byte [bp-006h] ; 0f b6 5e fa ; 0xf55a6 keyboard.c:584 + imul bx, bx, strict byte 0000ah ; 6b db 0a ; 0xf55aa + movzx ax, byte [bx+00e08h] ; 0f b6 87 08 0e ; 0xf55ad + movzx dx, dh ; 0f b6 d6 ; 0xf55b2 + test dx, ax ; 85 c2 ; 0xf55b5 + je short 055c3h ; 74 0a ; 0xf55b7 + mov dl, byte [bx+00e00h] ; 8a 97 00 0e ; 0xf55b9 keyboard.c:585 + mov ax, word [bx+00e00h] ; 8b 87 00 0e ; 0xf55bd keyboard.c:586 + jmp short 055cbh ; eb 08 ; 0xf55c1 keyboard.c:587 + mov dl, byte [bx+00e02h] ; 8a 97 02 0e ; 0xf55c3 keyboard.c:588 + mov ax, word [bx+00e02h] ; 8b 87 02 0e ; 0xf55c7 keyboard.c:589 + shr ax, 008h ; c1 e8 08 ; 0xf55cb + mov byte [bp-006h], al ; 88 46 fa ; 0xf55ce + jmp short 055feh ; eb 2b ; 0xf55d1 keyboard.c:591 + movzx bx, byte [bp-006h] ; 0f b6 5e fa ; 0xf55d3 keyboard.c:593 + imul bx, bx, strict byte 0000ah ; 6b db 0a ; 0xf55d7 + movzx si, byte [bx+00e08h] ; 0f b6 b7 08 0e ; 0xf55da + movzx ax, dh ; 0f b6 c6 ; 0xf55df + test ax, si ; 85 f0 ; 0xf55e2 + je short 055f0h ; 74 0a ; 0xf55e4 + mov dl, byte [bx+00e02h] ; 8a 97 02 0e ; 0xf55e6 keyboard.c:594 + mov ax, word [bx+00e02h] ; 8b 87 02 0e ; 0xf55ea keyboard.c:595 + jmp short 055f8h ; eb 08 ; 0xf55ee keyboard.c:596 + mov dl, byte [bx+00e00h] ; 8a 97 00 0e ; 0xf55f0 keyboard.c:597 + mov ax, word [bx+00e00h] ; 8b 87 00 0e ; 0xf55f4 keyboard.c:598 + shr ax, 008h ; c1 e8 08 ; 0xf55f8 + mov byte [bp-006h], al ; 88 46 fa ; 0xf55fb + cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf55fe keyboard.c:601 + jne short 0561eh ; 75 1a ; 0xf5602 + test dl, dl ; 84 d2 ; 0xf5604 + jne short 0561eh ; 75 16 ; 0xf5606 + mov bx, 00db2h ; bb b2 0d ; 0xf5608 keyboard.c:602 + mov cx, ds ; 8c d9 ; 0xf560b + mov ax, strict word 00004h ; b8 04 00 ; 0xf560d + call 019d3h ; e8 c0 c3 ; 0xf5610 + push 005eah ; 68 ea 05 ; 0xf5613 + push strict byte 00004h ; 6a 04 ; 0xf5616 + call 01a14h ; e8 f9 c3 ; 0xf5618 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf561b + xor dh, dh ; 30 f6 ; 0xf561e keyboard.c:604 + movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf5620 + jmp near 05476h ; e9 4f fe ; 0xf5624 + ; disGetNextSymbol 0xf5627 LB 0x4a1e -> off=0x0 cb=000000000000006c uValue=00000000000f4027 'dequeue_key' +dequeue_key: ; 0xf5627 LB 0x6c + push si ; 56 ; 0xf5627 keyboard.c:614 + push di ; 57 ; 0xf5628 + enter 00002h, 000h ; c8 02 00 00 ; 0xf5629 + push ax ; 50 ; 0xf562d + push dx ; 52 ; 0xf562e + mov si, bx ; 89 de ; 0xf562f + mov bx, 00080h ; bb 80 00 ; 0xf5631 keyboard.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5634 + mov es, ax ; 8e c0 ; 0xf5637 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf5639 + mov word [bp-002h], ax ; 89 46 fe ; 0xf563c + mov bx, 00082h ; bb 82 00 ; 0xf563f keyboard.c:48 + mov dx, word [es:bx] ; 26 8b 17 ; 0xf5642 + mov bx, strict word 0001ah ; bb 1a 00 ; 0xf5645 keyboard.c:48 + mov bx, word [es:bx] ; 26 8b 1f ; 0xf5648 + mov di, strict word 0001ch ; bf 1c 00 ; 0xf564b keyboard.c:48 + mov ax, word [es:di] ; 26 8b 05 ; 0xf564e + cmp bx, ax ; 39 c3 ; 0xf5651 keyboard.c:630 + je short 0568bh ; 74 36 ; 0xf5653 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf5655 keyboard.c:38 + lea di, [bx+001h] ; 8d 7f 01 ; 0xf5658 keyboard.c:632 + mov ah, byte [es:di] ; 26 8a 25 ; 0xf565b keyboard.c:38 + mov es, cx ; 8e c1 ; 0xf565e keyboard.c:633 + mov byte [es:si], al ; 26 88 04 ; 0xf5660 + mov es, [bp-006h] ; 8e 46 fa ; 0xf5663 keyboard.c:634 + mov si, word [bp-004h] ; 8b 76 fc ; 0xf5666 + mov byte [es:si], ah ; 26 88 24 ; 0xf5669 + cmp word [bp+008h], strict byte 00000h ; 83 7e 08 00 ; 0xf566c keyboard.c:637 + je short 05686h ; 74 14 ; 0xf5670 + inc bx ; 43 ; 0xf5672 keyboard.c:638 + inc bx ; 43 ; 0xf5673 + cmp bx, dx ; 39 d3 ; 0xf5674 keyboard.c:639 + jc short 0567bh ; 72 03 ; 0xf5676 + mov bx, word [bp-002h] ; 8b 5e fe ; 0xf5678 keyboard.c:640 + mov si, strict word 0001ah ; be 1a 00 ; 0xf567b keyboard.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf567e + mov es, ax ; 8e c0 ; 0xf5681 + mov word [es:si], bx ; 26 89 1c ; 0xf5683 + mov ax, strict word 00001h ; b8 01 00 ; 0xf5686 keyboard.c:643 + jmp short 0568dh ; eb 02 ; 0xf5689 + xor ax, ax ; 31 c0 ; 0xf568b keyboard.c:646 + leave ; c9 ; 0xf568d keyboard.c:648 + pop di ; 5f ; 0xf568e + pop si ; 5e ; 0xf568f + retn 00002h ; c2 02 00 ; 0xf5690 + ; disGetNextSymbol 0xf5693 LB 0x49b2 -> off=0x23 cb=00000000000002e7 uValue=00000000000f40b6 'int16_function' + db 0a2h, 092h, 012h, 011h, 010h, 00ah, 009h, 005h, 002h, 001h, 000h, 053h, 059h, 06bh, 057h, 0b2h + db 057h, 0ffh, 057h, 011h, 058h, 03bh, 058h, 044h, 058h, 0b5h, 058h, 0e6h, 058h, 014h, 059h, 048h + db 059h, 096h, 059h +int16_function: ; 0xf56b6 LB 0x2e7 + push bp ; 55 ; 0xf56b6 keyboard.c:665 + mov bp, sp ; 89 e5 ; 0xf56b7 + push si ; 56 ; 0xf56b9 + push di ; 57 ; 0xf56ba + sub sp, strict byte 00006h ; 83 ec 06 ; 0xf56bb + mov bx, strict word 00017h ; bb 17 00 ; 0xf56be keyboard.c:38 + mov ax, strict word 00040h ; b8 40 00 ; 0xf56c1 + mov es, ax ; 8e c0 ; 0xf56c4 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf56c6 + mov bl, al ; 88 c3 ; 0xf56c9 keyboard.c:39 + mov si, 00097h ; be 97 00 ; 0xf56cb keyboard.c:38 + mov ah, byte [es:si] ; 26 8a 24 ; 0xf56ce + mov bh, ah ; 88 e7 ; 0xf56d1 keyboard.c:39 + movzx dx, al ; 0f b6 d0 ; 0xf56d3 keyboard.c:674 + sar dx, 004h ; c1 fa 04 ; 0xf56d6 + and dl, 007h ; 80 e2 07 ; 0xf56d9 + mov al, ah ; 88 e0 ; 0xf56dc + and AL, strict byte 007h ; 24 07 ; 0xf56de + xor ah, ah ; 30 e4 ; 0xf56e0 + xor al, dl ; 30 d0 ; 0xf56e2 + test ax, ax ; 85 c0 ; 0xf56e4 + je short 05749h ; 74 61 ; 0xf56e6 + cli ; fa ; 0xf56e8 keyboard.c:675 + mov AL, strict byte 0edh ; b0 ed ; 0xf56e9 keyboard.c:676 + mov dx, strict word 00060h ; ba 60 00 ; 0xf56eb + out DX, AL ; ee ; 0xf56ee + mov dx, strict word 00064h ; ba 64 00 ; 0xf56ef keyboard.c:677 + in AL, DX ; ec ; 0xf56f2 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf56f3 + test AL, strict byte 001h ; a8 01 ; 0xf56f5 + jne short 05701h ; 75 08 ; 0xf56f7 + mov AL, strict byte 021h ; b0 21 ; 0xf56f9 + mov dx, 00080h ; ba 80 00 ; 0xf56fb + out DX, AL ; ee ; 0xf56fe + jmp short 056efh ; eb ee ; 0xf56ff + mov dx, strict word 00060h ; ba 60 00 ; 0xf5701 keyboard.c:678 + in AL, DX ; ec ; 0xf5704 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf5705 + cmp ax, 000fah ; 3d fa 00 ; 0xf5707 + jne short 05748h ; 75 3c ; 0xf570a + and bh, 0c8h ; 80 e7 c8 ; 0xf570c keyboard.c:679 + movzx dx, bl ; 0f b6 d3 ; 0xf570f keyboard.c:680 + sar dx, 004h ; c1 fa 04 ; 0xf5712 + and dx, strict byte 00007h ; 83 e2 07 ; 0xf5715 + movzx ax, bh ; 0f b6 c7 ; 0xf5718 + or ax, dx ; 09 d0 ; 0xf571b + mov bh, al ; 88 c7 ; 0xf571d + and AL, strict byte 007h ; 24 07 ; 0xf571f keyboard.c:681 + mov dx, strict word 00060h ; ba 60 00 ; 0xf5721 + out DX, AL ; ee ; 0xf5724 + mov dx, strict word 00064h ; ba 64 00 ; 0xf5725 keyboard.c:682 + in AL, DX ; ec ; 0xf5728 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf5729 + test AL, strict byte 001h ; a8 01 ; 0xf572b + jne short 05737h ; 75 08 ; 0xf572d + mov AL, strict byte 021h ; b0 21 ; 0xf572f keyboard.c:683 + mov dx, 00080h ; ba 80 00 ; 0xf5731 + out DX, AL ; ee ; 0xf5734 + jmp short 05725h ; eb ee ; 0xf5735 + mov dx, strict word 00060h ; ba 60 00 ; 0xf5737 keyboard.c:684 + in AL, DX ; ec ; 0xf573a + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf573b + mov si, 00097h ; be 97 00 ; 0xf573d keyboard.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5740 + mov es, ax ; 8e c0 ; 0xf5743 + mov byte [es:si], bh ; 26 88 3c ; 0xf5745 + sti ; fb ; 0xf5748 keyboard.c:687 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf5749 keyboard.c:690 + shr ax, 008h ; c1 e8 08 ; 0xf574c + cmp ax, 000a2h ; 3d a2 00 ; 0xf574f + jnbe near 05953h ; 0f 87 fd 01 ; 0xf5752 + push CS ; 0e ; 0xf5756 + pop ES ; 07 ; 0xf5757 + mov cx, strict word 0000ch ; b9 0c 00 ; 0xf5758 + mov di, 05693h ; bf 93 56 ; 0xf575b + repne scasb ; f2 ae ; 0xf575e + sal cx, 1 ; d1 e1 ; 0xf5760 + mov di, cx ; 89 cf ; 0xf5762 + mov ax, word [cs:di+0569eh] ; 2e 8b 85 9e 56 ; 0xf5764 + jmp ax ; ff e0 ; 0xf5769 + push strict byte 00001h ; 6a 01 ; 0xf576b keyboard.c:692 + mov cx, ss ; 8c d1 ; 0xf576d + lea bx, [bp-00ah] ; 8d 5e f6 ; 0xf576f + mov dx, ss ; 8c d2 ; 0xf5772 + lea ax, [bp-006h] ; 8d 46 fa ; 0xf5774 + call 05627h ; e8 ad fe ; 0xf5777 + test ax, ax ; 85 c0 ; 0xf577a + jne short 05789h ; 75 0b ; 0xf577c + push 00621h ; 68 21 06 ; 0xf577e keyboard.c:693 + push strict byte 00007h ; 6a 07 ; 0xf5781 + call 01a14h ; e8 8e c2 ; 0xf5783 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf5786 + cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf5789 keyboard.c:695 + je short 05795h ; 74 06 ; 0xf578d + cmp byte [bp-00ah], 0f0h ; 80 7e f6 f0 ; 0xf578f + je short 0579bh ; 74 06 ; 0xf5793 + cmp byte [bp-00ah], 0e0h ; 80 7e f6 e0 ; 0xf5795 keyboard.c:697 + jne short 0579fh ; 75 04 ; 0xf5799 + mov byte [bp-00ah], 000h ; c6 46 f6 00 ; 0xf579b keyboard.c:698 + movzx dx, byte [bp-006h] ; 0f b6 56 fa ; 0xf579f keyboard.c:699 + sal dx, 008h ; c1 e2 08 ; 0xf57a3 + movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf57a6 + or dx, ax ; 09 c2 ; 0xf57aa + mov word [bp+012h], dx ; 89 56 12 ; 0xf57ac + jmp near 05996h ; e9 e4 01 ; 0xf57af keyboard.c:700 + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf57b2 keyboard.c:704 + mov word [bp+01eh], ax ; 89 46 1e ; 0xf57b5 + push strict byte 00000h ; 6a 00 ; 0xf57b8 keyboard.c:705 + mov cx, ss ; 8c d1 ; 0xf57ba + lea bx, [bp-00ah] ; 8d 5e f6 ; 0xf57bc + mov dx, ss ; 8c d2 ; 0xf57bf + lea ax, [bp-006h] ; 8d 46 fa ; 0xf57c1 + call 05627h ; e8 60 fe ; 0xf57c4 + test ax, ax ; 85 c0 ; 0xf57c7 + jne short 057d2h ; 75 07 ; 0xf57c9 + or word [bp+01eh], strict byte 00040h ; 83 4e 1e 40 ; 0xf57cb keyboard.c:706 + jmp near 05996h ; e9 c4 01 ; 0xf57cf keyboard.c:707 + cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf57d2 keyboard.c:709 + je short 057deh ; 74 06 ; 0xf57d6 + cmp byte [bp-00ah], 0f0h ; 80 7e f6 f0 ; 0xf57d8 + je short 057e4h ; 74 06 ; 0xf57dc + cmp byte [bp-00ah], 0e0h ; 80 7e f6 e0 ; 0xf57de keyboard.c:711 + jne short 057e8h ; 75 04 ; 0xf57e2 + mov byte [bp-00ah], 000h ; c6 46 f6 00 ; 0xf57e4 keyboard.c:712 + movzx dx, byte [bp-006h] ; 0f b6 56 fa ; 0xf57e8 keyboard.c:713 + sal dx, 008h ; c1 e2 08 ; 0xf57ec + movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf57ef + or dx, ax ; 09 c2 ; 0xf57f3 + mov word [bp+012h], dx ; 89 56 12 ; 0xf57f5 + and word [bp+01eh], strict byte 0ffbfh ; 83 66 1e bf ; 0xf57f8 keyboard.c:714 + jmp near 05996h ; e9 97 01 ; 0xf57fc keyboard.c:715 + mov bx, strict word 00017h ; bb 17 00 ; 0xf57ff keyboard.c:38 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5802 + mov es, ax ; 8e c0 ; 0xf5805 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf5807 + mov dx, word [bp+012h] ; 8b 56 12 ; 0xf580a keyboard.c:719 + mov dl, al ; 88 c2 ; 0xf580d + jmp short 057ach ; eb 9b ; 0xf580f + mov al, byte [bp+010h] ; 8a 46 10 ; 0xf5811 keyboard.c:723 + movzx dx, al ; 0f b6 d0 ; 0xf5814 + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf5817 + shr ax, 008h ; c1 e8 08 ; 0xf581a + xor ah, ah ; 30 e4 ; 0xf581d + call 051d2h ; e8 b0 f9 ; 0xf581f + test ax, ax ; 85 c0 ; 0xf5822 + jne short 05833h ; 75 0d ; 0xf5824 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf5826 keyboard.c:724 + xor al, al ; 30 c0 ; 0xf5829 + or AL, strict byte 001h ; 0c 01 ; 0xf582b + mov word [bp+012h], ax ; 89 46 12 ; 0xf582d + jmp near 05996h ; e9 63 01 ; 0xf5830 keyboard.c:726 + and word [bp+012h], 0ff00h ; 81 66 12 00 ff ; 0xf5833 keyboard.c:727 + jmp near 05996h ; e9 5b 01 ; 0xf5838 keyboard.c:729 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf583b keyboard.c:742 + xor al, al ; 30 c0 ; 0xf583e + or AL, strict byte 030h ; 0c 30 ; 0xf5840 + jmp short 0582dh ; eb e9 ; 0xf5842 + mov byte [bp-008h], 002h ; c6 46 f8 02 ; 0xf5844 keyboard.c:746 + xor cx, cx ; 31 c9 ; 0xf5848 keyboard.c:747 + cli ; fa ; 0xf584a keyboard.c:749 + mov AL, strict byte 0f2h ; b0 f2 ; 0xf584b keyboard.c:750 + mov dx, strict word 00060h ; ba 60 00 ; 0xf584d + out DX, AL ; ee ; 0xf5850 + mov bx, strict word 0ffffh ; bb ff ff ; 0xf5851 keyboard.c:752 + mov dx, strict word 00064h ; ba 64 00 ; 0xf5854 keyboard.c:753 + in AL, DX ; ec ; 0xf5857 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf5858 + test AL, strict byte 001h ; a8 01 ; 0xf585a + jne short 0586bh ; 75 0d ; 0xf585c + dec bx ; 4b ; 0xf585e + test bx, bx ; 85 db ; 0xf585f + jbe short 0586bh ; 76 08 ; 0xf5861 + mov dx, 00080h ; ba 80 00 ; 0xf5863 keyboard.c:754 + in AL, DX ; ec ; 0xf5866 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf5867 + jmp short 05854h ; eb e9 ; 0xf5869 + test bx, bx ; 85 db ; 0xf586b keyboard.c:755 + jbe short 058afh ; 76 40 ; 0xf586d + mov dx, strict word 00060h ; ba 60 00 ; 0xf586f keyboard.c:756 + in AL, DX ; ec ; 0xf5872 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf5873 + cmp ax, 000fah ; 3d fa 00 ; 0xf5875 + jne short 058afh ; 75 35 ; 0xf5878 + mov bx, strict word 0ffffh ; bb ff ff ; 0xf587a keyboard.c:758 + mov dx, strict word 00064h ; ba 64 00 ; 0xf587d keyboard.c:759 + in AL, DX ; ec ; 0xf5880 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf5881 + test AL, strict byte 001h ; a8 01 ; 0xf5883 + jne short 05894h ; 75 0d ; 0xf5885 + dec bx ; 4b ; 0xf5887 + test bx, bx ; 85 db ; 0xf5888 + jbe short 05894h ; 76 08 ; 0xf588a + mov dx, 00080h ; ba 80 00 ; 0xf588c keyboard.c:760 + in AL, DX ; ec ; 0xf588f + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf5890 + jmp short 0587dh ; eb e9 ; 0xf5892 + test bx, bx ; 85 db ; 0xf5894 keyboard.c:761 + jbe short 058a6h ; 76 0e ; 0xf5896 + shr cx, 008h ; c1 e9 08 ; 0xf5898 keyboard.c:762 + mov dx, strict word 00060h ; ba 60 00 ; 0xf589b keyboard.c:763 + in AL, DX ; ec ; 0xf589e + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf589f + sal ax, 008h ; c1 e0 08 ; 0xf58a1 + or cx, ax ; 09 c1 ; 0xf58a4 + dec byte [bp-008h] ; fe 4e f8 ; 0xf58a6 keyboard.c:765 + cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf58a9 + jnbe short 0587ah ; 77 cb ; 0xf58ad + mov word [bp+00ch], cx ; 89 4e 0c ; 0xf58af keyboard.c:768 + jmp near 05996h ; e9 e1 00 ; 0xf58b2 keyboard.c:769 + push strict byte 00001h ; 6a 01 ; 0xf58b5 keyboard.c:772 + mov cx, ss ; 8c d1 ; 0xf58b7 + lea bx, [bp-00ah] ; 8d 5e f6 ; 0xf58b9 + mov dx, ss ; 8c d2 ; 0xf58bc + lea ax, [bp-006h] ; 8d 46 fa ; 0xf58be + call 05627h ; e8 63 fd ; 0xf58c1 + test ax, ax ; 85 c0 ; 0xf58c4 + jne short 058d3h ; 75 0b ; 0xf58c6 + push 00621h ; 68 21 06 ; 0xf58c8 keyboard.c:773 + push strict byte 00007h ; 6a 07 ; 0xf58cb + call 01a14h ; e8 44 c1 ; 0xf58cd + add sp, strict byte 00004h ; 83 c4 04 ; 0xf58d0 + cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf58d3 keyboard.c:775 + je near 0579fh ; 0f 84 c4 fe ; 0xf58d7 + cmp byte [bp-00ah], 0f0h ; 80 7e f6 f0 ; 0xf58db + je near 0579bh ; 0f 84 b8 fe ; 0xf58df + jmp near 0579fh ; e9 b9 fe ; 0xf58e3 + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf58e6 keyboard.c:782 + mov word [bp+01eh], ax ; 89 46 1e ; 0xf58e9 + push strict byte 00000h ; 6a 00 ; 0xf58ec keyboard.c:783 + mov cx, ss ; 8c d1 ; 0xf58ee + lea bx, [bp-00ah] ; 8d 5e f6 ; 0xf58f0 + mov dx, ss ; 8c d2 ; 0xf58f3 + lea ax, [bp-006h] ; 8d 46 fa ; 0xf58f5 + call 05627h ; e8 2c fd ; 0xf58f8 + test ax, ax ; 85 c0 ; 0xf58fb + je near 057cbh ; 0f 84 ca fe ; 0xf58fd + cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf5901 keyboard.c:787 + je near 057e8h ; 0f 84 df fe ; 0xf5905 + cmp byte [bp-00ah], 0f0h ; 80 7e f6 f0 ; 0xf5909 + je near 057e4h ; 0f 84 d3 fe ; 0xf590d + jmp near 057e8h ; e9 d4 fe ; 0xf5911 + mov bx, strict word 00017h ; bb 17 00 ; 0xf5914 keyboard.c:38 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5917 + mov es, ax ; 8e c0 ; 0xf591a + mov al, byte [es:bx] ; 26 8a 07 ; 0xf591c + mov dx, word [bp+012h] ; 8b 56 12 ; 0xf591f keyboard.c:795 + mov dl, al ; 88 c2 ; 0xf5922 + mov word [bp+012h], dx ; 89 56 12 ; 0xf5924 + mov bx, strict word 00018h ; bb 18 00 ; 0xf5927 keyboard.c:38 + mov bl, byte [es:bx] ; 26 8a 1f ; 0xf592a + and bl, 073h ; 80 e3 73 ; 0xf592d keyboard.c:39 + mov si, 00096h ; be 96 00 ; 0xf5930 keyboard.c:38 + mov al, byte [es:si] ; 26 8a 04 ; 0xf5933 + and AL, strict byte 00ch ; 24 0c ; 0xf5936 keyboard.c:39 + or bl, al ; 08 c3 ; 0xf5938 + mov dx, word [bp+012h] ; 8b 56 12 ; 0xf593a keyboard.c:798 + xor dh, dh ; 30 f6 ; 0xf593d + movzx ax, bl ; 0f b6 c3 ; 0xf593f + sal ax, 008h ; c1 e0 08 ; 0xf5942 + jmp near 057aah ; e9 62 fe ; 0xf5945 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf5948 keyboard.c:803 + xor ah, ah ; 30 e4 ; 0xf594b + or ah, 080h ; 80 cc 80 ; 0xf594d + jmp near 0582dh ; e9 da fe ; 0xf5950 + mov bx, 00db2h ; bb b2 0d ; 0xf5953 keyboard.c:818 + mov cx, ds ; 8c d9 ; 0xf5956 + mov ax, strict word 00004h ; b8 04 00 ; 0xf5958 + call 019d3h ; e8 75 c0 ; 0xf595b + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf595e + shr ax, 008h ; c1 e8 08 ; 0xf5961 + push ax ; 50 ; 0xf5964 + push 00645h ; 68 45 06 ; 0xf5965 + push strict byte 00004h ; 6a 04 ; 0xf5968 + call 01a14h ; e8 a7 c0 ; 0xf596a + add sp, strict byte 00006h ; 83 c4 06 ; 0xf596d + mov bx, 00db2h ; bb b2 0d ; 0xf5970 keyboard.c:819 + mov cx, ds ; 8c d9 ; 0xf5973 + mov ax, strict word 00004h ; b8 04 00 ; 0xf5975 + call 019d3h ; e8 58 c0 ; 0xf5978 + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf597b + push ax ; 50 ; 0xf597e + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf597f + push ax ; 50 ; 0xf5982 + mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf5983 + push ax ; 50 ; 0xf5986 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf5987 + push ax ; 50 ; 0xf598a + push 0066dh ; 68 6d 06 ; 0xf598b + push strict byte 00004h ; 6a 04 ; 0xf598e + call 01a14h ; e8 81 c0 ; 0xf5990 + add sp, strict byte 0000ch ; 83 c4 0c ; 0xf5993 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf5996 keyboard.c:822 + pop di ; 5f ; 0xf5999 + pop si ; 5e ; 0xf599a + pop bp ; 5d ; 0xf599b + retn ; c3 ; 0xf599c + ; disGetNextSymbol 0xf599d LB 0x46a8 -> off=0x0 cb=00000000000000b3 uValue=00000000000f439d 'set_geom_lba' +set_geom_lba: ; 0xf599d LB 0xb3 + push bx ; 53 ; 0xf599d disk.c:115 + push cx ; 51 ; 0xf599e + push si ; 56 ; 0xf599f + push di ; 57 ; 0xf59a0 + enter 00008h, 000h ; c8 08 00 00 ; 0xf59a1 + mov di, ax ; 89 c7 ; 0xf59a5 + mov es, dx ; 8e c2 ; 0xf59a7 + mov dword [bp-008h], strict dword 0007e0000h ; 66 c7 46 f8 00 00 7e 00 ; 0xf59a9 disk.c:117 + mov word [bp-002h], 000ffh ; c7 46 fe ff 00 ; 0xf59b1 disk.c:119 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf59b6 disk.c:122 + mov bx, word [bp+010h] ; 8b 5e 10 ; 0xf59b9 + mov cx, word [bp+00eh] ; 8b 4e 0e ; 0xf59bc + mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf59bf + mov si, strict word 00020h ; be 20 00 ; 0xf59c2 + call 09f90h ; e8 c8 45 ; 0xf59c5 + test ax, ax ; 85 c0 ; 0xf59c8 + jne short 059d8h ; 75 0c ; 0xf59ca + test bx, bx ; 85 db ; 0xf59cc + jne short 059d8h ; 75 08 ; 0xf59ce + test cx, cx ; 85 c9 ; 0xf59d0 + jne short 059d8h ; 75 04 ; 0xf59d2 + test dx, dx ; 85 d2 ; 0xf59d4 + je short 059dfh ; 74 07 ; 0xf59d6 + mov bx, strict word 0ffffh ; bb ff ff ; 0xf59d8 + mov si, bx ; 89 de ; 0xf59db + jmp short 059e5h ; eb 06 ; 0xf59dd + mov bx, word [bp+00ch] ; 8b 5e 0c ; 0xf59df + mov si, word [bp+00eh] ; 8b 76 0e ; 0xf59e2 + mov word [bp-004h], bx ; 89 5e fc ; 0xf59e5 + xor bx, bx ; 31 db ; 0xf59e8 disk.c:124 + jmp short 059f1h ; eb 05 ; 0xf59ea + cmp bx, strict byte 00004h ; 83 fb 04 ; 0xf59ec + jnl short 05a14h ; 7d 23 ; 0xf59ef + mov ax, word [bp-006h] ; 8b 46 fa ; 0xf59f1 disk.c:125 + cmp si, ax ; 39 c6 ; 0xf59f4 + jc short 05a02h ; 72 0a ; 0xf59f6 + jne short 05a0bh ; 75 11 ; 0xf59f8 + mov ax, word [bp-004h] ; 8b 46 fc ; 0xf59fa + cmp ax, word [bp-008h] ; 3b 46 f8 ; 0xf59fd + jnbe short 05a0bh ; 77 09 ; 0xf5a00 + mov ax, word [bp-002h] ; 8b 46 fe ; 0xf5a02 disk.c:126 + inc ax ; 40 ; 0xf5a05 + shr ax, 1 ; d1 e8 ; 0xf5a06 + mov word [bp-002h], ax ; 89 46 fe ; 0xf5a08 + shr word [bp-006h], 1 ; d1 6e fa ; 0xf5a0b disk.c:127 + rcr word [bp-008h], 1 ; d1 5e f8 ; 0xf5a0e + inc bx ; 43 ; 0xf5a11 disk.c:128 + jmp short 059ech ; eb d8 ; 0xf5a12 + mov ax, word [bp-002h] ; 8b 46 fe ; 0xf5a14 disk.c:130 + xor dx, dx ; 31 d2 ; 0xf5a17 + mov bx, strict word 0003fh ; bb 3f 00 ; 0xf5a19 + xor cx, cx ; 31 c9 ; 0xf5a1c + call 09f10h ; e8 ef 44 ; 0xf5a1e + mov bx, ax ; 89 c3 ; 0xf5a21 + mov cx, dx ; 89 d1 ; 0xf5a23 + mov ax, word [bp-004h] ; 8b 46 fc ; 0xf5a25 + mov dx, si ; 89 f2 ; 0xf5a28 + call 09f50h ; e8 23 45 ; 0xf5a2a + mov word [es:di+002h], ax ; 26 89 45 02 ; 0xf5a2d + cmp ax, 00400h ; 3d 00 04 ; 0xf5a31 disk.c:131 + jbe short 05a3ch ; 76 06 ; 0xf5a34 + mov word [es:di+002h], 00400h ; 26 c7 45 02 00 04 ; 0xf5a36 disk.c:132 + mov ax, word [bp-002h] ; 8b 46 fe ; 0xf5a3c disk.c:133 + mov word [es:di], ax ; 26 89 05 ; 0xf5a3f + mov word [es:di+004h], strict word 0003fh ; 26 c7 45 04 3f 00 ; 0xf5a42 disk.c:134 + leave ; c9 ; 0xf5a48 disk.c:135 + pop di ; 5f ; 0xf5a49 + pop si ; 5e ; 0xf5a4a + pop cx ; 59 ; 0xf5a4b + pop bx ; 5b ; 0xf5a4c + retn 00008h ; c2 08 00 ; 0xf5a4d + ; disGetNextSymbol 0xf5a50 LB 0x45f5 -> off=0x0 cb=00000000000002ed uValue=00000000000f4450 'edd_fill_dpt' +edd_fill_dpt: ; 0xf5a50 LB 0x2ed + push si ; 56 ; 0xf5a50 disk.c:137 + push di ; 57 ; 0xf5a51 + enter 0000eh, 000h ; c8 0e 00 00 ; 0xf5a52 + mov di, ax ; 89 c7 ; 0xf5a56 + mov word [bp-004h], dx ; 89 56 fc ; 0xf5a58 + mov word [bp-00eh], bx ; 89 5e f2 ; 0xf5a5b + mov word [bp-006h], cx ; 89 4e fa ; 0xf5a5e + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf5a61 disk.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5a64 + mov es, ax ; 8e c0 ; 0xf5a67 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf5a69 + mov word [bp-008h], ax ; 89 46 f8 ; 0xf5a6c disk.c:49 + mov es, dx ; 8e c2 ; 0xf5a6f disk.c:142 + mov ax, word [es:di] ; 26 8b 05 ; 0xf5a71 + cmp ax, strict word 0001ah ; 3d 1a 00 ; 0xf5a74 + jnc short 05a7fh ; 73 06 ; 0xf5a77 + mov ax, strict word 0ffffh ; b8 ff ff ; 0xf5a79 disk.c:143 + jmp near 05d37h ; e9 b8 02 ; 0xf5a7c + jc near 05b51h ; 0f 82 ce 00 ; 0xf5a7f disk.c:146 + mov word [es:di], strict word 0001ah ; 26 c7 05 1a 00 ; 0xf5a83 disk.c:149 + movzx bx, byte [bp+008h] ; 0f b6 5e 08 ; 0xf5a88 disk.c:150 + imul bx, bx, strict byte 0001ch ; 6b db 1c ; 0xf5a8c + mov dx, cx ; 89 ca ; 0xf5a8f + add bx, word [bp-00eh] ; 03 5e f2 ; 0xf5a91 + mov es, cx ; 8e c1 ; 0xf5a94 + mov ax, word [es:bx+028h] ; 26 8b 47 28 ; 0xf5a96 + mov es, [bp-004h] ; 8e 46 fc ; 0xf5a9a + mov word [es:di+018h], ax ; 26 89 45 18 ; 0xf5a9d + mov es, cx ; 8e c1 ; 0xf5aa1 disk.c:152 + cmp byte [es:bx+023h], 005h ; 26 80 7f 23 05 ; 0xf5aa3 + jne short 05ae2h ; 75 38 ; 0xf5aa8 + mov es, [bp-004h] ; 8e 46 fc ; 0xf5aaa disk.c:153 + db 066h, 026h, 0c7h, 045h, 002h, 074h, 000h, 0ffh, 0ffh + ; mov dword [es:di+002h], strict dword 0ffff0074h ; 66 26 c7 45 02 74 00 ff ff; 0xf5aad + db 066h, 026h, 0c7h, 045h, 006h, 0ffh, 0ffh, 0ffh, 0ffh + ; mov dword [es:di+006h], strict dword 0ffffffffh ; 66 26 c7 45 06 ff ff ff ff; 0xf5ab6 disk.c:154 + db 066h, 026h, 0c7h, 045h, 00ah, 0ffh, 0ffh, 0ffh, 0ffh + ; mov dword [es:di+00ah], strict dword 0ffffffffh ; 66 26 c7 45 0a ff ff ff ff; 0xf5abf disk.c:155 + db 066h, 026h, 0c7h, 045h, 00eh, 0ffh, 0ffh, 0ffh, 0ffh + ; mov dword [es:di+00eh], strict dword 0ffffffffh ; 66 26 c7 45 0e ff ff ff ff; 0xf5ac8 disk.c:156 + db 066h, 026h, 0c7h, 045h, 012h, 0ffh, 0ffh, 0ffh, 0ffh + ; mov dword [es:di+012h], strict dword 0ffffffffh ; 66 26 c7 45 12 ff ff ff ff; 0xf5ad1 disk.c:157 + mov word [es:di+016h], strict word 0ffffh ; 26 c7 45 16 ff ff ; 0xf5ada disk.c:158 + jmp short 05b51h ; eb 6f ; 0xf5ae0 disk.c:159 + mov es, [bp-004h] ; 8e 46 fc ; 0xf5ae2 disk.c:160 + mov word [es:di+002h], strict word 00002h ; 26 c7 45 02 02 00 ; 0xf5ae5 + mov es, cx ; 8e c1 ; 0xf5aeb disk.c:161 + mov ax, word [es:bx+032h] ; 26 8b 47 32 ; 0xf5aed + mov es, [bp-004h] ; 8e 46 fc ; 0xf5af1 + mov word [es:di+004h], ax ; 26 89 45 04 ; 0xf5af4 + mov word [es:di+006h], strict word 00000h ; 26 c7 45 06 00 00 ; 0xf5af8 + mov es, cx ; 8e c1 ; 0xf5afe disk.c:162 + mov ax, word [es:bx+030h] ; 26 8b 47 30 ; 0xf5b00 + mov es, [bp-004h] ; 8e 46 fc ; 0xf5b04 + mov word [es:di+008h], ax ; 26 89 45 08 ; 0xf5b07 + mov word [es:di+00ah], strict word 00000h ; 26 c7 45 0a 00 00 ; 0xf5b0b + mov es, cx ; 8e c1 ; 0xf5b11 disk.c:163 + mov ax, word [es:bx+034h] ; 26 8b 47 34 ; 0xf5b13 + mov es, [bp-004h] ; 8e 46 fc ; 0xf5b17 + mov word [es:di+00ch], ax ; 26 89 45 0c ; 0xf5b1a + mov word [es:di+00eh], strict word 00000h ; 26 c7 45 0e 00 00 ; 0xf5b1e + mov es, cx ; 8e c1 ; 0xf5b24 disk.c:164 + mov ax, word [es:bx+03ch] ; 26 8b 47 3c ; 0xf5b26 + mov si, word [es:bx+03ah] ; 26 8b 77 3a ; 0xf5b2a + mov cx, word [es:bx+038h] ; 26 8b 4f 38 ; 0xf5b2e + mov dx, word [es:bx+036h] ; 26 8b 57 36 ; 0xf5b32 + mov es, [bp-004h] ; 8e 46 fc ; 0xf5b36 disk.c:165 + mov word [es:di+010h], dx ; 26 89 55 10 ; 0xf5b39 + mov word [es:di+012h], cx ; 26 89 4d 12 ; 0xf5b3d + mov bx, si ; 89 f3 ; 0xf5b41 disk.c:166 + mov si, strict word 00020h ; be 20 00 ; 0xf5b43 + call 09f90h ; e8 47 44 ; 0xf5b46 + mov word [es:di+014h], dx ; 26 89 55 14 ; 0xf5b49 + mov word [es:di+016h], cx ; 26 89 4d 16 ; 0xf5b4d + mov es, [bp-004h] ; 8e 46 fc ; 0xf5b51 disk.c:171 + cmp word [es:di], strict byte 0001eh ; 26 83 3d 1e ; 0xf5b54 + jc near 05c7ah ; 0f 82 1e 01 ; 0xf5b58 + mov word [es:di], strict word 0001eh ; 26 c7 05 1e 00 ; 0xf5b5c disk.c:175 + mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf5b61 disk.c:176 + mov word [es:di+01ch], ax ; 26 89 45 1c ; 0xf5b64 + mov word [es:di+01ah], 00356h ; 26 c7 45 1a 56 03 ; 0xf5b68 disk.c:177 + movzx cx, byte [bp+008h] ; 0f b6 4e 08 ; 0xf5b6e disk.c:180 + mov ax, cx ; 89 c8 ; 0xf5b72 + cwd ; 99 ; 0xf5b74 + db 02bh, 0c2h + ; sub ax, dx ; 2b c2 ; 0xf5b75 + sar ax, 1 ; d1 f8 ; 0xf5b77 + xor ah, ah ; 30 e4 ; 0xf5b79 disk.c:181 + imul ax, ax, strict byte 00006h ; 6b c0 06 ; 0xf5b7b + mov es, [bp-006h] ; 8e 46 fa ; 0xf5b7e + mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf5b81 + add bx, ax ; 01 c3 ; 0xf5b84 + mov ax, word [es:bx+00206h] ; 26 8b 87 06 02 ; 0xf5b86 + mov word [bp-00ah], ax ; 89 46 f6 ; 0xf5b8b + mov ax, word [es:bx+00208h] ; 26 8b 87 08 02 ; 0xf5b8e disk.c:182 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf5b93 + mov al, byte [es:bx+00205h] ; 26 8a 87 05 02 ; 0xf5b96 disk.c:183 + mov byte [bp-002h], al ; 88 46 fe ; 0xf5b9b + imul bx, cx, strict byte 0001ch ; 6b d9 1c ; 0xf5b9e disk.c:184 + add bx, word [bp-00eh] ; 03 5e f2 ; 0xf5ba1 + mov ah, byte [es:bx+026h] ; 26 8a 67 26 ; 0xf5ba4 + mov al, byte [es:bx+027h] ; 26 8a 47 27 ; 0xf5ba8 disk.c:185 + test al, al ; 84 c0 ; 0xf5bac disk.c:187 + jne short 05bb4h ; 75 04 ; 0xf5bae + xor bx, bx ; 31 db ; 0xf5bb0 + jmp short 05bb7h ; eb 03 ; 0xf5bb2 + mov bx, strict word 00008h ; bb 08 00 ; 0xf5bb4 + or bl, 010h ; 80 cb 10 ; 0xf5bb7 disk.c:188 + movzx dx, byte [bp+008h] ; 0f b6 56 08 ; 0xf5bba disk.c:189 + imul dx, dx, strict byte 0001ch ; 6b d2 1c ; 0xf5bbe + mov es, [bp-006h] ; 8e 46 fa ; 0xf5bc1 + mov si, word [bp-00eh] ; 8b 76 f2 ; 0xf5bc4 + add si, dx ; 01 d6 ; 0xf5bc7 + cmp byte [es:si+023h], 005h ; 26 80 7c 23 05 ; 0xf5bc9 + jne short 05bd3h ; 75 03 ; 0xf5bce + or bl, 060h ; 80 cb 60 ; 0xf5bd0 disk.c:190 + cmp ah, 001h ; 80 fc 01 ; 0xf5bd3 disk.c:194 + db 00fh, 094h, 0c4h + ; sete ah ; 0f 94 c4 ; 0xf5bd6 + movzx dx, ah ; 0f b6 d4 ; 0xf5bd9 + or bx, dx ; 09 d3 ; 0xf5bdc + cmp AL, strict byte 001h ; 3c 01 ; 0xf5bde disk.c:196 + db 00fh, 094h, 0c4h + ; sete ah ; 0f 94 c4 ; 0xf5be0 + movzx dx, ah ; 0f b6 d4 ; 0xf5be3 + or bx, dx ; 09 d3 ; 0xf5be6 + cmp AL, strict byte 003h ; 3c 03 ; 0xf5be8 disk.c:197 + jne short 05bf1h ; 75 05 ; 0xf5bea + mov ax, strict word 00003h ; b8 03 00 ; 0xf5bec + jmp short 05bf3h ; eb 02 ; 0xf5bef + xor ax, ax ; 31 c0 ; 0xf5bf1 + or bx, ax ; 09 c3 ; 0xf5bf3 + mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf5bf5 disk.c:199 + mov es, [bp-006h] ; 8e 46 fa ; 0xf5bf8 + mov si, word [bp-00eh] ; 8b 76 f2 ; 0xf5bfb + mov word [es:si+00234h], ax ; 26 89 84 34 02 ; 0xf5bfe + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf5c03 disk.c:200 + mov word [es:si+00236h], ax ; 26 89 84 36 02 ; 0xf5c06 + movzx ax, byte [bp+008h] ; 0f b6 46 08 ; 0xf5c0b disk.c:201 + cwd ; 99 ; 0xf5c0f + mov cx, strict word 00002h ; b9 02 00 ; 0xf5c10 + idiv cx ; f7 f9 ; 0xf5c13 + or dl, 00eh ; 80 ca 0e ; 0xf5c15 + sal dx, 004h ; c1 e2 04 ; 0xf5c18 + mov byte [es:si+00238h], dl ; 26 88 94 38 02 ; 0xf5c1b + mov byte [es:si+00239h], 0cbh ; 26 c6 84 39 02 cb ; 0xf5c20 disk.c:202 + mov al, byte [bp-002h] ; 8a 46 fe ; 0xf5c26 disk.c:203 + mov byte [es:si+0023ah], al ; 26 88 84 3a 02 ; 0xf5c29 + mov word [es:si+0023bh], strict word 00001h ; 26 c7 84 3b 02 01 00 ; 0xf5c2e disk.c:204 + mov byte [es:si+0023dh], 000h ; 26 c6 84 3d 02 00 ; 0xf5c35 disk.c:206 + mov word [es:si+0023eh], bx ; 26 89 9c 3e 02 ; 0xf5c3b disk.c:207 + mov bx, si ; 89 f3 ; 0xf5c40 disk.c:208 + mov word [es:bx+00240h], strict word 00000h ; 26 c7 87 40 02 00 00 ; 0xf5c42 + mov byte [es:bx+00242h], 011h ; 26 c6 87 42 02 11 ; 0xf5c49 disk.c:209 + xor al, al ; 30 c0 ; 0xf5c4f disk.c:211 + xor ah, ah ; 30 e4 ; 0xf5c51 disk.c:212 + jmp short 05c5ah ; eb 05 ; 0xf5c53 + cmp ah, 00fh ; 80 fc 0f ; 0xf5c55 + jnc short 05c6dh ; 73 13 ; 0xf5c58 + movzx bx, ah ; 0f b6 dc ; 0xf5c5a disk.c:213 + add bx, 00356h ; 81 c3 56 03 ; 0xf5c5d + mov es, [bp-008h] ; 8e 46 f8 ; 0xf5c61 disk.c:38 + mov dl, byte [es:bx] ; 26 8a 17 ; 0xf5c64 + add al, dl ; 00 d0 ; 0xf5c67 disk.c:39 + db 0feh, 0c4h + ; inc ah ; fe c4 ; 0xf5c69 disk.c:213 + jmp short 05c55h ; eb e8 ; 0xf5c6b + neg al ; f6 d8 ; 0xf5c6d disk.c:214 + mov es, [bp-006h] ; 8e 46 fa ; 0xf5c6f disk.c:215 + mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf5c72 + mov byte [es:bx+00243h], al ; 26 88 87 43 02 ; 0xf5c75 + mov es, [bp-004h] ; 8e 46 fc ; 0xf5c7a disk.c:219 + cmp word [es:di], strict byte 00042h ; 26 83 3d 42 ; 0xf5c7d + jc near 05d35h ; 0f 82 b0 00 ; 0xf5c81 + movzx ax, byte [bp+008h] ; 0f b6 46 08 ; 0xf5c85 disk.c:223 + cwd ; 99 ; 0xf5c89 + db 02bh, 0c2h + ; sub ax, dx ; 2b c2 ; 0xf5c8a + sar ax, 1 ; d1 f8 ; 0xf5c8c + xor ah, ah ; 30 e4 ; 0xf5c8e disk.c:224 + imul ax, ax, strict byte 00006h ; 6b c0 06 ; 0xf5c90 + mov es, [bp-006h] ; 8e 46 fa ; 0xf5c93 + mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf5c96 + add bx, ax ; 01 c3 ; 0xf5c99 + mov al, byte [es:bx+00204h] ; 26 8a 87 04 02 ; 0xf5c9b + mov dx, word [es:bx+00206h] ; 26 8b 97 06 02 ; 0xf5ca0 disk.c:225 + mov es, [bp-004h] ; 8e 46 fc ; 0xf5ca5 disk.c:227 + mov word [es:di], strict word 00042h ; 26 c7 05 42 00 ; 0xf5ca8 + db 066h, 026h, 0c7h, 045h, 01eh, 0ddh, 0beh, 024h, 000h + ; mov dword [es:di+01eh], strict dword 00024beddh ; 66 26 c7 45 1e dd be 24 00; 0xf5cad disk.c:228 + mov word [es:di+022h], strict word 00000h ; 26 c7 45 22 00 00 ; 0xf5cb6 disk.c:231 + test al, al ; 84 c0 ; 0xf5cbc disk.c:233 + jne short 05cc9h ; 75 09 ; 0xf5cbe + db 066h, 026h, 0c7h, 045h, 024h, 049h, 053h, 041h, 020h + ; mov dword [es:di+024h], strict dword 020415349h ; 66 26 c7 45 24 49 53 41 20; 0xf5cc0 disk.c:234 + mov es, [bp-004h] ; 8e 46 fc ; 0xf5cc9 disk.c:242 + db 066h, 026h, 0c7h, 045h, 028h, 041h, 054h, 041h, 020h + ; mov dword [es:di+028h], strict dword 020415441h ; 66 26 c7 45 28 41 54 41 20; 0xf5ccc + db 066h, 026h, 0c7h, 045h, 02ch, 020h, 020h, 020h, 020h + ; mov dword [es:di+02ch], strict dword 020202020h ; 66 26 c7 45 2c 20 20 20 20; 0xf5cd5 disk.c:246 + test al, al ; 84 c0 ; 0xf5cde disk.c:251 + jne short 05cf5h ; 75 13 ; 0xf5ce0 + mov word [es:di+030h], dx ; 26 89 55 30 ; 0xf5ce2 disk.c:252 + db 066h, 026h, 0c7h, 045h, 032h, 000h, 000h, 000h, 000h + ; mov dword [es:di+032h], strict dword 000000000h ; 66 26 c7 45 32 00 00 00 00; 0xf5ce6 disk.c:253 + mov word [es:di+036h], strict word 00000h ; 26 c7 45 36 00 00 ; 0xf5cef disk.c:254 + mov al, byte [bp+008h] ; 8a 46 08 ; 0xf5cf5 disk.c:259 + and AL, strict byte 001h ; 24 01 ; 0xf5cf8 + xor ah, ah ; 30 e4 ; 0xf5cfa + mov es, [bp-004h] ; 8e 46 fc ; 0xf5cfc + mov word [es:di+038h], ax ; 26 89 45 38 ; 0xf5cff + db 066h, 026h, 0c7h, 045h, 03ah, 000h, 000h, 000h, 000h + ; mov dword [es:di+03ah], strict dword 000000000h ; 66 26 c7 45 3a 00 00 00 00; 0xf5d03 disk.c:260 + mov word [es:di+03eh], strict word 00000h ; 26 c7 45 3e 00 00 ; 0xf5d0c disk.c:261 + xor al, al ; 30 c0 ; 0xf5d12 disk.c:263 + mov AH, strict byte 01eh ; b4 1e ; 0xf5d14 disk.c:264 + jmp short 05d1dh ; eb 05 ; 0xf5d16 + cmp ah, 040h ; 80 fc 40 ; 0xf5d18 + jnc short 05d2ch ; 73 0f ; 0xf5d1b + movzx bx, ah ; 0f b6 dc ; 0xf5d1d disk.c:265 + mov es, [bp-004h] ; 8e 46 fc ; 0xf5d20 + add bx, di ; 01 fb ; 0xf5d23 + add al, byte [es:bx] ; 26 02 07 ; 0xf5d25 + db 0feh, 0c4h + ; inc ah ; fe c4 ; 0xf5d28 + jmp short 05d18h ; eb ec ; 0xf5d2a + neg al ; f6 d8 ; 0xf5d2c disk.c:266 + mov es, [bp-004h] ; 8e 46 fc ; 0xf5d2e disk.c:267 + mov byte [es:di+041h], al ; 26 88 45 41 ; 0xf5d31 + xor ax, ax ; 31 c0 ; 0xf5d35 disk.c:269 + leave ; c9 ; 0xf5d37 disk.c:270 + pop di ; 5f ; 0xf5d38 + pop si ; 5e ; 0xf5d39 + retn 00002h ; c2 02 00 ; 0xf5d3a + ; disGetNextSymbol 0xf5d3d LB 0x4308 -> off=0x32 cb=000000000000042a uValue=00000000000f476f 'int13_harddisk' + db 0fdh, 05dh, 024h, 05eh, 04dh, 05eh, 04dh, 05eh, 04dh, 05eh, 032h, 060h, 05bh, 061h, 05bh, 061h + db 04bh, 060h, 038h, 061h, 05bh, 061h, 05bh, 061h, 038h, 061h, 038h, 061h, 05bh, 061h, 05bh, 061h + db 0bfh, 060h, 038h, 061h, 05bh, 061h, 05bh, 061h, 038h, 061h, 0efh, 060h, 05bh, 061h, 05bh, 061h + db 05bh, 061h +int13_harddisk: ; 0xf5d6f LB 0x42a + push bp ; 55 ; 0xf5d6f disk.c:272 + mov bp, sp ; 89 e5 ; 0xf5d70 + sub sp, strict byte 00010h ; 83 ec 10 ; 0xf5d72 + or byte [bp+01dh], 002h ; 80 4e 1d 02 ; 0xf5d75 disk.c:283 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf5d79 disk.c:48 + mov dx, strict word 00040h ; ba 40 00 ; 0xf5d7c + mov es, dx ; 8e c2 ; 0xf5d7f + mov dx, word [es:bx] ; 26 8b 17 ; 0xf5d81 + mov si, 00122h ; be 22 01 ; 0xf5d84 disk.c:49 + mov word [bp-004h], dx ; 89 56 fc ; 0xf5d87 + mov bx, 0008eh ; bb 8e 00 ; 0xf5d8a disk.c:43 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf5d8d + mov dx, word [bp+00eh] ; 8b 56 0e ; 0xf5d91 disk.c:289 + xor dh, dh ; 30 f6 ; 0xf5d94 + cmp dx, 00080h ; 81 fa 80 00 ; 0xf5d96 + jc short 05da2h ; 72 06 ; 0xf5d9a + cmp dx, 00090h ; 81 fa 90 00 ; 0xf5d9c + jc short 05dc0h ; 72 1e ; 0xf5da0 + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf5da2 disk.c:290 + xor ah, ah ; 30 e4 ; 0xf5da5 + push ax ; 50 ; 0xf5da7 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5da8 + shr ax, 008h ; c1 e8 08 ; 0xf5dab + push ax ; 50 ; 0xf5dae + push 00690h ; 68 90 06 ; 0xf5daf + push 0069fh ; 68 9f 06 ; 0xf5db2 + push strict byte 00004h ; 6a 04 ; 0xf5db5 + call 01a14h ; e8 5a bc ; 0xf5db7 + add sp, strict byte 0000ah ; 83 c4 0a ; 0xf5dba + jmp near 06176h ; e9 b6 03 ; 0xf5dbd disk.c:291 + mov dx, word [bp+00eh] ; 8b 56 0e ; 0xf5dc0 disk.c:295 + xor dh, dh ; 30 f6 ; 0xf5dc3 + mov es, [bp-004h] ; 8e 46 fc ; 0xf5dc5 + mov bx, si ; 89 f3 ; 0xf5dc8 + add bx, dx ; 01 d3 ; 0xf5dca + mov bl, byte [es:bx+00163h] ; 26 8a 9f 63 01 ; 0xf5dcc + mov byte [bp-002h], bl ; 88 5e fe ; 0xf5dd1 + cmp bl, 010h ; 80 fb 10 ; 0xf5dd4 disk.c:298 + jc short 05de9h ; 72 10 ; 0xf5dd7 + push dx ; 52 ; 0xf5dd9 disk.c:299 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5dda + shr ax, 008h ; c1 e8 08 ; 0xf5ddd + push ax ; 50 ; 0xf5de0 + push 00690h ; 68 90 06 ; 0xf5de1 + push 006cah ; 68 ca 06 ; 0xf5de4 + jmp short 05db5h ; eb cc ; 0xf5de7 + mov bx, word [bp+016h] ; 8b 5e 16 ; 0xf5de9 disk.c:303 + shr bx, 008h ; c1 eb 08 ; 0xf5dec + cmp bx, strict byte 00018h ; 83 fb 18 ; 0xf5def + jnbe near 0615bh ; 0f 87 65 03 ; 0xf5df2 + add bx, bx ; 01 db ; 0xf5df6 + jmp word [cs:bx+05d3dh] ; 2e ff a7 3d 5d ; 0xf5df8 + cmp byte [bp-002h], 008h ; 80 7e fe 08 ; 0xf5dfd disk.c:308 + jnc near 05e0ch ; 0f 83 07 00 ; 0xf5e01 + movzx ax, byte [bp-002h] ; 0f b6 46 fe ; 0xf5e05 disk.c:310 + call 01e1dh ; e8 11 c0 ; 0xf5e09 + mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf5e0c disk.c:311 + mov bx, strict word 00074h ; bb 74 00 ; 0xf5e10 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5e13 + mov es, ax ; 8e c0 ; 0xf5e16 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf5e18 + and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf5e1c + mov sp, bp ; 89 ec ; 0xf5e20 + pop bp ; 5d ; 0xf5e22 + retn ; c3 ; 0xf5e23 + mov bx, strict word 00074h ; bb 74 00 ; 0xf5e24 disk.c:38 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5e27 + mov es, ax ; 8e c0 ; 0xf5e2a + mov al, byte [es:bx] ; 26 8a 07 ; 0xf5e2c + mov bx, word [bp+016h] ; 8b 5e 16 ; 0xf5e2f disk.c:316 + xor bh, bh ; 30 ff ; 0xf5e32 + movzx dx, al ; 0f b6 d0 ; 0xf5e34 + sal dx, 008h ; c1 e2 08 ; 0xf5e37 + or bx, dx ; 09 d3 ; 0xf5e3a + mov word [bp+016h], bx ; 89 5e 16 ; 0xf5e3c + mov bx, strict word 00074h ; bb 74 00 ; 0xf5e3f disk.c:43 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf5e42 + test al, al ; 84 c0 ; 0xf5e46 disk.c:319 + je short 05e10h ; 74 c6 ; 0xf5e48 + jmp near 06192h ; e9 45 03 ; 0xf5e4a + mov dx, word [bp+016h] ; 8b 56 16 ; 0xf5e4d disk.c:327 + xor dh, dh ; 30 f6 ; 0xf5e50 + mov word [bp-00ch], dx ; 89 56 f4 ; 0xf5e52 + mov di, word [bp+014h] ; 8b 7e 14 ; 0xf5e55 disk.c:328 + shr di, 008h ; c1 ef 08 ; 0xf5e58 + mov dx, word [bp+014h] ; 8b 56 14 ; 0xf5e5b disk.c:329 + xor dh, dh ; 30 f6 ; 0xf5e5e + sal dx, 002h ; c1 e2 02 ; 0xf5e60 + xor dl, dl ; 30 d2 ; 0xf5e63 + and dh, 003h ; 80 e6 03 ; 0xf5e65 + or di, dx ; 09 d7 ; 0xf5e68 + mov dx, word [bp+014h] ; 8b 56 14 ; 0xf5e6a disk.c:330 + and dx, strict byte 0003fh ; 83 e2 3f ; 0xf5e6d + mov word [bp-006h], dx ; 89 56 fa ; 0xf5e70 + mov dx, word [bp+012h] ; 8b 56 12 ; 0xf5e73 disk.c:331 + shr dx, 008h ; c1 ea 08 ; 0xf5e76 + mov word [bp-008h], dx ; 89 56 f8 ; 0xf5e79 + cmp word [bp-00ch], 00080h ; 81 7e f4 80 00 ; 0xf5e7c disk.c:334 + jnbe short 05e89h ; 77 06 ; 0xf5e81 + cmp word [bp-00ch], strict byte 00000h ; 83 7e f4 00 ; 0xf5e83 + jne short 05each ; 75 23 ; 0xf5e87 + mov bx, 00db2h ; bb b2 0d ; 0xf5e89 disk.c:335 + mov cx, ds ; 8c d9 ; 0xf5e8c + mov ax, strict word 00004h ; b8 04 00 ; 0xf5e8e + call 019d3h ; e8 3f bb ; 0xf5e91 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5e94 + shr ax, 008h ; c1 e8 08 ; 0xf5e97 + push ax ; 50 ; 0xf5e9a + push 00690h ; 68 90 06 ; 0xf5e9b + push 006fch ; 68 fc 06 ; 0xf5e9e + push strict byte 00004h ; 6a 04 ; 0xf5ea1 + call 01a14h ; e8 6e bb ; 0xf5ea3 + add sp, strict byte 00008h ; 83 c4 08 ; 0xf5ea6 + jmp near 06176h ; e9 ca 02 ; 0xf5ea9 disk.c:336 + movzx dx, byte [bp-002h] ; 0f b6 56 fe ; 0xf5eac disk.c:340 + imul dx, dx, strict byte 0001ch ; 6b d2 1c ; 0xf5eb0 + mov es, [bp-004h] ; 8e 46 fc ; 0xf5eb3 + mov bx, si ; 89 f3 ; 0xf5eb6 + add bx, dx ; 01 d3 ; 0xf5eb8 + mov dx, word [es:bx+02ch] ; 26 8b 57 2c ; 0xf5eba + mov word [bp-010h], dx ; 89 56 f0 ; 0xf5ebe + mov cx, word [es:bx+02ah] ; 26 8b 4f 2a ; 0xf5ec1 disk.c:341 + mov dx, word [es:bx+02eh] ; 26 8b 57 2e ; 0xf5ec5 disk.c:342 + mov word [bp-00ah], dx ; 89 56 f6 ; 0xf5ec9 + cmp di, word [bp-010h] ; 3b 7e f0 ; 0xf5ecc disk.c:345 + jnc short 05edeh ; 73 0d ; 0xf5ecf + cmp cx, word [bp-008h] ; 3b 4e f8 ; 0xf5ed1 + jbe short 05edeh ; 76 08 ; 0xf5ed4 + mov dx, word [bp-006h] ; 8b 56 fa ; 0xf5ed6 + cmp dx, word [bp-00ah] ; 3b 56 f6 ; 0xf5ed9 + jbe short 05f0ch ; 76 2e ; 0xf5edc + mov bx, 00db2h ; bb b2 0d ; 0xf5ede disk.c:346 + mov cx, ds ; 8c d9 ; 0xf5ee1 + mov ax, strict word 00004h ; b8 04 00 ; 0xf5ee3 + call 019d3h ; e8 ea ba ; 0xf5ee6 + push dword [bp-008h] ; 66 ff 76 f8 ; 0xf5ee9 + push di ; 57 ; 0xf5eed + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf5eee + xor ah, ah ; 30 e4 ; 0xf5ef1 + push ax ; 50 ; 0xf5ef3 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5ef4 + shr ax, 008h ; c1 e8 08 ; 0xf5ef7 + push ax ; 50 ; 0xf5efa + push 00690h ; 68 90 06 ; 0xf5efb + push 00724h ; 68 24 07 ; 0xf5efe + push strict byte 00004h ; 6a 04 ; 0xf5f01 + call 01a14h ; e8 0e bb ; 0xf5f03 + add sp, strict byte 00010h ; 83 c4 10 ; 0xf5f06 + jmp near 06176h ; e9 6a 02 ; 0xf5f09 disk.c:347 + mov dx, word [bp+016h] ; 8b 56 16 ; 0xf5f0c disk.c:351 + shr dx, 008h ; c1 ea 08 ; 0xf5f0f + cmp dx, strict byte 00004h ; 83 fa 04 ; 0xf5f12 + jne short 05f1ah ; 75 03 ; 0xf5f15 + jmp near 05e0ch ; e9 f2 fe ; 0xf5f17 disk.c:352 + movzx dx, byte [bp-002h] ; 0f b6 56 fe ; 0xf5f1a disk.c:356 + imul dx, dx, strict byte 0001ch ; 6b d2 1c ; 0xf5f1e + mov es, [bp-004h] ; 8e 46 fc ; 0xf5f21 + mov bx, si ; 89 f3 ; 0xf5f24 + add bx, dx ; 01 d3 ; 0xf5f26 + cmp cx, word [es:bx+030h] ; 26 3b 4f 30 ; 0xf5f28 + jne short 05f3dh ; 75 0f ; 0xf5f2c + mov dx, word [es:bx+034h] ; 26 8b 57 34 ; 0xf5f2e + cmp dx, word [bp-00ah] ; 3b 56 f6 ; 0xf5f32 + jne short 05f3dh ; 75 06 ; 0xf5f35 + cmp byte [bp-002h], 008h ; 80 7e fe 08 ; 0xf5f37 + jc short 05f6ch ; 72 2f ; 0xf5f3b + mov ax, di ; 89 f8 ; 0xf5f3d disk.c:357 + xor dx, dx ; 31 d2 ; 0xf5f3f + mov bx, cx ; 89 cb ; 0xf5f41 + xor cx, cx ; 31 c9 ; 0xf5f43 + call 09f10h ; e8 c8 3f ; 0xf5f45 + xor bx, bx ; 31 db ; 0xf5f48 + add ax, word [bp-008h] ; 03 46 f8 ; 0xf5f4a + adc dx, bx ; 11 da ; 0xf5f4d + mov bx, word [bp-00ah] ; 8b 5e f6 ; 0xf5f4f + xor cx, cx ; 31 c9 ; 0xf5f52 + call 09f10h ; e8 b9 3f ; 0xf5f54 + xor bx, bx ; 31 db ; 0xf5f57 + add ax, word [bp-006h] ; 03 46 fa ; 0xf5f59 + adc dx, bx ; 11 da ; 0xf5f5c + add ax, strict word 0ffffh ; 05 ff ff ; 0xf5f5e + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf5f61 + mov ax, dx ; 89 d0 ; 0xf5f64 + adc ax, strict word 0ffffh ; 15 ff ff ; 0xf5f66 + mov word [bp-006h], bx ; 89 5e fa ; 0xf5f69 disk.c:358 + mov es, [bp-004h] ; 8e 46 fc ; 0xf5f6c disk.c:365 + db 066h, 026h, 0c7h, 044h, 018h, 000h, 000h, 000h, 000h + ; mov dword [es:si+018h], strict dword 000000000h ; 66 26 c7 44 18 00 00 00 00; 0xf5f6f + mov word [es:si+01ch], strict word 00000h ; 26 c7 44 1c 00 00 ; 0xf5f78 disk.c:366 + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf5f7e disk.c:369 + mov word [es:si], dx ; 26 89 14 ; 0xf5f81 + mov word [es:si+002h], ax ; 26 89 44 02 ; 0xf5f84 + db 066h, 026h, 0c7h, 044h, 004h, 000h, 000h, 000h, 000h + ; mov dword [es:si+004h], strict dword 000000000h ; 66 26 c7 44 04 00 00 00 00; 0xf5f88 + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf5f91 disk.c:370 + mov dx, word [bp+006h] ; 8b 56 06 ; 0xf5f94 + mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf5f97 + mov word [es:si+00ah], dx ; 26 89 54 0a ; 0xf5f9b + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf5f9f disk.c:371 + mov word [es:si+00eh], ax ; 26 89 44 0e ; 0xf5fa2 + mov word [es:si+010h], 00200h ; 26 c7 44 10 00 02 ; 0xf5fa6 disk.c:372 + mov word [es:si+012h], di ; 26 89 7c 12 ; 0xf5fac disk.c:373 + mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf5fb0 disk.c:374 + mov word [es:si+014h], ax ; 26 89 44 14 ; 0xf5fb3 + mov ax, word [bp-006h] ; 8b 46 fa ; 0xf5fb7 disk.c:375 + mov word [es:si+016h], ax ; 26 89 44 16 ; 0xf5fba + mov al, byte [bp-002h] ; 8a 46 fe ; 0xf5fbe disk.c:376 + mov byte [es:si+00ch], al ; 26 88 44 0c ; 0xf5fc1 + movzx ax, byte [bp-002h] ; 0f b6 46 fe ; 0xf5fc5 disk.c:378 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf5fc9 + mov bx, si ; 89 f3 ; 0xf5fcc + add bx, ax ; 01 c3 ; 0xf5fce + movzx ax, byte [es:bx+022h] ; 26 0f b6 47 22 ; 0xf5fd0 + mov bx, ax ; 89 c3 ; 0xf5fd5 + sal bx, 002h ; c1 e3 02 ; 0xf5fd7 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5fda + shr ax, 008h ; c1 e8 08 ; 0xf5fdd + add ax, ax ; 01 c0 ; 0xf5fe0 + add bx, ax ; 01 c3 ; 0xf5fe2 + push ES ; 06 ; 0xf5fe4 + push si ; 56 ; 0xf5fe5 + call word [word bx+0007eh] ; ff 97 7e 00 ; 0xf5fe6 + mov dx, ax ; 89 c2 ; 0xf5fea + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5fec disk.c:381 + xor al, al ; 30 c0 ; 0xf5fef + mov es, [bp-004h] ; 8e 46 fc ; 0xf5ff1 + mov bx, word [es:si+018h] ; 26 8b 5c 18 ; 0xf5ff4 + or bx, ax ; 09 c3 ; 0xf5ff8 + mov word [bp+016h], bx ; 89 5e 16 ; 0xf5ffa + test dl, dl ; 84 d2 ; 0xf5ffd disk.c:383 + je near 05e0ch ; 0f 84 09 fe ; 0xf5fff + mov bx, 00db2h ; bb b2 0d ; 0xf6003 disk.c:384 + mov cx, ds ; 8c d9 ; 0xf6006 + mov ax, strict word 00004h ; b8 04 00 ; 0xf6008 + call 019d3h ; e8 c5 b9 ; 0xf600b + movzx ax, dl ; 0f b6 c2 ; 0xf600e + push ax ; 50 ; 0xf6011 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6012 + shr ax, 008h ; c1 e8 08 ; 0xf6015 + push ax ; 50 ; 0xf6018 + push 00690h ; 68 90 06 ; 0xf6019 + push 0076bh ; 68 6b 07 ; 0xf601c + push strict byte 00004h ; 6a 04 ; 0xf601f + call 01a14h ; e8 f0 b9 ; 0xf6021 + add sp, strict byte 0000ah ; 83 c4 0a ; 0xf6024 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6027 disk.c:385 + xor ah, ah ; 30 e4 ; 0xf602a + or ah, 00ch ; 80 cc 0c ; 0xf602c + jmp near 0617eh ; e9 4c 01 ; 0xf602f disk.c:386 + mov bx, 00db2h ; bb b2 0d ; 0xf6032 disk.c:393 + mov cx, ds ; 8c d9 ; 0xf6035 + mov ax, strict word 00004h ; b8 04 00 ; 0xf6037 + call 019d3h ; e8 96 b9 ; 0xf603a + push 0078ch ; 68 8c 07 ; 0xf603d + push strict byte 00004h ; 6a 04 ; 0xf6040 + call 01a14h ; e8 cf b9 ; 0xf6042 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf6045 + jmp near 05e0ch ; e9 c1 fd ; 0xf6048 disk.c:394 + movzx ax, byte [bp-002h] ; 0f b6 46 fe ; 0xf604b disk.c:400 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf604f + mov es, [bp-004h] ; 8e 46 fc ; 0xf6052 + mov bx, si ; 89 f3 ; 0xf6055 + add bx, ax ; 01 c3 ; 0xf6057 + mov ax, word [es:bx+02ch] ; 26 8b 47 2c ; 0xf6059 + mov cx, word [es:bx+02ah] ; 26 8b 4f 2a ; 0xf605d disk.c:401 + mov dx, word [es:bx+02eh] ; 26 8b 57 2e ; 0xf6061 disk.c:402 + mov word [bp-00ah], dx ; 89 56 f6 ; 0xf6065 + movzx dx, byte [es:si+001e2h] ; 26 0f b6 94 e2 01 ; 0xf6068 disk.c:404 + mov word [bp-00ch], dx ; 89 56 f4 ; 0xf606e + mov byte [bp+016h], 000h ; c6 46 16 00 ; 0xf6071 disk.c:407 + mov dx, word [bp+014h] ; 8b 56 14 ; 0xf6075 disk.c:408 + xor dh, dh ; 30 f6 ; 0xf6078 + dec ax ; 48 ; 0xf607a disk.c:406 + mov bx, ax ; 89 c3 ; 0xf607b + xor bh, ah ; 30 e7 ; 0xf607d + sal bx, 008h ; c1 e3 08 ; 0xf607f + or dx, bx ; 09 da ; 0xf6082 + mov word [bp+014h], dx ; 89 56 14 ; 0xf6084 + mov dx, ax ; 89 c2 ; 0xf6087 disk.c:409 + shr dx, 002h ; c1 ea 02 ; 0xf6089 + and dl, 0c0h ; 80 e2 c0 ; 0xf608c + mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf608f + and AL, strict byte 03fh ; 24 3f ; 0xf6092 + or dl, al ; 08 c2 ; 0xf6094 + mov ax, word [bp+014h] ; 8b 46 14 ; 0xf6096 + mov al, dl ; 88 d0 ; 0xf6099 + mov word [bp+014h], ax ; 89 46 14 ; 0xf609b + mov dx, word [bp+012h] ; 8b 56 12 ; 0xf609e disk.c:410 + xor dh, dh ; 30 f6 ; 0xf60a1 + mov ax, cx ; 89 c8 ; 0xf60a3 + sal ax, 008h ; c1 e0 08 ; 0xf60a5 + sub ax, 00100h ; 2d 00 01 ; 0xf60a8 + or dx, ax ; 09 c2 ; 0xf60ab + mov word [bp+012h], dx ; 89 56 12 ; 0xf60ad + mov ax, dx ; 89 d0 ; 0xf60b0 disk.c:411 + xor al, dl ; 30 d0 ; 0xf60b2 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf60b4 + or dx, ax ; 09 c2 ; 0xf60b7 + mov word [bp+012h], dx ; 89 56 12 ; 0xf60b9 + jmp near 05e0ch ; e9 4d fd ; 0xf60bc disk.c:416 + movzx ax, byte [bp-002h] ; 0f b6 46 fe ; 0xf60bf disk.c:423 + cwd ; 99 ; 0xf60c3 + db 02bh, 0c2h + ; sub ax, dx ; 2b c2 ; 0xf60c4 + sar ax, 1 ; d1 f8 ; 0xf60c6 + imul ax, ax, strict byte 00006h ; 6b c0 06 ; 0xf60c8 + mov es, [bp-004h] ; 8e 46 fc ; 0xf60cb + add si, ax ; 01 c6 ; 0xf60ce + mov dx, word [es:si+00206h] ; 26 8b 94 06 02 ; 0xf60d0 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf60d5 + in AL, DX ; ec ; 0xf60d8 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf60d9 + and AL, strict byte 0c0h ; 24 c0 ; 0xf60db disk.c:424 + cmp AL, strict byte 040h ; 3c 40 ; 0xf60dd + jne short 060e4h ; 75 03 ; 0xf60df + jmp near 05e0ch ; e9 28 fd ; 0xf60e1 disk.c:425 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf60e4 disk.c:427 + xor ah, ah ; 30 e4 ; 0xf60e7 + or ah, 0aah ; 80 cc aa ; 0xf60e9 + jmp near 0617eh ; e9 8f 00 ; 0xf60ec + movzx ax, byte [bp-002h] ; 0f b6 46 fe ; 0xf60ef disk.c:435 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf60f3 + mov es, [bp-004h] ; 8e 46 fc ; 0xf60f6 + add si, ax ; 01 c6 ; 0xf60f9 + mov di, word [es:si+032h] ; 26 8b 7c 32 ; 0xf60fb + mov ax, word [es:si+030h] ; 26 8b 44 30 ; 0xf60ff disk.c:436 + mov word [bp-008h], ax ; 89 46 f8 ; 0xf6103 + mov ax, word [es:si+034h] ; 26 8b 44 34 ; 0xf6106 disk.c:437 + mov word [bp-006h], ax ; 89 46 fa ; 0xf610a + mov ax, di ; 89 f8 ; 0xf610d disk.c:440 + xor dx, dx ; 31 d2 ; 0xf610f + mov bx, word [bp-008h] ; 8b 5e f8 ; 0xf6111 + xor cx, cx ; 31 c9 ; 0xf6114 + call 09f10h ; e8 f7 3d ; 0xf6116 + mov bx, word [bp-006h] ; 8b 5e fa ; 0xf6119 + xor cx, cx ; 31 c9 ; 0xf611c + call 09f10h ; e8 ef 3d ; 0xf611e + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf6121 + mov word [bp+014h], dx ; 89 56 14 ; 0xf6124 disk.c:441 + mov word [bp+012h], ax ; 89 46 12 ; 0xf6127 disk.c:442 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf612a disk.c:444 + xor ah, ah ; 30 e4 ; 0xf612d + or ah, 003h ; 80 cc 03 ; 0xf612f + mov word [bp+016h], ax ; 89 46 16 ; 0xf6132 + jmp near 05e10h ; e9 d8 fc ; 0xf6135 disk.c:445 + mov bx, 00db2h ; bb b2 0d ; 0xf6138 disk.c:453 + mov cx, ds ; 8c d9 ; 0xf613b + mov ax, strict word 00004h ; b8 04 00 ; 0xf613d + call 019d3h ; e8 90 b8 ; 0xf6140 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6143 + shr ax, 008h ; c1 e8 08 ; 0xf6146 + push ax ; 50 ; 0xf6149 + push 00690h ; 68 90 06 ; 0xf614a + push 007a6h ; 68 a6 07 ; 0xf614d + push strict byte 00004h ; 6a 04 ; 0xf6150 + call 01a14h ; e8 bf b8 ; 0xf6152 + add sp, strict byte 00008h ; 83 c4 08 ; 0xf6155 + jmp near 05e0ch ; e9 b1 fc ; 0xf6158 disk.c:454 + mov bx, 00db2h ; bb b2 0d ; 0xf615b disk.c:461 + mov cx, ds ; 8c d9 ; 0xf615e + mov ax, strict word 00004h ; b8 04 00 ; 0xf6160 + call 019d3h ; e8 6d b8 ; 0xf6163 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6166 + shr ax, 008h ; c1 e8 08 ; 0xf6169 + push ax ; 50 ; 0xf616c + push 00690h ; 68 90 06 ; 0xf616d + push 007d9h ; 68 d9 07 ; 0xf6170 + jmp near 05ea1h ; e9 2b fd ; 0xf6173 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6176 disk.c:467 + xor ah, ah ; 30 e4 ; 0xf6179 + or ah, 001h ; 80 cc 01 ; 0xf617b + mov word [bp+016h], ax ; 89 46 16 ; 0xf617e + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6181 disk.c:469 + shr ax, 008h ; c1 e8 08 ; 0xf6184 + mov bx, strict word 00074h ; bb 74 00 ; 0xf6187 disk.c:43 + mov dx, strict word 00040h ; ba 40 00 ; 0xf618a + mov es, dx ; 8e c2 ; 0xf618d + mov byte [es:bx], al ; 26 88 07 ; 0xf618f + or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf6192 disk.c:471 + jmp near 05e20h ; e9 87 fc ; 0xf6196 disk.c:472 + ; disGetNextSymbol 0xf6199 LB 0x3eac -> off=0x20 cb=000000000000029e uValue=00000000000f4bb9 'int13_harddisk_ext' + db 049h, 062h, 061h, 062h, 061h, 062h, 061h, 062h, 03fh, 064h, 0cbh, 063h, 061h, 062h, 0d3h, 063h + db 03fh, 064h, 024h, 064h, 024h, 064h, 024h, 064h, 024h, 064h, 00ch, 064h, 024h, 064h, 024h, 064h +int13_harddisk_ext: ; 0xf61b9 LB 0x29e + push bp ; 55 ; 0xf61b9 disk.c:482 + mov bp, sp ; 89 e5 ; 0xf61ba + sub sp, strict byte 00016h ; 83 ec 16 ; 0xf61bc + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf61bf disk.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf61c2 + mov es, ax ; 8e c0 ; 0xf61c5 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf61c7 + mov di, 00122h ; bf 22 01 ; 0xf61ca disk.c:49 + mov word [bp-006h], ax ; 89 46 fa ; 0xf61cd + mov bx, 0008eh ; bb 8e 00 ; 0xf61d0 disk.c:43 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf61d3 + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf61d7 disk.c:506 + xor ah, ah ; 30 e4 ; 0xf61da + cmp ax, 00080h ; 3d 80 00 ; 0xf61dc + jc short 061e6h ; 72 05 ; 0xf61df + cmp ax, 00090h ; 3d 90 00 ; 0xf61e1 + jc short 06204h ; 72 1e ; 0xf61e4 + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf61e6 disk.c:507 + xor ah, ah ; 30 e4 ; 0xf61e9 + push ax ; 50 ; 0xf61eb + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf61ec + shr ax, 008h ; c1 e8 08 ; 0xf61ef + push ax ; 50 ; 0xf61f2 + push 00807h ; 68 07 08 ; 0xf61f3 + push 0069fh ; 68 9f 06 ; 0xf61f6 + push strict byte 00004h ; 6a 04 ; 0xf61f9 + call 01a14h ; e8 16 b8 ; 0xf61fb + add sp, strict byte 0000ah ; 83 c4 0a ; 0xf61fe + jmp near 063eah ; e9 e6 01 ; 0xf6201 disk.c:508 + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf6204 disk.c:512 + xor ah, ah ; 30 e4 ; 0xf6207 + mov es, [bp-006h] ; 8e 46 fa ; 0xf6209 + mov bx, di ; 89 fb ; 0xf620c + add bx, ax ; 01 c3 ; 0xf620e + mov dl, byte [es:bx+00163h] ; 26 8a 97 63 01 ; 0xf6210 + mov byte [bp-002h], dl ; 88 56 fe ; 0xf6215 + cmp dl, 010h ; 80 fa 10 ; 0xf6218 disk.c:515 + jc short 0622dh ; 72 10 ; 0xf621b + push ax ; 50 ; 0xf621d disk.c:516 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf621e + shr ax, 008h ; c1 e8 08 ; 0xf6221 + push ax ; 50 ; 0xf6224 + push 00807h ; 68 07 08 ; 0xf6225 + push 006cah ; 68 ca 06 ; 0xf6228 + jmp short 061f9h ; eb cc ; 0xf622b + mov bx, word [bp+016h] ; 8b 5e 16 ; 0xf622d disk.c:520 + shr bx, 008h ; c1 eb 08 ; 0xf6230 + sub bx, strict byte 00041h ; 83 eb 41 ; 0xf6233 + cmp bx, strict byte 0000fh ; 83 fb 0f ; 0xf6236 + jnbe near 06424h ; 0f 87 e7 01 ; 0xf6239 + add bx, bx ; 01 db ; 0xf623d + mov cx, word [bp+016h] ; 8b 4e 16 ; 0xf623f + xor ch, ch ; 30 ed ; 0xf6242 + jmp word [cs:bx+06199h] ; 2e ff a7 99 61 ; 0xf6244 + mov word [bp+010h], 0aa55h ; c7 46 10 55 aa ; 0xf6249 disk.c:522 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf624e disk.c:523 + xor ah, ah ; 30 e4 ; 0xf6251 + or ah, 030h ; 80 cc 30 ; 0xf6253 + mov word [bp+016h], ax ; 89 46 16 ; 0xf6256 + mov word [bp+014h], strict word 00007h ; c7 46 14 07 00 ; 0xf6259 disk.c:524 + jmp near 06443h ; e9 e2 01 ; 0xf625e disk.c:525 + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6261 disk.c:534 + mov word [bp-016h], bx ; 89 5e ea ; 0xf6264 + mov es, [bp+004h] ; 8e 46 04 ; 0xf6267 + mov word [bp-012h], bx ; 89 5e ee ; 0xf626a + mov [bp-010h], es ; 8c 46 f0 ; 0xf626d + mov ax, word [es:bx+002h] ; 26 8b 47 02 ; 0xf6270 disk.c:536 + mov word [bp-00ah], ax ; 89 46 f6 ; 0xf6274 + mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf6277 disk.c:537 + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf627b + mov ax, word [es:bx+004h] ; 26 8b 47 04 ; 0xf627e disk.c:538 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf6282 + mov dx, word [es:bx+00ch] ; 26 8b 57 0c ; 0xf6285 disk.c:541 + mov cx, word [es:bx+00eh] ; 26 8b 4f 0e ; 0xf6289 + xor ax, ax ; 31 c0 ; 0xf628d disk.c:542 + xor bx, bx ; 31 db ; 0xf628f + mov si, strict word 00020h ; be 20 00 ; 0xf6291 + call 09fa0h ; e8 09 3d ; 0xf6294 + mov si, ax ; 89 c6 ; 0xf6297 + mov word [bp-014h], bx ; 89 5e ec ; 0xf6299 + mov bx, word [bp-016h] ; 8b 5e ea ; 0xf629c disk.c:543 + mov ax, word [es:bx+008h] ; 26 8b 47 08 ; 0xf629f + mov word [bp-016h], ax ; 89 46 ea ; 0xf62a3 + mov ax, word [es:bx+00ah] ; 26 8b 47 0a ; 0xf62a6 + or dx, word [bp-016h] ; 0b 56 ea ; 0xf62aa + or cx, ax ; 09 c1 ; 0xf62ad + movzx ax, byte [bp-002h] ; 0f b6 46 fe ; 0xf62af disk.c:548 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf62b3 + mov es, [bp-006h] ; 8e 46 fa ; 0xf62b6 + mov bx, di ; 89 fb ; 0xf62b9 + add bx, ax ; 01 c3 ; 0xf62bb + mov al, byte [es:bx+022h] ; 26 8a 47 22 ; 0xf62bd + mov byte [bp-004h], al ; 88 46 fc ; 0xf62c1 + mov ax, word [es:bx+03ch] ; 26 8b 47 3c ; 0xf62c4 disk.c:549 + cmp si, ax ; 39 c6 ; 0xf62c8 + jnbe short 062eeh ; 77 22 ; 0xf62ca + jne short 06311h ; 75 43 ; 0xf62cc + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf62ce + cmp ax, word [es:bx+03ah] ; 26 3b 47 3a ; 0xf62d1 + jnbe short 062eeh ; 77 17 ; 0xf62d5 + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf62d7 + cmp ax, word [es:bx+03ah] ; 26 3b 47 3a ; 0xf62da + jne short 06311h ; 75 31 ; 0xf62de + cmp cx, word [es:bx+038h] ; 26 3b 4f 38 ; 0xf62e0 + jnbe short 062eeh ; 77 08 ; 0xf62e4 + jne short 06311h ; 75 29 ; 0xf62e6 + cmp dx, word [es:bx+036h] ; 26 3b 57 36 ; 0xf62e8 + jc short 06311h ; 72 23 ; 0xf62ec + mov bx, 00db2h ; bb b2 0d ; 0xf62ee disk.c:550 + mov cx, ds ; 8c d9 ; 0xf62f1 + mov ax, strict word 00004h ; b8 04 00 ; 0xf62f3 + call 019d3h ; e8 da b6 ; 0xf62f6 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf62f9 + shr ax, 008h ; c1 e8 08 ; 0xf62fc + push ax ; 50 ; 0xf62ff + push 00807h ; 68 07 08 ; 0xf6300 + push 0081ah ; 68 1a 08 ; 0xf6303 + push strict byte 00004h ; 6a 04 ; 0xf6306 + call 01a14h ; e8 09 b7 ; 0xf6308 + add sp, strict byte 00008h ; 83 c4 08 ; 0xf630b + jmp near 063eah ; e9 d9 00 ; 0xf630e disk.c:551 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6311 disk.c:555 + shr ax, 008h ; c1 e8 08 ; 0xf6314 + mov word [bp-008h], ax ; 89 46 f8 ; 0xf6317 + cmp ax, strict word 00044h ; 3d 44 00 ; 0xf631a + je near 0643fh ; 0f 84 1e 01 ; 0xf631d + cmp ax, strict word 00047h ; 3d 47 00 ; 0xf6321 + je near 0643fh ; 0f 84 17 01 ; 0xf6324 + mov es, [bp-006h] ; 8e 46 fa ; 0xf6328 disk.c:559 + db 066h, 026h, 0c7h, 045h, 018h, 000h, 000h, 000h, 000h + ; mov dword [es:di+018h], strict dword 000000000h ; 66 26 c7 45 18 00 00 00 00; 0xf632b + mov word [es:di+01ch], strict word 00000h ; 26 c7 45 1c 00 00 ; 0xf6334 disk.c:560 + mov word [es:di+006h], si ; 26 89 75 06 ; 0xf633a disk.c:563 + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf633e + mov word [es:di+004h], ax ; 26 89 45 04 ; 0xf6341 + mov word [es:di+002h], cx ; 26 89 4d 02 ; 0xf6345 + mov word [es:di], dx ; 26 89 15 ; 0xf6349 + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf634c disk.c:564 + mov word [es:di+008h], ax ; 26 89 45 08 ; 0xf634f + mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf6353 + mov word [es:di+00ah], ax ; 26 89 45 0a ; 0xf6356 + mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf635a disk.c:565 + mov word [es:di+00eh], ax ; 26 89 45 0e ; 0xf635d + mov word [es:di+010h], 00200h ; 26 c7 45 10 00 02 ; 0xf6361 disk.c:566 + mov word [es:di+016h], strict word 00000h ; 26 c7 45 16 00 00 ; 0xf6367 disk.c:567 + mov al, byte [bp-002h] ; 8a 46 fe ; 0xf636d disk.c:568 + mov byte [es:di+00ch], al ; 26 88 45 0c ; 0xf6370 + mov bx, word [bp-008h] ; 8b 5e f8 ; 0xf6374 disk.c:571 + add bx, bx ; 01 db ; 0xf6377 + movzx ax, byte [bp-004h] ; 0f b6 46 fc ; 0xf6379 + sal ax, 002h ; c1 e0 02 ; 0xf637d + add bx, ax ; 01 c3 ; 0xf6380 + push ES ; 06 ; 0xf6382 + push di ; 57 ; 0xf6383 + call word [word bx-00002h] ; ff 97 fe ff ; 0xf6384 + mov dx, ax ; 89 c2 ; 0xf6388 + mov es, [bp-006h] ; 8e 46 fa ; 0xf638a disk.c:572 + mov ax, word [es:di+018h] ; 26 8b 45 18 ; 0xf638d + mov word [bp-00ah], ax ; 89 46 f6 ; 0xf6391 + les bx, [bp-012h] ; c4 5e ee ; 0xf6394 disk.c:573 + mov word [es:bx+002h], ax ; 26 89 47 02 ; 0xf6397 + test dl, dl ; 84 d2 ; 0xf639b disk.c:575 + je near 0643fh ; 0f 84 9e 00 ; 0xf639d + mov bx, 00db2h ; bb b2 0d ; 0xf63a1 disk.c:576 + mov cx, ds ; 8c d9 ; 0xf63a4 + mov ax, strict word 00004h ; b8 04 00 ; 0xf63a6 + call 019d3h ; e8 27 b6 ; 0xf63a9 + movzx ax, dl ; 0f b6 c2 ; 0xf63ac + push ax ; 50 ; 0xf63af + push word [bp-008h] ; ff 76 f8 ; 0xf63b0 + push 00807h ; 68 07 08 ; 0xf63b3 + push 0076bh ; 68 6b 07 ; 0xf63b6 + push strict byte 00004h ; 6a 04 ; 0xf63b9 + call 01a14h ; e8 56 b6 ; 0xf63bb + add sp, strict byte 0000ah ; 83 c4 0a ; 0xf63be + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf63c1 disk.c:577 + xor ah, ah ; 30 e4 ; 0xf63c4 + or ah, 00ch ; 80 cc 0c ; 0xf63c6 + jmp short 063f2h ; eb 27 ; 0xf63c9 disk.c:578 + or ch, 0b2h ; 80 cd b2 ; 0xf63cb disk.c:590 + mov word [bp+016h], cx ; 89 4e 16 ; 0xf63ce + jmp short 063f5h ; eb 22 ; 0xf63d1 disk.c:591 + movzx ax, byte [bp-002h] ; 0f b6 46 fe ; 0xf63d3 disk.c:595 + push ax ; 50 ; 0xf63d7 + mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf63d8 + mov dx, word [bp+004h] ; 8b 56 04 ; 0xf63db + mov bx, di ; 89 fb ; 0xf63de + mov cx, word [bp-006h] ; 8b 4e fa ; 0xf63e0 + call 05a50h ; e8 6a f6 ; 0xf63e3 + test ax, ax ; 85 c0 ; 0xf63e6 + je short 0643fh ; 74 55 ; 0xf63e8 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf63ea disk.c:596 + xor ah, ah ; 30 e4 ; 0xf63ed + or ah, 001h ; 80 cc 01 ; 0xf63ef + mov word [bp+016h], ax ; 89 46 16 ; 0xf63f2 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf63f5 + shr ax, 008h ; c1 e8 08 ; 0xf63f8 + mov bx, strict word 00074h ; bb 74 00 ; 0xf63fb + mov dx, strict word 00040h ; ba 40 00 ; 0xf63fe + mov es, dx ; 8e c2 ; 0xf6401 + mov byte [es:bx], al ; 26 88 07 ; 0xf6403 + or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf6406 + jmp short 06453h ; eb 47 ; 0xf640a + cmp cx, strict byte 00006h ; 83 f9 06 ; 0xf640c disk.c:603 + je short 0643fh ; 74 2e ; 0xf640f + cmp cx, strict byte 00001h ; 83 f9 01 ; 0xf6411 + jc short 063eah ; 72 d4 ; 0xf6414 + jbe short 0643fh ; 76 27 ; 0xf6416 + cmp cx, strict byte 00003h ; 83 f9 03 ; 0xf6418 + jc short 063eah ; 72 cd ; 0xf641b + cmp cx, strict byte 00004h ; 83 f9 04 ; 0xf641d + jbe short 0643fh ; 76 1d ; 0xf6420 + jmp short 063eah ; eb c6 ; 0xf6422 disk.c:611 + mov bx, 00db2h ; bb b2 0d ; 0xf6424 disk.c:617 + mov cx, ds ; 8c d9 ; 0xf6427 + mov ax, strict word 00004h ; b8 04 00 ; 0xf6429 + call 019d3h ; e8 a4 b5 ; 0xf642c + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf642f + shr ax, 008h ; c1 e8 08 ; 0xf6432 + push ax ; 50 ; 0xf6435 + push 00807h ; 68 07 08 ; 0xf6436 + push 007d9h ; 68 d9 07 ; 0xf6439 + jmp near 06306h ; e9 c7 fe ; 0xf643c + mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf643f disk.c:630 + mov bx, strict word 00074h ; bb 74 00 ; 0xf6443 disk.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf6446 + mov es, ax ; 8e c0 ; 0xf6449 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf644b + and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf644f disk.c:633 + mov sp, bp ; 89 ec ; 0xf6453 disk.c:635 + pop bp ; 5d ; 0xf6455 + retn ; c3 ; 0xf6456 + ; disGetNextSymbol 0xf6457 LB 0x3bee -> off=0x0 cb=0000000000000151 uValue=00000000000f4e57 'int14_function' +int14_function: ; 0xf6457 LB 0x151 + push bp ; 55 ; 0xf6457 serial.c:60 + mov bp, sp ; 89 e5 ; 0xf6458 + push si ; 56 ; 0xf645a + push di ; 57 ; 0xf645b + sti ; fb ; 0xf645c serial.c:65 + mov si, word [bp+00eh] ; 8b 76 0e ; 0xf645d serial.c:67 + add si, si ; 01 f6 ; 0xf6460 + mov ax, strict word 00040h ; b8 40 00 ; 0xf6462 serial.c:48 + mov es, ax ; 8e c0 ; 0xf6465 + mov si, word [es:si] ; 26 8b 34 ; 0xf6467 + mov bx, si ; 89 f3 ; 0xf646a serial.c:49 + mov di, word [bp+00eh] ; 8b 7e 0e ; 0xf646c serial.c:68 + add di, strict byte 0007ch ; 83 c7 7c ; 0xf646f + mov cl, byte [es:di] ; 26 8a 0d ; 0xf6472 serial.c:38 + cmp word [bp+00eh], strict byte 00004h ; 83 7e 0e 04 ; 0xf6475 serial.c:69 + jnc near 0659dh ; 0f 83 20 01 ; 0xf6479 + test si, si ; 85 f6 ; 0xf647d + jbe near 0659dh ; 0f 86 1a 01 ; 0xf647f + mov al, byte [bp+013h] ; 8a 46 13 ; 0xf6483 serial.c:70 + cmp AL, strict byte 001h ; 3c 01 ; 0xf6486 + jc short 0649bh ; 72 11 ; 0xf6488 + jbe short 064f4h ; 76 68 ; 0xf648a + cmp AL, strict byte 003h ; 3c 03 ; 0xf648c + je near 06586h ; 0f 84 f4 00 ; 0xf648e + cmp AL, strict byte 002h ; 3c 02 ; 0xf6492 + je near 0653fh ; 0f 84 a7 00 ; 0xf6494 + jmp near 06597h ; e9 fc 00 ; 0xf6498 + test al, al ; 84 c0 ; 0xf649b + jne near 06597h ; 0f 85 f6 00 ; 0xf649d + lea dx, [bx+003h] ; 8d 57 03 ; 0xf64a1 serial.c:72 + in AL, DX ; ec ; 0xf64a4 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf64a5 + or AL, strict byte 080h ; 0c 80 ; 0xf64a7 + out DX, AL ; ee ; 0xf64a9 + lea si, [bx+001h] ; 8d 77 01 ; 0xf64aa + mov al, byte [bp+012h] ; 8a 46 12 ; 0xf64ad serial.c:73 + test AL, strict byte 0e0h ; a8 e0 ; 0xf64b0 + jne short 064c0h ; 75 0c ; 0xf64b2 + mov AL, strict byte 017h ; b0 17 ; 0xf64b4 serial.c:74 + mov dx, bx ; 89 da ; 0xf64b6 + out DX, AL ; ee ; 0xf64b8 + mov AL, strict byte 004h ; b0 04 ; 0xf64b9 serial.c:75 + mov dx, si ; 89 f2 ; 0xf64bb + out DX, AL ; ee ; 0xf64bd + jmp short 064d6h ; eb 16 ; 0xf64be serial.c:76 + and AL, strict byte 0e0h ; 24 e0 ; 0xf64c0 serial.c:77 + movzx cx, al ; 0f b6 c8 ; 0xf64c2 + sar cx, 005h ; c1 f9 05 ; 0xf64c5 + mov ax, 00600h ; b8 00 06 ; 0xf64c8 + sar ax, CL ; d3 f8 ; 0xf64cb + mov dx, bx ; 89 da ; 0xf64cd serial.c:78 + out DX, AL ; ee ; 0xf64cf + shr ax, 008h ; c1 e8 08 ; 0xf64d0 serial.c:79 + mov dx, si ; 89 f2 ; 0xf64d3 + out DX, AL ; ee ; 0xf64d5 + mov al, byte [bp+012h] ; 8a 46 12 ; 0xf64d6 serial.c:81 + and AL, strict byte 01fh ; 24 1f ; 0xf64d9 + lea dx, [bx+003h] ; 8d 57 03 ; 0xf64db + out DX, AL ; ee ; 0xf64de + lea dx, [bx+005h] ; 8d 57 05 ; 0xf64df serial.c:82 + in AL, DX ; ec ; 0xf64e2 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf64e3 + mov byte [bp+013h], al ; 88 46 13 ; 0xf64e5 + lea dx, [bx+006h] ; 8d 57 06 ; 0xf64e8 serial.c:83 + in AL, DX ; ec ; 0xf64eb + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf64ec + mov byte [bp+012h], al ; 88 46 12 ; 0xf64ee + jmp near 06578h ; e9 84 00 ; 0xf64f1 + mov si, strict word 0006ch ; be 6c 00 ; 0xf64f4 serial.c:48 + mov si, word [es:si] ; 26 8b 34 ; 0xf64f7 + lea dx, [bx+005h] ; 8d 57 05 ; 0xf64fa serial.c:88 + in AL, DX ; ec ; 0xf64fd + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf64fe + and ax, strict word 00060h ; 25 60 00 ; 0xf6500 + cmp ax, strict word 00060h ; 3d 60 00 ; 0xf6503 + je short 06521h ; 74 19 ; 0xf6506 + test cl, cl ; 84 c9 ; 0xf6508 + je short 06521h ; 74 15 ; 0xf650a + mov di, strict word 0006ch ; bf 6c 00 ; 0xf650c serial.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf650f + mov es, ax ; 8e c0 ; 0xf6512 + mov ax, word [es:di] ; 26 8b 05 ; 0xf6514 + cmp ax, si ; 39 f0 ; 0xf6517 serial.c:90 + je short 064fah ; 74 df ; 0xf6519 + mov si, ax ; 89 c6 ; 0xf651b serial.c:91 + db 0feh, 0c9h + ; dec cl ; fe c9 ; 0xf651d serial.c:92 + jmp short 064fah ; eb d9 ; 0xf651f serial.c:94 + test cl, cl ; 84 c9 ; 0xf6521 serial.c:95 + je short 0652bh ; 74 06 ; 0xf6523 + mov al, byte [bp+012h] ; 8a 46 12 ; 0xf6525 + mov dx, bx ; 89 da ; 0xf6528 + out DX, AL ; ee ; 0xf652a + lea dx, [bx+005h] ; 8d 57 05 ; 0xf652b serial.c:96 + in AL, DX ; ec ; 0xf652e + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf652f + mov byte [bp+013h], al ; 88 46 13 ; 0xf6531 + test cl, cl ; 84 c9 ; 0xf6534 serial.c:97 + jne short 06578h ; 75 40 ; 0xf6536 + or AL, strict byte 080h ; 0c 80 ; 0xf6538 + mov byte [bp+013h], al ; 88 46 13 ; 0xf653a + jmp short 06578h ; eb 39 ; 0xf653d + mov si, strict word 0006ch ; be 6c 00 ; 0xf653f serial.c:48 + mov si, word [es:si] ; 26 8b 34 ; 0xf6542 + lea dx, [bx+005h] ; 8d 57 05 ; 0xf6545 serial.c:102 + in AL, DX ; ec ; 0xf6548 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf6549 + test AL, strict byte 001h ; a8 01 ; 0xf654b + jne short 06568h ; 75 19 ; 0xf654d + test cl, cl ; 84 c9 ; 0xf654f + je short 06568h ; 74 15 ; 0xf6551 + mov di, strict word 0006ch ; bf 6c 00 ; 0xf6553 serial.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf6556 + mov es, ax ; 8e c0 ; 0xf6559 + mov ax, word [es:di] ; 26 8b 05 ; 0xf655b + cmp ax, si ; 39 f0 ; 0xf655e serial.c:104 + je short 06545h ; 74 e3 ; 0xf6560 + mov si, ax ; 89 c6 ; 0xf6562 serial.c:105 + db 0feh, 0c9h + ; dec cl ; fe c9 ; 0xf6564 serial.c:106 + jmp short 06545h ; eb dd ; 0xf6566 serial.c:108 + test cl, cl ; 84 c9 ; 0xf6568 serial.c:109 + je short 0657eh ; 74 12 ; 0xf656a + mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf656c serial.c:110 + mov dx, bx ; 89 da ; 0xf6570 serial.c:111 + in AL, DX ; ec ; 0xf6572 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf6573 + mov byte [bp+012h], al ; 88 46 12 ; 0xf6575 + and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf6578 serial.c:112 + jmp short 065a1h ; eb 23 ; 0xf657c + lea dx, [bx+005h] ; 8d 57 05 ; 0xf657e serial.c:113 + in AL, DX ; ec ; 0xf6581 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf6582 + jmp short 0653ah ; eb b4 ; 0xf6584 + lea dx, [si+005h] ; 8d 54 05 ; 0xf6586 serial.c:118 + in AL, DX ; ec ; 0xf6589 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf658a + mov byte [bp+013h], al ; 88 46 13 ; 0xf658c + lea dx, [si+006h] ; 8d 54 06 ; 0xf658f serial.c:119 + in AL, DX ; ec ; 0xf6592 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf6593 + jmp short 06575h ; eb de ; 0xf6595 + or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf6597 serial.c:123 + jmp short 065a1h ; eb 04 ; 0xf659b serial.c:125 + or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf659d serial.c:126 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf65a1 serial.c:128 + pop di ; 5f ; 0xf65a4 + pop si ; 5e ; 0xf65a5 + pop bp ; 5d ; 0xf65a6 + retn ; c3 ; 0xf65a7 + ; disGetNextSymbol 0xf65a8 LB 0x3a9d -> off=0x0 cb=0000000000000043 uValue=00000000000f4fa8 'timer_wait' +timer_wait: ; 0xf65a8 LB 0x43 + push bp ; 55 ; 0xf65a8 system.c:289 + mov bp, sp ; 89 e5 ; 0xf65a9 + push bx ; 53 ; 0xf65ab + push cx ; 51 ; 0xf65ac + push ax ; 50 ; 0xf65ad + mov bx, strict word 0000fh ; bb 0f 00 ; 0xf65ae system.c:296 + xor cx, cx ; 31 c9 ; 0xf65b1 + call 09f50h ; e8 9a 39 ; 0xf65b3 + mov cx, ax ; 89 c1 ; 0xf65b6 + mov bx, dx ; 89 d3 ; 0xf65b8 + mov dx, strict word 00061h ; ba 61 00 ; 0xf65ba system.c:298 + in AL, DX ; ec ; 0xf65bd + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf65be + and AL, strict byte 010h ; 24 10 ; 0xf65c0 + mov byte [bp-006h], al ; 88 46 fa ; 0xf65c2 + add cx, strict byte 0ffffh ; 83 c1 ff ; 0xf65c5 system.c:299 + adc bx, strict byte 0ffffh ; 83 d3 ff ; 0xf65c8 + cmp bx, strict byte 0ffffh ; 83 fb ff ; 0xf65cb + jne short 065d5h ; 75 05 ; 0xf65ce + cmp cx, strict byte 0ffffh ; 83 f9 ff ; 0xf65d0 + je short 065e4h ; 74 0f ; 0xf65d3 + mov dx, strict word 00061h ; ba 61 00 ; 0xf65d5 system.c:302 + in AL, DX ; ec ; 0xf65d8 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf65d9 + and AL, strict byte 010h ; 24 10 ; 0xf65db + cmp al, byte [bp-006h] ; 3a 46 fa ; 0xf65dd system.c:303 + jne short 065d5h ; 75 f3 ; 0xf65e0 + jmp short 065c5h ; eb e1 ; 0xf65e2 system.c:305 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf65e4 system.c:306 + pop cx ; 59 ; 0xf65e7 + pop bx ; 5b ; 0xf65e8 + pop bp ; 5d ; 0xf65e9 + retn ; c3 ; 0xf65ea + ; disGetNextSymbol 0xf65eb LB 0x3a5a -> off=0x0 cb=000000000000002c uValue=00000000000f4feb 'set_enable_a20' +set_enable_a20: ; 0xf65eb LB 0x2c + push bp ; 55 ; 0xf65eb system.c:308 + mov bp, sp ; 89 e5 ; 0xf65ec + push bx ; 53 ; 0xf65ee + push cx ; 51 ; 0xf65ef + push dx ; 52 ; 0xf65f0 + mov bx, ax ; 89 c3 ; 0xf65f1 + mov dx, 00092h ; ba 92 00 ; 0xf65f3 system.c:315 + in AL, DX ; ec ; 0xf65f6 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf65f7 + mov cl, al ; 88 c1 ; 0xf65f9 + test bx, bx ; 85 db ; 0xf65fb system.c:318 + je short 06604h ; 74 05 ; 0xf65fd + or AL, strict byte 002h ; 0c 02 ; 0xf65ff system.c:319 + out DX, AL ; ee ; 0xf6601 + jmp short 06607h ; eb 03 ; 0xf6602 system.c:320 + and AL, strict byte 0fdh ; 24 fd ; 0xf6604 system.c:321 + out DX, AL ; ee ; 0xf6606 + test cl, 002h ; f6 c1 02 ; 0xf6607 system.c:323 + db 00fh, 095h, 0c0h + ; setne al ; 0f 95 c0 ; 0xf660a + xor ah, ah ; 30 e4 ; 0xf660d + lea sp, [bp-006h] ; 8d 66 fa ; 0xf660f system.c:324 + pop dx ; 5a ; 0xf6612 + pop cx ; 59 ; 0xf6613 + pop bx ; 5b ; 0xf6614 + pop bp ; 5d ; 0xf6615 + retn ; c3 ; 0xf6616 + ; disGetNextSymbol 0xf6617 LB 0x3a2e -> off=0x3b cb=00000000000002f7 uValue=00000000000f5052 'int15_function' + db 0ech, 0e9h, 0d8h, 0c7h, 0c1h, 0c0h, 0bfh, 091h, 090h, 089h, 088h, 086h, 083h, 052h, 04fh, 041h + db 024h, 022h, 000h, 02bh, 069h, 08fh, 066h, 0cch, 068h, 0a2h, 066h, 0cch, 068h, 024h, 069h, 0e6h + db 066h, 01ch, 067h, 0b9h, 067h, 0c5h, 067h, 0eeh, 067h, 0b2h, 067h, 0b2h, 067h, 0b6h, 068h, 0deh + db 068h, 0f1h, 068h, 0cch, 068h, 005h, 069h, 07bh, 067h, 00ch, 069h +int15_function: ; 0xf6652 LB 0x2f7 + push bp ; 55 ; 0xf6652 system.c:345 + mov bp, sp ; 89 e5 ; 0xf6653 + push si ; 56 ; 0xf6655 + push di ; 57 ; 0xf6656 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf6657 system.c:352 + shr ax, 008h ; c1 e8 08 ; 0xf665a + cmp ax, 000ech ; 3d ec 00 ; 0xf665d + jnbe near 0692bh ; 0f 87 c7 02 ; 0xf6660 + push CS ; 0e ; 0xf6664 + pop ES ; 07 ; 0xf6665 + mov cx, strict word 00014h ; b9 14 00 ; 0xf6666 + mov di, 06617h ; bf 17 66 ; 0xf6669 + repne scasb ; f2 ae ; 0xf666c + sal cx, 1 ; d1 e1 ; 0xf666e + mov di, cx ; 89 cf ; 0xf6670 + mov cx, word [cs:di+0662ah] ; 2e 8b 8d 2a 66 ; 0xf6672 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf6677 + xor ah, ah ; 30 e4 ; 0xf667a + mov bx, word [bp+018h] ; 8b 5e 18 ; 0xf667c + and bl, 0feh ; 80 e3 fe ; 0xf667f + mov si, word [bp+018h] ; 8b 76 18 ; 0xf6682 + or si, strict byte 00001h ; 83 ce 01 ; 0xf6685 + mov dx, ax ; 89 c2 ; 0xf6688 + or dh, 086h ; 80 ce 86 ; 0xf668a + jmp cx ; ff e1 ; 0xf668d + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf668f system.c:354 + xor ah, ah ; 30 e4 ; 0xf6692 + cmp ax, 000c0h ; 3d c0 00 ; 0xf6694 + jne near 0692bh ; 0f 85 90 02 ; 0xf6697 + or byte [bp+018h], 001h ; 80 4e 18 01 ; 0xf669b system.c:361 + jmp near 068d5h ; e9 33 02 ; 0xf669f + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf66a2 system.c:365 + xor ah, ah ; 30 e4 ; 0xf66a5 + cmp ax, strict word 00001h ; 3d 01 00 ; 0xf66a7 + jc short 066bah ; 72 0e ; 0xf66aa + jbe short 066ceh ; 76 20 ; 0xf66ac + cmp ax, strict word 00003h ; 3d 03 00 ; 0xf66ae + je short 066f0h ; 74 3d ; 0xf66b1 + cmp ax, strict word 00002h ; 3d 02 00 ; 0xf66b3 + je short 066d3h ; 74 1b ; 0xf66b6 + jmp short 066fdh ; eb 43 ; 0xf66b8 + test ax, ax ; 85 c0 ; 0xf66ba + jne short 066fdh ; 75 3f ; 0xf66bc + xor ax, ax ; 31 c0 ; 0xf66be system.c:367 + call 065ebh ; e8 28 ff ; 0xf66c0 + and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf66c3 system.c:368 + mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf66c7 system.c:369 + jmp near 067b2h ; e9 e4 00 ; 0xf66cb system.c:370 + mov ax, strict word 00001h ; b8 01 00 ; 0xf66ce system.c:372 + jmp short 066c0h ; eb ed ; 0xf66d1 + mov dx, 00092h ; ba 92 00 ; 0xf66d3 system.c:377 + in AL, DX ; ec ; 0xf66d6 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf66d7 + shr ax, 1 ; d1 e8 ; 0xf66d9 + and ax, strict word 00001h ; 25 01 00 ; 0xf66db + mov dx, word [bp+012h] ; 8b 56 12 ; 0xf66de + mov dl, al ; 88 c2 ; 0xf66e1 + mov word [bp+012h], dx ; 89 56 12 ; 0xf66e3 + and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf66e6 system.c:378 + mov byte [bp+013h], ah ; 88 66 13 ; 0xf66ea system.c:379 + jmp near 067b2h ; e9 c2 00 ; 0xf66ed system.c:380 + and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf66f0 system.c:382 + mov byte [bp+013h], ah ; 88 66 13 ; 0xf66f4 system.c:383 + mov word [bp+00ch], ax ; 89 46 0c ; 0xf66f7 system.c:384 + jmp near 067b2h ; e9 b5 00 ; 0xf66fa system.c:385 + mov bx, 00db2h ; bb b2 0d ; 0xf66fd system.c:387 + mov cx, ds ; 8c d9 ; 0xf6700 + mov ax, strict word 00004h ; b8 04 00 ; 0xf6702 + call 019d3h ; e8 cb b2 ; 0xf6705 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf6708 + xor ah, ah ; 30 e4 ; 0xf670b + push ax ; 50 ; 0xf670d + push 00840h ; 68 40 08 ; 0xf670e + push strict byte 00004h ; 6a 04 ; 0xf6711 + call 01a14h ; e8 fe b2 ; 0xf6713 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf6716 + jmp near 068cch ; e9 b0 01 ; 0xf6719 + test byte [bp+012h], 0ffh ; f6 46 12 ff ; 0xf671c system.c:419 + jne short 06784h ; 75 62 ; 0xf6720 + mov bx, 000a0h ; bb a0 00 ; 0xf6722 system.c:38 + mov ax, strict word 00040h ; b8 40 00 ; 0xf6725 + mov es, ax ; 8e c0 ; 0xf6728 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf672a + test AL, strict byte 001h ; a8 01 ; 0xf672d system.c:39 + jne short 0677bh ; 75 4a ; 0xf672f + mov DL, strict byte 001h ; b2 01 ; 0xf6731 system.c:41 + mov byte [es:bx], dl ; 26 88 17 ; 0xf6733 system.c:43 + mov bx, 00098h ; bb 98 00 ; 0xf6736 system.c:51 + mov dx, word [bp+014h] ; 8b 56 14 ; 0xf6739 + mov word [es:bx], dx ; 26 89 17 ; 0xf673c system.c:53 + mov bx, 0009ah ; bb 9a 00 ; 0xf673f system.c:51 + mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf6742 + mov word [es:bx], dx ; 26 89 17 ; 0xf6745 system.c:53 + mov bx, 0009ch ; bb 9c 00 ; 0xf6748 system.c:51 + mov dx, word [bp+00eh] ; 8b 56 0e ; 0xf674b + mov word [es:bx], dx ; 26 89 17 ; 0xf674e system.c:53 + mov bx, 0009eh ; bb 9e 00 ; 0xf6751 system.c:51 + mov dx, word [bp+010h] ; 8b 56 10 ; 0xf6754 + mov word [es:bx], dx ; 26 89 17 ; 0xf6757 system.c:53 + and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf675a system.c:428 + mov dx, 000a1h ; ba a1 00 ; 0xf675e system.c:429 + in AL, DX ; ec ; 0xf6761 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf6762 + and AL, strict byte 0feh ; 24 fe ; 0xf6764 system.c:430 + out DX, AL ; ee ; 0xf6766 + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6767 system.c:431 + call 01756h ; e8 e9 af ; 0xf676a + or AL, strict byte 040h ; 0c 40 ; 0xf676d system.c:432 + movzx dx, al ; 0f b6 d0 ; 0xf676f + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6772 + call 01773h ; e8 fb af ; 0xf6775 + jmp near 067b2h ; e9 37 00 ; 0xf6778 system.c:433 + mov word [bp+018h], si ; 89 76 18 ; 0xf677b system.c:436 + mov word [bp+012h], dx ; 89 56 12 ; 0xf677e system.c:437 + jmp near 067b2h ; e9 2e 00 ; 0xf6781 system.c:439 + cmp ax, strict word 00001h ; 3d 01 00 ; 0xf6784 + jne short 067a3h ; 75 1a ; 0xf6787 + mov bx, 000a0h ; bb a0 00 ; 0xf6789 system.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf678c + mov es, ax ; 8e c0 ; 0xf678f + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf6791 + and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf6795 system.c:442 + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6799 system.c:443 + call 01756h ; e8 b7 af ; 0xf679c + and AL, strict byte 0bfh ; 24 bf ; 0xf679f system.c:444 + jmp short 0676fh ; eb cc ; 0xf67a1 + mov word [bp+018h], si ; 89 76 18 ; 0xf67a3 system.c:447 + mov ax, dx ; 89 d0 ; 0xf67a6 system.c:449 + xor ah, dh ; 30 f4 ; 0xf67a8 + xor dl, dl ; 30 d2 ; 0xf67aa + dec ax ; 48 ; 0xf67ac + or dx, ax ; 09 c2 ; 0xf67ad + mov word [bp+012h], dx ; 89 56 12 ; 0xf67af + lea sp, [bp-004h] ; 8d 66 fc ; 0xf67b2 system.c:452 + pop di ; 5f ; 0xf67b5 + pop si ; 5e ; 0xf67b6 + pop bp ; 5d ; 0xf67b7 + retn ; c3 ; 0xf67b8 + sti ; fb ; 0xf67b9 system.c:458 + mov dx, word [bp+010h] ; 8b 56 10 ; 0xf67ba system.c:459 + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf67bd + call 065a8h ; e8 e5 fd ; 0xf67c0 + jmp short 067b2h ; eb ed ; 0xf67c3 system.c:460 + mov ax, strict word 00031h ; b8 31 00 ; 0xf67c5 system.c:465 + call 01756h ; e8 8b af ; 0xf67c8 + movzx dx, al ; 0f b6 d0 ; 0xf67cb + sal dx, 008h ; c1 e2 08 ; 0xf67ce + mov ax, strict word 00030h ; b8 30 00 ; 0xf67d1 + call 01756h ; e8 7f af ; 0xf67d4 + xor ah, ah ; 30 e4 ; 0xf67d7 + or dx, ax ; 09 c2 ; 0xf67d9 + mov word [bp+012h], dx ; 89 56 12 ; 0xf67db + cmp dx, strict byte 0ffc0h ; 83 fa c0 ; 0xf67de system.c:470 + jbe short 067e8h ; 76 05 ; 0xf67e1 + mov word [bp+012h], strict word 0ffc0h ; c7 46 12 c0 ff ; 0xf67e3 system.c:471 + and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf67e8 system.c:480 + jmp short 067b2h ; eb c4 ; 0xf67ec system.c:485 + cli ; fa ; 0xf67ee system.c:494 + mov ax, strict word 00001h ; b8 01 00 ; 0xf67ef system.c:496 + call 065ebh ; e8 f6 fd ; 0xf67f2 + mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf67f5 system.c:499 + add bx, strict byte 00038h ; 83 c3 38 ; 0xf67f8 + mov es, [bp+014h] ; 8e 46 14 ; 0xf67fb system.c:51 + mov word [es:bx], strict word 0ffffh ; 26 c7 07 ff ff ; 0xf67fe + mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf6803 system.c:500 + add bx, strict byte 0003ah ; 83 c3 3a ; 0xf6806 + mov es, [bp+014h] ; 8e 46 14 ; 0xf6809 system.c:51 + mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf680c system.c:53 + mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf6811 system.c:501 + add bx, strict byte 0003ch ; 83 c3 3c ; 0xf6814 + mov es, [bp+014h] ; 8e 46 14 ; 0xf6817 system.c:41 + mov byte [es:bx], 00fh ; 26 c6 07 0f ; 0xf681a + mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf681e system.c:502 + add bx, strict byte 0003dh ; 83 c3 3d ; 0xf6821 + mov es, [bp+014h] ; 8e 46 14 ; 0xf6824 system.c:41 + mov byte [es:bx], 09bh ; 26 c6 07 9b ; 0xf6827 + mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf682b system.c:503 + add bx, strict byte 0003eh ; 83 c3 3e ; 0xf682e + mov es, [bp+014h] ; 8e 46 14 ; 0xf6831 system.c:51 + mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf6834 + mov AL, strict byte 011h ; b0 11 ; 0xf6839 system.c:506 + mov dx, strict word 00020h ; ba 20 00 ; 0xf683b + out DX, AL ; ee ; 0xf683e + mov dx, 000a0h ; ba a0 00 ; 0xf683f system.c:507 + out DX, AL ; ee ; 0xf6842 + mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf6843 system.c:508 + shr ax, 008h ; c1 e8 08 ; 0xf6846 + mov dx, strict word 00021h ; ba 21 00 ; 0xf6849 + out DX, AL ; ee ; 0xf684c + mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf684d system.c:509 + mov dx, 000a1h ; ba a1 00 ; 0xf6850 + out DX, AL ; ee ; 0xf6853 + mov AL, strict byte 004h ; b0 04 ; 0xf6854 system.c:510 + mov dx, strict word 00021h ; ba 21 00 ; 0xf6856 + out DX, AL ; ee ; 0xf6859 + mov AL, strict byte 002h ; b0 02 ; 0xf685a system.c:511 + mov dx, 000a1h ; ba a1 00 ; 0xf685c + out DX, AL ; ee ; 0xf685f + mov AL, strict byte 001h ; b0 01 ; 0xf6860 system.c:512 + mov dx, strict word 00021h ; ba 21 00 ; 0xf6862 + out DX, AL ; ee ; 0xf6865 + mov dx, 000a1h ; ba a1 00 ; 0xf6866 system.c:513 + out DX, AL ; ee ; 0xf6869 + mov AL, strict byte 0ffh ; b0 ff ; 0xf686a system.c:515 + mov dx, strict word 00021h ; ba 21 00 ; 0xf686c + out DX, AL ; ee ; 0xf686f + mov dx, 000a1h ; ba a1 00 ; 0xf6870 system.c:516 + out DX, AL ; ee ; 0xf6873 + mov si, word [bp+006h] ; 8b 76 06 ; 0xf6874 system.c:518 + lgdt [es:si+008h] ; 26 0f 01 54 08 ; 0xf6877 + lidt [es:si+010h] ; 26 0f 01 5c 10 ; 0xf687c + push strict byte 00038h ; 6a 38 ; 0xf6881 + call 06886h ; e8 00 00 ; 0xf6883 + pop ax ; 58 ; 0xf6886 + add ax, strict byte 0000eh ; 83 c0 0e ; 0xf6887 + push ax ; 50 ; 0xf688a + smsw ax ; 0f 01 e0 ; 0xf688b + or AL, strict byte 001h ; 0c 01 ; 0xf688e + lmsw ax ; 0f 01 f0 ; 0xf6890 + retf ; cb ; 0xf6893 + mov ax, strict word 00018h ; b8 18 00 ; 0xf6894 + mov ds, ax ; 8e d8 ; 0xf6897 + add AL, strict byte 008h ; 04 08 ; 0xf6899 + mov es, ax ; 8e c0 ; 0xf689b + add AL, strict byte 008h ; 04 08 ; 0xf689d + mov ss, ax ; 8e d0 ; 0xf689f + lea ax, [bp+004h] ; 8d 46 04 ; 0xf68a1 system.c:519 + db 08bh, 0e0h + ; mov sp, ax ; 8b e0 ; 0xf68a4 + popaw ; 61 ; 0xf68a6 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf68a7 + pop cx ; 59 ; 0xf68aa + pop ax ; 58 ; 0xf68ab + pop ax ; 58 ; 0xf68ac + mov ax, strict word 00030h ; b8 30 00 ; 0xf68ad + push ax ; 50 ; 0xf68b0 + push cx ; 51 ; 0xf68b1 + retf ; cb ; 0xf68b2 + jmp near 067b2h ; e9 fc fe ; 0xf68b3 system.c:525 + mov bx, 00db2h ; bb b2 0d ; 0xf68b6 system.c:532 + mov cx, ds ; 8c d9 ; 0xf68b9 + mov ax, strict word 00004h ; b8 04 00 ; 0xf68bb + call 019d3h ; e8 12 b1 ; 0xf68be + push 00880h ; 68 80 08 ; 0xf68c1 + push strict byte 00004h ; 6a 04 ; 0xf68c4 + call 01a14h ; e8 4b b1 ; 0xf68c6 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf68c9 + or byte [bp+018h], 001h ; 80 4e 18 01 ; 0xf68cc + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf68d0 + xor ah, ah ; 30 e4 ; 0xf68d3 + or ah, 086h ; 80 cc 86 ; 0xf68d5 + mov word [bp+012h], ax ; 89 46 12 ; 0xf68d8 + jmp near 067b2h ; e9 d4 fe ; 0xf68db + mov word [bp+018h], bx ; 89 5e 18 ; 0xf68de system.c:538 + mov word [bp+012h], ax ; 89 46 12 ; 0xf68e1 system.c:539 + mov word [bp+00ch], 0e6f5h ; c7 46 0c f5 e6 ; 0xf68e4 system.c:540 + mov word [bp+014h], 0f000h ; c7 46 14 00 f0 ; 0xf68e9 system.c:541 + jmp near 067b2h ; e9 c1 fe ; 0xf68ee system.c:542 + mov si, strict word 0000eh ; be 0e 00 ; 0xf68f1 system.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf68f4 + mov es, ax ; 8e c0 ; 0xf68f7 + mov ax, word [es:si] ; 26 8b 04 ; 0xf68f9 + mov word [bp+014h], ax ; 89 46 14 ; 0xf68fc system.c:49 + mov word [bp+018h], bx ; 89 5e 18 ; 0xf68ff system.c:546 + jmp near 067b2h ; e9 ad fe ; 0xf6902 system.c:547 + push 008afh ; 68 af 08 ; 0xf6905 system.c:550 + push strict byte 00008h ; 6a 08 ; 0xf6908 + jmp short 068c6h ; eb ba ; 0xf690a + test byte [bp+012h], 0ffh ; f6 46 12 ff ; 0xf690c system.c:562 + jne short 0692bh ; 75 19 ; 0xf6910 + mov word [bp+012h], ax ; 89 46 12 ; 0xf6912 system.c:564 + mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf6915 system.c:565 + xor ah, ah ; 30 e4 ; 0xf6918 + cmp ax, strict word 00001h ; 3d 01 00 ; 0xf691a + jc short 06924h ; 72 05 ; 0xf691d + cmp ax, strict word 00003h ; 3d 03 00 ; 0xf691f + jbe short 068ffh ; 76 db ; 0xf6922 + or byte [bp+018h], 001h ; 80 4e 18 01 ; 0xf6924 system.c:568 + jmp near 067b2h ; e9 87 fe ; 0xf6928 system.c:569 + mov bx, 00db2h ; bb b2 0d ; 0xf692b system.c:573 + mov cx, ds ; 8c d9 ; 0xf692e + mov ax, strict word 00004h ; b8 04 00 ; 0xf6930 + call 019d3h ; e8 9d b0 ; 0xf6933 + push word [bp+00ch] ; ff 76 0c ; 0xf6936 + push word [bp+012h] ; ff 76 12 ; 0xf6939 + push 008c6h ; 68 c6 08 ; 0xf693c + push strict byte 00004h ; 6a 04 ; 0xf693f + call 01a14h ; e8 d0 b0 ; 0xf6941 + add sp, strict byte 00008h ; 83 c4 08 ; 0xf6944 + jmp short 068cch ; eb 83 ; 0xf6947 + ; disGetNextSymbol 0xf6949 LB 0x36fc -> off=0x0 cb=0000000000000057 uValue=00000000000f5349 'set_e820_range' +set_e820_range: ; 0xf6949 LB 0x57 + push si ; 56 ; 0xf6949 system.c:590 + push bp ; 55 ; 0xf694a + mov bp, sp ; 89 e5 ; 0xf694b + mov es, ax ; 8e c0 ; 0xf694d + mov si, dx ; 89 d6 ; 0xf694f + mov word [es:si], bx ; 26 89 1c ; 0xf6951 system.c:596 + mov word [es:si+002h], cx ; 26 89 4c 02 ; 0xf6954 + movzx ax, byte [bp+00ah] ; 0f b6 46 0a ; 0xf6958 system.c:597 + mov word [es:si+004h], ax ; 26 89 44 04 ; 0xf695c + mov word [es:si+006h], strict word 00000h ; 26 c7 44 06 00 00 ; 0xf6960 + sub word [bp+006h], bx ; 29 5e 06 ; 0xf6966 system.c:598 + sbb word [bp+008h], cx ; 19 4e 08 ; 0xf6969 + mov al, byte [bp+00ah] ; 8a 46 0a ; 0xf696c system.c:599 + sub byte [bp+00ch], al ; 28 46 0c ; 0xf696f + mov ax, word [bp+006h] ; 8b 46 06 ; 0xf6972 system.c:600 + mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf6975 + mov ax, word [bp+008h] ; 8b 46 08 ; 0xf6979 + mov word [es:si+00ah], ax ; 26 89 44 0a ; 0xf697c + movzx ax, byte [bp+00ch] ; 0f b6 46 0c ; 0xf6980 system.c:601 + mov word [es:si+00ch], ax ; 26 89 44 0c ; 0xf6984 + mov word [es:si+00eh], strict word 00000h ; 26 c7 44 0e 00 00 ; 0xf6988 + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf698e system.c:602 + mov word [es:si+010h], ax ; 26 89 44 10 ; 0xf6991 + mov word [es:si+012h], strict word 00000h ; 26 c7 44 12 00 00 ; 0xf6995 + pop bp ; 5d ; 0xf699b system.c:603 + pop si ; 5e ; 0xf699c + retn 0000ah ; c2 0a 00 ; 0xf699d + ; disGetNextSymbol 0xf69a0 LB 0x36a5 -> off=0x14 cb=0000000000000386 uValue=00000000000f53b4 'int15_function32' + db 01bh, 06bh, 03dh, 06bh, 060h, 06bh, 082h, 06bh, 0a2h, 06bh, 0c3h, 06bh, 0e7h, 06bh, 00bh, 06ch + db 04ah, 06ch, 076h, 06ch +int15_function32: ; 0xf69b4 LB 0x386 + push bp ; 55 ; 0xf69b4 system.c:605 + mov bp, sp ; 89 e5 ; 0xf69b5 + push si ; 56 ; 0xf69b7 + sub sp, strict byte 00008h ; 83 ec 08 ; 0xf69b8 + mov ax, word [bp+020h] ; 8b 46 20 ; 0xf69bb system.c:614 + shr ax, 008h ; c1 e8 08 ; 0xf69be + cmp ax, 000e8h ; 3d e8 00 ; 0xf69c1 + je near 06a3ah ; 0f 84 72 00 ; 0xf69c4 + cmp ax, 000d0h ; 3d d0 00 ; 0xf69c8 + jne near 06d0ah ; 0f 85 3b 03 ; 0xf69cb + mov ax, word [bp+020h] ; 8b 46 20 ; 0xf69cf system.c:616 + xor ah, ah ; 30 e4 ; 0xf69d2 + cmp ax, strict word 0004fh ; 3d 4f 00 ; 0xf69d4 + jne near 06d0ah ; 0f 85 2f 03 ; 0xf69d7 + cmp word [bp+016h], 05052h ; 81 7e 16 52 50 ; 0xf69db system.c:618 + jne near 06d0ah ; 0f 85 26 03 ; 0xf69e0 + cmp word [bp+014h], 04f43h ; 81 7e 14 43 4f ; 0xf69e4 + jne near 06d0ah ; 0f 85 1d 03 ; 0xf69e9 + cmp word [bp+01eh], 04d4fh ; 81 7e 1e 4f 4d ; 0xf69ed + jne near 06d0ah ; 0f 85 14 03 ; 0xf69f2 + cmp word [bp+01ch], 04445h ; 81 7e 1c 45 44 ; 0xf69f6 + jne near 06d0ah ; 0f 85 0b 03 ; 0xf69fb + mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf69ff + or ax, word [bp+008h] ; 0b 46 08 ; 0xf6a02 + jne near 06d0ah ; 0f 85 01 03 ; 0xf6a05 + mov ax, word [bp+006h] ; 8b 46 06 ; 0xf6a09 + or ax, word [bp+004h] ; 0b 46 04 ; 0xf6a0c + jne near 06d0ah ; 0f 85 f7 02 ; 0xf6a0f + and byte [bp+028h], 0feh ; 80 66 28 fe ; 0xf6a13 system.c:620 + mov ax, word [bp+014h] ; 8b 46 14 ; 0xf6a17 system.c:621 + mov word [bp+008h], ax ; 89 46 08 ; 0xf6a1a + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6a1d + mov word [bp+00ah], ax ; 89 46 0a ; 0xf6a20 + mov ax, word [bp+01ch] ; 8b 46 1c ; 0xf6a23 system.c:622 + mov word [bp+004h], ax ; 89 46 04 ; 0xf6a26 + mov ax, word [bp+01eh] ; 8b 46 1e ; 0xf6a29 + mov word [bp+006h], ax ; 89 46 06 ; 0xf6a2c + mov dword [bp+020h], strict dword 049413332h ; 66 c7 46 20 32 33 41 49 ; 0xf6a2f system.c:623 + jmp near 06d34h ; e9 fa 02 ; 0xf6a37 system.c:627 + mov ax, word [bp+020h] ; 8b 46 20 ; 0xf6a3a system.c:630 + xor ah, ah ; 30 e4 ; 0xf6a3d + cmp ax, strict word 00020h ; 3d 20 00 ; 0xf6a3f + je short 06a4eh ; 74 0a ; 0xf6a42 + cmp ax, strict word 00001h ; 3d 01 00 ; 0xf6a44 + je near 06cbdh ; 0f 84 72 02 ; 0xf6a47 + jmp near 06d0ah ; e9 bc 02 ; 0xf6a4b + cmp word [bp+01ah], 0534dh ; 81 7e 1a 4d 53 ; 0xf6a4e system.c:632 + jne near 06d0ah ; 0f 85 b3 02 ; 0xf6a53 + cmp word [bp+018h], 04150h ; 81 7e 18 50 41 ; 0xf6a57 + jne near 06d0ah ; 0f 85 aa 02 ; 0xf6a5c + mov ax, strict word 00035h ; b8 35 00 ; 0xf6a60 system.c:633 + call 01756h ; e8 f0 ac ; 0xf6a63 + movzx bx, al ; 0f b6 d8 ; 0xf6a66 + xor dx, dx ; 31 d2 ; 0xf6a69 + mov cx, strict word 00008h ; b9 08 00 ; 0xf6a6b system.c:634 + sal bx, 1 ; d1 e3 ; 0xf6a6e + rcl dx, 1 ; d1 d2 ; 0xf6a70 + loop 06a6eh ; e2 fa ; 0xf6a72 + mov ax, strict word 00034h ; b8 34 00 ; 0xf6a74 system.c:635 + call 01756h ; e8 dc ac ; 0xf6a77 + xor ah, ah ; 30 e4 ; 0xf6a7a + mov dx, bx ; 89 da ; 0xf6a7c + or dx, ax ; 09 c2 ; 0xf6a7e + xor bx, bx ; 31 db ; 0xf6a80 system.c:644 + add bx, bx ; 01 db ; 0xf6a82 + adc dx, 00100h ; 81 d2 00 01 ; 0xf6a84 + cmp dx, 00100h ; 81 fa 00 01 ; 0xf6a88 system.c:646 + jc short 06a94h ; 72 06 ; 0xf6a8c + jne short 06ac1h ; 75 31 ; 0xf6a8e + test bx, bx ; 85 db ; 0xf6a90 + jnbe short 06ac1h ; 77 2d ; 0xf6a92 + mov ax, strict word 00031h ; b8 31 00 ; 0xf6a94 system.c:647 + call 01756h ; e8 bc ac ; 0xf6a97 + movzx bx, al ; 0f b6 d8 ; 0xf6a9a + xor dx, dx ; 31 d2 ; 0xf6a9d + mov cx, strict word 00008h ; b9 08 00 ; 0xf6a9f system.c:648 + sal bx, 1 ; d1 e3 ; 0xf6aa2 + rcl dx, 1 ; d1 d2 ; 0xf6aa4 + loop 06aa2h ; e2 fa ; 0xf6aa6 + mov ax, strict word 00030h ; b8 30 00 ; 0xf6aa8 system.c:649 + call 01756h ; e8 a8 ac ; 0xf6aab + xor ah, ah ; 30 e4 ; 0xf6aae + or bx, ax ; 09 c3 ; 0xf6ab0 + mov cx, strict word 0000ah ; b9 0a 00 ; 0xf6ab2 system.c:650 + sal bx, 1 ; d1 e3 ; 0xf6ab5 + rcl dx, 1 ; d1 d2 ; 0xf6ab7 + loop 06ab5h ; e2 fa ; 0xf6ab9 + add bx, strict byte 00000h ; 83 c3 00 ; 0xf6abb system.c:651 + adc dx, strict byte 00010h ; 83 d2 10 ; 0xf6abe + mov ax, strict word 00062h ; b8 62 00 ; 0xf6ac1 system.c:656 + call 01756h ; e8 8f ac ; 0xf6ac4 + xor ah, ah ; 30 e4 ; 0xf6ac7 + mov word [bp-00ah], ax ; 89 46 f6 ; 0xf6ac9 + xor al, al ; 30 c0 ; 0xf6acc + mov word [bp-008h], ax ; 89 46 f8 ; 0xf6ace + mov cx, strict word 00008h ; b9 08 00 ; 0xf6ad1 system.c:657 + sal word [bp-00ah], 1 ; d1 66 f6 ; 0xf6ad4 + rcl word [bp-008h], 1 ; d1 56 f8 ; 0xf6ad7 + loop 06ad4h ; e2 f8 ; 0xf6ada + mov ax, strict word 00061h ; b8 61 00 ; 0xf6adc system.c:658 + call 01756h ; e8 74 ac ; 0xf6adf + xor ah, ah ; 30 e4 ; 0xf6ae2 + or word [bp-00ah], ax ; 09 46 f6 ; 0xf6ae4 + mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf6ae7 system.c:659 + mov word [bp-008h], ax ; 89 46 f8 ; 0xf6aea + mov word [bp-00ah], strict word 00000h ; c7 46 f6 00 00 ; 0xf6aed + mov ax, strict word 00063h ; b8 63 00 ; 0xf6af2 system.c:660 + call 01756h ; e8 5e ac ; 0xf6af5 + mov byte [bp-004h], al ; 88 46 fc ; 0xf6af8 + mov byte [bp-006h], al ; 88 46 fa ; 0xf6afb + mov ax, word [bp+014h] ; 8b 46 14 ; 0xf6afe system.c:674 + cmp ax, strict word 00009h ; 3d 09 00 ; 0xf6b01 + jnbe near 06d0ah ; 0f 87 02 02 ; 0xf6b04 + mov si, ax ; 89 c6 ; 0xf6b08 + add si, ax ; 01 c6 ; 0xf6b0a + mov cx, bx ; 89 d9 ; 0xf6b0c + add cx, strict byte 00000h ; 83 c1 00 ; 0xf6b0e + mov ax, dx ; 89 d0 ; 0xf6b11 + adc ax, strict word 0ffffh ; 15 ff ff ; 0xf6b13 + jmp word [cs:si+069a0h] ; 2e ff a4 a0 69 ; 0xf6b16 + push strict byte 00001h ; 6a 01 ; 0xf6b1b system.c:677 + push dword 000000000h ; 66 6a 00 ; 0xf6b1d + push strict byte 00009h ; 6a 09 ; 0xf6b20 + push 0fc00h ; 68 00 fc ; 0xf6b22 + mov dx, word [bp+004h] ; 8b 56 04 ; 0xf6b25 + mov ax, word [bp+024h] ; 8b 46 24 ; 0xf6b28 + xor bx, bx ; 31 db ; 0xf6b2b + xor cx, cx ; 31 c9 ; 0xf6b2d + call 06949h ; e8 17 fe ; 0xf6b2f + mov dword [bp+014h], strict dword 000000001h ; 66 c7 46 14 01 00 00 00 ; 0xf6b32 system.c:683 + jmp near 06ca7h ; e9 6a 01 ; 0xf6b3a system.c:684 + push strict byte 00002h ; 6a 02 ; 0xf6b3d system.c:686 + push dword 000000000h ; 66 6a 00 ; 0xf6b3f + push strict byte 0000ah ; 6a 0a ; 0xf6b42 + push strict byte 00000h ; 6a 00 ; 0xf6b44 + mov dx, word [bp+004h] ; 8b 56 04 ; 0xf6b46 + mov ax, word [bp+024h] ; 8b 46 24 ; 0xf6b49 + mov bx, 0fc00h ; bb 00 fc ; 0xf6b4c + mov cx, strict word 00009h ; b9 09 00 ; 0xf6b4f + call 06949h ; e8 f4 fd ; 0xf6b52 + mov dword [bp+014h], strict dword 000000002h ; 66 c7 46 14 02 00 00 00 ; 0xf6b55 system.c:692 + jmp near 06ca7h ; e9 47 01 ; 0xf6b5d system.c:693 + push strict byte 00002h ; 6a 02 ; 0xf6b60 system.c:707 + push dword 000000000h ; 66 6a 00 ; 0xf6b62 + push strict byte 00010h ; 6a 10 ; 0xf6b65 + push strict byte 00000h ; 6a 00 ; 0xf6b67 + mov dx, word [bp+004h] ; 8b 56 04 ; 0xf6b69 + mov ax, word [bp+024h] ; 8b 46 24 ; 0xf6b6c + xor bx, bx ; 31 db ; 0xf6b6f + mov cx, strict word 0000fh ; b9 0f 00 ; 0xf6b71 + call 06949h ; e8 d2 fd ; 0xf6b74 + mov dword [bp+014h], strict dword 000000003h ; 66 c7 46 14 03 00 00 00 ; 0xf6b77 system.c:713 + jmp near 06ca7h ; e9 25 01 ; 0xf6b7f system.c:714 + push strict byte 00001h ; 6a 01 ; 0xf6b82 system.c:717 + push dword 000000000h ; 66 6a 00 ; 0xf6b84 + push ax ; 50 ; 0xf6b87 + push cx ; 51 ; 0xf6b88 + mov dx, word [bp+004h] ; 8b 56 04 ; 0xf6b89 + mov ax, word [bp+024h] ; 8b 46 24 ; 0xf6b8c + xor bx, bx ; 31 db ; 0xf6b8f + mov cx, strict word 00010h ; b9 10 00 ; 0xf6b91 + call 06949h ; e8 b2 fd ; 0xf6b94 + mov dword [bp+014h], strict dword 000000004h ; 66 c7 46 14 04 00 00 00 ; 0xf6b97 system.c:720 + jmp near 06ca7h ; e9 05 01 ; 0xf6b9f system.c:727 + push strict byte 00003h ; 6a 03 ; 0xf6ba2 system.c:729 + push dword 000000000h ; 66 6a 00 ; 0xf6ba4 + push dx ; 52 ; 0xf6ba7 + push bx ; 53 ; 0xf6ba8 + mov dx, word [bp+004h] ; 8b 56 04 ; 0xf6ba9 + mov si, word [bp+024h] ; 8b 76 24 ; 0xf6bac + mov bx, cx ; 89 cb ; 0xf6baf + mov cx, ax ; 89 c1 ; 0xf6bb1 + mov ax, si ; 89 f0 ; 0xf6bb3 + call 06949h ; e8 91 fd ; 0xf6bb5 + mov dword [bp+014h], strict dword 000000005h ; 66 c7 46 14 05 00 00 00 ; 0xf6bb8 system.c:732 + jmp near 06ca7h ; e9 e4 00 ; 0xf6bc0 system.c:733 + push strict byte 00002h ; 6a 02 ; 0xf6bc3 system.c:735 + push dword 000000000h ; 66 6a 00 ; 0xf6bc5 + push 0fec0h ; 68 c0 fe ; 0xf6bc8 + push 01000h ; 68 00 10 ; 0xf6bcb + mov dx, word [bp+004h] ; 8b 56 04 ; 0xf6bce + mov ax, word [bp+024h] ; 8b 46 24 ; 0xf6bd1 + xor bx, bx ; 31 db ; 0xf6bd4 + mov cx, 0fec0h ; b9 c0 fe ; 0xf6bd6 + call 06949h ; e8 6d fd ; 0xf6bd9 + mov dword [bp+014h], strict dword 000000006h ; 66 c7 46 14 06 00 00 00 ; 0xf6bdc system.c:738 + jmp near 06ca7h ; e9 c0 00 ; 0xf6be4 system.c:739 + push strict byte 00002h ; 6a 02 ; 0xf6be7 system.c:741 + push dword 000000000h ; 66 6a 00 ; 0xf6be9 + push 0fee0h ; 68 e0 fe ; 0xf6bec + push 01000h ; 68 00 10 ; 0xf6bef + mov dx, word [bp+004h] ; 8b 56 04 ; 0xf6bf2 + mov ax, word [bp+024h] ; 8b 46 24 ; 0xf6bf5 + xor bx, bx ; 31 db ; 0xf6bf8 + mov cx, 0fee0h ; b9 e0 fe ; 0xf6bfa + call 06949h ; e8 49 fd ; 0xf6bfd + mov dword [bp+014h], strict dword 000000007h ; 66 c7 46 14 07 00 00 00 ; 0xf6c00 system.c:744 + jmp near 06ca7h ; e9 9c 00 ; 0xf6c08 system.c:745 + push strict byte 00002h ; 6a 02 ; 0xf6c0b system.c:752 + push dword 000000000h ; 66 6a 00 ; 0xf6c0d + push dword 000000000h ; 66 6a 00 ; 0xf6c10 + mov dx, word [bp+004h] ; 8b 56 04 ; 0xf6c13 + mov ax, word [bp+024h] ; 8b 46 24 ; 0xf6c16 + xor bx, bx ; 31 db ; 0xf6c19 + mov cx, strict word 0fffch ; b9 fc ff ; 0xf6c1b + call 06949h ; e8 28 fd ; 0xf6c1e + cmp byte [bp-004h], 000h ; 80 7e fc 00 ; 0xf6c21 + jne short 06c2eh ; 75 07 ; 0xf6c25 + mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf6c27 + test ax, ax ; 85 c0 ; 0xf6c2a + je short 06c42h ; 74 14 ; 0xf6c2c + mov dword [bp+014h], strict dword 000000009h ; 66 c7 46 14 09 00 00 00 ; 0xf6c2e + jmp short 06ca7h ; eb 6f ; 0xf6c36 + mov dword [bp+014h], strict dword 000000008h ; 66 c7 46 14 08 00 00 00 ; 0xf6c38 system.c:755 + jmp short 06ca7h ; eb 65 ; 0xf6c40 system.c:756 + mov word [bp+014h], ax ; 89 46 14 ; 0xf6c42 system.c:761 + mov word [bp+016h], ax ; 89 46 16 ; 0xf6c45 + jmp short 06ca7h ; eb 5d ; 0xf6c48 system.c:763 + push strict byte 00002h ; 6a 02 ; 0xf6c4a system.c:766 + push dword 000000000h ; 66 6a 00 ; 0xf6c4c + push dword 000000000h ; 66 6a 00 ; 0xf6c4f + mov dx, word [bp+004h] ; 8b 56 04 ; 0xf6c52 + mov ax, word [bp+024h] ; 8b 46 24 ; 0xf6c55 + xor bx, bx ; 31 db ; 0xf6c58 + xor cx, cx ; 31 c9 ; 0xf6c5a + call 06949h ; e8 ea fc ; 0xf6c5c + cmp byte [bp-004h], 000h ; 80 7e fc 00 ; 0xf6c5f system.c:769 + jne short 06c6ch ; 75 07 ; 0xf6c63 + mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf6c65 + test ax, ax ; 85 c0 ; 0xf6c68 + je short 06c6eh ; 74 02 ; 0xf6c6a + jmp short 06c2eh ; eb c0 ; 0xf6c6c + mov word [bp+014h], ax ; 89 46 14 ; 0xf6c6e system.c:772 + mov word [bp+016h], ax ; 89 46 16 ; 0xf6c71 + jmp short 06ca7h ; eb 31 ; 0xf6c74 system.c:773 + cmp byte [bp-004h], 000h ; 80 7e fc 00 ; 0xf6c76 system.c:781 + jne short 06c82h ; 75 06 ; 0xf6c7a + cmp word [bp-008h], strict byte 00000h ; 83 7e f8 00 ; 0xf6c7c + je short 06ca7h ; 74 25 ; 0xf6c80 + push strict byte 00001h ; 6a 01 ; 0xf6c82 system.c:783 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf6c84 + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf6c87 + xor ah, ah ; 30 e4 ; 0xf6c89 + push ax ; 50 ; 0xf6c8b + push strict byte 00001h ; 6a 01 ; 0xf6c8c + push dword [bp-00ah] ; 66 ff 76 f6 ; 0xf6c8e + mov dx, word [bp+004h] ; 8b 56 04 ; 0xf6c92 + mov ax, word [bp+024h] ; 8b 46 24 ; 0xf6c95 + xor bx, bx ; 31 db ; 0xf6c98 + xor cx, cx ; 31 c9 ; 0xf6c9a + call 06949h ; e8 aa fc ; 0xf6c9c + xor ax, ax ; 31 c0 ; 0xf6c9f system.c:786 + mov word [bp+014h], ax ; 89 46 14 ; 0xf6ca1 + mov word [bp+016h], ax ; 89 46 16 ; 0xf6ca4 + mov dword [bp+020h], strict dword 0534d4150h ; 66 c7 46 20 50 41 4d 53 ; 0xf6ca7 system.c:802 + mov dword [bp+01ch], strict dword 000000014h ; 66 c7 46 1c 14 00 00 00 ; 0xf6caf system.c:803 + and byte [bp+028h], 0feh ; 80 66 28 fe ; 0xf6cb7 system.c:804 + jmp short 06d34h ; eb 77 ; 0xf6cbb system.c:809 + and byte [bp+028h], 0feh ; 80 66 28 fe ; 0xf6cbd system.c:813 + mov ax, strict word 00031h ; b8 31 00 ; 0xf6cc1 system.c:823 + call 01756h ; e8 8f aa ; 0xf6cc4 + xor ah, ah ; 30 e4 ; 0xf6cc7 + mov dx, ax ; 89 c2 ; 0xf6cc9 + sal dx, 008h ; c1 e2 08 ; 0xf6ccb + mov ax, strict word 00030h ; b8 30 00 ; 0xf6cce + call 01756h ; e8 82 aa ; 0xf6cd1 + xor ah, ah ; 30 e4 ; 0xf6cd4 + or dx, ax ; 09 c2 ; 0xf6cd6 + mov word [bp+01ch], dx ; 89 56 1c ; 0xf6cd8 + cmp dx, 03c00h ; 81 fa 00 3c ; 0xf6cdb system.c:826 + jbe short 06ce6h ; 76 05 ; 0xf6cdf + mov word [bp+01ch], 03c00h ; c7 46 1c 00 3c ; 0xf6ce1 system.c:827 + mov ax, strict word 00035h ; b8 35 00 ; 0xf6ce6 system.c:830 + call 01756h ; e8 6a aa ; 0xf6ce9 + movzx dx, al ; 0f b6 d0 ; 0xf6cec + sal dx, 008h ; c1 e2 08 ; 0xf6cef + mov ax, strict word 00034h ; b8 34 00 ; 0xf6cf2 + call 01756h ; e8 5e aa ; 0xf6cf5 + xor ah, ah ; 30 e4 ; 0xf6cf8 + or dx, ax ; 09 c2 ; 0xf6cfa + mov word [bp+018h], dx ; 89 56 18 ; 0xf6cfc + mov ax, word [bp+01ch] ; 8b 46 1c ; 0xf6cff system.c:833 + mov word [bp+020h], ax ; 89 46 20 ; 0xf6d02 + mov word [bp+014h], dx ; 89 56 14 ; 0xf6d05 system.c:834 + jmp short 06d34h ; eb 2a ; 0xf6d08 system.c:839 + mov bx, 00db2h ; bb b2 0d ; 0xf6d0a system.c:844 + mov cx, ds ; 8c d9 ; 0xf6d0d + mov ax, strict word 00004h ; b8 04 00 ; 0xf6d0f + call 019d3h ; e8 be ac ; 0xf6d12 + push word [bp+014h] ; ff 76 14 ; 0xf6d15 + push word [bp+020h] ; ff 76 20 ; 0xf6d18 + push 008c6h ; 68 c6 08 ; 0xf6d1b + push strict byte 00004h ; 6a 04 ; 0xf6d1e + call 01a14h ; e8 f1 ac ; 0xf6d20 + add sp, strict byte 00008h ; 83 c4 08 ; 0xf6d23 + or byte [bp+028h], 001h ; 80 4e 28 01 ; 0xf6d26 system.c:845 + mov ax, word [bp+020h] ; 8b 46 20 ; 0xf6d2a system.c:846 + xor al, al ; 30 c0 ; 0xf6d2d + or AL, strict byte 086h ; 0c 86 ; 0xf6d2f + mov word [bp+020h], ax ; 89 46 20 ; 0xf6d31 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf6d34 system.c:849 + pop si ; 5e ; 0xf6d37 + pop bp ; 5d ; 0xf6d38 + retn ; c3 ; 0xf6d39 + ; disGetNextSymbol 0xf6d3a LB 0x330b -> off=0x0 cb=0000000000000156 uValue=00000000000f573a 'int15_blkmove' +int15_blkmove: ; 0xf6d3a LB 0x156 + push bp ; 55 ; 0xf6d3a system.c:858 + mov bp, sp ; 89 e5 ; 0xf6d3b + push si ; 56 ; 0xf6d3d + push di ; 57 ; 0xf6d3e + cli ; fa ; 0xf6d3f system.c:868 + mov ax, strict word 00001h ; b8 01 00 ; 0xf6d40 system.c:870 + call 065ebh ; e8 a5 f8 ; 0xf6d43 + mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf6d46 system.c:893 + sal bx, 004h ; c1 e3 04 ; 0xf6d49 + mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf6d4c + add ax, bx ; 01 d8 ; 0xf6d4f + mov dx, word [bp+006h] ; 8b 56 06 ; 0xf6d51 system.c:894 + shr dx, 00ch ; c1 ea 0c ; 0xf6d54 + mov cl, dl ; 88 d1 ; 0xf6d57 + cmp ax, bx ; 39 d8 ; 0xf6d59 system.c:895 + jnc short 06d5fh ; 73 02 ; 0xf6d5b + db 0feh, 0c1h + ; inc cl ; fe c1 ; 0xf6d5d system.c:896 + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6d5f system.c:897 + add bx, strict byte 00008h ; 83 c3 08 ; 0xf6d62 + mov es, [bp+006h] ; 8e 46 06 ; 0xf6d65 system.c:51 + mov word [es:bx], strict word 0002fh ; 26 c7 07 2f 00 ; 0xf6d68 + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6d6d system.c:898 + add bx, strict byte 0000ah ; 83 c3 0a ; 0xf6d70 + mov word [es:bx], ax ; 26 89 07 ; 0xf6d73 system.c:51 + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6d76 system.c:899 + add bx, strict byte 0000ch ; 83 c3 0c ; 0xf6d79 + mov byte [es:bx], cl ; 26 88 0f ; 0xf6d7c system.c:43 + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6d7f system.c:900 + add bx, strict byte 0000dh ; 83 c3 0d ; 0xf6d82 + mov byte [es:bx], 093h ; 26 c6 07 93 ; 0xf6d85 system.c:43 + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6d89 system.c:901 + add bx, strict byte 0000eh ; 83 c3 0e ; 0xf6d8c + mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf6d8f system.c:51 + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6d94 system.c:904 + add bx, strict byte 00020h ; 83 c3 20 ; 0xf6d97 + mov word [es:bx], strict word 0ffffh ; 26 c7 07 ff ff ; 0xf6d9a system.c:51 + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6d9f system.c:905 + add bx, strict byte 00022h ; 83 c3 22 ; 0xf6da2 + mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf6da5 system.c:53 + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6daa system.c:906 + add bx, strict byte 00024h ; 83 c3 24 ; 0xf6dad + mov byte [es:bx], 00fh ; 26 c6 07 0f ; 0xf6db0 system.c:41 + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6db4 system.c:907 + add bx, strict byte 00025h ; 83 c3 25 ; 0xf6db7 + mov byte [es:bx], 09bh ; 26 c6 07 9b ; 0xf6dba system.c:41 + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6dbe system.c:908 + add bx, strict byte 00026h ; 83 c3 26 ; 0xf6dc1 + mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf6dc4 system.c:51 + mov ax, ss ; 8c d0 ; 0xf6dc9 system.c:911 + mov cx, ax ; 89 c1 ; 0xf6dcb + sal ax, 004h ; c1 e0 04 ; 0xf6dcd system.c:912 + shr cx, 00ch ; c1 e9 0c ; 0xf6dd0 + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6dd3 system.c:914 + add bx, strict byte 00028h ; 83 c3 28 ; 0xf6dd6 + mov word [es:bx], strict word 0ffffh ; 26 c7 07 ff ff ; 0xf6dd9 system.c:51 + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6dde system.c:915 + add bx, strict byte 0002ah ; 83 c3 2a ; 0xf6de1 + mov word [es:bx], ax ; 26 89 07 ; 0xf6de4 system.c:51 + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6de7 system.c:916 + add bx, strict byte 0002ch ; 83 c3 2c ; 0xf6dea + mov byte [es:bx], cl ; 26 88 0f ; 0xf6ded system.c:41 + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6df0 system.c:917 + add bx, strict byte 0002dh ; 83 c3 2d ; 0xf6df3 + mov byte [es:bx], 093h ; 26 c6 07 93 ; 0xf6df6 system.c:43 + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6dfa system.c:918 + add bx, strict byte 0002eh ; 83 c3 2e ; 0xf6dfd + mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf6e00 system.c:53 + mov si, word [bp+00ah] ; 8b 76 0a ; 0xf6e05 system.c:924 + mov cx, word [bp+014h] ; 8b 4e 14 ; 0xf6e08 + push DS ; 1e ; 0xf6e0b + push eax ; 66 50 ; 0xf6e0c + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xf6e0e + mov ds, ax ; 8e d8 ; 0xf6e10 + mov word [00467h], sp ; 89 26 67 04 ; 0xf6e12 + mov [00469h], ss ; 8c 16 69 04 ; 0xf6e16 + lgdt [es:si+008h] ; 26 0f 01 54 08 ; 0xf6e1a system.c:928 + lidt [cs:0efe1h] ; 2e 0f 01 1e e1 ef ; 0xf6e1f + push strict byte 00020h ; 6a 20 ; 0xf6e25 + call 06e2ah ; e8 00 00 ; 0xf6e27 + pop ax ; 58 ; 0xf6e2a + add ax, strict byte 0000eh ; 83 c0 0e ; 0xf6e2b + push ax ; 50 ; 0xf6e2e + mov eax, cr0 ; 0f 20 c0 ; 0xf6e2f + or AL, strict byte 001h ; 0c 01 ; 0xf6e32 + mov cr0, eax ; 0f 22 c0 ; 0xf6e34 + retf ; cb ; 0xf6e37 + mov ax, strict word 00010h ; b8 10 00 ; 0xf6e38 + mov ds, ax ; 8e d8 ; 0xf6e3b + add AL, strict byte 008h ; 04 08 ; 0xf6e3d + mov es, ax ; 8e c0 ; 0xf6e3f + add AL, strict byte 010h ; 04 10 ; 0xf6e41 + mov ss, ax ; 8e d0 ; 0xf6e43 + db 033h, 0f6h + ; xor si, si ; 33 f6 ; 0xf6e45 system.c:929 + db 033h, 0ffh + ; xor di, di ; 33 ff ; 0xf6e47 + cld ; fc ; 0xf6e49 + rep movsw ; f3 a5 ; 0xf6e4a + mov ax, strict word 00028h ; b8 28 00 ; 0xf6e4c system.c:930 + mov ds, ax ; 8e d8 ; 0xf6e4f + mov es, ax ; 8e c0 ; 0xf6e51 + push 0f000h ; 68 00 f0 ; 0xf6e53 + call 06e59h ; e8 00 00 ; 0xf6e56 + pop ax ; 58 ; 0xf6e59 + add ax, strict byte 0000eh ; 83 c0 0e ; 0xf6e5a + push ax ; 50 ; 0xf6e5d + mov eax, cr0 ; 0f 20 c0 ; 0xf6e5e + and AL, strict byte 0feh ; 24 fe ; 0xf6e61 + mov cr0, eax ; 0f 22 c0 ; 0xf6e63 + retf ; cb ; 0xf6e66 + lidt [cs:0efe7h] ; 2e 0f 01 1e e7 ef ; 0xf6e67 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xf6e6d system.c:931 + mov ds, ax ; 8e d8 ; 0xf6e6f + mov es, ax ; 8e c0 ; 0xf6e71 + lss sp, [00467h] ; 0f b2 26 67 04 ; 0xf6e73 + pop eax ; 66 58 ; 0xf6e78 + pop DS ; 1f ; 0xf6e7a + xor ax, ax ; 31 c0 ; 0xf6e7b system.c:933 + call 065ebh ; e8 6b f7 ; 0xf6e7d + sti ; fb ; 0xf6e80 system.c:936 + mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf6e81 system.c:938 + and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf6e85 system.c:939 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf6e89 system.c:940 + pop di ; 5f ; 0xf6e8c + pop si ; 5e ; 0xf6e8d + pop bp ; 5d ; 0xf6e8e + retn ; c3 ; 0xf6e8f + ; disGetNextSymbol 0xf6e90 LB 0x31b5 -> off=0x0 cb=0000000000000195 uValue=00000000000f5890 'inv_op_handler' +inv_op_handler: ; 0xf6e90 LB 0x195 + push bp ; 55 ; 0xf6e90 invop.c:237 + mov bp, sp ; 89 e5 ; 0xf6e91 + push si ; 56 ; 0xf6e93 + push di ; 57 ; 0xf6e94 + push ax ; 50 ; 0xf6e95 + push ax ; 50 ; 0xf6e96 + les bx, [bp+018h] ; c4 5e 18 ; 0xf6e97 invop.c:239 + cmp byte [es:bx], 0f0h ; 26 80 3f f0 ; 0xf6e9a invop.c:241 + jne short 06ea6h ; 75 06 ; 0xf6e9e + inc word [bp+018h] ; ff 46 18 ; 0xf6ea0 invop.c:243 + jmp near 0701eh ; e9 78 01 ; 0xf6ea3 invop.c:244 + cmp word [es:bx], 0050fh ; 26 81 3f 0f 05 ; 0xf6ea6 + jne near 0701ah ; 0f 85 6b 01 ; 0xf6eab + mov si, 00800h ; be 00 08 ; 0xf6eaf invop.c:246 + xor ax, ax ; 31 c0 ; 0xf6eb2 + mov word [bp-006h], ax ; 89 46 fa ; 0xf6eb4 + mov word [bp-008h], ax ; 89 46 f8 ; 0xf6eb7 invop.c:249 + mov es, ax ; 8e c0 ; 0xf6eba invop.c:257 + mov bx, word [es:si+02ch] ; 26 8b 5c 2c ; 0xf6ebc + sub bx, strict byte 00006h ; 83 eb 06 ; 0xf6ec0 + mov dx, word [es:si+020h] ; 26 8b 54 20 ; 0xf6ec3 + mov ax, word [es:si+01ah] ; 26 8b 44 1a ; 0xf6ec7 invop.c:258 + mov es, dx ; 8e c2 ; 0xf6ecb + mov word [es:bx], ax ; 26 89 07 ; 0xf6ecd + mov es, [bp-006h] ; 8e 46 fa ; 0xf6ed0 invop.c:259 + mov ax, word [es:si+022h] ; 26 8b 44 22 ; 0xf6ed3 + mov es, dx ; 8e c2 ; 0xf6ed7 + mov word [es:bx+002h], ax ; 26 89 47 02 ; 0xf6ed9 + mov es, [bp-006h] ; 8e 46 fa ; 0xf6edd invop.c:260 + mov ax, word [es:si+018h] ; 26 8b 44 18 ; 0xf6ee0 + mov es, dx ; 8e c2 ; 0xf6ee4 + mov word [es:bx+004h], ax ; 26 89 47 04 ; 0xf6ee6 + mov es, [bp-006h] ; 8e 46 fa ; 0xf6eea invop.c:263 + movzx bx, byte [es:si+038h] ; 26 0f b6 5c 38 ; 0xf6eed + mov di, word [es:si+036h] ; 26 8b 7c 36 ; 0xf6ef2 + mov ax, word [es:si+024h] ; 26 8b 44 24 ; 0xf6ef6 invop.c:264 + xor dx, dx ; 31 d2 ; 0xf6efa + mov cx, strict word 00004h ; b9 04 00 ; 0xf6efc + sal ax, 1 ; d1 e0 ; 0xf6eff + rcl dx, 1 ; d1 d2 ; 0xf6f01 + loop 06effh ; e2 fa ; 0xf6f03 + cmp bx, dx ; 39 d3 ; 0xf6f05 + jne short 06f0dh ; 75 04 ; 0xf6f07 + cmp di, ax ; 39 c7 ; 0xf6f09 + je short 06f12h ; 74 05 ; 0xf6f0b + mov word [bp-008h], strict word 00001h ; c7 46 f8 01 00 ; 0xf6f0d invop.c:265 + mov es, [bp-006h] ; 8e 46 fa ; 0xf6f12 invop.c:266 + movzx di, byte [es:si+04ah] ; 26 0f b6 7c 4a ; 0xf6f15 + mov bx, word [es:si+048h] ; 26 8b 5c 48 ; 0xf6f1a + mov ax, word [es:si+01eh] ; 26 8b 44 1e ; 0xf6f1e invop.c:267 + xor dx, dx ; 31 d2 ; 0xf6f22 + mov cx, strict word 00004h ; b9 04 00 ; 0xf6f24 + sal ax, 1 ; d1 e0 ; 0xf6f27 + rcl dx, 1 ; d1 d2 ; 0xf6f29 + loop 06f27h ; e2 fa ; 0xf6f2b + cmp di, dx ; 39 d7 ; 0xf6f2d + jne short 06f35h ; 75 04 ; 0xf6f2f + cmp bx, ax ; 39 c3 ; 0xf6f31 + je short 06f39h ; 74 04 ; 0xf6f33 + or byte [bp-008h], 002h ; 80 4e f8 02 ; 0xf6f35 invop.c:268 + push strict byte 00000h ; 6a 00 ; 0xf6f39 invop.c:271 + push 00800h ; 68 00 08 ; 0xf6f3b + push strict byte 0001fh ; 6a 1f ; 0xf6f3e + db 08bh, 0dch + ; mov bx, sp ; 8b dc ; 0xf6f40 + lgdt [ss:bx] ; 36 0f 01 17 ; 0xf6f42 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf6f46 + mov es, [bp-006h] ; 8e 46 fa ; 0xf6f49 invop.c:274 + mov ax, word [es:si+03ah] ; 26 8b 44 3a ; 0xf6f4c + mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf6f50 + mov ax, word [es:si+036h] ; 26 8b 44 36 ; 0xf6f54 invop.c:275 + mov word [es:si+00ah], ax ; 26 89 44 0a ; 0xf6f58 + movzx dx, byte [es:si+039h] ; 26 0f b6 54 39 ; 0xf6f5c invop.c:276 + sal dx, 008h ; c1 e2 08 ; 0xf6f61 + movzx ax, byte [es:si+038h] ; 26 0f b6 44 38 ; 0xf6f64 + or dx, ax ; 09 c2 ; 0xf6f69 + mov word [es:si+00ch], dx ; 26 89 54 0c ; 0xf6f6b + mov word [es:si+00eh], strict word 00000h ; 26 c7 44 0e 00 00 ; 0xf6f6f invop.c:277 + mov ax, word [es:si+04ch] ; 26 8b 44 4c ; 0xf6f75 invop.c:280 + mov word [es:si], ax ; 26 89 04 ; 0xf6f79 + mov ax, word [es:si+048h] ; 26 8b 44 48 ; 0xf6f7c invop.c:281 + mov word [es:si+002h], ax ; 26 89 44 02 ; 0xf6f80 + movzx dx, byte [es:si+04bh] ; 26 0f b6 54 4b ; 0xf6f84 invop.c:282 + sal dx, 008h ; c1 e2 08 ; 0xf6f89 + movzx ax, byte [es:si+04ah] ; 26 0f b6 44 4a ; 0xf6f8c + or dx, ax ; 09 c2 ; 0xf6f91 + mov word [es:si+004h], dx ; 26 89 54 04 ; 0xf6f93 + movzx ax, byte [es:si+05ch] ; 26 0f b6 44 5c ; 0xf6f97 invop.c:285 + mov dx, word [es:si+05ah] ; 26 8b 54 5a ; 0xf6f9c + push ax ; 50 ; 0xf6fa0 invop.c:286 + push dx ; 52 ; 0xf6fa1 + push word [es:si+05eh] ; 26 ff 74 5e ; 0xf6fa2 + db 08bh, 0dch + ; mov bx, sp ; 8b dc ; 0xf6fa6 + lidt [ss:bx] ; 36 0f 01 1f ; 0xf6fa8 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf6fac + mov cx, word [bp-008h] ; 8b 4e f8 ; 0xf6faf invop.c:289 + mov ax, 00080h ; b8 80 00 ; 0xf6fb2 + mov ss, ax ; 8e d0 ; 0xf6fb5 + mov ax, word [ss:0001eh] ; 36 a1 1e 00 ; 0xf6fb7 + mov ds, ax ; 8e d8 ; 0xf6fbb + mov ax, word [ss:00024h] ; 36 a1 24 00 ; 0xf6fbd + mov es, ax ; 8e c0 ; 0xf6fc1 + smsw ax ; 0f 01 e0 ; 0xf6fc3 invop.c:290 + inc ax ; 40 ; 0xf6fc6 + lmsw ax ; 0f 01 f0 ; 0xf6fc7 + mov ax, strict word 00008h ; b8 08 00 ; 0xf6fca + test cx, strict word 00001h ; f7 c1 01 00 ; 0xf6fcd + je near 06fd7h ; 0f 84 02 00 ; 0xf6fd1 + mov es, ax ; 8e c0 ; 0xf6fd5 + test cx, strict word 00002h ; f7 c1 02 00 ; 0xf6fd7 + je near 06fffh ; 0f 84 20 00 ; 0xf6fdb + mov bx, word [word ss:00000h] ; 36 8b 1e 00 00 ; 0xf6fdf + mov word [word ss:00008h], bx ; 36 89 1e 08 00 ; 0xf6fe4 + mov bx, word [word ss:00002h] ; 36 8b 1e 02 00 ; 0xf6fe9 + mov word [word ss:0000ah], bx ; 36 89 1e 0a 00 ; 0xf6fee + mov bx, word [word ss:00004h] ; 36 8b 1e 04 00 ; 0xf6ff3 + mov word [word ss:0000ch], bx ; 36 89 1e 0c 00 ; 0xf6ff8 + mov ds, ax ; 8e d8 ; 0xf6ffd + mov eax, cr0 ; 0f 20 c0 ; 0xf6fff + dec ax ; 48 ; 0xf7002 + mov cr0, eax ; 0f 22 c0 ; 0xf7003 + mov sp, strict word 00026h ; bc 26 00 ; 0xf7006 invop.c:291 + popaw ; 61 ; 0xf7009 + mov sp, word [word ss:0002ch] ; 36 8b 26 2c 00 ; 0xf700a + sub sp, strict byte 00006h ; 83 ec 06 ; 0xf700f + mov ss, [word ss:00020h] ; 36 8e 16 20 00 ; 0xf7012 + iret ; cf ; 0xf7017 + jmp short 0701eh ; eb 04 ; 0xf7018 invop.c:343 + sti ; fb ; 0xf701a invop.c:347 + hlt ; f4 ; 0xf701b invop.c:348 + jmp short 0701bh ; eb fd ; 0xf701c + lea sp, [bp-004h] ; 8d 66 fc ; 0xf701e invop.c:350 + pop di ; 5f ; 0xf7021 + pop si ; 5e ; 0xf7022 + pop bp ; 5d ; 0xf7023 + retn ; c3 ; 0xf7024 + ; disGetNextSymbol 0xf7025 LB 0x3020 -> off=0x0 cb=0000000000000028 uValue=00000000000f5a25 'init_rtc' +init_rtc: ; 0xf7025 LB 0x28 + push bp ; 55 ; 0xf7025 timepci.c:74 + mov bp, sp ; 89 e5 ; 0xf7026 + push dx ; 52 ; 0xf7028 + mov dx, strict word 00026h ; ba 26 00 ; 0xf7029 timepci.c:76 + mov ax, strict word 0000ah ; b8 0a 00 ; 0xf702c + call 01773h ; e8 41 a7 ; 0xf702f + mov dx, strict word 00002h ; ba 02 00 ; 0xf7032 timepci.c:77 + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf7035 + call 01773h ; e8 38 a7 ; 0xf7038 + mov ax, strict word 0000ch ; b8 0c 00 ; 0xf703b timepci.c:78 + call 01756h ; e8 15 a7 ; 0xf703e + mov ax, strict word 0000dh ; b8 0d 00 ; 0xf7041 timepci.c:79 + call 01756h ; e8 0f a7 ; 0xf7044 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf7047 timepci.c:80 + pop dx ; 5a ; 0xf704a + pop bp ; 5d ; 0xf704b + retn ; c3 ; 0xf704c + ; disGetNextSymbol 0xf704d LB 0x2ff8 -> off=0x0 cb=0000000000000021 uValue=00000000000f5a4d 'rtc_updating' +rtc_updating: ; 0xf704d LB 0x21 + push bp ; 55 ; 0xf704d timepci.c:82 + mov bp, sp ; 89 e5 ; 0xf704e + push dx ; 52 ; 0xf7050 + mov dx, 061a8h ; ba a8 61 ; 0xf7051 timepci.c:95 + dec dx ; 4a ; 0xf7054 timepci.c:96 + je short 07065h ; 74 0e ; 0xf7055 + mov ax, strict word 0000ah ; b8 0a 00 ; 0xf7057 timepci.c:97 + call 01756h ; e8 f9 a6 ; 0xf705a + test AL, strict byte 080h ; a8 80 ; 0xf705d + jne short 07054h ; 75 f3 ; 0xf705f + xor ax, ax ; 31 c0 ; 0xf7061 timepci.c:98 + jmp short 07068h ; eb 03 ; 0xf7063 + mov ax, strict word 00001h ; b8 01 00 ; 0xf7065 timepci.c:100 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf7068 timepci.c:101 + pop dx ; 5a ; 0xf706b + pop bp ; 5d ; 0xf706c + retn ; c3 ; 0xf706d + ; disGetNextSymbol 0xf706e LB 0x2fd7 -> off=0x0 cb=0000000000000091 uValue=00000000000f5a6e 'int70_function' +int70_function: ; 0xf706e LB 0x91 + push bp ; 55 ; 0xf706e timepci.c:110 + mov bp, sp ; 89 e5 ; 0xf706f + push si ; 56 ; 0xf7071 + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf7072 timepci.c:116 + call 01756h ; e8 de a6 ; 0xf7075 + mov bl, al ; 88 c3 ; 0xf7078 + mov dh, al ; 88 c6 ; 0xf707a + mov ax, strict word 0000ch ; b8 0c 00 ; 0xf707c timepci.c:117 + call 01756h ; e8 d4 a6 ; 0xf707f + mov dl, al ; 88 c2 ; 0xf7082 + test bl, 060h ; f6 c3 60 ; 0xf7084 timepci.c:119 + je short 070f6h ; 74 6d ; 0xf7087 + test AL, strict byte 020h ; a8 20 ; 0xf7089 timepci.c:120 + je short 07091h ; 74 04 ; 0xf708b + sti ; fb ; 0xf708d timepci.c:122 + int 04ah ; cd 4a ; 0xf708e timepci.c:123 + cli ; fa ; 0xf7090 timepci.c:124 + test dl, 040h ; f6 c2 40 ; 0xf7091 timepci.c:126 + je short 070f6h ; 74 60 ; 0xf7094 + mov bx, 000a0h ; bb a0 00 ; 0xf7096 timepci.c:38 + mov ax, strict word 00040h ; b8 40 00 ; 0xf7099 + mov es, ax ; 8e c0 ; 0xf709c + mov al, byte [es:bx] ; 26 8a 07 ; 0xf709e + test al, al ; 84 c0 ; 0xf70a1 timepci.c:39 + je short 070f6h ; 74 51 ; 0xf70a3 + mov bx, 0009ch ; bb 9c 00 ; 0xf70a5 timepci.c:58 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf70a8 + mov bx, word [es:bx+002h] ; 26 8b 5f 02 ; 0xf70ab + test bx, bx ; 85 db ; 0xf70af timepci.c:134 + jne short 070e4h ; 75 31 ; 0xf70b1 + cmp ax, 003d1h ; 3d d1 03 ; 0xf70b3 + jnc short 070e4h ; 73 2c ; 0xf70b6 + mov bx, 00098h ; bb 98 00 ; 0xf70b8 timepci.c:48 + mov cx, word [es:bx] ; 26 8b 0f ; 0xf70bb + mov bx, 0009ah ; bb 9a 00 ; 0xf70be timepci.c:48 + mov bx, word [es:bx] ; 26 8b 1f ; 0xf70c1 + mov si, 000a0h ; be a0 00 ; 0xf70c4 timepci.c:43 + mov byte [es:si], 000h ; 26 c6 04 00 ; 0xf70c7 + mov al, dh ; 88 f0 ; 0xf70cb timepci.c:141 + and AL, strict byte 037h ; 24 37 ; 0xf70cd + movzx dx, al ; 0f b6 d0 ; 0xf70cf + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf70d2 + call 01773h ; e8 9b a6 ; 0xf70d5 + mov es, cx ; 8e c1 ; 0xf70d8 timepci.c:38 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf70da + or AL, strict byte 080h ; 0c 80 ; 0xf70dd timepci.c:39 + mov byte [es:bx], al ; 26 88 07 ; 0xf70df timepci.c:43 + jmp short 070f6h ; eb 12 ; 0xf70e2 timepci.c:143 + add ax, 0fc2fh ; 05 2f fc ; 0xf70e4 timepci.c:145 + mov dx, bx ; 89 da ; 0xf70e7 + adc dx, strict byte 0ffffh ; 83 d2 ff ; 0xf70e9 + mov bx, 0009ch ; bb 9c 00 ; 0xf70ec timepci.c:63 + mov word [es:bx], ax ; 26 89 07 ; 0xf70ef + mov word [es:bx+002h], dx ; 26 89 57 02 ; 0xf70f2 + call 0e030h ; e8 37 6f ; 0xf70f6 timepci.c:151 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf70f9 timepci.c:152 + pop si ; 5e ; 0xf70fc + pop bp ; 5d ; 0xf70fd + retn ; c3 ; 0xf70fe + ; disGetNextSymbol 0xf70ff LB 0x2f46 -> off=0x10 cb=00000000000001c8 uValue=00000000000f5b0f 'int1a_function' + db 026h, 071h, 04fh, 071h, 074h, 071h, 0a6h, 071h, 0f5h, 071h, 02dh, 072h, 070h, 072h, 0c7h, 072h +int1a_function: ; 0xf710f LB 0x1c8 + push bp ; 55 ; 0xf710f timepci.c:157 + mov bp, sp ; 89 e5 ; 0xf7110 + sti ; fb ; 0xf7112 timepci.c:163 + mov al, byte [bp+013h] ; 8a 46 13 ; 0xf7113 timepci.c:165 + cmp AL, strict byte 007h ; 3c 07 ; 0xf7116 + jnbe near 0714bh ; 0f 87 2f 00 ; 0xf7118 + movzx bx, al ; 0f b6 d8 ; 0xf711c + add bx, bx ; 01 db ; 0xf711f + jmp word [cs:bx+070ffh] ; 2e ff a7 ff 70 ; 0xf7121 + cli ; fa ; 0xf7126 timepci.c:167 + mov bx, 0046eh ; bb 6e 04 ; 0xf7127 timepci.c:168 + xor ax, ax ; 31 c0 ; 0xf712a + mov es, ax ; 8e c0 ; 0xf712c + mov ax, word [es:bx] ; 26 8b 07 ; 0xf712e + mov word [bp+010h], ax ; 89 46 10 ; 0xf7131 + mov bx, 0046ch ; bb 6c 04 ; 0xf7134 timepci.c:169 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf7137 + mov word [bp+00eh], ax ; 89 46 0e ; 0xf713a + mov bx, 00470h ; bb 70 04 ; 0xf713d timepci.c:170 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf7140 + mov byte [bp+012h], al ; 88 46 12 ; 0xf7143 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf7146 timepci.c:171 + sti ; fb ; 0xf714a timepci.c:172 + mov sp, bp ; 89 ec ; 0xf714b timepci.c:175 + pop bp ; 5d ; 0xf714d + retn ; c3 ; 0xf714e + cli ; fa ; 0xf714f timepci.c:178 + mov bx, 0046eh ; bb 6e 04 ; 0xf7150 timepci.c:179 + xor ax, ax ; 31 c0 ; 0xf7153 + mov es, ax ; 8e c0 ; 0xf7155 + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf7157 + mov word [es:bx], ax ; 26 89 07 ; 0xf715a + mov bx, 0046ch ; bb 6c 04 ; 0xf715d timepci.c:180 + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf7160 + mov word [es:bx], ax ; 26 89 07 ; 0xf7163 + mov bx, 00470h ; bb 70 04 ; 0xf7166 timepci.c:181 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf7169 + sti ; fb ; 0xf716d timepci.c:182 + mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf716e timepci.c:183 + jmp short 0714bh ; eb d7 ; 0xf7172 timepci.c:185 + call 0704dh ; e8 d6 fe ; 0xf7174 timepci.c:188 + test ax, ax ; 85 c0 ; 0xf7177 + je short 0717dh ; 74 02 ; 0xf7179 + jmp short 0714bh ; eb ce ; 0xf717b timepci.c:190 + xor ax, ax ; 31 c0 ; 0xf717d timepci.c:193 + call 01756h ; e8 d4 a5 ; 0xf717f + mov byte [bp+00fh], al ; 88 46 0f ; 0xf7182 + mov ax, strict word 00002h ; b8 02 00 ; 0xf7185 timepci.c:194 + call 01756h ; e8 cb a5 ; 0xf7188 + mov byte [bp+010h], al ; 88 46 10 ; 0xf718b + mov ax, strict word 00004h ; b8 04 00 ; 0xf718e timepci.c:195 + call 01756h ; e8 c2 a5 ; 0xf7191 + mov bl, al ; 88 c3 ; 0xf7194 + mov byte [bp+011h], al ; 88 46 11 ; 0xf7196 + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf7199 timepci.c:196 + call 01756h ; e8 b7 a5 ; 0xf719c + and AL, strict byte 001h ; 24 01 ; 0xf719f + mov byte [bp+00eh], al ; 88 46 0e ; 0xf71a1 + jmp short 071ebh ; eb 45 ; 0xf71a4 + call 0704dh ; e8 a4 fe ; 0xf71a6 timepci.c:213 + test ax, ax ; 85 c0 ; 0xf71a9 + je short 071b0h ; 74 03 ; 0xf71ab + call 07025h ; e8 75 fe ; 0xf71ad timepci.c:214 + movzx dx, byte [bp+00fh] ; 0f b6 56 0f ; 0xf71b0 timepci.c:217 + xor ax, ax ; 31 c0 ; 0xf71b4 + call 01773h ; e8 ba a5 ; 0xf71b6 + movzx dx, byte [bp+010h] ; 0f b6 56 10 ; 0xf71b9 timepci.c:218 + mov ax, strict word 00002h ; b8 02 00 ; 0xf71bd + call 01773h ; e8 b0 a5 ; 0xf71c0 + movzx dx, byte [bp+011h] ; 0f b6 56 11 ; 0xf71c3 timepci.c:219 + mov ax, strict word 00004h ; b8 04 00 ; 0xf71c7 + call 01773h ; e8 a6 a5 ; 0xf71ca + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf71cd timepci.c:221 + call 01756h ; e8 83 a5 ; 0xf71d0 + mov bl, al ; 88 c3 ; 0xf71d3 + and bl, 060h ; 80 e3 60 ; 0xf71d5 + or bl, 002h ; 80 cb 02 ; 0xf71d8 + mov al, byte [bp+00eh] ; 8a 46 0e ; 0xf71db + and AL, strict byte 001h ; 24 01 ; 0xf71de + or bl, al ; 08 c3 ; 0xf71e0 + movzx dx, bl ; 0f b6 d3 ; 0xf71e2 timepci.c:223 + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf71e5 + call 01773h ; e8 88 a5 ; 0xf71e8 + mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf71eb + mov byte [bp+012h], bl ; 88 5e 12 ; 0xf71ef + jmp near 0714bh ; e9 56 ff ; 0xf71f2 + mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf71f5 timepci.c:230 + call 0704dh ; e8 51 fe ; 0xf71f9 timepci.c:231 + test ax, ax ; 85 c0 ; 0xf71fc + je short 07203h ; 74 03 ; 0xf71fe + jmp near 0714bh ; e9 48 ff ; 0xf7200 timepci.c:233 + mov ax, strict word 00009h ; b8 09 00 ; 0xf7203 timepci.c:235 + call 01756h ; e8 4d a5 ; 0xf7206 + mov byte [bp+010h], al ; 88 46 10 ; 0xf7209 + mov ax, strict word 00008h ; b8 08 00 ; 0xf720c timepci.c:236 + call 01756h ; e8 44 a5 ; 0xf720f + mov byte [bp+00fh], al ; 88 46 0f ; 0xf7212 + mov ax, strict word 00007h ; b8 07 00 ; 0xf7215 timepci.c:237 + call 01756h ; e8 3b a5 ; 0xf7218 + mov byte [bp+00eh], al ; 88 46 0e ; 0xf721b + mov ax, strict word 00032h ; b8 32 00 ; 0xf721e timepci.c:238 + call 01756h ; e8 32 a5 ; 0xf7221 + mov byte [bp+011h], al ; 88 46 11 ; 0xf7224 + mov byte [bp+012h], al ; 88 46 12 ; 0xf7227 timepci.c:239 + jmp near 0714bh ; e9 1e ff ; 0xf722a timepci.c:241 + call 0704dh ; e8 1d fe ; 0xf722d timepci.c:254 + test ax, ax ; 85 c0 ; 0xf7230 + je short 0723ah ; 74 06 ; 0xf7232 + call 07025h ; e8 ee fd ; 0xf7234 timepci.c:255 + jmp near 0714bh ; e9 11 ff ; 0xf7237 timepci.c:257 + movzx dx, byte [bp+010h] ; 0f b6 56 10 ; 0xf723a timepci.c:259 + mov ax, strict word 00009h ; b8 09 00 ; 0xf723e + call 01773h ; e8 2f a5 ; 0xf7241 + movzx dx, byte [bp+00fh] ; 0f b6 56 0f ; 0xf7244 timepci.c:260 + mov ax, strict word 00008h ; b8 08 00 ; 0xf7248 + call 01773h ; e8 25 a5 ; 0xf724b + movzx dx, byte [bp+00eh] ; 0f b6 56 0e ; 0xf724e timepci.c:261 + mov ax, strict word 00007h ; b8 07 00 ; 0xf7252 + call 01773h ; e8 1b a5 ; 0xf7255 + movzx dx, byte [bp+011h] ; 0f b6 56 11 ; 0xf7258 timepci.c:262 + mov ax, strict word 00032h ; b8 32 00 ; 0xf725c + call 01773h ; e8 11 a5 ; 0xf725f + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf7262 timepci.c:263 + call 01756h ; e8 ee a4 ; 0xf7265 + mov bl, al ; 88 c3 ; 0xf7268 + and bl, 07fh ; 80 e3 7f ; 0xf726a + jmp near 071e2h ; e9 72 ff ; 0xf726d + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf7270 timepci.c:281 + call 01756h ; e8 e0 a4 ; 0xf7273 + mov bl, al ; 88 c3 ; 0xf7276 + mov word [bp+012h], strict word 00000h ; c7 46 12 00 00 ; 0xf7278 timepci.c:282 + test AL, strict byte 020h ; a8 20 ; 0xf727d timepci.c:283 + je short 07284h ; 74 03 ; 0xf727f + jmp near 0714bh ; e9 c7 fe ; 0xf7281 timepci.c:286 + call 0704dh ; e8 c6 fd ; 0xf7284 timepci.c:288 + test ax, ax ; 85 c0 ; 0xf7287 + je short 0728eh ; 74 03 ; 0xf7289 + call 07025h ; e8 97 fd ; 0xf728b timepci.c:289 + movzx dx, byte [bp+00fh] ; 0f b6 56 0f ; 0xf728e timepci.c:292 + mov ax, strict word 00001h ; b8 01 00 ; 0xf7292 + call 01773h ; e8 db a4 ; 0xf7295 + movzx dx, byte [bp+010h] ; 0f b6 56 10 ; 0xf7298 timepci.c:293 + mov ax, strict word 00003h ; b8 03 00 ; 0xf729c + call 01773h ; e8 d1 a4 ; 0xf729f + movzx dx, byte [bp+011h] ; 0f b6 56 11 ; 0xf72a2 timepci.c:294 + mov ax, strict word 00005h ; b8 05 00 ; 0xf72a6 + call 01773h ; e8 c7 a4 ; 0xf72a9 + mov dx, 000a1h ; ba a1 00 ; 0xf72ac timepci.c:295 + in AL, DX ; ec ; 0xf72af + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf72b0 + and AL, strict byte 0feh ; 24 fe ; 0xf72b2 + out DX, AL ; ee ; 0xf72b4 + mov al, bl ; 88 d8 ; 0xf72b5 timepci.c:297 + and AL, strict byte 05fh ; 24 5f ; 0xf72b7 + or AL, strict byte 020h ; 0c 20 ; 0xf72b9 + movzx dx, al ; 0f b6 d0 ; 0xf72bb + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf72be + call 01773h ; e8 af a4 ; 0xf72c1 + jmp near 0714bh ; e9 84 fe ; 0xf72c4 timepci.c:299 + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf72c7 timepci.c:312 + call 01756h ; e8 89 a4 ; 0xf72ca + mov bl, al ; 88 c3 ; 0xf72cd + and AL, strict byte 057h ; 24 57 ; 0xf72cf timepci.c:314 + movzx dx, al ; 0f b6 d0 ; 0xf72d1 + jmp near 071e5h ; e9 0e ff ; 0xf72d4 + ; disGetNextSymbol 0xf72d7 LB 0x2d6e -> off=0x0 cb=0000000000000034 uValue=00000000000f5cd7 'send_to_mouse_ctrl' +send_to_mouse_ctrl: ; 0xf72d7 LB 0x34 + push bp ; 55 ; 0xf72d7 ps2mouse.c:77 + mov bp, sp ; 89 e5 ; 0xf72d8 + push bx ; 53 ; 0xf72da + push dx ; 52 ; 0xf72db + mov bl, al ; 88 c3 ; 0xf72dc + mov dx, strict word 00064h ; ba 64 00 ; 0xf72de ps2mouse.c:81 + in AL, DX ; ec ; 0xf72e1 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf72e2 + test AL, strict byte 002h ; a8 02 ; 0xf72e4 + je short 072f6h ; 74 0e ; 0xf72e6 + push 00900h ; 68 00 09 ; 0xf72e8 ps2mouse.c:82 + push 0117ah ; 68 7a 11 ; 0xf72eb + push strict byte 00007h ; 6a 07 ; 0xf72ee + call 01a14h ; e8 21 a7 ; 0xf72f0 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf72f3 + mov AL, strict byte 0d4h ; b0 d4 ; 0xf72f6 ps2mouse.c:83 + mov dx, strict word 00064h ; ba 64 00 ; 0xf72f8 + out DX, AL ; ee ; 0xf72fb + mov al, bl ; 88 d8 ; 0xf72fc ps2mouse.c:84 + mov dx, strict word 00060h ; ba 60 00 ; 0xf72fe + out DX, AL ; ee ; 0xf7301 + xor al, bl ; 30 d8 ; 0xf7302 ps2mouse.c:86 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf7304 + pop dx ; 5a ; 0xf7307 + pop bx ; 5b ; 0xf7308 + pop bp ; 5d ; 0xf7309 + retn ; c3 ; 0xf730a + ; disGetNextSymbol 0xf730b LB 0x2d3a -> off=0x0 cb=000000000000005c uValue=00000000000f5d0b 'get_mouse_data' +get_mouse_data: ; 0xf730b LB 0x5c + push bp ; 55 ; 0xf730b ps2mouse.c:89 + mov bp, sp ; 89 e5 ; 0xf730c + push bx ; 53 ; 0xf730e + push cx ; 51 ; 0xf730f + push ax ; 50 ; 0xf7310 + mov bx, ax ; 89 c3 ; 0xf7311 + mov es, dx ; 8e c2 ; 0xf7313 + mov cx, 02710h ; b9 10 27 ; 0xf7315 ps2mouse.c:91 + mov dx, strict word 00064h ; ba 64 00 ; 0xf7318 ps2mouse.c:94 + in AL, DX ; ec ; 0xf731b + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf731c + and ax, strict word 00021h ; 25 21 00 ; 0xf731e + cmp ax, strict word 00021h ; 3d 21 00 ; 0xf7321 + je short 0734dh ; 74 27 ; 0xf7324 + test cx, cx ; 85 c9 ; 0xf7326 + je short 0734dh ; 74 23 ; 0xf7328 + mov dx, strict word 00061h ; ba 61 00 ; 0xf732a ps2mouse.c:97 + in AL, DX ; ec ; 0xf732d + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf732e + and AL, strict byte 010h ; 24 10 ; 0xf7330 + mov byte [bp-006h], al ; 88 46 fa ; 0xf7332 + mov dx, strict word 00061h ; ba 61 00 ; 0xf7335 ps2mouse.c:98 + in AL, DX ; ec ; 0xf7338 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf7339 + mov dx, ax ; 89 c2 ; 0xf733b + xor dh, ah ; 30 e6 ; 0xf733d + and dl, 010h ; 80 e2 10 ; 0xf733f + movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf7342 + cmp dx, ax ; 39 c2 ; 0xf7346 + je short 07335h ; 74 eb ; 0xf7348 + dec cx ; 49 ; 0xf734a ps2mouse.c:100 + jmp short 07318h ; eb cb ; 0xf734b ps2mouse.c:101 + test cx, cx ; 85 c9 ; 0xf734d ps2mouse.c:103 + jne short 07355h ; 75 04 ; 0xf734f + mov AL, strict byte 001h ; b0 01 ; 0xf7351 ps2mouse.c:104 + jmp short 07360h ; eb 0b ; 0xf7353 + mov dx, strict word 00060h ; ba 60 00 ; 0xf7355 ps2mouse.c:106 + in AL, DX ; ec ; 0xf7358 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf7359 + mov byte [es:bx], al ; 26 88 07 ; 0xf735b ps2mouse.c:107 + xor al, al ; 30 c0 ; 0xf735e ps2mouse.c:108 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf7360 ps2mouse.c:109 + pop cx ; 59 ; 0xf7363 + pop bx ; 5b ; 0xf7364 + pop bp ; 5d ; 0xf7365 + retn ; c3 ; 0xf7366 + ; disGetNextSymbol 0xf7367 LB 0x2cde -> off=0x0 cb=0000000000000032 uValue=00000000000f5d67 'set_kbd_command_byte' +set_kbd_command_byte: ; 0xf7367 LB 0x32 + push bp ; 55 ; 0xf7367 ps2mouse.c:111 + mov bp, sp ; 89 e5 ; 0xf7368 + push bx ; 53 ; 0xf736a + push dx ; 52 ; 0xf736b + mov bl, al ; 88 c3 ; 0xf736c + mov dx, strict word 00064h ; ba 64 00 ; 0xf736e ps2mouse.c:113 + in AL, DX ; ec ; 0xf7371 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf7372 + test AL, strict byte 002h ; a8 02 ; 0xf7374 + je short 07386h ; 74 0e ; 0xf7376 + push 0090ah ; 68 0a 09 ; 0xf7378 ps2mouse.c:114 + push 0117ah ; 68 7a 11 ; 0xf737b + push strict byte 00007h ; 6a 07 ; 0xf737e + call 01a14h ; e8 91 a6 ; 0xf7380 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf7383 + mov AL, strict byte 060h ; b0 60 ; 0xf7386 ps2mouse.c:116 + mov dx, strict word 00064h ; ba 64 00 ; 0xf7388 + out DX, AL ; ee ; 0xf738b + mov al, bl ; 88 d8 ; 0xf738c ps2mouse.c:117 + mov dx, strict word 00060h ; ba 60 00 ; 0xf738e + out DX, AL ; ee ; 0xf7391 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf7392 ps2mouse.c:118 + pop dx ; 5a ; 0xf7395 + pop bx ; 5b ; 0xf7396 + pop bp ; 5d ; 0xf7397 + retn ; c3 ; 0xf7398 + ; disGetNextSymbol 0xf7399 LB 0x2cac -> off=0x0 cb=0000000000000094 uValue=00000000000f5d99 'int74_function' +int74_function: ; 0xf7399 LB 0x94 + push bp ; 55 ; 0xf7399 ps2mouse.c:121 + mov bp, sp ; 89 e5 ; 0xf739a + push si ; 56 ; 0xf739c + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf739d ps2mouse.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf73a0 + mov es, ax ; 8e c0 ; 0xf73a3 + mov bx, word [es:bx] ; 26 8b 1f ; 0xf73a5 + mov word [bp+004h], strict word 00000h ; c7 46 04 00 00 ; 0xf73a8 ps2mouse.c:129 + mov dx, strict word 00064h ; ba 64 00 ; 0xf73ad ps2mouse.c:131 + in AL, DX ; ec ; 0xf73b0 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf73b1 + and AL, strict byte 021h ; 24 21 ; 0xf73b3 ps2mouse.c:132 + cmp AL, strict byte 021h ; 3c 21 ; 0xf73b5 + jne short 07427h ; 75 6e ; 0xf73b7 + mov dx, strict word 00060h ; ba 60 00 ; 0xf73b9 ps2mouse.c:135 + in AL, DX ; ec ; 0xf73bc + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf73bd + mov cl, al ; 88 c1 ; 0xf73bf + mov si, strict word 00026h ; be 26 00 ; 0xf73c1 ps2mouse.c:38 + mov es, bx ; 8e c3 ; 0xf73c4 + mov al, byte [es:si] ; 26 8a 04 ; 0xf73c6 + mov si, strict word 00027h ; be 27 00 ; 0xf73c9 ps2mouse.c:38 + mov ah, byte [es:si] ; 26 8a 24 ; 0xf73cc + mov dl, ah ; 88 e2 ; 0xf73cf ps2mouse.c:39 + test ah, 080h ; f6 c4 80 ; 0xf73d1 ps2mouse.c:141 + je short 07427h ; 74 51 ; 0xf73d4 + mov dh, dl ; 88 d6 ; 0xf73d6 ps2mouse.c:145 + and dh, 007h ; 80 e6 07 ; 0xf73d8 + mov ah, al ; 88 c4 ; 0xf73db ps2mouse.c:146 + and ah, 007h ; 80 e4 07 ; 0xf73dd + movzx si, ah ; 0f b6 f4 ; 0xf73e0 ps2mouse.c:147 + add si, strict byte 00028h ; 83 c6 28 ; 0xf73e3 + mov es, bx ; 8e c3 ; 0xf73e6 ps2mouse.c:43 + mov byte [es:si], cl ; 26 88 0c ; 0xf73e8 + cmp ah, dh ; 38 f4 ; 0xf73eb ps2mouse.c:149 + jc short 0741dh ; 72 2e ; 0xf73ed + mov si, strict word 00028h ; be 28 00 ; 0xf73ef ps2mouse.c:38 + mov al, byte [es:si] ; 26 8a 04 ; 0xf73f2 + xor ah, ah ; 30 e4 ; 0xf73f5 ps2mouse.c:39 + mov word [bp+00ch], ax ; 89 46 0c ; 0xf73f7 + mov si, strict word 00029h ; be 29 00 ; 0xf73fa ps2mouse.c:38 + mov al, byte [es:si] ; 26 8a 04 ; 0xf73fd + mov word [bp+00ah], ax ; 89 46 0a ; 0xf7400 ps2mouse.c:39 + mov si, strict word 0002ah ; be 2a 00 ; 0xf7403 ps2mouse.c:38 + mov al, byte [es:si] ; 26 8a 04 ; 0xf7406 + mov word [bp+008h], ax ; 89 46 08 ; 0xf7409 ps2mouse.c:39 + xor al, al ; 30 c0 ; 0xf740c ps2mouse.c:154 + mov word [bp+006h], ax ; 89 46 06 ; 0xf740e + test dl, 080h ; f6 c2 80 ; 0xf7411 ps2mouse.c:157 + je short 0741fh ; 74 09 ; 0xf7414 + mov word [bp+004h], strict word 00001h ; c7 46 04 01 00 ; 0xf7416 ps2mouse.c:158 + jmp short 0741fh ; eb 02 ; 0xf741b ps2mouse.c:160 + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf741d ps2mouse.c:161 + mov si, strict word 00026h ; be 26 00 ; 0xf741f ps2mouse.c:43 + mov es, bx ; 8e c3 ; 0xf7422 + mov byte [es:si], al ; 26 88 04 ; 0xf7424 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf7427 ps2mouse.c:164 + pop si ; 5e ; 0xf742a + pop bp ; 5d ; 0xf742b + retn ; c3 ; 0xf742c + ; disGetNextSymbol 0xf742d LB 0x2c18 -> off=0x10 cb=0000000000000370 uValue=00000000000f5e3d 'int15_function_mouse' + db 080h, 074h, 0eeh, 074h, 069h, 075h, 0fah, 075h, 068h, 076h, 0cch, 074h, 090h, 076h, 055h, 077h +int15_function_mouse: ; 0xf743d LB 0x370 + push bp ; 55 ; 0xf743d ps2mouse.c:166 + mov bp, sp ; 89 e5 ; 0xf743e + sub sp, strict byte 00006h ; 83 ec 06 ; 0xf7440 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf7443 ps2mouse.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf7446 + mov es, ax ; 8e c0 ; 0xf7449 + mov dx, word [es:bx] ; 26 8b 17 ; 0xf744b + cmp byte [bp+012h], 007h ; 80 7e 12 07 ; 0xf744e ps2mouse.c:188 + jbe short 0745fh ; 76 0b ; 0xf7452 + or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf7454 ps2mouse.c:191 + mov byte [bp+013h], 001h ; c6 46 13 01 ; 0xf7458 ps2mouse.c:192 + jmp near 077a9h ; e9 4a 03 ; 0xf745c ps2mouse.c:193 + mov ax, strict word 00065h ; b8 65 00 ; 0xf745f ps2mouse.c:197 + call 07367h ; e8 02 ff ; 0xf7462 + and word [bp+018h], strict byte 0fffeh ; 83 66 18 fe ; 0xf7465 ps2mouse.c:198 + mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf7469 ps2mouse.c:199 + mov al, byte [bp+012h] ; 8a 46 12 ; 0xf746d ps2mouse.c:201 + cmp AL, strict byte 007h ; 3c 07 ; 0xf7470 + jnbe near 07790h ; 0f 87 1a 03 ; 0xf7472 + movzx bx, al ; 0f b6 d8 ; 0xf7476 + add bx, bx ; 01 db ; 0xf7479 + jmp word [cs:bx+0742dh] ; 2e ff a7 2d 74 ; 0xf747b + cmp byte [bp+00dh], 001h ; 80 7e 0d 01 ; 0xf7480 ps2mouse.c:204 + jnbe near 0779bh ; 0f 87 13 03 ; 0xf7484 + mov bx, strict word 00027h ; bb 27 00 ; 0xf7488 ps2mouse.c:38 + mov es, dx ; 8e c2 ; 0xf748b + mov al, byte [es:bx] ; 26 8a 07 ; 0xf748d + test AL, strict byte 080h ; a8 80 ; 0xf7490 ps2mouse.c:212 + jne short 0749fh ; 75 0b ; 0xf7492 + or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf7494 ps2mouse.c:214 + mov byte [bp+013h], 005h ; c6 46 13 05 ; 0xf7498 ps2mouse.c:215 + jmp near 077a3h ; e9 04 03 ; 0xf749c ps2mouse.c:216 + cmp byte [bp+00dh], 000h ; 80 7e 0d 00 ; 0xf749f ps2mouse.c:218 + db 00fh, 094h, 0c0h + ; sete al ; 0f 94 c0 ; 0xf74a3 + add AL, strict byte 0f4h ; 04 f4 ; 0xf74a6 + xor ah, ah ; 30 e4 ; 0xf74a8 ps2mouse.c:226 + call 072d7h ; e8 2a fe ; 0xf74aa + test al, al ; 84 c0 ; 0xf74ad ps2mouse.c:227 + jne near 07731h ; 0f 85 7e 02 ; 0xf74af + mov dx, ss ; 8c d2 ; 0xf74b3 ps2mouse.c:228 + lea ax, [bp-006h] ; 8d 46 fa ; 0xf74b5 + call 0730bh ; e8 50 fe ; 0xf74b8 + test al, al ; 84 c0 ; 0xf74bb ps2mouse.c:229 + je near 077a3h ; 0f 84 e2 02 ; 0xf74bd + cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf74c1 + jne near 07731h ; 0f 85 68 02 ; 0xf74c5 + jmp near 077a3h ; e9 d7 02 ; 0xf74c9 ps2mouse.c:231 + mov al, byte [bp+00dh] ; 8a 46 0d ; 0xf74cc ps2mouse.c:242 + cmp AL, strict byte 001h ; 3c 01 ; 0xf74cf + jc short 074d7h ; 72 04 ; 0xf74d1 + cmp AL, strict byte 008h ; 3c 08 ; 0xf74d3 + jbe short 074dah ; 76 03 ; 0xf74d5 + jmp near 0765dh ; e9 83 01 ; 0xf74d7 + mov bx, strict word 00027h ; bb 27 00 ; 0xf74da ps2mouse.c:38 + mov es, dx ; 8e c2 ; 0xf74dd + mov al, byte [es:bx] ; 26 8a 07 ; 0xf74df + mov ah, byte [bp+00dh] ; 8a 66 0d ; 0xf74e2 ps2mouse.c:248 + db 0feh, 0cch + ; dec ah ; fe cc ; 0xf74e5 + and AL, strict byte 0f8h ; 24 f8 ; 0xf74e7 + or al, ah ; 08 e0 ; 0xf74e9 + mov byte [es:bx], al ; 26 88 07 ; 0xf74eb ps2mouse.c:43 + mov bx, strict word 00026h ; bb 26 00 ; 0xf74ee ps2mouse.c:38 + mov es, dx ; 8e c2 ; 0xf74f1 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf74f3 + and AL, strict byte 0f8h ; 24 f8 ; 0xf74f6 ps2mouse.c:256 + mov byte [es:bx], al ; 26 88 07 ; 0xf74f8 ps2mouse.c:43 + mov ax, 000ffh ; b8 ff 00 ; 0xf74fb ps2mouse.c:258 + call 072d7h ; e8 d6 fd ; 0xf74fe + test al, al ; 84 c0 ; 0xf7501 ps2mouse.c:259 + jne near 07731h ; 0f 85 2a 02 ; 0xf7503 + mov dx, ss ; 8c d2 ; 0xf7507 ps2mouse.c:260 + lea ax, [bp-004h] ; 8d 46 fc ; 0xf7509 + call 0730bh ; e8 fc fd ; 0xf750c + mov dl, al ; 88 c2 ; 0xf750f + cmp byte [bp-004h], 0feh ; 80 7e fc fe ; 0xf7511 ps2mouse.c:262 + jne short 07522h ; 75 0b ; 0xf7515 + or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf7517 ps2mouse.c:263 + mov byte [bp+013h], 004h ; c6 46 13 04 ; 0xf751b ps2mouse.c:264 + jmp near 077a3h ; e9 81 02 ; 0xf751f ps2mouse.c:265 + cmp byte [bp-004h], 0fah ; 80 7e fc fa ; 0xf7522 ps2mouse.c:267 + je short 07538h ; 74 10 ; 0xf7526 + movzx ax, byte [bp-004h] ; 0f b6 46 fc ; 0xf7528 ps2mouse.c:268 + push ax ; 50 ; 0xf752c + push 00915h ; 68 15 09 ; 0xf752d + push strict byte 00007h ; 6a 07 ; 0xf7530 + call 01a14h ; e8 df a4 ; 0xf7532 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf7535 + test dl, dl ; 84 d2 ; 0xf7538 ps2mouse.c:269 + jne near 07731h ; 0f 85 f3 01 ; 0xf753a + mov dx, ss ; 8c d2 ; 0xf753e ps2mouse.c:270 + lea ax, [bp-006h] ; 8d 46 fa ; 0xf7540 + call 0730bh ; e8 c5 fd ; 0xf7543 + test al, al ; 84 c0 ; 0xf7546 ps2mouse.c:271 + jne near 07731h ; 0f 85 e5 01 ; 0xf7548 + mov dx, ss ; 8c d2 ; 0xf754c ps2mouse.c:272 + lea ax, [bp-002h] ; 8d 46 fe ; 0xf754e + call 0730bh ; e8 b7 fd ; 0xf7551 + test al, al ; 84 c0 ; 0xf7554 ps2mouse.c:273 + jne near 07731h ; 0f 85 d7 01 ; 0xf7556 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf755a ps2mouse.c:275 + mov byte [bp+00ch], al ; 88 46 0c ; 0xf755d + mov al, byte [bp-002h] ; 8a 46 fe ; 0xf7560 ps2mouse.c:276 + mov byte [bp+00dh], al ; 88 46 0d ; 0xf7563 + jmp near 077a3h ; e9 3a 02 ; 0xf7566 ps2mouse.c:277 + mov al, byte [bp+00dh] ; 8a 46 0d ; 0xf7569 ps2mouse.c:290 + cmp AL, strict byte 003h ; 3c 03 ; 0xf756c + jc short 07580h ; 72 10 ; 0xf756e + jbe short 0759eh ; 76 2c ; 0xf7570 + cmp AL, strict byte 006h ; 3c 06 ; 0xf7572 + je short 075b0h ; 74 3a ; 0xf7574 + cmp AL, strict byte 005h ; 3c 05 ; 0xf7576 + je short 075aah ; 74 30 ; 0xf7578 + cmp AL, strict byte 004h ; 3c 04 ; 0xf757a + je short 075a4h ; 74 26 ; 0xf757c + jmp short 075b6h ; eb 36 ; 0xf757e + cmp AL, strict byte 002h ; 3c 02 ; 0xf7580 + je short 07598h ; 74 14 ; 0xf7582 + cmp AL, strict byte 001h ; 3c 01 ; 0xf7584 + je short 07592h ; 74 0a ; 0xf7586 + test al, al ; 84 c0 ; 0xf7588 + jne short 075b6h ; 75 2a ; 0xf758a + mov byte [bp-006h], 00ah ; c6 46 fa 0a ; 0xf758c ps2mouse.c:291 + jmp short 075bah ; eb 28 ; 0xf7590 + mov byte [bp-006h], 014h ; c6 46 fa 14 ; 0xf7592 ps2mouse.c:292 + jmp short 075bah ; eb 22 ; 0xf7596 + mov byte [bp-006h], 028h ; c6 46 fa 28 ; 0xf7598 ps2mouse.c:293 + jmp short 075bah ; eb 1c ; 0xf759c + mov byte [bp-006h], 03ch ; c6 46 fa 3c ; 0xf759e ps2mouse.c:294 + jmp short 075bah ; eb 16 ; 0xf75a2 + mov byte [bp-006h], 050h ; c6 46 fa 50 ; 0xf75a4 ps2mouse.c:295 + jmp short 075bah ; eb 10 ; 0xf75a8 + mov byte [bp-006h], 064h ; c6 46 fa 64 ; 0xf75aa ps2mouse.c:296 + jmp short 075bah ; eb 0a ; 0xf75ae + mov byte [bp-006h], 0c8h ; c6 46 fa c8 ; 0xf75b0 ps2mouse.c:297 + jmp short 075bah ; eb 04 ; 0xf75b4 + mov byte [bp-006h], 000h ; c6 46 fa 00 ; 0xf75b6 ps2mouse.c:298 + cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf75ba ps2mouse.c:300 + jbe short 075efh ; 76 2f ; 0xf75be + mov ax, 000f3h ; b8 f3 00 ; 0xf75c0 ps2mouse.c:301 + call 072d7h ; e8 11 fd ; 0xf75c3 + test al, al ; 84 c0 ; 0xf75c6 ps2mouse.c:302 + jne short 075e4h ; 75 1a ; 0xf75c8 + mov dx, ss ; 8c d2 ; 0xf75ca ps2mouse.c:303 + lea ax, [bp-002h] ; 8d 46 fe ; 0xf75cc + call 0730bh ; e8 39 fd ; 0xf75cf + movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf75d2 ps2mouse.c:304 + call 072d7h ; e8 fe fc ; 0xf75d6 + mov dx, ss ; 8c d2 ; 0xf75d9 ps2mouse.c:305 + lea ax, [bp-002h] ; 8d 46 fe ; 0xf75db + call 0730bh ; e8 2a fd ; 0xf75de + jmp near 077a3h ; e9 bf 01 ; 0xf75e1 ps2mouse.c:307 + or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf75e4 ps2mouse.c:309 + mov byte [bp+013h], 003h ; c6 46 13 03 ; 0xf75e8 ps2mouse.c:310 + jmp near 077a3h ; e9 b4 01 ; 0xf75ec ps2mouse.c:312 + or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf75ef ps2mouse.c:314 + mov byte [bp+013h], 002h ; c6 46 13 02 ; 0xf75f3 ps2mouse.c:315 + jmp near 077a3h ; e9 a9 01 ; 0xf75f7 ps2mouse.c:317 + cmp byte [bp+00dh], 004h ; 80 7e 0d 04 ; 0xf75fa ps2mouse.c:326 + jnc short 0765dh ; 73 5d ; 0xf75fe + mov ax, 000e8h ; b8 e8 00 ; 0xf7600 ps2mouse.c:327 + call 072d7h ; e8 d1 fc ; 0xf7603 + test al, al ; 84 c0 ; 0xf7606 ps2mouse.c:328 + jne short 07652h ; 75 48 ; 0xf7608 + mov dx, ss ; 8c d2 ; 0xf760a ps2mouse.c:329 + lea ax, [bp-006h] ; 8d 46 fa ; 0xf760c + call 0730bh ; e8 f9 fc ; 0xf760f + cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf7612 ps2mouse.c:330 + je short 07628h ; 74 10 ; 0xf7616 + movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf7618 ps2mouse.c:331 + push ax ; 50 ; 0xf761c + push 00940h ; 68 40 09 ; 0xf761d + push strict byte 00007h ; 6a 07 ; 0xf7620 + call 01a14h ; e8 ef a3 ; 0xf7622 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf7625 + movzx ax, byte [bp+00dh] ; 0f b6 46 0d ; 0xf7628 ps2mouse.c:332 + call 072d7h ; e8 a8 fc ; 0xf762c + mov dx, ss ; 8c d2 ; 0xf762f ps2mouse.c:333 + lea ax, [bp-006h] ; 8d 46 fa ; 0xf7631 + call 0730bh ; e8 d4 fc ; 0xf7634 + cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf7637 ps2mouse.c:334 + je near 077a3h ; 0f 84 64 01 ; 0xf763b + movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf763f ps2mouse.c:335 + push ax ; 50 ; 0xf7643 + push 00940h ; 68 40 09 ; 0xf7644 + push strict byte 00007h ; 6a 07 ; 0xf7647 + call 01a14h ; e8 c8 a3 ; 0xf7649 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf764c + jmp near 077a3h ; e9 51 01 ; 0xf764f ps2mouse.c:337 + or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf7652 ps2mouse.c:339 + mov byte [bp+013h], 003h ; c6 46 13 03 ; 0xf7656 ps2mouse.c:340 + jmp near 077a3h ; e9 46 01 ; 0xf765a ps2mouse.c:342 + or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf765d ps2mouse.c:344 + mov byte [bp+013h], 002h ; c6 46 13 02 ; 0xf7661 ps2mouse.c:345 + jmp near 077a3h ; e9 3b 01 ; 0xf7665 ps2mouse.c:347 + mov ax, 000f2h ; b8 f2 00 ; 0xf7668 ps2mouse.c:351 + call 072d7h ; e8 69 fc ; 0xf766b + test al, al ; 84 c0 ; 0xf766e ps2mouse.c:352 + jne short 07685h ; 75 13 ; 0xf7670 + mov dx, ss ; 8c d2 ; 0xf7672 ps2mouse.c:353 + lea ax, [bp-006h] ; 8d 46 fa ; 0xf7674 + call 0730bh ; e8 91 fc ; 0xf7677 + mov dx, ss ; 8c d2 ; 0xf767a ps2mouse.c:354 + lea ax, [bp-002h] ; 8d 46 fe ; 0xf767c + call 0730bh ; e8 89 fc ; 0xf767f + jmp near 07560h ; e9 db fe ; 0xf7682 + or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf7685 ps2mouse.c:355 + mov byte [bp+013h], 003h ; c6 46 13 03 ; 0xf7689 ps2mouse.c:360 + jmp near 077a3h ; e9 13 01 ; 0xf768d ps2mouse.c:362 + mov al, byte [bp+00dh] ; 8a 46 0d ; 0xf7690 ps2mouse.c:366 + test al, al ; 84 c0 ; 0xf7693 + jbe short 0769eh ; 76 07 ; 0xf7695 + cmp AL, strict byte 002h ; 3c 02 ; 0xf7697 + jbe short 07707h ; 76 6c ; 0xf7699 + jmp near 0773bh ; e9 9d 00 ; 0xf769b + mov ax, 000e9h ; b8 e9 00 ; 0xf769e ps2mouse.c:368 + call 072d7h ; e8 33 fc ; 0xf76a1 + test al, al ; 84 c0 ; 0xf76a4 ps2mouse.c:369 + jne near 07731h ; 0f 85 87 00 ; 0xf76a6 + mov dx, ss ; 8c d2 ; 0xf76aa ps2mouse.c:370 + lea ax, [bp-006h] ; 8d 46 fa ; 0xf76ac + call 0730bh ; e8 59 fc ; 0xf76af + mov dl, al ; 88 c2 ; 0xf76b2 + cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf76b4 ps2mouse.c:371 + je short 076cah ; 74 10 ; 0xf76b8 + movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf76ba ps2mouse.c:372 + push ax ; 50 ; 0xf76be + push 00940h ; 68 40 09 ; 0xf76bf + push strict byte 00007h ; 6a 07 ; 0xf76c2 + call 01a14h ; e8 4d a3 ; 0xf76c4 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf76c7 + test dl, dl ; 84 d2 ; 0xf76ca ps2mouse.c:373 + jne short 07731h ; 75 63 ; 0xf76cc + mov dx, ss ; 8c d2 ; 0xf76ce ps2mouse.c:374 + lea ax, [bp-006h] ; 8d 46 fa ; 0xf76d0 + call 0730bh ; e8 35 fc ; 0xf76d3 + test al, al ; 84 c0 ; 0xf76d6 ps2mouse.c:375 + jne short 07731h ; 75 57 ; 0xf76d8 + mov dx, ss ; 8c d2 ; 0xf76da ps2mouse.c:376 + lea ax, [bp-002h] ; 8d 46 fe ; 0xf76dc + call 0730bh ; e8 29 fc ; 0xf76df + test al, al ; 84 c0 ; 0xf76e2 ps2mouse.c:377 + jne short 07731h ; 75 4b ; 0xf76e4 + mov dx, ss ; 8c d2 ; 0xf76e6 ps2mouse.c:378 + lea ax, [bp-004h] ; 8d 46 fc ; 0xf76e8 + call 0730bh ; e8 1d fc ; 0xf76eb + test al, al ; 84 c0 ; 0xf76ee ps2mouse.c:379 + jne short 07731h ; 75 3f ; 0xf76f0 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf76f2 ps2mouse.c:380 + mov byte [bp+00ch], al ; 88 46 0c ; 0xf76f5 + mov al, byte [bp-002h] ; 8a 46 fe ; 0xf76f8 ps2mouse.c:381 + mov byte [bp+010h], al ; 88 46 10 ; 0xf76fb + mov al, byte [bp-004h] ; 8a 46 fc ; 0xf76fe ps2mouse.c:382 + mov byte [bp+00eh], al ; 88 46 0e ; 0xf7701 + jmp near 077a3h ; e9 9c 00 ; 0xf7704 ps2mouse.c:384 + cmp AL, strict byte 001h ; 3c 01 ; 0xf7707 ps2mouse.c:398 + jne short 07710h ; 75 05 ; 0xf7709 + mov ax, 000e6h ; b8 e6 00 ; 0xf770b ps2mouse.c:399 + jmp short 07713h ; eb 03 ; 0xf770e ps2mouse.c:400 + mov ax, 000e7h ; b8 e7 00 ; 0xf7710 ps2mouse.c:401 + call 072d7h ; e8 c1 fb ; 0xf7713 + mov dl, al ; 88 c2 ; 0xf7716 + test dl, dl ; 84 d2 ; 0xf7718 ps2mouse.c:403 + jne short 0772bh ; 75 0f ; 0xf771a + mov dx, ss ; 8c d2 ; 0xf771c ps2mouse.c:404 + lea ax, [bp-006h] ; 8d 46 fa ; 0xf771e + call 0730bh ; e8 e7 fb ; 0xf7721 + cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf7724 ps2mouse.c:405 + db 00fh, 095h, 0c2h + ; setne dl ; 0f 95 c2 ; 0xf7728 + test dl, dl ; 84 d2 ; 0xf772b ps2mouse.c:407 + je near 077a3h ; 0f 84 72 00 ; 0xf772d + or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf7731 ps2mouse.c:409 + mov byte [bp+013h], 003h ; c6 46 13 03 ; 0xf7735 ps2mouse.c:410 + jmp short 077a3h ; eb 68 ; 0xf7739 ps2mouse.c:412 + movzx ax, byte [bp+00dh] ; 0f b6 46 0d ; 0xf773b ps2mouse.c:415 + push ax ; 50 ; 0xf773f + push 0096ch ; 68 6c 09 ; 0xf7740 + push strict byte 00007h ; 6a 07 ; 0xf7743 + call 01a14h ; e8 cc a2 ; 0xf7745 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf7748 + or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf774b ps2mouse.c:417 + mov byte [bp+013h], 001h ; c6 46 13 01 ; 0xf774f ps2mouse.c:418 + jmp short 077a3h ; eb 4e ; 0xf7753 ps2mouse.c:420 + mov cx, word [bp+00ch] ; 8b 4e 0c ; 0xf7755 ps2mouse.c:425 + mov bx, strict word 00022h ; bb 22 00 ; 0xf7758 ps2mouse.c:53 + mov es, dx ; 8e c2 ; 0xf775b + mov word [es:bx], cx ; 26 89 0f ; 0xf775d + mov bx, strict word 00024h ; bb 24 00 ; 0xf7760 ps2mouse.c:53 + mov ax, word [bp+014h] ; 8b 46 14 ; 0xf7763 + mov word [es:bx], ax ; 26 89 07 ; 0xf7766 + mov bx, strict word 00027h ; bb 27 00 ; 0xf7769 ps2mouse.c:38 + mov bl, byte [es:bx] ; 26 8a 1f ; 0xf776c + mov al, bl ; 88 d8 ; 0xf776f ps2mouse.c:39 + test cx, cx ; 85 c9 ; 0xf7771 ps2mouse.c:429 + jne short 07784h ; 75 0f ; 0xf7773 + cmp word [bp+014h], strict byte 00000h ; 83 7e 14 00 ; 0xf7775 + jne short 07784h ; 75 09 ; 0xf7779 + test bl, 080h ; f6 c3 80 ; 0xf777b ps2mouse.c:431 + je short 07786h ; 74 06 ; 0xf777e + and AL, strict byte 07fh ; 24 7f ; 0xf7780 ps2mouse.c:432 + jmp short 07786h ; eb 02 ; 0xf7782 ps2mouse.c:435 + or AL, strict byte 080h ; 0c 80 ; 0xf7784 ps2mouse.c:437 + mov bx, strict word 00027h ; bb 27 00 ; 0xf7786 ps2mouse.c:43 + mov es, dx ; 8e c2 ; 0xf7789 + mov byte [es:bx], al ; 26 88 07 ; 0xf778b + jmp short 077a3h ; eb 13 ; 0xf778e ps2mouse.c:440 + push 00986h ; 68 86 09 ; 0xf7790 ps2mouse.c:443 + push strict byte 00007h ; 6a 07 ; 0xf7793 + call 01a14h ; e8 7c a2 ; 0xf7795 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf7798 + or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf779b ps2mouse.c:445 + mov byte [bp+013h], 001h ; c6 46 13 01 ; 0xf779f ps2mouse.c:446 + mov ax, strict word 00047h ; b8 47 00 ; 0xf77a3 ps2mouse.c:450 + call 07367h ; e8 be fb ; 0xf77a6 + mov sp, bp ; 89 ec ; 0xf77a9 ps2mouse.c:451 + pop bp ; 5d ; 0xf77ab + retn ; c3 ; 0xf77ac + ; disGetNextSymbol 0xf77ad LB 0x2898 -> off=0x0 cb=00000000000000b2 uValue=00000000000f61ad 'int17_function' +int17_function: ; 0xf77ad LB 0xb2 + push bp ; 55 ; 0xf77ad parallel.c:60 + mov bp, sp ; 89 e5 ; 0xf77ae + push si ; 56 ; 0xf77b0 + push di ; 57 ; 0xf77b1 + push ax ; 50 ; 0xf77b2 + sti ; fb ; 0xf77b3 parallel.c:65 + mov bx, word [bp+00eh] ; 8b 5e 0e ; 0xf77b4 parallel.c:67 + add bx, bx ; 01 db ; 0xf77b7 + add bx, strict byte 00008h ; 83 c3 08 ; 0xf77b9 + mov ax, strict word 00040h ; b8 40 00 ; 0xf77bc parallel.c:48 + mov es, ax ; 8e c0 ; 0xf77bf + mov bx, word [es:bx] ; 26 8b 1f ; 0xf77c1 + mov si, bx ; 89 de ; 0xf77c4 parallel.c:49 + cmp byte [bp+013h], 003h ; 80 7e 13 03 ; 0xf77c6 parallel.c:68 + jnc near 07854h ; 0f 83 86 00 ; 0xf77ca + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf77ce + cmp ax, strict word 00003h ; 3d 03 00 ; 0xf77d1 + jnc near 07854h ; 0f 83 7c 00 ; 0xf77d4 + test bx, bx ; 85 db ; 0xf77d8 + jbe near 07854h ; 0f 86 76 00 ; 0xf77da + mov di, ax ; 89 c7 ; 0xf77de parallel.c:69 + add di, strict byte 00078h ; 83 c7 78 ; 0xf77e0 + mov al, byte [es:di] ; 26 8a 05 ; 0xf77e3 parallel.c:38 + movzx cx, al ; 0f b6 c8 ; 0xf77e6 parallel.c:39 + sal cx, 008h ; c1 e1 08 ; 0xf77e9 + cmp byte [bp+013h], 000h ; 80 7e 13 00 ; 0xf77ec parallel.c:70 + jne short 0781fh ; 75 2d ; 0xf77f0 + mov al, byte [bp+012h] ; 8a 46 12 ; 0xf77f2 parallel.c:71 + mov dx, bx ; 89 da ; 0xf77f5 + out DX, AL ; ee ; 0xf77f7 + lea dx, [bx+002h] ; 8d 57 02 ; 0xf77f8 parallel.c:72 + in AL, DX ; ec ; 0xf77fb + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf77fc + mov word [bp-006h], ax ; 89 46 fa ; 0xf77fe + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7801 parallel.c:73 + or AL, strict byte 001h ; 0c 01 ; 0xf7804 + out DX, AL ; ee ; 0xf7806 + movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf7807 parallel.c:74 + and AL, strict byte 0feh ; 24 fe ; 0xf780b + out DX, AL ; ee ; 0xf780d + lea dx, [si+001h] ; 8d 54 01 ; 0xf780e parallel.c:75 + in AL, DX ; ec ; 0xf7811 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf7812 + test AL, strict byte 040h ; a8 40 ; 0xf7814 + je short 0781fh ; 74 07 ; 0xf7816 + test cx, cx ; 85 c9 ; 0xf7818 + je short 0781fh ; 74 03 ; 0xf781a + dec cx ; 49 ; 0xf781c parallel.c:76 + jmp short 0780eh ; eb ef ; 0xf781d parallel.c:77 + cmp byte [bp+013h], 001h ; 80 7e 13 01 ; 0xf781f parallel.c:79 + jne short 0783bh ; 75 16 ; 0xf7823 + lea dx, [si+002h] ; 8d 54 02 ; 0xf7825 parallel.c:80 + in AL, DX ; ec ; 0xf7828 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf7829 + mov word [bp-006h], ax ; 89 46 fa ; 0xf782b + movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf782e parallel.c:81 + and AL, strict byte 0fbh ; 24 fb ; 0xf7832 + out DX, AL ; ee ; 0xf7834 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7835 parallel.c:82 + or AL, strict byte 004h ; 0c 04 ; 0xf7838 + out DX, AL ; ee ; 0xf783a + lea dx, [si+001h] ; 8d 54 01 ; 0xf783b parallel.c:84 + in AL, DX ; ec ; 0xf783e + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf783f + xor AL, strict byte 048h ; 34 48 ; 0xf7841 parallel.c:85 + mov byte [bp+013h], al ; 88 46 13 ; 0xf7843 + test cx, cx ; 85 c9 ; 0xf7846 parallel.c:86 + jne short 0784eh ; 75 04 ; 0xf7848 + or byte [bp+013h], 001h ; 80 4e 13 01 ; 0xf784a + and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf784e parallel.c:87 + jmp short 07858h ; eb 04 ; 0xf7852 parallel.c:88 + or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf7854 parallel.c:89 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf7858 parallel.c:91 + pop di ; 5f ; 0xf785b + pop si ; 5e ; 0xf785c + pop bp ; 5d ; 0xf785d + retn ; c3 ; 0xf785e + ; disGetNextSymbol 0xf785f LB 0x27e6 -> off=0x0 cb=00000000000000b8 uValue=00000000000f625f '_wait_' +_wait_: ; 0xf785f LB 0xb8 + push bp ; 55 ; 0xf785f logo.c:171 + mov bp, sp ; 89 e5 ; 0xf7860 + push bx ; 53 ; 0xf7862 + push cx ; 51 ; 0xf7863 + push si ; 56 ; 0xf7864 + push di ; 57 ; 0xf7865 + sub sp, strict byte 0000ah ; 83 ec 0a ; 0xf7866 + mov di, ax ; 89 c7 ; 0xf7869 + mov byte [bp-00ah], dl ; 88 56 f6 ; 0xf786b + mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf786e logo.c:176 + pushfw ; 9c ; 0xf7872 logo.c:182 + pop ax ; 58 ; 0xf7873 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf7874 + sti ; fb ; 0xf7877 logo.c:183 + xor dx, dx ; 31 d2 ; 0xf7878 logo.c:189 + mov bx, 0046ch ; bb 6c 04 ; 0xf787a logo.c:58 + mov es, dx ; 8e c2 ; 0xf787d + mov ax, word [es:bx] ; 26 8b 07 ; 0xf787f + mov cx, word [es:bx+002h] ; 26 8b 4f 02 ; 0xf7882 + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf7886 logo.c:59 + hlt ; f4 ; 0xf7889 logo.c:193 + mov bx, 0046ch ; bb 6c 04 ; 0xf788a logo.c:58 + xor ax, ax ; 31 c0 ; 0xf788d + mov es, ax ; 8e c0 ; 0xf788f + mov si, word [es:bx] ; 26 8b 37 ; 0xf7891 + mov ax, word [es:bx+002h] ; 26 8b 47 02 ; 0xf7894 + mov bx, si ; 89 f3 ; 0xf7898 logo.c:59 + mov word [bp-012h], ax ; 89 46 ee ; 0xf789a + cmp ax, cx ; 39 c8 ; 0xf789d logo.c:195 + jnbe short 078a8h ; 77 07 ; 0xf789f + jne short 078afh ; 75 0c ; 0xf78a1 + cmp si, word [bp-00eh] ; 3b 76 f2 ; 0xf78a3 + jbe short 078afh ; 76 07 ; 0xf78a6 + sub si, word [bp-00eh] ; 2b 76 f2 ; 0xf78a8 logo.c:197 + sbb ax, cx ; 19 c8 ; 0xf78ab + jmp short 078bah ; eb 0b ; 0xf78ad logo.c:200 + cmp ax, cx ; 39 c8 ; 0xf78af + jc short 078bah ; 72 07 ; 0xf78b1 + jne short 078beh ; 75 09 ; 0xf78b3 + cmp si, word [bp-00eh] ; 3b 76 f2 ; 0xf78b5 + jnc short 078beh ; 73 04 ; 0xf78b8 + sub di, si ; 29 f7 ; 0xf78ba logo.c:201 + sbb dx, ax ; 19 c2 ; 0xf78bc + mov word [bp-00eh], bx ; 89 5e f2 ; 0xf78be logo.c:202 + mov cx, word [bp-012h] ; 8b 4e ee ; 0xf78c1 + mov ax, 00100h ; b8 00 01 ; 0xf78c4 logo.c:204 + int 016h ; cd 16 ; 0xf78c7 + je near 078d2h ; 0f 84 05 00 ; 0xf78c9 + mov AL, strict byte 001h ; b0 01 ; 0xf78cd + jmp near 078d4h ; e9 02 00 ; 0xf78cf + db 032h, 0c0h + ; xor al, al ; 32 c0 ; 0xf78d2 + test al, al ; 84 c0 ; 0xf78d4 + je short 078fch ; 74 24 ; 0xf78d6 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xf78d8 logo.c:206 + int 016h ; cd 16 ; 0xf78da + xchg ah, al ; 86 c4 ; 0xf78dc + mov bl, al ; 88 c3 ; 0xf78de + mov byte [bp-00ch], al ; 88 46 f4 ; 0xf78e0 + movzx ax, bl ; 0f b6 c3 ; 0xf78e3 logo.c:207 + push ax ; 50 ; 0xf78e6 + push 009a8h ; 68 a8 09 ; 0xf78e7 + push strict byte 00004h ; 6a 04 ; 0xf78ea + call 01a14h ; e8 25 a1 ; 0xf78ec + add sp, strict byte 00006h ; 83 c4 06 ; 0xf78ef + cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf78f2 logo.c:208 + je short 078fch ; 74 04 ; 0xf78f6 + mov al, bl ; 88 d8 ; 0xf78f8 logo.c:209 + jmp short 0790eh ; eb 12 ; 0xf78fa + test dx, dx ; 85 d2 ; 0xf78fc logo.c:211 + jnle short 07889h ; 7f 89 ; 0xf78fe + jne short 07906h ; 75 04 ; 0xf7900 + test di, di ; 85 ff ; 0xf7902 + jnbe short 07889h ; 77 83 ; 0xf7904 + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf7906 logo.c:212 + push ax ; 50 ; 0xf7909 + popfw ; 9d ; 0xf790a + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf790b logo.c:213 + lea sp, [bp-008h] ; 8d 66 f8 ; 0xf790e logo.c:214 + pop di ; 5f ; 0xf7911 + pop si ; 5e ; 0xf7912 + pop cx ; 59 ; 0xf7913 + pop bx ; 5b ; 0xf7914 + pop bp ; 5d ; 0xf7915 + retn ; c3 ; 0xf7916 + ; disGetNextSymbol 0xf7917 LB 0x272e -> off=0x0 cb=0000000000000016 uValue=00000000000f6317 'read_logo_byte' +read_logo_byte: ; 0xf7917 LB 0x16 + push bp ; 55 ; 0xf7917 logo.c:216 + mov bp, sp ; 89 e5 ; 0xf7918 + push dx ; 52 ; 0xf791a + xor ah, ah ; 30 e4 ; 0xf791b logo.c:218 + or ah, 001h ; 80 cc 01 ; 0xf791d + mov dx, 003b8h ; ba b8 03 ; 0xf7920 + out DX, ax ; ef ; 0xf7923 + in AL, DX ; ec ; 0xf7924 logo.c:219 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf7925 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf7927 logo.c:220 + pop dx ; 5a ; 0xf792a + pop bp ; 5d ; 0xf792b + retn ; c3 ; 0xf792c + ; disGetNextSymbol 0xf792d LB 0x2718 -> off=0x0 cb=0000000000000014 uValue=00000000000f632d 'read_logo_word' +read_logo_word: ; 0xf792d LB 0x14 + push bp ; 55 ; 0xf792d logo.c:222 + mov bp, sp ; 89 e5 ; 0xf792e + push dx ; 52 ; 0xf7930 + xor ah, ah ; 30 e4 ; 0xf7931 logo.c:224 + or ah, 001h ; 80 cc 01 ; 0xf7933 + mov dx, 003b8h ; ba b8 03 ; 0xf7936 + out DX, ax ; ef ; 0xf7939 + in ax, DX ; ed ; 0xf793a logo.c:225 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf793b logo.c:226 + pop dx ; 5a ; 0xf793e + pop bp ; 5d ; 0xf793f + retn ; c3 ; 0xf7940 + ; disGetNextSymbol 0xf7941 LB 0x2704 -> off=0x0 cb=0000000000000133 uValue=00000000000f6341 'print_detected_harddisks' +print_detected_harddisks: ; 0xf7941 LB 0x133 + push bp ; 55 ; 0xf7941 logo.c:245 + mov bp, sp ; 89 e5 ; 0xf7942 + push bx ; 53 ; 0xf7944 + push cx ; 51 ; 0xf7945 + push dx ; 52 ; 0xf7946 + push si ; 56 ; 0xf7947 + push di ; 57 ; 0xf7948 + push ax ; 50 ; 0xf7949 + push ax ; 50 ; 0xf794a + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf794b logo.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf794e + mov es, ax ; 8e c0 ; 0xf7951 + mov si, word [es:bx] ; 26 8b 37 ; 0xf7953 + mov di, si ; 89 f7 ; 0xf7956 logo.c:49 + xor ch, ch ; 30 ed ; 0xf7958 logo.c:250 + xor cl, cl ; 30 c9 ; 0xf795a logo.c:251 + mov byte [bp-00eh], ch ; 88 6e f2 ; 0xf795c logo.c:252 + mov bx, 00304h ; bb 04 03 ; 0xf795f logo.c:38 + mov es, si ; 8e c6 ; 0xf7962 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf7964 + mov byte [bp-00ch], al ; 88 46 f4 ; 0xf7967 logo.c:39 + xor bl, bl ; 30 db ; 0xf796a logo.c:257 + cmp bl, byte [bp-00ch] ; 3a 5e f4 ; 0xf796c + jnc near 07a46h ; 0f 83 d3 00 ; 0xf796f + movzx si, bl ; 0f b6 f3 ; 0xf7973 logo.c:259 + add si, 00305h ; 81 c6 05 03 ; 0xf7976 + mov es, di ; 8e c7 ; 0xf797a logo.c:38 + mov al, byte [es:si] ; 26 8a 04 ; 0xf797c + mov bh, al ; 88 c7 ; 0xf797f logo.c:39 + cmp AL, strict byte 00ch ; 3c 0c ; 0xf7981 logo.c:262 + jc short 079a9h ; 72 24 ; 0xf7983 + test cl, cl ; 84 c9 ; 0xf7985 logo.c:264 + jne short 07996h ; 75 0d ; 0xf7987 + push 009b9h ; 68 b9 09 ; 0xf7989 logo.c:266 + push strict byte 00002h ; 6a 02 ; 0xf798c + call 01a14h ; e8 83 a0 ; 0xf798e + add sp, strict byte 00004h ; 83 c4 04 ; 0xf7991 + mov CL, strict byte 001h ; b1 01 ; 0xf7994 logo.c:267 + movzx ax, bl ; 0f b6 c3 ; 0xf7996 logo.c:270 + inc ax ; 40 ; 0xf7999 + push ax ; 50 ; 0xf799a + push 009ceh ; 68 ce 09 ; 0xf799b + push strict byte 00002h ; 6a 02 ; 0xf799e + call 01a14h ; e8 71 a0 ; 0xf79a0 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf79a3 + jmp near 07a41h ; e9 98 00 ; 0xf79a6 logo.c:273 + cmp AL, strict byte 008h ; 3c 08 ; 0xf79a9 logo.c:276 + jc short 079c4h ; 72 17 ; 0xf79ab + cmp byte [bp-00eh], 000h ; 80 7e f2 00 ; 0xf79ad logo.c:278 + jne short 079c2h ; 75 0f ; 0xf79b1 + push 009e1h ; 68 e1 09 ; 0xf79b3 logo.c:280 + push strict byte 00002h ; 6a 02 ; 0xf79b6 + call 01a14h ; e8 59 a0 ; 0xf79b8 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf79bb + mov byte [bp-00eh], 001h ; c6 46 f2 01 ; 0xf79be logo.c:281 + jmp short 07996h ; eb d2 ; 0xf79c2 logo.c:282 + cmp AL, strict byte 004h ; 3c 04 ; 0xf79c4 logo.c:291 + jnc short 079dbh ; 73 13 ; 0xf79c6 + test ch, ch ; 84 ed ; 0xf79c8 + jne short 079dbh ; 75 0f ; 0xf79ca + push 009f6h ; 68 f6 09 ; 0xf79cc logo.c:293 + push strict byte 00002h ; 6a 02 ; 0xf79cf + call 01a14h ; e8 40 a0 ; 0xf79d1 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf79d4 + mov CH, strict byte 001h ; b5 01 ; 0xf79d7 logo.c:294 + jmp short 079f1h ; eb 16 ; 0xf79d9 logo.c:296 + cmp bh, 004h ; 80 ff 04 ; 0xf79db + jc short 079f1h ; 72 11 ; 0xf79de + test cl, cl ; 84 c9 ; 0xf79e0 + jne short 079f1h ; 75 0d ; 0xf79e2 + push 00a08h ; 68 08 0a ; 0xf79e4 logo.c:298 + push strict byte 00002h ; 6a 02 ; 0xf79e7 + call 01a14h ; e8 28 a0 ; 0xf79e9 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf79ec + mov CL, strict byte 001h ; b1 01 ; 0xf79ef logo.c:299 + movzx ax, bl ; 0f b6 c3 ; 0xf79f1 logo.c:302 + inc ax ; 40 ; 0xf79f4 + push ax ; 50 ; 0xf79f5 + push 00a1ch ; 68 1c 0a ; 0xf79f6 + push strict byte 00002h ; 6a 02 ; 0xf79f9 + call 01a14h ; e8 16 a0 ; 0xf79fb + add sp, strict byte 00006h ; 83 c4 06 ; 0xf79fe + cmp bh, 004h ; 80 ff 04 ; 0xf7a01 logo.c:309 + jc short 07a09h ; 72 03 ; 0xf7a04 + sub bh, 004h ; 80 ef 04 ; 0xf7a06 logo.c:310 + movzx ax, bh ; 0f b6 c7 ; 0xf7a09 logo.c:312 + cwd ; 99 ; 0xf7a0c + db 02bh, 0c2h + ; sub ax, dx ; 2b c2 ; 0xf7a0d + sar ax, 1 ; d1 f8 ; 0xf7a0f + test ax, ax ; 85 c0 ; 0xf7a11 + je short 07a1ah ; 74 05 ; 0xf7a13 + push 00a26h ; 68 26 0a ; 0xf7a15 logo.c:313 + jmp short 07a1dh ; eb 03 ; 0xf7a18 logo.c:314 + push 00a31h ; 68 31 0a ; 0xf7a1a logo.c:315 + push strict byte 00002h ; 6a 02 ; 0xf7a1d + call 01a14h ; e8 f2 9f ; 0xf7a1f + add sp, strict byte 00004h ; 83 c4 04 ; 0xf7a22 + movzx ax, bh ; 0f b6 c7 ; 0xf7a25 logo.c:317 + cwd ; 99 ; 0xf7a28 + mov si, strict word 00002h ; be 02 00 ; 0xf7a29 + idiv si ; f7 fe ; 0xf7a2c + test dx, dx ; 85 d2 ; 0xf7a2e + je short 07a37h ; 74 05 ; 0xf7a30 + push 00a3ah ; 68 3a 0a ; 0xf7a32 logo.c:318 + jmp short 07a3ah ; eb 03 ; 0xf7a35 logo.c:319 + push 00a40h ; 68 40 0a ; 0xf7a37 logo.c:320 + push si ; 56 ; 0xf7a3a + call 01a14h ; e8 d6 9f ; 0xf7a3b + add sp, strict byte 00004h ; 83 c4 04 ; 0xf7a3e + db 0feh, 0c3h + ; inc bl ; fe c3 ; 0xf7a41 logo.c:322 + jmp near 0796ch ; e9 26 ff ; 0xf7a43 + test ch, ch ; 84 ed ; 0xf7a46 logo.c:324 + jne short 07a5fh ; 75 15 ; 0xf7a48 + test cl, cl ; 84 c9 ; 0xf7a4a + jne short 07a5fh ; 75 11 ; 0xf7a4c + cmp byte [bp-00eh], 000h ; 80 7e f2 00 ; 0xf7a4e + jne short 07a5fh ; 75 0b ; 0xf7a52 + push 00a47h ; 68 47 0a ; 0xf7a54 logo.c:327 + push strict byte 00002h ; 6a 02 ; 0xf7a57 + call 01a14h ; e8 b8 9f ; 0xf7a59 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf7a5c + push 00a5bh ; 68 5b 0a ; 0xf7a5f logo.c:329 + push strict byte 00002h ; 6a 02 ; 0xf7a62 + call 01a14h ; e8 ad 9f ; 0xf7a64 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf7a67 + lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf7a6a logo.c:330 + pop di ; 5f ; 0xf7a6d + pop si ; 5e ; 0xf7a6e + pop dx ; 5a ; 0xf7a6f + pop cx ; 59 ; 0xf7a70 + pop bx ; 5b ; 0xf7a71 + pop bp ; 5d ; 0xf7a72 + retn ; c3 ; 0xf7a73 + ; disGetNextSymbol 0xf7a74 LB 0x25d1 -> off=0x0 cb=0000000000000024 uValue=00000000000f6474 'get_boot_drive' +get_boot_drive: ; 0xf7a74 LB 0x24 + push bx ; 53 ; 0xf7a74 logo.c:332 + push dx ; 52 ; 0xf7a75 + push bp ; 55 ; 0xf7a76 + mov bp, sp ; 89 e5 ; 0xf7a77 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf7a79 logo.c:48 + mov dx, strict word 00040h ; ba 40 00 ; 0xf7a7c + mov es, dx ; 8e c2 ; 0xf7a7f + mov dx, word [es:bx] ; 26 8b 17 ; 0xf7a81 + mov bx, 00304h ; bb 04 03 ; 0xf7a84 logo.c:38 + mov es, dx ; 8e c2 ; 0xf7a87 + mov dl, byte [es:bx] ; 26 8a 17 ; 0xf7a89 + sub AL, strict byte 002h ; 2c 02 ; 0xf7a8c logo.c:340 + cmp al, dl ; 38 d0 ; 0xf7a8e logo.c:342 + jc short 07a94h ; 72 02 ; 0xf7a90 + mov AL, strict byte 0ffh ; b0 ff ; 0xf7a92 logo.c:343 + pop bp ; 5d ; 0xf7a94 logo.c:347 + pop dx ; 5a ; 0xf7a95 + pop bx ; 5b ; 0xf7a96 + retn ; c3 ; 0xf7a97 + ; disGetNextSymbol 0xf7a98 LB 0x25ad -> off=0x0 cb=0000000000000254 uValue=00000000000f6498 'show_logo' +show_logo: ; 0xf7a98 LB 0x254 + push bp ; 55 ; 0xf7a98 logo.c:349 + mov bp, sp ; 89 e5 ; 0xf7a99 + push bx ; 53 ; 0xf7a9b + push cx ; 51 ; 0xf7a9c + push dx ; 52 ; 0xf7a9d + push si ; 56 ; 0xf7a9e + push di ; 57 ; 0xf7a9f + sub sp, strict byte 0000eh ; 83 ec 0e ; 0xf7aa0 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf7aa3 logo.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf7aa6 + mov es, ax ; 8e c0 ; 0xf7aa9 + mov si, word [es:bx] ; 26 8b 37 ; 0xf7aab + mov byte [bp-00eh], 000h ; c6 46 f2 00 ; 0xf7aae logo.c:352 + xor dx, dx ; 31 d2 ; 0xf7ab2 logo.c:356 + mov AL, strict byte 034h ; b0 34 ; 0xf7ab4 logo.c:363 + out strict byte 043h, AL ; e6 43 ; 0xf7ab6 + mov AL, strict byte 0d3h ; b0 d3 ; 0xf7ab8 + out strict byte 040h, AL ; e6 40 ; 0xf7aba + mov AL, strict byte 048h ; b0 48 ; 0xf7abc + out strict byte 040h, AL ; e6 40 ; 0xf7abe + movzx ax, dl ; 0f b6 c2 ; 0xf7ac0 logo.c:366 + call 0792dh ; e8 67 fe ; 0xf7ac3 + cmp ax, 066bbh ; 3d bb 66 ; 0xf7ac6 logo.c:367 + jne near 07bcbh ; 0f 85 fe 00 ; 0xf7ac9 + push SS ; 16 ; 0xf7acd logo.c:371 + pop ES ; 07 ; 0xf7ace + lea di, [bp-018h] ; 8d 7e e8 ; 0xf7acf + mov ax, 04f03h ; b8 03 4f ; 0xf7ad2 + int 010h ; cd 10 ; 0xf7ad5 + mov word [es:di], bx ; 26 89 1d ; 0xf7ad7 + cmp ax, strict word 0004fh ; 3d 4f 00 ; 0xf7ada + jne near 07bcbh ; 0f 85 ea 00 ; 0xf7add + mov al, dl ; 88 d0 ; 0xf7ae1 logo.c:375 + add AL, strict byte 004h ; 04 04 ; 0xf7ae3 + xor ah, ah ; 30 e4 ; 0xf7ae5 + call 07917h ; e8 2d fe ; 0xf7ae7 + mov bl, al ; 88 c3 ; 0xf7aea + mov byte [bp-012h], al ; 88 46 ee ; 0xf7aec + mov al, dl ; 88 d0 ; 0xf7aef logo.c:376 + add AL, strict byte 005h ; 04 05 ; 0xf7af1 + xor ah, ah ; 30 e4 ; 0xf7af3 + call 07917h ; e8 1f fe ; 0xf7af5 + mov dh, al ; 88 c6 ; 0xf7af8 + mov byte [bp-00ch], al ; 88 46 f4 ; 0xf7afa + mov al, dl ; 88 d0 ; 0xf7afd logo.c:377 + add AL, strict byte 002h ; 04 02 ; 0xf7aff + xor ah, ah ; 30 e4 ; 0xf7b01 + call 0792dh ; e8 27 fe ; 0xf7b03 + mov cx, ax ; 89 c1 ; 0xf7b06 + mov word [bp-016h], ax ; 89 46 ea ; 0xf7b08 + mov al, dl ; 88 d0 ; 0xf7b0b logo.c:378 + add AL, strict byte 006h ; 04 06 ; 0xf7b0d + xor ah, ah ; 30 e4 ; 0xf7b0f + call 07917h ; e8 03 fe ; 0xf7b11 + mov byte [bp-014h], al ; 88 46 ec ; 0xf7b14 + test bl, bl ; 84 db ; 0xf7b17 logo.c:381 + jne short 07b25h ; 75 0a ; 0xf7b19 + test dh, dh ; 84 f6 ; 0xf7b1b + jne short 07b25h ; 75 06 ; 0xf7b1d + test cx, cx ; 85 c9 ; 0xf7b1f + je near 07bcbh ; 0f 84 a6 00 ; 0xf7b21 + mov BH, strict byte 020h ; b7 20 ; 0xf7b25 logo.c:385 + mov dx, 001e0h ; ba e0 01 ; 0xf7b27 + mov cx, 00280h ; b9 80 02 ; 0xf7b2a + mov ax, 05642h ; b8 42 56 ; 0xf7b2d + mov BL, strict byte 000h ; b3 00 ; 0xf7b30 + int 010h ; cd 10 ; 0xf7b32 + cmp ax, strict word 0004fh ; 3d 4f 00 ; 0xf7b34 logo.c:387 + je short 07b41h ; 74 08 ; 0xf7b37 + mov bx, 00142h ; bb 42 01 ; 0xf7b39 logo.c:388 + mov ax, 04f02h ; b8 02 4f ; 0xf7b3c + int 010h ; cd 10 ; 0xf7b3f + cmp byte [bp-012h], 000h ; 80 7e ee 00 ; 0xf7b41 logo.c:390 + je short 07b6ch ; 74 25 ; 0xf7b45 + xor bx, bx ; 31 db ; 0xf7b47 logo.c:392 + jmp short 07b51h ; eb 06 ; 0xf7b49 + inc bx ; 43 ; 0xf7b4b logo.c:394 + cmp bx, strict byte 00010h ; 83 fb 10 ; 0xf7b4c + jnbe short 07b73h ; 77 22 ; 0xf7b4f + mov ax, bx ; 89 d8 ; 0xf7b51 + or ah, 002h ; 80 cc 02 ; 0xf7b53 + mov dx, 003b8h ; ba b8 03 ; 0xf7b56 + out DX, ax ; ef ; 0xf7b59 + xor dx, dx ; 31 d2 ; 0xf7b5a + mov ax, strict word 00001h ; b8 01 00 ; 0xf7b5c + call 0785fh ; e8 fd fc ; 0xf7b5f + cmp AL, strict byte 086h ; 3c 86 ; 0xf7b62 + jne short 07b4bh ; 75 e5 ; 0xf7b64 + mov byte [bp-00eh], 001h ; c6 46 f2 01 ; 0xf7b66 + jmp short 07b73h ; eb 07 ; 0xf7b6a + mov ax, 00210h ; b8 10 02 ; 0xf7b6c logo.c:404 + mov dx, 003b8h ; ba b8 03 ; 0xf7b6f + out DX, ax ; ef ; 0xf7b72 + cmp byte [bp-00eh], 000h ; 80 7e f2 00 ; 0xf7b73 logo.c:407 + jne short 07b8dh ; 75 14 ; 0xf7b77 + mov ax, word [bp-016h] ; 8b 46 ea ; 0xf7b79 logo.c:409 + shr ax, 004h ; c1 e8 04 ; 0xf7b7c + mov dx, strict word 00001h ; ba 01 00 ; 0xf7b7f + call 0785fh ; e8 da fc ; 0xf7b82 + cmp AL, strict byte 086h ; 3c 86 ; 0xf7b85 logo.c:410 + jne short 07b8dh ; 75 04 ; 0xf7b87 + mov byte [bp-00eh], 001h ; c6 46 f2 01 ; 0xf7b89 logo.c:411 + cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf7b8d logo.c:415 + je short 07bbeh ; 74 2b ; 0xf7b91 + cmp byte [bp-00eh], 000h ; 80 7e f2 00 ; 0xf7b93 + jne short 07bbeh ; 75 25 ; 0xf7b97 + mov bx, strict word 00010h ; bb 10 00 ; 0xf7b99 logo.c:417 + jmp short 07ba3h ; eb 05 ; 0xf7b9c + dec bx ; 4b ; 0xf7b9e logo.c:419 + test bx, bx ; 85 db ; 0xf7b9f + jbe short 07bcbh ; 76 28 ; 0xf7ba1 + mov ax, bx ; 89 d8 ; 0xf7ba3 + or ah, 002h ; 80 cc 02 ; 0xf7ba5 + mov dx, 003b8h ; ba b8 03 ; 0xf7ba8 + out DX, ax ; ef ; 0xf7bab + xor dx, dx ; 31 d2 ; 0xf7bac + mov ax, strict word 00001h ; b8 01 00 ; 0xf7bae + call 0785fh ; e8 ab fc ; 0xf7bb1 + cmp AL, strict byte 086h ; 3c 86 ; 0xf7bb4 + jne short 07b9eh ; 75 e6 ; 0xf7bb6 + mov byte [bp-00eh], 001h ; c6 46 f2 01 ; 0xf7bb8 + jmp short 07bcbh ; eb 0d ; 0xf7bbc + cmp byte [bp-00eh], 000h ; 80 7e f2 00 ; 0xf7bbe logo.c:428 + jne short 07bcbh ; 75 07 ; 0xf7bc2 + mov ax, 00200h ; b8 00 02 ; 0xf7bc4 logo.c:429 + mov dx, 003b8h ; ba b8 03 ; 0xf7bc7 + out DX, ax ; ef ; 0xf7bca + mov bx, 0037dh ; bb 7d 03 ; 0xf7bcb logo.c:43 + mov es, si ; 8e c6 ; 0xf7bce + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf7bd0 + mov AL, strict byte 003h ; b0 03 ; 0xf7bd4 logo.c:437 + mov AH, strict byte 000h ; b4 00 ; 0xf7bd6 + int 010h ; cd 10 ; 0xf7bd8 + cmp byte [bp-014h], 000h ; 80 7e ec 00 ; 0xf7bda logo.c:440 + je near 07ccdh ; 0f 84 eb 00 ; 0xf7bde + cmp byte [bp-012h], 000h ; 80 7e ee 00 ; 0xf7be2 logo.c:443 + jne short 07c1ch ; 75 34 ; 0xf7be6 + cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf7be8 + jne short 07c1ch ; 75 2e ; 0xf7bec + cmp word [bp-016h], strict byte 00000h ; 83 7e ea 00 ; 0xf7bee + jne short 07c1ch ; 75 28 ; 0xf7bf2 + cmp byte [bp-014h], 002h ; 80 7e ec 02 ; 0xf7bf4 logo.c:445 + jne short 07c05h ; 75 0b ; 0xf7bf8 + push 00a5dh ; 68 5d 0a ; 0xf7bfa logo.c:446 + push strict byte 00002h ; 6a 02 ; 0xf7bfd + call 01a14h ; e8 12 9e ; 0xf7bff + add sp, strict byte 00004h ; 83 c4 04 ; 0xf7c02 + cmp byte [bp-00eh], 000h ; 80 7e f2 00 ; 0xf7c05 logo.c:449 + jne short 07c1ch ; 75 11 ; 0xf7c09 + mov dx, strict word 00001h ; ba 01 00 ; 0xf7c0b logo.c:452 + mov ax, 000c0h ; b8 c0 00 ; 0xf7c0e + call 0785fh ; e8 4b fc ; 0xf7c11 + cmp AL, strict byte 086h ; 3c 86 ; 0xf7c14 logo.c:453 + jne short 07c1ch ; 75 04 ; 0xf7c16 + mov byte [bp-00eh], 001h ; c6 46 f2 01 ; 0xf7c18 logo.c:454 + cmp byte [bp-00eh], 000h ; 80 7e f2 00 ; 0xf7c1c logo.c:459 + je near 07ccdh ; 0f 84 a9 00 ; 0xf7c20 + mov byte [bp-010h], 000h ; c6 46 f0 00 ; 0xf7c24 logo.c:461 + mov ax, 00100h ; b8 00 01 ; 0xf7c28 logo.c:464 + mov cx, 01000h ; b9 00 10 ; 0xf7c2b + int 010h ; cd 10 ; 0xf7c2e + mov ax, 00700h ; b8 00 07 ; 0xf7c30 + mov BH, strict byte 007h ; b7 07 ; 0xf7c33 + db 033h, 0c9h + ; xor cx, cx ; 33 c9 ; 0xf7c35 + mov dx, 0184fh ; ba 4f 18 ; 0xf7c37 + int 010h ; cd 10 ; 0xf7c3a + mov ax, 00200h ; b8 00 02 ; 0xf7c3c + db 033h, 0dbh + ; xor bx, bx ; 33 db ; 0xf7c3f + db 033h, 0d2h + ; xor dx, dx ; 33 d2 ; 0xf7c41 + int 010h ; cd 10 ; 0xf7c43 + push 00a7fh ; 68 7f 0a ; 0xf7c45 logo.c:467 + push strict byte 00002h ; 6a 02 ; 0xf7c48 + call 01a14h ; e8 c7 9d ; 0xf7c4a + add sp, strict byte 00004h ; 83 c4 04 ; 0xf7c4d + call 07941h ; e8 ee fc ; 0xf7c50 logo.c:468 + push 00ac3h ; 68 c3 0a ; 0xf7c53 logo.c:469 + push strict byte 00002h ; 6a 02 ; 0xf7c56 + call 01a14h ; e8 b9 9d ; 0xf7c58 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf7c5b + mov dx, strict word 00001h ; ba 01 00 ; 0xf7c5e logo.c:478 + mov ax, strict word 00040h ; b8 40 00 ; 0xf7c61 + call 0785fh ; e8 f8 fb ; 0xf7c64 + mov bl, al ; 88 c3 ; 0xf7c67 + test al, al ; 84 c0 ; 0xf7c69 logo.c:479 + je short 07c5eh ; 74 f1 ; 0xf7c6b + cmp AL, strict byte 030h ; 3c 30 ; 0xf7c6d logo.c:481 + je short 07cbch ; 74 4b ; 0xf7c6f + cmp bl, 002h ; 80 fb 02 ; 0xf7c71 logo.c:488 + jc short 07c95h ; 72 1f ; 0xf7c74 + cmp bl, 009h ; 80 fb 09 ; 0xf7c76 + jnbe short 07c95h ; 77 1a ; 0xf7c79 + movzx ax, bl ; 0f b6 c3 ; 0xf7c7b logo.c:490 + call 07a74h ; e8 f3 fd ; 0xf7c7e + cmp AL, strict byte 0ffh ; 3c ff ; 0xf7c81 logo.c:497 + jne short 07c87h ; 75 02 ; 0xf7c83 + jmp short 07c5eh ; eb d7 ; 0xf7c85 logo.c:498 + mov bx, 0037ch ; bb 7c 03 ; 0xf7c87 logo.c:43 + mov es, si ; 8e c6 ; 0xf7c8a + mov byte [es:bx], al ; 26 88 07 ; 0xf7c8c + mov byte [bp-010h], 002h ; c6 46 f0 02 ; 0xf7c8f logo.c:501 + jmp short 07cbch ; eb 27 ; 0xf7c93 logo.c:502 + cmp bl, 02eh ; 80 fb 2e ; 0xf7c95 logo.c:505 + je short 07caah ; 74 10 ; 0xf7c98 + cmp bl, 026h ; 80 fb 26 ; 0xf7c9a + je short 07cb0h ; 74 11 ; 0xf7c9d + cmp bl, 021h ; 80 fb 21 ; 0xf7c9f + jne short 07cb6h ; 75 12 ; 0xf7ca2 + mov byte [bp-010h], 001h ; c6 46 f0 01 ; 0xf7ca4 logo.c:509 + jmp short 07cbch ; eb 12 ; 0xf7ca8 logo.c:510 + mov byte [bp-010h], 003h ; c6 46 f0 03 ; 0xf7caa logo.c:513 + jmp short 07cbch ; eb 0c ; 0xf7cae logo.c:514 + mov byte [bp-010h], 004h ; c6 46 f0 04 ; 0xf7cb0 logo.c:517 + jmp short 07cbch ; eb 06 ; 0xf7cb4 logo.c:518 + cmp byte [bp-010h], 000h ; 80 7e f0 00 ; 0xf7cb6 logo.c:521 + je short 07c5eh ; 74 a2 ; 0xf7cba + mov bx, 0037dh ; bb 7d 03 ; 0xf7cbc logo.c:43 + mov es, si ; 8e c6 ; 0xf7cbf + mov al, byte [bp-010h] ; 8a 46 f0 ; 0xf7cc1 + mov byte [es:bx], al ; 26 88 07 ; 0xf7cc4 + mov AL, strict byte 003h ; b0 03 ; 0xf7cc7 logo.c:528 + mov AH, strict byte 000h ; b4 00 ; 0xf7cc9 + int 010h ; cd 10 ; 0xf7ccb + mov AL, strict byte 034h ; b0 34 ; 0xf7ccd logo.c:533 + out strict byte 043h, AL ; e6 43 ; 0xf7ccf + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xf7cd1 + out strict byte 040h, AL ; e6 40 ; 0xf7cd3 + out strict byte 040h, AL ; e6 40 ; 0xf7cd5 + pushad ; 66 60 ; 0xf7cd7 + push DS ; 1e ; 0xf7cd9 + mov ds, ax ; 8e d8 ; 0xf7cda + call 0edbfh ; e8 e0 70 ; 0xf7cdc + pop DS ; 1f ; 0xf7cdf + popad ; 66 61 ; 0xf7ce0 + lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf7ce2 logo.c:536 + pop di ; 5f ; 0xf7ce5 + pop si ; 5e ; 0xf7ce6 + pop dx ; 5a ; 0xf7ce7 + pop cx ; 59 ; 0xf7ce8 + pop bx ; 5b ; 0xf7ce9 + pop bp ; 5d ; 0xf7cea + retn ; c3 ; 0xf7ceb + ; disGetNextSymbol 0xf7cec LB 0x2359 -> off=0x0 cb=0000000000000067 uValue=00000000000f66ec 'delay_boot' +delay_boot: ; 0xf7cec LB 0x67 + push bp ; 55 ; 0xf7cec logo.c:539 + mov bp, sp ; 89 e5 ; 0xf7ced + push bx ; 53 ; 0xf7cef + push dx ; 52 ; 0xf7cf0 + mov dx, ax ; 89 c2 ; 0xf7cf1 + test ax, ax ; 85 c0 ; 0xf7cf3 logo.c:543 + je short 07d4ch ; 74 55 ; 0xf7cf5 + mov AL, strict byte 034h ; b0 34 ; 0xf7cf7 logo.c:547 + out strict byte 043h, AL ; e6 43 ; 0xf7cf9 + mov AL, strict byte 0d3h ; b0 d3 ; 0xf7cfb + out strict byte 040h, AL ; e6 40 ; 0xf7cfd + mov AL, strict byte 048h ; b0 48 ; 0xf7cff + out strict byte 040h, AL ; e6 40 ; 0xf7d01 + push dx ; 52 ; 0xf7d03 logo.c:549 + push 00b0dh ; 68 0d 0b ; 0xf7d04 + push strict byte 00002h ; 6a 02 ; 0xf7d07 + call 01a14h ; e8 08 9d ; 0xf7d09 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf7d0c + mov bx, dx ; 89 d3 ; 0xf7d0f logo.c:550 + test bx, bx ; 85 db ; 0xf7d11 + jbe short 07d2ch ; 76 17 ; 0xf7d13 + push bx ; 53 ; 0xf7d15 logo.c:552 + push 00b2bh ; 68 2b 0b ; 0xf7d16 + push strict byte 00002h ; 6a 02 ; 0xf7d19 + call 01a14h ; e8 f6 9c ; 0xf7d1b + add sp, strict byte 00006h ; 83 c4 06 ; 0xf7d1e + xor dx, dx ; 31 d2 ; 0xf7d21 logo.c:553 + mov ax, strict word 00040h ; b8 40 00 ; 0xf7d23 + call 0785fh ; e8 36 fb ; 0xf7d26 + dec bx ; 4b ; 0xf7d29 logo.c:554 + jmp short 07d11h ; eb e5 ; 0xf7d2a + push 00a5bh ; 68 5b 0a ; 0xf7d2c logo.c:555 + push strict byte 00002h ; 6a 02 ; 0xf7d2f + call 01a14h ; e8 e0 9c ; 0xf7d31 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf7d34 + mov AL, strict byte 034h ; b0 34 ; 0xf7d37 logo.c:557 + out strict byte 043h, AL ; e6 43 ; 0xf7d39 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xf7d3b + out strict byte 040h, AL ; e6 40 ; 0xf7d3d + out strict byte 040h, AL ; e6 40 ; 0xf7d3f + pushad ; 66 60 ; 0xf7d41 + push DS ; 1e ; 0xf7d43 + mov ds, ax ; 8e d8 ; 0xf7d44 + call 0edbfh ; e8 76 70 ; 0xf7d46 + pop DS ; 1f ; 0xf7d49 + popad ; 66 61 ; 0xf7d4a + lea sp, [bp-004h] ; 8d 66 fc ; 0xf7d4c logo.c:558 + pop dx ; 5a ; 0xf7d4f + pop bx ; 5b ; 0xf7d50 + pop bp ; 5d ; 0xf7d51 + retn ; c3 ; 0xf7d52 + ; disGetNextSymbol 0xf7d53 LB 0x22f2 -> off=0x0 cb=00000000000000d5 uValue=00000000000f6753 'scsi_cmd_data_in' +scsi_cmd_data_in: ; 0xf7d53 LB 0xd5 + push bp ; 55 ; 0xf7d53 scsi.c:99 + mov bp, sp ; 89 e5 ; 0xf7d54 + push si ; 56 ; 0xf7d56 + push di ; 57 ; 0xf7d57 + sub sp, strict byte 00006h ; 83 ec 06 ; 0xf7d58 + mov si, ax ; 89 c6 ; 0xf7d5b + mov byte [bp-006h], dl ; 88 56 fa ; 0xf7d5d + mov word [bp-00ah], bx ; 89 5e f6 ; 0xf7d60 + mov word [bp-008h], cx ; 89 4e f8 ; 0xf7d63 + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf7d66 + mov dx, si ; 89 f2 ; 0xf7d69 scsi.c:107 + in AL, DX ; ec ; 0xf7d6b + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf7d6c + test AL, strict byte 001h ; a8 01 ; 0xf7d6e scsi.c:108 + jne short 07d69h ; 75 f7 ; 0xf7d70 + cmp byte [bp+004h], 010h ; 80 7e 04 10 ; 0xf7d72 scsi.c:110 + jne short 07d7ch ; 75 04 ; 0xf7d76 + xor ax, ax ; 31 c0 ; 0xf7d78 + jmp short 07d80h ; eb 04 ; 0xf7d7a + movzx ax, byte [bp+004h] ; 0f b6 46 04 ; 0xf7d7c + mov di, ax ; 89 c7 ; 0xf7d80 + mov ax, bx ; 89 d8 ; 0xf7d82 + mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf7d84 + mov cx, strict word 0000ch ; b9 0c 00 ; 0xf7d87 + shr dx, 1 ; d1 ea ; 0xf7d8a + rcr ax, 1 ; d1 d8 ; 0xf7d8c + loop 07d8ah ; e2 fa ; 0xf7d8e + mov cx, ax ; 89 c1 ; 0xf7d90 + and cx, 000f0h ; 81 e1 f0 00 ; 0xf7d92 + or cx, di ; 09 f9 ; 0xf7d96 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7d98 scsi.c:111 + mov dx, si ; 89 f2 ; 0xf7d9b + out DX, AL ; ee ; 0xf7d9d + xor al, al ; 30 c0 ; 0xf7d9e scsi.c:112 + out DX, AL ; ee ; 0xf7da0 + mov al, cl ; 88 c8 ; 0xf7da1 scsi.c:113 + out DX, AL ; ee ; 0xf7da3 + mov al, bl ; 88 d8 ; 0xf7da4 scsi.c:114 + out DX, AL ; ee ; 0xf7da6 + mov ax, bx ; 89 d8 ; 0xf7da7 scsi.c:115 + mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf7da9 + mov cx, strict word 00008h ; b9 08 00 ; 0xf7dac + shr dx, 1 ; d1 ea ; 0xf7daf + rcr ax, 1 ; d1 d8 ; 0xf7db1 + loop 07dafh ; e2 fa ; 0xf7db3 + mov dx, si ; 89 f2 ; 0xf7db5 + out DX, AL ; ee ; 0xf7db7 + xor cx, cx ; 31 c9 ; 0xf7db8 scsi.c:116 + movzx ax, byte [bp+004h] ; 0f b6 46 04 ; 0xf7dba + cmp cx, ax ; 39 c1 ; 0xf7dbe + jnc short 07dd0h ; 73 0e ; 0xf7dc0 + les di, [bp-00ah] ; c4 7e f6 ; 0xf7dc2 scsi.c:117 + add di, cx ; 01 cf ; 0xf7dc5 + mov al, byte [es:di] ; 26 8a 05 ; 0xf7dc7 + mov dx, si ; 89 f2 ; 0xf7dca + out DX, AL ; ee ; 0xf7dcc + inc cx ; 41 ; 0xf7dcd + jmp short 07dbah ; eb ea ; 0xf7dce + mov dx, si ; 89 f2 ; 0xf7dd0 scsi.c:121 + in AL, DX ; ec ; 0xf7dd2 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf7dd3 + test AL, strict byte 001h ; a8 01 ; 0xf7dd5 scsi.c:122 + jne short 07dd0h ; 75 f7 ; 0xf7dd7 + test AL, strict byte 002h ; a8 02 ; 0xf7dd9 scsi.c:125 + je short 07debh ; 74 0e ; 0xf7ddb + lea dx, [si+003h] ; 8d 54 03 ; 0xf7ddd scsi.c:126 + xor al, al ; 30 c0 ; 0xf7de0 + out DX, AL ; ee ; 0xf7de2 + in AL, DX ; ec ; 0xf7de3 scsi.c:128 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf7de4 + mov di, strict word 00004h ; bf 04 00 ; 0xf7de6 scsi.c:130 + jmp short 07e1dh ; eb 32 ; 0xf7de9 + lea dx, [si+001h] ; 8d 54 01 ; 0xf7deb scsi.c:136 + cmp word [bp+00ch], strict byte 00000h ; 83 7e 0c 00 ; 0xf7dee + jne short 07dfah ; 75 06 ; 0xf7df2 + cmp bx, 08000h ; 81 fb 00 80 ; 0xf7df4 + jbe short 07e14h ; 76 1a ; 0xf7df8 + mov cx, 08000h ; b9 00 80 ; 0xf7dfa scsi.c:138 + les di, [bp+006h] ; c4 7e 06 ; 0xf7dfd + rep insb ; f3 6c ; 0xf7e00 + add bx, 08000h ; 81 c3 00 80 ; 0xf7e02 scsi.c:139 + adc word [bp+00ch], strict byte 0ffffh ; 83 56 0c ff ; 0xf7e06 + mov ax, es ; 8c c0 ; 0xf7e0a + add ax, 00800h ; 05 00 08 ; 0xf7e0c + mov word [bp+008h], ax ; 89 46 08 ; 0xf7e0f + jmp short 07debh ; eb d7 ; 0xf7e12 scsi.c:141 + mov cx, bx ; 89 d9 ; 0xf7e14 scsi.c:144 + les di, [bp+006h] ; c4 7e 06 ; 0xf7e16 + rep insb ; f3 6c ; 0xf7e19 + xor di, di ; 31 ff ; 0xf7e1b scsi.c:146 + mov ax, di ; 89 f8 ; 0xf7e1d scsi.c:147 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf7e1f + pop di ; 5f ; 0xf7e22 + pop si ; 5e ; 0xf7e23 + pop bp ; 5d ; 0xf7e24 + retn 0000ah ; c2 0a 00 ; 0xf7e25 + ; disGetNextSymbol 0xf7e28 LB 0x221d -> off=0x0 cb=00000000000000d5 uValue=00000000000f6828 'scsi_cmd_data_out' +scsi_cmd_data_out: ; 0xf7e28 LB 0xd5 + push bp ; 55 ; 0xf7e28 scsi.c:149 + mov bp, sp ; 89 e5 ; 0xf7e29 + push si ; 56 ; 0xf7e2b + push di ; 57 ; 0xf7e2c + sub sp, strict byte 00006h ; 83 ec 06 ; 0xf7e2d + mov di, ax ; 89 c7 ; 0xf7e30 + mov byte [bp-006h], dl ; 88 56 fa ; 0xf7e32 + mov word [bp-00ah], bx ; 89 5e f6 ; 0xf7e35 + mov word [bp-008h], cx ; 89 4e f8 ; 0xf7e38 + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf7e3b + mov dx, di ; 89 fa ; 0xf7e3e scsi.c:157 + in AL, DX ; ec ; 0xf7e40 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf7e41 + test AL, strict byte 001h ; a8 01 ; 0xf7e43 scsi.c:158 + jne short 07e3eh ; 75 f7 ; 0xf7e45 + cmp byte [bp+004h], 010h ; 80 7e 04 10 ; 0xf7e47 scsi.c:161 + jne short 07e51h ; 75 04 ; 0xf7e4b + xor ax, ax ; 31 c0 ; 0xf7e4d + jmp short 07e55h ; eb 04 ; 0xf7e4f + movzx ax, byte [bp+004h] ; 0f b6 46 04 ; 0xf7e51 + mov si, ax ; 89 c6 ; 0xf7e55 + mov ax, bx ; 89 d8 ; 0xf7e57 + mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf7e59 + mov cx, strict word 0000ch ; b9 0c 00 ; 0xf7e5c + shr dx, 1 ; d1 ea ; 0xf7e5f + rcr ax, 1 ; d1 d8 ; 0xf7e61 + loop 07e5fh ; e2 fa ; 0xf7e63 + mov cx, ax ; 89 c1 ; 0xf7e65 + and cx, 000f0h ; 81 e1 f0 00 ; 0xf7e67 + or cx, si ; 09 f1 ; 0xf7e6b + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7e6d scsi.c:162 + mov dx, di ; 89 fa ; 0xf7e70 + out DX, AL ; ee ; 0xf7e72 + mov AL, strict byte 001h ; b0 01 ; 0xf7e73 scsi.c:163 + out DX, AL ; ee ; 0xf7e75 + mov al, cl ; 88 c8 ; 0xf7e76 scsi.c:164 + out DX, AL ; ee ; 0xf7e78 + mov al, bl ; 88 d8 ; 0xf7e79 scsi.c:165 + out DX, AL ; ee ; 0xf7e7b + mov ax, bx ; 89 d8 ; 0xf7e7c scsi.c:166 + mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf7e7e + mov cx, strict word 00008h ; b9 08 00 ; 0xf7e81 + shr dx, 1 ; d1 ea ; 0xf7e84 + rcr ax, 1 ; d1 d8 ; 0xf7e86 + loop 07e84h ; e2 fa ; 0xf7e88 + mov dx, di ; 89 fa ; 0xf7e8a + out DX, AL ; ee ; 0xf7e8c + xor cx, cx ; 31 c9 ; 0xf7e8d scsi.c:167 + movzx ax, byte [bp+004h] ; 0f b6 46 04 ; 0xf7e8f + cmp cx, ax ; 39 c1 ; 0xf7e93 + jnc short 07ea5h ; 73 0e ; 0xf7e95 + les si, [bp-00ah] ; c4 76 f6 ; 0xf7e97 scsi.c:168 + add si, cx ; 01 ce ; 0xf7e9a + mov al, byte [es:si] ; 26 8a 04 ; 0xf7e9c + mov dx, di ; 89 fa ; 0xf7e9f + out DX, AL ; ee ; 0xf7ea1 + inc cx ; 41 ; 0xf7ea2 + jmp short 07e8fh ; eb ea ; 0xf7ea3 + lea dx, [di+001h] ; 8d 55 01 ; 0xf7ea5 scsi.c:173 + cmp word [bp+00ch], strict byte 00000h ; 83 7e 0c 00 ; 0xf7ea8 + jne short 07eb4h ; 75 06 ; 0xf7eac + cmp bx, 08000h ; 81 fb 00 80 ; 0xf7eae + jbe short 07ecfh ; 76 1b ; 0xf7eb2 + mov cx, 08000h ; b9 00 80 ; 0xf7eb4 scsi.c:175 + les si, [bp+006h] ; c4 76 06 ; 0xf7eb7 + db 0f3h, 026h, 06eh + ; rep es outsb ; f3 26 6e ; 0xf7eba + add bx, 08000h ; 81 c3 00 80 ; 0xf7ebd scsi.c:176 + adc word [bp+00ch], strict byte 0ffffh ; 83 56 0c ff ; 0xf7ec1 + mov ax, es ; 8c c0 ; 0xf7ec5 + add ax, 00800h ; 05 00 08 ; 0xf7ec7 + mov word [bp+008h], ax ; 89 46 08 ; 0xf7eca + jmp short 07ea5h ; eb d6 ; 0xf7ecd scsi.c:178 + mov cx, bx ; 89 d9 ; 0xf7ecf scsi.c:181 + les si, [bp+006h] ; c4 76 06 ; 0xf7ed1 + db 0f3h, 026h, 06eh + ; rep es outsb ; f3 26 6e ; 0xf7ed4 + mov dx, di ; 89 fa ; 0xf7ed7 scsi.c:185 + in AL, DX ; ec ; 0xf7ed9 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf7eda + test AL, strict byte 001h ; a8 01 ; 0xf7edc scsi.c:186 + jne short 07ed7h ; 75 f7 ; 0xf7ede + test AL, strict byte 002h ; a8 02 ; 0xf7ee0 scsi.c:189 + je short 07ef2h ; 74 0e ; 0xf7ee2 + lea dx, [di+003h] ; 8d 55 03 ; 0xf7ee4 scsi.c:190 + xor al, al ; 30 c0 ; 0xf7ee7 + out DX, AL ; ee ; 0xf7ee9 + in AL, DX ; ec ; 0xf7eea scsi.c:192 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf7eeb + mov ax, strict word 00004h ; b8 04 00 ; 0xf7eed scsi.c:194 + jmp short 07ef4h ; eb 02 ; 0xf7ef0 + xor ax, ax ; 31 c0 ; 0xf7ef2 scsi.c:197 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf7ef4 scsi.c:198 + pop di ; 5f ; 0xf7ef7 + pop si ; 5e ; 0xf7ef8 + pop bp ; 5d ; 0xf7ef9 + retn 0000ah ; c2 0a 00 ; 0xf7efa + ; disGetNextSymbol 0xf7efd LB 0x2148 -> off=0x0 cb=00000000000000db uValue=00000000000f68fd 'scsi_read_sectors' +scsi_read_sectors: ; 0xf7efd LB 0xdb + push bp ; 55 ; 0xf7efd scsi.c:207 + mov bp, sp ; 89 e5 ; 0xf7efe + push si ; 56 ; 0xf7f00 + push di ; 57 ; 0xf7f01 + sub sp, strict byte 00016h ; 83 ec 16 ; 0xf7f02 + mov si, word [bp+004h] ; 8b 76 04 ; 0xf7f05 + mov es, [bp+006h] ; 8e 46 06 ; 0xf7f08 scsi.c:216 + mov al, byte [es:si+00ch] ; 26 8a 44 0c ; 0xf7f0b + sub AL, strict byte 008h ; 2c 08 ; 0xf7f0f + mov byte [bp-006h], al ; 88 46 fa ; 0xf7f11 + cmp AL, strict byte 004h ; 3c 04 ; 0xf7f14 scsi.c:217 + jbe short 07f2bh ; 76 13 ; 0xf7f16 + movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf7f18 scsi.c:218 + push ax ; 50 ; 0xf7f1c + push 00b30h ; 68 30 0b ; 0xf7f1d + push 00b42h ; 68 42 0b ; 0xf7f20 + push strict byte 00007h ; 6a 07 ; 0xf7f23 + call 01a14h ; e8 ec 9a ; 0xf7f25 + add sp, strict byte 00008h ; 83 c4 08 ; 0xf7f28 + mov es, [bp+006h] ; 8e 46 06 ; 0xf7f2b scsi.c:220 + mov di, word [es:si+00eh] ; 26 8b 7c 0e ; 0xf7f2e + mov word [bp-01ah], 00088h ; c7 46 e6 88 00 ; 0xf7f32 scsi.c:223 + mov ax, word [es:si+006h] ; 26 8b 44 06 ; 0xf7f37 scsi.c:224 + mov bx, word [es:si+004h] ; 26 8b 5c 04 ; 0xf7f3b + mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf7f3f + mov dx, word [es:si] ; 26 8b 14 ; 0xf7f43 + xchg ah, al ; 86 c4 ; 0xf7f46 + xchg bh, bl ; 86 df ; 0xf7f48 + xchg ch, cl ; 86 cd ; 0xf7f4a + xchg dh, dl ; 86 d6 ; 0xf7f4c + xchg dx, ax ; 92 ; 0xf7f4e + xchg bx, cx ; 87 cb ; 0xf7f4f + mov word [bp-012h], ax ; 89 46 ee ; 0xf7f51 + mov word [bp-014h], bx ; 89 5e ec ; 0xf7f54 + mov word [bp-016h], cx ; 89 4e ea ; 0xf7f57 + mov word [bp-018h], dx ; 89 56 e8 ; 0xf7f5a + mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf7f5d scsi.c:225 + mov ax, di ; 89 f8 ; 0xf7f61 scsi.c:226 + xor dx, dx ; 31 d2 ; 0xf7f63 + xchg ah, al ; 86 c4 ; 0xf7f65 + xchg dh, dl ; 86 d6 ; 0xf7f67 + xchg dx, ax ; 92 ; 0xf7f69 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf7f6a + mov word [bp-00eh], dx ; 89 56 f2 ; 0xf7f6d + mov byte [bp-00bh], 000h ; c6 46 f5 00 ; 0xf7f70 scsi.c:227 + movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf7f74 scsi.c:230 + sal ax, 002h ; c1 e0 02 ; 0xf7f78 + mov bx, si ; 89 f3 ; 0xf7f7b + add bx, ax ; 01 c3 ; 0xf7f7d + mov ax, word [es:bx+0021ch] ; 26 8b 87 1c 02 ; 0xf7f7f + mov dl, byte [es:bx+0021eh] ; 26 8a 97 1e 02 ; 0xf7f84 scsi.c:231 + mov word [bp-00ah], di ; 89 7e f6 ; 0xf7f89 scsi.c:236 + mov word [bp-008h], strict word 00000h ; c7 46 f8 00 00 ; 0xf7f8c + mov cx, strict word 00009h ; b9 09 00 ; 0xf7f91 + sal word [bp-00ah], 1 ; d1 66 f6 ; 0xf7f94 + rcl word [bp-008h], 1 ; d1 56 f8 ; 0xf7f97 + loop 07f94h ; e2 f8 ; 0xf7f9a + push dword [bp-00ah] ; 66 ff 76 f6 ; 0xf7f9c + db 066h, 026h, 0ffh, 074h, 008h + ; push dword [es:si+008h] ; 66 26 ff 74 08 ; 0xf7fa0 + push strict byte 00010h ; 6a 10 ; 0xf7fa5 + xor dh, dh ; 30 f6 ; 0xf7fa7 + mov cx, ss ; 8c d1 ; 0xf7fa9 + lea bx, [bp-01ah] ; 8d 5e e6 ; 0xf7fab + call 07d53h ; e8 a2 fd ; 0xf7fae + mov ah, al ; 88 c4 ; 0xf7fb1 + test al, al ; 84 c0 ; 0xf7fb3 scsi.c:239 + jne short 07fcch ; 75 15 ; 0xf7fb5 + mov es, [bp+006h] ; 8e 46 06 ; 0xf7fb7 scsi.c:241 + mov word [es:si+018h], di ; 26 89 7c 18 ; 0xf7fba + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf7fbe scsi.c:242 + mov word [es:si+01ah], dx ; 26 89 54 1a ; 0xf7fc1 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf7fc5 + mov word [es:si+01ch], dx ; 26 89 54 1c ; 0xf7fc8 + movzx ax, ah ; 0f b6 c4 ; 0xf7fcc scsi.c:246 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf7fcf scsi.c:247 + pop di ; 5f ; 0xf7fd2 + pop si ; 5e ; 0xf7fd3 + pop bp ; 5d ; 0xf7fd4 + retn 00004h ; c2 04 00 ; 0xf7fd5 + ; disGetNextSymbol 0xf7fd8 LB 0x206d -> off=0x0 cb=00000000000000db uValue=00000000000f69d8 'scsi_write_sectors' +scsi_write_sectors: ; 0xf7fd8 LB 0xdb + push bp ; 55 ; 0xf7fd8 scsi.c:256 + mov bp, sp ; 89 e5 ; 0xf7fd9 + push si ; 56 ; 0xf7fdb + push di ; 57 ; 0xf7fdc + sub sp, strict byte 00016h ; 83 ec 16 ; 0xf7fdd + mov si, word [bp+004h] ; 8b 76 04 ; 0xf7fe0 + mov es, [bp+006h] ; 8e 46 06 ; 0xf7fe3 scsi.c:265 + mov al, byte [es:si+00ch] ; 26 8a 44 0c ; 0xf7fe6 + sub AL, strict byte 008h ; 2c 08 ; 0xf7fea + mov byte [bp-006h], al ; 88 46 fa ; 0xf7fec + cmp AL, strict byte 004h ; 3c 04 ; 0xf7fef scsi.c:266 + jbe short 08006h ; 76 13 ; 0xf7ff1 + movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf7ff3 scsi.c:267 + push ax ; 50 ; 0xf7ff7 + push 00b61h ; 68 61 0b ; 0xf7ff8 + push 00b42h ; 68 42 0b ; 0xf7ffb + push strict byte 00007h ; 6a 07 ; 0xf7ffe + call 01a14h ; e8 11 9a ; 0xf8000 + add sp, strict byte 00008h ; 83 c4 08 ; 0xf8003 + mov es, [bp+006h] ; 8e 46 06 ; 0xf8006 scsi.c:269 + mov di, word [es:si+00eh] ; 26 8b 7c 0e ; 0xf8009 + mov word [bp-01ah], 0008ah ; c7 46 e6 8a 00 ; 0xf800d scsi.c:272 + mov ax, word [es:si+006h] ; 26 8b 44 06 ; 0xf8012 scsi.c:273 + mov bx, word [es:si+004h] ; 26 8b 5c 04 ; 0xf8016 + mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf801a + mov dx, word [es:si] ; 26 8b 14 ; 0xf801e + xchg ah, al ; 86 c4 ; 0xf8021 + xchg bh, bl ; 86 df ; 0xf8023 + xchg ch, cl ; 86 cd ; 0xf8025 + xchg dh, dl ; 86 d6 ; 0xf8027 + xchg dx, ax ; 92 ; 0xf8029 + xchg bx, cx ; 87 cb ; 0xf802a + mov word [bp-012h], ax ; 89 46 ee ; 0xf802c + mov word [bp-014h], bx ; 89 5e ec ; 0xf802f + mov word [bp-016h], cx ; 89 4e ea ; 0xf8032 + mov word [bp-018h], dx ; 89 56 e8 ; 0xf8035 + mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf8038 scsi.c:274 + mov ax, di ; 89 f8 ; 0xf803c scsi.c:275 + xor dx, dx ; 31 d2 ; 0xf803e + xchg ah, al ; 86 c4 ; 0xf8040 + xchg dh, dl ; 86 d6 ; 0xf8042 + xchg dx, ax ; 92 ; 0xf8044 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf8045 + mov word [bp-00eh], dx ; 89 56 f2 ; 0xf8048 + mov byte [bp-00bh], 000h ; c6 46 f5 00 ; 0xf804b scsi.c:276 + movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf804f scsi.c:278 + sal ax, 002h ; c1 e0 02 ; 0xf8053 + mov bx, si ; 89 f3 ; 0xf8056 + add bx, ax ; 01 c3 ; 0xf8058 + mov ax, word [es:bx+0021ch] ; 26 8b 87 1c 02 ; 0xf805a + mov dl, byte [es:bx+0021eh] ; 26 8a 97 1e 02 ; 0xf805f scsi.c:279 + mov word [bp-00ah], di ; 89 7e f6 ; 0xf8064 scsi.c:284 + mov word [bp-008h], strict word 00000h ; c7 46 f8 00 00 ; 0xf8067 + mov cx, strict word 00009h ; b9 09 00 ; 0xf806c + sal word [bp-00ah], 1 ; d1 66 f6 ; 0xf806f + rcl word [bp-008h], 1 ; d1 56 f8 ; 0xf8072 + loop 0806fh ; e2 f8 ; 0xf8075 + push dword [bp-00ah] ; 66 ff 76 f6 ; 0xf8077 + db 066h, 026h, 0ffh, 074h, 008h + ; push dword [es:si+008h] ; 66 26 ff 74 08 ; 0xf807b + push strict byte 00010h ; 6a 10 ; 0xf8080 + xor dh, dh ; 30 f6 ; 0xf8082 + mov cx, ss ; 8c d1 ; 0xf8084 + lea bx, [bp-01ah] ; 8d 5e e6 ; 0xf8086 + call 07e28h ; e8 9c fd ; 0xf8089 + mov ah, al ; 88 c4 ; 0xf808c + test al, al ; 84 c0 ; 0xf808e scsi.c:287 + jne short 080a7h ; 75 15 ; 0xf8090 + mov es, [bp+006h] ; 8e 46 06 ; 0xf8092 scsi.c:289 + mov word [es:si+018h], di ; 26 89 7c 18 ; 0xf8095 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf8099 scsi.c:290 + mov word [es:si+01ah], dx ; 26 89 54 1a ; 0xf809c + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf80a0 + mov word [es:si+01ch], dx ; 26 89 54 1c ; 0xf80a3 + movzx ax, ah ; 0f b6 c4 ; 0xf80a7 scsi.c:294 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf80aa scsi.c:295 + pop di ; 5f ; 0xf80ad + pop si ; 5e ; 0xf80ae + pop bp ; 5d ; 0xf80af + retn 00004h ; c2 04 00 ; 0xf80b0 + ; disGetNextSymbol 0xf80b3 LB 0x1f92 -> off=0x0 cb=0000000000000168 uValue=00000000000f6ab3 'scsi_cmd_packet' +scsi_cmd_packet: ; 0xf80b3 LB 0x168 + push bp ; 55 ; 0xf80b3 scsi.c:315 + mov bp, sp ; 89 e5 ; 0xf80b4 + push si ; 56 ; 0xf80b6 + push di ; 57 ; 0xf80b7 + sub sp, strict byte 0000ch ; 83 ec 0c ; 0xf80b8 + mov byte [bp-006h], dl ; 88 56 fa ; 0xf80bb + mov word [bp-00eh], bx ; 89 5e f2 ; 0xf80be + mov word [bp-00ch], cx ; 89 4e f4 ; 0xf80c1 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf80c4 scsi.c:48 + mov dx, strict word 00040h ; ba 40 00 ; 0xf80c7 + mov es, dx ; 8e c2 ; 0xf80ca + mov dx, word [es:bx] ; 26 8b 17 ; 0xf80cc + mov si, 00122h ; be 22 01 ; 0xf80cf scsi.c:49 + mov word [bp-00ah], dx ; 89 56 f6 ; 0xf80d2 + cmp byte [bp+00ah], 002h ; 80 7e 0a 02 ; 0xf80d5 scsi.c:326 + jne short 080fah ; 75 1f ; 0xf80d9 + mov bx, 00db2h ; bb b2 0d ; 0xf80db scsi.c:327 + mov cx, ds ; 8c d9 ; 0xf80de + mov ax, strict word 00004h ; b8 04 00 ; 0xf80e0 + call 019d3h ; e8 ed 98 ; 0xf80e3 + push 00b74h ; 68 74 0b ; 0xf80e6 + push 00b84h ; 68 84 0b ; 0xf80e9 + push strict byte 00004h ; 6a 04 ; 0xf80ec + call 01a14h ; e8 23 99 ; 0xf80ee + add sp, strict byte 00006h ; 83 c4 06 ; 0xf80f1 + mov dx, strict word 00001h ; ba 01 00 ; 0xf80f4 scsi.c:328 + jmp near 08210h ; e9 16 01 ; 0xf80f7 + sub ax, strict word 00008h ; 2d 08 00 ; 0xf80fa scsi.c:332 + sal ax, 002h ; c1 e0 02 ; 0xf80fd scsi.c:342 + sub byte [bp-006h], 002h ; 80 6e fa 02 ; 0xf8100 scsi.c:340 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8104 + mov di, si ; 89 f7 ; 0xf8107 + add di, ax ; 01 c7 ; 0xf8109 + mov bx, word [es:di+0021ch] ; 26 8b 9d 1c 02 ; 0xf810b + mov al, byte [es:di+0021eh] ; 26 8a 85 1e 02 ; 0xf8110 scsi.c:343 + mov byte [bp-008h], al ; 88 46 f8 ; 0xf8115 + mov dx, bx ; 89 da ; 0xf8118 scsi.c:347 + in AL, DX ; ec ; 0xf811a + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf811b + test AL, strict byte 001h ; a8 01 ; 0xf811d scsi.c:348 + jne short 08118h ; 75 f7 ; 0xf811f + xor dx, bx ; 31 da ; 0xf8121 scsi.c:354 + mov ax, word [bp+006h] ; 8b 46 06 ; 0xf8123 + add ax, word [bp+004h] ; 03 46 04 ; 0xf8126 + mov cx, word [bp+008h] ; 8b 4e 08 ; 0xf8129 + adc cx, dx ; 11 d1 ; 0xf812c + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf812e + mov dx, word [es:si+020h] ; 26 8b 54 20 ; 0xf8131 + xor di, di ; 31 ff ; 0xf8135 + add ax, dx ; 01 d0 ; 0xf8137 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf8139 + adc di, cx ; 11 cf ; 0xf813c + mov dx, di ; 89 fa ; 0xf813e scsi.c:356 + mov cx, strict word 0000ch ; b9 0c 00 ; 0xf8140 + shr dx, 1 ; d1 ea ; 0xf8143 + rcr ax, 1 ; d1 d8 ; 0xf8145 + loop 08143h ; e2 fa ; 0xf8147 + and ax, 000f0h ; 25 f0 00 ; 0xf8149 + movzx cx, byte [bp-006h] ; 0f b6 4e fa ; 0xf814c + or cx, ax ; 09 c1 ; 0xf8150 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf8152 scsi.c:357 + mov dx, bx ; 89 da ; 0xf8155 + out DX, AL ; ee ; 0xf8157 + xor al, al ; 30 c0 ; 0xf8158 scsi.c:358 + out DX, AL ; ee ; 0xf815a + mov al, cl ; 88 c8 ; 0xf815b scsi.c:359 + out DX, AL ; ee ; 0xf815d + mov al, byte [bp-010h] ; 8a 46 f0 ; 0xf815e scsi.c:360 + out DX, AL ; ee ; 0xf8161 + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf8162 scsi.c:361 + mov dx, di ; 89 fa ; 0xf8165 + mov cx, strict word 00008h ; b9 08 00 ; 0xf8167 + shr dx, 1 ; d1 ea ; 0xf816a + rcr ax, 1 ; d1 d8 ; 0xf816c + loop 0816ah ; e2 fa ; 0xf816e + mov dx, bx ; 89 da ; 0xf8170 + out DX, AL ; ee ; 0xf8172 + xor cx, cx ; 31 c9 ; 0xf8173 scsi.c:362 + movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf8175 + cmp cx, ax ; 39 c1 ; 0xf8179 + jnc short 0818bh ; 73 0e ; 0xf817b + les di, [bp-00eh] ; c4 7e f2 ; 0xf817d scsi.c:363 + add di, cx ; 01 cf ; 0xf8180 + mov al, byte [es:di] ; 26 8a 05 ; 0xf8182 + mov dx, bx ; 89 da ; 0xf8185 + out DX, AL ; ee ; 0xf8187 + inc cx ; 41 ; 0xf8188 + jmp short 08175h ; eb ea ; 0xf8189 + mov dx, bx ; 89 da ; 0xf818b scsi.c:367 + in AL, DX ; ec ; 0xf818d + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf818e + test AL, strict byte 001h ; a8 01 ; 0xf8190 scsi.c:368 + jne short 0818bh ; 75 f7 ; 0xf8192 + test AL, strict byte 002h ; a8 02 ; 0xf8194 scsi.c:371 + je short 081a6h ; 74 0e ; 0xf8196 + lea dx, [bx+003h] ; 8d 57 03 ; 0xf8198 scsi.c:372 + xor al, al ; 30 c0 ; 0xf819b + out DX, AL ; ee ; 0xf819d + in AL, DX ; ec ; 0xf819e scsi.c:374 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf819f + mov dx, strict word 00003h ; ba 03 00 ; 0xf81a1 scsi.c:376 + jmp short 08210h ; eb 6a ; 0xf81a4 + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf81a6 scsi.c:381 + test ax, ax ; 85 c0 ; 0xf81a9 + je short 081b5h ; 74 08 ; 0xf81ab + lea dx, [bx+001h] ; 8d 57 01 ; 0xf81ad scsi.c:382 + mov cx, ax ; 89 c1 ; 0xf81b0 + in AL, DX ; ec ; 0xf81b2 + loop 081b2h ; e2 fd ; 0xf81b3 + mov ax, word [bp+006h] ; 8b 46 06 ; 0xf81b5 scsi.c:384 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf81b8 + mov word [es:si+01ah], ax ; 26 89 44 1a ; 0xf81bb + mov ax, word [bp+008h] ; 8b 46 08 ; 0xf81bf + mov word [es:si+01ch], ax ; 26 89 44 1c ; 0xf81c2 + lea ax, [bx+001h] ; 8d 47 01 ; 0xf81c6 scsi.c:389 + cmp word [bp+008h], strict byte 00000h ; 83 7e 08 00 ; 0xf81c9 + jne short 081d6h ; 75 07 ; 0xf81cd + cmp word [bp+006h], 08000h ; 81 7e 06 00 80 ; 0xf81cf + jbe short 081f3h ; 76 1d ; 0xf81d4 + mov dx, ax ; 89 c2 ; 0xf81d6 scsi.c:391 + mov cx, 08000h ; b9 00 80 ; 0xf81d8 + les di, [bp+00ch] ; c4 7e 0c ; 0xf81db + rep insb ; f3 6c ; 0xf81de + add word [bp+006h], 08000h ; 81 46 06 00 80 ; 0xf81e0 scsi.c:392 + adc word [bp+008h], strict byte 0ffffh ; 83 56 08 ff ; 0xf81e5 + mov ax, es ; 8c c0 ; 0xf81e9 + add ax, 00800h ; 05 00 08 ; 0xf81eb + mov word [bp+00eh], ax ; 89 46 0e ; 0xf81ee + jmp short 081c6h ; eb d3 ; 0xf81f1 scsi.c:394 + mov dx, ax ; 89 c2 ; 0xf81f3 scsi.c:397 + mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf81f5 + les di, [bp+00ch] ; c4 7e 0c ; 0xf81f8 + rep insb ; f3 6c ; 0xf81fb + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf81fd scsi.c:399 + cmp word [es:si+020h], strict byte 00000h ; 26 83 7c 20 00 ; 0xf8200 + je short 0820eh ; 74 07 ; 0xf8205 + mov cx, word [es:si+020h] ; 26 8b 4c 20 ; 0xf8207 scsi.c:400 + in AL, DX ; ec ; 0xf820b + loop 0820bh ; e2 fd ; 0xf820c + xor dx, dx ; 31 d2 ; 0xf820e scsi.c:402 + mov ax, dx ; 89 d0 ; 0xf8210 scsi.c:403 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf8212 + pop di ; 5f ; 0xf8215 + pop si ; 5e ; 0xf8216 + pop bp ; 5d ; 0xf8217 + retn 0000ch ; c2 0c 00 ; 0xf8218 + ; disGetNextSymbol 0xf821b LB 0x1e2a -> off=0x0 cb=0000000000000484 uValue=00000000000f6c1b 'scsi_enumerate_attached_devices' +scsi_enumerate_attached_devices: ; 0xf821b LB 0x484 + push bp ; 55 ; 0xf821b scsi.c:411 + mov bp, sp ; 89 e5 ; 0xf821c + push bx ; 53 ; 0xf821e + push cx ; 51 ; 0xf821f + push dx ; 52 ; 0xf8220 + push si ; 56 ; 0xf8221 + push di ; 57 ; 0xf8222 + sub sp, 0023ch ; 81 ec 3c 02 ; 0xf8223 + push ax ; 50 ; 0xf8227 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf8228 scsi.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf822b + mov es, ax ; 8e c0 ; 0xf822e + mov ax, word [es:bx] ; 26 8b 07 ; 0xf8230 + mov di, 00122h ; bf 22 01 ; 0xf8233 scsi.c:49 + mov word [bp-022h], ax ; 89 46 de ; 0xf8236 + mov word [bp-01ch], strict word 00000h ; c7 46 e4 00 00 ; 0xf8239 scsi.c:420 + jmp near 08621h ; e9 e0 03 ; 0xf823e + cmp AL, strict byte 004h ; 3c 04 ; 0xf8241 scsi.c:440 + jnc near 08695h ; 0f 83 4e 04 ; 0xf8243 + mov cx, strict word 00010h ; b9 10 00 ; 0xf8247 scsi.c:455 + xor bx, bx ; 31 db ; 0xf824a + mov dx, ss ; 8c d2 ; 0xf824c + lea ax, [bp-046h] ; 8d 46 ba ; 0xf824e + call 09fb0h ; e8 5c 1d ; 0xf8251 + mov byte [bp-046h], 09eh ; c6 46 ba 9e ; 0xf8254 scsi.c:456 + mov byte [bp-045h], 010h ; c6 46 bb 10 ; 0xf8258 scsi.c:457 + mov byte [bp-039h], 020h ; c6 46 c7 20 ; 0xf825c scsi.c:458 + push dword 000000020h ; 66 6a 20 ; 0xf8260 scsi.c:460 + lea dx, [bp-00246h] ; 8d 96 ba fd ; 0xf8263 + push SS ; 16 ; 0xf8267 + push dx ; 52 ; 0xf8268 + push strict byte 00010h ; 6a 10 ; 0xf8269 + movzx dx, byte [bp-01ch] ; 0f b6 56 e4 ; 0xf826b + mov cx, ss ; 8c d1 ; 0xf826f + lea bx, [bp-046h] ; 8d 5e ba ; 0xf8271 + mov ax, word [bp-00248h] ; 8b 86 b8 fd ; 0xf8274 + call 07d53h ; e8 d8 fa ; 0xf8278 + test al, al ; 84 c0 ; 0xf827b scsi.c:461 + je short 0828dh ; 74 0e ; 0xf827d + push 00ba4h ; 68 a4 0b ; 0xf827f scsi.c:462 + push 00bddh ; 68 dd 0b ; 0xf8282 + push strict byte 00007h ; 6a 07 ; 0xf8285 + call 01a14h ; e8 8a 97 ; 0xf8287 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf828a + mov ax, word [bp-00240h] ; 8b 86 c0 fd ; 0xf828d scsi.c:467 + mov bx, word [bp-00242h] ; 8b 9e be fd ; 0xf8291 + mov cx, word [bp-00244h] ; 8b 8e bc fd ; 0xf8295 + mov dx, word [bp-00246h] ; 8b 96 ba fd ; 0xf8299 + xchg ah, al ; 86 c4 ; 0xf829d + xchg bh, bl ; 86 df ; 0xf829f + xchg ch, cl ; 86 cd ; 0xf82a1 + xchg dh, dl ; 86 d6 ; 0xf82a3 + xchg dx, ax ; 92 ; 0xf82a5 + xchg bx, cx ; 87 cb ; 0xf82a6 + add dx, strict byte 00001h ; 83 c2 01 ; 0xf82a8 + mov word [bp-012h], dx ; 89 56 ee ; 0xf82ab + adc cx, strict byte 00000h ; 83 d1 00 ; 0xf82ae + mov word [bp-010h], cx ; 89 4e f0 ; 0xf82b1 + adc bx, strict byte 00000h ; 83 d3 00 ; 0xf82b4 + mov word [bp-016h], bx ; 89 5e ea ; 0xf82b7 + adc ax, strict word 00000h ; 15 00 00 ; 0xf82ba + mov word [bp-024h], ax ; 89 46 dc ; 0xf82bd + movzx si, byte [bp-0023eh] ; 0f b6 b6 c2 fd ; 0xf82c0 scsi.c:469 + sal si, 008h ; c1 e6 08 ; 0xf82c5 + movzx ax, byte [bp-0023dh] ; 0f b6 86 c3 fd ; 0xf82c8 + xor bx, bx ; 31 db ; 0xf82cd + or si, ax ; 09 c6 ; 0xf82cf + movzx ax, byte [bp-0023ch] ; 0f b6 86 c4 fd ; 0xf82d1 + xor dx, dx ; 31 d2 ; 0xf82d6 + mov cx, strict word 00008h ; b9 08 00 ; 0xf82d8 + sal ax, 1 ; d1 e0 ; 0xf82db + rcl dx, 1 ; d1 d2 ; 0xf82dd + loop 082dbh ; e2 fa ; 0xf82df + or ax, bx ; 09 d8 ; 0xf82e1 + or dx, si ; 09 f2 ; 0xf82e3 + movzx bx, byte [bp-0023bh] ; 0f b6 9e c5 fd ; 0xf82e5 + or ax, bx ; 09 d8 ; 0xf82ea + mov word [bp-028h], ax ; 89 46 d8 ; 0xf82ec + test dx, dx ; 85 d2 ; 0xf82ef scsi.c:475 + jne short 082f8h ; 75 05 ; 0xf82f1 + cmp ax, 00200h ; 3d 00 02 ; 0xf82f3 + je short 08318h ; 74 20 ; 0xf82f6 + mov bx, 00db2h ; bb b2 0d ; 0xf82f8 scsi.c:478 + mov cx, ds ; 8c d9 ; 0xf82fb + mov ax, strict word 00004h ; b8 04 00 ; 0xf82fd + call 019d3h ; e8 d0 96 ; 0xf8300 + push dx ; 52 ; 0xf8303 + push word [bp-028h] ; ff 76 d8 ; 0xf8304 + push word [bp-01ch] ; ff 76 e4 ; 0xf8307 + push 00bfch ; 68 fc 0b ; 0xf830a + push strict byte 00004h ; 6a 04 ; 0xf830d + call 01a14h ; e8 02 97 ; 0xf830f + add sp, strict byte 0000ah ; 83 c4 0a ; 0xf8312 + jmp near 08618h ; e9 00 03 ; 0xf8315 scsi.c:479 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf8318 scsi.c:483 + cmp AL, strict byte 001h ; 3c 01 ; 0xf831b + jc short 0832bh ; 72 0c ; 0xf831d + jbe short 08333h ; 76 12 ; 0xf831f + cmp AL, strict byte 003h ; 3c 03 ; 0xf8321 + je short 0833bh ; 74 16 ; 0xf8323 + cmp AL, strict byte 002h ; 3c 02 ; 0xf8325 + je short 08337h ; 74 0e ; 0xf8327 + jmp short 08384h ; eb 59 ; 0xf8329 + test al, al ; 84 c0 ; 0xf832b + jne short 08384h ; 75 55 ; 0xf832d + mov BL, strict byte 090h ; b3 90 ; 0xf832f scsi.c:486 + jmp short 0833dh ; eb 0a ; 0xf8331 scsi.c:487 + mov BL, strict byte 098h ; b3 98 ; 0xf8333 scsi.c:489 + jmp short 0833dh ; eb 06 ; 0xf8335 scsi.c:490 + mov BL, strict byte 0a0h ; b3 a0 ; 0xf8337 scsi.c:492 + jmp short 0833dh ; eb 02 ; 0xf8339 scsi.c:493 + mov BL, strict byte 0a8h ; b3 a8 ; 0xf833b scsi.c:495 + mov al, bl ; 88 d8 ; 0xf833d scsi.c:499 + add AL, strict byte 007h ; 04 07 ; 0xf833f + movzx cx, al ; 0f b6 c8 ; 0xf8341 + mov ax, cx ; 89 c8 ; 0xf8344 + call 01756h ; e8 0d 94 ; 0xf8346 + test al, al ; 84 c0 ; 0xf8349 + je short 08384h ; 74 37 ; 0xf834b + mov al, bl ; 88 d8 ; 0xf834d scsi.c:504 + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf834f + xor ah, ah ; 30 e4 ; 0xf8351 + call 01756h ; e8 00 94 ; 0xf8353 + movzx dx, al ; 0f b6 d0 ; 0xf8356 + sal dx, 008h ; c1 e2 08 ; 0xf8359 + movzx ax, bl ; 0f b6 c3 ; 0xf835c + call 01756h ; e8 f4 93 ; 0xf835f + xor ah, ah ; 30 e4 ; 0xf8362 + add ax, dx ; 01 d0 ; 0xf8364 + cwd ; 99 ; 0xf8366 + mov si, ax ; 89 c6 ; 0xf8367 + mov al, bl ; 88 d8 ; 0xf8369 scsi.c:505 + add AL, strict byte 002h ; 04 02 ; 0xf836b + xor ah, ah ; 30 e4 ; 0xf836d + call 01756h ; e8 e4 93 ; 0xf836f + xor ah, ah ; 30 e4 ; 0xf8372 + mov word [bp-032h], ax ; 89 46 ce ; 0xf8374 + mov ax, cx ; 89 c8 ; 0xf8377 scsi.c:506 + call 01756h ; e8 da 93 ; 0xf8379 + xor ah, ah ; 30 e4 ; 0xf837c + mov word [bp-026h], ax ; 89 46 da ; 0xf837e + jmp near 08473h ; e9 ef 00 ; 0xf8381 scsi.c:508 + mov ax, word [bp-024h] ; 8b 46 dc ; 0xf8384 scsi.c:509 + mov bx, word [bp-016h] ; 8b 5e ea ; 0xf8387 + mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf838a + mov dx, word [bp-012h] ; 8b 56 ee ; 0xf838d + mov si, strict word 0000ch ; be 0c 00 ; 0xf8390 + call 09f90h ; e8 fa 1b ; 0xf8393 + mov word [bp-01ah], ax ; 89 46 e6 ; 0xf8396 + mov word [bp-014h], bx ; 89 5e ec ; 0xf8399 + mov word [bp-018h], cx ; 89 4e e8 ; 0xf839c + mov word [bp-02ah], dx ; 89 56 d6 ; 0xf839f + mov ax, word [bp-024h] ; 8b 46 dc ; 0xf83a2 scsi.c:513 + test ax, ax ; 85 c0 ; 0xf83a5 + jnbe short 083bfh ; 77 16 ; 0xf83a7 + jne near 08434h ; 0f 85 87 00 ; 0xf83a9 + cmp word [bp-016h], strict byte 00000h ; 83 7e ea 00 ; 0xf83ad + jnbe short 083bfh ; 77 0c ; 0xf83b1 + jne near 08434h ; 0f 85 7d 00 ; 0xf83b3 + cmp word [bp-010h], strict byte 00040h ; 83 7e f0 40 ; 0xf83b7 + jnbe short 083bfh ; 77 02 ; 0xf83bb + jne short 08434h ; 75 75 ; 0xf83bd + mov word [bp-032h], 000ffh ; c7 46 ce ff 00 ; 0xf83bf scsi.c:515 + mov word [bp-026h], strict word 0003fh ; c7 46 da 3f 00 ; 0xf83c4 scsi.c:516 + mov bx, word [bp-016h] ; 8b 5e ea ; 0xf83c9 scsi.c:518 + mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf83cc + mov dx, word [bp-012h] ; 8b 56 ee ; 0xf83cf + mov si, strict word 00006h ; be 06 00 ; 0xf83d2 + call 09f90h ; e8 b8 1b ; 0xf83d5 + mov si, word [bp-02ah] ; 8b 76 d6 ; 0xf83d8 + add si, dx ; 01 d6 ; 0xf83db + mov word [bp-02ch], si ; 89 76 d4 ; 0xf83dd + mov dx, word [bp-018h] ; 8b 56 e8 ; 0xf83e0 + adc dx, cx ; 11 ca ; 0xf83e3 + mov word [bp-01eh], dx ; 89 56 e2 ; 0xf83e5 + mov dx, word [bp-014h] ; 8b 56 ec ; 0xf83e8 + adc dx, bx ; 11 da ; 0xf83eb + mov word [bp-034h], dx ; 89 56 cc ; 0xf83ed + mov dx, word [bp-01ah] ; 8b 56 e6 ; 0xf83f0 + adc dx, ax ; 11 c2 ; 0xf83f3 + mov word [bp-036h], dx ; 89 56 ca ; 0xf83f5 + mov ax, dx ; 89 d0 ; 0xf83f8 scsi.c:519 + mov bx, word [bp-034h] ; 8b 5e cc ; 0xf83fa + mov cx, word [bp-01eh] ; 8b 4e e2 ; 0xf83fd + mov dx, si ; 89 f2 ; 0xf8400 + mov si, strict word 00008h ; be 08 00 ; 0xf8402 + call 09f90h ; e8 88 1b ; 0xf8405 + mov word [bp-02eh], bx ; 89 5e d2 ; 0xf8408 + mov word [bp-020h], cx ; 89 4e e0 ; 0xf840b + mov word [bp-030h], dx ; 89 56 d0 ; 0xf840e + mov ax, word [bp-036h] ; 8b 46 ca ; 0xf8411 + mov bx, word [bp-034h] ; 8b 5e cc ; 0xf8414 + mov cx, word [bp-01eh] ; 8b 4e e2 ; 0xf8417 + mov dx, word [bp-02ch] ; 8b 56 d4 ; 0xf841a + mov si, strict word 00010h ; be 10 00 ; 0xf841d + call 09f90h ; e8 6d 1b ; 0xf8420 + mov si, word [bp-030h] ; 8b 76 d0 ; 0xf8423 + add si, dx ; 01 d6 ; 0xf8426 + mov dx, word [bp-020h] ; 8b 56 e0 ; 0xf8428 + adc dx, cx ; 11 ca ; 0xf842b + mov ax, word [bp-02eh] ; 8b 46 d2 ; 0xf842d + adc ax, bx ; 11 d8 ; 0xf8430 + jmp short 08473h ; eb 3f ; 0xf8432 scsi.c:521 + test ax, ax ; 85 c0 ; 0xf8434 + jnbe short 0844ah ; 77 12 ; 0xf8436 + jne short 08456h ; 75 1c ; 0xf8438 + cmp word [bp-016h], strict byte 00000h ; 83 7e ea 00 ; 0xf843a + jnbe short 0844ah ; 77 0a ; 0xf843e + jne short 08456h ; 75 14 ; 0xf8440 + cmp word [bp-010h], strict byte 00020h ; 83 7e f0 20 ; 0xf8442 + jnbe short 0844ah ; 77 02 ; 0xf8446 + jne short 08456h ; 75 0c ; 0xf8448 + mov word [bp-032h], 00080h ; c7 46 ce 80 00 ; 0xf844a scsi.c:523 + mov word [bp-026h], strict word 00020h ; c7 46 da 20 00 ; 0xf844f scsi.c:524 + jmp short 0846fh ; eb 19 ; 0xf8454 scsi.c:527 + mov word [bp-032h], strict word 00040h ; c7 46 ce 40 00 ; 0xf8456 scsi.c:529 + mov word [bp-026h], strict word 00020h ; c7 46 da 20 00 ; 0xf845b scsi.c:530 + mov bx, word [bp-016h] ; 8b 5e ea ; 0xf8460 scsi.c:531 + mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf8463 + mov dx, word [bp-012h] ; 8b 56 ee ; 0xf8466 + mov si, strict word 0000bh ; be 0b 00 ; 0xf8469 + call 09f90h ; e8 21 1b ; 0xf846c + mov si, dx ; 89 d6 ; 0xf846f + mov dx, cx ; 89 ca ; 0xf8471 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf8473 scsi.c:536 + add AL, strict byte 008h ; 04 08 ; 0xf8476 + mov byte [bp-00eh], al ; 88 46 f2 ; 0xf8478 + movzx ax, byte [bp-00ch] ; 0f b6 46 f4 ; 0xf847b scsi.c:538 + sal ax, 002h ; c1 e0 02 ; 0xf847f + mov es, [bp-022h] ; 8e 46 de ; 0xf8482 + mov bx, di ; 89 fb ; 0xf8485 + add bx, ax ; 01 c3 ; 0xf8487 + mov ax, word [bp-00248h] ; 8b 86 b8 fd ; 0xf8489 + mov word [es:bx+0021ch], ax ; 26 89 87 1c 02 ; 0xf848d + mov al, byte [bp-01ch] ; 8a 46 e4 ; 0xf8492 scsi.c:539 + mov byte [es:bx+0021eh], al ; 26 88 87 1e 02 ; 0xf8495 + movzx bx, byte [bp-00eh] ; 0f b6 5e f2 ; 0xf849a scsi.c:540 + imul bx, bx, strict byte 0001ch ; 6b db 1c ; 0xf849e + add bx, di ; 01 fb ; 0xf84a1 + db 066h, 026h, 0c7h, 047h, 022h, 004h, 0ffh, 000h, 000h + ; mov dword [es:bx+022h], strict dword 00000ff04h ; 66 26 c7 47 22 04 ff 00 00; 0xf84a3 + mov ax, word [bp-028h] ; 8b 46 d8 ; 0xf84ac scsi.c:544 + mov word [es:bx+028h], ax ; 26 89 47 28 ; 0xf84af + mov byte [es:bx+027h], 001h ; 26 c6 47 27 01 ; 0xf84b3 scsi.c:545 + mov ax, word [bp-032h] ; 8b 46 ce ; 0xf84b8 scsi.c:548 + mov word [es:bx+02ah], ax ; 26 89 47 2a ; 0xf84bb + mov ax, word [bp-026h] ; 8b 46 da ; 0xf84bf scsi.c:549 + mov word [es:bx+02eh], ax ; 26 89 47 2e ; 0xf84c2 + mov ax, word [bp-032h] ; 8b 46 ce ; 0xf84c6 scsi.c:550 + mov word [es:bx+030h], ax ; 26 89 47 30 ; 0xf84c9 + mov ax, word [bp-026h] ; 8b 46 da ; 0xf84cd scsi.c:551 + mov word [es:bx+034h], ax ; 26 89 47 34 ; 0xf84d0 + test dx, dx ; 85 d2 ; 0xf84d4 scsi.c:553 + jne short 084deh ; 75 06 ; 0xf84d6 + cmp si, 00400h ; 81 fe 00 04 ; 0xf84d8 + jbe short 084ech ; 76 0e ; 0xf84dc + mov word [es:bx+02ch], 00400h ; 26 c7 47 2c 00 04 ; 0xf84de scsi.c:554 + mov word [es:bx+032h], 00400h ; 26 c7 47 32 00 04 ; 0xf84e4 scsi.c:555 + jmp short 084f4h ; eb 08 ; 0xf84ea scsi.c:556 + mov word [es:bx+02ch], si ; 26 89 77 2c ; 0xf84ec scsi.c:557 + mov word [es:bx+032h], si ; 26 89 77 32 ; 0xf84f0 scsi.c:558 + mov bx, 00db2h ; bb b2 0d ; 0xf84f4 scsi.c:562 + mov cx, ds ; 8c d9 ; 0xf84f7 + mov ax, strict word 00004h ; b8 04 00 ; 0xf84f9 + call 019d3h ; e8 d4 94 ; 0xf84fc + push word [bp-024h] ; ff 76 dc ; 0xf84ff + push word [bp-016h] ; ff 76 ea ; 0xf8502 + push dword [bp-012h] ; 66 ff 76 ee ; 0xf8505 + push word [bp-026h] ; ff 76 da ; 0xf8509 + push word [bp-032h] ; ff 76 ce ; 0xf850c + push dx ; 52 ; 0xf850f + push si ; 56 ; 0xf8510 + push word [bp-01ch] ; ff 76 e4 ; 0xf8511 + movzx ax, byte [bp-00ch] ; 0f b6 46 f4 ; 0xf8514 + push ax ; 50 ; 0xf8518 + push 00c2ah ; 68 2a 0c ; 0xf8519 + push strict byte 00004h ; 6a 04 ; 0xf851c + call 01a14h ; e8 f3 94 ; 0xf851e + add sp, strict byte 00018h ; 83 c4 18 ; 0xf8521 + movzx ax, byte [bp-00eh] ; 0f b6 46 f2 ; 0xf8524 scsi.c:564 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf8528 + mov es, [bp-022h] ; 8e 46 de ; 0xf852b + mov bx, di ; 89 fb ; 0xf852e + add bx, ax ; 01 c3 ; 0xf8530 + mov ax, word [bp-024h] ; 8b 46 dc ; 0xf8532 + mov word [es:bx+03ch], ax ; 26 89 47 3c ; 0xf8535 + mov ax, word [bp-016h] ; 8b 46 ea ; 0xf8539 + mov word [es:bx+03ah], ax ; 26 89 47 3a ; 0xf853c + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf8540 + mov word [es:bx+038h], ax ; 26 89 47 38 ; 0xf8543 + mov ax, word [bp-012h] ; 8b 46 ee ; 0xf8547 + mov word [es:bx+036h], ax ; 26 89 47 36 ; 0xf854a + mov al, byte [es:di+001e2h] ; 26 8a 85 e2 01 ; 0xf854e scsi.c:567 + mov ah, byte [bp-00ch] ; 8a 66 f4 ; 0xf8553 scsi.c:568 + add ah, 008h ; 80 c4 08 ; 0xf8556 + movzx bx, al ; 0f b6 d8 ; 0xf8559 + add bx, di ; 01 fb ; 0xf855c + mov byte [es:bx+001e3h], ah ; 26 88 a7 e3 01 ; 0xf855e + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf8563 scsi.c:569 + mov byte [es:di+001e2h], al ; 26 88 85 e2 01 ; 0xf8565 scsi.c:570 + mov bx, strict word 00075h ; bb 75 00 ; 0xf856a scsi.c:38 + mov ax, strict word 00040h ; b8 40 00 ; 0xf856d + mov es, ax ; 8e c0 ; 0xf8570 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf8572 + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf8575 scsi.c:574 + mov byte [es:bx], al ; 26 88 07 ; 0xf8577 scsi.c:43 + inc byte [bp-00ch] ; fe 46 f4 ; 0xf857a scsi.c:577 + jmp near 0860dh ; e9 8d 00 ; 0xf857d scsi.c:579 + mov bx, 00db2h ; bb b2 0d ; 0xf8580 scsi.c:591 + mov cx, ds ; 8c d9 ; 0xf8583 + mov ax, strict word 00004h ; b8 04 00 ; 0xf8585 + call 019d3h ; e8 48 94 ; 0xf8588 + push word [bp-01ch] ; ff 76 e4 ; 0xf858b + movzx ax, byte [bp-00ch] ; 0f b6 46 f4 ; 0xf858e + push ax ; 50 ; 0xf8592 + push 00c58h ; 68 58 0c ; 0xf8593 + push strict byte 00004h ; 6a 04 ; 0xf8596 + call 01a14h ; e8 79 94 ; 0xf8598 + add sp, strict byte 00008h ; 83 c4 08 ; 0xf859b + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf859e scsi.c:594 + add AL, strict byte 008h ; 04 08 ; 0xf85a1 + mov byte [bp-00eh], al ; 88 46 f2 ; 0xf85a3 + test byte [bp-00245h], 080h ; f6 86 bb fd 80 ; 0xf85a6 scsi.c:596 + db 00fh, 095h, 0c0h + ; setne al ; 0f 95 c0 ; 0xf85ab + xor ah, ah ; 30 e4 ; 0xf85ae + mov dx, ax ; 89 c2 ; 0xf85b0 + movzx ax, byte [bp-00ch] ; 0f b6 46 f4 ; 0xf85b2 scsi.c:598 + sal ax, 002h ; c1 e0 02 ; 0xf85b6 + mov es, [bp-022h] ; 8e 46 de ; 0xf85b9 + mov bx, di ; 89 fb ; 0xf85bc + add bx, ax ; 01 c3 ; 0xf85be + mov ax, word [bp-00248h] ; 8b 86 b8 fd ; 0xf85c0 + mov word [es:bx+0021ch], ax ; 26 89 87 1c 02 ; 0xf85c4 + mov al, byte [bp-01ch] ; 8a 46 e4 ; 0xf85c9 scsi.c:599 + mov byte [es:bx+0021eh], al ; 26 88 87 1e 02 ; 0xf85cc + movzx bx, byte [bp-00eh] ; 0f b6 5e f2 ; 0xf85d1 scsi.c:600 + imul bx, bx, strict byte 0001ch ; 6b db 1c ; 0xf85d5 + add bx, di ; 01 fb ; 0xf85d8 + mov word [es:bx+022h], 00504h ; 26 c7 47 22 04 05 ; 0xf85da + mov byte [es:bx+024h], dl ; 26 88 57 24 ; 0xf85e0 scsi.c:602 + mov word [es:bx+028h], 00800h ; 26 c7 47 28 00 08 ; 0xf85e4 scsi.c:603 + mov byte [es:bx+027h], dh ; 26 88 77 27 ; 0xf85ea scsi.c:604 + mov al, byte [es:di+001f3h] ; 26 8a 85 f3 01 ; 0xf85ee scsi.c:607 + mov ah, byte [bp-00ch] ; 8a 66 f4 ; 0xf85f3 scsi.c:608 + add ah, 008h ; 80 c4 08 ; 0xf85f6 + movzx bx, al ; 0f b6 d8 ; 0xf85f9 + add bx, di ; 01 fb ; 0xf85fc + mov byte [es:bx+001f4h], ah ; 26 88 a7 f4 01 ; 0xf85fe + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf8603 scsi.c:609 + mov byte [es:di+001f3h], al ; 26 88 85 f3 01 ; 0xf8605 scsi.c:610 + inc byte [bp-00ch] ; fe 46 f4 ; 0xf860a scsi.c:612 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf860d scsi.c:617 + mov es, [bp-022h] ; 8e 46 de ; 0xf8610 + mov byte [es:di+0022ch], al ; 26 88 85 2c 02 ; 0xf8613 + inc word [bp-01ch] ; ff 46 e4 ; 0xf8618 scsi.c:618 + cmp word [bp-01ch], strict byte 00010h ; 83 7e e4 10 ; 0xf861b + jnl short 08695h ; 7d 74 ; 0xf861f + mov byte [bp-046h], 012h ; c6 46 ba 12 ; 0xf8621 + xor al, al ; 30 c0 ; 0xf8625 + mov byte [bp-045h], al ; 88 46 bb ; 0xf8627 + mov byte [bp-044h], al ; 88 46 bc ; 0xf862a + mov byte [bp-043h], al ; 88 46 bd ; 0xf862d + mov byte [bp-042h], 005h ; c6 46 be 05 ; 0xf8630 + mov byte [bp-041h], al ; 88 46 bf ; 0xf8634 + push dword 000000005h ; 66 6a 05 ; 0xf8637 + lea dx, [bp-00246h] ; 8d 96 ba fd ; 0xf863a + push SS ; 16 ; 0xf863e + push dx ; 52 ; 0xf863f + push strict byte 00006h ; 6a 06 ; 0xf8640 + movzx dx, byte [bp-01ch] ; 0f b6 56 e4 ; 0xf8642 + mov cx, ss ; 8c d1 ; 0xf8646 + lea bx, [bp-046h] ; 8d 5e ba ; 0xf8648 + mov ax, word [bp-00248h] ; 8b 86 b8 fd ; 0xf864b + call 07d53h ; e8 01 f7 ; 0xf864f + test al, al ; 84 c0 ; 0xf8652 + je short 08664h ; 74 0e ; 0xf8654 + push 00ba4h ; 68 a4 0b ; 0xf8656 + push 00bc4h ; 68 c4 0b ; 0xf8659 + push strict byte 00007h ; 6a 07 ; 0xf865c + call 01a14h ; e8 b3 93 ; 0xf865e + add sp, strict byte 00006h ; 83 c4 06 ; 0xf8661 + mov es, [bp-022h] ; 8e 46 de ; 0xf8664 + mov al, byte [es:di+0022ch] ; 26 8a 85 2c 02 ; 0xf8667 + mov byte [bp-00ch], al ; 88 46 f4 ; 0xf866c + test byte [bp-00246h], 0e0h ; f6 86 ba fd e0 ; 0xf866f + jne short 0867fh ; 75 09 ; 0xf8674 + test byte [bp-00246h], 01fh ; f6 86 ba fd 1f ; 0xf8676 + je near 08241h ; 0f 84 c2 fb ; 0xf867b + test byte [bp-00246h], 0e0h ; f6 86 ba fd e0 ; 0xf867f + jne short 0860dh ; 75 87 ; 0xf8684 + mov al, byte [bp-00246h] ; 8a 86 ba fd ; 0xf8686 + and AL, strict byte 01fh ; 24 1f ; 0xf868a + cmp AL, strict byte 005h ; 3c 05 ; 0xf868c + je near 08580h ; 0f 84 ee fe ; 0xf868e + jmp near 0860dh ; e9 78 ff ; 0xf8692 + lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf8695 scsi.c:619 + pop di ; 5f ; 0xf8698 + pop si ; 5e ; 0xf8699 + pop dx ; 5a ; 0xf869a + pop cx ; 59 ; 0xf869b + pop bx ; 5b ; 0xf869c + pop bp ; 5d ; 0xf869d + retn ; c3 ; 0xf869e + ; disGetNextSymbol 0xf869f LB 0x19a6 -> off=0x0 cb=000000000000002d uValue=00000000000f709f 'scsi_pci_init' +scsi_pci_init: ; 0xf869f LB 0x2d + push bp ; 55 ; 0xf869f scsi.c:621 + mov bp, sp ; 89 e5 ; 0xf86a0 + push bx ; 53 ; 0xf86a2 + push cx ; 51 ; 0xf86a3 + push si ; 56 ; 0xf86a4 + call 09d7ah ; e8 d2 16 ; 0xf86a5 scsi.c:625 + mov dx, ax ; 89 c2 ; 0xf86a8 + cmp ax, strict word 0ffffh ; 3d ff ff ; 0xf86aa scsi.c:626 + je short 086c4h ; 74 15 ; 0xf86ad + movzx si, dl ; 0f b6 f2 ; 0xf86af scsi.c:633 + mov ax, dx ; 89 d0 ; 0xf86b2 + shr ax, 008h ; c1 e8 08 ; 0xf86b4 + xor ah, ah ; 30 e4 ; 0xf86b7 + mov cx, strict word 00007h ; b9 07 00 ; 0xf86b9 + mov bx, strict word 00004h ; bb 04 00 ; 0xf86bc + mov dx, si ; 89 f2 ; 0xf86bf + call 09e0ch ; e8 48 17 ; 0xf86c1 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf86c4 scsi.c:634 + pop si ; 5e ; 0xf86c7 + pop cx ; 59 ; 0xf86c8 + pop bx ; 5b ; 0xf86c9 + pop bp ; 5d ; 0xf86ca + retn ; c3 ; 0xf86cb + ; disGetNextSymbol 0xf86cc LB 0x1979 -> off=0x0 cb=0000000000000081 uValue=00000000000f70cc 'scsi_init' +scsi_init: ; 0xf86cc LB 0x81 + push bp ; 55 ; 0xf86cc scsi.c:639 + mov bp, sp ; 89 e5 ; 0xf86cd + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf86cf scsi.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf86d2 + mov es, ax ; 8e c0 ; 0xf86d5 + mov es, [es:bx] ; 26 8e 07 ; 0xf86d7 + mov bx, 00122h ; bb 22 01 ; 0xf86da scsi.c:49 + mov byte [es:bx+0022ch], 000h ; 26 c6 87 2c 02 00 ; 0xf86dd scsi.c:646 + mov AL, strict byte 055h ; b0 55 ; 0xf86e3 scsi.c:651 + mov dx, 00432h ; ba 32 04 ; 0xf86e5 + out DX, AL ; ee ; 0xf86e8 + in AL, DX ; ec ; 0xf86e9 scsi.c:652 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf86ea + cmp AL, strict byte 055h ; 3c 55 ; 0xf86ec scsi.c:654 + jne short 08705h ; 75 15 ; 0xf86ee + xor al, al ; 30 c0 ; 0xf86f0 scsi.c:658 + mov dx, 00433h ; ba 33 04 ; 0xf86f2 + out DX, AL ; ee ; 0xf86f5 + mov ax, 00430h ; b8 30 04 ; 0xf86f6 scsi.c:659 + call 0821bh ; e8 1f fb ; 0xf86f9 + mov dx, 01040h ; ba 40 10 ; 0xf86fc scsi.c:660 + mov ax, 0104bh ; b8 4b 10 ; 0xf86ff + call 0869fh ; e8 9a ff ; 0xf8702 + mov AL, strict byte 055h ; b0 55 ; 0xf8705 scsi.c:668 + mov dx, 00436h ; ba 36 04 ; 0xf8707 + out DX, AL ; ee ; 0xf870a + in AL, DX ; ec ; 0xf870b scsi.c:669 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf870c + cmp AL, strict byte 055h ; 3c 55 ; 0xf870e scsi.c:671 + jne short 08727h ; 75 15 ; 0xf8710 + xor al, al ; 30 c0 ; 0xf8712 scsi.c:675 + mov dx, 00437h ; ba 37 04 ; 0xf8714 + out DX, AL ; ee ; 0xf8717 + mov ax, 00434h ; b8 34 04 ; 0xf8718 scsi.c:676 + call 0821bh ; e8 fd fa ; 0xf871b + mov dx, strict word 00030h ; ba 30 00 ; 0xf871e scsi.c:677 + mov ax, 01000h ; b8 00 10 ; 0xf8721 + call 0869fh ; e8 78 ff ; 0xf8724 + mov AL, strict byte 055h ; b0 55 ; 0xf8727 scsi.c:685 + mov dx, 0043ah ; ba 3a 04 ; 0xf8729 + out DX, AL ; ee ; 0xf872c + in AL, DX ; ec ; 0xf872d scsi.c:686 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf872e + cmp AL, strict byte 055h ; 3c 55 ; 0xf8730 scsi.c:688 + jne short 08749h ; 75 15 ; 0xf8732 + xor al, al ; 30 c0 ; 0xf8734 scsi.c:692 + mov dx, 0043bh ; ba 3b 04 ; 0xf8736 + out DX, AL ; ee ; 0xf8739 + mov ax, 00438h ; b8 38 04 ; 0xf873a scsi.c:693 + call 0821bh ; e8 db fa ; 0xf873d + mov dx, strict word 00054h ; ba 54 00 ; 0xf8740 scsi.c:694 + mov ax, 01000h ; b8 00 10 ; 0xf8743 + call 0869fh ; e8 56 ff ; 0xf8746 + mov sp, bp ; 89 ec ; 0xf8749 scsi.c:700 + pop bp ; 5d ; 0xf874b + retn ; c3 ; 0xf874c + ; disGetNextSymbol 0xf874d LB 0x18f8 -> off=0x0 cb=000000000000001b uValue=00000000000f714d 'ahci_ctrl_extract_bits' +ahci_ctrl_extract_bits: ; 0xf874d LB 0x1b + push si ; 56 ; 0xf874d ahci.c:279 + push bp ; 55 ; 0xf874e + mov bp, sp ; 89 e5 ; 0xf874f + mov si, bx ; 89 de ; 0xf8751 + and ax, bx ; 21 d8 ; 0xf8753 ahci.c:281 + and dx, cx ; 21 ca ; 0xf8755 + movzx cx, byte [bp+006h] ; 0f b6 4e 06 ; 0xf8757 + jcxz 08763h ; e3 06 ; 0xf875b + shr dx, 1 ; d1 ea ; 0xf875d + rcr ax, 1 ; d1 d8 ; 0xf875f + loop 0875dh ; e2 fa ; 0xf8761 + pop bp ; 5d ; 0xf8763 ahci.c:282 + pop si ; 5e ; 0xf8764 + retn 00002h ; c2 02 00 ; 0xf8765 + ; disGetNextSymbol 0xf8768 LB 0x18dd -> off=0x0 cb=000000000000001e uValue=00000000000f7168 'ahci_addr_to_phys' +ahci_addr_to_phys: ; 0xf8768 LB 0x1e + push bx ; 53 ; 0xf8768 ahci.c:287 + push cx ; 51 ; 0xf8769 + push bp ; 55 ; 0xf876a + mov bp, sp ; 89 e5 ; 0xf876b + mov bx, ax ; 89 c3 ; 0xf876d + mov ax, dx ; 89 d0 ; 0xf876f + xor dx, dx ; 31 d2 ; 0xf8771 ahci.c:289 + mov cx, strict word 00004h ; b9 04 00 ; 0xf8773 + sal ax, 1 ; d1 e0 ; 0xf8776 + rcl dx, 1 ; d1 d2 ; 0xf8778 + loop 08776h ; e2 fa ; 0xf877a + xor cx, cx ; 31 c9 ; 0xf877c + add ax, bx ; 01 d8 ; 0xf877e + adc dx, cx ; 11 ca ; 0xf8780 + pop bp ; 5d ; 0xf8782 ahci.c:290 + pop cx ; 59 ; 0xf8783 + pop bx ; 5b ; 0xf8784 + retn ; c3 ; 0xf8785 + ; disGetNextSymbol 0xf8786 LB 0x18bf -> off=0x0 cb=000000000000014b uValue=00000000000f7186 'ahci_port_cmd_sync' +ahci_port_cmd_sync: ; 0xf8786 LB 0x14b + push bp ; 55 ; 0xf8786 ahci.c:295 + mov bp, sp ; 89 e5 ; 0xf8787 + push cx ; 51 ; 0xf8789 + push si ; 56 ; 0xf878a + push di ; 57 ; 0xf878b + push ax ; 50 ; 0xf878c + mov si, ax ; 89 c6 ; 0xf878d + mov cx, dx ; 89 d1 ; 0xf878f + mov al, bl ; 88 d8 ; 0xf8791 + mov es, dx ; 8e c2 ; 0xf8793 ahci.c:300 + mov ah, byte [es:si+00262h] ; 26 8a a4 62 02 ; 0xf8795 + mov byte [bp-008h], ah ; 88 66 f8 ; 0xf879a + mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf879d ahci.c:301 + cmp ah, 0ffh ; 80 fc ff ; 0xf87a2 ahci.c:303 + je near 088c9h ; 0f 84 20 01 ; 0xf87a5 + movzx dx, byte [es:si+00263h] ; 26 0f b6 94 63 02 ; 0xf87a9 ahci.c:306 + xor di, di ; 31 ff ; 0xf87af + or di, 00080h ; 81 cf 80 00 ; 0xf87b1 + xor ah, ah ; 30 e4 ; 0xf87b5 + or di, ax ; 09 c7 ; 0xf87b7 + mov word [es:si], di ; 26 89 3c ; 0xf87b9 + mov word [es:si+002h], dx ; 26 89 54 02 ; 0xf87bc + db 066h, 026h, 0c7h, 044h, 004h, 000h, 000h, 000h, 000h + ; mov dword [es:si+004h], strict dword 000000000h ; 66 26 c7 44 04 00 00 00 00; 0xf87c0 ahci.c:307 + lea ax, [si+00080h] ; 8d 84 80 00 ; 0xf87c9 ahci.c:308 + mov dx, cx ; 89 ca ; 0xf87cd + call 08768h ; e8 96 ff ; 0xf87cf + mov es, cx ; 8e c1 ; 0xf87d2 + mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf87d4 + mov word [es:si+00ah], dx ; 26 89 54 0a ; 0xf87d8 + movzx di, byte [bp-008h] ; 0f b6 7e f8 ; 0xf87dc ahci.c:311 + sal di, 007h ; c1 e7 07 ; 0xf87e0 + lea ax, [di+00118h] ; 8d 85 18 01 ; 0xf87e3 + xor cx, cx ; 31 c9 ; 0xf87e7 ahci.c:252 + mov dx, bx ; 89 da ; 0xf87e9 + xchg cx, ax ; 91 ; 0xf87eb + sal eax, 010h ; 66 c1 e0 10 ; 0xf87ec + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf87f0 + out DX, eax ; 66 ef ; 0xf87f2 + lea si, [bx+004h] ; 8d 77 04 ; 0xf87f4 ahci.c:253 + mov dx, si ; 89 f2 ; 0xf87f7 + in eax, DX ; 66 ed ; 0xf87f9 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf87fb + shr eax, 010h ; 66 c1 e8 10 ; 0xf87fd + xchg dx, ax ; 92 ; 0xf8801 + or AL, strict byte 011h ; 0c 11 ; 0xf8802 + mov cx, dx ; 89 d1 ; 0xf8804 + mov dx, si ; 89 f2 ; 0xf8806 + xchg cx, ax ; 91 ; 0xf8808 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8809 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf880d + out DX, eax ; 66 ef ; 0xf880f + lea ax, [di+00138h] ; 8d 85 38 01 ; 0xf8811 ahci.c:315 + cwd ; 99 ; 0xf8815 + mov cx, dx ; 89 d1 ; 0xf8816 + mov dx, bx ; 89 da ; 0xf8818 + xchg cx, ax ; 91 ; 0xf881a + sal eax, 010h ; 66 c1 e0 10 ; 0xf881b + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf881f + out DX, eax ; 66 ef ; 0xf8821 + mov ax, strict word 00001h ; b8 01 00 ; 0xf8823 + xor cx, cx ; 31 c9 ; 0xf8826 + mov dx, si ; 89 f2 ; 0xf8828 + xchg cx, ax ; 91 ; 0xf882a + sal eax, 010h ; 66 c1 e0 10 ; 0xf882b + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf882f + out DX, eax ; 66 ef ; 0xf8831 + movzx ax, byte [bp-008h] ; 0f b6 46 f8 ; 0xf8833 ahci.c:319 + sal ax, 007h ; c1 e0 07 ; 0xf8837 + add ax, 00110h ; 05 10 01 ; 0xf883a + xor cx, cx ; 31 c9 ; 0xf883d ahci.c:271 + mov dx, bx ; 89 da ; 0xf883f + xchg cx, ax ; 91 ; 0xf8841 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8842 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8846 + out DX, eax ; 66 ef ; 0xf8848 + lea dx, [bx+004h] ; 8d 57 04 ; 0xf884a ahci.c:272 + in eax, DX ; 66 ed ; 0xf884d + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf884f + shr eax, 010h ; 66 c1 e8 10 ; 0xf8851 + xchg dx, ax ; 92 ; 0xf8855 + test dh, 040h ; f6 c6 40 ; 0xf8856 + jne short 0885fh ; 75 04 ; 0xf8859 + test AL, strict byte 001h ; a8 01 ; 0xf885b + je short 08863h ; 74 04 ; 0xf885d + mov AL, strict byte 001h ; b0 01 ; 0xf885f + jmp short 08865h ; eb 02 ; 0xf8861 + xor al, al ; 30 c0 ; 0xf8863 + test al, al ; 84 c0 ; 0xf8865 ahci.c:273 + je short 08833h ; 74 ca ; 0xf8867 + movzx di, byte [bp-008h] ; 0f b6 7e f8 ; 0xf8869 ahci.c:325 + sal di, 007h ; c1 e7 07 ; 0xf886d + lea ax, [di+00110h] ; 8d 85 10 01 ; 0xf8870 + xor cx, cx ; 31 c9 ; 0xf8874 ahci.c:252 + mov dx, bx ; 89 da ; 0xf8876 + xchg cx, ax ; 91 ; 0xf8878 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8879 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf887d + out DX, eax ; 66 ef ; 0xf887f + lea si, [bx+004h] ; 8d 77 04 ; 0xf8881 ahci.c:253 + mov dx, si ; 89 f2 ; 0xf8884 + in eax, DX ; 66 ed ; 0xf8886 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf8888 + shr eax, 010h ; 66 c1 e8 10 ; 0xf888a + xchg dx, ax ; 92 ; 0xf888e + or AL, strict byte 001h ; 0c 01 ; 0xf888f + mov cx, dx ; 89 d1 ; 0xf8891 + mov dx, si ; 89 f2 ; 0xf8893 + xchg cx, ax ; 91 ; 0xf8895 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8896 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf889a + out DX, eax ; 66 ef ; 0xf889c + lea ax, [di+00118h] ; 8d 85 18 01 ; 0xf889e ahci.c:329 + xor cx, cx ; 31 c9 ; 0xf88a2 ahci.c:261 + mov dx, bx ; 89 da ; 0xf88a4 + xchg cx, ax ; 91 ; 0xf88a6 + sal eax, 010h ; 66 c1 e0 10 ; 0xf88a7 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf88ab + out DX, eax ; 66 ef ; 0xf88ad + mov dx, si ; 89 f2 ; 0xf88af ahci.c:262 + in eax, DX ; 66 ed ; 0xf88b1 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf88b3 + shr eax, 010h ; 66 c1 e8 10 ; 0xf88b5 + xchg dx, ax ; 92 ; 0xf88b9 + and AL, strict byte 0feh ; 24 fe ; 0xf88ba + mov cx, dx ; 89 d1 ; 0xf88bc + mov dx, si ; 89 f2 ; 0xf88be + xchg cx, ax ; 91 ; 0xf88c0 + sal eax, 010h ; 66 c1 e0 10 ; 0xf88c1 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf88c5 + out DX, eax ; 66 ef ; 0xf88c7 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf88c9 ahci.c:335 + pop di ; 5f ; 0xf88cc + pop si ; 5e ; 0xf88cd + pop cx ; 59 ; 0xf88ce + pop bp ; 5d ; 0xf88cf + retn ; c3 ; 0xf88d0 + ; disGetNextSymbol 0xf88d1 LB 0x1774 -> off=0x0 cb=0000000000000262 uValue=00000000000f72d1 'ahci_cmd_data' +ahci_cmd_data: ; 0xf88d1 LB 0x262 + push bp ; 55 ; 0xf88d1 ahci.c:340 + mov bp, sp ; 89 e5 ; 0xf88d2 + push cx ; 51 ; 0xf88d4 + push si ; 56 ; 0xf88d5 + push di ; 57 ; 0xf88d6 + sub sp, strict byte 0000ch ; 83 ec 0c ; 0xf88d7 + push ax ; 50 ; 0xf88da + push dx ; 52 ; 0xf88db + mov byte [bp-008h], bl ; 88 5e f8 ; 0xf88dc + xor di, di ; 31 ff ; 0xf88df ahci.c:342 + mov es, dx ; 8e c2 ; 0xf88e1 + mov bx, ax ; 89 c3 ; 0xf88e3 + mov ax, word [es:bx+00232h] ; 26 8b 87 32 02 ; 0xf88e5 + mov word [bp-00ah], ax ; 89 46 f6 ; 0xf88ea + mov word [bp-00eh], di ; 89 7e f2 ; 0xf88ed + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf88f0 + mov ax, word [es:bx+00eh] ; 26 8b 47 0e ; 0xf88f3 ahci.c:343 + mov word [bp-012h], ax ; 89 46 ee ; 0xf88f7 + mov ax, word [es:bx+010h] ; 26 8b 47 10 ; 0xf88fa ahci.c:344 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf88fe + mov cx, strict word 00040h ; b9 40 00 ; 0xf8901 ahci.c:347 + xor bx, bx ; 31 db ; 0xf8904 + mov ax, 00080h ; b8 80 00 ; 0xf8906 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf8909 + call 09fb0h ; e8 a1 16 ; 0xf890c + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf890f ahci.c:350 + mov word [es:di+00080h], 08027h ; 26 c7 85 80 00 27 80 ; 0xf8912 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf8919 ahci.c:352 + mov byte [es:di+00082h], al ; 26 88 85 82 00 ; 0xf891c + mov byte [es:di+00083h], 000h ; 26 c6 85 83 00 00 ; 0xf8921 ahci.c:353 + mov es, [bp-016h] ; 8e 46 ea ; 0xf8927 ahci.c:355 + mov bx, word [bp-014h] ; 8b 5e ec ; 0xf892a + mov ax, word [es:bx] ; 26 8b 07 ; 0xf892d + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8930 + mov byte [es:di+00084h], al ; 26 88 85 84 00 ; 0xf8933 + mov es, [bp-016h] ; 8e 46 ea ; 0xf8938 ahci.c:356 + mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf893b + mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf893f + mov si, word [bp-014h] ; 8b 76 ec ; 0xf8943 + mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf8946 + mov dx, word [es:si] ; 26 8b 14 ; 0xf894a + mov si, strict word 00008h ; be 08 00 ; 0xf894d + call 09f90h ; e8 3d 16 ; 0xf8950 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8953 + mov byte [es:di+00085h], dl ; 26 88 95 85 00 ; 0xf8956 + mov es, [bp-016h] ; 8e 46 ea ; 0xf895b ahci.c:357 + mov bx, word [bp-014h] ; 8b 5e ec ; 0xf895e + mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf8961 + mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf8965 + mov si, word [bp-014h] ; 8b 76 ec ; 0xf8969 + mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf896c + mov dx, word [es:si] ; 26 8b 14 ; 0xf8970 + mov si, strict word 00010h ; be 10 00 ; 0xf8973 + call 09f90h ; e8 17 16 ; 0xf8976 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8979 + mov byte [es:di+00086h], dl ; 26 88 95 86 00 ; 0xf897c + mov byte [es:di+00087h], 040h ; 26 c6 85 87 00 40 ; 0xf8981 ahci.c:358 + mov es, [bp-016h] ; 8e 46 ea ; 0xf8987 ahci.c:360 + mov bx, word [bp-014h] ; 8b 5e ec ; 0xf898a + mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf898d + mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf8991 + mov si, word [bp-014h] ; 8b 76 ec ; 0xf8995 + mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf8998 + mov dx, word [es:si] ; 26 8b 14 ; 0xf899c + mov si, strict word 00018h ; be 18 00 ; 0xf899f + call 09f90h ; e8 eb 15 ; 0xf89a2 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf89a5 + mov byte [es:di+00088h], dl ; 26 88 95 88 00 ; 0xf89a8 + mov es, [bp-016h] ; 8e 46 ea ; 0xf89ad ahci.c:361 + mov bx, word [bp-014h] ; 8b 5e ec ; 0xf89b0 + mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf89b3 + mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf89b7 + mov si, word [bp-014h] ; 8b 76 ec ; 0xf89bb + mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf89be + mov dx, word [es:si] ; 26 8b 14 ; 0xf89c2 + mov si, strict word 00020h ; be 20 00 ; 0xf89c5 + call 09f90h ; e8 c5 15 ; 0xf89c8 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf89cb + mov byte [es:di+00089h], dl ; 26 88 95 89 00 ; 0xf89ce + mov es, [bp-016h] ; 8e 46 ea ; 0xf89d3 ahci.c:362 + mov bx, word [bp-014h] ; 8b 5e ec ; 0xf89d6 + mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf89d9 + mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf89dd + mov si, word [bp-014h] ; 8b 76 ec ; 0xf89e1 + mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf89e4 + mov dx, word [es:si] ; 26 8b 14 ; 0xf89e8 + mov si, strict word 00028h ; be 28 00 ; 0xf89eb + call 09f90h ; e8 9f 15 ; 0xf89ee + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf89f1 + mov byte [es:di+0008ah], dl ; 26 88 95 8a 00 ; 0xf89f4 + mov byte [es:di+0008bh], 000h ; 26 c6 85 8b 00 00 ; 0xf89f9 ahci.c:363 + mov al, byte [bp-012h] ; 8a 46 ee ; 0xf89ff ahci.c:365 + mov byte [es:di+0008ch], al ; 26 88 85 8c 00 ; 0xf8a02 + mov ax, word [bp-012h] ; 8b 46 ee ; 0xf8a07 ahci.c:366 + shr ax, 008h ; c1 e8 08 ; 0xf8a0a + mov byte [es:di+0008dh], al ; 26 88 85 8d 00 ; 0xf8a0d + mov word [es:di+00276h], strict word 00010h ; 26 c7 85 76 02 10 00 ; 0xf8a12 ahci.c:369 + mov ax, word [bp-012h] ; 8b 46 ee ; 0xf8a19 ahci.c:372 + xor dx, dx ; 31 d2 ; 0xf8a1c + mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf8a1e + xor cx, cx ; 31 c9 ; 0xf8a21 + call 09f10h ; e8 ea 14 ; 0xf8a23 + push dx ; 52 ; 0xf8a26 + push ax ; 50 ; 0xf8a27 + mov es, [bp-016h] ; 8e 46 ea ; 0xf8a28 + mov bx, word [bp-014h] ; 8b 5e ec ; 0xf8a2b + mov bx, word [es:bx+008h] ; 26 8b 5f 08 ; 0xf8a2e + mov si, word [bp-014h] ; 8b 76 ec ; 0xf8a32 + mov cx, word [es:si+00ah] ; 26 8b 4c 0a ; 0xf8a35 + mov ax, 0026ah ; b8 6a 02 ; 0xf8a39 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf8a3c + call 09e63h ; e8 21 14 ; 0xf8a3f + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8a42 ahci.c:375 + mov ax, word [es:di+0027eh] ; 26 8b 85 7e 02 ; 0xf8a45 + add ax, strict word 0ffffh ; 05 ff ff ; 0xf8a4a + mov dx, word [es:di+00280h] ; 26 8b 95 80 02 ; 0xf8a4d + adc dx, strict byte 0ffffh ; 83 d2 ff ; 0xf8a52 + movzx bx, byte [es:di+00263h] ; 26 0f b6 9d 63 02 ; 0xf8a55 + sal bx, 004h ; c1 e3 04 ; 0xf8a5b + mov word [es:bx+0010ch], ax ; 26 89 87 0c 01 ; 0xf8a5e + mov word [es:bx+0010eh], dx ; 26 89 97 0e 01 ; 0xf8a63 + movzx bx, byte [es:di+00263h] ; 26 0f b6 9d 63 02 ; 0xf8a68 ahci.c:376 + sal bx, 004h ; c1 e3 04 ; 0xf8a6e + mov ax, word [es:di+0027ah] ; 26 8b 85 7a 02 ; 0xf8a71 + mov dx, word [es:di+0027ch] ; 26 8b 95 7c 02 ; 0xf8a76 + mov word [es:bx+00100h], ax ; 26 89 87 00 01 ; 0xf8a7b + mov word [es:bx+00102h], dx ; 26 89 97 02 01 ; 0xf8a80 + inc byte [es:di+00263h] ; 26 fe 85 63 02 ; 0xf8a85 ahci.c:377 + mov es, [bp-016h] ; 8e 46 ea ; 0xf8a8a ahci.c:379 + mov bx, si ; 89 f3 ; 0xf8a8d + mov ax, word [es:bx+020h] ; 26 8b 47 20 ; 0xf8a8f + test ax, ax ; 85 c0 ; 0xf8a93 + je short 08ad0h ; 74 39 ; 0xf8a95 + dec ax ; 48 ; 0xf8a97 ahci.c:380 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8a98 + movzx bx, byte [es:di+00263h] ; 26 0f b6 9d 63 02 ; 0xf8a9b + sal bx, 004h ; c1 e3 04 ; 0xf8aa1 + mov word [es:bx+0010ch], ax ; 26 89 87 0c 01 ; 0xf8aa4 + mov word [es:bx+0010eh], di ; 26 89 bf 0e 01 ; 0xf8aa9 + movzx bx, byte [es:di+00263h] ; 26 0f b6 9d 63 02 ; 0xf8aae ahci.c:381 + sal bx, 004h ; c1 e3 04 ; 0xf8ab4 + mov dx, word [es:di+00264h] ; 26 8b 95 64 02 ; 0xf8ab7 + mov ax, word [es:di+00266h] ; 26 8b 85 66 02 ; 0xf8abc + mov word [es:bx+00100h], dx ; 26 89 97 00 01 ; 0xf8ac1 + mov word [es:bx+00102h], ax ; 26 89 87 02 01 ; 0xf8ac6 + inc byte [es:di+00263h] ; 26 fe 85 63 02 ; 0xf8acb ahci.c:382 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf8ad0 ahci.c:397 + cmp AL, strict byte 035h ; 3c 35 ; 0xf8ad3 + jne short 08addh ; 75 06 ; 0xf8ad5 + mov byte [bp-008h], 040h ; c6 46 f8 40 ; 0xf8ad7 ahci.c:398 + jmp short 08af4h ; eb 17 ; 0xf8adb ahci.c:399 + cmp AL, strict byte 0a0h ; 3c a0 ; 0xf8add + jne short 08af0h ; 75 0f ; 0xf8adf + or byte [bp-008h], 020h ; 80 4e f8 20 ; 0xf8ae1 ahci.c:400 + les bx, [bp-00eh] ; c4 5e f2 ; 0xf8ae5 ahci.c:401 + or byte [es:bx+00083h], 001h ; 26 80 8f 83 00 01 ; 0xf8ae8 + jmp short 08af4h ; eb 04 ; 0xf8aee ahci.c:402 + mov byte [bp-008h], 000h ; c6 46 f8 00 ; 0xf8af0 ahci.c:403 + or byte [bp-008h], 005h ; 80 4e f8 05 ; 0xf8af4 ahci.c:405 + movzx bx, byte [bp-008h] ; 0f b6 5e f8 ; 0xf8af8 ahci.c:407 + mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf8afc + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf8aff + call 08786h ; e8 81 fc ; 0xf8b02 + mov cx, word [bp-00ch] ; 8b 4e f4 ; 0xf8b05 ahci.c:410 + mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf8b08 + add bx, 00240h ; 81 c3 40 02 ; 0xf8b0b + mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf8b0f ahci.c:414 + add ax, 0026ah ; 05 6a 02 ; 0xf8b12 + mov dx, cx ; 89 ca ; 0xf8b15 + call 09edch ; e8 c2 13 ; 0xf8b17 + mov es, cx ; 8e c1 ; 0xf8b1a ahci.c:415 + mov al, byte [es:bx+003h] ; 26 8a 47 03 ; 0xf8b1c + test al, al ; 84 c0 ; 0xf8b20 + je short 08b29h ; 74 05 ; 0xf8b22 + mov ax, strict word 00004h ; b8 04 00 ; 0xf8b24 + jmp short 08b2bh ; eb 02 ; 0xf8b27 + xor ah, ah ; 30 e4 ; 0xf8b29 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf8b2b ahci.c:416 + pop di ; 5f ; 0xf8b2e + pop si ; 5e ; 0xf8b2f + pop cx ; 59 ; 0xf8b30 + pop bp ; 5d ; 0xf8b31 + retn ; c3 ; 0xf8b32 + ; disGetNextSymbol 0xf8b33 LB 0x1512 -> off=0x0 cb=000000000000017f uValue=00000000000f7533 'ahci_port_deinit_current' +ahci_port_deinit_current: ; 0xf8b33 LB 0x17f + push bp ; 55 ; 0xf8b33 ahci.c:421 + mov bp, sp ; 89 e5 ; 0xf8b34 + push bx ; 53 ; 0xf8b36 + push cx ; 51 ; 0xf8b37 + push si ; 56 ; 0xf8b38 + push di ; 57 ; 0xf8b39 + sub sp, strict byte 00006h ; 83 ec 06 ; 0xf8b3a + mov di, ax ; 89 c7 ; 0xf8b3d + mov word [bp-00ch], dx ; 89 56 f4 ; 0xf8b3f + mov es, dx ; 8e c2 ; 0xf8b42 ahci.c:426 + mov si, word [es:di+00260h] ; 26 8b b5 60 02 ; 0xf8b44 + mov al, byte [es:di+00262h] ; 26 8a 85 62 02 ; 0xf8b49 ahci.c:427 + mov byte [bp-00ah], al ; 88 46 f6 ; 0xf8b4e + cmp AL, strict byte 0ffh ; 3c ff ; 0xf8b51 ahci.c:429 + je near 08ca9h ; 0f 84 52 01 ; 0xf8b53 + movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf8b57 ahci.c:432 + sal ax, 007h ; c1 e0 07 ; 0xf8b5b + add ax, 00118h ; 05 18 01 ; 0xf8b5e + xor cx, cx ; 31 c9 ; 0xf8b61 ahci.c:261 + mov dx, si ; 89 f2 ; 0xf8b63 + xchg cx, ax ; 91 ; 0xf8b65 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8b66 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8b6a + out DX, eax ; 66 ef ; 0xf8b6c + lea bx, [si+004h] ; 8d 5c 04 ; 0xf8b6e ahci.c:262 + mov dx, bx ; 89 da ; 0xf8b71 + in eax, DX ; 66 ed ; 0xf8b73 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf8b75 + shr eax, 010h ; 66 c1 e8 10 ; 0xf8b77 + xchg dx, ax ; 92 ; 0xf8b7b + and AL, strict byte 0eeh ; 24 ee ; 0xf8b7c + mov cx, dx ; 89 d1 ; 0xf8b7e + mov dx, bx ; 89 da ; 0xf8b80 + xchg cx, ax ; 91 ; 0xf8b82 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8b83 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8b87 + out DX, eax ; 66 ef ; 0xf8b89 + movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf8b8b ahci.c:435 + sal ax, 007h ; c1 e0 07 ; 0xf8b8f + add ax, 00118h ; 05 18 01 ; 0xf8b92 + xor cx, cx ; 31 c9 ; 0xf8b95 ahci.c:271 + mov dx, si ; 89 f2 ; 0xf8b97 + xchg cx, ax ; 91 ; 0xf8b99 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8b9a + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8b9e + out DX, eax ; 66 ef ; 0xf8ba0 + lea dx, [si+004h] ; 8d 54 04 ; 0xf8ba2 ahci.c:272 + in eax, DX ; 66 ed ; 0xf8ba5 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf8ba7 + shr eax, 010h ; 66 c1 e8 10 ; 0xf8ba9 + xchg dx, ax ; 92 ; 0xf8bad + test ax, 0c011h ; a9 11 c0 ; 0xf8bae + je short 08bb7h ; 74 04 ; 0xf8bb1 + mov AL, strict byte 001h ; b0 01 ; 0xf8bb3 + jmp short 08bb9h ; eb 02 ; 0xf8bb5 + xor al, al ; 30 c0 ; 0xf8bb7 + cmp AL, strict byte 001h ; 3c 01 ; 0xf8bb9 ahci.c:273 + je short 08b8bh ; 74 ce ; 0xf8bbb + mov cx, strict word 00020h ; b9 20 00 ; 0xf8bbd ahci.c:446 + xor bx, bx ; 31 db ; 0xf8bc0 + mov ax, di ; 89 f8 ; 0xf8bc2 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf8bc4 + call 09fb0h ; e8 e6 13 ; 0xf8bc7 + lea ax, [di+00080h] ; 8d 85 80 00 ; 0xf8bca ahci.c:447 + mov cx, strict word 00040h ; b9 40 00 ; 0xf8bce + xor bx, bx ; 31 db ; 0xf8bd1 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf8bd3 + call 09fb0h ; e8 d7 13 ; 0xf8bd6 + lea ax, [di+00200h] ; 8d 85 00 02 ; 0xf8bd9 ahci.c:448 + mov cx, strict word 00060h ; b9 60 00 ; 0xf8bdd + xor bx, bx ; 31 db ; 0xf8be0 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf8be2 + call 09fb0h ; e8 c8 13 ; 0xf8be5 + movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf8be8 ahci.c:450 + sal ax, 007h ; c1 e0 07 ; 0xf8bec + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf8bef + add ax, 00108h ; 05 08 01 ; 0xf8bf2 + cwd ; 99 ; 0xf8bf5 + mov cx, dx ; 89 d1 ; 0xf8bf6 + mov dx, si ; 89 f2 ; 0xf8bf8 + xchg cx, ax ; 91 ; 0xf8bfa + sal eax, 010h ; 66 c1 e0 10 ; 0xf8bfb + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8bff + out DX, eax ; 66 ef ; 0xf8c01 + lea bx, [si+004h] ; 8d 5c 04 ; 0xf8c03 + xor ax, ax ; 31 c0 ; 0xf8c06 + xor cx, cx ; 31 c9 ; 0xf8c08 + mov dx, bx ; 89 da ; 0xf8c0a + xchg cx, ax ; 91 ; 0xf8c0c + sal eax, 010h ; 66 c1 e0 10 ; 0xf8c0d + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8c11 + out DX, eax ; 66 ef ; 0xf8c13 + mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf8c15 ahci.c:451 + add ax, 0010ch ; 05 0c 01 ; 0xf8c18 + cwd ; 99 ; 0xf8c1b + mov cx, dx ; 89 d1 ; 0xf8c1c + mov dx, si ; 89 f2 ; 0xf8c1e + xchg cx, ax ; 91 ; 0xf8c20 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8c21 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8c25 + out DX, eax ; 66 ef ; 0xf8c27 + xor ax, ax ; 31 c0 ; 0xf8c29 + xor cx, cx ; 31 c9 ; 0xf8c2b + mov dx, bx ; 89 da ; 0xf8c2d + xchg cx, ax ; 91 ; 0xf8c2f + sal eax, 010h ; 66 c1 e0 10 ; 0xf8c30 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8c34 + out DX, eax ; 66 ef ; 0xf8c36 + mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf8c38 ahci.c:453 + db 0feh, 0c4h + ; inc ah ; fe c4 ; 0xf8c3b + cwd ; 99 ; 0xf8c3d + mov cx, dx ; 89 d1 ; 0xf8c3e + mov dx, si ; 89 f2 ; 0xf8c40 + xchg cx, ax ; 91 ; 0xf8c42 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8c43 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8c47 + out DX, eax ; 66 ef ; 0xf8c49 + xor ax, ax ; 31 c0 ; 0xf8c4b + xor cx, cx ; 31 c9 ; 0xf8c4d + mov dx, bx ; 89 da ; 0xf8c4f + xchg cx, ax ; 91 ; 0xf8c51 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8c52 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8c56 + out DX, eax ; 66 ef ; 0xf8c58 + mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf8c5a ahci.c:454 + add ax, 00104h ; 05 04 01 ; 0xf8c5d + cwd ; 99 ; 0xf8c60 + mov cx, dx ; 89 d1 ; 0xf8c61 + mov dx, si ; 89 f2 ; 0xf8c63 + xchg cx, ax ; 91 ; 0xf8c65 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8c66 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8c6a + out DX, eax ; 66 ef ; 0xf8c6c + xor ax, ax ; 31 c0 ; 0xf8c6e + xor cx, cx ; 31 c9 ; 0xf8c70 + mov dx, bx ; 89 da ; 0xf8c72 + xchg cx, ax ; 91 ; 0xf8c74 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8c75 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8c79 + out DX, eax ; 66 ef ; 0xf8c7b + mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf8c7d ahci.c:457 + add ax, 00114h ; 05 14 01 ; 0xf8c80 + cwd ; 99 ; 0xf8c83 + mov cx, dx ; 89 d1 ; 0xf8c84 + mov dx, si ; 89 f2 ; 0xf8c86 + xchg cx, ax ; 91 ; 0xf8c88 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8c89 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8c8d + out DX, eax ; 66 ef ; 0xf8c8f + xor ax, ax ; 31 c0 ; 0xf8c91 + xor cx, cx ; 31 c9 ; 0xf8c93 + mov dx, bx ; 89 da ; 0xf8c95 + xchg cx, ax ; 91 ; 0xf8c97 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8c98 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8c9c + out DX, eax ; 66 ef ; 0xf8c9e + mov es, [bp-00ch] ; 8e 46 f4 ; 0xf8ca0 ahci.c:459 + mov byte [es:di+00262h], 0ffh ; 26 c6 85 62 02 ff ; 0xf8ca3 + lea sp, [bp-008h] ; 8d 66 f8 ; 0xf8ca9 ahci.c:461 + pop di ; 5f ; 0xf8cac + pop si ; 5e ; 0xf8cad + pop cx ; 59 ; 0xf8cae + pop bx ; 5b ; 0xf8caf + pop bp ; 5d ; 0xf8cb0 + retn ; c3 ; 0xf8cb1 + ; disGetNextSymbol 0xf8cb2 LB 0x1393 -> off=0x0 cb=000000000000024a uValue=00000000000f76b2 'ahci_port_init' +ahci_port_init: ; 0xf8cb2 LB 0x24a + push bp ; 55 ; 0xf8cb2 ahci.c:467 + mov bp, sp ; 89 e5 ; 0xf8cb3 + push cx ; 51 ; 0xf8cb5 + push si ; 56 ; 0xf8cb6 + push di ; 57 ; 0xf8cb7 + sub sp, strict byte 00006h ; 83 ec 06 ; 0xf8cb8 + mov si, ax ; 89 c6 ; 0xf8cbb + mov word [bp-00ah], dx ; 89 56 f6 ; 0xf8cbd + mov byte [bp-008h], bl ; 88 5e f8 ; 0xf8cc0 + call 08b33h ; e8 6d fe ; 0xf8cc3 ahci.c:470 + movzx ax, bl ; 0f b6 c3 ; 0xf8cc6 ahci.c:473 + sal ax, 007h ; c1 e0 07 ; 0xf8cc9 + add ax, 00118h ; 05 18 01 ; 0xf8ccc + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8ccf ahci.c:259 + mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8cd2 + xor cx, cx ; 31 c9 ; 0xf8cd7 ahci.c:261 + mov dx, bx ; 89 da ; 0xf8cd9 + xchg cx, ax ; 91 ; 0xf8cdb + sal eax, 010h ; 66 c1 e0 10 ; 0xf8cdc + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8ce0 + out DX, eax ; 66 ef ; 0xf8ce2 + add bx, strict byte 00004h ; 83 c3 04 ; 0xf8ce4 ahci.c:262 + mov dx, bx ; 89 da ; 0xf8ce7 + in eax, DX ; 66 ed ; 0xf8ce9 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf8ceb + shr eax, 010h ; 66 c1 e8 10 ; 0xf8ced + xchg dx, ax ; 92 ; 0xf8cf1 + and AL, strict byte 0eeh ; 24 ee ; 0xf8cf2 + mov cx, dx ; 89 d1 ; 0xf8cf4 + mov dx, bx ; 89 da ; 0xf8cf6 + xchg cx, ax ; 91 ; 0xf8cf8 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8cf9 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8cfd + out DX, eax ; 66 ef ; 0xf8cff + movzx ax, byte [bp-008h] ; 0f b6 46 f8 ; 0xf8d01 ahci.c:476 + sal ax, 007h ; c1 e0 07 ; 0xf8d05 + add ax, 00118h ; 05 18 01 ; 0xf8d08 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8d0b ahci.c:269 + mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8d0e + xor cx, cx ; 31 c9 ; 0xf8d13 ahci.c:271 + mov dx, bx ; 89 da ; 0xf8d15 + xchg cx, ax ; 91 ; 0xf8d17 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8d18 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8d1c + out DX, eax ; 66 ef ; 0xf8d1e + lea dx, [bx+004h] ; 8d 57 04 ; 0xf8d20 ahci.c:272 + in eax, DX ; 66 ed ; 0xf8d23 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf8d25 + shr eax, 010h ; 66 c1 e8 10 ; 0xf8d27 + xchg dx, ax ; 92 ; 0xf8d2b + test ax, 0c011h ; a9 11 c0 ; 0xf8d2c + je short 08d35h ; 74 04 ; 0xf8d2f + mov AL, strict byte 001h ; b0 01 ; 0xf8d31 + jmp short 08d37h ; eb 02 ; 0xf8d33 + xor al, al ; 30 c0 ; 0xf8d35 + cmp AL, strict byte 001h ; 3c 01 ; 0xf8d37 ahci.c:273 + je short 08d01h ; 74 c6 ; 0xf8d39 + mov cx, strict word 00020h ; b9 20 00 ; 0xf8d3b ahci.c:487 + xor bx, bx ; 31 db ; 0xf8d3e + mov ax, si ; 89 f0 ; 0xf8d40 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf8d42 + call 09fb0h ; e8 68 12 ; 0xf8d45 + lea ax, [si+00080h] ; 8d 84 80 00 ; 0xf8d48 ahci.c:488 + mov cx, strict word 00040h ; b9 40 00 ; 0xf8d4c + xor bx, bx ; 31 db ; 0xf8d4f + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf8d51 + call 09fb0h ; e8 59 12 ; 0xf8d54 + lea di, [si+00200h] ; 8d bc 00 02 ; 0xf8d57 ahci.c:489 + mov cx, strict word 00060h ; b9 60 00 ; 0xf8d5b + xor bx, bx ; 31 db ; 0xf8d5e + mov ax, di ; 89 f8 ; 0xf8d60 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf8d62 + call 09fb0h ; e8 48 12 ; 0xf8d65 + movzx bx, byte [bp-008h] ; 0f b6 5e f8 ; 0xf8d68 ahci.c:493 + sal bx, 007h ; c1 e3 07 ; 0xf8d6c + lea ax, [bx+00108h] ; 8d 87 08 01 ; 0xf8d6f + cwd ; 99 ; 0xf8d73 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8d74 + mov cx, word [es:si+00260h] ; 26 8b 8c 60 02 ; 0xf8d77 + mov word [bp-00ch], cx ; 89 4e f4 ; 0xf8d7c + mov cx, dx ; 89 d1 ; 0xf8d7f + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf8d81 + xchg cx, ax ; 91 ; 0xf8d84 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8d85 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8d89 + out DX, eax ; 66 ef ; 0xf8d8b + mov ax, di ; 89 f8 ; 0xf8d8d + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf8d8f + call 08768h ; e8 d3 f9 ; 0xf8d92 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8d95 + mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf8d98 + add di, strict byte 00004h ; 83 c7 04 ; 0xf8d9d + mov cx, dx ; 89 d1 ; 0xf8da0 + mov dx, di ; 89 fa ; 0xf8da2 + xchg cx, ax ; 91 ; 0xf8da4 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8da5 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8da9 + out DX, eax ; 66 ef ; 0xf8dab + lea ax, [bx+0010ch] ; 8d 87 0c 01 ; 0xf8dad ahci.c:494 + cwd ; 99 ; 0xf8db1 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8db2 + mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf8db5 + mov cx, dx ; 89 d1 ; 0xf8dba + mov dx, di ; 89 fa ; 0xf8dbc + xchg cx, ax ; 91 ; 0xf8dbe + sal eax, 010h ; 66 c1 e0 10 ; 0xf8dbf + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8dc3 + out DX, eax ; 66 ef ; 0xf8dc5 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8dc7 + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8dca + add dx, strict byte 00004h ; 83 c2 04 ; 0xf8dcf + xor ax, ax ; 31 c0 ; 0xf8dd2 + xor cx, cx ; 31 c9 ; 0xf8dd4 + xchg cx, ax ; 91 ; 0xf8dd6 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8dd7 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8ddb + out DX, eax ; 66 ef ; 0xf8ddd + lea ax, [bx+00100h] ; 8d 87 00 01 ; 0xf8ddf ahci.c:497 + cwd ; 99 ; 0xf8de3 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8de4 + mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf8de7 + mov cx, dx ; 89 d1 ; 0xf8dec + mov dx, di ; 89 fa ; 0xf8dee + xchg cx, ax ; 91 ; 0xf8df0 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8df1 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8df5 + out DX, eax ; 66 ef ; 0xf8df7 + mov ax, si ; 89 f0 ; 0xf8df9 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf8dfb + call 08768h ; e8 67 f9 ; 0xf8dfe + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8e01 + mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf8e04 + add di, strict byte 00004h ; 83 c7 04 ; 0xf8e09 + mov cx, dx ; 89 d1 ; 0xf8e0c + mov dx, di ; 89 fa ; 0xf8e0e + xchg cx, ax ; 91 ; 0xf8e10 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8e11 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8e15 + out DX, eax ; 66 ef ; 0xf8e17 + lea ax, [bx+00104h] ; 8d 87 04 01 ; 0xf8e19 ahci.c:498 + cwd ; 99 ; 0xf8e1d + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8e1e + mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf8e21 + mov cx, dx ; 89 d1 ; 0xf8e26 + mov dx, di ; 89 fa ; 0xf8e28 + xchg cx, ax ; 91 ; 0xf8e2a + sal eax, 010h ; 66 c1 e0 10 ; 0xf8e2b + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8e2f + out DX, eax ; 66 ef ; 0xf8e31 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8e33 + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8e36 + add dx, strict byte 00004h ; 83 c2 04 ; 0xf8e3b + xor ax, ax ; 31 c0 ; 0xf8e3e + xor cx, cx ; 31 c9 ; 0xf8e40 + xchg cx, ax ; 91 ; 0xf8e42 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8e43 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8e47 + out DX, eax ; 66 ef ; 0xf8e49 + lea ax, [bx+00114h] ; 8d 87 14 01 ; 0xf8e4b ahci.c:501 + cwd ; 99 ; 0xf8e4f + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8e50 + mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf8e53 + mov cx, dx ; 89 d1 ; 0xf8e58 + mov dx, di ; 89 fa ; 0xf8e5a + xchg cx, ax ; 91 ; 0xf8e5c + sal eax, 010h ; 66 c1 e0 10 ; 0xf8e5d + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8e61 + out DX, eax ; 66 ef ; 0xf8e63 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8e65 + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8e68 + add dx, strict byte 00004h ; 83 c2 04 ; 0xf8e6d + xor ax, ax ; 31 c0 ; 0xf8e70 + xor cx, cx ; 31 c9 ; 0xf8e72 + xchg cx, ax ; 91 ; 0xf8e74 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8e75 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8e79 + out DX, eax ; 66 ef ; 0xf8e7b + lea ax, [bx+00110h] ; 8d 87 10 01 ; 0xf8e7d ahci.c:502 + cwd ; 99 ; 0xf8e81 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8e82 + mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf8e85 + mov cx, dx ; 89 d1 ; 0xf8e8a + mov dx, di ; 89 fa ; 0xf8e8c + xchg cx, ax ; 91 ; 0xf8e8e + sal eax, 010h ; 66 c1 e0 10 ; 0xf8e8f + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8e93 + out DX, eax ; 66 ef ; 0xf8e95 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8e97 + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8e9a + add dx, strict byte 00004h ; 83 c2 04 ; 0xf8e9f + mov ax, strict word 0ffffh ; b8 ff ff ; 0xf8ea2 + mov cx, ax ; 89 c1 ; 0xf8ea5 + xchg cx, ax ; 91 ; 0xf8ea7 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8ea8 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8eac + out DX, eax ; 66 ef ; 0xf8eae + lea ax, [bx+00130h] ; 8d 87 30 01 ; 0xf8eb0 ahci.c:504 + cwd ; 99 ; 0xf8eb4 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8eb5 + mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8eb8 + mov cx, dx ; 89 d1 ; 0xf8ebd + mov dx, bx ; 89 da ; 0xf8ebf + xchg cx, ax ; 91 ; 0xf8ec1 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8ec2 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8ec6 + out DX, eax ; 66 ef ; 0xf8ec8 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8eca + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8ecd + add dx, strict byte 00004h ; 83 c2 04 ; 0xf8ed2 + mov ax, strict word 0ffffh ; b8 ff ff ; 0xf8ed5 + mov cx, ax ; 89 c1 ; 0xf8ed8 + xchg cx, ax ; 91 ; 0xf8eda + sal eax, 010h ; 66 c1 e0 10 ; 0xf8edb + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8edf + out DX, eax ; 66 ef ; 0xf8ee1 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf8ee3 ahci.c:506 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8ee6 + mov byte [es:si+00262h], al ; 26 88 84 62 02 ; 0xf8ee9 + mov byte [es:si+00263h], 000h ; 26 c6 84 63 02 00 ; 0xf8eee ahci.c:507 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf8ef4 ahci.c:508 + pop di ; 5f ; 0xf8ef7 + pop si ; 5e ; 0xf8ef8 + pop cx ; 59 ; 0xf8ef9 + pop bp ; 5d ; 0xf8efa + retn ; c3 ; 0xf8efb + ; disGetNextSymbol 0xf8efc LB 0x1149 -> off=0x0 cb=00000000000000a6 uValue=00000000000f78fc 'ahci_read_sectors' +ahci_read_sectors: ; 0xf8efc LB 0xa6 + push bp ; 55 ; 0xf8efc ahci.c:517 + mov bp, sp ; 89 e5 ; 0xf8efd + push si ; 56 ; 0xf8eff + push di ; 57 ; 0xf8f00 + push ax ; 50 ; 0xf8f01 + les di, [bp+004h] ; c4 7e 04 ; 0xf8f02 ahci.c:522 + movzx di, byte [es:di+00ch] ; 26 0f b6 7d 0c ; 0xf8f05 + sub di, strict byte 0000ch ; 83 ef 0c ; 0xf8f0a + cmp di, strict byte 00004h ; 83 ff 04 ; 0xf8f0d ahci.c:523 + jbe short 08f21h ; 76 0f ; 0xf8f10 + push di ; 57 ; 0xf8f12 ahci.c:524 + push 00c74h ; 68 74 0c ; 0xf8f13 + push 00c86h ; 68 86 0c ; 0xf8f16 + push strict byte 00007h ; 6a 07 ; 0xf8f19 + call 01a14h ; e8 f6 8a ; 0xf8f1b + add sp, strict byte 00008h ; 83 c4 08 ; 0xf8f1e + xor bx, bx ; 31 db ; 0xf8f21 ahci.c:530 + les si, [bp+004h] ; c4 76 04 ; 0xf8f23 + mov dx, word [es:si+00232h] ; 26 8b 94 32 02 ; 0xf8f26 + shr eax, 010h ; 66 c1 e8 10 ; 0xf8f2b ahci.c:239 + mov es, dx ; 8e c2 ; 0xf8f2f + mov word [es:bx+00268h], ax ; 26 89 87 68 02 ; 0xf8f31 + mov es, [bp+006h] ; 8e 46 06 ; 0xf8f36 ahci.c:531 + add di, si ; 01 f7 ; 0xf8f39 + movzx bx, byte [es:di+0022dh] ; 26 0f b6 9d 2d 02 ; 0xf8f3b + mov di, si ; 89 f7 ; 0xf8f41 + mov dx, word [es:di+00232h] ; 26 8b 95 32 02 ; 0xf8f43 + xor ax, ax ; 31 c0 ; 0xf8f48 + call 08cb2h ; e8 65 fd ; 0xf8f4a + mov bx, strict word 00025h ; bb 25 00 ; 0xf8f4d ahci.c:532 + mov ax, si ; 89 f0 ; 0xf8f50 + mov dx, word [bp+006h] ; 8b 56 06 ; 0xf8f52 + call 088d1h ; e8 79 f9 ; 0xf8f55 + mov word [bp-006h], ax ; 89 46 fa ; 0xf8f58 + mov es, [bp+006h] ; 8e 46 06 ; 0xf8f5b ahci.c:534 + mov bx, si ; 89 f3 ; 0xf8f5e + mov ax, word [es:bx+00eh] ; 26 8b 47 0e ; 0xf8f60 + mov word [es:bx+018h], ax ; 26 89 47 18 ; 0xf8f64 + mov cx, ax ; 89 c1 ; 0xf8f68 ahci.c:536 + sal cx, 009h ; c1 e1 09 ; 0xf8f6a + shr cx, 1 ; d1 e9 ; 0xf8f6d + mov di, word [es:di+008h] ; 26 8b 7d 08 ; 0xf8f6f + mov ax, word [es:bx+00ah] ; 26 8b 47 0a ; 0xf8f73 + mov si, di ; 89 fe ; 0xf8f77 + mov dx, ax ; 89 c2 ; 0xf8f79 + mov es, ax ; 8e c0 ; 0xf8f7b + push DS ; 1e ; 0xf8f7d + mov ds, dx ; 8e da ; 0xf8f7e + rep movsw ; f3 a5 ; 0xf8f80 + pop DS ; 1f ; 0xf8f82 + xor bx, bx ; 31 db ; 0xf8f83 ahci.c:538 + les di, [bp+004h] ; c4 7e 04 ; 0xf8f85 + mov es, [es:di+00232h] ; 26 8e 85 32 02 ; 0xf8f88 + mov ax, word [es:bx+00268h] ; 26 8b 87 68 02 ; 0xf8f8d ahci.c:244 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8f92 + mov ax, word [bp-006h] ; 8b 46 fa ; 0xf8f96 ahci.c:540 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf8f99 + pop di ; 5f ; 0xf8f9c + pop si ; 5e ; 0xf8f9d + pop bp ; 5d ; 0xf8f9e + retn 00004h ; c2 04 00 ; 0xf8f9f + ; disGetNextSymbol 0xf8fa2 LB 0x10a3 -> off=0x0 cb=0000000000000084 uValue=00000000000f79a2 'ahci_write_sectors' +ahci_write_sectors: ; 0xf8fa2 LB 0x84 + push bp ; 55 ; 0xf8fa2 ahci.c:549 + mov bp, sp ; 89 e5 ; 0xf8fa3 + push si ; 56 ; 0xf8fa5 + push di ; 57 ; 0xf8fa6 + mov si, word [bp+004h] ; 8b 76 04 ; 0xf8fa7 + mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf8faa + mov es, cx ; 8e c1 ; 0xf8fad ahci.c:554 + movzx dx, byte [es:si+00ch] ; 26 0f b6 54 0c ; 0xf8faf + sub dx, strict byte 0000ch ; 83 ea 0c ; 0xf8fb4 + cmp dx, strict byte 00004h ; 83 fa 04 ; 0xf8fb7 ahci.c:555 + jbe short 08fcbh ; 76 0f ; 0xf8fba + push dx ; 52 ; 0xf8fbc ahci.c:556 + push 00ca5h ; 68 a5 0c ; 0xf8fbd + push 00c86h ; 68 86 0c ; 0xf8fc0 + push strict byte 00007h ; 6a 07 ; 0xf8fc3 + call 01a14h ; e8 4c 8a ; 0xf8fc5 + add sp, strict byte 00008h ; 83 c4 08 ; 0xf8fc8 + xor bx, bx ; 31 db ; 0xf8fcb ahci.c:562 + mov es, cx ; 8e c1 ; 0xf8fcd + mov di, word [es:si+00232h] ; 26 8b bc 32 02 ; 0xf8fcf + shr eax, 010h ; 66 c1 e8 10 ; 0xf8fd4 ahci.c:239 + mov es, di ; 8e c7 ; 0xf8fd8 + mov word [es:bx+00268h], ax ; 26 89 87 68 02 ; 0xf8fda + mov es, cx ; 8e c1 ; 0xf8fdf ahci.c:563 + mov bx, si ; 89 f3 ; 0xf8fe1 + add bx, dx ; 01 d3 ; 0xf8fe3 + movzx bx, byte [es:bx+0022dh] ; 26 0f b6 9f 2d 02 ; 0xf8fe5 + mov dx, word [es:si+00232h] ; 26 8b 94 32 02 ; 0xf8feb + xor ax, ax ; 31 c0 ; 0xf8ff0 + call 08cb2h ; e8 bd fc ; 0xf8ff2 + mov bx, strict word 00035h ; bb 35 00 ; 0xf8ff5 ahci.c:564 + mov ax, si ; 89 f0 ; 0xf8ff8 + mov dx, cx ; 89 ca ; 0xf8ffa + call 088d1h ; e8 d2 f8 ; 0xf8ffc + mov dx, ax ; 89 c2 ; 0xf8fff + mov es, cx ; 8e c1 ; 0xf9001 ahci.c:566 + mov ax, word [es:si+00eh] ; 26 8b 44 0e ; 0xf9003 + mov word [es:si+018h], ax ; 26 89 44 18 ; 0xf9007 + xor bx, bx ; 31 db ; 0xf900b ahci.c:567 + mov es, [es:si+00232h] ; 26 8e 84 32 02 ; 0xf900d + mov ax, word [es:bx+00268h] ; 26 8b 87 68 02 ; 0xf9012 ahci.c:244 + sal eax, 010h ; 66 c1 e0 10 ; 0xf9017 + mov ax, dx ; 89 d0 ; 0xf901b ahci.c:569 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf901d + pop di ; 5f ; 0xf9020 + pop si ; 5e ; 0xf9021 + pop bp ; 5d ; 0xf9022 + retn 00004h ; c2 04 00 ; 0xf9023 + ; disGetNextSymbol 0xf9026 LB 0x101f -> off=0x0 cb=0000000000000185 uValue=00000000000f7a26 'ahci_cmd_packet' +ahci_cmd_packet: ; 0xf9026 LB 0x185 + push bp ; 55 ; 0xf9026 ahci.c:576 + mov bp, sp ; 89 e5 ; 0xf9027 + push si ; 56 ; 0xf9029 + push di ; 57 ; 0xf902a + sub sp, strict byte 0000eh ; 83 ec 0e ; 0xf902b + push ax ; 50 ; 0xf902e + mov byte [bp-006h], dl ; 88 56 fa ; 0xf902f + mov word [bp-012h], bx ; 89 5e ee ; 0xf9032 + mov word [bp-010h], cx ; 89 4e f0 ; 0xf9035 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf9038 ahci.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf903b + mov es, ax ; 8e c0 ; 0xf903e + mov ax, word [es:bx] ; 26 8b 07 ; 0xf9040 + mov si, 00122h ; be 22 01 ; 0xf9043 ahci.c:49 + mov word [bp-008h], ax ; 89 46 f8 ; 0xf9046 + cmp byte [bp+00ah], 002h ; 80 7e 0a 02 ; 0xf9049 ahci.c:583 + jne short 0906eh ; 75 1f ; 0xf904d + mov bx, 00db2h ; bb b2 0d ; 0xf904f ahci.c:584 + mov cx, ds ; 8c d9 ; 0xf9052 + mov ax, strict word 00004h ; b8 04 00 ; 0xf9054 + call 019d3h ; e8 79 89 ; 0xf9057 + push 00cb8h ; 68 b8 0c ; 0xf905a + push 00cc8h ; 68 c8 0c ; 0xf905d + push strict byte 00004h ; 6a 04 ; 0xf9060 + call 01a14h ; e8 af 89 ; 0xf9062 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf9065 + mov ax, strict word 00001h ; b8 01 00 ; 0xf9068 ahci.c:585 + jmp near 091a2h ; e9 34 01 ; 0xf906b + test byte [bp+004h], 001h ; f6 46 04 01 ; 0xf906e ahci.c:589 + jne short 09068h ; 75 f4 ; 0xf9072 + mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf9074 ahci.c:603 + mov di, word [bp+008h] ; 8b 7e 08 ; 0xf9077 + mov cx, strict word 00008h ; b9 08 00 ; 0xf907a + sal bx, 1 ; d1 e3 ; 0xf907d + rcl di, 1 ; d1 d7 ; 0xf907f + loop 0907dh ; e2 fa ; 0xf9081 + mov es, [bp-008h] ; 8e 46 f8 ; 0xf9083 + mov word [es:si], bx ; 26 89 1c ; 0xf9086 + mov word [es:si+002h], di ; 26 89 7c 02 ; 0xf9089 + db 066h, 026h, 0c7h, 044h, 004h, 000h, 000h, 000h, 000h + ; mov dword [es:si+004h], strict dword 000000000h ; 66 26 c7 44 04 00 00 00 00; 0xf908d + mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf9096 ahci.c:604 + mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf9099 + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf909d + mov word [es:si+00ah], ax ; 26 89 44 0a ; 0xf90a0 + mov bx, word [es:si+010h] ; 26 8b 5c 10 ; 0xf90a4 ahci.c:605 + mov ax, word [bp+006h] ; 8b 46 06 ; 0xf90a8 + mov dx, word [bp+008h] ; 8b 56 08 ; 0xf90ab + xor cx, cx ; 31 c9 ; 0xf90ae + call 09f50h ; e8 9d 0e ; 0xf90b0 + mov word [es:si+00eh], ax ; 26 89 44 0e ; 0xf90b3 + xor di, di ; 31 ff ; 0xf90b7 ahci.c:608 + mov ax, word [es:si+00232h] ; 26 8b 84 32 02 ; 0xf90b9 + mov word [bp-00ah], ax ; 89 46 f6 ; 0xf90be + mov word [bp-00eh], di ; 89 7e f2 ; 0xf90c1 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf90c4 + sub word [bp-014h], strict byte 0000ch ; 83 6e ec 0c ; 0xf90c7 ahci.c:595 + shr eax, 010h ; 66 c1 e8 10 ; 0xf90cb ahci.c:239 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf90cf + mov word [es:di+00268h], ax ; 26 89 85 68 02 ; 0xf90d2 + mov es, [bp-008h] ; 8e 46 f8 ; 0xf90d7 ahci.c:611 + mov bx, word [bp-014h] ; 8b 5e ec ; 0xf90da + add bx, si ; 01 f3 ; 0xf90dd + movzx bx, byte [es:bx+0022dh] ; 26 0f b6 9f 2d 02 ; 0xf90df + mov dx, word [es:si+00232h] ; 26 8b 94 32 02 ; 0xf90e5 + xor ax, ax ; 31 c0 ; 0xf90ea + call 08cb2h ; e8 c3 fb ; 0xf90ec + movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf90ef ahci.c:614 + push ax ; 50 ; 0xf90f3 + mov bx, word [bp-012h] ; 8b 5e ee ; 0xf90f4 + mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf90f7 + mov ax, 000c0h ; b8 c0 00 ; 0xf90fa + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf90fd + call 09fc0h ; e8 bd 0e ; 0xf9100 + mov es, [bp-008h] ; 8e 46 f8 ; 0xf9103 ahci.c:618 + mov word [es:si+018h], di ; 26 89 7c 18 ; 0xf9106 + mov word [es:si+01ah], di ; 26 89 7c 1a ; 0xf910a ahci.c:619 + mov word [es:si+01ch], di ; 26 89 7c 1c ; 0xf910e + mov ax, word [es:si+01eh] ; 26 8b 44 1e ; 0xf9112 ahci.c:622 + test ax, ax ; 85 c0 ; 0xf9116 + je short 09141h ; 74 27 ; 0xf9118 + dec ax ; 48 ; 0xf911a ahci.c:623 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf911b + mov word [es:di+0010ch], ax ; 26 89 85 0c 01 ; 0xf911e + mov word [es:di+0010eh], di ; 26 89 bd 0e 01 ; 0xf9123 + mov dx, word [es:di+00264h] ; 26 8b 95 64 02 ; 0xf9128 ahci.c:624 + mov ax, word [es:di+00266h] ; 26 8b 85 66 02 ; 0xf912d + mov word [es:di+00100h], dx ; 26 89 95 00 01 ; 0xf9132 + mov word [es:di+00102h], ax ; 26 89 85 02 01 ; 0xf9137 + inc byte [es:di+00263h] ; 26 fe 85 63 02 ; 0xf913c ahci.c:625 + mov bx, 000a0h ; bb a0 00 ; 0xf9141 ahci.c:628 + mov ax, si ; 89 f0 ; 0xf9144 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf9146 + call 088d1h ; e8 85 f7 ; 0xf9149 + les bx, [bp-00eh] ; c4 5e f2 ; 0xf914c ahci.c:630 + mov ax, word [es:bx+004h] ; 26 8b 47 04 ; 0xf914f + mov dx, word [es:bx+006h] ; 26 8b 57 06 ; 0xf9153 + mov es, [bp-008h] ; 8e 46 f8 ; 0xf9157 + mov word [es:si+01ah], ax ; 26 89 44 1a ; 0xf915a + mov word [es:si+01ch], dx ; 26 89 54 1c ; 0xf915e + mov bx, word [es:si+01ah] ; 26 8b 5c 1a ; 0xf9162 ahci.c:632 + mov cx, dx ; 89 d1 ; 0xf9166 + shr cx, 1 ; d1 e9 ; 0xf9168 + rcr bx, 1 ; d1 db ; 0xf916a + mov di, word [es:si+008h] ; 26 8b 7c 08 ; 0xf916c + mov ax, word [es:si+00ah] ; 26 8b 44 0a ; 0xf9170 + mov cx, bx ; 89 d9 ; 0xf9174 + mov si, di ; 89 fe ; 0xf9176 + mov dx, ax ; 89 c2 ; 0xf9178 + mov es, ax ; 8e c0 ; 0xf917a + push DS ; 1e ; 0xf917c + mov ds, dx ; 8e da ; 0xf917d + rep movsw ; f3 a5 ; 0xf917f + pop DS ; 1f ; 0xf9181 + les bx, [bp-00eh] ; c4 5e f2 ; 0xf9182 ahci.c:244 + mov ax, word [es:bx+00268h] ; 26 8b 87 68 02 ; 0xf9185 + sal eax, 010h ; 66 c1 e0 10 ; 0xf918a + mov es, [bp-00ch] ; 8e 46 f4 ; 0xf918e ahci.c:636 + mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf9191 + or ax, word [es:bx+004h] ; 26 0b 47 04 ; 0xf9195 + jne short 091a0h ; 75 05 ; 0xf9199 + mov ax, strict word 00004h ; b8 04 00 ; 0xf919b + jmp short 091a2h ; eb 02 ; 0xf919e + xor ax, ax ; 31 c0 ; 0xf91a0 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf91a2 ahci.c:637 + pop di ; 5f ; 0xf91a5 + pop si ; 5e ; 0xf91a6 + pop bp ; 5d ; 0xf91a7 + retn 0000ch ; c2 0c 00 ; 0xf91a8 + ; disGetNextSymbol 0xf91ab LB 0xe9a -> off=0x0 cb=0000000000000005 uValue=00000000000f7bab 'wait_ticks_device_init' +wait_ticks_device_init: ; 0xf91ab LB 0x5 + push bp ; 55 ; 0xf91ab ahci.c:640 + mov bp, sp ; 89 e5 ; 0xf91ac + pop bp ; 5d ; 0xf91ae ahci.c:642 + retn ; c3 ; 0xf91af + ; disGetNextSymbol 0xf91b0 LB 0xe95 -> off=0x0 cb=00000000000004c9 uValue=00000000000f7bb0 'ahci_port_detect_device' +ahci_port_detect_device: ; 0xf91b0 LB 0x4c9 + push bp ; 55 ; 0xf91b0 ahci.c:644 + mov bp, sp ; 89 e5 ; 0xf91b1 + push cx ; 51 ; 0xf91b3 + push si ; 56 ; 0xf91b4 + push di ; 57 ; 0xf91b5 + sub sp, 0022ch ; 81 ec 2c 02 ; 0xf91b6 + mov si, ax ; 89 c6 ; 0xf91ba + mov word [bp-012h], dx ; 89 56 ee ; 0xf91bc + mov byte [bp-00eh], bl ; 88 5e f2 ; 0xf91bf + mov word [bp-024h], strict word 00000h ; c7 46 dc 00 00 ; 0xf91c2 ahci.c:650 + movzx di, bl ; 0f b6 fb ; 0xf91c7 ahci.c:652 + mov bx, di ; 89 fb ; 0xf91ca + call 08cb2h ; e8 e3 fa ; 0xf91cc + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf91cf ahci.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf91d2 + mov es, ax ; 8e c0 ; 0xf91d5 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf91d7 + mov word [bp-02ch], 00122h ; c7 46 d4 22 01 ; 0xf91da ahci.c:49 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf91df + mov ax, di ; 89 f8 ; 0xf91e2 ahci.c:657 + sal ax, 007h ; c1 e0 07 ; 0xf91e4 + add ax, 0012ch ; 05 2c 01 ; 0xf91e7 + cwd ; 99 ; 0xf91ea + mov bx, ax ; 89 c3 ; 0xf91eb + mov di, dx ; 89 d7 ; 0xf91ed + mov es, [bp-012h] ; 8e 46 ee ; 0xf91ef + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf91f2 + mov cx, di ; 89 f9 ; 0xf91f7 + xchg cx, ax ; 91 ; 0xf91f9 + sal eax, 010h ; 66 c1 e0 10 ; 0xf91fa + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf91fe + out DX, eax ; 66 ef ; 0xf9200 + mov es, [bp-012h] ; 8e 46 ee ; 0xf9202 + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf9205 + add dx, strict byte 00004h ; 83 c2 04 ; 0xf920a + mov ax, strict word 00001h ; b8 01 00 ; 0xf920d + xor cx, cx ; 31 c9 ; 0xf9210 + xchg cx, ax ; 91 ; 0xf9212 + sal eax, 010h ; 66 c1 e0 10 ; 0xf9213 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf9217 + out DX, eax ; 66 ef ; 0xf9219 + mov es, [bp-012h] ; 8e 46 ee ; 0xf921b ahci.c:662 + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf921e + mov ax, bx ; 89 d8 ; 0xf9223 + mov cx, di ; 89 f9 ; 0xf9225 + xchg cx, ax ; 91 ; 0xf9227 + sal eax, 010h ; 66 c1 e0 10 ; 0xf9228 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf922c + out DX, eax ; 66 ef ; 0xf922e + mov es, [bp-012h] ; 8e 46 ee ; 0xf9230 + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf9233 + add dx, strict byte 00004h ; 83 c2 04 ; 0xf9238 + xor ax, ax ; 31 c0 ; 0xf923b + xor cx, cx ; 31 c9 ; 0xf923d + xchg cx, ax ; 91 ; 0xf923f + sal eax, 010h ; 66 c1 e0 10 ; 0xf9240 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf9244 + out DX, eax ; 66 ef ; 0xf9246 + mov di, strict word 0006ch ; bf 6c 00 ; 0xf9248 ahci.c:671 + mov ax, strict word 00040h ; b8 40 00 ; 0xf924b + mov word [bp-014h], ax ; 89 46 ec ; 0xf924e + mov es, ax ; 8e c0 ; 0xf9251 ahci.c:672 + mov ax, word [es:di] ; 26 8b 05 ; 0xf9253 + add ax, strict word 00003h ; 05 03 00 ; 0xf9256 + mov word [bp-026h], ax ; 89 46 da ; 0xf9259 + mov ax, word [es:di+002h] ; 26 8b 45 02 ; 0xf925c + adc ax, strict word 00000h ; 15 00 00 ; 0xf9260 + mov word [bp-01ch], ax ; 89 46 e4 ; 0xf9263 + mov es, [bp-014h] ; 8e 46 ec ; 0xf9266 ahci.c:674 + mov ax, word [es:di+002h] ; 26 8b 45 02 ; 0xf9269 + cmp ax, word [bp-01ch] ; 3b 46 e4 ; 0xf926d + jc short 09283h ; 72 11 ; 0xf9270 + mov ax, word [es:di+002h] ; 26 8b 45 02 ; 0xf9272 + cmp ax, word [bp-01ch] ; 3b 46 e4 ; 0xf9276 + jne short 092ceh ; 75 53 ; 0xf9279 + mov ax, word [es:di] ; 26 8b 05 ; 0xf927b + cmp ax, word [bp-026h] ; 3b 46 da ; 0xf927e + jnc short 092ceh ; 73 4b ; 0xf9281 + movzx ax, byte [bp-00eh] ; 0f b6 46 f2 ; 0xf9283 ahci.c:677 + sal ax, 007h ; c1 e0 07 ; 0xf9287 + add ax, 00128h ; 05 28 01 ; 0xf928a + cwd ; 99 ; 0xf928d + mov es, [bp-012h] ; 8e 46 ee ; 0xf928e + mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf9291 + mov cx, dx ; 89 d1 ; 0xf9296 + mov dx, bx ; 89 da ; 0xf9298 + xchg cx, ax ; 91 ; 0xf929a + sal eax, 010h ; 66 c1 e0 10 ; 0xf929b + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf929f + out DX, eax ; 66 ef ; 0xf92a1 + mov es, [bp-012h] ; 8e 46 ee ; 0xf92a3 + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf92a6 + add dx, strict byte 00004h ; 83 c2 04 ; 0xf92ab + in eax, DX ; 66 ed ; 0xf92ae + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf92b0 + shr eax, 010h ; 66 c1 e8 10 ; 0xf92b2 + xchg dx, ax ; 92 ; 0xf92b6 + mov word [bp-022h], ax ; 89 46 de ; 0xf92b7 + mov word [bp-028h], dx ; 89 56 d8 ; 0xf92ba + push strict byte 00000h ; 6a 00 ; 0xf92bd ahci.c:678 + mov bx, strict word 0000fh ; bb 0f 00 ; 0xf92bf + xor cx, cx ; 31 c9 ; 0xf92c2 + call 0874dh ; e8 86 f4 ; 0xf92c4 + cmp ax, strict word 00003h ; 3d 03 00 ; 0xf92c7 + jne short 09266h ; 75 9a ; 0xf92ca + jmp short 092d6h ; eb 08 ; 0xf92cc ahci.c:680 + cmp word [bp-024h], strict byte 00000h ; 83 7e dc 00 ; 0xf92ce ahci.c:685 + je near 09671h ; 0f 84 9b 03 ; 0xf92d2 + push strict byte 00000h ; 6a 00 ; 0xf92d6 ahci.c:690 + mov bx, strict word 0000fh ; bb 0f 00 ; 0xf92d8 + xor cx, cx ; 31 c9 ; 0xf92db + mov ax, word [bp-022h] ; 8b 46 de ; 0xf92dd + mov dx, word [bp-028h] ; 8b 56 d8 ; 0xf92e0 + call 0874dh ; e8 67 f4 ; 0xf92e3 + cmp ax, strict word 00003h ; 3d 03 00 ; 0xf92e6 + jne near 09671h ; 0f 85 84 03 ; 0xf92e9 + movzx di, byte [bp-00eh] ; 0f b6 7e f2 ; 0xf92ed ahci.c:698 + sal di, 007h ; c1 e7 07 ; 0xf92f1 + lea ax, [di+00130h] ; 8d 85 30 01 ; 0xf92f4 + cwd ; 99 ; 0xf92f8 + mov es, [bp-012h] ; 8e 46 ee ; 0xf92f9 + mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf92fc + mov cx, dx ; 89 d1 ; 0xf9301 + mov dx, bx ; 89 da ; 0xf9303 + xchg cx, ax ; 91 ; 0xf9305 + sal eax, 010h ; 66 c1 e0 10 ; 0xf9306 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf930a + out DX, eax ; 66 ef ; 0xf930c + mov es, [bp-012h] ; 8e 46 ee ; 0xf930e + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf9311 + add dx, strict byte 00004h ; 83 c2 04 ; 0xf9316 + mov ax, strict word 0ffffh ; b8 ff ff ; 0xf9319 + mov cx, ax ; 89 c1 ; 0xf931c + xchg cx, ax ; 91 ; 0xf931e + sal eax, 010h ; 66 c1 e0 10 ; 0xf931f + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf9323 + out DX, eax ; 66 ef ; 0xf9325 + mov es, [bp-010h] ; 8e 46 f0 ; 0xf9327 ahci.c:700 + mov bx, word [bp-02ch] ; 8b 5e d4 ; 0xf932a + mov al, byte [es:bx+00231h] ; 26 8a 87 31 02 ; 0xf932d + mov byte [bp-00ch], al ; 88 46 f4 ; 0xf9332 + cmp AL, strict byte 004h ; 3c 04 ; 0xf9335 ahci.c:705 + jnc near 09671h ; 0f 83 36 03 ; 0xf9337 + lea ax, [di+00118h] ; 8d 85 18 01 ; 0xf933b ahci.c:708 + mov es, [bp-012h] ; 8e 46 ee ; 0xf933f ahci.c:250 + mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf9342 + xor cx, cx ; 31 c9 ; 0xf9347 ahci.c:252 + mov dx, bx ; 89 da ; 0xf9349 + xchg cx, ax ; 91 ; 0xf934b + sal eax, 010h ; 66 c1 e0 10 ; 0xf934c + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf9350 + out DX, eax ; 66 ef ; 0xf9352 + add bx, strict byte 00004h ; 83 c3 04 ; 0xf9354 ahci.c:253 + mov dx, bx ; 89 da ; 0xf9357 + in eax, DX ; 66 ed ; 0xf9359 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf935b + shr eax, 010h ; 66 c1 e8 10 ; 0xf935d + xchg dx, ax ; 92 ; 0xf9361 + or AL, strict byte 010h ; 0c 10 ; 0xf9362 + mov cx, dx ; 89 d1 ; 0xf9364 + mov dx, bx ; 89 da ; 0xf9366 + xchg cx, ax ; 91 ; 0xf9368 + sal eax, 010h ; 66 c1 e0 10 ; 0xf9369 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf936d + out DX, eax ; 66 ef ; 0xf936f + lea ax, [di+00124h] ; 8d 85 24 01 ; 0xf9371 ahci.c:712 + cwd ; 99 ; 0xf9375 + mov es, [bp-012h] ; 8e 46 ee ; 0xf9376 + mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf9379 + mov cx, dx ; 89 d1 ; 0xf937e + mov dx, bx ; 89 da ; 0xf9380 + xchg cx, ax ; 91 ; 0xf9382 + sal eax, 010h ; 66 c1 e0 10 ; 0xf9383 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf9387 + out DX, eax ; 66 ef ; 0xf9389 + mov es, [bp-012h] ; 8e 46 ee ; 0xf938b + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf938e + add dx, strict byte 00004h ; 83 c2 04 ; 0xf9393 + in eax, DX ; 66 ed ; 0xf9396 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf9398 + shr eax, 010h ; 66 c1 e8 10 ; 0xf939a + xchg dx, ax ; 92 ; 0xf939e + mov si, ax ; 89 c6 ; 0xf939f + mov ax, dx ; 89 d0 ; 0xf93a1 + mov dl, byte [bp-00ch] ; 8a 56 f4 ; 0xf93a3 + add dl, 00ch ; 80 c2 0c ; 0xf93a6 + mov byte [bp-008h], dl ; 88 56 f8 ; 0xf93a9 + test ax, ax ; 85 c0 ; 0xf93ac ahci.c:713 + jne near 095b9h ; 0f 85 07 02 ; 0xf93ae + cmp si, 00101h ; 81 fe 01 01 ; 0xf93b2 + jne near 095b9h ; 0f 85 ff 01 ; 0xf93b6 + mov es, [bp-010h] ; 8e 46 f0 ; 0xf93ba ahci.c:723 + mov bx, word [bp-02ch] ; 8b 5e d4 ; 0xf93bd + db 066h, 026h, 0c7h, 047h, 004h, 000h, 000h, 000h, 000h + ; mov dword [es:bx+004h], strict dword 000000000h ; 66 26 c7 47 04 00 00 00 00; 0xf93c0 + db 066h, 026h, 0c7h, 007h, 000h, 000h, 000h, 000h + ; mov dword [es:bx], strict dword 000000000h ; 66 26 c7 07 00 00 00 00 ; 0xf93c9 + lea dx, [bp-00232h] ; 8d 96 ce fd ; 0xf93d1 ahci.c:724 + mov word [es:bx+008h], dx ; 26 89 57 08 ; 0xf93d5 + mov [es:bx+00ah], ss ; 26 8c 57 0a ; 0xf93d9 + db 066h, 026h, 0c7h, 047h, 00eh, 001h, 000h, 000h, 002h + ; mov dword [es:bx+00eh], strict dword 002000001h ; 66 26 c7 47 0e 01 00 00 02; 0xf93dd ahci.c:725 + mov bx, 000ech ; bb ec 00 ; 0xf93e6 ahci.c:727 + mov ax, word [bp-02ch] ; 8b 46 d4 ; 0xf93e9 + mov dx, es ; 8c c2 ; 0xf93ec + call 088d1h ; e8 e0 f4 ; 0xf93ee + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf93f1 ahci.c:730 + mov byte [bp-00ah], al ; 88 46 f6 ; 0xf93f4 + test byte [bp-00232h], 080h ; f6 86 ce fd 80 ; 0xf93f7 ahci.c:732 + db 00fh, 095h, 0c0h + ; setne al ; 0f 95 c0 ; 0xf93fc + xor ah, ah ; 30 e4 ; 0xf93ff + mov dx, word [bp-00230h] ; 8b 96 d0 fd ; 0xf9401 ahci.c:733 + mov word [bp-01eh], dx ; 89 56 e2 ; 0xf9405 + mov dx, word [bp-0022ch] ; 8b 96 d4 fd ; 0xf9408 ahci.c:734 + mov word [bp-01ah], dx ; 89 56 e6 ; 0xf940c + mov dx, word [bp-00226h] ; 8b 96 da fd ; 0xf940f ahci.c:735 + mov word [bp-020h], dx ; 89 56 e0 ; 0xf9413 + mov di, word [bp-001bah] ; 8b be 46 fe ; 0xf9416 ahci.c:736 + mov si, word [bp-001b8h] ; 8b b6 48 fe ; 0xf941a + mov dword [bp-018h], strict dword 000000000h ; 66 c7 46 e8 00 00 00 00 ; 0xf941e + cmp si, 00fffh ; 81 fe ff 0f ; 0xf9426 ahci.c:738 + jne short 09447h ; 75 1b ; 0xf942a + cmp di, strict byte 0ffffh ; 83 ff ff ; 0xf942c + jne short 09447h ; 75 16 ; 0xf942f + mov dx, word [bp-00164h] ; 8b 96 9c fe ; 0xf9431 ahci.c:739 + mov word [bp-018h], dx ; 89 56 e8 ; 0xf9435 + mov dx, word [bp-00166h] ; 8b 96 9a fe ; 0xf9438 + mov word [bp-016h], dx ; 89 56 ea ; 0xf943c + mov si, word [bp-00168h] ; 8b b6 98 fe ; 0xf943f + mov di, word [bp-0016ah] ; 8b be 96 fe ; 0xf9443 + movzx bx, byte [bp-00ch] ; 0f b6 5e f4 ; 0xf9447 ahci.c:743 + mov es, [bp-010h] ; 8e 46 f0 ; 0xf944b + add bx, word [bp-02ch] ; 03 5e d4 ; 0xf944e + mov ah, byte [bp-00eh] ; 8a 66 f2 ; 0xf9451 + mov byte [es:bx+0022dh], ah ; 26 88 a7 2d 02 ; 0xf9454 + movzx dx, byte [bp-00ah] ; 0f b6 56 f6 ; 0xf9459 ahci.c:744 + imul dx, dx, strict byte 0001ch ; 6b d2 1c ; 0xf945d + mov bx, word [bp-02ch] ; 8b 5e d4 ; 0xf9460 + add bx, dx ; 01 d3 ; 0xf9463 + mov word [es:bx+022h], 0ff05h ; 26 c7 47 22 05 ff ; 0xf9465 + mov byte [es:bx+024h], al ; 26 88 47 24 ; 0xf946b ahci.c:746 + mov byte [es:bx+025h], 000h ; 26 c6 47 25 00 ; 0xf946f ahci.c:747 + mov word [es:bx+028h], 00200h ; 26 c7 47 28 00 02 ; 0xf9474 ahci.c:748 + mov byte [es:bx+027h], 001h ; 26 c6 47 27 01 ; 0xf947a ahci.c:749 + mov ax, word [bp-018h] ; 8b 46 e8 ; 0xf947f ahci.c:750 + mov word [es:bx+03ch], ax ; 26 89 47 3c ; 0xf9482 + mov ax, word [bp-016h] ; 8b 46 ea ; 0xf9486 + mov word [es:bx+03ah], ax ; 26 89 47 3a ; 0xf9489 + mov word [es:bx+038h], si ; 26 89 77 38 ; 0xf948d + mov word [es:bx+036h], di ; 26 89 7f 36 ; 0xf9491 + mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xf9495 ahci.c:752 + mov word [es:bx+030h], ax ; 26 89 47 30 ; 0xf9498 + mov ax, word [bp-01eh] ; 8b 46 e2 ; 0xf949c ahci.c:753 + mov word [es:bx+032h], ax ; 26 89 47 32 ; 0xf949f + mov ax, word [bp-020h] ; 8b 46 e0 ; 0xf94a3 ahci.c:754 + mov word [es:bx+034h], ax ; 26 89 47 34 ; 0xf94a6 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf94aa ahci.c:757 + cmp AL, strict byte 001h ; 3c 01 ; 0xf94ad + jc short 094bdh ; 72 0c ; 0xf94af + jbe short 094c5h ; 76 12 ; 0xf94b1 + cmp AL, strict byte 003h ; 3c 03 ; 0xf94b3 + je short 094cdh ; 74 16 ; 0xf94b5 + cmp AL, strict byte 002h ; 3c 02 ; 0xf94b7 + je short 094c9h ; 74 0e ; 0xf94b9 + jmp short 0951ah ; eb 5d ; 0xf94bb + test al, al ; 84 c0 ; 0xf94bd + jne short 0951ah ; 75 59 ; 0xf94bf + mov BL, strict byte 040h ; b3 40 ; 0xf94c1 ahci.c:760 + jmp short 094cfh ; eb 0a ; 0xf94c3 ahci.c:761 + mov BL, strict byte 048h ; b3 48 ; 0xf94c5 ahci.c:763 + jmp short 094cfh ; eb 06 ; 0xf94c7 ahci.c:764 + mov BL, strict byte 050h ; b3 50 ; 0xf94c9 ahci.c:766 + jmp short 094cfh ; eb 02 ; 0xf94cb ahci.c:767 + mov BL, strict byte 058h ; b3 58 ; 0xf94cd ahci.c:769 + mov al, bl ; 88 d8 ; 0xf94cf ahci.c:773 + add AL, strict byte 007h ; 04 07 ; 0xf94d1 + movzx dx, al ; 0f b6 d0 ; 0xf94d3 + mov ax, dx ; 89 d0 ; 0xf94d6 + call 01756h ; e8 7b 82 ; 0xf94d8 + test al, al ; 84 c0 ; 0xf94db + je short 0951ah ; 74 3b ; 0xf94dd + mov al, bl ; 88 d8 ; 0xf94df ahci.c:776 + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf94e1 + xor ah, ah ; 30 e4 ; 0xf94e3 + call 01756h ; e8 6e 82 ; 0xf94e5 + xor ah, ah ; 30 e4 ; 0xf94e8 + sal ax, 008h ; c1 e0 08 ; 0xf94ea + mov word [bp-02ah], ax ; 89 46 d6 ; 0xf94ed + movzx ax, bl ; 0f b6 c3 ; 0xf94f0 + call 01756h ; e8 60 82 ; 0xf94f3 + xor ah, ah ; 30 e4 ; 0xf94f6 + mov cx, word [bp-02ah] ; 8b 4e d6 ; 0xf94f8 + add cx, ax ; 01 c1 ; 0xf94fb + mov word [bp-030h], cx ; 89 4e d0 ; 0xf94fd + mov al, bl ; 88 d8 ; 0xf9500 ahci.c:777 + add AL, strict byte 002h ; 04 02 ; 0xf9502 + xor ah, ah ; 30 e4 ; 0xf9504 + call 01756h ; e8 4d 82 ; 0xf9506 + xor ah, ah ; 30 e4 ; 0xf9509 + mov word [bp-032h], ax ; 89 46 ce ; 0xf950b + mov ax, dx ; 89 d0 ; 0xf950e ahci.c:778 + call 01756h ; e8 43 82 ; 0xf9510 + xor ah, ah ; 30 e4 ; 0xf9513 + mov word [bp-02eh], ax ; 89 46 d2 ; 0xf9515 + jmp short 0952ah ; eb 10 ; 0xf9518 ahci.c:780 + push word [bp-018h] ; ff 76 e8 ; 0xf951a ahci.c:781 + push word [bp-016h] ; ff 76 ea ; 0xf951d + push si ; 56 ; 0xf9520 + push di ; 57 ; 0xf9521 + mov dx, ss ; 8c d2 ; 0xf9522 + lea ax, [bp-032h] ; 8d 46 ce ; 0xf9524 + call 0599dh ; e8 73 c4 ; 0xf9527 + mov bx, 00db2h ; bb b2 0d ; 0xf952a ahci.c:785 + mov cx, ds ; 8c d9 ; 0xf952d + mov ax, strict word 00004h ; b8 04 00 ; 0xf952f + call 019d3h ; e8 9e 84 ; 0xf9532 + push word [bp-018h] ; ff 76 e8 ; 0xf9535 + push word [bp-016h] ; ff 76 ea ; 0xf9538 + push si ; 56 ; 0xf953b + push di ; 57 ; 0xf953c + mov ax, word [bp-02eh] ; 8b 46 d2 ; 0xf953d + push ax ; 50 ; 0xf9540 + mov ax, word [bp-032h] ; 8b 46 ce ; 0xf9541 + push ax ; 50 ; 0xf9544 + mov ax, word [bp-030h] ; 8b 46 d0 ; 0xf9545 + push ax ; 50 ; 0xf9548 + push word [bp-020h] ; ff 76 e0 ; 0xf9549 + push word [bp-01ah] ; ff 76 e6 ; 0xf954c + push word [bp-01eh] ; ff 76 e2 ; 0xf954f + movzx ax, byte [bp-00eh] ; 0f b6 46 f2 ; 0xf9552 + push ax ; 50 ; 0xf9556 + movzx ax, byte [bp-00ch] ; 0f b6 46 f4 ; 0xf9557 + push ax ; 50 ; 0xf955b + push 00ce8h ; 68 e8 0c ; 0xf955c + push strict byte 00004h ; 6a 04 ; 0xf955f + call 01a14h ; e8 b0 84 ; 0xf9561 + add sp, strict byte 0001ch ; 83 c4 1c ; 0xf9564 + movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf9567 ahci.c:787 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf956b + mov di, word [bp-02ch] ; 8b 7e d4 ; 0xf956e + add di, ax ; 01 c7 ; 0xf9571 + mov es, [bp-010h] ; 8e 46 f0 ; 0xf9573 + lea di, [di+02ah] ; 8d 7d 2a ; 0xf9576 + push DS ; 1e ; 0xf9579 + push SS ; 16 ; 0xf957a + pop DS ; 1f ; 0xf957b + lea si, [bp-032h] ; 8d 76 ce ; 0xf957c + movsw ; a5 ; 0xf957f + movsw ; a5 ; 0xf9580 + movsw ; a5 ; 0xf9581 + pop DS ; 1f ; 0xf9582 + mov bx, word [bp-02ch] ; 8b 5e d4 ; 0xf9583 ahci.c:790 + mov al, byte [es:bx+001e2h] ; 26 8a 87 e2 01 ; 0xf9586 + mov ah, byte [bp-00ch] ; 8a 66 f4 ; 0xf958b ahci.c:791 + add ah, 00ch ; 80 c4 0c ; 0xf958e + movzx bx, al ; 0f b6 d8 ; 0xf9591 + add bx, word [bp-02ch] ; 03 5e d4 ; 0xf9594 + mov byte [es:bx+001e3h], ah ; 26 88 a7 e3 01 ; 0xf9597 + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf959c ahci.c:792 + mov bx, word [bp-02ch] ; 8b 5e d4 ; 0xf959e ahci.c:793 + mov byte [es:bx+001e2h], al ; 26 88 87 e2 01 ; 0xf95a1 + mov bx, strict word 00075h ; bb 75 00 ; 0xf95a6 ahci.c:38 + mov ax, strict word 00040h ; b8 40 00 ; 0xf95a9 + mov es, ax ; 8e c0 ; 0xf95ac + mov al, byte [es:bx] ; 26 8a 07 ; 0xf95ae + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf95b1 ahci.c:797 + mov byte [es:bx], al ; 26 88 07 ; 0xf95b3 ahci.c:43 + jmp near 09660h ; e9 a7 00 ; 0xf95b6 ahci.c:800 + cmp ax, 0eb14h ; 3d 14 eb ; 0xf95b9 + jne near 09660h ; 0f 85 a0 00 ; 0xf95bc + cmp si, 00101h ; 81 fe 01 01 ; 0xf95c0 + jne near 09660h ; 0f 85 98 00 ; 0xf95c4 + mov es, [bp-010h] ; 8e 46 f0 ; 0xf95c8 ahci.c:805 + mov bx, word [bp-02ch] ; 8b 5e d4 ; 0xf95cb + db 066h, 026h, 0c7h, 047h, 004h, 000h, 000h, 000h, 000h + ; mov dword [es:bx+004h], strict dword 000000000h ; 66 26 c7 47 04 00 00 00 00; 0xf95ce + db 066h, 026h, 0c7h, 007h, 000h, 000h, 000h, 000h + ; mov dword [es:bx], strict dword 000000000h ; 66 26 c7 07 00 00 00 00 ; 0xf95d7 + lea dx, [bp-00232h] ; 8d 96 ce fd ; 0xf95df ahci.c:806 + mov word [es:bx+008h], dx ; 26 89 57 08 ; 0xf95e3 + mov [es:bx+00ah], ss ; 26 8c 57 0a ; 0xf95e7 + db 066h, 026h, 0c7h, 047h, 00eh, 001h, 000h, 000h, 002h + ; mov dword [es:bx+00eh], strict dword 002000001h ; 66 26 c7 47 0e 01 00 00 02; 0xf95eb ahci.c:807 + mov bx, 000a1h ; bb a1 00 ; 0xf95f4 ahci.c:809 + mov ax, word [bp-02ch] ; 8b 46 d4 ; 0xf95f7 + mov dx, es ; 8c c2 ; 0xf95fa + call 088d1h ; e8 d2 f2 ; 0xf95fc + test byte [bp-00232h], 080h ; f6 86 ce fd 80 ; 0xf95ff ahci.c:814 + db 00fh, 095h, 0c0h + ; setne al ; 0f 95 c0 ; 0xf9604 + xor ah, ah ; 30 e4 ; 0xf9607 + mov dx, ax ; 89 c2 ; 0xf9609 + movzx bx, byte [bp-00ch] ; 0f b6 5e f4 ; 0xf960b ahci.c:816 + mov es, [bp-010h] ; 8e 46 f0 ; 0xf960f + add bx, word [bp-02ch] ; 03 5e d4 ; 0xf9612 + mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf9615 + mov byte [es:bx+0022dh], al ; 26 88 87 2d 02 ; 0xf9618 + movzx ax, byte [bp-008h] ; 0f b6 46 f8 ; 0xf961d ahci.c:817 + imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf9621 + mov bx, word [bp-02ch] ; 8b 5e d4 ; 0xf9624 + add bx, ax ; 01 c3 ; 0xf9627 + mov word [es:bx+022h], 00505h ; 26 c7 47 22 05 05 ; 0xf9629 + mov byte [es:bx+024h], dl ; 26 88 57 24 ; 0xf962f ahci.c:819 + mov word [es:bx+028h], 00800h ; 26 c7 47 28 00 08 ; 0xf9633 ahci.c:820 + mov byte [es:bx+027h], dh ; 26 88 77 27 ; 0xf9639 ahci.c:821 + mov bx, word [bp-02ch] ; 8b 5e d4 ; 0xf963d ahci.c:824 + mov al, byte [es:bx+001f3h] ; 26 8a 87 f3 01 ; 0xf9640 + mov ah, byte [bp-00ch] ; 8a 66 f4 ; 0xf9645 ahci.c:825 + add ah, 00ch ; 80 c4 0c ; 0xf9648 + movzx bx, al ; 0f b6 d8 ; 0xf964b + add bx, word [bp-02ch] ; 03 5e d4 ; 0xf964e + mov byte [es:bx+001f4h], ah ; 26 88 a7 f4 01 ; 0xf9651 + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf9656 ahci.c:826 + mov bx, word [bp-02ch] ; 8b 5e d4 ; 0xf9658 ahci.c:827 + mov byte [es:bx+001f3h], al ; 26 88 87 f3 01 ; 0xf965b + inc byte [bp-00ch] ; fe 46 f4 ; 0xf9660 ahci.c:832 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf9663 ahci.c:833 + mov es, [bp-010h] ; 8e 46 f0 ; 0xf9666 + mov bx, word [bp-02ch] ; 8b 5e d4 ; 0xf9669 + mov byte [es:bx+00231h], al ; 26 88 87 31 02 ; 0xf966c + lea sp, [bp-006h] ; 8d 66 fa ; 0xf9671 ahci.c:838 + pop di ; 5f ; 0xf9674 + pop si ; 5e ; 0xf9675 + pop cx ; 59 ; 0xf9676 + pop bp ; 5d ; 0xf9677 + retn ; c3 ; 0xf9678 + ; disGetNextSymbol 0xf9679 LB 0x9cc -> off=0x0 cb=000000000000003a uValue=00000000000f8079 'ahci_mem_alloc' +ahci_mem_alloc: ; 0xf9679 LB 0x3a + push bx ; 53 ; 0xf9679 ahci.c:843 + push cx ; 51 ; 0xf967a + push dx ; 52 ; 0xf967b + push di ; 57 ; 0xf967c + push bp ; 55 ; 0xf967d + mov bp, sp ; 89 e5 ; 0xf967e + mov di, 00413h ; bf 13 04 ; 0xf9680 ahci.c:48 + xor ax, ax ; 31 c0 ; 0xf9683 + mov es, ax ; 8e c0 ; 0xf9685 + mov ax, word [es:di] ; 26 8b 05 ; 0xf9687 + test ax, ax ; 85 c0 ; 0xf968a ahci.c:852 + je short 096adh ; 74 1f ; 0xf968c + dec ax ; 48 ; 0xf968e ahci.c:853 + mov bx, ax ; 89 c3 ; 0xf968f + xor dx, dx ; 31 d2 ; 0xf9691 ahci.c:856 + mov cx, strict word 0000ah ; b9 0a 00 ; 0xf9693 + sal ax, 1 ; d1 e0 ; 0xf9696 + rcl dx, 1 ; d1 d2 ; 0xf9698 + loop 09696h ; e2 fa ; 0xf969a + mov di, dx ; 89 d7 ; 0xf969c + mov cx, strict word 00004h ; b9 04 00 ; 0xf969e + shr di, 1 ; d1 ef ; 0xf96a1 + rcr ax, 1 ; d1 d8 ; 0xf96a3 + loop 096a1h ; e2 fa ; 0xf96a5 + mov di, 00413h ; bf 13 04 ; 0xf96a7 ahci.c:53 + mov word [es:di], bx ; 26 89 1d ; 0xf96aa + pop bp ; 5d ; 0xf96ad ahci.c:861 + pop di ; 5f ; 0xf96ae + pop dx ; 5a ; 0xf96af + pop cx ; 59 ; 0xf96b0 + pop bx ; 5b ; 0xf96b1 + retn ; c3 ; 0xf96b2 + ; disGetNextSymbol 0xf96b3 LB 0x992 -> off=0x0 cb=000000000000014f uValue=00000000000f80b3 'ahci_hba_init' +ahci_hba_init: ; 0xf96b3 LB 0x14f + push bp ; 55 ; 0xf96b3 ahci.c:866 + mov bp, sp ; 89 e5 ; 0xf96b4 + push bx ; 53 ; 0xf96b6 + push cx ; 51 ; 0xf96b7 + push dx ; 52 ; 0xf96b8 + push si ; 56 ; 0xf96b9 + push di ; 57 ; 0xf96ba + sub sp, strict byte 00006h ; 83 ec 06 ; 0xf96bb + mov si, ax ; 89 c6 ; 0xf96be + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf96c0 ahci.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf96c3 + mov es, ax ; 8e c0 ; 0xf96c6 + mov di, word [es:bx] ; 26 8b 3f ; 0xf96c8 + mov bx, 00122h ; bb 22 01 ; 0xf96cb ahci.c:877 + mov ax, strict word 00010h ; b8 10 00 ; 0xf96ce ahci.c:879 + xor cx, cx ; 31 c9 ; 0xf96d1 + mov dx, si ; 89 f2 ; 0xf96d3 + xchg cx, ax ; 91 ; 0xf96d5 + sal eax, 010h ; 66 c1 e0 10 ; 0xf96d6 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf96da + out DX, eax ; 66 ef ; 0xf96dc + lea dx, [si+004h] ; 8d 54 04 ; 0xf96de + in eax, DX ; 66 ed ; 0xf96e1 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf96e3 + shr eax, 010h ; 66 c1 e8 10 ; 0xf96e5 + xchg dx, ax ; 92 ; 0xf96e9 + call 09679h ; e8 8c ff ; 0xf96ea ahci.c:885 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf96ed + test ax, ax ; 85 c0 ; 0xf96f0 ahci.c:886 + je near 097f8h ; 0f 84 02 01 ; 0xf96f2 + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf96f6 ahci.c:889 + mov es, di ; 8e c7 ; 0xf96f9 + mov word [es:bx+00232h], ax ; 26 89 87 32 02 ; 0xf96fb + mov byte [es:bx+00231h], 000h ; 26 c6 87 31 02 00 ; 0xf9700 ahci.c:895 + xor bx, bx ; 31 db ; 0xf9706 ahci.c:897 + mov es, ax ; 8e c0 ; 0xf9708 + mov byte [es:bx+00262h], 0ffh ; 26 c6 87 62 02 ff ; 0xf970a ahci.c:898 + mov word [es:bx+00260h], si ; 26 89 b7 60 02 ; 0xf9710 ahci.c:899 + db 066h, 026h, 0c7h, 087h, 064h, 002h, 000h, 0c0h, 00ch, 000h + ; mov dword [es:bx+00264h], strict dword 0000cc000h ; 66 26 c7 87 64 02 00 c0 0c 00; 0xf9715 ahci.c:904 + mov ax, strict word 00004h ; b8 04 00 ; 0xf971f ahci.c:252 + xor cx, cx ; 31 c9 ; 0xf9722 + mov dx, si ; 89 f2 ; 0xf9724 + xchg cx, ax ; 91 ; 0xf9726 + sal eax, 010h ; 66 c1 e0 10 ; 0xf9727 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf972b + out DX, eax ; 66 ef ; 0xf972d + lea bx, [si+004h] ; 8d 5c 04 ; 0xf972f ahci.c:253 + mov dx, bx ; 89 da ; 0xf9732 + in eax, DX ; 66 ed ; 0xf9734 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf9736 + shr eax, 010h ; 66 c1 e8 10 ; 0xf9738 + xchg dx, ax ; 92 ; 0xf973c + or AL, strict byte 001h ; 0c 01 ; 0xf973d + mov cx, dx ; 89 d1 ; 0xf973f + mov dx, bx ; 89 da ; 0xf9741 + xchg cx, ax ; 91 ; 0xf9743 + sal eax, 010h ; 66 c1 e0 10 ; 0xf9744 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf9748 + out DX, eax ; 66 ef ; 0xf974a + mov ax, strict word 00004h ; b8 04 00 ; 0xf974c ahci.c:910 + xor cx, cx ; 31 c9 ; 0xf974f + mov dx, si ; 89 f2 ; 0xf9751 + xchg cx, ax ; 91 ; 0xf9753 + sal eax, 010h ; 66 c1 e0 10 ; 0xf9754 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf9758 + out DX, eax ; 66 ef ; 0xf975a + lea bx, [si+004h] ; 8d 5c 04 ; 0xf975c + mov dx, bx ; 89 da ; 0xf975f + in eax, DX ; 66 ed ; 0xf9761 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf9763 + shr eax, 010h ; 66 c1 e8 10 ; 0xf9765 + xchg dx, ax ; 92 ; 0xf9769 + test AL, strict byte 001h ; a8 01 ; 0xf976a ahci.c:911 + jne short 0974ch ; 75 de ; 0xf976c + xor ax, ax ; 31 c0 ; 0xf976e ahci.c:913 + xor cx, cx ; 31 c9 ; 0xf9770 + mov dx, si ; 89 f2 ; 0xf9772 + xchg cx, ax ; 91 ; 0xf9774 + sal eax, 010h ; 66 c1 e0 10 ; 0xf9775 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf9779 + out DX, eax ; 66 ef ; 0xf977b + mov dx, bx ; 89 da ; 0xf977d + in eax, DX ; 66 ed ; 0xf977f + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf9781 + shr eax, 010h ; 66 c1 e8 10 ; 0xf9783 + xchg dx, ax ; 92 ; 0xf9787 + push strict byte 00000h ; 6a 00 ; 0xf9788 ahci.c:914 + mov bx, strict word 0001fh ; bb 1f 00 ; 0xf978a + xor cx, cx ; 31 c9 ; 0xf978d + call 0874dh ; e8 bb ef ; 0xf978f + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf9792 + mov byte [bp-00eh], al ; 88 46 f2 ; 0xf9794 + mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf9797 ahci.c:919 + jmp short 097bdh ; eb 20 ; 0xf979b ahci.c:920 + xor al, al ; 30 c0 ; 0xf979d ahci.c:272 + test al, al ; 84 c0 ; 0xf979f ahci.c:273 + je short 097b4h ; 74 11 ; 0xf97a1 + movzx bx, byte [bp-00ch] ; 0f b6 5e f4 ; 0xf97a3 ahci.c:925 + xor ax, ax ; 31 c0 ; 0xf97a7 + mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf97a9 + call 091b0h ; e8 01 fa ; 0xf97ac + dec byte [bp-00eh] ; fe 4e f2 ; 0xf97af ahci.c:926 + je short 097f6h ; 74 42 ; 0xf97b2 ahci.c:927 + inc byte [bp-00ch] ; fe 46 f4 ; 0xf97b4 ahci.c:930 + cmp byte [bp-00ch], 020h ; 80 7e f4 20 ; 0xf97b7 ahci.c:931 + jnc short 097f6h ; 73 39 ; 0xf97bb + movzx cx, byte [bp-00ch] ; 0f b6 4e f4 ; 0xf97bd + mov bx, strict word 00001h ; bb 01 00 ; 0xf97c1 + xor di, di ; 31 ff ; 0xf97c4 + jcxz 097ceh ; e3 06 ; 0xf97c6 + sal bx, 1 ; d1 e3 ; 0xf97c8 + rcl di, 1 ; d1 d7 ; 0xf97ca + loop 097c8h ; e2 fa ; 0xf97cc + mov ax, strict word 0000ch ; b8 0c 00 ; 0xf97ce + xor cx, cx ; 31 c9 ; 0xf97d1 + mov dx, si ; 89 f2 ; 0xf97d3 + xchg cx, ax ; 91 ; 0xf97d5 + sal eax, 010h ; 66 c1 e0 10 ; 0xf97d6 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf97da + out DX, eax ; 66 ef ; 0xf97dc + lea dx, [si+004h] ; 8d 54 04 ; 0xf97de + in eax, DX ; 66 ed ; 0xf97e1 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf97e3 + shr eax, 010h ; 66 c1 e8 10 ; 0xf97e5 + xchg dx, ax ; 92 ; 0xf97e9 + test dx, di ; 85 fa ; 0xf97ea + jne short 097f2h ; 75 04 ; 0xf97ec + test ax, bx ; 85 d8 ; 0xf97ee + je short 0979dh ; 74 ab ; 0xf97f0 + mov AL, strict byte 001h ; b0 01 ; 0xf97f2 + jmp short 0979fh ; eb a9 ; 0xf97f4 + xor ax, ax ; 31 c0 ; 0xf97f6 ahci.c:933 + lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf97f8 ahci.c:934 + pop di ; 5f ; 0xf97fb + pop si ; 5e ; 0xf97fc + pop dx ; 5a ; 0xf97fd + pop cx ; 59 ; 0xf97fe + pop bx ; 5b ; 0xf97ff + pop bp ; 5d ; 0xf9800 + retn ; c3 ; 0xf9801 + ; disGetNextSymbol 0xf9802 LB 0x843 -> off=0x17 cb=0000000000000116 uValue=00000000000f8219 'ahci_init' + db 00bh, 005h, 004h, 003h, 002h, 001h, 000h, 0e9h, 098h, 0c7h, 098h, 0cdh, 098h, 0d3h, 098h, 0d9h + db 098h, 0dfh, 098h, 0e5h, 098h, 0e9h, 098h +ahci_init: ; 0xf9819 LB 0x116 + push bp ; 55 ; 0xf9819 ahci.c:939 + mov bp, sp ; 89 e5 ; 0xf981a + push si ; 56 ; 0xf981c + push di ; 57 ; 0xf981d + sub sp, strict byte 00008h ; 83 ec 08 ; 0xf981e + mov ax, 00601h ; b8 01 06 ; 0xf9821 ahci.c:943 + mov dx, strict word 00001h ; ba 01 00 ; 0xf9824 + call 09d4fh ; e8 25 05 ; 0xf9827 + mov bx, ax ; 89 c3 ; 0xf982a + cmp ax, strict word 0ffffh ; 3d ff ff ; 0xf982c ahci.c:944 + je near 09928h ; 0f 84 f5 00 ; 0xf982f + xor al, al ; 30 c0 ; 0xf9833 ahci.c:949 + shr ax, 008h ; c1 e8 08 ; 0xf9835 + mov byte [bp-00ah], al ; 88 46 f6 ; 0xf9838 + mov byte [bp-008h], bl ; 88 5e f8 ; 0xf983b ahci.c:950 + movzx dx, bl ; 0f b6 d3 ; 0xf983e ahci.c:955 + xor ah, ah ; 30 e4 ; 0xf9841 + mov bx, strict word 00034h ; bb 34 00 ; 0xf9843 + call 09d9fh ; e8 56 05 ; 0xf9846 + mov cl, al ; 88 c1 ; 0xf9849 + test cl, cl ; 84 c9 ; 0xf984b ahci.c:957 + je short 09872h ; 74 23 ; 0xf984d + movzx bx, cl ; 0f b6 d9 ; 0xf984f ahci.c:959 + movzx di, byte [bp-008h] ; 0f b6 7e f8 ; 0xf9852 + movzx si, byte [bp-00ah] ; 0f b6 76 f6 ; 0xf9856 + mov dx, di ; 89 fa ; 0xf985a + mov ax, si ; 89 f0 ; 0xf985c + call 09d9fh ; e8 3e 05 ; 0xf985e + cmp AL, strict byte 012h ; 3c 12 ; 0xf9861 ahci.c:963 + je short 09872h ; 74 0d ; 0xf9863 + mov al, cl ; 88 c8 ; 0xf9865 ahci.c:967 + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf9867 + movzx bx, al ; 0f b6 d8 ; 0xf9869 + mov dx, di ; 89 fa ; 0xf986c + mov ax, si ; 89 f0 ; 0xf986e + jmp short 09846h ; eb d4 ; 0xf9870 ahci.c:968 + test cl, cl ; 84 c9 ; 0xf9872 ahci.c:970 + je near 09928h ; 0f 84 b0 00 ; 0xf9874 + add cl, 002h ; 80 c1 02 ; 0xf9878 ahci.c:977 + movzx bx, cl ; 0f b6 d9 ; 0xf987b ahci.c:979 + movzx si, byte [bp-008h] ; 0f b6 76 f8 ; 0xf987e + movzx di, byte [bp-00ah] ; 0f b6 7e f6 ; 0xf9882 + mov dx, si ; 89 f2 ; 0xf9886 + mov ax, di ; 89 f8 ; 0xf9888 + call 09d9fh ; e8 12 05 ; 0xf988a + cmp AL, strict byte 010h ; 3c 10 ; 0xf988d ahci.c:980 + jne near 09928h ; 0f 85 95 00 ; 0xf988f + mov byte [bp-006h], 000h ; c6 46 fa 00 ; 0xf9893 ahci.c:983 + mov al, cl ; 88 c8 ; 0xf9897 ahci.c:985 + add AL, strict byte 002h ; 04 02 ; 0xf9899 + movzx bx, al ; 0f b6 d8 ; 0xf989b + mov dx, si ; 89 f2 ; 0xf989e + mov ax, di ; 89 f8 ; 0xf98a0 + call 09dc3h ; e8 1e 05 ; 0xf98a2 + mov dx, ax ; 89 c2 ; 0xf98a5 + and ax, strict word 0000fh ; 25 0f 00 ; 0xf98a7 ahci.c:989 + sub ax, strict word 00004h ; 2d 04 00 ; 0xf98aa + cmp ax, strict word 0000bh ; 3d 0b 00 ; 0xf98ad + jnbe short 098e9h ; 77 37 ; 0xf98b0 + push CS ; 0e ; 0xf98b2 + pop ES ; 07 ; 0xf98b3 + mov cx, strict word 00008h ; b9 08 00 ; 0xf98b4 + mov di, 09802h ; bf 02 98 ; 0xf98b7 + repne scasb ; f2 ae ; 0xf98ba + sal cx, 1 ; d1 e1 ; 0xf98bc + mov di, cx ; 89 cf ; 0xf98be + mov ax, word [cs:di-067f7h] ; 2e 8b 85 09 98 ; 0xf98c0 + jmp ax ; ff e0 ; 0xf98c5 + mov byte [bp-006h], 010h ; c6 46 fa 10 ; 0xf98c7 ahci.c:992 + jmp short 098e9h ; eb 1c ; 0xf98cb ahci.c:993 + mov byte [bp-006h], 014h ; c6 46 fa 14 ; 0xf98cd ahci.c:995 + jmp short 098e9h ; eb 16 ; 0xf98d1 ahci.c:996 + mov byte [bp-006h], 018h ; c6 46 fa 18 ; 0xf98d3 ahci.c:998 + jmp short 098e9h ; eb 10 ; 0xf98d7 ahci.c:999 + mov byte [bp-006h], 01ch ; c6 46 fa 1c ; 0xf98d9 ahci.c:1001 + jmp short 098e9h ; eb 0a ; 0xf98dd ahci.c:1002 + mov byte [bp-006h], 020h ; c6 46 fa 20 ; 0xf98df ahci.c:1004 + jmp short 098e9h ; eb 04 ; 0xf98e3 ahci.c:1005 + mov byte [bp-006h], 024h ; c6 46 fa 24 ; 0xf98e5 ahci.c:1007 + mov cx, dx ; 89 d1 ; 0xf98e9 ahci.c:1016 + shr cx, 004h ; c1 e9 04 ; 0xf98eb + sal cx, 002h ; c1 e1 02 ; 0xf98ee + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf98f1 ahci.c:1018 + test al, al ; 84 c0 ; 0xf98f4 + je short 09928h ; 74 30 ; 0xf98f6 + movzx bx, al ; 0f b6 d8 ; 0xf98f8 ahci.c:1020 + movzx di, byte [bp-008h] ; 0f b6 7e f8 ; 0xf98fb + movzx si, byte [bp-00ah] ; 0f b6 76 f6 ; 0xf98ff + mov dx, di ; 89 fa ; 0xf9903 + mov ax, si ; 89 f0 ; 0xf9905 + call 09de5h ; e8 db 04 ; 0xf9907 + test AL, strict byte 001h ; a8 01 ; 0xf990a ahci.c:1024 + je short 09928h ; 74 1a ; 0xf990c + and AL, strict byte 0f0h ; 24 f0 ; 0xf990e ahci.c:1027 + add ax, cx ; 01 c8 ; 0xf9910 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf9912 + mov cx, strict word 00007h ; b9 07 00 ; 0xf9915 ahci.c:1030 + mov bx, strict word 00004h ; bb 04 00 ; 0xf9918 + mov dx, di ; 89 fa ; 0xf991b + mov ax, si ; 89 f0 ; 0xf991d + call 09e0ch ; e8 ea 04 ; 0xf991f + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf9922 ahci.c:1033 + call 096b3h ; e8 8b fd ; 0xf9925 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf9928 ahci.c:1047 + pop di ; 5f ; 0xf992b + pop si ; 5e ; 0xf992c + pop bp ; 5d ; 0xf992d + retn ; c3 ; 0xf992e + ; disGetNextSymbol 0xf992f LB 0x716 -> off=0x0 cb=000000000000001b uValue=00000000000f832f 'apm_out_str' +apm_out_str: ; 0xf992f LB 0x1b + push bp ; 55 ; 0xf992f apm.c:146 + mov bp, sp ; 89 e5 ; 0xf9930 + push bx ; 53 ; 0xf9932 + mov bx, ax ; 89 c3 ; 0xf9933 + cmp byte [bx], 000h ; 80 3f 00 ; 0xf9935 apm.c:148 + je short 09944h ; 74 0a ; 0xf9938 + mov al, byte [bx] ; 8a 07 ; 0xf993a apm.c:149 + out DX, AL ; ee ; 0xf993c + inc bx ; 43 ; 0xf993d + mov al, byte [bx] ; 8a 07 ; 0xf993e + db 00ah, 0c0h + ; or al, al ; 0a c0 ; 0xf9940 + jne short 0993ch ; 75 f8 ; 0xf9942 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf9944 apm.c:150 + pop bx ; 5b ; 0xf9947 + pop bp ; 5d ; 0xf9948 + retn ; c3 ; 0xf9949 + ; disGetNextSymbol 0xf994a LB 0x6fb -> off=0x1e cb=00000000000000f5 uValue=00000000000f8368 'apm_function' + db 08bh, 099h, 057h, 09ah, 09dh, 099h, 0b8h, 099h, 057h, 09ah, 0e3h, 099h, 057h, 09ah, 0e8h, 099h + db 02ch, 09ah, 02ch, 09ah, 02ch, 09ah, 027h, 09ah, 02ch, 09ah, 02ch, 09ah, 020h, 09ah +apm_function: ; 0xf9968 LB 0xf5 + push bp ; 55 ; 0xf9968 apm.c:152 + mov bp, sp ; 89 e5 ; 0xf9969 + push si ; 56 ; 0xf996b + and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf996c apm.c:156 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf9970 apm.c:157 + xor ah, ah ; 30 e4 ; 0xf9973 + cmp ax, strict word 0000eh ; 3d 0e 00 ; 0xf9975 + jnbe near 09a2ch ; 0f 87 b0 00 ; 0xf9978 + mov bx, ax ; 89 c3 ; 0xf997c + add bx, ax ; 01 c3 ; 0xf997e + mov dx, word [bp+018h] ; 8b 56 18 ; 0xf9980 + or dl, 001h ; 80 ca 01 ; 0xf9983 + jmp word [cs:bx-066b6h] ; 2e ff a7 4a 99 ; 0xf9986 + mov word [bp+012h], 00102h ; c7 46 12 02 01 ; 0xf998b apm.c:159 + mov word [bp+00ch], 0504dh ; c7 46 0c 4d 50 ; 0xf9990 apm.c:160 + mov word [bp+010h], strict word 00003h ; c7 46 10 03 00 ; 0xf9995 apm.c:161 + jmp near 09a57h ; e9 ba 00 ; 0xf999a apm.c:162 + mov word [bp+012h], 0f000h ; c7 46 12 00 f0 ; 0xf999d apm.c:172 + mov word [bp+00ch], 0a034h ; c7 46 0c 34 a0 ; 0xf99a2 apm.c:173 + mov word [bp+010h], 0f000h ; c7 46 10 00 f0 ; 0xf99a7 apm.c:174 + mov ax, strict word 0fff0h ; b8 f0 ff ; 0xf99ac apm.c:175 + mov word [bp+006h], ax ; 89 46 06 ; 0xf99af + mov word [bp+004h], ax ; 89 46 04 ; 0xf99b2 apm.c:176 + jmp near 09a57h ; e9 9f 00 ; 0xf99b5 apm.c:177 + mov word [bp+012h], 0f000h ; c7 46 12 00 f0 ; 0xf99b8 apm.c:183 + mov word [bp+00ch], 0da40h ; c7 46 0c 40 da ; 0xf99bd apm.c:184 + mov ax, 0f000h ; b8 00 f0 ; 0xf99c2 apm.c:185 + mov word [bp+010h], ax ; 89 46 10 ; 0xf99c5 + mov word [bp+00eh], ax ; 89 46 0e ; 0xf99c8 apm.c:186 + mov ax, strict word 0fff0h ; b8 f0 ff ; 0xf99cb apm.c:187 + mov word [bp+006h], ax ; 89 46 06 ; 0xf99ce + mov word [bp+004h], ax ; 89 46 04 ; 0xf99d1 apm.c:188 + xor bx, bx ; 31 db ; 0xf99d4 apm.c:189 + sal ebx, 010h ; 66 c1 e3 10 ; 0xf99d6 + mov si, ax ; 89 c6 ; 0xf99da apm.c:190 + sal esi, 010h ; 66 c1 e6 10 ; 0xf99dc + jmp near 09a57h ; e9 74 00 ; 0xf99e0 apm.c:191 + sti ; fb ; 0xf99e3 apm.c:194 + hlt ; f4 ; 0xf99e4 apm.c:195 + jmp near 09a57h ; e9 6f 00 ; 0xf99e5 apm.c:196 + cmp word [bp+010h], strict byte 00003h ; 83 7e 10 03 ; 0xf99e8 apm.c:200 + je short 09a0dh ; 74 1f ; 0xf99ec + cmp word [bp+010h], strict byte 00002h ; 83 7e 10 02 ; 0xf99ee + je short 09a05h ; 74 11 ; 0xf99f2 + cmp word [bp+010h], strict byte 00001h ; 83 7e 10 01 ; 0xf99f4 + jne short 09a15h ; 75 1b ; 0xf99f8 + mov dx, 0040fh ; ba 0f 04 ; 0xf99fa apm.c:202 + mov ax, 00d22h ; b8 22 0d ; 0xf99fd + call 0992fh ; e8 2c ff ; 0xf9a00 + jmp short 09a57h ; eb 52 ; 0xf9a03 apm.c:203 + mov dx, 0040fh ; ba 0f 04 ; 0xf9a05 apm.c:205 + mov ax, 00d2ah ; b8 2a 0d ; 0xf9a08 + jmp short 09a00h ; eb f3 ; 0xf9a0b + mov dx, 0040fh ; ba 0f 04 ; 0xf9a0d apm.c:208 + mov ax, 00d32h ; b8 32 0d ; 0xf9a10 + jmp short 09a00h ; eb eb ; 0xf9a13 + or ah, 00ah ; 80 cc 0a ; 0xf9a15 apm.c:211 + mov word [bp+012h], ax ; 89 46 12 ; 0xf9a18 + mov word [bp+018h], dx ; 89 56 18 ; 0xf9a1b apm.c:212 + jmp short 09a57h ; eb 37 ; 0xf9a1e apm.c:214 + mov word [bp+012h], 00102h ; c7 46 12 02 01 ; 0xf9a20 apm.c:216 + jmp short 09a57h ; eb 30 ; 0xf9a25 apm.c:217 + or ah, 080h ; 80 cc 80 ; 0xf9a27 apm.c:224 + jmp short 09a18h ; eb ec ; 0xf9a2a + mov bx, 00db2h ; bb b2 0d ; 0xf9a2c apm.c:228 + mov cx, ds ; 8c d9 ; 0xf9a2f + mov ax, strict word 00004h ; b8 04 00 ; 0xf9a31 + call 019d3h ; e8 9c 7f ; 0xf9a34 + push word [bp+00ch] ; ff 76 0c ; 0xf9a37 + push word [bp+012h] ; ff 76 12 ; 0xf9a3a + push 00d3bh ; 68 3b 0d ; 0xf9a3d + push strict byte 00004h ; 6a 04 ; 0xf9a40 + call 01a14h ; e8 cf 7f ; 0xf9a42 + add sp, strict byte 00008h ; 83 c4 08 ; 0xf9a45 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf9a48 apm.c:229 + xor ah, ah ; 30 e4 ; 0xf9a4b + or ah, 00ch ; 80 cc 0c ; 0xf9a4d + mov word [bp+012h], ax ; 89 46 12 ; 0xf9a50 + or byte [bp+018h], 001h ; 80 4e 18 01 ; 0xf9a53 apm.c:230 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf9a57 apm.c:232 + pop si ; 5e ; 0xf9a5a + pop bp ; 5d ; 0xf9a5b + retn ; c3 ; 0xf9a5c + ; disGetNextSymbol 0xf9a5d LB 0x5e8 -> off=0x0 cb=0000000000000024 uValue=00000000000f845d 'pci16_select_reg' +pci16_select_reg: ; 0xf9a5d LB 0x24 + push bp ; 55 ; 0xf9a5d pcibios.c:188 + mov bp, sp ; 89 e5 ; 0xf9a5e + push bx ; 53 ; 0xf9a60 + and dl, 0fch ; 80 e2 fc ; 0xf9a61 pcibios.c:190 + mov bx, dx ; 89 d3 ; 0xf9a64 + mov dx, 00cf8h ; ba f8 0c ; 0xf9a66 + movzx eax, ax ; 66 0f b7 c0 ; 0xf9a69 + sal eax, 008h ; 66 c1 e0 08 ; 0xf9a6d + or eax, strict dword 080000000h ; 66 0d 00 00 00 80 ; 0xf9a71 + db 08ah, 0c3h + ; mov al, bl ; 8a c3 ; 0xf9a77 + out DX, eax ; 66 ef ; 0xf9a79 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf9a7b pcibios.c:191 + pop bx ; 5b ; 0xf9a7e + pop bp ; 5d ; 0xf9a7f + retn ; c3 ; 0xf9a80 + ; disGetNextSymbol 0xf9a81 LB 0x5c4 -> off=0x0 cb=00000000000000eb uValue=00000000000f8481 'pci16_find_device' +pci16_find_device: ; 0xf9a81 LB 0xeb + push bp ; 55 ; 0xf9a81 pcibios.c:221 + mov bp, sp ; 89 e5 ; 0xf9a82 + push si ; 56 ; 0xf9a84 + push di ; 57 ; 0xf9a85 + sub sp, strict byte 0000ch ; 83 ec 0c ; 0xf9a86 + push ax ; 50 ; 0xf9a89 + push dx ; 52 ; 0xf9a8a + mov si, bx ; 89 de ; 0xf9a8b + mov di, cx ; 89 cf ; 0xf9a8d + test cx, cx ; 85 c9 ; 0xf9a8f pcibios.c:231 + xor bx, bx ; 31 db ; 0xf9a91 pcibios.c:238 + mov byte [bp-008h], 000h ; c6 46 f8 00 ; 0xf9a93 pcibios.c:239 + test bl, 007h ; f6 c3 07 ; 0xf9a97 pcibios.c:249 + jne short 09ac9h ; 75 2d ; 0xf9a9a + mov dx, strict word 0000eh ; ba 0e 00 ; 0xf9a9c pcibios.c:250 + mov ax, bx ; 89 d8 ; 0xf9a9f + call 09a5dh ; e8 b9 ff ; 0xf9aa1 + mov dx, 00cfeh ; ba fe 0c ; 0xf9aa4 pcibios.c:251 + in AL, DX ; ec ; 0xf9aa7 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf9aa8 + mov byte [bp-006h], al ; 88 46 fa ; 0xf9aaa + cmp AL, strict byte 0ffh ; 3c ff ; 0xf9aad pcibios.c:252 + jne short 09ab7h ; 75 06 ; 0xf9aaf + add bx, strict byte 00008h ; 83 c3 08 ; 0xf9ab1 pcibios.c:253 + jmp near 09b4ah ; e9 93 00 ; 0xf9ab4 pcibios.c:254 + test byte [bp-006h], 080h ; f6 46 fa 80 ; 0xf9ab7 pcibios.c:256 + je short 09ac4h ; 74 07 ; 0xf9abb + mov word [bp-00ah], strict word 00001h ; c7 46 f6 01 00 ; 0xf9abd pcibios.c:257 + jmp short 09ac9h ; eb 05 ; 0xf9ac2 pcibios.c:258 + mov word [bp-00ah], strict word 00008h ; c7 46 f6 08 00 ; 0xf9ac4 pcibios.c:259 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf9ac9 pcibios.c:270 + and AL, strict byte 007h ; 24 07 ; 0xf9acc + cmp AL, strict byte 001h ; 3c 01 ; 0xf9ace + jne short 09af1h ; 75 1f ; 0xf9ad0 + mov ax, bx ; 89 d8 ; 0xf9ad2 + shr ax, 008h ; c1 e8 08 ; 0xf9ad4 + test ax, ax ; 85 c0 ; 0xf9ad7 + jne short 09af1h ; 75 16 ; 0xf9ad9 + mov dx, strict word 0001ah ; ba 1a 00 ; 0xf9adb pcibios.c:272 + mov ax, bx ; 89 d8 ; 0xf9ade + call 09a5dh ; e8 7a ff ; 0xf9ae0 + mov dx, 00cfeh ; ba fe 0c ; 0xf9ae3 pcibios.c:273 + in AL, DX ; ec ; 0xf9ae6 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf9ae7 + cmp al, byte [bp-008h] ; 3a 46 f8 ; 0xf9ae9 pcibios.c:274 + jbe short 09af1h ; 76 03 ; 0xf9aec + mov byte [bp-008h], al ; 88 46 f8 ; 0xf9aee pcibios.c:275 + test di, di ; 85 ff ; 0xf9af1 pcibios.c:279 + je short 09afah ; 74 05 ; 0xf9af3 + mov dx, strict word 00008h ; ba 08 00 ; 0xf9af5 + jmp short 09afch ; eb 02 ; 0xf9af8 + xor dx, dx ; 31 d2 ; 0xf9afa + mov ax, bx ; 89 d8 ; 0xf9afc + call 09a5dh ; e8 5c ff ; 0xf9afe + mov dx, 00cfch ; ba fc 0c ; 0xf9b01 pcibios.c:280 + in eax, DX ; 66 ed ; 0xf9b04 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf9b06 + shr eax, 010h ; 66 c1 e8 10 ; 0xf9b08 + xchg dx, ax ; 92 ; 0xf9b0c + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf9b0d + mov word [bp-00ch], dx ; 89 56 f4 ; 0xf9b10 + mov word [bp-010h], strict word 00000h ; c7 46 f0 00 00 ; 0xf9b13 pcibios.c:281 + test di, di ; 85 ff ; 0xf9b18 pcibios.c:284 + je short 09b2bh ; 74 0f ; 0xf9b1a + mov cx, strict word 00008h ; b9 08 00 ; 0xf9b1c pcibios.c:285 + shr dx, 1 ; d1 ea ; 0xf9b1f + rcr ax, 1 ; d1 d8 ; 0xf9b21 + loop 09b1fh ; e2 fa ; 0xf9b23 + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf9b25 + mov word [bp-00ch], dx ; 89 56 f4 ; 0xf9b28 + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf9b2b pcibios.c:292 + cmp ax, word [bp-014h] ; 3b 46 ec ; 0xf9b2e + jne short 09b3bh ; 75 08 ; 0xf9b31 + mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf9b33 + cmp ax, word [bp-012h] ; 3b 46 ee ; 0xf9b36 + je short 09b41h ; 74 06 ; 0xf9b39 + cmp word [bp-010h], strict byte 00000h ; 83 7e f0 00 ; 0xf9b3b pcibios.c:293 + je short 09b47h ; 74 06 ; 0xf9b3f + dec si ; 4e ; 0xf9b41 + cmp si, strict byte 0ffffh ; 83 fe ff ; 0xf9b42 + je short 09b59h ; 74 12 ; 0xf9b45 + add bx, word [bp-00ah] ; 03 5e f6 ; 0xf9b47 pcibios.c:301 + mov dx, bx ; 89 da ; 0xf9b4a pcibios.c:302 + shr dx, 008h ; c1 ea 08 ; 0xf9b4c + movzx ax, byte [bp-008h] ; 0f b6 46 f8 ; 0xf9b4f + cmp dx, ax ; 39 c2 ; 0xf9b53 + jbe near 09a97h ; 0f 86 3e ff ; 0xf9b55 + cmp si, strict byte 0ffffh ; 83 fe ff ; 0xf9b59 pcibios.c:304 + jne short 09b62h ; 75 04 ; 0xf9b5c pcibios.c:308 + mov ax, bx ; 89 d8 ; 0xf9b5e + jmp short 09b65h ; eb 03 ; 0xf9b60 + mov ax, strict word 0ffffh ; b8 ff ff ; 0xf9b62 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf9b65 pcibios.c:309 + pop di ; 5f ; 0xf9b68 + pop si ; 5e ; 0xf9b69 + pop bp ; 5d ; 0xf9b6a + retn ; c3 ; 0xf9b6b + ; disGetNextSymbol 0xf9b6c LB 0x4d9 -> off=0xc cb=00000000000001d7 uValue=00000000000f8578 'pci16_function' + db 05ah, 09ch, 074h, 09ch, 087h, 09ch, 09ch, 09ch, 0afh, 09ch, 0c2h, 09ch +pci16_function: ; 0xf9b78 LB 0x1d7 + push bp ; 55 ; 0xf9b78 pcibios.c:311 + mov bp, sp ; 89 e5 ; 0xf9b79 + push si ; 56 ; 0xf9b7b + push di ; 57 ; 0xf9b7c + push ax ; 50 ; 0xf9b7d + push ax ; 50 ; 0xf9b7e + and word [bp+020h], 000ffh ; 81 66 20 ff 00 ; 0xf9b7f pcibios.c:318 + and word [bp+02ch], strict byte 0fffeh ; 83 66 2c fe ; 0xf9b84 pcibios.c:319 + mov bx, word [bp+020h] ; 8b 5e 20 ; 0xf9b88 pcibios.c:321 + xor bh, bh ; 30 ff ; 0xf9b8b + mov ax, word [bp+020h] ; 8b 46 20 ; 0xf9b8d + xor ah, ah ; 30 e4 ; 0xf9b90 + cmp bx, strict byte 00003h ; 83 fb 03 ; 0xf9b92 + jc short 09bb1h ; 72 1a ; 0xf9b95 + jbe short 09c09h ; 76 70 ; 0xf9b97 + cmp bx, strict byte 0000eh ; 83 fb 0e ; 0xf9b99 + je near 09cd6h ; 0f 84 36 01 ; 0xf9b9c + cmp bx, strict byte 00008h ; 83 fb 08 ; 0xf9ba0 + jc near 09d1bh ; 0f 82 74 01 ; 0xf9ba3 + cmp bx, strict byte 0000dh ; 83 fb 0d ; 0xf9ba7 + jbe near 09c2eh ; 0f 86 80 00 ; 0xf9baa + jmp near 09d1bh ; e9 6a 01 ; 0xf9bae + cmp bx, strict byte 00002h ; 83 fb 02 ; 0xf9bb1 + je short 09bd9h ; 74 23 ; 0xf9bb4 + cmp bx, strict byte 00001h ; 83 fb 01 ; 0xf9bb6 + jne near 09d1bh ; 0f 85 5e 01 ; 0xf9bb9 + mov word [bp+020h], strict word 00001h ; c7 46 20 01 00 ; 0xf9bbd pcibios.c:323 + mov word [bp+014h], 00210h ; c7 46 14 10 02 ; 0xf9bc2 pcibios.c:324 + mov word [bp+01ch], strict word 00000h ; c7 46 1c 00 00 ; 0xf9bc7 pcibios.c:326 + mov word [bp+018h], 04350h ; c7 46 18 50 43 ; 0xf9bcc pcibios.c:327 + mov word [bp+01ah], 02049h ; c7 46 1a 49 20 ; 0xf9bd1 + jmp near 09d48h ; e9 6f 01 ; 0xf9bd6 pcibios.c:328 + cmp word [bp+018h], strict byte 0ffffh ; 83 7e 18 ff ; 0xf9bd9 pcibios.c:333 + jne short 09be5h ; 75 06 ; 0xf9bdd + or ah, 083h ; 80 cc 83 ; 0xf9bdf pcibios.c:334 + jmp near 09d41h ; e9 5c 01 ; 0xf9be2 pcibios.c:335 + mov bx, word [bp+008h] ; 8b 5e 08 ; 0xf9be5 pcibios.c:337 + mov dx, word [bp+01ch] ; 8b 56 1c ; 0xf9be8 + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf9beb + xor cx, cx ; 31 c9 ; 0xf9bee + call 09a81h ; e8 8e fe ; 0xf9bf0 + cmp ax, strict word 0ffffh ; 3d ff ff ; 0xf9bf3 pcibios.c:338 + jne short 09c03h ; 75 0b ; 0xf9bf6 + mov ax, word [bp+020h] ; 8b 46 20 ; 0xf9bf8 pcibios.c:339 + xor ah, ah ; 30 e4 ; 0xf9bfb + or ah, 086h ; 80 cc 86 ; 0xf9bfd + jmp near 09d41h ; e9 3e 01 ; 0xf9c00 + mov word [bp+014h], ax ; 89 46 14 ; 0xf9c03 pcibios.c:340 + jmp near 09d48h ; e9 3f 01 ; 0xf9c06 pcibios.c:345 + mov bx, word [bp+008h] ; 8b 5e 08 ; 0xf9c09 pcibios.c:347 + mov ax, word [bp+01ch] ; 8b 46 1c ; 0xf9c0c + mov dx, word [bp+01eh] ; 8b 56 1e ; 0xf9c0f + mov cx, strict word 00001h ; b9 01 00 ; 0xf9c12 + call 09a81h ; e8 69 fe ; 0xf9c15 + cmp ax, strict word 0ffffh ; 3d ff ff ; 0xf9c18 pcibios.c:348 + jne short 09c28h ; 75 0b ; 0xf9c1b + mov ax, word [bp+020h] ; 8b 46 20 ; 0xf9c1d pcibios.c:349 + xor ah, ah ; 30 e4 ; 0xf9c20 + or ah, 086h ; 80 cc 86 ; 0xf9c22 + jmp near 09d41h ; e9 19 01 ; 0xf9c25 pcibios.c:350 + mov word [bp+014h], ax ; 89 46 14 ; 0xf9c28 pcibios.c:352 + jmp near 09d48h ; e9 1a 01 ; 0xf9c2b pcibios.c:354 + cmp word [bp+004h], 00100h ; 81 7e 04 00 01 ; 0xf9c2e pcibios.c:361 + jc short 09c3bh ; 72 06 ; 0xf9c33 + or ah, 087h ; 80 cc 87 ; 0xf9c35 pcibios.c:362 + jmp near 09d41h ; e9 06 01 ; 0xf9c38 pcibios.c:363 + mov dx, word [bp+004h] ; 8b 56 04 ; 0xf9c3b pcibios.c:365 + mov ax, word [bp+014h] ; 8b 46 14 ; 0xf9c3e + call 09a5dh ; e8 19 fe ; 0xf9c41 + mov bx, word [bp+020h] ; 8b 5e 20 ; 0xf9c44 pcibios.c:366 + xor bh, bh ; 30 ff ; 0xf9c47 + sub bx, strict byte 00008h ; 83 eb 08 ; 0xf9c49 + cmp bx, strict byte 00005h ; 83 fb 05 ; 0xf9c4c + jnbe near 09d48h ; 0f 87 f5 00 ; 0xf9c4f + add bx, bx ; 01 db ; 0xf9c53 + jmp word [cs:bx-06494h] ; 2e ff a7 6c 9b ; 0xf9c55 + mov bx, word [bp+01ch] ; 8b 5e 1c ; 0xf9c5a pcibios.c:368 + xor bl, bl ; 30 db ; 0xf9c5d + mov dx, word [bp+004h] ; 8b 56 04 ; 0xf9c5f + and dx, strict byte 00003h ; 83 e2 03 ; 0xf9c62 + add dx, 00cfch ; 81 c2 fc 0c ; 0xf9c65 + in AL, DX ; ec ; 0xf9c69 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf9c6a + or bx, ax ; 09 c3 ; 0xf9c6c + mov word [bp+01ch], bx ; 89 5e 1c ; 0xf9c6e + jmp near 09d48h ; e9 d4 00 ; 0xf9c71 pcibios.c:369 + mov dx, word [bp+004h] ; 8b 56 04 ; 0xf9c74 pcibios.c:371 + xor dh, dh ; 30 f6 ; 0xf9c77 + and dl, 002h ; 80 e2 02 ; 0xf9c79 + add dx, 00cfch ; 81 c2 fc 0c ; 0xf9c7c + in ax, DX ; ed ; 0xf9c80 + mov word [bp+01ch], ax ; 89 46 1c ; 0xf9c81 + jmp near 09d48h ; e9 c1 00 ; 0xf9c84 pcibios.c:372 + mov dx, 00cfch ; ba fc 0c ; 0xf9c87 pcibios.c:374 + in eax, DX ; 66 ed ; 0xf9c8a + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf9c8c + shr eax, 010h ; 66 c1 e8 10 ; 0xf9c8e + xchg dx, ax ; 92 ; 0xf9c92 + mov word [bp+01ch], ax ; 89 46 1c ; 0xf9c93 + mov word [bp+01eh], dx ; 89 56 1e ; 0xf9c96 + jmp near 09d48h ; e9 ac 00 ; 0xf9c99 pcibios.c:375 + mov ax, word [bp+01ch] ; 8b 46 1c ; 0xf9c9c pcibios.c:377 + mov dx, word [bp+004h] ; 8b 56 04 ; 0xf9c9f + xor dh, dh ; 30 f6 ; 0xf9ca2 + and dl, 003h ; 80 e2 03 ; 0xf9ca4 + add dx, 00cfch ; 81 c2 fc 0c ; 0xf9ca7 + out DX, AL ; ee ; 0xf9cab + jmp near 09d48h ; e9 99 00 ; 0xf9cac pcibios.c:378 + mov ax, word [bp+01ch] ; 8b 46 1c ; 0xf9caf pcibios.c:380 + mov dx, word [bp+004h] ; 8b 56 04 ; 0xf9cb2 + xor dh, dh ; 30 f6 ; 0xf9cb5 + and dl, 002h ; 80 e2 02 ; 0xf9cb7 + add dx, 00cfch ; 81 c2 fc 0c ; 0xf9cba + out DX, ax ; ef ; 0xf9cbe + jmp near 09d48h ; e9 86 00 ; 0xf9cbf pcibios.c:381 + mov ax, word [bp+01ch] ; 8b 46 1c ; 0xf9cc2 pcibios.c:383 + mov cx, word [bp+01eh] ; 8b 4e 1e ; 0xf9cc5 + mov dx, 00cfch ; ba fc 0c ; 0xf9cc8 + xchg cx, ax ; 91 ; 0xf9ccb + sal eax, 010h ; 66 c1 e0 10 ; 0xf9ccc + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf9cd0 + out DX, eax ; 66 ef ; 0xf9cd2 + jmp short 09d48h ; eb 72 ; 0xf9cd4 pcibios.c:387 + mov bx, word [bp+004h] ; 8b 5e 04 ; 0xf9cd6 pcibios.c:389 + mov es, [bp+026h] ; 8e 46 26 ; 0xf9cd9 + mov word [bp-008h], bx ; 89 5e f8 ; 0xf9cdc + mov [bp-006h], es ; 8c 46 fa ; 0xf9cdf + mov cx, word [0f370h] ; 8b 0e 70 f3 ; 0xf9ce2 pcibios.c:393 + cmp cx, word [es:bx] ; 26 3b 0f ; 0xf9ce6 + jbe short 09cfch ; 76 11 ; 0xf9ce9 + mov ax, word [bp+020h] ; 8b 46 20 ; 0xf9ceb pcibios.c:394 + xor ah, ah ; 30 e4 ; 0xf9cee + or ah, 089h ; 80 cc 89 ; 0xf9cf0 + mov word [bp+020h], ax ; 89 46 20 ; 0xf9cf3 + or word [bp+02ch], strict byte 00001h ; 83 4e 2c 01 ; 0xf9cf6 pcibios.c:395 + jmp short 09d10h ; eb 14 ; 0xf9cfa pcibios.c:396 + les di, [es:bx+002h] ; 26 c4 7f 02 ; 0xf9cfc pcibios.c:397 + mov si, 0f190h ; be 90 f1 ; 0xf9d00 + mov dx, ds ; 8c da ; 0xf9d03 + push DS ; 1e ; 0xf9d05 + mov ds, dx ; 8e da ; 0xf9d06 + rep movsb ; f3 a4 ; 0xf9d08 + pop DS ; 1f ; 0xf9d0a + mov word [bp+014h], 00a00h ; c7 46 14 00 0a ; 0xf9d0b pcibios.c:399 + mov ax, word [0f370h] ; a1 70 f3 ; 0xf9d10 pcibios.c:401 + les bx, [bp-008h] ; c4 5e f8 ; 0xf9d13 + mov word [es:bx], ax ; 26 89 07 ; 0xf9d16 + jmp short 09d48h ; eb 2d ; 0xf9d19 pcibios.c:402 + mov bx, 00db2h ; bb b2 0d ; 0xf9d1b pcibios.c:404 + mov cx, ds ; 8c d9 ; 0xf9d1e + mov ax, strict word 00004h ; b8 04 00 ; 0xf9d20 + call 019d3h ; e8 ad 7c ; 0xf9d23 + mov ax, word [bp+014h] ; 8b 46 14 ; 0xf9d26 + push ax ; 50 ; 0xf9d29 + mov ax, word [bp+020h] ; 8b 46 20 ; 0xf9d2a + push ax ; 50 ; 0xf9d2d + push 00d6eh ; 68 6e 0d ; 0xf9d2e + push strict byte 00004h ; 6a 04 ; 0xf9d31 + call 01a14h ; e8 de 7c ; 0xf9d33 + add sp, strict byte 00008h ; 83 c4 08 ; 0xf9d36 + mov ax, word [bp+020h] ; 8b 46 20 ; 0xf9d39 pcibios.c:405 + xor ah, ah ; 30 e4 ; 0xf9d3c + or ah, 081h ; 80 cc 81 ; 0xf9d3e + mov word [bp+020h], ax ; 89 46 20 ; 0xf9d41 + or word [bp+02ch], strict byte 00001h ; 83 4e 2c 01 ; 0xf9d44 pcibios.c:406 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf9d48 pcibios.c:408 + pop di ; 5f ; 0xf9d4b + pop si ; 5e ; 0xf9d4c + pop bp ; 5d ; 0xf9d4d + retn ; c3 ; 0xf9d4e + ; disGetNextSymbol 0xf9d4f LB 0x2f6 -> off=0x0 cb=000000000000002b uValue=00000000000f874f 'pci_find_classcode' +pci_find_classcode: ; 0xf9d4f LB 0x2b + push bp ; 55 ; 0xf9d4f pciutil.c:126 + mov bp, sp ; 89 e5 ; 0xf9d50 + push bx ; 53 ; 0xf9d52 + push cx ; 51 ; 0xf9d53 + push si ; 56 ; 0xf9d54 + mov cx, dx ; 89 d1 ; 0xf9d55 + xor si, si ; 31 f6 ; 0xf9d57 pciutil.c:129 + mov dx, ax ; 89 c2 ; 0xf9d59 + mov ax, 0b103h ; b8 03 b1 ; 0xf9d5b + sal ecx, 010h ; 66 c1 e1 10 ; 0xf9d5e + db 08bh, 0cah + ; mov cx, dx ; 8b ca ; 0xf9d62 + int 01ah ; cd 1a ; 0xf9d64 + cmp ah, 000h ; 80 fc 00 ; 0xf9d66 + je near 09d70h ; 0f 84 03 00 ; 0xf9d69 + mov bx, strict word 0ffffh ; bb ff ff ; 0xf9d6d + mov ax, bx ; 89 d8 ; 0xf9d70 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf9d72 pciutil.c:133 + pop si ; 5e ; 0xf9d75 + pop cx ; 59 ; 0xf9d76 + pop bx ; 5b ; 0xf9d77 + pop bp ; 5d ; 0xf9d78 + retn ; c3 ; 0xf9d79 + ; disGetNextSymbol 0xf9d7a LB 0x2cb -> off=0x0 cb=0000000000000025 uValue=00000000000f877a 'pci_find_device' +pci_find_device: ; 0xf9d7a LB 0x25 + push bp ; 55 ; 0xf9d7a pciutil.c:146 + mov bp, sp ; 89 e5 ; 0xf9d7b + push bx ; 53 ; 0xf9d7d + push cx ; 51 ; 0xf9d7e + push si ; 56 ; 0xf9d7f + mov cx, dx ; 89 d1 ; 0xf9d80 + xor si, si ; 31 f6 ; 0xf9d82 pciutil.c:148 + mov dx, ax ; 89 c2 ; 0xf9d84 + mov ax, 0b102h ; b8 02 b1 ; 0xf9d86 + int 01ah ; cd 1a ; 0xf9d89 + cmp ah, 000h ; 80 fc 00 ; 0xf9d8b + je near 09d95h ; 0f 84 03 00 ; 0xf9d8e + mov bx, strict word 0ffffh ; bb ff ff ; 0xf9d92 + mov ax, bx ; 89 d8 ; 0xf9d95 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf9d97 pciutil.c:149 + pop si ; 5e ; 0xf9d9a + pop cx ; 59 ; 0xf9d9b + pop bx ; 5b ; 0xf9d9c + pop bp ; 5d ; 0xf9d9d + retn ; c3 ; 0xf9d9e + ; disGetNextSymbol 0xf9d9f LB 0x2a6 -> off=0x0 cb=0000000000000024 uValue=00000000000f879f 'pci_read_config_byte' +pci_read_config_byte: ; 0xf9d9f LB 0x24 + push bp ; 55 ; 0xf9d9f pciutil.c:151 + mov bp, sp ; 89 e5 ; 0xf9da0 + push cx ; 51 ; 0xf9da2 + push di ; 57 ; 0xf9da3 + movzx di, bl ; 0f b6 fb ; 0xf9da4 pciutil.c:153 + movzx bx, al ; 0f b6 d8 ; 0xf9da7 + sal bx, 008h ; c1 e3 08 ; 0xf9daa + movzx ax, dl ; 0f b6 c2 ; 0xf9dad + or bx, ax ; 09 c3 ; 0xf9db0 + mov ax, 0b108h ; b8 08 b1 ; 0xf9db2 + int 01ah ; cd 1a ; 0xf9db5 + movzx ax, cl ; 0f b6 c1 ; 0xf9db7 + xor dx, dx ; 31 d2 ; 0xf9dba pciutil.c:154 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf9dbc + pop di ; 5f ; 0xf9dbf + pop cx ; 59 ; 0xf9dc0 + pop bp ; 5d ; 0xf9dc1 + retn ; c3 ; 0xf9dc2 + ; disGetNextSymbol 0xf9dc3 LB 0x282 -> off=0x0 cb=0000000000000022 uValue=00000000000f87c3 'pci_read_config_word' +pci_read_config_word: ; 0xf9dc3 LB 0x22 + push bp ; 55 ; 0xf9dc3 pciutil.c:156 + mov bp, sp ; 89 e5 ; 0xf9dc4 + push cx ; 51 ; 0xf9dc6 + push di ; 57 ; 0xf9dc7 + movzx di, bl ; 0f b6 fb ; 0xf9dc8 pciutil.c:158 + xor ah, ah ; 30 e4 ; 0xf9dcb + sal ax, 008h ; c1 e0 08 ; 0xf9dcd + movzx bx, dl ; 0f b6 da ; 0xf9dd0 + or bx, ax ; 09 c3 ; 0xf9dd3 + mov ax, 0b109h ; b8 09 b1 ; 0xf9dd5 + int 01ah ; cd 1a ; 0xf9dd8 + mov ax, cx ; 89 c8 ; 0xf9dda + xor dx, dx ; 31 d2 ; 0xf9ddc pciutil.c:159 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf9dde + pop di ; 5f ; 0xf9de1 + pop cx ; 59 ; 0xf9de2 + pop bp ; 5d ; 0xf9de3 + retn ; c3 ; 0xf9de4 + ; disGetNextSymbol 0xf9de5 LB 0x260 -> off=0x0 cb=0000000000000027 uValue=00000000000f87e5 'pci_read_config_dword' +pci_read_config_dword: ; 0xf9de5 LB 0x27 + push bp ; 55 ; 0xf9de5 pciutil.c:161 + mov bp, sp ; 89 e5 ; 0xf9de6 + push cx ; 51 ; 0xf9de8 + push di ; 57 ; 0xf9de9 + movzx di, bl ; 0f b6 fb ; 0xf9dea pciutil.c:164 + movzx bx, al ; 0f b6 d8 ; 0xf9ded + sal bx, 008h ; c1 e3 08 ; 0xf9df0 + movzx ax, dl ; 0f b6 c2 ; 0xf9df3 + or bx, ax ; 09 c3 ; 0xf9df6 + mov ax, 0b10ah ; b8 0a b1 ; 0xf9df8 + int 01ah ; cd 1a ; 0xf9dfb + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf9dfd + shr ecx, 010h ; 66 c1 e9 10 ; 0xf9dff + mov dx, cx ; 89 ca ; 0xf9e03 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf9e05 pciutil.c:169 + pop di ; 5f ; 0xf9e08 + pop cx ; 59 ; 0xf9e09 + pop bp ; 5d ; 0xf9e0a + retn ; c3 ; 0xf9e0b + ; disGetNextSymbol 0xf9e0c LB 0x239 -> off=0x0 cb=000000000000001c uValue=00000000000f880c 'pci_write_config_word' +pci_write_config_word: ; 0xf9e0c LB 0x1c + push bp ; 55 ; 0xf9e0c pciutil.c:171 + mov bp, sp ; 89 e5 ; 0xf9e0d + push di ; 57 ; 0xf9e0f + movzx di, bl ; 0f b6 fb ; 0xf9e10 pciutil.c:173 + xor ah, ah ; 30 e4 ; 0xf9e13 + sal ax, 008h ; c1 e0 08 ; 0xf9e15 + movzx bx, dl ; 0f b6 da ; 0xf9e18 + or bx, ax ; 09 c3 ; 0xf9e1b + mov ax, 0b10ch ; b8 0c b1 ; 0xf9e1d + int 01ah ; cd 1a ; 0xf9e20 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf9e22 pciutil.c:174 + pop di ; 5f ; 0xf9e25 + pop bp ; 5d ; 0xf9e26 + retn ; c3 ; 0xf9e27 + ; disGetNextSymbol 0xf9e28 LB 0x21d -> off=0x0 cb=000000000000001d uValue=00000000000f8828 'vds_is_present' +vds_is_present: ; 0xf9e28 LB 0x1d + push bx ; 53 ; 0xf9e28 vds.c:32 + push bp ; 55 ; 0xf9e29 + mov bp, sp ; 89 e5 ; 0xf9e2a + mov bx, strict word 0007bh ; bb 7b 00 ; 0xf9e2c vds.c:36 + mov ax, strict word 00040h ; b8 40 00 ; 0xf9e2f + mov es, ax ; 8e c0 ; 0xf9e32 + test byte [es:bx], 020h ; 26 f6 07 20 ; 0xf9e34 vds.c:37 + je short 09e40h ; 74 06 ; 0xf9e38 + mov ax, strict word 00001h ; b8 01 00 ; 0xf9e3a + pop bp ; 5d ; 0xf9e3d + pop bx ; 5b ; 0xf9e3e + retn ; c3 ; 0xf9e3f + xor ax, ax ; 31 c0 ; 0xf9e40 + pop bp ; 5d ; 0xf9e42 vds.c:38 + pop bx ; 5b ; 0xf9e43 + retn ; c3 ; 0xf9e44 + ; disGetNextSymbol 0xf9e45 LB 0x200 -> off=0x0 cb=000000000000001e uValue=00000000000f8845 'vds_real_to_lin' +vds_real_to_lin: ; 0xf9e45 LB 0x1e + push bx ; 53 ; 0xf9e45 vds.c:67 + push cx ; 51 ; 0xf9e46 + push bp ; 55 ; 0xf9e47 + mov bp, sp ; 89 e5 ; 0xf9e48 + mov bx, ax ; 89 c3 ; 0xf9e4a + mov ax, dx ; 89 d0 ; 0xf9e4c + xor dx, dx ; 31 d2 ; 0xf9e4e vds.c:69 + mov cx, strict word 00004h ; b9 04 00 ; 0xf9e50 + sal ax, 1 ; d1 e0 ; 0xf9e53 + rcl dx, 1 ; d1 d2 ; 0xf9e55 + loop 09e53h ; e2 fa ; 0xf9e57 + xor cx, cx ; 31 c9 ; 0xf9e59 + add ax, bx ; 01 d8 ; 0xf9e5b + adc dx, cx ; 11 ca ; 0xf9e5d + pop bp ; 5d ; 0xf9e5f vds.c:70 + pop cx ; 59 ; 0xf9e60 + pop bx ; 5b ; 0xf9e61 + retn ; c3 ; 0xf9e62 + ; disGetNextSymbol 0xf9e63 LB 0x1e2 -> off=0x0 cb=0000000000000079 uValue=00000000000f8863 'vds_build_sg_list' +vds_build_sg_list: ; 0xf9e63 LB 0x79 + push bp ; 55 ; 0xf9e63 vds.c:77 + mov bp, sp ; 89 e5 ; 0xf9e64 + push si ; 56 ; 0xf9e66 + push di ; 57 ; 0xf9e67 + mov di, ax ; 89 c7 ; 0xf9e68 + mov si, dx ; 89 d6 ; 0xf9e6a + mov ax, bx ; 89 d8 ; 0xf9e6c + mov dx, cx ; 89 ca ; 0xf9e6e + mov bx, word [bp+004h] ; 8b 5e 04 ; 0xf9e70 vds.c:82 + mov es, si ; 8e c6 ; 0xf9e73 + mov word [es:di], bx ; 26 89 1d ; 0xf9e75 + mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf9e78 + mov word [es:di+002h], bx ; 26 89 5d 02 ; 0xf9e7b + call 09e45h ; e8 c3 ff ; 0xf9e7f vds.c:83 + mov es, si ; 8e c6 ; 0xf9e82 + mov word [es:di+004h], ax ; 26 89 45 04 ; 0xf9e84 + mov word [es:di+006h], dx ; 26 89 55 06 ; 0xf9e88 + mov word [es:di+008h], strict word 00000h ; 26 c7 45 08 00 00 ; 0xf9e8c vds.c:84 + call 09e28h ; e8 93 ff ; 0xf9e92 vds.c:85 + test ax, ax ; 85 c0 ; 0xf9e95 + je short 09each ; 74 13 ; 0xf9e97 + mov es, si ; 8e c6 ; 0xf9e99 vds.c:87 + mov ax, 08105h ; b8 05 81 ; 0xf9e9b + mov dx, strict word 00000h ; ba 00 00 ; 0xf9e9e + int 04bh ; cd 4b ; 0xf9ea1 + jc near 09ea9h ; 0f 82 02 00 ; 0xf9ea3 + db 032h, 0c0h + ; xor al, al ; 32 c0 ; 0xf9ea7 + cbw ; 98 ; 0xf9ea9 + jmp short 09ed3h ; eb 27 ; 0xf9eaa vds.c:88 + mov es, si ; 8e c6 ; 0xf9eac vds.c:90 + mov word [es:di+00eh], strict word 00001h ; 26 c7 45 0e 01 00 ; 0xf9eae + mov dx, word [es:di+004h] ; 26 8b 55 04 ; 0xf9eb4 vds.c:91 + mov ax, word [es:di+006h] ; 26 8b 45 06 ; 0xf9eb8 + mov word [es:di+010h], dx ; 26 89 55 10 ; 0xf9ebc + mov word [es:di+012h], ax ; 26 89 45 12 ; 0xf9ec0 + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf9ec4 vds.c:92 + mov word [es:di+014h], ax ; 26 89 45 14 ; 0xf9ec7 + mov ax, bx ; 89 d8 ; 0xf9ecb + mov word [es:di+016h], bx ; 26 89 5d 16 ; 0xf9ecd + xor ax, bx ; 31 d8 ; 0xf9ed1 vds.c:93 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf9ed3 vds.c:96 + pop di ; 5f ; 0xf9ed6 + pop si ; 5e ; 0xf9ed7 + pop bp ; 5d ; 0xf9ed8 + retn 00004h ; c2 04 00 ; 0xf9ed9 + ; disGetNextSymbol 0xf9edc LB 0x169 -> off=0x0 cb=0000000000000030 uValue=00000000000f88dc 'vds_free_sg_list' +vds_free_sg_list: ; 0xf9edc LB 0x30 + push bp ; 55 ; 0xf9edc vds.c:102 + mov bp, sp ; 89 e5 ; 0xf9edd + push bx ; 53 ; 0xf9edf + push di ; 57 ; 0xf9ee0 + mov bx, ax ; 89 c3 ; 0xf9ee1 + call 09e28h ; e8 42 ff ; 0xf9ee3 vds.c:106 + test ax, ax ; 85 c0 ; 0xf9ee6 + je short 09efdh ; 74 13 ; 0xf9ee8 + mov di, bx ; 89 df ; 0xf9eea vds.c:108 + mov es, dx ; 8e c2 ; 0xf9eec + mov ax, 08106h ; b8 06 81 ; 0xf9eee + mov dx, strict word 00000h ; ba 00 00 ; 0xf9ef1 + int 04bh ; cd 4b ; 0xf9ef4 + jc near 09efch ; 0f 82 02 00 ; 0xf9ef6 + db 032h, 0c0h + ; xor al, al ; 32 c0 ; 0xf9efa + cbw ; 98 ; 0xf9efc + mov es, dx ; 8e c2 ; 0xf9efd vds.c:116 + mov word [es:bx+00eh], strict word 00000h ; 26 c7 47 0e 00 00 ; 0xf9eff + lea sp, [bp-004h] ; 8d 66 fc ; 0xf9f05 vds.c:118 + pop di ; 5f ; 0xf9f08 + pop bx ; 5b ; 0xf9f09 + pop bp ; 5d ; 0xf9f0a + retn ; c3 ; 0xf9f0b + ; disGetNextSymbol 0xf9f0c LB 0x139 -> off=0x4 cb=0000000000000040 uValue=00000000000f8910 '__U4M' + db 000h, 000h, 000h, 000h +__U4M: ; 0xf9f10 LB 0x40 + pushfw ; 9c ; 0xf9f10 __U4M.asm:37 + push eax ; 66 50 ; 0xf9f11 __U4M.asm:40 + push edx ; 66 52 ; 0xf9f13 __U4M.asm:41 + push ecx ; 66 51 ; 0xf9f15 __U4M.asm:42 + rol eax, 010h ; 66 c1 c0 10 ; 0xf9f17 __U4M.asm:44 + db 08bh, 0c2h + ; mov ax, dx ; 8b c2 ; 0xf9f1b __U4M.asm:45 + ror eax, 010h ; 66 c1 c8 10 ; 0xf9f1d __U4M.asm:46 + db 066h, 033h, 0d2h + ; xor edx, edx ; 66 33 d2 ; 0xf9f21 __U4M.asm:47 + shr ecx, 010h ; 66 c1 e9 10 ; 0xf9f24 __U4M.asm:49 + db 08bh, 0cbh + ; mov cx, bx ; 8b cb ; 0xf9f28 __U4M.asm:50 + mul ecx ; 66 f7 e1 ; 0xf9f2a __U4M.asm:52 + pop ecx ; 66 59 ; 0xf9f2d __U4M.asm:54 + pop edx ; 66 5a ; 0xf9f2f __U4M.asm:56 + ror eax, 010h ; 66 c1 c8 10 ; 0xf9f31 __U4M.asm:57 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf9f35 __U4M.asm:58 + add sp, strict byte 00002h ; 83 c4 02 ; 0xf9f37 __U4M.asm:59 + pop ax ; 58 ; 0xf9f3a __U4M.asm:60 + rol eax, 010h ; 66 c1 c0 10 ; 0xf9f3b __U4M.asm:61 + popfw ; 9d ; 0xf9f3f __U4M.asm:103 + retn ; c3 ; 0xf9f40 __U4M.asm:104 + times 0xf db 0 + ; disGetNextSymbol 0xf9f50 LB 0xf5 -> off=0x0 cb=0000000000000040 uValue=00000000000f8950 '__U4D' +__U4D: ; 0xf9f50 LB 0x40 + pushfw ; 9c ; 0xf9f50 __U4D.asm:44 + push eax ; 66 50 ; 0xf9f51 __U4D.asm:47 + push edx ; 66 52 ; 0xf9f53 __U4D.asm:48 + push ecx ; 66 51 ; 0xf9f55 __U4D.asm:49 + rol eax, 010h ; 66 c1 c0 10 ; 0xf9f57 __U4D.asm:51 + db 08bh, 0c2h + ; mov ax, dx ; 8b c2 ; 0xf9f5b __U4D.asm:52 + ror eax, 010h ; 66 c1 c8 10 ; 0xf9f5d __U4D.asm:53 + db 066h, 033h, 0d2h + ; xor edx, edx ; 66 33 d2 ; 0xf9f61 __U4D.asm:54 + shr ecx, 010h ; 66 c1 e9 10 ; 0xf9f64 __U4D.asm:56 + db 08bh, 0cbh + ; mov cx, bx ; 8b cb ; 0xf9f68 __U4D.asm:57 + div ecx ; 66 f7 f1 ; 0xf9f6a __U4D.asm:59 + db 08bh, 0dah + ; mov bx, dx ; 8b da ; 0xf9f6d __U4D.asm:61 + pop ecx ; 66 59 ; 0xf9f6f __U4D.asm:62 + shr edx, 010h ; 66 c1 ea 10 ; 0xf9f71 __U4D.asm:63 + db 08bh, 0cah + ; mov cx, dx ; 8b ca ; 0xf9f75 __U4D.asm:64 + pop edx ; 66 5a ; 0xf9f77 __U4D.asm:66 + ror eax, 010h ; 66 c1 c8 10 ; 0xf9f79 __U4D.asm:67 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf9f7d __U4D.asm:68 + add sp, strict byte 00002h ; 83 c4 02 ; 0xf9f7f __U4D.asm:69 + pop ax ; 58 ; 0xf9f82 __U4D.asm:70 + rol eax, 010h ; 66 c1 c0 10 ; 0xf9f83 __U4D.asm:71 + popfw ; 9d ; 0xf9f87 __U4D.asm:129 + retn ; c3 ; 0xf9f88 __U4D.asm:130 + times 0x7 db 0 + ; disGetNextSymbol 0xf9f90 LB 0xb5 -> off=0x0 cb=0000000000000010 uValue=00000000000f8990 '__U8RS' +__U8RS: ; 0xf9f90 LB 0x10 + test si, si ; 85 f6 ; 0xf9f90 __U8RS.asm:40 + je short 09f9fh ; 74 0b ; 0xf9f92 __U8RS.asm:41 + shr ax, 1 ; d1 e8 ; 0xf9f94 __U8RS.asm:43 + rcr bx, 1 ; d1 db ; 0xf9f96 __U8RS.asm:44 + rcr cx, 1 ; d1 d9 ; 0xf9f98 __U8RS.asm:45 + rcr dx, 1 ; d1 da ; 0xf9f9a __U8RS.asm:46 + dec si ; 4e ; 0xf9f9c __U8RS.asm:47 + jne short 09f94h ; 75 f5 ; 0xf9f9d __U8RS.asm:48 + retn ; c3 ; 0xf9f9f __U8RS.asm:50 + ; disGetNextSymbol 0xf9fa0 LB 0xa5 -> off=0x0 cb=0000000000000010 uValue=00000000000f89a0 '__U8LS' +__U8LS: ; 0xf9fa0 LB 0x10 + test si, si ; 85 f6 ; 0xf9fa0 __U8LS.asm:40 + je short 09fafh ; 74 0b ; 0xf9fa2 __U8LS.asm:41 + sal dx, 1 ; d1 e2 ; 0xf9fa4 __U8LS.asm:43 + rcl cx, 1 ; d1 d1 ; 0xf9fa6 __U8LS.asm:44 + rcl bx, 1 ; d1 d3 ; 0xf9fa8 __U8LS.asm:45 + rcl ax, 1 ; d1 d0 ; 0xf9faa __U8LS.asm:46 + dec si ; 4e ; 0xf9fac __U8LS.asm:47 + jne short 09fa4h ; 75 f5 ; 0xf9fad __U8LS.asm:48 + retn ; c3 ; 0xf9faf __U8LS.asm:50 + ; disGetNextSymbol 0xf9fb0 LB 0x95 -> off=0x0 cb=0000000000000010 uValue=00000000000f89b0 '_fmemset_' +_fmemset_: ; 0xf9fb0 LB 0x10 + push di ; 57 ; 0xf9fb0 fmemset.asm:42 + mov es, dx ; 8e c2 ; 0xf9fb1 fmemset.asm:44 + db 08bh, 0f8h + ; mov di, ax ; 8b f8 ; 0xf9fb3 fmemset.asm:45 + xchg al, bl ; 86 d8 ; 0xf9fb5 fmemset.asm:46 + rep stosb ; f3 aa ; 0xf9fb7 fmemset.asm:47 + xchg al, bl ; 86 d8 ; 0xf9fb9 fmemset.asm:48 + pop di ; 5f ; 0xf9fbb fmemset.asm:50 + retn ; c3 ; 0xf9fbc fmemset.asm:51 + times 0x3 db 0 + ; disGetNextSymbol 0xf9fc0 LB 0x85 -> off=0x0 cb=000000000000003a uValue=00000000000f89c0 '_fmemcpy_' +_fmemcpy_: ; 0xf9fc0 LB 0x3a + push bp ; 55 ; 0xf9fc0 fmemcpy.asm:42 + db 08bh, 0ech + ; mov bp, sp ; 8b ec ; 0xf9fc1 fmemcpy.asm:43 + push di ; 57 ; 0xf9fc3 fmemcpy.asm:44 + push DS ; 1e ; 0xf9fc4 fmemcpy.asm:45 + push si ; 56 ; 0xf9fc5 fmemcpy.asm:46 + mov es, dx ; 8e c2 ; 0xf9fc6 fmemcpy.asm:48 + db 08bh, 0f8h + ; mov di, ax ; 8b f8 ; 0xf9fc8 fmemcpy.asm:49 + mov ds, cx ; 8e d9 ; 0xf9fca fmemcpy.asm:50 + db 08bh, 0f3h + ; mov si, bx ; 8b f3 ; 0xf9fcc fmemcpy.asm:51 + mov cx, word [bp+004h] ; 8b 4e 04 ; 0xf9fce fmemcpy.asm:52 + rep movsb ; f3 a4 ; 0xf9fd1 fmemcpy.asm:53 + pop si ; 5e ; 0xf9fd3 fmemcpy.asm:55 + pop DS ; 1f ; 0xf9fd4 fmemcpy.asm:56 + pop di ; 5f ; 0xf9fd5 fmemcpy.asm:57 + db 08bh, 0e5h + ; mov sp, bp ; 8b e5 ; 0xf9fd6 fmemcpy.asm:58 + pop bp ; 5d ; 0xf9fd8 fmemcpy.asm:59 + retn ; c3 ; 0xf9fd9 fmemcpy.asm:60 + add byte [bx+si], al ; 00 00 ; 0xf9fda + add byte [bx+si], al ; 00 00 ; 0xf9fdc + add byte [bx+si], al ; 00 00 ; 0xf9fde + adc byte [bx+si-05feeh], ah ; 10 a0 12 a0 ; 0xf9fe0 + push SS ; 16 ; 0xf9fe4 + mov AL, byte [0a016h] ; a0 16 a0 ; 0xf9fe5 + push SS ; 16 ; 0xf9fe8 + mov AL, byte [0a018h] ; a0 18 a0 ; 0xf9fe9 + sbb byte [bx+si-05fe6h], ah ; 18 a0 1a a0 ; 0xf9fec + push DS ; 1e ; 0xf9ff0 + mov AL, byte [0a01eh] ; a0 1e a0 ; 0xf9ff1 + and byte [bx+si-05fdbh], ah ; 20 a0 25 a0 ; 0xf9ff4 + daa ; 27 ; 0xf9ff8 + db 0a0h + ; disGetNextSymbol 0xf9ffa LB 0x4b -> off=0x0 cb=000000000000003a uValue=00000000000089fa 'apm_worker' +apm_worker: ; 0xf9ffa LB 0x3a + sti ; fb ; 0xf9ffa apm_pm.asm:56 + push ax ; 50 ; 0xf9ffb apm_pm.asm:58 + db 032h, 0e4h + ; xor ah, ah ; 32 e4 ; 0xf9ffc apm_pm.asm:59 + sub AL, strict byte 004h ; 2c 04 ; 0xf9ffe apm_pm.asm:60 + db 08bh, 0e8h + ; mov bp, ax ; 8b e8 ; 0xfa000 apm_pm.asm:61 + sal bp, 1 ; d1 e5 ; 0xfa002 apm_pm.asm:62 + cmp AL, strict byte 00dh ; 3c 0d ; 0xfa004 apm_pm.asm:63 + pop ax ; 58 ; 0xfa006 apm_pm.asm:64 + mov AH, strict byte 053h ; b4 53 ; 0xfa007 apm_pm.asm:65 + jnc short 0a030h ; 73 25 ; 0xfa009 apm_pm.asm:66 + jmp word [cs:bp-06020h] ; 2e ff a6 e0 9f ; 0xfa00b apm_pm.asm:68 + jmp short 0a02eh ; eb 1c ; 0xfa010 apm_pm.asm:71 + sti ; fb ; 0xfa012 apm_pm.asm:74 + hlt ; f4 ; 0xfa013 apm_pm.asm:75 + jmp short 0a02eh ; eb 18 ; 0xfa014 apm_pm.asm:76 + jmp short 0a02eh ; eb 16 ; 0xfa016 apm_pm.asm:85 + jmp short 0a030h ; eb 16 ; 0xfa018 apm_pm.asm:91 + mov AH, strict byte 080h ; b4 80 ; 0xfa01a apm_pm.asm:94 + jmp short 0a032h ; eb 14 ; 0xfa01c apm_pm.asm:95 + jmp short 0a030h ; eb 10 ; 0xfa01e apm_pm.asm:100 + mov ax, 00102h ; b8 02 01 ; 0xfa020 apm_pm.asm:103 + jmp short 0a02eh ; eb 09 ; 0xfa023 apm_pm.asm:104 + jmp short 0a02eh ; eb 07 ; 0xfa025 apm_pm.asm:108 + mov BL, strict byte 000h ; b3 00 ; 0xfa027 apm_pm.asm:111 + mov cx, strict word 00000h ; b9 00 00 ; 0xfa029 apm_pm.asm:112 + jmp short 0a02eh ; eb 00 ; 0xfa02c apm_pm.asm:113 + clc ; f8 ; 0xfa02e apm_pm.asm:116 + retn ; c3 ; 0xfa02f apm_pm.asm:117 + mov AH, strict byte 009h ; b4 09 ; 0xfa030 apm_pm.asm:120 + stc ; f9 ; 0xfa032 apm_pm.asm:123 + retn ; c3 ; 0xfa033 apm_pm.asm:124 + ; disGetNextSymbol 0xfa034 LB 0x11 -> off=0x0 cb=0000000000000011 uValue=00000000000f8a34 'apm_pm16_entry' +apm_pm16_entry: ; 0xfa034 LB 0x11 + mov AH, strict byte 002h ; b4 02 ; 0xfa034 apm_pm.asm:136 + push DS ; 1e ; 0xfa036 apm_pm.asm:142 + push bp ; 55 ; 0xfa037 apm_pm.asm:143 + push CS ; 0e ; 0xfa038 apm_pm.asm:145 + pop bp ; 5d ; 0xfa039 apm_pm.asm:146 + add bp, strict byte 00008h ; 83 c5 08 ; 0xfa03a apm_pm.asm:147 + mov ds, bp ; 8e dd ; 0xfa03d apm_pm.asm:148 + call 09ffah ; e8 b8 ff ; 0xfa03f apm_pm.asm:150 + pop bp ; 5d ; 0xfa042 apm_pm.asm:152 + pop DS ; 1f ; 0xfa043 apm_pm.asm:153 + retf ; cb ; 0xfa044 apm_pm.asm:155 + + ; Padding 0x39bb bytes at 0xfa045 + times 14779 db 0 + +section BIOS32 progbits vstart=0xda00 align=1 ; size=0x3cb class=CODE group=AUTO + ; disGetNextSymbol 0xfda00 LB 0x3cb -> off=0x0 cb=0000000000000026 uValue=00000000000f0000 'bios32_service' +bios32_service: ; 0xfda00 LB 0x26 + pushfw ; 9c ; 0xfda00 pcibio32.asm:52 + cmp bl, 000h ; 80 fb 00 ; 0xfda01 pcibio32.asm:54 + jne short 0da22h ; 75 1c ; 0xfda04 pcibio32.asm:55 + cmp ax, 05024h ; 3d 24 50 ; 0xfda06 pcibio32.asm:57 + inc bx ; 43 ; 0xfda09 + dec cx ; 49 ; 0xfda0a + mov AL, strict byte 080h ; b0 80 ; 0xfda0b pcibio32.asm:58 + jne short 0da20h ; 75 11 ; 0xfda0d pcibio32.asm:59 + mov bx, strict word 00000h ; bb 00 00 ; 0xfda0f pcibio32.asm:61 + db 00fh + add byte [bx+di-01000h], bh ; 00 b9 00 f0 ; 0xfda13 + add byte [bx+si], al ; 00 00 ; 0xfda17 + mov dx, 0da26h ; ba 26 da ; 0xfda19 pcibio32.asm:63 + add byte [bx+si], al ; 00 00 ; 0xfda1c + db 032h, 0c0h + ; xor al, al ; 32 c0 ; 0xfda1e pcibio32.asm:64 + popfw ; 9d ; 0xfda20 pcibio32.asm:66 + retf ; cb ; 0xfda21 pcibio32.asm:67 + mov AL, strict byte 081h ; b0 81 ; 0xfda22 pcibio32.asm:70 + jmp short 0da20h ; eb fa ; 0xfda24 pcibio32.asm:71 + ; disGetNextSymbol 0xfda26 LB 0x3a5 -> off=0x0 cb=000000000000001a uValue=00000000000f0026 'pcibios32_entry' +pcibios32_entry: ; 0xfda26 LB 0x1a + pushfw ; 9c ; 0xfda26 pcibio32.asm:80 + cld ; fc ; 0xfda27 pcibio32.asm:81 + push ES ; 06 ; 0xfda28 pcibio32.asm:83 + pushaw ; 60 ; 0xfda29 pcibio32.asm:84 + call 0db78h ; e8 4b 01 ; 0xfda2a pcibio32.asm:85 + add byte [bx+si], al ; 00 00 ; 0xfda2d + popaw ; 61 ; 0xfda2f pcibio32.asm:86 + pop ES ; 07 ; 0xfda30 pcibio32.asm:87 + popfw ; 9d ; 0xfda31 pcibio32.asm:89 + retf ; cb ; 0xfda32 pcibio32.asm:90 + times 0xd db 0 + ; disGetNextSymbol 0xfda40 LB 0x38b -> off=0x0 cb=0000000000000021 uValue=00000000000f0040 'apm_pm32_entry' +apm_pm32_entry: ; 0xfda40 LB 0x21 + push bp ; 55 ; 0xfda40 apm_pm.asm:180 + mov ebp, cs ; 66 8c cd ; 0xfda41 apm_pm.asm:182 + push ebp ; 66 55 ; 0xfda44 apm_pm.asm:183 + mov bp, 0da5fh ; bd 5f da ; 0xfda46 apm_pm.asm:184 + add byte [bx+si], al ; 00 00 ; 0xfda49 + push ebp ; 66 55 ; 0xfda4b apm_pm.asm:185 + push CS ; 0e ; 0xfda4d apm_pm.asm:187 + pop bp ; 5d ; 0xfda4e apm_pm.asm:188 + add bp, strict byte 00008h ; 83 c5 08 ; 0xfda4f apm_pm.asm:189 + push ebp ; 66 55 ; 0xfda52 apm_pm.asm:190 + mov bp, 0a036h ; bd 36 a0 ; 0xfda54 apm_pm.asm:192 + add byte [bx+si], al ; 00 00 ; 0xfda57 + push ebp ; 66 55 ; 0xfda59 apm_pm.asm:193 + mov AH, strict byte 003h ; b4 03 ; 0xfda5b apm_pm.asm:195 + db 066h, 0cbh + ; retf ; 66 cb ; 0xfda5d + pop bp ; 5d ; 0xfda5f apm_pm.asm:202 + retf ; cb ; 0xfda60 apm_pm.asm:203 + ; disGetNextSymbol 0xfda61 LB 0x36a -> off=0x0 cb=0000000000000022 uValue=00000000000f0061 'pci32_select_reg_' +pci32_select_reg_: ; 0xfda61 LB 0x22 + push bp ; 55 ; 0xfda61 pci32.c:188 + mov bp, sp ; 89 e5 ; 0xfda62 + push bx ; 53 ; 0xfda64 + and dl, 0fch ; 80 e2 fc ; 0xfda65 pci32.c:190 + mov bx, dx ; 89 d3 ; 0xfda68 + mov dx, 00cf8h ; ba f8 0c ; 0xfda6a + add byte [bx+si], al ; 00 00 ; 0xfda6d + db 00fh, 0b7h, 0c0h + ; movzx ax, ax ; 0f b7 c0 ; 0xfda6f + sal ax, 008h ; c1 e0 08 ; 0xfda72 + or ax, strict word 00000h ; 0d 00 00 ; 0xfda75 + add byte [bx+si-03c76h], al ; 00 80 8a c3 ; 0xfda78 + out DX, ax ; ef ; 0xfda7c + lea sp, [di-004h] ; 8d 65 fc ; 0xfda7d pci32.c:191 + pop bx ; 5b ; 0xfda80 + pop bp ; 5d ; 0xfda81 + retn ; c3 ; 0xfda82 + ; disGetNextSymbol 0xfda83 LB 0x348 -> off=0x0 cb=00000000000000f7 uValue=00000000000f0083 'pci32_find_device_' +pci32_find_device_: ; 0xfda83 LB 0xf7 + push bp ; 55 ; 0xfda83 pci32.c:221 + mov bp, sp ; 89 e5 ; 0xfda84 + push cx ; 51 ; 0xfda86 + push si ; 56 ; 0xfda87 + push di ; 57 ; 0xfda88 + sub sp, strict byte 00014h ; 83 ec 14 ; 0xfda89 + push ax ; 50 ; 0xfda8c + mov cx, dx ; 89 d1 ; 0xfda8d + mov si, bx ; 89 de ; 0xfda8f + test bx, bx ; 85 db ; 0xfda91 pci32.c:231 + xor bx, bx ; 31 db ; 0xfda93 pci32.c:238 + mov byte [di-010h], 000h ; c6 45 f0 00 ; 0xfda95 pci32.c:239 + test bl, 007h ; f6 c3 07 ; 0xfda99 pci32.c:249 + jne short 0dad4h ; 75 36 ; 0xfda9c + db 00fh, 0b7h, 0c3h + ; movzx ax, bx ; 0f b7 c3 ; 0xfda9e pci32.c:250 + mov dx, strict word 0000eh ; ba 0e 00 ; 0xfdaa1 + add byte [bx+si], al ; 00 00 ; 0xfdaa4 + call 0da5fh ; e8 b6 ff ; 0xfdaa6 + db 0ffh + db 0ffh + mov dx, 00cfeh ; ba fe 0c ; 0xfdaab pci32.c:251 + add byte [bx+si], al ; 00 00 ; 0xfdaae + db 02bh, 0c0h + ; sub ax, ax ; 2b c0 ; 0xfdab0 + in AL, DX ; ec ; 0xfdab2 + mov byte [di-014h], al ; 88 45 ec ; 0xfdab3 + cmp AL, strict byte 0ffh ; 3c ff ; 0xfdab6 pci32.c:252 + jne short 0dac2h ; 75 08 ; 0xfdab8 + add bx, strict byte 00008h ; 83 c3 08 ; 0xfdaba pci32.c:253 + jmp near 0db4ah ; e9 8a 00 ; 0xfdabd pci32.c:254 + add byte [bx+si], al ; 00 00 ; 0xfdac0 + test byte [di-014h], 080h ; f6 45 ec 80 ; 0xfdac2 pci32.c:256 + je short 0dacfh ; 74 07 ; 0xfdac6 + mov di, strict word 00001h ; bf 01 00 ; 0xfdac8 pci32.c:257 + add byte [bx+si], al ; 00 00 ; 0xfdacb + jmp short 0dad4h ; eb 05 ; 0xfdacd pci32.c:258 + mov di, strict word 00008h ; bf 08 00 ; 0xfdacf pci32.c:259 + add byte [bx+si], al ; 00 00 ; 0xfdad2 + mov al, byte [di-014h] ; 8a 45 ec ; 0xfdad4 pci32.c:270 + and AL, strict byte 007h ; 24 07 ; 0xfdad7 + cmp AL, strict byte 001h ; 3c 01 ; 0xfdad9 + jne short 0db03h ; 75 26 ; 0xfdadb + db 00fh, 0b7h, 0c3h + ; movzx ax, bx ; 0f b7 c3 ; 0xfdadd + mov dx, ax ; 89 c2 ; 0xfdae0 + sar dx, 008h ; c1 fa 08 ; 0xfdae2 + test dx, dx ; 85 d2 ; 0xfdae5 + jne short 0db03h ; 75 1a ; 0xfdae7 + mov dx, strict word 0001ah ; ba 1a 00 ; 0xfdae9 pci32.c:272 + add byte [bx+si], al ; 00 00 ; 0xfdaec + call 0da5fh ; e8 6e ff ; 0xfdaee + db 0ffh + db 0ffh + mov dx, 00cfeh ; ba fe 0c ; 0xfdaf3 pci32.c:273 + add byte [bx+si], al ; 00 00 ; 0xfdaf6 + db 02bh, 0c0h + ; sub ax, ax ; 2b c0 ; 0xfdaf8 + in AL, DX ; ec ; 0xfdafa + cmp al, byte [di-010h] ; 3a 45 f0 ; 0xfdafb pci32.c:274 + jbe short 0db03h ; 76 03 ; 0xfdafe + mov byte [di-010h], al ; 88 45 f0 ; 0xfdb00 pci32.c:275 + test si, si ; 85 f6 ; 0xfdb03 pci32.c:279 + je short 0db0eh ; 74 07 ; 0xfdb05 + mov ax, strict word 00008h ; b8 08 00 ; 0xfdb07 + add byte [bx+si], al ; 00 00 ; 0xfdb0a + jmp short 0db10h ; eb 02 ; 0xfdb0c + xor ax, ax ; 31 c0 ; 0xfdb0e + db 00fh, 0b7h, 0d0h + ; movzx dx, ax ; 0f b7 d0 ; 0xfdb10 + db 00fh, 0b7h, 0c3h + ; movzx ax, bx ; 0f b7 c3 ; 0xfdb13 + call 0da5fh ; e8 46 ff ; 0xfdb16 + db 0ffh + db 0ffh + mov dx, 00cfch ; ba fc 0c ; 0xfdb1b pci32.c:280 + add byte [bx+si], al ; 00 00 ; 0xfdb1e + in ax, DX ; ed ; 0xfdb20 + mov word [di-018h], ax ; 89 45 e8 ; 0xfdb21 + mov word [di-020h], strict word 00000h ; c7 45 e0 00 00 ; 0xfdb24 pci32.c:281 + add byte [bx+si], al ; 00 00 ; 0xfdb29 + test si, si ; 85 f6 ; 0xfdb2b pci32.c:284 + je short 0db35h ; 74 06 ; 0xfdb2d + shr ax, 008h ; c1 e8 08 ; 0xfdb2f pci32.c:285 + mov word [di-018h], ax ; 89 45 e8 ; 0xfdb32 + mov ax, word [di-018h] ; 8b 45 e8 ; 0xfdb35 pci32.c:292 + cmp ax, word [di-024h] ; 3b 45 dc ; 0xfdb38 + je short 0db43h ; 74 06 ; 0xfdb3b + cmp word [di-020h], strict byte 00000h ; 83 7d e0 00 ; 0xfdb3d pci32.c:293 + je short 0db4ah ; 74 07 ; 0xfdb41 + dec cx ; 49 ; 0xfdb43 + cmp ecx, strict byte 0ffffffffh ; 66 83 f9 ff ; 0xfdb44 + je short 0db62h ; 74 18 ; 0xfdb48 + add bx, di ; 01 fb ; 0xfdb4a pci32.c:301 + db 00fh, 0b7h, 0c3h + ; movzx ax, bx ; 0f b7 c3 ; 0xfdb4c pci32.c:302 + sar ax, 008h ; c1 f8 08 ; 0xfdb4f + mov word [di-01ch], ax ; 89 45 e4 ; 0xfdb52 + movzx ax, byte [di-010h] ; 0f b6 45 f0 ; 0xfdb55 + cmp ax, word [di-01ch] ; 3b 45 e4 ; 0xfdb59 + jnl near 0da97h ; 0f 8d 37 ff ; 0xfdb5c + db 0ffh + jmp word [bp-07dh] ; ff 66 83 ; 0xfdb61 + stc ; f9 ; 0xfdb64 + push word [di+005h] ; ff 75 05 ; 0xfdb65 + db 00fh, 0b7h, 0c3h + ; movzx ax, bx ; 0f b7 c3 ; 0xfdb68 + jmp short 0db72h ; eb 05 ; 0xfdb6b + mov ax, strict word 0ffffh ; b8 ff ff ; 0xfdb6d + add byte [bx+si], al ; 00 00 ; 0xfdb70 + lea sp, [di-00ch] ; 8d 65 f4 ; 0xfdb72 pci32.c:309 + pop di ; 5f ; 0xfdb75 + pop si ; 5e ; 0xfdb76 + pop cx ; 59 ; 0xfdb77 + pop bp ; 5d ; 0xfdb78 + retn ; c3 ; 0xfdb79 + ; disGetNextSymbol 0xfdb7a LB 0x251 -> off=0x0 cb=0000000000000251 uValue=00000000000f017a '_pci32_function' +_pci32_function: ; 0xfdb7a LB 0x251 + push bp ; 55 ; 0xfdb7a pci32.c:311 + mov bp, sp ; 89 e5 ; 0xfdb7b + push bx ; 53 ; 0xfdb7d + push si ; 56 ; 0xfdb7e + push di ; 57 ; 0xfdb7f + push ax ; 50 ; 0xfdb80 + push ax ; 50 ; 0xfdb81 + and dword [di+024h], strict dword 0658100ffh ; 66 81 65 24 ff 00 81 65 ; 0xfdb82 pci32.c:318 + sub AL, strict byte 0feh ; 2c fe ; 0xfdb8a + inc word [bx+si] ; ff 00 ; 0xfdb8c + add byte [bp+di+02445h], cl ; 00 8b 45 24 ; 0xfdb8e + xor ah, ah ; 30 e4 ; 0xfdb92 + cmp eax, strict dword 029720003h ; 66 3d 03 00 72 29 ; 0xfdb94 + jbe near 0dc37h ; 0f 86 99 00 ; 0xfdb9a + add byte [bx+si], al ; 00 00 ; 0xfdb9e + cmp eax, strict dword 0840f000eh ; 66 3d 0e 00 0f 84 ; 0xfdba0 + test ax, strict word 00001h ; a9 01 00 ; 0xfdba6 + add byte [bp+03dh], ah ; 00 66 3d ; 0xfdba9 + or byte [bx+si], al ; 08 00 ; 0xfdbac + jc near 0ddb1h ; 0f 82 ff 01 ; 0xfdbae + add byte [bx+si], al ; 00 00 ; 0xfdbb2 + cmp eax, strict dword 0860f000dh ; 66 3d 0d 00 0f 86 ; 0xfdbb4 + test AL, strict byte 000h ; a8 00 ; 0xfdbba + add byte [bx+si], al ; 00 00 ; 0xfdbbc + jmp near 0ddb1h ; e9 f0 01 ; 0xfdbbe + add byte [bx+si], al ; 00 00 ; 0xfdbc1 + cmp eax, strict dword 028740002h ; 66 3d 02 00 74 28 ; 0xfdbc3 + cmp eax, strict dword 0850f0001h ; 66 3d 01 00 0f 85 ; 0xfdbc9 + loopne 0dbd2h ; e0 01 ; 0xfdbcf + add byte [bx+si], al ; 00 00 ; 0xfdbd1 + mov dword [di+024h], strict dword 0c7660001h ; 66 c7 45 24 01 00 66 c7 ; 0xfdbd3 pci32.c:323 + inc bp ; 45 ; 0xfdbdb + sbb byte [bx+si], dl ; 18 10 ; 0xfdbdc + add dh, byte [bx+di] ; 02 31 ; 0xfdbde + sal byte [bp-077h], 045h ; c0 66 89 45 ; 0xfdbe0 + and bh, al ; 20 c7 ; 0xfdbe4 + inc bp ; 45 ; 0xfdbe6 + sbb AL, strict byte 050h ; 1c 50 ; 0xfdbe7 + inc bx ; 43 ; 0xfdbe9 + dec cx ; 49 ; 0xfdbea + and cl, ch ; 20 e9 ; 0xfdbeb + rol byte [bx+di], CL ; d2 01 ; 0xfdbed + add byte [bx+si], al ; 00 00 ; 0xfdbef + cmp dword [di+01ch], strict byte 0ffffffffh ; 66 83 7d 1c ff ; 0xfdbf1 pci32.c:333 + jne short 0dc05h ; 75 0d ; 0xfdbf6 + mov ax, word [di+024h] ; 8b 45 24 ; 0xfdbf8 pci32.c:334 + xor ah, ah ; 30 e4 ; 0xfdbfb + or ah, 083h ; 80 cc 83 ; 0xfdbfd + jmp near 0ddb9h ; e9 b6 01 ; 0xfdc00 pci32.c:335 + add byte [bx+si], al ; 00 00 ; 0xfdc03 + xor bx, bx ; 31 db ; 0xfdc05 pci32.c:337 + db 00fh, 0b7h, 055h, 00ch + ; movzx dx, [di+00ch] ; 0f b7 55 0c ; 0xfdc07 + db 00fh, 0b7h, 045h, 020h + ; movzx ax, [di+020h] ; 0f b7 45 20 ; 0xfdc0b + sal ax, 010h ; c1 e0 10 ; 0xfdc0f + db 00fh, 0b7h, 04dh, 01ch + ; movzx cx, [di+01ch] ; 0f b7 4d 1c ; 0xfdc12 + or ax, cx ; 09 c8 ; 0xfdc16 + call 0da81h ; e8 66 fe ; 0xfdc18 + db 0ffh + jmp word [bp+03dh] ; ff 66 3d ; 0xfdc1c + db 0ffh + push word [di+00dh] ; ff 75 0d ; 0xfdc20 + mov ax, word [di+024h] ; 8b 45 24 ; 0xfdc23 pci32.c:339 + xor ah, ah ; 30 e4 ; 0xfdc26 + or ah, 086h ; 80 cc 86 ; 0xfdc28 + jmp near 0ddb9h ; e9 8b 01 ; 0xfdc2b + add byte [bx+si], al ; 00 00 ; 0xfdc2e + mov dword [di+018h], eax ; 66 89 45 18 ; 0xfdc30 pci32.c:340 + jmp near 0ddc1h ; e9 8a 01 ; 0xfdc34 pci32.c:345 + add byte [bx+si], al ; 00 00 ; 0xfdc37 + db 00fh, 0b7h, 055h, 00ch + ; movzx dx, [di+00ch] ; 0f b7 55 0c ; 0xfdc39 pci32.c:347 + mov ax, word [di+020h] ; 8b 45 20 ; 0xfdc3d + mov bx, strict word 00001h ; bb 01 00 ; 0xfdc40 + add byte [bx+si], al ; 00 00 ; 0xfdc43 + call 0da81h ; e8 39 fe ; 0xfdc45 + db 0ffh + jmp word [bp+03dh] ; ff 66 3d ; 0xfdc49 + db 0ffh + push word [di+00dh] ; ff 75 0d ; 0xfdc4d + mov ax, word [di+024h] ; 8b 45 24 ; 0xfdc50 pci32.c:349 + xor ah, ah ; 30 e4 ; 0xfdc53 + or ah, 086h ; 80 cc 86 ; 0xfdc55 + jmp near 0ddb9h ; e9 5e 01 ; 0xfdc58 pci32.c:350 + add byte [bx+si], al ; 00 00 ; 0xfdc5b + mov dword [di+018h], eax ; 66 89 45 18 ; 0xfdc5d pci32.c:352 + jmp near 0ddc1h ; e9 5d 01 ; 0xfdc61 pci32.c:354 + add byte [bx+si], al ; 00 00 ; 0xfdc64 + cmp dword [di+008h], strict dword 00d720100h ; 66 81 7d 08 00 01 72 0d ; 0xfdc66 pci32.c:361 + mov ax, word [di+024h] ; 8b 45 24 ; 0xfdc6e pci32.c:362 + xor ah, ah ; 30 e4 ; 0xfdc71 + or ah, 087h ; 80 cc 87 ; 0xfdc73 + jmp near 0ddb9h ; e9 40 01 ; 0xfdc76 pci32.c:363 + add byte [bx+si], al ; 00 00 ; 0xfdc79 + db 00fh, 0b7h, 055h, 008h + ; movzx dx, [di+008h] ; 0f b7 55 08 ; 0xfdc7b pci32.c:365 + db 00fh, 0b7h, 045h, 018h + ; movzx ax, [di+018h] ; 0f b7 45 18 ; 0xfdc7f + call 0da5fh ; e8 d9 fd ; 0xfdc83 + db 0ffh + dec word [bp+di+02445h] ; ff 8b 45 24 ; 0xfdc87 + xor ah, ah ; 30 e4 ; 0xfdc8b + cmp eax, strict dword 02172000ah ; 66 3d 0a 00 72 21 ; 0xfdc8d + jbe short 0dd04h ; 76 6f ; 0xfdc93 + cmp eax, strict dword 0840f000dh ; 66 3d 0d 00 0f 84 ; 0xfdc95 + test ax, strict word 00000h ; a9 00 00 ; 0xfdc9b + add byte [bp+03dh], ah ; 00 66 3d ; 0xfdc9e + or AL, strict byte 000h ; 0c 00 ; 0xfdca1 + je near 0dd2ah ; 0f 84 83 00 ; 0xfdca3 + add byte [bx+si], al ; 00 00 ; 0xfdca7 + cmp eax, strict dword 06374000bh ; 66 3d 0b 00 74 63 ; 0xfdca9 + jmp near 0ddc1h ; e9 0f 01 ; 0xfdcaf + add byte [bx+si], al ; 00 00 ; 0xfdcb2 + cmp eax, strict dword 02d740009h ; 66 3d 09 00 74 2d ; 0xfdcb4 + cmp eax, strict dword 0850f0008h ; 66 3d 08 00 0f 85 ; 0xfdcba + inc word [bx+si] ; ff 00 ; 0xfdcc0 + add byte [bx+si], al ; 00 00 ; 0xfdcc2 + mov bx, word [di+020h] ; 8b 5d 20 ; 0xfdcc4 pci32.c:368 + xor bl, bl ; 30 db ; 0xfdcc7 + mov ax, word [di+008h] ; 8b 45 08 ; 0xfdcc9 + xor ah, ah ; 30 e4 ; 0xfdccc + and AL, strict byte 003h ; 24 03 ; 0xfdcce + db 00fh, 0b7h, 0d0h + ; movzx dx, ax ; 0f b7 d0 ; 0xfdcd0 + add dx, 00cfch ; 81 c2 fc 0c ; 0xfdcd3 + add byte [bx+si], al ; 00 00 ; 0xfdcd7 + db 02bh, 0c0h + ; sub ax, ax ; 2b c0 ; 0xfdcd9 + in AL, DX ; ec ; 0xfdcdb + or bx, ax ; 09 c3 ; 0xfdcdc + mov dword [di+020h], ebx ; 66 89 5d 20 ; 0xfdcde + jmp near 0ddc1h ; e9 dc 00 ; 0xfdce2 pci32.c:369 + add byte [bx+si], al ; 00 00 ; 0xfdce5 + mov ax, word [di+008h] ; 8b 45 08 ; 0xfdce7 pci32.c:371 + xor ah, ah ; 30 e4 ; 0xfdcea + and AL, strict byte 002h ; 24 02 ; 0xfdcec + db 00fh, 0b7h, 0d0h + ; movzx dx, ax ; 0f b7 d0 ; 0xfdcee + add dx, 00cfch ; 81 c2 fc 0c ; 0xfdcf1 + add byte [bx+si], al ; 00 00 ; 0xfdcf5 + db 02bh, 0c0h + ; sub ax, ax ; 2b c0 ; 0xfdcf7 + in eax, DX ; 66 ed ; 0xfdcf9 + mov dword [di+020h], eax ; 66 89 45 20 ; 0xfdcfb + jmp near 0ddc1h ; e9 bf 00 ; 0xfdcff pci32.c:372 + add byte [bx+si], al ; 00 00 ; 0xfdd02 + mov dx, 00cfch ; ba fc 0c ; 0xfdd04 pci32.c:374 + add byte [bx+si], al ; 00 00 ; 0xfdd07 + in ax, DX ; ed ; 0xfdd09 + mov word [di+020h], ax ; 89 45 20 ; 0xfdd0a + jmp near 0ddc1h ; e9 b1 00 ; 0xfdd0d pci32.c:375 + add byte [bx+si], al ; 00 00 ; 0xfdd10 + mov ax, word [di+020h] ; 8b 45 20 ; 0xfdd12 pci32.c:377 + mov dx, word [di+008h] ; 8b 55 08 ; 0xfdd15 + xor dh, dh ; 30 f6 ; 0xfdd18 + and dl, 003h ; 80 e2 03 ; 0xfdd1a + db 00fh, 0b7h, 0d2h + ; movzx dx, dx ; 0f b7 d2 ; 0xfdd1d + add dx, 00cfch ; 81 c2 fc 0c ; 0xfdd20 + add byte [bx+si], al ; 00 00 ; 0xfdd24 + out DX, AL ; ee ; 0xfdd26 + jmp near 0ddc1h ; e9 97 00 ; 0xfdd27 pci32.c:378 + add byte [bx+si], al ; 00 00 ; 0xfdd2a + db 00fh, 0b7h, 045h, 020h + ; movzx ax, [di+020h] ; 0f b7 45 20 ; 0xfdd2c pci32.c:380 + mov dx, word [di+008h] ; 8b 55 08 ; 0xfdd30 + xor dh, dh ; 30 f6 ; 0xfdd33 + and dl, 002h ; 80 e2 02 ; 0xfdd35 + db 00fh, 0b7h, 0d2h + ; movzx dx, dx ; 0f b7 d2 ; 0xfdd38 + add dx, 00cfch ; 81 c2 fc 0c ; 0xfdd3b + add byte [bx+si], al ; 00 00 ; 0xfdd3f + out DX, eax ; 66 ef ; 0xfdd41 + jmp near 0ddc1h ; e9 7b 00 ; 0xfdd43 pci32.c:381 + add byte [bx+si], al ; 00 00 ; 0xfdd46 + mov ax, word [di+020h] ; 8b 45 20 ; 0xfdd48 pci32.c:383 + mov dx, 00cfch ; ba fc 0c ; 0xfdd4b + add byte [bx+si], al ; 00 00 ; 0xfdd4e + out DX, ax ; ef ; 0xfdd50 + jmp short 0ddc3h ; eb 70 ; 0xfdd51 pci32.c:387 + db 00fh, 0b7h, 045h, 008h + ; movzx ax, [di+008h] ; 0f b7 45 08 ; 0xfdd53 pci32.c:389 + mov es, [di+028h] ; 8e 45 28 ; 0xfdd57 + mov [di-010h], es ; 8c 45 f0 ; 0xfdd5a + mov bx, ax ; 89 c3 ; 0xfdd5d + mov edx, dword [di] ; 66 8b 15 ; 0xfdd5f pci32.c:393 + jo short 0dd57h ; 70 f3 ; 0xfdd62 + add byte [bx+si], al ; 00 00 ; 0xfdd64 + db 066h, 026h, 03bh, 010h + ; cmp edx, dword [es:bx+si] ; 66 26 3b 10 ; 0xfdd66 + jbe short 0dd7eh ; 76 12 ; 0xfdd6a + mov ax, word [di+024h] ; 8b 45 24 ; 0xfdd6c pci32.c:394 + xor ah, ah ; 30 e4 ; 0xfdd6f + or ah, 089h ; 80 cc 89 ; 0xfdd71 + mov dword [di+024h], eax ; 66 89 45 24 ; 0xfdd74 + or word [di+02ch], strict byte 00001h ; 83 4d 2c 01 ; 0xfdd78 pci32.c:395 + jmp short 0dda4h ; eb 26 ; 0xfdd7c pci32.c:396 + db 00fh, 0b7h, 0cah + ; movzx cx, dx ; 0f b7 ca ; 0xfdd7e pci32.c:397 + db 066h, 026h, 08bh, 050h, 006h + ; mov edx, dword [es:bx+si+006h] ; 66 26 8b 50 06 ; 0xfdd81 + mov word [di-014h], dx ; 89 55 ec ; 0xfdd86 + mov di, word [es:bx+si+002h] ; 26 8b 78 02 ; 0xfdd89 + mov dx, ds ; 8c da ; 0xfdd8d + mov si, 0f190h ; be 90 f1 ; 0xfdd8f + add byte [bx+si], al ; 00 00 ; 0xfdd92 + mov es, [di-014h] ; 8e 45 ec ; 0xfdd94 + push DS ; 1e ; 0xfdd97 + db 066h, 08eh, 0dah + ; mov ds, edx ; 66 8e da ; 0xfdd98 + rep movsb ; f3 a4 ; 0xfdd9b + pop DS ; 1f ; 0xfdd9d + mov dword [di+018h], strict dword 0a1660a00h ; 66 c7 45 18 00 0a 66 a1 ; 0xfdd9e pci32.c:399 + jo short 0dd9bh ; 70 f3 ; 0xfdda6 + add byte [bx+si], al ; 00 00 ; 0xfdda8 + mov es, [di-010h] ; 8e 45 f0 ; 0xfddaa + db 066h, 026h, 089h, 003h + ; mov dword [es:bp+di], eax ; 66 26 89 03 ; 0xfddad + jmp short 0ddc3h ; eb 10 ; 0xfddb1 pci32.c:402 + mov ax, word [di+024h] ; 8b 45 24 ; 0xfddb3 pci32.c:405 + xor ah, ah ; 30 e4 ; 0xfddb6 + or ah, 081h ; 80 cc 81 ; 0xfddb8 + mov dword [di+024h], eax ; 66 89 45 24 ; 0xfddbb + or word [di+02ch], strict byte 00001h ; 83 4d 2c 01 ; 0xfddbf pci32.c:406 + lea sp, [di-00ch] ; 8d 65 f4 ; 0xfddc3 pci32.c:408 + pop di ; 5f ; 0xfddc6 + pop si ; 5e ; 0xfddc7 + pop bx ; 5b ; 0xfddc8 + pop bp ; 5d ; 0xfddc9 + retn ; c3 ; 0xfddca + + ; Padding 0x1 bytes at 0xfddcb + times 1 db 0 + +section BIOS32CONST progbits vstart=0xddcc align=1 ; size=0x0 class=FAR_DATA group=BIOS32_GROUP + +section BIOS32CONST2 progbits vstart=0xddcc align=1 ; size=0x0 class=FAR_DATA group=BIOS32_GROUP + +section BIOS32_DATA progbits vstart=0xddcc align=1 ; size=0x0 class=FAR_DATA group=BIOS32_GROUP + + ; Padding 0x234 bytes at 0xfddcc + times 564 db 0 + +section BIOSSEG progbits vstart=0xe000 align=1 ; size=0x2000 class=CODE group=AUTO + ; disGetNextSymbol 0xfe000 LB 0x2000 -> off=0x0 cb=0000000000000030 uValue=00000000000f0000 'biosorg_check_before_or_at_0E02Eh' +biosorg_check_before_or_at_0E02Eh: ; 0xfe000 LB 0x30 + times 0x2e db 0 + db 'XM' + ; disGetNextSymbol 0xfe030 LB 0x1fd0 -> off=0x0 cb=0000000000000004 uValue=00000000000f0030 'eoi_both_pics' +eoi_both_pics: ; 0xfe030 LB 0x4 + mov AL, strict byte 020h ; b0 20 ; 0xfe030 orgs.asm:238 + out strict byte 0a0h, AL ; e6 a0 ; 0xfe032 orgs.asm:239 + ; disGetNextSymbol 0xfe034 LB 0x1fcc -> off=0x0 cb=0000000000000005 uValue=00000000000f0034 'eoi_master_pic' +eoi_master_pic: ; 0xfe034 LB 0x5 + mov AL, strict byte 020h ; b0 20 ; 0xfe034 orgs.asm:241 + out strict byte 020h, AL ; e6 20 ; 0xfe036 orgs.asm:242 + retn ; c3 ; 0xfe038 orgs.asm:243 + ; disGetNextSymbol 0xfe039 LB 0x1fc7 -> off=0x0 cb=000000000000000b uValue=0000000000000039 'set_int_vects' +set_int_vects: ; 0xfe039 LB 0xb + mov word [bx], ax ; 89 07 ; 0xfe039 orgs.asm:250 + mov word [bx+002h], dx ; 89 57 02 ; 0xfe03b orgs.asm:251 + add bx, strict byte 00004h ; 83 c3 04 ; 0xfe03e orgs.asm:252 + loop 0e039h ; e2 f6 ; 0xfe041 orgs.asm:253 + retn ; c3 ; 0xfe043 orgs.asm:254 + ; disGetNextSymbol 0xfe044 LB 0x1fbc -> off=0x0 cb=0000000000000006 uValue=00000000000f0044 'eoi_jmp_post' +eoi_jmp_post: ; 0xfe044 LB 0x6 + in AL, strict byte 060h ; e4 60 ; 0xfe044 orgs.asm:262 + mov AL, strict byte 020h ; b0 20 ; 0xfe046 orgs.asm:263 + out strict byte 020h, AL ; e6 20 ; 0xfe048 orgs.asm:264 + ; disGetNextSymbol 0xfe04a LB 0x1fb6 -> off=0x0 cb=0000000000000009 uValue=00000000000f004a 'no_eoi_jmp_post' +no_eoi_jmp_post: ; 0xfe04a LB 0x9 + mov ax, strict word 00040h ; b8 40 00 ; 0xfe04a orgs.asm:267 + mov ds, ax ; 8e d8 ; 0xfe04d orgs.asm:268 + jmp far [word 00067h] ; ff 2e 67 00 ; 0xfe04f orgs.asm:269 + ; disGetNextSymbol 0xfe053 LB 0x1fad -> off=0x0 cb=0000000000000002 uValue=00000000000f0053 'seg_40_value' +seg_40_value: ; 0xfe053 LB 0x2 + inc ax ; 40 ; 0xfe053 + times 0x1 db 0 + ; disGetNextSymbol 0xfe055 LB 0x1fab -> off=0x0 cb=0000000000000006 uValue=00000000000f0055 'biosorg_check_before_or_at_0E059h' +biosorg_check_before_or_at_0E059h: ; 0xfe055 LB 0x6 + add byte [bx+si], al ; 00 00 ; 0xfe055 + add byte [bx+si], al ; 00 00 ; 0xfe057 + pop ax ; 58 ; 0xfe059 + dec bp ; 4d ; 0xfe05a + ; disGetNextSymbol 0xfe05b LB 0x1fa5 -> off=0x0 cb=000000000000006e uValue=00000000000f005b 'post' +post: ; 0xfe05b LB 0x6e + cli ; fa ; 0xfe05b orgs.asm:278 + smsw ax ; 0f 01 e0 ; 0xfe05c orgs.asm:284 + test ax, strict word 00001h ; a9 01 00 ; 0xfe05f orgs.asm:285 + je short 0e06ah ; 74 06 ; 0xfe062 orgs.asm:286 + mov AL, strict byte 001h ; b0 01 ; 0xfe064 orgs.asm:295 + out strict byte 092h, AL ; e6 92 ; 0xfe066 orgs.asm:296 + jmp short 0e068h ; eb fe ; 0xfe068 orgs.asm:297 + mov AL, strict byte 00fh ; b0 0f ; 0xfe06a orgs.asm:302 + out strict byte 070h, AL ; e6 70 ; 0xfe06c orgs.asm:303 + in AL, strict byte 071h ; e4 71 ; 0xfe06e orgs.asm:304 + xchg ah, al ; 86 c4 ; 0xfe070 orgs.asm:307 + in AL, strict byte 064h ; e4 64 ; 0xfe072 orgs.asm:311 + test AL, strict byte 004h ; a8 04 ; 0xfe074 orgs.asm:312 + je short 0e08bh ; 74 13 ; 0xfe076 orgs.asm:313 + db 08ah, 0c4h + ; mov al, ah ; 8a c4 ; 0xfe078 orgs.asm:316 + db 00ah, 0c0h + ; or al, al ; 0a c0 ; 0xfe07a orgs.asm:317 + jne short 0e08bh ; 75 0d ; 0xfe07c orgs.asm:318 + mov ds, [cs:0e053h] ; 2e 8e 1e 53 e0 ; 0xfe07e orgs.asm:324 + cmp word [word 00072h], 01234h ; 81 3e 72 00 34 12 ; 0xfe083 orgs.asm:325 + jne short 0e064h ; 75 d9 ; 0xfe089 orgs.asm:326 + mov AL, strict byte 00fh ; b0 0f ; 0xfe08b orgs.asm:330 + out strict byte 070h, AL ; e6 70 ; 0xfe08d orgs.asm:331 + mov AL, strict byte 000h ; b0 00 ; 0xfe08f orgs.asm:332 + out strict byte 071h, AL ; e6 71 ; 0xfe091 orgs.asm:333 + db 08ah, 0c4h + ; mov al, ah ; 8a c4 ; 0xfe093 orgs.asm:337 + cmp AL, strict byte 009h ; 3c 09 ; 0xfe095 orgs.asm:338 + je short 0e0abh ; 74 12 ; 0xfe097 orgs.asm:339 + cmp AL, strict byte 00ah ; 3c 0a ; 0xfe099 orgs.asm:340 + je short 0e0abh ; 74 0e ; 0xfe09b orgs.asm:341 + db 032h, 0c0h + ; xor al, al ; 32 c0 ; 0xfe09d orgs.asm:343 + out strict byte 00dh, AL ; e6 0d ; 0xfe09f orgs.asm:346 + out strict byte 0dah, AL ; e6 da ; 0xfe0a1 orgs.asm:347 + mov AL, strict byte 0c0h ; b0 c0 ; 0xfe0a3 orgs.asm:350 + out strict byte 0d6h, AL ; e6 d6 ; 0xfe0a5 orgs.asm:351 + mov AL, strict byte 000h ; b0 00 ; 0xfe0a7 orgs.asm:352 + out strict byte 0d4h, AL ; e6 d4 ; 0xfe0a9 orgs.asm:353 + db 08ah, 0c4h + ; mov al, ah ; 8a c4 ; 0xfe0ab orgs.asm:357 + cmp AL, strict byte 000h ; 3c 00 ; 0xfe0ad orgs.asm:358 + je short 0e0c9h ; 74 18 ; 0xfe0af orgs.asm:359 + cmp AL, strict byte 00dh ; 3c 0d ; 0xfe0b1 orgs.asm:361 + jnc short 0e0c9h ; 73 14 ; 0xfe0b3 orgs.asm:362 + cmp AL, strict byte 009h ; 3c 09 ; 0xfe0b5 orgs.asm:363 + jne short 0e0bch ; 75 03 ; 0xfe0b7 orgs.asm:364 + jmp near 0e363h ; e9 a7 02 ; 0xfe0b9 orgs.asm:365 + mov sp, 00400h ; bc 00 04 ; 0xfe0bc orgs.asm:368 + cmp AL, strict byte 005h ; 3c 05 ; 0xfe0bf orgs.asm:370 + je short 0e044h ; 74 81 ; 0xfe0c1 orgs.asm:371 + cmp AL, strict byte 00ah ; 3c 0a ; 0xfe0c3 orgs.asm:373 + je short 0e04ah ; 74 83 ; 0xfe0c5 orgs.asm:374 + jmp short 0e0c9h ; eb 00 ; 0xfe0c7 orgs.asm:378 + ; disGetNextSymbol 0xfe0c9 LB 0x1f37 -> off=0x0 cb=00000000000001f6 uValue=00000000000f00c9 'normal_post' +normal_post: ; 0xfe0c9 LB 0x1f6 + mov ax, 07800h ; b8 00 78 ; 0xfe0c9 orgs.asm:387 + db 08bh, 0e0h + ; mov sp, ax ; 8b e0 ; 0xfe0cc orgs.asm:388 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xfe0ce orgs.asm:389 + mov ds, ax ; 8e d8 ; 0xfe0d0 orgs.asm:390 + mov ss, ax ; 8e d0 ; 0xfe0d2 orgs.asm:391 + mov es, ax ; 8e c0 ; 0xfe0d4 orgs.asm:395 + db 033h, 0ffh + ; xor di, di ; 33 ff ; 0xfe0d6 orgs.asm:396 + cld ; fc ; 0xfe0d8 orgs.asm:397 + mov cx, 00239h ; b9 39 02 ; 0xfe0d9 orgs.asm:398 + rep stosw ; f3 ab ; 0xfe0dc orgs.asm:399 + inc di ; 47 ; 0xfe0de orgs.asm:400 + inc di ; 47 ; 0xfe0df orgs.asm:401 + mov cx, 005c6h ; b9 c6 05 ; 0xfe0e0 orgs.asm:402 + rep stosw ; f3 ab ; 0xfe0e3 orgs.asm:403 + db 033h, 0dbh + ; xor bx, bx ; 33 db ; 0xfe0e5 orgs.asm:407 + add bx, 01000h ; 81 c3 00 10 ; 0xfe0e7 orgs.asm:409 + cmp bx, 09000h ; 81 fb 00 90 ; 0xfe0eb orgs.asm:410 + jnc short 0e0fch ; 73 0b ; 0xfe0ef orgs.asm:411 + mov es, bx ; 8e c3 ; 0xfe0f1 orgs.asm:412 + db 033h, 0ffh + ; xor di, di ; 33 ff ; 0xfe0f3 orgs.asm:413 + mov cx, 08000h ; b9 00 80 ; 0xfe0f5 orgs.asm:414 + rep stosw ; f3 ab ; 0xfe0f8 orgs.asm:415 + jmp short 0e0e7h ; eb eb ; 0xfe0fa orgs.asm:416 + mov es, bx ; 8e c3 ; 0xfe0fc orgs.asm:418 + db 033h, 0ffh + ; xor di, di ; 33 ff ; 0xfe0fe orgs.asm:419 + mov cx, 07ff8h ; b9 f8 7f ; 0xfe100 orgs.asm:420 + rep stosw ; f3 ab ; 0xfe103 orgs.asm:421 + db 033h, 0dbh + ; xor bx, bx ; 33 db ; 0xfe105 orgs.asm:422 + push CS ; 0e ; 0xfe107 orgs.asm:104 + pop DS ; 1f ; 0xfe108 orgs.asm:105 + cld ; fc ; 0xfe109 orgs.asm:106 + call 01820h ; e8 13 37 ; 0xfe10a orgs.asm:426 + call 0e8e7h ; e8 d7 07 ; 0xfe10d orgs.asm:429 + db 033h, 0dbh + ; xor bx, bx ; 33 db ; 0xfe110 orgs.asm:433 + mov ds, bx ; 8e db ; 0xfe112 orgs.asm:434 + mov cx, strict word 00060h ; b9 60 00 ; 0xfe114 orgs.asm:435 + mov ax, 0ff53h ; b8 53 ff ; 0xfe117 orgs.asm:436 + mov dx, 0f000h ; ba 00 f0 ; 0xfe11a orgs.asm:437 + call 0e039h ; e8 19 ff ; 0xfe11d orgs.asm:438 + mov bx, 001a0h ; bb a0 01 ; 0xfe120 orgs.asm:443 + mov cx, strict word 00010h ; b9 10 00 ; 0xfe123 orgs.asm:444 + call 0e039h ; e8 10 ff ; 0xfe126 orgs.asm:445 + mov ax, 0027fh ; b8 7f 02 ; 0xfe129 orgs.asm:448 + mov word [00413h], ax ; a3 13 04 ; 0xfe12c orgs.asm:449 + mov ax, 0e9cch ; b8 cc e9 ; 0xfe12f orgs.asm:95 + mov word [00018h], ax ; a3 18 00 ; 0xfe132 orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe135 orgs.asm:97 + mov word [0001ah], ax ; a3 1a 00 ; 0xfe138 orgs.asm:98 + mov ax, 0f84dh ; b8 4d f8 ; 0xfe13b orgs.asm:95 + mov word [00044h], ax ; a3 44 00 ; 0xfe13e orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe141 orgs.asm:97 + mov word [00046h], ax ; a3 46 00 ; 0xfe144 orgs.asm:98 + mov ax, 0f841h ; b8 41 f8 ; 0xfe147 orgs.asm:95 + mov word [00048h], ax ; a3 48 00 ; 0xfe14a orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe14d orgs.asm:97 + mov word [0004ah], ax ; a3 4a 00 ; 0xfe150 orgs.asm:98 + mov ax, 0f859h ; b8 59 f8 ; 0xfe153 orgs.asm:95 + mov word [00054h], ax ; a3 54 00 ; 0xfe156 orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe159 orgs.asm:97 + mov word [00056h], ax ; a3 56 00 ; 0xfe15c orgs.asm:98 + mov ax, 0efd4h ; b8 d4 ef ; 0xfe15f orgs.asm:95 + mov word [0005ch], ax ; a3 5c 00 ; 0xfe162 orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe165 orgs.asm:97 + mov word [0005eh], ax ; a3 5e 00 ; 0xfe168 orgs.asm:98 + mov ax, 0f0a4h ; b8 a4 f0 ; 0xfe16b orgs.asm:95 + mov word [00060h], ax ; a3 60 00 ; 0xfe16e orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe171 orgs.asm:97 + mov word [00062h], ax ; a3 62 00 ; 0xfe174 orgs.asm:98 + mov ax, 0e6f2h ; b8 f2 e6 ; 0xfe177 orgs.asm:95 + mov word [00064h], ax ; a3 64 00 ; 0xfe17a orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe17d orgs.asm:97 + mov word [00066h], ax ; a3 66 00 ; 0xfe180 orgs.asm:98 + mov ax, 0efedh ; b8 ed ef ; 0xfe183 orgs.asm:95 + mov word [00070h], ax ; a3 70 00 ; 0xfe186 orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe189 orgs.asm:97 + mov word [00072h], ax ; a3 72 00 ; 0xfe18c orgs.asm:98 + call 0e778h ; e8 e6 05 ; 0xfe18f orgs.asm:465 + call 0f13bh ; e8 a6 0f ; 0xfe192 orgs.asm:469 + call 0f166h ; e8 ce 0f ; 0xfe195 orgs.asm:470 + mov ax, 0fe6eh ; b8 6e fe ; 0xfe198 orgs.asm:95 + mov word [00068h], ax ; a3 68 00 ; 0xfe19b orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe19e orgs.asm:97 + mov word [0006ah], ax ; a3 6a 00 ; 0xfe1a1 orgs.asm:98 + mov ax, 0fea5h ; b8 a5 fe ; 0xfe1a4 orgs.asm:95 + mov word [00020h], ax ; a3 20 00 ; 0xfe1a7 orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe1aa orgs.asm:97 + mov word [00022h], ax ; a3 22 00 ; 0xfe1ad orgs.asm:98 + mov AL, strict byte 034h ; b0 34 ; 0xfe1b0 orgs.asm:476 + out strict byte 043h, AL ; e6 43 ; 0xfe1b2 orgs.asm:477 + mov AL, strict byte 000h ; b0 00 ; 0xfe1b4 orgs.asm:478 + out strict byte 040h, AL ; e6 40 ; 0xfe1b6 orgs.asm:479 + out strict byte 040h, AL ; e6 40 ; 0xfe1b8 orgs.asm:480 + mov ax, 0f065h ; b8 65 f0 ; 0xfe1ba orgs.asm:95 + mov word [00040h], ax ; a3 40 00 ; 0xfe1bd orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe1c0 orgs.asm:97 + mov word [00042h], ax ; a3 42 00 ; 0xfe1c3 orgs.asm:98 + mov ax, 0e987h ; b8 87 e9 ; 0xfe1c6 orgs.asm:95 + mov word [00024h], ax ; a3 24 00 ; 0xfe1c9 orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe1cc orgs.asm:97 + mov word [00026h], ax ; a3 26 00 ; 0xfe1cf orgs.asm:98 + mov ax, 0e82eh ; b8 2e e8 ; 0xfe1d2 orgs.asm:95 + mov word [00058h], ax ; a3 58 00 ; 0xfe1d5 orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe1d8 orgs.asm:97 + mov word [0005ah], ax ; a3 5a 00 ; 0xfe1db orgs.asm:98 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xfe1de orgs.asm:489 + mov ds, ax ; 8e d8 ; 0xfe1e0 orgs.asm:490 + mov byte [00417h], AL ; a2 17 04 ; 0xfe1e2 orgs.asm:492 + mov byte [00418h], AL ; a2 18 04 ; 0xfe1e5 orgs.asm:493 + mov byte [00419h], AL ; a2 19 04 ; 0xfe1e8 orgs.asm:494 + mov byte [00471h], AL ; a2 71 04 ; 0xfe1eb orgs.asm:495 + mov byte [00497h], AL ; a2 97 04 ; 0xfe1ee orgs.asm:496 + mov AL, strict byte 010h ; b0 10 ; 0xfe1f1 orgs.asm:497 + mov byte [00496h], AL ; a2 96 04 ; 0xfe1f3 orgs.asm:498 + mov bx, strict word 0001eh ; bb 1e 00 ; 0xfe1f6 orgs.asm:500 + mov word [0041ah], bx ; 89 1e 1a 04 ; 0xfe1f9 orgs.asm:501 + mov word [0041ch], bx ; 89 1e 1c 04 ; 0xfe1fd orgs.asm:502 + mov word [00480h], bx ; 89 1e 80 04 ; 0xfe201 orgs.asm:503 + mov bx, strict word 0003eh ; bb 3e 00 ; 0xfe205 orgs.asm:504 + mov word [00482h], bx ; 89 1e 82 04 ; 0xfe208 orgs.asm:505 + mov AL, strict byte 014h ; b0 14 ; 0xfe20c orgs.asm:508 + out strict byte 070h, AL ; e6 70 ; 0xfe20e orgs.asm:509 + in AL, strict byte 071h ; e4 71 ; 0xfe210 orgs.asm:510 + mov byte [00410h], AL ; a2 10 04 ; 0xfe212 orgs.asm:511 + push DS ; 1e ; 0xfe215 orgs.asm:513 + push CS ; 0e ; 0xfe216 orgs.asm:104 + pop DS ; 1f ; 0xfe217 orgs.asm:105 + cld ; fc ; 0xfe218 orgs.asm:106 + mov ax, 0c000h ; b8 00 c0 ; 0xfe219 orgs.asm:518 + mov dx, 0c800h ; ba 00 c8 ; 0xfe21c orgs.asm:519 + call 01600h ; e8 de 33 ; 0xfe21f orgs.asm:520 + call 04f68h ; e8 43 6d ; 0xfe222 orgs.asm:523 + pop DS ; 1f ; 0xfe225 orgs.asm:524 + mov ax, 0ff53h ; b8 53 ff ; 0xfe226 orgs.asm:95 + mov word [0003ch], ax ; a3 3c 00 ; 0xfe229 orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe22c orgs.asm:97 + mov word [0003eh], ax ; a3 3e 00 ; 0xfe22f orgs.asm:98 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xfe232 orgs.asm:528 + mov ds, ax ; 8e d8 ; 0xfe234 orgs.asm:529 + db 033h, 0dbh + ; xor bx, bx ; 33 db ; 0xfe236 orgs.asm:530 + mov CL, strict byte 014h ; b1 14 ; 0xfe238 orgs.asm:531 + mov dx, 00378h ; ba 78 03 ; 0xfe23a orgs.asm:532 + call 0ecedh ; e8 ad 0a ; 0xfe23d orgs.asm:533 + mov dx, 00278h ; ba 78 02 ; 0xfe240 orgs.asm:534 + call 0ecedh ; e8 a7 0a ; 0xfe243 orgs.asm:535 + sal bx, 00eh ; c1 e3 0e ; 0xfe246 orgs.asm:200 + mov ax, word [00410h] ; a1 10 04 ; 0xfe249 orgs.asm:537 + and ax, 03fffh ; 25 ff 3f ; 0xfe24c orgs.asm:538 + db 00bh, 0c3h + ; or ax, bx ; 0b c3 ; 0xfe24f orgs.asm:539 + mov word [00410h], ax ; a3 10 04 ; 0xfe251 orgs.asm:540 + mov ax, 0e746h ; b8 46 e7 ; 0xfe254 orgs.asm:95 + mov word [0002ch], ax ; a3 2c 00 ; 0xfe257 orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe25a orgs.asm:97 + mov word [0002eh], ax ; a3 2e 00 ; 0xfe25d orgs.asm:98 + mov ax, 0e746h ; b8 46 e7 ; 0xfe260 orgs.asm:95 + mov word [00030h], ax ; a3 30 00 ; 0xfe263 orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe266 orgs.asm:97 + mov word [00032h], ax ; a3 32 00 ; 0xfe269 orgs.asm:98 + mov ax, 0e739h ; b8 39 e7 ; 0xfe26c orgs.asm:95 + mov word [00050h], ax ; a3 50 00 ; 0xfe26f orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe272 orgs.asm:97 + mov word [00052h], ax ; a3 52 00 ; 0xfe275 orgs.asm:98 + db 033h, 0dbh + ; xor bx, bx ; 33 db ; 0xfe278 orgs.asm:546 + mov CL, strict byte 00ah ; b1 0a ; 0xfe27a orgs.asm:547 + mov dx, 003f8h ; ba f8 03 ; 0xfe27c orgs.asm:548 + call 0ed0bh ; e8 89 0a ; 0xfe27f orgs.asm:549 + mov dx, 002f8h ; ba f8 02 ; 0xfe282 orgs.asm:550 + call 0ed0bh ; e8 83 0a ; 0xfe285 orgs.asm:551 + mov dx, 003e8h ; ba e8 03 ; 0xfe288 orgs.asm:552 + call 0ed0bh ; e8 7d 0a ; 0xfe28b orgs.asm:553 + mov dx, 002e8h ; ba e8 02 ; 0xfe28e orgs.asm:554 + call 0ed0bh ; e8 77 0a ; 0xfe291 orgs.asm:555 + sal bx, 009h ; c1 e3 09 ; 0xfe294 orgs.asm:200 + mov ax, word [00410h] ; a1 10 04 ; 0xfe297 orgs.asm:557 + and ax, 0f1ffh ; 25 ff f1 ; 0xfe29a orgs.asm:558 + db 00bh, 0c3h + ; or ax, bx ; 0b c3 ; 0xfe29d orgs.asm:559 + mov word [00410h], ax ; a3 10 04 ; 0xfe29f orgs.asm:560 + mov ax, 0ff53h ; b8 53 ff ; 0xfe2a2 orgs.asm:95 + mov word [00128h], ax ; a3 28 01 ; 0xfe2a5 orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe2a8 orgs.asm:97 + mov word [0012ah], ax ; a3 2a 01 ; 0xfe2ab orgs.asm:98 + mov ax, 0f8f9h ; b8 f9 f8 ; 0xfe2ae orgs.asm:95 + mov word [001c0h], ax ; a3 c0 01 ; 0xfe2b1 orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe2b4 orgs.asm:97 + mov word [001c2h], ax ; a3 c2 01 ; 0xfe2b7 orgs.asm:98 + call 0edbfh ; e8 02 0b ; 0xfe2ba orgs.asm:566 + jmp short 0e303h ; eb 44 ; 0xfe2bd orgs.asm:568 + ; disGetNextSymbol 0xfe2bf LB 0x1d41 -> off=0x0 cb=0000000000000004 uValue=00000000000f02bf 'biosorg_check_before_or_at_0E2C1h' +biosorg_check_before_or_at_0E2C1h: ; 0xfe2bf LB 0x4 + add byte [bx+si], al ; 00 00 ; 0xfe2bf + pop ax ; 58 ; 0xfe2c1 + dec bp ; 4d ; 0xfe2c2 + ; disGetNextSymbol 0xfe2c3 LB 0x1d3d -> off=0x0 cb=0000000000000007 uValue=00000000000f02c3 'nmi' +nmi: ; 0xfe2c3 LB 0x7 + push CS ; 0e ; 0xfe2c3 orgs.asm:104 + pop DS ; 1f ; 0xfe2c4 orgs.asm:105 + cld ; fc ; 0xfe2c5 orgs.asm:106 + call 017fch ; e8 33 35 ; 0xfe2c6 orgs.asm:577 + iret ; cf ; 0xfe2c9 orgs.asm:578 + ; disGetNextSymbol 0xfe2ca LB 0x1d36 -> off=0x0 cb=0000000000000008 uValue=00000000000f02ca 'int75_handler' +int75_handler: ; 0xfe2ca LB 0x8 + out strict byte 0f0h, AL ; e6 f0 ; 0xfe2ca orgs.asm:581 + call 0e030h ; e8 61 fd ; 0xfe2cc orgs.asm:582 + int 002h ; cd 02 ; 0xfe2cf orgs.asm:583 + iret ; cf ; 0xfe2d1 orgs.asm:584 + ; disGetNextSymbol 0xfe2d2 LB 0x1d2e -> off=0x0 cb=00000000000000ba uValue=00000000000f02d2 'hard_drive_post' +hard_drive_post: ; 0xfe2d2 LB 0xba + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xfe2d2 orgs.asm:589 + mov ds, ax ; 8e d8 ; 0xfe2d4 orgs.asm:590 + mov byte [00474h], AL ; a2 74 04 ; 0xfe2d6 orgs.asm:592 + mov byte [00477h], AL ; a2 77 04 ; 0xfe2d9 orgs.asm:593 + mov byte [0048ch], AL ; a2 8c 04 ; 0xfe2dc orgs.asm:594 + mov byte [0048dh], AL ; a2 8d 04 ; 0xfe2df orgs.asm:595 + mov byte [0048eh], AL ; a2 8e 04 ; 0xfe2e2 orgs.asm:596 + mov AL, strict byte 0c0h ; b0 c0 ; 0xfe2e5 orgs.asm:597 + mov byte [00476h], AL ; a2 76 04 ; 0xfe2e7 orgs.asm:598 + mov ax, 0e3feh ; b8 fe e3 ; 0xfe2ea orgs.asm:95 + mov word [0004ch], ax ; a3 4c 00 ; 0xfe2ed orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe2f0 orgs.asm:97 + mov word [0004eh], ax ; a3 4e 00 ; 0xfe2f3 orgs.asm:98 + mov ax, 0f8e7h ; b8 e7 f8 ; 0xfe2f6 orgs.asm:95 + mov word [001d8h], ax ; a3 d8 01 ; 0xfe2f9 orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe2fc orgs.asm:97 + mov word [001dah], ax ; a3 da 01 ; 0xfe2ff orgs.asm:98 + retn ; c3 ; 0xfe302 orgs.asm:603 + mov ax, 0f8bch ; b8 bc f8 ; 0xfe303 orgs.asm:95 + mov word [001d0h], ax ; a3 d0 01 ; 0xfe306 orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe309 orgs.asm:97 + mov word [001d2h], ax ; a3 d2 01 ; 0xfe30c orgs.asm:98 + mov ax, 0e2cah ; b8 ca e2 ; 0xfe30f orgs.asm:95 + mov word [001d4h], ax ; a3 d4 01 ; 0xfe312 orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe315 orgs.asm:97 + mov word [001d6h], ax ; a3 d6 01 ; 0xfe318 orgs.asm:98 + call 0e753h ; e8 35 04 ; 0xfe31b orgs.asm:615 + push CS ; 0e ; 0xfe31e orgs.asm:104 + pop DS ; 1f ; 0xfe31f orgs.asm:105 + cld ; fc ; 0xfe320 orgs.asm:106 + pushad ; 66 60 ; 0xfe321 orgs.asm:622 + call 01692h ; e8 6c 33 ; 0xfe323 orgs.asm:623 + popad ; 66 61 ; 0xfe326 orgs.asm:624 + call 01d51h ; e8 26 3a ; 0xfe328 orgs.asm:629 + call 021dch ; e8 ae 3e ; 0xfe32b orgs.asm:630 + sti ; fb ; 0xfe32e orgs.asm:637 + call 09819h ; e8 e7 b4 ; 0xfe32f orgs.asm:638 + cli ; fa ; 0xfe332 orgs.asm:639 + call 086cch ; e8 96 a3 ; 0xfe333 orgs.asm:644 + call 0ed2fh ; e8 f6 09 ; 0xfe336 orgs.asm:648 + call 0e2d2h ; e8 96 ff ; 0xfe339 orgs.asm:651 + push CS ; 0e ; 0xfe33c orgs.asm:104 + pop DS ; 1f ; 0xfe33d orgs.asm:105 + cld ; fc ; 0xfe33e orgs.asm:106 + mov ax, 0c800h ; b8 00 c8 ; 0xfe33f orgs.asm:655 + mov dx, 0f000h ; ba 00 f0 ; 0xfe342 orgs.asm:656 + call 01600h ; e8 b8 32 ; 0xfe345 orgs.asm:657 + db 066h, 033h, 0c0h + ; xor eax, eax ; 66 33 c0 ; 0xfe348 orgs.asm:664 + db 066h, 033h, 0dbh + ; xor ebx, ebx ; 66 33 db ; 0xfe34b orgs.asm:665 + db 066h, 033h, 0c9h + ; xor ecx, ecx ; 66 33 c9 ; 0xfe34e orgs.asm:666 + db 066h, 033h, 0d2h + ; xor edx, edx ; 66 33 d2 ; 0xfe351 orgs.asm:667 + call 01840h ; e8 e9 34 ; 0xfe354 orgs.asm:671 + call 03c84h ; e8 2a 59 ; 0xfe357 orgs.asm:674 + sti ; fb ; 0xfe35a orgs.asm:677 + int 019h ; cd 19 ; 0xfe35b orgs.asm:678 + sti ; fb ; 0xfe35d orgs.asm:680 + hlt ; f4 ; 0xfe35e orgs.asm:682 + jmp short 0e35eh ; eb fd ; 0xfe35f orgs.asm:683 + cli ; fa ; 0xfe361 orgs.asm:684 + hlt ; f4 ; 0xfe362 orgs.asm:685 + mov ax, strict word 00040h ; b8 40 00 ; 0xfe363 orgs.asm:694 + mov ds, ax ; 8e d8 ; 0xfe366 orgs.asm:695 + mov ss, [word 00069h] ; 8e 16 69 00 ; 0xfe368 orgs.asm:697 + mov sp, word [word 00067h] ; 8b 26 67 00 ; 0xfe36c orgs.asm:698 + in AL, strict byte 092h ; e4 92 ; 0xfe370 orgs.asm:700 + and AL, strict byte 0fdh ; 24 fd ; 0xfe372 orgs.asm:701 + out strict byte 092h, AL ; e6 92 ; 0xfe374 orgs.asm:702 + lidt [cs:0efe7h] ; 2e 0f 01 1e e7 ef ; 0xfe376 orgs.asm:704 + pop DS ; 1f ; 0xfe37c orgs.asm:706 + pop ES ; 07 ; 0xfe37d orgs.asm:707 + db 08bh, 0ech + ; mov bp, sp ; 8b ec ; 0xfe37e orgs.asm:709 + in AL, strict byte 080h ; e4 80 ; 0xfe380 orgs.asm:711 + mov byte [bp+00fh], al ; 88 46 0f ; 0xfe382 orgs.asm:712 + db 03ah, 0e0h + ; cmp ah, al ; 3a e0 ; 0xfe385 orgs.asm:714 + popaw ; 61 ; 0xfe387 orgs.asm:716 + sti ; fb ; 0xfe388 orgs.asm:717 + retf 00002h ; ca 02 00 ; 0xfe389 orgs.asm:718 + ; disGetNextSymbol 0xfe38c LB 0x1c74 -> off=0x0 cb=0000000000000072 uValue=00000000000f038c 'biosorg_check_before_or_at_0E3FCh' +biosorg_check_before_or_at_0E3FCh: ; 0xfe38c LB 0x72 + times 0x70 db 0 + db 'XM' + ; disGetNextSymbol 0xfe3fe LB 0x1c02 -> off=0x0 cb=0000000000000003 uValue=00000000000f03fe 'int13_handler' +int13_handler: ; 0xfe3fe LB 0x3 + jmp near 0ec5bh ; e9 5a 08 ; 0xfe3fe orgs.asm:728 + ; disGetNextSymbol 0xfe401 LB 0x1bff -> off=0x0 cb=00000000000002f1 uValue=00000000000f0401 'rom_fdpt' +rom_fdpt: ; 0xfe401 LB 0x2f1 + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 058h + db 04dh + ; disGetNextSymbol 0xfe6f2 LB 0x190e -> off=0x0 cb=0000000000000003 uValue=00000000000f06f2 'int19_handler' +int19_handler: ; 0xfe6f2 LB 0x3 + jmp near 0f0ach ; e9 b7 09 ; 0xfe6f2 orgs.asm:744 + ; disGetNextSymbol 0xfe6f5 LB 0x190b -> off=0x0 cb=000000000000000a uValue=00000000000f06f5 'biosorg_check_at_0E6F5h' +biosorg_check_at_0E6F5h: ; 0xfe6f5 LB 0xa + or word [bx+si], ax ; 09 00 ; 0xfe6f5 + cld ; fc ; 0xfe6f7 + add byte [bx+di], al ; 00 01 ; 0xfe6f8 + je short 0e73ch ; 74 40 ; 0xfe6fa + times 0x3 db 0 + ; disGetNextSymbol 0xfe6ff LB 0x1901 -> off=0x0 cb=000000000000002a uValue=00000000000f06ff 'biosorg_check_before_or_at_0E727h' +biosorg_check_before_or_at_0E727h: ; 0xfe6ff LB 0x2a + times 0x28 db 0 + db 'XM' + ; disGetNextSymbol 0xfe729 LB 0x18d7 -> off=0x0 cb=0000000000000010 uValue=00000000000f0729 'biosorg_check_at_0E729h' +biosorg_check_at_0E729h: ; 0xfe729 LB 0x10 + times 0xe db 0 + db 'XM' + ; disGetNextSymbol 0xfe739 LB 0x18c7 -> off=0x0 cb=000000000000001a uValue=00000000000f0739 'biosorg_check_at_0E739h' +biosorg_check_at_0E739h: ; 0xfe739 LB 0x1a + push DS ; 1e ; 0xfe739 orgs.asm:817 + push ES ; 06 ; 0xfe73a orgs.asm:818 + pushaw ; 60 ; 0xfe73b orgs.asm:97 + push CS ; 0e ; 0xfe73c orgs.asm:104 + pop DS ; 1f ; 0xfe73d orgs.asm:105 + cld ; fc ; 0xfe73e orgs.asm:106 + call 06457h ; e8 15 7d ; 0xfe73f orgs.asm:821 + popaw ; 61 ; 0xfe742 orgs.asm:114 + pop ES ; 07 ; 0xfe743 orgs.asm:823 + pop DS ; 1f ; 0xfe744 orgs.asm:824 + iret ; cf ; 0xfe745 orgs.asm:825 + push DS ; 1e ; 0xfe746 orgs.asm:833 + push ES ; 06 ; 0xfe747 orgs.asm:834 + pushaw ; 60 ; 0xfe748 orgs.asm:97 + push CS ; 0e ; 0xfe749 orgs.asm:104 + pop DS ; 1f ; 0xfe74a orgs.asm:105 + cld ; fc ; 0xfe74b orgs.asm:106 + call 01792h ; e8 43 30 ; 0xfe74c orgs.asm:837 + popaw ; 61 ; 0xfe74f orgs.asm:114 + pop ES ; 07 ; 0xfe750 orgs.asm:839 + pop DS ; 1f ; 0xfe751 orgs.asm:840 + iret ; cf ; 0xfe752 orgs.asm:841 + ; disGetNextSymbol 0xfe753 LB 0x18ad -> off=0x0 cb=0000000000000025 uValue=00000000000f0753 'init_pic' +init_pic: ; 0xfe753 LB 0x25 + mov AL, strict byte 011h ; b0 11 ; 0xfe753 orgs.asm:846 + out strict byte 020h, AL ; e6 20 ; 0xfe755 orgs.asm:847 + out strict byte 0a0h, AL ; e6 a0 ; 0xfe757 orgs.asm:848 + mov AL, strict byte 008h ; b0 08 ; 0xfe759 orgs.asm:849 + out strict byte 021h, AL ; e6 21 ; 0xfe75b orgs.asm:850 + mov AL, strict byte 070h ; b0 70 ; 0xfe75d orgs.asm:851 + out strict byte 0a1h, AL ; e6 a1 ; 0xfe75f orgs.asm:852 + mov AL, strict byte 004h ; b0 04 ; 0xfe761 orgs.asm:853 + out strict byte 021h, AL ; e6 21 ; 0xfe763 orgs.asm:854 + mov AL, strict byte 002h ; b0 02 ; 0xfe765 orgs.asm:855 + out strict byte 0a1h, AL ; e6 a1 ; 0xfe767 orgs.asm:856 + mov AL, strict byte 001h ; b0 01 ; 0xfe769 orgs.asm:857 + out strict byte 021h, AL ; e6 21 ; 0xfe76b orgs.asm:858 + out strict byte 0a1h, AL ; e6 a1 ; 0xfe76d orgs.asm:859 + mov AL, strict byte 0b8h ; b0 b8 ; 0xfe76f orgs.asm:860 + out strict byte 021h, AL ; e6 21 ; 0xfe771 orgs.asm:861 + mov AL, strict byte 08fh ; b0 8f ; 0xfe773 orgs.asm:862 + out strict byte 0a1h, AL ; e6 a1 ; 0xfe775 orgs.asm:863 + retn ; c3 ; 0xfe777 orgs.asm:864 + ; disGetNextSymbol 0xfe778 LB 0x1888 -> off=0x0 cb=0000000000000051 uValue=00000000000f0778 'ebda_post' +ebda_post: ; 0xfe778 LB 0x51 + mov ax, 0e746h ; b8 46 e7 ; 0xfe778 orgs.asm:95 + mov word [00034h], ax ; a3 34 00 ; 0xfe77b orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe77e orgs.asm:97 + mov word [00036h], ax ; a3 36 00 ; 0xfe781 orgs.asm:98 + mov ax, 0e746h ; b8 46 e7 ; 0xfe784 orgs.asm:95 + mov word [0003ch], ax ; a3 3c 00 ; 0xfe787 orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe78a orgs.asm:97 + mov word [0003eh], ax ; a3 3e 00 ; 0xfe78d orgs.asm:98 + mov ax, 0e746h ; b8 46 e7 ; 0xfe790 orgs.asm:95 + mov word [001c8h], ax ; a3 c8 01 ; 0xfe793 orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe796 orgs.asm:97 + mov word [001cah], ax ; a3 ca 01 ; 0xfe799 orgs.asm:98 + mov ax, 0e746h ; b8 46 e7 ; 0xfe79c orgs.asm:95 + mov word [001cch], ax ; a3 cc 01 ; 0xfe79f orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe7a2 orgs.asm:97 + mov word [001ceh], ax ; a3 ce 01 ; 0xfe7a5 orgs.asm:98 + mov ax, 0e746h ; b8 46 e7 ; 0xfe7a8 orgs.asm:95 + mov word [001dch], ax ; a3 dc 01 ; 0xfe7ab orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe7ae orgs.asm:97 + mov word [001deh], ax ; a3 de 01 ; 0xfe7b1 orgs.asm:98 + mov ax, 09fc0h ; b8 c0 9f ; 0xfe7b4 orgs.asm:876 + mov ds, ax ; 8e d8 ; 0xfe7b7 orgs.asm:877 + mov byte [word 00000h], 001h ; c6 06 00 00 01 ; 0xfe7b9 orgs.asm:878 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xfe7be orgs.asm:880 + mov ds, ax ; 8e d8 ; 0xfe7c0 orgs.asm:881 + mov word [0040eh], 09fc0h ; c7 06 0e 04 c0 9f ; 0xfe7c2 orgs.asm:882 + retn ; c3 ; 0xfe7c8 orgs.asm:883 + ; disGetNextSymbol 0xfe7c9 LB 0x1837 -> off=0x0 cb=0000000000000065 uValue=00000000000f07c9 'biosorg_check_before_or_at_0E82Ch' +biosorg_check_before_or_at_0E82Ch: ; 0xfe7c9 LB 0x65 + times 0x63 db 0 + db 'XM' + ; disGetNextSymbol 0xfe82e LB 0x17d2 -> off=0x0 cb=000000000000003d uValue=00000000000f082e 'biosorg_check_at_0E82Eh' +biosorg_check_at_0E82Eh: ; 0xfe82e LB 0x3d + sti ; fb ; 0xfe82e orgs.asm:894 + pushfw ; 9c ; 0xfe82f orgs.asm:897 + push ES ; 06 ; 0xfe830 orgs.asm:898 + push DS ; 1e ; 0xfe831 orgs.asm:899 + pushaw ; 60 ; 0xfe832 orgs.asm:97 + cmp ah, 000h ; 80 fc 00 ; 0xfe833 orgs.asm:902 + je short 0e84ah ; 74 12 ; 0xfe836 orgs.asm:903 + cmp ah, 010h ; 80 fc 10 ; 0xfe838 orgs.asm:905 + je short 0e84ah ; 74 0d ; 0xfe83b orgs.asm:906 + push CS ; 0e ; 0xfe83d orgs.asm:104 + pop DS ; 1f ; 0xfe83e orgs.asm:105 + cld ; fc ; 0xfe83f orgs.asm:106 + call 056b6h ; e8 73 6e ; 0xfe840 orgs.asm:909 + popaw ; 61 ; 0xfe843 orgs.asm:114 + pop DS ; 1f ; 0xfe844 orgs.asm:911 + pop ES ; 07 ; 0xfe845 orgs.asm:912 + add sp, strict byte 00002h ; 83 c4 02 ; 0xfe846 orgs.asm:913 + iret ; cf ; 0xfe849 orgs.asm:914 + mov bx, strict word 00040h ; bb 40 00 ; 0xfe84a orgs.asm:917 + mov ds, bx ; 8e db ; 0xfe84d orgs.asm:918 + cli ; fa ; 0xfe84f orgs.asm:920 + mov bx, word [word 0001ah] ; 8b 1e 1a 00 ; 0xfe850 orgs.asm:921 + cmp bx, word [word 0001ch] ; 3b 1e 1c 00 ; 0xfe854 orgs.asm:922 + jne short 0e85eh ; 75 04 ; 0xfe858 orgs.asm:923 + sti ; fb ; 0xfe85a orgs.asm:924 + nop ; 90 ; 0xfe85b orgs.asm:925 + jmp short 0e84fh ; eb f1 ; 0xfe85c orgs.asm:933 + push CS ; 0e ; 0xfe85e orgs.asm:104 + pop DS ; 1f ; 0xfe85f orgs.asm:105 + cld ; fc ; 0xfe860 orgs.asm:106 + call 056b6h ; e8 52 6e ; 0xfe861 orgs.asm:937 + popaw ; 61 ; 0xfe864 orgs.asm:114 + pop DS ; 1f ; 0xfe865 orgs.asm:939 + pop ES ; 07 ; 0xfe866 orgs.asm:940 + add sp, strict byte 00002h ; 83 c4 02 ; 0xfe867 orgs.asm:941 + iret ; cf ; 0xfe86a orgs.asm:949 + ; disGetNextSymbol 0xfe86b LB 0x1795 -> off=0x0 cb=000000000000001b uValue=00000000000f086b 'pmode_enter' +pmode_enter: ; 0xfe86b LB 0x1b + push CS ; 0e ; 0xfe86b orgs.asm:30 + pop DS ; 1f ; 0xfe86c orgs.asm:31 + lgdt [cs:0e899h] ; 2e 0f 01 16 99 e8 ; 0xfe86d orgs.asm:33 + mov eax, cr0 ; 0f 20 c0 ; 0xfe873 orgs.asm:34 + or AL, strict byte 001h ; 0c 01 ; 0xfe876 orgs.asm:35 + mov cr0, eax ; 0f 22 c0 ; 0xfe878 orgs.asm:36 + jmp far 00020h:0e880h ; ea 80 e8 20 00 ; 0xfe87b + mov ax, strict word 00018h ; b8 18 00 ; 0xfe880 orgs.asm:42 + mov ds, ax ; 8e d8 ; 0xfe883 orgs.asm:43 + retn ; c3 ; 0xfe885 orgs.asm:44 + ; disGetNextSymbol 0xfe886 LB 0x177a -> off=0x0 cb=0000000000000013 uValue=00000000000f0886 'pmode_exit' +pmode_exit: ; 0xfe886 LB 0x13 + mov ax, strict word 00040h ; b8 40 00 ; 0xfe886 orgs.asm:51 + mov ds, ax ; 8e d8 ; 0xfe889 orgs.asm:52 + mov eax, cr0 ; 0f 20 c0 ; 0xfe88b orgs.asm:54 + and AL, strict byte 0feh ; 24 fe ; 0xfe88e orgs.asm:55 + mov cr0, eax ; 0f 22 c0 ; 0xfe890 orgs.asm:56 + jmp far 0f000h:0e898h ; ea 98 e8 00 f0 ; 0xfe893 orgs.asm:58 + retn ; c3 ; 0xfe898 orgs.asm:60 + ; disGetNextSymbol 0xfe899 LB 0x1767 -> off=0x0 cb=0000000000000006 uValue=00000000000f0899 'pmbios_gdt_desc' +pmbios_gdt_desc: ; 0xfe899 LB 0x6 + db 047h, 000h, 09fh, 0e8h, 00fh, 000h + ; disGetNextSymbol 0xfe89f LB 0x1761 -> off=0x0 cb=0000000000000048 uValue=00000000000f089f 'pmbios_gdt' +pmbios_gdt: ; 0xfe89f LB 0x48 + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 0ffh, 0ffh, 000h, 000h, 000h, 09bh, 0cfh, 000h, 0ffh, 0ffh, 000h, 000h, 000h, 093h, 0cfh, 000h + db 0ffh, 0ffh, 000h, 000h, 00fh, 09bh, 000h, 000h, 0ffh, 0ffh, 000h, 000h, 000h, 093h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 0ffh, 0ffh, 000h, 004h, 000h, 093h, 000h, 000h + ; disGetNextSymbol 0xfe8e7 LB 0x1719 -> off=0x0 cb=000000000000005c uValue=00000000000f08e7 'pmode_setup' +pmode_setup: ; 0xfe8e7 LB 0x5c + push eax ; 66 50 ; 0xfe8e7 orgs.asm:31 + push esi ; 66 56 ; 0xfe8e9 orgs.asm:32 + pushfw ; 9c ; 0xfe8eb orgs.asm:33 + cli ; fa ; 0xfe8ec orgs.asm:34 + call 0e86bh ; e8 7b ff ; 0xfe8ed orgs.asm:35 + mov eax, cr0 ; 0f 20 c0 ; 0xfe8f0 orgs.asm:37 + and eax, strict dword 09fffffffh ; 66 25 ff ff ff 9f ; 0xfe8f3 orgs.asm:38 + mov cr0, eax ; 0f 22 c0 ; 0xfe8f9 orgs.asm:39 + mov esi, strict dword 0fee000f0h ; 66 be f0 00 e0 fe ; 0xfe8fc orgs.asm:41 + mov eax, strict dword 00000010fh ; 66 b8 0f 01 00 00 ; 0xfe902 orgs.asm:42 + mov dword [esi], eax ; 67 66 89 06 ; 0xfe908 orgs.asm:43 + mov esi, strict dword 0fee00350h ; 66 be 50 03 e0 fe ; 0xfe90c orgs.asm:45 + mov eax, dword [esi] ; 67 66 8b 06 ; 0xfe912 orgs.asm:46 + and eax, strict dword 0fffe00ffh ; 66 25 ff 00 fe ff ; 0xfe916 orgs.asm:47 + or ah, 007h ; 80 cc 07 ; 0xfe91c orgs.asm:48 + mov dword [esi], eax ; 67 66 89 06 ; 0xfe91f orgs.asm:49 + mov esi, strict dword 0fee00360h ; 66 be 60 03 e0 fe ; 0xfe923 orgs.asm:51 + mov eax, dword [esi] ; 67 66 8b 06 ; 0xfe929 orgs.asm:52 + and eax, strict dword 0fffe00ffh ; 66 25 ff 00 fe ff ; 0xfe92d orgs.asm:53 + or ah, 004h ; 80 cc 04 ; 0xfe933 orgs.asm:54 + mov dword [esi], eax ; 67 66 89 06 ; 0xfe936 orgs.asm:55 + call 0e886h ; e8 49 ff ; 0xfe93a orgs.asm:57 + popfw ; 9d ; 0xfe93d orgs.asm:58 + pop esi ; 66 5e ; 0xfe93e orgs.asm:59 + pop eax ; 66 58 ; 0xfe940 orgs.asm:60 + retn ; c3 ; 0xfe942 orgs.asm:62 + ; disGetNextSymbol 0xfe943 LB 0x16bd -> off=0x0 cb=0000000000000044 uValue=00000000000f0943 'biosorg_check_before_or_at_0E985h' +biosorg_check_before_or_at_0E985h: ; 0xfe943 LB 0x44 + times 0x42 db 0 + db 'XM' + ; disGetNextSymbol 0xfe987 LB 0x1679 -> off=0x0 cb=0000000000000052 uValue=00000000000f0987 'biosorg_check_at_0E987h' +biosorg_check_at_0E987h: ; 0xfe987 LB 0x52 + cli ; fa ; 0xfe987 orgs.asm:966 + push ax ; 50 ; 0xfe988 orgs.asm:967 + mov AL, strict byte 0adh ; b0 ad ; 0xfe989 orgs.asm:968 + out strict byte 064h, AL ; e6 64 ; 0xfe98b orgs.asm:969 + in AL, strict byte 060h ; e4 60 ; 0xfe98d orgs.asm:971 + push DS ; 1e ; 0xfe98f orgs.asm:972 + pushaw ; 60 ; 0xfe990 orgs.asm:97 + cld ; fc ; 0xfe991 orgs.asm:974 + mov AH, strict byte 04fh ; b4 4f ; 0xfe992 orgs.asm:976 + stc ; f9 ; 0xfe994 orgs.asm:977 + int 015h ; cd 15 ; 0xfe995 orgs.asm:978 + jnc short 0e9c0h ; 73 27 ; 0xfe997 orgs.asm:979 + sti ; fb ; 0xfe999 orgs.asm:981 + cmp AL, strict byte 0e0h ; 3c e0 ; 0xfe99a orgs.asm:984 + jne short 0e9a9h ; 75 0b ; 0xfe99c orgs.asm:985 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xfe99e orgs.asm:986 + mov ds, ax ; 8e d8 ; 0xfe9a0 orgs.asm:987 + or byte [00496h], 002h ; 80 0e 96 04 02 ; 0xfe9a2 orgs.asm:988 + jmp short 0e9c0h ; eb 17 ; 0xfe9a7 orgs.asm:989 + cmp AL, strict byte 0e1h ; 3c e1 ; 0xfe9a9 orgs.asm:992 + jne short 0e9b8h ; 75 0b ; 0xfe9ab orgs.asm:993 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xfe9ad orgs.asm:994 + mov ds, ax ; 8e d8 ; 0xfe9af orgs.asm:995 + or byte [00496h], 001h ; 80 0e 96 04 01 ; 0xfe9b1 orgs.asm:996 + jmp short 0e9c0h ; eb 08 ; 0xfe9b6 orgs.asm:997 + push ES ; 06 ; 0xfe9b8 orgs.asm:1000 + push CS ; 0e ; 0xfe9b9 orgs.asm:104 + pop DS ; 1f ; 0xfe9ba orgs.asm:105 + cld ; fc ; 0xfe9bb orgs.asm:106 + call 0525ah ; e8 9b 68 ; 0xfe9bc orgs.asm:1002 + pop ES ; 07 ; 0xfe9bf orgs.asm:1003 + popaw ; 61 ; 0xfe9c0 orgs.asm:114 + pop DS ; 1f ; 0xfe9c1 orgs.asm:1007 + cli ; fa ; 0xfe9c2 orgs.asm:1008 + call 0e034h ; e8 6e f6 ; 0xfe9c3 orgs.asm:1009 + mov AL, strict byte 0aeh ; b0 ae ; 0xfe9c6 orgs.asm:1011 + out strict byte 064h, AL ; e6 64 ; 0xfe9c8 orgs.asm:1012 + pop ax ; 58 ; 0xfe9ca orgs.asm:1013 + iret ; cf ; 0xfe9cb orgs.asm:1014 + pushaw ; 60 ; 0xfe9cc orgs.asm:97 + push ES ; 06 ; 0xfe9cd orgs.asm:1023 + push DS ; 1e ; 0xfe9ce orgs.asm:1024 + push CS ; 0e ; 0xfe9cf orgs.asm:104 + pop DS ; 1f ; 0xfe9d0 orgs.asm:105 + cld ; fc ; 0xfe9d1 orgs.asm:106 + call 06e90h ; e8 bb 84 ; 0xfe9d2 orgs.asm:1026 + pop DS ; 1f ; 0xfe9d5 orgs.asm:1027 + pop ES ; 07 ; 0xfe9d6 orgs.asm:1028 + popaw ; 61 ; 0xfe9d7 orgs.asm:114 + iret ; cf ; 0xfe9d8 orgs.asm:1030 + ; disGetNextSymbol 0xfe9d9 LB 0x1627 -> off=0x0 cb=0000000000000280 uValue=00000000000f09d9 'biosorg_check_before_or_at_0EC57h' +biosorg_check_before_or_at_0EC57h: ; 0xfe9d9 LB 0x280 + times 0x27e db 0 + db 'XM' + ; disGetNextSymbol 0xfec59 LB 0x13a7 -> off=0x0 cb=0000000000000002 uValue=00000000000f0c59 'biosorg_check_at_0EC59h' +biosorg_check_at_0EC59h: ; 0xfec59 LB 0x2 + jmp short 0ecb0h ; eb 55 ; 0xfec59 orgs.asm:1037 + ; disGetNextSymbol 0xfec5b LB 0x13a5 -> off=0x0 cb=0000000000000055 uValue=00000000000f0c5b 'int13_relocated' +int13_relocated: ; 0xfec5b LB 0x55 + cmp ah, 04ah ; 80 fc 4a ; 0xfec5b orgs.asm:1046 + jc short 0ec71h ; 72 11 ; 0xfec5e orgs.asm:1047 + cmp ah, 04dh ; 80 fc 4d ; 0xfec60 orgs.asm:1049 + jnbe short 0ec71h ; 77 0c ; 0xfec63 orgs.asm:1050 + pushaw ; 60 ; 0xfec65 orgs.asm:97 + push ES ; 06 ; 0xfec66 orgs.asm:1053 + push DS ; 1e ; 0xfec67 orgs.asm:1054 + push CS ; 0e ; 0xfec68 orgs.asm:104 + pop DS ; 1f ; 0xfec69 orgs.asm:105 + cld ; fc ; 0xfec6a orgs.asm:106 + push 0ece9h ; 68 e9 ec ; 0xfec6b orgs.asm:83 + jmp near 03cc7h ; e9 56 50 ; 0xfec6e orgs.asm:84 + push ES ; 06 ; 0xfec71 orgs.asm:1062 + push ax ; 50 ; 0xfec72 orgs.asm:1063 + push bx ; 53 ; 0xfec73 orgs.asm:1064 + push cx ; 51 ; 0xfec74 orgs.asm:1065 + push dx ; 52 ; 0xfec75 orgs.asm:1066 + call 03c9bh ; e8 22 50 ; 0xfec76 orgs.asm:1069 + cmp AL, strict byte 000h ; 3c 00 ; 0xfec79 orgs.asm:1070 + je short 0ecabh ; 74 2e ; 0xfec7b orgs.asm:1071 + call 03cb1h ; e8 31 50 ; 0xfec7d orgs.asm:1074 + pop dx ; 5a ; 0xfec80 orgs.asm:1075 + push dx ; 52 ; 0xfec81 orgs.asm:1076 + db 03ah, 0c2h + ; cmp al, dl ; 3a c2 ; 0xfec82 orgs.asm:1077 + jne short 0ec97h ; 75 11 ; 0xfec84 orgs.asm:1078 + pop dx ; 5a ; 0xfec86 orgs.asm:1080 + pop cx ; 59 ; 0xfec87 orgs.asm:1081 + pop bx ; 5b ; 0xfec88 orgs.asm:1082 + pop ax ; 58 ; 0xfec89 orgs.asm:1083 + pop ES ; 07 ; 0xfec8a orgs.asm:1084 + pushaw ; 60 ; 0xfec8b orgs.asm:97 + push ES ; 06 ; 0xfec8c orgs.asm:1087 + push DS ; 1e ; 0xfec8d orgs.asm:1088 + push CS ; 0e ; 0xfec8e orgs.asm:104 + pop DS ; 1f ; 0xfec8f orgs.asm:105 + cld ; fc ; 0xfec90 orgs.asm:106 + push 0ece9h ; 68 e9 ec ; 0xfec91 orgs.asm:83 + jmp near 04278h ; e9 e1 55 ; 0xfec94 orgs.asm:84 + and dl, 0e0h ; 80 e2 e0 ; 0xfec97 orgs.asm:1094 + db 03ah, 0c2h + ; cmp al, dl ; 3a c2 ; 0xfec9a orgs.asm:1095 + jne short 0ecabh ; 75 0d ; 0xfec9c orgs.asm:1096 + pop dx ; 5a ; 0xfec9e orgs.asm:1098 + pop cx ; 59 ; 0xfec9f orgs.asm:1099 + pop bx ; 5b ; 0xfeca0 orgs.asm:1100 + pop ax ; 58 ; 0xfeca1 orgs.asm:1101 + pop ES ; 07 ; 0xfeca2 orgs.asm:1102 + push ax ; 50 ; 0xfeca3 orgs.asm:1104 + push cx ; 51 ; 0xfeca4 orgs.asm:1105 + push dx ; 52 ; 0xfeca5 orgs.asm:1106 + push bx ; 53 ; 0xfeca6 orgs.asm:1107 + db 0feh, 0cah + ; dec dl ; fe ca ; 0xfeca7 orgs.asm:1109 + jmp short 0ecb4h ; eb 09 ; 0xfeca9 orgs.asm:1110 + pop dx ; 5a ; 0xfecab orgs.asm:1113 + pop cx ; 59 ; 0xfecac orgs.asm:1114 + pop bx ; 5b ; 0xfecad orgs.asm:1115 + pop ax ; 58 ; 0xfecae orgs.asm:1116 + pop ES ; 07 ; 0xfecaf orgs.asm:1117 + ; disGetNextSymbol 0xfecb0 LB 0x1350 -> off=0x0 cb=0000000000000004 uValue=00000000000f0cb0 'int13_noeltorito' +int13_noeltorito: ; 0xfecb0 LB 0x4 + push ax ; 50 ; 0xfecb0 orgs.asm:1120 + push cx ; 51 ; 0xfecb1 orgs.asm:1121 + push dx ; 52 ; 0xfecb2 orgs.asm:1122 + push bx ; 53 ; 0xfecb3 orgs.asm:1123 + ; disGetNextSymbol 0xfecb4 LB 0x134c -> off=0x0 cb=0000000000000014 uValue=00000000000f0cb4 'int13_legacy' +int13_legacy: ; 0xfecb4 LB 0x14 + push dx ; 52 ; 0xfecb4 orgs.asm:1125 + push bp ; 55 ; 0xfecb5 orgs.asm:1126 + push si ; 56 ; 0xfecb6 orgs.asm:1127 + push di ; 57 ; 0xfecb7 orgs.asm:1128 + push ES ; 06 ; 0xfecb8 orgs.asm:1129 + push DS ; 1e ; 0xfecb9 orgs.asm:1130 + push CS ; 0e ; 0xfecba orgs.asm:104 + pop DS ; 1f ; 0xfecbb orgs.asm:105 + cld ; fc ; 0xfecbc orgs.asm:106 + test dl, 080h ; f6 c2 80 ; 0xfecbd orgs.asm:1135 + jne short 0ecc8h ; 75 06 ; 0xfecc0 orgs.asm:1136 + push 0ece9h ; 68 e9 ec ; 0xfecc2 orgs.asm:83 + jmp near 032cah ; e9 02 46 ; 0xfecc5 orgs.asm:84 + ; disGetNextSymbol 0xfecc8 LB 0x1338 -> off=0x0 cb=0000000000000014 uValue=00000000000f0cc8 'int13_notfloppy' +int13_notfloppy: ; 0xfecc8 LB 0x14 + cmp dl, 0e0h ; 80 fa e0 ; 0xfecc8 orgs.asm:1141 + jc short 0ecdch ; 72 0f ; 0xfeccb orgs.asm:1142 + shr ebx, 010h ; 66 c1 eb 10 ; 0xfeccd orgs.asm:1148 + push bx ; 53 ; 0xfecd1 orgs.asm:1149 + call 048a9h ; e8 d4 5b ; 0xfecd2 orgs.asm:1150 + pop bx ; 5b ; 0xfecd5 orgs.asm:1151 + sal ebx, 010h ; 66 c1 e3 10 ; 0xfecd6 orgs.asm:1152 + jmp short 0ece9h ; eb 0d ; 0xfecda orgs.asm:1154 + ; disGetNextSymbol 0xfecdc LB 0x1324 -> off=0x0 cb=000000000000000d uValue=00000000000f0cdc 'int13_disk' +int13_disk: ; 0xfecdc LB 0xd + cmp ah, 040h ; 80 fc 40 ; 0xfecdc orgs.asm:1158 + jnbe short 0ece6h ; 77 05 ; 0xfecdf orgs.asm:1159 + call 05d6fh ; e8 8b 70 ; 0xfece1 orgs.asm:1160 + jmp short 0ece9h ; eb 03 ; 0xfece4 orgs.asm:1161 + call 061b9h ; e8 d0 74 ; 0xfece6 orgs.asm:1164 + ; disGetNextSymbol 0xfece9 LB 0x1317 -> off=0x0 cb=0000000000000004 uValue=00000000000f0ce9 'int13_out' +int13_out: ; 0xfece9 LB 0x4 + pop DS ; 1f ; 0xfece9 orgs.asm:1167 + pop ES ; 07 ; 0xfecea orgs.asm:1168 + popaw ; 61 ; 0xfeceb orgs.asm:114 + iret ; cf ; 0xfecec orgs.asm:1170 + ; disGetNextSymbol 0xfeced LB 0x1313 -> off=0x0 cb=000000000000001e uValue=00000000000f0ced 'detect_parport' +detect_parport: ; 0xfeced LB 0x1e + push dx ; 52 ; 0xfeced orgs.asm:1177 + inc dx ; 42 ; 0xfecee orgs.asm:1178 + inc dx ; 42 ; 0xfecef orgs.asm:1179 + in AL, DX ; ec ; 0xfecf0 orgs.asm:1180 + and AL, strict byte 0dfh ; 24 df ; 0xfecf1 orgs.asm:1181 + out DX, AL ; ee ; 0xfecf3 orgs.asm:1182 + pop dx ; 5a ; 0xfecf4 orgs.asm:1183 + mov AL, strict byte 0aah ; b0 aa ; 0xfecf5 orgs.asm:1184 + out DX, AL ; ee ; 0xfecf7 orgs.asm:1185 + in AL, DX ; ec ; 0xfecf8 orgs.asm:1186 + cmp AL, strict byte 0aah ; 3c aa ; 0xfecf9 orgs.asm:1187 + jne short 0ed0ah ; 75 0d ; 0xfecfb orgs.asm:1188 + push bx ; 53 ; 0xfecfd orgs.asm:1190 + sal bx, 1 ; d1 e3 ; 0xfecfe orgs.asm:1191 + mov word [bx+00408h], dx ; 89 97 08 04 ; 0xfed00 orgs.asm:1192 + pop bx ; 5b ; 0xfed04 orgs.asm:1193 + mov byte [bx+00478h], cl ; 88 8f 78 04 ; 0xfed05 orgs.asm:1194 + inc bx ; 43 ; 0xfed09 orgs.asm:1195 + retn ; c3 ; 0xfed0a orgs.asm:1197 + ; disGetNextSymbol 0xfed0b LB 0x12f5 -> off=0x0 cb=0000000000000024 uValue=00000000000f0d0b 'detect_serial' +detect_serial: ; 0xfed0b LB 0x24 + push dx ; 52 ; 0xfed0b orgs.asm:1204 + inc dx ; 42 ; 0xfed0c orgs.asm:1205 + mov AL, strict byte 002h ; b0 02 ; 0xfed0d orgs.asm:1206 + out DX, AL ; ee ; 0xfed0f orgs.asm:1207 + in AL, DX ; ec ; 0xfed10 orgs.asm:1208 + cmp AL, strict byte 002h ; 3c 02 ; 0xfed11 orgs.asm:1209 + jne short 0ed2dh ; 75 18 ; 0xfed13 orgs.asm:1210 + inc dx ; 42 ; 0xfed15 orgs.asm:1212 + in AL, DX ; ec ; 0xfed16 orgs.asm:1213 + cmp AL, strict byte 002h ; 3c 02 ; 0xfed17 orgs.asm:1214 + jne short 0ed2dh ; 75 12 ; 0xfed19 orgs.asm:1215 + dec dx ; 4a ; 0xfed1b orgs.asm:1217 + db 032h, 0c0h + ; xor al, al ; 32 c0 ; 0xfed1c orgs.asm:1218 + pop dx ; 5a ; 0xfed1e orgs.asm:1219 + push bx ; 53 ; 0xfed1f orgs.asm:1220 + sal bx, 1 ; d1 e3 ; 0xfed20 orgs.asm:1221 + mov word [bx+00400h], dx ; 89 97 00 04 ; 0xfed22 orgs.asm:1222 + pop bx ; 5b ; 0xfed26 orgs.asm:1223 + mov byte [bx+0047ch], cl ; 88 8f 7c 04 ; 0xfed27 orgs.asm:1224 + inc bx ; 43 ; 0xfed2b orgs.asm:1225 + retn ; c3 ; 0xfed2c orgs.asm:1226 + pop dx ; 5a ; 0xfed2d orgs.asm:1229 + retn ; c3 ; 0xfed2e orgs.asm:1230 + ; disGetNextSymbol 0xfed2f LB 0x12d1 -> off=0x0 cb=0000000000000087 uValue=00000000000f0d2f 'floppy_post' +floppy_post: ; 0xfed2f LB 0x87 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xfed2f orgs.asm:1240 + mov ds, ax ; 8e d8 ; 0xfed31 orgs.asm:1241 + mov AL, strict byte 000h ; b0 00 ; 0xfed33 orgs.asm:1245 + mov byte [0043eh], AL ; a2 3e 04 ; 0xfed35 orgs.asm:1246 + mov byte [0043fh], AL ; a2 3f 04 ; 0xfed38 orgs.asm:1247 + mov byte [00440h], AL ; a2 40 04 ; 0xfed3b orgs.asm:1248 + mov byte [00441h], AL ; a2 41 04 ; 0xfed3e orgs.asm:1249 + mov byte [00442h], AL ; a2 42 04 ; 0xfed41 orgs.asm:1250 + mov byte [00443h], AL ; a2 43 04 ; 0xfed44 orgs.asm:1251 + mov byte [00444h], AL ; a2 44 04 ; 0xfed47 orgs.asm:1252 + mov byte [00445h], AL ; a2 45 04 ; 0xfed4a orgs.asm:1253 + mov byte [00446h], AL ; a2 46 04 ; 0xfed4d orgs.asm:1254 + mov byte [00447h], AL ; a2 47 04 ; 0xfed50 orgs.asm:1255 + mov byte [00448h], AL ; a2 48 04 ; 0xfed53 orgs.asm:1256 + mov byte [0048bh], AL ; a2 8b 04 ; 0xfed56 orgs.asm:1258 + mov AL, strict byte 010h ; b0 10 ; 0xfed59 orgs.asm:1260 + out strict byte 070h, AL ; e6 70 ; 0xfed5b orgs.asm:1261 + in AL, strict byte 071h ; e4 71 ; 0xfed5d orgs.asm:1262 + db 08ah, 0e0h + ; mov ah, al ; 8a e0 ; 0xfed5f orgs.asm:1263 + shr al, 004h ; c0 e8 04 ; 0xfed61 orgs.asm:169 + je short 0ed6ah ; 74 04 ; 0xfed64 orgs.asm:1268 + mov BL, strict byte 007h ; b3 07 ; 0xfed66 orgs.asm:1269 + jmp short 0ed6ch ; eb 02 ; 0xfed68 orgs.asm:1270 + mov BL, strict byte 000h ; b3 00 ; 0xfed6a orgs.asm:1273 + db 08ah, 0c4h + ; mov al, ah ; 8a c4 ; 0xfed6c orgs.asm:1276 + and AL, strict byte 00fh ; 24 0f ; 0xfed6e orgs.asm:1277 + je short 0ed75h ; 74 03 ; 0xfed70 orgs.asm:1278 + or bl, 070h ; 80 cb 70 ; 0xfed72 orgs.asm:1279 + mov byte [0048fh], bl ; 88 1e 8f 04 ; 0xfed75 orgs.asm:1281 + mov AL, strict byte 000h ; b0 00 ; 0xfed79 orgs.asm:1284 + mov byte [00490h], AL ; a2 90 04 ; 0xfed7b orgs.asm:1285 + mov byte [00491h], AL ; a2 91 04 ; 0xfed7e orgs.asm:1286 + mov byte [00492h], AL ; a2 92 04 ; 0xfed81 orgs.asm:1287 + mov byte [00493h], AL ; a2 93 04 ; 0xfed84 orgs.asm:1288 + mov byte [00494h], AL ; a2 94 04 ; 0xfed87 orgs.asm:1289 + mov byte [00495h], AL ; a2 95 04 ; 0xfed8a orgs.asm:1290 + mov AL, strict byte 002h ; b0 02 ; 0xfed8d orgs.asm:1292 + out strict byte 00ah, AL ; e6 0a ; 0xfed8f orgs.asm:1293 + mov ax, 0efc7h ; b8 c7 ef ; 0xfed91 orgs.asm:95 + mov word [00078h], ax ; a3 78 00 ; 0xfed94 orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfed97 orgs.asm:97 + mov word [0007ah], ax ; a3 7a 00 ; 0xfed9a orgs.asm:98 + mov ax, 0ec59h ; b8 59 ec ; 0xfed9d orgs.asm:95 + mov word [00100h], ax ; a3 00 01 ; 0xfeda0 orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfeda3 orgs.asm:97 + mov word [00102h], ax ; a3 02 01 ; 0xfeda6 orgs.asm:98 + mov ax, 0ef57h ; b8 57 ef ; 0xfeda9 orgs.asm:95 + mov word [00038h], ax ; a3 38 00 ; 0xfedac orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfedaf orgs.asm:97 + mov word [0003ah], ax ; a3 3a 00 ; 0xfedb2 orgs.asm:98 + retn ; c3 ; 0xfedb5 orgs.asm:1299 + ; disGetNextSymbol 0xfedb6 LB 0x124a -> off=0x0 cb=0000000000000009 uValue=0000000000000db6 'bcd_to_bin' +bcd_to_bin: ; 0xfedb6 LB 0x9 + sal ax, 004h ; c1 e0 04 ; 0xfedb6 orgs.asm:1309 + shr al, 004h ; c0 e8 04 ; 0xfedb9 orgs.asm:1310 + aad 00ah ; d5 0a ; 0xfedbc orgs.asm:1318 + retn ; c3 ; 0xfedbe orgs.asm:1319 + ; disGetNextSymbol 0xfedbf LB 0x1241 -> off=0x0 cb=0000000000000077 uValue=00000000000f0dbf 'rtc_post' +rtc_post: ; 0xfedbf LB 0x77 + db 066h, 033h, 0c0h + ; xor eax, eax ; 66 33 c0 ; 0xfedbf orgs.asm:1376 + mov AL, strict byte 000h ; b0 00 ; 0xfedc2 orgs.asm:1377 + out strict byte 070h, AL ; e6 70 ; 0xfedc4 orgs.asm:1378 + in AL, strict byte 071h ; e4 71 ; 0xfedc6 orgs.asm:1379 + call 0edb6h ; e8 eb ff ; 0xfedc8 orgs.asm:1380 + mov edx, strict dword 00115cf2bh ; 66 ba 2b cf 15 01 ; 0xfedcb orgs.asm:1381 + mul edx ; 66 f7 e2 ; 0xfedd1 orgs.asm:1382 + mov ebx, strict dword 0000f4240h ; 66 bb 40 42 0f 00 ; 0xfedd4 orgs.asm:1383 + db 066h, 033h, 0d2h + ; xor edx, edx ; 66 33 d2 ; 0xfedda orgs.asm:1384 + div ebx ; 66 f7 f3 ; 0xfeddd orgs.asm:1385 + db 066h, 08bh, 0c8h + ; mov ecx, eax ; 66 8b c8 ; 0xfede0 orgs.asm:1386 + db 066h, 033h, 0c0h + ; xor eax, eax ; 66 33 c0 ; 0xfede3 orgs.asm:1389 + mov AL, strict byte 002h ; b0 02 ; 0xfede6 orgs.asm:1390 + out strict byte 070h, AL ; e6 70 ; 0xfede8 orgs.asm:1391 + in AL, strict byte 071h ; e4 71 ; 0xfedea orgs.asm:1392 + call 0edb6h ; e8 c7 ff ; 0xfedec orgs.asm:1393 + mov edx, strict dword 000a6af80h ; 66 ba 80 af a6 00 ; 0xfedef orgs.asm:1394 + mul edx ; 66 f7 e2 ; 0xfedf5 orgs.asm:1395 + mov ebx, strict dword 000002710h ; 66 bb 10 27 00 00 ; 0xfedf8 orgs.asm:1396 + db 066h, 033h, 0d2h + ; xor edx, edx ; 66 33 d2 ; 0xfedfe orgs.asm:1397 + div ebx ; 66 f7 f3 ; 0xfee01 orgs.asm:1398 + db 066h, 003h, 0c8h + ; add ecx, eax ; 66 03 c8 ; 0xfee04 orgs.asm:1399 + db 066h, 033h, 0c0h + ; xor eax, eax ; 66 33 c0 ; 0xfee07 orgs.asm:1402 + mov AL, strict byte 004h ; b0 04 ; 0xfee0a orgs.asm:1403 + out strict byte 070h, AL ; e6 70 ; 0xfee0c orgs.asm:1404 + in AL, strict byte 071h ; e4 71 ; 0xfee0e orgs.asm:1405 + call 0edb6h ; e8 a3 ff ; 0xfee10 orgs.asm:1406 + mov edx, strict dword 003e81d03h ; 66 ba 03 1d e8 03 ; 0xfee13 orgs.asm:1407 + mul edx ; 66 f7 e2 ; 0xfee19 orgs.asm:1408 + mov ebx, strict dword 0000003e8h ; 66 bb e8 03 00 00 ; 0xfee1c orgs.asm:1409 + db 066h, 033h, 0d2h + ; xor edx, edx ; 66 33 d2 ; 0xfee22 orgs.asm:1410 + div ebx ; 66 f7 f3 ; 0xfee25 orgs.asm:1411 + db 066h, 003h, 0c8h + ; add ecx, eax ; 66 03 c8 ; 0xfee28 orgs.asm:1412 + mov dword [0046ch], ecx ; 66 89 0e 6c 04 ; 0xfee2b orgs.asm:1414 + db 032h, 0c0h + ; xor al, al ; 32 c0 ; 0xfee30 orgs.asm:1415 + mov byte [00470h], AL ; a2 70 04 ; 0xfee32 orgs.asm:1416 + retn ; c3 ; 0xfee35 orgs.asm:1419 + ; disGetNextSymbol 0xfee36 LB 0x11ca -> off=0x0 cb=0000000000000121 uValue=00000000000f0e36 'biosorg_check_before_or_at_0EF55h' +biosorg_check_before_or_at_0EF55h: ; 0xfee36 LB 0x121 + times 0x11f db 0 + db 'XM' + ; disGetNextSymbol 0xfef57 LB 0x10a9 -> off=0x0 cb=000000000000003b uValue=00000000000f0f57 'int0e_handler' +int0e_handler: ; 0xfef57 LB 0x3b + push ax ; 50 ; 0xfef57 orgs.asm:1430 + push dx ; 52 ; 0xfef58 orgs.asm:1431 + mov dx, 003f4h ; ba f4 03 ; 0xfef59 orgs.asm:1432 + in AL, DX ; ec ; 0xfef5c orgs.asm:1433 + and AL, strict byte 0c0h ; 24 c0 ; 0xfef5d orgs.asm:1434 + cmp AL, strict byte 0c0h ; 3c c0 ; 0xfef5f orgs.asm:1435 + je short 0ef81h ; 74 1e ; 0xfef61 orgs.asm:1436 + mov dx, 003f5h ; ba f5 03 ; 0xfef63 orgs.asm:1437 + mov AL, strict byte 008h ; b0 08 ; 0xfef66 orgs.asm:1438 + out DX, AL ; ee ; 0xfef68 orgs.asm:1439 + mov dx, 003f4h ; ba f4 03 ; 0xfef69 orgs.asm:1441 + in AL, DX ; ec ; 0xfef6c orgs.asm:1442 + and AL, strict byte 0c0h ; 24 c0 ; 0xfef6d orgs.asm:1443 + cmp AL, strict byte 0c0h ; 3c c0 ; 0xfef6f orgs.asm:1444 + jne short 0ef69h ; 75 f6 ; 0xfef71 orgs.asm:1445 + mov dx, 003f5h ; ba f5 03 ; 0xfef73 orgs.asm:1448 + in AL, DX ; ec ; 0xfef76 orgs.asm:1449 + mov dx, 003f4h ; ba f4 03 ; 0xfef77 orgs.asm:1450 + in AL, DX ; ec ; 0xfef7a orgs.asm:1451 + and AL, strict byte 0c0h ; 24 c0 ; 0xfef7b orgs.asm:1452 + cmp AL, strict byte 0c0h ; 3c c0 ; 0xfef7d orgs.asm:1453 + je short 0ef73h ; 74 f2 ; 0xfef7f orgs.asm:1454 + push DS ; 1e ; 0xfef81 orgs.asm:1457 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xfef82 orgs.asm:1458 + mov ds, ax ; 8e d8 ; 0xfef84 orgs.asm:1459 + call 0e034h ; e8 ab f0 ; 0xfef86 orgs.asm:1460 + or byte [0043eh], 080h ; 80 0e 3e 04 80 ; 0xfef89 orgs.asm:1462 + pop DS ; 1f ; 0xfef8e orgs.asm:1463 + pop dx ; 5a ; 0xfef8f orgs.asm:1464 + pop ax ; 58 ; 0xfef90 orgs.asm:1465 + iret ; cf ; 0xfef91 orgs.asm:1466 + ; disGetNextSymbol 0xfef92 LB 0x106e -> off=0x0 cb=0000000000000035 uValue=00000000000f0f92 'biosorg_check_before_or_at_0EFC5h' +biosorg_check_before_or_at_0EFC5h: ; 0xfef92 LB 0x35 + times 0x33 db 0 + db 'XM' + ; disGetNextSymbol 0xfefc7 LB 0x1039 -> off=0x0 cb=000000000000000b uValue=00000000000f0fc7 '_diskette_param_table' +_diskette_param_table: ; 0xfefc7 LB 0xb + scasw ; af ; 0xfefc7 + add ah, byte [di] ; 02 25 ; 0xfefc8 + add dl, byte [bp+si] ; 02 12 ; 0xfefca + db 01bh, 0ffh + ; sbb di, di ; 1b ff ; 0xfefcc + insb ; 6c ; 0xfefce + db 0f6h + invd ; 0f 08 ; 0xfefd0 + ; disGetNextSymbol 0xfefd2 LB 0x102e -> off=0x0 cb=0000000000000002 uValue=00000000000f0fd2 'biosorg_check_at_0EFD2h' +biosorg_check_at_0EFD2h: ; 0xfefd2 LB 0x2 + jmp short 0efd4h ; eb 00 ; 0xfefd2 orgs.asm:1493 + ; disGetNextSymbol 0xfefd4 LB 0x102c -> off=0x0 cb=000000000000000d uValue=00000000000f0fd4 'int17_handler' +int17_handler: ; 0xfefd4 LB 0xd + push DS ; 1e ; 0xfefd4 orgs.asm:1496 + push ES ; 06 ; 0xfefd5 orgs.asm:1497 + pushaw ; 60 ; 0xfefd6 orgs.asm:97 + push CS ; 0e ; 0xfefd7 orgs.asm:104 + pop DS ; 1f ; 0xfefd8 orgs.asm:105 + cld ; fc ; 0xfefd9 orgs.asm:106 + call 077adh ; e8 d0 87 ; 0xfefda orgs.asm:1500 + popaw ; 61 ; 0xfefdd orgs.asm:114 + pop ES ; 07 ; 0xfefde orgs.asm:1502 + pop DS ; 1f ; 0xfefdf orgs.asm:1503 + iret ; cf ; 0xfefe0 orgs.asm:1504 + ; disGetNextSymbol 0xfefe1 LB 0x101f -> off=0x0 cb=0000000000000006 uValue=00000000000f0fe1 '_pmode_IDT' +_pmode_IDT: ; 0xfefe1 LB 0x6 + db 000h, 000h, 000h, 000h, 00fh, 000h + ; disGetNextSymbol 0xfefe7 LB 0x1019 -> off=0x0 cb=0000000000000006 uValue=00000000000f0fe7 '_rmode_IDT' +_rmode_IDT: ; 0xfefe7 LB 0x6 + db 0ffh, 003h, 000h, 000h, 000h, 000h + ; disGetNextSymbol 0xfefed LB 0x1013 -> off=0x0 cb=0000000000000001 uValue=00000000000f0fed 'int1c_handler' +int1c_handler: ; 0xfefed LB 0x1 + iret ; cf ; 0xfefed orgs.asm:1539 + ; disGetNextSymbol 0xfefee LB 0x1012 -> off=0x0 cb=0000000000000057 uValue=00000000000f0fee 'biosorg_check_before_or_at_0F043h' +biosorg_check_before_or_at_0F043h: ; 0xfefee LB 0x57 + times 0x55 db 0 + db 'XM' + ; disGetNextSymbol 0xff045 LB 0xfbb -> off=0x0 cb=0000000000000001 uValue=00000000000f1045 'biosorg_check_at_0F045h' +biosorg_check_at_0F045h: ; 0xff045 LB 0x1 + iret ; cf ; 0xff045 orgs.asm:1548 + ; disGetNextSymbol 0xff046 LB 0xfba -> off=0x0 cb=000000000000001f uValue=00000000000f1046 'biosorg_check_before_or_at_0F063h' +biosorg_check_before_or_at_0F063h: ; 0xff046 LB 0x1f + times 0x1d db 0 + db 'XM' + ; disGetNextSymbol 0xff065 LB 0xf9b -> off=0x0 cb=0000000000000001 uValue=00000000000f1065 'int10_handler' +int10_handler: ; 0xff065 LB 0x1 + iret ; cf ; 0xff065 orgs.asm:1557 + ; disGetNextSymbol 0xff066 LB 0xf9a -> off=0x0 cb=000000000000003e uValue=00000000000f1066 'biosorg_check_before_or_at_0F0A2h' +biosorg_check_before_or_at_0F0A2h: ; 0xff066 LB 0x3e + times 0x3c db 0 + db 'XM' + ; disGetNextSymbol 0xff0a4 LB 0xf5c -> off=0x0 cb=0000000000000008 uValue=00000000000f10a4 'biosorg_check_at_0F0A4h' +biosorg_check_at_0F0A4h: ; 0xff0a4 LB 0x8 + push CS ; 0e ; 0xff0a4 orgs.asm:104 + pop DS ; 1f ; 0xff0a5 orgs.asm:105 + cld ; fc ; 0xff0a6 orgs.asm:106 + call 0180eh ; e8 64 27 ; 0xff0a7 orgs.asm:1572 + hlt ; f4 ; 0xff0aa orgs.asm:1574 + iret ; cf ; 0xff0ab orgs.asm:1575 + ; disGetNextSymbol 0xff0ac LB 0xf54 -> off=0x0 cb=000000000000008f uValue=00000000000f10ac 'int19_relocated' +int19_relocated: ; 0xff0ac LB 0x8f + db 08bh, 0ech + ; mov bp, sp ; 8b ec ; 0xff0ac orgs.asm:1586 + mov ax, word [bp+002h] ; 8b 46 02 ; 0xff0ae orgs.asm:1587 + cmp ax, 0f000h ; 3d 00 f0 ; 0xff0b1 orgs.asm:1588 + je short 0f0c3h ; 74 0d ; 0xff0b4 orgs.asm:1589 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xff0b6 orgs.asm:1591 + mov ds, ax ; 8e d8 ; 0xff0b8 orgs.asm:1592 + mov ax, 01234h ; b8 34 12 ; 0xff0ba orgs.asm:1593 + mov word [001d8h], ax ; a3 d8 01 ; 0xff0bd orgs.asm:1594 + jmp near 0e05bh ; e9 98 ef ; 0xff0c0 orgs.asm:1595 + push CS ; 0e ; 0xff0c3 orgs.asm:104 + pop DS ; 1f ; 0xff0c4 orgs.asm:105 + cld ; fc ; 0xff0c5 orgs.asm:106 + push bp ; 55 ; 0xff0c6 orgs.asm:1602 + db 08bh, 0ech + ; mov bp, sp ; 8b ec ; 0xff0c7 orgs.asm:1603 + mov ax, strict word 00001h ; b8 01 00 ; 0xff0c9 orgs.asm:1606 + push ax ; 50 ; 0xff0cc orgs.asm:1607 + call 04d10h ; e8 40 5c ; 0xff0cd orgs.asm:1608 + inc sp ; 44 ; 0xff0d0 orgs.asm:1609 + inc sp ; 44 ; 0xff0d1 orgs.asm:1610 + test ax, ax ; 85 c0 ; 0xff0d2 orgs.asm:1611 + jne short 0f0fdh ; 75 27 ; 0xff0d4 orgs.asm:1612 + mov ax, strict word 00002h ; b8 02 00 ; 0xff0d6 orgs.asm:1615 + push ax ; 50 ; 0xff0d9 orgs.asm:1616 + call 04d10h ; e8 33 5c ; 0xff0da orgs.asm:1617 + inc sp ; 44 ; 0xff0dd orgs.asm:1618 + inc sp ; 44 ; 0xff0de orgs.asm:1619 + test ax, ax ; 85 c0 ; 0xff0df orgs.asm:1620 + jne short 0f0fdh ; 75 1a ; 0xff0e1 orgs.asm:1621 + mov ax, strict word 00003h ; b8 03 00 ; 0xff0e3 orgs.asm:1624 + push ax ; 50 ; 0xff0e6 orgs.asm:1625 + call 04d10h ; e8 26 5c ; 0xff0e7 orgs.asm:1626 + inc sp ; 44 ; 0xff0ea orgs.asm:1627 + inc sp ; 44 ; 0xff0eb orgs.asm:1628 + test ax, ax ; 85 c0 ; 0xff0ec orgs.asm:1629 + jne short 0f0fdh ; 75 0d ; 0xff0ee orgs.asm:1630 + mov ax, strict word 00004h ; b8 04 00 ; 0xff0f0 orgs.asm:1633 + push ax ; 50 ; 0xff0f3 orgs.asm:1634 + call 04d10h ; e8 19 5c ; 0xff0f4 orgs.asm:1635 + inc sp ; 44 ; 0xff0f7 orgs.asm:1636 + inc sp ; 44 ; 0xff0f8 orgs.asm:1637 + test ax, ax ; 85 c0 ; 0xff0f9 orgs.asm:1638 + je short 0f0a4h ; 74 a7 ; 0xff0fb orgs.asm:1639 + sal eax, 004h ; 66 c1 e0 04 ; 0xff0fd orgs.asm:1651 + mov word [bp+002h], ax ; 89 46 02 ; 0xff101 orgs.asm:1652 + shr eax, 004h ; 66 c1 e8 04 ; 0xff104 orgs.asm:1654 + and ax, 0f000h ; 25 00 f0 ; 0xff108 orgs.asm:1657 + mov word [bp+004h], ax ; 89 46 04 ; 0xff10b orgs.asm:1658 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xff10e orgs.asm:1659 + mov ds, ax ; 8e d8 ; 0xff110 orgs.asm:1660 + mov es, ax ; 8e c0 ; 0xff112 orgs.asm:1661 + mov word [byte bp+000h], ax ; 89 46 00 ; 0xff114 orgs.asm:1662 + mov ax, 0aa55h ; b8 55 aa ; 0xff117 orgs.asm:1663 + pop bp ; 5d ; 0xff11a orgs.asm:1665 + iret ; cf ; 0xff11b orgs.asm:1666 + or cx, word [bp+si] ; 0b 0a ; 0xff11c + or word [bp+di], cx ; 09 0b ; 0xff11e + push eax ; 66 50 ; 0xff120 orgs.asm:88 + mov eax, strict dword 000800000h ; 66 b8 00 00 80 00 ; 0xff122 orgs.asm:89 + db 08bh, 0c3h + ; mov ax, bx ; 8b c3 ; 0xff128 orgs.asm:90 + sal eax, 008h ; 66 c1 e0 08 ; 0xff12a orgs.asm:91 + and dl, 0fch ; 80 e2 fc ; 0xff12e orgs.asm:92 + db 00ah, 0c2h + ; or al, dl ; 0a c2 ; 0xff131 orgs.asm:93 + mov dx, 00cf8h ; ba f8 0c ; 0xff133 orgs.asm:94 + out DX, eax ; 66 ef ; 0xff136 orgs.asm:95 + pop eax ; 66 58 ; 0xff138 orgs.asm:96 + retn ; c3 ; 0xff13a orgs.asm:97 + ; disGetNextSymbol 0xff13b LB 0xec5 -> off=0x0 cb=0000000000000012 uValue=00000000000f113b 'pcibios_init_iomem_bases' +pcibios_init_iomem_bases: ; 0xff13b LB 0x12 + push bp ; 55 ; 0xff13b orgs.asm:100 + db 08bh, 0ech + ; mov bp, sp ; 8b ec ; 0xff13c orgs.asm:101 + mov eax, strict dword 00124f9fdh ; 66 b8 fd f9 24 01 ; 0xff13e orgs.asm:103 + mov dx, 00410h ; ba 10 04 ; 0xff144 orgs.asm:104 + out DX, eax ; 66 ef ; 0xff147 orgs.asm:105 + db 08bh, 0e5h + ; mov sp, bp ; 8b e5 ; 0xff149 orgs.asm:218 + pop bp ; 5d ; 0xff14b orgs.asm:219 + retn ; c3 ; 0xff14c orgs.asm:220 + ; disGetNextSymbol 0xff14d LB 0xeb3 -> off=0x0 cb=000000000000000c uValue=00000000000f114d 'pcibios_init_set_elcr' +pcibios_init_set_elcr: ; 0xff14d LB 0xc + push ax ; 50 ; 0xff14d orgs.asm:223 + push cx ; 51 ; 0xff14e orgs.asm:224 + mov dx, 004d0h ; ba d0 04 ; 0xff14f orgs.asm:225 + test AL, strict byte 008h ; a8 08 ; 0xff152 orgs.asm:226 + je short 0f159h ; 74 03 ; 0xff154 orgs.asm:227 + inc dx ; 42 ; 0xff156 orgs.asm:229 + and AL, strict byte 007h ; 24 07 ; 0xff157 orgs.asm:230 + ; disGetNextSymbol 0xff159 LB 0xea7 -> off=0x0 cb=000000000000000d uValue=00000000000f1159 'is_master_pic' +is_master_pic: ; 0xff159 LB 0xd + db 08ah, 0c8h + ; mov cl, al ; 8a c8 ; 0xff159 orgs.asm:232 + mov BL, strict byte 001h ; b3 01 ; 0xff15b orgs.asm:233 + sal bl, CL ; d2 e3 ; 0xff15d orgs.asm:234 + in AL, DX ; ec ; 0xff15f orgs.asm:235 + db 00ah, 0c3h + ; or al, bl ; 0a c3 ; 0xff160 orgs.asm:236 + out DX, AL ; ee ; 0xff162 orgs.asm:237 + pop cx ; 59 ; 0xff163 orgs.asm:238 + pop ax ; 58 ; 0xff164 orgs.asm:239 + retn ; c3 ; 0xff165 orgs.asm:240 + ; disGetNextSymbol 0xff166 LB 0xe9a -> off=0x0 cb=000000000000002a uValue=00000000000f1166 'pcibios_init_irqs' +pcibios_init_irqs: ; 0xff166 LB 0x2a + push DS ; 1e ; 0xff166 orgs.asm:243 + push bp ; 55 ; 0xff167 orgs.asm:244 + mov ax, 0f000h ; b8 00 f0 ; 0xff168 orgs.asm:245 + mov ds, ax ; 8e d8 ; 0xff16b orgs.asm:246 + pop bp ; 5d ; 0xff16d orgs.asm:353 + pop DS ; 1f ; 0xff16e orgs.asm:354 + retn ; c3 ; 0xff16f orgs.asm:355 + and AL, strict byte 050h ; 24 50 ; 0xff170 + dec cx ; 49 ; 0xff172 + push dx ; 52 ; 0xff173 + add byte [bx+di], al ; 00 01 ; 0xff174 + add byte [bp+si], al ; 00 02 ; 0xff176 + add byte [bx+si], cl ; 00 08 ; 0xff178 + add byte [bx+si], al ; 00 00 ; 0xff17a + xchg byte [bx+si+07000h], al ; 86 80 00 70 ; 0xff17c + times 0xf db 0 + db 031h + ; disGetNextSymbol 0xff190 LB 0xe70 -> off=0x0 cb=00000000000001e0 uValue=00000000000f1190 '_pci_routing_table' +_pci_routing_table: ; 0xff190 LB 0x1e0 + db 000h, 008h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 000h, 000h + db 000h, 010h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 001h, 000h + db 000h, 018h, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 002h, 000h + db 000h, 020h, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 003h, 000h + db 000h, 028h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 004h, 000h + db 000h, 030h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 005h, 000h + db 000h, 038h, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 006h, 000h + db 000h, 040h, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 007h, 000h + db 000h, 048h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 008h, 000h + db 000h, 050h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 009h, 000h + db 000h, 058h, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 00ah, 000h + db 000h, 060h, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 00bh, 000h + db 000h, 068h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 00ch, 000h + db 000h, 070h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 00dh, 000h + db 000h, 078h, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 00eh, 000h + db 000h, 080h, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 00fh, 000h + db 000h, 088h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 010h, 000h + db 000h, 090h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 011h, 000h + db 000h, 098h, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 012h, 000h + db 000h, 0a0h, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 013h, 000h + db 000h, 0a8h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 014h, 000h + db 000h, 0b0h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 015h, 000h + db 000h, 0b8h, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 016h, 000h + db 000h, 0c0h, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 017h, 000h + db 000h, 0c8h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 018h, 000h + db 000h, 0d0h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 019h, 000h + db 000h, 0d8h, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 01ah, 000h + db 000h, 0e0h, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 01bh, 000h + db 000h, 0e8h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 01ch, 000h + db 000h, 0f0h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 01dh, 000h + ; disGetNextSymbol 0xff370 LB 0xc90 -> off=0x0 cb=0000000000000002 uValue=00000000000f1370 '_pci_routing_table_size' +_pci_routing_table_size: ; 0xff370 LB 0x2 + loopne 0f373h ; e0 01 ; 0xff370 + ; disGetNextSymbol 0xff372 LB 0xc8e -> off=0x0 cb=00000000000004cf uValue=00000000000f1372 'biosorg_check_before_or_at_0F83Fh' +biosorg_check_before_or_at_0F83Fh: ; 0xff372 LB 0x4cf + times 0x4cd db 0 + db 'XM' + ; disGetNextSymbol 0xff841 LB 0x7bf -> off=0x0 cb=000000000000000c uValue=00000000000f1841 'int12_handler' +int12_handler: ; 0xff841 LB 0xc + sti ; fb ; 0xff841 orgs.asm:1680 + push DS ; 1e ; 0xff842 orgs.asm:1681 + mov ax, strict word 00040h ; b8 40 00 ; 0xff843 orgs.asm:1682 + mov ds, ax ; 8e d8 ; 0xff846 orgs.asm:1683 + mov ax, word [00013h] ; a1 13 00 ; 0xff848 orgs.asm:1684 + pop DS ; 1f ; 0xff84b orgs.asm:1685 + iret ; cf ; 0xff84c orgs.asm:1686 + ; disGetNextSymbol 0xff84d LB 0x7b3 -> off=0x0 cb=000000000000000c uValue=00000000000f184d 'int11_handler' +int11_handler: ; 0xff84d LB 0xc + sti ; fb ; 0xff84d orgs.asm:1695 + push DS ; 1e ; 0xff84e orgs.asm:1696 + mov ax, strict word 00040h ; b8 40 00 ; 0xff84f orgs.asm:1697 + mov ds, ax ; 8e d8 ; 0xff852 orgs.asm:1698 + mov ax, word [00010h] ; a1 10 00 ; 0xff854 orgs.asm:1699 + pop DS ; 1f ; 0xff857 orgs.asm:1700 + iret ; cf ; 0xff858 orgs.asm:1701 + ; disGetNextSymbol 0xff859 LB 0x7a7 -> off=0x0 cb=000000000000003b uValue=00000000000f1859 'int15_handler' +int15_handler: ; 0xff859 LB 0x3b + cmp ah, 087h ; 80 fc 87 ; 0xff859 orgs.asm:1711 + jne short 0f86bh ; 75 0d ; 0xff85c orgs.asm:1712 + pushaw ; 60 ; 0xff85e orgs.asm:1717 + push ES ; 06 ; 0xff85f orgs.asm:1718 + push DS ; 1e ; 0xff860 orgs.asm:1719 + push CS ; 0e ; 0xff861 orgs.asm:104 + pop DS ; 1f ; 0xff862 orgs.asm:105 + cld ; fc ; 0xff863 orgs.asm:106 + call 06d3ah ; e8 d3 74 ; 0xff864 orgs.asm:1721 + pop DS ; 1f ; 0xff867 orgs.asm:1722 + pop ES ; 07 ; 0xff868 orgs.asm:1723 + popaw ; 61 ; 0xff869 orgs.asm:1724 + iret ; cf ; 0xff86a orgs.asm:1725 + pushfw ; 9c ; 0xff86b orgs.asm:1730 + push DS ; 1e ; 0xff86c orgs.asm:1731 + push ES ; 06 ; 0xff86d orgs.asm:1732 + push CS ; 0e ; 0xff86e orgs.asm:104 + pop DS ; 1f ; 0xff86f orgs.asm:105 + cld ; fc ; 0xff870 orgs.asm:106 + cmp ah, 0e8h ; 80 fc e8 ; 0xff871 orgs.asm:1737 + je short 0f899h ; 74 23 ; 0xff874 orgs.asm:1738 + cmp ah, 0d0h ; 80 fc d0 ; 0xff876 orgs.asm:1739 + je short 0f899h ; 74 1e ; 0xff879 orgs.asm:1740 + pushaw ; 60 ; 0xff87b orgs.asm:97 + cmp ah, 053h ; 80 fc 53 ; 0xff87c orgs.asm:1743 + je short 0f88fh ; 74 0e ; 0xff87f orgs.asm:1744 + cmp ah, 0c2h ; 80 fc c2 ; 0xff881 orgs.asm:1745 + je short 0f894h ; 74 0e ; 0xff884 orgs.asm:1746 + call 06652h ; e8 c9 6d ; 0xff886 orgs.asm:1748 + popaw ; 61 ; 0xff889 orgs.asm:114 + pop ES ; 07 ; 0xff88a orgs.asm:1754 + pop DS ; 1f ; 0xff88b orgs.asm:1755 + popfw ; 9d ; 0xff88c orgs.asm:1756 + jmp short 0f8a2h ; eb 13 ; 0xff88d orgs.asm:1757 + call 09968h ; e8 d6 a0 ; 0xff88f orgs.asm:1760 + jmp short 0f889h ; eb f5 ; 0xff892 orgs.asm:1761 + ; disGetNextSymbol 0xff894 LB 0x76c -> off=0x0 cb=0000000000000005 uValue=00000000000f1894 'int15_handler_mouse' +int15_handler_mouse: ; 0xff894 LB 0x5 + call 0743dh ; e8 a6 7b ; 0xff894 orgs.asm:1764 + jmp short 0f889h ; eb f0 ; 0xff897 orgs.asm:1765 + ; disGetNextSymbol 0xff899 LB 0x767 -> off=0x0 cb=0000000000000009 uValue=00000000000f1899 'int15_handler32' +int15_handler32: ; 0xff899 LB 0x9 + pushad ; 66 60 ; 0xff899 orgs.asm:1771 + call 069b4h ; e8 16 71 ; 0xff89b orgs.asm:1772 + popad ; 66 61 ; 0xff89e orgs.asm:1773 + jmp short 0f88ah ; eb e8 ; 0xff8a0 orgs.asm:1775 + ; disGetNextSymbol 0xff8a2 LB 0x75e -> off=0x0 cb=000000000000001a uValue=00000000000f18a2 'iret_modify_cf' +iret_modify_cf: ; 0xff8a2 LB 0x1a + jc short 0f8b2h ; 72 0e ; 0xff8a2 orgs.asm:1782 + push bp ; 55 ; 0xff8a4 orgs.asm:1783 + db 08bh, 0ech + ; mov bp, sp ; 8b ec ; 0xff8a5 orgs.asm:1784 + and byte [bp+006h], 0feh ; 80 66 06 fe ; 0xff8a7 orgs.asm:1785 + or word [bp+006h], 00200h ; 81 4e 06 00 02 ; 0xff8ab orgs.asm:1786 + pop bp ; 5d ; 0xff8b0 orgs.asm:1787 + iret ; cf ; 0xff8b1 orgs.asm:1788 + push bp ; 55 ; 0xff8b2 orgs.asm:1790 + db 08bh, 0ech + ; mov bp, sp ; 8b ec ; 0xff8b3 orgs.asm:1791 + or word [bp+006h], 00201h ; 81 4e 06 01 02 ; 0xff8b5 orgs.asm:1792 + pop bp ; 5d ; 0xff8ba orgs.asm:1793 + iret ; cf ; 0xff8bb orgs.asm:1794 + ; disGetNextSymbol 0xff8bc LB 0x744 -> off=0x0 cb=000000000000002b uValue=00000000000f18bc 'int74_handler' +int74_handler: ; 0xff8bc LB 0x2b + sti ; fb ; 0xff8bc orgs.asm:1801 + pushaw ; 60 ; 0xff8bd orgs.asm:97 + push ES ; 06 ; 0xff8be orgs.asm:1803 + push DS ; 1e ; 0xff8bf orgs.asm:1804 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xff8c0 orgs.asm:1805 + push ax ; 50 ; 0xff8c2 orgs.asm:1806 + push ax ; 50 ; 0xff8c3 orgs.asm:1807 + push ax ; 50 ; 0xff8c4 orgs.asm:1808 + push ax ; 50 ; 0xff8c5 orgs.asm:1809 + push ax ; 50 ; 0xff8c6 orgs.asm:1810 + push CS ; 0e ; 0xff8c7 orgs.asm:104 + pop DS ; 1f ; 0xff8c8 orgs.asm:105 + cld ; fc ; 0xff8c9 orgs.asm:106 + call 07399h ; e8 cc 7a ; 0xff8ca orgs.asm:1812 + pop cx ; 59 ; 0xff8cd orgs.asm:1813 + jcxz 0f8dch ; e3 0c ; 0xff8ce orgs.asm:1814 + push strict byte 00000h ; 6a 00 ; 0xff8d0 orgs.asm:1818 + pop DS ; 1f ; 0xff8d2 orgs.asm:1823 + push word [0040eh] ; ff 36 0e 04 ; 0xff8d3 orgs.asm:1824 + pop DS ; 1f ; 0xff8d7 orgs.asm:1825 + call far [word 00022h] ; ff 1e 22 00 ; 0xff8d8 orgs.asm:1826 + cli ; fa ; 0xff8dc orgs.asm:1828 + call 0e030h ; e8 50 e7 ; 0xff8dd orgs.asm:1829 + add sp, strict byte 00008h ; 83 c4 08 ; 0xff8e0 orgs.asm:1830 + pop DS ; 1f ; 0xff8e3 orgs.asm:1831 + pop ES ; 07 ; 0xff8e4 orgs.asm:1832 + popaw ; 61 ; 0xff8e5 orgs.asm:114 + iret ; cf ; 0xff8e6 orgs.asm:1834 + ; disGetNextSymbol 0xff8e7 LB 0x719 -> off=0x0 cb=0000000000000012 uValue=00000000000f18e7 'int76_handler' +int76_handler: ; 0xff8e7 LB 0x12 + push ax ; 50 ; 0xff8e7 orgs.asm:1841 + push DS ; 1e ; 0xff8e8 orgs.asm:1842 + mov ax, strict word 00040h ; b8 40 00 ; 0xff8e9 orgs.asm:1843 + mov ds, ax ; 8e d8 ; 0xff8ec orgs.asm:1844 + mov byte [0008eh], 0ffh ; c6 06 8e 00 ff ; 0xff8ee orgs.asm:1845 + call 0e030h ; e8 3a e7 ; 0xff8f3 orgs.asm:1846 + pop DS ; 1f ; 0xff8f6 orgs.asm:1847 + pop ax ; 58 ; 0xff8f7 orgs.asm:1848 + iret ; cf ; 0xff8f8 orgs.asm:1849 + ; disGetNextSymbol 0xff8f9 LB 0x707 -> off=0x0 cb=000000000000000d uValue=00000000000f18f9 'int70_handler' +int70_handler: ; 0xff8f9 LB 0xd + push ES ; 06 ; 0xff8f9 orgs.asm:1858 + push DS ; 1e ; 0xff8fa orgs.asm:1859 + pushaw ; 60 ; 0xff8fb orgs.asm:97 + push CS ; 0e ; 0xff8fc orgs.asm:104 + pop DS ; 1f ; 0xff8fd orgs.asm:105 + cld ; fc ; 0xff8fe orgs.asm:106 + call 0706eh ; e8 6c 77 ; 0xff8ff orgs.asm:1862 + popaw ; 61 ; 0xff902 orgs.asm:114 + pop DS ; 1f ; 0xff903 orgs.asm:1864 + pop ES ; 07 ; 0xff904 orgs.asm:1865 + iret ; cf ; 0xff905 orgs.asm:1866 + ; disGetNextSymbol 0xff906 LB 0x6fa -> off=0x0 cb=0000000000000168 uValue=00000000000f1906 'biosorg_check_before_or_at_0FA6Ch' +biosorg_check_before_or_at_0FA6Ch: ; 0xff906 LB 0x168 + times 0x166 db 0 + db 'XM' + ; disGetNextSymbol 0xffa6e LB 0x592 -> off=0x0 cb=0000000000000400 uValue=00000000000f1a6e 'font8x8' +font8x8: ; 0xffa6e LB 0x400 + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 07eh, 081h, 0a5h, 081h, 0bdh, 099h, 081h, 07eh + db 07eh, 0ffh, 0dbh, 0ffh, 0c3h, 0e7h, 0ffh, 07eh, 06ch, 0feh, 0feh, 0feh, 07ch, 038h, 010h, 000h + db 010h, 038h, 07ch, 0feh, 07ch, 038h, 010h, 000h, 038h, 07ch, 038h, 0feh, 0feh, 07ch, 038h, 07ch + db 010h, 010h, 038h, 07ch, 0feh, 07ch, 038h, 07ch, 000h, 000h, 018h, 03ch, 03ch, 018h, 000h, 000h + db 0ffh, 0ffh, 0e7h, 0c3h, 0c3h, 0e7h, 0ffh, 0ffh, 000h, 03ch, 066h, 042h, 042h, 066h, 03ch, 000h + db 0ffh, 0c3h, 099h, 0bdh, 0bdh, 099h, 0c3h, 0ffh, 00fh, 007h, 00fh, 07dh, 0cch, 0cch, 0cch, 078h + db 03ch, 066h, 066h, 066h, 03ch, 018h, 07eh, 018h, 03fh, 033h, 03fh, 030h, 030h, 070h, 0f0h, 0e0h + db 07fh, 063h, 07fh, 063h, 063h, 067h, 0e6h, 0c0h, 099h, 05ah, 03ch, 0e7h, 0e7h, 03ch, 05ah, 099h + db 080h, 0e0h, 0f8h, 0feh, 0f8h, 0e0h, 080h, 000h, 002h, 00eh, 03eh, 0feh, 03eh, 00eh, 002h, 000h + db 018h, 03ch, 07eh, 018h, 018h, 07eh, 03ch, 018h, 066h, 066h, 066h, 066h, 066h, 000h, 066h, 000h + db 07fh, 0dbh, 0dbh, 07bh, 01bh, 01bh, 01bh, 000h, 03eh, 063h, 038h, 06ch, 06ch, 038h, 0cch, 078h + db 000h, 000h, 000h, 000h, 07eh, 07eh, 07eh, 000h, 018h, 03ch, 07eh, 018h, 07eh, 03ch, 018h, 0ffh + db 018h, 03ch, 07eh, 018h, 018h, 018h, 018h, 000h, 018h, 018h, 018h, 018h, 07eh, 03ch, 018h, 000h + db 000h, 018h, 00ch, 0feh, 00ch, 018h, 000h, 000h, 000h, 030h, 060h, 0feh, 060h, 030h, 000h, 000h + db 000h, 000h, 0c0h, 0c0h, 0c0h, 0feh, 000h, 000h, 000h, 024h, 066h, 0ffh, 066h, 024h, 000h, 000h + db 000h, 018h, 03ch, 07eh, 0ffh, 0ffh, 000h, 000h, 000h, 0ffh, 0ffh, 07eh, 03ch, 018h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 030h, 078h, 078h, 030h, 030h, 000h, 030h, 000h + db 06ch, 06ch, 06ch, 000h, 000h, 000h, 000h, 000h, 06ch, 06ch, 0feh, 06ch, 0feh, 06ch, 06ch, 000h + db 030h, 07ch, 0c0h, 078h, 00ch, 0f8h, 030h, 000h, 000h, 0c6h, 0cch, 018h, 030h, 066h, 0c6h, 000h + db 038h, 06ch, 038h, 076h, 0dch, 0cch, 076h, 000h, 060h, 060h, 0c0h, 000h, 000h, 000h, 000h, 000h + db 018h, 030h, 060h, 060h, 060h, 030h, 018h, 000h, 060h, 030h, 018h, 018h, 018h, 030h, 060h, 000h + db 000h, 066h, 03ch, 0ffh, 03ch, 066h, 000h, 000h, 000h, 030h, 030h, 0fch, 030h, 030h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 030h, 030h, 060h, 000h, 000h, 000h, 0fch, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 030h, 030h, 000h, 006h, 00ch, 018h, 030h, 060h, 0c0h, 080h, 000h + db 07ch, 0c6h, 0ceh, 0deh, 0f6h, 0e6h, 07ch, 000h, 030h, 070h, 030h, 030h, 030h, 030h, 0fch, 000h + db 078h, 0cch, 00ch, 038h, 060h, 0cch, 0fch, 000h, 078h, 0cch, 00ch, 038h, 00ch, 0cch, 078h, 000h + db 01ch, 03ch, 06ch, 0cch, 0feh, 00ch, 01eh, 000h, 0fch, 0c0h, 0f8h, 00ch, 00ch, 0cch, 078h, 000h + db 038h, 060h, 0c0h, 0f8h, 0cch, 0cch, 078h, 000h, 0fch, 0cch, 00ch, 018h, 030h, 030h, 030h, 000h + db 078h, 0cch, 0cch, 078h, 0cch, 0cch, 078h, 000h, 078h, 0cch, 0cch, 07ch, 00ch, 018h, 070h, 000h + db 000h, 030h, 030h, 000h, 000h, 030h, 030h, 000h, 000h, 030h, 030h, 000h, 000h, 030h, 030h, 060h + db 018h, 030h, 060h, 0c0h, 060h, 030h, 018h, 000h, 000h, 000h, 0fch, 000h, 000h, 0fch, 000h, 000h + db 060h, 030h, 018h, 00ch, 018h, 030h, 060h, 000h, 078h, 0cch, 00ch, 018h, 030h, 000h, 030h, 000h + db 07ch, 0c6h, 0deh, 0deh, 0deh, 0c0h, 078h, 000h, 030h, 078h, 0cch, 0cch, 0fch, 0cch, 0cch, 000h + db 0fch, 066h, 066h, 07ch, 066h, 066h, 0fch, 000h, 03ch, 066h, 0c0h, 0c0h, 0c0h, 066h, 03ch, 000h + db 0f8h, 06ch, 066h, 066h, 066h, 06ch, 0f8h, 000h, 0feh, 062h, 068h, 078h, 068h, 062h, 0feh, 000h + db 0feh, 062h, 068h, 078h, 068h, 060h, 0f0h, 000h, 03ch, 066h, 0c0h, 0c0h, 0ceh, 066h, 03eh, 000h + db 0cch, 0cch, 0cch, 0fch, 0cch, 0cch, 0cch, 000h, 078h, 030h, 030h, 030h, 030h, 030h, 078h, 000h + db 01eh, 00ch, 00ch, 00ch, 0cch, 0cch, 078h, 000h, 0e6h, 066h, 06ch, 078h, 06ch, 066h, 0e6h, 000h + db 0f0h, 060h, 060h, 060h, 062h, 066h, 0feh, 000h, 0c6h, 0eeh, 0feh, 0feh, 0d6h, 0c6h, 0c6h, 000h + db 0c6h, 0e6h, 0f6h, 0deh, 0ceh, 0c6h, 0c6h, 000h, 038h, 06ch, 0c6h, 0c6h, 0c6h, 06ch, 038h, 000h + db 0fch, 066h, 066h, 07ch, 060h, 060h, 0f0h, 000h, 078h, 0cch, 0cch, 0cch, 0dch, 078h, 01ch, 000h + db 0fch, 066h, 066h, 07ch, 06ch, 066h, 0e6h, 000h, 078h, 0cch, 0e0h, 070h, 01ch, 0cch, 078h, 000h + db 0fch, 0b4h, 030h, 030h, 030h, 030h, 078h, 000h, 0cch, 0cch, 0cch, 0cch, 0cch, 0cch, 0fch, 000h + db 0cch, 0cch, 0cch, 0cch, 0cch, 078h, 030h, 000h, 0c6h, 0c6h, 0c6h, 0d6h, 0feh, 0eeh, 0c6h, 000h + db 0c6h, 0c6h, 06ch, 038h, 038h, 06ch, 0c6h, 000h, 0cch, 0cch, 0cch, 078h, 030h, 030h, 078h, 000h + db 0feh, 0c6h, 08ch, 018h, 032h, 066h, 0feh, 000h, 078h, 060h, 060h, 060h, 060h, 060h, 078h, 000h + db 0c0h, 060h, 030h, 018h, 00ch, 006h, 002h, 000h, 078h, 018h, 018h, 018h, 018h, 018h, 078h, 000h + db 010h, 038h, 06ch, 0c6h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 0ffh + db 030h, 030h, 018h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 078h, 00ch, 07ch, 0cch, 076h, 000h + db 0e0h, 060h, 060h, 07ch, 066h, 066h, 0dch, 000h, 000h, 000h, 078h, 0cch, 0c0h, 0cch, 078h, 000h + db 01ch, 00ch, 00ch, 07ch, 0cch, 0cch, 076h, 000h, 000h, 000h, 078h, 0cch, 0fch, 0c0h, 078h, 000h + db 038h, 06ch, 060h, 0f0h, 060h, 060h, 0f0h, 000h, 000h, 000h, 076h, 0cch, 0cch, 07ch, 00ch, 0f8h + db 0e0h, 060h, 06ch, 076h, 066h, 066h, 0e6h, 000h, 030h, 000h, 070h, 030h, 030h, 030h, 078h, 000h + db 00ch, 000h, 00ch, 00ch, 00ch, 0cch, 0cch, 078h, 0e0h, 060h, 066h, 06ch, 078h, 06ch, 0e6h, 000h + db 070h, 030h, 030h, 030h, 030h, 030h, 078h, 000h, 000h, 000h, 0cch, 0feh, 0feh, 0d6h, 0c6h, 000h + db 000h, 000h, 0f8h, 0cch, 0cch, 0cch, 0cch, 000h, 000h, 000h, 078h, 0cch, 0cch, 0cch, 078h, 000h + db 000h, 000h, 0dch, 066h, 066h, 07ch, 060h, 0f0h, 000h, 000h, 076h, 0cch, 0cch, 07ch, 00ch, 01eh + db 000h, 000h, 0dch, 076h, 066h, 060h, 0f0h, 000h, 000h, 000h, 07ch, 0c0h, 078h, 00ch, 0f8h, 000h + db 010h, 030h, 07ch, 030h, 030h, 034h, 018h, 000h, 000h, 000h, 0cch, 0cch, 0cch, 0cch, 076h, 000h + db 000h, 000h, 0cch, 0cch, 0cch, 078h, 030h, 000h, 000h, 000h, 0c6h, 0d6h, 0feh, 0feh, 06ch, 000h + db 000h, 000h, 0c6h, 06ch, 038h, 06ch, 0c6h, 000h, 000h, 000h, 0cch, 0cch, 0cch, 07ch, 00ch, 0f8h + db 000h, 000h, 0fch, 098h, 030h, 064h, 0fch, 000h, 01ch, 030h, 030h, 0e0h, 030h, 030h, 01ch, 000h + db 018h, 018h, 018h, 000h, 018h, 018h, 018h, 000h, 0e0h, 030h, 030h, 01ch, 030h, 030h, 0e0h, 000h + db 076h, 0dch, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 010h, 038h, 06ch, 0c6h, 0c6h, 0feh, 000h + ; disGetNextSymbol 0xffe6e LB 0x192 -> off=0x0 cb=0000000000000021 uValue=00000000000f1e6e 'biosorg_check_at_0FE6Eh' +biosorg_check_at_0FE6Eh: ; 0xffe6e LB 0x21 + cmp ah, 0b1h ; 80 fc b1 ; 0xffe6e orgs.asm:1903 + jne short 0fe82h ; 75 0f ; 0xffe71 orgs.asm:1904 + push ES ; 06 ; 0xffe73 orgs.asm:1906 + push DS ; 1e ; 0xffe74 orgs.asm:1907 + push CS ; 0e ; 0xffe75 orgs.asm:104 + pop DS ; 1f ; 0xffe76 orgs.asm:105 + cld ; fc ; 0xffe77 orgs.asm:106 + pushad ; 66 60 ; 0xffe78 orgs.asm:1910 + call 09b78h ; e8 fb 9c ; 0xffe7a orgs.asm:1911 + popad ; 66 61 ; 0xffe7d orgs.asm:1912 + pop DS ; 1f ; 0xffe7f orgs.asm:1914 + pop ES ; 07 ; 0xffe80 orgs.asm:1915 + iret ; cf ; 0xffe81 orgs.asm:1916 + push ES ; 06 ; 0xffe82 orgs.asm:1920 + push DS ; 1e ; 0xffe83 orgs.asm:1921 + pushaw ; 60 ; 0xffe84 orgs.asm:97 + push CS ; 0e ; 0xffe85 orgs.asm:104 + pop DS ; 1f ; 0xffe86 orgs.asm:105 + cld ; fc ; 0xffe87 orgs.asm:106 + call 0710fh ; e8 84 72 ; 0xffe88 orgs.asm:1925 + popaw ; 61 ; 0xffe8b orgs.asm:114 + pop DS ; 1f ; 0xffe8c orgs.asm:1927 + pop ES ; 07 ; 0xffe8d orgs.asm:1928 + iret ; cf ; 0xffe8e orgs.asm:1929 + ; disGetNextSymbol 0xffe8f LB 0x171 -> off=0x0 cb=0000000000000016 uValue=00000000000f1e8f 'biosorg_check_before_or_at_0FEA3h' +biosorg_check_before_or_at_0FEA3h: ; 0xffe8f LB 0x16 + times 0x14 db 0 + db 'XM' + ; disGetNextSymbol 0xffea5 LB 0x15b -> off=0x0 cb=0000000000000043 uValue=00000000000f1ea5 'int08_handler' +int08_handler: ; 0xffea5 LB 0x43 + sti ; fb ; 0xffea5 orgs.asm:1939 + push eax ; 66 50 ; 0xffea6 orgs.asm:1940 + push DS ; 1e ; 0xffea8 orgs.asm:1945 + push dx ; 52 ; 0xffea9 orgs.asm:1946 + mov ax, strict word 00040h ; b8 40 00 ; 0xffeaa orgs.asm:1947 + mov ds, ax ; 8e d8 ; 0xffead orgs.asm:1948 + mov eax, dword [0006ch] ; 66 a1 6c 00 ; 0xffeaf orgs.asm:1951 + inc eax ; 66 40 ; 0xffeb3 orgs.asm:1952 + cmp eax, strict dword 0001800b0h ; 66 3d b0 00 18 00 ; 0xffeb5 orgs.asm:1964 + jc short 0fec4h ; 72 07 ; 0xffebb orgs.asm:1965 + db 066h, 033h, 0c0h + ; xor eax, eax ; 66 33 c0 ; 0xffebd orgs.asm:1974 + inc byte [word 00070h] ; fe 06 70 00 ; 0xffec0 orgs.asm:1975 + mov dword [0006ch], eax ; 66 a3 6c 00 ; 0xffec4 orgs.asm:1978 + mov AL, byte [00040h] ; a0 40 00 ; 0xffec8 orgs.asm:1986 + db 00ah, 0c0h + ; or al, al ; 0a c0 ; 0xffecb orgs.asm:1987 + je short 0feddh ; 74 0e ; 0xffecd orgs.asm:1988 + db 0feh, 0c8h + ; dec al ; fe c8 ; 0xffecf orgs.asm:1989 + mov byte [00040h], AL ; a2 40 00 ; 0xffed1 orgs.asm:1990 + jne short 0feddh ; 75 07 ; 0xffed4 orgs.asm:1991 + mov dx, 003f2h ; ba f2 03 ; 0xffed6 orgs.asm:1993 + in AL, DX ; ec ; 0xffed9 orgs.asm:1994 + and AL, strict byte 0cfh ; 24 cf ; 0xffeda orgs.asm:1995 + out DX, AL ; ee ; 0xffedc orgs.asm:1996 + int 01ch ; cd 1c ; 0xffedd orgs.asm:1999 + cli ; fa ; 0xffedf orgs.asm:2001 + call 0e034h ; e8 51 e1 ; 0xffee0 orgs.asm:2002 + pop dx ; 5a ; 0xffee3 orgs.asm:2003 + pop DS ; 1f ; 0xffee4 orgs.asm:2004 + pop eax ; 66 58 ; 0xffee5 orgs.asm:2006 + iret ; cf ; 0xffee7 orgs.asm:2011 + ; disGetNextSymbol 0xffee8 LB 0x118 -> off=0x0 cb=000000000000000b uValue=00000000000f1ee8 'biosorg_check_before_or_at_0FEF1h' +biosorg_check_before_or_at_0FEF1h: ; 0xffee8 LB 0xb + times 0x9 db 0 + db 'XM' + ; disGetNextSymbol 0xffef3 LB 0x10d -> off=0x0 cb=000000000000000d uValue=00000000000f1ef3 'biosorg_check_at_0FEF3h' +biosorg_check_at_0FEF3h: ; 0xffef3 LB 0xd + times 0xb db 0 + db 'XM' + ; disGetNextSymbol 0xfff00 LB 0x100 -> off=0x0 cb=0000000000000019 uValue=00000000000f1f00 'biosorg_check_at_0FF00h' +biosorg_check_at_0FF00h: ; 0xfff00 LB 0x19 + dec di ; 4f ; 0xfff00 + jc short 0ff64h ; 72 61 ; 0xfff01 + arpl [si+065h], bp ; 63 6c 65 ; 0xfff03 + and byte [bp+04dh], dl ; 20 56 4d ; 0xfff06 + and byte [bp+069h], dl ; 20 56 69 ; 0xfff09 + jc short 0ff82h ; 72 74 ; 0xfff0c + jne short 0ff71h ; 75 61 ; 0xfff0e + insb ; 6c ; 0xfff10 + inc dx ; 42 ; 0xfff11 + outsw ; 6f ; 0xfff12 + js short 0ff35h ; 78 20 ; 0xfff13 + inc dx ; 42 ; 0xfff15 + dec cx ; 49 ; 0xfff16 + dec di ; 4f ; 0xfff17 + push bx ; 53 ; 0xfff18 + ; disGetNextSymbol 0xfff19 LB 0xe7 -> off=0x0 cb=000000000000003a uValue=00000000000f1f19 'biosorg_check_before_or_at_0FF51h' +biosorg_check_before_or_at_0FF51h: ; 0xfff19 LB 0x3a + times 0x38 db 0 + db 'XM' + ; disGetNextSymbol 0xfff53 LB 0xad -> off=0x0 cb=0000000000000001 uValue=00000000000f1f53 'dummy_iret' +dummy_iret: ; 0xfff53 LB 0x1 + iret ; cf ; 0xfff53 orgs.asm:2036 + ; disGetNextSymbol 0xfff54 LB 0xac -> off=0x0 cb=000000000000002c uValue=00000000000f1f54 'biosorg_check_at_0FF54h' +biosorg_check_at_0FF54h: ; 0xfff54 LB 0x2c + iret ; cf ; 0xfff54 orgs.asm:2045 + mov ax, ax ; 89 c0 ; 0xfff55 + mov ax, ax ; 89 c0 ; 0xfff57 + mov ax, ax ; 89 c0 ; 0xfff59 + mov ax, ax ; 89 c0 ; 0xfff5b + mov ax, ax ; 89 c0 ; 0xfff5d + cld ; fc ; 0xfff5f + pop di ; 5f ; 0xfff60 + push bx ; 53 ; 0xfff61 + dec bp ; 4d ; 0xfff62 + pop di ; 5f ; 0xfff63 + jnl short 0ff85h ; 7d 1f ; 0xfff64 + add al, byte [di] ; 02 05 ; 0xfff66 + inc word [bx+si] ; ff 00 ; 0xfff68 + add byte [bx+si], al ; 00 00 ; 0xfff6a + add byte [bx+si], al ; 00 00 ; 0xfff6c + add byte [bx+si], al ; 00 00 ; 0xfff6e + pop di ; 5f ; 0xfff70 + inc sp ; 44 ; 0xfff71 + dec bp ; 4d ; 0xfff72 + dec cx ; 49 ; 0xfff73 + pop di ; 5f ; 0xfff74 + and ax, strict word 00000h ; 25 00 00 ; 0xfff75 + add byte [bx+si], dl ; 00 10 ; 0xfff78 + push CS ; 0e ; 0xfff7a + add byte [bx+si], al ; 00 00 ; 0xfff7b + add byte [di], ah ; 00 25 ; 0xfff7d + times 0x1 db 0 + ; disGetNextSymbol 0xfff80 LB 0x80 -> off=0x0 cb=0000000000000070 uValue=00000000000f1f80 'biosorg_check_before_or_at_0FFEEh' +biosorg_check_before_or_at_0FFEEh: ; 0xfff80 LB 0x70 + times 0x6e db 0 + db 'XM' + ; disGetNextSymbol 0xffff0 LB 0x10 -> off=0x0 cb=0000000000000010 uValue=00000000000f1ff0 'cpu_reset' +cpu_reset: ; 0xffff0 LB 0x10 + jmp far 0f000h:0e05bh ; ea 5b e0 00 f0 ; 0xffff0 orgs.asm:2055 + ; disGetNextSymbol 0xffff5 LB 0xb -> off=0xb cb=0000000000000000 uValue=0000000000100000 '_dummy_addr_0x100000' + db 030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fch, 041h diff --git a/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative386.md5sum b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative386.md5sum new file mode 100644 index 00000000..0e14786b --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative386.md5sum @@ -0,0 +1 @@ +bf4957d3b704b8fe66ba88679a891536 *VBoxPcBios386.rom diff --git a/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative8086.asm b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative8086.asm new file mode 100644 index 00000000..a18b3206 --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative8086.asm @@ -0,0 +1,17844 @@ +; $Id: VBoxBiosAlternative8086.asm $ +;; @file +; Auto Generated source file. Do not edit. +; + +; +; Source file: post.c +; +; $Id: VBoxBiosAlternative8086.asm $ +; BIOS POST routines. Used only during initialization. +; +; +; +; Copyright (C) 2004-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + +; +; Source file: bios.c +; +; $Id: VBoxBiosAlternative8086.asm $ +; PC BIOS - ??? +; +; +; +; Copyright (C) 2006-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; -------------------------------------------------------------------- +; +; This code is based on: +; +; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment +; +; Copyright (C) 2002 MandrakeSoft S.A. +; +; MandrakeSoft S.A. +; 43, rue d'Aboukir +; 75002 Paris - France +; http://www.linux-mandrake.com/ +; http://www.mandrakesoft.com/ +; +; This library is free software; you can redistribute it and/or +; modify it under the terms of the GNU Lesser General Public +; License as published by the Free Software Foundation; either +; version 2 of the License, or (at your option) any later version. +; +; This library is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +; Lesser General Public License for more details. +; +; You should have received a copy of the GNU Lesser General Public +; License along with this library; if not, write to the Free Software +; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +; + +; +; Source file: print.c +; +; $Id: VBoxBiosAlternative8086.asm $ +; PC BIOS - ??? +; +; +; +; Copyright (C) 2006-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; -------------------------------------------------------------------- +; +; This code is based on: +; +; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment +; +; Copyright (C) 2002 MandrakeSoft S.A. +; +; MandrakeSoft S.A. +; 43, rue d'Aboukir +; 75002 Paris - France +; http://www.linux-mandrake.com/ +; http://www.mandrakesoft.com/ +; +; This library is free software; you can redistribute it and/or +; modify it under the terms of the GNU Lesser General Public +; License as published by the Free Software Foundation; either +; version 2 of the License, or (at your option) any later version. +; +; This library is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +; Lesser General Public License for more details. +; +; You should have received a copy of the GNU Lesser General Public +; License along with this library; if not, write to the Free Software +; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +; + +; +; Source file: ata.c +; +; $Id: VBoxBiosAlternative8086.asm $ +; PC BIOS - ??? +; +; +; +; Copyright (C) 2006-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; -------------------------------------------------------------------- +; +; This code is based on: +; +; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment +; +; Copyright (C) 2002 MandrakeSoft S.A. +; +; MandrakeSoft S.A. +; 43, rue d'Aboukir +; 75002 Paris - France +; http://www.linux-mandrake.com/ +; http://www.mandrakesoft.com/ +; +; This library is free software; you can redistribute it and/or +; modify it under the terms of the GNU Lesser General Public +; License as published by the Free Software Foundation; either +; version 2 of the License, or (at your option) any later version. +; +; This library is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +; Lesser General Public License for more details. +; +; You should have received a copy of the GNU Lesser General Public +; License along with this library; if not, write to the Free Software +; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +; + +; +; Source file: floppy.c +; +; $Id: VBoxBiosAlternative8086.asm $ +; PC BIOS - ??? +; +; +; +; Copyright (C) 2006-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; -------------------------------------------------------------------- +; +; This code is based on: +; +; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment +; +; Copyright (C) 2002 MandrakeSoft S.A. +; +; MandrakeSoft S.A. +; 43, rue d'Aboukir +; 75002 Paris - France +; http://www.linux-mandrake.com/ +; http://www.mandrakesoft.com/ +; +; This library is free software; you can redistribute it and/or +; modify it under the terms of the GNU Lesser General Public +; License as published by the Free Software Foundation; either +; version 2 of the License, or (at your option) any later version. +; +; This library is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +; Lesser General Public License for more details. +; +; You should have received a copy of the GNU Lesser General Public +; License along with this library; if not, write to the Free Software +; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +; + +; +; Source file: floppyt.c +; +; $Id: VBoxBiosAlternative8086.asm $ +; Floppy drive tables. +; +; +; +; Copyright (C) 2011-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + +; +; Source file: eltorito.c +; +; $Id: VBoxBiosAlternative8086.asm $ +; PC BIOS - ??? +; +; +; +; Copyright (C) 2006-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; -------------------------------------------------------------------- +; +; This code is based on: +; +; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment +; +; Copyright (C) 2002 MandrakeSoft S.A. +; +; MandrakeSoft S.A. +; 43, rue d'Aboukir +; 75002 Paris - France +; http://www.linux-mandrake.com/ +; http://www.mandrakesoft.com/ +; +; This library is free software; you can redistribute it and/or +; modify it under the terms of the GNU Lesser General Public +; License as published by the Free Software Foundation; either +; version 2 of the License, or (at your option) any later version. +; +; This library is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +; Lesser General Public License for more details. +; +; You should have received a copy of the GNU Lesser General Public +; License along with this library; if not, write to the Free Software +; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +; + +; +; Source file: boot.c +; +; $Id: VBoxBiosAlternative8086.asm $ +; PC BIOS - ??? +; +; +; +; Copyright (C) 2006-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; -------------------------------------------------------------------- +; +; This code is based on: +; +; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment +; +; Copyright (C) 2002 MandrakeSoft S.A. +; +; MandrakeSoft S.A. +; 43, rue d'Aboukir +; 75002 Paris - France +; http://www.linux-mandrake.com/ +; http://www.mandrakesoft.com/ +; +; This library is free software; you can redistribute it and/or +; modify it under the terms of the GNU Lesser General Public +; License as published by the Free Software Foundation; either +; version 2 of the License, or (at your option) any later version. +; +; This library is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +; Lesser General Public License for more details. +; +; You should have received a copy of the GNU Lesser General Public +; License along with this library; if not, write to the Free Software +; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +; + +; +; Source file: keyboard.c +; +; $Id: VBoxBiosAlternative8086.asm $ +; PC BIOS - ??? +; +; +; +; Copyright (C) 2006-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; -------------------------------------------------------------------- +; +; This code is based on: +; +; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment +; +; Copyright (C) 2002 MandrakeSoft S.A. +; +; MandrakeSoft S.A. +; 43, rue d'Aboukir +; 75002 Paris - France +; http://www.linux-mandrake.com/ +; http://www.mandrakesoft.com/ +; +; This library is free software; you can redistribute it and/or +; modify it under the terms of the GNU Lesser General Public +; License as published by the Free Software Foundation; either +; version 2 of the License, or (at your option) any later version. +; +; This library is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +; Lesser General Public License for more details. +; +; You should have received a copy of the GNU Lesser General Public +; License along with this library; if not, write to the Free Software +; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +; + +; +; Source file: disk.c +; +; $Id: VBoxBiosAlternative8086.asm $ +; PC BIOS - ??? +; +; +; +; Copyright (C) 2006-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; -------------------------------------------------------------------- +; +; This code is based on: +; +; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment +; +; Copyright (C) 2002 MandrakeSoft S.A. +; +; MandrakeSoft S.A. +; 43, rue d'Aboukir +; 75002 Paris - France +; http://www.linux-mandrake.com/ +; http://www.mandrakesoft.com/ +; +; This library is free software; you can redistribute it and/or +; modify it under the terms of the GNU Lesser General Public +; License as published by the Free Software Foundation; either +; version 2 of the License, or (at your option) any later version. +; +; This library is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +; Lesser General Public License for more details. +; +; You should have received a copy of the GNU Lesser General Public +; License along with this library; if not, write to the Free Software +; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +; + +; +; Source file: serial.c +; +; $Id: VBoxBiosAlternative8086.asm $ +; PC BIOS - ??? +; +; +; +; Copyright (C) 2006-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; -------------------------------------------------------------------- +; +; This code is based on: +; +; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment +; +; Copyright (C) 2002 MandrakeSoft S.A. +; +; MandrakeSoft S.A. +; 43, rue d'Aboukir +; 75002 Paris - France +; http://www.linux-mandrake.com/ +; http://www.mandrakesoft.com/ +; +; This library is free software; you can redistribute it and/or +; modify it under the terms of the GNU Lesser General Public +; License as published by the Free Software Foundation; either +; version 2 of the License, or (at your option) any later version. +; +; This library is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +; Lesser General Public License for more details. +; +; You should have received a copy of the GNU Lesser General Public +; License along with this library; if not, write to the Free Software +; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +; + +; +; Source file: system.c +; +; $Id: VBoxBiosAlternative8086.asm $ +; PC BIOS - ??? +; +; +; +; Copyright (C) 2006-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; -------------------------------------------------------------------- +; +; This code is based on: +; +; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment +; +; Copyright (C) 2002 MandrakeSoft S.A. +; +; MandrakeSoft S.A. +; 43, rue d'Aboukir +; 75002 Paris - France +; http://www.linux-mandrake.com/ +; http://www.mandrakesoft.com/ +; +; This library is free software; you can redistribute it and/or +; modify it under the terms of the GNU Lesser General Public +; License as published by the Free Software Foundation; either +; version 2 of the License, or (at your option) any later version. +; +; This library is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +; Lesser General Public License for more details. +; +; You should have received a copy of the GNU Lesser General Public +; License along with this library; if not, write to the Free Software +; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +; + +; +; Source file: invop.c +; +; $Id: VBoxBiosAlternative8086.asm $ +; Real mode invalid opcode handler. +; +; +; +; Copyright (C) 2013-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + +; +; Source file: timepci.c +; +; +; Copyright (C) 2006-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; -------------------------------------------------------------------- +; +; This code is based on: +; +; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment +; +; Copyright (C) 2002 MandrakeSoft S.A. +; +; MandrakeSoft S.A. +; 43, rue d'Aboukir +; 75002 Paris - France +; http://www.linux-mandrake.com/ +; http://www.mandrakesoft.com/ +; +; This library is free software; you can redistribute it and/or +; modify it under the terms of the GNU Lesser General Public +; License as published by the Free Software Foundation; either +; version 2 of the License, or (at your option) any later version. +; +; This library is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +; Lesser General Public License for more details. +; +; You should have received a copy of the GNU Lesser General Public +; License along with this library; if not, write to the Free Software +; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +; + +; +; Source file: ps2mouse.c +; +; $Id: VBoxBiosAlternative8086.asm $ +; PC BIOS - ??? +; +; +; +; Copyright (C) 2006-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; -------------------------------------------------------------------- +; +; This code is based on: +; +; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment +; +; Copyright (C) 2002 MandrakeSoft S.A. +; +; MandrakeSoft S.A. +; 43, rue d'Aboukir +; 75002 Paris - France +; http://www.linux-mandrake.com/ +; http://www.mandrakesoft.com/ +; +; This library is free software; you can redistribute it and/or +; modify it under the terms of the GNU Lesser General Public +; License as published by the Free Software Foundation; either +; version 2 of the License, or (at your option) any later version. +; +; This library is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +; Lesser General Public License for more details. +; +; You should have received a copy of the GNU Lesser General Public +; License along with this library; if not, write to the Free Software +; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +; + +; +; Source file: parallel.c +; +; $Id: VBoxBiosAlternative8086.asm $ +; PC BIOS - ??? +; +; +; +; Copyright (C) 2006-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; -------------------------------------------------------------------- +; +; This code is based on: +; +; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment +; +; Copyright (C) 2002 MandrakeSoft S.A. +; +; MandrakeSoft S.A. +; 43, rue d'Aboukir +; 75002 Paris - France +; http://www.linux-mandrake.com/ +; http://www.mandrakesoft.com/ +; +; This library is free software; you can redistribute it and/or +; modify it under the terms of the GNU Lesser General Public +; License as published by the Free Software Foundation; either +; version 2 of the License, or (at your option) any later version. +; +; This library is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +; Lesser General Public License for more details. +; +; You should have received a copy of the GNU Lesser General Public +; License along with this library; if not, write to the Free Software +; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +; + +; +; Source file: logo.c +; +; $Id: VBoxBiosAlternative8086.asm $ +; Stuff for drawing the BIOS logo. +; +; +; +; Copyright (C) 2004-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + +; +; Source file: scsi.c +; +; $Id: VBoxBiosAlternative8086.asm $ +; SCSI host adapter driver to boot from SCSI disks +; +; +; +; Copyright (C) 2004-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + +; +; Source file: ahci.c +; +; $Id: VBoxBiosAlternative8086.asm $ +; AHCI host adapter driver to boot from SATA disks. +; +; +; +; Copyright (C) 2011-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + +; +; Source file: apm.c +; +; $Id: VBoxBiosAlternative8086.asm $ +; APM BIOS support. Implements APM version 1.2. +; +; +; +; Copyright (C) 2004-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + +; +; Source file: pcibios.c +; +; $Id: VBoxBiosAlternative8086.asm $ +; PCI BIOS support. +; +; +; +; Copyright (C) 2004-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + +; +; Source file: pciutil.c +; +; $Id: VBoxBiosAlternative8086.asm $ +; Utility routines for calling the PCI BIOS. +; +; +; +; Copyright (C) 2011-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + +; +; Source file: vds.c +; +; $Id: VBoxBiosAlternative8086.asm $ +; Utility routines for calling the Virtual DMA Services. +; +; +; +; Copyright (C) 2011-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + +; +; Source file: __U4M.asm +; +; $Id: VBoxBiosAlternative8086.asm $ +; Compiler support routines. +; +; +; +; Copyright (C) 2012-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; + +; +; Source file: __U4D.asm +; +; $Id: VBoxBiosAlternative8086.asm $ +; Compiler support routines. +; +; +; +; Copyright (C) 2012-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; + +; +; Source file: __U8RS.asm +; +; $Id: VBoxBiosAlternative8086.asm $ +; Compiler support routines. +; +; +; +; Copyright (C) 2012-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; + +; +; Source file: __U8LS.asm +; +; $Id: VBoxBiosAlternative8086.asm $ +; Compiler support routines. +; +; +; +; Copyright (C) 2012-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; + +; +; Source file: fmemset.asm +; +; $Id: VBoxBiosAlternative8086.asm $ +; Compiler support routines. +; +; +; +; Copyright (C) 2012-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; + +; +; Source file: fmemcpy.asm +; +; $Id: VBoxBiosAlternative8086.asm $ +; Compiler support routines. +; +; +; +; Copyright (C) 2012-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; + +; +; Source file: pcibio32.asm +; +; $Id: VBoxBiosAlternative8086.asm $ +; BIOS32 service directory and 32-bit PCI BIOS entry point +; +; +; +; Copyright (C) 2006-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; -------------------------------------------------------------------- + +; +; Source file: apm_pm.asm +; +; $Id: +; Protected-mode APM implementation. +; +; +; +; Copyright (C) 2006-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; + +; +; Source file: orgs.asm +; +; $Id: VBoxBiosAlternative8086.asm $ +; ??? +; +; +; +; Copyright (C) 2006-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; -------------------------------------------------------------------- +; +; This code is based on: +; +; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment +; +; Copyright (C) 2002 MandrakeSoft S.A. +; +; MandrakeSoft S.A. +; 43, rue d'Aboukir +; 75002 Paris - France +; http://www.linux-mandrake.com/ +; http://www.mandrakesoft.com/ +; +; This library is free software; you can redistribute it and/or +; modify it under the terms of the GNU Lesser General Public +; License as published by the Free Software Foundation; either +; version 2 of the License, or (at your option) any later version. +; +; This library is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +; Lesser General Public License for more details. +; +; You should have received a copy of the GNU Lesser General Public +; License along with this library; if not, write to the Free Software +; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +; + +; +; Source file: DoUInt32Div.c +; +; $Id: VBoxBiosAlternative8086.asm $ +; AHCI host adapter driver to boot from SATA disks. +; +; +; +; Copyright (C) 2011-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + +; +; Source file: ASMBitLastSetU16.asm +; +; $Id: VBoxBiosAlternative8086.asm $ +; BiosCommonCode - ASMBitLastSetU16() - borrowed from IPRT. +; +; +; +; Copyright (C) 2006-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; + +; +; Source file: pci32.c +; +; $Id: VBoxBiosAlternative8086.asm $ +; 32-bit PCI BIOS wrapper. +; +; +; +; Copyright (C) 2004-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + + + + +section _DATA progbits vstart=0x0 align=1 ; size=0xb0 class=DATA group=DGROUP + ; disGetNextSymbol 0xf0000 LB 0xb0 -> off=0x0 cb=000000000000005b uValue=00000000000f0000 '_fd_parm' +_fd_parm: ; 0xf0000 LB 0x5b + db 0dfh, 002h, 025h, 002h, 009h, 02ah, 0ffh, 050h, 0f6h, 00fh, 008h, 027h, 080h, 0dfh, 002h, 025h + db 002h, 009h, 02ah, 0ffh, 050h, 0f6h, 00fh, 008h, 027h, 040h, 0dfh, 002h, 025h, 002h, 00fh, 01bh + db 0ffh, 054h, 0f6h, 00fh, 008h, 04fh, 000h, 0dfh, 002h, 025h, 002h, 009h, 02ah, 0ffh, 050h, 0f6h + db 00fh, 008h, 04fh, 080h, 0afh, 002h, 025h, 002h, 012h, 01bh, 0ffh, 06ch, 0f6h, 00fh, 008h, 04fh + db 000h, 0afh, 002h, 025h, 002h, 024h, 01bh, 0ffh, 054h, 0f6h, 00fh, 008h, 04fh, 0c0h, 0afh, 002h + db 025h, 002h, 0ffh, 01bh, 0ffh, 054h, 0f6h, 00fh, 008h, 0ffh, 000h + ; disGetNextSymbol 0xf005b LB 0x55 -> off=0x0 cb=000000000000000f uValue=00000000000f005b '_fd_map' +_fd_map: ; 0xf005b LB 0xf + db 001h, 000h, 002h, 002h, 003h, 003h, 004h, 004h, 005h, 005h, 00eh, 006h, 00fh, 006h, 000h + ; disGetNextSymbol 0xf006a LB 0x46 -> off=0x0 cb=000000000000000c uValue=00000000000f006a '_pktacc' +_pktacc: ; 0xf006a LB 0xc + db 000h, 000h, 000h, 000h, 000h, 000h, 044h, 02bh, 0a1h, 07ch, 087h, 08ch + ; disGetNextSymbol 0xf0076 LB 0x3a -> off=0x0 cb=000000000000000c uValue=00000000000f0076 '_softrst' +_softrst: ; 0xf0076 LB 0xc + db 000h, 000h, 000h, 000h, 000h, 000h, 0d9h, 02dh, 0dah, 03bh, 0dah, 03bh + ; disGetNextSymbol 0xf0082 LB 0x2e -> off=0x0 cb=000000000000002e uValue=00000000000f0082 '_dskacc' +_dskacc: ; 0xf0082 LB 0x2e + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 028h, 02ah, 0e9h, 02ah, 000h, 000h, 000h, 000h + db 0cfh, 07ah, 0b8h, 07bh, 055h, 08bh, 0ffh, 08bh, 000h, 000h, 000h, 000h, 000h, 000h, 05fh, 033h + db 032h, 05fh, 000h, 0dah, 00fh, 000h, 000h, 001h, 0f3h, 000h, 000h, 000h, 000h, 000h + +section CONST progbits vstart=0xb0 align=1 ; size=0xcde class=DATA group=DGROUP + ; disGetNextSymbol 0xf00b0 LB 0xcde -> off=0xcde cb=0000000000000000 uValue=00000000000f0d8e 'bios_cvs_version_string' + db 'NMI Handler called', 00ah, 000h + db 'INT18: BOOT FAILURE', 00ah, 000h + db '%s', 00ah, 000h, 000h + db 'FATAL: ', 000h + db 'bios_printf: unknown %ll format', 00ah, 000h + db 'bios_printf: unknown format', 00ah, 000h + db 'ata-detect: Failed to detect ATA device', 00ah, 000h + db 'ata%d-%d: PCHS=%u/%u/%u LCHS=%u/%u/%u', 00ah, 000h + db 'ata-detect: Failed to detect ATAPI device', 00ah, 000h + db ' slave', 000h + db 'master', 000h + db 'ata%d %s: ', 000h + db '%c', 000h + db ' ATA-%d Hard-Disk (%lu MBytes)', 00ah, 000h + db ' ATAPI-%d CD-ROM/DVD-ROM', 00ah, 000h + db ' ATAPI-%d Device', 00ah, 000h + db 'ata%d %s: Unknown device', 00ah, 000h + db 'ata_cmd_packet', 000h + db '%s: DATA_OUT not supported yet', 00ah, 000h + db 'set_diskette_current_cyl: drive > 1', 00ah, 000h + db 'int13_diskette_function', 000h + db '%s: drive>1 || head>1 ...', 00ah, 000h + db '%s: ctrl not ready', 00ah, 000h + db '%s: write error', 00ah, 000h + db '%s: bad floppy type', 00ah, 000h + db '%s: unsupported AH=%02x', 00ah, 000h, 000h + db 'int13_eltorito', 000h + db '%s: call with AX=%04x not implemented.', 00ah, 000h + db '%s: unsupported AH=%02x', 00ah, 000h + db 'int13_cdemu', 000h + db '%s: function %02x, emulation not active for DL= %02x', 00ah, 000h + db '%s: function %02x, error %02x !', 00ah, 000h + db '%s: function %02x. Can', 027h, 't use 64bits lba', 00ah, 000h + db '%s: function %02x, status %02x !', 00ah, 000h + db '%s: function AH=%02x unsupported, returns fail', 00ah, 000h + db 'int13_cdrom', 000h + db '%s: function %02x, ELDL out of range %02x', 00ah, 000h + db '%s: function %02x, unmapped device for ELDL=%02x', 00ah, 000h, 000h + db 'Booting from %s...', 00ah, 000h + db 'Boot from %s failed', 00ah, 000h + db 'Boot from %s %d failed', 00ah, 000h + db 'No bootable medium found! System halted.', 00ah, 000h + db 'Could not read from the boot medium! System halted.', 00ah, 000h + db 'CDROM boot failure code : %04x', 00ah, 000h + db 'Boot : bseqnr=%d, bootseq=%x', 00dh, 00ah, 000h, 000h + db 'Keyboard error:%u', 00ah, 000h + db 'KBD: int09 handler: AL=0', 00ah, 000h + db 'KBD: int09h_handler(): unknown scancode read: 0x%02x!', 00ah, 000h + db 'KBD: int09h_handler(): scancode & asciicode are zero?', 00ah, 000h + db 'KBD: int16h: out of keyboard input', 00ah, 000h + db 'KBD: unsupported int 16h function %02x', 00ah, 000h + db 'AX=%04x BX=%04x CX=%04x DX=%04x ', 00ah, 000h, 000h + db 'int13_harddisk', 000h + db '%s: function %02x, ELDL out of range %02x', 00ah, 000h + db '%s: function %02x, unmapped device for ELDL=%02x', 00ah, 000h + db '%s: function %02x, count out of range!', 00ah, 000h + db '%s: function %02x, disk %02x, parameters out of range %04x/%04x/%04x!', 00ah + db 000h + db '%s: function %02x, error %02x !', 00ah, 000h + db 'format disk track called', 00ah, 000h + db '%s: function %02xh unimplemented, returns success', 00ah, 000h + db '%s: function %02xh unsupported, returns fail', 00ah, 000h + db 'int13_harddisk_ext', 000h + db '%s: function %02x. LBA out of range', 00ah, 000h, 000h + db 'int15: Func 24h, subfunc %02xh, A20 gate control not supported', 00ah, 000h + db '*** int 15h function AH=bf not yet supported!', 00ah, 000h + db 'EISA BIOS not present', 00ah, 000h + db '*** int 15h function AX=%04x, BX=%04x not yet supported!', 00ah, 000h + db 'sendmouse', 000h + db 'setkbdcomm', 000h + db 'Mouse reset returned %02x (should be ack)', 00ah, 000h + db 'Mouse status returned %02x (should be ack)', 00ah, 000h + db 'INT 15h C2 AL=6, BH=%02x', 00ah, 000h + db 'INT 15h C2 default case entered', 00ah, 000h, 000h + db 'Key pressed: %x', 00ah, 000h + db 00ah, 00ah, ' AHCI controller:', 000h + db 00ah, ' %d) Hard disk', 000h + db 00ah, 00ah, ' SCSI controller:', 000h + db ' IDE controller:', 000h + db 00ah, 00ah, 'AHCI controller:', 00ah, 000h + db 00ah, ' %d) ', 000h + db 'Secondary ', 000h + db 'Primary ', 000h + db 'Slave', 000h + db 'Master', 000h + db 'No hard disks found', 000h + db 00ah, 000h + db 'Press F12 to select boot device.', 00ah, 000h + db 00ah, 'VirtualBox temporary boot device selection', 00ah, 00ah, 'Detected H' + db 'ard disks:', 00ah, 00ah, 000h + db 00ah, 'Other boot devices:', 00ah, ' f) Floppy', 00ah, ' c) CD-ROM', 00ah + db ' l) LAN', 00ah, 00ah, ' b) Continue booting', 00ah, 000h + db 'Delaying boot for %d seconds:', 000h + db ' %d', 000h, 000h + db 'scsi_read_sectors', 000h + db '%s: device_id out of range %d', 00ah, 000h + db 'scsi_write_sectors', 000h + db 'scsi_cmd_packet', 000h + db '%s: DATA_OUT not supported yet', 00ah, 000h + db 'scsi_enumerate_attached_devices', 000h + db '%s: SCSI_INQUIRY failed', 00ah, 000h + db '%s: SCSI_READ_CAPACITY failed', 00ah, 000h + db 'Disk %d has an unsupported sector size of %u', 00ah, 000h + db 'SCSI %d-ID#%d: LCHS=%lu/%u/%u 0x%llx sectors', 00ah, 000h + db 'SCSI %d-ID#%d: CD/DVD-ROM', 00ah, 000h, 000h + db 'ahci_read_sectors', 000h + db '%s: device_id out of range %d', 00ah, 000h + db 'ahci_write_sectors', 000h + db 'ahci_cmd_packet', 000h + db '%s: DATA_OUT not supported yet', 00ah, 000h + db 'AHCI %d-P#%d: PCHS=%u/%u/%u LCHS=%u/%u/%u 0x%llx sectors', 00ah, 000h + db 'Standby', 000h + db 'Suspend', 000h + db 'Shutdown', 000h + db 'APM: Unsupported function AX=%04X BX=%04X called', 00ah, 000h, 000h + db 'PCI: Unsupported function AX=%04X BX=%04X called', 00ah, 000h + +section CONST2 progbits vstart=0xd8e align=1 ; size=0x3fa class=DATA group=DGROUP + ; disGetNextSymbol 0xf0d8e LB 0x3fa -> off=0x0 cb=0000000000000012 uValue=00000000000f0d8e 'bios_cvs_version_string' +bios_cvs_version_string: ; 0xf0d8e LB 0x12 + db 'VirtualBox 6.0.4', 000h, 000h + ; disGetNextSymbol 0xf0da0 LB 0x3e8 -> off=0x0 cb=0000000000000008 uValue=00000000000f0da0 '_bios_prefix_string' +_bios_prefix_string: ; 0xf0da0 LB 0x8 + db 'BIOS: ', 000h, 000h + ; disGetNextSymbol 0xf0da8 LB 0x3e0 -> off=0x0 cb=0000000000000006 uValue=00000000000f0da8 'isotag' +isotag: ; 0xf0da8 LB 0x6 + db 'CD001', 000h + ; disGetNextSymbol 0xf0dae LB 0x3da -> off=0x0 cb=0000000000000018 uValue=00000000000f0dae 'eltorito' +eltorito: ; 0xf0dae LB 0x18 + db 'EL TORITO SPECIFICATION', 000h + ; disGetNextSymbol 0xf0dc6 LB 0x3c2 -> off=0x0 cb=0000000000000028 uValue=00000000000f0dc6 'drivetypes' +drivetypes: ; 0xf0dc6 LB 0x28 + db 046h, 06ch, 06fh, 070h, 070h, 079h, 000h, 000h, 000h, 000h, 048h, 061h, 072h, 064h, 020h, 044h + db 069h, 073h, 06bh, 000h, 043h, 044h, 02dh, 052h, 04fh, 04dh, 000h, 000h, 000h, 000h, 04ch, 041h + db 04eh, 000h, 000h, 000h, 000h, 000h, 000h, 000h + ; disGetNextSymbol 0xf0dee LB 0x39a -> off=0x0 cb=000000000000037a uValue=00000000000f0dee 'scan_to_scanascii' +scan_to_scanascii: ; 0xf0dee LB 0x37a + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 01bh, 001h, 01bh, 001h, 01bh, 001h + db 000h, 001h, 000h, 000h, 031h, 002h, 021h, 002h, 000h, 000h, 000h, 078h, 000h, 000h, 032h, 003h + db 040h, 003h, 000h, 003h, 000h, 079h, 000h, 000h, 033h, 004h, 023h, 004h, 000h, 000h, 000h, 07ah + db 000h, 000h, 034h, 005h, 024h, 005h, 000h, 000h, 000h, 07bh, 000h, 000h, 035h, 006h, 025h, 006h + db 000h, 000h, 000h, 07ch, 000h, 000h, 036h, 007h, 05eh, 007h, 01eh, 007h, 000h, 07dh, 000h, 000h + db 037h, 008h, 026h, 008h, 000h, 000h, 000h, 07eh, 000h, 000h, 038h, 009h, 02ah, 009h, 000h, 000h + db 000h, 07fh, 000h, 000h, 039h, 00ah, 028h, 00ah, 000h, 000h, 000h, 080h, 000h, 000h, 030h, 00bh + db 029h, 00bh, 000h, 000h, 000h, 081h, 000h, 000h, 02dh, 00ch, 05fh, 00ch, 01fh, 00ch, 000h, 082h + db 000h, 000h, 03dh, 00dh, 02bh, 00dh, 000h, 000h, 000h, 083h, 000h, 000h, 008h, 00eh, 008h, 00eh + db 07fh, 00eh, 000h, 000h, 000h, 000h, 009h, 00fh, 000h, 00fh, 000h, 000h, 000h, 000h, 000h, 000h + db 071h, 010h, 051h, 010h, 011h, 010h, 000h, 010h, 040h, 000h, 077h, 011h, 057h, 011h, 017h, 011h + db 000h, 011h, 040h, 000h, 065h, 012h, 045h, 012h, 005h, 012h, 000h, 012h, 040h, 000h, 072h, 013h + db 052h, 013h, 012h, 013h, 000h, 013h, 040h, 000h, 074h, 014h, 054h, 014h, 014h, 014h, 000h, 014h + db 040h, 000h, 079h, 015h, 059h, 015h, 019h, 015h, 000h, 015h, 040h, 000h, 075h, 016h, 055h, 016h + db 015h, 016h, 000h, 016h, 040h, 000h, 069h, 017h, 049h, 017h, 009h, 017h, 000h, 017h, 040h, 000h + db 06fh, 018h, 04fh, 018h, 00fh, 018h, 000h, 018h, 040h, 000h, 070h, 019h, 050h, 019h, 010h, 019h + db 000h, 019h, 040h, 000h, 05bh, 01ah, 07bh, 01ah, 01bh, 01ah, 000h, 000h, 000h, 000h, 05dh, 01bh + db 07dh, 01bh, 01dh, 01bh, 000h, 000h, 000h, 000h, 00dh, 01ch, 00dh, 01ch, 00ah, 01ch, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 061h, 01eh, 041h, 01eh + db 001h, 01eh, 000h, 01eh, 040h, 000h, 073h, 01fh, 053h, 01fh, 013h, 01fh, 000h, 01fh, 040h, 000h + db 064h, 020h, 044h, 020h, 004h, 020h, 000h, 020h, 040h, 000h, 066h, 021h, 046h, 021h, 006h, 021h + db 000h, 021h, 040h, 000h, 067h, 022h, 047h, 022h, 007h, 022h, 000h, 022h, 040h, 000h, 068h, 023h + db 048h, 023h, 008h, 023h, 000h, 023h, 040h, 000h, 06ah, 024h, 04ah, 024h, 00ah, 024h, 000h, 024h + db 040h, 000h, 06bh, 025h, 04bh, 025h, 00bh, 025h, 000h, 025h, 040h, 000h, 06ch, 026h, 04ch, 026h + db 00ch, 026h, 000h, 026h, 040h, 000h, 03bh, 027h, 03ah, 027h, 000h, 000h, 000h, 000h, 000h, 000h + db 027h, 028h, 022h, 028h, 000h, 000h, 000h, 000h, 000h, 000h, 060h, 029h, 07eh, 029h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 05ch, 02bh + db 07ch, 02bh, 01ch, 02bh, 000h, 000h, 000h, 000h, 07ah, 02ch, 05ah, 02ch, 01ah, 02ch, 000h, 02ch + db 040h, 000h, 078h, 02dh, 058h, 02dh, 018h, 02dh, 000h, 02dh, 040h, 000h, 063h, 02eh, 043h, 02eh + db 003h, 02eh, 000h, 02eh, 040h, 000h, 076h, 02fh, 056h, 02fh, 016h, 02fh, 000h, 02fh, 040h, 000h + db 062h, 030h, 042h, 030h, 002h, 030h, 000h, 030h, 040h, 000h, 06eh, 031h, 04eh, 031h, 00eh, 031h + db 000h, 031h, 040h, 000h, 06dh, 032h, 04dh, 032h, 00dh, 032h, 000h, 032h, 040h, 000h, 02ch, 033h + db 03ch, 033h, 000h, 000h, 000h, 000h, 000h, 000h, 02eh, 034h, 03eh, 034h, 000h, 000h, 000h, 000h + db 000h, 000h, 02fh, 035h, 03fh, 035h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 02ah, 037h, 02ah, 037h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 020h, 039h, 020h, 039h, 020h, 039h + db 020h, 039h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 03bh + db 000h, 054h, 000h, 05eh, 000h, 068h, 000h, 000h, 000h, 03ch, 000h, 055h, 000h, 05fh, 000h, 069h + db 000h, 000h, 000h, 03dh, 000h, 056h, 000h, 060h, 000h, 06ah, 000h, 000h, 000h, 03eh, 000h, 057h + db 000h, 061h, 000h, 06bh, 000h, 000h, 000h, 03fh, 000h, 058h, 000h, 062h, 000h, 06ch, 000h, 000h + db 000h, 040h, 000h, 059h, 000h, 063h, 000h, 06dh, 000h, 000h, 000h, 041h, 000h, 05ah, 000h, 064h + db 000h, 06eh, 000h, 000h, 000h, 042h, 000h, 05bh, 000h, 065h, 000h, 06fh, 000h, 000h, 000h, 043h + db 000h, 05ch, 000h, 066h, 000h, 070h, 000h, 000h, 000h, 044h, 000h, 05dh, 000h, 067h, 000h, 071h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 047h, 037h, 047h, 000h, 077h, 000h, 000h, 020h, 000h + db 000h, 048h, 038h, 048h, 000h, 000h, 000h, 000h, 020h, 000h, 000h, 049h, 039h, 049h, 000h, 084h + db 000h, 000h, 020h, 000h, 02dh, 04ah, 02dh, 04ah, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 04bh + db 034h, 04bh, 000h, 073h, 000h, 000h, 020h, 000h, 000h, 04ch, 035h, 04ch, 000h, 000h, 000h, 000h + db 020h, 000h, 000h, 04dh, 036h, 04dh, 000h, 074h, 000h, 000h, 020h, 000h, 02bh, 04eh, 02bh, 04eh + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 04fh, 031h, 04fh, 000h, 075h, 000h, 000h, 020h, 000h + db 000h, 050h, 032h, 050h, 000h, 000h, 000h, 000h, 020h, 000h, 000h, 051h, 033h, 051h, 000h, 076h + db 000h, 000h, 020h, 000h, 000h, 052h, 030h, 052h, 000h, 000h, 000h, 000h, 020h, 000h, 000h, 053h + db 02eh, 053h, 000h, 000h, 000h, 000h, 020h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 05ch, 056h, 07ch, 056h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 085h, 000h, 087h, 000h, 089h, 000h, 08bh, 000h, 000h + db 000h, 086h, 000h, 088h, 000h, 08ah, 000h, 08ch, 000h, 000h + ; disGetNextSymbol 0xf1168 LB 0x20 -> off=0x0 cb=0000000000000020 uValue=00000000000f1168 'panic_msg_keyb_buffer_full' +panic_msg_keyb_buffer_full: ; 0xf1168 LB 0x20 + db '%s: keyboard input buffer full', 00ah, 000h + + ; Padding 0x478 bytes at 0xf1188 + times 1144 db 0 + +section _TEXT progbits vstart=0x1600 align=1 ; size=0x8948 class=CODE group=AUTO + ; disGetNextSymbol 0xf1600 LB 0x8948 -> off=0x0 cb=0000000000000052 uValue=00000000000f0000 'rom_scan' +rom_scan: ; 0xf1600 LB 0x52 + push bp ; 55 ; 0xf1600 post.c:73 + mov bp, sp ; 89 e5 ; 0xf1601 + push bx ; 53 ; 0xf1603 + push cx ; 51 ; 0xf1604 + push si ; 56 ; 0xf1605 + push di ; 57 ; 0xf1606 + push ax ; 50 ; 0xf1607 + push ax ; 50 ; 0xf1608 + mov bx, ax ; 89 c3 ; 0xf1609 + mov di, dx ; 89 d7 ; 0xf160b + cmp bx, di ; 39 fb ; 0xf160d post.c:80 + jnc short 01649h ; 73 38 ; 0xf160f + xor si, si ; 31 f6 ; 0xf1611 post.c:81 + mov dx, bx ; 89 da ; 0xf1613 + mov es, bx ; 8e c3 ; 0xf1615 post.c:83 + cmp word [es:si], 0aa55h ; 26 81 3c 55 aa ; 0xf1617 + jne short 01643h ; 75 25 ; 0xf161c + mov word [bp-00ah], bx ; 89 5e f6 ; 0xf161e post.c:89 + mov word [bp-00ch], strict word 00003h ; c7 46 f4 03 00 ; 0xf1621 + call far [bp-00ch] ; ff 5e f4 ; 0xf1626 post.c:90 + cli ; fa ; 0xf1629 post.c:91 + mov es, bx ; 8e c3 ; 0xf162a post.c:95 + mov al, byte [es:si+002h] ; 26 8a 44 02 ; 0xf162c + add AL, strict byte 003h ; 04 03 ; 0xf1630 + and AL, strict byte 0fch ; 24 fc ; 0xf1632 + xor ah, ah ; 30 e4 ; 0xf1634 post.c:96 + cwd ; 99 ; 0xf1636 + mov CL, strict byte 002h ; b1 02 ; 0xf1637 + sal dx, CL ; d3 e2 ; 0xf1639 + db 01bh, 0c2h + ; sbb ax, dx ; 1b c2 ; 0xf163b + sar ax, CL ; d3 f8 ; 0xf163d + add bx, ax ; 01 c3 ; 0xf163f + jmp short 0160dh ; eb ca ; 0xf1641 post.c:98 + add bx, 00080h ; 81 c3 80 00 ; 0xf1643 post.c:100 + jmp short 0160dh ; eb c4 ; 0xf1647 post.c:102 + lea sp, [bp-008h] ; 8d 66 f8 ; 0xf1649 post.c:103 + pop di ; 5f ; 0xf164c + pop si ; 5e ; 0xf164d + pop cx ; 59 ; 0xf164e + pop bx ; 5b ; 0xf164f + pop bp ; 5d ; 0xf1650 + retn ; c3 ; 0xf1651 + ; disGetNextSymbol 0xf1652 LB 0x88f6 -> off=0x0 cb=000000000000001b uValue=00000000000f0052 'inb_cmos' +inb_cmos: ; 0xf1652 LB 0x1b + push bp ; 55 ; 0xf1652 bios.c:65 + mov bp, sp ; 89 e5 ; 0xf1653 + push dx ; 52 ; 0xf1655 + mov AH, strict byte 070h ; b4 70 ; 0xf1656 bios.c:67 + cmp AL, strict byte 080h ; 3c 80 ; 0xf1658 bios.c:69 + jc short 0165eh ; 72 02 ; 0xf165a + mov AH, strict byte 072h ; b4 72 ; 0xf165c bios.c:70 + mov dl, ah ; 88 e2 ; 0xf165e bios.c:71 + xor dh, dh ; 30 f6 ; 0xf1660 + out DX, AL ; ee ; 0xf1662 + inc dx ; 42 ; 0xf1663 bios.c:72 + in AL, DX ; ec ; 0xf1664 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf1665 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf1667 bios.c:73 + pop dx ; 5a ; 0xf166a + pop bp ; 5d ; 0xf166b + retn ; c3 ; 0xf166c + ; disGetNextSymbol 0xf166d LB 0x88db -> off=0x0 cb=000000000000001d uValue=00000000000f006d 'outb_cmos' +outb_cmos: ; 0xf166d LB 0x1d + push bp ; 55 ; 0xf166d bios.c:75 + mov bp, sp ; 89 e5 ; 0xf166e + push bx ; 53 ; 0xf1670 + mov bl, dl ; 88 d3 ; 0xf1671 + mov AH, strict byte 070h ; b4 70 ; 0xf1673 bios.c:77 + cmp AL, strict byte 080h ; 3c 80 ; 0xf1675 bios.c:79 + jc short 0167bh ; 72 02 ; 0xf1677 + mov AH, strict byte 072h ; b4 72 ; 0xf1679 bios.c:80 + mov dl, ah ; 88 e2 ; 0xf167b bios.c:81 + xor dh, dh ; 30 f6 ; 0xf167d + out DX, AL ; ee ; 0xf167f + inc dx ; 42 ; 0xf1680 bios.c:82 + mov al, bl ; 88 d8 ; 0xf1681 + out DX, AL ; ee ; 0xf1683 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf1684 bios.c:83 + pop bx ; 5b ; 0xf1687 + pop bp ; 5d ; 0xf1688 + retn ; c3 ; 0xf1689 + ; disGetNextSymbol 0xf168a LB 0x88be -> off=0x0 cb=0000000000000061 uValue=00000000000f008a 'dummy_isr_function' +dummy_isr_function: ; 0xf168a LB 0x61 + push bp ; 55 ; 0xf168a bios.c:85 + mov bp, sp ; 89 e5 ; 0xf168b + push ax ; 50 ; 0xf168d + mov CL, strict byte 0ffh ; b1 ff ; 0xf168e bios.c:93 + mov AL, strict byte 00bh ; b0 0b ; 0xf1690 bios.c:95 + mov dx, strict word 00020h ; ba 20 00 ; 0xf1692 + out DX, AL ; ee ; 0xf1695 + in AL, DX ; ec ; 0xf1696 bios.c:96 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf1697 + mov bx, ax ; 89 c3 ; 0xf1699 + mov byte [bp-002h], al ; 88 46 fe ; 0xf169b + test al, al ; 84 c0 ; 0xf169e bios.c:97 + je short 016dch ; 74 3a ; 0xf16a0 + mov AL, strict byte 00bh ; b0 0b ; 0xf16a2 bios.c:98 + mov dx, 000a0h ; ba a0 00 ; 0xf16a4 + out DX, AL ; ee ; 0xf16a7 + in AL, DX ; ec ; 0xf16a8 bios.c:99 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf16a9 + mov cx, ax ; 89 c1 ; 0xf16ab + test al, al ; 84 c0 ; 0xf16ad bios.c:100 + je short 016c4h ; 74 13 ; 0xf16af + mov dx, 000a1h ; ba a1 00 ; 0xf16b1 bios.c:101 + in AL, DX ; ec ; 0xf16b4 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf16b5 + mov bl, cl ; 88 cb ; 0xf16b7 bios.c:102 + or al, bl ; 08 d8 ; 0xf16b9 + out DX, AL ; ee ; 0xf16bb + mov AL, strict byte 020h ; b0 20 ; 0xf16bc bios.c:103 + mov dx, 000a0h ; ba a0 00 ; 0xf16be + out DX, AL ; ee ; 0xf16c1 + jmp short 016d3h ; eb 0f ; 0xf16c2 bios.c:104 + mov dx, strict word 00021h ; ba 21 00 ; 0xf16c4 bios.c:105 + in AL, DX ; ec ; 0xf16c7 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf16c8 + and bl, 0fbh ; 80 e3 fb ; 0xf16ca bios.c:106 + mov byte [bp-002h], bl ; 88 5e fe ; 0xf16cd + or al, bl ; 08 d8 ; 0xf16d0 bios.c:107 + out DX, AL ; ee ; 0xf16d2 + mov AL, strict byte 020h ; b0 20 ; 0xf16d3 bios.c:109 + mov dx, strict word 00020h ; ba 20 00 ; 0xf16d5 + out DX, AL ; ee ; 0xf16d8 + mov cl, byte [bp-002h] ; 8a 4e fe ; 0xf16d9 bios.c:110 + mov bx, strict word 0006bh ; bb 6b 00 ; 0xf16dc bios.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf16df + mov es, ax ; 8e c0 ; 0xf16e2 + mov byte [es:bx], cl ; 26 88 0f ; 0xf16e4 + mov sp, bp ; 89 ec ; 0xf16e7 bios.c:113 + pop bp ; 5d ; 0xf16e9 + retn ; c3 ; 0xf16ea + ; disGetNextSymbol 0xf16eb LB 0x885d -> off=0x0 cb=0000000000000015 uValue=00000000000f00eb 'nmi_handler_msg' +nmi_handler_msg: ; 0xf16eb LB 0x15 + push bp ; 55 ; 0xf16eb bios.c:116 + mov bp, sp ; 89 e5 ; 0xf16ec + mov ax, 000b0h ; b8 b0 00 ; 0xf16ee bios.c:118 + push ax ; 50 ; 0xf16f1 + mov ax, strict word 00007h ; b8 07 00 ; 0xf16f2 + push ax ; 50 ; 0xf16f5 + call 0190fh ; e8 16 02 ; 0xf16f6 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf16f9 + mov sp, bp ; 89 ec ; 0xf16fc bios.c:119 + pop bp ; 5d ; 0xf16fe + retn ; c3 ; 0xf16ff + ; disGetNextSymbol 0xf1700 LB 0x8848 -> off=0x0 cb=0000000000000015 uValue=00000000000f0100 'int18_panic_msg' +int18_panic_msg: ; 0xf1700 LB 0x15 + push bp ; 55 ; 0xf1700 bios.c:121 + mov bp, sp ; 89 e5 ; 0xf1701 + mov ax, 000c4h ; b8 c4 00 ; 0xf1703 bios.c:123 + push ax ; 50 ; 0xf1706 + mov ax, strict word 00007h ; b8 07 00 ; 0xf1707 + push ax ; 50 ; 0xf170a + call 0190fh ; e8 01 02 ; 0xf170b + add sp, strict byte 00004h ; 83 c4 04 ; 0xf170e + mov sp, bp ; 89 ec ; 0xf1711 bios.c:124 + pop bp ; 5d ; 0xf1713 + retn ; c3 ; 0xf1714 + ; disGetNextSymbol 0xf1715 LB 0x8833 -> off=0x0 cb=0000000000000024 uValue=00000000000f0115 'log_bios_start' +log_bios_start: ; 0xf1715 LB 0x24 + push bp ; 55 ; 0xf1715 bios.c:126 + mov bp, sp ; 89 e5 ; 0xf1716 + mov bx, 00da0h ; bb a0 0d ; 0xf1718 bios.c:131 + mov cx, ds ; 8c d9 ; 0xf171b + mov ax, strict word 00004h ; b8 04 00 ; 0xf171d + call 018cch ; e8 a9 01 ; 0xf1720 + mov ax, 00d8eh ; b8 8e 0d ; 0xf1723 + push ax ; 50 ; 0xf1726 + mov ax, 000d9h ; b8 d9 00 ; 0xf1727 + push ax ; 50 ; 0xf172a + mov ax, strict word 00004h ; b8 04 00 ; 0xf172b + push ax ; 50 ; 0xf172e + call 0190fh ; e8 dd 01 ; 0xf172f + add sp, strict byte 00006h ; 83 c4 06 ; 0xf1732 + mov sp, bp ; 89 ec ; 0xf1735 bios.c:132 + pop bp ; 5d ; 0xf1737 + retn ; c3 ; 0xf1738 + ; disGetNextSymbol 0xf1739 LB 0x880f -> off=0x0 cb=0000000000000027 uValue=00000000000f0139 'print_bios_banner' +print_bios_banner: ; 0xf1739 LB 0x27 + push bp ; 55 ; 0xf1739 bios.c:151 + mov bp, sp ; 89 e5 ; 0xf173a + mov bx, strict word 00072h ; bb 72 00 ; 0xf173c bios.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf173f + mov es, ax ; 8e c0 ; 0xf1742 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf1744 + mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf1747 bios.c:53 + cmp ax, 01234h ; 3d 34 12 ; 0xf174c bios.c:157 + jne short 01759h ; 75 08 ; 0xf174f + mov AL, strict byte 003h ; b0 03 ; 0xf1751 bios.c:160 + mov AH, strict byte 000h ; b4 00 ; 0xf1753 + int 010h ; cd 10 ; 0xf1755 + jmp short 0175ch ; eb 03 ; 0xf1757 bios.c:161 + call 07657h ; e8 fb 5e ; 0xf1759 bios.c:164 + mov sp, bp ; 89 ec ; 0xf175c bios.c:191 + pop bp ; 5d ; 0xf175e + retn ; c3 ; 0xf175f + ; disGetNextSymbol 0xf1760 LB 0x87e8 -> off=0x0 cb=000000000000003b uValue=00000000000f0160 'send' +send: ; 0xf1760 LB 0x3b + push bp ; 55 ; 0xf1760 print.c:72 + mov bp, sp ; 89 e5 ; 0xf1761 + push bx ; 53 ; 0xf1763 + push cx ; 51 ; 0xf1764 + mov bx, ax ; 89 c3 ; 0xf1765 + mov cl, dl ; 88 d1 ; 0xf1767 + test AL, strict byte 008h ; a8 08 ; 0xf1769 print.c:80 + je short 01773h ; 74 06 ; 0xf176b + mov al, dl ; 88 d0 ; 0xf176d print.c:81 + mov dx, 00403h ; ba 03 04 ; 0xf176f + out DX, AL ; ee ; 0xf1772 + test bl, 004h ; f6 c3 04 ; 0xf1773 print.c:82 + je short 0177eh ; 74 06 ; 0xf1776 + mov al, cl ; 88 c8 ; 0xf1778 print.c:83 + mov dx, 00504h ; ba 04 05 ; 0xf177a + out DX, AL ; ee ; 0xf177d + test bl, 002h ; f6 c3 02 ; 0xf177e print.c:85 + je short 01794h ; 74 11 ; 0xf1781 + cmp cl, 00ah ; 80 f9 0a ; 0xf1783 print.c:86 + jne short 0178eh ; 75 06 ; 0xf1786 + mov AL, strict byte 00dh ; b0 0d ; 0xf1788 print.c:87 + mov AH, strict byte 00eh ; b4 0e ; 0xf178a + int 010h ; cd 10 ; 0xf178c + mov al, cl ; 88 c8 ; 0xf178e print.c:88 + mov AH, strict byte 00eh ; b4 0e ; 0xf1790 + int 010h ; cd 10 ; 0xf1792 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf1794 print.c:90 + pop cx ; 59 ; 0xf1797 + pop bx ; 5b ; 0xf1798 + pop bp ; 5d ; 0xf1799 + retn ; c3 ; 0xf179a + ; disGetNextSymbol 0xf179b LB 0x87ad -> off=0x0 cb=0000000000000063 uValue=00000000000f019b 'put_int' +put_int: ; 0xf179b LB 0x63 + push bp ; 55 ; 0xf179b print.c:92 + mov bp, sp ; 89 e5 ; 0xf179c + push si ; 56 ; 0xf179e + push di ; 57 ; 0xf179f + push ax ; 50 ; 0xf17a0 + push ax ; 50 ; 0xf17a1 + mov si, ax ; 89 c6 ; 0xf17a2 + mov word [bp-008h], dx ; 89 56 f8 ; 0xf17a4 + mov di, bx ; 89 df ; 0xf17a7 + mov bx, strict word 0000ah ; bb 0a 00 ; 0xf17a9 print.c:94 + mov ax, dx ; 89 d0 ; 0xf17ac + cwd ; 99 ; 0xf17ae + idiv bx ; f7 fb ; 0xf17af + mov word [bp-006h], ax ; 89 46 fa ; 0xf17b1 + test ax, ax ; 85 c0 ; 0xf17b4 print.c:95 + je short 017c4h ; 74 0c ; 0xf17b6 + lea bx, [di-001h] ; 8d 5d ff ; 0xf17b8 print.c:96 + mov dx, ax ; 89 c2 ; 0xf17bb + mov ax, si ; 89 f0 ; 0xf17bd + call 0179bh ; e8 d9 ff ; 0xf17bf + jmp short 017dfh ; eb 1b ; 0xf17c2 print.c:97 + dec di ; 4f ; 0xf17c4 print.c:98 + test di, di ; 85 ff ; 0xf17c5 + jle short 017d3h ; 7e 0a ; 0xf17c7 + mov dx, strict word 00020h ; ba 20 00 ; 0xf17c9 print.c:99 + mov ax, si ; 89 f0 ; 0xf17cc + call 01760h ; e8 8f ff ; 0xf17ce + jmp short 017c4h ; eb f1 ; 0xf17d1 + test cx, cx ; 85 c9 ; 0xf17d3 print.c:100 + je short 017dfh ; 74 08 ; 0xf17d5 + mov dx, strict word 0002dh ; ba 2d 00 ; 0xf17d7 print.c:101 + mov ax, si ; 89 f0 ; 0xf17da + call 01760h ; e8 81 ff ; 0xf17dc + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf17df print.c:103 + mov BL, strict byte 00ah ; b3 0a ; 0xf17e2 + mul bl ; f6 e3 ; 0xf17e4 + mov bl, byte [bp-008h] ; 8a 5e f8 ; 0xf17e6 + sub bl, al ; 28 c3 ; 0xf17e9 + add bl, 030h ; 80 c3 30 ; 0xf17eb + xor bh, bh ; 30 ff ; 0xf17ee + mov dx, bx ; 89 da ; 0xf17f0 + mov ax, si ; 89 f0 ; 0xf17f2 + call 01760h ; e8 69 ff ; 0xf17f4 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf17f7 print.c:104 + pop di ; 5f ; 0xf17fa + pop si ; 5e ; 0xf17fb + pop bp ; 5d ; 0xf17fc + retn ; c3 ; 0xf17fd + ; disGetNextSymbol 0xf17fe LB 0x874a -> off=0x0 cb=000000000000005e uValue=00000000000f01fe 'put_uint' +put_uint: ; 0xf17fe LB 0x5e + push bp ; 55 ; 0xf17fe print.c:106 + mov bp, sp ; 89 e5 ; 0xf17ff + push si ; 56 ; 0xf1801 + push di ; 57 ; 0xf1802 + push ax ; 50 ; 0xf1803 + push ax ; 50 ; 0xf1804 + mov si, ax ; 89 c6 ; 0xf1805 + mov word [bp-008h], dx ; 89 56 f8 ; 0xf1807 + mov ax, dx ; 89 d0 ; 0xf180a print.c:108 + xor dx, dx ; 31 d2 ; 0xf180c + mov di, strict word 0000ah ; bf 0a 00 ; 0xf180e + div di ; f7 f7 ; 0xf1811 + mov word [bp-006h], ax ; 89 46 fa ; 0xf1813 + test ax, ax ; 85 c0 ; 0xf1816 print.c:109 + je short 01824h ; 74 0a ; 0xf1818 + dec bx ; 4b ; 0xf181a print.c:110 + mov dx, ax ; 89 c2 ; 0xf181b + mov ax, si ; 89 f0 ; 0xf181d + call 017feh ; e8 dc ff ; 0xf181f + jmp short 0183fh ; eb 1b ; 0xf1822 print.c:111 + dec bx ; 4b ; 0xf1824 print.c:112 + test bx, bx ; 85 db ; 0xf1825 + jle short 01833h ; 7e 0a ; 0xf1827 + mov dx, strict word 00020h ; ba 20 00 ; 0xf1829 print.c:113 + mov ax, si ; 89 f0 ; 0xf182c + call 01760h ; e8 2f ff ; 0xf182e + jmp short 01824h ; eb f1 ; 0xf1831 + test cx, cx ; 85 c9 ; 0xf1833 print.c:114 + je short 0183fh ; 74 08 ; 0xf1835 + mov dx, strict word 0002dh ; ba 2d 00 ; 0xf1837 print.c:115 + mov ax, si ; 89 f0 ; 0xf183a + call 01760h ; e8 21 ff ; 0xf183c + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf183f print.c:117 + mov DL, strict byte 00ah ; b2 0a ; 0xf1842 + mul dl ; f6 e2 ; 0xf1844 + mov dl, byte [bp-008h] ; 8a 56 f8 ; 0xf1846 + sub dl, al ; 28 c2 ; 0xf1849 + add dl, 030h ; 80 c2 30 ; 0xf184b + xor dh, dh ; 30 f6 ; 0xf184e + mov ax, si ; 89 f0 ; 0xf1850 + call 01760h ; e8 0b ff ; 0xf1852 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf1855 print.c:118 + pop di ; 5f ; 0xf1858 + pop si ; 5e ; 0xf1859 + pop bp ; 5d ; 0xf185a + retn ; c3 ; 0xf185b + ; disGetNextSymbol 0xf185c LB 0x86ec -> off=0x0 cb=0000000000000070 uValue=00000000000f025c 'put_luint' +put_luint: ; 0xf185c LB 0x70 + push bp ; 55 ; 0xf185c print.c:120 + mov bp, sp ; 89 e5 ; 0xf185d + push si ; 56 ; 0xf185f + push di ; 57 ; 0xf1860 + push ax ; 50 ; 0xf1861 + push ax ; 50 ; 0xf1862 + mov si, ax ; 89 c6 ; 0xf1863 + mov word [bp-006h], bx ; 89 5e fa ; 0xf1865 + mov di, dx ; 89 d7 ; 0xf1868 + mov ax, bx ; 89 d8 ; 0xf186a print.c:122 + mov dx, cx ; 89 ca ; 0xf186c + mov bx, strict word 0000ah ; bb 0a 00 ; 0xf186e + xor cx, cx ; 31 c9 ; 0xf1871 + call 09be0h ; e8 6a 83 ; 0xf1873 + mov word [bp-008h], ax ; 89 46 f8 ; 0xf1876 + mov cx, dx ; 89 d1 ; 0xf1879 + mov dx, ax ; 89 c2 ; 0xf187b print.c:123 + or dx, cx ; 09 ca ; 0xf187d + je short 01890h ; 74 0f ; 0xf187f + push word [bp+004h] ; ff 76 04 ; 0xf1881 print.c:124 + lea dx, [di-001h] ; 8d 55 ff ; 0xf1884 + mov bx, ax ; 89 c3 ; 0xf1887 + mov ax, si ; 89 f0 ; 0xf1889 + call 0185ch ; e8 ce ff ; 0xf188b + jmp short 018adh ; eb 1d ; 0xf188e print.c:125 + dec di ; 4f ; 0xf1890 print.c:126 + test di, di ; 85 ff ; 0xf1891 + jle short 0189fh ; 7e 0a ; 0xf1893 + mov dx, strict word 00020h ; ba 20 00 ; 0xf1895 print.c:127 + mov ax, si ; 89 f0 ; 0xf1898 + call 01760h ; e8 c3 fe ; 0xf189a + jmp short 01890h ; eb f1 ; 0xf189d + cmp word [bp+004h], strict byte 00000h ; 83 7e 04 00 ; 0xf189f print.c:128 + je short 018adh ; 74 08 ; 0xf18a3 + mov dx, strict word 0002dh ; ba 2d 00 ; 0xf18a5 print.c:129 + mov ax, si ; 89 f0 ; 0xf18a8 + call 01760h ; e8 b3 fe ; 0xf18aa + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf18ad print.c:131 + mov DL, strict byte 00ah ; b2 0a ; 0xf18b0 + mul dl ; f6 e2 ; 0xf18b2 + mov dl, byte [bp-006h] ; 8a 56 fa ; 0xf18b4 + sub dl, al ; 28 c2 ; 0xf18b7 + add dl, 030h ; 80 c2 30 ; 0xf18b9 + xor dh, dh ; 30 f6 ; 0xf18bc + mov ax, si ; 89 f0 ; 0xf18be + call 01760h ; e8 9d fe ; 0xf18c0 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf18c3 print.c:132 + pop di ; 5f ; 0xf18c6 + pop si ; 5e ; 0xf18c7 + pop bp ; 5d ; 0xf18c8 + retn 00002h ; c2 02 00 ; 0xf18c9 + ; disGetNextSymbol 0xf18cc LB 0x867c -> off=0x0 cb=0000000000000021 uValue=00000000000f02cc 'put_str' +put_str: ; 0xf18cc LB 0x21 + push bp ; 55 ; 0xf18cc print.c:134 + mov bp, sp ; 89 e5 ; 0xf18cd + push dx ; 52 ; 0xf18cf + push si ; 56 ; 0xf18d0 + mov si, ax ; 89 c6 ; 0xf18d1 + mov es, cx ; 8e c1 ; 0xf18d3 print.c:138 + mov dl, byte [es:bx] ; 26 8a 17 ; 0xf18d5 + test dl, dl ; 84 d2 ; 0xf18d8 + je short 018e6h ; 74 0a ; 0xf18da + xor dh, dh ; 30 f6 ; 0xf18dc print.c:139 + mov ax, si ; 89 f0 ; 0xf18de + call 01760h ; e8 7d fe ; 0xf18e0 + inc bx ; 43 ; 0xf18e3 print.c:140 + jmp short 018d3h ; eb ed ; 0xf18e4 print.c:141 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf18e6 print.c:142 + pop si ; 5e ; 0xf18e9 + pop dx ; 5a ; 0xf18ea + pop bp ; 5d ; 0xf18eb + retn ; c3 ; 0xf18ec + ; disGetNextSymbol 0xf18ed LB 0x865b -> off=0x0 cb=0000000000000022 uValue=00000000000f02ed 'put_str_near' +put_str_near: ; 0xf18ed LB 0x22 + push bp ; 55 ; 0xf18ed print.c:144 + mov bp, sp ; 89 e5 ; 0xf18ee + push bx ; 53 ; 0xf18f0 + push cx ; 51 ; 0xf18f1 + mov cx, ax ; 89 c1 ; 0xf18f2 + mov bx, dx ; 89 d3 ; 0xf18f4 + mov al, byte [bx] ; 8a 07 ; 0xf18f6 print.c:148 + test al, al ; 84 c0 ; 0xf18f8 + je short 01908h ; 74 0c ; 0xf18fa + xor ah, ah ; 30 e4 ; 0xf18fc print.c:149 + mov dx, ax ; 89 c2 ; 0xf18fe + mov ax, cx ; 89 c8 ; 0xf1900 + call 01760h ; e8 5b fe ; 0xf1902 + inc bx ; 43 ; 0xf1905 print.c:150 + jmp short 018f6h ; eb ee ; 0xf1906 print.c:151 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf1908 print.c:152 + pop cx ; 59 ; 0xf190b + pop bx ; 5b ; 0xf190c + pop bp ; 5d ; 0xf190d + retn ; c3 ; 0xf190e + ; disGetNextSymbol 0xf190f LB 0x8639 -> off=0x0 cb=000000000000034f uValue=00000000000f030f 'bios_printf' +bios_printf: ; 0xf190f LB 0x34f + push bp ; 55 ; 0xf190f print.c:165 + mov bp, sp ; 89 e5 ; 0xf1910 + push bx ; 53 ; 0xf1912 + push cx ; 51 ; 0xf1913 + push dx ; 52 ; 0xf1914 + push si ; 56 ; 0xf1915 + push di ; 57 ; 0xf1916 + sub sp, strict byte 0001ch ; 83 ec 1c ; 0xf1917 + lea bx, [bp+008h] ; 8d 5e 08 ; 0xf191a print.c:173 + mov word [bp-016h], bx ; 89 5e ea ; 0xf191d + mov [bp-014h], ss ; 8c 56 ec ; 0xf1920 + xor cx, cx ; 31 c9 ; 0xf1923 print.c:175 + xor di, di ; 31 ff ; 0xf1925 print.c:176 + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1927 print.c:178 + and ax, strict word 00007h ; 25 07 00 ; 0xf192a + cmp ax, strict word 00007h ; 3d 07 00 ; 0xf192d + jne short 01940h ; 75 0e ; 0xf1930 + mov ax, 000deh ; b8 de 00 ; 0xf1932 print.c:179 + push ax ; 50 ; 0xf1935 + mov ax, strict word 00002h ; b8 02 00 ; 0xf1936 + push ax ; 50 ; 0xf1939 + call 0190fh ; e8 d2 ff ; 0xf193a + add sp, strict byte 00004h ; 83 c4 04 ; 0xf193d + mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf1940 print.c:182 + mov dl, byte [bx] ; 8a 17 ; 0xf1943 + test dl, dl ; 84 d2 ; 0xf1945 + je short 019aah ; 74 61 ; 0xf1947 + cmp dl, 025h ; 80 fa 25 ; 0xf1949 print.c:183 + jne short 01956h ; 75 08 ; 0xf194c + mov cx, strict word 00001h ; b9 01 00 ; 0xf194e print.c:184 + xor di, di ; 31 ff ; 0xf1951 print.c:185 + jmp near 01c3ch ; e9 e6 02 ; 0xf1953 print.c:187 + test cx, cx ; 85 c9 ; 0xf1956 + je short 019adh ; 74 53 ; 0xf1958 + cmp dl, 030h ; 80 fa 30 ; 0xf195a print.c:188 + jc short 01979h ; 72 1a ; 0xf195d + cmp dl, 039h ; 80 fa 39 ; 0xf195f + jnbe short 01979h ; 77 15 ; 0xf1962 + mov bl, dl ; 88 d3 ; 0xf1964 print.c:189 + xor bh, bh ; 30 ff ; 0xf1966 + mov ax, di ; 89 f8 ; 0xf1968 + mov dx, strict word 0000ah ; ba 0a 00 ; 0xf196a + mul dx ; f7 e2 ; 0xf196d + sub bx, strict byte 00030h ; 83 eb 30 ; 0xf196f + mov di, ax ; 89 c7 ; 0xf1972 + add di, bx ; 01 df ; 0xf1974 + jmp near 01c3ch ; e9 c3 02 ; 0xf1976 print.c:191 + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1979 print.c:192 + mov word [bp-014h], ax ; 89 46 ec ; 0xf197c + add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf197f + les bx, [bp-016h] ; c4 5e ea ; 0xf1983 + mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf1986 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf198a + cmp dl, 078h ; 80 fa 78 ; 0xf198d print.c:193 + je short 01997h ; 74 05 ; 0xf1990 + cmp dl, 058h ; 80 fa 58 ; 0xf1992 + jne short 019f2h ; 75 5b ; 0xf1995 + test di, di ; 85 ff ; 0xf1997 print.c:194 + jne short 0199eh ; 75 03 ; 0xf1999 + mov di, strict word 00004h ; bf 04 00 ; 0xf199b print.c:195 + cmp dl, 078h ; 80 fa 78 ; 0xf199e print.c:196 + jne short 019b0h ; 75 0d ; 0xf19a1 + mov word [bp-00eh], strict word 00061h ; c7 46 f2 61 00 ; 0xf19a3 print.c:197 + jmp short 019b5h ; eb 0b ; 0xf19a8 print.c:198 + jmp near 01c42h ; e9 95 02 ; 0xf19aa + jmp near 01c34h ; e9 84 02 ; 0xf19ad + mov word [bp-00eh], strict word 00041h ; c7 46 f2 41 00 ; 0xf19b0 print.c:199 + lea ax, [di-001h] ; 8d 45 ff ; 0xf19b5 print.c:200 + mov word [bp-012h], ax ; 89 46 ee ; 0xf19b8 + mov ax, word [bp-012h] ; 8b 46 ee ; 0xf19bb + test ax, ax ; 85 c0 ; 0xf19be + jl short 01a03h ; 7c 41 ; 0xf19c0 + mov cx, ax ; 89 c1 ; 0xf19c2 print.c:201 + sal cx, 1 ; d1 e1 ; 0xf19c4 + sal cx, 1 ; d1 e1 ; 0xf19c6 + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf19c8 + shr ax, CL ; d3 e8 ; 0xf19cb + xor ah, ah ; 30 e4 ; 0xf19cd + and AL, strict byte 00fh ; 24 0f ; 0xf19cf + cmp ax, strict word 00009h ; 3d 09 00 ; 0xf19d1 print.c:202 + jnbe short 019ddh ; 77 07 ; 0xf19d4 + mov dx, ax ; 89 c2 ; 0xf19d6 + add dx, strict byte 00030h ; 83 c2 30 ; 0xf19d8 + jmp short 019e5h ; eb 08 ; 0xf19db + sub ax, strict word 0000ah ; 2d 0a 00 ; 0xf19dd + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf19e0 + add dx, ax ; 01 c2 ; 0xf19e3 + xor dh, dh ; 30 f6 ; 0xf19e5 + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf19e7 + call 01760h ; e8 73 fd ; 0xf19ea + dec word [bp-012h] ; ff 4e ee ; 0xf19ed print.c:203 + jmp short 019bbh ; eb c9 ; 0xf19f0 + cmp dl, 075h ; 80 fa 75 ; 0xf19f2 print.c:205 + jne short 01a06h ; 75 0f ; 0xf19f5 + xor cx, cx ; 31 c9 ; 0xf19f7 print.c:206 + mov bx, di ; 89 fb ; 0xf19f9 + mov dx, ax ; 89 c2 ; 0xf19fb + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf19fd + call 017feh ; e8 fb fd ; 0xf1a00 + jmp near 01c30h ; e9 2a 02 ; 0xf1a03 print.c:208 + cmp dl, 06ch ; 80 fa 6c ; 0xf1a06 + jne short 01a13h ; 75 08 ; 0xf1a09 + mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf1a0b + cmp dl, byte [bx+001h] ; 3a 57 01 ; 0xf1a0e + je short 01a16h ; 74 03 ; 0xf1a11 + jmp near 01aebh ; e9 d5 00 ; 0xf1a13 + add word [bp+006h], strict byte 00002h ; 83 46 06 02 ; 0xf1a16 print.c:212 + mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf1a1a print.c:213 + mov dl, byte [bx] ; 8a 17 ; 0xf1a1d + mov word [bp-026h], ax ; 89 46 da ; 0xf1a1f print.c:215 + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1a22 print.c:216 + mov word [bp-014h], ax ; 89 46 ec ; 0xf1a25 + add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1a28 + les bx, [bp-016h] ; c4 5e ea ; 0xf1a2c + mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf1a2f + mov word [bp-024h], ax ; 89 46 dc ; 0xf1a33 + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1a36 print.c:217 + mov word [bp-014h], ax ; 89 46 ec ; 0xf1a39 + add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1a3c + les bx, [bp-016h] ; c4 5e ea ; 0xf1a40 + mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf1a43 + mov word [bp-022h], ax ; 89 46 de ; 0xf1a47 + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1a4a print.c:218 + mov word [bp-014h], ax ; 89 46 ec ; 0xf1a4d + add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1a50 + les bx, [bp-016h] ; c4 5e ea ; 0xf1a54 + mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf1a57 + mov word [bp-020h], ax ; 89 46 e0 ; 0xf1a5b + cmp dl, 078h ; 80 fa 78 ; 0xf1a5e print.c:219 + je short 01a68h ; 74 05 ; 0xf1a61 + cmp dl, 058h ; 80 fa 58 ; 0xf1a63 + jne short 01ac3h ; 75 5b ; 0xf1a66 + test di, di ; 85 ff ; 0xf1a68 print.c:220 + jne short 01a6fh ; 75 03 ; 0xf1a6a + mov di, strict word 00010h ; bf 10 00 ; 0xf1a6c print.c:221 + cmp dl, 078h ; 80 fa 78 ; 0xf1a6f print.c:222 + jne short 01a7bh ; 75 07 ; 0xf1a72 + mov word [bp-00eh], strict word 00061h ; c7 46 f2 61 00 ; 0xf1a74 print.c:223 + jmp short 01a80h ; eb 05 ; 0xf1a79 print.c:224 + mov word [bp-00eh], strict word 00041h ; c7 46 f2 41 00 ; 0xf1a7b print.c:225 + lea ax, [di-001h] ; 8d 45 ff ; 0xf1a80 print.c:226 + mov word [bp-012h], ax ; 89 46 ee ; 0xf1a83 + mov ax, word [bp-012h] ; 8b 46 ee ; 0xf1a86 + test ax, ax ; 85 c0 ; 0xf1a89 + jl short 01ae8h ; 7c 5b ; 0xf1a8b + sal ax, 1 ; d1 e0 ; 0xf1a8d print.c:227 + sal ax, 1 ; d1 e0 ; 0xf1a8f + mov word [bp-01eh], ax ; 89 46 e2 ; 0xf1a91 + xor ax, ax ; 31 c0 ; 0xf1a94 + mov word [bp-01ch], ax ; 89 46 e4 ; 0xf1a96 + mov word [bp-01ah], ax ; 89 46 e6 ; 0xf1a99 + mov word [bp-018h], ax ; 89 46 e8 ; 0xf1a9c + mov ax, word [bp-020h] ; 8b 46 e0 ; 0xf1a9f + mov bx, word [bp-022h] ; 8b 5e de ; 0xf1aa2 + mov cx, word [bp-024h] ; 8b 4e dc ; 0xf1aa5 + mov dx, word [bp-026h] ; 8b 56 da ; 0xf1aa8 + mov si, word [bp-01eh] ; 8b 76 e2 ; 0xf1aab + call 09c10h ; e8 5f 81 ; 0xf1aae + mov ax, dx ; 89 d0 ; 0xf1ab1 + xor ah, dh ; 30 f4 ; 0xf1ab3 + and AL, strict byte 00fh ; 24 0f ; 0xf1ab5 + cmp ax, strict word 00009h ; 3d 09 00 ; 0xf1ab7 print.c:228 + jnbe short 01ac5h ; 77 09 ; 0xf1aba + mov dx, ax ; 89 c2 ; 0xf1abc + add dx, strict byte 00030h ; 83 c2 30 ; 0xf1abe + jmp short 01acdh ; eb 0a ; 0xf1ac1 + jmp short 01adah ; eb 15 ; 0xf1ac3 + sub ax, strict word 0000ah ; 2d 0a 00 ; 0xf1ac5 + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf1ac8 + add dx, ax ; 01 c2 ; 0xf1acb + xor dh, dh ; 30 f6 ; 0xf1acd + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1acf + call 01760h ; e8 8b fc ; 0xf1ad2 + dec word [bp-012h] ; ff 4e ee ; 0xf1ad5 print.c:229 + jmp short 01a86h ; eb ac ; 0xf1ad8 + mov ax, 000e6h ; b8 e6 00 ; 0xf1ada print.c:231 + push ax ; 50 ; 0xf1add + mov ax, strict word 00007h ; b8 07 00 ; 0xf1ade + push ax ; 50 ; 0xf1ae1 + call 0190fh ; e8 2a fe ; 0xf1ae2 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf1ae5 + jmp near 01c30h ; e9 45 01 ; 0xf1ae8 print.c:234 + lea bx, [di-001h] ; 8d 5d ff ; 0xf1aeb + cmp dl, 06ch ; 80 fa 6c ; 0xf1aee + jne short 01b4bh ; 75 58 ; 0xf1af1 + inc word [bp+006h] ; ff 46 06 ; 0xf1af3 print.c:235 + mov si, word [bp+006h] ; 8b 76 06 ; 0xf1af6 print.c:236 + mov dl, byte [si] ; 8a 14 ; 0xf1af9 + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1afb print.c:237 + mov word [bp-014h], ax ; 89 46 ec ; 0xf1afe + add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1b01 + les si, [bp-016h] ; c4 76 ea ; 0xf1b05 + mov ax, word [es:si-002h] ; 26 8b 44 fe ; 0xf1b08 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf1b0c + cmp dl, 064h ; 80 fa 64 ; 0xf1b0f print.c:238 + jne short 01b44h ; 75 30 ; 0xf1b12 + test byte [bp-00fh], 080h ; f6 46 f1 80 ; 0xf1b14 print.c:239 + je short 01b31h ; 74 17 ; 0xf1b18 + mov ax, strict word 00001h ; b8 01 00 ; 0xf1b1a print.c:240 + push ax ; 50 ; 0xf1b1d + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf1b1e + mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf1b21 + neg cx ; f7 d9 ; 0xf1b24 + neg ax ; f7 d8 ; 0xf1b26 + sbb cx, strict byte 00000h ; 83 d9 00 ; 0xf1b28 + mov dx, bx ; 89 da ; 0xf1b2b + mov bx, ax ; 89 c3 ; 0xf1b2d + jmp short 01b3ch ; eb 0b ; 0xf1b2f print.c:241 + xor ax, ax ; 31 c0 ; 0xf1b31 print.c:242 + push ax ; 50 ; 0xf1b33 + mov bx, word [bp-00ch] ; 8b 5e f4 ; 0xf1b34 + mov dx, di ; 89 fa ; 0xf1b37 + mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf1b39 + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1b3c + call 0185ch ; e8 1a fd ; 0xf1b3f + jmp short 01ae8h ; eb a4 ; 0xf1b42 print.c:244 + cmp dl, 075h ; 80 fa 75 ; 0xf1b44 + jne short 01b4dh ; 75 04 ; 0xf1b47 + jmp short 01b31h ; eb e6 ; 0xf1b49 + jmp short 01bb4h ; eb 67 ; 0xf1b4b + cmp dl, 078h ; 80 fa 78 ; 0xf1b4d print.c:247 + je short 01b57h ; 74 05 ; 0xf1b50 + cmp dl, 058h ; 80 fa 58 ; 0xf1b52 + jne short 01ae8h ; 75 91 ; 0xf1b55 + test di, di ; 85 ff ; 0xf1b57 print.c:249 + jne short 01b5eh ; 75 03 ; 0xf1b59 + mov di, strict word 00008h ; bf 08 00 ; 0xf1b5b print.c:250 + cmp dl, 078h ; 80 fa 78 ; 0xf1b5e print.c:251 + jne short 01b6ah ; 75 07 ; 0xf1b61 + mov word [bp-00eh], strict word 00061h ; c7 46 f2 61 00 ; 0xf1b63 print.c:252 + jmp short 01b6fh ; eb 05 ; 0xf1b68 print.c:253 + mov word [bp-00eh], strict word 00041h ; c7 46 f2 41 00 ; 0xf1b6a print.c:254 + lea ax, [di-001h] ; 8d 45 ff ; 0xf1b6f print.c:255 + mov word [bp-012h], ax ; 89 46 ee ; 0xf1b72 + cmp word [bp-012h], strict byte 00000h ; 83 7e ee 00 ; 0xf1b75 + jl short 01bd6h ; 7c 5b ; 0xf1b79 + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf1b7b print.c:256 + mov cx, word [bp-012h] ; 8b 4e ee ; 0xf1b7e + sal cx, 1 ; d1 e1 ; 0xf1b81 + sal cx, 1 ; d1 e1 ; 0xf1b83 + mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf1b85 + jcxz 01b90h ; e3 06 ; 0xf1b88 + shr dx, 1 ; d1 ea ; 0xf1b8a + rcr ax, 1 ; d1 d8 ; 0xf1b8c + loop 01b8ah ; e2 fa ; 0xf1b8e + and ax, strict word 0000fh ; 25 0f 00 ; 0xf1b90 + cmp ax, strict word 00009h ; 3d 09 00 ; 0xf1b93 print.c:257 + jnbe short 01b9fh ; 77 07 ; 0xf1b96 + mov dx, ax ; 89 c2 ; 0xf1b98 + add dx, strict byte 00030h ; 83 c2 30 ; 0xf1b9a + jmp short 01ba7h ; eb 08 ; 0xf1b9d + sub ax, strict word 0000ah ; 2d 0a 00 ; 0xf1b9f + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf1ba2 + add dx, ax ; 01 c2 ; 0xf1ba5 + xor dh, dh ; 30 f6 ; 0xf1ba7 + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1ba9 + call 01760h ; e8 b1 fb ; 0xf1bac + dec word [bp-012h] ; ff 4e ee ; 0xf1baf print.c:258 + jmp short 01b75h ; eb c1 ; 0xf1bb2 + cmp dl, 064h ; 80 fa 64 ; 0xf1bb4 print.c:261 + jne short 01bd8h ; 75 1f ; 0xf1bb7 + test byte [bp-00bh], 080h ; f6 46 f5 80 ; 0xf1bb9 print.c:262 + je short 01bc9h ; 74 0a ; 0xf1bbd + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf1bbf print.c:263 + neg dx ; f7 da ; 0xf1bc2 + mov cx, strict word 00001h ; b9 01 00 ; 0xf1bc4 + jmp short 01bd0h ; eb 07 ; 0xf1bc7 print.c:264 + xor cx, cx ; 31 c9 ; 0xf1bc9 print.c:265 + mov bx, di ; 89 fb ; 0xf1bcb + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf1bcd + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1bd0 + call 0179bh ; e8 c5 fb ; 0xf1bd3 + jmp short 01c30h ; eb 58 ; 0xf1bd6 print.c:267 + cmp dl, 073h ; 80 fa 73 ; 0xf1bd8 + jne short 01beah ; 75 0d ; 0xf1bdb + mov cx, ds ; 8c d9 ; 0xf1bdd print.c:268 + mov bx, word [bp-00ch] ; 8b 5e f4 ; 0xf1bdf + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1be2 + call 018cch ; e8 e4 fc ; 0xf1be5 + jmp short 01c30h ; eb 46 ; 0xf1be8 print.c:270 + cmp dl, 053h ; 80 fa 53 ; 0xf1bea + jne short 01c10h ; 75 21 ; 0xf1bed + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf1bef print.c:271 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf1bf2 + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1bf5 print.c:272 + mov word [bp-014h], ax ; 89 46 ec ; 0xf1bf8 + add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1bfb + les bx, [bp-016h] ; c4 5e ea ; 0xf1bff + mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf1c02 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf1c06 + mov bx, ax ; 89 c3 ; 0xf1c09 print.c:273 + mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf1c0b + jmp short 01be2h ; eb d2 ; 0xf1c0e + cmp dl, 063h ; 80 fa 63 ; 0xf1c10 print.c:275 + jne short 01c22h ; 75 0d ; 0xf1c13 + mov dl, byte [bp-00ch] ; 8a 56 f4 ; 0xf1c15 print.c:276 + xor dh, dh ; 30 f6 ; 0xf1c18 + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1c1a + call 01760h ; e8 40 fb ; 0xf1c1d + jmp short 01c30h ; eb 0e ; 0xf1c20 print.c:278 + mov ax, 00107h ; b8 07 01 ; 0xf1c22 print.c:279 + push ax ; 50 ; 0xf1c25 + mov ax, strict word 00007h ; b8 07 00 ; 0xf1c26 + push ax ; 50 ; 0xf1c29 + call 0190fh ; e8 e2 fc ; 0xf1c2a + add sp, strict byte 00004h ; 83 c4 04 ; 0xf1c2d + xor cx, cx ; 31 c9 ; 0xf1c30 print.c:280 + jmp short 01c3ch ; eb 08 ; 0xf1c32 print.c:283 + xor dh, dh ; 30 f6 ; 0xf1c34 print.c:284 + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1c36 + call 01760h ; e8 24 fb ; 0xf1c39 + inc word [bp+006h] ; ff 46 06 ; 0xf1c3c print.c:286 + jmp near 01940h ; e9 fe fc ; 0xf1c3f print.c:287 + xor ax, ax ; 31 c0 ; 0xf1c42 print.c:288 + mov word [bp-016h], ax ; 89 46 ea ; 0xf1c44 + mov word [bp-014h], ax ; 89 46 ec ; 0xf1c47 + test byte [bp+004h], 001h ; f6 46 04 01 ; 0xf1c4a print.c:289 + je short 01c54h ; 74 04 ; 0xf1c4e + cli ; fa ; 0xf1c50 print.c:291 + hlt ; f4 ; 0xf1c51 print.c:292 + jmp short 01c51h ; eb fd ; 0xf1c52 + lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf1c54 print.c:294 + pop di ; 5f ; 0xf1c57 + pop si ; 5e ; 0xf1c58 + pop dx ; 5a ; 0xf1c59 + pop cx ; 59 ; 0xf1c5a + pop bx ; 5b ; 0xf1c5b + pop bp ; 5d ; 0xf1c5c + retn ; c3 ; 0xf1c5d + ; disGetNextSymbol 0xf1c5e LB 0x82ea -> off=0x0 cb=00000000000000f0 uValue=00000000000f065e 'ata_init' +ata_init: ; 0xf1c5e LB 0xf0 + push si ; 56 ; 0xf1c5e ata.c:97 + push di ; 57 ; 0xf1c5f + push bp ; 55 ; 0xf1c60 + mov bp, sp ; 89 e5 ; 0xf1c61 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf1c63 ata.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf1c66 + mov es, ax ; 8e c0 ; 0xf1c69 + mov di, word [es:bx] ; 26 8b 3f ; 0xf1c6b + mov si, 00122h ; be 22 01 ; 0xf1c6e ata.c:49 + xor cl, cl ; 30 c9 ; 0xf1c71 ata.c:105 + jmp short 01c7ah ; eb 05 ; 0xf1c73 + cmp cl, 004h ; 80 f9 04 ; 0xf1c75 + jnc short 01ca7h ; 73 2d ; 0xf1c78 + mov al, cl ; 88 c8 ; 0xf1c7a ata.c:106 + xor ah, ah ; 30 e4 ; 0xf1c7c + mov bx, strict word 00006h ; bb 06 00 ; 0xf1c7e + imul bx ; f7 eb ; 0xf1c81 + mov es, di ; 8e c7 ; 0xf1c83 + mov bx, si ; 89 f3 ; 0xf1c85 + add bx, ax ; 01 c3 ; 0xf1c87 + mov byte [es:bx+00204h], 000h ; 26 c6 87 04 02 00 ; 0xf1c89 + mov word [es:bx+00206h], strict word 00000h ; 26 c7 87 06 02 00 00 ; 0xf1c8f ata.c:107 + mov word [es:bx+00208h], strict word 00000h ; 26 c7 87 08 02 00 00 ; 0xf1c96 ata.c:108 + mov byte [es:bx+00205h], 000h ; 26 c6 87 05 02 00 ; 0xf1c9d ata.c:109 + db 0feh, 0c1h + ; inc cl ; fe c1 ; 0xf1ca3 ata.c:110 + jmp short 01c75h ; eb ce ; 0xf1ca5 + xor cl, cl ; 30 c9 ; 0xf1ca7 ata.c:113 + jmp short 01cb0h ; eb 05 ; 0xf1ca9 + cmp cl, 008h ; 80 f9 08 ; 0xf1cab + jnc short 01d1bh ; 73 6b ; 0xf1cae + mov al, cl ; 88 c8 ; 0xf1cb0 ata.c:114 + xor ah, ah ; 30 e4 ; 0xf1cb2 + mov bx, strict word 0001ch ; bb 1c 00 ; 0xf1cb4 + imul bx ; f7 eb ; 0xf1cb7 + mov es, di ; 8e c7 ; 0xf1cb9 + mov bx, si ; 89 f3 ; 0xf1cbb + add bx, ax ; 01 c3 ; 0xf1cbd + mov word [es:bx+022h], strict word 00000h ; 26 c7 47 22 00 00 ; 0xf1cbf + mov word [es:bx+024h], strict word 00000h ; 26 c7 47 24 00 00 ; 0xf1cc5 ata.c:116 + mov byte [es:bx+026h], 000h ; 26 c6 47 26 00 ; 0xf1ccb ata.c:118 + mov word [es:bx+028h], 00200h ; 26 c7 47 28 00 02 ; 0xf1cd0 ata.c:119 + mov byte [es:bx+027h], 000h ; 26 c6 47 27 00 ; 0xf1cd6 ata.c:120 + mov word [es:bx+02ah], strict word 00000h ; 26 c7 47 2a 00 00 ; 0xf1cdb ata.c:121 + mov word [es:bx+02ch], strict word 00000h ; 26 c7 47 2c 00 00 ; 0xf1ce1 ata.c:122 + mov word [es:bx+02eh], strict word 00000h ; 26 c7 47 2e 00 00 ; 0xf1ce7 ata.c:123 + mov word [es:bx+030h], strict word 00000h ; 26 c7 47 30 00 00 ; 0xf1ced ata.c:124 + mov word [es:bx+032h], strict word 00000h ; 26 c7 47 32 00 00 ; 0xf1cf3 ata.c:125 + mov word [es:bx+034h], strict word 00000h ; 26 c7 47 34 00 00 ; 0xf1cf9 ata.c:126 + mov word [es:bx+03ch], strict word 00000h ; 26 c7 47 3c 00 00 ; 0xf1cff ata.c:127 + mov word [es:bx+03ah], strict word 00000h ; 26 c7 47 3a 00 00 ; 0xf1d05 + mov word [es:bx+038h], strict word 00000h ; 26 c7 47 38 00 00 ; 0xf1d0b + mov word [es:bx+036h], strict word 00000h ; 26 c7 47 36 00 00 ; 0xf1d11 + db 0feh, 0c1h + ; inc cl ; fe c1 ; 0xf1d17 ata.c:128 + jmp short 01cabh ; eb 90 ; 0xf1d19 + xor cl, cl ; 30 c9 ; 0xf1d1b ata.c:131 + jmp short 01d24h ; eb 05 ; 0xf1d1d + cmp cl, 010h ; 80 f9 10 ; 0xf1d1f + jnc short 01d3ch ; 73 18 ; 0xf1d22 + mov bl, cl ; 88 cb ; 0xf1d24 ata.c:132 + xor bh, bh ; 30 ff ; 0xf1d26 + mov es, di ; 8e c7 ; 0xf1d28 + add bx, si ; 01 f3 ; 0xf1d2a + mov byte [es:bx+001e3h], 010h ; 26 c6 87 e3 01 10 ; 0xf1d2c + mov byte [es:bx+001f4h], 010h ; 26 c6 87 f4 01 10 ; 0xf1d32 ata.c:133 + db 0feh, 0c1h + ; inc cl ; fe c1 ; 0xf1d38 ata.c:134 + jmp short 01d1fh ; eb e3 ; 0xf1d3a + mov es, di ; 8e c7 ; 0xf1d3c ata.c:136 + mov byte [es:si+001e2h], 000h ; 26 c6 84 e2 01 00 ; 0xf1d3e + mov byte [es:si+001f3h], 000h ; 26 c6 84 f3 01 00 ; 0xf1d44 ata.c:137 + pop bp ; 5d ; 0xf1d4a ata.c:138 + pop di ; 5f ; 0xf1d4b + pop si ; 5e ; 0xf1d4c + retn ; c3 ; 0xf1d4d + ; disGetNextSymbol 0xf1d4e LB 0x81fa -> off=0x0 cb=00000000000000ea uValue=00000000000f074e 'ata_reset' +ata_reset: ; 0xf1d4e LB 0xea + push bp ; 55 ; 0xf1d4e ata.c:146 + mov bp, sp ; 89 e5 ; 0xf1d4f + push bx ; 53 ; 0xf1d51 + push cx ; 51 ; 0xf1d52 + push dx ; 52 ; 0xf1d53 + push si ; 56 ; 0xf1d54 + push di ; 57 ; 0xf1d55 + push ax ; 50 ; 0xf1d56 + push ax ; 50 ; 0xf1d57 + push ax ; 50 ; 0xf1d58 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf1d59 ata.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf1d5c + mov es, ax ; 8e c0 ; 0xf1d5f + mov bx, word [es:bx] ; 26 8b 1f ; 0xf1d61 + mov word [bp-00eh], 00122h ; c7 46 f2 22 01 ; 0xf1d64 ata.c:49 + mov di, bx ; 89 df ; 0xf1d69 + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf1d6b ata.c:155 + shr ax, 1 ; d1 e8 ; 0xf1d6e + mov ah, byte [bp-010h] ; 8a 66 f0 ; 0xf1d70 ata.c:156 + and ah, 001h ; 80 e4 01 ; 0xf1d73 + mov byte [bp-00ch], ah ; 88 66 f4 ; 0xf1d76 + xor ah, ah ; 30 e4 ; 0xf1d79 ata.c:158 + mov dx, strict word 00006h ; ba 06 00 ; 0xf1d7b + imul dx ; f7 ea ; 0xf1d7e + mov es, bx ; 8e c3 ; 0xf1d80 + mov bx, ax ; 89 c3 ; 0xf1d82 + add bx, 00122h ; 81 c3 22 01 ; 0xf1d84 + mov cx, word [es:bx+00206h] ; 26 8b 8f 06 02 ; 0xf1d88 + mov si, word [es:bx+00208h] ; 26 8b b7 08 02 ; 0xf1d8d ata.c:159 + lea dx, [si+006h] ; 8d 54 06 ; 0xf1d92 ata.c:164 + mov AL, strict byte 00eh ; b0 0e ; 0xf1d95 + out DX, AL ; ee ; 0xf1d97 + mov bx, 000ffh ; bb ff 00 ; 0xf1d98 ata.c:167 + dec bx ; 4b ; 0xf1d9b ata.c:168 + test bx, bx ; 85 db ; 0xf1d9c + jbe short 01dach ; 76 0c ; 0xf1d9e + mov dx, cx ; 89 ca ; 0xf1da0 ata.c:169 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf1da2 + in AL, DX ; ec ; 0xf1da5 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf1da6 + test AL, strict byte 080h ; a8 80 ; 0xf1da8 ata.c:170 + je short 01d9bh ; 74 ef ; 0xf1daa + lea dx, [si+006h] ; 8d 54 06 ; 0xf1dac ata.c:175 + mov AL, strict byte 00ah ; b0 0a ; 0xf1daf + out DX, AL ; ee ; 0xf1db1 + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf1db2 ata.c:177 + mov dx, strict word 0001ch ; ba 1c 00 ; 0xf1db5 + imul dx ; f7 ea ; 0xf1db8 + mov es, di ; 8e c7 ; 0xf1dba + mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf1dbc + add bx, ax ; 01 c3 ; 0xf1dbf + cmp byte [es:bx+022h], 000h ; 26 80 7f 22 00 ; 0xf1dc1 + je short 01e14h ; 74 4c ; 0xf1dc6 + cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf1dc8 ata.c:180 + je short 01dd3h ; 74 05 ; 0xf1dcc + mov ax, 000b0h ; b8 b0 00 ; 0xf1dce + jmp short 01dd6h ; eb 03 ; 0xf1dd1 + mov ax, 000a0h ; b8 a0 00 ; 0xf1dd3 + mov dx, cx ; 89 ca ; 0xf1dd6 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf1dd8 + out DX, AL ; ee ; 0xf1ddb + mov dx, cx ; 89 ca ; 0xf1ddc ata.c:181 + inc dx ; 42 ; 0xf1dde + inc dx ; 42 ; 0xf1ddf + in AL, DX ; ec ; 0xf1de0 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf1de1 + mov bx, ax ; 89 c3 ; 0xf1de3 + mov dx, cx ; 89 ca ; 0xf1de5 ata.c:182 + add dx, strict byte 00003h ; 83 c2 03 ; 0xf1de7 + in AL, DX ; ec ; 0xf1dea + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf1deb + cmp bl, 001h ; 80 fb 01 ; 0xf1ded ata.c:184 + jne short 01e14h ; 75 22 ; 0xf1df0 + cmp al, bl ; 38 d8 ; 0xf1df2 + jne short 01e14h ; 75 1e ; 0xf1df4 + mov bx, strict word 0ffffh ; bb ff ff ; 0xf1df6 ata.c:186 + dec bx ; 4b ; 0xf1df9 ata.c:187 + test bx, bx ; 85 db ; 0xf1dfa + jbe short 01e14h ; 76 16 ; 0xf1dfc + mov dx, cx ; 89 ca ; 0xf1dfe ata.c:188 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf1e00 + in AL, DX ; ec ; 0xf1e03 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf1e04 + test AL, strict byte 080h ; a8 80 ; 0xf1e06 ata.c:189 + je short 01e14h ; 74 0a ; 0xf1e08 + mov ax, strict word 0ffffh ; b8 ff ff ; 0xf1e0a ata.c:191 + dec ax ; 48 ; 0xf1e0d ata.c:192 + test ax, ax ; 85 c0 ; 0xf1e0e + jnbe short 01e0dh ; 77 fb ; 0xf1e10 + jmp short 01df9h ; eb e5 ; 0xf1e12 ata.c:195 + mov bx, strict word 00010h ; bb 10 00 ; 0xf1e14 ata.c:200 + dec bx ; 4b ; 0xf1e17 ata.c:201 + test bx, bx ; 85 db ; 0xf1e18 + jbe short 01e28h ; 76 0c ; 0xf1e1a + mov dx, cx ; 89 ca ; 0xf1e1c ata.c:202 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf1e1e + in AL, DX ; ec ; 0xf1e21 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf1e22 + test AL, strict byte 040h ; a8 40 ; 0xf1e24 ata.c:203 + je short 01e17h ; 74 ef ; 0xf1e26 + lea dx, [si+006h] ; 8d 54 06 ; 0xf1e28 ata.c:208 + mov AL, strict byte 008h ; b0 08 ; 0xf1e2b + out DX, AL ; ee ; 0xf1e2d + lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf1e2e ata.c:209 + pop di ; 5f ; 0xf1e31 + pop si ; 5e ; 0xf1e32 + pop dx ; 5a ; 0xf1e33 + pop cx ; 59 ; 0xf1e34 + pop bx ; 5b ; 0xf1e35 + pop bp ; 5d ; 0xf1e36 + retn ; c3 ; 0xf1e37 + ; disGetNextSymbol 0xf1e38 LB 0x8110 -> off=0x0 cb=00000000000002b7 uValue=00000000000f0838 'ata_cmd_data_in' +ata_cmd_data_in: ; 0xf1e38 LB 0x2b7 + push bp ; 55 ; 0xf1e38 ata.c:223 + mov bp, sp ; 89 e5 ; 0xf1e39 + push si ; 56 ; 0xf1e3b + push di ; 57 ; 0xf1e3c + sub sp, strict byte 00010h ; 83 ec 10 ; 0xf1e3d + push ax ; 50 ; 0xf1e40 + push dx ; 52 ; 0xf1e41 + push bx ; 53 ; 0xf1e42 + push cx ; 51 ; 0xf1e43 + mov es, dx ; 8e c2 ; 0xf1e44 ata.c:233 + mov bx, ax ; 89 c3 ; 0xf1e46 + mov al, byte [es:bx+00ch] ; 26 8a 47 0c ; 0xf1e48 + mov byte [bp-008h], al ; 88 46 f8 ; 0xf1e4c + mov bl, al ; 88 c3 ; 0xf1e4f ata.c:235 + xor bh, ah ; 30 e7 ; 0xf1e51 + mov ax, bx ; 89 d8 ; 0xf1e53 + cwd ; 99 ; 0xf1e55 + db 02bh, 0c2h + ; sub ax, dx ; 2b c2 ; 0xf1e56 + sar ax, 1 ; d1 f8 ; 0xf1e58 + mov dx, strict word 00006h ; ba 06 00 ; 0xf1e5a + imul dx ; f7 ea ; 0xf1e5d + mov di, word [bp-016h] ; 8b 7e ea ; 0xf1e5f + add di, ax ; 01 c7 ; 0xf1e62 + mov ax, word [es:di+00206h] ; 26 8b 85 06 02 ; 0xf1e64 + mov word [bp-00ah], ax ; 89 46 f6 ; 0xf1e69 + mov ax, word [es:di+00208h] ; 26 8b 85 08 02 ; 0xf1e6c ata.c:236 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf1e71 + mov ax, bx ; 89 d8 ; 0xf1e74 ata.c:238 + mov dx, strict word 0001ch ; ba 1c 00 ; 0xf1e76 + imul dx ; f7 ea ; 0xf1e79 + mov bx, word [bp-016h] ; 8b 5e ea ; 0xf1e7b + add bx, ax ; 01 c3 ; 0xf1e7e + mov ax, word [es:bx+028h] ; 26 8b 47 28 ; 0xf1e80 + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf1e84 + test ax, ax ; 85 c0 ; 0xf1e87 ata.c:239 + jne short 01e92h ; 75 07 ; 0xf1e89 + mov word [bp-00eh], 08000h ; c7 46 f2 00 80 ; 0xf1e8b ata.c:245 + jmp short 01e95h ; eb 03 ; 0xf1e90 ata.c:246 + shr word [bp-00eh], 1 ; d1 6e f2 ; 0xf1e92 ata.c:252 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1e95 ata.c:255 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf1e98 + in AL, DX ; ec ; 0xf1e9b + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf1e9c + test AL, strict byte 080h ; a8 80 ; 0xf1e9e ata.c:256 + je short 01eb1h ; 74 0f ; 0xf1ea0 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf1ea2 ata.c:260 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf1ea5 + mov AL, strict byte 008h ; b0 08 ; 0xf1ea8 + out DX, AL ; ee ; 0xf1eaa + mov ax, strict word 00001h ; b8 01 00 ; 0xf1eab ata.c:261 + jmp near 020e8h ; e9 37 02 ; 0xf1eae + mov es, [bp-018h] ; 8e 46 e8 ; 0xf1eb1 ata.c:264 + mov di, word [bp-016h] ; 8b 7e ea ; 0xf1eb4 + mov di, word [es:di+008h] ; 26 8b 7d 08 ; 0xf1eb7 + mov bx, word [bp-016h] ; 8b 5e ea ; 0xf1ebb + mov ax, word [es:bx+00ah] ; 26 8b 47 0a ; 0xf1ebe + mov word [bp-012h], ax ; 89 46 ee ; 0xf1ec2 + mov al, byte [es:bx+016h] ; 26 8a 47 16 ; 0xf1ec5 ata.c:265 + mov byte [bp-006h], al ; 88 46 fa ; 0xf1ec9 + mov ax, word [es:bx+012h] ; 26 8b 47 12 ; 0xf1ecc ata.c:266 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf1ed0 + mov bl, byte [es:bx+014h] ; 26 8a 5f 14 ; 0xf1ed3 ata.c:267 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf1ed7 ata.c:270 + test al, al ; 84 c0 ; 0xf1eda + je short 01ee1h ; 74 03 ; 0xf1edc + jmp near 01fc6h ; e9 e5 00 ; 0xf1ede + xor ah, ah ; 30 e4 ; 0xf1ee1 ata.c:271 + xor bx, bx ; 31 db ; 0xf1ee3 + mov word [bp-014h], bx ; 89 5e ec ; 0xf1ee5 + mov si, word [bp-016h] ; 8b 76 ea ; 0xf1ee8 + mov cx, word [es:si] ; 26 8b 0c ; 0xf1eeb + add cx, word [bp-01ch] ; 03 4e e4 ; 0xf1eee + adc ax, word [es:si+002h] ; 26 13 44 02 ; 0xf1ef1 + adc bx, word [es:si+004h] ; 26 13 5c 04 ; 0xf1ef5 + mov dx, word [es:si+006h] ; 26 8b 54 06 ; 0xf1ef9 + adc dx, word [bp-014h] ; 13 56 ec ; 0xf1efd + test dx, dx ; 85 d2 ; 0xf1f00 + jnbe short 01f16h ; 77 12 ; 0xf1f02 + je short 01f09h ; 74 03 ; 0xf1f04 + jmp near 01f7ch ; e9 73 00 ; 0xf1f06 + test bx, bx ; 85 db ; 0xf1f09 + jnbe short 01f16h ; 77 09 ; 0xf1f0b + jne short 01f7ch ; 75 6d ; 0xf1f0d + cmp ax, 01000h ; 3d 00 10 ; 0xf1f0f + jnbe short 01f16h ; 77 02 ; 0xf1f12 + jne short 01f7ch ; 75 66 ; 0xf1f14 + mov bx, si ; 89 f3 ; 0xf1f16 ata.c:273 + mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf1f18 + mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf1f1c + mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf1f20 + mov dx, word [es:si] ; 26 8b 14 ; 0xf1f24 + mov si, strict word 00018h ; be 18 00 ; 0xf1f27 + call 09c10h ; e8 e3 7c ; 0xf1f2a + xor dh, dh ; 30 f6 ; 0xf1f2d + mov word [bp-014h], dx ; 89 56 ec ; 0xf1f2f + mov bx, word [bp-016h] ; 8b 5e ea ; 0xf1f32 ata.c:274 + mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf1f35 + mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf1f39 + mov si, word [bp-016h] ; 8b 76 ea ; 0xf1f3d + mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf1f40 + mov dx, word [es:si] ; 26 8b 14 ; 0xf1f44 + mov si, strict word 00020h ; be 20 00 ; 0xf1f47 + call 09c10h ; e8 c3 7c ; 0xf1f4a + mov bx, dx ; 89 d3 ; 0xf1f4d + mov word [bp-010h], dx ; 89 56 f0 ; 0xf1f4f + mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xf1f52 ata.c:275 + mov al, ah ; 88 e0 ; 0xf1f55 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1f57 + inc dx ; 42 ; 0xf1f5a + inc dx ; 42 ; 0xf1f5b + out DX, AL ; ee ; 0xf1f5c + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1f5d ata.c:276 + add dx, strict byte 00003h ; 83 c2 03 ; 0xf1f60 + mov al, byte [bp-014h] ; 8a 46 ec ; 0xf1f63 + out DX, AL ; ee ; 0xf1f66 + xor bh, bh ; 30 ff ; 0xf1f67 ata.c:277 + mov ax, bx ; 89 d8 ; 0xf1f69 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1f6b + add dx, strict byte 00004h ; 83 c2 04 ; 0xf1f6e + out DX, AL ; ee ; 0xf1f71 + mov al, byte [bp-00fh] ; 8a 46 f1 ; 0xf1f72 ata.c:278 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1f75 + add dx, strict byte 00005h ; 83 c2 05 ; 0xf1f78 + out DX, AL ; ee ; 0xf1f7b + mov es, [bp-018h] ; 8e 46 e8 ; 0xf1f7c ata.c:282 + mov bx, word [bp-016h] ; 8b 5e ea ; 0xf1f7f + mov ax, word [es:bx] ; 26 8b 07 ; 0xf1f82 + mov byte [bp-006h], al ; 88 46 fa ; 0xf1f85 + mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf1f88 ata.c:283 + mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf1f8c + mov si, word [bp-016h] ; 8b 76 ea ; 0xf1f90 + mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf1f93 + mov dx, word [es:si] ; 26 8b 14 ; 0xf1f97 + mov si, strict word 00008h ; be 08 00 ; 0xf1f9a + call 09c10h ; e8 70 7c ; 0xf1f9d + mov word [bp-010h], dx ; 89 56 f0 ; 0xf1fa0 + mov bx, word [bp-016h] ; 8b 5e ea ; 0xf1fa3 ata.c:284 + mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf1fa6 + mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf1faa + mov si, word [bp-016h] ; 8b 76 ea ; 0xf1fae + mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf1fb1 + mov dx, word [es:si] ; 26 8b 14 ; 0xf1fb5 + mov si, strict word 00018h ; be 18 00 ; 0xf1fb8 + call 09c10h ; e8 52 7c ; 0xf1fbb + mov bl, dl ; 88 d3 ; 0xf1fbe + and bl, 00fh ; 80 e3 0f ; 0xf1fc0 + or bl, 040h ; 80 cb 40 ; 0xf1fc3 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf1fc6 ata.c:287 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf1fc9 + mov AL, strict byte 00ah ; b0 0a ; 0xf1fcc + out DX, AL ; ee ; 0xf1fce + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1fcf ata.c:288 + inc dx ; 42 ; 0xf1fd2 + xor al, al ; 30 c0 ; 0xf1fd3 + out DX, AL ; ee ; 0xf1fd5 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1fd6 ata.c:289 + inc dx ; 42 ; 0xf1fd9 + inc dx ; 42 ; 0xf1fda + mov al, byte [bp-01ch] ; 8a 46 e4 ; 0xf1fdb + out DX, AL ; ee ; 0xf1fde + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1fdf ata.c:290 + add dx, strict byte 00003h ; 83 c2 03 ; 0xf1fe2 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf1fe5 + out DX, AL ; ee ; 0xf1fe8 + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf1fe9 ata.c:291 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1fec + add dx, strict byte 00004h ; 83 c2 04 ; 0xf1fef + out DX, AL ; ee ; 0xf1ff2 + mov al, byte [bp-00fh] ; 8a 46 f1 ; 0xf1ff3 ata.c:292 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1ff6 + add dx, strict byte 00005h ; 83 c2 05 ; 0xf1ff9 + out DX, AL ; ee ; 0xf1ffc + test byte [bp-008h], 001h ; f6 46 f8 01 ; 0xf1ffd ata.c:293 + je short 02008h ; 74 05 ; 0xf2001 + mov ax, 000b0h ; b8 b0 00 ; 0xf2003 + jmp short 0200bh ; eb 03 ; 0xf2006 + mov ax, 000a0h ; b8 a0 00 ; 0xf2008 + mov dl, bl ; 88 da ; 0xf200b + xor dh, dh ; 30 f6 ; 0xf200d + or ax, dx ; 09 d0 ; 0xf200f + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2011 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2014 + out DX, AL ; ee ; 0xf2017 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2018 ata.c:294 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf201b + mov al, byte [bp-01ah] ; 8a 46 e6 ; 0xf201e + out DX, AL ; ee ; 0xf2021 + mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xf2022 ata.c:296 + cmp ax, 000c4h ; 3d c4 00 ; 0xf2025 + je short 0202fh ; 74 05 ; 0xf2028 + cmp ax, strict word 00029h ; 3d 29 00 ; 0xf202a + jne short 02039h ; 75 0a ; 0xf202d + mov si, word [bp-01ch] ; 8b 76 e4 ; 0xf202f ata.c:297 + mov word [bp-01ch], strict word 00001h ; c7 46 e4 01 00 ; 0xf2032 ata.c:298 + jmp short 0203ch ; eb 03 ; 0xf2037 ata.c:299 + mov si, strict word 00001h ; be 01 00 ; 0xf2039 ata.c:300 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf203c ata.c:304 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf203f + in AL, DX ; ec ; 0xf2042 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2043 + mov bl, al ; 88 c3 ; 0xf2045 + test AL, strict byte 080h ; a8 80 ; 0xf2047 ata.c:305 + jne short 0203ch ; 75 f1 ; 0xf2049 + test AL, strict byte 001h ; a8 01 ; 0xf204b ata.c:309 + je short 0205eh ; 74 0f ; 0xf204d + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf204f ata.c:312 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2052 + mov AL, strict byte 008h ; b0 08 ; 0xf2055 + out DX, AL ; ee ; 0xf2057 + mov ax, strict word 00002h ; b8 02 00 ; 0xf2058 ata.c:313 + jmp near 020e8h ; e9 8a 00 ; 0xf205b + test bl, 008h ; f6 c3 08 ; 0xf205e ata.c:314 + jne short 02072h ; 75 0f ; 0xf2061 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2063 ata.c:317 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2066 + mov AL, strict byte 008h ; b0 08 ; 0xf2069 + out DX, AL ; ee ; 0xf206b + mov ax, strict word 00003h ; b8 03 00 ; 0xf206c ata.c:318 + jmp near 020e8h ; e9 76 00 ; 0xf206f + sti ; fb ; 0xf2072 ata.c:323 + cmp di, 0f800h ; 81 ff 00 f8 ; 0xf2073 ata.c:328 + jc short 02086h ; 72 0d ; 0xf2077 + sub di, 00800h ; 81 ef 00 08 ; 0xf2079 ata.c:329 + mov ax, word [bp-012h] ; 8b 46 ee ; 0xf207d + add ax, 00080h ; 05 80 00 ; 0xf2080 + mov word [bp-012h], ax ; 89 46 ee ; 0xf2083 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2086 ata.c:336 + mov cx, word [bp-00eh] ; 8b 4e f2 ; 0xf2089 + mov es, [bp-012h] ; 8e 46 ee ; 0xf208c + rep insw ; f3 6d ; 0xf208f + mov es, [bp-018h] ; 8e 46 e8 ; 0xf2091 ata.c:337 + mov bx, word [bp-016h] ; 8b 5e ea ; 0xf2094 + add word [es:bx+018h], si ; 26 01 77 18 ; 0xf2097 + dec word [bp-01ch] ; ff 4e e4 ; 0xf209b ata.c:338 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf209e ata.c:340 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf20a1 + in AL, DX ; ec ; 0xf20a4 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf20a5 + mov bl, al ; 88 c3 ; 0xf20a7 + test AL, strict byte 080h ; a8 80 ; 0xf20a9 ata.c:341 + jne short 0209eh ; 75 f1 ; 0xf20ab + cmp word [bp-01ch], strict byte 00000h ; 83 7e e4 00 ; 0xf20ad ata.c:344 + jne short 020c7h ; 75 14 ; 0xf20b1 + and AL, strict byte 0c9h ; 24 c9 ; 0xf20b3 ata.c:345 + cmp AL, strict byte 040h ; 3c 40 ; 0xf20b5 + je short 020ddh ; 74 24 ; 0xf20b7 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf20b9 ata.c:349 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf20bc + mov AL, strict byte 008h ; b0 08 ; 0xf20bf + out DX, AL ; ee ; 0xf20c1 + mov ax, strict word 00004h ; b8 04 00 ; 0xf20c2 ata.c:350 + jmp short 020e8h ; eb 21 ; 0xf20c5 + mov al, bl ; 88 d8 ; 0xf20c7 ata.c:355 + and AL, strict byte 0c9h ; 24 c9 ; 0xf20c9 + cmp AL, strict byte 048h ; 3c 48 ; 0xf20cb + je short 02073h ; 74 a4 ; 0xf20cd + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf20cf ata.c:359 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf20d2 + mov AL, strict byte 008h ; b0 08 ; 0xf20d5 + out DX, AL ; ee ; 0xf20d7 + mov ax, strict word 00005h ; b8 05 00 ; 0xf20d8 ata.c:360 + jmp short 020e8h ; eb 0b ; 0xf20db + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf20dd ata.c:366 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf20e0 + mov AL, strict byte 008h ; b0 08 ; 0xf20e3 + out DX, AL ; ee ; 0xf20e5 + xor ax, ax ; 31 c0 ; 0xf20e6 ata.c:367 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf20e8 ata.c:368 + pop di ; 5f ; 0xf20eb + pop si ; 5e ; 0xf20ec + pop bp ; 5d ; 0xf20ed + retn ; c3 ; 0xf20ee + ; disGetNextSymbol 0xf20ef LB 0x7e59 -> off=0x0 cb=00000000000006ab uValue=00000000000f0aef 'ata_detect' +ata_detect: ; 0xf20ef LB 0x6ab + push bp ; 55 ; 0xf20ef ata.c:374 + mov bp, sp ; 89 e5 ; 0xf20f0 + push si ; 56 ; 0xf20f2 + push di ; 57 ; 0xf20f3 + sub sp, 00264h ; 81 ec 64 02 ; 0xf20f4 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf20f8 ata.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf20fb + mov es, ax ; 8e c0 ; 0xf20fe + mov ax, word [es:bx] ; 26 8b 07 ; 0xf2100 + mov word [bp-028h], ax ; 89 46 d8 ; 0xf2103 ata.c:49 + mov bx, 00122h ; bb 22 01 ; 0xf2106 ata.c:381 + mov es, ax ; 8e c0 ; 0xf2109 + mov word [bp-030h], bx ; 89 5e d0 ; 0xf210b + mov word [bp-02eh], ax ; 89 46 d2 ; 0xf210e + mov byte [es:bx+00204h], 000h ; 26 c6 87 04 02 00 ; 0xf2111 ata.c:384 + mov word [es:bx+00206h], 001f0h ; 26 c7 87 06 02 f0 01 ; 0xf2117 ata.c:385 + mov word [es:bx+00208h], 003f0h ; 26 c7 87 08 02 f0 03 ; 0xf211e ata.c:386 + mov byte [es:bx+00205h], 00eh ; 26 c6 87 05 02 0e ; 0xf2125 ata.c:387 + mov byte [es:bx+0020ah], 000h ; 26 c6 87 0a 02 00 ; 0xf212b ata.c:390 + mov word [es:bx+0020ch], 00170h ; 26 c7 87 0c 02 70 01 ; 0xf2131 ata.c:391 + mov word [es:bx+0020eh], 00370h ; 26 c7 87 0e 02 70 03 ; 0xf2138 ata.c:392 + mov byte [es:bx+0020bh], 00fh ; 26 c6 87 0b 02 0f ; 0xf213f ata.c:393 + xor al, al ; 30 c0 ; 0xf2145 ata.c:414 + mov byte [bp-014h], al ; 88 46 ec ; 0xf2147 + mov byte [bp-00ch], al ; 88 46 f4 ; 0xf214a + mov byte [bp-00eh], al ; 88 46 f2 ; 0xf214d ata.c:416 + jmp near 0271fh ; e9 cc 05 ; 0xf2150 + mov ax, 000a0h ; b8 a0 00 ; 0xf2153 ata.c:431 + lea dx, [bx+006h] ; 8d 57 06 ; 0xf2156 + out DX, AL ; ee ; 0xf2159 + lea di, [bx+002h] ; 8d 7f 02 ; 0xf215a ata.c:432 + mov AL, strict byte 055h ; b0 55 ; 0xf215d + mov dx, di ; 89 fa ; 0xf215f + out DX, AL ; ee ; 0xf2161 + lea si, [bx+003h] ; 8d 77 03 ; 0xf2162 ata.c:433 + mov AL, strict byte 0aah ; b0 aa ; 0xf2165 + mov dx, si ; 89 f2 ; 0xf2167 + out DX, AL ; ee ; 0xf2169 + mov dx, di ; 89 fa ; 0xf216a ata.c:434 + out DX, AL ; ee ; 0xf216c + mov AL, strict byte 055h ; b0 55 ; 0xf216d ata.c:435 + mov dx, si ; 89 f2 ; 0xf216f + out DX, AL ; ee ; 0xf2171 + mov dx, di ; 89 fa ; 0xf2172 ata.c:436 + out DX, AL ; ee ; 0xf2174 + mov AL, strict byte 0aah ; b0 aa ; 0xf2175 ata.c:437 + mov dx, si ; 89 f2 ; 0xf2177 + out DX, AL ; ee ; 0xf2179 + mov dx, di ; 89 fa ; 0xf217a ata.c:440 + in AL, DX ; ec ; 0xf217c + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf217d + mov cx, ax ; 89 c1 ; 0xf217f + mov dx, si ; 89 f2 ; 0xf2181 ata.c:441 + in AL, DX ; ec ; 0xf2183 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2184 + cmp cl, 055h ; 80 f9 55 ; 0xf2186 ata.c:443 + jne short 021d4h ; 75 49 ; 0xf2189 + cmp AL, strict byte 0aah ; 3c aa ; 0xf218b + jne short 021d4h ; 75 45 ; 0xf218d + mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf218f ata.c:444 + xor ah, ah ; 30 e4 ; 0xf2192 + mov dx, strict word 0001ch ; ba 1c 00 ; 0xf2194 + imul dx ; f7 ea ; 0xf2197 + les si, [bp-030h] ; c4 76 d0 ; 0xf2199 + add si, ax ; 01 c6 ; 0xf219c + mov byte [es:si+022h], 001h ; 26 c6 44 22 01 ; 0xf219e + mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf21a3 ata.c:447 + xor ah, ah ; 30 e4 ; 0xf21a6 + call 01d4eh ; e8 a3 fb ; 0xf21a8 + cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf21ab ata.c:450 + je short 021b6h ; 74 05 ; 0xf21af + mov ax, 000b0h ; b8 b0 00 ; 0xf21b1 + jmp short 021b9h ; eb 03 ; 0xf21b4 + mov ax, 000a0h ; b8 a0 00 ; 0xf21b6 + lea dx, [bx+006h] ; 8d 57 06 ; 0xf21b9 + out DX, AL ; ee ; 0xf21bc + lea dx, [bx+002h] ; 8d 57 02 ; 0xf21bd ata.c:451 + in AL, DX ; ec ; 0xf21c0 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf21c1 + mov cx, ax ; 89 c1 ; 0xf21c3 + lea dx, [bx+003h] ; 8d 57 03 ; 0xf21c5 ata.c:452 + in AL, DX ; ec ; 0xf21c8 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf21c9 + cmp cl, 001h ; 80 f9 01 ; 0xf21cb ata.c:453 + jne short 02211h ; 75 41 ; 0xf21ce + cmp al, cl ; 38 c8 ; 0xf21d0 + je short 021d6h ; 74 02 ; 0xf21d2 + jmp short 02211h ; eb 3b ; 0xf21d4 + lea dx, [bx+004h] ; 8d 57 04 ; 0xf21d6 ata.c:454 + in AL, DX ; ec ; 0xf21d9 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf21da + mov cx, ax ; 89 c1 ; 0xf21dc + mov byte [bp-010h], al ; 88 46 f0 ; 0xf21de + lea dx, [bx+005h] ; 8d 57 05 ; 0xf21e1 ata.c:455 + in AL, DX ; ec ; 0xf21e4 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf21e5 + mov word [bp-01ch], ax ; 89 46 e4 ; 0xf21e7 + mov ch, byte [bp-01ch] ; 8a 6e e4 ; 0xf21ea + lea dx, [bx+007h] ; 8d 57 07 ; 0xf21ed ata.c:456 + in AL, DX ; ec ; 0xf21f0 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf21f1 + cmp cl, 014h ; 80 f9 14 ; 0xf21f3 ata.c:458 + jne short 02213h ; 75 1b ; 0xf21f6 + cmp ch, 0ebh ; 80 fd eb ; 0xf21f8 + jne short 02213h ; 75 16 ; 0xf21fb + mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf21fd ata.c:459 + xor ah, ah ; 30 e4 ; 0xf2200 + mov dx, strict word 0001ch ; ba 1c 00 ; 0xf2202 + imul dx ; f7 ea ; 0xf2205 + les bx, [bp-030h] ; c4 5e d0 ; 0xf2207 + add bx, ax ; 01 c3 ; 0xf220a + mov byte [es:bx+022h], 003h ; 26 c6 47 22 03 ; 0xf220c + jmp short 02256h ; eb 43 ; 0xf2211 ata.c:460 + cmp byte [bp-010h], 000h ; 80 7e f0 00 ; 0xf2213 + jne short 02237h ; 75 1e ; 0xf2217 + test ch, ch ; 84 ed ; 0xf2219 + jne short 02237h ; 75 1a ; 0xf221b + test al, al ; 84 c0 ; 0xf221d + je short 02237h ; 74 16 ; 0xf221f + mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf2221 ata.c:461 + xor ah, ah ; 30 e4 ; 0xf2224 + mov dx, strict word 0001ch ; ba 1c 00 ; 0xf2226 + imul dx ; f7 ea ; 0xf2229 + les bx, [bp-030h] ; c4 5e d0 ; 0xf222b + add bx, ax ; 01 c3 ; 0xf222e + mov byte [es:bx+022h], 002h ; 26 c6 47 22 02 ; 0xf2230 + jmp short 02256h ; eb 1f ; 0xf2235 ata.c:462 + mov al, byte [bp-010h] ; 8a 46 f0 ; 0xf2237 + cmp AL, strict byte 0ffh ; 3c ff ; 0xf223a + jne short 02256h ; 75 18 ; 0xf223c + cmp ch, al ; 38 c5 ; 0xf223e + jne short 02256h ; 75 14 ; 0xf2240 + mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf2242 ata.c:463 + xor ah, ah ; 30 e4 ; 0xf2245 + mov dx, strict word 0001ch ; ba 1c 00 ; 0xf2247 + imul dx ; f7 ea ; 0xf224a + les bx, [bp-030h] ; c4 5e d0 ; 0xf224c + add bx, ax ; 01 c3 ; 0xf224f + mov byte [es:bx+022h], 000h ; 26 c6 47 22 00 ; 0xf2251 + mov dx, word [bp-02ah] ; 8b 56 d6 ; 0xf2256 ata.c:469 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2259 + mov AL, strict byte 008h ; b0 08 ; 0xf225c + out DX, AL ; ee ; 0xf225e + mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf225f ata.c:471 + xor ah, ah ; 30 e4 ; 0xf2262 + mov dx, strict word 0001ch ; ba 1c 00 ; 0xf2264 + imul dx ; f7 ea ; 0xf2267 + les bx, [bp-030h] ; c4 5e d0 ; 0xf2269 + add bx, ax ; 01 c3 ; 0xf226c + mov al, byte [es:bx+022h] ; 26 8a 47 22 ; 0xf226e + mov byte [bp-018h], al ; 88 46 e8 ; 0xf2272 + cmp AL, strict byte 002h ; 3c 02 ; 0xf2275 ata.c:474 + jne short 022c5h ; 75 4c ; 0xf2277 + mov byte [es:bx+023h], 0ffh ; 26 c6 47 23 ff ; 0xf2279 ata.c:482 + mov byte [es:bx+026h], 000h ; 26 c6 47 26 00 ; 0xf227e ata.c:483 + lea dx, [bp-00268h] ; 8d 96 98 fd ; 0xf2283 ata.c:484 + mov bx, word [bp-030h] ; 8b 5e d0 ; 0xf2287 + mov word [es:bx+008h], dx ; 26 89 57 08 ; 0xf228a + mov [es:bx+00ah], ss ; 26 8c 57 0a ; 0xf228e + mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf2292 ata.c:485 + mov byte [es:bx+00ch], al ; 26 88 47 0c ; 0xf2295 + mov cx, strict word 00001h ; b9 01 00 ; 0xf2299 ata.c:487 + mov bx, 000ech ; bb ec 00 ; 0xf229c + mov ax, word [bp-030h] ; 8b 46 d0 ; 0xf229f + mov dx, es ; 8c c2 ; 0xf22a2 + call 01e38h ; e8 91 fb ; 0xf22a4 + test ax, ax ; 85 c0 ; 0xf22a7 + je short 022b9h ; 74 0e ; 0xf22a9 + mov ax, 00124h ; b8 24 01 ; 0xf22ab ata.c:488 + push ax ; 50 ; 0xf22ae + mov ax, strict word 00007h ; b8 07 00 ; 0xf22af + push ax ; 50 ; 0xf22b2 + call 0190fh ; e8 59 f6 ; 0xf22b3 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf22b6 + test byte [bp-00268h], 080h ; f6 86 98 fd 80 ; 0xf22b9 ata.c:490 + je short 022c8h ; 74 08 ; 0xf22be + mov ax, strict word 00001h ; b8 01 00 ; 0xf22c0 + jmp short 022cah ; eb 05 ; 0xf22c3 + jmp near 024d6h ; e9 0e 02 ; 0xf22c5 + xor ax, ax ; 31 c0 ; 0xf22c8 + mov byte [bp-016h], al ; 88 46 ea ; 0xf22ca + mov byte [bp-012h], 000h ; c6 46 ee 00 ; 0xf22cd ata.c:494 + mov word [bp-034h], 00200h ; c7 46 cc 00 02 ; 0xf22d1 ata.c:496 + mov ax, word [bp-00266h] ; 8b 86 9a fd ; 0xf22d6 ata.c:498 + mov word [bp-02ch], ax ; 89 46 d4 ; 0xf22da + mov ax, word [bp-00262h] ; 8b 86 9e fd ; 0xf22dd ata.c:499 + mov word [bp-01eh], ax ; 89 46 e2 ; 0xf22e1 + mov ax, word [bp-0025ch] ; 8b 86 a4 fd ; 0xf22e4 ata.c:500 + mov word [bp-032h], ax ; 89 46 ce ; 0xf22e8 + mov ax, word [bp-001f0h] ; 8b 86 10 fe ; 0xf22eb ata.c:502 + mov word [bp-036h], ax ; 89 46 ca ; 0xf22ef + mov si, word [bp-001eeh] ; 8b b6 12 fe ; 0xf22f2 + xor ax, ax ; 31 c0 ; 0xf22f6 + mov word [bp-022h], ax ; 89 46 de ; 0xf22f8 + mov word [bp-020h], ax ; 89 46 e0 ; 0xf22fb + cmp si, 00fffh ; 81 fe ff 0f ; 0xf22fe ata.c:503 + jne short 02323h ; 75 1f ; 0xf2302 + cmp word [bp-036h], strict byte 0ffffh ; 83 7e ca ff ; 0xf2304 + jne short 02323h ; 75 19 ; 0xf2308 + mov ax, word [bp-0019ah] ; 8b 86 66 fe ; 0xf230a ata.c:504 + mov word [bp-020h], ax ; 89 46 e0 ; 0xf230e + mov ax, word [bp-0019ch] ; 8b 86 64 fe ; 0xf2311 + mov word [bp-022h], ax ; 89 46 de ; 0xf2315 + mov si, word [bp-0019eh] ; 8b b6 62 fe ; 0xf2318 + mov ax, word [bp-001a0h] ; 8b 86 60 fe ; 0xf231c + mov word [bp-036h], ax ; 89 46 ca ; 0xf2320 + mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf2323 ata.c:505 + cmp AL, strict byte 001h ; 3c 01 ; 0xf2326 + jc short 02336h ; 72 0c ; 0xf2328 + jbe short 0233eh ; 76 12 ; 0xf232a + cmp AL, strict byte 003h ; 3c 03 ; 0xf232c + je short 02346h ; 74 16 ; 0xf232e + cmp AL, strict byte 002h ; 3c 02 ; 0xf2330 + je short 02342h ; 74 0e ; 0xf2332 + jmp short 0237bh ; eb 45 ; 0xf2334 + test al, al ; 84 c0 ; 0xf2336 + jne short 0237bh ; 75 41 ; 0xf2338 + mov BL, strict byte 01eh ; b3 1e ; 0xf233a ata.c:508 + jmp short 02348h ; eb 0a ; 0xf233c ata.c:509 + mov BL, strict byte 026h ; b3 26 ; 0xf233e ata.c:511 + jmp short 02348h ; eb 06 ; 0xf2340 ata.c:512 + mov BL, strict byte 067h ; b3 67 ; 0xf2342 ata.c:514 + jmp short 02348h ; eb 02 ; 0xf2344 ata.c:515 + mov BL, strict byte 070h ; b3 70 ; 0xf2346 ata.c:517 + mov al, bl ; 88 d8 ; 0xf2348 ata.c:524 + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf234a + xor ah, ah ; 30 e4 ; 0xf234c + call 01652h ; e8 01 f3 ; 0xf234e + mov dh, al ; 88 c6 ; 0xf2351 + mov al, bl ; 88 d8 ; 0xf2353 + xor ah, ah ; 30 e4 ; 0xf2355 + call 01652h ; e8 f8 f2 ; 0xf2357 + mov ah, dh ; 88 f4 ; 0xf235a + mov word [bp-03ch], ax ; 89 46 c4 ; 0xf235c + mov al, bl ; 88 d8 ; 0xf235f ata.c:525 + add AL, strict byte 002h ; 04 02 ; 0xf2361 + xor ah, ah ; 30 e4 ; 0xf2363 + call 01652h ; e8 ea f2 ; 0xf2365 + xor ah, ah ; 30 e4 ; 0xf2368 + mov word [bp-03eh], ax ; 89 46 c2 ; 0xf236a + mov al, bl ; 88 d8 ; 0xf236d ata.c:526 + add AL, strict byte 007h ; 04 07 ; 0xf236f + call 01652h ; e8 de f2 ; 0xf2371 + xor ah, ah ; 30 e4 ; 0xf2374 + mov word [bp-03ah], ax ; 89 46 c6 ; 0xf2376 + jmp short 0238dh ; eb 12 ; 0xf2379 ata.c:528 + push word [bp-020h] ; ff 76 e0 ; 0xf237b ata.c:529 + push word [bp-022h] ; ff 76 de ; 0xf237e + push si ; 56 ; 0xf2381 + push word [bp-036h] ; ff 76 ca ; 0xf2382 + mov dx, ss ; 8c d2 ; 0xf2385 + lea ax, [bp-03eh] ; 8d 46 c2 ; 0xf2387 + call 059dch ; e8 4f 36 ; 0xf238a + mov bx, 00da0h ; bb a0 0d ; 0xf238d ata.c:532 + mov cx, ds ; 8c d9 ; 0xf2390 + mov ax, strict word 00004h ; b8 04 00 ; 0xf2392 + call 018cch ; e8 34 f5 ; 0xf2395 + mov ax, word [bp-03ah] ; 8b 46 c6 ; 0xf2398 + push ax ; 50 ; 0xf239b + mov ax, word [bp-03eh] ; 8b 46 c2 ; 0xf239c + push ax ; 50 ; 0xf239f + mov ax, word [bp-03ch] ; 8b 46 c4 ; 0xf23a0 + push ax ; 50 ; 0xf23a3 + push word [bp-032h] ; ff 76 ce ; 0xf23a4 + push word [bp-01eh] ; ff 76 e2 ; 0xf23a7 + push word [bp-02ch] ; ff 76 d4 ; 0xf23aa + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf23ad + xor ah, ah ; 30 e4 ; 0xf23b0 + push ax ; 50 ; 0xf23b2 + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf23b3 + push ax ; 50 ; 0xf23b6 + mov ax, 0014dh ; b8 4d 01 ; 0xf23b7 + push ax ; 50 ; 0xf23ba + mov ax, strict word 00004h ; b8 04 00 ; 0xf23bb + push ax ; 50 ; 0xf23be + call 0190fh ; e8 4d f5 ; 0xf23bf + add sp, strict byte 00014h ; 83 c4 14 ; 0xf23c2 + mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf23c5 ata.c:534 + xor ah, ah ; 30 e4 ; 0xf23c8 + mov dx, strict word 0001ch ; ba 1c 00 ; 0xf23ca + imul dx ; f7 ea ; 0xf23cd + les di, [bp-030h] ; c4 7e d0 ; 0xf23cf + add di, ax ; 01 c7 ; 0xf23d2 + mov byte [es:di+023h], 0ffh ; 26 c6 45 23 ff ; 0xf23d4 + mov al, byte [bp-016h] ; 8a 46 ea ; 0xf23d9 ata.c:535 + mov byte [es:di+024h], al ; 26 88 45 24 ; 0xf23dc + mov al, byte [bp-012h] ; 8a 46 ee ; 0xf23e0 ata.c:536 + mov byte [es:di+026h], al ; 26 88 45 26 ; 0xf23e3 + mov ax, word [bp-034h] ; 8b 46 cc ; 0xf23e7 ata.c:537 + mov word [es:di+028h], ax ; 26 89 45 28 ; 0xf23ea + mov ax, word [bp-01eh] ; 8b 46 e2 ; 0xf23ee ata.c:538 + mov word [es:di+030h], ax ; 26 89 45 30 ; 0xf23f1 + mov ax, word [bp-02ch] ; 8b 46 d4 ; 0xf23f5 ata.c:539 + mov word [es:di+032h], ax ; 26 89 45 32 ; 0xf23f8 + mov ax, word [bp-032h] ; 8b 46 ce ; 0xf23fc ata.c:540 + mov word [es:di+034h], ax ; 26 89 45 34 ; 0xf23ff + mov ax, word [bp-020h] ; 8b 46 e0 ; 0xf2403 ata.c:541 + mov word [es:di+03ch], ax ; 26 89 45 3c ; 0xf2406 + mov ax, word [bp-022h] ; 8b 46 de ; 0xf240a + mov word [es:di+03ah], ax ; 26 89 45 3a ; 0xf240d + mov word [es:di+038h], si ; 26 89 75 38 ; 0xf2411 + mov ax, word [bp-036h] ; 8b 46 ca ; 0xf2415 + mov word [es:di+036h], ax ; 26 89 45 36 ; 0xf2418 + lea di, [di+02ah] ; 8d 7d 2a ; 0xf241c ata.c:542 + push DS ; 1e ; 0xf241f + push SS ; 16 ; 0xf2420 + pop DS ; 1f ; 0xf2421 + lea si, [bp-03eh] ; 8d 76 c2 ; 0xf2422 + movsw ; a5 ; 0xf2425 + movsw ; a5 ; 0xf2426 + movsw ; a5 ; 0xf2427 + pop DS ; 1f ; 0xf2428 + mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf2429 ata.c:543 + cmp AL, strict byte 002h ; 3c 02 ; 0xf242c + jnc short 024a0h ; 73 70 ; 0xf242e + test al, al ; 84 c0 ; 0xf2430 ata.c:549 + jne short 02439h ; 75 05 ; 0xf2432 + mov si, strict word 0003dh ; be 3d 00 ; 0xf2434 ata.c:550 + jmp short 0243ch ; eb 03 ; 0xf2437 ata.c:551 + mov si, strict word 0004dh ; be 4d 00 ; 0xf2439 ata.c:552 + mov cx, word [bp-028h] ; 8b 4e d8 ; 0xf243c + mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf243f ata.c:564 + xor ah, ah ; 30 e4 ; 0xf2442 + mov dx, strict word 00005h ; ba 05 00 ; 0xf2444 + imul dx ; f7 ea ; 0xf2447 + mov bx, ax ; 89 c3 ; 0xf2449 + sal bx, 1 ; d1 e3 ; 0xf244b + sal bx, 1 ; d1 e3 ; 0xf244d + add bx, 00104h ; 81 c3 04 01 ; 0xf244f + xor ax, ax ; 31 c0 ; 0xf2453 + mov es, ax ; 8e c0 ; 0xf2455 + mov word [es:bx], si ; 26 89 37 ; 0xf2457 ata.c:565 + mov word [es:bx+002h], cx ; 26 89 4f 02 ; 0xf245a + mov es, cx ; 8e c1 ; 0xf245e ata.c:571 + mov word [es:si+00ch], ax ; 26 89 44 0c ; 0xf2460 + mov word [es:si+005h], ax ; 26 89 44 05 ; 0xf2464 + mov word [es:si+007h], ax ; 26 89 44 07 ; 0xf2468 + mov bx, word [bp-03ch] ; 8b 5e c4 ; 0xf246c ata.c:573 + mov word [es:si], bx ; 26 89 1c ; 0xf246f + mov bl, byte [bp-03eh] ; 8a 5e c2 ; 0xf2472 ata.c:574 + mov byte [es:si+002h], bl ; 26 88 5c 02 ; 0xf2475 + mov byte [es:si+003h], 0a0h ; 26 c6 44 03 a0 ; 0xf2479 ata.c:575 + mov al, byte [bp-032h] ; 8a 46 ce ; 0xf247e ata.c:576 + mov byte [es:si+004h], al ; 26 88 44 04 ; 0xf2481 + mov ax, word [bp-02ch] ; 8b 46 d4 ; 0xf2485 ata.c:577 + mov word [es:si+009h], ax ; 26 89 44 09 ; 0xf2488 + mov al, byte [bp-01eh] ; 8a 46 e2 ; 0xf248c ata.c:578 + mov byte [es:si+00bh], al ; 26 88 44 0b ; 0xf248f + mov bl, byte [bp-03ah] ; 8a 5e c6 ; 0xf2493 ata.c:579 + mov byte [es:si+00eh], bl ; 26 88 5c 0e ; 0xf2496 + xor bl, bl ; 30 db ; 0xf249a ata.c:580 + xor bh, bh ; 30 ff ; 0xf249c ata.c:581 + jmp short 024a7h ; eb 07 ; 0xf249e + jmp short 024c0h ; eb 1e ; 0xf24a0 + cmp bh, 00fh ; 80 ff 0f ; 0xf24a2 + jnc short 024b8h ; 73 11 ; 0xf24a5 + mov al, bh ; 88 f8 ; 0xf24a7 ata.c:582 + xor ah, ah ; 30 e4 ; 0xf24a9 + mov es, cx ; 8e c1 ; 0xf24ab + mov di, si ; 89 f7 ; 0xf24ad + add di, ax ; 01 c7 ; 0xf24af + add bl, byte [es:di] ; 26 02 1d ; 0xf24b1 + db 0feh, 0c7h + ; inc bh ; fe c7 ; 0xf24b4 + jmp short 024a2h ; eb ea ; 0xf24b6 + neg bl ; f6 db ; 0xf24b8 ata.c:583 + mov es, cx ; 8e c1 ; 0xf24ba ata.c:584 + mov byte [es:si+00fh], bl ; 26 88 5c 0f ; 0xf24bc + mov bl, byte [bp-00ch] ; 8a 5e f4 ; 0xf24c0 ata.c:588 + xor bh, bh ; 30 ff ; 0xf24c3 + mov es, [bp-02eh] ; 8e 46 d2 ; 0xf24c5 + add bx, word [bp-030h] ; 03 5e d0 ; 0xf24c8 + mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf24cb + mov byte [es:bx+001e3h], al ; 26 88 87 e3 01 ; 0xf24ce + inc byte [bp-00ch] ; fe 46 f4 ; 0xf24d3 ata.c:589 + cmp byte [bp-018h], 003h ; 80 7e e8 03 ; 0xf24d6 ata.c:593 + jne short 02540h ; 75 64 ; 0xf24da + mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf24dc ata.c:598 + xor ah, ah ; 30 e4 ; 0xf24df + mov dx, strict word 0001ch ; ba 1c 00 ; 0xf24e1 + imul dx ; f7 ea ; 0xf24e4 + les bx, [bp-030h] ; c4 5e d0 ; 0xf24e6 + add bx, ax ; 01 c3 ; 0xf24e9 + mov byte [es:bx+023h], 005h ; 26 c6 47 23 05 ; 0xf24eb + mov byte [es:bx+026h], 000h ; 26 c6 47 26 00 ; 0xf24f0 ata.c:599 + lea dx, [bp-00268h] ; 8d 96 98 fd ; 0xf24f5 ata.c:600 + mov bx, word [bp-030h] ; 8b 5e d0 ; 0xf24f9 + mov word [es:bx+008h], dx ; 26 89 57 08 ; 0xf24fc + mov [es:bx+00ah], ss ; 26 8c 57 0a ; 0xf2500 + mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf2504 ata.c:601 + mov byte [es:bx+00ch], al ; 26 88 47 0c ; 0xf2507 + mov cx, strict word 00001h ; b9 01 00 ; 0xf250b ata.c:603 + mov bx, 000a1h ; bb a1 00 ; 0xf250e + mov ax, word [bp-030h] ; 8b 46 d0 ; 0xf2511 + mov dx, es ; 8c c2 ; 0xf2514 + call 01e38h ; e8 1f f9 ; 0xf2516 + test ax, ax ; 85 c0 ; 0xf2519 + je short 0252bh ; 74 0e ; 0xf251b + mov ax, 00174h ; b8 74 01 ; 0xf251d ata.c:604 + push ax ; 50 ; 0xf2520 + mov ax, strict word 00007h ; b8 07 00 ; 0xf2521 + push ax ; 50 ; 0xf2524 + call 0190fh ; e8 e7 f3 ; 0xf2525 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf2528 + mov al, byte [bp-00267h] ; 8a 86 99 fd ; 0xf252b ata.c:606 + and AL, strict byte 01fh ; 24 1f ; 0xf252f + mov byte [bp-006h], al ; 88 46 fa ; 0xf2531 + test byte [bp-00268h], 080h ; f6 86 98 fd 80 ; 0xf2534 ata.c:607 + je short 02542h ; 74 07 ; 0xf2539 + mov cx, strict word 00001h ; b9 01 00 ; 0xf253b + jmp short 02544h ; eb 04 ; 0xf253e + jmp short 0257ch ; eb 3a ; 0xf2540 + xor cx, cx ; 31 c9 ; 0xf2542 + mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf2544 ata.c:615 + xor ah, ah ; 30 e4 ; 0xf2547 + mov dx, strict word 0001ch ; ba 1c 00 ; 0xf2549 + imul dx ; f7 ea ; 0xf254c + les bx, [bp-030h] ; c4 5e d0 ; 0xf254e + add bx, ax ; 01 c3 ; 0xf2551 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf2553 + mov byte [es:bx+023h], al ; 26 88 47 23 ; 0xf2556 + mov byte [es:bx+024h], cl ; 26 88 4f 24 ; 0xf255a ata.c:616 + mov byte [es:bx+026h], 000h ; 26 c6 47 26 00 ; 0xf255e ata.c:617 + mov word [es:bx+028h], 00800h ; 26 c7 47 28 00 08 ; 0xf2563 ata.c:618 + mov bl, byte [bp-014h] ; 8a 5e ec ; 0xf2569 ata.c:621 + xor bh, bh ; 30 ff ; 0xf256c + add bx, word [bp-030h] ; 03 5e d0 ; 0xf256e + mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf2571 + mov byte [es:bx+001f4h], al ; 26 88 87 f4 01 ; 0xf2574 + inc byte [bp-014h] ; fe 46 ec ; 0xf2579 ata.c:622 + mov al, byte [bp-018h] ; 8a 46 e8 ; 0xf257c ata.c:631 + cmp AL, strict byte 003h ; 3c 03 ; 0xf257f + je short 025b2h ; 74 2f ; 0xf2581 + cmp AL, strict byte 002h ; 3c 02 ; 0xf2583 + jne short 025d9h ; 75 52 ; 0xf2585 + mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf2587 ata.c:633 + xor ah, ah ; 30 e4 ; 0xf258a + mov dx, strict word 0001ch ; ba 1c 00 ; 0xf258c + imul dx ; f7 ea ; 0xf258f + les si, [bp-030h] ; c4 76 d0 ; 0xf2591 + add si, ax ; 01 c6 ; 0xf2594 + mov ax, word [es:si+03ch] ; 26 8b 44 3c ; 0xf2596 + mov bx, word [es:si+03ah] ; 26 8b 5c 3a ; 0xf259a + mov cx, word [es:si+038h] ; 26 8b 4c 38 ; 0xf259e + mov dx, word [es:si+036h] ; 26 8b 54 36 ; 0xf25a2 + mov si, strict word 0000bh ; be 0b 00 ; 0xf25a6 + call 09c10h ; e8 64 76 ; 0xf25a9 + mov word [bp-024h], dx ; 89 56 dc ; 0xf25ac + mov word [bp-026h], cx ; 89 4e da ; 0xf25af + mov ah, byte [bp-001c7h] ; 8a a6 39 fe ; 0xf25b2 ata.c:636 + mov al, byte [bp-001c8h] ; 8a 86 38 fe ; 0xf25b6 + mov byte [bp-01ah], 00fh ; c6 46 e6 0f ; 0xf25ba ata.c:637 + jmp short 025c9h ; eb 09 ; 0xf25be + dec byte [bp-01ah] ; fe 4e e6 ; 0xf25c0 ata.c:640 + cmp byte [bp-01ah], 000h ; 80 7e e6 00 ; 0xf25c3 + jbe short 025d5h ; 76 0c ; 0xf25c7 + mov cl, byte [bp-01ah] ; 8a 4e e6 ; 0xf25c9 + mov dx, strict word 00001h ; ba 01 00 ; 0xf25cc + sal dx, CL ; d3 e2 ; 0xf25cf + test ax, dx ; 85 d0 ; 0xf25d1 + je short 025c0h ; 74 eb ; 0xf25d3 + xor si, si ; 31 f6 ; 0xf25d5 ata.c:643 + jmp short 025e0h ; eb 07 ; 0xf25d7 + jmp short 0260fh ; eb 34 ; 0xf25d9 + cmp si, strict byte 00014h ; 83 fe 14 ; 0xf25db + jnl short 025f5h ; 7d 15 ; 0xf25de + mov di, si ; 89 f7 ; 0xf25e0 ata.c:644 + sal di, 1 ; d1 e7 ; 0xf25e2 + mov al, byte [bp+di-00231h] ; 8a 83 cf fd ; 0xf25e4 + mov byte [bp+di-068h], al ; 88 43 98 ; 0xf25e8 + mov al, byte [bp+di-00232h] ; 8a 83 ce fd ; 0xf25eb ata.c:645 + mov byte [bp+di-067h], al ; 88 43 99 ; 0xf25ef + inc si ; 46 ; 0xf25f2 ata.c:646 + jmp short 025dbh ; eb e6 ; 0xf25f3 + mov byte [bp-040h], 000h ; c6 46 c0 00 ; 0xf25f5 ata.c:649 + mov si, strict word 00027h ; be 27 00 ; 0xf25f9 ata.c:650 + jmp short 02603h ; eb 05 ; 0xf25fc + dec si ; 4e ; 0xf25fe ata.c:655 + test si, si ; 85 f6 ; 0xf25ff + jle short 0260fh ; 7e 0c ; 0xf2601 + cmp byte [bp+si-068h], 020h ; 80 7a 98 20 ; 0xf2603 + jne short 0260fh ; 75 06 ; 0xf2607 + mov byte [bp+si-068h], 000h ; c6 42 98 00 ; 0xf2609 + jmp short 025feh ; eb ef ; 0xf260d + mov al, byte [bp-018h] ; 8a 46 e8 ; 0xf260f ata.c:662 + cmp AL, strict byte 003h ; 3c 03 ; 0xf2612 + je short 0267ch ; 74 66 ; 0xf2614 + cmp AL, strict byte 002h ; 3c 02 ; 0xf2616 + je short 02621h ; 74 07 ; 0xf2618 + cmp AL, strict byte 001h ; 3c 01 ; 0xf261a + je short 02687h ; 74 69 ; 0xf261c + jmp near 02716h ; e9 f5 00 ; 0xf261e + cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf2621 ata.c:665 + je short 0262ch ; 74 05 ; 0xf2625 + mov ax, 0019fh ; b8 9f 01 ; 0xf2627 + jmp short 0262fh ; eb 03 ; 0xf262a + mov ax, 001a6h ; b8 a6 01 ; 0xf262c + push ax ; 50 ; 0xf262f + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf2630 + xor ah, ah ; 30 e4 ; 0xf2633 + push ax ; 50 ; 0xf2635 + mov ax, 001adh ; b8 ad 01 ; 0xf2636 + push ax ; 50 ; 0xf2639 + mov ax, strict word 00002h ; b8 02 00 ; 0xf263a + push ax ; 50 ; 0xf263d + call 0190fh ; e8 ce f2 ; 0xf263e + add sp, strict byte 00008h ; 83 c4 08 ; 0xf2641 + xor si, si ; 31 f6 ; 0xf2644 ata.c:666 + mov al, byte [bp+si-068h] ; 8a 42 98 ; 0xf2646 ata.c:667 + xor ah, ah ; 30 e4 ; 0xf2649 + inc si ; 46 ; 0xf264b + test ax, ax ; 85 c0 ; 0xf264c + je short 02661h ; 74 11 ; 0xf264e + push ax ; 50 ; 0xf2650 ata.c:668 + mov ax, 001b8h ; b8 b8 01 ; 0xf2651 + push ax ; 50 ; 0xf2654 + mov ax, strict word 00002h ; b8 02 00 ; 0xf2655 + push ax ; 50 ; 0xf2658 + call 0190fh ; e8 b3 f2 ; 0xf2659 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf265c + jmp short 02646h ; eb e5 ; 0xf265f + push word [bp-026h] ; ff 76 da ; 0xf2661 ata.c:669 + push word [bp-024h] ; ff 76 dc ; 0xf2664 + mov al, byte [bp-01ah] ; 8a 46 e6 ; 0xf2667 + push ax ; 50 ; 0xf266a + mov ax, 001bbh ; b8 bb 01 ; 0xf266b + push ax ; 50 ; 0xf266e + mov ax, strict word 00002h ; b8 02 00 ; 0xf266f + push ax ; 50 ; 0xf2672 + call 0190fh ; e8 99 f2 ; 0xf2673 + add sp, strict byte 0000ah ; 83 c4 0a ; 0xf2676 + jmp near 02716h ; e9 9a 00 ; 0xf2679 ata.c:670 + cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf267c ata.c:672 + je short 02689h ; 74 07 ; 0xf2680 + mov ax, 0019fh ; b8 9f 01 ; 0xf2682 + jmp short 0268ch ; eb 05 ; 0xf2685 + jmp short 026f3h ; eb 6a ; 0xf2687 + mov ax, 001a6h ; b8 a6 01 ; 0xf2689 + push ax ; 50 ; 0xf268c + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf268d + xor ah, ah ; 30 e4 ; 0xf2690 + push ax ; 50 ; 0xf2692 + mov ax, 001adh ; b8 ad 01 ; 0xf2693 + push ax ; 50 ; 0xf2696 + mov ax, strict word 00002h ; b8 02 00 ; 0xf2697 + push ax ; 50 ; 0xf269a + call 0190fh ; e8 71 f2 ; 0xf269b + add sp, strict byte 00008h ; 83 c4 08 ; 0xf269e + xor si, si ; 31 f6 ; 0xf26a1 ata.c:673 + mov al, byte [bp+si-068h] ; 8a 42 98 ; 0xf26a3 ata.c:674 + xor ah, ah ; 30 e4 ; 0xf26a6 + inc si ; 46 ; 0xf26a8 + test ax, ax ; 85 c0 ; 0xf26a9 + je short 026beh ; 74 11 ; 0xf26ab + push ax ; 50 ; 0xf26ad ata.c:675 + mov ax, 001b8h ; b8 b8 01 ; 0xf26ae + push ax ; 50 ; 0xf26b1 + mov ax, strict word 00002h ; b8 02 00 ; 0xf26b2 + push ax ; 50 ; 0xf26b5 + call 0190fh ; e8 56 f2 ; 0xf26b6 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf26b9 + jmp short 026a3h ; eb e5 ; 0xf26bc + mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf26be ata.c:676 + mov dx, strict word 0001ch ; ba 1c 00 ; 0xf26c1 + imul dx ; f7 ea ; 0xf26c4 + les bx, [bp-030h] ; c4 5e d0 ; 0xf26c6 + add bx, ax ; 01 c3 ; 0xf26c9 + cmp byte [es:bx+023h], 005h ; 26 80 7f 23 05 ; 0xf26cb + jne short 026ddh ; 75 0b ; 0xf26d0 + mov al, byte [bp-01ah] ; 8a 46 e6 ; 0xf26d2 ata.c:677 + xor ah, ah ; 30 e4 ; 0xf26d5 + push ax ; 50 ; 0xf26d7 + mov ax, 001dbh ; b8 db 01 ; 0xf26d8 + jmp short 026e6h ; eb 09 ; 0xf26db ata.c:678 + mov al, byte [bp-01ah] ; 8a 46 e6 ; 0xf26dd ata.c:679 + xor ah, ah ; 30 e4 ; 0xf26e0 + push ax ; 50 ; 0xf26e2 + mov ax, 001f5h ; b8 f5 01 ; 0xf26e3 + push ax ; 50 ; 0xf26e6 + mov ax, strict word 00002h ; b8 02 00 ; 0xf26e7 + push ax ; 50 ; 0xf26ea + call 0190fh ; e8 21 f2 ; 0xf26eb + add sp, strict byte 00006h ; 83 c4 06 ; 0xf26ee + jmp short 02716h ; eb 23 ; 0xf26f1 ata.c:680 + cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf26f3 ata.c:682 + je short 026feh ; 74 05 ; 0xf26f7 + mov ax, 0019fh ; b8 9f 01 ; 0xf26f9 + jmp short 02701h ; eb 03 ; 0xf26fc + mov ax, 001a6h ; b8 a6 01 ; 0xf26fe + push ax ; 50 ; 0xf2701 + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf2702 + xor ah, ah ; 30 e4 ; 0xf2705 + push ax ; 50 ; 0xf2707 + mov ax, 00207h ; b8 07 02 ; 0xf2708 + push ax ; 50 ; 0xf270b + mov ax, strict word 00002h ; b8 02 00 ; 0xf270c + push ax ; 50 ; 0xf270f + call 0190fh ; e8 fc f1 ; 0xf2710 + add sp, strict byte 00008h ; 83 c4 08 ; 0xf2713 + inc byte [bp-00eh] ; fe 46 f2 ; 0xf2716 ata.c:687 + cmp byte [bp-00eh], 008h ; 80 7e f2 08 ; 0xf2719 + jnc short 02772h ; 73 53 ; 0xf271d + mov bl, byte [bp-00eh] ; 8a 5e f2 ; 0xf271f + xor bh, bh ; 30 ff ; 0xf2722 + mov ax, bx ; 89 d8 ; 0xf2724 + cwd ; 99 ; 0xf2726 + db 02bh, 0c2h + ; sub ax, dx ; 2b c2 ; 0xf2727 + sar ax, 1 ; d1 f8 ; 0xf2729 + mov word [bp-038h], ax ; 89 46 c8 ; 0xf272b + mov al, byte [bp-038h] ; 8a 46 c8 ; 0xf272e + mov byte [bp-00ah], al ; 88 46 f6 ; 0xf2731 + mov ax, bx ; 89 d8 ; 0xf2734 + cwd ; 99 ; 0xf2736 + mov bx, strict word 00002h ; bb 02 00 ; 0xf2737 + idiv bx ; f7 fb ; 0xf273a + mov cx, dx ; 89 d1 ; 0xf273c + mov byte [bp-008h], dl ; 88 56 f8 ; 0xf273e + mov al, byte [bp-038h] ; 8a 46 c8 ; 0xf2741 + xor ah, ah ; 30 e4 ; 0xf2744 + mov dx, strict word 00006h ; ba 06 00 ; 0xf2746 + imul dx ; f7 ea ; 0xf2749 + les si, [bp-030h] ; c4 76 d0 ; 0xf274b + add si, ax ; 01 c6 ; 0xf274e + mov bx, word [es:si+00206h] ; 26 8b 9c 06 02 ; 0xf2750 + mov ax, word [es:si+00208h] ; 26 8b 84 08 02 ; 0xf2755 + mov word [bp-02ah], ax ; 89 46 d6 ; 0xf275a + mov dx, ax ; 89 c2 ; 0xf275d + add dx, strict byte 00006h ; 83 c2 06 ; 0xf275f + mov AL, strict byte 00ah ; b0 0a ; 0xf2762 + out DX, AL ; ee ; 0xf2764 + test cl, cl ; 84 c9 ; 0xf2765 + jne short 0276ch ; 75 03 ; 0xf2767 + jmp near 02153h ; e9 e7 f9 ; 0xf2769 + mov ax, 000b0h ; b8 b0 00 ; 0xf276c + jmp near 02156h ; e9 e4 f9 ; 0xf276f + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf2772 ata.c:690 + les bx, [bp-030h] ; c4 5e d0 ; 0xf2775 + mov byte [es:bx+001e2h], al ; 26 88 87 e2 01 ; 0xf2778 + mov al, byte [bp-014h] ; 8a 46 ec ; 0xf277d ata.c:691 + mov byte [es:bx+001f3h], al ; 26 88 87 f3 01 ; 0xf2780 + mov bx, strict word 00075h ; bb 75 00 ; 0xf2785 ata.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf2788 + mov es, ax ; 8e c0 ; 0xf278b + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf278d + mov byte [es:bx], al ; 26 88 07 ; 0xf2790 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf2793 ata.c:704 + pop di ; 5f ; 0xf2796 + pop si ; 5e ; 0xf2797 + pop bp ; 5d ; 0xf2798 + retn ; c3 ; 0xf2799 + ; disGetNextSymbol 0xf279a LB 0x77ae -> off=0x0 cb=000000000000028e uValue=00000000000f119a 'ata_cmd_data_out' +ata_cmd_data_out: ; 0xf279a LB 0x28e + push bp ; 55 ; 0xf279a ata.c:718 + mov bp, sp ; 89 e5 ; 0xf279b + push si ; 56 ; 0xf279d + push di ; 57 ; 0xf279e + sub sp, strict byte 00020h ; 83 ec 20 ; 0xf279f + mov di, ax ; 89 c7 ; 0xf27a2 + mov word [bp-00ah], dx ; 89 56 f6 ; 0xf27a4 + mov word [bp-01eh], bx ; 89 5e e2 ; 0xf27a7 + mov word [bp-01ah], cx ; 89 4e e6 ; 0xf27aa + mov es, dx ; 8e c2 ; 0xf27ad ata.c:730 + mov al, byte [es:di+00ch] ; 26 8a 45 0c ; 0xf27af + xor ah, ah ; 30 e4 ; 0xf27b3 + mov dx, ax ; 89 c2 ; 0xf27b5 + shr ax, 1 ; d1 e8 ; 0xf27b7 ata.c:731 + and dl, 001h ; 80 e2 01 ; 0xf27b9 ata.c:732 + mov byte [bp-006h], dl ; 88 56 fa ; 0xf27bc + xor ah, ah ; 30 e4 ; 0xf27bf ata.c:734 + mov dx, strict word 00006h ; ba 06 00 ; 0xf27c1 + imul dx ; f7 ea ; 0xf27c4 + mov bx, di ; 89 fb ; 0xf27c6 + add bx, ax ; 01 c3 ; 0xf27c8 + mov ax, word [es:bx+00206h] ; 26 8b 87 06 02 ; 0xf27ca + mov word [bp-008h], ax ; 89 46 f8 ; 0xf27cf + mov ax, word [es:bx+00208h] ; 26 8b 87 08 02 ; 0xf27d2 ata.c:735 + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf27d7 + mov word [bp-01ch], 00100h ; c7 46 e4 00 01 ; 0xf27da ata.c:743 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf27df ata.c:745 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf27e2 + in AL, DX ; ec ; 0xf27e5 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf27e6 + test AL, strict byte 080h ; a8 80 ; 0xf27e8 ata.c:746 + je short 027fbh ; 74 0f ; 0xf27ea + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf27ec ata.c:749 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf27ef + mov AL, strict byte 008h ; b0 08 ; 0xf27f2 + out DX, AL ; ee ; 0xf27f4 + mov ax, strict word 00001h ; b8 01 00 ; 0xf27f5 ata.c:750 + jmp near 02a21h ; e9 26 02 ; 0xf27f8 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf27fb ata.c:753 + mov ax, word [es:di+006h] ; 26 8b 45 06 ; 0xf27fe + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf2802 + mov ax, word [es:di+004h] ; 26 8b 45 04 ; 0xf2805 + mov word [bp-020h], ax ; 89 46 e0 ; 0xf2809 + mov ax, word [es:di+002h] ; 26 8b 45 02 ; 0xf280c + mov word [bp-010h], ax ; 89 46 f0 ; 0xf2810 + mov ax, word [es:di] ; 26 8b 05 ; 0xf2813 + mov word [bp-022h], ax ; 89 46 de ; 0xf2816 + mov ax, word [es:di+008h] ; 26 8b 45 08 ; 0xf2819 ata.c:754 + mov word [bp-016h], ax ; 89 46 ea ; 0xf281d + mov ax, word [es:di+00ah] ; 26 8b 45 0a ; 0xf2820 + mov word [bp-012h], ax ; 89 46 ee ; 0xf2824 + mov ax, word [es:di+016h] ; 26 8b 45 16 ; 0xf2827 ata.c:755 + mov word [bp-014h], ax ; 89 46 ec ; 0xf282b + mov ax, word [es:di+012h] ; 26 8b 45 12 ; 0xf282e ata.c:756 + mov word [bp-024h], ax ; 89 46 dc ; 0xf2832 + mov ax, word [es:di+014h] ; 26 8b 45 14 ; 0xf2835 ata.c:757 + mov word [bp-018h], ax ; 89 46 e8 ; 0xf2839 + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf283c ata.c:760 + test ax, ax ; 85 c0 ; 0xf283f + je short 02846h ; 74 03 ; 0xf2841 + jmp near 0290dh ; e9 c7 00 ; 0xf2843 + xor bx, bx ; 31 db ; 0xf2846 ata.c:761 + xor dx, dx ; 31 d2 ; 0xf2848 + mov si, word [bp-022h] ; 8b 76 de ; 0xf284a + add si, word [bp-01ah] ; 03 76 e6 ; 0xf284d + adc bx, word [bp-010h] ; 13 5e f0 ; 0xf2850 + adc dx, word [bp-020h] ; 13 56 e0 ; 0xf2853 + adc ax, word [bp-00ch] ; 13 46 f4 ; 0xf2856 + test ax, ax ; 85 c0 ; 0xf2859 + jnbe short 0286dh ; 77 10 ; 0xf285b + jne short 028d0h ; 75 71 ; 0xf285d + test dx, dx ; 85 d2 ; 0xf285f + jnbe short 0286dh ; 77 0a ; 0xf2861 + jne short 028d0h ; 75 6b ; 0xf2863 + cmp bx, 01000h ; 81 fb 00 10 ; 0xf2865 + jnbe short 0286dh ; 77 02 ; 0xf2869 + jne short 028d0h ; 75 63 ; 0xf286b + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf286d ata.c:763 + mov bx, word [bp-020h] ; 8b 5e e0 ; 0xf2870 + mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf2873 + mov dx, word [bp-022h] ; 8b 56 de ; 0xf2876 + mov si, strict word 00018h ; be 18 00 ; 0xf2879 + call 09c10h ; e8 91 73 ; 0xf287c + xor dh, dh ; 30 f6 ; 0xf287f + mov word [bp-014h], dx ; 89 56 ec ; 0xf2881 + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf2884 ata.c:764 + mov bx, word [bp-020h] ; 8b 5e e0 ; 0xf2887 + mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf288a + mov dx, word [bp-022h] ; 8b 56 de ; 0xf288d + mov si, strict word 00020h ; be 20 00 ; 0xf2890 + call 09c10h ; e8 7a 73 ; 0xf2893 + mov bx, dx ; 89 d3 ; 0xf2896 + mov word [bp-024h], dx ; 89 56 dc ; 0xf2898 + mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xf289b ata.c:765 + mov al, ah ; 88 e0 ; 0xf289e + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf28a0 + inc dx ; 42 ; 0xf28a3 + inc dx ; 42 ; 0xf28a4 + out DX, AL ; ee ; 0xf28a5 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf28a6 ata.c:766 + add dx, strict byte 00003h ; 83 c2 03 ; 0xf28a9 + mov al, byte [bp-014h] ; 8a 46 ec ; 0xf28ac + out DX, AL ; ee ; 0xf28af + xor bh, bh ; 30 ff ; 0xf28b0 ata.c:767 + mov ax, bx ; 89 d8 ; 0xf28b2 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf28b4 + add dx, strict byte 00004h ; 83 c2 04 ; 0xf28b7 + out DX, AL ; ee ; 0xf28ba + mov al, byte [bp-023h] ; 8a 46 dd ; 0xf28bb ata.c:768 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf28be + add dx, strict byte 00005h ; 83 c2 05 ; 0xf28c1 + out DX, AL ; ee ; 0xf28c4 + xor al, al ; 30 c0 ; 0xf28c5 ata.c:771 + mov byte [bp-00fh], bh ; 88 7e f1 ; 0xf28c7 + mov word [bp-020h], ax ; 89 46 e0 ; 0xf28ca + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf28cd + mov ax, word [bp-022h] ; 8b 46 de ; 0xf28d0 ata.c:773 + xor ah, ah ; 30 e4 ; 0xf28d3 + mov word [bp-014h], ax ; 89 46 ec ; 0xf28d5 + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf28d8 ata.c:774 + mov bx, word [bp-020h] ; 8b 5e e0 ; 0xf28db + mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf28de + mov dx, word [bp-022h] ; 8b 56 de ; 0xf28e1 + mov si, strict word 00008h ; be 08 00 ; 0xf28e4 + call 09c10h ; e8 26 73 ; 0xf28e7 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf28ea + mov word [bp-020h], bx ; 89 5e e0 ; 0xf28ed + mov word [bp-010h], cx ; 89 4e f0 ; 0xf28f0 + mov word [bp-022h], dx ; 89 56 de ; 0xf28f3 + mov word [bp-024h], dx ; 89 56 dc ; 0xf28f6 ata.c:775 + mov si, strict word 00010h ; be 10 00 ; 0xf28f9 ata.c:776 + call 09c10h ; e8 11 73 ; 0xf28fc + mov word [bp-022h], dx ; 89 56 de ; 0xf28ff + mov ax, dx ; 89 d0 ; 0xf2902 ata.c:777 + xor ah, dh ; 30 f4 ; 0xf2904 + and AL, strict byte 00fh ; 24 0f ; 0xf2906 + or AL, strict byte 040h ; 0c 40 ; 0xf2908 + mov word [bp-018h], ax ; 89 46 e8 ; 0xf290a + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf290d ata.c:780 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2910 + mov AL, strict byte 00ah ; b0 0a ; 0xf2913 + out DX, AL ; ee ; 0xf2915 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2916 ata.c:781 + inc dx ; 42 ; 0xf2919 + xor al, al ; 30 c0 ; 0xf291a + out DX, AL ; ee ; 0xf291c + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf291d ata.c:782 + inc dx ; 42 ; 0xf2920 + inc dx ; 42 ; 0xf2921 + mov al, byte [bp-01ah] ; 8a 46 e6 ; 0xf2922 + out DX, AL ; ee ; 0xf2925 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2926 ata.c:783 + add dx, strict byte 00003h ; 83 c2 03 ; 0xf2929 + mov al, byte [bp-014h] ; 8a 46 ec ; 0xf292c + out DX, AL ; ee ; 0xf292f + mov ax, word [bp-024h] ; 8b 46 dc ; 0xf2930 ata.c:784 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2933 + add dx, strict byte 00004h ; 83 c2 04 ; 0xf2936 + out DX, AL ; ee ; 0xf2939 + mov al, byte [bp-023h] ; 8a 46 dd ; 0xf293a ata.c:785 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf293d + add dx, strict byte 00005h ; 83 c2 05 ; 0xf2940 + out DX, AL ; ee ; 0xf2943 + cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf2944 ata.c:786 + je short 0294fh ; 74 05 ; 0xf2948 + mov ax, 000b0h ; b8 b0 00 ; 0xf294a + jmp short 02952h ; eb 03 ; 0xf294d + mov ax, 000a0h ; b8 a0 00 ; 0xf294f + mov dl, byte [bp-018h] ; 8a 56 e8 ; 0xf2952 + xor dh, dh ; 30 f6 ; 0xf2955 + or ax, dx ; 09 d0 ; 0xf2957 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2959 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf295c + out DX, AL ; ee ; 0xf295f + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2960 ata.c:787 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf2963 + mov al, byte [bp-01eh] ; 8a 46 e2 ; 0xf2966 + out DX, AL ; ee ; 0xf2969 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf296a ata.c:790 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf296d + in AL, DX ; ec ; 0xf2970 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2971 + mov bl, al ; 88 c3 ; 0xf2973 + test AL, strict byte 080h ; a8 80 ; 0xf2975 ata.c:791 + jne short 0296ah ; 75 f1 ; 0xf2977 + test AL, strict byte 001h ; a8 01 ; 0xf2979 ata.c:795 + je short 0298ch ; 74 0f ; 0xf297b + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf297d ata.c:798 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2980 + mov AL, strict byte 008h ; b0 08 ; 0xf2983 + out DX, AL ; ee ; 0xf2985 + mov ax, strict word 00002h ; b8 02 00 ; 0xf2986 ata.c:799 + jmp near 02a21h ; e9 95 00 ; 0xf2989 + test bl, 008h ; f6 c3 08 ; 0xf298c ata.c:800 + jne short 029a0h ; 75 0f ; 0xf298f + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf2991 ata.c:803 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2994 + mov AL, strict byte 008h ; b0 08 ; 0xf2997 + out DX, AL ; ee ; 0xf2999 + mov ax, strict word 00003h ; b8 03 00 ; 0xf299a ata.c:804 + jmp near 02a21h ; e9 81 00 ; 0xf299d + sti ; fb ; 0xf29a0 ata.c:809 + mov ax, word [bp-016h] ; 8b 46 ea ; 0xf29a1 ata.c:814 + cmp ax, 0f800h ; 3d 00 f8 ; 0xf29a4 + jc short 029bbh ; 72 12 ; 0xf29a7 + mov dx, ax ; 89 c2 ; 0xf29a9 ata.c:815 + sub dx, 00800h ; 81 ea 00 08 ; 0xf29ab + mov ax, word [bp-012h] ; 8b 46 ee ; 0xf29af + add ax, 00080h ; 05 80 00 ; 0xf29b2 + mov word [bp-016h], dx ; 89 56 ea ; 0xf29b5 + mov word [bp-012h], ax ; 89 46 ee ; 0xf29b8 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf29bb ata.c:822 + mov cx, word [bp-01ch] ; 8b 4e e4 ; 0xf29be + mov si, word [bp-016h] ; 8b 76 ea ; 0xf29c1 + mov es, [bp-012h] ; 8e 46 ee ; 0xf29c4 + db 0f3h, 026h, 06fh + ; rep es outsw ; f3 26 6f ; 0xf29c7 + mov word [bp-016h], si ; 89 76 ea ; 0xf29ca + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf29cd ata.c:824 + inc word [es:di+018h] ; 26 ff 45 18 ; 0xf29d0 + dec word [bp-01ah] ; ff 4e e6 ; 0xf29d4 ata.c:825 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf29d7 ata.c:827 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf29da + in AL, DX ; ec ; 0xf29dd + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf29de + mov bl, al ; 88 c3 ; 0xf29e0 + test AL, strict byte 080h ; a8 80 ; 0xf29e2 ata.c:828 + jne short 029d7h ; 75 f1 ; 0xf29e4 + cmp word [bp-01ah], strict byte 00000h ; 83 7e e6 00 ; 0xf29e6 ata.c:831 + jne short 02a00h ; 75 14 ; 0xf29ea + and AL, strict byte 0e9h ; 24 e9 ; 0xf29ec ata.c:832 + cmp AL, strict byte 040h ; 3c 40 ; 0xf29ee + je short 02a16h ; 74 24 ; 0xf29f0 + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf29f2 ata.c:836 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf29f5 + mov AL, strict byte 008h ; b0 08 ; 0xf29f8 + out DX, AL ; ee ; 0xf29fa + mov ax, strict word 00006h ; b8 06 00 ; 0xf29fb ata.c:837 + jmp short 02a21h ; eb 21 ; 0xf29fe + mov al, bl ; 88 d8 ; 0xf2a00 ata.c:842 + and AL, strict byte 0c9h ; 24 c9 ; 0xf2a02 + cmp AL, strict byte 048h ; 3c 48 ; 0xf2a04 + je short 029a1h ; 74 99 ; 0xf2a06 + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf2a08 ata.c:846 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2a0b + mov AL, strict byte 008h ; b0 08 ; 0xf2a0e + out DX, AL ; ee ; 0xf2a10 + mov ax, strict word 00007h ; b8 07 00 ; 0xf2a11 ata.c:847 + jmp short 02a21h ; eb 0b ; 0xf2a14 + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf2a16 ata.c:853 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2a19 + mov AL, strict byte 008h ; b0 08 ; 0xf2a1c + out DX, AL ; ee ; 0xf2a1e + xor ax, ax ; 31 c0 ; 0xf2a1f ata.c:854 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf2a21 ata.c:855 + pop di ; 5f ; 0xf2a24 + pop si ; 5e ; 0xf2a25 + pop bp ; 5d ; 0xf2a26 + retn ; c3 ; 0xf2a27 + ; disGetNextSymbol 0xf2a28 LB 0x7520 -> off=0x0 cb=00000000000000c1 uValue=00000000000f1428 'ata_read_sectors' +ata_read_sectors: ; 0xf2a28 LB 0xc1 + push bp ; 55 ; 0xf2a28 ata.c:865 + mov bp, sp ; 89 e5 ; 0xf2a29 + push si ; 56 ; 0xf2a2b + push di ; 57 ; 0xf2a2c + sub sp, strict byte 00006h ; 83 ec 06 ; 0xf2a2d + mov si, word [bp+004h] ; 8b 76 04 ; 0xf2a30 + mov es, [bp+006h] ; 8e 46 06 ; 0xf2a33 ata.c:871 + mov al, byte [es:si+00ch] ; 26 8a 44 0c ; 0xf2a36 + mov bx, word [es:si+00eh] ; 26 8b 5c 0e ; 0xf2a3a ata.c:872 + mov CL, strict byte 009h ; b1 09 ; 0xf2a3e + mov dx, bx ; 89 da ; 0xf2a40 + sal dx, CL ; d3 e2 ; 0xf2a42 + mov cx, dx ; 89 d1 ; 0xf2a44 + cmp word [es:si+016h], strict byte 00000h ; 26 83 7c 16 00 ; 0xf2a46 ata.c:874 + je short 02a70h ; 74 23 ; 0xf2a4b + xor ah, ah ; 30 e4 ; 0xf2a4d ata.c:876 + mov di, strict word 0001ch ; bf 1c 00 ; 0xf2a4f + imul di ; f7 ef ; 0xf2a52 + mov dx, es ; 8c c2 ; 0xf2a54 + mov [bp-00ah], es ; 8c 46 f6 ; 0xf2a56 + mov di, si ; 89 f7 ; 0xf2a59 + add di, ax ; 01 c7 ; 0xf2a5b + mov word [es:di+028h], cx ; 26 89 4d 28 ; 0xf2a5d + mov cx, bx ; 89 d9 ; 0xf2a61 ata.c:878 + mov bx, 000c4h ; bb c4 00 ; 0xf2a63 + mov ax, si ; 89 f0 ; 0xf2a66 + call 01e38h ; e8 cd f3 ; 0xf2a68 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf2a6b ata.c:879 + jmp short 02adah ; eb 6a ; 0xf2a6e ata.c:880 + xor di, di ; 31 ff ; 0xf2a70 ata.c:882 + mov word [bp-008h], di ; 89 7e f8 ; 0xf2a72 + mov word [bp-00ah], di ; 89 7e f6 ; 0xf2a75 + mov dx, word [es:si] ; 26 8b 14 ; 0xf2a78 + add dx, bx ; 01 da ; 0xf2a7b + mov word [bp-006h], dx ; 89 56 fa ; 0xf2a7d + adc di, word [es:si+002h] ; 26 13 7c 02 ; 0xf2a80 + mov dx, word [es:si+004h] ; 26 8b 54 04 ; 0xf2a84 + adc dx, word [bp-008h] ; 13 56 f8 ; 0xf2a88 + mov word [bp-008h], dx ; 89 56 f8 ; 0xf2a8b + mov dx, word [es:si+006h] ; 26 8b 54 06 ; 0xf2a8e + adc dx, word [bp-00ah] ; 13 56 f6 ; 0xf2a92 + test dx, dx ; 85 d2 ; 0xf2a95 + jnbe short 02aabh ; 77 12 ; 0xf2a97 + jne short 02ab9h ; 75 1e ; 0xf2a99 + cmp word [bp-008h], strict byte 00000h ; 83 7e f8 00 ; 0xf2a9b + jnbe short 02aabh ; 77 0a ; 0xf2a9f + jne short 02ab9h ; 75 16 ; 0xf2aa1 + cmp di, 01000h ; 81 ff 00 10 ; 0xf2aa3 + jnbe short 02aabh ; 77 02 ; 0xf2aa7 + jne short 02ab9h ; 75 0e ; 0xf2aa9 + mov cx, bx ; 89 d9 ; 0xf2aab ata.c:884 + mov bx, strict word 00024h ; bb 24 00 ; 0xf2aad + mov ax, si ; 89 f0 ; 0xf2ab0 + mov dx, es ; 8c c2 ; 0xf2ab2 + call 01e38h ; e8 81 f3 ; 0xf2ab4 + jmp short 02ae0h ; eb 27 ; 0xf2ab7 ata.c:885 + xor ah, ah ; 30 e4 ; 0xf2ab9 ata.c:886 + mov di, strict word 0001ch ; bf 1c 00 ; 0xf2abb + imul di ; f7 ef ; 0xf2abe + mov dx, es ; 8c c2 ; 0xf2ac0 + mov [bp-006h], es ; 8c 46 fa ; 0xf2ac2 + mov di, si ; 89 f7 ; 0xf2ac5 + add di, ax ; 01 c7 ; 0xf2ac7 + mov word [es:di+028h], cx ; 26 89 4d 28 ; 0xf2ac9 + mov cx, bx ; 89 d9 ; 0xf2acd ata.c:888 + mov bx, 000c4h ; bb c4 00 ; 0xf2acf + mov ax, si ; 89 f0 ; 0xf2ad2 + call 01e38h ; e8 61 f3 ; 0xf2ad4 + mov es, [bp-006h] ; 8e 46 fa ; 0xf2ad7 ata.c:889 + mov word [es:di+028h], 00200h ; 26 c7 45 28 00 02 ; 0xf2ada + lea sp, [bp-004h] ; 8d 66 fc ; 0xf2ae0 ata.c:893 + pop di ; 5f ; 0xf2ae3 + pop si ; 5e ; 0xf2ae4 + pop bp ; 5d ; 0xf2ae5 + retn 00004h ; c2 04 00 ; 0xf2ae6 + ; disGetNextSymbol 0xf2ae9 LB 0x745f -> off=0x0 cb=000000000000005b uValue=00000000000f14e9 'ata_write_sectors' +ata_write_sectors: ; 0xf2ae9 LB 0x5b + push bp ; 55 ; 0xf2ae9 ata.c:902 + mov bp, sp ; 89 e5 ; 0xf2aea + push si ; 56 ; 0xf2aec + push di ; 57 ; 0xf2aed + push ax ; 50 ; 0xf2aee + les si, [bp+004h] ; c4 76 04 ; 0xf2aef + mov cx, word [es:si+00eh] ; 26 8b 4c 0e ; 0xf2af2 ata.c:906 + cmp word [es:si+016h], strict byte 00000h ; 26 83 7c 16 00 ; 0xf2af6 ata.c:908 + je short 02b09h ; 74 0c ; 0xf2afb + mov bx, strict word 00030h ; bb 30 00 ; 0xf2afd ata.c:910 + mov ax, si ; 89 f0 ; 0xf2b00 + mov dx, es ; 8c c2 ; 0xf2b02 + call 0279ah ; e8 93 fc ; 0xf2b04 + jmp short 02b3bh ; eb 32 ; 0xf2b07 + xor ax, ax ; 31 c0 ; 0xf2b09 ata.c:913 + xor bx, bx ; 31 db ; 0xf2b0b + xor dx, dx ; 31 d2 ; 0xf2b0d + mov di, word [es:si] ; 26 8b 3c ; 0xf2b0f + add di, cx ; 01 cf ; 0xf2b12 + mov word [bp-006h], di ; 89 7e fa ; 0xf2b14 + adc ax, word [es:si+002h] ; 26 13 44 02 ; 0xf2b17 + adc bx, word [es:si+004h] ; 26 13 5c 04 ; 0xf2b1b + adc dx, word [es:si+006h] ; 26 13 54 06 ; 0xf2b1f + test dx, dx ; 85 d2 ; 0xf2b23 + jnbe short 02b36h ; 77 0f ; 0xf2b25 + jne short 02afdh ; 75 d4 ; 0xf2b27 + test bx, bx ; 85 db ; 0xf2b29 + jnbe short 02b36h ; 77 09 ; 0xf2b2b + jne short 02afdh ; 75 ce ; 0xf2b2d + cmp ax, 01000h ; 3d 00 10 ; 0xf2b2f + jnbe short 02b36h ; 77 02 ; 0xf2b32 + jne short 02afdh ; 75 c7 ; 0xf2b34 + mov bx, strict word 00034h ; bb 34 00 ; 0xf2b36 ata.c:914 + jmp short 02b00h ; eb c5 ; 0xf2b39 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf2b3b ata.c:918 + pop di ; 5f ; 0xf2b3e + pop si ; 5e ; 0xf2b3f + pop bp ; 5d ; 0xf2b40 + retn 00004h ; c2 04 00 ; 0xf2b41 + ; disGetNextSymbol 0xf2b44 LB 0x7404 -> off=0x0 cb=0000000000000295 uValue=00000000000f1544 'ata_cmd_packet' +ata_cmd_packet: ; 0xf2b44 LB 0x295 + push bp ; 55 ; 0xf2b44 ata.c:930 + mov bp, sp ; 89 e5 ; 0xf2b45 + push si ; 56 ; 0xf2b47 + push di ; 57 ; 0xf2b48 + sub sp, strict byte 00010h ; 83 ec 10 ; 0xf2b49 + mov byte [bp-006h], dl ; 88 56 fa ; 0xf2b4c + mov si, bx ; 89 de ; 0xf2b4f + mov di, cx ; 89 cf ; 0xf2b51 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf2b53 ata.c:48 + mov dx, strict word 00040h ; ba 40 00 ; 0xf2b56 + mov es, dx ; 8e c2 ; 0xf2b59 + mov dx, word [es:bx] ; 26 8b 17 ; 0xf2b5b + mov word [bp-00ah], 00122h ; c7 46 f6 22 01 ; 0xf2b5e ata.c:49 + mov word [bp-010h], dx ; 89 56 f0 ; 0xf2b63 + mov dx, ax ; 89 c2 ; 0xf2b66 ata.c:942 + shr dx, 1 ; d1 ea ; 0xf2b68 + mov ah, dl ; 88 d4 ; 0xf2b6a + mov cl, al ; 88 c1 ; 0xf2b6c ata.c:943 + and cl, 001h ; 80 e1 01 ; 0xf2b6e + cmp byte [bp+00ah], 002h ; 80 7e 0a 02 ; 0xf2b71 ata.c:946 + jne short 02b9ah ; 75 23 ; 0xf2b75 + mov bx, 00da0h ; bb a0 0d ; 0xf2b77 ata.c:947 + mov cx, ds ; 8c d9 ; 0xf2b7a + mov ax, strict word 00004h ; b8 04 00 ; 0xf2b7c + call 018cch ; e8 4a ed ; 0xf2b7f + mov ax, 00221h ; b8 21 02 ; 0xf2b82 + push ax ; 50 ; 0xf2b85 + mov ax, 00230h ; b8 30 02 ; 0xf2b86 + push ax ; 50 ; 0xf2b89 + mov ax, strict word 00004h ; b8 04 00 ; 0xf2b8a + push ax ; 50 ; 0xf2b8d + call 0190fh ; e8 7e ed ; 0xf2b8e + add sp, strict byte 00006h ; 83 c4 06 ; 0xf2b91 + mov ax, strict word 00001h ; b8 01 00 ; 0xf2b94 ata.c:948 + jmp near 02dd0h ; e9 36 02 ; 0xf2b97 + test byte [bp+004h], 001h ; f6 46 04 01 ; 0xf2b9a ata.c:952 + jne short 02b94h ; 75 f4 ; 0xf2b9e + mov al, ah ; 88 e0 ; 0xf2ba0 ata.c:957 + xor ah, ah ; 30 e4 ; 0xf2ba2 + mov dx, strict word 00006h ; ba 06 00 ; 0xf2ba4 + imul dx ; f7 ea ; 0xf2ba7 + mov es, [bp-010h] ; 8e 46 f0 ; 0xf2ba9 + mov bx, word [bp-00ah] ; 8b 5e f6 ; 0xf2bac + add bx, ax ; 01 c3 ; 0xf2baf + mov ax, word [es:bx+00206h] ; 26 8b 87 06 02 ; 0xf2bb1 + mov word [bp-014h], ax ; 89 46 ec ; 0xf2bb6 + mov ax, word [es:bx+00208h] ; 26 8b 87 08 02 ; 0xf2bb9 ata.c:958 + mov word [bp-008h], ax ; 89 46 f8 ; 0xf2bbe + xor ax, ax ; 31 c0 ; 0xf2bc1 ata.c:960 + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf2bc3 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf2bc6 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf2bc9 ata.c:962 + cmp AL, strict byte 00ch ; 3c 0c ; 0xf2bcc + jnc short 02bd6h ; 73 06 ; 0xf2bce + mov byte [bp-006h], 00ch ; c6 46 fa 0c ; 0xf2bd0 ata.c:963 + jmp short 02bdch ; eb 06 ; 0xf2bd4 + jbe short 02bdch ; 76 04 ; 0xf2bd6 ata.c:964 + mov byte [bp-006h], 010h ; c6 46 fa 10 ; 0xf2bd8 ata.c:965 + shr byte [bp-006h], 1 ; d0 6e fa ; 0xf2bdc ata.c:966 + mov es, [bp-010h] ; 8e 46 f0 ; 0xf2bdf ata.c:970 + mov bx, word [bp-00ah] ; 8b 5e f6 ; 0xf2be2 + mov word [es:bx+018h], strict word 00000h ; 26 c7 47 18 00 00 ; 0xf2be5 + mov word [es:bx+01ah], strict word 00000h ; 26 c7 47 1a 00 00 ; 0xf2beb ata.c:971 + mov word [es:bx+01ch], strict word 00000h ; 26 c7 47 1c 00 00 ; 0xf2bf1 + mov dx, word [bp-014h] ; 8b 56 ec ; 0xf2bf7 ata.c:973 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf2bfa + in AL, DX ; ec ; 0xf2bfd + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2bfe + test AL, strict byte 080h ; a8 80 ; 0xf2c00 ata.c:974 + je short 02c0ah ; 74 06 ; 0xf2c02 + mov ax, strict word 00002h ; b8 02 00 ; 0xf2c04 ata.c:975 + jmp near 02dd0h ; e9 c6 01 ; 0xf2c07 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2c0a ata.c:977 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2c0d + mov AL, strict byte 00ah ; b0 0a ; 0xf2c10 + out DX, AL ; ee ; 0xf2c12 + mov dx, word [bp-014h] ; 8b 56 ec ; 0xf2c13 ata.c:981 + add dx, strict byte 00004h ; 83 c2 04 ; 0xf2c16 + mov AL, strict byte 0f0h ; b0 f0 ; 0xf2c19 + out DX, AL ; ee ; 0xf2c1b + mov dx, word [bp-014h] ; 8b 56 ec ; 0xf2c1c ata.c:982 + add dx, strict byte 00005h ; 83 c2 05 ; 0xf2c1f + mov AL, strict byte 0ffh ; b0 ff ; 0xf2c22 + out DX, AL ; ee ; 0xf2c24 + test cl, cl ; 84 c9 ; 0xf2c25 ata.c:983 + je short 02c2eh ; 74 05 ; 0xf2c27 + mov ax, 000b0h ; b8 b0 00 ; 0xf2c29 + jmp short 02c31h ; eb 03 ; 0xf2c2c + mov ax, 000a0h ; b8 a0 00 ; 0xf2c2e + mov dx, word [bp-014h] ; 8b 56 ec ; 0xf2c31 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2c34 + out DX, AL ; ee ; 0xf2c37 + mov dx, word [bp-014h] ; 8b 56 ec ; 0xf2c38 ata.c:984 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf2c3b + mov AL, strict byte 0a0h ; b0 a0 ; 0xf2c3e + out DX, AL ; ee ; 0xf2c40 + mov dx, word [bp-014h] ; 8b 56 ec ; 0xf2c41 ata.c:988 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf2c44 + in AL, DX ; ec ; 0xf2c47 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2c48 + mov bl, al ; 88 c3 ; 0xf2c4a + test AL, strict byte 080h ; a8 80 ; 0xf2c4c ata.c:989 + jne short 02c41h ; 75 f1 ; 0xf2c4e + test AL, strict byte 001h ; a8 01 ; 0xf2c50 ata.c:992 + je short 02c63h ; 74 0f ; 0xf2c52 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2c54 ata.c:995 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2c57 + mov AL, strict byte 008h ; b0 08 ; 0xf2c5a + out DX, AL ; ee ; 0xf2c5c + mov ax, strict word 00003h ; b8 03 00 ; 0xf2c5d ata.c:996 + jmp near 02dd0h ; e9 6d 01 ; 0xf2c60 + test bl, 008h ; f6 c3 08 ; 0xf2c63 ata.c:997 + jne short 02c77h ; 75 0f ; 0xf2c66 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2c68 ata.c:1000 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2c6b + mov AL, strict byte 008h ; b0 08 ; 0xf2c6e + out DX, AL ; ee ; 0xf2c70 + mov ax, strict word 00004h ; b8 04 00 ; 0xf2c71 ata.c:1001 + jmp near 02dd0h ; e9 59 01 ; 0xf2c74 + sti ; fb ; 0xf2c77 ata.c:1004 + mov CL, strict byte 004h ; b1 04 ; 0xf2c78 ata.c:1008 + mov ax, si ; 89 f0 ; 0xf2c7a + shr ax, CL ; d3 e8 ; 0xf2c7c + add di, ax ; 01 c7 ; 0xf2c7e + and si, strict byte 0000fh ; 83 e6 0f ; 0xf2c80 + mov cl, byte [bp-006h] ; 8a 4e fa ; 0xf2c83 ata.c:1013 + xor ch, ch ; 30 ed ; 0xf2c86 + mov dx, word [bp-014h] ; 8b 56 ec ; 0xf2c88 + mov es, di ; 8e c7 ; 0xf2c8b + db 0f3h, 026h, 06fh + ; rep es outsw ; f3 26 6f ; 0xf2c8d + cmp byte [bp+00ah], 000h ; 80 7e 0a 00 ; 0xf2c90 ata.c:1015 + jne short 02ca1h ; 75 0b ; 0xf2c94 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf2c96 ata.c:1016 + in AL, DX ; ec ; 0xf2c99 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2c9a + mov bl, al ; 88 c3 ; 0xf2c9c + jmp near 02db1h ; e9 10 01 ; 0xf2c9e ata.c:1018 + mov dx, word [bp-014h] ; 8b 56 ec ; 0xf2ca1 ata.c:1022 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf2ca4 + in AL, DX ; ec ; 0xf2ca7 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2ca8 + mov bl, al ; 88 c3 ; 0xf2caa + test AL, strict byte 080h ; a8 80 ; 0xf2cac ata.c:1023 + jne short 02ca1h ; 75 f1 ; 0xf2cae + test AL, strict byte 088h ; a8 88 ; 0xf2cb0 ata.c:1028 + je short 02d14h ; 74 60 ; 0xf2cb2 + test AL, strict byte 001h ; a8 01 ; 0xf2cb4 ata.c:1031 + je short 02cc3h ; 74 0b ; 0xf2cb6 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2cb8 ata.c:1034 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2cbb + mov AL, strict byte 008h ; b0 08 ; 0xf2cbe + out DX, AL ; ee ; 0xf2cc0 + jmp short 02c5dh ; eb 9a ; 0xf2cc1 + mov al, bl ; 88 d8 ; 0xf2cc3 ata.c:1039 + and AL, strict byte 0c9h ; 24 c9 ; 0xf2cc5 + cmp AL, strict byte 048h ; 3c 48 ; 0xf2cc7 + je short 02cd6h ; 74 0b ; 0xf2cc9 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2ccb ata.c:1043 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2cce + mov AL, strict byte 008h ; b0 08 ; 0xf2cd1 + out DX, AL ; ee ; 0xf2cd3 + jmp short 02c71h ; eb 9b ; 0xf2cd4 + mov CL, strict byte 004h ; b1 04 ; 0xf2cd6 ata.c:1049 + mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf2cd8 + shr ax, CL ; d3 e8 ; 0xf2cdb + add ax, word [bp+00eh] ; 03 46 0e ; 0xf2cdd + mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf2ce0 + and dx, strict byte 0000fh ; 83 e2 0f ; 0xf2ce3 + mov word [bp+00ch], dx ; 89 56 0c ; 0xf2ce6 + mov word [bp+00eh], ax ; 89 46 0e ; 0xf2ce9 + mov dx, word [bp-014h] ; 8b 56 ec ; 0xf2cec ata.c:1054 + add dx, strict byte 00005h ; 83 c2 05 ; 0xf2cef + in AL, DX ; ec ; 0xf2cf2 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2cf3 + mov bh, al ; 88 c7 ; 0xf2cf5 + xor bl, bl ; 30 db ; 0xf2cf7 + mov dx, word [bp-014h] ; 8b 56 ec ; 0xf2cf9 + add dx, strict byte 00004h ; 83 c2 04 ; 0xf2cfc + in AL, DX ; ec ; 0xf2cff + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2d00 + add bx, ax ; 01 c3 ; 0xf2d02 + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf2d04 ata.c:1057 + cmp bx, ax ; 39 c3 ; 0xf2d07 + jnc short 02d17h ; 73 0c ; 0xf2d09 + mov cx, bx ; 89 d9 ; 0xf2d0b ata.c:1058 + sub word [bp+004h], bx ; 29 5e 04 ; 0xf2d0d ata.c:1059 + xor bx, bx ; 31 db ; 0xf2d10 ata.c:1060 + jmp short 02d20h ; eb 0c ; 0xf2d12 ata.c:1062 + jmp near 02db1h ; e9 9a 00 ; 0xf2d14 + mov cx, ax ; 89 c1 ; 0xf2d17 ata.c:1063 + mov word [bp+004h], strict word 00000h ; c7 46 04 00 00 ; 0xf2d19 ata.c:1064 + sub bx, ax ; 29 c3 ; 0xf2d1e ata.c:1065 + xor ax, ax ; 31 c0 ; 0xf2d20 ata.c:1068 + cmp word [bp+008h], strict byte 00000h ; 83 7e 08 00 ; 0xf2d22 + jne short 02d3eh ; 75 16 ; 0xf2d26 + cmp bx, word [bp+006h] ; 3b 5e 06 ; 0xf2d28 + jbe short 02d3eh ; 76 11 ; 0xf2d2b + sub bx, word [bp+006h] ; 2b 5e 06 ; 0xf2d2d ata.c:1069 + mov word [bp-012h], bx ; 89 5e ee ; 0xf2d30 + mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf2d33 ata.c:1070 + mov word [bp+006h], ax ; 89 46 06 ; 0xf2d36 ata.c:1071 + mov word [bp+008h], ax ; 89 46 08 ; 0xf2d39 + jmp short 02d47h ; eb 09 ; 0xf2d3c ata.c:1073 + mov word [bp-012h], ax ; 89 46 ee ; 0xf2d3e ata.c:1074 + sub word [bp+006h], bx ; 29 5e 06 ; 0xf2d41 ata.c:1075 + sbb word [bp+008h], ax ; 19 46 08 ; 0xf2d44 + mov si, bx ; 89 de ; 0xf2d47 ata.c:1079 + test cl, 003h ; f6 c1 03 ; 0xf2d49 ata.c:1086 + test bl, 003h ; f6 c3 03 ; 0xf2d4c ata.c:1088 + test byte [bp-012h], 003h ; f6 46 ee 03 ; 0xf2d4f ata.c:1090 + test bl, 001h ; f6 c3 01 ; 0xf2d53 ata.c:1094 + je short 02d68h ; 74 10 ; 0xf2d56 + inc bx ; 43 ; 0xf2d58 ata.c:1095 + cmp word [bp-012h], strict byte 00000h ; 83 7e ee 00 ; 0xf2d59 ata.c:1096 + jbe short 02d68h ; 76 09 ; 0xf2d5d + test byte [bp-012h], 001h ; f6 46 ee 01 ; 0xf2d5f + je short 02d68h ; 74 03 ; 0xf2d63 + dec word [bp-012h] ; ff 4e ee ; 0xf2d65 ata.c:1097 + shr bx, 1 ; d1 eb ; 0xf2d68 ata.c:1109 + shr cx, 1 ; d1 e9 ; 0xf2d6a ata.c:1110 + shr word [bp-012h], 1 ; d1 6e ee ; 0xf2d6c ata.c:1111 + test cx, cx ; 85 c9 ; 0xf2d6f ata.c:1124 + je short 02d79h ; 74 06 ; 0xf2d71 + mov dx, word [bp-014h] ; 8b 56 ec ; 0xf2d73 ata.c:1125 + in ax, DX ; ed ; 0xf2d76 + loop 02d76h ; e2 fd ; 0xf2d77 + mov dx, word [bp-014h] ; 8b 56 ec ; 0xf2d79 ata.c:1126 + mov cx, bx ; 89 d9 ; 0xf2d7c + les di, [bp+00ch] ; c4 7e 0c ; 0xf2d7e + rep insw ; f3 6d ; 0xf2d81 + mov ax, word [bp-012h] ; 8b 46 ee ; 0xf2d83 ata.c:1127 + test ax, ax ; 85 c0 ; 0xf2d86 + je short 02d8fh ; 74 05 ; 0xf2d88 + mov cx, ax ; 89 c1 ; 0xf2d8a ata.c:1128 + in ax, DX ; ed ; 0xf2d8c + loop 02d8ch ; e2 fd ; 0xf2d8d + add word [bp+00ch], si ; 01 76 0c ; 0xf2d8f ata.c:1133 + xor ax, ax ; 31 c0 ; 0xf2d92 ata.c:1136 + add word [bp-00eh], si ; 01 76 f2 ; 0xf2d94 + adc word [bp-00ch], ax ; 11 46 f4 ; 0xf2d97 + mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf2d9a ata.c:1137 + mov es, [bp-010h] ; 8e 46 f0 ; 0xf2d9d + mov bx, word [bp-00ah] ; 8b 5e f6 ; 0xf2da0 + mov word [es:bx+01ah], ax ; 26 89 47 1a ; 0xf2da3 + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf2da7 + mov word [es:bx+01ch], ax ; 26 89 47 1c ; 0xf2daa + jmp near 02ca1h ; e9 f0 fe ; 0xf2dae ata.c:1138 + mov al, bl ; 88 d8 ; 0xf2db1 ata.c:1142 + and AL, strict byte 0e9h ; 24 e9 ; 0xf2db3 + cmp AL, strict byte 040h ; 3c 40 ; 0xf2db5 + je short 02dc5h ; 74 0c ; 0xf2db7 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2db9 ata.c:1146 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2dbc + mov AL, strict byte 008h ; b0 08 ; 0xf2dbf + out DX, AL ; ee ; 0xf2dc1 + jmp near 02c71h ; e9 ac fe ; 0xf2dc2 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2dc5 ata.c:1151 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2dc8 + mov AL, strict byte 008h ; b0 08 ; 0xf2dcb + out DX, AL ; ee ; 0xf2dcd + xor ax, ax ; 31 c0 ; 0xf2dce ata.c:1152 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf2dd0 ata.c:1153 + pop di ; 5f ; 0xf2dd3 + pop si ; 5e ; 0xf2dd4 + pop bp ; 5d ; 0xf2dd5 + retn 0000ch ; c2 0c 00 ; 0xf2dd6 + ; disGetNextSymbol 0xf2dd9 LB 0x716f -> off=0x0 cb=0000000000000083 uValue=00000000000f17d9 'ata_soft_reset' +ata_soft_reset: ; 0xf2dd9 LB 0x83 + push bp ; 55 ; 0xf2dd9 ata.c:1161 + mov bp, sp ; 89 e5 ; 0xf2dda + push bx ; 53 ; 0xf2ddc + push cx ; 51 ; 0xf2ddd + push dx ; 52 ; 0xf2dde + push ax ; 50 ; 0xf2ddf + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf2de0 ata.c:48 + mov dx, strict word 00040h ; ba 40 00 ; 0xf2de3 + mov es, dx ; 8e c2 ; 0xf2de6 + mov es, [es:bx] ; 26 8e 07 ; 0xf2de8 + mov dx, ax ; 89 c2 ; 0xf2deb ata.c:1170 + shr dx, 1 ; d1 ea ; 0xf2ded + and AL, strict byte 001h ; 24 01 ; 0xf2def ata.c:1171 + mov byte [bp-008h], al ; 88 46 f8 ; 0xf2df1 + mov al, dl ; 88 d0 ; 0xf2df4 ata.c:1173 + xor ah, ah ; 30 e4 ; 0xf2df6 + mov dx, strict word 00006h ; ba 06 00 ; 0xf2df8 + imul dx ; f7 ea ; 0xf2dfb + mov bx, ax ; 89 c3 ; 0xf2dfd + add bx, 00122h ; 81 c3 22 01 ; 0xf2dff + mov cx, word [es:bx+00206h] ; 26 8b 8f 06 02 ; 0xf2e03 + mov bx, word [es:bx+00208h] ; 26 8b 9f 08 02 ; 0xf2e08 ata.c:1174 + lea dx, [bx+006h] ; 8d 57 06 ; 0xf2e0d ata.c:1177 + mov AL, strict byte 00ah ; b0 0a ; 0xf2e10 + out DX, AL ; ee ; 0xf2e12 + cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf2e13 ata.c:1178 + je short 02e1eh ; 74 05 ; 0xf2e17 + mov ax, 000b0h ; b8 b0 00 ; 0xf2e19 + jmp short 02e21h ; eb 03 ; 0xf2e1c + mov ax, 000a0h ; b8 a0 00 ; 0xf2e1e + mov dx, cx ; 89 ca ; 0xf2e21 + add dx, strict byte 00006h ; 83 c2 06 ; 0xf2e23 + out DX, AL ; ee ; 0xf2e26 + mov dx, cx ; 89 ca ; 0xf2e27 ata.c:1179 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf2e29 + mov AL, strict byte 008h ; b0 08 ; 0xf2e2c + out DX, AL ; ee ; 0xf2e2e + mov dx, cx ; 89 ca ; 0xf2e2f ata.c:1183 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf2e31 + in AL, DX ; ec ; 0xf2e34 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2e35 + test AL, strict byte 080h ; a8 80 ; 0xf2e37 ata.c:1184 + jne short 02e2fh ; 75 f4 ; 0xf2e39 + and AL, strict byte 0e9h ; 24 e9 ; 0xf2e3b ata.c:1188 + cmp AL, strict byte 040h ; 3c 40 ; 0xf2e3d + je short 02e4ch ; 74 0b ; 0xf2e3f + lea dx, [bx+006h] ; 8d 57 06 ; 0xf2e41 ata.c:1192 + mov AL, strict byte 008h ; b0 08 ; 0xf2e44 + out DX, AL ; ee ; 0xf2e46 + mov ax, strict word 00001h ; b8 01 00 ; 0xf2e47 ata.c:1193 + jmp short 02e54h ; eb 08 ; 0xf2e4a + lea dx, [bx+006h] ; 8d 57 06 ; 0xf2e4c ata.c:1197 + mov AL, strict byte 008h ; b0 08 ; 0xf2e4f + out DX, AL ; ee ; 0xf2e51 + xor ax, ax ; 31 c0 ; 0xf2e52 ata.c:1198 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf2e54 ata.c:1199 + pop dx ; 5a ; 0xf2e57 + pop cx ; 59 ; 0xf2e58 + pop bx ; 5b ; 0xf2e59 + pop bp ; 5d ; 0xf2e5a + retn ; c3 ; 0xf2e5b + ; disGetNextSymbol 0xf2e5c LB 0x70ec -> off=0x0 cb=000000000000002c uValue=00000000000f185c 'set_diskette_current_cyl' +set_diskette_current_cyl: ; 0xf2e5c LB 0x2c + push bp ; 55 ; 0xf2e5c floppy.c:71 + mov bp, sp ; 89 e5 ; 0xf2e5d + push bx ; 53 ; 0xf2e5f + mov bl, al ; 88 c3 ; 0xf2e60 + cmp AL, strict byte 001h ; 3c 01 ; 0xf2e62 floppy.c:73 + jbe short 02e74h ; 76 0e ; 0xf2e64 + mov ax, 00250h ; b8 50 02 ; 0xf2e66 floppy.c:74 + push ax ; 50 ; 0xf2e69 + mov ax, strict word 00007h ; b8 07 00 ; 0xf2e6a + push ax ; 50 ; 0xf2e6d + call 0190fh ; e8 9e ea ; 0xf2e6e + add sp, strict byte 00004h ; 83 c4 04 ; 0xf2e71 + xor bh, bh ; 30 ff ; 0xf2e74 floppy.c:75 + add bx, 00094h ; 81 c3 94 00 ; 0xf2e76 + mov ax, strict word 00040h ; b8 40 00 ; 0xf2e7a floppy.c:43 + mov es, ax ; 8e c0 ; 0xf2e7d + mov byte [es:bx], dl ; 26 88 17 ; 0xf2e7f + lea sp, [bp-002h] ; 8d 66 fe ; 0xf2e82 floppy.c:76 + pop bx ; 5b ; 0xf2e85 + pop bp ; 5d ; 0xf2e86 + retn ; c3 ; 0xf2e87 + ; disGetNextSymbol 0xf2e88 LB 0x70c0 -> off=0x0 cb=0000000000000023 uValue=00000000000f1888 'floppy_wait_for_interrupt' +floppy_wait_for_interrupt: ; 0xf2e88 LB 0x23 + push bp ; 55 ; 0xf2e88 floppy.c:96 + mov bp, sp ; 89 e5 ; 0xf2e89 + push bx ; 53 ; 0xf2e8b + cli ; fa ; 0xf2e8c floppy.c:98 + mov bx, strict word 0003eh ; bb 3e 00 ; 0xf2e8d floppy.c:38 + mov ax, strict word 00040h ; b8 40 00 ; 0xf2e90 + mov es, ax ; 8e c0 ; 0xf2e93 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf2e95 + test AL, strict byte 080h ; a8 80 ; 0xf2e98 floppy.c:102 + je short 02ea0h ; 74 04 ; 0xf2e9a + and AL, strict byte 080h ; 24 80 ; 0xf2e9c floppy.c:103 + jmp short 02ea5h ; eb 05 ; 0xf2e9e + sti ; fb ; 0xf2ea0 floppy.c:104 + hlt ; f4 ; 0xf2ea1 + cli ; fa ; 0xf2ea2 + jmp short 02e8dh ; eb e8 ; 0xf2ea3 floppy.c:105 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf2ea5 floppy.c:106 + pop bx ; 5b ; 0xf2ea8 + pop bp ; 5d ; 0xf2ea9 + retn ; c3 ; 0xf2eaa + ; disGetNextSymbol 0xf2eab LB 0x709d -> off=0x0 cb=0000000000000038 uValue=00000000000f18ab 'floppy_wait_for_interrupt_or_timeout' +floppy_wait_for_interrupt_or_timeout: ; 0xf2eab LB 0x38 + push bp ; 55 ; 0xf2eab floppy.c:116 + mov bp, sp ; 89 e5 ; 0xf2eac + push bx ; 53 ; 0xf2eae + cli ; fa ; 0xf2eaf floppy.c:118 + mov bx, strict word 00040h ; bb 40 00 ; 0xf2eb0 floppy.c:38 + mov es, bx ; 8e c3 ; 0xf2eb3 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf2eb5 + test al, al ; 84 c0 ; 0xf2eb8 floppy.c:122 + jne short 02ebfh ; 75 03 ; 0xf2eba + sti ; fb ; 0xf2ebc floppy.c:123 + jmp short 02eddh ; eb 1e ; 0xf2ebd floppy.c:124 + mov bx, strict word 0003eh ; bb 3e 00 ; 0xf2ebf floppy.c:38 + mov ax, strict word 00040h ; b8 40 00 ; 0xf2ec2 + mov es, ax ; 8e c0 ; 0xf2ec5 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf2ec7 + test AL, strict byte 080h ; a8 80 ; 0xf2eca floppy.c:128 + je short 02ed8h ; 74 0a ; 0xf2ecc + mov ah, al ; 88 c4 ; 0xf2ece floppy.c:129 + and ah, 07fh ; 80 e4 7f ; 0xf2ed0 + mov byte [es:bx], ah ; 26 88 27 ; 0xf2ed3 floppy.c:43 + jmp short 02eddh ; eb 05 ; 0xf2ed6 floppy.c:130 + sti ; fb ; 0xf2ed8 floppy.c:132 + hlt ; f4 ; 0xf2ed9 + cli ; fa ; 0xf2eda + jmp short 02eb0h ; eb d3 ; 0xf2edb floppy.c:133 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf2edd floppy.c:134 + pop bx ; 5b ; 0xf2ee0 + pop bp ; 5d ; 0xf2ee1 + retn ; c3 ; 0xf2ee2 + ; disGetNextSymbol 0xf2ee3 LB 0x7065 -> off=0x0 cb=000000000000003f uValue=00000000000f18e3 'floppy_reset_controller' +floppy_reset_controller: ; 0xf2ee3 LB 0x3f + push bp ; 55 ; 0xf2ee3 floppy.c:138 + mov bp, sp ; 89 e5 ; 0xf2ee4 + push bx ; 53 ; 0xf2ee6 + push cx ; 51 ; 0xf2ee7 + push dx ; 52 ; 0xf2ee8 + mov cx, ax ; 89 c1 ; 0xf2ee9 + mov dx, 003f2h ; ba f2 03 ; 0xf2eeb floppy.c:143 + in AL, DX ; ec ; 0xf2eee + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2eef + mov bx, ax ; 89 c3 ; 0xf2ef1 + and AL, strict byte 0fbh ; 24 fb ; 0xf2ef3 floppy.c:144 + out DX, AL ; ee ; 0xf2ef5 + mov al, bl ; 88 d8 ; 0xf2ef6 floppy.c:145 + or AL, strict byte 004h ; 0c 04 ; 0xf2ef8 + out DX, AL ; ee ; 0xf2efa + mov dx, 003f4h ; ba f4 03 ; 0xf2efb floppy.c:149 + in AL, DX ; ec ; 0xf2efe + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2eff + and AL, strict byte 0c0h ; 24 c0 ; 0xf2f01 floppy.c:150 + cmp AL, strict byte 080h ; 3c 80 ; 0xf2f03 + jne short 02efbh ; 75 f4 ; 0xf2f05 + mov bx, cx ; 89 cb ; 0xf2f07 floppy.c:153 + add bx, 00090h ; 81 c3 90 00 ; 0xf2f09 + mov ax, strict word 00040h ; b8 40 00 ; 0xf2f0d floppy.c:38 + mov es, ax ; 8e c0 ; 0xf2f10 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf2f12 + and AL, strict byte 0efh ; 24 ef ; 0xf2f15 floppy.c:154 + mov byte [es:bx], al ; 26 88 07 ; 0xf2f17 floppy.c:43 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf2f1a floppy.c:157 + pop dx ; 5a ; 0xf2f1d + pop cx ; 59 ; 0xf2f1e + pop bx ; 5b ; 0xf2f1f + pop bp ; 5d ; 0xf2f20 + retn ; c3 ; 0xf2f21 + ; disGetNextSymbol 0xf2f22 LB 0x7026 -> off=0x0 cb=0000000000000075 uValue=00000000000f1922 'floppy_prepare_controller' +floppy_prepare_controller: ; 0xf2f22 LB 0x75 + push bp ; 55 ; 0xf2f22 floppy.c:159 + mov bp, sp ; 89 e5 ; 0xf2f23 + push bx ; 53 ; 0xf2f25 + push cx ; 51 ; 0xf2f26 + push dx ; 52 ; 0xf2f27 + push ax ; 50 ; 0xf2f28 + mov cx, ax ; 89 c1 ; 0xf2f29 + mov bx, strict word 0003eh ; bb 3e 00 ; 0xf2f2b floppy.c:38 + mov ax, strict word 00040h ; b8 40 00 ; 0xf2f2e + mov es, ax ; 8e c0 ; 0xf2f31 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf2f33 + and AL, strict byte 07fh ; 24 7f ; 0xf2f36 floppy.c:165 + mov byte [es:bx], al ; 26 88 07 ; 0xf2f38 floppy.c:43 + mov dx, 003f2h ; ba f2 03 ; 0xf2f3b floppy.c:169 + in AL, DX ; ec ; 0xf2f3e + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2f3f + and AL, strict byte 004h ; 24 04 ; 0xf2f41 + mov byte [bp-008h], al ; 88 46 f8 ; 0xf2f43 + test cx, cx ; 85 c9 ; 0xf2f46 floppy.c:170 + je short 02f4eh ; 74 04 ; 0xf2f48 + mov AL, strict byte 020h ; b0 20 ; 0xf2f4a floppy.c:171 + jmp short 02f50h ; eb 02 ; 0xf2f4c floppy.c:172 + mov AL, strict byte 010h ; b0 10 ; 0xf2f4e floppy.c:173 + or AL, strict byte 00ch ; 0c 0c ; 0xf2f50 floppy.c:174 + or al, cl ; 08 c8 ; 0xf2f52 floppy.c:175 + mov dx, 003f2h ; ba f2 03 ; 0xf2f54 floppy.c:176 + out DX, AL ; ee ; 0xf2f57 + mov bx, strict word 00040h ; bb 40 00 ; 0xf2f58 floppy.c:43 + mov es, bx ; 8e c3 ; 0xf2f5b + mov byte [es:bx], 025h ; 26 c6 07 25 ; 0xf2f5d + mov bx, 0008bh ; bb 8b 00 ; 0xf2f61 floppy.c:38 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf2f64 + mov CL, strict byte 006h ; b1 06 ; 0xf2f67 floppy.c:183 + shr al, CL ; d2 e8 ; 0xf2f69 + mov dx, 003f7h ; ba f7 03 ; 0xf2f6b floppy.c:184 + out DX, AL ; ee ; 0xf2f6e + mov dx, 003f4h ; ba f4 03 ; 0xf2f6f floppy.c:188 + in AL, DX ; ec ; 0xf2f72 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf2f73 + and AL, strict byte 0c0h ; 24 c0 ; 0xf2f75 floppy.c:189 + cmp AL, strict byte 080h ; 3c 80 ; 0xf2f77 + jne short 02f6fh ; 75 f4 ; 0xf2f79 + cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf2f7b floppy.c:191 + jne short 02f8fh ; 75 0e ; 0xf2f7f + call 02e88h ; e8 04 ff ; 0xf2f81 floppy.c:202 + mov bx, strict word 0003eh ; bb 3e 00 ; 0xf2f84 floppy.c:43 + mov dx, strict word 00040h ; ba 40 00 ; 0xf2f87 + mov es, dx ; 8e c2 ; 0xf2f8a + mov byte [es:bx], al ; 26 88 07 ; 0xf2f8c + lea sp, [bp-006h] ; 8d 66 fa ; 0xf2f8f floppy.c:206 + pop dx ; 5a ; 0xf2f92 + pop cx ; 59 ; 0xf2f93 + pop bx ; 5b ; 0xf2f94 + pop bp ; 5d ; 0xf2f95 + retn ; c3 ; 0xf2f96 + ; disGetNextSymbol 0xf2f97 LB 0x6fb1 -> off=0x0 cb=000000000000004c uValue=00000000000f1997 'floppy_media_known' +floppy_media_known: ; 0xf2f97 LB 0x4c + push bx ; 53 ; 0xf2f97 floppy.c:208 + push cx ; 51 ; 0xf2f98 + push dx ; 52 ; 0xf2f99 + push bp ; 55 ; 0xf2f9a + mov bp, sp ; 89 e5 ; 0xf2f9b + mov bx, strict word 0003eh ; bb 3e 00 ; 0xf2f9d floppy.c:38 + mov dx, strict word 00040h ; ba 40 00 ; 0xf2fa0 + mov es, dx ; 8e c2 ; 0xf2fa3 + mov bh, byte [es:bx] ; 26 8a 3f ; 0xf2fa5 + mov bl, bh ; 88 fb ; 0xf2fa8 floppy.c:39 + test ax, ax ; 85 c0 ; 0xf2faa floppy.c:214 + je short 02fb0h ; 74 02 ; 0xf2fac + shr bl, 1 ; d0 eb ; 0xf2fae floppy.c:215 + and bl, 001h ; 80 e3 01 ; 0xf2fb0 floppy.c:216 + jne short 02fb9h ; 75 04 ; 0xf2fb3 floppy.c:217 + xor bh, bh ; 30 ff ; 0xf2fb5 floppy.c:218 + jmp short 02fdch ; eb 23 ; 0xf2fb7 + mov bx, 00090h ; bb 90 00 ; 0xf2fb9 floppy.c:220 + test ax, ax ; 85 c0 ; 0xf2fbc floppy.c:221 + je short 02fc3h ; 74 03 ; 0xf2fbe + mov bx, 00091h ; bb 91 00 ; 0xf2fc0 floppy.c:222 + mov ax, strict word 00040h ; b8 40 00 ; 0xf2fc3 floppy.c:38 + mov es, ax ; 8e c0 ; 0xf2fc6 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf2fc8 + xor ah, ah ; 30 e4 ; 0xf2fcb floppy.c:225 + mov CL, strict byte 004h ; b1 04 ; 0xf2fcd + sar ax, CL ; d3 f8 ; 0xf2fcf + and AL, strict byte 001h ; 24 01 ; 0xf2fd1 + jne short 02fd9h ; 75 04 ; 0xf2fd3 floppy.c:226 + xor bx, bx ; 31 db ; 0xf2fd5 floppy.c:227 + jmp short 02fdch ; eb 03 ; 0xf2fd7 + mov bx, strict word 00001h ; bb 01 00 ; 0xf2fd9 floppy.c:230 + mov ax, bx ; 89 d8 ; 0xf2fdc floppy.c:231 + pop bp ; 5d ; 0xf2fde + pop dx ; 5a ; 0xf2fdf + pop cx ; 59 ; 0xf2fe0 + pop bx ; 5b ; 0xf2fe1 + retn ; c3 ; 0xf2fe2 + ; disGetNextSymbol 0xf2fe3 LB 0x6f65 -> off=0x0 cb=0000000000000052 uValue=00000000000f19e3 'floppy_read_id' +floppy_read_id: ; 0xf2fe3 LB 0x52 + push bp ; 55 ; 0xf2fe3 floppy.c:233 + mov bp, sp ; 89 e5 ; 0xf2fe4 + push bx ; 53 ; 0xf2fe6 + push dx ; 52 ; 0xf2fe7 + push si ; 56 ; 0xf2fe8 + mov bx, ax ; 89 c3 ; 0xf2fe9 + call 02f22h ; e8 34 ff ; 0xf2feb floppy.c:240 + mov AL, strict byte 04ah ; b0 4a ; 0xf2fee floppy.c:243 + mov dx, 003f5h ; ba f5 03 ; 0xf2ff0 + out DX, AL ; ee ; 0xf2ff3 + mov al, bl ; 88 d8 ; 0xf2ff4 floppy.c:244 + out DX, AL ; ee ; 0xf2ff6 + call 02e88h ; e8 8e fe ; 0xf2ff7 floppy.c:259 + xor bx, bx ; 31 db ; 0xf2ffa floppy.c:263 + jmp short 03003h ; eb 05 ; 0xf2ffc + cmp bx, strict byte 00007h ; 83 fb 07 ; 0xf2ffe + jnl short 03017h ; 7d 14 ; 0xf3001 + mov dx, 003f5h ; ba f5 03 ; 0xf3003 floppy.c:264 + in AL, DX ; ec ; 0xf3006 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf3007 + lea si, [bx+042h] ; 8d 77 42 ; 0xf3009 + mov dx, strict word 00040h ; ba 40 00 ; 0xf300c floppy.c:43 + mov es, dx ; 8e c2 ; 0xf300f + mov byte [es:si], al ; 26 88 04 ; 0xf3011 + inc bx ; 43 ; 0xf3014 floppy.c:264 + jmp short 02ffeh ; eb e7 ; 0xf3015 + mov bx, strict word 00042h ; bb 42 00 ; 0xf3017 floppy.c:38 + mov ax, strict word 00040h ; b8 40 00 ; 0xf301a + mov es, ax ; 8e c0 ; 0xf301d + mov al, byte [es:bx] ; 26 8a 07 ; 0xf301f + test AL, strict byte 0c0h ; a8 c0 ; 0xf3022 floppy.c:39 + je short 0302ah ; 74 04 ; 0xf3024 + xor ax, ax ; 31 c0 ; 0xf3026 floppy.c:267 + jmp short 0302dh ; eb 03 ; 0xf3028 + mov ax, strict word 00001h ; b8 01 00 ; 0xf302a floppy.c:269 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf302d floppy.c:270 + pop si ; 5e ; 0xf3030 + pop dx ; 5a ; 0xf3031 + pop bx ; 5b ; 0xf3032 + pop bp ; 5d ; 0xf3033 + retn ; c3 ; 0xf3034 + ; disGetNextSymbol 0xf3035 LB 0x6f13 -> off=0x0 cb=0000000000000041 uValue=00000000000f1a35 'floppy_drive_recal' +floppy_drive_recal: ; 0xf3035 LB 0x41 + push bp ; 55 ; 0xf3035 floppy.c:272 + mov bp, sp ; 89 e5 ; 0xf3036 + push bx ; 53 ; 0xf3038 + push dx ; 52 ; 0xf3039 + push si ; 56 ; 0xf303a + mov bx, ax ; 89 c3 ; 0xf303b + call 02f22h ; e8 e2 fe ; 0xf303d floppy.c:277 + mov AL, strict byte 007h ; b0 07 ; 0xf3040 floppy.c:280 + mov dx, 003f5h ; ba f5 03 ; 0xf3042 + out DX, AL ; ee ; 0xf3045 + mov al, bl ; 88 d8 ; 0xf3046 floppy.c:281 + out DX, AL ; ee ; 0xf3048 + call 02e88h ; e8 3c fe ; 0xf3049 floppy.c:300 + test bx, bx ; 85 db ; 0xf304c floppy.c:304 + je short 03057h ; 74 07 ; 0xf304e + or AL, strict byte 002h ; 0c 02 ; 0xf3050 floppy.c:305 + mov bx, 00095h ; bb 95 00 ; 0xf3052 floppy.c:306 + jmp short 0305ch ; eb 05 ; 0xf3055 floppy.c:307 + or AL, strict byte 001h ; 0c 01 ; 0xf3057 floppy.c:308 + mov bx, 00094h ; bb 94 00 ; 0xf3059 floppy.c:309 + mov si, strict word 0003eh ; be 3e 00 ; 0xf305c floppy.c:43 + mov dx, strict word 00040h ; ba 40 00 ; 0xf305f + mov es, dx ; 8e c2 ; 0xf3062 + mov byte [es:si], al ; 26 88 04 ; 0xf3064 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf3067 floppy.c:43 + mov ax, strict word 00001h ; b8 01 00 ; 0xf306b floppy.c:315 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf306e + pop si ; 5e ; 0xf3071 + pop dx ; 5a ; 0xf3072 + pop bx ; 5b ; 0xf3073 + pop bp ; 5d ; 0xf3074 + retn ; c3 ; 0xf3075 + ; disGetNextSymbol 0xf3076 LB 0x6ed2 -> off=0x0 cb=00000000000000e7 uValue=00000000000f1a76 'floppy_media_sense' +floppy_media_sense: ; 0xf3076 LB 0xe7 + push bp ; 55 ; 0xf3076 floppy.c:318 + mov bp, sp ; 89 e5 ; 0xf3077 + push bx ; 53 ; 0xf3079 + push cx ; 51 ; 0xf307a + push dx ; 52 ; 0xf307b + push si ; 56 ; 0xf307c + push di ; 57 ; 0xf307d + mov si, ax ; 89 c6 ; 0xf307e + call 03035h ; e8 b2 ff ; 0xf3080 floppy.c:324 + test ax, ax ; 85 c0 ; 0xf3083 + jne short 0308ch ; 75 05 ; 0xf3085 + xor dx, dx ; 31 d2 ; 0xf3087 floppy.c:325 + jmp near 03151h ; e9 c5 00 ; 0xf3089 + mov ax, strict word 00010h ; b8 10 00 ; 0xf308c floppy.c:360 + call 01652h ; e8 c0 e5 ; 0xf308f + test si, si ; 85 f6 ; 0xf3092 floppy.c:361 + jne short 0309eh ; 75 08 ; 0xf3094 + mov CL, strict byte 004h ; b1 04 ; 0xf3096 floppy.c:362 + mov dl, al ; 88 c2 ; 0xf3098 + shr dl, CL ; d2 ea ; 0xf309a + jmp short 030a3h ; eb 05 ; 0xf309c floppy.c:363 + mov dl, al ; 88 c2 ; 0xf309e floppy.c:364 + and dl, 00fh ; 80 e2 0f ; 0xf30a0 + cmp dl, 001h ; 80 fa 01 ; 0xf30a3 floppy.c:365 + jne short 030b1h ; 75 09 ; 0xf30a6 + xor dl, dl ; 30 d2 ; 0xf30a8 floppy.c:367 + mov DH, strict byte 015h ; b6 15 ; 0xf30aa floppy.c:368 + mov bx, strict word 00001h ; bb 01 00 ; 0xf30ac floppy.c:369 + jmp short 030efh ; eb 3e ; 0xf30af floppy.c:371 + cmp dl, 002h ; 80 fa 02 ; 0xf30b1 + jne short 030bch ; 75 06 ; 0xf30b4 + xor dl, dl ; 30 d2 ; 0xf30b6 floppy.c:373 + mov DH, strict byte 035h ; b6 35 ; 0xf30b8 floppy.c:374 + jmp short 030ach ; eb f0 ; 0xf30ba + cmp dl, 003h ; 80 fa 03 ; 0xf30bc floppy.c:377 + jne short 030c7h ; 75 06 ; 0xf30bf + xor dl, dl ; 30 d2 ; 0xf30c1 floppy.c:379 + mov DH, strict byte 017h ; b6 17 ; 0xf30c3 floppy.c:380 + jmp short 030ach ; eb e5 ; 0xf30c5 + cmp dl, 004h ; 80 fa 04 ; 0xf30c7 floppy.c:383 + jne short 030d2h ; 75 06 ; 0xf30ca + xor dl, dl ; 30 d2 ; 0xf30cc floppy.c:385 + mov DH, strict byte 017h ; b6 17 ; 0xf30ce floppy.c:386 + jmp short 030ach ; eb da ; 0xf30d0 + cmp dl, 005h ; 80 fa 05 ; 0xf30d2 floppy.c:389 + jne short 030ddh ; 75 06 ; 0xf30d5 + mov DL, strict byte 0cch ; b2 cc ; 0xf30d7 floppy.c:391 + mov DH, strict byte 0d7h ; b6 d7 ; 0xf30d9 floppy.c:392 + jmp short 030ach ; eb cf ; 0xf30db + cmp dl, 00eh ; 80 fa 0e ; 0xf30dd floppy.c:396 + je short 030e7h ; 74 05 ; 0xf30e0 + cmp dl, 00fh ; 80 fa 0f ; 0xf30e2 + jne short 030e9h ; 75 02 ; 0xf30e5 + jmp short 030d7h ; eb ee ; 0xf30e7 + xor dl, dl ; 30 d2 ; 0xf30e9 floppy.c:404 + xor dh, dh ; 30 f6 ; 0xf30eb floppy.c:405 + xor bx, bx ; 31 db ; 0xf30ed floppy.c:406 + mov di, 0008bh ; bf 8b 00 ; 0xf30ef floppy.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf30f2 + mov es, ax ; 8e c0 ; 0xf30f5 + mov byte [es:di], dl ; 26 88 15 ; 0xf30f7 + mov ax, si ; 89 f0 ; 0xf30fa floppy.c:410 + call 02fe3h ; e8 e4 fe ; 0xf30fc + test ax, ax ; 85 c0 ; 0xf30ff + jne short 03135h ; 75 32 ; 0xf3101 + mov al, dl ; 88 d0 ; 0xf3103 floppy.c:411 + and AL, strict byte 0c0h ; 24 c0 ; 0xf3105 + cmp AL, strict byte 080h ; 3c 80 ; 0xf3107 + je short 03135h ; 74 2a ; 0xf3109 + mov al, dl ; 88 d0 ; 0xf310b floppy.c:415 + and AL, strict byte 0c0h ; 24 c0 ; 0xf310d + cmp AL, strict byte 0c0h ; 3c c0 ; 0xf310f + je short 03122h ; 74 0f ; 0xf3111 + mov ah, dl ; 88 d4 ; 0xf3113 + and ah, 03fh ; 80 e4 3f ; 0xf3115 + cmp AL, strict byte 040h ; 3c 40 ; 0xf3118 + je short 0312eh ; 74 12 ; 0xf311a + test al, al ; 84 c0 ; 0xf311c + je short 03127h ; 74 07 ; 0xf311e + jmp short 030efh ; eb cd ; 0xf3120 + and dl, 03fh ; 80 e2 3f ; 0xf3122 floppy.c:417 + jmp short 030efh ; eb c8 ; 0xf3125 floppy.c:418 + mov dl, ah ; 88 e2 ; 0xf3127 floppy.c:420 + or dl, 040h ; 80 ca 40 ; 0xf3129 + jmp short 030efh ; eb c1 ; 0xf312c floppy.c:421 + mov dl, ah ; 88 e2 ; 0xf312e floppy.c:423 + or dl, 080h ; 80 ca 80 ; 0xf3130 + jmp short 030efh ; eb ba ; 0xf3133 floppy.c:427 + test si, si ; 85 f6 ; 0xf3135 floppy.c:429 + jne short 0313eh ; 75 05 ; 0xf3137 + mov si, 00090h ; be 90 00 ; 0xf3139 floppy.c:430 + jmp short 03141h ; eb 03 ; 0xf313c floppy.c:431 + mov si, 00091h ; be 91 00 ; 0xf313e floppy.c:432 + mov di, 0008bh ; bf 8b 00 ; 0xf3141 floppy.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3144 + mov es, ax ; 8e c0 ; 0xf3147 + mov byte [es:di], dl ; 26 88 15 ; 0xf3149 + mov byte [es:si], dh ; 26 88 34 ; 0xf314c floppy.c:43 + mov dx, bx ; 89 da ; 0xf314f floppy.c:436 + mov ax, dx ; 89 d0 ; 0xf3151 floppy.c:437 + lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf3153 + pop di ; 5f ; 0xf3156 + pop si ; 5e ; 0xf3157 + pop dx ; 5a ; 0xf3158 + pop cx ; 59 ; 0xf3159 + pop bx ; 5b ; 0xf315a + pop bp ; 5d ; 0xf315b + retn ; c3 ; 0xf315c + ; disGetNextSymbol 0xf315d LB 0x6deb -> off=0x0 cb=000000000000002b uValue=00000000000f1b5d 'floppy_drive_exists' +floppy_drive_exists: ; 0xf315d LB 0x2b + push bp ; 55 ; 0xf315d floppy.c:440 + mov bp, sp ; 89 e5 ; 0xf315e + push cx ; 51 ; 0xf3160 + push dx ; 52 ; 0xf3161 + mov dx, ax ; 89 c2 ; 0xf3162 + mov ax, strict word 00010h ; b8 10 00 ; 0xf3164 floppy.c:446 + call 01652h ; e8 e8 e4 ; 0xf3167 + test dx, dx ; 85 d2 ; 0xf316a floppy.c:447 + jne short 03174h ; 75 06 ; 0xf316c + mov CL, strict byte 004h ; b1 04 ; 0xf316e floppy.c:448 + shr al, CL ; d2 e8 ; 0xf3170 + jmp short 03176h ; eb 02 ; 0xf3172 floppy.c:449 + and AL, strict byte 00fh ; 24 0f ; 0xf3174 floppy.c:450 + test al, al ; 84 c0 ; 0xf3176 floppy.c:451 + je short 0317fh ; 74 05 ; 0xf3178 + mov ax, strict word 00001h ; b8 01 00 ; 0xf317a + jmp short 03181h ; eb 02 ; 0xf317d + xor ah, ah ; 30 e4 ; 0xf317f + lea sp, [bp-004h] ; 8d 66 fc ; 0xf3181 floppy.c:452 + pop dx ; 5a ; 0xf3184 + pop cx ; 59 ; 0xf3185 + pop bp ; 5d ; 0xf3186 + retn ; c3 ; 0xf3187 + ; disGetNextSymbol 0xf3188 LB 0x6dc0 -> off=0x23 cb=00000000000009fd uValue=00000000000f1bab 'int13_diskette_function' + db 018h, 017h, 016h, 015h, 008h, 005h, 004h, 003h, 002h, 001h, 000h, 082h, 03bh, 0e9h, 031h, 06bh + db 032h, 085h, 032h, 085h, 032h, 085h, 032h, 036h, 036h, 01ah, 038h, 015h, 039h, 058h, 039h, 08ch + db 039h, 000h, 03ah +int13_diskette_function: ; 0xf31ab LB 0x9fd + push bp ; 55 ; 0xf31ab floppy.c:467 + mov bp, sp ; 89 e5 ; 0xf31ac + sub sp, strict byte 0000eh ; 83 ec 0e ; 0xf31ae + or byte [bp+01dh], 002h ; 80 4e 1d 02 ; 0xf31b1 floppy.c:478 + mov al, byte [bp+017h] ; 8a 46 17 ; 0xf31b5 floppy.c:480 + xor ah, ah ; 30 e4 ; 0xf31b8 + mov dx, ax ; 89 c2 ; 0xf31ba + cmp ax, strict word 00018h ; 3d 18 00 ; 0xf31bc + jnbe short 0321dh ; 77 5c ; 0xf31bf + push CS ; 0e ; 0xf31c1 + pop ES ; 07 ; 0xf31c2 + mov cx, strict word 0000ch ; b9 0c 00 ; 0xf31c3 + mov di, 03188h ; bf 88 31 ; 0xf31c6 + repne scasb ; f2 ae ; 0xf31c9 + sal cx, 1 ; d1 e1 ; 0xf31cb + mov di, cx ; 89 cf ; 0xf31cd + mov di, word [cs:di+03193h] ; 2e 8b bd 93 31 ; 0xf31cf + mov cx, word [bp+016h] ; 8b 4e 16 ; 0xf31d4 + xor ch, ch ; 30 ed ; 0xf31d7 + mov dl, byte [bp+00eh] ; 8a 56 0e ; 0xf31d9 + mov ax, word [bp+01ch] ; 8b 46 1c ; 0xf31dc + or AL, strict byte 001h ; 0c 01 ; 0xf31df + mov si, cx ; 89 ce ; 0xf31e1 + or si, 00100h ; 81 ce 00 01 ; 0xf31e3 + jmp di ; ff e7 ; 0xf31e7 + mov bl, byte [bp+00eh] ; 8a 5e 0e ; 0xf31e9 floppy.c:483 + cmp bl, 001h ; 80 fb 01 ; 0xf31ec floppy.c:484 + jbe short 0320bh ; 76 1a ; 0xf31ef + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf31f1 floppy.c:485 + xor ah, ah ; 30 e4 ; 0xf31f4 + or ah, 001h ; 80 cc 01 ; 0xf31f6 + mov word [bp+016h], ax ; 89 46 16 ; 0xf31f9 + mov bx, strict word 00041h ; bb 41 00 ; 0xf31fc floppy.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf31ff + mov es, ax ; 8e c0 ; 0xf3202 + mov byte [es:bx], 001h ; 26 c6 07 01 ; 0xf3204 + jmp near 03a6dh ; e9 62 08 ; 0xf3208 + mov ax, strict word 00010h ; b8 10 00 ; 0xf320b floppy.c:491 + call 01652h ; e8 41 e4 ; 0xf320e + test bl, bl ; 84 db ; 0xf3211 floppy.c:492 + jne short 03220h ; 75 0b ; 0xf3213 + mov CL, strict byte 004h ; b1 04 ; 0xf3215 floppy.c:493 + mov dl, al ; 88 c2 ; 0xf3217 + shr dl, CL ; d2 ea ; 0xf3219 + jmp short 03225h ; eb 08 ; 0xf321b floppy.c:494 + jmp near 03b82h ; e9 62 09 ; 0xf321d + mov dl, al ; 88 c2 ; 0xf3220 floppy.c:495 + and dl, 00fh ; 80 e2 0f ; 0xf3222 + test dl, dl ; 84 d2 ; 0xf3225 floppy.c:496 + jne short 03243h ; 75 1a ; 0xf3227 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3229 floppy.c:497 + xor ah, ah ; 30 e4 ; 0xf322c + or ah, 080h ; 80 cc 80 ; 0xf322e + mov word [bp+016h], ax ; 89 46 16 ; 0xf3231 + mov bx, strict word 00041h ; bb 41 00 ; 0xf3234 floppy.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3237 + mov es, ax ; 8e c0 ; 0xf323a + mov byte [es:bx], 080h ; 26 c6 07 80 ; 0xf323c + jmp near 03a6dh ; e9 2a 08 ; 0xf3240 + mov si, strict word 0003eh ; be 3e 00 ; 0xf3243 floppy.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3246 + mov es, ax ; 8e c0 ; 0xf3249 + mov byte [es:si], 000h ; 26 c6 04 00 ; 0xf324b + xor al, al ; 30 c0 ; 0xf324f floppy.c:506 + mov byte [bp+017h], al ; 88 46 17 ; 0xf3251 + mov si, strict word 00041h ; be 41 00 ; 0xf3254 floppy.c:43 + mov byte [es:si], al ; 26 88 04 ; 0xf3257 + and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf325a floppy.c:508 + mov al, bl ; 88 d8 ; 0xf325e floppy.c:509 + xor ah, ah ; 30 e4 ; 0xf3260 + xor dx, dx ; 31 d2 ; 0xf3262 + call 02e5ch ; e8 f5 fb ; 0xf3264 + mov sp, bp ; 89 ec ; 0xf3267 floppy.c:510 + pop bp ; 5d ; 0xf3269 + retn ; c3 ; 0xf326a + and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf326b floppy.c:513 + mov bx, 00441h ; bb 41 04 ; 0xf326f floppy.c:38 + xor ax, ax ; 31 c0 ; 0xf3272 + mov es, ax ; 8e c0 ; 0xf3274 + mov dl, byte [es:bx] ; 26 8a 17 ; 0xf3276 + mov ch, dl ; 88 d5 ; 0xf3279 floppy.c:515 + mov word [bp+016h], cx ; 89 4e 16 ; 0xf327b + test dl, dl ; 84 d2 ; 0xf327e floppy.c:516 + je short 03267h ; 74 e5 ; 0xf3280 + jmp near 03a6dh ; e9 e8 07 ; 0xf3282 + mov bh, byte [bp+016h] ; 8a 7e 16 ; 0xf3285 floppy.c:524 + mov al, byte [bp+015h] ; 8a 46 15 ; 0xf3288 floppy.c:525 + mov byte [bp-004h], al ; 88 46 fc ; 0xf328b + mov al, byte [bp+014h] ; 8a 46 14 ; 0xf328e floppy.c:526 + mov byte [bp-002h], al ; 88 46 fe ; 0xf3291 + mov al, byte [bp+013h] ; 8a 46 13 ; 0xf3294 floppy.c:527 + xor ah, ah ; 30 e4 ; 0xf3297 + mov byte [bp-006h], al ; 88 46 fa ; 0xf3299 + mov bl, byte [bp+00eh] ; 8a 5e 0e ; 0xf329c floppy.c:528 + cmp bl, 001h ; 80 fb 01 ; 0xf329f floppy.c:530 + jnbe short 032b1h ; 77 0d ; 0xf32a2 + cmp AL, strict byte 001h ; 3c 01 ; 0xf32a4 + jnbe short 032b1h ; 77 09 ; 0xf32a6 + test bh, bh ; 84 ff ; 0xf32a8 + je short 032b1h ; 74 05 ; 0xf32aa + cmp bh, 048h ; 80 ff 48 ; 0xf32ac + jbe short 032e8h ; 76 37 ; 0xf32af + mov bx, 00da0h ; bb a0 0d ; 0xf32b1 floppy.c:532 + mov cx, ds ; 8c d9 ; 0xf32b4 + mov ax, strict word 00004h ; b8 04 00 ; 0xf32b6 + call 018cch ; e8 10 e6 ; 0xf32b9 + mov ax, 00275h ; b8 75 02 ; 0xf32bc + push ax ; 50 ; 0xf32bf + mov ax, 0028dh ; b8 8d 02 ; 0xf32c0 + push ax ; 50 ; 0xf32c3 + mov ax, strict word 00004h ; b8 04 00 ; 0xf32c4 + push ax ; 50 ; 0xf32c7 + call 0190fh ; e8 44 e6 ; 0xf32c8 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf32cb + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf32ce floppy.c:533 + xor ah, ah ; 30 e4 ; 0xf32d1 + or ah, 001h ; 80 cc 01 ; 0xf32d3 + mov word [bp+016h], ax ; 89 46 16 ; 0xf32d6 + mov bx, strict word 00041h ; bb 41 00 ; 0xf32d9 floppy.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf32dc + mov es, ax ; 8e c0 ; 0xf32df + mov byte [es:bx], 001h ; 26 c6 07 01 ; 0xf32e1 + jmp near 03392h ; e9 aa 00 ; 0xf32e5 + mov al, bl ; 88 d8 ; 0xf32e8 floppy.c:535 + xor ah, ah ; 30 e4 ; 0xf32ea + call 0315dh ; e8 6e fe ; 0xf32ec + test ax, ax ; 85 c0 ; 0xf32ef + jne short 0330dh ; 75 1a ; 0xf32f1 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf32f3 floppy.c:543 + xor ah, ah ; 30 e4 ; 0xf32f6 + or ah, 080h ; 80 cc 80 ; 0xf32f8 + mov word [bp+016h], ax ; 89 46 16 ; 0xf32fb + mov bx, strict word 00041h ; bb 41 00 ; 0xf32fe floppy.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3301 + mov es, ax ; 8e c0 ; 0xf3304 + mov byte [es:bx], 080h ; 26 c6 07 80 ; 0xf3306 + jmp near 03392h ; e9 85 00 ; 0xf330a + mov cl, bl ; 88 d9 ; 0xf330d floppy.c:551 + xor ch, ch ; 30 ed ; 0xf330f + mov ax, cx ; 89 c8 ; 0xf3311 + call 02f97h ; e8 81 fc ; 0xf3313 + test ax, ax ; 85 c0 ; 0xf3316 + jne short 03340h ; 75 26 ; 0xf3318 + mov ax, cx ; 89 c8 ; 0xf331a floppy.c:552 + call 03076h ; e8 57 fd ; 0xf331c + test ax, ax ; 85 c0 ; 0xf331f + jne short 03340h ; 75 1d ; 0xf3321 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3323 floppy.c:554 + xor ah, ah ; 30 e4 ; 0xf3326 + or ah, 00ch ; 80 cc 0c ; 0xf3328 + mov word [bp+016h], ax ; 89 46 16 ; 0xf332b + mov bx, strict word 00041h ; bb 41 00 ; 0xf332e floppy.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3331 + mov es, ax ; 8e c0 ; 0xf3334 + mov byte [es:bx], 00ch ; 26 c6 07 0c ; 0xf3336 + mov byte [bp+016h], ch ; 88 6e 16 ; 0xf333a + jmp near 03a6dh ; e9 2d 07 ; 0xf333d + mov al, byte [bp+017h] ; 8a 46 17 ; 0xf3340 floppy.c:556 + xor ah, ah ; 30 e4 ; 0xf3343 + cmp ax, strict word 00002h ; 3d 02 00 ; 0xf3345 + jne short 03399h ; 75 4f ; 0xf3348 + mov CL, strict byte 00ch ; b1 0c ; 0xf334a floppy.c:573 + mov ax, word [bp+006h] ; 8b 46 06 ; 0xf334c + shr ax, CL ; d3 e8 ; 0xf334f + mov ch, al ; 88 c5 ; 0xf3351 + mov CL, strict byte 004h ; b1 04 ; 0xf3353 floppy.c:574 + mov dx, word [bp+006h] ; 8b 56 06 ; 0xf3355 + sal dx, CL ; d3 e2 ; 0xf3358 + mov si, word [bp+010h] ; 8b 76 10 ; 0xf335a floppy.c:575 + add si, dx ; 01 d6 ; 0xf335d + mov word [bp-00ch], si ; 89 76 f4 ; 0xf335f + cmp dx, si ; 39 f2 ; 0xf3362 floppy.c:577 + jbe short 03368h ; 76 02 ; 0xf3364 + db 0feh, 0c5h + ; inc ch ; fe c5 ; 0xf3366 floppy.c:579 + mov al, bh ; 88 f8 ; 0xf3368 floppy.c:581 + xor ah, ah ; 30 e4 ; 0xf336a + mov CL, strict byte 009h ; b1 09 ; 0xf336c + sal ax, CL ; d3 e0 ; 0xf336e + dec ax ; 48 ; 0xf3370 + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf3371 + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf3374 floppy.c:584 + add ax, word [bp-00eh] ; 03 46 f2 ; 0xf3377 + cmp ax, word [bp-00ch] ; 3b 46 f4 ; 0xf337a floppy.c:585 + jnc short 0339ch ; 73 1d ; 0xf337d + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf337f floppy.c:586 + mov ah, cl ; 88 cc ; 0xf3382 + mov word [bp+016h], ax ; 89 46 16 ; 0xf3384 + mov bx, strict word 00041h ; bb 41 00 ; 0xf3387 floppy.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf338a + mov es, ax ; 8e c0 ; 0xf338d + mov byte [es:bx], cl ; 26 88 0f ; 0xf338f + mov byte [bp+016h], 000h ; c6 46 16 00 ; 0xf3392 + jmp near 03a6dh ; e9 d4 06 ; 0xf3396 + jmp near 034e6h ; e9 4a 01 ; 0xf3399 + mov AL, strict byte 006h ; b0 06 ; 0xf339c floppy.c:594 + mov dx, strict word 0000ah ; ba 0a 00 ; 0xf339e + out DX, AL ; ee ; 0xf33a1 + xor al, al ; 30 c0 ; 0xf33a2 floppy.c:597 + mov dx, strict word 0000ch ; ba 0c 00 ; 0xf33a4 + out DX, AL ; ee ; 0xf33a7 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf33a8 floppy.c:598 + mov dx, strict word 00004h ; ba 04 00 ; 0xf33ab + out DX, AL ; ee ; 0xf33ae + mov al, byte [bp-00bh] ; 8a 46 f5 ; 0xf33af floppy.c:599 + out DX, AL ; ee ; 0xf33b2 + xor al, al ; 30 c0 ; 0xf33b3 floppy.c:601 + mov dx, strict word 0000ch ; ba 0c 00 ; 0xf33b5 + out DX, AL ; ee ; 0xf33b8 + mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf33b9 floppy.c:602 + mov dx, strict word 00005h ; ba 05 00 ; 0xf33bc + out DX, AL ; ee ; 0xf33bf + mov al, byte [bp-00dh] ; 8a 46 f3 ; 0xf33c0 floppy.c:603 + out DX, AL ; ee ; 0xf33c3 + mov AL, strict byte 046h ; b0 46 ; 0xf33c4 floppy.c:611 + mov dx, strict word 0000bh ; ba 0b 00 ; 0xf33c6 + out DX, AL ; ee ; 0xf33c9 + mov al, ch ; 88 e8 ; 0xf33ca floppy.c:615 + mov dx, 00081h ; ba 81 00 ; 0xf33cc + out DX, AL ; ee ; 0xf33cf + mov AL, strict byte 002h ; b0 02 ; 0xf33d0 floppy.c:618 + mov dx, strict word 0000ah ; ba 0a 00 ; 0xf33d2 + out DX, AL ; ee ; 0xf33d5 + mov cl, bl ; 88 d9 ; 0xf33d6 floppy.c:623 + xor ch, ch ; 30 ed ; 0xf33d8 + mov ax, cx ; 89 c8 ; 0xf33da + call 02f22h ; e8 43 fb ; 0xf33dc + mov AL, strict byte 0e6h ; b0 e6 ; 0xf33df floppy.c:626 + mov dx, 003f5h ; ba f5 03 ; 0xf33e1 + out DX, AL ; ee ; 0xf33e4 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf33e5 floppy.c:627 + xor ah, ah ; 30 e4 ; 0xf33e8 + mov dx, ax ; 89 c2 ; 0xf33ea + sal dx, 1 ; d1 e2 ; 0xf33ec + sal dx, 1 ; d1 e2 ; 0xf33ee + mov al, bl ; 88 d8 ; 0xf33f0 + or ax, dx ; 09 d0 ; 0xf33f2 + mov dx, 003f5h ; ba f5 03 ; 0xf33f4 + out DX, AL ; ee ; 0xf33f7 + mov al, byte [bp-004h] ; 8a 46 fc ; 0xf33f8 floppy.c:628 + out DX, AL ; ee ; 0xf33fb + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf33fc floppy.c:629 + out DX, AL ; ee ; 0xf33ff + mov al, byte [bp-002h] ; 8a 46 fe ; 0xf3400 floppy.c:630 + out DX, AL ; ee ; 0xf3403 + mov AL, strict byte 002h ; b0 02 ; 0xf3404 floppy.c:631 + out DX, AL ; ee ; 0xf3406 + mov al, byte [bp-002h] ; 8a 46 fe ; 0xf3407 floppy.c:632 + xor ah, ah ; 30 e4 ; 0xf340a + mov dl, bh ; 88 fa ; 0xf340c + xor dh, dh ; 30 f6 ; 0xf340e + add ax, dx ; 01 d0 ; 0xf3410 + dec ax ; 48 ; 0xf3412 + mov dx, 003f5h ; ba f5 03 ; 0xf3413 + out DX, AL ; ee ; 0xf3416 + xor al, al ; 30 c0 ; 0xf3417 floppy.c:633 + out DX, AL ; ee ; 0xf3419 + mov AL, strict byte 0ffh ; b0 ff ; 0xf341a floppy.c:634 + out DX, AL ; ee ; 0xf341c + call 02eabh ; e8 8b fa ; 0xf341d floppy.c:666 + test al, al ; 84 c0 ; 0xf3420 floppy.c:667 + jne short 03443h ; 75 1f ; 0xf3422 + mov ax, cx ; 89 c8 ; 0xf3424 floppy.c:669 + call 02ee3h ; e8 ba fa ; 0xf3426 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3429 floppy.c:670 + xor ah, ah ; 30 e4 ; 0xf342c + or ah, 080h ; 80 cc 80 ; 0xf342e + mov word [bp+016h], ax ; 89 46 16 ; 0xf3431 + mov bx, strict word 00041h ; bb 41 00 ; 0xf3434 floppy.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3437 + mov es, ax ; 8e c0 ; 0xf343a + mov byte [es:bx], 080h ; 26 c6 07 80 ; 0xf343c + jmp near 0333ah ; e9 f7 fe ; 0xf3440 + mov dx, 003f4h ; ba f4 03 ; 0xf3443 floppy.c:679 + in AL, DX ; ec ; 0xf3446 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf3447 + and AL, strict byte 0c0h ; 24 c0 ; 0xf3449 floppy.c:680 + cmp AL, strict byte 0c0h ; 3c c0 ; 0xf344b + je short 03461h ; 74 12 ; 0xf344d + mov ax, 00275h ; b8 75 02 ; 0xf344f floppy.c:681 + push ax ; 50 ; 0xf3452 + mov ax, 002a8h ; b8 a8 02 ; 0xf3453 + push ax ; 50 ; 0xf3456 + mov ax, strict word 00007h ; b8 07 00 ; 0xf3457 + push ax ; 50 ; 0xf345a + call 0190fh ; e8 b1 e4 ; 0xf345b + add sp, strict byte 00006h ; 83 c4 06 ; 0xf345e + xor cx, cx ; 31 c9 ; 0xf3461 floppy.c:684 + jmp short 0346ah ; eb 05 ; 0xf3463 + cmp cx, strict byte 00007h ; 83 f9 07 ; 0xf3465 + jnl short 03480h ; 7d 16 ; 0xf3468 + mov dx, 003f5h ; ba f5 03 ; 0xf346a floppy.c:685 + in AL, DX ; ec ; 0xf346d + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf346e + mov si, cx ; 89 ce ; 0xf3470 + add si, strict byte 00042h ; 83 c6 42 ; 0xf3472 + mov dx, strict word 00040h ; ba 40 00 ; 0xf3475 floppy.c:43 + mov es, dx ; 8e c2 ; 0xf3478 + mov byte [es:si], al ; 26 88 04 ; 0xf347a + inc cx ; 41 ; 0xf347d floppy.c:685 + jmp short 03465h ; eb e5 ; 0xf347e + mov si, strict word 00042h ; be 42 00 ; 0xf3480 floppy.c:38 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3483 + mov es, ax ; 8e c0 ; 0xf3486 + mov al, byte [es:si] ; 26 8a 04 ; 0xf3488 + test AL, strict byte 0c0h ; a8 c0 ; 0xf348b floppy.c:39 + je short 034b0h ; 74 21 ; 0xf348d + mov al, bl ; 88 d8 ; 0xf348f floppy.c:689 + xor ah, ah ; 30 e4 ; 0xf3491 + call 02ee3h ; e8 4d fa ; 0xf3493 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3496 floppy.c:690 + xor ah, ah ; 30 e4 ; 0xf3499 + or ah, 020h ; 80 cc 20 ; 0xf349b + mov word [bp+016h], ax ; 89 46 16 ; 0xf349e + mov bx, strict word 00041h ; bb 41 00 ; 0xf34a1 floppy.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf34a4 + mov es, ax ; 8e c0 ; 0xf34a7 + mov byte [es:bx], 020h ; 26 c6 07 20 ; 0xf34a9 + jmp near 03392h ; e9 e2 fe ; 0xf34ad + mov al, bh ; 88 f8 ; 0xf34b0 floppy.c:698 + xor ah, ah ; 30 e4 ; 0xf34b2 + mov CL, strict byte 009h ; b1 09 ; 0xf34b4 + sal ax, CL ; d3 e0 ; 0xf34b6 + cwd ; 99 ; 0xf34b8 + db 02bh, 0c2h + ; sub ax, dx ; 2b c2 ; 0xf34b9 + sar ax, 1 ; d1 f8 ; 0xf34bb + mov si, word [bp+010h] ; 8b 76 10 ; 0xf34bd + mov dx, word [bp+006h] ; 8b 56 06 ; 0xf34c0 + mov di, si ; 89 f7 ; 0xf34c3 + mov cx, ax ; 89 c1 ; 0xf34c5 + mov es, dx ; 8e c2 ; 0xf34c7 + push DS ; 1e ; 0xf34c9 + mov ds, dx ; 8e da ; 0xf34ca + rep movsw ; f3 a5 ; 0xf34cc + pop DS ; 1f ; 0xf34ce + mov dl, byte [bp-004h] ; 8a 56 fc ; 0xf34cf floppy.c:702 + xor dh, dh ; 30 f6 ; 0xf34d2 + mov al, bl ; 88 d8 ; 0xf34d4 + xor ah, ah ; 30 e4 ; 0xf34d6 + call 02e5ch ; e8 81 f9 ; 0xf34d8 + mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf34db floppy.c:704 + and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf34df floppy.c:705 + jmp near 03267h ; e9 81 fd ; 0xf34e3 floppy.c:706 + mov al, byte [bp+017h] ; 8a 46 17 ; 0xf34e6 floppy.c:707 + xor ah, ah ; 30 e4 ; 0xf34e9 + cmp ax, strict word 00003h ; 3d 03 00 ; 0xf34eb + je short 034f3h ; 74 03 ; 0xf34ee + jmp near 0361fh ; e9 2c 01 ; 0xf34f0 + mov CL, strict byte 00ch ; b1 0c ; 0xf34f3 floppy.c:718 + mov dx, word [bp+006h] ; 8b 56 06 ; 0xf34f5 + shr dx, CL ; d3 ea ; 0xf34f8 + mov ch, dl ; 88 d5 ; 0xf34fa + mov CL, strict byte 004h ; b1 04 ; 0xf34fc floppy.c:719 + mov ax, word [bp+006h] ; 8b 46 06 ; 0xf34fe + sal ax, CL ; d3 e0 ; 0xf3501 + mov si, word [bp+010h] ; 8b 76 10 ; 0xf3503 floppy.c:720 + add si, ax ; 01 c6 ; 0xf3506 + mov word [bp-00ch], si ; 89 76 f4 ; 0xf3508 + cmp ax, si ; 39 f0 ; 0xf350b floppy.c:722 + jbe short 03511h ; 76 02 ; 0xf350d + db 0feh, 0c5h + ; inc ch ; fe c5 ; 0xf350f floppy.c:724 + mov al, bh ; 88 f8 ; 0xf3511 floppy.c:726 + xor ah, ah ; 30 e4 ; 0xf3513 + mov CL, strict byte 009h ; b1 09 ; 0xf3515 + sal ax, CL ; d3 e0 ; 0xf3517 + dec ax ; 48 ; 0xf3519 + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf351a + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf351d floppy.c:729 + add ax, word [bp-00eh] ; 03 46 f2 ; 0xf3520 + cmp ax, word [bp-00ch] ; 3b 46 f4 ; 0xf3523 floppy.c:730 + jnc short 0352bh ; 73 03 ; 0xf3526 + jmp near 0337fh ; e9 54 fe ; 0xf3528 + mov AL, strict byte 006h ; b0 06 ; 0xf352b floppy.c:739 + mov dx, strict word 0000ah ; ba 0a 00 ; 0xf352d + out DX, AL ; ee ; 0xf3530 + xor al, al ; 30 c0 ; 0xf3531 floppy.c:741 + mov dx, strict word 0000ch ; ba 0c 00 ; 0xf3533 + out DX, AL ; ee ; 0xf3536 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf3537 floppy.c:742 + mov dx, strict word 00004h ; ba 04 00 ; 0xf353a + out DX, AL ; ee ; 0xf353d + mov al, byte [bp-00bh] ; 8a 46 f5 ; 0xf353e floppy.c:743 + out DX, AL ; ee ; 0xf3541 + xor al, al ; 30 c0 ; 0xf3542 floppy.c:744 + mov dx, strict word 0000ch ; ba 0c 00 ; 0xf3544 + out DX, AL ; ee ; 0xf3547 + mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf3548 floppy.c:745 + mov dx, strict word 00005h ; ba 05 00 ; 0xf354b + out DX, AL ; ee ; 0xf354e + mov al, byte [bp-00dh] ; 8a 46 f3 ; 0xf354f floppy.c:746 + out DX, AL ; ee ; 0xf3552 + mov AL, strict byte 04ah ; b0 4a ; 0xf3553 floppy.c:753 + mov dx, strict word 0000bh ; ba 0b 00 ; 0xf3555 + out DX, AL ; ee ; 0xf3558 + mov al, ch ; 88 e8 ; 0xf3559 floppy.c:756 + mov dx, 00081h ; ba 81 00 ; 0xf355b + out DX, AL ; ee ; 0xf355e + mov AL, strict byte 002h ; b0 02 ; 0xf355f floppy.c:759 + mov dx, strict word 0000ah ; ba 0a 00 ; 0xf3561 + out DX, AL ; ee ; 0xf3564 + mov cl, bl ; 88 d9 ; 0xf3565 floppy.c:764 + xor ch, ch ; 30 ed ; 0xf3567 + mov ax, cx ; 89 c8 ; 0xf3569 + call 02f22h ; e8 b4 f9 ; 0xf356b + mov AL, strict byte 0c5h ; b0 c5 ; 0xf356e floppy.c:767 + mov dx, 003f5h ; ba f5 03 ; 0xf3570 + out DX, AL ; ee ; 0xf3573 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf3574 floppy.c:768 + xor ah, ah ; 30 e4 ; 0xf3577 + mov dx, ax ; 89 c2 ; 0xf3579 + sal dx, 1 ; d1 e2 ; 0xf357b + sal dx, 1 ; d1 e2 ; 0xf357d + mov al, bl ; 88 d8 ; 0xf357f + or ax, dx ; 09 d0 ; 0xf3581 + mov dx, 003f5h ; ba f5 03 ; 0xf3583 + out DX, AL ; ee ; 0xf3586 + mov al, byte [bp-004h] ; 8a 46 fc ; 0xf3587 floppy.c:769 + out DX, AL ; ee ; 0xf358a + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf358b floppy.c:770 + out DX, AL ; ee ; 0xf358e + mov al, byte [bp-002h] ; 8a 46 fe ; 0xf358f floppy.c:771 + out DX, AL ; ee ; 0xf3592 + mov AL, strict byte 002h ; b0 02 ; 0xf3593 floppy.c:772 + out DX, AL ; ee ; 0xf3595 + mov dl, byte [bp-002h] ; 8a 56 fe ; 0xf3596 floppy.c:773 + xor dh, dh ; 30 f6 ; 0xf3599 + mov al, bh ; 88 f8 ; 0xf359b + xor ah, ah ; 30 e4 ; 0xf359d + add ax, dx ; 01 d0 ; 0xf359f + dec ax ; 48 ; 0xf35a1 + mov dx, 003f5h ; ba f5 03 ; 0xf35a2 + out DX, AL ; ee ; 0xf35a5 + xor al, al ; 30 c0 ; 0xf35a6 floppy.c:774 + out DX, AL ; ee ; 0xf35a8 + mov AL, strict byte 0ffh ; b0 ff ; 0xf35a9 floppy.c:775 + out DX, AL ; ee ; 0xf35ab + call 02eabh ; e8 fc f8 ; 0xf35ac floppy.c:804 + test al, al ; 84 c0 ; 0xf35af floppy.c:805 + jne short 035b6h ; 75 03 ; 0xf35b1 + jmp near 03424h ; e9 6e fe ; 0xf35b3 + mov dx, 003f4h ; ba f4 03 ; 0xf35b6 floppy.c:816 + in AL, DX ; ec ; 0xf35b9 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf35ba + and AL, strict byte 0c0h ; 24 c0 ; 0xf35bc floppy.c:817 + cmp AL, strict byte 0c0h ; 3c c0 ; 0xf35be + je short 035d4h ; 74 12 ; 0xf35c0 + mov ax, 00275h ; b8 75 02 ; 0xf35c2 floppy.c:818 + push ax ; 50 ; 0xf35c5 + mov ax, 002a8h ; b8 a8 02 ; 0xf35c6 + push ax ; 50 ; 0xf35c9 + mov ax, strict word 00007h ; b8 07 00 ; 0xf35ca + push ax ; 50 ; 0xf35cd + call 0190fh ; e8 3e e3 ; 0xf35ce + add sp, strict byte 00006h ; 83 c4 06 ; 0xf35d1 + xor cx, cx ; 31 c9 ; 0xf35d4 floppy.c:821 + jmp short 035ddh ; eb 05 ; 0xf35d6 + cmp cx, strict byte 00007h ; 83 f9 07 ; 0xf35d8 + jnl short 035f3h ; 7d 16 ; 0xf35db + mov dx, 003f5h ; ba f5 03 ; 0xf35dd floppy.c:822 + in AL, DX ; ec ; 0xf35e0 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf35e1 + mov si, cx ; 89 ce ; 0xf35e3 + add si, strict byte 00042h ; 83 c6 42 ; 0xf35e5 + mov dx, strict word 00040h ; ba 40 00 ; 0xf35e8 floppy.c:43 + mov es, dx ; 8e c2 ; 0xf35eb + mov byte [es:si], al ; 26 88 04 ; 0xf35ed + inc cx ; 41 ; 0xf35f0 floppy.c:822 + jmp short 035d8h ; eb e5 ; 0xf35f1 + mov si, strict word 00042h ; be 42 00 ; 0xf35f3 floppy.c:38 + mov ax, strict word 00040h ; b8 40 00 ; 0xf35f6 + mov es, ax ; 8e c0 ; 0xf35f9 + mov al, byte [es:si] ; 26 8a 04 ; 0xf35fb + test AL, strict byte 0c0h ; a8 c0 ; 0xf35fe floppy.c:39 + jne short 03605h ; 75 03 ; 0xf3600 + jmp near 034cfh ; e9 ca fe ; 0xf3602 + mov bx, strict word 00043h ; bb 43 00 ; 0xf3605 floppy.c:38 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf3608 + test AL, strict byte 002h ; a8 02 ; 0xf360b floppy.c:39 + je short 03617h ; 74 08 ; 0xf360d + mov word [bp+016h], 00300h ; c7 46 16 00 03 ; 0xf360f floppy.c:829 + jmp near 03a6dh ; e9 56 04 ; 0xf3614 + mov word [bp+016h], 00100h ; c7 46 16 00 01 ; 0xf3617 floppy.c:832 + jmp near 03a6dh ; e9 4e 04 ; 0xf361c floppy.c:833 + mov dl, byte [bp-004h] ; 8a 56 fc ; 0xf361f floppy.c:848 + xor dh, dh ; 30 f6 ; 0xf3622 + mov al, bl ; 88 d8 ; 0xf3624 + xor ah, ah ; 30 e4 ; 0xf3626 + call 02e5ch ; e8 31 f8 ; 0xf3628 + and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf362b floppy.c:850 + mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf362f floppy.c:851 + jmp near 03267h ; e9 31 fc ; 0xf3633 floppy.c:852 + mov bh, byte [bp+016h] ; 8a 7e 16 ; 0xf3636 floppy.c:859 + mov dl, byte [bp+015h] ; 8a 56 15 ; 0xf3639 floppy.c:860 + xor dh, dh ; 30 f6 ; 0xf363c + mov byte [bp-004h], dl ; 88 56 fc ; 0xf363e + mov al, byte [bp+013h] ; 8a 46 13 ; 0xf3641 floppy.c:861 + xor ah, ah ; 30 e4 ; 0xf3644 + mov byte [bp-006h], al ; 88 46 fa ; 0xf3646 + mov bl, byte [bp+00eh] ; 8a 5e 0e ; 0xf3649 floppy.c:862 + cmp bl, 001h ; 80 fb 01 ; 0xf364c floppy.c:864 + jnbe short 03663h ; 77 12 ; 0xf364f + cmp AL, strict byte 001h ; 3c 01 ; 0xf3651 + jnbe short 03663h ; 77 0e ; 0xf3653 + cmp dl, 04fh ; 80 fa 4f ; 0xf3655 + jnbe short 03663h ; 77 09 ; 0xf3658 + test bh, bh ; 84 ff ; 0xf365a + je short 03663h ; 74 05 ; 0xf365c + cmp bh, 012h ; 80 ff 12 ; 0xf365e + jbe short 0367eh ; 76 1b ; 0xf3661 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3663 floppy.c:866 + xor ah, ah ; 30 e4 ; 0xf3666 + or ah, 001h ; 80 cc 01 ; 0xf3668 + mov word [bp+016h], ax ; 89 46 16 ; 0xf366b + mov si, strict word 00041h ; be 41 00 ; 0xf366e floppy.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3671 + mov es, ax ; 8e c0 ; 0xf3674 + mov byte [es:si], 001h ; 26 c6 04 01 ; 0xf3676 + or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf367a floppy.c:868 + mov al, bl ; 88 d8 ; 0xf367e floppy.c:872 + xor ah, ah ; 30 e4 ; 0xf3680 + call 0315dh ; e8 d8 fa ; 0xf3682 + test ax, ax ; 85 c0 ; 0xf3685 + jne short 036a3h ; 75 1a ; 0xf3687 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3689 floppy.c:873 + xor ah, ah ; 30 e4 ; 0xf368c + or ah, 080h ; 80 cc 80 ; 0xf368e + mov word [bp+016h], ax ; 89 46 16 ; 0xf3691 + mov bx, strict word 00041h ; bb 41 00 ; 0xf3694 floppy.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3697 + mov es, ax ; 8e c0 ; 0xf369a + mov byte [es:bx], 080h ; 26 c6 07 80 ; 0xf369c + jmp near 03a6dh ; e9 ca 03 ; 0xf36a0 + mov cl, bl ; 88 d9 ; 0xf36a3 floppy.c:880 + xor ch, ch ; 30 ed ; 0xf36a5 + mov ax, cx ; 89 c8 ; 0xf36a7 + call 02f97h ; e8 eb f8 ; 0xf36a9 + test ax, ax ; 85 c0 ; 0xf36ac + jne short 036bch ; 75 0c ; 0xf36ae + mov ax, cx ; 89 c8 ; 0xf36b0 floppy.c:881 + call 03076h ; e8 c1 f9 ; 0xf36b2 + test ax, ax ; 85 c0 ; 0xf36b5 + jne short 036bch ; 75 03 ; 0xf36b7 + jmp near 03323h ; e9 67 fc ; 0xf36b9 + mov CL, strict byte 00ch ; b1 0c ; 0xf36bc floppy.c:892 + mov ax, word [bp+006h] ; 8b 46 06 ; 0xf36be + shr ax, CL ; d3 e8 ; 0xf36c1 + mov ch, al ; 88 c5 ; 0xf36c3 + mov CL, strict byte 004h ; b1 04 ; 0xf36c5 floppy.c:893 + mov dx, word [bp+006h] ; 8b 56 06 ; 0xf36c7 + sal dx, CL ; d3 e2 ; 0xf36ca + mov si, word [bp+010h] ; 8b 76 10 ; 0xf36cc floppy.c:894 + add si, dx ; 01 d6 ; 0xf36cf + mov word [bp-00ch], si ; 89 76 f4 ; 0xf36d1 + cmp dx, si ; 39 f2 ; 0xf36d4 floppy.c:896 + jbe short 036dah ; 76 02 ; 0xf36d6 + db 0feh, 0c5h + ; inc ch ; fe c5 ; 0xf36d8 floppy.c:898 + mov al, bh ; 88 f8 ; 0xf36da floppy.c:900 + xor ah, ah ; 30 e4 ; 0xf36dc + sal ax, 1 ; d1 e0 ; 0xf36de + sal ax, 1 ; d1 e0 ; 0xf36e0 + dec ax ; 48 ; 0xf36e2 + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf36e3 + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf36e6 floppy.c:903 + add ax, word [bp-00eh] ; 03 46 f2 ; 0xf36e9 + cmp ax, word [bp-00ch] ; 3b 46 f4 ; 0xf36ec floppy.c:904 + jnc short 0370bh ; 73 1a ; 0xf36ef + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf36f1 floppy.c:905 + xor ah, ah ; 30 e4 ; 0xf36f4 + or ah, 009h ; 80 cc 09 ; 0xf36f6 + mov word [bp+016h], ax ; 89 46 16 ; 0xf36f9 + mov bx, strict word 00041h ; bb 41 00 ; 0xf36fc floppy.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf36ff + mov es, ax ; 8e c0 ; 0xf3702 + mov byte [es:bx], 009h ; 26 c6 07 09 ; 0xf3704 + jmp near 03392h ; e9 87 fc ; 0xf3708 + mov AL, strict byte 006h ; b0 06 ; 0xf370b floppy.c:912 + mov dx, strict word 0000ah ; ba 0a 00 ; 0xf370d + out DX, AL ; ee ; 0xf3710 + xor al, al ; 30 c0 ; 0xf3711 floppy.c:913 + mov dx, strict word 0000ch ; ba 0c 00 ; 0xf3713 + out DX, AL ; ee ; 0xf3716 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf3717 floppy.c:914 + mov dx, strict word 00004h ; ba 04 00 ; 0xf371a + out DX, AL ; ee ; 0xf371d + mov al, byte [bp-00bh] ; 8a 46 f5 ; 0xf371e floppy.c:915 + out DX, AL ; ee ; 0xf3721 + xor al, al ; 30 c0 ; 0xf3722 floppy.c:916 + mov dx, strict word 0000ch ; ba 0c 00 ; 0xf3724 + out DX, AL ; ee ; 0xf3727 + mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf3728 floppy.c:917 + mov dx, strict word 00005h ; ba 05 00 ; 0xf372b + out DX, AL ; ee ; 0xf372e + mov al, byte [bp-00dh] ; 8a 46 f3 ; 0xf372f floppy.c:918 + out DX, AL ; ee ; 0xf3732 + mov AL, strict byte 04ah ; b0 4a ; 0xf3733 floppy.c:921 + mov dx, strict word 0000bh ; ba 0b 00 ; 0xf3735 + out DX, AL ; ee ; 0xf3738 + mov al, ch ; 88 e8 ; 0xf3739 floppy.c:923 + mov dx, 00081h ; ba 81 00 ; 0xf373b + out DX, AL ; ee ; 0xf373e + mov AL, strict byte 002h ; b0 02 ; 0xf373f floppy.c:924 + mov dx, strict word 0000ah ; ba 0a 00 ; 0xf3741 + out DX, AL ; ee ; 0xf3744 + mov cl, bl ; 88 d9 ; 0xf3745 floppy.c:927 + xor ch, ch ; 30 ed ; 0xf3747 + mov ax, cx ; 89 c8 ; 0xf3749 + call 02f22h ; e8 d4 f7 ; 0xf374b + mov AL, strict byte 00fh ; b0 0f ; 0xf374e floppy.c:930 + mov dx, 003f5h ; ba f5 03 ; 0xf3750 + out DX, AL ; ee ; 0xf3753 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf3754 floppy.c:931 + xor ah, ah ; 30 e4 ; 0xf3757 + mov dx, ax ; 89 c2 ; 0xf3759 + sal dx, 1 ; d1 e2 ; 0xf375b + sal dx, 1 ; d1 e2 ; 0xf375d + mov al, bl ; 88 d8 ; 0xf375f + or dx, ax ; 09 c2 ; 0xf3761 + mov word [bp-008h], dx ; 89 56 f8 ; 0xf3763 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf3766 + mov dx, 003f5h ; ba f5 03 ; 0xf3769 + out DX, AL ; ee ; 0xf376c + mov al, byte [bp-004h] ; 8a 46 fc ; 0xf376d floppy.c:932 + out DX, AL ; ee ; 0xf3770 + mov AL, strict byte 04dh ; b0 4d ; 0xf3771 floppy.c:935 + out DX, AL ; ee ; 0xf3773 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf3774 floppy.c:936 + out DX, AL ; ee ; 0xf3777 + mov AL, strict byte 002h ; b0 02 ; 0xf3778 floppy.c:937 + out DX, AL ; ee ; 0xf377a + mov al, bh ; 88 f8 ; 0xf377b floppy.c:938 + out DX, AL ; ee ; 0xf377d + xor al, bh ; 30 f8 ; 0xf377e floppy.c:939 + out DX, AL ; ee ; 0xf3780 + mov AL, strict byte 0f6h ; b0 f6 ; 0xf3781 floppy.c:940 + out DX, AL ; ee ; 0xf3783 + call 02eabh ; e8 24 f7 ; 0xf3784 floppy.c:968 + test al, al ; 84 c0 ; 0xf3787 floppy.c:969 + jne short 03793h ; 75 08 ; 0xf3789 + mov ax, cx ; 89 c8 ; 0xf378b floppy.c:970 + call 02ee3h ; e8 53 f7 ; 0xf378d + jmp near 03689h ; e9 f6 fe ; 0xf3790 floppy.c:68 + mov dx, 003f4h ; ba f4 03 ; 0xf3793 floppy.c:979 + in AL, DX ; ec ; 0xf3796 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf3797 + and AL, strict byte 0c0h ; 24 c0 ; 0xf3799 floppy.c:980 + cmp AL, strict byte 0c0h ; 3c c0 ; 0xf379b + je short 037b1h ; 74 12 ; 0xf379d + mov ax, 00275h ; b8 75 02 ; 0xf379f floppy.c:981 + push ax ; 50 ; 0xf37a2 + mov ax, 002a8h ; b8 a8 02 ; 0xf37a3 + push ax ; 50 ; 0xf37a6 + mov ax, strict word 00007h ; b8 07 00 ; 0xf37a7 + push ax ; 50 ; 0xf37aa + call 0190fh ; e8 61 e1 ; 0xf37ab + add sp, strict byte 00006h ; 83 c4 06 ; 0xf37ae + xor cx, cx ; 31 c9 ; 0xf37b1 floppy.c:984 + jmp short 037bah ; eb 05 ; 0xf37b3 + cmp cx, strict byte 00007h ; 83 f9 07 ; 0xf37b5 + jnl short 037d0h ; 7d 16 ; 0xf37b8 + mov dx, 003f5h ; ba f5 03 ; 0xf37ba floppy.c:985 + in AL, DX ; ec ; 0xf37bd + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf37be + mov si, cx ; 89 ce ; 0xf37c0 + add si, strict byte 00042h ; 83 c6 42 ; 0xf37c2 + mov dx, strict word 00040h ; ba 40 00 ; 0xf37c5 floppy.c:43 + mov es, dx ; 8e c2 ; 0xf37c8 + mov byte [es:si], al ; 26 88 04 ; 0xf37ca + inc cx ; 41 ; 0xf37cd floppy.c:985 + jmp short 037b5h ; eb e5 ; 0xf37ce + mov si, strict word 00042h ; be 42 00 ; 0xf37d0 floppy.c:38 + mov ax, strict word 00040h ; b8 40 00 ; 0xf37d3 + mov es, ax ; 8e c0 ; 0xf37d6 + mov al, byte [es:si] ; 26 8a 04 ; 0xf37d8 + test AL, strict byte 0c0h ; a8 c0 ; 0xf37db floppy.c:39 + je short 037feh ; 74 1f ; 0xf37dd + mov si, strict word 00043h ; be 43 00 ; 0xf37df floppy.c:38 + mov al, byte [es:si] ; 26 8a 04 ; 0xf37e2 + test AL, strict byte 002h ; a8 02 ; 0xf37e5 floppy.c:39 + je short 037ech ; 74 03 ; 0xf37e7 + jmp near 0360fh ; e9 23 fe ; 0xf37e9 + mov ax, 00275h ; b8 75 02 ; 0xf37ec floppy.c:996 + push ax ; 50 ; 0xf37ef + mov ax, 002bch ; b8 bc 02 ; 0xf37f0 + push ax ; 50 ; 0xf37f3 + mov ax, strict word 00007h ; b8 07 00 ; 0xf37f4 + push ax ; 50 ; 0xf37f7 + call 0190fh ; e8 14 e1 ; 0xf37f8 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf37fb + mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf37fe floppy.c:1000 + mov si, strict word 00041h ; be 41 00 ; 0xf3802 floppy.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3805 + mov es, ax ; 8e c0 ; 0xf3808 + mov byte [es:si], 000h ; 26 c6 04 00 ; 0xf380a + mov al, bl ; 88 d8 ; 0xf380e floppy.c:1002 + xor ah, ah ; 30 e4 ; 0xf3810 + xor dx, dx ; 31 d2 ; 0xf3812 + call 02e5ch ; e8 45 f6 ; 0xf3814 + jmp near 034dfh ; e9 c5 fc ; 0xf3817 + mov bl, dl ; 88 d3 ; 0xf381a floppy.c:1009 + cmp dl, 001h ; 80 fa 01 ; 0xf381c floppy.c:1011 + jbe short 03847h ; 76 26 ; 0xf381f + mov word [bp+016h], strict word 00000h ; c7 46 16 00 00 ; 0xf3821 floppy.c:1012 + mov word [bp+010h], strict word 00000h ; c7 46 10 00 00 ; 0xf3826 floppy.c:1013 + mov word [bp+014h], strict word 00000h ; c7 46 14 00 00 ; 0xf382b floppy.c:1014 + mov word [bp+012h], strict word 00000h ; c7 46 12 00 00 ; 0xf3830 floppy.c:1015 + mov word [bp+006h], strict word 00000h ; c7 46 06 00 00 ; 0xf3835 floppy.c:1016 + mov word [bp+008h], strict word 00000h ; c7 46 08 00 00 ; 0xf383a floppy.c:1017 + mov dl, bh ; 88 fa ; 0xf383f floppy.c:1018 + mov word [bp+012h], dx ; 89 56 12 ; 0xf3841 + jmp near 0396ch ; e9 25 01 ; 0xf3844 + mov ax, strict word 00010h ; b8 10 00 ; 0xf3847 floppy.c:1019 + call 01652h ; e8 05 de ; 0xf384a + mov dl, al ; 88 c2 ; 0xf384d + xor bh, bh ; 30 ff ; 0xf384f floppy.c:1025 + test AL, strict byte 0f0h ; a8 f0 ; 0xf3851 floppy.c:1026 + je short 03857h ; 74 02 ; 0xf3853 + mov BH, strict byte 001h ; b7 01 ; 0xf3855 floppy.c:1027 + test dl, 00fh ; f6 c2 0f ; 0xf3857 floppy.c:1028 + je short 0385eh ; 74 02 ; 0xf385a + db 0feh, 0c7h + ; inc bh ; fe c7 ; 0xf385c floppy.c:1029 + test bl, bl ; 84 db ; 0xf385e floppy.c:1031 + jne short 03868h ; 75 06 ; 0xf3860 + mov CL, strict byte 004h ; b1 04 ; 0xf3862 floppy.c:1032 + shr dl, CL ; d2 ea ; 0xf3864 + jmp short 0386bh ; eb 03 ; 0xf3866 floppy.c:1033 + and dl, 00fh ; 80 e2 0f ; 0xf3868 floppy.c:1034 + mov byte [bp+011h], 000h ; c6 46 11 00 ; 0xf386b floppy.c:1037 + mov al, dl ; 88 d0 ; 0xf386f + xor ah, ah ; 30 e4 ; 0xf3871 + mov word [bp+010h], ax ; 89 46 10 ; 0xf3873 + xor al, dl ; 30 d0 ; 0xf3876 floppy.c:1038 + mov word [bp+016h], ax ; 89 46 16 ; 0xf3878 + mov cx, word [bp+012h] ; 8b 4e 12 ; 0xf387b floppy.c:1040 + mov cl, bh ; 88 f9 ; 0xf387e + mov word [bp+012h], cx ; 89 4e 12 ; 0xf3880 + mov ax, cx ; 89 c8 ; 0xf3883 floppy.c:1041 + xor ah, ch ; 30 ec ; 0xf3885 + or ah, 001h ; 80 cc 01 ; 0xf3887 + mov word [bp+012h], ax ; 89 46 12 ; 0xf388a + cmp dl, 003h ; 80 fa 03 ; 0xf388d floppy.c:1043 + jc short 038a7h ; 72 15 ; 0xf3890 + jbe short 038ceh ; 76 3a ; 0xf3892 + cmp dl, 005h ; 80 fa 05 ; 0xf3894 + jc short 038d5h ; 72 3c ; 0xf3897 + jbe short 038dch ; 76 41 ; 0xf3899 + cmp dl, 00fh ; 80 fa 0f ; 0xf389b + je short 038eah ; 74 4a ; 0xf389e + cmp dl, 00eh ; 80 fa 0e ; 0xf38a0 + je short 038e3h ; 74 3e ; 0xf38a3 + jmp short 038f1h ; eb 4a ; 0xf38a5 + cmp dl, 002h ; 80 fa 02 ; 0xf38a7 + je short 038c7h ; 74 1b ; 0xf38aa + cmp dl, 001h ; 80 fa 01 ; 0xf38ac + je short 038c0h ; 74 0f ; 0xf38af + test dl, dl ; 84 d2 ; 0xf38b1 + jne short 038f1h ; 75 3c ; 0xf38b3 + mov word [bp+014h], strict word 00000h ; c7 46 14 00 00 ; 0xf38b5 floppy.c:1045 + mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf38ba floppy.c:1046 + jmp short 03903h ; eb 43 ; 0xf38be floppy.c:1047 + mov word [bp+014h], 02709h ; c7 46 14 09 27 ; 0xf38c0 floppy.c:1050 + jmp short 03903h ; eb 3c ; 0xf38c5 floppy.c:1051 + mov word [bp+014h], 04f0fh ; c7 46 14 0f 4f ; 0xf38c7 floppy.c:1054 + jmp short 03903h ; eb 35 ; 0xf38cc floppy.c:1055 + mov word [bp+014h], 04f09h ; c7 46 14 09 4f ; 0xf38ce floppy.c:1058 + jmp short 03903h ; eb 2e ; 0xf38d3 floppy.c:1059 + mov word [bp+014h], 04f12h ; c7 46 14 12 4f ; 0xf38d5 floppy.c:1062 + jmp short 03903h ; eb 27 ; 0xf38da floppy.c:1063 + mov word [bp+014h], 04f24h ; c7 46 14 24 4f ; 0xf38dc floppy.c:1066 + jmp short 03903h ; eb 20 ; 0xf38e1 floppy.c:1067 + mov word [bp+014h], 0fe3fh ; c7 46 14 3f fe ; 0xf38e3 floppy.c:1070 + jmp short 03903h ; eb 19 ; 0xf38e8 floppy.c:1071 + mov word [bp+014h], 0feffh ; c7 46 14 ff fe ; 0xf38ea floppy.c:1074 + jmp short 03903h ; eb 12 ; 0xf38ef floppy.c:1075 + mov ax, 00275h ; b8 75 02 ; 0xf38f1 floppy.c:1079 + push ax ; 50 ; 0xf38f4 + mov ax, 002cdh ; b8 cd 02 ; 0xf38f5 + push ax ; 50 ; 0xf38f8 + mov ax, strict word 00007h ; b8 07 00 ; 0xf38f9 + push ax ; 50 ; 0xf38fc + call 0190fh ; e8 0f e0 ; 0xf38fd + add sp, strict byte 00006h ; 83 c4 06 ; 0xf3900 + mov word [bp+006h], 0f000h ; c7 46 06 00 f0 ; 0xf3903 floppy.c:1083 + mov al, dl ; 88 d0 ; 0xf3908 floppy.c:1084 + xor ah, ah ; 30 e4 ; 0xf390a + call 03ba8h ; e8 99 02 ; 0xf390c + mov word [bp+008h], ax ; 89 46 08 ; 0xf390f + jmp near 034dfh ; e9 ca fb ; 0xf3912 + mov bl, dl ; 88 d3 ; 0xf3915 floppy.c:1091 + cmp dl, 001h ; 80 fa 01 ; 0xf3917 floppy.c:1092 + jbe short 03921h ; 76 05 ; 0xf391a + mov word [bp+016h], cx ; 89 4e 16 ; 0xf391c floppy.c:1093 + jmp short 0396ch ; eb 4b ; 0xf391f + mov ax, strict word 00010h ; b8 10 00 ; 0xf3921 floppy.c:1099 + call 01652h ; e8 2b dd ; 0xf3924 + test bl, bl ; 84 db ; 0xf3927 floppy.c:1100 + jne short 03933h ; 75 08 ; 0xf3929 + mov CL, strict byte 004h ; b1 04 ; 0xf392b floppy.c:1101 + mov dl, al ; 88 c2 ; 0xf392d + shr dl, CL ; d2 ea ; 0xf392f + jmp short 03938h ; eb 05 ; 0xf3931 floppy.c:1102 + mov dl, al ; 88 c2 ; 0xf3933 floppy.c:1103 + and dl, 00fh ; 80 e2 0f ; 0xf3935 + and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf3938 floppy.c:1104 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf393c + xor ah, ah ; 30 e4 ; 0xf393f + test dl, dl ; 84 d2 ; 0xf3941 floppy.c:1105 + je short 03952h ; 74 0d ; 0xf3943 + cmp dl, 001h ; 80 fa 01 ; 0xf3945 floppy.c:1106 + jbe short 0394fh ; 76 05 ; 0xf3948 + or ah, 002h ; 80 cc 02 ; 0xf394a floppy.c:1108 + jmp short 03952h ; eb 03 ; 0xf394d floppy.c:1109 + or ah, 001h ; 80 cc 01 ; 0xf394f floppy.c:1110 + mov word [bp+016h], ax ; 89 46 16 ; 0xf3952 + jmp near 03267h ; e9 0f f9 ; 0xf3955 floppy.c:1113 + cmp dl, 001h ; 80 fa 01 ; 0xf3958 floppy.c:1118 + jbe short 03972h ; 76 15 ; 0xf395b + mov word [bp+016h], si ; 89 76 16 ; 0xf395d floppy.c:1119 + mov bx, strict word 00041h ; bb 41 00 ; 0xf3960 floppy.c:43 + mov dx, strict word 00040h ; ba 40 00 ; 0xf3963 + mov es, dx ; 8e c2 ; 0xf3966 + mov byte [es:bx], 001h ; 26 c6 07 01 ; 0xf3968 + mov word [bp+01ch], ax ; 89 46 1c ; 0xf396c + jmp near 03267h ; e9 f5 f8 ; 0xf396f + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3972 floppy.c:1125 + xor ah, ah ; 30 e4 ; 0xf3975 + or ah, 006h ; 80 cc 06 ; 0xf3977 + mov word [bp+016h], ax ; 89 46 16 ; 0xf397a + mov bx, strict word 00041h ; bb 41 00 ; 0xf397d floppy.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3980 + mov es, ax ; 8e c0 ; 0xf3983 + mov byte [es:bx], 006h ; 26 c6 07 06 ; 0xf3985 + jmp near 03a6dh ; e9 e1 00 ; 0xf3989 + mov bl, dl ; 88 d3 ; 0xf398c floppy.c:1134 + mov cl, byte [bp+016h] ; 8a 4e 16 ; 0xf398e floppy.c:1142 + cmp dl, 001h ; 80 fa 01 ; 0xf3991 floppy.c:1146 + jnbe short 0395dh ; 77 c7 ; 0xf3994 + mov al, bl ; 88 d8 ; 0xf3996 floppy.c:1154 + xor ah, ah ; 30 e4 ; 0xf3998 + call 0315dh ; e8 c0 f7 ; 0xf399a + test ax, ax ; 85 c0 ; 0xf399d + jne short 039a4h ; 75 03 ; 0xf399f + jmp near 03689h ; e9 e5 fc ; 0xf39a1 + test bl, bl ; 84 db ; 0xf39a4 floppy.c:1162 + je short 039adh ; 74 05 ; 0xf39a6 + mov bx, 00091h ; bb 91 00 ; 0xf39a8 + jmp short 039b0h ; eb 03 ; 0xf39ab + mov bx, 00090h ; bb 90 00 ; 0xf39ad + mov word [bp-00ch], bx ; 89 5e f4 ; 0xf39b0 + mov ax, strict word 00040h ; b8 40 00 ; 0xf39b3 floppy.c:38 + mov es, ax ; 8e c0 ; 0xf39b6 + mov bl, byte [es:bx] ; 26 8a 1f ; 0xf39b8 + and bl, 00fh ; 80 e3 0f ; 0xf39bb floppy.c:1166 + cmp cl, 002h ; 80 f9 02 ; 0xf39be floppy.c:1168 + jc short 039d2h ; 72 0f ; 0xf39c1 + jbe short 039dfh ; 76 1a ; 0xf39c3 + cmp cl, 004h ; 80 f9 04 ; 0xf39c5 + je short 039dah ; 74 10 ; 0xf39c8 + cmp cl, 003h ; 80 f9 03 ; 0xf39ca + je short 039e4h ; 74 15 ; 0xf39cd + jmp near 031f1h ; e9 1f f8 ; 0xf39cf + cmp cl, 001h ; 80 f9 01 ; 0xf39d2 + je short 039dah ; 74 03 ; 0xf39d5 + jmp near 031f1h ; e9 17 f8 ; 0xf39d7 + or bl, 090h ; 80 cb 90 ; 0xf39da floppy.c:1171 + jmp short 039e7h ; eb 08 ; 0xf39dd floppy.c:1172 + or bl, 070h ; 80 cb 70 ; 0xf39df floppy.c:1175 + jmp short 039e7h ; eb 03 ; 0xf39e2 floppy.c:1176 + or bl, 010h ; 80 cb 10 ; 0xf39e4 floppy.c:1179 + mov ax, strict word 00040h ; b8 40 00 ; 0xf39e7 floppy.c:43 + mov es, ax ; 8e c0 ; 0xf39ea + mov si, word [bp-00ch] ; 8b 76 f4 ; 0xf39ec + mov byte [es:si], bl ; 26 88 1c ; 0xf39ef + xor al, al ; 30 c0 ; 0xf39f2 floppy.c:1198 + mov byte [bp+017h], al ; 88 46 17 ; 0xf39f4 + mov bx, strict word 00041h ; bb 41 00 ; 0xf39f7 floppy.c:43 + mov byte [es:bx], al ; 26 88 07 ; 0xf39fa + jmp near 034dfh ; e9 df fa ; 0xf39fd + mov bl, dl ; 88 d3 ; 0xf3a00 floppy.c:1208 + mov cl, byte [bp+014h] ; 8a 4e 14 ; 0xf3a02 floppy.c:1210 + mov bh, cl ; 88 cf ; 0xf3a05 floppy.c:1211 + and bh, 03fh ; 80 e7 3f ; 0xf3a07 + mov byte [bp-00ah], cl ; 88 4e f6 ; 0xf3a0a floppy.c:1212 + mov byte [bp-009h], dh ; 88 76 f7 ; 0xf3a0d + mov CL, strict byte 006h ; b1 06 ; 0xf3a10 + mov di, word [bp-00ah] ; 8b 7e f6 ; 0xf3a12 + sar di, CL ; d3 ff ; 0xf3a15 + mov cx, di ; 89 f9 ; 0xf3a17 + mov byte [bp-009h], cl ; 88 4e f7 ; 0xf3a19 + mov byte [bp-00ah], dh ; 88 76 f6 ; 0xf3a1c + mov cl, byte [bp+015h] ; 8a 4e 15 ; 0xf3a1f + xor ch, ch ; 30 ed ; 0xf3a22 + add cx, word [bp-00ah] ; 03 4e f6 ; 0xf3a24 + mov byte [bp-004h], cl ; 88 4e fc ; 0xf3a27 + cmp dl, 001h ; 80 fa 01 ; 0xf3a2a floppy.c:1217 + jbe short 03a32h ; 76 03 ; 0xf3a2d + jmp near 0395dh ; e9 2b ff ; 0xf3a2f + mov al, bl ; 88 d8 ; 0xf3a32 floppy.c:1225 + xor ah, ah ; 30 e4 ; 0xf3a34 + call 0315dh ; e8 24 f7 ; 0xf3a36 + test ax, ax ; 85 c0 ; 0xf3a39 + jne short 03a40h ; 75 03 ; 0xf3a3b + jmp near 03689h ; e9 49 fc ; 0xf3a3d + mov cl, bl ; 88 d9 ; 0xf3a40 floppy.c:1233 + xor ch, ch ; 30 ed ; 0xf3a42 + mov ax, cx ; 89 c8 ; 0xf3a44 + call 02f97h ; e8 4e f5 ; 0xf3a46 + test ax, ax ; 85 c0 ; 0xf3a49 + jne short 03a74h ; 75 27 ; 0xf3a4b + mov ax, cx ; 89 c8 ; 0xf3a4d floppy.c:1234 + call 03076h ; e8 24 f6 ; 0xf3a4f + test ax, ax ; 85 c0 ; 0xf3a52 + jne short 03a74h ; 75 1e ; 0xf3a54 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3a56 floppy.c:1235 + xor ah, ah ; 30 e4 ; 0xf3a59 + or ah, 00ch ; 80 cc 0c ; 0xf3a5b + mov word [bp+016h], ax ; 89 46 16 ; 0xf3a5e + mov bx, strict word 00041h ; bb 41 00 ; 0xf3a61 floppy.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3a64 + mov es, ax ; 8e c0 ; 0xf3a67 + mov byte [es:bx], 00ch ; 26 c6 07 0c ; 0xf3a69 + or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf3a6d + jmp near 03267h ; e9 f3 f7 ; 0xf3a71 + mov ax, strict word 00010h ; b8 10 00 ; 0xf3a74 floppy.c:1243 + call 01652h ; e8 d8 db ; 0xf3a77 + test bl, bl ; 84 db ; 0xf3a7a floppy.c:1244 + jne short 03a86h ; 75 08 ; 0xf3a7c + mov CL, strict byte 004h ; b1 04 ; 0xf3a7e floppy.c:1245 + mov dl, al ; 88 c2 ; 0xf3a80 + shr dl, CL ; d2 ea ; 0xf3a82 + jmp short 03a8bh ; eb 05 ; 0xf3a84 floppy.c:1246 + mov dl, al ; 88 c2 ; 0xf3a86 floppy.c:1247 + and dl, 00fh ; 80 e2 0f ; 0xf3a88 + test bl, bl ; 84 db ; 0xf3a8b floppy.c:1250 + je short 03a94h ; 74 05 ; 0xf3a8d + mov si, 00091h ; be 91 00 ; 0xf3a8f + jmp short 03a97h ; eb 03 ; 0xf3a92 + mov si, 00090h ; be 90 00 ; 0xf3a94 + mov word [bp-00ch], si ; 89 76 f4 ; 0xf3a97 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3a9a floppy.c:38 + mov es, ax ; 8e c0 ; 0xf3a9d + mov bl, byte [es:si] ; 26 8a 1c ; 0xf3a9f + and bl, 00fh ; 80 e3 0f ; 0xf3aa2 floppy.c:39 + cmp dl, 003h ; 80 fa 03 ; 0xf3aa5 floppy.c:1256 + jc short 03ac5h ; 72 1b ; 0xf3aa8 + mov al, bl ; 88 d8 ; 0xf3aaa + or AL, strict byte 090h ; 0c 90 ; 0xf3aac + cmp dl, 003h ; 80 fa 03 ; 0xf3aae + jbe short 03b01h ; 76 4e ; 0xf3ab1 + mov ah, bl ; 88 dc ; 0xf3ab3 + or ah, 010h ; 80 cc 10 ; 0xf3ab5 + cmp dl, 005h ; 80 fa 05 ; 0xf3ab8 + je short 03affh ; 74 42 ; 0xf3abb + cmp dl, 004h ; 80 fa 04 ; 0xf3abd + je short 03b0eh ; 74 4c ; 0xf3ac0 + jmp near 03b46h ; e9 81 00 ; 0xf3ac2 + cmp dl, 002h ; 80 fa 02 ; 0xf3ac5 + je short 03adfh ; 74 15 ; 0xf3ac8 + cmp dl, 001h ; 80 fa 01 ; 0xf3aca + jne short 03b12h ; 75 43 ; 0xf3acd + cmp byte [bp-004h], 027h ; 80 7e fc 27 ; 0xf3acf floppy.c:1258 + jne short 03b12h ; 75 3d ; 0xf3ad3 + cmp bh, 009h ; 80 ff 09 ; 0xf3ad5 + jne short 03b28h ; 75 4e ; 0xf3ad8 + or bl, 090h ; 80 cb 90 ; 0xf3ada floppy.c:1259 + jmp short 03b28h ; eb 49 ; 0xf3add floppy.c:1261 + cmp byte [bp-004h], 027h ; 80 7e fc 27 ; 0xf3adf floppy.c:1263 + jne short 03aefh ; 75 0a ; 0xf3ae3 + cmp bh, 009h ; 80 ff 09 ; 0xf3ae5 + jne short 03aefh ; 75 05 ; 0xf3ae8 + or bl, 070h ; 80 cb 70 ; 0xf3aea floppy.c:1264 + jmp short 03b28h ; eb 39 ; 0xf3aed floppy.c:1265 + cmp byte [bp-004h], 04fh ; 80 7e fc 4f ; 0xf3aef + jne short 03b46h ; 75 51 ; 0xf3af3 + cmp bh, 00fh ; 80 ff 0f ; 0xf3af5 + jne short 03b46h ; 75 4c ; 0xf3af8 + or bl, 010h ; 80 cb 10 ; 0xf3afa floppy.c:1266 + jmp short 03b46h ; eb 47 ; 0xf3afd floppy.c:1268 + jmp short 03b2ah ; eb 29 ; 0xf3aff + cmp byte [bp-004h], 04fh ; 80 7e fc 4f ; 0xf3b01 floppy.c:1270 + jne short 03b46h ; 75 3f ; 0xf3b05 + cmp bh, 009h ; 80 ff 09 ; 0xf3b07 + je short 03b10h ; 74 04 ; 0xf3b0a + jmp short 03b46h ; eb 38 ; 0xf3b0c + jmp short 03b14h ; eb 04 ; 0xf3b0e + mov bl, al ; 88 c3 ; 0xf3b10 floppy.c:1271 + jmp short 03b46h ; eb 32 ; 0xf3b12 floppy.c:1273 + cmp byte [bp-004h], 04fh ; 80 7e fc 4f ; 0xf3b14 floppy.c:1275 + jne short 03b46h ; 75 2c ; 0xf3b18 + cmp bh, 009h ; 80 ff 09 ; 0xf3b1a floppy.c:1276 + jne short 03b21h ; 75 02 ; 0xf3b1d + jmp short 03b10h ; eb ef ; 0xf3b1f + cmp bh, 012h ; 80 ff 12 ; 0xf3b21 floppy.c:1277 + jne short 03b46h ; 75 20 ; 0xf3b24 + mov bl, ah ; 88 e3 ; 0xf3b26 floppy.c:1279 + jmp short 03b46h ; eb 1c ; 0xf3b28 floppy.c:1282 + cmp byte [bp-004h], 04fh ; 80 7e fc 4f ; 0xf3b2a floppy.c:1284 + jne short 03b46h ; 75 16 ; 0xf3b2e + cmp bh, 009h ; 80 ff 09 ; 0xf3b30 floppy.c:1285 + jne short 03b37h ; 75 02 ; 0xf3b33 + jmp short 03b10h ; eb d9 ; 0xf3b35 + cmp bh, 012h ; 80 ff 12 ; 0xf3b37 floppy.c:1286 + jne short 03b3eh ; 75 02 ; 0xf3b3a + jmp short 03b26h ; eb e8 ; 0xf3b3c + cmp bh, 024h ; 80 ff 24 ; 0xf3b3e floppy.c:1288 + jne short 03b46h ; 75 03 ; 0xf3b41 + or bl, 0d0h ; 80 cb d0 ; 0xf3b43 floppy.c:1290 + mov al, bl ; 88 d8 ; 0xf3b46 floppy.c:1299 + xor ah, ah ; 30 e4 ; 0xf3b48 + mov CL, strict byte 004h ; b1 04 ; 0xf3b4a + sar ax, CL ; d3 f8 ; 0xf3b4c + test AL, strict byte 001h ; a8 01 ; 0xf3b4e + jne short 03b55h ; 75 03 ; 0xf3b50 + jmp near 03a56h ; e9 01 ff ; 0xf3b52 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3b55 floppy.c:43 + mov es, ax ; 8e c0 ; 0xf3b58 + mov si, word [bp-00ch] ; 8b 76 f4 ; 0xf3b5a + mov byte [es:si], bl ; 26 88 1c ; 0xf3b5d + mov word [bp+006h], 0f000h ; c7 46 06 00 f0 ; 0xf3b60 floppy.c:1312 + mov al, dl ; 88 d0 ; 0xf3b65 floppy.c:1313 + xor ah, ah ; 30 e4 ; 0xf3b67 + call 03ba8h ; e8 3c 00 ; 0xf3b69 + mov word [bp+008h], ax ; 89 46 08 ; 0xf3b6c + mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf3b6f floppy.c:1316 + mov bx, strict word 00041h ; bb 41 00 ; 0xf3b73 floppy.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3b76 + mov es, ax ; 8e c0 ; 0xf3b79 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf3b7b + jmp near 034dfh ; e9 5d f9 ; 0xf3b7f + mov bx, 00da0h ; bb a0 0d ; 0xf3b82 floppy.c:1322 + mov cx, ds ; 8c d9 ; 0xf3b85 + mov ax, strict word 00004h ; b8 04 00 ; 0xf3b87 + call 018cch ; e8 3f dd ; 0xf3b8a + mov al, byte [bp+017h] ; 8a 46 17 ; 0xf3b8d + xor ah, ah ; 30 e4 ; 0xf3b90 + push ax ; 50 ; 0xf3b92 + mov ax, 00275h ; b8 75 02 ; 0xf3b93 + push ax ; 50 ; 0xf3b96 + mov ax, 002e2h ; b8 e2 02 ; 0xf3b97 + push ax ; 50 ; 0xf3b9a + mov ax, strict word 00004h ; b8 04 00 ; 0xf3b9b + push ax ; 50 ; 0xf3b9e + call 0190fh ; e8 6d dd ; 0xf3b9f + add sp, strict byte 00008h ; 83 c4 08 ; 0xf3ba2 + jmp near 031f1h ; e9 49 f6 ; 0xf3ba5 floppy.c:68 + ; disGetNextSymbol 0xf3ba8 LB 0x63a0 -> off=0x0 cb=0000000000000032 uValue=00000000000f25a8 'get_floppy_dpt' +get_floppy_dpt: ; 0xf3ba8 LB 0x32 + push bx ; 53 ; 0xf3ba8 floppyt.c:94 + push dx ; 52 ; 0xf3ba9 + push bp ; 55 ; 0xf3baa + mov bp, sp ; 89 e5 ; 0xf3bab + mov dl, al ; 88 c2 ; 0xf3bad + xor ax, ax ; 31 c0 ; 0xf3baf floppyt.c:98 + jmp short 03bb9h ; eb 06 ; 0xf3bb1 + inc ax ; 40 ; 0xf3bb3 floppyt.c:100 + cmp ax, strict word 00007h ; 3d 07 00 ; 0xf3bb4 + jnc short 03bd3h ; 73 1a ; 0xf3bb7 + mov bx, ax ; 89 c3 ; 0xf3bb9 + sal bx, 1 ; d1 e3 ; 0xf3bbb + cmp dl, byte [word bx+0005bh] ; 3a 97 5b 00 ; 0xf3bbd + jne short 03bb3h ; 75 f0 ; 0xf3bc1 + mov al, byte [word bx+0005ch] ; 8a 87 5c 00 ; 0xf3bc3 + xor ah, ah ; 30 e4 ; 0xf3bc7 + mov bx, strict word 0000dh ; bb 0d 00 ; 0xf3bc9 + imul bx ; f7 eb ; 0xf3bcc + add ax, strict word 00000h ; 05 00 00 ; 0xf3bce + jmp short 03bd6h ; eb 03 ; 0xf3bd1 + mov ax, strict word 00041h ; b8 41 00 ; 0xf3bd3 floppyt.c:103 + pop bp ; 5d ; 0xf3bd6 floppyt.c:104 + pop dx ; 5a ; 0xf3bd7 + pop bx ; 5b ; 0xf3bd8 + retn ; c3 ; 0xf3bd9 + ; disGetNextSymbol 0xf3bda LB 0x636e -> off=0x0 cb=0000000000000007 uValue=00000000000f25da 'dummy_soft_reset' +dummy_soft_reset: ; 0xf3bda LB 0x7 + push bp ; 55 ; 0xf3bda eltorito.c:126 + mov bp, sp ; 89 e5 ; 0xf3bdb + xor ax, ax ; 31 c0 ; 0xf3bdd eltorito.c:129 + pop bp ; 5d ; 0xf3bdf + retn ; c3 ; 0xf3be0 + ; disGetNextSymbol 0xf3be1 LB 0x6367 -> off=0x0 cb=0000000000000017 uValue=00000000000f25e1 'cdemu_init' +cdemu_init: ; 0xf3be1 LB 0x17 + push bp ; 55 ; 0xf3be1 eltorito.c:155 + mov bp, sp ; 89 e5 ; 0xf3be2 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3be4 eltorito.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3be7 + mov es, ax ; 8e c0 ; 0xf3bea + mov es, [es:bx] ; 26 8e 07 ; 0xf3bec + mov bx, 00366h ; bb 66 03 ; 0xf3bef eltorito.c:43 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf3bf2 + pop bp ; 5d ; 0xf3bf6 eltorito.c:162 + retn ; c3 ; 0xf3bf7 + ; disGetNextSymbol 0xf3bf8 LB 0x6350 -> off=0x0 cb=0000000000000016 uValue=00000000000f25f8 'cdemu_isactive' +cdemu_isactive: ; 0xf3bf8 LB 0x16 + push bp ; 55 ; 0xf3bf8 eltorito.c:164 + mov bp, sp ; 89 e5 ; 0xf3bf9 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3bfb eltorito.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3bfe + mov es, ax ; 8e c0 ; 0xf3c01 + mov es, [es:bx] ; 26 8e 07 ; 0xf3c03 + mov bx, 00366h ; bb 66 03 ; 0xf3c06 eltorito.c:38 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf3c09 + pop bp ; 5d ; 0xf3c0c eltorito.c:170 + retn ; c3 ; 0xf3c0d + ; disGetNextSymbol 0xf3c0e LB 0x633a -> off=0x0 cb=0000000000000016 uValue=00000000000f260e 'cdemu_emulated_drive' +cdemu_emulated_drive: ; 0xf3c0e LB 0x16 + push bp ; 55 ; 0xf3c0e eltorito.c:172 + mov bp, sp ; 89 e5 ; 0xf3c0f + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3c11 eltorito.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3c14 + mov es, ax ; 8e c0 ; 0xf3c17 + mov es, [es:bx] ; 26 8e 07 ; 0xf3c19 + mov bx, 00368h ; bb 68 03 ; 0xf3c1c eltorito.c:38 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf3c1f + pop bp ; 5d ; 0xf3c22 eltorito.c:178 + retn ; c3 ; 0xf3c23 + ; disGetNextSymbol 0xf3c24 LB 0x6324 -> off=0x0 cb=0000000000000180 uValue=00000000000f2624 'int13_eltorito' +int13_eltorito: ; 0xf3c24 LB 0x180 + push bp ; 55 ; 0xf3c24 eltorito.c:184 + mov bp, sp ; 89 e5 ; 0xf3c25 + push si ; 56 ; 0xf3c27 + push di ; 57 ; 0xf3c28 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3c29 eltorito.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3c2c + mov es, ax ; 8e c0 ; 0xf3c2f + mov di, word [es:bx] ; 26 8b 3f ; 0xf3c31 + mov bx, 00366h ; bb 66 03 ; 0xf3c34 eltorito.c:190 + mov al, byte [bp+017h] ; 8a 46 17 ; 0xf3c37 eltorito.c:196 + xor ah, ah ; 30 e4 ; 0xf3c3a + cmp ax, strict word 0004bh ; 3d 4b 00 ; 0xf3c3c + jc short 03c4bh ; 72 0a ; 0xf3c3f + jbe short 03c76h ; 76 33 ; 0xf3c41 + cmp ax, strict word 0004dh ; 3d 4d 00 ; 0xf3c43 + jbe short 03c50h ; 76 08 ; 0xf3c46 + jmp near 03d68h ; e9 1d 01 ; 0xf3c48 + cmp ax, strict word 0004ah ; 3d 4a 00 ; 0xf3c4b + jne short 03c73h ; 75 23 ; 0xf3c4e + mov bx, 00da0h ; bb a0 0d ; 0xf3c50 eltorito.c:202 + mov cx, ds ; 8c d9 ; 0xf3c53 + mov ax, strict word 00004h ; b8 04 00 ; 0xf3c55 + call 018cch ; e8 71 dc ; 0xf3c58 + push word [bp+016h] ; ff 76 16 ; 0xf3c5b + mov ax, 002fch ; b8 fc 02 ; 0xf3c5e + push ax ; 50 ; 0xf3c61 + mov ax, 0030bh ; b8 0b 03 ; 0xf3c62 + push ax ; 50 ; 0xf3c65 + mov ax, strict word 00004h ; b8 04 00 ; 0xf3c66 + push ax ; 50 ; 0xf3c69 + call 0190fh ; e8 a2 dc ; 0xf3c6a + add sp, strict byte 00008h ; 83 c4 08 ; 0xf3c6d + jmp near 03d83h ; e9 10 01 ; 0xf3c70 eltorito.c:203 + jmp near 03d68h ; e9 f2 00 ; 0xf3c73 + mov es, [bp+004h] ; 8e 46 04 ; 0xf3c76 eltorito.c:41 + mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3c79 + mov byte [es:si], 013h ; 26 c6 04 13 ; 0xf3c7c + inc si ; 46 ; 0xf3c80 eltorito.c:210 + mov ax, es ; 8c c0 ; 0xf3c81 eltorito.c:41 + mov es, di ; 8e c7 ; 0xf3c83 + mov dl, byte [es:bx+001h] ; 26 8a 57 01 ; 0xf3c85 + mov es, ax ; 8e c0 ; 0xf3c89 eltorito.c:43 + mov byte [es:si], dl ; 26 88 14 ; 0xf3c8b + mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3c8e eltorito.c:211 + inc si ; 46 ; 0xf3c91 + inc si ; 46 ; 0xf3c92 + mov es, di ; 8e c7 ; 0xf3c93 eltorito.c:41 + mov dl, byte [es:bx+002h] ; 26 8a 57 02 ; 0xf3c95 + mov es, ax ; 8e c0 ; 0xf3c99 eltorito.c:43 + mov byte [es:si], dl ; 26 88 14 ; 0xf3c9b + mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3c9e eltorito.c:212 + add si, strict byte 00003h ; 83 c6 03 ; 0xf3ca1 + mov es, di ; 8e c7 ; 0xf3ca4 eltorito.c:41 + mov dl, byte [es:bx+003h] ; 26 8a 57 03 ; 0xf3ca6 + mov es, ax ; 8e c0 ; 0xf3caa eltorito.c:43 + mov byte [es:si], dl ; 26 88 14 ; 0xf3cac + mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3caf eltorito.c:213 + add si, strict byte 00004h ; 83 c6 04 ; 0xf3cb2 + mov es, di ; 8e c7 ; 0xf3cb5 eltorito.c:61 + mov dx, word [es:bx+008h] ; 26 8b 57 08 ; 0xf3cb7 + mov cx, word [es:bx+00ah] ; 26 8b 4f 0a ; 0xf3cbb + mov es, ax ; 8e c0 ; 0xf3cbf eltorito.c:63 + mov word [es:si], dx ; 26 89 14 ; 0xf3cc1 + mov word [es:si+002h], cx ; 26 89 4c 02 ; 0xf3cc4 + mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3cc8 eltorito.c:214 + add si, strict byte 00008h ; 83 c6 08 ; 0xf3ccb + mov es, di ; 8e c7 ; 0xf3cce eltorito.c:51 + mov dx, word [es:bx+004h] ; 26 8b 57 04 ; 0xf3cd0 + mov es, ax ; 8e c0 ; 0xf3cd4 eltorito.c:53 + mov word [es:si], dx ; 26 89 14 ; 0xf3cd6 + mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3cd9 eltorito.c:215 + add si, strict byte 0000ah ; 83 c6 0a ; 0xf3cdc + mov es, di ; 8e c7 ; 0xf3cdf eltorito.c:51 + mov dx, word [es:bx+006h] ; 26 8b 57 06 ; 0xf3ce1 + mov es, ax ; 8e c0 ; 0xf3ce5 eltorito.c:53 + mov word [es:si], dx ; 26 89 14 ; 0xf3ce7 + mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3cea eltorito.c:216 + add si, strict byte 0000ch ; 83 c6 0c ; 0xf3ced + mov es, di ; 8e c7 ; 0xf3cf0 eltorito.c:51 + mov dx, word [es:bx+00ch] ; 26 8b 57 0c ; 0xf3cf2 + mov es, ax ; 8e c0 ; 0xf3cf6 eltorito.c:53 + mov word [es:si], dx ; 26 89 14 ; 0xf3cf8 + mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3cfb eltorito.c:217 + add si, strict byte 0000eh ; 83 c6 0e ; 0xf3cfe + mov es, di ; 8e c7 ; 0xf3d01 eltorito.c:51 + mov dx, word [es:bx+00eh] ; 26 8b 57 0e ; 0xf3d03 + mov es, ax ; 8e c0 ; 0xf3d07 eltorito.c:53 + mov word [es:si], dx ; 26 89 14 ; 0xf3d09 + mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3d0c eltorito.c:218 + add si, strict byte 00010h ; 83 c6 10 ; 0xf3d0f + mov es, di ; 8e c7 ; 0xf3d12 eltorito.c:41 + mov dl, byte [es:bx+012h] ; 26 8a 57 12 ; 0xf3d14 + mov es, ax ; 8e c0 ; 0xf3d18 eltorito.c:43 + mov byte [es:si], dl ; 26 88 14 ; 0xf3d1a + mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3d1d eltorito.c:219 + add si, strict byte 00011h ; 83 c6 11 ; 0xf3d20 + mov dx, ax ; 89 c2 ; 0xf3d23 eltorito.c:41 + mov es, di ; 8e c7 ; 0xf3d25 + mov al, byte [es:bx+014h] ; 26 8a 47 14 ; 0xf3d27 + mov es, dx ; 8e c2 ; 0xf3d2b eltorito.c:43 + mov byte [es:si], al ; 26 88 04 ; 0xf3d2d + mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3d30 eltorito.c:220 + add si, strict byte 00012h ; 83 c6 12 ; 0xf3d33 + mov es, di ; 8e c7 ; 0xf3d36 eltorito.c:41 + mov al, byte [es:bx+010h] ; 26 8a 47 10 ; 0xf3d38 + mov es, dx ; 8e c2 ; 0xf3d3c eltorito.c:43 + mov byte [es:si], al ; 26 88 04 ; 0xf3d3e + test byte [bp+016h], 0ffh ; f6 46 16 ff ; 0xf3d41 eltorito.c:223 + jne short 03d4dh ; 75 06 ; 0xf3d45 + mov es, di ; 8e c7 ; 0xf3d47 eltorito.c:225 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf3d49 + mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf3d4d eltorito.c:228 + mov bx, strict word 00074h ; bb 74 00 ; 0xf3d51 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3d54 + mov es, ax ; 8e c0 ; 0xf3d57 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf3d59 + and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf3d5d + lea sp, [bp-004h] ; 8d 66 fc ; 0xf3d61 + pop di ; 5f ; 0xf3d64 + pop si ; 5e ; 0xf3d65 + pop bp ; 5d ; 0xf3d66 + retn ; c3 ; 0xf3d67 + mov bx, 00da0h ; bb a0 0d ; 0xf3d68 eltorito.c:232 + mov cx, ds ; 8c d9 ; 0xf3d6b + mov ax, strict word 00004h ; b8 04 00 ; 0xf3d6d + call 018cch ; e8 59 db ; 0xf3d70 + mov al, byte [bp+017h] ; 8a 46 17 ; 0xf3d73 + xor ah, ah ; 30 e4 ; 0xf3d76 + push ax ; 50 ; 0xf3d78 + mov ax, 002fch ; b8 fc 02 ; 0xf3d79 + push ax ; 50 ; 0xf3d7c + mov ax, 00333h ; b8 33 03 ; 0xf3d7d + jmp near 03c65h ; e9 e2 fe ; 0xf3d80 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3d83 eltorito.c:238 + xor ah, ah ; 30 e4 ; 0xf3d86 + or ah, 001h ; 80 cc 01 ; 0xf3d88 + mov word [bp+016h], ax ; 89 46 16 ; 0xf3d8b + mov al, byte [bp+017h] ; 8a 46 17 ; 0xf3d8e eltorito.c:239 + xor ah, ah ; 30 e4 ; 0xf3d91 + mov bx, strict word 00074h ; bb 74 00 ; 0xf3d93 eltorito.c:43 + mov dx, strict word 00040h ; ba 40 00 ; 0xf3d96 + mov es, dx ; 8e c2 ; 0xf3d99 + mov byte [es:bx], al ; 26 88 07 ; 0xf3d9b + or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf3d9e eltorito.c:240 + jmp short 03d61h ; eb bd ; 0xf3da2 eltorito.c:241 + ; disGetNextSymbol 0xf3da4 LB 0x61a4 -> off=0x0 cb=0000000000000035 uValue=00000000000f27a4 'device_is_cdrom' +device_is_cdrom: ; 0xf3da4 LB 0x35 + push bx ; 53 ; 0xf3da4 eltorito.c:256 + push dx ; 52 ; 0xf3da5 + push bp ; 55 ; 0xf3da6 + mov bp, sp ; 89 e5 ; 0xf3da7 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3da9 eltorito.c:48 + mov dx, strict word 00040h ; ba 40 00 ; 0xf3dac + mov es, dx ; 8e c2 ; 0xf3daf + mov bx, word [es:bx] ; 26 8b 1f ; 0xf3db1 + cmp AL, strict byte 010h ; 3c 10 ; 0xf3db4 eltorito.c:262 + jc short 03dbch ; 72 04 ; 0xf3db6 + xor ax, ax ; 31 c0 ; 0xf3db8 eltorito.c:263 + jmp short 03dd5h ; eb 19 ; 0xf3dba + xor ah, ah ; 30 e4 ; 0xf3dbc eltorito.c:268 + mov dx, strict word 0001ch ; ba 1c 00 ; 0xf3dbe + imul dx ; f7 ea ; 0xf3dc1 + mov es, bx ; 8e c3 ; 0xf3dc3 + mov bx, ax ; 89 c3 ; 0xf3dc5 + add bx, 00122h ; 81 c3 22 01 ; 0xf3dc7 + cmp byte [es:bx+023h], 005h ; 26 80 7f 23 05 ; 0xf3dcb + jne short 03db8h ; 75 e6 ; 0xf3dd0 + mov ax, strict word 00001h ; b8 01 00 ; 0xf3dd2 eltorito.c:269 + pop bp ; 5d ; 0xf3dd5 eltorito.c:272 + pop dx ; 5a ; 0xf3dd6 + pop bx ; 5b ; 0xf3dd7 + retn ; c3 ; 0xf3dd8 + ; disGetNextSymbol 0xf3dd9 LB 0x616f -> off=0x0 cb=00000000000003ca uValue=00000000000f27d9 'cdrom_boot' +cdrom_boot: ; 0xf3dd9 LB 0x3ca + push bp ; 55 ; 0xf3dd9 eltorito.c:282 + mov bp, sp ; 89 e5 ; 0xf3dda + push bx ; 53 ; 0xf3ddc + push cx ; 51 ; 0xf3ddd + push dx ; 52 ; 0xf3dde + push si ; 56 ; 0xf3ddf + push di ; 57 ; 0xf3de0 + sub sp, 0081ch ; 81 ec 1c 08 ; 0xf3de1 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3de5 eltorito.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf3de8 + mov es, ax ; 8e c0 ; 0xf3deb + mov ax, word [es:bx] ; 26 8b 07 ; 0xf3ded + mov word [bp-012h], ax ; 89 46 ee ; 0xf3df0 eltorito.c:49 + mov si, 00366h ; be 66 03 ; 0xf3df3 eltorito.c:295 + mov word [bp-014h], ax ; 89 46 ec ; 0xf3df6 + mov word [bp-018h], 00122h ; c7 46 e8 22 01 ; 0xf3df9 eltorito.c:296 + mov word [bp-016h], ax ; 89 46 ea ; 0xf3dfe + mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf3e01 eltorito.c:299 + jmp short 03e10h ; eb 09 ; 0xf3e05 + inc byte [bp-00ch] ; fe 46 f4 ; 0xf3e07 eltorito.c:302 + cmp byte [bp-00ch], 010h ; 80 7e f4 10 ; 0xf3e0a + jnc short 03e1ch ; 73 0c ; 0xf3e0e + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf3e10 + xor ah, ah ; 30 e4 ; 0xf3e13 + call 03da4h ; e8 8c ff ; 0xf3e15 + test ax, ax ; 85 c0 ; 0xf3e18 + je short 03e07h ; 74 eb ; 0xf3e1a + cmp byte [bp-00ch], 010h ; 80 7e f4 10 ; 0xf3e1c eltorito.c:305 + jc short 03e28h ; 72 06 ; 0xf3e20 + mov ax, strict word 00002h ; b8 02 00 ; 0xf3e22 eltorito.c:306 + jmp near 04199h ; e9 71 03 ; 0xf3e25 + mov cx, strict word 0000ch ; b9 0c 00 ; 0xf3e28 eltorito.c:309 + xor bx, bx ; 31 db ; 0xf3e2b + mov dx, ss ; 8c d2 ; 0xf3e2d + lea ax, [bp-026h] ; 8d 46 da ; 0xf3e2f + call 09c30h ; e8 fb 5d ; 0xf3e32 + mov word [bp-026h], strict word 00028h ; c7 46 da 28 00 ; 0xf3e35 eltorito.c:310 + mov ax, strict word 00011h ; b8 11 00 ; 0xf3e3a eltorito.c:311 + xor dx, dx ; 31 d2 ; 0xf3e3d + xchg ah, al ; 86 c4 ; 0xf3e3f + xchg dh, dl ; 86 d6 ; 0xf3e41 + xchg dx, ax ; 92 ; 0xf3e43 + mov word [bp-024h], ax ; 89 46 dc ; 0xf3e44 + mov word [bp-022h], dx ; 89 56 de ; 0xf3e47 + mov ax, strict word 00001h ; b8 01 00 ; 0xf3e4a eltorito.c:312 + xchg ah, al ; 86 c4 ; 0xf3e4d + mov word [bp-01fh], ax ; 89 46 e1 ; 0xf3e4f + les bx, [bp-018h] ; c4 5e e8 ; 0xf3e52 eltorito.c:314 + mov word [es:bx+00eh], strict word 00001h ; 26 c7 47 0e 01 00 ; 0xf3e55 + mov word [es:bx+010h], 00800h ; 26 c7 47 10 00 08 ; 0xf3e5b eltorito.c:315 + mov byte [bp-00eh], 000h ; c6 46 f2 00 ; 0xf3e61 eltorito.c:317 + jmp short 03e70h ; eb 09 ; 0xf3e65 + inc byte [bp-00eh] ; fe 46 f2 ; 0xf3e67 eltorito.c:322 + cmp byte [bp-00eh], 004h ; 80 7e f2 04 ; 0xf3e6a + jnbe short 03eb2h ; 77 42 ; 0xf3e6e + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf3e70 + xor ah, ah ; 30 e4 ; 0xf3e73 + mov dx, strict word 0001ch ; ba 1c 00 ; 0xf3e75 + imul dx ; f7 ea ; 0xf3e78 + les bx, [bp-018h] ; c4 5e e8 ; 0xf3e7a + add bx, ax ; 01 c3 ; 0xf3e7d + mov al, byte [es:bx+022h] ; 26 8a 47 22 ; 0xf3e7f + xor ah, ah ; 30 e4 ; 0xf3e83 + mov di, ax ; 89 c7 ; 0xf3e85 + sal di, 1 ; d1 e7 ; 0xf3e87 + lea dx, [bp-00826h] ; 8d 96 da f7 ; 0xf3e89 + push SS ; 16 ; 0xf3e8d + push dx ; 52 ; 0xf3e8e + mov ax, strict word 00001h ; b8 01 00 ; 0xf3e8f + push ax ; 50 ; 0xf3e92 + xor ax, ax ; 31 c0 ; 0xf3e93 + push ax ; 50 ; 0xf3e95 + mov ax, 00800h ; b8 00 08 ; 0xf3e96 + push ax ; 50 ; 0xf3e99 + xor ax, ax ; 31 c0 ; 0xf3e9a + push ax ; 50 ; 0xf3e9c + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf3e9d + xor ah, ah ; 30 e4 ; 0xf3ea0 + mov cx, ss ; 8c d1 ; 0xf3ea2 + lea bx, [bp-026h] ; 8d 5e da ; 0xf3ea4 + mov dx, strict word 0000ch ; ba 0c 00 ; 0xf3ea7 + call word [word di+0006ah] ; ff 95 6a 00 ; 0xf3eaa + test ax, ax ; 85 c0 ; 0xf3eae + jne short 03e67h ; 75 b5 ; 0xf3eb0 + test ax, ax ; 85 c0 ; 0xf3eb2 eltorito.c:323 + je short 03ebch ; 74 06 ; 0xf3eb4 + mov ax, strict word 00003h ; b8 03 00 ; 0xf3eb6 eltorito.c:324 + jmp near 04199h ; e9 dd 02 ; 0xf3eb9 + cmp byte [bp-00826h], 000h ; 80 be da f7 00 ; 0xf3ebc eltorito.c:327 + je short 03ec9h ; 74 06 ; 0xf3ec1 + mov ax, strict word 00004h ; b8 04 00 ; 0xf3ec3 eltorito.c:328 + jmp near 04199h ; e9 d0 02 ; 0xf3ec6 + xor di, di ; 31 ff ; 0xf3ec9 eltorito.c:330 + jmp short 03ed3h ; eb 06 ; 0xf3ecb + inc di ; 47 ; 0xf3ecd eltorito.c:332 + cmp di, strict byte 00005h ; 83 ff 05 ; 0xf3ece + jnc short 03ee3h ; 73 10 ; 0xf3ed1 + mov al, byte [bp+di-00825h] ; 8a 83 db f7 ; 0xf3ed3 + cmp al, byte [di+00da8h] ; 3a 85 a8 0d ; 0xf3ed7 + je short 03ecdh ; 74 f0 ; 0xf3edb + mov ax, strict word 00005h ; b8 05 00 ; 0xf3edd + jmp near 04199h ; e9 b6 02 ; 0xf3ee0 + xor di, di ; 31 ff ; 0xf3ee3 eltorito.c:334 + jmp short 03eedh ; eb 06 ; 0xf3ee5 + inc di ; 47 ; 0xf3ee7 eltorito.c:336 + cmp di, strict byte 00017h ; 83 ff 17 ; 0xf3ee8 + jnc short 03efdh ; 73 10 ; 0xf3eeb + mov al, byte [bp+di-0081fh] ; 8a 83 e1 f7 ; 0xf3eed + cmp al, byte [di+00daeh] ; 3a 85 ae 0d ; 0xf3ef1 + je short 03ee7h ; 74 f0 ; 0xf3ef5 + mov ax, strict word 00006h ; b8 06 00 ; 0xf3ef7 + jmp near 04199h ; e9 9c 02 ; 0xf3efa + mov ax, word [bp-007dfh] ; 8b 86 21 f8 ; 0xf3efd eltorito.c:339 + mov dx, word [bp-007ddh] ; 8b 96 23 f8 ; 0xf3f01 + mov word [bp-026h], strict word 00028h ; c7 46 da 28 00 ; 0xf3f05 eltorito.c:343 + xchg ah, al ; 86 c4 ; 0xf3f0a eltorito.c:344 + xchg dh, dl ; 86 d6 ; 0xf3f0c + xchg dx, ax ; 92 ; 0xf3f0e + mov word [bp-024h], ax ; 89 46 dc ; 0xf3f0f + mov word [bp-022h], dx ; 89 56 de ; 0xf3f12 + mov ax, strict word 00001h ; b8 01 00 ; 0xf3f15 eltorito.c:345 + xchg ah, al ; 86 c4 ; 0xf3f18 + mov word [bp-01fh], ax ; 89 46 e1 ; 0xf3f1a + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf3f1d eltorito.c:352 + xor ah, ah ; 30 e4 ; 0xf3f20 + mov dx, strict word 0001ch ; ba 1c 00 ; 0xf3f22 + imul dx ; f7 ea ; 0xf3f25 + les bx, [bp-018h] ; c4 5e e8 ; 0xf3f27 + add bx, ax ; 01 c3 ; 0xf3f2a + mov al, byte [es:bx+022h] ; 26 8a 47 22 ; 0xf3f2c + xor ah, ah ; 30 e4 ; 0xf3f30 + mov di, ax ; 89 c7 ; 0xf3f32 + sal di, 1 ; d1 e7 ; 0xf3f34 + lea dx, [bp-00826h] ; 8d 96 da f7 ; 0xf3f36 + push SS ; 16 ; 0xf3f3a + push dx ; 52 ; 0xf3f3b + mov ax, strict word 00001h ; b8 01 00 ; 0xf3f3c + push ax ; 50 ; 0xf3f3f + xor ax, ax ; 31 c0 ; 0xf3f40 + push ax ; 50 ; 0xf3f42 + mov ax, 00800h ; b8 00 08 ; 0xf3f43 + push ax ; 50 ; 0xf3f46 + xor ax, ax ; 31 c0 ; 0xf3f47 + push ax ; 50 ; 0xf3f49 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf3f4a + xor ah, ah ; 30 e4 ; 0xf3f4d + mov cx, ss ; 8c d1 ; 0xf3f4f + lea bx, [bp-026h] ; 8d 5e da ; 0xf3f51 + mov dx, strict word 0000ch ; ba 0c 00 ; 0xf3f54 + call word [word di+0006ah] ; ff 95 6a 00 ; 0xf3f57 + test ax, ax ; 85 c0 ; 0xf3f5b eltorito.c:353 + je short 03f65h ; 74 06 ; 0xf3f5d + mov ax, strict word 00007h ; b8 07 00 ; 0xf3f5f eltorito.c:354 + jmp near 04199h ; e9 34 02 ; 0xf3f62 + cmp byte [bp-00826h], 001h ; 80 be da f7 01 ; 0xf3f65 eltorito.c:359 + je short 03f72h ; 74 06 ; 0xf3f6a + mov ax, strict word 00008h ; b8 08 00 ; 0xf3f6c eltorito.c:360 + jmp near 04199h ; e9 27 02 ; 0xf3f6f + cmp byte [bp-00825h], 000h ; 80 be db f7 00 ; 0xf3f72 eltorito.c:361 + je short 03f7fh ; 74 06 ; 0xf3f77 + mov ax, strict word 00009h ; b8 09 00 ; 0xf3f79 eltorito.c:362 + jmp near 04199h ; e9 1a 02 ; 0xf3f7c + cmp byte [bp-00808h], 055h ; 80 be f8 f7 55 ; 0xf3f7f eltorito.c:363 + je short 03f8ch ; 74 06 ; 0xf3f84 + mov ax, strict word 0000ah ; b8 0a 00 ; 0xf3f86 eltorito.c:364 + jmp near 04199h ; e9 0d 02 ; 0xf3f89 + cmp byte [bp-00807h], 0aah ; 80 be f9 f7 aa ; 0xf3f8c eltorito.c:365 + jne short 03f86h ; 75 f3 ; 0xf3f91 + cmp byte [bp-00806h], 088h ; 80 be fa f7 88 ; 0xf3f93 eltorito.c:366 + je short 03fa0h ; 74 06 ; 0xf3f98 + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf3f9a eltorito.c:370 + jmp near 04199h ; e9 f9 01 ; 0xf3f9d + mov al, byte [bp-00805h] ; 8a 86 fb f7 ; 0xf3fa0 eltorito.c:372 + mov es, [bp-014h] ; 8e 46 ec ; 0xf3fa4 + mov byte [es:si+001h], al ; 26 88 44 01 ; 0xf3fa7 + cmp byte [bp-00805h], 000h ; 80 be fb f7 00 ; 0xf3fab eltorito.c:373 + jne short 03fb9h ; 75 07 ; 0xf3fb0 + mov byte [es:si+002h], 0e0h ; 26 c6 44 02 e0 ; 0xf3fb2 eltorito.c:376 + jmp short 03fcch ; eb 13 ; 0xf3fb7 eltorito.c:378 + cmp byte [bp-00805h], 004h ; 80 be fb f7 04 ; 0xf3fb9 + jnc short 03fc7h ; 73 07 ; 0xf3fbe + mov byte [es:si+002h], 000h ; 26 c6 44 02 00 ; 0xf3fc0 eltorito.c:379 + jmp short 03fcch ; eb 05 ; 0xf3fc5 eltorito.c:380 + mov byte [es:si+002h], 080h ; 26 c6 44 02 80 ; 0xf3fc7 eltorito.c:381 + mov bl, byte [bp-00ch] ; 8a 5e f4 ; 0xf3fcc eltorito.c:383 + xor bh, bh ; 30 ff ; 0xf3fcf + mov ax, bx ; 89 d8 ; 0xf3fd1 + cwd ; 99 ; 0xf3fd3 + db 02bh, 0c2h + ; sub ax, dx ; 2b c2 ; 0xf3fd4 + sar ax, 1 ; d1 f8 ; 0xf3fd6 + mov es, [bp-014h] ; 8e 46 ec ; 0xf3fd8 + mov byte [es:si+003h], al ; 26 88 44 03 ; 0xf3fdb + mov ax, bx ; 89 d8 ; 0xf3fdf eltorito.c:384 + cwd ; 99 ; 0xf3fe1 + mov bx, strict word 00002h ; bb 02 00 ; 0xf3fe2 + idiv bx ; f7 fb ; 0xf3fe5 + mov word [es:si+004h], dx ; 26 89 54 04 ; 0xf3fe7 + mov ax, word [bp-00804h] ; 8b 86 fc f7 ; 0xf3feb eltorito.c:386 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf3fef + test ax, ax ; 85 c0 ; 0xf3ff2 eltorito.c:387 + jne short 03ffbh ; 75 05 ; 0xf3ff4 + mov word [bp-010h], 007c0h ; c7 46 f0 c0 07 ; 0xf3ff6 eltorito.c:388 + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf3ffb eltorito.c:390 + mov es, [bp-014h] ; 8e 46 ec ; 0xf3ffe + mov word [es:si+00ch], ax ; 26 89 44 0c ; 0xf4001 + mov word [es:si+006h], strict word 00000h ; 26 c7 44 06 00 00 ; 0xf4005 eltorito.c:391 + mov bx, word [bp-00800h] ; 8b 9e 00 f8 ; 0xf400b eltorito.c:393 + mov word [es:si+00eh], bx ; 26 89 5c 0e ; 0xf400f eltorito.c:394 + test bx, bx ; 85 db ; 0xf4013 eltorito.c:399 + je short 0401dh ; 74 06 ; 0xf4015 + cmp bx, 00400h ; 81 fb 00 04 ; 0xf4017 + jbe short 04023h ; 76 06 ; 0xf401b + mov ax, strict word 0000ch ; b8 0c 00 ; 0xf401d eltorito.c:400 + jmp near 04199h ; e9 76 01 ; 0xf4020 + mov ax, word [bp-007feh] ; 8b 86 02 f8 ; 0xf4023 eltorito.c:402 + mov dx, word [bp-007fch] ; 8b 96 04 f8 ; 0xf4027 + mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf402b eltorito.c:403 + mov word [es:si+00ah], dx ; 26 89 54 0a ; 0xf402f + mov word [bp-026h], strict word 00028h ; c7 46 da 28 00 ; 0xf4033 eltorito.c:409 + xchg ah, al ; 86 c4 ; 0xf4038 eltorito.c:410 + xchg dh, dl ; 86 d6 ; 0xf403a + xchg dx, ax ; 92 ; 0xf403c + mov word [bp-024h], ax ; 89 46 dc ; 0xf403d + mov word [bp-022h], dx ; 89 56 de ; 0xf4040 + lea dx, [bx-001h] ; 8d 57 ff ; 0xf4043 eltorito.c:411 + shr dx, 1 ; d1 ea ; 0xf4046 + shr dx, 1 ; d1 ea ; 0xf4048 + inc dx ; 42 ; 0xf404a + mov ax, dx ; 89 d0 ; 0xf404b + xchg ah, al ; 86 c4 ; 0xf404d + mov word [bp-01fh], ax ; 89 46 e1 ; 0xf404f + les di, [bp-018h] ; c4 7e e8 ; 0xf4052 eltorito.c:413 + mov word [es:di+00eh], dx ; 26 89 55 0e ; 0xf4055 + mov word [es:di+010h], 00200h ; 26 c7 45 10 00 02 ; 0xf4059 eltorito.c:414 + mov CL, strict byte 009h ; b1 09 ; 0xf405f eltorito.c:416 + mov ax, bx ; 89 d8 ; 0xf4061 + sal ax, CL ; d3 e0 ; 0xf4063 + mov dx, 00800h ; ba 00 08 ; 0xf4065 + sub dx, ax ; 29 c2 ; 0xf4068 + mov ax, dx ; 89 d0 ; 0xf406a + and ah, 007h ; 80 e4 07 ; 0xf406c + mov word [es:di+020h], ax ; 26 89 45 20 ; 0xf406f + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf4073 eltorito.c:418 + xor ah, ah ; 30 e4 ; 0xf4076 + mov dx, strict word 0001ch ; ba 1c 00 ; 0xf4078 + imul dx ; f7 ea ; 0xf407b + add di, ax ; 01 c7 ; 0xf407d + mov al, byte [es:di+022h] ; 26 8a 45 22 ; 0xf407f + xor ah, ah ; 30 e4 ; 0xf4083 + sal ax, 1 ; d1 e0 ; 0xf4085 + mov word [bp-01ah], ax ; 89 46 e6 ; 0xf4087 + push word [bp-010h] ; ff 76 f0 ; 0xf408a + xor ax, ax ; 31 c0 ; 0xf408d + push ax ; 50 ; 0xf408f + mov ax, strict word 00001h ; b8 01 00 ; 0xf4090 + push ax ; 50 ; 0xf4093 + mov ax, bx ; 89 d8 ; 0xf4094 + xor di, di ; 31 ff ; 0xf4096 + mov cx, strict word 00009h ; b9 09 00 ; 0xf4098 + sal ax, 1 ; d1 e0 ; 0xf409b + rcl di, 1 ; d1 d7 ; 0xf409d + loop 0409bh ; e2 fa ; 0xf409f + push di ; 57 ; 0xf40a1 + push ax ; 50 ; 0xf40a2 + xor ax, ax ; 31 c0 ; 0xf40a3 + push ax ; 50 ; 0xf40a5 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf40a6 + xor ah, ah ; 30 e4 ; 0xf40a9 + mov cx, ss ; 8c d1 ; 0xf40ab + lea bx, [bp-026h] ; 8d 5e da ; 0xf40ad + mov dx, strict word 0000ch ; ba 0c 00 ; 0xf40b0 + mov di, word [bp-01ah] ; 8b 7e e6 ; 0xf40b3 + call word [word di+0006ah] ; ff 95 6a 00 ; 0xf40b6 + les bx, [bp-018h] ; c4 5e e8 ; 0xf40ba eltorito.c:420 + mov word [es:bx+020h], strict word 00000h ; 26 c7 47 20 00 00 ; 0xf40bd + test ax, ax ; 85 c0 ; 0xf40c3 eltorito.c:422 + je short 040cdh ; 74 06 ; 0xf40c5 + mov ax, strict word 0000dh ; b8 0d 00 ; 0xf40c7 eltorito.c:423 + jmp near 04199h ; e9 cc 00 ; 0xf40ca + mov es, [bp-014h] ; 8e 46 ec ; 0xf40cd eltorito.c:428 + mov al, byte [es:si+001h] ; 26 8a 44 01 ; 0xf40d0 + cmp AL, strict byte 002h ; 3c 02 ; 0xf40d4 + jc short 040e4h ; 72 0c ; 0xf40d6 + jbe short 040ffh ; 76 25 ; 0xf40d8 + cmp AL, strict byte 004h ; 3c 04 ; 0xf40da + je short 0410fh ; 74 31 ; 0xf40dc + cmp AL, strict byte 003h ; 3c 03 ; 0xf40de + je short 04107h ; 74 25 ; 0xf40e0 + jmp short 04154h ; eb 70 ; 0xf40e2 + cmp AL, strict byte 001h ; 3c 01 ; 0xf40e4 + jne short 04154h ; 75 6c ; 0xf40e6 + mov es, [bp-014h] ; 8e 46 ec ; 0xf40e8 eltorito.c:430 + mov word [es:si+014h], strict word 0000fh ; 26 c7 44 14 0f 00 ; 0xf40eb + mov word [es:si+012h], strict word 00050h ; 26 c7 44 12 50 00 ; 0xf40f1 eltorito.c:431 + mov word [es:si+010h], strict word 00002h ; 26 c7 44 10 02 00 ; 0xf40f7 eltorito.c:432 + jmp short 04154h ; eb 55 ; 0xf40fd eltorito.c:433 + mov word [es:si+014h], strict word 00012h ; 26 c7 44 14 12 00 ; 0xf40ff eltorito.c:435 + jmp short 040f1h ; eb ea ; 0xf4105 + mov word [es:si+014h], strict word 00024h ; 26 c7 44 14 24 00 ; 0xf4107 eltorito.c:440 + jmp short 040f1h ; eb e2 ; 0xf410d + mov bx, 001c4h ; bb c4 01 ; 0xf410f eltorito.c:38 + mov es, [bp-010h] ; 8e 46 f0 ; 0xf4112 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf4115 + and AL, strict byte 03fh ; 24 3f ; 0xf4118 eltorito.c:39 + xor ah, ah ; 30 e4 ; 0xf411a + mov es, [bp-014h] ; 8e 46 ec ; 0xf411c + mov word [es:si+014h], ax ; 26 89 44 14 ; 0xf411f + mov es, [bp-010h] ; 8e 46 f0 ; 0xf4123 eltorito.c:38 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf4126 + and AL, strict byte 0c0h ; 24 c0 ; 0xf4129 eltorito.c:39 + mov dx, ax ; 89 c2 ; 0xf412b + sal dx, 1 ; d1 e2 ; 0xf412d + sal dx, 1 ; d1 e2 ; 0xf412f + mov bx, 001c5h ; bb c5 01 ; 0xf4131 eltorito.c:38 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf4134 + add ax, dx ; 01 d0 ; 0xf4137 eltorito.c:39 + inc ax ; 40 ; 0xf4139 + mov es, [bp-014h] ; 8e 46 ec ; 0xf413a + mov word [es:si+012h], ax ; 26 89 44 12 ; 0xf413d + mov bx, 001c3h ; bb c3 01 ; 0xf4141 eltorito.c:38 + mov es, [bp-010h] ; 8e 46 f0 ; 0xf4144 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf4147 + xor ah, ah ; 30 e4 ; 0xf414a eltorito.c:39 + inc ax ; 40 ; 0xf414c + mov es, [bp-014h] ; 8e 46 ec ; 0xf414d + mov word [es:si+010h], ax ; 26 89 44 10 ; 0xf4150 + mov es, [bp-014h] ; 8e 46 ec ; 0xf4154 eltorito.c:453 + cmp byte [es:si+001h], 000h ; 26 80 7c 01 00 ; 0xf4157 + je short 04182h ; 74 24 ; 0xf415c + cmp byte [es:si+002h], 000h ; 26 80 7c 02 00 ; 0xf415e eltorito.c:455 + jne short 04174h ; 75 0f ; 0xf4163 + mov bx, strict word 00010h ; bb 10 00 ; 0xf4165 eltorito.c:38 + mov ax, strict word 00040h ; b8 40 00 ; 0xf4168 + mov es, ax ; 8e c0 ; 0xf416b + mov al, byte [es:bx] ; 26 8a 07 ; 0xf416d + or AL, strict byte 041h ; 0c 41 ; 0xf4170 eltorito.c:39 + jmp short 0417fh ; eb 0b ; 0xf4172 eltorito.c:457 + mov bx, 00304h ; bb 04 03 ; 0xf4174 eltorito.c:38 + mov es, [bp-012h] ; 8e 46 ee ; 0xf4177 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf417a + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf417d eltorito.c:39 + mov byte [es:bx], al ; 26 88 07 ; 0xf417f eltorito.c:43 + mov es, [bp-014h] ; 8e 46 ec ; 0xf4182 eltorito.c:462 + cmp byte [es:si+001h], 000h ; 26 80 7c 01 00 ; 0xf4185 + je short 04190h ; 74 04 ; 0xf418a + mov byte [es:si], 001h ; 26 c6 04 01 ; 0xf418c eltorito.c:463 + mov es, [bp-014h] ; 8e 46 ec ; 0xf4190 eltorito.c:466 + mov ah, byte [es:si+002h] ; 26 8a 64 02 ; 0xf4193 + xor al, al ; 30 c0 ; 0xf4197 + lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf4199 eltorito.c:467 + pop di ; 5f ; 0xf419c + pop si ; 5e ; 0xf419d + pop dx ; 5a ; 0xf419e + pop cx ; 59 ; 0xf419f + pop bx ; 5b ; 0xf41a0 + pop bp ; 5d ; 0xf41a1 + retn ; c3 ; 0xf41a2 + ; disGetNextSymbol 0xf41a3 LB 0x5da5 -> off=0x59 cb=00000000000005ff uValue=00000000000f2bfc 'int13_cdemu' + db 050h, 04eh, 049h, 048h, 047h, 046h, 045h, 044h, 043h, 042h, 041h, 018h, 016h, 015h, 014h, 011h + db 010h, 00dh, 00ch, 00bh, 00ah, 009h, 008h, 005h, 004h, 003h, 002h, 001h, 000h, 0dch, 047h, 0a8h + db 042h, 0ddh, 042h, 0fbh, 042h, 0d2h, 042h, 0fbh, 042h, 0d2h, 042h, 014h, 045h, 0f9h, 044h, 0dch + db 047h, 0dch, 047h, 0f9h, 044h, 0f9h, 044h, 0f9h, 044h, 0f9h, 044h, 0f9h, 044h, 0c2h, 045h, 0f9h + db 044h, 0dch, 047h, 0cbh, 045h, 0deh, 045h, 0dch, 047h, 0deh, 045h, 0dch, 047h, 0dch, 047h, 0deh + db 045h, 0a4h, 047h, 0dch, 047h, 0dch, 047h, 0dch, 047h +int13_cdemu: ; 0xf41fc LB 0x5ff + push bp ; 55 ; 0xf41fc eltorito.c:477 + mov bp, sp ; 89 e5 ; 0xf41fd + push si ; 56 ; 0xf41ff + push di ; 57 ; 0xf4200 + sub sp, strict byte 0003ah ; 83 ec 3a ; 0xf4201 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf4204 eltorito.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf4207 + mov es, ax ; 8e c0 ; 0xf420a + mov ax, word [es:bx] ; 26 8b 07 ; 0xf420c + mov dx, 00366h ; ba 66 03 ; 0xf420f eltorito.c:493 + mov cx, ax ; 89 c1 ; 0xf4212 + mov bx, dx ; 89 d3 ; 0xf4214 + mov word [bp-00ah], ax ; 89 46 f6 ; 0xf4216 + mov si, 00122h ; be 22 01 ; 0xf4219 eltorito.c:494 + mov word [bp-008h], ax ; 89 46 f8 ; 0xf421c + mov es, ax ; 8e c0 ; 0xf421f eltorito.c:501 + mov di, dx ; 89 d7 ; 0xf4221 + mov al, byte [es:di+003h] ; 26 8a 45 03 ; 0xf4223 + sal al, 1 ; d0 e0 ; 0xf4227 + mov byte [bp-006h], al ; 88 46 fa ; 0xf4229 + mov al, byte [es:di+004h] ; 26 8a 45 04 ; 0xf422c eltorito.c:502 + add byte [bp-006h], al ; 00 46 fa ; 0xf4230 + mov di, strict word 00074h ; bf 74 00 ; 0xf4233 eltorito.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf4236 + mov es, ax ; 8e c0 ; 0xf4239 + mov byte [es:di], 000h ; 26 c6 05 00 ; 0xf423b + mov es, cx ; 8e c1 ; 0xf423f eltorito.c:507 + mov di, dx ; 89 d7 ; 0xf4241 + cmp byte [es:di], 000h ; 26 80 3d 00 ; 0xf4243 + je short 04258h ; 74 0f ; 0xf4247 + mov al, byte [es:di+002h] ; 26 8a 45 02 ; 0xf4249 + xor ah, ah ; 30 e4 ; 0xf424d + mov dx, word [bp+012h] ; 8b 56 12 ; 0xf424f + xor dh, dh ; 30 f6 ; 0xf4252 + cmp ax, dx ; 39 d0 ; 0xf4254 + je short 04282h ; 74 2a ; 0xf4256 + mov bx, 00da0h ; bb a0 0d ; 0xf4258 eltorito.c:508 + mov cx, ds ; 8c d9 ; 0xf425b + mov ax, strict word 00004h ; b8 04 00 ; 0xf425d + call 018cch ; e8 69 d6 ; 0xf4260 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf4263 + xor ah, ah ; 30 e4 ; 0xf4266 + push ax ; 50 ; 0xf4268 + mov al, byte [bp+017h] ; 8a 46 17 ; 0xf4269 + push ax ; 50 ; 0xf426c + mov ax, 0034ch ; b8 4c 03 ; 0xf426d + push ax ; 50 ; 0xf4270 + mov ax, 00358h ; b8 58 03 ; 0xf4271 + push ax ; 50 ; 0xf4274 + mov ax, strict word 00004h ; b8 04 00 ; 0xf4275 + push ax ; 50 ; 0xf4278 + call 0190fh ; e8 93 d6 ; 0xf4279 + add sp, strict byte 0000ah ; 83 c4 0a ; 0xf427c + jmp near 047bah ; e9 38 05 ; 0xf427f eltorito.c:509 + mov al, byte [bp+017h] ; 8a 46 17 ; 0xf4282 eltorito.c:512 + xor ah, ah ; 30 e4 ; 0xf4285 + mov dx, ax ; 89 c2 ; 0xf4287 + cmp ax, strict word 00050h ; 3d 50 00 ; 0xf4289 + jnbe short 042f8h ; 77 6a ; 0xf428c + push CS ; 0e ; 0xf428e + pop ES ; 07 ; 0xf428f + mov cx, strict word 0001eh ; b9 1e 00 ; 0xf4290 + mov di, 041a3h ; bf a3 41 ; 0xf4293 + repne scasb ; f2 ae ; 0xf4296 + sal cx, 1 ; d1 e1 ; 0xf4298 + mov di, cx ; 89 cf ; 0xf429a + mov dx, word [cs:di+041c0h] ; 2e 8b 95 c0 41 ; 0xf429c + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf42a1 + xor ah, ah ; 30 e4 ; 0xf42a4 + jmp dx ; ff e2 ; 0xf42a6 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf42a8 eltorito.c:515 + xor ah, ah ; 30 e4 ; 0xf42ab + mov dx, strict word 0001ch ; ba 1c 00 ; 0xf42ad + imul dx ; f7 ea ; 0xf42b0 + mov es, [bp-008h] ; 8e 46 f8 ; 0xf42b2 + add si, ax ; 01 c6 ; 0xf42b5 + mov bl, byte [es:si+022h] ; 26 8a 5c 22 ; 0xf42b7 + xor bh, bh ; 30 ff ; 0xf42bb + sal bx, 1 ; d1 e3 ; 0xf42bd + cmp word [word bx+0006ah], strict byte 00000h ; 83 bf 6a 00 00 ; 0xf42bf + je short 042cfh ; 74 09 ; 0xf42c4 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf42c6 eltorito.c:517 + xor ah, ah ; 30 e4 ; 0xf42c9 + call word [word bx+00076h] ; ff 97 76 00 ; 0xf42cb + jmp near 044f9h ; e9 27 02 ; 0xf42cf eltorito.c:519 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf42d2 eltorito.c:535 + xor ah, ah ; 30 e4 ; 0xf42d5 + or ah, 003h ; 80 cc 03 ; 0xf42d7 + jmp near 047c2h ; e9 e5 04 ; 0xf42da eltorito.c:536 + mov bx, strict word 00074h ; bb 74 00 ; 0xf42dd eltorito.c:38 + mov dx, strict word 00040h ; ba 40 00 ; 0xf42e0 + mov es, dx ; 8e c2 ; 0xf42e3 + mov cl, byte [es:bx] ; 26 8a 0f ; 0xf42e5 + mov ah, cl ; 88 cc ; 0xf42e8 eltorito.c:541 + mov word [bp+016h], ax ; 89 46 16 ; 0xf42ea + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf42ed eltorito.c:43 + test cl, cl ; 84 c9 ; 0xf42f1 eltorito.c:545 + je short 0435ch ; 74 67 ; 0xf42f3 + jmp near 047d5h ; e9 dd 04 ; 0xf42f5 eltorito.c:546 + jmp near 047dch ; e9 e1 04 ; 0xf42f8 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf42fb eltorito.c:553 + mov ax, word [es:bx+014h] ; 26 8b 47 14 ; 0xf42fe + mov word [bp-028h], ax ; 89 46 d8 ; 0xf4302 + mov dx, word [es:bx+012h] ; 26 8b 57 12 ; 0xf4305 eltorito.c:554 + mov ax, word [es:bx+010h] ; 26 8b 47 10 ; 0xf4309 eltorito.c:555 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf430d + mov ax, word [es:bx+008h] ; 26 8b 47 08 ; 0xf4310 eltorito.c:556 + mov word [bp-01ah], ax ; 89 46 e6 ; 0xf4314 + mov ax, word [es:bx+00ah] ; 26 8b 47 0a ; 0xf4317 + mov word [bp-018h], ax ; 89 46 e8 ; 0xf431b + mov ax, word [bp+014h] ; 8b 46 14 ; 0xf431e eltorito.c:558 + and ax, strict word 0003fh ; 25 3f 00 ; 0xf4321 + mov word [bp-01ch], ax ; 89 46 e4 ; 0xf4324 + mov bx, word [bp+014h] ; 8b 5e 14 ; 0xf4327 eltorito.c:559 + and bx, 000c0h ; 81 e3 c0 00 ; 0xf432a + sal bx, 1 ; d1 e3 ; 0xf432e + sal bx, 1 ; d1 e3 ; 0xf4330 + mov al, byte [bp+015h] ; 8a 46 15 ; 0xf4332 + or ax, bx ; 09 d8 ; 0xf4335 + mov bl, byte [bp+013h] ; 8a 5e 13 ; 0xf4337 eltorito.c:560 + xor bh, bh ; 30 ff ; 0xf433a + mov word [bp-014h], bx ; 89 5e ec ; 0xf433c + mov di, word [bp+016h] ; 8b 7e 16 ; 0xf433f eltorito.c:561 + and di, 000ffh ; 81 e7 ff 00 ; 0xf4342 + je short 04369h ; 74 21 ; 0xf4346 eltorito.c:569 + mov cx, word [bp-01ch] ; 8b 4e e4 ; 0xf4348 eltorito.c:573 + cmp cx, word [bp-028h] ; 3b 4e d8 ; 0xf434b + jnbe short 04359h ; 77 09 ; 0xf434e + cmp ax, dx ; 39 d0 ; 0xf4350 + jnc short 04359h ; 73 05 ; 0xf4352 + cmp bx, word [bp-00ch] ; 3b 5e f4 ; 0xf4354 + jc short 0435fh ; 72 06 ; 0xf4357 + jmp near 047bah ; e9 5e 04 ; 0xf4359 eltorito.c:576 + jmp near 044fdh ; e9 9e 01 ; 0xf435c + mov dl, byte [bp+017h] ; 8a 56 17 ; 0xf435f eltorito.c:580 + xor dh, dh ; 30 f6 ; 0xf4362 + cmp dx, strict byte 00004h ; 83 fa 04 ; 0xf4364 + jne short 0436ch ; 75 03 ; 0xf4367 + jmp near 044f9h ; e9 8d 01 ; 0xf4369 eltorito.c:581 + mov CL, strict byte 004h ; b1 04 ; 0xf436c eltorito.c:583 + mov dx, word [bp+010h] ; 8b 56 10 ; 0xf436e + shr dx, CL ; d3 ea ; 0xf4371 + mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf4373 + add bx, dx ; 01 d3 ; 0xf4376 + mov word [bp-012h], bx ; 89 5e ee ; 0xf4378 + mov dx, word [bp+010h] ; 8b 56 10 ; 0xf437b eltorito.c:584 + and dx, strict byte 0000fh ; 83 e2 0f ; 0xf437e + mov word [bp-010h], dx ; 89 56 f0 ; 0xf4381 + xor dl, dl ; 30 d2 ; 0xf4384 eltorito.c:587 + mov bx, word [bp-00ch] ; 8b 5e f4 ; 0xf4386 + xor cx, cx ; 31 c9 ; 0xf4389 + call 09bc0h ; e8 32 58 ; 0xf438b + xor bx, bx ; 31 db ; 0xf438e + add ax, word [bp-014h] ; 03 46 ec ; 0xf4390 + adc dx, bx ; 11 da ; 0xf4393 + mov bx, word [bp-028h] ; 8b 5e d8 ; 0xf4395 + xor cx, cx ; 31 c9 ; 0xf4398 + call 09bc0h ; e8 23 58 ; 0xf439a + mov bx, dx ; 89 d3 ; 0xf439d + mov dx, word [bp-01ch] ; 8b 56 e4 ; 0xf439f + dec dx ; 4a ; 0xf43a2 + mov word [bp-026h], strict word 00000h ; c7 46 da 00 00 ; 0xf43a3 + add dx, ax ; 01 c2 ; 0xf43a8 + adc bx, word [bp-026h] ; 13 5e da ; 0xf43aa + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf43ad eltorito.c:590 + xor al, al ; 30 c0 ; 0xf43b0 + or ax, di ; 09 f8 ; 0xf43b2 + mov word [bp+016h], ax ; 89 46 16 ; 0xf43b4 + mov word [bp-02eh], dx ; 89 56 d2 ; 0xf43b7 eltorito.c:593 + mov word [bp-02ch], bx ; 89 5e d4 ; 0xf43ba + shr word [bp-02ch], 1 ; d1 6e d4 ; 0xf43bd + rcr word [bp-02eh], 1 ; d1 5e d2 ; 0xf43c0 + shr word [bp-02ch], 1 ; d1 6e d4 ; 0xf43c3 + rcr word [bp-02eh], 1 ; d1 5e d2 ; 0xf43c6 + mov ax, word [bp-02ch] ; 8b 46 d4 ; 0xf43c9 + mov word [bp-02ah], ax ; 89 46 d6 ; 0xf43cc + mov ax, dx ; 89 d0 ; 0xf43cf eltorito.c:594 + xor ah, dh ; 30 f4 ; 0xf43d1 + and AL, strict byte 003h ; 24 03 ; 0xf43d3 + mov word [bp-022h], ax ; 89 46 de ; 0xf43d5 + xor cx, cx ; 31 c9 ; 0xf43d8 eltorito.c:597 + mov ax, dx ; 89 d0 ; 0xf43da + add ax, di ; 01 f8 ; 0xf43dc + mov dx, bx ; 89 da ; 0xf43de + adc dx, cx ; 11 ca ; 0xf43e0 + add ax, strict word 0ffffh ; 05 ff ff ; 0xf43e2 + adc dx, strict byte 0ffffh ; 83 d2 ff ; 0xf43e5 + mov word [bp-032h], ax ; 89 46 ce ; 0xf43e8 + mov word [bp-030h], dx ; 89 56 d0 ; 0xf43eb + shr word [bp-030h], 1 ; d1 6e d0 ; 0xf43ee + rcr word [bp-032h], 1 ; d1 5e ce ; 0xf43f1 + shr word [bp-030h], 1 ; d1 6e d0 ; 0xf43f4 + rcr word [bp-032h], 1 ; d1 5e ce ; 0xf43f7 + mov cx, strict word 0000ch ; b9 0c 00 ; 0xf43fa eltorito.c:599 + xor bx, bx ; 31 db ; 0xf43fd + mov dx, ss ; 8c d2 ; 0xf43ff + lea ax, [bp-03eh] ; 8d 46 c2 ; 0xf4401 + call 09c30h ; e8 29 58 ; 0xf4404 + mov word [bp-03eh], strict word 00028h ; c7 46 c2 28 00 ; 0xf4407 eltorito.c:600 + mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xf440c eltorito.c:601 + add ax, word [bp-02eh] ; 03 46 d2 ; 0xf440f + mov dx, word [bp-018h] ; 8b 56 e8 ; 0xf4412 + adc dx, word [bp-02ah] ; 13 56 d6 ; 0xf4415 + xchg ah, al ; 86 c4 ; 0xf4418 + xchg dh, dl ; 86 d6 ; 0xf441a + xchg dx, ax ; 92 ; 0xf441c + mov word [bp-03ch], ax ; 89 46 c4 ; 0xf441d + mov word [bp-03ah], dx ; 89 56 c6 ; 0xf4420 + mov ax, word [bp-032h] ; 8b 46 ce ; 0xf4423 eltorito.c:602 + sub ax, word [bp-02eh] ; 2b 46 d2 ; 0xf4426 + inc ax ; 40 ; 0xf4429 + xchg ah, al ; 86 c4 ; 0xf442a + mov word [bp-037h], ax ; 89 46 c9 ; 0xf442c + mov es, [bp-008h] ; 8e 46 f8 ; 0xf442f eltorito.c:604 + mov word [es:si+00eh], di ; 26 89 7c 0e ; 0xf4432 + mov word [es:si+010h], 00200h ; 26 c7 44 10 00 02 ; 0xf4436 eltorito.c:605 + mov CL, strict byte 009h ; b1 09 ; 0xf443c eltorito.c:607 + mov ax, word [bp-022h] ; 8b 46 de ; 0xf443e + sal ax, CL ; d3 e0 ; 0xf4441 + mov word [bp-024h], ax ; 89 46 dc ; 0xf4443 + mov word [es:si+01eh], ax ; 26 89 44 1e ; 0xf4446 + mov ax, di ; 89 f8 ; 0xf444a eltorito.c:608 + xor ah, ah ; 30 e4 ; 0xf444c + and AL, strict byte 003h ; 24 03 ; 0xf444e + mov dx, strict word 00004h ; ba 04 00 ; 0xf4450 + sub dx, ax ; 29 c2 ; 0xf4453 + mov ax, dx ; 89 d0 ; 0xf4455 + sub ax, word [bp-022h] ; 2b 46 de ; 0xf4457 + sal ax, CL ; d3 e0 ; 0xf445a + and ah, 007h ; 80 e4 07 ; 0xf445c + mov word [es:si+020h], ax ; 26 89 44 20 ; 0xf445f + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf4463 eltorito.c:610 + xor ah, ah ; 30 e4 ; 0xf4466 + mov dx, strict word 0001ch ; ba 1c 00 ; 0xf4468 + imul dx ; f7 ea ; 0xf446b + mov bx, si ; 89 f3 ; 0xf446d + add bx, ax ; 01 c3 ; 0xf446f + mov al, byte [es:bx+022h] ; 26 8a 47 22 ; 0xf4471 + xor ah, ah ; 30 e4 ; 0xf4475 + sal ax, 1 ; d1 e0 ; 0xf4477 + mov word [bp-026h], ax ; 89 46 da ; 0xf4479 + push word [bp-012h] ; ff 76 ee ; 0xf447c + push word [bp-010h] ; ff 76 f0 ; 0xf447f + mov ax, strict word 00001h ; b8 01 00 ; 0xf4482 + push ax ; 50 ; 0xf4485 + mov bx, di ; 89 fb ; 0xf4486 + xor di, di ; 31 ff ; 0xf4488 + mov cx, strict word 00009h ; b9 09 00 ; 0xf448a + sal bx, 1 ; d1 e3 ; 0xf448d + rcl di, 1 ; d1 d7 ; 0xf448f + loop 0448dh ; e2 fa ; 0xf4491 + push di ; 57 ; 0xf4493 + push bx ; 53 ; 0xf4494 + push word [bp-024h] ; ff 76 dc ; 0xf4495 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf4498 + xor ah, ah ; 30 e4 ; 0xf449b + mov cx, ss ; 8c d1 ; 0xf449d + lea bx, [bp-03eh] ; 8d 5e c2 ; 0xf449f + mov dx, strict word 0000ch ; ba 0c 00 ; 0xf44a2 + mov di, word [bp-026h] ; 8b 7e da ; 0xf44a5 + call word [word di+0006ah] ; ff 95 6a 00 ; 0xf44a8 + mov dx, ax ; 89 c2 ; 0xf44ac + mov es, [bp-008h] ; 8e 46 f8 ; 0xf44ae eltorito.c:612 + mov word [es:si+01eh], strict word 00000h ; 26 c7 44 1e 00 00 ; 0xf44b1 + mov word [es:si+020h], strict word 00000h ; 26 c7 44 20 00 00 ; 0xf44b7 eltorito.c:613 + test al, al ; 84 c0 ; 0xf44bd eltorito.c:615 + je short 044f9h ; 74 38 ; 0xf44bf + mov bx, 00da0h ; bb a0 0d ; 0xf44c1 eltorito.c:616 + mov cx, ds ; 8c d9 ; 0xf44c4 + mov ax, strict word 00004h ; b8 04 00 ; 0xf44c6 + call 018cch ; e8 00 d4 ; 0xf44c9 + mov al, dl ; 88 d0 ; 0xf44cc + xor ah, ah ; 30 e4 ; 0xf44ce + push ax ; 50 ; 0xf44d0 + mov al, byte [bp+017h] ; 8a 46 17 ; 0xf44d1 + push ax ; 50 ; 0xf44d4 + mov ax, 0034ch ; b8 4c 03 ; 0xf44d5 + push ax ; 50 ; 0xf44d8 + mov ax, 0038eh ; b8 8e 03 ; 0xf44d9 + push ax ; 50 ; 0xf44dc + mov ax, strict word 00004h ; b8 04 00 ; 0xf44dd + push ax ; 50 ; 0xf44e0 + call 0190fh ; e8 2b d4 ; 0xf44e1 + add sp, strict byte 0000ah ; 83 c4 0a ; 0xf44e4 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf44e7 eltorito.c:617 + xor ah, ah ; 30 e4 ; 0xf44ea + or ah, 002h ; 80 cc 02 ; 0xf44ec + mov word [bp+016h], ax ; 89 46 16 ; 0xf44ef + mov byte [bp+016h], 000h ; c6 46 16 00 ; 0xf44f2 eltorito.c:618 + jmp near 047c5h ; e9 cc 02 ; 0xf44f6 eltorito.c:619 + mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf44f9 + mov bx, strict word 00074h ; bb 74 00 ; 0xf44fd + mov ax, strict word 00040h ; b8 40 00 ; 0xf4500 + mov es, ax ; 8e c0 ; 0xf4503 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf4505 + and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf4509 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf450d + pop di ; 5f ; 0xf4510 + pop si ; 5e ; 0xf4511 + pop bp ; 5d ; 0xf4512 + retn ; c3 ; 0xf4513 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf4514 eltorito.c:626 + mov ax, word [es:bx+014h] ; 26 8b 47 14 ; 0xf4517 + mov word [bp-028h], ax ; 89 46 d8 ; 0xf451b + mov dx, word [es:bx+012h] ; 26 8b 57 12 ; 0xf451e eltorito.c:627 + dec dx ; 4a ; 0xf4522 + mov ax, word [es:bx+010h] ; 26 8b 47 10 ; 0xf4523 eltorito.c:628 + dec ax ; 48 ; 0xf4527 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf4528 + mov byte [bp+016h], 000h ; c6 46 16 00 ; 0xf452b eltorito.c:630 + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf452f eltorito.c:631 + xor al, al ; 30 c0 ; 0xf4532 + mov si, word [bp+014h] ; 8b 76 14 ; 0xf4534 eltorito.c:632 + and si, 000ffh ; 81 e6 ff 00 ; 0xf4537 + mov cx, dx ; 89 d1 ; 0xf453b + xor ch, dh ; 30 f5 ; 0xf453d + mov word [bp-026h], cx ; 89 4e da ; 0xf453f + mov cl, byte [bp-026h] ; 8a 4e da ; 0xf4542 + mov byte [bp-025h], cl ; 88 4e db ; 0xf4545 + mov byte [bp-026h], al ; 88 46 da ; 0xf4548 + mov cx, word [bp-026h] ; 8b 4e da ; 0xf454b + or cx, si ; 09 f1 ; 0xf454e + mov word [bp+014h], cx ; 89 4e 14 ; 0xf4550 + mov cx, dx ; 89 d1 ; 0xf4553 eltorito.c:633 + shr cx, 1 ; d1 e9 ; 0xf4555 + shr cx, 1 ; d1 e9 ; 0xf4557 + and cl, 0c0h ; 80 e1 c0 ; 0xf4559 + mov dx, word [bp-028h] ; 8b 56 d8 ; 0xf455c + and dl, 03fh ; 80 e2 3f ; 0xf455f + or dl, cl ; 08 ca ; 0xf4562 + mov cx, word [bp+014h] ; 8b 4e 14 ; 0xf4564 + mov cl, dl ; 88 d1 ; 0xf4567 + mov word [bp+014h], cx ; 89 4e 14 ; 0xf4569 + mov cx, word [bp+012h] ; 8b 4e 12 ; 0xf456c eltorito.c:634 + mov ch, byte [bp-00ch] ; 8a 6e f4 ; 0xf456f + mov word [bp+012h], cx ; 89 4e 12 ; 0xf4572 + mov dx, cx ; 89 ca ; 0xf4575 eltorito.c:635 + xor dl, cl ; 30 ca ; 0xf4577 + or dl, 002h ; 80 ca 02 ; 0xf4579 + mov word [bp+012h], dx ; 89 56 12 ; 0xf457c + mov dl, byte [es:bx+001h] ; 26 8a 57 01 ; 0xf457f eltorito.c:638 + mov word [bp+010h], ax ; 89 46 10 ; 0xf4583 + cmp dl, 003h ; 80 fa 03 ; 0xf4586 + je short 045a5h ; 74 1a ; 0xf4589 + cmp dl, 002h ; 80 fa 02 ; 0xf458b + je short 045a1h ; 74 11 ; 0xf458e + cmp dl, 001h ; 80 fa 01 ; 0xf4590 + jne short 045a9h ; 75 14 ; 0xf4593 + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf4595 eltorito.c:639 + xor al, al ; 30 c0 ; 0xf4598 + or AL, strict byte 002h ; 0c 02 ; 0xf459a + mov word [bp+010h], ax ; 89 46 10 ; 0xf459c + jmp short 045a9h ; eb 08 ; 0xf459f + or AL, strict byte 004h ; 0c 04 ; 0xf45a1 eltorito.c:640 + jmp short 0459ch ; eb f7 ; 0xf45a3 + or AL, strict byte 005h ; 0c 05 ; 0xf45a5 eltorito.c:641 + jmp short 0459ch ; eb f3 ; 0xf45a7 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf45a9 eltorito.c:645 + cmp byte [es:bx+001h], 004h ; 26 80 7f 01 04 ; 0xf45ac + jc short 045b6h ; 72 03 ; 0xf45b1 + jmp near 044f9h ; e9 43 ff ; 0xf45b3 + mov word [bp+008h], 0efc7h ; c7 46 08 c7 ef ; 0xf45b6 eltorito.c:646 + mov word [bp+006h], 0f000h ; c7 46 06 00 f0 ; 0xf45bb eltorito.c:647 + jmp short 045b3h ; eb f1 ; 0xf45c0 eltorito.c:649 + or ah, 003h ; 80 cc 03 ; 0xf45c2 eltorito.c:654 + mov word [bp+016h], ax ; 89 46 16 ; 0xf45c5 + jmp near 044fdh ; e9 32 ff ; 0xf45c8 eltorito.c:655 + mov word [bp+010h], 0aa55h ; c7 46 10 55 aa ; 0xf45cb eltorito.c:659 + or ah, 030h ; 80 cc 30 ; 0xf45d0 eltorito.c:660 + mov word [bp+016h], ax ; 89 46 16 ; 0xf45d3 + mov word [bp+014h], strict word 00007h ; c7 46 14 07 00 ; 0xf45d6 eltorito.c:661 + jmp near 044fdh ; e9 1f ff ; 0xf45db eltorito.c:662 + mov di, word [bp+00ah] ; 8b 7e 0a ; 0xf45de eltorito.c:670 + mov es, [bp+004h] ; 8e 46 04 ; 0xf45e1 + mov word [bp-020h], di ; 89 7e e0 ; 0xf45e4 + mov [bp-016h], es ; 8c 46 ea ; 0xf45e7 + mov ax, word [es:di+002h] ; 26 8b 45 02 ; 0xf45ea eltorito.c:672 + mov word [bp-01eh], ax ; 89 46 e2 ; 0xf45ee + mov ax, word [es:di+006h] ; 26 8b 45 06 ; 0xf45f1 eltorito.c:673 + mov word [bp-012h], ax ; 89 46 ee ; 0xf45f5 + mov ax, word [es:di+004h] ; 26 8b 45 04 ; 0xf45f8 eltorito.c:674 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf45fc + mov ax, word [es:di+00ch] ; 26 8b 45 0c ; 0xf45ff eltorito.c:677 + mov dx, word [es:di+00eh] ; 26 8b 55 0e ; 0xf4603 + or ax, dx ; 09 d0 ; 0xf4607 eltorito.c:678 + je short 04626h ; 74 1b ; 0xf4609 + mov al, byte [bp+017h] ; 8a 46 17 ; 0xf460b eltorito.c:679 + xor ah, ah ; 30 e4 ; 0xf460e + push ax ; 50 ; 0xf4610 + mov ax, 0034ch ; b8 4c 03 ; 0xf4611 + push ax ; 50 ; 0xf4614 + mov ax, 003afh ; b8 af 03 ; 0xf4615 + push ax ; 50 ; 0xf4618 + mov ax, strict word 00007h ; b8 07 00 ; 0xf4619 + push ax ; 50 ; 0xf461c + call 0190fh ; e8 ef d2 ; 0xf461d + add sp, strict byte 00008h ; 83 c4 08 ; 0xf4620 + jmp near 047bah ; e9 94 01 ; 0xf4623 eltorito.c:680 + mov es, [bp-016h] ; 8e 46 ea ; 0xf4626 eltorito.c:684 + mov di, word [bp-020h] ; 8b 7e e0 ; 0xf4629 + mov ax, word [es:di+008h] ; 26 8b 45 08 ; 0xf462c + mov dx, word [es:di+00ah] ; 26 8b 55 0a ; 0xf4630 + mov cl, byte [bp+017h] ; 8a 4e 17 ; 0xf4634 eltorito.c:687 + mov byte [bp-00eh], cl ; 88 4e f2 ; 0xf4637 + mov byte [bp-00dh], 000h ; c6 46 f3 00 ; 0xf463a + cmp word [bp-00eh], strict byte 00044h ; 83 7e f2 44 ; 0xf463e + jne short 04647h ; 75 03 ; 0xf4642 + jmp near 044f9h ; e9 b2 fe ; 0xf4644 + cmp word [bp-00eh], strict byte 00047h ; 83 7e f2 47 ; 0xf4647 + jne short 0464fh ; 75 02 ; 0xf464b + jmp short 04644h ; eb f5 ; 0xf464d eltorito.c:688 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf464f eltorito.c:695 + mov cx, word [es:bx+008h] ; 26 8b 4f 08 ; 0xf4652 + mov word [bp-01ah], cx ; 89 4e e6 ; 0xf4656 + mov bx, word [es:bx+00ah] ; 26 8b 5f 0a ; 0xf4659 + mov word [bp-018h], bx ; 89 5e e8 ; 0xf465d + mov word [bp-032h], ax ; 89 46 ce ; 0xf4660 eltorito.c:698 + mov word [bp-030h], dx ; 89 56 d0 ; 0xf4663 + shr word [bp-030h], 1 ; d1 6e d0 ; 0xf4666 + rcr word [bp-032h], 1 ; d1 5e ce ; 0xf4669 + shr word [bp-030h], 1 ; d1 6e d0 ; 0xf466c + rcr word [bp-032h], 1 ; d1 5e ce ; 0xf466f + mov bx, word [bp-030h] ; 8b 5e d0 ; 0xf4672 + mov word [bp-02ah], bx ; 89 5e d6 ; 0xf4675 + mov di, ax ; 89 c7 ; 0xf4678 eltorito.c:699 + and di, strict byte 00003h ; 83 e7 03 ; 0xf467a + xor bx, bx ; 31 db ; 0xf467d eltorito.c:702 + add ax, word [bp-01eh] ; 03 46 e2 ; 0xf467f + adc dx, bx ; 11 da ; 0xf4682 + add ax, strict word 0ffffh ; 05 ff ff ; 0xf4684 + adc dx, strict byte 0ffffh ; 83 d2 ff ; 0xf4687 + mov word [bp-02eh], ax ; 89 46 d2 ; 0xf468a + mov word [bp-02ch], dx ; 89 56 d4 ; 0xf468d + shr word [bp-02ch], 1 ; d1 6e d4 ; 0xf4690 + rcr word [bp-02eh], 1 ; d1 5e d2 ; 0xf4693 + shr word [bp-02ch], 1 ; d1 6e d4 ; 0xf4696 + rcr word [bp-02eh], 1 ; d1 5e d2 ; 0xf4699 + mov cx, strict word 0000ch ; b9 0c 00 ; 0xf469c eltorito.c:704 + mov dx, ss ; 8c d2 ; 0xf469f + lea ax, [bp-03eh] ; 8d 46 c2 ; 0xf46a1 + call 09c30h ; e8 89 55 ; 0xf46a4 + mov word [bp-03eh], strict word 00028h ; c7 46 c2 28 00 ; 0xf46a7 eltorito.c:705 + mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xf46ac eltorito.c:706 + add ax, word [bp-032h] ; 03 46 ce ; 0xf46af + mov dx, word [bp-018h] ; 8b 56 e8 ; 0xf46b2 + adc dx, word [bp-02ah] ; 13 56 d6 ; 0xf46b5 + xchg ah, al ; 86 c4 ; 0xf46b8 + xchg dh, dl ; 86 d6 ; 0xf46ba + xchg dx, ax ; 92 ; 0xf46bc + mov word [bp-03ch], ax ; 89 46 c4 ; 0xf46bd + mov word [bp-03ah], dx ; 89 56 c6 ; 0xf46c0 + mov ax, word [bp-02eh] ; 8b 46 d2 ; 0xf46c3 eltorito.c:707 + sub ax, word [bp-032h] ; 2b 46 ce ; 0xf46c6 + inc ax ; 40 ; 0xf46c9 + xchg ah, al ; 86 c4 ; 0xf46ca + mov word [bp-037h], ax ; 89 46 c9 ; 0xf46cc + mov CL, strict byte 009h ; b1 09 ; 0xf46cf eltorito.c:709 + mov ax, di ; 89 f8 ; 0xf46d1 + sal ax, CL ; d3 e0 ; 0xf46d3 + mov word [bp-024h], ax ; 89 46 dc ; 0xf46d5 + mov es, [bp-008h] ; 8e 46 f8 ; 0xf46d8 + mov word [es:si+01eh], ax ; 26 89 44 1e ; 0xf46db + mov ax, word [bp-01eh] ; 8b 46 e2 ; 0xf46df eltorito.c:710 + xor ah, ah ; 30 e4 ; 0xf46e2 + and AL, strict byte 003h ; 24 03 ; 0xf46e4 + mov dx, strict word 00004h ; ba 04 00 ; 0xf46e6 + sub dx, ax ; 29 c2 ; 0xf46e9 + mov ax, dx ; 89 d0 ; 0xf46eb + sub ax, di ; 29 f8 ; 0xf46ed + sal ax, CL ; d3 e0 ; 0xf46ef + and ah, 007h ; 80 e4 07 ; 0xf46f1 + mov word [es:si+020h], ax ; 26 89 44 20 ; 0xf46f4 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf46f8 eltorito.c:712 + xor ah, ah ; 30 e4 ; 0xf46fb + mov dx, strict word 0001ch ; ba 1c 00 ; 0xf46fd + imul dx ; f7 ea ; 0xf4700 + mov bx, si ; 89 f3 ; 0xf4702 + add bx, ax ; 01 c3 ; 0xf4704 + mov al, byte [es:bx+022h] ; 26 8a 47 22 ; 0xf4706 + xor ah, ah ; 30 e4 ; 0xf470a + sal ax, 1 ; d1 e0 ; 0xf470c + mov word [bp-026h], ax ; 89 46 da ; 0xf470e + push word [bp-012h] ; ff 76 ee ; 0xf4711 + push word [bp-010h] ; ff 76 f0 ; 0xf4714 + mov ax, strict word 00001h ; b8 01 00 ; 0xf4717 + push ax ; 50 ; 0xf471a + mov bx, word [bp-01eh] ; 8b 5e e2 ; 0xf471b + xor di, di ; 31 ff ; 0xf471e + mov cx, strict word 00009h ; b9 09 00 ; 0xf4720 + sal bx, 1 ; d1 e3 ; 0xf4723 + rcl di, 1 ; d1 d7 ; 0xf4725 + loop 04723h ; e2 fa ; 0xf4727 + push di ; 57 ; 0xf4729 + push bx ; 53 ; 0xf472a + push word [bp-024h] ; ff 76 dc ; 0xf472b + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf472e + xor ah, ah ; 30 e4 ; 0xf4731 + mov cx, ss ; 8c d1 ; 0xf4733 + lea bx, [bp-03eh] ; 8d 5e c2 ; 0xf4735 + mov dx, strict word 0000ch ; ba 0c 00 ; 0xf4738 + mov di, word [bp-026h] ; 8b 7e da ; 0xf473b + call word [word di+0006ah] ; ff 95 6a 00 ; 0xf473e + mov dx, ax ; 89 c2 ; 0xf4742 + mov es, [bp-008h] ; 8e 46 f8 ; 0xf4744 eltorito.c:714 + mov word [es:si+01eh], strict word 00000h ; 26 c7 44 1e 00 00 ; 0xf4747 + mov word [es:si+020h], strict word 00000h ; 26 c7 44 20 00 00 ; 0xf474d eltorito.c:715 + mov bx, word [es:si+01ah] ; 26 8b 5c 1a ; 0xf4753 eltorito.c:717 + mov di, word [es:si+01ch] ; 26 8b 7c 1c ; 0xf4757 + mov cx, strict word 00009h ; b9 09 00 ; 0xf475b + shr di, 1 ; d1 ef ; 0xf475e + rcr bx, 1 ; d1 db ; 0xf4760 + loop 0475eh ; e2 fa ; 0xf4762 + mov es, [bp-016h] ; 8e 46 ea ; 0xf4764 eltorito.c:718 + mov si, word [bp-020h] ; 8b 76 e0 ; 0xf4767 + mov word [es:si+002h], bx ; 26 89 5c 02 ; 0xf476a + test al, al ; 84 c0 ; 0xf476e eltorito.c:720 + jne short 04775h ; 75 03 ; 0xf4770 + jmp near 044f9h ; e9 84 fd ; 0xf4772 + mov bx, 00da0h ; bb a0 0d ; 0xf4775 eltorito.c:721 + mov cx, ds ; 8c d9 ; 0xf4778 + mov ax, strict word 00004h ; b8 04 00 ; 0xf477a + call 018cch ; e8 4c d1 ; 0xf477d + mov al, dl ; 88 d0 ; 0xf4780 + xor ah, ah ; 30 e4 ; 0xf4782 + push ax ; 50 ; 0xf4784 + push word [bp-00eh] ; ff 76 f2 ; 0xf4785 + mov ax, 0034ch ; b8 4c 03 ; 0xf4788 + push ax ; 50 ; 0xf478b + mov ax, 003d8h ; b8 d8 03 ; 0xf478c + push ax ; 50 ; 0xf478f + mov ax, strict word 00004h ; b8 04 00 ; 0xf4790 + push ax ; 50 ; 0xf4793 + call 0190fh ; e8 78 d1 ; 0xf4794 + add sp, strict byte 0000ah ; 83 c4 0a ; 0xf4797 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf479a eltorito.c:722 + xor ah, ah ; 30 e4 ; 0xf479d + or ah, 00ch ; 80 cc 0c ; 0xf479f + jmp short 047c2h ; eb 1e ; 0xf47a2 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf47a4 eltorito.c:730 + push ax ; 50 ; 0xf47a7 + mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf47a8 + mov dx, word [bp+004h] ; 8b 56 04 ; 0xf47ab + mov bx, si ; 89 f3 ; 0xf47ae + mov cx, word [bp-008h] ; 8b 4e f8 ; 0xf47b0 + call 05a95h ; e8 df 12 ; 0xf47b3 + test ax, ax ; 85 c0 ; 0xf47b6 + je short 04772h ; 74 b8 ; 0xf47b8 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf47ba eltorito.c:731 + xor ah, ah ; 30 e4 ; 0xf47bd + or ah, 001h ; 80 cc 01 ; 0xf47bf + mov word [bp+016h], ax ; 89 46 16 ; 0xf47c2 + mov al, byte [bp+017h] ; 8a 46 17 ; 0xf47c5 + xor ah, ah ; 30 e4 ; 0xf47c8 + mov bx, strict word 00074h ; bb 74 00 ; 0xf47ca + mov dx, strict word 00040h ; ba 40 00 ; 0xf47cd + mov es, dx ; 8e c2 ; 0xf47d0 + mov byte [es:bx], al ; 26 88 07 ; 0xf47d2 + or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf47d5 + jmp near 0450dh ; e9 31 fd ; 0xf47d9 + mov bx, 00da0h ; bb a0 0d ; 0xf47dc eltorito.c:747 + mov cx, ds ; 8c d9 ; 0xf47df + mov ax, strict word 00004h ; b8 04 00 ; 0xf47e1 + call 018cch ; e8 e5 d0 ; 0xf47e4 + mov al, byte [bp+017h] ; 8a 46 17 ; 0xf47e7 + xor ah, ah ; 30 e4 ; 0xf47ea + push ax ; 50 ; 0xf47ec + mov ax, 0034ch ; b8 4c 03 ; 0xf47ed + push ax ; 50 ; 0xf47f0 + mov ax, 003fah ; b8 fa 03 ; 0xf47f1 + push ax ; 50 ; 0xf47f4 + mov ax, strict word 00004h ; b8 04 00 ; 0xf47f5 + jmp near 0461ch ; e9 21 fe ; 0xf47f8 + ; disGetNextSymbol 0xf47fb LB 0x574d -> off=0x59 cb=000000000000038c uValue=00000000000f3254 'int13_cdrom' + db 050h, 04eh, 049h, 048h, 047h, 046h, 045h, 044h, 043h, 042h, 041h, 018h, 016h, 015h, 014h, 011h + db 010h, 00dh, 00ch, 00bh, 00ah, 009h, 008h, 005h, 004h, 003h, 002h, 001h, 000h, 032h, 049h, 0c5h + db 04bh, 0fah, 048h, 032h, 049h, 0efh, 048h, 032h, 049h, 0efh, 048h, 032h, 049h, 0c5h, 04bh, 032h + db 049h, 032h, 049h, 0c5h, 04bh, 0c5h, 04bh, 0c5h, 04bh, 0c5h, 04bh, 0c5h, 04bh, 016h, 049h, 0c5h + db 04bh, 032h, 049h, 01fh, 049h, 050h, 049h, 0efh, 048h, 050h, 049h, 0a0h, 04ah, 043h, 04bh, 050h + db 049h, 06ch, 04bh, 086h, 04bh, 08eh, 04bh, 032h, 049h +int13_cdrom: ; 0xf4854 LB 0x38c + push bp ; 55 ; 0xf4854 eltorito.c:772 + mov bp, sp ; 89 e5 ; 0xf4855 + push si ; 56 ; 0xf4857 + push di ; 57 ; 0xf4858 + sub sp, strict byte 00020h ; 83 ec 20 ; 0xf4859 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf485c eltorito.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf485f + mov es, ax ; 8e c0 ; 0xf4862 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf4864 + mov si, 00122h ; be 22 01 ; 0xf4867 eltorito.c:782 + mov word [bp-014h], ax ; 89 46 ec ; 0xf486a + mov bx, strict word 00074h ; bb 74 00 ; 0xf486d eltorito.c:43 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf4870 + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf4874 eltorito.c:789 + xor ah, ah ; 30 e4 ; 0xf4877 + cmp ax, 000e0h ; 3d e0 00 ; 0xf4879 + jc short 04883h ; 72 05 ; 0xf487c + cmp ax, 000f0h ; 3d f0 00 ; 0xf487e + jc short 048a2h ; 72 1f ; 0xf4881 + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf4883 eltorito.c:790 + xor ah, ah ; 30 e4 ; 0xf4886 + push ax ; 50 ; 0xf4888 + mov al, byte [bp+019h] ; 8a 46 19 ; 0xf4889 + push ax ; 50 ; 0xf488c + mov ax, 0042ah ; b8 2a 04 ; 0xf488d + push ax ; 50 ; 0xf4890 + mov ax, 00436h ; b8 36 04 ; 0xf4891 + push ax ; 50 ; 0xf4894 + mov ax, strict word 00004h ; b8 04 00 ; 0xf4895 + push ax ; 50 ; 0xf4898 + call 0190fh ; e8 73 d0 ; 0xf4899 + add sp, strict byte 0000ah ; 83 c4 0a ; 0xf489c + jmp near 04ba4h ; e9 02 03 ; 0xf489f eltorito.c:791 + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf48a2 eltorito.c:795 + xor ah, ah ; 30 e4 ; 0xf48a5 + mov es, [bp-014h] ; 8e 46 ec ; 0xf48a7 + mov bx, si ; 89 f3 ; 0xf48aa + add bx, ax ; 01 c3 ; 0xf48ac + mov dl, byte [es:bx+00114h] ; 26 8a 97 14 01 ; 0xf48ae + mov byte [bp-006h], dl ; 88 56 fa ; 0xf48b3 + cmp dl, 010h ; 80 fa 10 ; 0xf48b6 eltorito.c:798 + jc short 048c9h ; 72 0e ; 0xf48b9 + push ax ; 50 ; 0xf48bb eltorito.c:799 + mov al, byte [bp+019h] ; 8a 46 19 ; 0xf48bc + push ax ; 50 ; 0xf48bf + mov ax, 0042ah ; b8 2a 04 ; 0xf48c0 + push ax ; 50 ; 0xf48c3 + mov ax, 00461h ; b8 61 04 ; 0xf48c4 + jmp short 04894h ; eb cb ; 0xf48c7 + mov al, byte [bp+019h] ; 8a 46 19 ; 0xf48c9 eltorito.c:803 + xor ah, ah ; 30 e4 ; 0xf48cc + mov dx, ax ; 89 c2 ; 0xf48ce + cmp ax, strict word 00050h ; 3d 50 00 ; 0xf48d0 + jnbe short 04932h ; 77 5d ; 0xf48d3 + push CS ; 0e ; 0xf48d5 + pop ES ; 07 ; 0xf48d6 + mov cx, strict word 0001eh ; b9 1e 00 ; 0xf48d7 + mov di, 047fbh ; bf fb 47 ; 0xf48da + repne scasb ; f2 ae ; 0xf48dd + sal cx, 1 ; d1 e1 ; 0xf48df + mov di, cx ; 89 cf ; 0xf48e1 + mov ax, word [cs:di+04818h] ; 2e 8b 85 18 48 ; 0xf48e3 + mov bx, word [bp+018h] ; 8b 5e 18 ; 0xf48e8 + xor bh, bh ; 30 ff ; 0xf48eb + jmp ax ; ff e0 ; 0xf48ed + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf48ef eltorito.c:821 + xor ah, ah ; 30 e4 ; 0xf48f2 + or ah, 003h ; 80 cc 03 ; 0xf48f4 + jmp near 04bach ; e9 b2 02 ; 0xf48f7 eltorito.c:822 + mov si, strict word 00074h ; be 74 00 ; 0xf48fa eltorito.c:38 + mov ax, strict word 00040h ; b8 40 00 ; 0xf48fd + mov es, ax ; 8e c0 ; 0xf4900 + mov dl, byte [es:si] ; 26 8a 14 ; 0xf4902 + mov bh, dl ; 88 d7 ; 0xf4905 eltorito.c:827 + mov word [bp+018h], bx ; 89 5e 18 ; 0xf4907 + mov bx, si ; 89 f3 ; 0xf490a eltorito.c:43 + mov byte [es:bx], dh ; 26 88 37 ; 0xf490c + test dl, dl ; 84 d2 ; 0xf490f eltorito.c:831 + je short 0492fh ; 74 1c ; 0xf4911 + jmp near 04bbfh ; e9 a9 02 ; 0xf4913 eltorito.c:832 + or bh, 002h ; 80 cf 02 ; 0xf4916 eltorito.c:838 + mov word [bp+018h], bx ; 89 5e 18 ; 0xf4919 + jmp near 04bafh ; e9 90 02 ; 0xf491c eltorito.c:839 + mov word [bp+012h], 0aa55h ; c7 46 12 55 aa ; 0xf491f eltorito.c:843 + or bh, 030h ; 80 cf 30 ; 0xf4924 eltorito.c:844 + mov word [bp+018h], bx ; 89 5e 18 ; 0xf4927 + mov word [bp+016h], strict word 00007h ; c7 46 16 07 00 ; 0xf492a eltorito.c:845 + jmp near 04bc9h ; e9 97 02 ; 0xf492f eltorito.c:846 + mov bx, 00da0h ; bb a0 0d ; 0xf4932 + mov cx, ds ; 8c d9 ; 0xf4935 + mov ax, strict word 00004h ; b8 04 00 ; 0xf4937 + call 018cch ; e8 8f cf ; 0xf493a + mov al, byte [bp+019h] ; 8a 46 19 ; 0xf493d + xor ah, ah ; 30 e4 ; 0xf4940 + push ax ; 50 ; 0xf4942 + mov ax, 0042ah ; b8 2a 04 ; 0xf4943 + push ax ; 50 ; 0xf4946 + mov ax, 00333h ; b8 33 03 ; 0xf4947 + push ax ; 50 ; 0xf494a + mov ax, strict word 00004h ; b8 04 00 ; 0xf494b + jmp short 04991h ; eb 41 ; 0xf494e + mov bx, word [bp+00ch] ; 8b 5e 0c ; 0xf4950 eltorito.c:854 + mov es, [bp+006h] ; 8e 46 06 ; 0xf4953 + mov word [bp-010h], bx ; 89 5e f0 ; 0xf4956 + mov [bp-018h], es ; 8c 46 e8 ; 0xf4959 + mov ax, word [es:bx+002h] ; 26 8b 47 02 ; 0xf495c eltorito.c:856 + mov word [bp-008h], ax ; 89 46 f8 ; 0xf4960 + mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf4963 eltorito.c:857 + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf4967 + mov ax, word [es:bx+004h] ; 26 8b 47 04 ; 0xf496a eltorito.c:858 + mov word [bp-012h], ax ; 89 46 ee ; 0xf496e + mov ax, word [es:bx+00ch] ; 26 8b 47 0c ; 0xf4971 eltorito.c:861 + mov word [bp-00ah], ax ; 89 46 f6 ; 0xf4975 + mov di, word [es:bx+00eh] ; 26 8b 7f 0e ; 0xf4978 + or di, ax ; 09 c7 ; 0xf497c eltorito.c:862 + je short 0499bh ; 74 1b ; 0xf497e + mov al, byte [bp+019h] ; 8a 46 19 ; 0xf4980 eltorito.c:863 + xor ah, ah ; 30 e4 ; 0xf4983 + push ax ; 50 ; 0xf4985 + mov ax, 0042ah ; b8 2a 04 ; 0xf4986 + push ax ; 50 ; 0xf4989 + mov ax, 003afh ; b8 af 03 ; 0xf498a + push ax ; 50 ; 0xf498d + mov ax, strict word 00007h ; b8 07 00 ; 0xf498e + push ax ; 50 ; 0xf4991 + call 0190fh ; e8 7a cf ; 0xf4992 + add sp, strict byte 00008h ; 83 c4 08 ; 0xf4995 + jmp near 04ba4h ; e9 09 02 ; 0xf4998 eltorito.c:864 + mov es, [bp-018h] ; 8e 46 e8 ; 0xf499b eltorito.c:868 + mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf499e + mov ax, word [es:bx+008h] ; 26 8b 47 08 ; 0xf49a1 + mov word [bp-00ah], ax ; 89 46 f6 ; 0xf49a5 + mov di, bx ; 89 df ; 0xf49a8 + mov di, word [es:di+00ah] ; 26 8b 7d 0a ; 0xf49aa + mov al, byte [bp+019h] ; 8a 46 19 ; 0xf49ae eltorito.c:871 + mov byte [bp-016h], al ; 88 46 ea ; 0xf49b1 + mov byte [bp-015h], 000h ; c6 46 eb 00 ; 0xf49b4 + mov ax, word [bp-016h] ; 8b 46 ea ; 0xf49b8 + cmp ax, strict word 00044h ; 3d 44 00 ; 0xf49bb + je short 049c5h ; 74 05 ; 0xf49be + cmp ax, strict word 00047h ; 3d 47 00 ; 0xf49c0 + jne short 049c8h ; 75 03 ; 0xf49c3 + jmp near 04bc5h ; e9 fd 01 ; 0xf49c5 eltorito.c:872 + mov cx, strict word 0000ch ; b9 0c 00 ; 0xf49c8 eltorito.c:877 + xor bx, bx ; 31 db ; 0xf49cb + mov dx, ss ; 8c d2 ; 0xf49cd + lea ax, [bp-024h] ; 8d 46 dc ; 0xf49cf + call 09c30h ; e8 5b 52 ; 0xf49d2 + mov word [bp-024h], strict word 00028h ; c7 46 dc 28 00 ; 0xf49d5 eltorito.c:878 + mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf49da eltorito.c:879 + mov dx, di ; 89 fa ; 0xf49dd + xchg ah, al ; 86 c4 ; 0xf49df + xchg dh, dl ; 86 d6 ; 0xf49e1 + xchg dx, ax ; 92 ; 0xf49e3 + mov word [bp-022h], ax ; 89 46 de ; 0xf49e4 + mov word [bp-020h], dx ; 89 56 e0 ; 0xf49e7 + mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf49ea eltorito.c:880 + xchg ah, al ; 86 c4 ; 0xf49ed + mov word [bp-01dh], ax ; 89 46 e3 ; 0xf49ef + mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf49f2 eltorito.c:882 + mov es, [bp-014h] ; 8e 46 ec ; 0xf49f5 + mov word [es:si+00eh], ax ; 26 89 44 0e ; 0xf49f8 + mov word [es:si+010h], 00800h ; 26 c7 44 10 00 08 ; 0xf49fc eltorito.c:883 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf4a02 eltorito.c:885 + xor ah, ah ; 30 e4 ; 0xf4a05 + mov dx, strict word 0001ch ; ba 1c 00 ; 0xf4a07 + imul dx ; f7 ea ; 0xf4a0a + mov bx, si ; 89 f3 ; 0xf4a0c + add bx, ax ; 01 c3 ; 0xf4a0e + mov al, byte [es:bx+022h] ; 26 8a 47 22 ; 0xf4a10 + xor ah, ah ; 30 e4 ; 0xf4a14 + mov di, ax ; 89 c7 ; 0xf4a16 + sal di, 1 ; d1 e7 ; 0xf4a18 + push word [bp-00eh] ; ff 76 f2 ; 0xf4a1a + push word [bp-012h] ; ff 76 ee ; 0xf4a1d + mov ax, strict word 00001h ; b8 01 00 ; 0xf4a20 + push ax ; 50 ; 0xf4a23 + mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf4a24 + xor dx, dx ; 31 d2 ; 0xf4a27 + mov cx, strict word 0000bh ; b9 0b 00 ; 0xf4a29 + sal ax, 1 ; d1 e0 ; 0xf4a2c + rcl dx, 1 ; d1 d2 ; 0xf4a2e + loop 04a2ch ; e2 fa ; 0xf4a30 + push dx ; 52 ; 0xf4a32 + push ax ; 50 ; 0xf4a33 + xor ax, ax ; 31 c0 ; 0xf4a34 + push ax ; 50 ; 0xf4a36 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf4a37 + xor ah, ah ; 30 e4 ; 0xf4a3a + mov cx, ss ; 8c d1 ; 0xf4a3c + lea bx, [bp-024h] ; 8d 5e dc ; 0xf4a3e + mov dx, strict word 0000ch ; ba 0c 00 ; 0xf4a41 + call word [word di+0006ah] ; ff 95 6a 00 ; 0xf4a44 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf4a48 + mov es, [bp-014h] ; 8e 46 ec ; 0xf4a4b eltorito.c:887 + mov ax, word [es:si+01ah] ; 26 8b 44 1a ; 0xf4a4e + mov dx, word [es:si+01ch] ; 26 8b 54 1c ; 0xf4a52 + mov cx, strict word 0000bh ; b9 0b 00 ; 0xf4a56 + shr dx, 1 ; d1 ea ; 0xf4a59 + rcr ax, 1 ; d1 d8 ; 0xf4a5b + loop 04a59h ; e2 fa ; 0xf4a5d + mov es, [bp-018h] ; 8e 46 e8 ; 0xf4a5f eltorito.c:888 + mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf4a62 + mov word [es:bx+002h], ax ; 26 89 47 02 ; 0xf4a65 + cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf4a69 eltorito.c:890 + je short 04aa8h ; 74 39 ; 0xf4a6d + mov bx, 00da0h ; bb a0 0d ; 0xf4a6f eltorito.c:891 + mov cx, ds ; 8c d9 ; 0xf4a72 + mov ax, strict word 00004h ; b8 04 00 ; 0xf4a74 + call 018cch ; e8 52 ce ; 0xf4a77 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf4a7a + xor ah, ah ; 30 e4 ; 0xf4a7d + push ax ; 50 ; 0xf4a7f + push word [bp-016h] ; ff 76 ea ; 0xf4a80 + mov ax, 0042ah ; b8 2a 04 ; 0xf4a83 + push ax ; 50 ; 0xf4a86 + mov ax, 003d8h ; b8 d8 03 ; 0xf4a87 + push ax ; 50 ; 0xf4a8a + mov ax, strict word 00004h ; b8 04 00 ; 0xf4a8b + push ax ; 50 ; 0xf4a8e + call 0190fh ; e8 7d ce ; 0xf4a8f + add sp, strict byte 0000ah ; 83 c4 0a ; 0xf4a92 + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4a95 eltorito.c:892 + xor ah, ah ; 30 e4 ; 0xf4a98 + or ah, 00ch ; 80 cc 0c ; 0xf4a9a + jmp near 04bach ; e9 0c 01 ; 0xf4a9d + cmp bx, strict byte 00002h ; 83 fb 02 ; 0xf4aa0 eltorito.c:900 + jbe short 04aabh ; 76 06 ; 0xf4aa3 + jmp near 04ba4h ; e9 fc 00 ; 0xf4aa5 eltorito.c:901 + jmp near 04bc5h ; e9 1a 01 ; 0xf4aa8 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf4aab eltorito.c:903 + xor ah, ah ; 30 e4 ; 0xf4aae + mov dx, strict word 0001ch ; ba 1c 00 ; 0xf4ab0 + imul dx ; f7 ea ; 0xf4ab3 + mov es, [bp-014h] ; 8e 46 ec ; 0xf4ab5 + mov di, si ; 89 f7 ; 0xf4ab8 + add di, ax ; 01 c7 ; 0xf4aba + mov cl, byte [es:di+025h] ; 26 8a 4d 25 ; 0xf4abc + cmp bx, strict byte 00002h ; 83 fb 02 ; 0xf4ac0 eltorito.c:905 + je short 04b2bh ; 74 66 ; 0xf4ac3 + cmp bx, strict byte 00001h ; 83 fb 01 ; 0xf4ac5 + je short 04b06h ; 74 3c ; 0xf4ac8 + test bx, bx ; 85 db ; 0xf4aca + jne short 04b3bh ; 75 6d ; 0xf4acc + cmp cl, 0ffh ; 80 f9 ff ; 0xf4ace eltorito.c:907 + jne short 04ae5h ; 75 12 ; 0xf4ad1 + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4ad3 eltorito.c:908 + xor ah, ah ; 30 e4 ; 0xf4ad6 + or ah, 0b4h ; 80 cc b4 ; 0xf4ad8 + mov word [bp+018h], ax ; 89 46 18 ; 0xf4adb + xor al, al ; 30 c0 ; 0xf4ade eltorito.c:909 + or AL, strict byte 001h ; 0c 01 ; 0xf4ae0 + jmp near 04bach ; e9 c7 00 ; 0xf4ae2 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf4ae5 eltorito.c:911 + xor ah, ah ; 30 e4 ; 0xf4ae8 + mov dx, strict word 0001ch ; ba 1c 00 ; 0xf4aea + imul dx ; f7 ea ; 0xf4aed + db 0feh, 0c1h + ; inc cl ; fe c1 ; 0xf4aef eltorito.c:912 + mov es, [bp-014h] ; 8e 46 ec ; 0xf4af1 + add si, ax ; 01 c6 ; 0xf4af4 + mov byte [es:si+025h], cl ; 26 88 4c 25 ; 0xf4af6 + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4afa eltorito.c:913 + xor al, al ; 30 c0 ; 0xf4afd + or AL, strict byte 001h ; 0c 01 ; 0xf4aff + mov word [bp+018h], ax ; 89 46 18 ; 0xf4b01 + jmp short 04b3bh ; eb 35 ; 0xf4b04 eltorito.c:914 + test cl, cl ; 84 c9 ; 0xf4b06 eltorito.c:916 + jne short 04b16h ; 75 0c ; 0xf4b08 + or bh, 0b0h ; 80 cf b0 ; 0xf4b0a eltorito.c:917 + mov word [bp+018h], bx ; 89 5e 18 ; 0xf4b0d + mov byte [bp+018h], cl ; 88 4e 18 ; 0xf4b10 eltorito.c:918 + jmp near 04bafh ; e9 99 00 ; 0xf4b13 eltorito.c:919 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf4b16 eltorito.c:920 + xor ah, ah ; 30 e4 ; 0xf4b19 + mov dx, strict word 0001ch ; ba 1c 00 ; 0xf4b1b + imul dx ; f7 ea ; 0xf4b1e + db 0feh, 0c9h + ; dec cl ; fe c9 ; 0xf4b20 eltorito.c:921 + mov es, [bp-014h] ; 8e 46 ec ; 0xf4b22 + add si, ax ; 01 c6 ; 0xf4b25 + mov byte [es:si+025h], cl ; 26 88 4c 25 ; 0xf4b27 + test cl, cl ; 84 c9 ; 0xf4b2b eltorito.c:922 + jne short 04b3eh ; 75 0f ; 0xf4b2d + xor ax, ax ; 31 c0 ; 0xf4b2f + mov dx, word [bp+018h] ; 8b 56 18 ; 0xf4b31 + xor dl, dl ; 30 d2 ; 0xf4b34 + or dx, ax ; 09 c2 ; 0xf4b36 + mov word [bp+018h], dx ; 89 56 18 ; 0xf4b38 + jmp near 04bc5h ; e9 87 00 ; 0xf4b3b + mov ax, strict word 00001h ; b8 01 00 ; 0xf4b3e + jmp short 04b31h ; eb ee ; 0xf4b41 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf4b43 eltorito.c:932 + xor ah, ah ; 30 e4 ; 0xf4b46 + mov dx, strict word 0001ch ; ba 1c 00 ; 0xf4b48 + imul dx ; f7 ea ; 0xf4b4b + mov es, [bp-014h] ; 8e 46 ec ; 0xf4b4d + add si, ax ; 01 c6 ; 0xf4b50 + mov cl, byte [es:si+025h] ; 26 8a 4c 25 ; 0xf4b52 + test cl, cl ; 84 c9 ; 0xf4b56 eltorito.c:934 + je short 04b60h ; 74 06 ; 0xf4b58 + or bh, 0b1h ; 80 cf b1 ; 0xf4b5a eltorito.c:935 + jmp near 04919h ; e9 b9 fd ; 0xf4b5d + je short 04bc5h ; 74 63 ; 0xf4b60 eltorito.c:957 + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4b62 eltorito.c:958 + xor ah, ah ; 30 e4 ; 0xf4b65 + or ah, 0b1h ; 80 cc b1 ; 0xf4b67 + jmp short 04bach ; eb 40 ; 0xf4b6a + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf4b6c eltorito.c:966 + xor ah, ah ; 30 e4 ; 0xf4b6f + push ax ; 50 ; 0xf4b71 + mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf4b72 + mov dx, word [bp+006h] ; 8b 56 06 ; 0xf4b75 + mov bx, si ; 89 f3 ; 0xf4b78 + mov cx, word [bp-014h] ; 8b 4e ec ; 0xf4b7a + call 05a95h ; e8 15 0f ; 0xf4b7d + test ax, ax ; 85 c0 ; 0xf4b80 + je short 04bc5h ; 74 41 ; 0xf4b82 + jmp short 04ba4h ; eb 1e ; 0xf4b84 eltorito.c:967 + or bh, 006h ; 80 cf 06 ; 0xf4b86 eltorito.c:974 + mov word [bp+018h], bx ; 89 5e 18 ; 0xf4b89 + jmp short 04bbfh ; eb 31 ; 0xf4b8c eltorito.c:975 + cmp bx, strict byte 00006h ; 83 fb 06 ; 0xf4b8e eltorito.c:980 + je short 04bc5h ; 74 32 ; 0xf4b91 + cmp bx, strict byte 00001h ; 83 fb 01 ; 0xf4b93 + jc short 04ba4h ; 72 0c ; 0xf4b96 + jbe short 04bc5h ; 76 2b ; 0xf4b98 + cmp bx, strict byte 00003h ; 83 fb 03 ; 0xf4b9a + jc short 04ba4h ; 72 05 ; 0xf4b9d + cmp bx, strict byte 00004h ; 83 fb 04 ; 0xf4b9f + jbe short 04bc5h ; 76 21 ; 0xf4ba2 + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4ba4 eltorito.c:1007 + xor ah, ah ; 30 e4 ; 0xf4ba7 + or ah, 001h ; 80 cc 01 ; 0xf4ba9 + mov word [bp+018h], ax ; 89 46 18 ; 0xf4bac + mov al, byte [bp+019h] ; 8a 46 19 ; 0xf4baf eltorito.c:1009 + xor ah, ah ; 30 e4 ; 0xf4bb2 + mov bx, strict word 00074h ; bb 74 00 ; 0xf4bb4 eltorito.c:43 + mov dx, strict word 00040h ; ba 40 00 ; 0xf4bb7 + mov es, dx ; 8e c2 ; 0xf4bba + mov byte [es:bx], al ; 26 88 07 ; 0xf4bbc + or byte [bp+01eh], 001h ; 80 4e 1e 01 ; 0xf4bbf eltorito.c:1011 + jmp short 04bd9h ; eb 14 ; 0xf4bc3 eltorito.c:1012 + mov byte [bp+019h], 000h ; c6 46 19 00 ; 0xf4bc5 eltorito.c:1015 + mov bx, strict word 00074h ; bb 74 00 ; 0xf4bc9 eltorito.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf4bcc + mov es, ax ; 8e c0 ; 0xf4bcf + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf4bd1 + and byte [bp+01eh], 0feh ; 80 66 1e fe ; 0xf4bd5 eltorito.c:1018 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf4bd9 eltorito.c:1020 + pop di ; 5f ; 0xf4bdc + pop si ; 5e ; 0xf4bdd + pop bp ; 5d ; 0xf4bde + retn ; c3 ; 0xf4bdf + ; disGetNextSymbol 0xf4be0 LB 0x5368 -> off=0x0 cb=0000000000000051 uValue=00000000000f35e0 'print_boot_device' +print_boot_device: ; 0xf4be0 LB 0x51 + push bp ; 55 ; 0xf4be0 boot.c:109 + mov bp, sp ; 89 e5 ; 0xf4be1 + push cx ; 51 ; 0xf4be3 + test al, al ; 84 c0 ; 0xf4be4 boot.c:117 + je short 04bedh ; 74 05 ; 0xf4be6 + mov dx, strict word 00002h ; ba 02 00 ; 0xf4be8 + jmp short 04c07h ; eb 1a ; 0xf4beb boot.c:118 + test dl, dl ; 84 d2 ; 0xf4bed + je short 04bf6h ; 74 05 ; 0xf4bef + mov dx, strict word 00003h ; ba 03 00 ; 0xf4bf1 + jmp short 04c07h ; eb 11 ; 0xf4bf4 boot.c:119 + test bl, 080h ; f6 c3 80 ; 0xf4bf6 + jne short 04bffh ; 75 04 ; 0xf4bf9 + xor dh, dh ; 30 f6 ; 0xf4bfb + jmp short 04c07h ; eb 08 ; 0xf4bfd boot.c:120 + test bl, 080h ; f6 c3 80 ; 0xf4bff + je short 04c2bh ; 74 27 ; 0xf4c02 + mov dx, strict word 00001h ; ba 01 00 ; 0xf4c04 + mov bx, 00da0h ; bb a0 0d ; 0xf4c07 boot.c:123 + mov cx, ds ; 8c d9 ; 0xf4c0a + mov ax, strict word 00004h ; b8 04 00 ; 0xf4c0c + call 018cch ; e8 ba cc ; 0xf4c0f + mov ax, dx ; 89 d0 ; 0xf4c12 + mov dx, strict word 0000ah ; ba 0a 00 ; 0xf4c14 + imul dx ; f7 ea ; 0xf4c17 + add ax, 00dc6h ; 05 c6 0d ; 0xf4c19 + push ax ; 50 ; 0xf4c1c + mov ax, 00494h ; b8 94 04 ; 0xf4c1d + push ax ; 50 ; 0xf4c20 + mov ax, strict word 00004h ; b8 04 00 ; 0xf4c21 + push ax ; 50 ; 0xf4c24 + call 0190fh ; e8 e7 cc ; 0xf4c25 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf4c28 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf4c2b boot.c:124 + pop cx ; 59 ; 0xf4c2e + pop bp ; 5d ; 0xf4c2f + retn ; c3 ; 0xf4c30 + ; disGetNextSymbol 0xf4c31 LB 0x5317 -> off=0x0 cb=000000000000009f uValue=00000000000f3631 'print_boot_failure' +print_boot_failure: ; 0xf4c31 LB 0x9f + push bp ; 55 ; 0xf4c31 boot.c:131 + mov bp, sp ; 89 e5 ; 0xf4c32 + push si ; 56 ; 0xf4c34 + mov dh, cl ; 88 ce ; 0xf4c35 + mov cl, bl ; 88 d9 ; 0xf4c37 boot.c:134 + and cl, 07fh ; 80 e1 7f ; 0xf4c39 + xor ch, ch ; 30 ed ; 0xf4c3c + mov si, cx ; 89 ce ; 0xf4c3e + test al, al ; 84 c0 ; 0xf4c40 boot.c:142 + je short 04c63h ; 74 1f ; 0xf4c42 + mov bx, 00da0h ; bb a0 0d ; 0xf4c44 boot.c:143 + mov cx, ds ; 8c d9 ; 0xf4c47 + mov ax, strict word 00004h ; b8 04 00 ; 0xf4c49 + call 018cch ; e8 7d cc ; 0xf4c4c + mov cx, 00ddah ; b9 da 0d ; 0xf4c4f + push cx ; 51 ; 0xf4c52 + mov cx, 004a8h ; b9 a8 04 ; 0xf4c53 + push cx ; 51 ; 0xf4c56 + mov cx, strict word 00004h ; b9 04 00 ; 0xf4c57 + push cx ; 51 ; 0xf4c5a + call 0190fh ; e8 b1 cc ; 0xf4c5b + add sp, strict byte 00006h ; 83 c4 06 ; 0xf4c5e + jmp short 04cabh ; eb 48 ; 0xf4c61 boot.c:144 + test dl, dl ; 84 d2 ; 0xf4c63 + je short 04c77h ; 74 10 ; 0xf4c65 + mov bx, 00da0h ; bb a0 0d ; 0xf4c67 boot.c:145 + mov cx, ds ; 8c d9 ; 0xf4c6a + mov ax, strict word 00004h ; b8 04 00 ; 0xf4c6c + call 018cch ; e8 5a cc ; 0xf4c6f + mov cx, 00de4h ; b9 e4 0d ; 0xf4c72 + jmp short 04c52h ; eb db ; 0xf4c75 + test bl, 080h ; f6 c3 80 ; 0xf4c77 boot.c:146 + je short 04c8dh ; 74 11 ; 0xf4c7a + mov bx, 00da0h ; bb a0 0d ; 0xf4c7c boot.c:147 + mov cx, ds ; 8c d9 ; 0xf4c7f + mov ax, strict word 00004h ; b8 04 00 ; 0xf4c81 + call 018cch ; e8 45 cc ; 0xf4c84 + push si ; 56 ; 0xf4c87 + mov cx, 00dd0h ; b9 d0 0d ; 0xf4c88 + jmp short 04c9ch ; eb 0f ; 0xf4c8b boot.c:148 + mov bx, 00da0h ; bb a0 0d ; 0xf4c8d boot.c:149 + mov cx, ds ; 8c d9 ; 0xf4c90 + mov ax, strict word 00004h ; b8 04 00 ; 0xf4c92 + call 018cch ; e8 34 cc ; 0xf4c95 + push si ; 56 ; 0xf4c98 + mov cx, 00dc6h ; b9 c6 0d ; 0xf4c99 + push cx ; 51 ; 0xf4c9c + mov cx, 004bdh ; b9 bd 04 ; 0xf4c9d + push cx ; 51 ; 0xf4ca0 + mov cx, strict word 00004h ; b9 04 00 ; 0xf4ca1 + push cx ; 51 ; 0xf4ca4 + call 0190fh ; e8 67 cc ; 0xf4ca5 + add sp, strict byte 00008h ; 83 c4 08 ; 0xf4ca8 + cmp byte [bp+004h], 001h ; 80 7e 04 01 ; 0xf4cab boot.c:151 + jne short 04cc8h ; 75 17 ; 0xf4caf + test dh, dh ; 84 f6 ; 0xf4cb1 boot.c:152 + jne short 04cbah ; 75 05 ; 0xf4cb3 + mov dx, 004d5h ; ba d5 04 ; 0xf4cb5 boot.c:153 + jmp short 04cbdh ; eb 03 ; 0xf4cb8 boot.c:154 + mov dx, 004ffh ; ba ff 04 ; 0xf4cba boot.c:155 + push dx ; 52 ; 0xf4cbd + mov dx, strict word 00007h ; ba 07 00 ; 0xf4cbe + push dx ; 52 ; 0xf4cc1 + call 0190fh ; e8 4a cc ; 0xf4cc2 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf4cc5 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf4cc8 boot.c:157 + pop si ; 5e ; 0xf4ccb + pop bp ; 5d ; 0xf4ccc + retn 00002h ; c2 02 00 ; 0xf4ccd + ; disGetNextSymbol 0xf4cd0 LB 0x5278 -> off=0x0 cb=000000000000002a uValue=00000000000f36d0 'print_cdromboot_failure' +print_cdromboot_failure: ; 0xf4cd0 LB 0x2a + push bp ; 55 ; 0xf4cd0 boot.c:163 + mov bp, sp ; 89 e5 ; 0xf4cd1 + push bx ; 53 ; 0xf4cd3 + push cx ; 51 ; 0xf4cd4 + push dx ; 52 ; 0xf4cd5 + mov dx, ax ; 89 c2 ; 0xf4cd6 + mov bx, 00da0h ; bb a0 0d ; 0xf4cd8 boot.c:165 + mov cx, ds ; 8c d9 ; 0xf4cdb + mov ax, strict word 00004h ; b8 04 00 ; 0xf4cdd + call 018cch ; e8 e9 cb ; 0xf4ce0 + push dx ; 52 ; 0xf4ce3 + mov dx, 00534h ; ba 34 05 ; 0xf4ce4 + push dx ; 52 ; 0xf4ce7 + mov dx, strict word 00004h ; ba 04 00 ; 0xf4ce8 + push dx ; 52 ; 0xf4ceb + call 0190fh ; e8 20 cc ; 0xf4cec + add sp, strict byte 00006h ; 83 c4 06 ; 0xf4cef + lea sp, [bp-006h] ; 8d 66 fa ; 0xf4cf2 boot.c:167 + pop dx ; 5a ; 0xf4cf5 + pop cx ; 59 ; 0xf4cf6 + pop bx ; 5b ; 0xf4cf7 + pop bp ; 5d ; 0xf4cf8 + retn ; c3 ; 0xf4cf9 + ; disGetNextSymbol 0xf4cfa LB 0x524e -> off=0x0 cb=0000000000000266 uValue=00000000000f36fa 'int19_function' +int19_function: ; 0xf4cfa LB 0x266 + push bp ; 55 ; 0xf4cfa boot.c:170 + mov bp, sp ; 89 e5 ; 0xf4cfb + push si ; 56 ; 0xf4cfd + push di ; 57 ; 0xf4cfe + sub sp, strict byte 0000eh ; 83 ec 0e ; 0xf4cff + mov di, strict word 0000eh ; bf 0e 00 ; 0xf4d02 boot.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf4d05 + mov es, ax ; 8e c0 ; 0xf4d08 + mov di, word [es:di] ; 26 8b 3d ; 0xf4d0a + mov word [bp-00eh], di ; 89 7e f2 ; 0xf4d0d boot.c:49 + mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf4d10 boot.c:181 + mov ax, strict word 0003dh ; b8 3d 00 ; 0xf4d14 boot.c:204 + call 01652h ; e8 38 c9 ; 0xf4d17 + mov bl, al ; 88 c3 ; 0xf4d1a + xor bh, bh ; 30 ff ; 0xf4d1c + mov ax, strict word 00038h ; b8 38 00 ; 0xf4d1e boot.c:205 + call 01652h ; e8 2e c9 ; 0xf4d21 + and AL, strict byte 0f0h ; 24 f0 ; 0xf4d24 + xor ah, ah ; 30 e4 ; 0xf4d26 + mov CL, strict byte 004h ; b1 04 ; 0xf4d28 + sal ax, CL ; d3 e0 ; 0xf4d2a + mov dx, bx ; 89 da ; 0xf4d2c + or dx, ax ; 09 c2 ; 0xf4d2e + mov ax, strict word 0003ch ; b8 3c 00 ; 0xf4d30 boot.c:206 + call 01652h ; e8 1c c9 ; 0xf4d33 + and AL, strict byte 00fh ; 24 0f ; 0xf4d36 + xor ah, ah ; 30 e4 ; 0xf4d38 + mov CL, strict byte 00ch ; b1 0c ; 0xf4d3a + sal ax, CL ; d3 e0 ; 0xf4d3c + or dx, ax ; 09 c2 ; 0xf4d3e + mov bx, 0037dh ; bb 7d 03 ; 0xf4d40 boot.c:38 + mov es, di ; 8e c7 ; 0xf4d43 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf4d45 + test al, al ; 84 c0 ; 0xf4d48 boot.c:39 + je short 04d50h ; 74 04 ; 0xf4d4a + mov dl, al ; 88 c2 ; 0xf4d4c boot.c:38 + xor dh, dh ; 30 f6 ; 0xf4d4e boot.c:39 + cmp byte [bp+004h], 001h ; 80 7e 04 01 ; 0xf4d50 boot.c:210 + jne short 04d67h ; 75 11 ; 0xf4d54 + mov ax, strict word 0003ch ; b8 3c 00 ; 0xf4d56 boot.c:211 + call 01652h ; e8 f6 c8 ; 0xf4d59 + and AL, strict byte 0f0h ; 24 f0 ; 0xf4d5c + xor ah, ah ; 30 e4 ; 0xf4d5e + mov CL, strict byte 004h ; b1 04 ; 0xf4d60 + sar ax, CL ; d3 f8 ; 0xf4d62 + call 078b3h ; e8 4c 2b ; 0xf4d64 + cmp byte [bp+004h], 002h ; 80 7e 04 02 ; 0xf4d67 boot.c:213 + jne short 04d71h ; 75 04 ; 0xf4d6b + mov CL, strict byte 004h ; b1 04 ; 0xf4d6d + shr dx, CL ; d3 ea ; 0xf4d6f + cmp byte [bp+004h], 003h ; 80 7e 04 03 ; 0xf4d71 boot.c:214 + jne short 04d7bh ; 75 04 ; 0xf4d75 + mov dl, dh ; 88 f2 ; 0xf4d77 + xor dh, dh ; 30 f6 ; 0xf4d79 + cmp byte [bp+004h], 004h ; 80 7e 04 04 ; 0xf4d7b boot.c:215 + jne short 04d85h ; 75 04 ; 0xf4d7f + mov CL, strict byte 00ch ; b1 0c ; 0xf4d81 + shr dx, CL ; d3 ea ; 0xf4d83 + cmp dx, strict byte 00010h ; 83 fa 10 ; 0xf4d85 boot.c:216 + jnc short 04d8eh ; 73 04 ; 0xf4d88 + mov byte [bp-00ch], 001h ; c6 46 f4 01 ; 0xf4d8a + xor al, al ; 30 c0 ; 0xf4d8e boot.c:217 + mov byte [bp-006h], al ; 88 46 fa ; 0xf4d90 + mov byte [bp-008h], al ; 88 46 f8 ; 0xf4d93 + mov byte [bp-00ah], al ; 88 46 f6 ; 0xf4d96 boot.c:218 + mov bx, 00da0h ; bb a0 0d ; 0xf4d99 boot.c:219 + mov cx, ds ; 8c d9 ; 0xf4d9c + mov ax, strict word 00004h ; b8 04 00 ; 0xf4d9e + call 018cch ; e8 28 cb ; 0xf4da1 + push dx ; 52 ; 0xf4da4 + mov al, byte [bp+004h] ; 8a 46 04 ; 0xf4da5 + xor ah, ah ; 30 e4 ; 0xf4da8 + push ax ; 50 ; 0xf4daa + mov ax, 00554h ; b8 54 05 ; 0xf4dab + push ax ; 50 ; 0xf4dae + mov ax, strict word 00004h ; b8 04 00 ; 0xf4daf + push ax ; 50 ; 0xf4db2 + call 0190fh ; e8 59 cb ; 0xf4db3 + add sp, strict byte 00008h ; 83 c4 08 ; 0xf4db6 + and dx, strict byte 0000fh ; 83 e2 0f ; 0xf4db9 boot.c:221 + cmp dx, strict byte 00002h ; 83 fa 02 ; 0xf4dbc + jc short 04dcfh ; 72 0e ; 0xf4dbf + jbe short 04ddeh ; 76 1b ; 0xf4dc1 + cmp dx, strict byte 00004h ; 83 fa 04 ; 0xf4dc3 + je short 04dfbh ; 74 33 ; 0xf4dc6 + cmp dx, strict byte 00003h ; 83 fa 03 ; 0xf4dc8 + je short 04df1h ; 74 24 ; 0xf4dcb + jmp short 04e2ah ; eb 5b ; 0xf4dcd + cmp dx, strict byte 00001h ; 83 fa 01 ; 0xf4dcf + jne short 04e2ah ; 75 56 ; 0xf4dd2 + xor al, al ; 30 c0 ; 0xf4dd4 boot.c:223 + mov byte [bp-006h], al ; 88 46 fa ; 0xf4dd6 + mov byte [bp-008h], al ; 88 46 f8 ; 0xf4dd9 boot.c:224 + jmp short 04e3dh ; eb 5f ; 0xf4ddc boot.c:225 + mov bx, 0037ch ; bb 7c 03 ; 0xf4dde boot.c:38 + mov es, [bp-00eh] ; 8e 46 f2 ; 0xf4de1 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf4de4 + add AL, strict byte 080h ; 04 80 ; 0xf4de7 boot.c:231 + mov byte [bp-006h], al ; 88 46 fa ; 0xf4de9 + mov byte [bp-008h], dh ; 88 76 f8 ; 0xf4dec boot.c:232 + jmp short 04e3dh ; eb 4c ; 0xf4def boot.c:233 + mov byte [bp-006h], 000h ; c6 46 fa 00 ; 0xf4df1 boot.c:236 + mov byte [bp-008h], 001h ; c6 46 f8 01 ; 0xf4df5 boot.c:237 + jmp short 04e05h ; eb 0a ; 0xf4df9 boot.c:238 + mov byte [bp-00ah], 001h ; c6 46 f6 01 ; 0xf4dfb boot.c:239 + cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf4dff boot.c:255 + je short 04e3dh ; 74 38 ; 0xf4e03 + call 03dd9h ; e8 d1 ef ; 0xf4e05 boot.c:256 + mov dx, ax ; 89 c2 ; 0xf4e08 + test AL, strict byte 0ffh ; a8 ff ; 0xf4e0a boot.c:259 + je short 04e31h ; 74 23 ; 0xf4e0c + call 04cd0h ; e8 bf fe ; 0xf4e0e boot.c:260 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf4e11 boot.c:261 + xor ah, ah ; 30 e4 ; 0xf4e14 + push ax ; 50 ; 0xf4e16 + mov bl, byte [bp-006h] ; 8a 5e fa ; 0xf4e17 + xor bh, bh ; 30 ff ; 0xf4e1a + mov dl, byte [bp-00ah] ; 8a 56 f6 ; 0xf4e1c + xor dh, dh ; 30 f6 ; 0xf4e1f + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf4e21 + mov cx, strict word 00001h ; b9 01 00 ; 0xf4e24 + call 04c31h ; e8 07 fe ; 0xf4e27 + xor ax, ax ; 31 c0 ; 0xf4e2a + xor dx, dx ; 31 d2 ; 0xf4e2c + jmp near 04f59h ; e9 28 01 ; 0xf4e2e + mov bx, 00372h ; bb 72 03 ; 0xf4e31 boot.c:48 + mov es, [bp-00eh] ; 8e 46 f2 ; 0xf4e34 + mov si, word [es:bx] ; 26 8b 37 ; 0xf4e37 + mov byte [bp-006h], dh ; 88 76 fa ; 0xf4e3a boot.c:266 + cmp byte [bp-00ah], 001h ; 80 7e f6 01 ; 0xf4e3d boot.c:272 + jne short 04e98h ; 75 55 ; 0xf4e41 + xor si, si ; 31 f6 ; 0xf4e43 boot.c:275 + mov ax, 0e200h ; b8 00 e2 ; 0xf4e45 + mov es, ax ; 8e c0 ; 0xf4e48 + cmp word [es:si], 0aa55h ; 26 81 3c 55 aa ; 0xf4e4a boot.c:276 + jne short 04e11h ; 75 c0 ; 0xf4e4f + mov di, ax ; 89 c7 ; 0xf4e51 boot.c:282 + mov si, word [es:si+01ah] ; 26 8b 74 1a ; 0xf4e53 + cmp word [es:si+002h], 0506eh ; 26 81 7c 02 6e 50 ; 0xf4e57 boot.c:283 + jne short 04e11h ; 75 b2 ; 0xf4e5d + cmp word [es:si], 05024h ; 26 81 3c 24 50 ; 0xf4e5f + jne short 04e11h ; 75 ab ; 0xf4e64 + mov bx, word [es:si+00eh] ; 26 8b 5c 0e ; 0xf4e66 boot.c:285 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf4e6a + mov dx, word [es:bx+002h] ; 26 8b 57 02 ; 0xf4e6d + cmp dx, 06568h ; 81 fa 68 65 ; 0xf4e71 boot.c:286 + jne short 04e9ah ; 75 23 ; 0xf4e75 + cmp ax, 07445h ; 3d 45 74 ; 0xf4e77 + jne short 04e9ah ; 75 1e ; 0xf4e7a + mov bl, byte [bp-006h] ; 8a 5e fa ; 0xf4e7c boot.c:288 + xor bh, bh ; 30 ff ; 0xf4e7f + mov dl, byte [bp-00ah] ; 8a 56 f6 ; 0xf4e81 + xor dh, dh ; 30 f6 ; 0xf4e84 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf4e86 + xor ah, ah ; 30 e4 ; 0xf4e89 + call 04be0h ; e8 52 fd ; 0xf4e8b + mov word [bp-012h], strict word 00006h ; c7 46 ee 06 00 ; 0xf4e8e boot.c:289 + mov word [bp-010h], di ; 89 7e f0 ; 0xf4e93 + jmp short 04eb9h ; eb 21 ; 0xf4e96 boot.c:292 + jmp short 04ebfh ; eb 25 ; 0xf4e98 + mov bl, byte [bp-006h] ; 8a 5e fa ; 0xf4e9a boot.c:295 + xor bh, bh ; 30 ff ; 0xf4e9d + mov dl, byte [bp-00ah] ; 8a 56 f6 ; 0xf4e9f + xor dh, dh ; 30 f6 ; 0xf4ea2 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf4ea4 + xor ah, ah ; 30 e4 ; 0xf4ea7 + call 04be0h ; e8 34 fd ; 0xf4ea9 + sti ; fb ; 0xf4eac boot.c:296 + mov word [bp-010h], di ; 89 7e f0 ; 0xf4ead boot.c:297 + mov es, di ; 8e c7 ; 0xf4eb0 + mov ax, word [es:si+01ah] ; 26 8b 44 1a ; 0xf4eb2 + mov word [bp-012h], ax ; 89 46 ee ; 0xf4eb6 + call far [bp-012h] ; ff 5e ee ; 0xf4eb9 boot.c:298 + jmp near 04e11h ; e9 52 ff ; 0xf4ebc boot.c:301 + cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf4ebf boot.c:309 + jne short 04eech ; 75 27 ; 0xf4ec3 + cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf4ec5 + jne short 04eech ; 75 21 ; 0xf4ec9 + mov si, 007c0h ; be c0 07 ; 0xf4ecb boot.c:310 + mov es, si ; 8e c6 ; 0xf4ece boot.c:312 + mov dl, byte [bp-006h] ; 8a 56 fa ; 0xf4ed0 + mov ax, 00201h ; b8 01 02 ; 0xf4ed3 + mov DH, strict byte 000h ; b6 00 ; 0xf4ed6 + mov cx, strict word 00001h ; b9 01 00 ; 0xf4ed8 + db 033h, 0dbh + ; xor bx, bx ; 33 db ; 0xf4edb + int 013h ; cd 13 ; 0xf4edd + mov ax, strict word 00000h ; b8 00 00 ; 0xf4edf + sbb ax, strict byte 00000h ; 83 d8 00 ; 0xf4ee2 + test ax, ax ; 85 c0 ; 0xf4ee5 boot.c:313 + je short 04eech ; 74 03 ; 0xf4ee7 + jmp near 04e11h ; e9 25 ff ; 0xf4ee9 + cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf4eec boot.c:328 + je short 04ef6h ; 74 04 ; 0xf4ef0 + xor al, al ; 30 c0 ; 0xf4ef2 + jmp short 04ef8h ; eb 02 ; 0xf4ef4 boot.c:329 + mov AL, strict byte 001h ; b0 01 ; 0xf4ef6 + cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf4ef8 boot.c:333 + je short 04f00h ; 74 02 ; 0xf4efc + mov AL, strict byte 001h ; b0 01 ; 0xf4efe boot.c:334 + xor bx, bx ; 31 db ; 0xf4f00 boot.c:48 + mov es, si ; 8e c6 ; 0xf4f02 + mov di, word [es:bx] ; 26 8b 3f ; 0xf4f04 + mov bx, strict word 00004h ; bb 04 00 ; 0xf4f07 boot.c:48 + mov dx, word [es:bx] ; 26 8b 17 ; 0xf4f0a + cmp di, dx ; 39 d7 ; 0xf4f0d boot.c:49 + je short 04f20h ; 74 0f ; 0xf4f0f + test al, al ; 84 c0 ; 0xf4f11 + jne short 04f38h ; 75 23 ; 0xf4f13 + mov bx, 001feh ; bb fe 01 ; 0xf4f15 boot.c:48 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf4f18 + cmp ax, 0aa55h ; 3d 55 aa ; 0xf4f1b boot.c:49 + je short 04f38h ; 74 18 ; 0xf4f1e + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf4f20 boot.c:340 + xor ah, ah ; 30 e4 ; 0xf4f23 + push ax ; 50 ; 0xf4f25 + mov bl, byte [bp-006h] ; 8a 5e fa ; 0xf4f26 + xor bh, bh ; 30 ff ; 0xf4f29 + mov dl, byte [bp-00ah] ; 8a 56 f6 ; 0xf4f2b + xor dh, dh ; 30 f6 ; 0xf4f2e + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf4f30 + xor cx, cx ; 31 c9 ; 0xf4f33 + jmp near 04e27h ; e9 ef fe ; 0xf4f35 + mov bl, byte [bp-006h] ; 8a 5e fa ; 0xf4f38 boot.c:346 + xor bh, bh ; 30 ff ; 0xf4f3b + mov dl, byte [bp-00ah] ; 8a 56 f6 ; 0xf4f3d + xor dh, dh ; 30 f6 ; 0xf4f40 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf4f42 + xor ah, ah ; 30 e4 ; 0xf4f45 + call 04be0h ; e8 96 fc ; 0xf4f47 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf4f4a boot.c:352 + xor ah, ah ; 30 e4 ; 0xf4f4d + mov bx, ax ; 89 c3 ; 0xf4f4f + xor dx, dx ; 31 d2 ; 0xf4f51 + xor al, al ; 30 c0 ; 0xf4f53 + add ax, si ; 01 f0 ; 0xf4f55 + adc dx, bx ; 11 da ; 0xf4f57 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf4f59 boot.c:353 + pop di ; 5f ; 0xf4f5c + pop si ; 5e ; 0xf4f5d + pop bp ; 5d ; 0xf4f5e + retn ; c3 ; 0xf4f5f + ; disGetNextSymbol 0xf4f60 LB 0x4fe8 -> off=0x0 cb=0000000000000016 uValue=00000000000f3960 'keyboard_panic' +keyboard_panic: ; 0xf4f60 LB 0x16 + push bp ; 55 ; 0xf4f60 keyboard.c:194 + mov bp, sp ; 89 e5 ; 0xf4f61 + push ax ; 50 ; 0xf4f63 keyboard.c:199 + mov ax, 00574h ; b8 74 05 ; 0xf4f64 + push ax ; 50 ; 0xf4f67 + mov ax, strict word 00007h ; b8 07 00 ; 0xf4f68 + push ax ; 50 ; 0xf4f6b + call 0190fh ; e8 a0 c9 ; 0xf4f6c + add sp, strict byte 00006h ; 83 c4 06 ; 0xf4f6f + mov sp, bp ; 89 ec ; 0xf4f72 keyboard.c:200 + pop bp ; 5d ; 0xf4f74 + retn ; c3 ; 0xf4f75 + ; disGetNextSymbol 0xf4f76 LB 0x4fd2 -> off=0x0 cb=000000000000026a uValue=00000000000f3976 'keyboard_init' +keyboard_init: ; 0xf4f76 LB 0x26a + push bp ; 55 ; 0xf4f76 keyboard.c:208 + mov bp, sp ; 89 e5 ; 0xf4f77 + mov AL, strict byte 0aah ; b0 aa ; 0xf4f79 keyboard.c:214 + mov dx, strict word 00064h ; ba 64 00 ; 0xf4f7b + out DX, AL ; ee ; 0xf4f7e + mov bx, strict word 0ffffh ; bb ff ff ; 0xf4f7f keyboard.c:217 + mov dx, strict word 00064h ; ba 64 00 ; 0xf4f82 keyboard.c:218 + in AL, DX ; ec ; 0xf4f85 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4f86 + test AL, strict byte 002h ; a8 02 ; 0xf4f88 + je short 04f99h ; 74 0d ; 0xf4f8a + dec bx ; 4b ; 0xf4f8c + test bx, bx ; 85 db ; 0xf4f8d + jbe short 04f99h ; 76 08 ; 0xf4f8f + xor al, al ; 30 c0 ; 0xf4f91 + mov dx, 00080h ; ba 80 00 ; 0xf4f93 + out DX, AL ; ee ; 0xf4f96 + jmp short 04f82h ; eb e9 ; 0xf4f97 + test bx, bx ; 85 db ; 0xf4f99 keyboard.c:219 + jne short 04fa2h ; 75 05 ; 0xf4f9b + xor ax, ax ; 31 c0 ; 0xf4f9d + call 04f60h ; e8 be ff ; 0xf4f9f + mov bx, strict word 0ffffh ; bb ff ff ; 0xf4fa2 keyboard.c:222 + mov dx, strict word 00064h ; ba 64 00 ; 0xf4fa5 keyboard.c:223 + in AL, DX ; ec ; 0xf4fa8 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4fa9 + test AL, strict byte 001h ; a8 01 ; 0xf4fab + jne short 04fbch ; 75 0d ; 0xf4fad + dec bx ; 4b ; 0xf4faf + test bx, bx ; 85 db ; 0xf4fb0 + jbe short 04fbch ; 76 08 ; 0xf4fb2 + mov AL, strict byte 001h ; b0 01 ; 0xf4fb4 + mov dx, 00080h ; ba 80 00 ; 0xf4fb6 + out DX, AL ; ee ; 0xf4fb9 + jmp short 04fa5h ; eb e9 ; 0xf4fba + test bx, bx ; 85 db ; 0xf4fbc keyboard.c:224 + jne short 04fc6h ; 75 06 ; 0xf4fbe + mov ax, strict word 00001h ; b8 01 00 ; 0xf4fc0 + call 04f60h ; e8 9a ff ; 0xf4fc3 + mov dx, strict word 00060h ; ba 60 00 ; 0xf4fc6 keyboard.c:227 + in AL, DX ; ec ; 0xf4fc9 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4fca + cmp ax, strict word 00055h ; 3d 55 00 ; 0xf4fcc + je short 04fd7h ; 74 06 ; 0xf4fcf + mov ax, 003dfh ; b8 df 03 ; 0xf4fd1 keyboard.c:228 + call 04f60h ; e8 89 ff ; 0xf4fd4 + mov AL, strict byte 0abh ; b0 ab ; 0xf4fd7 keyboard.c:232 + mov dx, strict word 00064h ; ba 64 00 ; 0xf4fd9 + out DX, AL ; ee ; 0xf4fdc + mov bx, strict word 0ffffh ; bb ff ff ; 0xf4fdd keyboard.c:235 + mov dx, strict word 00064h ; ba 64 00 ; 0xf4fe0 keyboard.c:236 + in AL, DX ; ec ; 0xf4fe3 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf4fe4 + test AL, strict byte 002h ; a8 02 ; 0xf4fe6 + je short 04ff7h ; 74 0d ; 0xf4fe8 + dec bx ; 4b ; 0xf4fea + test bx, bx ; 85 db ; 0xf4feb + jbe short 04ff7h ; 76 08 ; 0xf4fed + mov AL, strict byte 010h ; b0 10 ; 0xf4fef + mov dx, 00080h ; ba 80 00 ; 0xf4ff1 + out DX, AL ; ee ; 0xf4ff4 + jmp short 04fe0h ; eb e9 ; 0xf4ff5 + test bx, bx ; 85 db ; 0xf4ff7 keyboard.c:237 + jne short 05001h ; 75 06 ; 0xf4ff9 + mov ax, strict word 0000ah ; b8 0a 00 ; 0xf4ffb + call 04f60h ; e8 5f ff ; 0xf4ffe + mov bx, strict word 0ffffh ; bb ff ff ; 0xf5001 keyboard.c:240 + mov dx, strict word 00064h ; ba 64 00 ; 0xf5004 keyboard.c:241 + in AL, DX ; ec ; 0xf5007 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf5008 + test AL, strict byte 001h ; a8 01 ; 0xf500a + jne short 0501bh ; 75 0d ; 0xf500c + dec bx ; 4b ; 0xf500e + test bx, bx ; 85 db ; 0xf500f + jbe short 0501bh ; 76 08 ; 0xf5011 + mov AL, strict byte 011h ; b0 11 ; 0xf5013 + mov dx, 00080h ; ba 80 00 ; 0xf5015 + out DX, AL ; ee ; 0xf5018 + jmp short 05004h ; eb e9 ; 0xf5019 + test bx, bx ; 85 db ; 0xf501b keyboard.c:242 + jne short 05025h ; 75 06 ; 0xf501d + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf501f + call 04f60h ; e8 3b ff ; 0xf5022 + mov dx, strict word 00060h ; ba 60 00 ; 0xf5025 keyboard.c:246 + in AL, DX ; ec ; 0xf5028 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf5029 + test ax, ax ; 85 c0 ; 0xf502b + je short 05035h ; 74 06 ; 0xf502d + mov ax, 003e0h ; b8 e0 03 ; 0xf502f keyboard.c:247 + call 04f60h ; e8 2b ff ; 0xf5032 + mov AL, strict byte 0ffh ; b0 ff ; 0xf5035 keyboard.c:253 + mov dx, strict word 00060h ; ba 60 00 ; 0xf5037 + out DX, AL ; ee ; 0xf503a + mov bx, strict word 0ffffh ; bb ff ff ; 0xf503b keyboard.c:256 + mov dx, strict word 00064h ; ba 64 00 ; 0xf503e keyboard.c:257 + in AL, DX ; ec ; 0xf5041 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf5042 + test AL, strict byte 002h ; a8 02 ; 0xf5044 + je short 05055h ; 74 0d ; 0xf5046 + dec bx ; 4b ; 0xf5048 + test bx, bx ; 85 db ; 0xf5049 + jbe short 05055h ; 76 08 ; 0xf504b + mov AL, strict byte 020h ; b0 20 ; 0xf504d + mov dx, 00080h ; ba 80 00 ; 0xf504f + out DX, AL ; ee ; 0xf5052 + jmp short 0503eh ; eb e9 ; 0xf5053 + test bx, bx ; 85 db ; 0xf5055 keyboard.c:258 + jne short 0505fh ; 75 06 ; 0xf5057 + mov ax, strict word 00014h ; b8 14 00 ; 0xf5059 + call 04f60h ; e8 01 ff ; 0xf505c + mov bx, strict word 0ffffh ; bb ff ff ; 0xf505f keyboard.c:261 + mov dx, strict word 00064h ; ba 64 00 ; 0xf5062 keyboard.c:262 + in AL, DX ; ec ; 0xf5065 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf5066 + test AL, strict byte 001h ; a8 01 ; 0xf5068 + jne short 05079h ; 75 0d ; 0xf506a + dec bx ; 4b ; 0xf506c + test bx, bx ; 85 db ; 0xf506d + jbe short 05079h ; 76 08 ; 0xf506f + mov AL, strict byte 021h ; b0 21 ; 0xf5071 + mov dx, 00080h ; ba 80 00 ; 0xf5073 + out DX, AL ; ee ; 0xf5076 + jmp short 05062h ; eb e9 ; 0xf5077 + test bx, bx ; 85 db ; 0xf5079 keyboard.c:263 + jne short 05083h ; 75 06 ; 0xf507b + mov ax, strict word 00015h ; b8 15 00 ; 0xf507d + call 04f60h ; e8 dd fe ; 0xf5080 + mov dx, strict word 00060h ; ba 60 00 ; 0xf5083 keyboard.c:266 + in AL, DX ; ec ; 0xf5086 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf5087 + cmp ax, 000fah ; 3d fa 00 ; 0xf5089 + je short 05094h ; 74 06 ; 0xf508c + mov ax, 003e1h ; b8 e1 03 ; 0xf508e keyboard.c:267 + call 04f60h ; e8 cc fe ; 0xf5091 + mov dx, strict word 00064h ; ba 64 00 ; 0xf5094 keyboard.c:271 + in AL, DX ; ec ; 0xf5097 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf5098 + test AL, strict byte 001h ; a8 01 ; 0xf509a + jne short 050a6h ; 75 08 ; 0xf509c + mov AL, strict byte 031h ; b0 31 ; 0xf509e + mov dx, 00080h ; ba 80 00 ; 0xf50a0 + out DX, AL ; ee ; 0xf50a3 + jmp short 05094h ; eb ee ; 0xf50a4 + mov dx, strict word 00060h ; ba 60 00 ; 0xf50a6 keyboard.c:273 + in AL, DX ; ec ; 0xf50a9 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf50aa + cmp ax, 000aah ; 3d aa 00 ; 0xf50ac + je short 050bfh ; 74 0e ; 0xf50af + in AL, DX ; ec ; 0xf50b1 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf50b2 + cmp ax, 000aah ; 3d aa 00 ; 0xf50b4 + je short 050bfh ; 74 06 ; 0xf50b7 + mov ax, 003e2h ; b8 e2 03 ; 0xf50b9 keyboard.c:274 + call 04f60h ; e8 a1 fe ; 0xf50bc + mov AL, strict byte 0f5h ; b0 f5 ; 0xf50bf keyboard.c:278 + mov dx, strict word 00060h ; ba 60 00 ; 0xf50c1 + out DX, AL ; ee ; 0xf50c4 + mov bx, strict word 0ffffh ; bb ff ff ; 0xf50c5 keyboard.c:281 + mov dx, strict word 00064h ; ba 64 00 ; 0xf50c8 keyboard.c:282 + in AL, DX ; ec ; 0xf50cb + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf50cc + test AL, strict byte 002h ; a8 02 ; 0xf50ce + je short 050dfh ; 74 0d ; 0xf50d0 + dec bx ; 4b ; 0xf50d2 + test bx, bx ; 85 db ; 0xf50d3 + jbe short 050dfh ; 76 08 ; 0xf50d5 + mov AL, strict byte 040h ; b0 40 ; 0xf50d7 + mov dx, 00080h ; ba 80 00 ; 0xf50d9 + out DX, AL ; ee ; 0xf50dc + jmp short 050c8h ; eb e9 ; 0xf50dd + test bx, bx ; 85 db ; 0xf50df keyboard.c:283 + jne short 050e9h ; 75 06 ; 0xf50e1 + mov ax, strict word 00028h ; b8 28 00 ; 0xf50e3 + call 04f60h ; e8 77 fe ; 0xf50e6 + mov bx, strict word 0ffffh ; bb ff ff ; 0xf50e9 keyboard.c:286 + mov dx, strict word 00064h ; ba 64 00 ; 0xf50ec keyboard.c:287 + in AL, DX ; ec ; 0xf50ef + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf50f0 + test AL, strict byte 001h ; a8 01 ; 0xf50f2 + jne short 05103h ; 75 0d ; 0xf50f4 + dec bx ; 4b ; 0xf50f6 + test bx, bx ; 85 db ; 0xf50f7 + jbe short 05103h ; 76 08 ; 0xf50f9 + mov AL, strict byte 041h ; b0 41 ; 0xf50fb + mov dx, 00080h ; ba 80 00 ; 0xf50fd + out DX, AL ; ee ; 0xf5100 + jmp short 050ech ; eb e9 ; 0xf5101 + test bx, bx ; 85 db ; 0xf5103 keyboard.c:288 + jne short 0510dh ; 75 06 ; 0xf5105 + mov ax, strict word 00029h ; b8 29 00 ; 0xf5107 + call 04f60h ; e8 53 fe ; 0xf510a + mov dx, strict word 00060h ; ba 60 00 ; 0xf510d keyboard.c:291 + in AL, DX ; ec ; 0xf5110 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf5111 + cmp ax, 000fah ; 3d fa 00 ; 0xf5113 + je short 0511eh ; 74 06 ; 0xf5116 + mov ax, 003e3h ; b8 e3 03 ; 0xf5118 keyboard.c:292 + call 04f60h ; e8 42 fe ; 0xf511b + mov AL, strict byte 060h ; b0 60 ; 0xf511e keyboard.c:296 + mov dx, strict word 00064h ; ba 64 00 ; 0xf5120 + out DX, AL ; ee ; 0xf5123 + mov bx, strict word 0ffffh ; bb ff ff ; 0xf5124 keyboard.c:299 + mov dx, strict word 00064h ; ba 64 00 ; 0xf5127 keyboard.c:300 + in AL, DX ; ec ; 0xf512a + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf512b + test AL, strict byte 002h ; a8 02 ; 0xf512d + je short 0513eh ; 74 0d ; 0xf512f + dec bx ; 4b ; 0xf5131 + test bx, bx ; 85 db ; 0xf5132 + jbe short 0513eh ; 76 08 ; 0xf5134 + mov AL, strict byte 050h ; b0 50 ; 0xf5136 + mov dx, 00080h ; ba 80 00 ; 0xf5138 + out DX, AL ; ee ; 0xf513b + jmp short 05127h ; eb e9 ; 0xf513c + test bx, bx ; 85 db ; 0xf513e keyboard.c:301 + jne short 05148h ; 75 06 ; 0xf5140 + mov ax, strict word 00032h ; b8 32 00 ; 0xf5142 + call 04f60h ; e8 18 fe ; 0xf5145 + mov AL, strict byte 065h ; b0 65 ; 0xf5148 keyboard.c:304 + mov dx, strict word 00060h ; ba 60 00 ; 0xf514a + out DX, AL ; ee ; 0xf514d + mov bx, strict word 0ffffh ; bb ff ff ; 0xf514e keyboard.c:307 + mov dx, strict word 00064h ; ba 64 00 ; 0xf5151 keyboard.c:308 + in AL, DX ; ec ; 0xf5154 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf5155 + test AL, strict byte 002h ; a8 02 ; 0xf5157 + je short 05168h ; 74 0d ; 0xf5159 + dec bx ; 4b ; 0xf515b + test bx, bx ; 85 db ; 0xf515c + jbe short 05168h ; 76 08 ; 0xf515e + mov AL, strict byte 060h ; b0 60 ; 0xf5160 + mov dx, 00080h ; ba 80 00 ; 0xf5162 + out DX, AL ; ee ; 0xf5165 + jmp short 05151h ; eb e9 ; 0xf5166 + test bx, bx ; 85 db ; 0xf5168 keyboard.c:309 + jne short 05172h ; 75 06 ; 0xf516a + mov ax, strict word 0003ch ; b8 3c 00 ; 0xf516c + call 04f60h ; e8 ee fd ; 0xf516f + mov AL, strict byte 0f4h ; b0 f4 ; 0xf5172 keyboard.c:312 + mov dx, strict word 00060h ; ba 60 00 ; 0xf5174 + out DX, AL ; ee ; 0xf5177 + mov bx, strict word 0ffffh ; bb ff ff ; 0xf5178 keyboard.c:315 + mov dx, strict word 00064h ; ba 64 00 ; 0xf517b keyboard.c:316 + in AL, DX ; ec ; 0xf517e + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf517f + test AL, strict byte 002h ; a8 02 ; 0xf5181 + je short 05192h ; 74 0d ; 0xf5183 + dec bx ; 4b ; 0xf5185 + test bx, bx ; 85 db ; 0xf5186 + jbe short 05192h ; 76 08 ; 0xf5188 + mov AL, strict byte 070h ; b0 70 ; 0xf518a + mov dx, 00080h ; ba 80 00 ; 0xf518c + out DX, AL ; ee ; 0xf518f + jmp short 0517bh ; eb e9 ; 0xf5190 + test bx, bx ; 85 db ; 0xf5192 keyboard.c:317 + jne short 0519ch ; 75 06 ; 0xf5194 + mov ax, strict word 00046h ; b8 46 00 ; 0xf5196 + call 04f60h ; e8 c4 fd ; 0xf5199 + mov bx, strict word 0ffffh ; bb ff ff ; 0xf519c keyboard.c:320 + mov dx, strict word 00064h ; ba 64 00 ; 0xf519f keyboard.c:321 + in AL, DX ; ec ; 0xf51a2 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf51a3 + test AL, strict byte 001h ; a8 01 ; 0xf51a5 + jne short 051b6h ; 75 0d ; 0xf51a7 + dec bx ; 4b ; 0xf51a9 + test bx, bx ; 85 db ; 0xf51aa + jbe short 051b6h ; 76 08 ; 0xf51ac + mov AL, strict byte 071h ; b0 71 ; 0xf51ae + mov dx, 00080h ; ba 80 00 ; 0xf51b0 + out DX, AL ; ee ; 0xf51b3 + jmp short 0519fh ; eb e9 ; 0xf51b4 + test bx, bx ; 85 db ; 0xf51b6 keyboard.c:322 + jne short 051c0h ; 75 06 ; 0xf51b8 + mov ax, strict word 00046h ; b8 46 00 ; 0xf51ba + call 04f60h ; e8 a0 fd ; 0xf51bd + mov dx, strict word 00060h ; ba 60 00 ; 0xf51c0 keyboard.c:325 + in AL, DX ; ec ; 0xf51c3 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf51c4 + cmp ax, 000fah ; 3d fa 00 ; 0xf51c6 + je short 051d1h ; 74 06 ; 0xf51c9 + mov ax, 003e4h ; b8 e4 03 ; 0xf51cb keyboard.c:326 + call 04f60h ; e8 8f fd ; 0xf51ce + mov AL, strict byte 0a8h ; b0 a8 ; 0xf51d1 keyboard.c:330 + mov dx, strict word 00064h ; ba 64 00 ; 0xf51d3 + out DX, AL ; ee ; 0xf51d6 + xor ax, ax ; 31 c0 ; 0xf51d7 keyboard.c:335 + call 0666fh ; e8 93 14 ; 0xf51d9 + mov sp, bp ; 89 ec ; 0xf51dc keyboard.c:336 + pop bp ; 5d ; 0xf51de + retn ; c3 ; 0xf51df + ; disGetNextSymbol 0xf51e0 LB 0x4d68 -> off=0x0 cb=0000000000000045 uValue=00000000000f3be0 'enqueue_key' +enqueue_key: ; 0xf51e0 LB 0x45 + push bx ; 53 ; 0xf51e0 keyboard.c:339 + push cx ; 51 ; 0xf51e1 + push bp ; 55 ; 0xf51e2 + mov bp, sp ; 89 e5 ; 0xf51e3 + mov dh, al ; 88 c6 ; 0xf51e5 + mov bx, strict word 0001ah ; bb 1a 00 ; 0xf51e7 keyboard.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf51ea + mov es, ax ; 8e c0 ; 0xf51ed + mov cx, word [es:bx] ; 26 8b 0f ; 0xf51ef + mov bx, strict word 0001ch ; bb 1c 00 ; 0xf51f2 keyboard.c:48 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf51f5 + mov bx, ax ; 89 c3 ; 0xf51f8 keyboard.c:354 + inc ax ; 40 ; 0xf51fa keyboard.c:355 + inc ax ; 40 ; 0xf51fb + cmp ax, strict word 0003eh ; 3d 3e 00 ; 0xf51fc keyboard.c:356 + jc short 05204h ; 72 03 ; 0xf51ff + mov ax, strict word 0001eh ; b8 1e 00 ; 0xf5201 keyboard.c:357 + cmp ax, cx ; 39 c8 ; 0xf5204 keyboard.c:359 + jne short 0520ch ; 75 04 ; 0xf5206 + xor ax, cx ; 31 c8 ; 0xf5208 keyboard.c:360 + jmp short 05221h ; eb 15 ; 0xf520a + mov cx, strict word 00040h ; b9 40 00 ; 0xf520c keyboard.c:43 + mov es, cx ; 8e c1 ; 0xf520f + mov byte [es:bx], dl ; 26 88 17 ; 0xf5211 + inc bx ; 43 ; 0xf5214 keyboard.c:363 + mov byte [es:bx], dh ; 26 88 37 ; 0xf5215 keyboard.c:43 + mov bx, strict word 0001ch ; bb 1c 00 ; 0xf5218 keyboard.c:53 + mov word [es:bx], ax ; 26 89 07 ; 0xf521b + mov ax, strict word 00001h ; b8 01 00 ; 0xf521e keyboard.c:365 + pop bp ; 5d ; 0xf5221 keyboard.c:366 + pop cx ; 59 ; 0xf5222 + pop bx ; 5b ; 0xf5223 + retn ; c3 ; 0xf5224 + ; disGetNextSymbol 0xf5225 LB 0x4d23 -> off=0x35 cb=000000000000040a uValue=00000000000f3c5a 'int09_function' + db 0d4h, 0c6h, 0c5h, 0bah, 0b8h, 0b6h, 0aah, 09dh, 054h, 053h, 046h, 045h, 03ah, 038h, 036h, 02ah + db 01dh, 0e9h, 054h, 015h, 053h, 0e3h, 052h, 0e3h, 052h, 07ah, 053h, 0beh, 052h, 0f4h, 053h, 04fh + db 054h, 0ceh, 054h, 0b3h, 054h, 049h, 053h, 0e3h, 052h, 0e3h, 052h, 0cdh, 053h, 0d5h, 052h, 037h + db 054h, 09eh, 054h, 0c9h, 054h +int09_function: ; 0xf525a LB 0x40a + push bp ; 55 ; 0xf525a keyboard.c:371 + mov bp, sp ; 89 e5 ; 0xf525b + push si ; 56 ; 0xf525d + push di ; 57 ; 0xf525e + sub sp, strict byte 00006h ; 83 ec 06 ; 0xf525f + mov al, byte [bp+014h] ; 8a 46 14 ; 0xf5262 keyboard.c:382 + mov byte [bp-006h], al ; 88 46 fa ; 0xf5265 + test al, al ; 84 c0 ; 0xf5268 keyboard.c:384 + jne short 05288h ; 75 1c ; 0xf526a + mov bx, 00da0h ; bb a0 0d ; 0xf526c keyboard.c:385 + mov cx, ds ; 8c d9 ; 0xf526f + mov ax, strict word 00004h ; b8 04 00 ; 0xf5271 + call 018cch ; e8 55 c6 ; 0xf5274 + mov ax, 00587h ; b8 87 05 ; 0xf5277 + push ax ; 50 ; 0xf527a + mov ax, strict word 00004h ; b8 04 00 ; 0xf527b + push ax ; 50 ; 0xf527e + call 0190fh ; e8 8d c6 ; 0xf527f + add sp, strict byte 00004h ; 83 c4 04 ; 0xf5282 + jmp near 053c6h ; e9 3e 01 ; 0xf5285 keyboard.c:386 + mov bx, strict word 00018h ; bb 18 00 ; 0xf5288 keyboard.c:38 + mov ax, strict word 00040h ; b8 40 00 ; 0xf528b + mov es, ax ; 8e c0 ; 0xf528e + mov ah, byte [es:bx] ; 26 8a 27 ; 0xf5290 + mov dl, ah ; 88 e2 ; 0xf5293 keyboard.c:39 + mov bx, 00096h ; bb 96 00 ; 0xf5295 keyboard.c:38 + mov dh, byte [es:bx] ; 26 8a 37 ; 0xf5298 + mov byte [bp-008h], dh ; 88 76 f8 ; 0xf529b keyboard.c:39 + mov bx, strict word 00017h ; bb 17 00 ; 0xf529e keyboard.c:38 + mov bh, byte [es:bx] ; 26 8a 3f ; 0xf52a1 + mov bl, bh ; 88 fb ; 0xf52a4 keyboard.c:39 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf52a6 keyboard.c:394 + push CS ; 0e ; 0xf52a9 + pop ES ; 07 ; 0xf52aa + mov cx, strict word 00012h ; b9 12 00 ; 0xf52ab + mov di, 05225h ; bf 25 52 ; 0xf52ae + repne scasb ; f2 ae ; 0xf52b1 + sal cx, 1 ; d1 e1 ; 0xf52b3 + mov di, cx ; 89 cf ; 0xf52b5 + mov cx, word [cs:di+05236h] ; 2e 8b 8d 36 52 ; 0xf52b7 + jmp cx ; ff e1 ; 0xf52bc + xor bl, 040h ; 80 f3 40 ; 0xf52be keyboard.c:396 + mov si, strict word 00017h ; be 17 00 ; 0xf52c1 keyboard.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf52c4 + mov es, ax ; 8e c0 ; 0xf52c7 + mov byte [es:si], bl ; 26 88 1c ; 0xf52c9 + or dl, 040h ; 80 ca 40 ; 0xf52cc keyboard.c:398 + mov bx, strict word 00018h ; bb 18 00 ; 0xf52cf keyboard.c:43 + jmp near 054c3h ; e9 ee 01 ; 0xf52d2 + and dl, 0bfh ; 80 e2 bf ; 0xf52d5 keyboard.c:402 + mov bx, strict word 00018h ; bb 18 00 ; 0xf52d8 keyboard.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf52db + mov es, ax ; 8e c0 ; 0xf52de + jmp near 054c3h ; e9 e0 01 ; 0xf52e0 + test byte [bp-008h], 002h ; f6 46 f8 02 ; 0xf52e3 keyboard.c:411 + jne short 05347h ; 75 5e ; 0xf52e7 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf52e9 keyboard.c:412 + and AL, strict byte 07fh ; 24 7f ; 0xf52ec + cmp AL, strict byte 02ah ; 3c 2a ; 0xf52ee + jne short 052f7h ; 75 05 ; 0xf52f0 + mov ax, strict word 00002h ; b8 02 00 ; 0xf52f2 + jmp short 052fah ; eb 03 ; 0xf52f5 + mov ax, strict word 00001h ; b8 01 00 ; 0xf52f7 + test byte [bp-006h], 080h ; f6 46 fa 80 ; 0xf52fa keyboard.c:413 + je short 05306h ; 74 06 ; 0xf52fe + not al ; f6 d0 ; 0xf5300 keyboard.c:414 + and bl, al ; 20 c3 ; 0xf5302 + jmp short 05308h ; eb 02 ; 0xf5304 keyboard.c:415 + or bl, al ; 08 c3 ; 0xf5306 keyboard.c:416 + mov si, strict word 00017h ; be 17 00 ; 0xf5308 keyboard.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf530b + mov es, ax ; 8e c0 ; 0xf530e + mov byte [es:si], bl ; 26 88 1c ; 0xf5310 + jmp short 05347h ; eb 32 ; 0xf5313 keyboard.c:419 + test dh, 001h ; f6 c6 01 ; 0xf5315 keyboard.c:422 + jne short 05378h ; 75 5e ; 0xf5318 + or bl, 004h ; 80 cb 04 ; 0xf531a keyboard.c:423 + mov cx, strict word 00040h ; b9 40 00 ; 0xf531d keyboard.c:41 + mov ax, strict word 00017h ; b8 17 00 ; 0xf5320 + mov dh, bl ; 88 de ; 0xf5323 + mov bx, ax ; 89 c3 ; 0xf5325 keyboard.c:43 + mov es, cx ; 8e c1 ; 0xf5327 + mov byte [es:bx], dh ; 26 88 37 ; 0xf5329 + test byte [bp-008h], 002h ; f6 46 f8 02 ; 0xf532c keyboard.c:425 + je short 0533eh ; 74 0c ; 0xf5330 + or byte [bp-008h], 004h ; 80 4e f8 04 ; 0xf5332 keyboard.c:426 + mov bx, 00096h ; bb 96 00 ; 0xf5336 keyboard.c:41 + mov dl, byte [bp-008h] ; 8a 56 f8 ; 0xf5339 + jmp short 05344h ; eb 06 ; 0xf533c keyboard.c:428 + or dl, 001h ; 80 ca 01 ; 0xf533e keyboard.c:429 + mov bx, strict word 00018h ; bb 18 00 ; 0xf5341 keyboard.c:41 + mov byte [es:bx], dl ; 26 88 17 ; 0xf5344 keyboard.c:43 + jmp short 05378h ; eb 2f ; 0xf5347 keyboard.c:433 + test dh, 001h ; f6 c6 01 ; 0xf5349 keyboard.c:435 + jne short 053a7h ; 75 59 ; 0xf534c + and bl, 0fbh ; 80 e3 fb ; 0xf534e keyboard.c:436 + mov si, strict word 00017h ; be 17 00 ; 0xf5351 keyboard.c:43 + mov cx, strict word 00040h ; b9 40 00 ; 0xf5354 + mov es, cx ; 8e c1 ; 0xf5357 + mov byte [es:si], bl ; 26 88 1c ; 0xf5359 + test dh, 002h ; f6 c6 02 ; 0xf535c keyboard.c:438 + je short 0536fh ; 74 0e ; 0xf535f + and dh, 0fbh ; 80 e6 fb ; 0xf5361 keyboard.c:439 + mov byte [bp-008h], dh ; 88 76 f8 ; 0xf5364 + mov bx, 00096h ; bb 96 00 ; 0xf5367 keyboard.c:43 + mov byte [es:bx], dh ; 26 88 37 ; 0xf536a + jmp short 053a7h ; eb 38 ; 0xf536d keyboard.c:441 + and dl, 0feh ; 80 e2 fe ; 0xf536f keyboard.c:442 + mov bx, strict word 00018h ; bb 18 00 ; 0xf5372 keyboard.c:43 + mov byte [es:bx], dl ; 26 88 17 ; 0xf5375 + jmp short 053a7h ; eb 2d ; 0xf5378 keyboard.c:446 + or bl, 008h ; 80 cb 08 ; 0xf537a keyboard.c:449 + mov ax, strict word 00040h ; b8 40 00 ; 0xf537d keyboard.c:41 + mov cx, strict word 00017h ; b9 17 00 ; 0xf5380 + mov dh, bl ; 88 de ; 0xf5383 + mov bx, cx ; 89 cb ; 0xf5385 keyboard.c:43 + mov es, ax ; 8e c0 ; 0xf5387 + mov byte [es:bx], dh ; 26 88 37 ; 0xf5389 + test byte [bp-008h], 002h ; f6 46 f8 02 ; 0xf538c keyboard.c:451 + je short 0539eh ; 74 0c ; 0xf5390 + or byte [bp-008h], 008h ; 80 4e f8 08 ; 0xf5392 keyboard.c:452 + mov bx, 00096h ; bb 96 00 ; 0xf5396 keyboard.c:41 + mov dl, byte [bp-008h] ; 8a 56 f8 ; 0xf5399 + jmp short 053a4h ; eb 06 ; 0xf539c keyboard.c:454 + or dl, 002h ; 80 ca 02 ; 0xf539e keyboard.c:455 + mov bx, strict word 00018h ; bb 18 00 ; 0xf53a1 keyboard.c:41 + mov byte [es:bx], dl ; 26 88 17 ; 0xf53a4 keyboard.c:43 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf53a7 keyboard.c:458 + and AL, strict byte 07fh ; 24 7f ; 0xf53aa + cmp AL, strict byte 01dh ; 3c 1d ; 0xf53ac + je short 053b4h ; 74 04 ; 0xf53ae + and byte [bp-008h], 0feh ; 80 66 f8 fe ; 0xf53b0 + and byte [bp-008h], 0fdh ; 80 66 f8 fd ; 0xf53b4 + mov bx, 00096h ; bb 96 00 ; 0xf53b8 + mov ax, strict word 00040h ; b8 40 00 ; 0xf53bb + mov es, ax ; 8e c0 ; 0xf53be + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf53c0 + mov byte [es:bx], al ; 26 88 07 ; 0xf53c3 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf53c6 + pop di ; 5f ; 0xf53c9 + pop si ; 5e ; 0xf53ca + pop bp ; 5d ; 0xf53cb + retn ; c3 ; 0xf53cc + and bl, 0f7h ; 80 e3 f7 ; 0xf53cd keyboard.c:460 + mov si, strict word 00017h ; be 17 00 ; 0xf53d0 keyboard.c:43 + mov cx, strict word 00040h ; b9 40 00 ; 0xf53d3 + mov es, cx ; 8e c1 ; 0xf53d6 + mov byte [es:si], bl ; 26 88 1c ; 0xf53d8 + test dh, 002h ; f6 c6 02 ; 0xf53db keyboard.c:462 + je short 053e9h ; 74 09 ; 0xf53de + and dh, 0f7h ; 80 e6 f7 ; 0xf53e0 keyboard.c:463 + mov byte [bp-008h], dh ; 88 76 f8 ; 0xf53e3 + jmp near 05367h ; e9 7e ff ; 0xf53e6 keyboard.c:464 + and dl, 0fdh ; 80 e2 fd ; 0xf53e9 keyboard.c:466 + mov bx, strict word 00018h ; bb 18 00 ; 0xf53ec keyboard.c:43 + mov byte [es:bx], dl ; 26 88 17 ; 0xf53ef + jmp short 053a7h ; eb b3 ; 0xf53f2 keyboard.c:469 + test dh, 003h ; f6 c6 03 ; 0xf53f4 keyboard.c:472 + jne short 0540dh ; 75 14 ; 0xf53f7 + or dl, 020h ; 80 ca 20 ; 0xf53f9 keyboard.c:474 + mov ax, strict word 00040h ; b8 40 00 ; 0xf53fc keyboard.c:41 + mov si, strict word 00018h ; be 18 00 ; 0xf53ff + mov es, ax ; 8e c0 ; 0xf5402 keyboard.c:43 + mov byte [es:si], dl ; 26 88 14 ; 0xf5404 + xor bl, 020h ; 80 f3 20 ; 0xf5407 keyboard.c:476 + jmp near 05492h ; e9 85 00 ; 0xf540a keyboard.c:477 + or dl, 008h ; 80 ca 08 ; 0xf540d keyboard.c:480 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5410 keyboard.c:41 + mov bx, strict word 00018h ; bb 18 00 ; 0xf5413 + mov es, ax ; 8e c0 ; 0xf5416 keyboard.c:43 + mov byte [es:bx], dl ; 26 88 17 ; 0xf5418 + mov ax, 000aeh ; b8 ae 00 ; 0xf541b keyboard.c:484 + mov dx, strict word 00064h ; ba 64 00 ; 0xf541e + out DX, AL ; ee ; 0xf5421 + call 0e034h ; e8 0f 8c ; 0xf5422 keyboard.c:485 + mov bx, strict word 00018h ; bb 18 00 ; 0xf5425 keyboard.c:38 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5428 + mov es, ax ; 8e c0 ; 0xf542b + mov al, byte [es:bx] ; 26 8a 07 ; 0xf542d + test AL, strict byte 008h ; a8 08 ; 0xf5430 keyboard.c:39 + jne short 05425h ; 75 f1 ; 0xf5432 + jmp near 053a7h ; e9 70 ff ; 0xf5434 keyboard.c:492 + test dh, 003h ; f6 c6 03 ; 0xf5437 keyboard.c:494 + je short 0543fh ; 74 03 ; 0xf543a + jmp near 053a7h ; e9 68 ff ; 0xf543c + and dl, 0dfh ; 80 e2 df ; 0xf543f keyboard.c:495 + mov bx, strict word 00018h ; bb 18 00 ; 0xf5442 keyboard.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5445 + mov es, ax ; 8e c0 ; 0xf5448 + mov byte [es:bx], dl ; 26 88 17 ; 0xf544a + jmp short 0543ch ; eb ed ; 0xf544d keyboard.c:498 + test dh, 002h ; f6 c6 02 ; 0xf544f keyboard.c:501 + je short 05481h ; 74 2d ; 0xf5452 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5454 keyboard.c:46 + mov bx, strict word 0001ah ; bb 1a 00 ; 0xf5457 + mov es, ax ; 8e c0 ; 0xf545a keyboard.c:48 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf545c + mov bx, strict word 0001ch ; bb 1c 00 ; 0xf545f keyboard.c:51 + mov word [es:bx], ax ; 26 89 07 ; 0xf5462 keyboard.c:53 + mov bx, strict word 00071h ; bb 71 00 ; 0xf5465 keyboard.c:41 + mov AL, strict byte 080h ; b0 80 ; 0xf5468 + mov byte [es:bx], al ; 26 88 07 ; 0xf546a keyboard.c:43 + mov ax, 000aeh ; b8 ae 00 ; 0xf546d keyboard.c:506 + mov dx, strict word 00064h ; ba 64 00 ; 0xf5470 + out DX, AL ; ee ; 0xf5473 + push bp ; 55 ; 0xf5474 keyboard.c:507 + int 01bh ; cd 1b ; 0xf5475 + pop bp ; 5d ; 0xf5477 + xor dx, dx ; 31 d2 ; 0xf5478 keyboard.c:508 + xor ax, ax ; 31 c0 ; 0xf547a + call 051e0h ; e8 61 fd ; 0xf547c + jmp short 0543ch ; eb bb ; 0xf547f keyboard.c:509 + or dl, 010h ; 80 ca 10 ; 0xf5481 keyboard.c:510 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5484 keyboard.c:41 + mov es, ax ; 8e c0 ; 0xf5487 + mov si, strict word 00018h ; be 18 00 ; 0xf5489 + mov byte [es:si], dl ; 26 88 14 ; 0xf548c keyboard.c:43 + xor bl, 010h ; 80 f3 10 ; 0xf548f keyboard.c:512 + mov ax, strict word 00017h ; b8 17 00 ; 0xf5492 keyboard.c:41 + mov dl, bl ; 88 da ; 0xf5495 + mov bx, ax ; 89 c3 ; 0xf5497 keyboard.c:43 + mov byte [es:bx], dl ; 26 88 17 ; 0xf5499 + jmp short 0543ch ; eb 9e ; 0xf549c keyboard.c:515 + test dh, 002h ; f6 c6 02 ; 0xf549e keyboard.c:518 + jne short 0543ch ; 75 99 ; 0xf54a1 + and dl, 0efh ; 80 e2 ef ; 0xf54a3 keyboard.c:519 + mov bx, strict word 00018h ; bb 18 00 ; 0xf54a6 keyboard.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf54a9 + mov es, ax ; 8e c0 ; 0xf54ac + mov byte [es:bx], dl ; 26 88 17 ; 0xf54ae + jmp short 0543ch ; eb 89 ; 0xf54b1 keyboard.c:522 + test ah, 004h ; f6 c4 04 ; 0xf54b3 keyboard.c:525 + jne short 0543ch ; 75 84 ; 0xf54b6 + or dl, 004h ; 80 ca 04 ; 0xf54b8 keyboard.c:526 + mov bx, strict word 00018h ; bb 18 00 ; 0xf54bb keyboard.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf54be + mov es, ax ; 8e c0 ; 0xf54c1 + mov byte [es:bx], dl ; 26 88 17 ; 0xf54c3 + jmp near 053a7h ; e9 de fe ; 0xf54c6 keyboard.c:530 + and dl, 0fbh ; 80 e2 fb ; 0xf54c9 keyboard.c:533 + jmp short 054bbh ; eb ed ; 0xf54cc keyboard.c:534 + mov al, bh ; 88 f8 ; 0xf54ce keyboard.c:539 + and AL, strict byte 00ch ; 24 0c ; 0xf54d0 + cmp AL, strict byte 00ch ; 3c 0c ; 0xf54d2 + jne short 054e9h ; 75 13 ; 0xf54d4 + mov ax, strict word 00040h ; b8 40 00 ; 0xf54d6 keyboard.c:51 + mov si, strict word 00072h ; be 72 00 ; 0xf54d9 + mov cx, 01234h ; b9 34 12 ; 0xf54dc + mov es, ax ; 8e c0 ; 0xf54df keyboard.c:53 + mov word [es:si], cx ; 26 89 0c ; 0xf54e1 + jmp far 0f000h:0e05bh ; ea 5b e0 00 f0 ; 0xf54e4 keyboard.c:542 + test dl, 008h ; f6 c2 08 ; 0xf54e9 keyboard.c:548 + je short 054ffh ; 74 11 ; 0xf54ec + and dl, 0f7h ; 80 e2 f7 ; 0xf54ee keyboard.c:550 + mov bx, strict word 00018h ; bb 18 00 ; 0xf54f1 keyboard.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf54f4 + mov es, ax ; 8e c0 ; 0xf54f7 + mov byte [es:bx], dl ; 26 88 17 ; 0xf54f9 + jmp near 053c6h ; e9 c7 fe ; 0xf54fc keyboard.c:552 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf54ff keyboard.c:555 + test AL, strict byte 080h ; a8 80 ; 0xf5502 + je short 05534h ; 74 2e ; 0xf5504 + cmp AL, strict byte 0fah ; 3c fa ; 0xf5506 keyboard.c:557 + jne short 0551ah ; 75 10 ; 0xf5508 + mov bx, 00097h ; bb 97 00 ; 0xf550a keyboard.c:38 + mov ax, strict word 00040h ; b8 40 00 ; 0xf550d + mov es, ax ; 8e c0 ; 0xf5510 + mov ah, byte [es:bx] ; 26 8a 27 ; 0xf5512 + or ah, 010h ; 80 cc 10 ; 0xf5515 keyboard.c:39 + jmp short 0552fh ; eb 15 ; 0xf5518 keyboard.c:560 + cmp AL, strict byte 0feh ; 3c fe ; 0xf551a + je short 05521h ; 74 03 ; 0xf551c + jmp near 053a7h ; e9 86 fe ; 0xf551e + mov bx, 00097h ; bb 97 00 ; 0xf5521 keyboard.c:38 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5524 + mov es, ax ; 8e c0 ; 0xf5527 + mov ah, byte [es:bx] ; 26 8a 27 ; 0xf5529 + or ah, 020h ; 80 cc 20 ; 0xf552c keyboard.c:39 + mov byte [es:bx], ah ; 26 88 27 ; 0xf552f keyboard.c:43 + jmp short 0551eh ; eb ea ; 0xf5532 keyboard.c:564 + cmp byte [bp-006h], 058h ; 80 7e fa 58 ; 0xf5534 keyboard.c:566 + jbe short 0555ch ; 76 22 ; 0xf5538 + mov bx, 00da0h ; bb a0 0d ; 0xf553a keyboard.c:567 + mov cx, ds ; 8c d9 ; 0xf553d + mov ax, strict word 00004h ; b8 04 00 ; 0xf553f + call 018cch ; e8 87 c3 ; 0xf5542 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf5545 + xor ah, ah ; 30 e4 ; 0xf5548 + push ax ; 50 ; 0xf554a + mov ax, 005a1h ; b8 a1 05 ; 0xf554b + push ax ; 50 ; 0xf554e + mov ax, strict word 00004h ; b8 04 00 ; 0xf554f + push ax ; 50 ; 0xf5552 + call 0190fh ; e8 b9 c3 ; 0xf5553 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf5556 + jmp near 053c6h ; e9 6a fe ; 0xf5559 keyboard.c:568 + test bl, 008h ; f6 c3 08 ; 0xf555c keyboard.c:570 + je short 0557bh ; 74 1a ; 0xf555f + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf5561 keyboard.c:571 + xor ah, ah ; 30 e4 ; 0xf5564 + mov dx, strict word 0000ah ; ba 0a 00 ; 0xf5566 + imul dx ; f7 ea ; 0xf5569 + mov si, ax ; 89 c6 ; 0xf556b + mov al, byte [si+00df4h] ; 8a 84 f4 0d ; 0xf556d + mov byte [bp-00ah], al ; 88 46 f6 ; 0xf5571 + mov al, byte [si+00df5h] ; 8a 84 f5 0d ; 0xf5574 keyboard.c:572 + jmp near 0562fh ; e9 b4 00 ; 0xf5578 keyboard.c:573 + test bl, 004h ; f6 c3 04 ; 0xf557b + je short 0559ah ; 74 1a ; 0xf557e + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf5580 keyboard.c:574 + xor ah, ah ; 30 e4 ; 0xf5583 + mov dx, strict word 0000ah ; ba 0a 00 ; 0xf5585 + imul dx ; f7 ea ; 0xf5588 + mov si, ax ; 89 c6 ; 0xf558a + mov al, byte [si+00df2h] ; 8a 84 f2 0d ; 0xf558c + mov byte [bp-00ah], al ; 88 46 f6 ; 0xf5590 + mov al, byte [si+00df3h] ; 8a 84 f3 0d ; 0xf5593 keyboard.c:575 + jmp near 0562fh ; e9 95 00 ; 0xf5597 keyboard.c:576 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf559a + and AL, strict byte 002h ; 24 02 ; 0xf559d + test al, al ; 84 c0 ; 0xf559f + jbe short 055c1h ; 76 1e ; 0xf55a1 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf55a3 + cmp AL, strict byte 047h ; 3c 47 ; 0xf55a6 + jc short 055c1h ; 72 17 ; 0xf55a8 + cmp AL, strict byte 053h ; 3c 53 ; 0xf55aa + jnbe short 055c1h ; 77 13 ; 0xf55ac + mov byte [bp-00ah], 0e0h ; c6 46 f6 e0 ; 0xf55ae keyboard.c:578 + xor ah, ah ; 30 e4 ; 0xf55b2 keyboard.c:579 + mov dx, strict word 0000ah ; ba 0a 00 ; 0xf55b4 + imul dx ; f7 ea ; 0xf55b7 + mov bx, ax ; 89 c3 ; 0xf55b9 + mov al, byte [bx+00defh] ; 8a 87 ef 0d ; 0xf55bb + jmp short 0562fh ; eb 6e ; 0xf55bf keyboard.c:580 + test bl, 003h ; f6 c3 03 ; 0xf55c1 + je short 055fdh ; 74 37 ; 0xf55c4 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf55c6 keyboard.c:584 + xor ah, ah ; 30 e4 ; 0xf55c9 + mov dx, strict word 0000ah ; ba 0a 00 ; 0xf55cb + imul dx ; f7 ea ; 0xf55ce + mov si, ax ; 89 c6 ; 0xf55d0 + mov al, byte [si+00df6h] ; 8a 84 f6 0d ; 0xf55d2 + xor ah, ah ; 30 e4 ; 0xf55d6 + mov dl, bl ; 88 da ; 0xf55d8 + xor dh, dh ; 30 f6 ; 0xf55da + test dx, ax ; 85 c2 ; 0xf55dc + je short 055edh ; 74 0d ; 0xf55de + mov al, byte [si+00deeh] ; 8a 84 ee 0d ; 0xf55e0 keyboard.c:585 + mov byte [bp-00ah], al ; 88 46 f6 ; 0xf55e4 + mov al, byte [si+00defh] ; 8a 84 ef 0d ; 0xf55e7 keyboard.c:586 + jmp short 055f8h ; eb 0b ; 0xf55eb keyboard.c:587 + mov al, byte [si+00df0h] ; 8a 84 f0 0d ; 0xf55ed keyboard.c:588 + mov byte [bp-00ah], al ; 88 46 f6 ; 0xf55f1 + mov al, byte [si+00df1h] ; 8a 84 f1 0d ; 0xf55f4 keyboard.c:589 + mov byte [bp-006h], al ; 88 46 fa ; 0xf55f8 + jmp short 05632h ; eb 35 ; 0xf55fb keyboard.c:591 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf55fd keyboard.c:593 + xor ah, ah ; 30 e4 ; 0xf5600 + mov dx, strict word 0000ah ; ba 0a 00 ; 0xf5602 + imul dx ; f7 ea ; 0xf5605 + mov si, ax ; 89 c6 ; 0xf5607 + mov dl, byte [si+00df6h] ; 8a 94 f6 0d ; 0xf5609 + xor dh, dh ; 30 f6 ; 0xf560d + mov al, bl ; 88 d8 ; 0xf560f + xor ah, ah ; 30 e4 ; 0xf5611 + test ax, dx ; 85 d0 ; 0xf5613 + je short 05624h ; 74 0d ; 0xf5615 + mov al, byte [si+00df0h] ; 8a 84 f0 0d ; 0xf5617 keyboard.c:594 + mov byte [bp-00ah], al ; 88 46 f6 ; 0xf561b + mov al, byte [si+00df1h] ; 8a 84 f1 0d ; 0xf561e keyboard.c:595 + jmp short 0562fh ; eb 0b ; 0xf5622 keyboard.c:596 + mov al, byte [si+00deeh] ; 8a 84 ee 0d ; 0xf5624 keyboard.c:597 + mov byte [bp-00ah], al ; 88 46 f6 ; 0xf5628 + mov al, byte [si+00defh] ; 8a 84 ef 0d ; 0xf562b keyboard.c:598 + mov byte [bp-006h], al ; 88 46 fa ; 0xf562f + cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf5632 keyboard.c:601 + jne short 05657h ; 75 1f ; 0xf5636 + cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf5638 + jne short 05657h ; 75 19 ; 0xf563c + mov bx, 00da0h ; bb a0 0d ; 0xf563e keyboard.c:602 + mov cx, ds ; 8c d9 ; 0xf5641 + mov ax, strict word 00004h ; b8 04 00 ; 0xf5643 + call 018cch ; e8 83 c2 ; 0xf5646 + mov ax, 005d8h ; b8 d8 05 ; 0xf5649 + push ax ; 50 ; 0xf564c + mov ax, strict word 00004h ; b8 04 00 ; 0xf564d + push ax ; 50 ; 0xf5650 + call 0190fh ; e8 bb c2 ; 0xf5651 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf5654 + mov dl, byte [bp-00ah] ; 8a 56 f6 ; 0xf5657 keyboard.c:604 + xor dh, dh ; 30 f6 ; 0xf565a + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf565c + xor ah, ah ; 30 e4 ; 0xf565f + jmp near 0547ch ; e9 18 fe ; 0xf5661 + ; disGetNextSymbol 0xf5664 LB 0x48e4 -> off=0x0 cb=0000000000000061 uValue=00000000000f4064 'dequeue_key' +dequeue_key: ; 0xf5664 LB 0x61 + push si ; 56 ; 0xf5664 keyboard.c:614 + push di ; 57 ; 0xf5665 + push bp ; 55 ; 0xf5666 + mov bp, sp ; 89 e5 ; 0xf5667 + push ax ; 50 ; 0xf5669 + mov si, ax ; 89 c6 ; 0xf566a + mov word [bp-002h], bx ; 89 5e fe ; 0xf566c + mov bx, strict word 0001ah ; bb 1a 00 ; 0xf566f keyboard.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5672 + mov es, ax ; 8e c0 ; 0xf5675 + mov bx, word [es:bx] ; 26 8b 1f ; 0xf5677 + mov di, strict word 0001ch ; bf 1c 00 ; 0xf567a keyboard.c:48 + mov ax, word [es:di] ; 26 8b 05 ; 0xf567d + cmp bx, ax ; 39 c3 ; 0xf5680 keyboard.c:630 + je short 056bbh ; 74 37 ; 0xf5682 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf5684 keyboard.c:38 + lea di, [bx+001h] ; 8d 7f 01 ; 0xf5687 keyboard.c:632 + mov ah, byte [es:di] ; 26 8a 25 ; 0xf568a keyboard.c:38 + mov es, cx ; 8e c1 ; 0xf568d keyboard.c:633 + mov di, word [bp-002h] ; 8b 7e fe ; 0xf568f + mov byte [es:di], al ; 26 88 05 ; 0xf5692 + mov es, dx ; 8e c2 ; 0xf5695 keyboard.c:634 + mov byte [es:si], ah ; 26 88 24 ; 0xf5697 + cmp word [bp+008h], strict byte 00000h ; 83 7e 08 00 ; 0xf569a keyboard.c:637 + je short 056b6h ; 74 16 ; 0xf569e + lea si, [bx+002h] ; 8d 77 02 ; 0xf56a0 keyboard.c:638 + cmp si, strict byte 0003eh ; 83 fe 3e ; 0xf56a3 keyboard.c:639 + jc short 056abh ; 72 03 ; 0xf56a6 + mov si, strict word 0001eh ; be 1e 00 ; 0xf56a8 keyboard.c:640 + mov bx, strict word 0001ah ; bb 1a 00 ; 0xf56ab keyboard.c:53 + mov ax, strict word 00040h ; b8 40 00 ; 0xf56ae + mov es, ax ; 8e c0 ; 0xf56b1 + mov word [es:bx], si ; 26 89 37 ; 0xf56b3 + mov ax, strict word 00001h ; b8 01 00 ; 0xf56b6 keyboard.c:643 + jmp short 056bdh ; eb 02 ; 0xf56b9 + xor ax, ax ; 31 c0 ; 0xf56bb keyboard.c:646 + mov sp, bp ; 89 ec ; 0xf56bd keyboard.c:648 + pop bp ; 5d ; 0xf56bf + pop di ; 5f ; 0xf56c0 + pop si ; 5e ; 0xf56c1 + retn 00002h ; c2 02 00 ; 0xf56c2 + ; disGetNextSymbol 0xf56c5 LB 0x4883 -> off=0x23 cb=00000000000002f4 uValue=00000000000f40e8 'int16_function' + db 0a2h, 092h, 012h, 011h, 010h, 00ah, 009h, 005h, 002h, 001h, 000h, 0eah, 057h, 0a5h, 057h, 03bh + db 058h, 080h, 058h, 095h, 058h, 0bch, 058h, 0c6h, 058h, 035h, 059h, 071h, 059h, 0a2h, 059h, 0d1h + db 059h, 034h, 058h +int16_function: ; 0xf56e8 LB 0x2f4 + push bp ; 55 ; 0xf56e8 keyboard.c:665 + mov bp, sp ; 89 e5 ; 0xf56e9 + push si ; 56 ; 0xf56eb + push di ; 57 ; 0xf56ec + sub sp, strict byte 00006h ; 83 ec 06 ; 0xf56ed + mov bx, strict word 00017h ; bb 17 00 ; 0xf56f0 keyboard.c:38 + mov ax, strict word 00040h ; b8 40 00 ; 0xf56f3 + mov es, ax ; 8e c0 ; 0xf56f6 + mov dl, byte [es:bx] ; 26 8a 17 ; 0xf56f8 + mov bh, dl ; 88 d7 ; 0xf56fb keyboard.c:39 + mov si, 00097h ; be 97 00 ; 0xf56fd keyboard.c:38 + mov al, byte [es:si] ; 26 8a 04 ; 0xf5700 + mov bl, al ; 88 c3 ; 0xf5703 keyboard.c:39 + xor dh, dh ; 30 f6 ; 0xf5705 keyboard.c:674 + mov CL, strict byte 004h ; b1 04 ; 0xf5707 + sar dx, CL ; d3 fa ; 0xf5709 + and dl, 007h ; 80 e2 07 ; 0xf570b + and AL, strict byte 007h ; 24 07 ; 0xf570e + xor ah, ah ; 30 e4 ; 0xf5710 + xor al, dl ; 30 d0 ; 0xf5712 + test ax, ax ; 85 c0 ; 0xf5714 + je short 05784h ; 74 6c ; 0xf5716 + cli ; fa ; 0xf5718 keyboard.c:675 + mov AL, strict byte 0edh ; b0 ed ; 0xf5719 keyboard.c:676 + mov dx, strict word 00060h ; ba 60 00 ; 0xf571b + out DX, AL ; ee ; 0xf571e + mov dx, strict word 00064h ; ba 64 00 ; 0xf571f keyboard.c:677 + in AL, DX ; ec ; 0xf5722 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf5723 + test AL, strict byte 001h ; a8 01 ; 0xf5725 + jne short 05731h ; 75 08 ; 0xf5727 + mov AL, strict byte 021h ; b0 21 ; 0xf5729 + mov dx, 00080h ; ba 80 00 ; 0xf572b + out DX, AL ; ee ; 0xf572e + jmp short 0571fh ; eb ee ; 0xf572f + mov dx, strict word 00060h ; ba 60 00 ; 0xf5731 keyboard.c:678 + in AL, DX ; ec ; 0xf5734 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf5735 + cmp ax, 000fah ; 3d fa 00 ; 0xf5737 + jne short 05783h ; 75 47 ; 0xf573a + and bl, 0c8h ; 80 e3 c8 ; 0xf573c keyboard.c:679 + mov al, bh ; 88 f8 ; 0xf573f keyboard.c:680 + xor ah, ah ; 30 e4 ; 0xf5741 + mov CL, strict byte 004h ; b1 04 ; 0xf5743 + sar ax, CL ; d3 f8 ; 0xf5745 + mov cx, ax ; 89 c1 ; 0xf5747 + xor ch, ah ; 30 e5 ; 0xf5749 + and cl, 007h ; 80 e1 07 ; 0xf574b + mov al, bl ; 88 d8 ; 0xf574e + xor ah, ah ; 30 e4 ; 0xf5750 + mov dx, ax ; 89 c2 ; 0xf5752 + or dx, cx ; 09 ca ; 0xf5754 + mov bl, dl ; 88 d3 ; 0xf5756 + mov al, dl ; 88 d0 ; 0xf5758 keyboard.c:681 + and AL, strict byte 007h ; 24 07 ; 0xf575a + mov dx, strict word 00060h ; ba 60 00 ; 0xf575c + out DX, AL ; ee ; 0xf575f + mov dx, strict word 00064h ; ba 64 00 ; 0xf5760 keyboard.c:682 + in AL, DX ; ec ; 0xf5763 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf5764 + test AL, strict byte 001h ; a8 01 ; 0xf5766 + jne short 05772h ; 75 08 ; 0xf5768 + mov AL, strict byte 021h ; b0 21 ; 0xf576a keyboard.c:683 + mov dx, 00080h ; ba 80 00 ; 0xf576c + out DX, AL ; ee ; 0xf576f + jmp short 05760h ; eb ee ; 0xf5770 + mov dx, strict word 00060h ; ba 60 00 ; 0xf5772 keyboard.c:684 + in AL, DX ; ec ; 0xf5775 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf5776 + mov si, 00097h ; be 97 00 ; 0xf5778 keyboard.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf577b + mov es, ax ; 8e c0 ; 0xf577e + mov byte [es:si], bl ; 26 88 1c ; 0xf5780 + sti ; fb ; 0xf5783 keyboard.c:687 + mov CL, strict byte 008h ; b1 08 ; 0xf5784 keyboard.c:690 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf5786 + shr ax, CL ; d3 e8 ; 0xf5789 + cmp ax, 000a2h ; 3d a2 00 ; 0xf578b + jnbe short 057eah ; 77 5a ; 0xf578e + push CS ; 0e ; 0xf5790 + pop ES ; 07 ; 0xf5791 + mov cx, strict word 0000ch ; b9 0c 00 ; 0xf5792 + mov di, 056c5h ; bf c5 56 ; 0xf5795 + repne scasb ; f2 ae ; 0xf5798 + sal cx, 1 ; d1 e1 ; 0xf579a + mov di, cx ; 89 cf ; 0xf579c + mov ax, word [cs:di+056d0h] ; 2e 8b 85 d0 56 ; 0xf579e + jmp ax ; ff e0 ; 0xf57a3 + mov ax, strict word 00001h ; b8 01 00 ; 0xf57a5 keyboard.c:692 + push ax ; 50 ; 0xf57a8 + mov cx, ss ; 8c d1 ; 0xf57a9 + lea bx, [bp-008h] ; 8d 5e f8 ; 0xf57ab + mov dx, ss ; 8c d2 ; 0xf57ae + lea ax, [bp-00ah] ; 8d 46 f6 ; 0xf57b0 + call 05664h ; e8 ae fe ; 0xf57b3 + test ax, ax ; 85 c0 ; 0xf57b6 + jne short 057c8h ; 75 0e ; 0xf57b8 + mov ax, 0060fh ; b8 0f 06 ; 0xf57ba keyboard.c:693 + push ax ; 50 ; 0xf57bd + mov ax, strict word 00007h ; b8 07 00 ; 0xf57be + push ax ; 50 ; 0xf57c1 + call 0190fh ; e8 4a c1 ; 0xf57c2 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf57c5 + cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf57c8 keyboard.c:695 + je short 057d4h ; 74 06 ; 0xf57cc + cmp byte [bp-008h], 0f0h ; 80 7e f8 f0 ; 0xf57ce + je short 057dah ; 74 06 ; 0xf57d2 + cmp byte [bp-008h], 0e0h ; 80 7e f8 e0 ; 0xf57d4 keyboard.c:697 + jne short 057deh ; 75 04 ; 0xf57d8 + mov byte [bp-008h], 000h ; c6 46 f8 00 ; 0xf57da keyboard.c:698 + mov ah, byte [bp-00ah] ; 8a 66 f6 ; 0xf57de keyboard.c:699 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf57e1 + mov word [bp+012h], ax ; 89 46 12 ; 0xf57e4 + jmp near 05834h ; e9 4a 00 ; 0xf57e7 keyboard.c:700 + mov bx, 00da0h ; bb a0 0d ; 0xf57ea + mov cx, ds ; 8c d9 ; 0xf57ed + mov ax, strict word 00004h ; b8 04 00 ; 0xf57ef + call 018cch ; e8 d7 c0 ; 0xf57f2 + mov CL, strict byte 008h ; b1 08 ; 0xf57f5 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf57f7 + shr ax, CL ; d3 e8 ; 0xf57fa + push ax ; 50 ; 0xf57fc + mov ax, 00633h ; b8 33 06 ; 0xf57fd + push ax ; 50 ; 0xf5800 + mov ax, strict word 00004h ; b8 04 00 ; 0xf5801 + push ax ; 50 ; 0xf5804 + call 0190fh ; e8 07 c1 ; 0xf5805 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf5808 + mov bx, 00da0h ; bb a0 0d ; 0xf580b + mov cx, ds ; 8c d9 ; 0xf580e + mov ax, strict word 00004h ; b8 04 00 ; 0xf5810 + call 018cch ; e8 b6 c0 ; 0xf5813 + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf5816 + push ax ; 50 ; 0xf5819 + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf581a + push ax ; 50 ; 0xf581d + mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf581e + push ax ; 50 ; 0xf5821 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf5822 + push ax ; 50 ; 0xf5825 + mov ax, 0065bh ; b8 5b 06 ; 0xf5826 + push ax ; 50 ; 0xf5829 + mov ax, strict word 00004h ; b8 04 00 ; 0xf582a + push ax ; 50 ; 0xf582d + call 0190fh ; e8 de c0 ; 0xf582e + add sp, strict byte 0000ch ; 83 c4 0c ; 0xf5831 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf5834 + pop di ; 5f ; 0xf5837 + pop si ; 5e ; 0xf5838 + pop bp ; 5d ; 0xf5839 + retn ; c3 ; 0xf583a + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf583b keyboard.c:704 + mov word [bp+01eh], ax ; 89 46 1e ; 0xf583e + xor ax, ax ; 31 c0 ; 0xf5841 keyboard.c:705 + push ax ; 50 ; 0xf5843 + mov cx, ss ; 8c d1 ; 0xf5844 + lea bx, [bp-008h] ; 8d 5e f8 ; 0xf5846 + mov dx, ss ; 8c d2 ; 0xf5849 + lea ax, [bp-00ah] ; 8d 46 f6 ; 0xf584b + call 05664h ; e8 13 fe ; 0xf584e + test ax, ax ; 85 c0 ; 0xf5851 + jne short 0585bh ; 75 06 ; 0xf5853 + or word [bp+01eh], strict byte 00040h ; 83 4e 1e 40 ; 0xf5855 keyboard.c:706 + jmp short 05834h ; eb d9 ; 0xf5859 keyboard.c:707 + cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf585b keyboard.c:709 + je short 05867h ; 74 06 ; 0xf585f + cmp byte [bp-008h], 0f0h ; 80 7e f8 f0 ; 0xf5861 + je short 0586dh ; 74 06 ; 0xf5865 + cmp byte [bp-008h], 0e0h ; 80 7e f8 e0 ; 0xf5867 keyboard.c:711 + jne short 05871h ; 75 04 ; 0xf586b + mov byte [bp-008h], 000h ; c6 46 f8 00 ; 0xf586d keyboard.c:712 + mov dh, byte [bp-00ah] ; 8a 76 f6 ; 0xf5871 keyboard.c:713 + mov dl, byte [bp-008h] ; 8a 56 f8 ; 0xf5874 + mov word [bp+012h], dx ; 89 56 12 ; 0xf5877 + and word [bp+01eh], strict byte 0ffbfh ; 83 66 1e bf ; 0xf587a keyboard.c:714 + jmp short 05834h ; eb b4 ; 0xf587e keyboard.c:715 + mov bx, strict word 00017h ; bb 17 00 ; 0xf5880 keyboard.c:38 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5883 + mov es, ax ; 8e c0 ; 0xf5886 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf5888 + mov dx, word [bp+012h] ; 8b 56 12 ; 0xf588b keyboard.c:719 + mov dl, al ; 88 c2 ; 0xf588e + mov word [bp+012h], dx ; 89 56 12 ; 0xf5890 + jmp short 05834h ; eb 9f ; 0xf5893 keyboard.c:720 + mov dl, byte [bp+010h] ; 8a 56 10 ; 0xf5895 keyboard.c:723 + xor dh, dh ; 30 f6 ; 0xf5898 + mov CL, strict byte 008h ; b1 08 ; 0xf589a + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf589c + shr ax, CL ; d3 e8 ; 0xf589f + xor ah, ah ; 30 e4 ; 0xf58a1 + call 051e0h ; e8 3a f9 ; 0xf58a3 + test ax, ax ; 85 c0 ; 0xf58a6 + jne short 058b4h ; 75 0a ; 0xf58a8 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf58aa keyboard.c:724 + xor al, al ; 30 c0 ; 0xf58ad + or AL, strict byte 001h ; 0c 01 ; 0xf58af + jmp near 057e4h ; e9 30 ff ; 0xf58b1 + and word [bp+012h], 0ff00h ; 81 66 12 00 ff ; 0xf58b4 keyboard.c:727 + jmp near 05834h ; e9 78 ff ; 0xf58b9 keyboard.c:729 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf58bc keyboard.c:742 + xor al, al ; 30 c0 ; 0xf58bf + or AL, strict byte 030h ; 0c 30 ; 0xf58c1 + jmp near 057e4h ; e9 1e ff ; 0xf58c3 + mov byte [bp-006h], 002h ; c6 46 fa 02 ; 0xf58c6 keyboard.c:746 + xor cx, cx ; 31 c9 ; 0xf58ca keyboard.c:747 + cli ; fa ; 0xf58cc keyboard.c:749 + mov AL, strict byte 0f2h ; b0 f2 ; 0xf58cd keyboard.c:750 + mov dx, strict word 00060h ; ba 60 00 ; 0xf58cf + out DX, AL ; ee ; 0xf58d2 + mov bx, strict word 0ffffh ; bb ff ff ; 0xf58d3 keyboard.c:752 + mov dx, strict word 00064h ; ba 64 00 ; 0xf58d6 keyboard.c:753 + in AL, DX ; ec ; 0xf58d9 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf58da + test AL, strict byte 001h ; a8 01 ; 0xf58dc + jne short 058edh ; 75 0d ; 0xf58de + dec bx ; 4b ; 0xf58e0 + test bx, bx ; 85 db ; 0xf58e1 + jbe short 058edh ; 76 08 ; 0xf58e3 + mov dx, 00080h ; ba 80 00 ; 0xf58e5 keyboard.c:754 + in AL, DX ; ec ; 0xf58e8 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf58e9 + jmp short 058d6h ; eb e9 ; 0xf58eb + test bx, bx ; 85 db ; 0xf58ed keyboard.c:755 + jbe short 0592fh ; 76 3e ; 0xf58ef + mov dx, strict word 00060h ; ba 60 00 ; 0xf58f1 keyboard.c:756 + in AL, DX ; ec ; 0xf58f4 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf58f5 + cmp ax, 000fah ; 3d fa 00 ; 0xf58f7 + jne short 0592fh ; 75 33 ; 0xf58fa + mov bx, strict word 0ffffh ; bb ff ff ; 0xf58fc keyboard.c:758 + mov dx, strict word 00064h ; ba 64 00 ; 0xf58ff keyboard.c:759 + in AL, DX ; ec ; 0xf5902 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf5903 + test AL, strict byte 001h ; a8 01 ; 0xf5905 + jne short 05916h ; 75 0d ; 0xf5907 + dec bx ; 4b ; 0xf5909 + test bx, bx ; 85 db ; 0xf590a + jbe short 05916h ; 76 08 ; 0xf590c + mov dx, 00080h ; ba 80 00 ; 0xf590e keyboard.c:760 + in AL, DX ; ec ; 0xf5911 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf5912 + jmp short 058ffh ; eb e9 ; 0xf5914 + test bx, bx ; 85 db ; 0xf5916 keyboard.c:761 + jbe short 05926h ; 76 0c ; 0xf5918 + mov bl, ch ; 88 eb ; 0xf591a keyboard.c:762 + mov dx, strict word 00060h ; ba 60 00 ; 0xf591c keyboard.c:763 + in AL, DX ; ec ; 0xf591f + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf5920 + mov ch, al ; 88 c5 ; 0xf5922 + mov cl, bl ; 88 d9 ; 0xf5924 + dec byte [bp-006h] ; fe 4e fa ; 0xf5926 keyboard.c:765 + cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf5929 + jnbe short 058fch ; 77 cd ; 0xf592d + mov word [bp+00ch], cx ; 89 4e 0c ; 0xf592f keyboard.c:768 + jmp near 05834h ; e9 ff fe ; 0xf5932 keyboard.c:769 + mov ax, strict word 00001h ; b8 01 00 ; 0xf5935 keyboard.c:772 + push ax ; 50 ; 0xf5938 + mov cx, ss ; 8c d1 ; 0xf5939 + lea bx, [bp-008h] ; 8d 5e f8 ; 0xf593b + mov dx, ss ; 8c d2 ; 0xf593e + lea ax, [bp-00ah] ; 8d 46 f6 ; 0xf5940 + call 05664h ; e8 1e fd ; 0xf5943 + test ax, ax ; 85 c0 ; 0xf5946 + jne short 05958h ; 75 0e ; 0xf5948 + mov ax, 0060fh ; b8 0f 06 ; 0xf594a keyboard.c:773 + push ax ; 50 ; 0xf594d + mov ax, strict word 00007h ; b8 07 00 ; 0xf594e + push ax ; 50 ; 0xf5951 + call 0190fh ; e8 ba bf ; 0xf5952 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf5955 + cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf5958 keyboard.c:775 + je short 05968h ; 74 0a ; 0xf595c + cmp byte [bp-008h], 0f0h ; 80 7e f8 f0 ; 0xf595e + jne short 05968h ; 75 04 ; 0xf5962 + mov byte [bp-008h], 000h ; c6 46 f8 00 ; 0xf5964 keyboard.c:776 + mov dh, byte [bp-00ah] ; 8a 76 f6 ; 0xf5968 keyboard.c:777 + mov dl, byte [bp-008h] ; 8a 56 f8 ; 0xf596b + jmp near 05890h ; e9 1f ff ; 0xf596e + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf5971 keyboard.c:782 + mov word [bp+01eh], ax ; 89 46 1e ; 0xf5974 + xor ax, ax ; 31 c0 ; 0xf5977 keyboard.c:783 + push ax ; 50 ; 0xf5979 + mov cx, ss ; 8c d1 ; 0xf597a + lea bx, [bp-008h] ; 8d 5e f8 ; 0xf597c + mov dx, ss ; 8c d2 ; 0xf597f + lea ax, [bp-00ah] ; 8d 46 f6 ; 0xf5981 + call 05664h ; e8 dd fc ; 0xf5984 + test ax, ax ; 85 c0 ; 0xf5987 + jne short 0598eh ; 75 03 ; 0xf5989 + jmp near 05855h ; e9 c7 fe ; 0xf598b + cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf598e keyboard.c:787 + jne short 05997h ; 75 03 ; 0xf5992 + jmp near 05871h ; e9 da fe ; 0xf5994 + cmp byte [bp-008h], 0f0h ; 80 7e f8 f0 ; 0xf5997 + jne short 059a0h ; 75 03 ; 0xf599b + jmp near 0586dh ; e9 cd fe ; 0xf599d + jmp short 05994h ; eb f2 ; 0xf59a0 + mov bx, strict word 00017h ; bb 17 00 ; 0xf59a2 keyboard.c:38 + mov ax, strict word 00040h ; b8 40 00 ; 0xf59a5 + mov es, ax ; 8e c0 ; 0xf59a8 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf59aa + mov dx, word [bp+012h] ; 8b 56 12 ; 0xf59ad keyboard.c:795 + mov dl, al ; 88 c2 ; 0xf59b0 + mov word [bp+012h], dx ; 89 56 12 ; 0xf59b2 + mov bx, strict word 00018h ; bb 18 00 ; 0xf59b5 keyboard.c:38 + mov bh, byte [es:bx] ; 26 8a 3f ; 0xf59b8 + and bh, 073h ; 80 e7 73 ; 0xf59bb keyboard.c:39 + mov si, 00096h ; be 96 00 ; 0xf59be keyboard.c:38 + mov ah, byte [es:si] ; 26 8a 24 ; 0xf59c1 + and ah, 00ch ; 80 e4 0c ; 0xf59c4 keyboard.c:39 + or ah, bh ; 08 fc ; 0xf59c7 + mov dx, word [bp+012h] ; 8b 56 12 ; 0xf59c9 keyboard.c:798 + mov dh, ah ; 88 e6 ; 0xf59cc + jmp near 05890h ; e9 bf fe ; 0xf59ce + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf59d1 keyboard.c:803 + xor ah, ah ; 30 e4 ; 0xf59d4 + or ah, 080h ; 80 cc 80 ; 0xf59d6 + jmp near 057e4h ; e9 08 fe ; 0xf59d9 + ; disGetNextSymbol 0xf59dc LB 0x456c -> off=0x0 cb=00000000000000b9 uValue=00000000000f43dc 'set_geom_lba' +set_geom_lba: ; 0xf59dc LB 0xb9 + push bx ; 53 ; 0xf59dc disk.c:115 + push cx ; 51 ; 0xf59dd + push si ; 56 ; 0xf59de + push di ; 57 ; 0xf59df + push bp ; 55 ; 0xf59e0 + mov bp, sp ; 89 e5 ; 0xf59e1 + sub sp, strict byte 00008h ; 83 ec 08 ; 0xf59e3 + mov di, ax ; 89 c7 ; 0xf59e6 + mov es, dx ; 8e c2 ; 0xf59e8 + mov word [bp-008h], strict word 00000h ; c7 46 f8 00 00 ; 0xf59ea disk.c:117 + mov word [bp-006h], strict word 0007eh ; c7 46 fa 7e 00 ; 0xf59ef + mov word [bp-002h], 000ffh ; c7 46 fe ff 00 ; 0xf59f4 disk.c:119 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf59f9 disk.c:122 + mov bx, word [bp+010h] ; 8b 5e 10 ; 0xf59fc + mov cx, word [bp+00eh] ; 8b 4e 0e ; 0xf59ff + mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf5a02 + mov si, strict word 00020h ; be 20 00 ; 0xf5a05 + call 09c10h ; e8 05 42 ; 0xf5a08 + test ax, ax ; 85 c0 ; 0xf5a0b + jne short 05a1bh ; 75 0c ; 0xf5a0d + test bx, bx ; 85 db ; 0xf5a0f + jne short 05a1bh ; 75 08 ; 0xf5a11 + test cx, cx ; 85 c9 ; 0xf5a13 + jne short 05a1bh ; 75 04 ; 0xf5a15 + test dx, dx ; 85 d2 ; 0xf5a17 + je short 05a22h ; 74 07 ; 0xf5a19 + mov bx, strict word 0ffffh ; bb ff ff ; 0xf5a1b + mov si, bx ; 89 de ; 0xf5a1e + jmp short 05a28h ; eb 06 ; 0xf5a20 + mov bx, word [bp+00ch] ; 8b 5e 0c ; 0xf5a22 + mov si, word [bp+00eh] ; 8b 76 0e ; 0xf5a25 + mov word [bp-004h], bx ; 89 5e fc ; 0xf5a28 + xor bx, bx ; 31 db ; 0xf5a2b disk.c:124 + jmp short 05a34h ; eb 05 ; 0xf5a2d + cmp bx, strict byte 00004h ; 83 fb 04 ; 0xf5a2f + jnl short 05a57h ; 7d 23 ; 0xf5a32 + mov ax, word [bp-006h] ; 8b 46 fa ; 0xf5a34 disk.c:125 + cmp si, ax ; 39 c6 ; 0xf5a37 + jc short 05a45h ; 72 0a ; 0xf5a39 + jne short 05a4eh ; 75 11 ; 0xf5a3b + mov ax, word [bp-004h] ; 8b 46 fc ; 0xf5a3d + cmp ax, word [bp-008h] ; 3b 46 f8 ; 0xf5a40 + jnbe short 05a4eh ; 77 09 ; 0xf5a43 + mov ax, word [bp-002h] ; 8b 46 fe ; 0xf5a45 disk.c:126 + inc ax ; 40 ; 0xf5a48 + shr ax, 1 ; d1 e8 ; 0xf5a49 + mov word [bp-002h], ax ; 89 46 fe ; 0xf5a4b + shr word [bp-006h], 1 ; d1 6e fa ; 0xf5a4e disk.c:127 + rcr word [bp-008h], 1 ; d1 5e f8 ; 0xf5a51 + inc bx ; 43 ; 0xf5a54 disk.c:128 + jmp short 05a2fh ; eb d8 ; 0xf5a55 + mov ax, word [bp-002h] ; 8b 46 fe ; 0xf5a57 disk.c:130 + xor dx, dx ; 31 d2 ; 0xf5a5a + mov bx, strict word 0003fh ; bb 3f 00 ; 0xf5a5c + xor cx, cx ; 31 c9 ; 0xf5a5f + call 09bc0h ; e8 5c 41 ; 0xf5a61 + mov bx, ax ; 89 c3 ; 0xf5a64 + mov cx, dx ; 89 d1 ; 0xf5a66 + mov ax, word [bp-004h] ; 8b 46 fc ; 0xf5a68 + mov dx, si ; 89 f2 ; 0xf5a6b + call 09be0h ; e8 70 41 ; 0xf5a6d + mov word [es:di+002h], ax ; 26 89 45 02 ; 0xf5a70 + cmp ax, 00400h ; 3d 00 04 ; 0xf5a74 disk.c:131 + jbe short 05a7fh ; 76 06 ; 0xf5a77 + mov word [es:di+002h], 00400h ; 26 c7 45 02 00 04 ; 0xf5a79 disk.c:132 + mov ax, word [bp-002h] ; 8b 46 fe ; 0xf5a7f disk.c:133 + mov word [es:di], ax ; 26 89 05 ; 0xf5a82 + mov word [es:di+004h], strict word 0003fh ; 26 c7 45 04 3f 00 ; 0xf5a85 disk.c:134 + mov sp, bp ; 89 ec ; 0xf5a8b disk.c:135 + pop bp ; 5d ; 0xf5a8d + pop di ; 5f ; 0xf5a8e + pop si ; 5e ; 0xf5a8f + pop cx ; 59 ; 0xf5a90 + pop bx ; 5b ; 0xf5a91 + retn 00008h ; c2 08 00 ; 0xf5a92 + ; disGetNextSymbol 0xf5a95 LB 0x44b3 -> off=0x0 cb=000000000000031e uValue=00000000000f4495 'edd_fill_dpt' +edd_fill_dpt: ; 0xf5a95 LB 0x31e + push si ; 56 ; 0xf5a95 disk.c:137 + push di ; 57 ; 0xf5a96 + push bp ; 55 ; 0xf5a97 + mov bp, sp ; 89 e5 ; 0xf5a98 + sub sp, strict byte 00010h ; 83 ec 10 ; 0xf5a9a + mov di, ax ; 89 c7 ; 0xf5a9d + mov word [bp-004h], dx ; 89 56 fc ; 0xf5a9f + mov word [bp-008h], bx ; 89 5e f8 ; 0xf5aa2 + mov word [bp-006h], cx ; 89 4e fa ; 0xf5aa5 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf5aa8 disk.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5aab + mov es, ax ; 8e c0 ; 0xf5aae + mov ax, word [es:bx] ; 26 8b 07 ; 0xf5ab0 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf5ab3 disk.c:49 + mov es, dx ; 8e c2 ; 0xf5ab6 disk.c:142 + mov ax, word [es:di] ; 26 8b 05 ; 0xf5ab8 + cmp ax, strict word 0001ah ; 3d 1a 00 ; 0xf5abb + jnc short 05ac6h ; 73 06 ; 0xf5abe + mov ax, strict word 0ffffh ; b8 ff ff ; 0xf5ac0 disk.c:143 + jmp near 05dabh ; e9 e5 02 ; 0xf5ac3 + jc short 05b39h ; 72 71 ; 0xf5ac6 disk.c:146 + mov word [es:di], strict word 0001ah ; 26 c7 05 1a 00 ; 0xf5ac8 disk.c:149 + mov al, byte [bp+008h] ; 8a 46 08 ; 0xf5acd disk.c:150 + xor ah, ah ; 30 e4 ; 0xf5ad0 + mov dx, strict word 0001ch ; ba 1c 00 ; 0xf5ad2 + imul dx ; f7 ea ; 0xf5ad5 + mov dx, cx ; 89 ca ; 0xf5ad7 + mov bx, word [bp-008h] ; 8b 5e f8 ; 0xf5ad9 + add bx, ax ; 01 c3 ; 0xf5adc + mov es, cx ; 8e c1 ; 0xf5ade + mov ax, word [es:bx+028h] ; 26 8b 47 28 ; 0xf5ae0 + mov es, [bp-004h] ; 8e 46 fc ; 0xf5ae4 + mov word [es:di+018h], ax ; 26 89 45 18 ; 0xf5ae7 + mov es, cx ; 8e c1 ; 0xf5aeb disk.c:152 + cmp byte [es:bx+023h], 005h ; 26 80 7f 23 05 ; 0xf5aed + jne short 05b3bh ; 75 47 ; 0xf5af2 + mov es, [bp-004h] ; 8e 46 fc ; 0xf5af4 disk.c:153 + mov word [es:di+002h], strict word 00074h ; 26 c7 45 02 74 00 ; 0xf5af7 + mov word [es:di+004h], strict word 0ffffh ; 26 c7 45 04 ff ff ; 0xf5afd disk.c:154 + mov word [es:di+006h], strict word 0ffffh ; 26 c7 45 06 ff ff ; 0xf5b03 + mov word [es:di+008h], strict word 0ffffh ; 26 c7 45 08 ff ff ; 0xf5b09 disk.c:155 + mov word [es:di+00ah], strict word 0ffffh ; 26 c7 45 0a ff ff ; 0xf5b0f + mov word [es:di+00ch], strict word 0ffffh ; 26 c7 45 0c ff ff ; 0xf5b15 disk.c:156 + mov word [es:di+00eh], strict word 0ffffh ; 26 c7 45 0e ff ff ; 0xf5b1b + mov word [es:di+010h], strict word 0ffffh ; 26 c7 45 10 ff ff ; 0xf5b21 disk.c:157 + mov word [es:di+012h], strict word 0ffffh ; 26 c7 45 12 ff ff ; 0xf5b27 + mov word [es:di+014h], strict word 0ffffh ; 26 c7 45 14 ff ff ; 0xf5b2d disk.c:158 + mov word [es:di+016h], strict word 0ffffh ; 26 c7 45 16 ff ff ; 0xf5b33 + jmp short 05baah ; eb 6f ; 0xf5b39 disk.c:159 + mov es, [bp-004h] ; 8e 46 fc ; 0xf5b3b disk.c:160 + mov word [es:di+002h], strict word 00002h ; 26 c7 45 02 02 00 ; 0xf5b3e + mov es, cx ; 8e c1 ; 0xf5b44 disk.c:161 + mov ax, word [es:bx+032h] ; 26 8b 47 32 ; 0xf5b46 + mov es, [bp-004h] ; 8e 46 fc ; 0xf5b4a + mov word [es:di+004h], ax ; 26 89 45 04 ; 0xf5b4d + mov word [es:di+006h], strict word 00000h ; 26 c7 45 06 00 00 ; 0xf5b51 + mov es, cx ; 8e c1 ; 0xf5b57 disk.c:162 + mov ax, word [es:bx+030h] ; 26 8b 47 30 ; 0xf5b59 + mov es, [bp-004h] ; 8e 46 fc ; 0xf5b5d + mov word [es:di+008h], ax ; 26 89 45 08 ; 0xf5b60 + mov word [es:di+00ah], strict word 00000h ; 26 c7 45 0a 00 00 ; 0xf5b64 + mov es, cx ; 8e c1 ; 0xf5b6a disk.c:163 + mov ax, word [es:bx+034h] ; 26 8b 47 34 ; 0xf5b6c + mov es, [bp-004h] ; 8e 46 fc ; 0xf5b70 + mov word [es:di+00ch], ax ; 26 89 45 0c ; 0xf5b73 + mov word [es:di+00eh], strict word 00000h ; 26 c7 45 0e 00 00 ; 0xf5b77 + mov es, cx ; 8e c1 ; 0xf5b7d disk.c:164 + mov ax, word [es:bx+03ch] ; 26 8b 47 3c ; 0xf5b7f + mov si, word [es:bx+03ah] ; 26 8b 77 3a ; 0xf5b83 + mov cx, word [es:bx+038h] ; 26 8b 4f 38 ; 0xf5b87 + mov dx, word [es:bx+036h] ; 26 8b 57 36 ; 0xf5b8b + mov es, [bp-004h] ; 8e 46 fc ; 0xf5b8f disk.c:165 + mov word [es:di+010h], dx ; 26 89 55 10 ; 0xf5b92 + mov word [es:di+012h], cx ; 26 89 4d 12 ; 0xf5b96 + mov bx, si ; 89 f3 ; 0xf5b9a disk.c:166 + mov si, strict word 00020h ; be 20 00 ; 0xf5b9c + call 09c10h ; e8 6e 40 ; 0xf5b9f + mov word [es:di+014h], dx ; 26 89 55 14 ; 0xf5ba2 + mov word [es:di+016h], cx ; 26 89 4d 16 ; 0xf5ba6 + mov es, [bp-004h] ; 8e 46 fc ; 0xf5baa disk.c:171 + cmp word [es:di], strict byte 0001eh ; 26 83 3d 1e ; 0xf5bad + jc short 05c0dh ; 72 5a ; 0xf5bb1 + mov word [es:di], strict word 0001eh ; 26 c7 05 1e 00 ; 0xf5bb3 disk.c:175 + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf5bb8 disk.c:176 + mov word [es:di+01ch], ax ; 26 89 45 1c ; 0xf5bbb + mov word [es:di+01ah], 00356h ; 26 c7 45 1a 56 03 ; 0xf5bbf disk.c:177 + mov cl, byte [bp+008h] ; 8a 4e 08 ; 0xf5bc5 disk.c:180 + xor ch, ch ; 30 ed ; 0xf5bc8 + mov ax, cx ; 89 c8 ; 0xf5bca + cwd ; 99 ; 0xf5bcc + db 02bh, 0c2h + ; sub ax, dx ; 2b c2 ; 0xf5bcd + sar ax, 1 ; d1 f8 ; 0xf5bcf + xor ah, ah ; 30 e4 ; 0xf5bd1 disk.c:181 + mov dx, strict word 00006h ; ba 06 00 ; 0xf5bd3 + imul dx ; f7 ea ; 0xf5bd6 + les bx, [bp-008h] ; c4 5e f8 ; 0xf5bd8 + add bx, ax ; 01 c3 ; 0xf5bdb + mov ax, word [es:bx+00206h] ; 26 8b 87 06 02 ; 0xf5bdd + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf5be2 + mov ax, word [es:bx+00208h] ; 26 8b 87 08 02 ; 0xf5be5 disk.c:182 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf5bea + mov al, byte [es:bx+00205h] ; 26 8a 87 05 02 ; 0xf5bed disk.c:183 + mov byte [bp-002h], al ; 88 46 fe ; 0xf5bf2 + mov ax, cx ; 89 c8 ; 0xf5bf5 disk.c:185 + mov dx, strict word 0001ch ; ba 1c 00 ; 0xf5bf7 + imul dx ; f7 ea ; 0xf5bfa + mov bx, word [bp-008h] ; 8b 5e f8 ; 0xf5bfc + add bx, ax ; 01 c3 ; 0xf5bff + mov bl, byte [es:bx+027h] ; 26 8a 5f 27 ; 0xf5c01 + test bl, bl ; 84 db ; 0xf5c05 disk.c:187 + jne short 05c10h ; 75 07 ; 0xf5c07 + xor ax, ax ; 31 c0 ; 0xf5c09 + jmp short 05c13h ; eb 06 ; 0xf5c0b + jmp near 05cd8h ; e9 c8 00 ; 0xf5c0d + mov ax, strict word 00008h ; b8 08 00 ; 0xf5c10 + or AL, strict byte 010h ; 0c 10 ; 0xf5c13 disk.c:188 + mov word [bp-00ah], ax ; 89 46 f6 ; 0xf5c15 + mov al, byte [bp+008h] ; 8a 46 08 ; 0xf5c18 disk.c:189 + xor ah, ah ; 30 e4 ; 0xf5c1b + mov dx, strict word 0001ch ; ba 1c 00 ; 0xf5c1d + imul dx ; f7 ea ; 0xf5c20 + les si, [bp-008h] ; c4 76 f8 ; 0xf5c22 + add si, ax ; 01 c6 ; 0xf5c25 + cmp byte [es:si+023h], 005h ; 26 80 7c 23 05 ; 0xf5c27 + jne short 05c32h ; 75 04 ; 0xf5c2c + or byte [bp-00ah], 060h ; 80 4e f6 60 ; 0xf5c2e disk.c:190 + cmp bl, 001h ; 80 fb 01 ; 0xf5c32 disk.c:196 + jne short 05c3ch ; 75 05 ; 0xf5c35 + mov ax, strict word 00001h ; b8 01 00 ; 0xf5c37 + jmp short 05c3eh ; eb 02 ; 0xf5c3a + xor ax, ax ; 31 c0 ; 0xf5c3c + or word [bp-00ah], ax ; 09 46 f6 ; 0xf5c3e + cmp bl, 003h ; 80 fb 03 ; 0xf5c41 disk.c:197 + jne short 05c4bh ; 75 05 ; 0xf5c44 + mov ax, strict word 00003h ; b8 03 00 ; 0xf5c46 + jmp short 05c4dh ; eb 02 ; 0xf5c49 + xor ax, ax ; 31 c0 ; 0xf5c4b + or word [bp-00ah], ax ; 09 46 f6 ; 0xf5c4d + mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf5c50 disk.c:199 + les bx, [bp-008h] ; c4 5e f8 ; 0xf5c53 + mov word [es:bx+00234h], ax ; 26 89 87 34 02 ; 0xf5c56 + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf5c5b disk.c:200 + mov word [es:bx+00236h], ax ; 26 89 87 36 02 ; 0xf5c5e + mov al, byte [bp+008h] ; 8a 46 08 ; 0xf5c63 disk.c:201 + xor ah, ah ; 30 e4 ; 0xf5c66 + cwd ; 99 ; 0xf5c68 + mov bx, strict word 00002h ; bb 02 00 ; 0xf5c69 + idiv bx ; f7 fb ; 0xf5c6c + or dl, 00eh ; 80 ca 0e ; 0xf5c6e + mov CL, strict byte 004h ; b1 04 ; 0xf5c71 + sal dx, CL ; d3 e2 ; 0xf5c73 + mov bx, word [bp-008h] ; 8b 5e f8 ; 0xf5c75 + mov byte [es:bx+00238h], dl ; 26 88 97 38 02 ; 0xf5c78 + mov byte [es:bx+00239h], 0cbh ; 26 c6 87 39 02 cb ; 0xf5c7d disk.c:202 + mov al, byte [bp-002h] ; 8a 46 fe ; 0xf5c83 disk.c:203 + mov byte [es:bx+0023ah], al ; 26 88 87 3a 02 ; 0xf5c86 + mov word [es:bx+0023bh], strict word 00001h ; 26 c7 87 3b 02 01 00 ; 0xf5c8b disk.c:204 + mov byte [es:bx+0023dh], 000h ; 26 c6 87 3d 02 00 ; 0xf5c92 disk.c:206 + mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf5c98 disk.c:207 + mov word [es:bx+0023eh], ax ; 26 89 87 3e 02 ; 0xf5c9b + mov word [es:bx+00240h], strict word 00000h ; 26 c7 87 40 02 00 00 ; 0xf5ca0 disk.c:208 + mov byte [es:bx+00242h], 011h ; 26 c6 87 42 02 11 ; 0xf5ca7 disk.c:209 + xor bl, bl ; 30 db ; 0xf5cad disk.c:211 + xor bh, bh ; 30 ff ; 0xf5caf disk.c:212 + jmp short 05cb8h ; eb 05 ; 0xf5cb1 + cmp bh, 00fh ; 80 ff 0f ; 0xf5cb3 + jnc short 05cceh ; 73 16 ; 0xf5cb6 + mov al, bh ; 88 f8 ; 0xf5cb8 disk.c:213 + xor ah, ah ; 30 e4 ; 0xf5cba + mov si, ax ; 89 c6 ; 0xf5cbc + add si, 00356h ; 81 c6 56 03 ; 0xf5cbe + mov es, [bp-010h] ; 8e 46 f0 ; 0xf5cc2 disk.c:38 + mov al, byte [es:si] ; 26 8a 04 ; 0xf5cc5 + add bl, al ; 00 c3 ; 0xf5cc8 disk.c:39 + db 0feh, 0c7h + ; inc bh ; fe c7 ; 0xf5cca disk.c:213 + jmp short 05cb3h ; eb e5 ; 0xf5ccc + neg bl ; f6 db ; 0xf5cce disk.c:214 + les si, [bp-008h] ; c4 76 f8 ; 0xf5cd0 disk.c:215 + mov byte [es:si+00243h], bl ; 26 88 9c 43 02 ; 0xf5cd3 + mov es, [bp-004h] ; 8e 46 fc ; 0xf5cd8 disk.c:219 + cmp word [es:di], strict byte 00042h ; 26 83 3d 42 ; 0xf5cdb + jnc short 05ce4h ; 73 03 ; 0xf5cdf + jmp near 05da9h ; e9 c5 00 ; 0xf5ce1 + mov al, byte [bp+008h] ; 8a 46 08 ; 0xf5ce4 disk.c:223 + xor ah, ah ; 30 e4 ; 0xf5ce7 + cwd ; 99 ; 0xf5ce9 + db 02bh, 0c2h + ; sub ax, dx ; 2b c2 ; 0xf5cea + sar ax, 1 ; d1 f8 ; 0xf5cec + xor ah, ah ; 30 e4 ; 0xf5cee disk.c:224 + mov dx, strict word 00006h ; ba 06 00 ; 0xf5cf0 + imul dx ; f7 ea ; 0xf5cf3 + les bx, [bp-008h] ; c4 5e f8 ; 0xf5cf5 + add bx, ax ; 01 c3 ; 0xf5cf8 + mov al, byte [es:bx+00204h] ; 26 8a 87 04 02 ; 0xf5cfa + mov dx, word [es:bx+00206h] ; 26 8b 97 06 02 ; 0xf5cff disk.c:225 + mov es, [bp-004h] ; 8e 46 fc ; 0xf5d04 disk.c:227 + mov word [es:di], strict word 00042h ; 26 c7 05 42 00 ; 0xf5d07 + mov word [es:di+01eh], 0beddh ; 26 c7 45 1e dd be ; 0xf5d0c disk.c:228 + mov word [es:di+020h], strict word 00024h ; 26 c7 45 20 24 00 ; 0xf5d12 disk.c:229 + mov word [es:di+022h], strict word 00000h ; 26 c7 45 22 00 00 ; 0xf5d18 disk.c:231 + test al, al ; 84 c0 ; 0xf5d1e disk.c:233 + jne short 05d2eh ; 75 0c ; 0xf5d20 + mov word [es:di+024h], 05349h ; 26 c7 45 24 49 53 ; 0xf5d22 disk.c:234 + mov word [es:di+026h], 02041h ; 26 c7 45 26 41 20 ; 0xf5d28 disk.c:236 + mov es, [bp-004h] ; 8e 46 fc ; 0xf5d2e disk.c:242 + mov word [es:di+028h], 05441h ; 26 c7 45 28 41 54 ; 0xf5d31 + mov word [es:di+02ah], 02041h ; 26 c7 45 2a 41 20 ; 0xf5d37 disk.c:244 + mov word [es:di+02ch], 02020h ; 26 c7 45 2c 20 20 ; 0xf5d3d disk.c:246 + mov word [es:di+02eh], 02020h ; 26 c7 45 2e 20 20 ; 0xf5d43 disk.c:248 + test al, al ; 84 c0 ; 0xf5d49 disk.c:251 + jne short 05d63h ; 75 16 ; 0xf5d4b + mov word [es:di+030h], dx ; 26 89 55 30 ; 0xf5d4d disk.c:252 + mov word [es:di+032h], strict word 00000h ; 26 c7 45 32 00 00 ; 0xf5d51 disk.c:253 + mov word [es:di+034h], strict word 00000h ; 26 c7 45 34 00 00 ; 0xf5d57 disk.c:254 + mov word [es:di+036h], strict word 00000h ; 26 c7 45 36 00 00 ; 0xf5d5d + mov al, byte [bp+008h] ; 8a 46 08 ; 0xf5d63 disk.c:259 + and AL, strict byte 001h ; 24 01 ; 0xf5d66 + xor ah, ah ; 30 e4 ; 0xf5d68 + mov es, [bp-004h] ; 8e 46 fc ; 0xf5d6a + mov word [es:di+038h], ax ; 26 89 45 38 ; 0xf5d6d + mov word [es:di+03ah], strict word 00000h ; 26 c7 45 3a 00 00 ; 0xf5d71 disk.c:260 + mov word [es:di+03ch], strict word 00000h ; 26 c7 45 3c 00 00 ; 0xf5d77 disk.c:261 + mov word [es:di+03eh], strict word 00000h ; 26 c7 45 3e 00 00 ; 0xf5d7d + xor bl, bl ; 30 db ; 0xf5d83 disk.c:263 + mov BH, strict byte 01eh ; b7 1e ; 0xf5d85 disk.c:264 + jmp short 05d8eh ; eb 05 ; 0xf5d87 + cmp bh, 040h ; 80 ff 40 ; 0xf5d89 + jnc short 05da0h ; 73 12 ; 0xf5d8c + mov al, bh ; 88 f8 ; 0xf5d8e disk.c:265 + xor ah, ah ; 30 e4 ; 0xf5d90 + mov es, [bp-004h] ; 8e 46 fc ; 0xf5d92 + mov si, di ; 89 fe ; 0xf5d95 + add si, ax ; 01 c6 ; 0xf5d97 + add bl, byte [es:si] ; 26 02 1c ; 0xf5d99 + db 0feh, 0c7h + ; inc bh ; fe c7 ; 0xf5d9c + jmp short 05d89h ; eb e9 ; 0xf5d9e + neg bl ; f6 db ; 0xf5da0 disk.c:266 + mov es, [bp-004h] ; 8e 46 fc ; 0xf5da2 disk.c:267 + mov byte [es:di+041h], bl ; 26 88 5d 41 ; 0xf5da5 + xor ax, ax ; 31 c0 ; 0xf5da9 disk.c:269 + mov sp, bp ; 89 ec ; 0xf5dab disk.c:270 + pop bp ; 5d ; 0xf5dad + pop di ; 5f ; 0xf5dae + pop si ; 5e ; 0xf5daf + retn 00002h ; c2 02 00 ; 0xf5db0 + ; disGetNextSymbol 0xf5db3 LB 0x4195 -> off=0x32 cb=000000000000042c uValue=00000000000f47e5 'int13_harddisk' + db 06dh, 05eh, 07eh, 05eh, 0a2h, 05eh, 0a2h, 05eh, 0a2h, 05eh, 090h, 060h, 0d4h, 061h, 0d4h, 061h + db 0c1h, 060h, 0aeh, 061h, 0d4h, 061h, 0d4h, 061h, 0aeh, 061h, 0aeh, 061h, 0d4h, 061h, 0d4h, 061h + db 02ch, 061h, 0aeh, 061h, 0d4h, 061h, 0d4h, 061h, 0aeh, 061h, 05fh, 061h, 0d4h, 061h, 0d4h, 061h + db 0d4h, 061h +int13_harddisk: ; 0xf5de5 LB 0x42c + push bp ; 55 ; 0xf5de5 disk.c:272 + mov bp, sp ; 89 e5 ; 0xf5de6 + sub sp, strict byte 00010h ; 83 ec 10 ; 0xf5de8 + or byte [bp+01dh], 002h ; 80 4e 1d 02 ; 0xf5deb disk.c:283 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf5def disk.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5df2 + mov es, ax ; 8e c0 ; 0xf5df5 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf5df7 + mov si, 00122h ; be 22 01 ; 0xf5dfa disk.c:49 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf5dfd + mov bx, 0008eh ; bb 8e 00 ; 0xf5e00 disk.c:43 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf5e03 + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf5e07 disk.c:289 + xor ah, ah ; 30 e4 ; 0xf5e0a + cmp ax, 00080h ; 3d 80 00 ; 0xf5e0c + jc short 05e16h ; 72 05 ; 0xf5e0f + cmp ax, 00090h ; 3d 90 00 ; 0xf5e11 + jc short 05e35h ; 72 1f ; 0xf5e14 + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf5e16 disk.c:290 + xor ah, ah ; 30 e4 ; 0xf5e19 + push ax ; 50 ; 0xf5e1b + mov al, byte [bp+017h] ; 8a 46 17 ; 0xf5e1c + push ax ; 50 ; 0xf5e1f + mov ax, 0067eh ; b8 7e 06 ; 0xf5e20 + push ax ; 50 ; 0xf5e23 + mov ax, 0068dh ; b8 8d 06 ; 0xf5e24 + push ax ; 50 ; 0xf5e27 + mov ax, strict word 00004h ; b8 04 00 ; 0xf5e28 + push ax ; 50 ; 0xf5e2b + call 0190fh ; e8 e0 ba ; 0xf5e2c + add sp, strict byte 0000ah ; 83 c4 0a ; 0xf5e2f + jmp near 061efh ; e9 ba 03 ; 0xf5e32 disk.c:291 + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf5e35 disk.c:295 + xor ah, ah ; 30 e4 ; 0xf5e38 + mov es, [bp-00ch] ; 8e 46 f4 ; 0xf5e3a + mov bx, si ; 89 f3 ; 0xf5e3d + add bx, ax ; 01 c3 ; 0xf5e3f + mov dl, byte [es:bx+00163h] ; 26 8a 97 63 01 ; 0xf5e41 + mov byte [bp-002h], dl ; 88 56 fe ; 0xf5e46 + cmp dl, 010h ; 80 fa 10 ; 0xf5e49 disk.c:298 + jc short 05e5ch ; 72 0e ; 0xf5e4c + push ax ; 50 ; 0xf5e4e disk.c:299 + mov al, byte [bp+017h] ; 8a 46 17 ; 0xf5e4f + push ax ; 50 ; 0xf5e52 + mov ax, 0067eh ; b8 7e 06 ; 0xf5e53 + push ax ; 50 ; 0xf5e56 + mov ax, 006b8h ; b8 b8 06 ; 0xf5e57 + jmp short 05e27h ; eb cb ; 0xf5e5a + mov bl, byte [bp+017h] ; 8a 5e 17 ; 0xf5e5c disk.c:303 + xor bh, bh ; 30 ff ; 0xf5e5f + cmp bx, strict byte 00018h ; 83 fb 18 ; 0xf5e61 + jnbe short 05e9fh ; 77 39 ; 0xf5e64 + sal bx, 1 ; d1 e3 ; 0xf5e66 + jmp word [cs:bx+05db3h] ; 2e ff a7 b3 5d ; 0xf5e68 + cmp byte [bp-002h], 008h ; 80 7e fe 08 ; 0xf5e6d disk.c:308 + jnc short 05e7bh ; 73 08 ; 0xf5e71 + mov al, byte [bp-002h] ; 8a 46 fe ; 0xf5e73 disk.c:310 + xor ah, ah ; 30 e4 ; 0xf5e76 + call 01d4eh ; e8 d3 be ; 0xf5e78 + jmp near 060a9h ; e9 2b 02 ; 0xf5e7b disk.c:311 + mov bx, strict word 00074h ; bb 74 00 ; 0xf5e7e disk.c:38 + mov ax, strict word 00040h ; b8 40 00 ; 0xf5e81 + mov es, ax ; 8e c0 ; 0xf5e84 + mov dl, byte [es:bx] ; 26 8a 17 ; 0xf5e86 + mov bx, word [bp+016h] ; 8b 5e 16 ; 0xf5e89 disk.c:316 + mov bh, dl ; 88 d7 ; 0xf5e8c + mov word [bp+016h], bx ; 89 5e 16 ; 0xf5e8e + mov bx, strict word 00074h ; bb 74 00 ; 0xf5e91 disk.c:43 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf5e94 + test dl, dl ; 84 d2 ; 0xf5e98 disk.c:319 + je short 05efeh ; 74 62 ; 0xf5e9a + jmp near 0620ah ; e9 6b 03 ; 0xf5e9c + jmp near 061d4h ; e9 32 03 ; 0xf5e9f + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5ea2 disk.c:327 + xor ah, ah ; 30 e4 ; 0xf5ea5 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf5ea7 + mov al, byte [bp+015h] ; 8a 46 15 ; 0xf5eaa disk.c:328 + mov dx, word [bp+014h] ; 8b 56 14 ; 0xf5ead disk.c:329 + xor dh, dh ; 30 f6 ; 0xf5eb0 + sal dx, 1 ; d1 e2 ; 0xf5eb2 + sal dx, 1 ; d1 e2 ; 0xf5eb4 + and dh, 003h ; 80 e6 03 ; 0xf5eb6 + mov ah, dh ; 88 f4 ; 0xf5eb9 + mov word [bp-006h], ax ; 89 46 fa ; 0xf5ebb + mov di, word [bp+014h] ; 8b 7e 14 ; 0xf5ebe disk.c:330 + and di, strict byte 0003fh ; 83 e7 3f ; 0xf5ec1 + mov al, byte [bp+013h] ; 8a 46 13 ; 0xf5ec4 disk.c:331 + xor ah, dh ; 30 f4 ; 0xf5ec7 + mov word [bp-008h], ax ; 89 46 f8 ; 0xf5ec9 + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf5ecc disk.c:334 + cmp ax, 00080h ; 3d 80 00 ; 0xf5ecf + jnbe short 05ed8h ; 77 04 ; 0xf5ed2 + test ax, ax ; 85 c0 ; 0xf5ed4 + jne short 05f01h ; 75 29 ; 0xf5ed6 + mov bx, 00da0h ; bb a0 0d ; 0xf5ed8 disk.c:335 + mov cx, ds ; 8c d9 ; 0xf5edb + mov ax, strict word 00004h ; b8 04 00 ; 0xf5edd + call 018cch ; e8 e9 b9 ; 0xf5ee0 + mov al, byte [bp+017h] ; 8a 46 17 ; 0xf5ee3 + xor ah, ah ; 30 e4 ; 0xf5ee6 + push ax ; 50 ; 0xf5ee8 + mov ax, 0067eh ; b8 7e 06 ; 0xf5ee9 + push ax ; 50 ; 0xf5eec + mov ax, 006eah ; b8 ea 06 ; 0xf5eed + push ax ; 50 ; 0xf5ef0 + mov ax, strict word 00004h ; b8 04 00 ; 0xf5ef1 + push ax ; 50 ; 0xf5ef4 + call 0190fh ; e8 17 ba ; 0xf5ef5 + add sp, strict byte 00008h ; 83 c4 08 ; 0xf5ef8 + jmp near 061efh ; e9 f1 02 ; 0xf5efb disk.c:336 + jmp near 060adh ; e9 ac 01 ; 0xf5efe + mov al, byte [bp-002h] ; 8a 46 fe ; 0xf5f01 disk.c:340 + xor ah, ah ; 30 e4 ; 0xf5f04 + mov dx, strict word 0001ch ; ba 1c 00 ; 0xf5f06 + imul dx ; f7 ea ; 0xf5f09 + mov es, [bp-00ch] ; 8e 46 f4 ; 0xf5f0b + mov bx, si ; 89 f3 ; 0xf5f0e + add bx, ax ; 01 c3 ; 0xf5f10 + mov ax, word [es:bx+02ch] ; 26 8b 47 2c ; 0xf5f12 + mov cx, word [es:bx+02ah] ; 26 8b 4f 2a ; 0xf5f16 disk.c:341 + mov dx, word [es:bx+02eh] ; 26 8b 57 2e ; 0xf5f1a disk.c:342 + mov word [bp-00ah], dx ; 89 56 f6 ; 0xf5f1e + cmp ax, word [bp-006h] ; 3b 46 fa ; 0xf5f21 disk.c:345 + jbe short 05f2fh ; 76 09 ; 0xf5f24 + cmp cx, word [bp-008h] ; 3b 4e f8 ; 0xf5f26 + jbe short 05f2fh ; 76 04 ; 0xf5f29 + cmp di, dx ; 39 d7 ; 0xf5f2b + jbe short 05f60h ; 76 31 ; 0xf5f2d + mov bx, 00da0h ; bb a0 0d ; 0xf5f2f disk.c:346 + mov cx, ds ; 8c d9 ; 0xf5f32 + mov ax, strict word 00004h ; b8 04 00 ; 0xf5f34 + call 018cch ; e8 92 b9 ; 0xf5f37 + push di ; 57 ; 0xf5f3a + push word [bp-008h] ; ff 76 f8 ; 0xf5f3b + push word [bp-006h] ; ff 76 fa ; 0xf5f3e + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf5f41 + xor ah, ah ; 30 e4 ; 0xf5f44 + push ax ; 50 ; 0xf5f46 + mov al, byte [bp+017h] ; 8a 46 17 ; 0xf5f47 + push ax ; 50 ; 0xf5f4a + mov ax, 0067eh ; b8 7e 06 ; 0xf5f4b + push ax ; 50 ; 0xf5f4e + mov ax, 00712h ; b8 12 07 ; 0xf5f4f + push ax ; 50 ; 0xf5f52 + mov ax, strict word 00004h ; b8 04 00 ; 0xf5f53 + push ax ; 50 ; 0xf5f56 + call 0190fh ; e8 b5 b9 ; 0xf5f57 + add sp, strict byte 00010h ; 83 c4 10 ; 0xf5f5a + jmp near 061efh ; e9 8f 02 ; 0xf5f5d disk.c:347 + mov al, byte [bp+017h] ; 8a 46 17 ; 0xf5f60 disk.c:351 + xor ah, ah ; 30 e4 ; 0xf5f63 + cmp ax, strict word 00004h ; 3d 04 00 ; 0xf5f65 + je short 05f8ah ; 74 20 ; 0xf5f68 + mov al, byte [bp-002h] ; 8a 46 fe ; 0xf5f6a disk.c:356 + mov dx, strict word 0001ch ; ba 1c 00 ; 0xf5f6d + imul dx ; f7 ea ; 0xf5f70 + mov es, [bp-00ch] ; 8e 46 f4 ; 0xf5f72 + mov bx, si ; 89 f3 ; 0xf5f75 + add bx, ax ; 01 c3 ; 0xf5f77 + cmp cx, word [es:bx+030h] ; 26 3b 4f 30 ; 0xf5f79 + jne short 05f93h ; 75 14 ; 0xf5f7d + mov ax, word [es:bx+034h] ; 26 8b 47 34 ; 0xf5f7f + cmp ax, word [bp-00ah] ; 3b 46 f6 ; 0xf5f83 + je short 05f8dh ; 74 05 ; 0xf5f86 + jmp short 05f93h ; eb 09 ; 0xf5f88 + jmp near 060a9h ; e9 1c 01 ; 0xf5f8a + cmp byte [bp-002h], 008h ; 80 7e fe 08 ; 0xf5f8d + jc short 05fc2h ; 72 2f ; 0xf5f91 + mov ax, word [bp-006h] ; 8b 46 fa ; 0xf5f93 disk.c:357 + xor dx, dx ; 31 d2 ; 0xf5f96 + mov bx, cx ; 89 cb ; 0xf5f98 + xor cx, cx ; 31 c9 ; 0xf5f9a + call 09bc0h ; e8 21 3c ; 0xf5f9c + xor bx, bx ; 31 db ; 0xf5f9f + add ax, word [bp-008h] ; 03 46 f8 ; 0xf5fa1 + adc dx, bx ; 11 da ; 0xf5fa4 + mov bx, word [bp-00ah] ; 8b 5e f6 ; 0xf5fa6 + xor cx, cx ; 31 c9 ; 0xf5fa9 + call 09bc0h ; e8 12 3c ; 0xf5fab + xor bx, bx ; 31 db ; 0xf5fae + add ax, di ; 01 f8 ; 0xf5fb0 + adc dx, bx ; 11 da ; 0xf5fb2 + add ax, strict word 0ffffh ; 05 ff ff ; 0xf5fb4 + mov word [bp-004h], ax ; 89 46 fc ; 0xf5fb7 + adc dx, strict byte 0ffffh ; 83 d2 ff ; 0xf5fba + mov word [bp-00eh], dx ; 89 56 f2 ; 0xf5fbd + xor di, di ; 31 ff ; 0xf5fc0 disk.c:358 + mov es, [bp-00ch] ; 8e 46 f4 ; 0xf5fc2 disk.c:365 + mov word [es:si+018h], strict word 00000h ; 26 c7 44 18 00 00 ; 0xf5fc5 + mov word [es:si+01ah], strict word 00000h ; 26 c7 44 1a 00 00 ; 0xf5fcb disk.c:366 + mov word [es:si+01ch], strict word 00000h ; 26 c7 44 1c 00 00 ; 0xf5fd1 + mov ax, word [bp-004h] ; 8b 46 fc ; 0xf5fd7 disk.c:369 + mov word [es:si], ax ; 26 89 04 ; 0xf5fda + mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf5fdd + mov word [es:si+002h], ax ; 26 89 44 02 ; 0xf5fe0 + mov word [es:si+004h], strict word 00000h ; 26 c7 44 04 00 00 ; 0xf5fe4 + mov word [es:si+006h], strict word 00000h ; 26 c7 44 06 00 00 ; 0xf5fea + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf5ff0 disk.c:370 + mov dx, word [bp+006h] ; 8b 56 06 ; 0xf5ff3 + mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf5ff6 + mov word [es:si+00ah], dx ; 26 89 54 0a ; 0xf5ffa + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf5ffe disk.c:371 + mov word [es:si+00eh], ax ; 26 89 44 0e ; 0xf6001 + mov word [es:si+010h], 00200h ; 26 c7 44 10 00 02 ; 0xf6005 disk.c:372 + mov ax, word [bp-006h] ; 8b 46 fa ; 0xf600b disk.c:373 + mov word [es:si+012h], ax ; 26 89 44 12 ; 0xf600e + mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf6012 disk.c:374 + mov word [es:si+014h], ax ; 26 89 44 14 ; 0xf6015 + mov word [es:si+016h], di ; 26 89 7c 16 ; 0xf6019 disk.c:375 + mov al, byte [bp-002h] ; 8a 46 fe ; 0xf601d disk.c:376 + mov byte [es:si+00ch], al ; 26 88 44 0c ; 0xf6020 + xor ah, ah ; 30 e4 ; 0xf6024 disk.c:378 + mov dx, strict word 0001ch ; ba 1c 00 ; 0xf6026 + imul dx ; f7 ea ; 0xf6029 + mov bx, si ; 89 f3 ; 0xf602b + add bx, ax ; 01 c3 ; 0xf602d + mov al, byte [es:bx+022h] ; 26 8a 47 22 ; 0xf602f + xor ah, ah ; 30 e4 ; 0xf6033 + mov bx, ax ; 89 c3 ; 0xf6035 + sal bx, 1 ; d1 e3 ; 0xf6037 + sal bx, 1 ; d1 e3 ; 0xf6039 + mov al, byte [bp+017h] ; 8a 46 17 ; 0xf603b + sal ax, 1 ; d1 e0 ; 0xf603e + add bx, ax ; 01 c3 ; 0xf6040 + push ES ; 06 ; 0xf6042 + push si ; 56 ; 0xf6043 + call word [word bx+0007eh] ; ff 97 7e 00 ; 0xf6044 + mov dx, ax ; 89 c2 ; 0xf6048 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf604a disk.c:381 + xor al, al ; 30 c0 ; 0xf604d + mov es, [bp-00ch] ; 8e 46 f4 ; 0xf604f + mov bx, word [es:si+018h] ; 26 8b 5c 18 ; 0xf6052 + or bx, ax ; 09 c3 ; 0xf6056 + mov word [bp+016h], bx ; 89 5e 16 ; 0xf6058 + test dl, dl ; 84 d2 ; 0xf605b disk.c:383 + je short 060a9h ; 74 4a ; 0xf605d + mov bx, 00da0h ; bb a0 0d ; 0xf605f disk.c:384 + mov cx, ds ; 8c d9 ; 0xf6062 + mov ax, strict word 00004h ; b8 04 00 ; 0xf6064 + call 018cch ; e8 62 b8 ; 0xf6067 + mov al, dl ; 88 d0 ; 0xf606a + xor ah, ah ; 30 e4 ; 0xf606c + push ax ; 50 ; 0xf606e + mov al, byte [bp+017h] ; 8a 46 17 ; 0xf606f + push ax ; 50 ; 0xf6072 + mov ax, 0067eh ; b8 7e 06 ; 0xf6073 + push ax ; 50 ; 0xf6076 + mov ax, 00759h ; b8 59 07 ; 0xf6077 + push ax ; 50 ; 0xf607a + mov ax, strict word 00004h ; b8 04 00 ; 0xf607b + push ax ; 50 ; 0xf607e + call 0190fh ; e8 8d b8 ; 0xf607f + add sp, strict byte 0000ah ; 83 c4 0a ; 0xf6082 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6085 disk.c:385 + xor ah, ah ; 30 e4 ; 0xf6088 + or ah, 00ch ; 80 cc 0c ; 0xf608a + jmp near 061f7h ; e9 67 01 ; 0xf608d disk.c:386 + mov bx, 00da0h ; bb a0 0d ; 0xf6090 disk.c:393 + mov cx, ds ; 8c d9 ; 0xf6093 + mov ax, strict word 00004h ; b8 04 00 ; 0xf6095 + call 018cch ; e8 31 b8 ; 0xf6098 + mov ax, 0077ah ; b8 7a 07 ; 0xf609b + push ax ; 50 ; 0xf609e + mov ax, strict word 00004h ; b8 04 00 ; 0xf609f + push ax ; 50 ; 0xf60a2 + call 0190fh ; e8 69 b8 ; 0xf60a3 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf60a6 + mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf60a9 disk.c:394 + mov bx, strict word 00074h ; bb 74 00 ; 0xf60ad + mov ax, strict word 00040h ; b8 40 00 ; 0xf60b0 + mov es, ax ; 8e c0 ; 0xf60b3 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf60b5 + and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf60b9 + mov sp, bp ; 89 ec ; 0xf60bd + pop bp ; 5d ; 0xf60bf + retn ; c3 ; 0xf60c0 + mov al, byte [bp-002h] ; 8a 46 fe ; 0xf60c1 disk.c:400 + xor ah, ah ; 30 e4 ; 0xf60c4 + mov dx, strict word 0001ch ; ba 1c 00 ; 0xf60c6 + imul dx ; f7 ea ; 0xf60c9 + mov es, [bp-00ch] ; 8e 46 f4 ; 0xf60cb + mov bx, si ; 89 f3 ; 0xf60ce + add bx, ax ; 01 c3 ; 0xf60d0 + mov di, word [es:bx+02ch] ; 26 8b 7f 2c ; 0xf60d2 + mov cx, word [es:bx+02ah] ; 26 8b 4f 2a ; 0xf60d6 disk.c:401 + mov ax, word [es:bx+02eh] ; 26 8b 47 2e ; 0xf60da disk.c:402 + mov word [bp-00ah], ax ; 89 46 f6 ; 0xf60de + mov dl, byte [es:si+001e2h] ; 26 8a 94 e2 01 ; 0xf60e1 disk.c:404 + xor dh, dh ; 30 f6 ; 0xf60e6 + mov byte [bp+016h], dh ; 88 76 16 ; 0xf60e8 disk.c:407 + mov bx, word [bp+014h] ; 8b 5e 14 ; 0xf60eb disk.c:408 + dec di ; 4f ; 0xf60ee disk.c:406 + mov ax, di ; 89 f8 ; 0xf60ef + mov bh, al ; 88 c7 ; 0xf60f1 + mov word [bp+014h], bx ; 89 5e 14 ; 0xf60f3 + shr di, 1 ; d1 ef ; 0xf60f6 disk.c:409 + shr di, 1 ; d1 ef ; 0xf60f8 + and di, 000c0h ; 81 e7 c0 00 ; 0xf60fa + mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf60fe + and ax, strict word 0003fh ; 25 3f 00 ; 0xf6101 + or di, ax ; 09 c7 ; 0xf6104 + mov ax, bx ; 89 d8 ; 0xf6106 + xor al, bl ; 30 d8 ; 0xf6108 + or ax, di ; 09 f8 ; 0xf610a + mov word [bp+014h], ax ; 89 46 14 ; 0xf610c + mov bx, word [bp+012h] ; 8b 5e 12 ; 0xf610f disk.c:410 + xor bh, bh ; 30 ff ; 0xf6112 + mov ah, cl ; 88 cc ; 0xf6114 + xor al, al ; 30 c0 ; 0xf6116 + sub ax, 00100h ; 2d 00 01 ; 0xf6118 + or bx, ax ; 09 c3 ; 0xf611b + mov word [bp+012h], bx ; 89 5e 12 ; 0xf611d + mov ax, bx ; 89 d8 ; 0xf6120 disk.c:411 + xor al, bl ; 30 d8 ; 0xf6122 + or ax, dx ; 09 d0 ; 0xf6124 + mov word [bp+012h], ax ; 89 46 12 ; 0xf6126 + jmp near 060a9h ; e9 7d ff ; 0xf6129 disk.c:416 + mov al, byte [bp-002h] ; 8a 46 fe ; 0xf612c disk.c:423 + xor ah, ah ; 30 e4 ; 0xf612f + cwd ; 99 ; 0xf6131 + db 02bh, 0c2h + ; sub ax, dx ; 2b c2 ; 0xf6132 + sar ax, 1 ; d1 f8 ; 0xf6134 + mov dx, strict word 00006h ; ba 06 00 ; 0xf6136 + imul dx ; f7 ea ; 0xf6139 + mov es, [bp-00ch] ; 8e 46 f4 ; 0xf613b + add si, ax ; 01 c6 ; 0xf613e + mov dx, word [es:si+00206h] ; 26 8b 94 06 02 ; 0xf6140 + add dx, strict byte 00007h ; 83 c2 07 ; 0xf6145 + in AL, DX ; ec ; 0xf6148 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf6149 + and AL, strict byte 0c0h ; 24 c0 ; 0xf614b disk.c:424 + cmp AL, strict byte 040h ; 3c 40 ; 0xf614d + jne short 06154h ; 75 03 ; 0xf614f + jmp near 060a9h ; e9 55 ff ; 0xf6151 disk.c:425 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6154 disk.c:427 + xor ah, ah ; 30 e4 ; 0xf6157 + or ah, 0aah ; 80 cc aa ; 0xf6159 + jmp near 061f7h ; e9 98 00 ; 0xf615c + mov al, byte [bp-002h] ; 8a 46 fe ; 0xf615f disk.c:435 + xor ah, ah ; 30 e4 ; 0xf6162 + mov dx, strict word 0001ch ; ba 1c 00 ; 0xf6164 + imul dx ; f7 ea ; 0xf6167 + mov es, [bp-00ch] ; 8e 46 f4 ; 0xf6169 + add si, ax ; 01 c6 ; 0xf616c + mov ax, word [es:si+032h] ; 26 8b 44 32 ; 0xf616e + mov word [bp-006h], ax ; 89 46 fa ; 0xf6172 + mov ax, word [es:si+030h] ; 26 8b 44 30 ; 0xf6175 disk.c:436 + mov word [bp-008h], ax ; 89 46 f8 ; 0xf6179 + mov di, word [es:si+034h] ; 26 8b 7c 34 ; 0xf617c disk.c:437 + mov ax, word [bp-006h] ; 8b 46 fa ; 0xf6180 disk.c:440 + xor dx, dx ; 31 d2 ; 0xf6183 + mov bx, word [bp-008h] ; 8b 5e f8 ; 0xf6185 + xor cx, cx ; 31 c9 ; 0xf6188 + call 09bc0h ; e8 33 3a ; 0xf618a + mov bx, di ; 89 fb ; 0xf618d + xor cx, cx ; 31 c9 ; 0xf618f + call 09bc0h ; e8 2c 3a ; 0xf6191 + mov word [bp-004h], ax ; 89 46 fc ; 0xf6194 + mov word [bp-00eh], dx ; 89 56 f2 ; 0xf6197 + mov word [bp+014h], dx ; 89 56 14 ; 0xf619a disk.c:441 + mov word [bp+012h], ax ; 89 46 12 ; 0xf619d disk.c:442 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf61a0 disk.c:444 + xor ah, ah ; 30 e4 ; 0xf61a3 + or ah, 003h ; 80 cc 03 ; 0xf61a5 + mov word [bp+016h], ax ; 89 46 16 ; 0xf61a8 + jmp near 060adh ; e9 ff fe ; 0xf61ab disk.c:445 + mov bx, 00da0h ; bb a0 0d ; 0xf61ae disk.c:453 + mov cx, ds ; 8c d9 ; 0xf61b1 + mov ax, strict word 00004h ; b8 04 00 ; 0xf61b3 + call 018cch ; e8 13 b7 ; 0xf61b6 + mov al, byte [bp+017h] ; 8a 46 17 ; 0xf61b9 + xor ah, ah ; 30 e4 ; 0xf61bc + push ax ; 50 ; 0xf61be + mov ax, 0067eh ; b8 7e 06 ; 0xf61bf + push ax ; 50 ; 0xf61c2 + mov ax, 00794h ; b8 94 07 ; 0xf61c3 + push ax ; 50 ; 0xf61c6 + mov ax, strict word 00004h ; b8 04 00 ; 0xf61c7 + push ax ; 50 ; 0xf61ca + call 0190fh ; e8 41 b7 ; 0xf61cb + add sp, strict byte 00008h ; 83 c4 08 ; 0xf61ce + jmp near 060a9h ; e9 d5 fe ; 0xf61d1 disk.c:454 + mov bx, 00da0h ; bb a0 0d ; 0xf61d4 disk.c:461 + mov cx, ds ; 8c d9 ; 0xf61d7 + mov ax, strict word 00004h ; b8 04 00 ; 0xf61d9 + call 018cch ; e8 ed b6 ; 0xf61dc + mov al, byte [bp+017h] ; 8a 46 17 ; 0xf61df + xor ah, ah ; 30 e4 ; 0xf61e2 + push ax ; 50 ; 0xf61e4 + mov ax, 0067eh ; b8 7e 06 ; 0xf61e5 + push ax ; 50 ; 0xf61e8 + mov ax, 007c7h ; b8 c7 07 ; 0xf61e9 + jmp near 05ef0h ; e9 01 fd ; 0xf61ec + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf61ef disk.c:467 + xor ah, ah ; 30 e4 ; 0xf61f2 + or ah, 001h ; 80 cc 01 ; 0xf61f4 + mov word [bp+016h], ax ; 89 46 16 ; 0xf61f7 + mov al, byte [bp+017h] ; 8a 46 17 ; 0xf61fa disk.c:469 + xor ah, ah ; 30 e4 ; 0xf61fd + mov bx, strict word 00074h ; bb 74 00 ; 0xf61ff disk.c:43 + mov dx, strict word 00040h ; ba 40 00 ; 0xf6202 + mov es, dx ; 8e c2 ; 0xf6205 + mov byte [es:bx], al ; 26 88 07 ; 0xf6207 + or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf620a disk.c:471 + jmp near 060bdh ; e9 ac fe ; 0xf620e disk.c:472 + ; disGetNextSymbol 0xf6211 LB 0x3d37 -> off=0x20 cb=00000000000002a8 uValue=00000000000f4c31 'int13_harddisk_ext' + db 0bfh, 062h, 0f2h, 062h, 0f2h, 062h, 0f2h, 062h, 0c1h, 064h, 06dh, 064h, 0f2h, 062h, 072h, 064h + db 0c1h, 064h, 0d7h, 062h, 0d7h, 062h, 0d7h, 062h, 0d7h, 062h, 08ah, 064h, 0d7h, 062h, 0d7h, 062h +int13_harddisk_ext: ; 0xf6231 LB 0x2a8 + push bp ; 55 ; 0xf6231 disk.c:482 + mov bp, sp ; 89 e5 ; 0xf6232 + sub sp, strict byte 00016h ; 83 ec 16 ; 0xf6234 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf6237 disk.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf623a + mov es, ax ; 8e c0 ; 0xf623d + mov ax, word [es:bx] ; 26 8b 07 ; 0xf623f + mov di, 00122h ; bf 22 01 ; 0xf6242 disk.c:49 + mov word [bp-014h], ax ; 89 46 ec ; 0xf6245 + mov bx, 0008eh ; bb 8e 00 ; 0xf6248 disk.c:43 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf624b + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf624f disk.c:506 + xor ah, ah ; 30 e4 ; 0xf6252 + cmp ax, 00080h ; 3d 80 00 ; 0xf6254 + jc short 0625eh ; 72 05 ; 0xf6257 + cmp ax, 00090h ; 3d 90 00 ; 0xf6259 + jc short 0627dh ; 72 1f ; 0xf625c + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf625e disk.c:507 + xor ah, ah ; 30 e4 ; 0xf6261 + push ax ; 50 ; 0xf6263 + mov al, byte [bp+017h] ; 8a 46 17 ; 0xf6264 + push ax ; 50 ; 0xf6267 + mov ax, 007f5h ; b8 f5 07 ; 0xf6268 + push ax ; 50 ; 0xf626b + mov ax, 0068dh ; b8 8d 06 ; 0xf626c + push ax ; 50 ; 0xf626f + mov ax, strict word 00004h ; b8 04 00 ; 0xf6270 + push ax ; 50 ; 0xf6273 + call 0190fh ; e8 98 b6 ; 0xf6274 + add sp, strict byte 0000ah ; 83 c4 0a ; 0xf6277 + jmp near 064a0h ; e9 23 02 ; 0xf627a disk.c:508 + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf627d disk.c:512 + xor ah, ah ; 30 e4 ; 0xf6280 + mov es, [bp-014h] ; 8e 46 ec ; 0xf6282 + mov bx, di ; 89 fb ; 0xf6285 + add bx, ax ; 01 c3 ; 0xf6287 + mov dl, byte [es:bx+00163h] ; 26 8a 97 63 01 ; 0xf6289 + mov byte [bp-002h], dl ; 88 56 fe ; 0xf628e + cmp dl, 010h ; 80 fa 10 ; 0xf6291 disk.c:515 + jc short 062a4h ; 72 0e ; 0xf6294 + push ax ; 50 ; 0xf6296 disk.c:516 + mov al, byte [bp+017h] ; 8a 46 17 ; 0xf6297 + push ax ; 50 ; 0xf629a + mov ax, 007f5h ; b8 f5 07 ; 0xf629b + push ax ; 50 ; 0xf629e + mov ax, 006b8h ; b8 b8 06 ; 0xf629f + jmp short 0626fh ; eb cb ; 0xf62a2 + mov al, byte [bp+017h] ; 8a 46 17 ; 0xf62a4 disk.c:520 + xor ah, ah ; 30 e4 ; 0xf62a7 + sub ax, strict word 00041h ; 2d 41 00 ; 0xf62a9 + cmp ax, strict word 0000fh ; 3d 0f 00 ; 0xf62ac + jnbe short 062d7h ; 77 26 ; 0xf62af + mov bx, ax ; 89 c3 ; 0xf62b1 + sal bx, 1 ; d1 e3 ; 0xf62b3 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf62b5 + xor ah, ah ; 30 e4 ; 0xf62b8 + jmp word [cs:bx+06211h] ; 2e ff a7 11 62 ; 0xf62ba + mov word [bp+010h], 0aa55h ; c7 46 10 55 aa ; 0xf62bf disk.c:522 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf62c4 disk.c:523 + xor ah, ah ; 30 e4 ; 0xf62c7 + or ah, 030h ; 80 cc 30 ; 0xf62c9 + mov word [bp+016h], ax ; 89 46 16 ; 0xf62cc + mov word [bp+014h], strict word 00007h ; c7 46 14 07 00 ; 0xf62cf disk.c:524 + jmp near 064c5h ; e9 ee 01 ; 0xf62d4 disk.c:525 + mov bx, 00da0h ; bb a0 0d ; 0xf62d7 + mov cx, ds ; 8c d9 ; 0xf62da + mov ax, strict word 00004h ; b8 04 00 ; 0xf62dc + call 018cch ; e8 ea b5 ; 0xf62df + mov al, byte [bp+017h] ; 8a 46 17 ; 0xf62e2 + xor ah, ah ; 30 e4 ; 0xf62e5 + push ax ; 50 ; 0xf62e7 + mov ax, 007f5h ; b8 f5 07 ; 0xf62e8 + push ax ; 50 ; 0xf62eb + mov ax, 007c7h ; b8 c7 07 ; 0xf62ec + jmp near 0639bh ; e9 a9 00 ; 0xf62ef + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf62f2 disk.c:534 + mov word [bp-016h], bx ; 89 5e ea ; 0xf62f5 + mov es, [bp+004h] ; 8e 46 04 ; 0xf62f8 + mov word [bp-012h], bx ; 89 5e ee ; 0xf62fb + mov [bp-010h], es ; 8c 46 f0 ; 0xf62fe + mov ax, word [es:bx+002h] ; 26 8b 47 02 ; 0xf6301 disk.c:536 + mov word [bp-00ah], ax ; 89 46 f6 ; 0xf6305 + mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf6308 disk.c:537 + mov word [bp-00eh], ax ; 89 46 f2 ; 0xf630c + mov ax, word [es:bx+004h] ; 26 8b 47 04 ; 0xf630f disk.c:538 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf6313 + mov si, bx ; 89 de ; 0xf6316 disk.c:541 + mov si, word [es:si+00ch] ; 26 8b 74 0c ; 0xf6318 + mov cx, word [es:bx+00eh] ; 26 8b 4f 0e ; 0xf631c + xor ax, ax ; 31 c0 ; 0xf6320 disk.c:542 + xor bx, bx ; 31 db ; 0xf6322 + mov dx, si ; 89 f2 ; 0xf6324 + mov si, strict word 00020h ; be 20 00 ; 0xf6326 + call 09c20h ; e8 f4 38 ; 0xf6329 + mov word [bp-004h], ax ; 89 46 fc ; 0xf632c + mov word [bp-006h], bx ; 89 5e fa ; 0xf632f + mov si, dx ; 89 d6 ; 0xf6332 + mov bx, word [bp-016h] ; 8b 5e ea ; 0xf6334 disk.c:543 + mov dx, word [es:bx+008h] ; 26 8b 57 08 ; 0xf6337 + mov ax, word [es:bx+00ah] ; 26 8b 47 0a ; 0xf633b + or si, dx ; 09 d6 ; 0xf633f + or cx, ax ; 09 c1 ; 0xf6341 + mov al, byte [bp-002h] ; 8a 46 fe ; 0xf6343 disk.c:548 + xor ah, ah ; 30 e4 ; 0xf6346 + mov dx, strict word 0001ch ; ba 1c 00 ; 0xf6348 + imul dx ; f7 ea ; 0xf634b + mov es, [bp-014h] ; 8e 46 ec ; 0xf634d + mov bx, di ; 89 fb ; 0xf6350 + add bx, ax ; 01 c3 ; 0xf6352 + mov al, byte [es:bx+022h] ; 26 8a 47 22 ; 0xf6354 + mov dx, word [bp-004h] ; 8b 56 fc ; 0xf6358 disk.c:549 + cmp dx, word [es:bx+03ch] ; 26 3b 57 3c ; 0xf635b + jnbe short 06383h ; 77 22 ; 0xf635f + jne short 063a9h ; 75 46 ; 0xf6361 + mov dx, word [bp-006h] ; 8b 56 fa ; 0xf6363 + cmp dx, word [es:bx+03ah] ; 26 3b 57 3a ; 0xf6366 + jnbe short 06383h ; 77 17 ; 0xf636a + mov dx, word [bp-006h] ; 8b 56 fa ; 0xf636c + cmp dx, word [es:bx+03ah] ; 26 3b 57 3a ; 0xf636f + jne short 063a9h ; 75 34 ; 0xf6373 + cmp cx, word [es:bx+038h] ; 26 3b 4f 38 ; 0xf6375 + jnbe short 06383h ; 77 08 ; 0xf6379 + jne short 063a9h ; 75 2c ; 0xf637b + cmp si, word [es:bx+036h] ; 26 3b 77 36 ; 0xf637d + jc short 063a9h ; 72 26 ; 0xf6381 + mov bx, 00da0h ; bb a0 0d ; 0xf6383 disk.c:550 + mov cx, ds ; 8c d9 ; 0xf6386 + mov ax, strict word 00004h ; b8 04 00 ; 0xf6388 + call 018cch ; e8 3e b5 ; 0xf638b + mov al, byte [bp+017h] ; 8a 46 17 ; 0xf638e + xor ah, ah ; 30 e4 ; 0xf6391 + push ax ; 50 ; 0xf6393 + mov ax, 007f5h ; b8 f5 07 ; 0xf6394 + push ax ; 50 ; 0xf6397 + mov ax, 00808h ; b8 08 08 ; 0xf6398 + push ax ; 50 ; 0xf639b + mov ax, strict word 00004h ; b8 04 00 ; 0xf639c + push ax ; 50 ; 0xf639f + call 0190fh ; e8 6c b5 ; 0xf63a0 + add sp, strict byte 00008h ; 83 c4 08 ; 0xf63a3 + jmp near 064a0h ; e9 f7 00 ; 0xf63a6 disk.c:551 + mov ah, byte [bp+017h] ; 8a 66 17 ; 0xf63a9 disk.c:555 + mov byte [bp-008h], ah ; 88 66 f8 ; 0xf63ac + mov byte [bp-007h], 000h ; c6 46 f9 00 ; 0xf63af + cmp word [bp-008h], strict byte 00044h ; 83 7e f8 44 ; 0xf63b3 + je short 063bfh ; 74 06 ; 0xf63b7 + cmp word [bp-008h], strict byte 00047h ; 83 7e f8 47 ; 0xf63b9 + jne short 063c2h ; 75 03 ; 0xf63bd + jmp near 064c1h ; e9 ff 00 ; 0xf63bf disk.c:556 + mov es, [bp-014h] ; 8e 46 ec ; 0xf63c2 disk.c:559 + mov word [es:di+018h], strict word 00000h ; 26 c7 45 18 00 00 ; 0xf63c5 + mov word [es:di+01ah], strict word 00000h ; 26 c7 45 1a 00 00 ; 0xf63cb disk.c:560 + mov word [es:di+01ch], strict word 00000h ; 26 c7 45 1c 00 00 ; 0xf63d1 + mov dx, word [bp-004h] ; 8b 56 fc ; 0xf63d7 disk.c:563 + mov word [es:di+006h], dx ; 26 89 55 06 ; 0xf63da + mov dx, word [bp-006h] ; 8b 56 fa ; 0xf63de + mov word [es:di+004h], dx ; 26 89 55 04 ; 0xf63e1 + mov word [es:di+002h], cx ; 26 89 4d 02 ; 0xf63e5 + mov word [es:di], si ; 26 89 35 ; 0xf63e9 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf63ec disk.c:564 + mov word [es:di+008h], dx ; 26 89 55 08 ; 0xf63ef + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf63f3 + mov word [es:di+00ah], dx ; 26 89 55 0a ; 0xf63f6 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf63fa disk.c:565 + mov word [es:di+00eh], dx ; 26 89 55 0e ; 0xf63fd + mov word [es:di+010h], 00200h ; 26 c7 45 10 00 02 ; 0xf6401 disk.c:566 + mov word [es:di+016h], strict word 00000h ; 26 c7 45 16 00 00 ; 0xf6407 disk.c:567 + mov ah, byte [bp-002h] ; 8a 66 fe ; 0xf640d disk.c:568 + mov byte [es:di+00ch], ah ; 26 88 65 0c ; 0xf6410 + mov bx, word [bp-008h] ; 8b 5e f8 ; 0xf6414 disk.c:571 + sal bx, 1 ; d1 e3 ; 0xf6417 + xor ah, ah ; 30 e4 ; 0xf6419 + sal ax, 1 ; d1 e0 ; 0xf641b + sal ax, 1 ; d1 e0 ; 0xf641d + add bx, ax ; 01 c3 ; 0xf641f + push ES ; 06 ; 0xf6421 + push di ; 57 ; 0xf6422 + call word [word bx-00002h] ; ff 97 fe ff ; 0xf6423 + mov dx, ax ; 89 c2 ; 0xf6427 + mov es, [bp-014h] ; 8e 46 ec ; 0xf6429 disk.c:572 + mov ax, word [es:di+018h] ; 26 8b 45 18 ; 0xf642c + mov word [bp-00ah], ax ; 89 46 f6 ; 0xf6430 + les bx, [bp-012h] ; c4 5e ee ; 0xf6433 disk.c:573 + mov word [es:bx+002h], ax ; 26 89 47 02 ; 0xf6436 + test dl, dl ; 84 d2 ; 0xf643a disk.c:575 + je short 063bfh ; 74 81 ; 0xf643c + mov bx, 00da0h ; bb a0 0d ; 0xf643e disk.c:576 + mov cx, ds ; 8c d9 ; 0xf6441 + mov ax, strict word 00004h ; b8 04 00 ; 0xf6443 + call 018cch ; e8 83 b4 ; 0xf6446 + mov al, dl ; 88 d0 ; 0xf6449 + xor ah, ah ; 30 e4 ; 0xf644b + push ax ; 50 ; 0xf644d + push word [bp-008h] ; ff 76 f8 ; 0xf644e + mov ax, 007f5h ; b8 f5 07 ; 0xf6451 + push ax ; 50 ; 0xf6454 + mov ax, 00759h ; b8 59 07 ; 0xf6455 + push ax ; 50 ; 0xf6458 + mov ax, strict word 00004h ; b8 04 00 ; 0xf6459 + push ax ; 50 ; 0xf645c + call 0190fh ; e8 af b4 ; 0xf645d + add sp, strict byte 0000ah ; 83 c4 0a ; 0xf6460 + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6463 disk.c:577 + xor ah, ah ; 30 e4 ; 0xf6466 + or ah, 00ch ; 80 cc 0c ; 0xf6468 + jmp short 064a8h ; eb 3b ; 0xf646b disk.c:578 + or ah, 0b2h ; 80 cc b2 ; 0xf646d disk.c:590 + jmp short 064a8h ; eb 36 ; 0xf6470 + mov al, byte [bp-002h] ; 8a 46 fe ; 0xf6472 disk.c:595 + push ax ; 50 ; 0xf6475 + mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf6476 + mov dx, word [bp+004h] ; 8b 56 04 ; 0xf6479 + mov bx, di ; 89 fb ; 0xf647c + mov cx, word [bp-014h] ; 8b 4e ec ; 0xf647e + call 05a95h ; e8 11 f6 ; 0xf6481 + test ax, ax ; 85 c0 ; 0xf6484 + je short 064c1h ; 74 39 ; 0xf6486 + jmp short 064a0h ; eb 16 ; 0xf6488 disk.c:596 + cmp ax, strict word 00006h ; 3d 06 00 ; 0xf648a disk.c:603 + je short 064c1h ; 74 32 ; 0xf648d + cmp ax, strict word 00001h ; 3d 01 00 ; 0xf648f + jc short 064a0h ; 72 0c ; 0xf6492 + jbe short 064c1h ; 76 2b ; 0xf6494 + cmp ax, strict word 00003h ; 3d 03 00 ; 0xf6496 + jc short 064a0h ; 72 05 ; 0xf6499 + cmp ax, strict word 00004h ; 3d 04 00 ; 0xf649b + jbe short 064c1h ; 76 21 ; 0xf649e + mov ax, word [bp+016h] ; 8b 46 16 ; 0xf64a0 disk.c:623 + xor ah, ah ; 30 e4 ; 0xf64a3 + or ah, 001h ; 80 cc 01 ; 0xf64a5 + mov word [bp+016h], ax ; 89 46 16 ; 0xf64a8 + mov al, byte [bp+017h] ; 8a 46 17 ; 0xf64ab disk.c:625 + xor ah, ah ; 30 e4 ; 0xf64ae + mov bx, strict word 00074h ; bb 74 00 ; 0xf64b0 disk.c:43 + mov dx, strict word 00040h ; ba 40 00 ; 0xf64b3 + mov es, dx ; 8e c2 ; 0xf64b6 + mov byte [es:bx], al ; 26 88 07 ; 0xf64b8 + or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf64bb disk.c:626 + jmp short 064d5h ; eb 14 ; 0xf64bf disk.c:627 + mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf64c1 disk.c:630 + mov bx, strict word 00074h ; bb 74 00 ; 0xf64c5 disk.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf64c8 + mov es, ax ; 8e c0 ; 0xf64cb + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf64cd + and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf64d1 disk.c:633 + mov sp, bp ; 89 ec ; 0xf64d5 disk.c:635 + pop bp ; 5d ; 0xf64d7 + retn ; c3 ; 0xf64d8 + ; disGetNextSymbol 0xf64d9 LB 0x3a6f -> off=0x0 cb=0000000000000153 uValue=00000000000f4ed9 'int14_function' +int14_function: ; 0xf64d9 LB 0x153 + push bp ; 55 ; 0xf64d9 serial.c:60 + mov bp, sp ; 89 e5 ; 0xf64da + push si ; 56 ; 0xf64dc + push di ; 57 ; 0xf64dd + sti ; fb ; 0xf64de serial.c:65 + mov si, word [bp+00eh] ; 8b 76 0e ; 0xf64df serial.c:67 + sal si, 1 ; d1 e6 ; 0xf64e2 + mov ax, strict word 00040h ; b8 40 00 ; 0xf64e4 serial.c:48 + mov es, ax ; 8e c0 ; 0xf64e7 + mov si, word [es:si] ; 26 8b 34 ; 0xf64e9 + mov bx, si ; 89 f3 ; 0xf64ec serial.c:49 + mov di, word [bp+00eh] ; 8b 7e 0e ; 0xf64ee serial.c:68 + add di, strict byte 0007ch ; 83 c7 7c ; 0xf64f1 + mov cl, byte [es:di] ; 26 8a 0d ; 0xf64f4 serial.c:38 + cmp word [bp+00eh], strict byte 00004h ; 83 7e 0e 04 ; 0xf64f7 serial.c:69 + jnc short 06501h ; 73 04 ; 0xf64fb + test si, si ; 85 f6 ; 0xf64fd + jnbe short 06504h ; 77 03 ; 0xf64ff + jmp near 06621h ; e9 1d 01 ; 0xf6501 + mov al, byte [bp+013h] ; 8a 46 13 ; 0xf6504 serial.c:70 + cmp AL, strict byte 001h ; 3c 01 ; 0xf6507 + jc short 06518h ; 72 0d ; 0xf6509 + jbe short 06578h ; 76 6b ; 0xf650b + cmp AL, strict byte 003h ; 3c 03 ; 0xf650d + je short 06570h ; 74 5f ; 0xf650f + cmp AL, strict byte 002h ; 3c 02 ; 0xf6511 + je short 06573h ; 74 5e ; 0xf6513 + jmp near 0661bh ; e9 03 01 ; 0xf6515 + test al, al ; 84 c0 ; 0xf6518 + jne short 06575h ; 75 59 ; 0xf651a + lea dx, [bx+003h] ; 8d 57 03 ; 0xf651c serial.c:72 + in AL, DX ; ec ; 0xf651f + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf6520 + or AL, strict byte 080h ; 0c 80 ; 0xf6522 + out DX, AL ; ee ; 0xf6524 + lea si, [bx+001h] ; 8d 77 01 ; 0xf6525 + mov al, byte [bp+012h] ; 8a 46 12 ; 0xf6528 serial.c:73 + test AL, strict byte 0e0h ; a8 e0 ; 0xf652b + jne short 0653bh ; 75 0c ; 0xf652d + mov AL, strict byte 017h ; b0 17 ; 0xf652f serial.c:74 + mov dx, bx ; 89 da ; 0xf6531 + out DX, AL ; ee ; 0xf6533 + mov AL, strict byte 004h ; b0 04 ; 0xf6534 serial.c:75 + mov dx, si ; 89 f2 ; 0xf6536 + out DX, AL ; ee ; 0xf6538 + jmp short 06552h ; eb 17 ; 0xf6539 serial.c:76 + and AL, strict byte 0e0h ; 24 e0 ; 0xf653b serial.c:77 + xor ah, ah ; 30 e4 ; 0xf653d + mov CL, strict byte 005h ; b1 05 ; 0xf653f + sar ax, CL ; d3 f8 ; 0xf6541 + mov cl, al ; 88 c1 ; 0xf6543 + mov ax, 00600h ; b8 00 06 ; 0xf6545 + sar ax, CL ; d3 f8 ; 0xf6548 + mov dx, bx ; 89 da ; 0xf654a serial.c:78 + out DX, AL ; ee ; 0xf654c + mov al, ah ; 88 e0 ; 0xf654d serial.c:79 + mov dx, si ; 89 f2 ; 0xf654f + out DX, AL ; ee ; 0xf6551 + mov al, byte [bp+012h] ; 8a 46 12 ; 0xf6552 serial.c:81 + and AL, strict byte 01fh ; 24 1f ; 0xf6555 + lea dx, [bx+003h] ; 8d 57 03 ; 0xf6557 + out DX, AL ; ee ; 0xf655a + lea dx, [bx+005h] ; 8d 57 05 ; 0xf655b serial.c:82 + in AL, DX ; ec ; 0xf655e + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf655f + mov byte [bp+013h], al ; 88 46 13 ; 0xf6561 + lea dx, [bx+006h] ; 8d 57 06 ; 0xf6564 serial.c:83 + in AL, DX ; ec ; 0xf6567 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf6568 + mov byte [bp+012h], al ; 88 46 12 ; 0xf656a + jmp near 065fch ; e9 8c 00 ; 0xf656d + jmp near 0660ah ; e9 97 00 ; 0xf6570 + jmp short 065c3h ; eb 4e ; 0xf6573 + jmp near 0661bh ; e9 a3 00 ; 0xf6575 + mov si, strict word 0006ch ; be 6c 00 ; 0xf6578 serial.c:48 + mov si, word [es:si] ; 26 8b 34 ; 0xf657b + lea dx, [bx+005h] ; 8d 57 05 ; 0xf657e serial.c:88 + in AL, DX ; ec ; 0xf6581 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf6582 + and ax, strict word 00060h ; 25 60 00 ; 0xf6584 + cmp ax, strict word 00060h ; 3d 60 00 ; 0xf6587 + je short 065a5h ; 74 19 ; 0xf658a + test cl, cl ; 84 c9 ; 0xf658c + je short 065a5h ; 74 15 ; 0xf658e + mov di, strict word 0006ch ; bf 6c 00 ; 0xf6590 serial.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf6593 + mov es, ax ; 8e c0 ; 0xf6596 + mov ax, word [es:di] ; 26 8b 05 ; 0xf6598 + cmp ax, si ; 39 f0 ; 0xf659b serial.c:90 + je short 0657eh ; 74 df ; 0xf659d + mov si, ax ; 89 c6 ; 0xf659f serial.c:91 + db 0feh, 0c9h + ; dec cl ; fe c9 ; 0xf65a1 serial.c:92 + jmp short 0657eh ; eb d9 ; 0xf65a3 serial.c:94 + test cl, cl ; 84 c9 ; 0xf65a5 serial.c:95 + je short 065afh ; 74 06 ; 0xf65a7 + mov al, byte [bp+012h] ; 8a 46 12 ; 0xf65a9 + mov dx, bx ; 89 da ; 0xf65ac + out DX, AL ; ee ; 0xf65ae + lea dx, [bx+005h] ; 8d 57 05 ; 0xf65af serial.c:96 + in AL, DX ; ec ; 0xf65b2 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf65b3 + mov byte [bp+013h], al ; 88 46 13 ; 0xf65b5 + test cl, cl ; 84 c9 ; 0xf65b8 serial.c:97 + jne short 065fch ; 75 40 ; 0xf65ba + or AL, strict byte 080h ; 0c 80 ; 0xf65bc + mov byte [bp+013h], al ; 88 46 13 ; 0xf65be + jmp short 065fch ; eb 39 ; 0xf65c1 + mov si, strict word 0006ch ; be 6c 00 ; 0xf65c3 serial.c:48 + mov si, word [es:si] ; 26 8b 34 ; 0xf65c6 + lea dx, [bx+005h] ; 8d 57 05 ; 0xf65c9 serial.c:102 + in AL, DX ; ec ; 0xf65cc + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf65cd + test AL, strict byte 001h ; a8 01 ; 0xf65cf + jne short 065ech ; 75 19 ; 0xf65d1 + test cl, cl ; 84 c9 ; 0xf65d3 + je short 065ech ; 74 15 ; 0xf65d5 + mov di, strict word 0006ch ; bf 6c 00 ; 0xf65d7 serial.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf65da + mov es, ax ; 8e c0 ; 0xf65dd + mov ax, word [es:di] ; 26 8b 05 ; 0xf65df + cmp ax, si ; 39 f0 ; 0xf65e2 serial.c:104 + je short 065c9h ; 74 e3 ; 0xf65e4 + mov si, ax ; 89 c6 ; 0xf65e6 serial.c:105 + db 0feh, 0c9h + ; dec cl ; fe c9 ; 0xf65e8 serial.c:106 + jmp short 065c9h ; eb dd ; 0xf65ea serial.c:108 + test cl, cl ; 84 c9 ; 0xf65ec serial.c:109 + je short 06602h ; 74 12 ; 0xf65ee + mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf65f0 serial.c:110 + mov dx, bx ; 89 da ; 0xf65f4 serial.c:111 + in AL, DX ; ec ; 0xf65f6 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf65f7 + mov byte [bp+012h], al ; 88 46 12 ; 0xf65f9 + and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf65fc serial.c:112 + jmp short 06625h ; eb 23 ; 0xf6600 + lea dx, [bx+005h] ; 8d 57 05 ; 0xf6602 serial.c:113 + in AL, DX ; ec ; 0xf6605 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf6606 + jmp short 065beh ; eb b4 ; 0xf6608 + lea dx, [si+005h] ; 8d 54 05 ; 0xf660a serial.c:118 + in AL, DX ; ec ; 0xf660d + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf660e + mov byte [bp+013h], al ; 88 46 13 ; 0xf6610 + lea dx, [si+006h] ; 8d 54 06 ; 0xf6613 serial.c:119 + in AL, DX ; ec ; 0xf6616 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf6617 + jmp short 065f9h ; eb de ; 0xf6619 + or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf661b serial.c:123 + jmp short 06625h ; eb 04 ; 0xf661f serial.c:125 + or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf6621 serial.c:126 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf6625 serial.c:128 + pop di ; 5f ; 0xf6628 + pop si ; 5e ; 0xf6629 + pop bp ; 5d ; 0xf662a + retn ; c3 ; 0xf662b + ; disGetNextSymbol 0xf662c LB 0x391c -> off=0x0 cb=0000000000000043 uValue=00000000000f502c 'timer_wait' +timer_wait: ; 0xf662c LB 0x43 + push bp ; 55 ; 0xf662c system.c:289 + mov bp, sp ; 89 e5 ; 0xf662d + push bx ; 53 ; 0xf662f + push cx ; 51 ; 0xf6630 + push ax ; 50 ; 0xf6631 + mov bx, strict word 0000fh ; bb 0f 00 ; 0xf6632 system.c:296 + xor cx, cx ; 31 c9 ; 0xf6635 + call 09be0h ; e8 a6 35 ; 0xf6637 + mov cx, ax ; 89 c1 ; 0xf663a + mov bx, dx ; 89 d3 ; 0xf663c + mov dx, strict word 00061h ; ba 61 00 ; 0xf663e system.c:298 + in AL, DX ; ec ; 0xf6641 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf6642 + and AL, strict byte 010h ; 24 10 ; 0xf6644 + mov byte [bp-006h], al ; 88 46 fa ; 0xf6646 + add cx, strict byte 0ffffh ; 83 c1 ff ; 0xf6649 system.c:299 + adc bx, strict byte 0ffffh ; 83 d3 ff ; 0xf664c + cmp bx, strict byte 0ffffh ; 83 fb ff ; 0xf664f + jne short 06659h ; 75 05 ; 0xf6652 + cmp cx, strict byte 0ffffh ; 83 f9 ff ; 0xf6654 + je short 06668h ; 74 0f ; 0xf6657 + mov dx, strict word 00061h ; ba 61 00 ; 0xf6659 system.c:302 + in AL, DX ; ec ; 0xf665c + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf665d + and AL, strict byte 010h ; 24 10 ; 0xf665f + cmp al, byte [bp-006h] ; 3a 46 fa ; 0xf6661 system.c:303 + jne short 06659h ; 75 f3 ; 0xf6664 + jmp short 06649h ; eb e1 ; 0xf6666 system.c:305 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf6668 system.c:306 + pop cx ; 59 ; 0xf666b + pop bx ; 5b ; 0xf666c + pop bp ; 5d ; 0xf666d + retn ; c3 ; 0xf666e + ; disGetNextSymbol 0xf666f LB 0x38d9 -> off=0x0 cb=0000000000000030 uValue=00000000000f506f 'set_enable_a20' +set_enable_a20: ; 0xf666f LB 0x30 + push bp ; 55 ; 0xf666f system.c:308 + mov bp, sp ; 89 e5 ; 0xf6670 + push bx ; 53 ; 0xf6672 + push cx ; 51 ; 0xf6673 + push dx ; 52 ; 0xf6674 + mov bx, ax ; 89 c3 ; 0xf6675 + mov dx, 00092h ; ba 92 00 ; 0xf6677 system.c:315 + in AL, DX ; ec ; 0xf667a + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf667b + mov cl, al ; 88 c1 ; 0xf667d + test bx, bx ; 85 db ; 0xf667f system.c:318 + je short 06688h ; 74 05 ; 0xf6681 + or AL, strict byte 002h ; 0c 02 ; 0xf6683 system.c:319 + out DX, AL ; ee ; 0xf6685 + jmp short 0668bh ; eb 03 ; 0xf6686 system.c:320 + and AL, strict byte 0fdh ; 24 fd ; 0xf6688 system.c:321 + out DX, AL ; ee ; 0xf668a + test cl, 002h ; f6 c1 02 ; 0xf668b system.c:323 + je short 06695h ; 74 05 ; 0xf668e + mov ax, strict word 00001h ; b8 01 00 ; 0xf6690 + jmp short 06697h ; eb 02 ; 0xf6693 + xor ax, ax ; 31 c0 ; 0xf6695 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf6697 system.c:324 + pop dx ; 5a ; 0xf669a + pop cx ; 59 ; 0xf669b + pop bx ; 5b ; 0xf669c + pop bp ; 5d ; 0xf669d + retn ; c3 ; 0xf669e + ; disGetNextSymbol 0xf669f LB 0x38a9 -> off=0x3b cb=000000000000030d uValue=00000000000f50da 'int15_function' + db 0ech, 0e9h, 0d8h, 0c7h, 0c1h, 0c0h, 0bfh, 091h, 090h, 089h, 088h, 086h, 083h, 052h, 04fh, 041h + db 024h, 022h, 000h, 0c5h, 069h, 016h, 067h, 064h, 069h, 02ah, 067h, 064h, 069h, 0b2h, 067h, 0c0h + db 067h, 0d0h, 067h, 070h, 068h, 07dh, 068h, 086h, 068h, 0c9h, 067h, 0c9h, 067h, 04bh, 069h, 076h + db 069h, 089h, 069h, 064h, 069h, 09dh, 069h, 034h, 068h, 0a6h, 069h +int15_function: ; 0xf66da LB 0x30d + push bp ; 55 ; 0xf66da system.c:345 + mov bp, sp ; 89 e5 ; 0xf66db + push si ; 56 ; 0xf66dd + push di ; 57 ; 0xf66de + mov al, byte [bp+013h] ; 8a 46 13 ; 0xf66df system.c:352 + xor ah, ah ; 30 e4 ; 0xf66e2 + mov dx, ax ; 89 c2 ; 0xf66e4 + cmp ax, 000ech ; 3d ec 00 ; 0xf66e6 + jnbe short 06720h ; 77 35 ; 0xf66e9 + push CS ; 0e ; 0xf66eb + pop ES ; 07 ; 0xf66ec + mov cx, strict word 00014h ; b9 14 00 ; 0xf66ed + mov di, 0669fh ; bf 9f 66 ; 0xf66f0 + repne scasb ; f2 ae ; 0xf66f3 + sal cx, 1 ; d1 e1 ; 0xf66f5 + mov di, cx ; 89 cf ; 0xf66f7 + mov cx, word [cs:di+066b2h] ; 2e 8b 8d b2 66 ; 0xf66f9 + mov bx, word [bp+012h] ; 8b 5e 12 ; 0xf66fe + xor bh, bh ; 30 ff ; 0xf6701 + mov si, word [bp+018h] ; 8b 76 18 ; 0xf6703 + and si, strict byte 0fffeh ; 83 e6 fe ; 0xf6706 + mov dx, word [bp+018h] ; 8b 56 18 ; 0xf6709 + or dl, 001h ; 80 ca 01 ; 0xf670c + mov ax, bx ; 89 d8 ; 0xf670f + or ah, 086h ; 80 cc 86 ; 0xf6711 + jmp cx ; ff e1 ; 0xf6714 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf6716 system.c:354 + xor ah, ah ; 30 e4 ; 0xf6719 + cmp ax, 000c0h ; 3d c0 00 ; 0xf671b + je short 06723h ; 74 03 ; 0xf671e + jmp near 069c5h ; e9 a2 02 ; 0xf6720 system.c:355 + or byte [bp+018h], 001h ; 80 4e 18 01 ; 0xf6723 system.c:361 + jmp near 0696dh ; e9 43 02 ; 0xf6727 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf672a system.c:365 + xor ah, ah ; 30 e4 ; 0xf672d + cmp ax, strict word 00001h ; 3d 01 00 ; 0xf672f + jc short 06742h ; 72 0e ; 0xf6732 + jbe short 06756h ; 76 20 ; 0xf6734 + cmp ax, strict word 00003h ; 3d 03 00 ; 0xf6736 + je short 06783h ; 74 48 ; 0xf6739 + cmp ax, strict word 00002h ; 3d 02 00 ; 0xf673b + je short 06766h ; 74 26 ; 0xf673e + jmp short 06790h ; eb 4e ; 0xf6740 + test ax, ax ; 85 c0 ; 0xf6742 + jne short 06790h ; 75 4a ; 0xf6744 + xor ax, ax ; 31 c0 ; 0xf6746 system.c:367 + call 0666fh ; e8 24 ff ; 0xf6748 + and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf674b system.c:368 + mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf674f system.c:369 + jmp near 067c9h ; e9 73 00 ; 0xf6753 system.c:370 + mov ax, strict word 00001h ; b8 01 00 ; 0xf6756 system.c:372 + call 0666fh ; e8 13 ff ; 0xf6759 + and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf675c system.c:373 + mov byte [bp+013h], bh ; 88 7e 13 ; 0xf6760 system.c:374 + jmp near 067c9h ; e9 63 00 ; 0xf6763 system.c:375 + mov dx, 00092h ; ba 92 00 ; 0xf6766 system.c:377 + in AL, DX ; ec ; 0xf6769 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf676a + shr ax, 1 ; d1 e8 ; 0xf676c + and ax, strict word 00001h ; 25 01 00 ; 0xf676e + mov dx, word [bp+012h] ; 8b 56 12 ; 0xf6771 + mov dl, al ; 88 c2 ; 0xf6774 + mov word [bp+012h], dx ; 89 56 12 ; 0xf6776 + and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf6779 system.c:378 + mov byte [bp+013h], ah ; 88 66 13 ; 0xf677d system.c:379 + jmp near 067c9h ; e9 46 00 ; 0xf6780 system.c:380 + and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf6783 system.c:382 + mov byte [bp+013h], ah ; 88 66 13 ; 0xf6787 system.c:383 + mov word [bp+00ch], ax ; 89 46 0c ; 0xf678a system.c:384 + jmp near 067c9h ; e9 39 00 ; 0xf678d system.c:385 + mov bx, 00da0h ; bb a0 0d ; 0xf6790 system.c:387 + mov cx, ds ; 8c d9 ; 0xf6793 + mov ax, strict word 00004h ; b8 04 00 ; 0xf6795 + call 018cch ; e8 31 b1 ; 0xf6798 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf679b + xor ah, ah ; 30 e4 ; 0xf679e + push ax ; 50 ; 0xf67a0 + mov ax, 0082eh ; b8 2e 08 ; 0xf67a1 + push ax ; 50 ; 0xf67a4 + mov ax, strict word 00004h ; b8 04 00 ; 0xf67a5 + push ax ; 50 ; 0xf67a8 + call 0190fh ; e8 63 b1 ; 0xf67a9 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf67ac + jmp near 06964h ; e9 b2 01 ; 0xf67af + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf67b2 system.c:408 + xor ah, ah ; 30 e4 ; 0xf67b5 + or ah, 086h ; 80 cc 86 ; 0xf67b7 + mov word [bp+012h], ax ; 89 46 12 ; 0xf67ba + jmp near 069beh ; e9 fe 01 ; 0xf67bd + and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf67c0 system.c:414 + xor al, bl ; 30 d8 ; 0xf67c4 system.c:415 + mov byte [bp+013h], al ; 88 46 13 ; 0xf67c6 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf67c9 system.c:416 + pop di ; 5f ; 0xf67cc + pop si ; 5e ; 0xf67cd + pop bp ; 5d ; 0xf67ce + retn ; c3 ; 0xf67cf + test byte [bp+012h], 0ffh ; f6 46 12 ff ; 0xf67d0 system.c:419 + jne short 0683ch ; 75 66 ; 0xf67d4 + mov bx, 000a0h ; bb a0 00 ; 0xf67d6 system.c:38 + mov cx, strict word 00040h ; b9 40 00 ; 0xf67d9 + mov es, cx ; 8e c1 ; 0xf67dc + mov bl, byte [es:bx] ; 26 8a 1f ; 0xf67de + test bl, 001h ; f6 c3 01 ; 0xf67e1 system.c:39 + jne short 06834h ; 75 4e ; 0xf67e4 + mov bx, 000a0h ; bb a0 00 ; 0xf67e6 system.c:41 + mov DL, strict byte 001h ; b2 01 ; 0xf67e9 + mov byte [es:bx], dl ; 26 88 17 ; 0xf67eb system.c:43 + mov bx, 00098h ; bb 98 00 ; 0xf67ee system.c:51 + mov dx, word [bp+014h] ; 8b 56 14 ; 0xf67f1 + mov word [es:bx], dx ; 26 89 17 ; 0xf67f4 system.c:53 + mov bx, 0009ah ; bb 9a 00 ; 0xf67f7 system.c:51 + mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf67fa + mov word [es:bx], ax ; 26 89 07 ; 0xf67fd system.c:53 + mov bx, 0009ch ; bb 9c 00 ; 0xf6800 system.c:51 + mov dx, word [bp+00eh] ; 8b 56 0e ; 0xf6803 + mov word [es:bx], dx ; 26 89 17 ; 0xf6806 system.c:53 + mov bx, 0009eh ; bb 9e 00 ; 0xf6809 system.c:51 + mov dx, word [bp+010h] ; 8b 56 10 ; 0xf680c + mov word [es:bx], dx ; 26 89 17 ; 0xf680f system.c:53 + and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf6812 system.c:428 + mov dx, 000a1h ; ba a1 00 ; 0xf6816 system.c:429 + in AL, DX ; ec ; 0xf6819 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf681a + and AL, strict byte 0feh ; 24 fe ; 0xf681c system.c:430 + out DX, AL ; ee ; 0xf681e + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf681f system.c:431 + call 01652h ; e8 2d ae ; 0xf6822 + mov dl, al ; 88 c2 ; 0xf6825 system.c:432 + or dl, 040h ; 80 ca 40 ; 0xf6827 + xor dh, dh ; 30 f6 ; 0xf682a + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf682c + call 0166dh ; e8 3b ae ; 0xf682f + jmp short 067c9h ; eb 95 ; 0xf6832 system.c:433 + mov word [bp+018h], dx ; 89 56 18 ; 0xf6834 system.c:436 + mov word [bp+012h], ax ; 89 46 12 ; 0xf6837 system.c:437 + jmp short 067c9h ; eb 8d ; 0xf683a system.c:439 + cmp bx, strict byte 00001h ; 83 fb 01 ; 0xf683c + jne short 0685eh ; 75 1d ; 0xf683f + mov bx, 000a0h ; bb a0 00 ; 0xf6841 system.c:43 + mov ax, strict word 00040h ; b8 40 00 ; 0xf6844 + mov es, ax ; 8e c0 ; 0xf6847 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf6849 + and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf684d system.c:442 + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6851 system.c:443 + call 01652h ; e8 fb ad ; 0xf6854 + mov dl, al ; 88 c2 ; 0xf6857 system.c:444 + and dl, 0bfh ; 80 e2 bf ; 0xf6859 + jmp short 0682ah ; eb cc ; 0xf685c + mov word [bp+018h], dx ; 89 56 18 ; 0xf685e system.c:447 + mov dx, ax ; 89 c2 ; 0xf6861 system.c:449 + xor dh, ah ; 30 e6 ; 0xf6863 + xor al, bl ; 30 d8 ; 0xf6865 + dec dx ; 4a ; 0xf6867 + or ax, dx ; 09 d0 ; 0xf6868 + mov word [bp+012h], ax ; 89 46 12 ; 0xf686a + jmp near 067c9h ; e9 59 ff ; 0xf686d system.c:452 + sti ; fb ; 0xf6870 system.c:458 + mov dx, word [bp+010h] ; 8b 56 10 ; 0xf6871 system.c:459 + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf6874 + call 0662ch ; e8 b2 fd ; 0xf6877 + jmp near 067c9h ; e9 4c ff ; 0xf687a system.c:460 + mov word [bp+012h], ax ; 89 46 12 ; 0xf687d system.c:482 + mov word [bp+018h], dx ; 89 56 18 ; 0xf6880 system.c:483 + jmp near 067c9h ; e9 43 ff ; 0xf6883 system.c:485 + cli ; fa ; 0xf6886 system.c:494 + mov ax, strict word 00001h ; b8 01 00 ; 0xf6887 system.c:496 + call 0666fh ; e8 e2 fd ; 0xf688a + mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf688d system.c:499 + add bx, strict byte 00038h ; 83 c3 38 ; 0xf6890 + mov es, [bp+014h] ; 8e 46 14 ; 0xf6893 system.c:51 + mov word [es:bx], strict word 0ffffh ; 26 c7 07 ff ff ; 0xf6896 system.c:53 + mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf689b system.c:500 + add bx, strict byte 0003ah ; 83 c3 3a ; 0xf689e + mov es, [bp+014h] ; 8e 46 14 ; 0xf68a1 system.c:51 + mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf68a4 system.c:53 + mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf68a9 system.c:501 + add bx, strict byte 0003ch ; 83 c3 3c ; 0xf68ac + mov es, [bp+014h] ; 8e 46 14 ; 0xf68af system.c:41 + mov byte [es:bx], 00fh ; 26 c6 07 0f ; 0xf68b2 system.c:43 + mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf68b6 system.c:502 + add bx, strict byte 0003dh ; 83 c3 3d ; 0xf68b9 + mov es, [bp+014h] ; 8e 46 14 ; 0xf68bc system.c:41 + mov byte [es:bx], 09bh ; 26 c6 07 9b ; 0xf68bf + mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf68c3 system.c:503 + add bx, strict byte 0003eh ; 83 c3 3e ; 0xf68c6 + mov es, [bp+014h] ; 8e 46 14 ; 0xf68c9 system.c:51 + mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf68cc + mov AL, strict byte 011h ; b0 11 ; 0xf68d1 system.c:506 + mov dx, strict word 00020h ; ba 20 00 ; 0xf68d3 + out DX, AL ; ee ; 0xf68d6 + mov dx, 000a0h ; ba a0 00 ; 0xf68d7 system.c:507 + out DX, AL ; ee ; 0xf68da + mov al, byte [bp+00dh] ; 8a 46 0d ; 0xf68db system.c:508 + mov dx, strict word 00021h ; ba 21 00 ; 0xf68de + out DX, AL ; ee ; 0xf68e1 + mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf68e2 system.c:509 + mov dx, 000a1h ; ba a1 00 ; 0xf68e5 + out DX, AL ; ee ; 0xf68e8 + mov AL, strict byte 004h ; b0 04 ; 0xf68e9 system.c:510 + mov dx, strict word 00021h ; ba 21 00 ; 0xf68eb + out DX, AL ; ee ; 0xf68ee + mov AL, strict byte 002h ; b0 02 ; 0xf68ef system.c:511 + mov dx, 000a1h ; ba a1 00 ; 0xf68f1 + out DX, AL ; ee ; 0xf68f4 + mov AL, strict byte 001h ; b0 01 ; 0xf68f5 system.c:512 + mov dx, strict word 00021h ; ba 21 00 ; 0xf68f7 + out DX, AL ; ee ; 0xf68fa + mov dx, 000a1h ; ba a1 00 ; 0xf68fb system.c:513 + out DX, AL ; ee ; 0xf68fe + mov AL, strict byte 0ffh ; b0 ff ; 0xf68ff system.c:515 + mov dx, strict word 00021h ; ba 21 00 ; 0xf6901 + out DX, AL ; ee ; 0xf6904 + mov dx, 000a1h ; ba a1 00 ; 0xf6905 system.c:516 + out DX, AL ; ee ; 0xf6908 + mov si, word [bp+006h] ; 8b 76 06 ; 0xf6909 system.c:518 + lgdt [es:si+008h] ; 26 0f 01 54 08 ; 0xf690c + lidt [es:si+010h] ; 26 0f 01 5c 10 ; 0xf6911 + push strict byte 00038h ; 6a 38 ; 0xf6916 + call 0691bh ; e8 00 00 ; 0xf6918 + pop ax ; 58 ; 0xf691b + add ax, strict byte 0000eh ; 83 c0 0e ; 0xf691c + push ax ; 50 ; 0xf691f + smsw ax ; 0f 01 e0 ; 0xf6920 + or AL, strict byte 001h ; 0c 01 ; 0xf6923 + lmsw ax ; 0f 01 f0 ; 0xf6925 + retf ; cb ; 0xf6928 + mov ax, strict word 00018h ; b8 18 00 ; 0xf6929 + mov ds, ax ; 8e d8 ; 0xf692c + add AL, strict byte 008h ; 04 08 ; 0xf692e + mov es, ax ; 8e c0 ; 0xf6930 + add AL, strict byte 008h ; 04 08 ; 0xf6932 + mov ss, ax ; 8e d0 ; 0xf6934 + lea ax, [bp+004h] ; 8d 46 04 ; 0xf6936 system.c:519 + db 08bh, 0e0h + ; mov sp, ax ; 8b e0 ; 0xf6939 + popaw ; 61 ; 0xf693b + add sp, strict byte 00006h ; 83 c4 06 ; 0xf693c + pop cx ; 59 ; 0xf693f + pop ax ; 58 ; 0xf6940 + pop ax ; 58 ; 0xf6941 + mov ax, strict word 00030h ; b8 30 00 ; 0xf6942 + push ax ; 50 ; 0xf6945 + push cx ; 51 ; 0xf6946 + retf ; cb ; 0xf6947 + jmp near 067c9h ; e9 7e fe ; 0xf6948 system.c:525 + mov bx, 00da0h ; bb a0 0d ; 0xf694b system.c:532 + mov cx, ds ; 8c d9 ; 0xf694e + mov ax, strict word 00004h ; b8 04 00 ; 0xf6950 + call 018cch ; e8 76 af ; 0xf6953 + mov ax, 0086eh ; b8 6e 08 ; 0xf6956 + push ax ; 50 ; 0xf6959 + mov ax, strict word 00004h ; b8 04 00 ; 0xf695a + push ax ; 50 ; 0xf695d + call 0190fh ; e8 ae af ; 0xf695e + add sp, strict byte 00004h ; 83 c4 04 ; 0xf6961 + or byte [bp+018h], 001h ; 80 4e 18 01 ; 0xf6964 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf6968 + xor ah, ah ; 30 e4 ; 0xf696b + or ah, 086h ; 80 cc 86 ; 0xf696d + mov word [bp+012h], ax ; 89 46 12 ; 0xf6970 + jmp near 067c9h ; e9 53 fe ; 0xf6973 + mov word [bp+018h], si ; 89 76 18 ; 0xf6976 system.c:538 + mov word [bp+012h], bx ; 89 5e 12 ; 0xf6979 system.c:539 + mov word [bp+00ch], 0e6f5h ; c7 46 0c f5 e6 ; 0xf697c system.c:540 + mov word [bp+014h], 0f000h ; c7 46 14 00 f0 ; 0xf6981 system.c:541 + jmp near 067c9h ; e9 40 fe ; 0xf6986 system.c:542 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf6989 system.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf698c + mov es, ax ; 8e c0 ; 0xf698f + mov ax, word [es:bx] ; 26 8b 07 ; 0xf6991 + mov word [bp+014h], ax ; 89 46 14 ; 0xf6994 system.c:49 + mov word [bp+018h], si ; 89 76 18 ; 0xf6997 system.c:546 + jmp near 067c9h ; e9 2c fe ; 0xf699a system.c:547 + mov ax, 0089dh ; b8 9d 08 ; 0xf699d system.c:550 + push ax ; 50 ; 0xf69a0 + mov ax, strict word 00008h ; b8 08 00 ; 0xf69a1 + jmp short 0695dh ; eb b7 ; 0xf69a4 + test byte [bp+012h], 0ffh ; f6 46 12 ff ; 0xf69a6 system.c:562 + jne short 069c5h ; 75 19 ; 0xf69aa + mov word [bp+012h], bx ; 89 5e 12 ; 0xf69ac system.c:564 + mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf69af system.c:565 + xor ah, ah ; 30 e4 ; 0xf69b2 + cmp ax, strict word 00001h ; 3d 01 00 ; 0xf69b4 + jc short 069beh ; 72 05 ; 0xf69b7 + cmp ax, strict word 00003h ; 3d 03 00 ; 0xf69b9 + jbe short 06997h ; 76 d9 ; 0xf69bc + or byte [bp+018h], 001h ; 80 4e 18 01 ; 0xf69be system.c:568 + jmp near 067c9h ; e9 04 fe ; 0xf69c2 system.c:569 + mov bx, 00da0h ; bb a0 0d ; 0xf69c5 system.c:573 + mov cx, ds ; 8c d9 ; 0xf69c8 + mov ax, strict word 00004h ; b8 04 00 ; 0xf69ca + call 018cch ; e8 fc ae ; 0xf69cd + push word [bp+00ch] ; ff 76 0c ; 0xf69d0 + push word [bp+012h] ; ff 76 12 ; 0xf69d3 + mov ax, 008b4h ; b8 b4 08 ; 0xf69d6 + push ax ; 50 ; 0xf69d9 + mov ax, strict word 00004h ; b8 04 00 ; 0xf69da + push ax ; 50 ; 0xf69dd + call 0190fh ; e8 2e af ; 0xf69de + add sp, strict byte 00008h ; 83 c4 08 ; 0xf69e1 + jmp near 06964h ; e9 7d ff ; 0xf69e4 + ; disGetNextSymbol 0xf69e7 LB 0x3561 -> off=0x0 cb=000000000000018f uValue=00000000000f53e7 'inv_op_handler' +inv_op_handler: ; 0xf69e7 LB 0x18f + push bp ; 55 ; 0xf69e7 invop.c:237 + mov bp, sp ; 89 e5 ; 0xf69e8 + push si ; 56 ; 0xf69ea + push di ; 57 ; 0xf69eb + push ax ; 50 ; 0xf69ec + push ax ; 50 ; 0xf69ed + les bx, [bp+018h] ; c4 5e 18 ; 0xf69ee invop.c:239 + cmp byte [es:bx], 0f0h ; 26 80 3f f0 ; 0xf69f1 invop.c:241 + jne short 069fdh ; 75 06 ; 0xf69f5 + inc word [bp+018h] ; ff 46 18 ; 0xf69f7 invop.c:243 + jmp near 06b6fh ; e9 72 01 ; 0xf69fa invop.c:244 + cmp word [es:bx], 0050fh ; 26 81 3f 0f 05 ; 0xf69fd + je short 06a07h ; 74 03 ; 0xf6a02 + jmp near 06b6bh ; e9 64 01 ; 0xf6a04 + mov si, 00800h ; be 00 08 ; 0xf6a07 invop.c:246 + xor ax, ax ; 31 c0 ; 0xf6a0a + mov word [bp-008h], ax ; 89 46 f8 ; 0xf6a0c + mov word [bp-006h], ax ; 89 46 fa ; 0xf6a0f invop.c:249 + mov es, ax ; 8e c0 ; 0xf6a12 invop.c:257 + mov bx, word [es:si+02ch] ; 26 8b 5c 2c ; 0xf6a14 + sub bx, strict byte 00006h ; 83 eb 06 ; 0xf6a18 + mov dx, word [es:si+020h] ; 26 8b 54 20 ; 0xf6a1b + mov ax, word [es:si+01ah] ; 26 8b 44 1a ; 0xf6a1f invop.c:258 + mov es, dx ; 8e c2 ; 0xf6a23 + mov word [es:bx], ax ; 26 89 07 ; 0xf6a25 + mov es, [bp-008h] ; 8e 46 f8 ; 0xf6a28 invop.c:259 + mov ax, word [es:si+022h] ; 26 8b 44 22 ; 0xf6a2b + mov es, dx ; 8e c2 ; 0xf6a2f + mov word [es:bx+002h], ax ; 26 89 47 02 ; 0xf6a31 + mov es, [bp-008h] ; 8e 46 f8 ; 0xf6a35 invop.c:260 + mov ax, word [es:si+018h] ; 26 8b 44 18 ; 0xf6a38 + mov es, dx ; 8e c2 ; 0xf6a3c + mov word [es:bx+004h], ax ; 26 89 47 04 ; 0xf6a3e + mov es, [bp-008h] ; 8e 46 f8 ; 0xf6a42 invop.c:263 + mov bl, byte [es:si+038h] ; 26 8a 5c 38 ; 0xf6a45 + xor bh, bh ; 30 ff ; 0xf6a49 + mov di, word [es:si+036h] ; 26 8b 7c 36 ; 0xf6a4b + mov ax, word [es:si+024h] ; 26 8b 44 24 ; 0xf6a4f invop.c:264 + xor dx, dx ; 31 d2 ; 0xf6a53 + mov cx, strict word 00004h ; b9 04 00 ; 0xf6a55 + sal ax, 1 ; d1 e0 ; 0xf6a58 + rcl dx, 1 ; d1 d2 ; 0xf6a5a + loop 06a58h ; e2 fa ; 0xf6a5c + cmp bx, dx ; 39 d3 ; 0xf6a5e + jne short 06a66h ; 75 04 ; 0xf6a60 + cmp di, ax ; 39 c7 ; 0xf6a62 + je short 06a6bh ; 74 05 ; 0xf6a64 + mov word [bp-006h], strict word 00001h ; c7 46 fa 01 00 ; 0xf6a66 invop.c:265 + mov es, [bp-008h] ; 8e 46 f8 ; 0xf6a6b invop.c:266 + mov bl, byte [es:si+04ah] ; 26 8a 5c 4a ; 0xf6a6e + xor bh, bh ; 30 ff ; 0xf6a72 + mov di, word [es:si+048h] ; 26 8b 7c 48 ; 0xf6a74 + mov ax, word [es:si+01eh] ; 26 8b 44 1e ; 0xf6a78 invop.c:267 + xor dx, dx ; 31 d2 ; 0xf6a7c + mov cx, strict word 00004h ; b9 04 00 ; 0xf6a7e + sal ax, 1 ; d1 e0 ; 0xf6a81 + rcl dx, 1 ; d1 d2 ; 0xf6a83 + loop 06a81h ; e2 fa ; 0xf6a85 + cmp bx, dx ; 39 d3 ; 0xf6a87 + jne short 06a8fh ; 75 04 ; 0xf6a89 + cmp di, ax ; 39 c7 ; 0xf6a8b + je short 06a93h ; 74 04 ; 0xf6a8d + or byte [bp-006h], 002h ; 80 4e fa 02 ; 0xf6a8f invop.c:268 + xor ax, ax ; 31 c0 ; 0xf6a93 invop.c:271 + push ax ; 50 ; 0xf6a95 + mov ax, 00800h ; b8 00 08 ; 0xf6a96 + push ax ; 50 ; 0xf6a99 + mov ax, strict word 0001fh ; b8 1f 00 ; 0xf6a9a + push ax ; 50 ; 0xf6a9d + db 08bh, 0dch + ; mov bx, sp ; 8b dc ; 0xf6a9e + lgdt [ss:bx] ; 36 0f 01 17 ; 0xf6aa0 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf6aa4 + mov es, [bp-008h] ; 8e 46 f8 ; 0xf6aa7 invop.c:274 + mov ax, word [es:si+03ah] ; 26 8b 44 3a ; 0xf6aaa + mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf6aae + mov ax, word [es:si+036h] ; 26 8b 44 36 ; 0xf6ab2 invop.c:275 + mov word [es:si+00ah], ax ; 26 89 44 0a ; 0xf6ab6 + mov dh, byte [es:si+039h] ; 26 8a 74 39 ; 0xf6aba invop.c:276 + mov dl, byte [es:si+038h] ; 26 8a 54 38 ; 0xf6abe + mov word [es:si+00ch], dx ; 26 89 54 0c ; 0xf6ac2 + mov word [es:si+00eh], strict word 00000h ; 26 c7 44 0e 00 00 ; 0xf6ac6 invop.c:277 + mov ax, word [es:si+04ch] ; 26 8b 44 4c ; 0xf6acc invop.c:280 + mov word [es:si], ax ; 26 89 04 ; 0xf6ad0 + mov ax, word [es:si+048h] ; 26 8b 44 48 ; 0xf6ad3 invop.c:281 + mov word [es:si+002h], ax ; 26 89 44 02 ; 0xf6ad7 + mov dh, byte [es:si+04bh] ; 26 8a 74 4b ; 0xf6adb invop.c:282 + mov dl, byte [es:si+04ah] ; 26 8a 54 4a ; 0xf6adf + xor ah, ah ; 30 e4 ; 0xf6ae3 + mov word [es:si+004h], dx ; 26 89 54 04 ; 0xf6ae5 + mov al, byte [es:si+05ch] ; 26 8a 44 5c ; 0xf6ae9 invop.c:285 + mov dx, word [es:si+05ah] ; 26 8b 54 5a ; 0xf6aed + push ax ; 50 ; 0xf6af1 invop.c:286 + push dx ; 52 ; 0xf6af2 + push word [es:si+05eh] ; 26 ff 74 5e ; 0xf6af3 + db 08bh, 0dch + ; mov bx, sp ; 8b dc ; 0xf6af7 + lidt [ss:bx] ; 36 0f 01 1f ; 0xf6af9 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf6afd + mov cx, word [bp-006h] ; 8b 4e fa ; 0xf6b00 invop.c:289 + mov ax, 00080h ; b8 80 00 ; 0xf6b03 + mov ss, ax ; 8e d0 ; 0xf6b06 + mov ax, word [ss:0001eh] ; 36 a1 1e 00 ; 0xf6b08 + mov ds, ax ; 8e d8 ; 0xf6b0c + mov ax, word [ss:00024h] ; 36 a1 24 00 ; 0xf6b0e + mov es, ax ; 8e c0 ; 0xf6b12 + smsw ax ; 0f 01 e0 ; 0xf6b14 invop.c:290 + inc ax ; 40 ; 0xf6b17 + lmsw ax ; 0f 01 f0 ; 0xf6b18 + mov ax, strict word 00008h ; b8 08 00 ; 0xf6b1b + test cx, strict word 00001h ; f7 c1 01 00 ; 0xf6b1e + je near 06b28h ; 0f 84 02 00 ; 0xf6b22 + mov es, ax ; 8e c0 ; 0xf6b26 + test cx, strict word 00002h ; f7 c1 02 00 ; 0xf6b28 + je near 06b50h ; 0f 84 20 00 ; 0xf6b2c + mov bx, word [word ss:00000h] ; 36 8b 1e 00 00 ; 0xf6b30 + mov word [word ss:00008h], bx ; 36 89 1e 08 00 ; 0xf6b35 + mov bx, word [word ss:00002h] ; 36 8b 1e 02 00 ; 0xf6b3a + mov word [word ss:0000ah], bx ; 36 89 1e 0a 00 ; 0xf6b3f + mov bx, word [word ss:00004h] ; 36 8b 1e 04 00 ; 0xf6b44 + mov word [word ss:0000ch], bx ; 36 89 1e 0c 00 ; 0xf6b49 + mov ds, ax ; 8e d8 ; 0xf6b4e + mov eax, cr0 ; 0f 20 c0 ; 0xf6b50 + dec ax ; 48 ; 0xf6b53 + mov cr0, eax ; 0f 22 c0 ; 0xf6b54 + mov sp, strict word 00026h ; bc 26 00 ; 0xf6b57 invop.c:291 + popaw ; 61 ; 0xf6b5a + mov sp, word [word ss:0002ch] ; 36 8b 26 2c 00 ; 0xf6b5b + sub sp, strict byte 00006h ; 83 ec 06 ; 0xf6b60 + mov ss, [word ss:00020h] ; 36 8e 16 20 00 ; 0xf6b63 + iret ; cf ; 0xf6b68 + jmp short 06b6fh ; eb 04 ; 0xf6b69 invop.c:343 + sti ; fb ; 0xf6b6b invop.c:347 + hlt ; f4 ; 0xf6b6c invop.c:348 + jmp short 06b6ch ; eb fd ; 0xf6b6d + lea sp, [bp-004h] ; 8d 66 fc ; 0xf6b6f invop.c:350 + pop di ; 5f ; 0xf6b72 + pop si ; 5e ; 0xf6b73 + pop bp ; 5d ; 0xf6b74 + retn ; c3 ; 0xf6b75 + ; disGetNextSymbol 0xf6b76 LB 0x33d2 -> off=0x0 cb=0000000000000028 uValue=00000000000f5576 'init_rtc' +init_rtc: ; 0xf6b76 LB 0x28 + push bp ; 55 ; 0xf6b76 timepci.c:74 + mov bp, sp ; 89 e5 ; 0xf6b77 + push dx ; 52 ; 0xf6b79 + mov dx, strict word 00026h ; ba 26 00 ; 0xf6b7a timepci.c:76 + mov ax, strict word 0000ah ; b8 0a 00 ; 0xf6b7d + call 0166dh ; e8 ea aa ; 0xf6b80 + mov dx, strict word 00002h ; ba 02 00 ; 0xf6b83 timepci.c:77 + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6b86 + call 0166dh ; e8 e1 aa ; 0xf6b89 + mov ax, strict word 0000ch ; b8 0c 00 ; 0xf6b8c timepci.c:78 + call 01652h ; e8 c0 aa ; 0xf6b8f + mov ax, strict word 0000dh ; b8 0d 00 ; 0xf6b92 timepci.c:79 + call 01652h ; e8 ba aa ; 0xf6b95 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf6b98 timepci.c:80 + pop dx ; 5a ; 0xf6b9b + pop bp ; 5d ; 0xf6b9c + retn ; c3 ; 0xf6b9d + ; disGetNextSymbol 0xf6b9e LB 0x33aa -> off=0x0 cb=0000000000000021 uValue=00000000000f559e 'rtc_updating' +rtc_updating: ; 0xf6b9e LB 0x21 + push bp ; 55 ; 0xf6b9e timepci.c:82 + mov bp, sp ; 89 e5 ; 0xf6b9f + push dx ; 52 ; 0xf6ba1 + mov dx, 061a8h ; ba a8 61 ; 0xf6ba2 timepci.c:95 + dec dx ; 4a ; 0xf6ba5 timepci.c:96 + je short 06bb6h ; 74 0e ; 0xf6ba6 + mov ax, strict word 0000ah ; b8 0a 00 ; 0xf6ba8 timepci.c:97 + call 01652h ; e8 a4 aa ; 0xf6bab + test AL, strict byte 080h ; a8 80 ; 0xf6bae + jne short 06ba5h ; 75 f3 ; 0xf6bb0 + xor ax, ax ; 31 c0 ; 0xf6bb2 timepci.c:98 + jmp short 06bb9h ; eb 03 ; 0xf6bb4 + mov ax, strict word 00001h ; b8 01 00 ; 0xf6bb6 timepci.c:100 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf6bb9 timepci.c:101 + pop dx ; 5a ; 0xf6bbc + pop bp ; 5d ; 0xf6bbd + retn ; c3 ; 0xf6bbe + ; disGetNextSymbol 0xf6bbf LB 0x3389 -> off=0x0 cb=0000000000000098 uValue=00000000000f55bf 'int70_function' +int70_function: ; 0xf6bbf LB 0x98 + push bp ; 55 ; 0xf6bbf timepci.c:110 + mov bp, sp ; 89 e5 ; 0xf6bc0 + push si ; 56 ; 0xf6bc2 + push ax ; 50 ; 0xf6bc3 + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6bc4 timepci.c:116 + call 01652h ; e8 88 aa ; 0xf6bc7 + mov bl, al ; 88 c3 ; 0xf6bca + mov byte [bp-004h], al ; 88 46 fc ; 0xf6bcc + mov ax, strict word 0000ch ; b8 0c 00 ; 0xf6bcf timepci.c:117 + call 01652h ; e8 7d aa ; 0xf6bd2 + mov dl, al ; 88 c2 ; 0xf6bd5 + test bl, 060h ; f6 c3 60 ; 0xf6bd7 timepci.c:119 + je short 06c37h ; 74 5b ; 0xf6bda + test AL, strict byte 020h ; a8 20 ; 0xf6bdc timepci.c:120 + je short 06be4h ; 74 04 ; 0xf6bde + sti ; fb ; 0xf6be0 timepci.c:122 + int 04ah ; cd 4a ; 0xf6be1 timepci.c:123 + cli ; fa ; 0xf6be3 timepci.c:124 + test dl, 040h ; f6 c2 40 ; 0xf6be4 timepci.c:126 + je short 06c4eh ; 74 65 ; 0xf6be7 + mov bx, 000a0h ; bb a0 00 ; 0xf6be9 timepci.c:38 + mov dx, strict word 00040h ; ba 40 00 ; 0xf6bec + mov es, dx ; 8e c2 ; 0xf6bef + mov al, byte [es:bx] ; 26 8a 07 ; 0xf6bf1 + test al, al ; 84 c0 ; 0xf6bf4 timepci.c:39 + je short 06c4eh ; 74 56 ; 0xf6bf6 + mov bx, 0009ch ; bb 9c 00 ; 0xf6bf8 timepci.c:58 + mov dx, word [es:bx] ; 26 8b 17 ; 0xf6bfb + mov bx, word [es:bx+002h] ; 26 8b 5f 02 ; 0xf6bfe + test bx, bx ; 85 db ; 0xf6c02 timepci.c:134 + jne short 06c39h ; 75 33 ; 0xf6c04 + cmp dx, 003d1h ; 81 fa d1 03 ; 0xf6c06 + jnc short 06c39h ; 73 2d ; 0xf6c0a + mov bx, 00098h ; bb 98 00 ; 0xf6c0c timepci.c:48 + mov cx, word [es:bx] ; 26 8b 0f ; 0xf6c0f + mov bx, 0009ah ; bb 9a 00 ; 0xf6c12 timepci.c:48 + mov bx, word [es:bx] ; 26 8b 1f ; 0xf6c15 + mov si, 000a0h ; be a0 00 ; 0xf6c18 timepci.c:43 + mov byte [es:si], 000h ; 26 c6 04 00 ; 0xf6c1b + mov dl, byte [bp-004h] ; 8a 56 fc ; 0xf6c1f timepci.c:141 + and dl, 037h ; 80 e2 37 ; 0xf6c22 + xor dh, dh ; 30 f6 ; 0xf6c25 + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6c27 + call 0166dh ; e8 40 aa ; 0xf6c2a + mov es, cx ; 8e c1 ; 0xf6c2d timepci.c:38 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf6c2f + or AL, strict byte 080h ; 0c 80 ; 0xf6c32 timepci.c:39 + mov byte [es:bx], al ; 26 88 07 ; 0xf6c34 timepci.c:43 + jmp short 06c4eh ; eb 15 ; 0xf6c37 timepci.c:143 + mov cx, dx ; 89 d1 ; 0xf6c39 timepci.c:145 + add cx, 0fc2fh ; 81 c1 2f fc ; 0xf6c3b + mov dx, bx ; 89 da ; 0xf6c3f + adc dx, strict byte 0ffffh ; 83 d2 ff ; 0xf6c41 + mov bx, 0009ch ; bb 9c 00 ; 0xf6c44 timepci.c:63 + mov word [es:bx], cx ; 26 89 0f ; 0xf6c47 + mov word [es:bx+002h], dx ; 26 89 57 02 ; 0xf6c4a + call 0e030h ; e8 df 73 ; 0xf6c4e timepci.c:151 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf6c51 timepci.c:152 + pop si ; 5e ; 0xf6c54 + pop bp ; 5d ; 0xf6c55 + retn ; c3 ; 0xf6c56 + ; disGetNextSymbol 0xf6c57 LB 0x32f1 -> off=0x10 cb=00000000000001d9 uValue=00000000000f5667 'int1a_function' + db 07dh, 06ch, 0a4h, 06ch, 0c9h, 06ch, 005h, 06dh, 057h, 06dh, 08eh, 06dh, 0d5h, 06dh, 030h, 06eh +int1a_function: ; 0xf6c67 LB 0x1d9 + push bp ; 55 ; 0xf6c67 timepci.c:157 + mov bp, sp ; 89 e5 ; 0xf6c68 + sti ; fb ; 0xf6c6a timepci.c:163 + mov al, byte [bp+013h] ; 8a 46 13 ; 0xf6c6b timepci.c:165 + cmp AL, strict byte 007h ; 3c 07 ; 0xf6c6e + jnbe short 06cd0h ; 77 5e ; 0xf6c70 + mov bl, al ; 88 c3 ; 0xf6c72 + xor bh, bh ; 30 ff ; 0xf6c74 + sal bx, 1 ; d1 e3 ; 0xf6c76 + jmp word [cs:bx+06c57h] ; 2e ff a7 57 6c ; 0xf6c78 + cli ; fa ; 0xf6c7d timepci.c:167 + mov bx, 0046eh ; bb 6e 04 ; 0xf6c7e timepci.c:168 + xor ax, ax ; 31 c0 ; 0xf6c81 + mov es, ax ; 8e c0 ; 0xf6c83 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf6c85 + mov word [bp+010h], ax ; 89 46 10 ; 0xf6c88 + mov bx, 0046ch ; bb 6c 04 ; 0xf6c8b timepci.c:169 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf6c8e + mov word [bp+00eh], ax ; 89 46 0e ; 0xf6c91 + mov bx, 00470h ; bb 70 04 ; 0xf6c94 timepci.c:170 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf6c97 + mov byte [bp+012h], al ; 88 46 12 ; 0xf6c9a + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf6c9d timepci.c:171 + sti ; fb ; 0xf6ca1 timepci.c:172 + jmp short 06cd0h ; eb 2c ; 0xf6ca2 timepci.c:175 + cli ; fa ; 0xf6ca4 timepci.c:178 + mov bx, 0046eh ; bb 6e 04 ; 0xf6ca5 timepci.c:179 + xor ax, ax ; 31 c0 ; 0xf6ca8 + mov es, ax ; 8e c0 ; 0xf6caa + mov ax, word [bp+010h] ; 8b 46 10 ; 0xf6cac + mov word [es:bx], ax ; 26 89 07 ; 0xf6caf + mov bx, 0046ch ; bb 6c 04 ; 0xf6cb2 timepci.c:180 + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf6cb5 + mov word [es:bx], ax ; 26 89 07 ; 0xf6cb8 + mov bx, 00470h ; bb 70 04 ; 0xf6cbb timepci.c:181 + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf6cbe + sti ; fb ; 0xf6cc2 timepci.c:182 + mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf6cc3 timepci.c:183 + jmp short 06cd0h ; eb 07 ; 0xf6cc7 timepci.c:185 + call 06b9eh ; e8 d2 fe ; 0xf6cc9 timepci.c:188 + test ax, ax ; 85 c0 ; 0xf6ccc + je short 06cd3h ; 74 03 ; 0xf6cce + jmp near 06d01h ; e9 2e 00 ; 0xf6cd0 timepci.c:190 + xor ax, ax ; 31 c0 ; 0xf6cd3 timepci.c:193 + call 01652h ; e8 7a a9 ; 0xf6cd5 + mov byte [bp+00fh], al ; 88 46 0f ; 0xf6cd8 + mov ax, strict word 00002h ; b8 02 00 ; 0xf6cdb timepci.c:194 + call 01652h ; e8 71 a9 ; 0xf6cde + mov byte [bp+010h], al ; 88 46 10 ; 0xf6ce1 + mov ax, strict word 00004h ; b8 04 00 ; 0xf6ce4 timepci.c:195 + call 01652h ; e8 68 a9 ; 0xf6ce7 + mov dl, al ; 88 c2 ; 0xf6cea + mov byte [bp+011h], al ; 88 46 11 ; 0xf6cec + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6cef timepci.c:196 + call 01652h ; e8 5d a9 ; 0xf6cf2 + and AL, strict byte 001h ; 24 01 ; 0xf6cf5 + mov byte [bp+00eh], al ; 88 46 0e ; 0xf6cf7 + mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf6cfa timepci.c:197 + mov byte [bp+012h], dl ; 88 56 12 ; 0xf6cfe timepci.c:198 + mov sp, bp ; 89 ec ; 0xf6d01 timepci.c:200 + pop bp ; 5d ; 0xf6d03 + retn ; c3 ; 0xf6d04 + call 06b9eh ; e8 96 fe ; 0xf6d05 timepci.c:213 + test ax, ax ; 85 c0 ; 0xf6d08 + je short 06d0fh ; 74 03 ; 0xf6d0a + call 06b76h ; e8 67 fe ; 0xf6d0c timepci.c:214 + mov dl, byte [bp+00fh] ; 8a 56 0f ; 0xf6d0f timepci.c:217 + xor dh, dh ; 30 f6 ; 0xf6d12 + xor ax, ax ; 31 c0 ; 0xf6d14 + call 0166dh ; e8 54 a9 ; 0xf6d16 + mov dl, byte [bp+010h] ; 8a 56 10 ; 0xf6d19 timepci.c:218 + xor dh, dh ; 30 f6 ; 0xf6d1c + mov ax, strict word 00002h ; b8 02 00 ; 0xf6d1e + call 0166dh ; e8 49 a9 ; 0xf6d21 + mov dl, byte [bp+011h] ; 8a 56 11 ; 0xf6d24 timepci.c:219 + xor dh, dh ; 30 f6 ; 0xf6d27 + mov ax, strict word 00004h ; b8 04 00 ; 0xf6d29 + call 0166dh ; e8 3e a9 ; 0xf6d2c + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6d2f timepci.c:221 + call 01652h ; e8 1d a9 ; 0xf6d32 + mov bl, al ; 88 c3 ; 0xf6d35 + and bl, 060h ; 80 e3 60 ; 0xf6d37 + or bl, 002h ; 80 cb 02 ; 0xf6d3a + mov al, byte [bp+00eh] ; 8a 46 0e ; 0xf6d3d + and AL, strict byte 001h ; 24 01 ; 0xf6d40 + or bl, al ; 08 c3 ; 0xf6d42 + mov dl, bl ; 88 da ; 0xf6d44 timepci.c:223 + xor dh, dh ; 30 f6 ; 0xf6d46 + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6d48 + call 0166dh ; e8 1f a9 ; 0xf6d4b + mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf6d4e timepci.c:224 + mov byte [bp+012h], bl ; 88 5e 12 ; 0xf6d52 timepci.c:225 + jmp short 06d01h ; eb aa ; 0xf6d55 timepci.c:227 + mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf6d57 timepci.c:230 + call 06b9eh ; e8 40 fe ; 0xf6d5b timepci.c:231 + test ax, ax ; 85 c0 ; 0xf6d5e + je short 06d64h ; 74 02 ; 0xf6d60 + jmp short 06d01h ; eb 9d ; 0xf6d62 timepci.c:233 + mov ax, strict word 00009h ; b8 09 00 ; 0xf6d64 timepci.c:235 + call 01652h ; e8 e8 a8 ; 0xf6d67 + mov byte [bp+010h], al ; 88 46 10 ; 0xf6d6a + mov ax, strict word 00008h ; b8 08 00 ; 0xf6d6d timepci.c:236 + call 01652h ; e8 df a8 ; 0xf6d70 + mov byte [bp+00fh], al ; 88 46 0f ; 0xf6d73 + mov ax, strict word 00007h ; b8 07 00 ; 0xf6d76 timepci.c:237 + call 01652h ; e8 d6 a8 ; 0xf6d79 + mov byte [bp+00eh], al ; 88 46 0e ; 0xf6d7c + mov ax, strict word 00032h ; b8 32 00 ; 0xf6d7f timepci.c:238 + call 01652h ; e8 cd a8 ; 0xf6d82 + mov byte [bp+011h], al ; 88 46 11 ; 0xf6d85 + mov byte [bp+012h], al ; 88 46 12 ; 0xf6d88 timepci.c:239 + jmp near 06d01h ; e9 73 ff ; 0xf6d8b timepci.c:241 + call 06b9eh ; e8 0d fe ; 0xf6d8e timepci.c:254 + test ax, ax ; 85 c0 ; 0xf6d91 + je short 06d9bh ; 74 06 ; 0xf6d93 + call 06b76h ; e8 de fd ; 0xf6d95 timepci.c:255 + jmp near 06d01h ; e9 66 ff ; 0xf6d98 timepci.c:257 + mov dl, byte [bp+010h] ; 8a 56 10 ; 0xf6d9b timepci.c:259 + xor dh, dh ; 30 f6 ; 0xf6d9e + mov ax, strict word 00009h ; b8 09 00 ; 0xf6da0 + call 0166dh ; e8 c7 a8 ; 0xf6da3 + mov dl, byte [bp+00fh] ; 8a 56 0f ; 0xf6da6 timepci.c:260 + xor dh, dh ; 30 f6 ; 0xf6da9 + mov ax, strict word 00008h ; b8 08 00 ; 0xf6dab + call 0166dh ; e8 bc a8 ; 0xf6dae + mov dl, byte [bp+00eh] ; 8a 56 0e ; 0xf6db1 timepci.c:261 + xor dh, dh ; 30 f6 ; 0xf6db4 + mov ax, strict word 00007h ; b8 07 00 ; 0xf6db6 + call 0166dh ; e8 b1 a8 ; 0xf6db9 + mov dl, byte [bp+011h] ; 8a 56 11 ; 0xf6dbc timepci.c:262 + xor dh, dh ; 30 f6 ; 0xf6dbf + mov ax, strict word 00032h ; b8 32 00 ; 0xf6dc1 + call 0166dh ; e8 a6 a8 ; 0xf6dc4 + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6dc7 timepci.c:263 + call 01652h ; e8 85 a8 ; 0xf6dca + mov bl, al ; 88 c3 ; 0xf6dcd + and bl, 07fh ; 80 e3 7f ; 0xf6dcf + jmp near 06d44h ; e9 6f ff ; 0xf6dd2 + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6dd5 timepci.c:281 + call 01652h ; e8 77 a8 ; 0xf6dd8 + mov bl, al ; 88 c3 ; 0xf6ddb + mov word [bp+012h], strict word 00000h ; c7 46 12 00 00 ; 0xf6ddd timepci.c:282 + test AL, strict byte 020h ; a8 20 ; 0xf6de2 timepci.c:283 + je short 06de9h ; 74 03 ; 0xf6de4 + jmp near 06d01h ; e9 18 ff ; 0xf6de6 timepci.c:286 + call 06b9eh ; e8 b2 fd ; 0xf6de9 timepci.c:288 + test ax, ax ; 85 c0 ; 0xf6dec + je short 06df3h ; 74 03 ; 0xf6dee + call 06b76h ; e8 83 fd ; 0xf6df0 timepci.c:289 + mov dl, byte [bp+00fh] ; 8a 56 0f ; 0xf6df3 timepci.c:292 + xor dh, dh ; 30 f6 ; 0xf6df6 + mov ax, strict word 00001h ; b8 01 00 ; 0xf6df8 + call 0166dh ; e8 6f a8 ; 0xf6dfb + mov dl, byte [bp+010h] ; 8a 56 10 ; 0xf6dfe timepci.c:293 + xor dh, dh ; 30 f6 ; 0xf6e01 + mov ax, strict word 00003h ; b8 03 00 ; 0xf6e03 + call 0166dh ; e8 64 a8 ; 0xf6e06 + mov dl, byte [bp+011h] ; 8a 56 11 ; 0xf6e09 timepci.c:294 + xor dh, dh ; 30 f6 ; 0xf6e0c + mov ax, strict word 00005h ; b8 05 00 ; 0xf6e0e + call 0166dh ; e8 59 a8 ; 0xf6e11 + mov dx, 000a1h ; ba a1 00 ; 0xf6e14 timepci.c:295 + in AL, DX ; ec ; 0xf6e17 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf6e18 + and AL, strict byte 0feh ; 24 fe ; 0xf6e1a + out DX, AL ; ee ; 0xf6e1c + mov dl, bl ; 88 da ; 0xf6e1d timepci.c:297 + and dl, 05fh ; 80 e2 5f ; 0xf6e1f + or dl, 020h ; 80 ca 20 ; 0xf6e22 + xor dh, dh ; 30 f6 ; 0xf6e25 + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6e27 + call 0166dh ; e8 40 a8 ; 0xf6e2a + jmp near 06d01h ; e9 d1 fe ; 0xf6e2d timepci.c:299 + mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6e30 timepci.c:312 + call 01652h ; e8 1c a8 ; 0xf6e33 + mov bl, al ; 88 c3 ; 0xf6e36 + mov dl, al ; 88 c2 ; 0xf6e38 timepci.c:314 + and dl, 057h ; 80 e2 57 ; 0xf6e3a + jmp near 06d46h ; e9 06 ff ; 0xf6e3d + ; disGetNextSymbol 0xf6e40 LB 0x3108 -> off=0x0 cb=0000000000000038 uValue=00000000000f5840 'send_to_mouse_ctrl' +send_to_mouse_ctrl: ; 0xf6e40 LB 0x38 + push bp ; 55 ; 0xf6e40 ps2mouse.c:77 + mov bp, sp ; 89 e5 ; 0xf6e41 + push bx ; 53 ; 0xf6e43 + push dx ; 52 ; 0xf6e44 + mov bl, al ; 88 c3 ; 0xf6e45 + mov dx, strict word 00064h ; ba 64 00 ; 0xf6e47 ps2mouse.c:81 + in AL, DX ; ec ; 0xf6e4a + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf6e4b + test AL, strict byte 002h ; a8 02 ; 0xf6e4d + je short 06e63h ; 74 12 ; 0xf6e4f + mov ax, 008eeh ; b8 ee 08 ; 0xf6e51 ps2mouse.c:82 + push ax ; 50 ; 0xf6e54 + mov ax, 01168h ; b8 68 11 ; 0xf6e55 + push ax ; 50 ; 0xf6e58 + mov ax, strict word 00007h ; b8 07 00 ; 0xf6e59 + push ax ; 50 ; 0xf6e5c + call 0190fh ; e8 af aa ; 0xf6e5d + add sp, strict byte 00006h ; 83 c4 06 ; 0xf6e60 + mov AL, strict byte 0d4h ; b0 d4 ; 0xf6e63 ps2mouse.c:83 + mov dx, strict word 00064h ; ba 64 00 ; 0xf6e65 + out DX, AL ; ee ; 0xf6e68 + mov al, bl ; 88 d8 ; 0xf6e69 ps2mouse.c:84 + mov dx, strict word 00060h ; ba 60 00 ; 0xf6e6b + out DX, AL ; ee ; 0xf6e6e + xor al, bl ; 30 d8 ; 0xf6e6f ps2mouse.c:86 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf6e71 + pop dx ; 5a ; 0xf6e74 + pop bx ; 5b ; 0xf6e75 + pop bp ; 5d ; 0xf6e76 + retn ; c3 ; 0xf6e77 + ; disGetNextSymbol 0xf6e78 LB 0x30d0 -> off=0x0 cb=000000000000005d uValue=00000000000f5878 'get_mouse_data' +get_mouse_data: ; 0xf6e78 LB 0x5d + push bp ; 55 ; 0xf6e78 ps2mouse.c:89 + mov bp, sp ; 89 e5 ; 0xf6e79 + push bx ; 53 ; 0xf6e7b + push cx ; 51 ; 0xf6e7c + push ax ; 50 ; 0xf6e7d + mov bx, ax ; 89 c3 ; 0xf6e7e + mov es, dx ; 8e c2 ; 0xf6e80 + mov cx, 02710h ; b9 10 27 ; 0xf6e82 ps2mouse.c:91 + mov dx, strict word 00064h ; ba 64 00 ; 0xf6e85 ps2mouse.c:94 + in AL, DX ; ec ; 0xf6e88 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf6e89 + and ax, strict word 00021h ; 25 21 00 ; 0xf6e8b + cmp ax, strict word 00021h ; 3d 21 00 ; 0xf6e8e + je short 06ebbh ; 74 28 ; 0xf6e91 + test cx, cx ; 85 c9 ; 0xf6e93 + je short 06ebbh ; 74 24 ; 0xf6e95 + mov dx, strict word 00061h ; ba 61 00 ; 0xf6e97 ps2mouse.c:97 + in AL, DX ; ec ; 0xf6e9a + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf6e9b + and AL, strict byte 010h ; 24 10 ; 0xf6e9d + mov byte [bp-006h], al ; 88 46 fa ; 0xf6e9f + mov dx, strict word 00061h ; ba 61 00 ; 0xf6ea2 ps2mouse.c:98 + in AL, DX ; ec ; 0xf6ea5 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf6ea6 + mov dx, ax ; 89 c2 ; 0xf6ea8 + xor dh, ah ; 30 e6 ; 0xf6eaa + and dl, 010h ; 80 e2 10 ; 0xf6eac + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf6eaf + xor ah, ah ; 30 e4 ; 0xf6eb2 + cmp dx, ax ; 39 c2 ; 0xf6eb4 + je short 06ea2h ; 74 ea ; 0xf6eb6 + dec cx ; 49 ; 0xf6eb8 ps2mouse.c:100 + jmp short 06e85h ; eb ca ; 0xf6eb9 ps2mouse.c:101 + test cx, cx ; 85 c9 ; 0xf6ebb ps2mouse.c:103 + jne short 06ec3h ; 75 04 ; 0xf6ebd + mov AL, strict byte 001h ; b0 01 ; 0xf6ebf ps2mouse.c:104 + jmp short 06eceh ; eb 0b ; 0xf6ec1 + mov dx, strict word 00060h ; ba 60 00 ; 0xf6ec3 ps2mouse.c:106 + in AL, DX ; ec ; 0xf6ec6 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf6ec7 + mov byte [es:bx], al ; 26 88 07 ; 0xf6ec9 ps2mouse.c:107 + xor al, al ; 30 c0 ; 0xf6ecc ps2mouse.c:108 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf6ece ps2mouse.c:109 + pop cx ; 59 ; 0xf6ed1 + pop bx ; 5b ; 0xf6ed2 + pop bp ; 5d ; 0xf6ed3 + retn ; c3 ; 0xf6ed4 + ; disGetNextSymbol 0xf6ed5 LB 0x3073 -> off=0x0 cb=0000000000000036 uValue=00000000000f58d5 'set_kbd_command_byte' +set_kbd_command_byte: ; 0xf6ed5 LB 0x36 + push bp ; 55 ; 0xf6ed5 ps2mouse.c:111 + mov bp, sp ; 89 e5 ; 0xf6ed6 + push bx ; 53 ; 0xf6ed8 + push dx ; 52 ; 0xf6ed9 + mov bl, al ; 88 c3 ; 0xf6eda + mov dx, strict word 00064h ; ba 64 00 ; 0xf6edc ps2mouse.c:113 + in AL, DX ; ec ; 0xf6edf + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf6ee0 + test AL, strict byte 002h ; a8 02 ; 0xf6ee2 + je short 06ef8h ; 74 12 ; 0xf6ee4 + mov ax, 008f8h ; b8 f8 08 ; 0xf6ee6 ps2mouse.c:114 + push ax ; 50 ; 0xf6ee9 + mov ax, 01168h ; b8 68 11 ; 0xf6eea + push ax ; 50 ; 0xf6eed + mov ax, strict word 00007h ; b8 07 00 ; 0xf6eee + push ax ; 50 ; 0xf6ef1 + call 0190fh ; e8 1a aa ; 0xf6ef2 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf6ef5 + mov AL, strict byte 060h ; b0 60 ; 0xf6ef8 ps2mouse.c:116 + mov dx, strict word 00064h ; ba 64 00 ; 0xf6efa + out DX, AL ; ee ; 0xf6efd + mov al, bl ; 88 d8 ; 0xf6efe ps2mouse.c:117 + mov dx, strict word 00060h ; ba 60 00 ; 0xf6f00 + out DX, AL ; ee ; 0xf6f03 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf6f04 ps2mouse.c:118 + pop dx ; 5a ; 0xf6f07 + pop bx ; 5b ; 0xf6f08 + pop bp ; 5d ; 0xf6f09 + retn ; c3 ; 0xf6f0a + ; disGetNextSymbol 0xf6f0b LB 0x303d -> off=0x0 cb=000000000000009e uValue=00000000000f590b 'int74_function' +int74_function: ; 0xf6f0b LB 0x9e + push bp ; 55 ; 0xf6f0b ps2mouse.c:121 + mov bp, sp ; 89 e5 ; 0xf6f0c + push si ; 56 ; 0xf6f0e + push ax ; 50 ; 0xf6f0f + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf6f10 ps2mouse.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf6f13 + mov es, ax ; 8e c0 ; 0xf6f16 + mov bx, word [es:bx] ; 26 8b 1f ; 0xf6f18 + mov word [bp+004h], strict word 00000h ; c7 46 04 00 00 ; 0xf6f1b ps2mouse.c:129 + mov dx, strict word 00064h ; ba 64 00 ; 0xf6f20 ps2mouse.c:131 + in AL, DX ; ec ; 0xf6f23 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf6f24 + and AL, strict byte 021h ; 24 21 ; 0xf6f26 ps2mouse.c:132 + cmp AL, strict byte 021h ; 3c 21 ; 0xf6f28 + jne short 06f4ah ; 75 1e ; 0xf6f2a + mov dx, strict word 00060h ; ba 60 00 ; 0xf6f2c ps2mouse.c:135 + in AL, DX ; ec ; 0xf6f2f + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf6f30 + mov byte [bp-004h], al ; 88 46 fc ; 0xf6f32 + mov si, strict word 00026h ; be 26 00 ; 0xf6f35 ps2mouse.c:38 + mov es, bx ; 8e c3 ; 0xf6f38 + mov al, byte [es:si] ; 26 8a 04 ; 0xf6f3a + mov si, strict word 00027h ; be 27 00 ; 0xf6f3d ps2mouse.c:38 + mov ah, byte [es:si] ; 26 8a 24 ; 0xf6f40 + mov cl, ah ; 88 e1 ; 0xf6f43 ps2mouse.c:39 + test ah, 080h ; f6 c4 80 ; 0xf6f45 ps2mouse.c:141 + jne short 06f4ch ; 75 02 ; 0xf6f48 + jmp short 06fa3h ; eb 57 ; 0xf6f4a ps2mouse.c:142 + mov ch, cl ; 88 cd ; 0xf6f4c ps2mouse.c:145 + and ch, 007h ; 80 e5 07 ; 0xf6f4e + mov ah, al ; 88 c4 ; 0xf6f51 ps2mouse.c:146 + and ah, 007h ; 80 e4 07 ; 0xf6f53 + mov dl, ah ; 88 e2 ; 0xf6f56 ps2mouse.c:147 + xor dh, dh ; 30 f6 ; 0xf6f58 + mov si, dx ; 89 d6 ; 0xf6f5a + add si, strict byte 00028h ; 83 c6 28 ; 0xf6f5c + mov es, bx ; 8e c3 ; 0xf6f5f ps2mouse.c:43 + mov dl, byte [bp-004h] ; 8a 56 fc ; 0xf6f61 + mov byte [es:si], dl ; 26 88 14 ; 0xf6f64 + cmp ah, ch ; 38 ec ; 0xf6f67 ps2mouse.c:149 + jc short 06f99h ; 72 2e ; 0xf6f69 + mov si, strict word 00028h ; be 28 00 ; 0xf6f6b ps2mouse.c:38 + mov al, byte [es:si] ; 26 8a 04 ; 0xf6f6e + xor ah, ah ; 30 e4 ; 0xf6f71 ps2mouse.c:39 + mov word [bp+00ch], ax ; 89 46 0c ; 0xf6f73 + mov si, strict word 00029h ; be 29 00 ; 0xf6f76 ps2mouse.c:38 + mov al, byte [es:si] ; 26 8a 04 ; 0xf6f79 + mov word [bp+00ah], ax ; 89 46 0a ; 0xf6f7c ps2mouse.c:39 + mov si, strict word 0002ah ; be 2a 00 ; 0xf6f7f ps2mouse.c:38 + mov al, byte [es:si] ; 26 8a 04 ; 0xf6f82 + mov word [bp+008h], ax ; 89 46 08 ; 0xf6f85 ps2mouse.c:39 + xor al, al ; 30 c0 ; 0xf6f88 ps2mouse.c:154 + mov word [bp+006h], ax ; 89 46 06 ; 0xf6f8a + test cl, 080h ; f6 c1 80 ; 0xf6f8d ps2mouse.c:157 + je short 06f9bh ; 74 09 ; 0xf6f90 + mov word [bp+004h], strict word 00001h ; c7 46 04 01 00 ; 0xf6f92 ps2mouse.c:158 + jmp short 06f9bh ; eb 02 ; 0xf6f97 ps2mouse.c:160 + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf6f99 ps2mouse.c:161 + mov si, strict word 00026h ; be 26 00 ; 0xf6f9b ps2mouse.c:43 + mov es, bx ; 8e c3 ; 0xf6f9e + mov byte [es:si], al ; 26 88 04 ; 0xf6fa0 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf6fa3 ps2mouse.c:164 + pop si ; 5e ; 0xf6fa6 + pop bp ; 5d ; 0xf6fa7 + retn ; c3 ; 0xf6fa8 + ; disGetNextSymbol 0xf6fa9 LB 0x2f9f -> off=0x10 cb=0000000000000380 uValue=00000000000f59b9 'int15_function_mouse' + db 0fah, 06fh, 06bh, 070h, 0e1h, 070h, 073h, 071h, 0e5h, 071h, 040h, 070h, 00dh, 072h, 0deh, 072h +int15_function_mouse: ; 0xf6fb9 LB 0x380 + push bp ; 55 ; 0xf6fb9 ps2mouse.c:166 + mov bp, sp ; 89 e5 ; 0xf6fba + sub sp, strict byte 00006h ; 83 ec 06 ; 0xf6fbc + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf6fbf ps2mouse.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf6fc2 + mov es, ax ; 8e c0 ; 0xf6fc5 + mov dx, word [es:bx] ; 26 8b 17 ; 0xf6fc7 + cmp byte [bp+012h], 007h ; 80 7e 12 07 ; 0xf6fca ps2mouse.c:188 + jbe short 06fdbh ; 76 0b ; 0xf6fce + or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf6fd0 ps2mouse.c:191 + mov byte [bp+013h], 001h ; c6 46 13 01 ; 0xf6fd4 ps2mouse.c:192 + jmp near 07335h ; e9 5a 03 ; 0xf6fd8 ps2mouse.c:193 + mov ax, strict word 00065h ; b8 65 00 ; 0xf6fdb ps2mouse.c:197 + call 06ed5h ; e8 f4 fe ; 0xf6fde + and word [bp+018h], strict byte 0fffeh ; 83 66 18 fe ; 0xf6fe1 ps2mouse.c:198 + mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf6fe5 ps2mouse.c:199 + mov bl, byte [bp+012h] ; 8a 5e 12 ; 0xf6fe9 ps2mouse.c:201 + cmp bl, 007h ; 80 fb 07 ; 0xf6fec + jnbe short 0704eh ; 77 5d ; 0xf6fef + xor bh, bh ; 30 ff ; 0xf6ff1 + sal bx, 1 ; d1 e3 ; 0xf6ff3 + jmp word [cs:bx+06fa9h] ; 2e ff a7 a9 6f ; 0xf6ff5 + cmp byte [bp+00dh], 001h ; 80 7e 0d 01 ; 0xf6ffa ps2mouse.c:204 + jnbe short 07051h ; 77 51 ; 0xf6ffe + mov bx, strict word 00027h ; bb 27 00 ; 0xf7000 ps2mouse.c:38 + mov es, dx ; 8e c2 ; 0xf7003 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf7005 + test AL, strict byte 080h ; a8 80 ; 0xf7008 ps2mouse.c:212 + jne short 07017h ; 75 0b ; 0xf700a + or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf700c ps2mouse.c:214 + mov byte [bp+013h], 005h ; c6 46 13 05 ; 0xf7010 ps2mouse.c:215 + jmp near 0732fh ; e9 18 03 ; 0xf7014 ps2mouse.c:216 + cmp byte [bp+00dh], 000h ; 80 7e 0d 00 ; 0xf7017 ps2mouse.c:218 + jne short 07021h ; 75 04 ; 0xf701b + mov AL, strict byte 0f5h ; b0 f5 ; 0xf701d ps2mouse.c:220 + jmp short 07023h ; eb 02 ; 0xf701f ps2mouse.c:221 + mov AL, strict byte 0f4h ; b0 f4 ; 0xf7021 ps2mouse.c:223 + xor ah, ah ; 30 e4 ; 0xf7023 ps2mouse.c:226 + call 06e40h ; e8 18 fe ; 0xf7025 + test al, al ; 84 c0 ; 0xf7028 ps2mouse.c:227 + jne short 07054h ; 75 28 ; 0xf702a + mov dx, ss ; 8c d2 ; 0xf702c ps2mouse.c:228 + lea ax, [bp-006h] ; 8d 46 fa ; 0xf702e + call 06e78h ; e8 44 fe ; 0xf7031 + test al, al ; 84 c0 ; 0xf7034 ps2mouse.c:229 + je short 0709ah ; 74 62 ; 0xf7036 + cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf7038 + jne short 07054h ; 75 16 ; 0xf703c + jmp short 0709ah ; eb 5a ; 0xf703e ps2mouse.c:231 + mov al, byte [bp+00dh] ; 8a 46 0d ; 0xf7040 ps2mouse.c:242 + cmp AL, strict byte 001h ; 3c 01 ; 0xf7043 + jc short 0704bh ; 72 04 ; 0xf7045 + cmp AL, strict byte 008h ; 3c 08 ; 0xf7047 + jbe short 07057h ; 76 0c ; 0xf7049 + jmp near 071dbh ; e9 8d 01 ; 0xf704b + jmp near 07319h ; e9 c8 02 ; 0xf704e + jmp near 07327h ; e9 d3 02 ; 0xf7051 + jmp near 072b6h ; e9 5f 02 ; 0xf7054 + mov bx, strict word 00027h ; bb 27 00 ; 0xf7057 ps2mouse.c:38 + mov es, dx ; 8e c2 ; 0xf705a + mov al, byte [es:bx] ; 26 8a 07 ; 0xf705c + mov ah, byte [bp+00dh] ; 8a 66 0d ; 0xf705f ps2mouse.c:248 + db 0feh, 0cch + ; dec ah ; fe cc ; 0xf7062 + and AL, strict byte 0f8h ; 24 f8 ; 0xf7064 + or al, ah ; 08 e0 ; 0xf7066 + mov byte [es:bx], al ; 26 88 07 ; 0xf7068 ps2mouse.c:43 + mov bx, strict word 00026h ; bb 26 00 ; 0xf706b ps2mouse.c:38 + mov es, dx ; 8e c2 ; 0xf706e + mov al, byte [es:bx] ; 26 8a 07 ; 0xf7070 + and AL, strict byte 0f8h ; 24 f8 ; 0xf7073 ps2mouse.c:256 + mov byte [es:bx], al ; 26 88 07 ; 0xf7075 ps2mouse.c:43 + mov ax, 000ffh ; b8 ff 00 ; 0xf7078 ps2mouse.c:258 + call 06e40h ; e8 c2 fd ; 0xf707b + test al, al ; 84 c0 ; 0xf707e ps2mouse.c:259 + jne short 07054h ; 75 d2 ; 0xf7080 + mov dx, ss ; 8c d2 ; 0xf7082 ps2mouse.c:260 + lea ax, [bp-002h] ; 8d 46 fe ; 0xf7084 + call 06e78h ; e8 ee fd ; 0xf7087 + mov dl, al ; 88 c2 ; 0xf708a + cmp byte [bp-002h], 0feh ; 80 7e fe fe ; 0xf708c ps2mouse.c:262 + jne short 0709dh ; 75 0b ; 0xf7090 + or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf7092 ps2mouse.c:263 + mov byte [bp+013h], 004h ; c6 46 13 04 ; 0xf7096 ps2mouse.c:264 + jmp near 0732fh ; e9 92 02 ; 0xf709a ps2mouse.c:265 + cmp byte [bp-002h], 0fah ; 80 7e fe fa ; 0xf709d ps2mouse.c:267 + je short 070b7h ; 74 14 ; 0xf70a1 + mov al, byte [bp-002h] ; 8a 46 fe ; 0xf70a3 ps2mouse.c:268 + xor ah, ah ; 30 e4 ; 0xf70a6 + push ax ; 50 ; 0xf70a8 + mov ax, 00903h ; b8 03 09 ; 0xf70a9 + push ax ; 50 ; 0xf70ac + mov ax, strict word 00007h ; b8 07 00 ; 0xf70ad + push ax ; 50 ; 0xf70b0 + call 0190fh ; e8 5b a8 ; 0xf70b1 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf70b4 + test dl, dl ; 84 d2 ; 0xf70b7 ps2mouse.c:269 + jne short 07054h ; 75 99 ; 0xf70b9 + mov dx, ss ; 8c d2 ; 0xf70bb ps2mouse.c:270 + lea ax, [bp-006h] ; 8d 46 fa ; 0xf70bd + call 06e78h ; e8 b5 fd ; 0xf70c0 + test al, al ; 84 c0 ; 0xf70c3 ps2mouse.c:271 + jne short 07054h ; 75 8d ; 0xf70c5 + mov dx, ss ; 8c d2 ; 0xf70c7 ps2mouse.c:272 + lea ax, [bp-004h] ; 8d 46 fc ; 0xf70c9 + call 06e78h ; e8 a9 fd ; 0xf70cc + test al, al ; 84 c0 ; 0xf70cf ps2mouse.c:273 + jne short 07054h ; 75 81 ; 0xf70d1 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf70d3 ps2mouse.c:275 + mov byte [bp+00ch], al ; 88 46 0c ; 0xf70d6 + mov al, byte [bp-004h] ; 8a 46 fc ; 0xf70d9 ps2mouse.c:276 + mov byte [bp+00dh], al ; 88 46 0d ; 0xf70dc + jmp short 0709ah ; eb b9 ; 0xf70df ps2mouse.c:277 + mov al, byte [bp+00dh] ; 8a 46 0d ; 0xf70e1 ps2mouse.c:290 + cmp AL, strict byte 003h ; 3c 03 ; 0xf70e4 + jc short 070f8h ; 72 10 ; 0xf70e6 + jbe short 07116h ; 76 2c ; 0xf70e8 + cmp AL, strict byte 006h ; 3c 06 ; 0xf70ea + je short 07128h ; 74 3a ; 0xf70ec + cmp AL, strict byte 005h ; 3c 05 ; 0xf70ee + je short 07122h ; 74 30 ; 0xf70f0 + cmp AL, strict byte 004h ; 3c 04 ; 0xf70f2 + je short 0711ch ; 74 26 ; 0xf70f4 + jmp short 0712eh ; eb 36 ; 0xf70f6 + cmp AL, strict byte 002h ; 3c 02 ; 0xf70f8 + je short 07110h ; 74 14 ; 0xf70fa + cmp AL, strict byte 001h ; 3c 01 ; 0xf70fc + je short 0710ah ; 74 0a ; 0xf70fe + test al, al ; 84 c0 ; 0xf7100 + jne short 0712eh ; 75 2a ; 0xf7102 + mov byte [bp-006h], 00ah ; c6 46 fa 0a ; 0xf7104 ps2mouse.c:291 + jmp short 07132h ; eb 28 ; 0xf7108 + mov byte [bp-006h], 014h ; c6 46 fa 14 ; 0xf710a ps2mouse.c:292 + jmp short 07132h ; eb 22 ; 0xf710e + mov byte [bp-006h], 028h ; c6 46 fa 28 ; 0xf7110 ps2mouse.c:293 + jmp short 07132h ; eb 1c ; 0xf7114 + mov byte [bp-006h], 03ch ; c6 46 fa 3c ; 0xf7116 ps2mouse.c:294 + jmp short 07132h ; eb 16 ; 0xf711a + mov byte [bp-006h], 050h ; c6 46 fa 50 ; 0xf711c ps2mouse.c:295 + jmp short 07132h ; eb 10 ; 0xf7120 + mov byte [bp-006h], 064h ; c6 46 fa 64 ; 0xf7122 ps2mouse.c:296 + jmp short 07132h ; eb 0a ; 0xf7126 + mov byte [bp-006h], 0c8h ; c6 46 fa c8 ; 0xf7128 ps2mouse.c:297 + jmp short 07132h ; eb 04 ; 0xf712c + mov byte [bp-006h], 000h ; c6 46 fa 00 ; 0xf712e ps2mouse.c:298 + cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf7132 ps2mouse.c:300 + jbe short 07168h ; 76 30 ; 0xf7136 + mov ax, 000f3h ; b8 f3 00 ; 0xf7138 ps2mouse.c:301 + call 06e40h ; e8 02 fd ; 0xf713b + test al, al ; 84 c0 ; 0xf713e ps2mouse.c:302 + jne short 0715dh ; 75 1b ; 0xf7140 + mov dx, ss ; 8c d2 ; 0xf7142 ps2mouse.c:303 + lea ax, [bp-004h] ; 8d 46 fc ; 0xf7144 + call 06e78h ; e8 2e fd ; 0xf7147 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf714a ps2mouse.c:304 + xor ah, ah ; 30 e4 ; 0xf714d + call 06e40h ; e8 ee fc ; 0xf714f + mov dx, ss ; 8c d2 ; 0xf7152 ps2mouse.c:305 + lea ax, [bp-004h] ; 8d 46 fc ; 0xf7154 + call 06e78h ; e8 1e fd ; 0xf7157 + jmp near 0732fh ; e9 d2 01 ; 0xf715a ps2mouse.c:307 + or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf715d ps2mouse.c:309 + mov byte [bp+013h], 003h ; c6 46 13 03 ; 0xf7161 ps2mouse.c:310 + jmp near 0732fh ; e9 c7 01 ; 0xf7165 ps2mouse.c:312 + or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf7168 ps2mouse.c:314 + mov byte [bp+013h], 002h ; c6 46 13 02 ; 0xf716c ps2mouse.c:315 + jmp near 0732fh ; e9 bc 01 ; 0xf7170 ps2mouse.c:317 + cmp byte [bp+00dh], 004h ; 80 7e 0d 04 ; 0xf7173 ps2mouse.c:326 + jnc short 071dbh ; 73 62 ; 0xf7177 + mov ax, 000e8h ; b8 e8 00 ; 0xf7179 ps2mouse.c:327 + call 06e40h ; e8 c1 fc ; 0xf717c + test al, al ; 84 c0 ; 0xf717f ps2mouse.c:328 + jne short 071d1h ; 75 4e ; 0xf7181 + mov dx, ss ; 8c d2 ; 0xf7183 ps2mouse.c:329 + lea ax, [bp-006h] ; 8d 46 fa ; 0xf7185 + call 06e78h ; e8 ed fc ; 0xf7188 + cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf718b ps2mouse.c:330 + je short 071a5h ; 74 14 ; 0xf718f + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7191 ps2mouse.c:331 + xor ah, ah ; 30 e4 ; 0xf7194 + push ax ; 50 ; 0xf7196 + mov ax, 0092eh ; b8 2e 09 ; 0xf7197 + push ax ; 50 ; 0xf719a + mov ax, strict word 00007h ; b8 07 00 ; 0xf719b + push ax ; 50 ; 0xf719e + call 0190fh ; e8 6d a7 ; 0xf719f + add sp, strict byte 00006h ; 83 c4 06 ; 0xf71a2 + mov al, byte [bp+00dh] ; 8a 46 0d ; 0xf71a5 ps2mouse.c:332 + xor ah, ah ; 30 e4 ; 0xf71a8 + call 06e40h ; e8 93 fc ; 0xf71aa + mov dx, ss ; 8c d2 ; 0xf71ad ps2mouse.c:333 + lea ax, [bp-006h] ; 8d 46 fa ; 0xf71af + call 06e78h ; e8 c3 fc ; 0xf71b2 + cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf71b5 ps2mouse.c:334 + je short 0720ah ; 74 4f ; 0xf71b9 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf71bb ps2mouse.c:335 + xor ah, ah ; 30 e4 ; 0xf71be + push ax ; 50 ; 0xf71c0 + mov ax, 0092eh ; b8 2e 09 ; 0xf71c1 + push ax ; 50 ; 0xf71c4 + mov ax, strict word 00007h ; b8 07 00 ; 0xf71c5 + push ax ; 50 ; 0xf71c8 + call 0190fh ; e8 43 a7 ; 0xf71c9 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf71cc + jmp short 0720ah ; eb 39 ; 0xf71cf ps2mouse.c:337 + or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf71d1 ps2mouse.c:339 + mov byte [bp+013h], 003h ; c6 46 13 03 ; 0xf71d5 ps2mouse.c:340 + jmp short 0720ah ; eb 2f ; 0xf71d9 ps2mouse.c:342 + or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf71db ps2mouse.c:344 + mov byte [bp+013h], 002h ; c6 46 13 02 ; 0xf71df ps2mouse.c:345 + jmp short 0720ah ; eb 25 ; 0xf71e3 ps2mouse.c:347 + mov ax, 000f2h ; b8 f2 00 ; 0xf71e5 ps2mouse.c:351 + call 06e40h ; e8 55 fc ; 0xf71e8 + test al, al ; 84 c0 ; 0xf71eb ps2mouse.c:352 + jne short 07202h ; 75 13 ; 0xf71ed + mov dx, ss ; 8c d2 ; 0xf71ef ps2mouse.c:353 + lea ax, [bp-006h] ; 8d 46 fa ; 0xf71f1 + call 06e78h ; e8 81 fc ; 0xf71f4 + mov dx, ss ; 8c d2 ; 0xf71f7 ps2mouse.c:354 + lea ax, [bp-004h] ; 8d 46 fc ; 0xf71f9 + call 06e78h ; e8 79 fc ; 0xf71fc + jmp near 070d9h ; e9 d7 fe ; 0xf71ff + or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf7202 ps2mouse.c:355 + mov byte [bp+013h], 003h ; c6 46 13 03 ; 0xf7206 ps2mouse.c:360 + jmp near 0732fh ; e9 22 01 ; 0xf720a ps2mouse.c:362 + mov al, byte [bp+00dh] ; 8a 46 0d ; 0xf720d ps2mouse.c:366 + test al, al ; 84 c0 ; 0xf7210 + jbe short 0721dh ; 76 09 ; 0xf7212 + cmp AL, strict byte 002h ; 3c 02 ; 0xf7214 + jbe short 0721bh ; 76 03 ; 0xf7216 + jmp near 072c0h ; e9 a5 00 ; 0xf7218 + jmp short 07287h ; eb 6a ; 0xf721b + mov ax, 000e9h ; b8 e9 00 ; 0xf721d ps2mouse.c:368 + call 06e40h ; e8 1d fc ; 0xf7220 + test al, al ; 84 c0 ; 0xf7223 ps2mouse.c:369 + jne short 07290h ; 75 69 ; 0xf7225 + mov dx, ss ; 8c d2 ; 0xf7227 ps2mouse.c:370 + lea ax, [bp-006h] ; 8d 46 fa ; 0xf7229 + call 06e78h ; e8 49 fc ; 0xf722c + mov dl, al ; 88 c2 ; 0xf722f + cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf7231 ps2mouse.c:371 + je short 0724bh ; 74 14 ; 0xf7235 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7237 ps2mouse.c:372 + xor ah, ah ; 30 e4 ; 0xf723a + push ax ; 50 ; 0xf723c + mov ax, 0092eh ; b8 2e 09 ; 0xf723d + push ax ; 50 ; 0xf7240 + mov ax, strict word 00007h ; b8 07 00 ; 0xf7241 + push ax ; 50 ; 0xf7244 + call 0190fh ; e8 c7 a6 ; 0xf7245 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf7248 + test dl, dl ; 84 d2 ; 0xf724b ps2mouse.c:373 + jne short 07290h ; 75 41 ; 0xf724d + mov dx, ss ; 8c d2 ; 0xf724f ps2mouse.c:374 + lea ax, [bp-006h] ; 8d 46 fa ; 0xf7251 + call 06e78h ; e8 21 fc ; 0xf7254 + test al, al ; 84 c0 ; 0xf7257 ps2mouse.c:375 + jne short 072b6h ; 75 5b ; 0xf7259 + mov dx, ss ; 8c d2 ; 0xf725b ps2mouse.c:376 + lea ax, [bp-004h] ; 8d 46 fc ; 0xf725d + call 06e78h ; e8 15 fc ; 0xf7260 + test al, al ; 84 c0 ; 0xf7263 ps2mouse.c:377 + jne short 072b6h ; 75 4f ; 0xf7265 + mov dx, ss ; 8c d2 ; 0xf7267 ps2mouse.c:378 + lea ax, [bp-002h] ; 8d 46 fe ; 0xf7269 + call 06e78h ; e8 09 fc ; 0xf726c + test al, al ; 84 c0 ; 0xf726f ps2mouse.c:379 + jne short 072b6h ; 75 43 ; 0xf7271 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7273 ps2mouse.c:380 + mov byte [bp+00ch], al ; 88 46 0c ; 0xf7276 + mov al, byte [bp-004h] ; 8a 46 fc ; 0xf7279 ps2mouse.c:381 + mov byte [bp+010h], al ; 88 46 10 ; 0xf727c + mov al, byte [bp-002h] ; 8a 46 fe ; 0xf727f ps2mouse.c:382 + mov byte [bp+00eh], al ; 88 46 0e ; 0xf7282 + jmp short 0720ah ; eb 83 ; 0xf7285 ps2mouse.c:384 + cmp AL, strict byte 001h ; 3c 01 ; 0xf7287 ps2mouse.c:398 + jne short 07292h ; 75 07 ; 0xf7289 + mov ax, 000e6h ; b8 e6 00 ; 0xf728b ps2mouse.c:399 + jmp short 07295h ; eb 05 ; 0xf728e ps2mouse.c:400 + jmp short 072b6h ; eb 24 ; 0xf7290 + mov ax, 000e7h ; b8 e7 00 ; 0xf7292 ps2mouse.c:401 + call 06e40h ; e8 a8 fb ; 0xf7295 + mov dl, al ; 88 c2 ; 0xf7298 + test dl, dl ; 84 d2 ; 0xf729a ps2mouse.c:403 + jne short 072b2h ; 75 14 ; 0xf729c + mov dx, ss ; 8c d2 ; 0xf729e ps2mouse.c:404 + lea ax, [bp-006h] ; 8d 46 fa ; 0xf72a0 + call 06e78h ; e8 d2 fb ; 0xf72a3 + cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf72a6 ps2mouse.c:405 + je short 072b0h ; 74 04 ; 0xf72aa + mov DL, strict byte 001h ; b2 01 ; 0xf72ac + jmp short 072b2h ; eb 02 ; 0xf72ae + xor dl, dl ; 30 d2 ; 0xf72b0 + test dl, dl ; 84 d2 ; 0xf72b2 ps2mouse.c:407 + je short 07317h ; 74 61 ; 0xf72b4 + or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf72b6 ps2mouse.c:409 + mov byte [bp+013h], 003h ; c6 46 13 03 ; 0xf72ba ps2mouse.c:410 + jmp short 07317h ; eb 57 ; 0xf72be ps2mouse.c:412 + mov al, byte [bp+00dh] ; 8a 46 0d ; 0xf72c0 ps2mouse.c:415 + xor ah, ah ; 30 e4 ; 0xf72c3 + push ax ; 50 ; 0xf72c5 + mov ax, 0095ah ; b8 5a 09 ; 0xf72c6 + push ax ; 50 ; 0xf72c9 + mov ax, strict word 00007h ; b8 07 00 ; 0xf72ca + push ax ; 50 ; 0xf72cd + call 0190fh ; e8 3e a6 ; 0xf72ce + add sp, strict byte 00006h ; 83 c4 06 ; 0xf72d1 + or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf72d4 ps2mouse.c:417 + mov byte [bp+013h], 001h ; c6 46 13 01 ; 0xf72d8 ps2mouse.c:418 + jmp short 0732fh ; eb 51 ; 0xf72dc ps2mouse.c:420 + mov cx, word [bp+00ch] ; 8b 4e 0c ; 0xf72de ps2mouse.c:425 + mov bx, strict word 00022h ; bb 22 00 ; 0xf72e1 ps2mouse.c:53 + mov es, dx ; 8e c2 ; 0xf72e4 + mov word [es:bx], cx ; 26 89 0f ; 0xf72e6 + mov bx, strict word 00024h ; bb 24 00 ; 0xf72e9 ps2mouse.c:53 + mov ax, word [bp+014h] ; 8b 46 14 ; 0xf72ec + mov word [es:bx], ax ; 26 89 07 ; 0xf72ef + mov bx, strict word 00027h ; bb 27 00 ; 0xf72f2 ps2mouse.c:38 + mov ah, byte [es:bx] ; 26 8a 27 ; 0xf72f5 + mov al, ah ; 88 e0 ; 0xf72f8 ps2mouse.c:39 + test cx, cx ; 85 c9 ; 0xf72fa ps2mouse.c:429 + jne short 0730dh ; 75 0f ; 0xf72fc + cmp word [bp+014h], strict byte 00000h ; 83 7e 14 00 ; 0xf72fe + jne short 0730dh ; 75 09 ; 0xf7302 + test ah, 080h ; f6 c4 80 ; 0xf7304 ps2mouse.c:431 + je short 0730fh ; 74 06 ; 0xf7307 + and AL, strict byte 07fh ; 24 7f ; 0xf7309 ps2mouse.c:432 + jmp short 0730fh ; eb 02 ; 0xf730b ps2mouse.c:435 + or AL, strict byte 080h ; 0c 80 ; 0xf730d ps2mouse.c:437 + mov bx, strict word 00027h ; bb 27 00 ; 0xf730f ps2mouse.c:43 + mov es, dx ; 8e c2 ; 0xf7312 + mov byte [es:bx], al ; 26 88 07 ; 0xf7314 + jmp short 0732fh ; eb 16 ; 0xf7317 ps2mouse.c:440 + mov ax, 00974h ; b8 74 09 ; 0xf7319 ps2mouse.c:443 + push ax ; 50 ; 0xf731c + mov ax, strict word 00007h ; b8 07 00 ; 0xf731d + push ax ; 50 ; 0xf7320 + call 0190fh ; e8 eb a5 ; 0xf7321 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf7324 + or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf7327 ps2mouse.c:445 + mov byte [bp+013h], 001h ; c6 46 13 01 ; 0xf732b ps2mouse.c:446 + mov ax, strict word 00047h ; b8 47 00 ; 0xf732f ps2mouse.c:450 + call 06ed5h ; e8 a0 fb ; 0xf7332 + mov sp, bp ; 89 ec ; 0xf7335 ps2mouse.c:451 + pop bp ; 5d ; 0xf7337 + retn ; c3 ; 0xf7338 + ; disGetNextSymbol 0xf7339 LB 0x2c0f -> off=0x0 cb=00000000000000a9 uValue=00000000000f5d39 'int17_function' +int17_function: ; 0xf7339 LB 0xa9 + push bp ; 55 ; 0xf7339 parallel.c:60 + mov bp, sp ; 89 e5 ; 0xf733a + push si ; 56 ; 0xf733c + push di ; 57 ; 0xf733d + push ax ; 50 ; 0xf733e + sti ; fb ; 0xf733f parallel.c:65 + mov bx, word [bp+00eh] ; 8b 5e 0e ; 0xf7340 parallel.c:67 + sal bx, 1 ; d1 e3 ; 0xf7343 + add bx, strict byte 00008h ; 83 c3 08 ; 0xf7345 + mov ax, strict word 00040h ; b8 40 00 ; 0xf7348 parallel.c:48 + mov es, ax ; 8e c0 ; 0xf734b + mov bx, word [es:bx] ; 26 8b 1f ; 0xf734d + mov di, bx ; 89 df ; 0xf7350 parallel.c:49 + cmp byte [bp+013h], 003h ; 80 7e 13 03 ; 0xf7352 parallel.c:68 + jnc short 07364h ; 73 0c ; 0xf7356 + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf7358 + cmp ax, strict word 00003h ; 3d 03 00 ; 0xf735b + jnc short 07364h ; 73 04 ; 0xf735e + test bx, bx ; 85 db ; 0xf7360 + jnbe short 07367h ; 77 03 ; 0xf7362 + jmp near 073d7h ; e9 70 00 ; 0xf7364 + mov si, ax ; 89 c6 ; 0xf7367 parallel.c:69 + add si, strict byte 00078h ; 83 c6 78 ; 0xf7369 + mov ch, byte [es:si] ; 26 8a 2c ; 0xf736c parallel.c:38 + xor cl, cl ; 30 c9 ; 0xf736f parallel.c:39 + cmp byte [bp+013h], 000h ; 80 7e 13 00 ; 0xf7371 parallel.c:70 + jne short 073a3h ; 75 2c ; 0xf7375 + mov al, byte [bp+012h] ; 8a 46 12 ; 0xf7377 parallel.c:71 + mov dx, bx ; 89 da ; 0xf737a + out DX, AL ; ee ; 0xf737c + lea dx, [bx+002h] ; 8d 57 02 ; 0xf737d parallel.c:72 + in AL, DX ; ec ; 0xf7380 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf7381 + mov word [bp-006h], ax ; 89 46 fa ; 0xf7383 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7386 parallel.c:73 + or AL, strict byte 001h ; 0c 01 ; 0xf7389 + out DX, AL ; ee ; 0xf738b + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf738c parallel.c:74 + and AL, strict byte 0feh ; 24 fe ; 0xf738f + out DX, AL ; ee ; 0xf7391 + lea dx, [di+001h] ; 8d 55 01 ; 0xf7392 parallel.c:75 + in AL, DX ; ec ; 0xf7395 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf7396 + test AL, strict byte 040h ; a8 40 ; 0xf7398 + je short 073a3h ; 74 07 ; 0xf739a + test cx, cx ; 85 c9 ; 0xf739c + je short 073a3h ; 74 03 ; 0xf739e + dec cx ; 49 ; 0xf73a0 parallel.c:76 + jmp short 07392h ; eb ef ; 0xf73a1 parallel.c:77 + cmp byte [bp+013h], 001h ; 80 7e 13 01 ; 0xf73a3 parallel.c:79 + jne short 073beh ; 75 15 ; 0xf73a7 + lea dx, [di+002h] ; 8d 55 02 ; 0xf73a9 parallel.c:80 + in AL, DX ; ec ; 0xf73ac + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf73ad + mov word [bp-006h], ax ; 89 46 fa ; 0xf73af + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf73b2 parallel.c:81 + and AL, strict byte 0fbh ; 24 fb ; 0xf73b5 + out DX, AL ; ee ; 0xf73b7 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf73b8 parallel.c:82 + or AL, strict byte 004h ; 0c 04 ; 0xf73bb + out DX, AL ; ee ; 0xf73bd + lea dx, [di+001h] ; 8d 55 01 ; 0xf73be parallel.c:84 + in AL, DX ; ec ; 0xf73c1 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf73c2 + xor AL, strict byte 048h ; 34 48 ; 0xf73c4 parallel.c:85 + mov byte [bp+013h], al ; 88 46 13 ; 0xf73c6 + test cx, cx ; 85 c9 ; 0xf73c9 parallel.c:86 + jne short 073d1h ; 75 04 ; 0xf73cb + or byte [bp+013h], 001h ; 80 4e 13 01 ; 0xf73cd + and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf73d1 parallel.c:87 + jmp short 073dbh ; eb 04 ; 0xf73d5 parallel.c:88 + or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf73d7 parallel.c:89 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf73db parallel.c:91 + pop di ; 5f ; 0xf73de + pop si ; 5e ; 0xf73df + pop bp ; 5d ; 0xf73e0 + retn ; c3 ; 0xf73e1 + ; disGetNextSymbol 0xf73e2 LB 0x2b66 -> off=0x0 cb=00000000000000c8 uValue=00000000000f5de2 '_wait_' +_wait_: ; 0xf73e2 LB 0xc8 + push bp ; 55 ; 0xf73e2 logo.c:171 + mov bp, sp ; 89 e5 ; 0xf73e3 + push bx ; 53 ; 0xf73e5 + push cx ; 51 ; 0xf73e6 + push si ; 56 ; 0xf73e7 + push di ; 57 ; 0xf73e8 + sub sp, strict byte 00010h ; 83 ec 10 ; 0xf73e9 + mov cx, ax ; 89 c1 ; 0xf73ec + mov byte [bp-00ch], dl ; 88 56 f4 ; 0xf73ee + mov byte [bp-00ah], 000h ; c6 46 f6 00 ; 0xf73f1 logo.c:176 + pushfw ; 9c ; 0xf73f5 logo.c:182 + pop ax ; 58 ; 0xf73f6 + mov word [bp-014h], ax ; 89 46 ec ; 0xf73f7 + sti ; fb ; 0xf73fa logo.c:183 + xor dx, dx ; 31 d2 ; 0xf73fb logo.c:189 + mov bx, 0046ch ; bb 6c 04 ; 0xf73fd logo.c:58 + mov es, dx ; 8e c2 ; 0xf7400 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf7402 + mov bx, word [es:bx+002h] ; 26 8b 5f 02 ; 0xf7405 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf7409 logo.c:59 + hlt ; f4 ; 0xf740c logo.c:193 + mov si, 0046ch ; be 6c 04 ; 0xf740d logo.c:58 + xor ax, ax ; 31 c0 ; 0xf7410 + mov es, ax ; 8e c0 ; 0xf7412 + mov di, word [es:si] ; 26 8b 3c ; 0xf7414 + mov ax, word [es:si+002h] ; 26 8b 44 02 ; 0xf7417 + mov word [bp-016h], di ; 89 7e ea ; 0xf741b logo.c:59 + mov word [bp-012h], ax ; 89 46 ee ; 0xf741e + cmp ax, bx ; 39 d8 ; 0xf7421 logo.c:195 + jnbe short 0742ch ; 77 07 ; 0xf7423 + jne short 07433h ; 75 0c ; 0xf7425 + cmp di, word [bp-010h] ; 3b 7e f0 ; 0xf7427 + jbe short 07433h ; 76 07 ; 0xf742a + sub di, word [bp-010h] ; 2b 7e f0 ; 0xf742c logo.c:197 + sbb ax, bx ; 19 d8 ; 0xf742f + jmp short 0743eh ; eb 0b ; 0xf7431 logo.c:200 + cmp ax, bx ; 39 d8 ; 0xf7433 + jc short 0743eh ; 72 07 ; 0xf7435 + jne short 07442h ; 75 09 ; 0xf7437 + cmp di, word [bp-010h] ; 3b 7e f0 ; 0xf7439 + jnc short 07442h ; 73 04 ; 0xf743c + sub cx, di ; 29 f9 ; 0xf743e logo.c:201 + sbb dx, ax ; 19 c2 ; 0xf7440 + mov ax, word [bp-016h] ; 8b 46 ea ; 0xf7442 logo.c:202 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf7445 + mov bx, word [bp-012h] ; 8b 5e ee ; 0xf7448 + mov ax, 00100h ; b8 00 01 ; 0xf744b logo.c:204 + int 016h ; cd 16 ; 0xf744e + je short 07457h ; 74 05 ; 0xf7450 + mov AL, strict byte 001h ; b0 01 ; 0xf7452 + jmp near 07459h ; e9 02 00 ; 0xf7454 + db 032h, 0c0h + ; xor al, al ; 32 c0 ; 0xf7457 + test al, al ; 84 c0 ; 0xf7459 + je short 0748ch ; 74 2f ; 0xf745b + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xf745d logo.c:206 + int 016h ; cd 16 ; 0xf745f + xchg ah, al ; 86 c4 ; 0xf7461 + mov byte [bp-00eh], al ; 88 46 f2 ; 0xf7463 + mov byte [bp-00ah], al ; 88 46 f6 ; 0xf7466 + mov byte [bp-018h], al ; 88 46 e8 ; 0xf7469 logo.c:207 + mov byte [bp-017h], 000h ; c6 46 e9 00 ; 0xf746c + push word [bp-018h] ; ff 76 e8 ; 0xf7470 + mov ax, 00996h ; b8 96 09 ; 0xf7473 + push ax ; 50 ; 0xf7476 + mov ax, strict word 00004h ; b8 04 00 ; 0xf7477 + push ax ; 50 ; 0xf747a + call 0190fh ; e8 91 a4 ; 0xf747b + add sp, strict byte 00006h ; 83 c4 06 ; 0xf747e + cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf7481 logo.c:208 + je short 0748ch ; 74 05 ; 0xf7485 + mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf7487 logo.c:209 + jmp short 074a1h ; eb 15 ; 0xf748a + test dx, dx ; 85 d2 ; 0xf748c logo.c:211 + jle short 07493h ; 7e 03 ; 0xf748e + jmp near 0740ch ; e9 79 ff ; 0xf7490 + jne short 07499h ; 75 04 ; 0xf7493 + test cx, cx ; 85 c9 ; 0xf7495 + jnbe short 07490h ; 77 f7 ; 0xf7497 + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf7499 logo.c:212 + push ax ; 50 ; 0xf749c + popfw ; 9d ; 0xf749d + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf749e logo.c:213 + lea sp, [bp-008h] ; 8d 66 f8 ; 0xf74a1 logo.c:214 + pop di ; 5f ; 0xf74a4 + pop si ; 5e ; 0xf74a5 + pop cx ; 59 ; 0xf74a6 + pop bx ; 5b ; 0xf74a7 + pop bp ; 5d ; 0xf74a8 + retn ; c3 ; 0xf74a9 + ; disGetNextSymbol 0xf74aa LB 0x2a9e -> off=0x0 cb=0000000000000016 uValue=00000000000f5eaa 'read_logo_byte' +read_logo_byte: ; 0xf74aa LB 0x16 + push bp ; 55 ; 0xf74aa logo.c:216 + mov bp, sp ; 89 e5 ; 0xf74ab + push dx ; 52 ; 0xf74ad + xor ah, ah ; 30 e4 ; 0xf74ae logo.c:218 + or ah, 001h ; 80 cc 01 ; 0xf74b0 + mov dx, 003b8h ; ba b8 03 ; 0xf74b3 + out DX, ax ; ef ; 0xf74b6 + in AL, DX ; ec ; 0xf74b7 logo.c:219 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf74b8 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf74ba logo.c:220 + pop dx ; 5a ; 0xf74bd + pop bp ; 5d ; 0xf74be + retn ; c3 ; 0xf74bf + ; disGetNextSymbol 0xf74c0 LB 0x2a88 -> off=0x0 cb=0000000000000014 uValue=00000000000f5ec0 'read_logo_word' +read_logo_word: ; 0xf74c0 LB 0x14 + push bp ; 55 ; 0xf74c0 logo.c:222 + mov bp, sp ; 89 e5 ; 0xf74c1 + push dx ; 52 ; 0xf74c3 + xor ah, ah ; 30 e4 ; 0xf74c4 logo.c:224 + or ah, 001h ; 80 cc 01 ; 0xf74c6 + mov dx, 003b8h ; ba b8 03 ; 0xf74c9 + out DX, ax ; ef ; 0xf74cc + in ax, DX ; ed ; 0xf74cd logo.c:225 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf74ce logo.c:226 + pop dx ; 5a ; 0xf74d1 + pop bp ; 5d ; 0xf74d2 + retn ; c3 ; 0xf74d3 + ; disGetNextSymbol 0xf74d4 LB 0x2a74 -> off=0x0 cb=000000000000015f uValue=00000000000f5ed4 'print_detected_harddisks' +print_detected_harddisks: ; 0xf74d4 LB 0x15f + push bp ; 55 ; 0xf74d4 logo.c:245 + mov bp, sp ; 89 e5 ; 0xf74d5 + push bx ; 53 ; 0xf74d7 + push cx ; 51 ; 0xf74d8 + push dx ; 52 ; 0xf74d9 + push si ; 56 ; 0xf74da + sub sp, strict byte 00006h ; 83 ec 06 ; 0xf74db + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf74de logo.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf74e1 + mov es, ax ; 8e c0 ; 0xf74e4 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf74e6 + mov si, ax ; 89 c6 ; 0xf74e9 logo.c:49 + mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf74eb logo.c:250 + xor ch, ch ; 30 ed ; 0xf74ef logo.c:251 + mov byte [bp-00ah], ch ; 88 6e f6 ; 0xf74f1 logo.c:252 + mov bx, 00304h ; bb 04 03 ; 0xf74f4 logo.c:38 + mov es, ax ; 8e c0 ; 0xf74f7 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf74f9 + mov byte [bp-00eh], al ; 88 46 f2 ; 0xf74fc logo.c:39 + xor cl, cl ; 30 c9 ; 0xf74ff logo.c:257 + cmp cl, byte [bp-00eh] ; 3a 4e f2 ; 0xf7501 + jnc short 07564h ; 73 5e ; 0xf7504 + mov bl, cl ; 88 cb ; 0xf7506 logo.c:259 + xor bh, bh ; 30 ff ; 0xf7508 + add bx, 00305h ; 81 c3 05 03 ; 0xf750a + mov es, si ; 8e c6 ; 0xf750e logo.c:38 + mov bh, byte [es:bx] ; 26 8a 3f ; 0xf7510 + mov bl, bh ; 88 fb ; 0xf7513 logo.c:39 + cmp bh, 00ch ; 80 ff 0c ; 0xf7515 logo.c:262 + jc short 07545h ; 72 2b ; 0xf7518 + test ch, ch ; 84 ed ; 0xf751a logo.c:264 + jne short 0752eh ; 75 10 ; 0xf751c + mov ax, 009a7h ; b8 a7 09 ; 0xf751e logo.c:266 + push ax ; 50 ; 0xf7521 + mov ax, strict word 00002h ; b8 02 00 ; 0xf7522 + push ax ; 50 ; 0xf7525 + call 0190fh ; e8 e6 a3 ; 0xf7526 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf7529 + mov CH, strict byte 001h ; b5 01 ; 0xf752c logo.c:267 + mov al, cl ; 88 c8 ; 0xf752e logo.c:270 + xor ah, ah ; 30 e4 ; 0xf7530 + inc ax ; 40 ; 0xf7532 + push ax ; 50 ; 0xf7533 + mov ax, 009bch ; b8 bc 09 ; 0xf7534 + push ax ; 50 ; 0xf7537 + mov ax, strict word 00002h ; b8 02 00 ; 0xf7538 + push ax ; 50 ; 0xf753b + call 0190fh ; e8 d0 a3 ; 0xf753c + add sp, strict byte 00006h ; 83 c4 06 ; 0xf753f + jmp near 075f9h ; e9 b4 00 ; 0xf7542 logo.c:273 + cmp bh, 008h ; 80 ff 08 ; 0xf7545 logo.c:276 + jc short 07567h ; 72 1d ; 0xf7548 + cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf754a logo.c:278 + jne short 07562h ; 75 12 ; 0xf754e + mov ax, 009cfh ; b8 cf 09 ; 0xf7550 logo.c:280 + push ax ; 50 ; 0xf7553 + mov ax, strict word 00002h ; b8 02 00 ; 0xf7554 + push ax ; 50 ; 0xf7557 + call 0190fh ; e8 b4 a3 ; 0xf7558 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf755b + mov byte [bp-00ah], 001h ; c6 46 f6 01 ; 0xf755e logo.c:281 + jmp short 0752eh ; eb ca ; 0xf7562 logo.c:282 + jmp near 075feh ; e9 97 00 ; 0xf7564 + cmp bh, 004h ; 80 ff 04 ; 0xf7567 logo.c:291 + jnc short 07586h ; 73 1a ; 0xf756a + cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf756c + jne short 07586h ; 75 14 ; 0xf7570 + mov ax, 009e4h ; b8 e4 09 ; 0xf7572 logo.c:293 + push ax ; 50 ; 0xf7575 + mov ax, strict word 00002h ; b8 02 00 ; 0xf7576 + push ax ; 50 ; 0xf7579 + call 0190fh ; e8 92 a3 ; 0xf757a + add sp, strict byte 00004h ; 83 c4 04 ; 0xf757d + mov byte [bp-00ch], 001h ; c6 46 f4 01 ; 0xf7580 logo.c:294 + jmp short 0759fh ; eb 19 ; 0xf7584 logo.c:296 + cmp bl, 004h ; 80 fb 04 ; 0xf7586 + jc short 0759fh ; 72 14 ; 0xf7589 + test ch, ch ; 84 ed ; 0xf758b + jne short 0759fh ; 75 10 ; 0xf758d + mov ax, 009f6h ; b8 f6 09 ; 0xf758f logo.c:298 + push ax ; 50 ; 0xf7592 + mov ax, strict word 00002h ; b8 02 00 ; 0xf7593 + push ax ; 50 ; 0xf7596 + call 0190fh ; e8 75 a3 ; 0xf7597 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf759a + mov CH, strict byte 001h ; b5 01 ; 0xf759d logo.c:299 + mov al, cl ; 88 c8 ; 0xf759f logo.c:302 + xor ah, ah ; 30 e4 ; 0xf75a1 + inc ax ; 40 ; 0xf75a3 + push ax ; 50 ; 0xf75a4 + mov ax, 00a0ah ; b8 0a 0a ; 0xf75a5 + push ax ; 50 ; 0xf75a8 + mov ax, strict word 00002h ; b8 02 00 ; 0xf75a9 + push ax ; 50 ; 0xf75ac + call 0190fh ; e8 5f a3 ; 0xf75ad + add sp, strict byte 00006h ; 83 c4 06 ; 0xf75b0 + cmp bl, 004h ; 80 fb 04 ; 0xf75b3 logo.c:309 + jc short 075bbh ; 72 03 ; 0xf75b6 + sub bl, 004h ; 80 eb 04 ; 0xf75b8 logo.c:310 + mov al, bl ; 88 d8 ; 0xf75bb logo.c:312 + xor ah, ah ; 30 e4 ; 0xf75bd + cwd ; 99 ; 0xf75bf + db 02bh, 0c2h + ; sub ax, dx ; 2b c2 ; 0xf75c0 + sar ax, 1 ; d1 f8 ; 0xf75c2 + test ax, ax ; 85 c0 ; 0xf75c4 + je short 075cdh ; 74 05 ; 0xf75c6 + mov ax, 00a14h ; b8 14 0a ; 0xf75c8 logo.c:313 + jmp short 075d0h ; eb 03 ; 0xf75cb logo.c:314 + mov ax, 00a1fh ; b8 1f 0a ; 0xf75cd logo.c:315 + push ax ; 50 ; 0xf75d0 + mov ax, strict word 00002h ; b8 02 00 ; 0xf75d1 + push ax ; 50 ; 0xf75d4 + call 0190fh ; e8 37 a3 ; 0xf75d5 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf75d8 + mov al, bl ; 88 d8 ; 0xf75db logo.c:317 + xor ah, ah ; 30 e4 ; 0xf75dd + cwd ; 99 ; 0xf75df + mov bx, strict word 00002h ; bb 02 00 ; 0xf75e0 + idiv bx ; f7 fb ; 0xf75e3 + test dx, dx ; 85 d2 ; 0xf75e5 + je short 075eeh ; 74 05 ; 0xf75e7 + mov ax, 00a28h ; b8 28 0a ; 0xf75e9 logo.c:318 + jmp short 075f1h ; eb 03 ; 0xf75ec logo.c:319 + mov ax, 00a2eh ; b8 2e 0a ; 0xf75ee logo.c:320 + push ax ; 50 ; 0xf75f1 + push bx ; 53 ; 0xf75f2 + call 0190fh ; e8 19 a3 ; 0xf75f3 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf75f6 + db 0feh, 0c1h + ; inc cl ; fe c1 ; 0xf75f9 logo.c:322 + jmp near 07501h ; e9 03 ff ; 0xf75fb + cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf75fe logo.c:324 + jne short 0761ch ; 75 18 ; 0xf7602 + test ch, ch ; 84 ed ; 0xf7604 + jne short 0761ch ; 75 14 ; 0xf7606 + cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf7608 + jne short 0761ch ; 75 0e ; 0xf760c + mov ax, 00a35h ; b8 35 0a ; 0xf760e logo.c:327 + push ax ; 50 ; 0xf7611 + mov ax, strict word 00002h ; b8 02 00 ; 0xf7612 + push ax ; 50 ; 0xf7615 + call 0190fh ; e8 f6 a2 ; 0xf7616 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf7619 + mov ax, 00a49h ; b8 49 0a ; 0xf761c logo.c:329 + push ax ; 50 ; 0xf761f + mov ax, strict word 00002h ; b8 02 00 ; 0xf7620 + push ax ; 50 ; 0xf7623 + call 0190fh ; e8 e8 a2 ; 0xf7624 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf7627 + lea sp, [bp-008h] ; 8d 66 f8 ; 0xf762a logo.c:330 + pop si ; 5e ; 0xf762d + pop dx ; 5a ; 0xf762e + pop cx ; 59 ; 0xf762f + pop bx ; 5b ; 0xf7630 + pop bp ; 5d ; 0xf7631 + retn ; c3 ; 0xf7632 + ; disGetNextSymbol 0xf7633 LB 0x2915 -> off=0x0 cb=0000000000000024 uValue=00000000000f6033 'get_boot_drive' +get_boot_drive: ; 0xf7633 LB 0x24 + push bx ; 53 ; 0xf7633 logo.c:332 + push dx ; 52 ; 0xf7634 + push bp ; 55 ; 0xf7635 + mov bp, sp ; 89 e5 ; 0xf7636 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf7638 logo.c:48 + mov dx, strict word 00040h ; ba 40 00 ; 0xf763b + mov es, dx ; 8e c2 ; 0xf763e + mov dx, word [es:bx] ; 26 8b 17 ; 0xf7640 + mov bx, 00304h ; bb 04 03 ; 0xf7643 logo.c:38 + mov es, dx ; 8e c2 ; 0xf7646 + mov dl, byte [es:bx] ; 26 8a 17 ; 0xf7648 + sub AL, strict byte 002h ; 2c 02 ; 0xf764b logo.c:340 + cmp al, dl ; 38 d0 ; 0xf764d logo.c:342 + jc short 07653h ; 72 02 ; 0xf764f + mov AL, strict byte 0ffh ; b0 ff ; 0xf7651 logo.c:343 + pop bp ; 5d ; 0xf7653 logo.c:347 + pop dx ; 5a ; 0xf7654 + pop bx ; 5b ; 0xf7655 + retn ; c3 ; 0xf7656 + ; disGetNextSymbol 0xf7657 LB 0x28f1 -> off=0x0 cb=000000000000025c uValue=00000000000f6057 'show_logo' +show_logo: ; 0xf7657 LB 0x25c + push bp ; 55 ; 0xf7657 logo.c:349 + mov bp, sp ; 89 e5 ; 0xf7658 + push bx ; 53 ; 0xf765a + push cx ; 51 ; 0xf765b + push dx ; 52 ; 0xf765c + push si ; 56 ; 0xf765d + push di ; 57 ; 0xf765e + sub sp, strict byte 0000eh ; 83 ec 0e ; 0xf765f + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf7662 logo.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf7665 + mov es, ax ; 8e c0 ; 0xf7668 + mov si, word [es:bx] ; 26 8b 37 ; 0xf766a + mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf766d logo.c:352 + xor cx, cx ; 31 c9 ; 0xf7671 logo.c:356 + mov AL, strict byte 034h ; b0 34 ; 0xf7673 logo.c:363 + out strict byte 043h, AL ; e6 43 ; 0xf7675 + mov AL, strict byte 0d3h ; b0 d3 ; 0xf7677 + out strict byte 040h, AL ; e6 40 ; 0xf7679 + mov AL, strict byte 048h ; b0 48 ; 0xf767b + out strict byte 040h, AL ; e6 40 ; 0xf767d + mov al, cl ; 88 c8 ; 0xf767f logo.c:366 + xor ah, ah ; 30 e4 ; 0xf7681 + call 074c0h ; e8 3a fe ; 0xf7683 + cmp ax, 066bbh ; 3d bb 66 ; 0xf7686 logo.c:367 + jne short 0769dh ; 75 12 ; 0xf7689 + push SS ; 16 ; 0xf768b logo.c:371 + pop ES ; 07 ; 0xf768c + lea di, [bp-018h] ; 8d 7e e8 ; 0xf768d + mov ax, 04f03h ; b8 03 4f ; 0xf7690 + int 010h ; cd 10 ; 0xf7693 + mov word [es:di], bx ; 26 89 1d ; 0xf7695 + cmp ax, strict word 0004fh ; 3d 4f 00 ; 0xf7698 + je short 076a0h ; 74 03 ; 0xf769b + jmp near 07789h ; e9 e9 00 ; 0xf769d logo.c:372 + mov al, cl ; 88 c8 ; 0xf76a0 logo.c:375 + add AL, strict byte 004h ; 04 04 ; 0xf76a2 + xor ah, ah ; 30 e4 ; 0xf76a4 + call 074aah ; e8 01 fe ; 0xf76a6 + mov dl, al ; 88 c2 ; 0xf76a9 + mov byte [bp-014h], al ; 88 46 ec ; 0xf76ab + mov al, cl ; 88 c8 ; 0xf76ae logo.c:376 + add AL, strict byte 005h ; 04 05 ; 0xf76b0 + xor ah, ah ; 30 e4 ; 0xf76b2 + call 074aah ; e8 f3 fd ; 0xf76b4 + mov ch, al ; 88 c5 ; 0xf76b7 + mov byte [bp-010h], al ; 88 46 f0 ; 0xf76b9 + mov al, cl ; 88 c8 ; 0xf76bc logo.c:377 + add AL, strict byte 002h ; 04 02 ; 0xf76be + xor ah, ah ; 30 e4 ; 0xf76c0 + call 074c0h ; e8 fb fd ; 0xf76c2 + mov bx, ax ; 89 c3 ; 0xf76c5 + mov word [bp-016h], ax ; 89 46 ea ; 0xf76c7 + mov al, cl ; 88 c8 ; 0xf76ca logo.c:378 + add AL, strict byte 006h ; 04 06 ; 0xf76cc + xor ah, ah ; 30 e4 ; 0xf76ce + call 074aah ; e8 d7 fd ; 0xf76d0 + mov byte [bp-012h], al ; 88 46 ee ; 0xf76d3 + test dl, dl ; 84 d2 ; 0xf76d6 logo.c:381 + jne short 076e2h ; 75 08 ; 0xf76d8 + test ch, ch ; 84 ed ; 0xf76da + jne short 076e2h ; 75 04 ; 0xf76dc + test bx, bx ; 85 db ; 0xf76de + je short 0769dh ; 74 bb ; 0xf76e0 + mov BH, strict byte 020h ; b7 20 ; 0xf76e2 logo.c:385 + mov dx, 001e0h ; ba e0 01 ; 0xf76e4 + mov cx, 00280h ; b9 80 02 ; 0xf76e7 + mov ax, 05642h ; b8 42 56 ; 0xf76ea + mov BL, strict byte 000h ; b3 00 ; 0xf76ed + int 010h ; cd 10 ; 0xf76ef + cmp ax, strict word 0004fh ; 3d 4f 00 ; 0xf76f1 logo.c:387 + je short 076feh ; 74 08 ; 0xf76f4 + mov bx, 00142h ; bb 42 01 ; 0xf76f6 logo.c:388 + mov ax, 04f02h ; b8 02 4f ; 0xf76f9 + int 010h ; cd 10 ; 0xf76fc + cmp byte [bp-014h], 000h ; 80 7e ec 00 ; 0xf76fe logo.c:390 + je short 07729h ; 74 25 ; 0xf7702 + xor cx, cx ; 31 c9 ; 0xf7704 logo.c:392 + jmp short 0770eh ; eb 06 ; 0xf7706 + inc cx ; 41 ; 0xf7708 logo.c:394 + cmp cx, strict byte 00010h ; 83 f9 10 ; 0xf7709 + jnbe short 07730h ; 77 22 ; 0xf770c + mov ax, cx ; 89 c8 ; 0xf770e + or ah, 002h ; 80 cc 02 ; 0xf7710 + mov dx, 003b8h ; ba b8 03 ; 0xf7713 + out DX, ax ; ef ; 0xf7716 + xor dx, dx ; 31 d2 ; 0xf7717 + mov ax, strict word 00001h ; b8 01 00 ; 0xf7719 + call 073e2h ; e8 c3 fc ; 0xf771c + cmp AL, strict byte 086h ; 3c 86 ; 0xf771f + jne short 07708h ; 75 e5 ; 0xf7721 + mov byte [bp-00ch], 001h ; c6 46 f4 01 ; 0xf7723 + jmp short 07730h ; eb 07 ; 0xf7727 + mov ax, 00210h ; b8 10 02 ; 0xf7729 logo.c:404 + mov dx, 003b8h ; ba b8 03 ; 0xf772c + out DX, ax ; ef ; 0xf772f + cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf7730 logo.c:407 + jne short 0774bh ; 75 15 ; 0xf7734 + mov CL, strict byte 004h ; b1 04 ; 0xf7736 logo.c:409 + mov ax, word [bp-016h] ; 8b 46 ea ; 0xf7738 + shr ax, CL ; d3 e8 ; 0xf773b + mov dx, strict word 00001h ; ba 01 00 ; 0xf773d + call 073e2h ; e8 9f fc ; 0xf7740 + cmp AL, strict byte 086h ; 3c 86 ; 0xf7743 logo.c:410 + jne short 0774bh ; 75 04 ; 0xf7745 + mov byte [bp-00ch], 001h ; c6 46 f4 01 ; 0xf7747 logo.c:411 + cmp byte [bp-010h], 000h ; 80 7e f0 00 ; 0xf774b logo.c:415 + je short 0777ch ; 74 2b ; 0xf774f + cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf7751 + jne short 0777ch ; 75 25 ; 0xf7755 + mov cx, strict word 00010h ; b9 10 00 ; 0xf7757 logo.c:417 + jmp short 07761h ; eb 05 ; 0xf775a + dec cx ; 49 ; 0xf775c logo.c:419 + test cx, cx ; 85 c9 ; 0xf775d + jbe short 07789h ; 76 28 ; 0xf775f + mov ax, cx ; 89 c8 ; 0xf7761 + or ah, 002h ; 80 cc 02 ; 0xf7763 + mov dx, 003b8h ; ba b8 03 ; 0xf7766 + out DX, ax ; ef ; 0xf7769 + xor dx, dx ; 31 d2 ; 0xf776a + mov ax, strict word 00001h ; b8 01 00 ; 0xf776c + call 073e2h ; e8 70 fc ; 0xf776f + cmp AL, strict byte 086h ; 3c 86 ; 0xf7772 + jne short 0775ch ; 75 e6 ; 0xf7774 + mov byte [bp-00ch], 001h ; c6 46 f4 01 ; 0xf7776 + jmp short 07789h ; eb 0d ; 0xf777a + cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf777c logo.c:428 + jne short 07789h ; 75 07 ; 0xf7780 + mov ax, 00200h ; b8 00 02 ; 0xf7782 logo.c:429 + mov dx, 003b8h ; ba b8 03 ; 0xf7785 + out DX, ax ; ef ; 0xf7788 + mov bx, 0037dh ; bb 7d 03 ; 0xf7789 logo.c:43 + mov es, si ; 8e c6 ; 0xf778c + mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf778e + mov AL, strict byte 003h ; b0 03 ; 0xf7792 logo.c:437 + mov AH, strict byte 000h ; b4 00 ; 0xf7794 + int 010h ; cd 10 ; 0xf7796 + cmp byte [bp-012h], 000h ; 80 7e ee 00 ; 0xf7798 logo.c:440 + je short 077b2h ; 74 14 ; 0xf779c + cmp byte [bp-014h], 000h ; 80 7e ec 00 ; 0xf779e logo.c:443 + jne short 077e0h ; 75 3c ; 0xf77a2 + cmp byte [bp-010h], 000h ; 80 7e f0 00 ; 0xf77a4 + jne short 077e0h ; 75 36 ; 0xf77a8 + cmp word [bp-016h], strict byte 00000h ; 83 7e ea 00 ; 0xf77aa + je short 077b5h ; 74 05 ; 0xf77ae + jmp short 077e0h ; eb 2e ; 0xf77b0 + jmp near 07896h ; e9 e1 00 ; 0xf77b2 + cmp byte [bp-012h], 002h ; 80 7e ee 02 ; 0xf77b5 logo.c:445 + jne short 077c9h ; 75 0e ; 0xf77b9 + mov ax, 00a4bh ; b8 4b 0a ; 0xf77bb logo.c:446 + push ax ; 50 ; 0xf77be + mov ax, strict word 00002h ; b8 02 00 ; 0xf77bf + push ax ; 50 ; 0xf77c2 + call 0190fh ; e8 49 a1 ; 0xf77c3 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf77c6 + cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf77c9 logo.c:449 + jne short 077e0h ; 75 11 ; 0xf77cd + mov dx, strict word 00001h ; ba 01 00 ; 0xf77cf logo.c:452 + mov ax, 000c0h ; b8 c0 00 ; 0xf77d2 + call 073e2h ; e8 0a fc ; 0xf77d5 + cmp AL, strict byte 086h ; 3c 86 ; 0xf77d8 logo.c:453 + jne short 077e0h ; 75 04 ; 0xf77da + mov byte [bp-00ch], 001h ; c6 46 f4 01 ; 0xf77dc logo.c:454 + cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf77e0 logo.c:459 + je short 077b2h ; 74 cc ; 0xf77e4 + mov byte [bp-00eh], 000h ; c6 46 f2 00 ; 0xf77e6 logo.c:461 + mov ax, 00100h ; b8 00 01 ; 0xf77ea logo.c:464 + mov cx, 01000h ; b9 00 10 ; 0xf77ed + int 010h ; cd 10 ; 0xf77f0 + mov ax, 00700h ; b8 00 07 ; 0xf77f2 + mov BH, strict byte 007h ; b7 07 ; 0xf77f5 + db 033h, 0c9h + ; xor cx, cx ; 33 c9 ; 0xf77f7 + mov dx, 0184fh ; ba 4f 18 ; 0xf77f9 + int 010h ; cd 10 ; 0xf77fc + mov ax, 00200h ; b8 00 02 ; 0xf77fe + db 033h, 0dbh + ; xor bx, bx ; 33 db ; 0xf7801 + db 033h, 0d2h + ; xor dx, dx ; 33 d2 ; 0xf7803 + int 010h ; cd 10 ; 0xf7805 + mov ax, 00a6dh ; b8 6d 0a ; 0xf7807 logo.c:467 + push ax ; 50 ; 0xf780a + mov ax, strict word 00002h ; b8 02 00 ; 0xf780b + push ax ; 50 ; 0xf780e + call 0190fh ; e8 fd a0 ; 0xf780f + add sp, strict byte 00004h ; 83 c4 04 ; 0xf7812 + call 074d4h ; e8 bc fc ; 0xf7815 logo.c:468 + mov ax, 00ab1h ; b8 b1 0a ; 0xf7818 logo.c:469 + push ax ; 50 ; 0xf781b + mov ax, strict word 00002h ; b8 02 00 ; 0xf781c + push ax ; 50 ; 0xf781f + call 0190fh ; e8 ec a0 ; 0xf7820 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf7823 + mov dx, strict word 00001h ; ba 01 00 ; 0xf7826 logo.c:478 + mov ax, strict word 00040h ; b8 40 00 ; 0xf7829 + call 073e2h ; e8 b3 fb ; 0xf782c + mov cl, al ; 88 c1 ; 0xf782f + test al, al ; 84 c0 ; 0xf7831 logo.c:479 + je short 07826h ; 74 f1 ; 0xf7833 + cmp AL, strict byte 030h ; 3c 30 ; 0xf7835 logo.c:481 + je short 07885h ; 74 4c ; 0xf7837 + cmp cl, 002h ; 80 f9 02 ; 0xf7839 logo.c:488 + jc short 0785eh ; 72 20 ; 0xf783c + cmp cl, 009h ; 80 f9 09 ; 0xf783e + jnbe short 0785eh ; 77 1b ; 0xf7841 + mov al, cl ; 88 c8 ; 0xf7843 logo.c:490 + xor ah, ah ; 30 e4 ; 0xf7845 + call 07633h ; e8 e9 fd ; 0xf7847 + cmp AL, strict byte 0ffh ; 3c ff ; 0xf784a logo.c:497 + jne short 07850h ; 75 02 ; 0xf784c + jmp short 07826h ; eb d6 ; 0xf784e logo.c:498 + mov bx, 0037ch ; bb 7c 03 ; 0xf7850 logo.c:43 + mov es, si ; 8e c6 ; 0xf7853 + mov byte [es:bx], al ; 26 88 07 ; 0xf7855 + mov byte [bp-00eh], 002h ; c6 46 f2 02 ; 0xf7858 logo.c:501 + jmp short 07885h ; eb 27 ; 0xf785c logo.c:502 + cmp cl, 02eh ; 80 f9 2e ; 0xf785e logo.c:505 + je short 07873h ; 74 10 ; 0xf7861 + cmp cl, 026h ; 80 f9 26 ; 0xf7863 + je short 07879h ; 74 11 ; 0xf7866 + cmp cl, 021h ; 80 f9 21 ; 0xf7868 + jne short 0787fh ; 75 12 ; 0xf786b + mov byte [bp-00eh], 001h ; c6 46 f2 01 ; 0xf786d logo.c:509 + jmp short 07885h ; eb 12 ; 0xf7871 logo.c:510 + mov byte [bp-00eh], 003h ; c6 46 f2 03 ; 0xf7873 logo.c:513 + jmp short 07885h ; eb 0c ; 0xf7877 logo.c:514 + mov byte [bp-00eh], 004h ; c6 46 f2 04 ; 0xf7879 logo.c:517 + jmp short 07885h ; eb 06 ; 0xf787d logo.c:518 + cmp byte [bp-00eh], 000h ; 80 7e f2 00 ; 0xf787f logo.c:521 + je short 07826h ; 74 a1 ; 0xf7883 + mov bx, 0037dh ; bb 7d 03 ; 0xf7885 logo.c:43 + mov es, si ; 8e c6 ; 0xf7888 + mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf788a + mov byte [es:bx], al ; 26 88 07 ; 0xf788d + mov AL, strict byte 003h ; b0 03 ; 0xf7890 logo.c:528 + mov AH, strict byte 000h ; b4 00 ; 0xf7892 + int 010h ; cd 10 ; 0xf7894 + mov AL, strict byte 034h ; b0 34 ; 0xf7896 logo.c:533 + out strict byte 043h, AL ; e6 43 ; 0xf7898 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xf789a + out strict byte 040h, AL ; e6 40 ; 0xf789c + out strict byte 040h, AL ; e6 40 ; 0xf789e + push bp ; 55 ; 0xf78a0 + push DS ; 1e ; 0xf78a1 + mov ds, ax ; 8e d8 ; 0xf78a2 + call 0ede3h ; e8 3c 75 ; 0xf78a4 + pop DS ; 1f ; 0xf78a7 + pop bp ; 5d ; 0xf78a8 + lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf78a9 logo.c:536 + pop di ; 5f ; 0xf78ac + pop si ; 5e ; 0xf78ad + pop dx ; 5a ; 0xf78ae + pop cx ; 59 ; 0xf78af + pop bx ; 5b ; 0xf78b0 + pop bp ; 5d ; 0xf78b1 + retn ; c3 ; 0xf78b2 + ; disGetNextSymbol 0xf78b3 LB 0x2695 -> off=0x0 cb=0000000000000072 uValue=00000000000f62b3 'delay_boot' +delay_boot: ; 0xf78b3 LB 0x72 + push bp ; 55 ; 0xf78b3 logo.c:539 + mov bp, sp ; 89 e5 ; 0xf78b4 + push bx ; 53 ; 0xf78b6 + push cx ; 51 ; 0xf78b7 + push dx ; 52 ; 0xf78b8 + push si ; 56 ; 0xf78b9 + push di ; 57 ; 0xf78ba + mov bx, ax ; 89 c3 ; 0xf78bb + test ax, ax ; 85 c0 ; 0xf78bd logo.c:543 + je short 0791bh ; 74 5a ; 0xf78bf + mov AL, strict byte 034h ; b0 34 ; 0xf78c1 logo.c:547 + out strict byte 043h, AL ; e6 43 ; 0xf78c3 + mov AL, strict byte 0d3h ; b0 d3 ; 0xf78c5 + out strict byte 040h, AL ; e6 40 ; 0xf78c7 + mov AL, strict byte 048h ; b0 48 ; 0xf78c9 + out strict byte 040h, AL ; e6 40 ; 0xf78cb + push bx ; 53 ; 0xf78cd logo.c:549 + mov ax, 00afbh ; b8 fb 0a ; 0xf78ce + push ax ; 50 ; 0xf78d1 + mov ax, strict word 00002h ; b8 02 00 ; 0xf78d2 + push ax ; 50 ; 0xf78d5 + call 0190fh ; e8 36 a0 ; 0xf78d6 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf78d9 + test bx, bx ; 85 db ; 0xf78dc logo.c:550 + jbe short 078fah ; 76 1a ; 0xf78de + push bx ; 53 ; 0xf78e0 logo.c:552 + mov ax, 00b19h ; b8 19 0b ; 0xf78e1 + push ax ; 50 ; 0xf78e4 + mov ax, strict word 00002h ; b8 02 00 ; 0xf78e5 + push ax ; 50 ; 0xf78e8 + call 0190fh ; e8 23 a0 ; 0xf78e9 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf78ec + xor dx, dx ; 31 d2 ; 0xf78ef logo.c:553 + mov ax, strict word 00040h ; b8 40 00 ; 0xf78f1 + call 073e2h ; e8 eb fa ; 0xf78f4 + dec bx ; 4b ; 0xf78f7 logo.c:554 + jmp short 078dch ; eb e2 ; 0xf78f8 + mov bx, 00a49h ; bb 49 0a ; 0xf78fa logo.c:555 + push bx ; 53 ; 0xf78fd + mov bx, strict word 00002h ; bb 02 00 ; 0xf78fe + push bx ; 53 ; 0xf7901 + call 0190fh ; e8 0a a0 ; 0xf7902 + add sp, strict byte 00004h ; 83 c4 04 ; 0xf7905 + mov AL, strict byte 034h ; b0 34 ; 0xf7908 logo.c:557 + out strict byte 043h, AL ; e6 43 ; 0xf790a + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xf790c + out strict byte 040h, AL ; e6 40 ; 0xf790e + out strict byte 040h, AL ; e6 40 ; 0xf7910 + push bp ; 55 ; 0xf7912 + push DS ; 1e ; 0xf7913 + mov ds, ax ; 8e d8 ; 0xf7914 + call 0ede3h ; e8 ca 74 ; 0xf7916 + pop DS ; 1f ; 0xf7919 + pop bp ; 5d ; 0xf791a + lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf791b logo.c:558 + pop di ; 5f ; 0xf791e + pop si ; 5e ; 0xf791f + pop dx ; 5a ; 0xf7920 + pop cx ; 59 ; 0xf7921 + pop bx ; 5b ; 0xf7922 + pop bp ; 5d ; 0xf7923 + retn ; c3 ; 0xf7924 + ; disGetNextSymbol 0xf7925 LB 0x2623 -> off=0x0 cb=00000000000000d5 uValue=00000000000f6325 'scsi_cmd_data_in' +scsi_cmd_data_in: ; 0xf7925 LB 0xd5 + push bp ; 55 ; 0xf7925 scsi.c:99 + mov bp, sp ; 89 e5 ; 0xf7926 + push si ; 56 ; 0xf7928 + push di ; 57 ; 0xf7929 + sub sp, strict byte 00006h ; 83 ec 06 ; 0xf792a + mov si, ax ; 89 c6 ; 0xf792d + mov byte [bp-006h], dl ; 88 56 fa ; 0xf792f + mov word [bp-00ah], bx ; 89 5e f6 ; 0xf7932 + mov word [bp-008h], cx ; 89 4e f8 ; 0xf7935 + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf7938 + mov dx, si ; 89 f2 ; 0xf793b scsi.c:107 + in AL, DX ; ec ; 0xf793d + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf793e + test AL, strict byte 001h ; a8 01 ; 0xf7940 scsi.c:108 + jne short 0793bh ; 75 f7 ; 0xf7942 + mov al, byte [bp+004h] ; 8a 46 04 ; 0xf7944 scsi.c:110 + cmp AL, strict byte 010h ; 3c 10 ; 0xf7947 + jne short 0794fh ; 75 04 ; 0xf7949 + xor ax, ax ; 31 c0 ; 0xf794b + jmp short 07951h ; eb 02 ; 0xf794d + xor ah, ah ; 30 e4 ; 0xf794f + mov di, ax ; 89 c7 ; 0xf7951 + mov ax, bx ; 89 d8 ; 0xf7953 + mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf7955 + mov cx, strict word 0000ch ; b9 0c 00 ; 0xf7958 + shr dx, 1 ; d1 ea ; 0xf795b + rcr ax, 1 ; d1 d8 ; 0xf795d + loop 0795bh ; e2 fa ; 0xf795f + mov cx, ax ; 89 c1 ; 0xf7961 + and cx, 000f0h ; 81 e1 f0 00 ; 0xf7963 + or cx, di ; 09 f9 ; 0xf7967 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7969 scsi.c:111 + mov dx, si ; 89 f2 ; 0xf796c + out DX, AL ; ee ; 0xf796e + xor al, al ; 30 c0 ; 0xf796f scsi.c:112 + out DX, AL ; ee ; 0xf7971 + mov al, cl ; 88 c8 ; 0xf7972 scsi.c:113 + out DX, AL ; ee ; 0xf7974 + mov al, bl ; 88 d8 ; 0xf7975 scsi.c:114 + out DX, AL ; ee ; 0xf7977 + mov ax, bx ; 89 d8 ; 0xf7978 scsi.c:115 + mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf797a + mov cx, strict word 00008h ; b9 08 00 ; 0xf797d + shr dx, 1 ; d1 ea ; 0xf7980 + rcr ax, 1 ; d1 d8 ; 0xf7982 + loop 07980h ; e2 fa ; 0xf7984 + mov dx, si ; 89 f2 ; 0xf7986 + out DX, AL ; ee ; 0xf7988 + xor cx, cx ; 31 c9 ; 0xf7989 scsi.c:116 + mov al, byte [bp+004h] ; 8a 46 04 ; 0xf798b + xor ah, ah ; 30 e4 ; 0xf798e + cmp cx, ax ; 39 c1 ; 0xf7990 + jnc short 079a2h ; 73 0e ; 0xf7992 + les di, [bp-00ah] ; c4 7e f6 ; 0xf7994 scsi.c:117 + add di, cx ; 01 cf ; 0xf7997 + mov al, byte [es:di] ; 26 8a 05 ; 0xf7999 + mov dx, si ; 89 f2 ; 0xf799c + out DX, AL ; ee ; 0xf799e + inc cx ; 41 ; 0xf799f + jmp short 0798bh ; eb e9 ; 0xf79a0 + mov dx, si ; 89 f2 ; 0xf79a2 scsi.c:121 + in AL, DX ; ec ; 0xf79a4 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf79a5 + test AL, strict byte 001h ; a8 01 ; 0xf79a7 scsi.c:122 + jne short 079a2h ; 75 f7 ; 0xf79a9 + test AL, strict byte 002h ; a8 02 ; 0xf79ab scsi.c:125 + je short 079bdh ; 74 0e ; 0xf79ad + lea dx, [si+003h] ; 8d 54 03 ; 0xf79af scsi.c:126 + xor al, al ; 30 c0 ; 0xf79b2 + out DX, AL ; ee ; 0xf79b4 + in AL, DX ; ec ; 0xf79b5 scsi.c:128 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf79b6 + mov di, strict word 00004h ; bf 04 00 ; 0xf79b8 scsi.c:130 + jmp short 079efh ; eb 32 ; 0xf79bb + lea dx, [si+001h] ; 8d 54 01 ; 0xf79bd scsi.c:136 + cmp word [bp+00ch], strict byte 00000h ; 83 7e 0c 00 ; 0xf79c0 + jne short 079cch ; 75 06 ; 0xf79c4 + cmp bx, 08000h ; 81 fb 00 80 ; 0xf79c6 + jbe short 079e6h ; 76 1a ; 0xf79ca + mov cx, 08000h ; b9 00 80 ; 0xf79cc scsi.c:138 + les di, [bp+006h] ; c4 7e 06 ; 0xf79cf + rep insb ; f3 6c ; 0xf79d2 + add bx, 08000h ; 81 c3 00 80 ; 0xf79d4 scsi.c:139 + adc word [bp+00ch], strict byte 0ffffh ; 83 56 0c ff ; 0xf79d8 + mov ax, es ; 8c c0 ; 0xf79dc + add ax, 00800h ; 05 00 08 ; 0xf79de + mov word [bp+008h], ax ; 89 46 08 ; 0xf79e1 + jmp short 079bdh ; eb d7 ; 0xf79e4 scsi.c:141 + mov cx, bx ; 89 d9 ; 0xf79e6 scsi.c:144 + les di, [bp+006h] ; c4 7e 06 ; 0xf79e8 + rep insb ; f3 6c ; 0xf79eb + xor di, di ; 31 ff ; 0xf79ed scsi.c:146 + mov ax, di ; 89 f8 ; 0xf79ef scsi.c:147 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf79f1 + pop di ; 5f ; 0xf79f4 + pop si ; 5e ; 0xf79f5 + pop bp ; 5d ; 0xf79f6 + retn 0000ah ; c2 0a 00 ; 0xf79f7 + ; disGetNextSymbol 0xf79fa LB 0x254e -> off=0x0 cb=00000000000000d5 uValue=00000000000f63fa 'scsi_cmd_data_out' +scsi_cmd_data_out: ; 0xf79fa LB 0xd5 + push bp ; 55 ; 0xf79fa scsi.c:149 + mov bp, sp ; 89 e5 ; 0xf79fb + push si ; 56 ; 0xf79fd + push di ; 57 ; 0xf79fe + sub sp, strict byte 00006h ; 83 ec 06 ; 0xf79ff + mov di, ax ; 89 c7 ; 0xf7a02 + mov byte [bp-006h], dl ; 88 56 fa ; 0xf7a04 + mov word [bp-00ah], bx ; 89 5e f6 ; 0xf7a07 + mov word [bp-008h], cx ; 89 4e f8 ; 0xf7a0a + mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf7a0d + mov dx, di ; 89 fa ; 0xf7a10 scsi.c:157 + in AL, DX ; ec ; 0xf7a12 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf7a13 + test AL, strict byte 001h ; a8 01 ; 0xf7a15 scsi.c:158 + jne short 07a10h ; 75 f7 ; 0xf7a17 + mov al, byte [bp+004h] ; 8a 46 04 ; 0xf7a19 scsi.c:161 + cmp AL, strict byte 010h ; 3c 10 ; 0xf7a1c + jne short 07a24h ; 75 04 ; 0xf7a1e + xor ax, ax ; 31 c0 ; 0xf7a20 + jmp short 07a26h ; eb 02 ; 0xf7a22 + xor ah, ah ; 30 e4 ; 0xf7a24 + mov si, ax ; 89 c6 ; 0xf7a26 + mov ax, bx ; 89 d8 ; 0xf7a28 + mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf7a2a + mov cx, strict word 0000ch ; b9 0c 00 ; 0xf7a2d + shr dx, 1 ; d1 ea ; 0xf7a30 + rcr ax, 1 ; d1 d8 ; 0xf7a32 + loop 07a30h ; e2 fa ; 0xf7a34 + mov cx, ax ; 89 c1 ; 0xf7a36 + and cx, 000f0h ; 81 e1 f0 00 ; 0xf7a38 + or cx, si ; 09 f1 ; 0xf7a3c + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7a3e scsi.c:162 + mov dx, di ; 89 fa ; 0xf7a41 + out DX, AL ; ee ; 0xf7a43 + mov AL, strict byte 001h ; b0 01 ; 0xf7a44 scsi.c:163 + out DX, AL ; ee ; 0xf7a46 + mov al, cl ; 88 c8 ; 0xf7a47 scsi.c:164 + out DX, AL ; ee ; 0xf7a49 + mov al, bl ; 88 d8 ; 0xf7a4a scsi.c:165 + out DX, AL ; ee ; 0xf7a4c + mov ax, bx ; 89 d8 ; 0xf7a4d scsi.c:166 + mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf7a4f + mov cx, strict word 00008h ; b9 08 00 ; 0xf7a52 + shr dx, 1 ; d1 ea ; 0xf7a55 + rcr ax, 1 ; d1 d8 ; 0xf7a57 + loop 07a55h ; e2 fa ; 0xf7a59 + mov dx, di ; 89 fa ; 0xf7a5b + out DX, AL ; ee ; 0xf7a5d + xor cx, cx ; 31 c9 ; 0xf7a5e scsi.c:167 + mov al, byte [bp+004h] ; 8a 46 04 ; 0xf7a60 + xor ah, ah ; 30 e4 ; 0xf7a63 + cmp cx, ax ; 39 c1 ; 0xf7a65 + jnc short 07a77h ; 73 0e ; 0xf7a67 + les si, [bp-00ah] ; c4 76 f6 ; 0xf7a69 scsi.c:168 + add si, cx ; 01 ce ; 0xf7a6c + mov al, byte [es:si] ; 26 8a 04 ; 0xf7a6e + mov dx, di ; 89 fa ; 0xf7a71 + out DX, AL ; ee ; 0xf7a73 + inc cx ; 41 ; 0xf7a74 + jmp short 07a60h ; eb e9 ; 0xf7a75 + lea dx, [di+001h] ; 8d 55 01 ; 0xf7a77 scsi.c:173 + cmp word [bp+00ch], strict byte 00000h ; 83 7e 0c 00 ; 0xf7a7a + jne short 07a86h ; 75 06 ; 0xf7a7e + cmp bx, 08000h ; 81 fb 00 80 ; 0xf7a80 + jbe short 07aa1h ; 76 1b ; 0xf7a84 + mov cx, 08000h ; b9 00 80 ; 0xf7a86 scsi.c:175 + les si, [bp+006h] ; c4 76 06 ; 0xf7a89 + db 0f3h, 026h, 06eh + ; rep es outsb ; f3 26 6e ; 0xf7a8c + add bx, 08000h ; 81 c3 00 80 ; 0xf7a8f scsi.c:176 + adc word [bp+00ch], strict byte 0ffffh ; 83 56 0c ff ; 0xf7a93 + mov ax, es ; 8c c0 ; 0xf7a97 + add ax, 00800h ; 05 00 08 ; 0xf7a99 + mov word [bp+008h], ax ; 89 46 08 ; 0xf7a9c + jmp short 07a77h ; eb d6 ; 0xf7a9f scsi.c:178 + mov cx, bx ; 89 d9 ; 0xf7aa1 scsi.c:181 + les si, [bp+006h] ; c4 76 06 ; 0xf7aa3 + db 0f3h, 026h, 06eh + ; rep es outsb ; f3 26 6e ; 0xf7aa6 + mov dx, di ; 89 fa ; 0xf7aa9 scsi.c:185 + in AL, DX ; ec ; 0xf7aab + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf7aac + test AL, strict byte 001h ; a8 01 ; 0xf7aae scsi.c:186 + jne short 07aa9h ; 75 f7 ; 0xf7ab0 + test AL, strict byte 002h ; a8 02 ; 0xf7ab2 scsi.c:189 + je short 07ac4h ; 74 0e ; 0xf7ab4 + lea dx, [di+003h] ; 8d 55 03 ; 0xf7ab6 scsi.c:190 + xor al, al ; 30 c0 ; 0xf7ab9 + out DX, AL ; ee ; 0xf7abb + in AL, DX ; ec ; 0xf7abc scsi.c:192 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf7abd + mov ax, strict word 00004h ; b8 04 00 ; 0xf7abf scsi.c:194 + jmp short 07ac6h ; eb 02 ; 0xf7ac2 + xor ax, ax ; 31 c0 ; 0xf7ac4 scsi.c:197 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf7ac6 scsi.c:198 + pop di ; 5f ; 0xf7ac9 + pop si ; 5e ; 0xf7aca + pop bp ; 5d ; 0xf7acb + retn 0000ah ; c2 0a 00 ; 0xf7acc + ; disGetNextSymbol 0xf7acf LB 0x2479 -> off=0x0 cb=00000000000000e9 uValue=00000000000f64cf 'scsi_read_sectors' +scsi_read_sectors: ; 0xf7acf LB 0xe9 + push bp ; 55 ; 0xf7acf scsi.c:207 + mov bp, sp ; 89 e5 ; 0xf7ad0 + push si ; 56 ; 0xf7ad2 + push di ; 57 ; 0xf7ad3 + sub sp, strict byte 00016h ; 83 ec 16 ; 0xf7ad4 + mov si, word [bp+004h] ; 8b 76 04 ; 0xf7ad7 + mov es, [bp+006h] ; 8e 46 06 ; 0xf7ada scsi.c:216 + mov al, byte [es:si+00ch] ; 26 8a 44 0c ; 0xf7add + sub AL, strict byte 008h ; 2c 08 ; 0xf7ae1 + mov byte [bp-006h], al ; 88 46 fa ; 0xf7ae3 + cmp AL, strict byte 004h ; 3c 04 ; 0xf7ae6 scsi.c:217 + jbe short 07affh ; 76 15 ; 0xf7ae8 + xor ah, ah ; 30 e4 ; 0xf7aea scsi.c:218 + push ax ; 50 ; 0xf7aec + mov ax, 00b1eh ; b8 1e 0b ; 0xf7aed + push ax ; 50 ; 0xf7af0 + mov ax, 00b30h ; b8 30 0b ; 0xf7af1 + push ax ; 50 ; 0xf7af4 + mov ax, strict word 00007h ; b8 07 00 ; 0xf7af5 + push ax ; 50 ; 0xf7af8 + call 0190fh ; e8 13 9e ; 0xf7af9 + add sp, strict byte 00008h ; 83 c4 08 ; 0xf7afc + mov es, [bp+006h] ; 8e 46 06 ; 0xf7aff scsi.c:220 + mov di, word [es:si+00eh] ; 26 8b 7c 0e ; 0xf7b02 + mov word [bp-01ah], 00088h ; c7 46 e6 88 00 ; 0xf7b06 scsi.c:223 + mov ax, word [es:si+006h] ; 26 8b 44 06 ; 0xf7b0b scsi.c:224 + mov bx, word [es:si+004h] ; 26 8b 5c 04 ; 0xf7b0f + mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf7b13 + mov dx, word [es:si] ; 26 8b 14 ; 0xf7b17 + xchg ah, al ; 86 c4 ; 0xf7b1a + xchg bh, bl ; 86 df ; 0xf7b1c + xchg ch, cl ; 86 cd ; 0xf7b1e + xchg dh, dl ; 86 d6 ; 0xf7b20 + xchg dx, ax ; 92 ; 0xf7b22 + xchg bx, cx ; 87 cb ; 0xf7b23 + mov word [bp-012h], ax ; 89 46 ee ; 0xf7b25 + mov word [bp-014h], bx ; 89 5e ec ; 0xf7b28 + mov word [bp-016h], cx ; 89 4e ea ; 0xf7b2b + mov word [bp-018h], dx ; 89 56 e8 ; 0xf7b2e + mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf7b31 scsi.c:225 + mov ax, di ; 89 f8 ; 0xf7b35 scsi.c:226 + xor dx, dx ; 31 d2 ; 0xf7b37 + xchg ah, al ; 86 c4 ; 0xf7b39 + xchg dh, dl ; 86 d6 ; 0xf7b3b + xchg dx, ax ; 92 ; 0xf7b3d + mov word [bp-010h], ax ; 89 46 f0 ; 0xf7b3e + mov word [bp-00eh], dx ; 89 56 f2 ; 0xf7b41 + mov byte [bp-00bh], 000h ; c6 46 f5 00 ; 0xf7b44 scsi.c:227 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7b48 scsi.c:230 + xor ah, ah ; 30 e4 ; 0xf7b4b + sal ax, 1 ; d1 e0 ; 0xf7b4d + sal ax, 1 ; d1 e0 ; 0xf7b4f + mov bx, si ; 89 f3 ; 0xf7b51 + add bx, ax ; 01 c3 ; 0xf7b53 + mov ax, word [es:bx+0021ch] ; 26 8b 87 1c 02 ; 0xf7b55 + mov bl, byte [es:bx+0021eh] ; 26 8a 9f 1e 02 ; 0xf7b5a scsi.c:231 + mov word [bp-00ah], di ; 89 7e f6 ; 0xf7b5f scsi.c:236 + mov word [bp-008h], strict word 00000h ; c7 46 f8 00 00 ; 0xf7b62 + mov cx, strict word 00009h ; b9 09 00 ; 0xf7b67 + sal word [bp-00ah], 1 ; d1 66 f6 ; 0xf7b6a + rcl word [bp-008h], 1 ; d1 56 f8 ; 0xf7b6d + loop 07b6ah ; e2 f8 ; 0xf7b70 + push word [bp-008h] ; ff 76 f8 ; 0xf7b72 + push word [bp-00ah] ; ff 76 f6 ; 0xf7b75 + push word [es:si+00ah] ; 26 ff 74 0a ; 0xf7b78 + push word [es:si+008h] ; 26 ff 74 08 ; 0xf7b7c + mov dx, strict word 00010h ; ba 10 00 ; 0xf7b80 + push dx ; 52 ; 0xf7b83 + mov dl, bl ; 88 da ; 0xf7b84 + xor dh, dh ; 30 f6 ; 0xf7b86 + mov cx, ss ; 8c d1 ; 0xf7b88 + lea bx, [bp-01ah] ; 8d 5e e6 ; 0xf7b8a + call 07925h ; e8 95 fd ; 0xf7b8d + mov ah, al ; 88 c4 ; 0xf7b90 + test al, al ; 84 c0 ; 0xf7b92 scsi.c:239 + jne short 07babh ; 75 15 ; 0xf7b94 + mov es, [bp+006h] ; 8e 46 06 ; 0xf7b96 scsi.c:241 + mov word [es:si+018h], di ; 26 89 7c 18 ; 0xf7b99 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf7b9d scsi.c:242 + mov word [es:si+01ah], dx ; 26 89 54 1a ; 0xf7ba0 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf7ba4 + mov word [es:si+01ch], dx ; 26 89 54 1c ; 0xf7ba7 + mov al, ah ; 88 e0 ; 0xf7bab scsi.c:246 + xor ah, ah ; 30 e4 ; 0xf7bad + lea sp, [bp-004h] ; 8d 66 fc ; 0xf7baf scsi.c:247 + pop di ; 5f ; 0xf7bb2 + pop si ; 5e ; 0xf7bb3 + pop bp ; 5d ; 0xf7bb4 + retn 00004h ; c2 04 00 ; 0xf7bb5 + ; disGetNextSymbol 0xf7bb8 LB 0x2390 -> off=0x0 cb=00000000000000e9 uValue=00000000000f65b8 'scsi_write_sectors' +scsi_write_sectors: ; 0xf7bb8 LB 0xe9 + push bp ; 55 ; 0xf7bb8 scsi.c:256 + mov bp, sp ; 89 e5 ; 0xf7bb9 + push si ; 56 ; 0xf7bbb + push di ; 57 ; 0xf7bbc + sub sp, strict byte 00016h ; 83 ec 16 ; 0xf7bbd + mov si, word [bp+004h] ; 8b 76 04 ; 0xf7bc0 + mov es, [bp+006h] ; 8e 46 06 ; 0xf7bc3 scsi.c:265 + mov al, byte [es:si+00ch] ; 26 8a 44 0c ; 0xf7bc6 + sub AL, strict byte 008h ; 2c 08 ; 0xf7bca + mov byte [bp-006h], al ; 88 46 fa ; 0xf7bcc + cmp AL, strict byte 004h ; 3c 04 ; 0xf7bcf scsi.c:266 + jbe short 07be8h ; 76 15 ; 0xf7bd1 + xor ah, ah ; 30 e4 ; 0xf7bd3 scsi.c:267 + push ax ; 50 ; 0xf7bd5 + mov ax, 00b4fh ; b8 4f 0b ; 0xf7bd6 + push ax ; 50 ; 0xf7bd9 + mov ax, 00b30h ; b8 30 0b ; 0xf7bda + push ax ; 50 ; 0xf7bdd + mov ax, strict word 00007h ; b8 07 00 ; 0xf7bde + push ax ; 50 ; 0xf7be1 + call 0190fh ; e8 2a 9d ; 0xf7be2 + add sp, strict byte 00008h ; 83 c4 08 ; 0xf7be5 + mov es, [bp+006h] ; 8e 46 06 ; 0xf7be8 scsi.c:269 + mov di, word [es:si+00eh] ; 26 8b 7c 0e ; 0xf7beb + mov word [bp-01ah], 0008ah ; c7 46 e6 8a 00 ; 0xf7bef scsi.c:272 + mov ax, word [es:si+006h] ; 26 8b 44 06 ; 0xf7bf4 scsi.c:273 + mov bx, word [es:si+004h] ; 26 8b 5c 04 ; 0xf7bf8 + mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf7bfc + mov dx, word [es:si] ; 26 8b 14 ; 0xf7c00 + xchg ah, al ; 86 c4 ; 0xf7c03 + xchg bh, bl ; 86 df ; 0xf7c05 + xchg ch, cl ; 86 cd ; 0xf7c07 + xchg dh, dl ; 86 d6 ; 0xf7c09 + xchg dx, ax ; 92 ; 0xf7c0b + xchg bx, cx ; 87 cb ; 0xf7c0c + mov word [bp-012h], ax ; 89 46 ee ; 0xf7c0e + mov word [bp-014h], bx ; 89 5e ec ; 0xf7c11 + mov word [bp-016h], cx ; 89 4e ea ; 0xf7c14 + mov word [bp-018h], dx ; 89 56 e8 ; 0xf7c17 + mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf7c1a scsi.c:274 + mov ax, di ; 89 f8 ; 0xf7c1e scsi.c:275 + xor dx, dx ; 31 d2 ; 0xf7c20 + xchg ah, al ; 86 c4 ; 0xf7c22 + xchg dh, dl ; 86 d6 ; 0xf7c24 + xchg dx, ax ; 92 ; 0xf7c26 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf7c27 + mov word [bp-00eh], dx ; 89 56 f2 ; 0xf7c2a + mov byte [bp-00bh], 000h ; c6 46 f5 00 ; 0xf7c2d scsi.c:276 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7c31 scsi.c:278 + xor ah, ah ; 30 e4 ; 0xf7c34 + sal ax, 1 ; d1 e0 ; 0xf7c36 + sal ax, 1 ; d1 e0 ; 0xf7c38 + mov bx, si ; 89 f3 ; 0xf7c3a + add bx, ax ; 01 c3 ; 0xf7c3c + mov ax, word [es:bx+0021ch] ; 26 8b 87 1c 02 ; 0xf7c3e + mov bl, byte [es:bx+0021eh] ; 26 8a 9f 1e 02 ; 0xf7c43 scsi.c:279 + mov word [bp-00ah], di ; 89 7e f6 ; 0xf7c48 scsi.c:284 + mov word [bp-008h], strict word 00000h ; c7 46 f8 00 00 ; 0xf7c4b + mov cx, strict word 00009h ; b9 09 00 ; 0xf7c50 + sal word [bp-00ah], 1 ; d1 66 f6 ; 0xf7c53 + rcl word [bp-008h], 1 ; d1 56 f8 ; 0xf7c56 + loop 07c53h ; e2 f8 ; 0xf7c59 + push word [bp-008h] ; ff 76 f8 ; 0xf7c5b + push word [bp-00ah] ; ff 76 f6 ; 0xf7c5e + push word [es:si+00ah] ; 26 ff 74 0a ; 0xf7c61 + push word [es:si+008h] ; 26 ff 74 08 ; 0xf7c65 + mov dx, strict word 00010h ; ba 10 00 ; 0xf7c69 + push dx ; 52 ; 0xf7c6c + mov dl, bl ; 88 da ; 0xf7c6d + xor dh, dh ; 30 f6 ; 0xf7c6f + mov cx, ss ; 8c d1 ; 0xf7c71 + lea bx, [bp-01ah] ; 8d 5e e6 ; 0xf7c73 + call 079fah ; e8 81 fd ; 0xf7c76 + mov ah, al ; 88 c4 ; 0xf7c79 + test al, al ; 84 c0 ; 0xf7c7b scsi.c:287 + jne short 07c94h ; 75 15 ; 0xf7c7d + mov es, [bp+006h] ; 8e 46 06 ; 0xf7c7f scsi.c:289 + mov word [es:si+018h], di ; 26 89 7c 18 ; 0xf7c82 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf7c86 scsi.c:290 + mov word [es:si+01ah], dx ; 26 89 54 1a ; 0xf7c89 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf7c8d + mov word [es:si+01ch], dx ; 26 89 54 1c ; 0xf7c90 + mov al, ah ; 88 e0 ; 0xf7c94 scsi.c:294 + xor ah, ah ; 30 e4 ; 0xf7c96 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf7c98 scsi.c:295 + pop di ; 5f ; 0xf7c9b + pop si ; 5e ; 0xf7c9c + pop bp ; 5d ; 0xf7c9d + retn 00004h ; c2 04 00 ; 0xf7c9e + ; disGetNextSymbol 0xf7ca1 LB 0x22a7 -> off=0x0 cb=0000000000000174 uValue=00000000000f66a1 'scsi_cmd_packet' +scsi_cmd_packet: ; 0xf7ca1 LB 0x174 + push bp ; 55 ; 0xf7ca1 scsi.c:315 + mov bp, sp ; 89 e5 ; 0xf7ca2 + push si ; 56 ; 0xf7ca4 + push di ; 57 ; 0xf7ca5 + sub sp, strict byte 0000ch ; 83 ec 0c ; 0xf7ca6 + mov byte [bp-008h], dl ; 88 56 f8 ; 0xf7ca9 + mov word [bp-00ch], bx ; 89 5e f4 ; 0xf7cac + mov word [bp-00ah], cx ; 89 4e f6 ; 0xf7caf + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf7cb2 scsi.c:48 + mov dx, strict word 00040h ; ba 40 00 ; 0xf7cb5 + mov es, dx ; 8e c2 ; 0xf7cb8 + mov dx, word [es:bx] ; 26 8b 17 ; 0xf7cba + mov si, 00122h ; be 22 01 ; 0xf7cbd scsi.c:49 + mov word [bp-010h], dx ; 89 56 f0 ; 0xf7cc0 + cmp byte [bp+00ah], 002h ; 80 7e 0a 02 ; 0xf7cc3 scsi.c:326 + jne short 07cech ; 75 23 ; 0xf7cc7 + mov bx, 00da0h ; bb a0 0d ; 0xf7cc9 scsi.c:327 + mov cx, ds ; 8c d9 ; 0xf7ccc + mov ax, strict word 00004h ; b8 04 00 ; 0xf7cce + call 018cch ; e8 f8 9b ; 0xf7cd1 + mov ax, 00b62h ; b8 62 0b ; 0xf7cd4 + push ax ; 50 ; 0xf7cd7 + mov ax, 00b72h ; b8 72 0b ; 0xf7cd8 + push ax ; 50 ; 0xf7cdb + mov ax, strict word 00004h ; b8 04 00 ; 0xf7cdc + push ax ; 50 ; 0xf7cdf + call 0190fh ; e8 2c 9c ; 0xf7ce0 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf7ce3 + mov dx, strict word 00001h ; ba 01 00 ; 0xf7ce6 scsi.c:328 + jmp near 07e0ah ; e9 1e 01 ; 0xf7ce9 + sub ax, strict word 00008h ; 2d 08 00 ; 0xf7cec scsi.c:332 + sal ax, 1 ; d1 e0 ; 0xf7cef scsi.c:342 + sal ax, 1 ; d1 e0 ; 0xf7cf1 + sub byte [bp-008h], 002h ; 80 6e f8 02 ; 0xf7cf3 scsi.c:340 + mov es, [bp-010h] ; 8e 46 f0 ; 0xf7cf7 + mov di, si ; 89 f7 ; 0xf7cfa + add di, ax ; 01 c7 ; 0xf7cfc + mov bx, word [es:di+0021ch] ; 26 8b 9d 1c 02 ; 0xf7cfe + mov al, byte [es:di+0021eh] ; 26 8a 85 1e 02 ; 0xf7d03 scsi.c:343 + mov byte [bp-006h], al ; 88 46 fa ; 0xf7d08 + mov dx, bx ; 89 da ; 0xf7d0b scsi.c:347 + in AL, DX ; ec ; 0xf7d0d + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf7d0e + test AL, strict byte 001h ; a8 01 ; 0xf7d10 scsi.c:348 + jne short 07d0bh ; 75 f7 ; 0xf7d12 + xor ax, ax ; 31 c0 ; 0xf7d14 scsi.c:354 + mov dx, word [bp+006h] ; 8b 56 06 ; 0xf7d16 + add dx, word [bp+004h] ; 03 56 04 ; 0xf7d19 + mov cx, word [bp+008h] ; 8b 4e 08 ; 0xf7d1c + adc cx, ax ; 11 c1 ; 0xf7d1f + mov es, [bp-010h] ; 8e 46 f0 ; 0xf7d21 + mov ax, word [es:si+020h] ; 26 8b 44 20 ; 0xf7d24 + xor di, di ; 31 ff ; 0xf7d28 + add dx, ax ; 01 c2 ; 0xf7d2a + mov word [bp-00eh], dx ; 89 56 f2 ; 0xf7d2c + adc di, cx ; 11 cf ; 0xf7d2f + mov ax, dx ; 89 d0 ; 0xf7d31 scsi.c:356 + mov dx, di ; 89 fa ; 0xf7d33 + mov cx, strict word 0000ch ; b9 0c 00 ; 0xf7d35 + shr dx, 1 ; d1 ea ; 0xf7d38 + rcr ax, 1 ; d1 d8 ; 0xf7d3a + loop 07d38h ; e2 fa ; 0xf7d3c + mov cx, ax ; 89 c1 ; 0xf7d3e + and cx, 000f0h ; 81 e1 f0 00 ; 0xf7d40 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf7d44 + xor ah, ah ; 30 e4 ; 0xf7d47 + or cx, ax ; 09 c1 ; 0xf7d49 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7d4b scsi.c:357 + mov dx, bx ; 89 da ; 0xf7d4e + out DX, AL ; ee ; 0xf7d50 + xor al, al ; 30 c0 ; 0xf7d51 scsi.c:358 + out DX, AL ; ee ; 0xf7d53 + mov al, cl ; 88 c8 ; 0xf7d54 scsi.c:359 + out DX, AL ; ee ; 0xf7d56 + mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf7d57 scsi.c:360 + out DX, AL ; ee ; 0xf7d5a + mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf7d5b scsi.c:361 + mov dx, di ; 89 fa ; 0xf7d5e + mov cx, strict word 00008h ; b9 08 00 ; 0xf7d60 + shr dx, 1 ; d1 ea ; 0xf7d63 + rcr ax, 1 ; d1 d8 ; 0xf7d65 + loop 07d63h ; e2 fa ; 0xf7d67 + mov dx, bx ; 89 da ; 0xf7d69 + out DX, AL ; ee ; 0xf7d6b + xor cx, cx ; 31 c9 ; 0xf7d6c scsi.c:362 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf7d6e + xor ah, ah ; 30 e4 ; 0xf7d71 + cmp cx, ax ; 39 c1 ; 0xf7d73 + jnc short 07d85h ; 73 0e ; 0xf7d75 + les di, [bp-00ch] ; c4 7e f4 ; 0xf7d77 scsi.c:363 + add di, cx ; 01 cf ; 0xf7d7a + mov al, byte [es:di] ; 26 8a 05 ; 0xf7d7c + mov dx, bx ; 89 da ; 0xf7d7f + out DX, AL ; ee ; 0xf7d81 + inc cx ; 41 ; 0xf7d82 + jmp short 07d6eh ; eb e9 ; 0xf7d83 + mov dx, bx ; 89 da ; 0xf7d85 scsi.c:367 + in AL, DX ; ec ; 0xf7d87 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf7d88 + test AL, strict byte 001h ; a8 01 ; 0xf7d8a scsi.c:368 + jne short 07d85h ; 75 f7 ; 0xf7d8c + test AL, strict byte 002h ; a8 02 ; 0xf7d8e scsi.c:371 + je short 07da0h ; 74 0e ; 0xf7d90 + lea dx, [bx+003h] ; 8d 57 03 ; 0xf7d92 scsi.c:372 + xor al, al ; 30 c0 ; 0xf7d95 + out DX, AL ; ee ; 0xf7d97 + in AL, DX ; ec ; 0xf7d98 scsi.c:374 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf7d99 + mov dx, strict word 00003h ; ba 03 00 ; 0xf7d9b scsi.c:376 + jmp short 07e0ah ; eb 6a ; 0xf7d9e + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf7da0 scsi.c:381 + test ax, ax ; 85 c0 ; 0xf7da3 + je short 07dafh ; 74 08 ; 0xf7da5 + lea dx, [bx+001h] ; 8d 57 01 ; 0xf7da7 scsi.c:382 + mov cx, ax ; 89 c1 ; 0xf7daa + in AL, DX ; ec ; 0xf7dac + loop 07dach ; e2 fd ; 0xf7dad + mov ax, word [bp+006h] ; 8b 46 06 ; 0xf7daf scsi.c:384 + mov es, [bp-010h] ; 8e 46 f0 ; 0xf7db2 + mov word [es:si+01ah], ax ; 26 89 44 1a ; 0xf7db5 + mov ax, word [bp+008h] ; 8b 46 08 ; 0xf7db9 + mov word [es:si+01ch], ax ; 26 89 44 1c ; 0xf7dbc + lea ax, [bx+001h] ; 8d 47 01 ; 0xf7dc0 scsi.c:389 + cmp word [bp+008h], strict byte 00000h ; 83 7e 08 00 ; 0xf7dc3 + jne short 07dd0h ; 75 07 ; 0xf7dc7 + cmp word [bp+006h], 08000h ; 81 7e 06 00 80 ; 0xf7dc9 + jbe short 07dedh ; 76 1d ; 0xf7dce + mov dx, ax ; 89 c2 ; 0xf7dd0 scsi.c:391 + mov cx, 08000h ; b9 00 80 ; 0xf7dd2 + les di, [bp+00ch] ; c4 7e 0c ; 0xf7dd5 + rep insb ; f3 6c ; 0xf7dd8 + add word [bp+006h], 08000h ; 81 46 06 00 80 ; 0xf7dda scsi.c:392 + adc word [bp+008h], strict byte 0ffffh ; 83 56 08 ff ; 0xf7ddf + mov ax, es ; 8c c0 ; 0xf7de3 + add ax, 00800h ; 05 00 08 ; 0xf7de5 + mov word [bp+00eh], ax ; 89 46 0e ; 0xf7de8 + jmp short 07dc0h ; eb d3 ; 0xf7deb scsi.c:394 + mov dx, ax ; 89 c2 ; 0xf7ded scsi.c:397 + mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf7def + les di, [bp+00ch] ; c4 7e 0c ; 0xf7df2 + rep insb ; f3 6c ; 0xf7df5 + mov es, [bp-010h] ; 8e 46 f0 ; 0xf7df7 scsi.c:399 + cmp word [es:si+020h], strict byte 00000h ; 26 83 7c 20 00 ; 0xf7dfa + je short 07e08h ; 74 07 ; 0xf7dff + mov cx, word [es:si+020h] ; 26 8b 4c 20 ; 0xf7e01 scsi.c:400 + in AL, DX ; ec ; 0xf7e05 + loop 07e05h ; e2 fd ; 0xf7e06 + xor dx, dx ; 31 d2 ; 0xf7e08 scsi.c:402 + mov ax, dx ; 89 d0 ; 0xf7e0a scsi.c:403 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf7e0c + pop di ; 5f ; 0xf7e0f + pop si ; 5e ; 0xf7e10 + pop bp ; 5d ; 0xf7e11 + retn 0000ch ; c2 0c 00 ; 0xf7e12 + ; disGetNextSymbol 0xf7e15 LB 0x2133 -> off=0x0 cb=00000000000004cc uValue=00000000000f6815 'scsi_enumerate_attached_devices' +scsi_enumerate_attached_devices: ; 0xf7e15 LB 0x4cc + push bp ; 55 ; 0xf7e15 scsi.c:411 + mov bp, sp ; 89 e5 ; 0xf7e16 + push bx ; 53 ; 0xf7e18 + push cx ; 51 ; 0xf7e19 + push dx ; 52 ; 0xf7e1a + push si ; 56 ; 0xf7e1b + push di ; 57 ; 0xf7e1c + sub sp, 0023eh ; 81 ec 3e 02 ; 0xf7e1d + push ax ; 50 ; 0xf7e21 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf7e22 scsi.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf7e25 + mov es, ax ; 8e c0 ; 0xf7e28 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf7e2a + mov di, 00122h ; bf 22 01 ; 0xf7e2d scsi.c:49 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf7e30 + mov word [bp-016h], strict word 00000h ; c7 46 ea 00 00 ; 0xf7e33 scsi.c:420 + jmp near 08254h ; e9 19 04 ; 0xf7e38 + cmp AL, strict byte 004h ; 3c 04 ; 0xf7e3b scsi.c:440 + jc short 07e42h ; 72 03 ; 0xf7e3d + jmp near 082d7h ; e9 95 04 ; 0xf7e3f + mov cx, strict word 00010h ; b9 10 00 ; 0xf7e42 scsi.c:455 + xor bx, bx ; 31 db ; 0xf7e45 + mov dx, ss ; 8c d2 ; 0xf7e47 + lea ax, [bp-048h] ; 8d 46 b8 ; 0xf7e49 + call 09c30h ; e8 e1 1d ; 0xf7e4c + mov byte [bp-048h], 09eh ; c6 46 b8 9e ; 0xf7e4f scsi.c:456 + mov byte [bp-047h], 010h ; c6 46 b9 10 ; 0xf7e53 scsi.c:457 + mov byte [bp-03bh], 020h ; c6 46 c5 20 ; 0xf7e57 scsi.c:458 + xor ax, ax ; 31 c0 ; 0xf7e5b scsi.c:460 + push ax ; 50 ; 0xf7e5d + mov ax, strict word 00020h ; b8 20 00 ; 0xf7e5e + push ax ; 50 ; 0xf7e61 + lea dx, [bp-00248h] ; 8d 96 b8 fd ; 0xf7e62 + push SS ; 16 ; 0xf7e66 + push dx ; 52 ; 0xf7e67 + mov ax, strict word 00010h ; b8 10 00 ; 0xf7e68 + push ax ; 50 ; 0xf7e6b + mov dl, byte [bp-016h] ; 8a 56 ea ; 0xf7e6c + xor dh, dh ; 30 f6 ; 0xf7e6f + mov cx, ss ; 8c d1 ; 0xf7e71 + lea bx, [bp-048h] ; 8d 5e b8 ; 0xf7e73 + mov ax, word [bp-0024ah] ; 8b 86 b6 fd ; 0xf7e76 + call 07925h ; e8 a8 fa ; 0xf7e7a + test al, al ; 84 c0 ; 0xf7e7d scsi.c:461 + je short 07e93h ; 74 12 ; 0xf7e7f + mov ax, 00b92h ; b8 92 0b ; 0xf7e81 scsi.c:462 + push ax ; 50 ; 0xf7e84 + mov ax, 00bcbh ; b8 cb 0b ; 0xf7e85 + push ax ; 50 ; 0xf7e88 + mov ax, strict word 00007h ; b8 07 00 ; 0xf7e89 + push ax ; 50 ; 0xf7e8c + call 0190fh ; e8 7f 9a ; 0xf7e8d + add sp, strict byte 00006h ; 83 c4 06 ; 0xf7e90 + mov ax, word [bp-00242h] ; 8b 86 be fd ; 0xf7e93 scsi.c:467 + mov bx, word [bp-00244h] ; 8b 9e bc fd ; 0xf7e97 + mov cx, word [bp-00246h] ; 8b 8e ba fd ; 0xf7e9b + mov dx, word [bp-00248h] ; 8b 96 b8 fd ; 0xf7e9f + xchg ah, al ; 86 c4 ; 0xf7ea3 + xchg bh, bl ; 86 df ; 0xf7ea5 + xchg ch, cl ; 86 cd ; 0xf7ea7 + xchg dh, dl ; 86 d6 ; 0xf7ea9 + xchg dx, ax ; 92 ; 0xf7eab + xchg bx, cx ; 87 cb ; 0xf7eac + add dx, strict byte 00001h ; 83 c2 01 ; 0xf7eae + mov word [bp-01ah], dx ; 89 56 e6 ; 0xf7eb1 + adc cx, strict byte 00000h ; 83 d1 00 ; 0xf7eb4 + mov word [bp-02eh], cx ; 89 4e d2 ; 0xf7eb7 + adc bx, strict byte 00000h ; 83 d3 00 ; 0xf7eba + mov word [bp-018h], bx ; 89 5e e8 ; 0xf7ebd + adc ax, strict word 00000h ; 15 00 00 ; 0xf7ec0 + mov word [bp-02ah], ax ; 89 46 d6 ; 0xf7ec3 + mov ah, byte [bp-00240h] ; 8a a6 c0 fd ; 0xf7ec6 scsi.c:469 + xor al, al ; 30 c0 ; 0xf7eca + mov dl, byte [bp-0023fh] ; 8a 96 c1 fd ; 0xf7ecc + xor dh, dh ; 30 f6 ; 0xf7ed0 + xor bx, bx ; 31 db ; 0xf7ed2 + mov si, ax ; 89 c6 ; 0xf7ed4 + or si, dx ; 09 d6 ; 0xf7ed6 + mov al, byte [bp-0023eh] ; 8a 86 c2 fd ; 0xf7ed8 + xor ah, ah ; 30 e4 ; 0xf7edc + xor dl, dl ; 30 d2 ; 0xf7ede + mov cx, strict word 00008h ; b9 08 00 ; 0xf7ee0 + sal ax, 1 ; d1 e0 ; 0xf7ee3 + rcl dx, 1 ; d1 d2 ; 0xf7ee5 + loop 07ee3h ; e2 fa ; 0xf7ee7 + or bx, ax ; 09 c3 ; 0xf7ee9 + or dx, si ; 09 f2 ; 0xf7eeb + mov al, byte [bp-0023dh] ; 8a 86 c3 fd ; 0xf7eed + xor ah, ah ; 30 e4 ; 0xf7ef1 + or bx, ax ; 09 c3 ; 0xf7ef3 + mov word [bp-012h], bx ; 89 5e ee ; 0xf7ef5 + test dx, dx ; 85 d2 ; 0xf7ef8 scsi.c:475 + jne short 07f02h ; 75 06 ; 0xf7efa + cmp bx, 00200h ; 81 fb 00 02 ; 0xf7efc + je short 07f25h ; 74 23 ; 0xf7f00 + mov bx, 00da0h ; bb a0 0d ; 0xf7f02 scsi.c:478 + mov cx, ds ; 8c d9 ; 0xf7f05 + mov ax, strict word 00004h ; b8 04 00 ; 0xf7f07 + call 018cch ; e8 bf 99 ; 0xf7f0a + push dx ; 52 ; 0xf7f0d + push word [bp-012h] ; ff 76 ee ; 0xf7f0e + push word [bp-016h] ; ff 76 ea ; 0xf7f11 + mov ax, 00beah ; b8 ea 0b ; 0xf7f14 + push ax ; 50 ; 0xf7f17 + mov ax, strict word 00004h ; b8 04 00 ; 0xf7f18 + push ax ; 50 ; 0xf7f1b + call 0190fh ; e8 f0 99 ; 0xf7f1c + add sp, strict byte 0000ah ; 83 c4 0a ; 0xf7f1f + jmp near 08248h ; e9 23 03 ; 0xf7f22 scsi.c:479 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf7f25 scsi.c:483 + cmp AL, strict byte 001h ; 3c 01 ; 0xf7f28 + jc short 07f38h ; 72 0c ; 0xf7f2a + jbe short 07f40h ; 76 12 ; 0xf7f2c + cmp AL, strict byte 003h ; 3c 03 ; 0xf7f2e + je short 07f48h ; 74 16 ; 0xf7f30 + cmp AL, strict byte 002h ; 3c 02 ; 0xf7f32 + je short 07f44h ; 74 0e ; 0xf7f34 + jmp short 07f8fh ; eb 57 ; 0xf7f36 + test al, al ; 84 c0 ; 0xf7f38 + jne short 07f8fh ; 75 53 ; 0xf7f3a + mov BL, strict byte 090h ; b3 90 ; 0xf7f3c scsi.c:486 + jmp short 07f4ah ; eb 0a ; 0xf7f3e scsi.c:487 + mov BL, strict byte 098h ; b3 98 ; 0xf7f40 scsi.c:489 + jmp short 07f4ah ; eb 06 ; 0xf7f42 scsi.c:490 + mov BL, strict byte 0a0h ; b3 a0 ; 0xf7f44 scsi.c:492 + jmp short 07f4ah ; eb 02 ; 0xf7f46 scsi.c:493 + mov BL, strict byte 0a8h ; b3 a8 ; 0xf7f48 scsi.c:495 + mov cl, bl ; 88 d9 ; 0xf7f4a scsi.c:499 + add cl, 007h ; 80 c1 07 ; 0xf7f4c + xor ch, ch ; 30 ed ; 0xf7f4f + mov ax, cx ; 89 c8 ; 0xf7f51 + call 01652h ; e8 fc 96 ; 0xf7f53 + test al, al ; 84 c0 ; 0xf7f56 + je short 07f8fh ; 74 35 ; 0xf7f58 + mov al, bl ; 88 d8 ; 0xf7f5a scsi.c:504 + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf7f5c + xor ah, ah ; 30 e4 ; 0xf7f5e + call 01652h ; e8 ef 96 ; 0xf7f60 + mov dh, al ; 88 c6 ; 0xf7f63 + mov al, bl ; 88 d8 ; 0xf7f65 + xor ah, ah ; 30 e4 ; 0xf7f67 + call 01652h ; e8 e6 96 ; 0xf7f69 + mov ah, dh ; 88 f4 ; 0xf7f6c + cwd ; 99 ; 0xf7f6e + mov si, ax ; 89 c6 ; 0xf7f6f + mov word [bp-020h], dx ; 89 56 e0 ; 0xf7f71 + mov al, bl ; 88 d8 ; 0xf7f74 scsi.c:505 + add AL, strict byte 002h ; 04 02 ; 0xf7f76 + xor ah, ah ; 30 e4 ; 0xf7f78 + call 01652h ; e8 d5 96 ; 0xf7f7a + xor ah, ah ; 30 e4 ; 0xf7f7d + mov word [bp-01ch], ax ; 89 46 e4 ; 0xf7f7f + mov ax, cx ; 89 c8 ; 0xf7f82 scsi.c:506 + call 01652h ; e8 cb 96 ; 0xf7f84 + xor ah, ah ; 30 e4 ; 0xf7f87 + mov word [bp-01eh], ax ; 89 46 e2 ; 0xf7f89 + jmp near 0807ch ; e9 ed 00 ; 0xf7f8c scsi.c:508 + mov ax, word [bp-02ah] ; 8b 46 d6 ; 0xf7f8f scsi.c:509 + mov bx, word [bp-018h] ; 8b 5e e8 ; 0xf7f92 + mov cx, word [bp-02eh] ; 8b 4e d2 ; 0xf7f95 + mov dx, word [bp-01ah] ; 8b 56 e6 ; 0xf7f98 + mov si, strict word 0000ch ; be 0c 00 ; 0xf7f9b + call 09c10h ; e8 6f 1c ; 0xf7f9e + mov word [bp-022h], ax ; 89 46 de ; 0xf7fa1 + mov word [bp-024h], bx ; 89 5e dc ; 0xf7fa4 + mov word [bp-026h], cx ; 89 4e da ; 0xf7fa7 + mov word [bp-028h], dx ; 89 56 d8 ; 0xf7faa + mov ax, word [bp-02ah] ; 8b 46 d6 ; 0xf7fad scsi.c:513 + test ax, ax ; 85 c0 ; 0xf7fb0 + jnbe short 07fc9h ; 77 15 ; 0xf7fb2 + je short 07fb9h ; 74 03 ; 0xf7fb4 + jmp near 0803ch ; e9 83 00 ; 0xf7fb6 + cmp word [bp-018h], strict byte 00000h ; 83 7e e8 00 ; 0xf7fb9 + jnbe short 07fc9h ; 77 0a ; 0xf7fbd + jne short 07fb6h ; 75 f5 ; 0xf7fbf + cmp word [bp-02eh], strict byte 00040h ; 83 7e d2 40 ; 0xf7fc1 + jnbe short 07fc9h ; 77 02 ; 0xf7fc5 + jne short 0803ch ; 75 73 ; 0xf7fc7 + mov word [bp-01ch], 000ffh ; c7 46 e4 ff 00 ; 0xf7fc9 scsi.c:515 + mov word [bp-01eh], strict word 0003fh ; c7 46 e2 3f 00 ; 0xf7fce scsi.c:516 + mov bx, word [bp-018h] ; 8b 5e e8 ; 0xf7fd3 scsi.c:518 + mov cx, word [bp-02eh] ; 8b 4e d2 ; 0xf7fd6 + mov dx, word [bp-01ah] ; 8b 56 e6 ; 0xf7fd9 + mov si, strict word 00006h ; be 06 00 ; 0xf7fdc + call 09c10h ; e8 2e 1c ; 0xf7fdf + mov si, word [bp-028h] ; 8b 76 d8 ; 0xf7fe2 + add si, dx ; 01 d6 ; 0xf7fe5 + mov word [bp-038h], si ; 89 76 c8 ; 0xf7fe7 + mov dx, word [bp-026h] ; 8b 56 da ; 0xf7fea + adc dx, cx ; 11 ca ; 0xf7fed + mov word [bp-036h], dx ; 89 56 ca ; 0xf7fef + mov dx, word [bp-024h] ; 8b 56 dc ; 0xf7ff2 + adc dx, bx ; 11 da ; 0xf7ff5 + mov word [bp-014h], dx ; 89 56 ec ; 0xf7ff7 + mov dx, word [bp-022h] ; 8b 56 de ; 0xf7ffa + adc dx, ax ; 11 c2 ; 0xf7ffd + mov word [bp-02ch], dx ; 89 56 d4 ; 0xf7fff + mov ax, dx ; 89 d0 ; 0xf8002 scsi.c:519 + mov bx, word [bp-014h] ; 8b 5e ec ; 0xf8004 + mov cx, word [bp-036h] ; 8b 4e ca ; 0xf8007 + mov dx, si ; 89 f2 ; 0xf800a + mov si, strict word 00008h ; be 08 00 ; 0xf800c + call 09c10h ; e8 fe 1b ; 0xf800f + mov word [bp-030h], bx ; 89 5e d0 ; 0xf8012 + mov word [bp-032h], cx ; 89 4e ce ; 0xf8015 + mov word [bp-034h], dx ; 89 56 cc ; 0xf8018 + mov ax, word [bp-02ch] ; 8b 46 d4 ; 0xf801b + mov bx, word [bp-014h] ; 8b 5e ec ; 0xf801e + mov cx, word [bp-036h] ; 8b 4e ca ; 0xf8021 + mov dx, word [bp-038h] ; 8b 56 c8 ; 0xf8024 + mov si, strict word 00010h ; be 10 00 ; 0xf8027 + call 09c10h ; e8 e3 1b ; 0xf802a + mov si, word [bp-034h] ; 8b 76 cc ; 0xf802d + add si, dx ; 01 d6 ; 0xf8030 + adc cx, word [bp-032h] ; 13 4e ce ; 0xf8032 + mov ax, word [bp-030h] ; 8b 46 d0 ; 0xf8035 + adc ax, bx ; 11 d8 ; 0xf8038 + jmp short 08079h ; eb 3d ; 0xf803a scsi.c:521 + test ax, ax ; 85 c0 ; 0xf803c + jnbe short 08052h ; 77 12 ; 0xf803e + jne short 0805eh ; 75 1c ; 0xf8040 + cmp word [bp-018h], strict byte 00000h ; 83 7e e8 00 ; 0xf8042 + jnbe short 08052h ; 77 0a ; 0xf8046 + jne short 0805eh ; 75 14 ; 0xf8048 + cmp word [bp-02eh], strict byte 00020h ; 83 7e d2 20 ; 0xf804a + jnbe short 08052h ; 77 02 ; 0xf804e + jne short 0805eh ; 75 0c ; 0xf8050 + mov word [bp-01ch], 00080h ; c7 46 e4 80 00 ; 0xf8052 scsi.c:523 + mov word [bp-01eh], strict word 00020h ; c7 46 e2 20 00 ; 0xf8057 scsi.c:524 + jmp short 08077h ; eb 19 ; 0xf805c scsi.c:527 + mov word [bp-01ch], strict word 00040h ; c7 46 e4 40 00 ; 0xf805e scsi.c:529 + mov word [bp-01eh], strict word 00020h ; c7 46 e2 20 00 ; 0xf8063 scsi.c:530 + mov bx, word [bp-018h] ; 8b 5e e8 ; 0xf8068 scsi.c:531 + mov cx, word [bp-02eh] ; 8b 4e d2 ; 0xf806b + mov dx, word [bp-01ah] ; 8b 56 e6 ; 0xf806e + mov si, strict word 0000bh ; be 0b 00 ; 0xf8071 + call 09c10h ; e8 99 1b ; 0xf8074 + mov si, dx ; 89 d6 ; 0xf8077 + mov word [bp-020h], cx ; 89 4e e0 ; 0xf8079 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf807c scsi.c:536 + add AL, strict byte 008h ; 04 08 ; 0xf807f + mov byte [bp-00eh], al ; 88 46 f2 ; 0xf8081 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf8084 scsi.c:538 + xor ah, ah ; 30 e4 ; 0xf8087 + sal ax, 1 ; d1 e0 ; 0xf8089 + sal ax, 1 ; d1 e0 ; 0xf808b + mov es, [bp-010h] ; 8e 46 f0 ; 0xf808d + mov bx, di ; 89 fb ; 0xf8090 + add bx, ax ; 01 c3 ; 0xf8092 + mov ax, word [bp-0024ah] ; 8b 86 b6 fd ; 0xf8094 + mov word [es:bx+0021ch], ax ; 26 89 87 1c 02 ; 0xf8098 + mov al, byte [bp-016h] ; 8a 46 ea ; 0xf809d scsi.c:539 + mov byte [es:bx+0021eh], al ; 26 88 87 1e 02 ; 0xf80a0 + mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf80a5 scsi.c:540 + xor ah, ah ; 30 e4 ; 0xf80a8 + mov dx, strict word 0001ch ; ba 1c 00 ; 0xf80aa + imul dx ; f7 ea ; 0xf80ad + mov bx, di ; 89 fb ; 0xf80af + add bx, ax ; 01 c3 ; 0xf80b1 + mov word [es:bx+022h], 0ff04h ; 26 c7 47 22 04 ff ; 0xf80b3 + mov word [es:bx+024h], strict word 00000h ; 26 c7 47 24 00 00 ; 0xf80b9 scsi.c:542 + mov ax, word [bp-012h] ; 8b 46 ee ; 0xf80bf scsi.c:544 + mov word [es:bx+028h], ax ; 26 89 47 28 ; 0xf80c2 + mov byte [es:bx+027h], 001h ; 26 c6 47 27 01 ; 0xf80c6 scsi.c:545 + mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xf80cb scsi.c:548 + mov word [es:bx+02ah], ax ; 26 89 47 2a ; 0xf80ce + mov ax, word [bp-01eh] ; 8b 46 e2 ; 0xf80d2 scsi.c:549 + mov word [es:bx+02eh], ax ; 26 89 47 2e ; 0xf80d5 + mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xf80d9 scsi.c:550 + mov word [es:bx+030h], ax ; 26 89 47 30 ; 0xf80dc + mov ax, word [bp-01eh] ; 8b 46 e2 ; 0xf80e0 scsi.c:551 + mov word [es:bx+034h], ax ; 26 89 47 34 ; 0xf80e3 + cmp word [bp-020h], strict byte 00000h ; 83 7e e0 00 ; 0xf80e7 scsi.c:553 + jne short 080f3h ; 75 06 ; 0xf80eb + cmp si, 00400h ; 81 fe 00 04 ; 0xf80ed + jbe short 08101h ; 76 0e ; 0xf80f1 + mov word [es:bx+02ch], 00400h ; 26 c7 47 2c 00 04 ; 0xf80f3 scsi.c:554 + mov word [es:bx+032h], 00400h ; 26 c7 47 32 00 04 ; 0xf80f9 scsi.c:555 + jmp short 08109h ; eb 08 ; 0xf80ff scsi.c:556 + mov word [es:bx+02ch], si ; 26 89 77 2c ; 0xf8101 scsi.c:557 + mov word [es:bx+032h], si ; 26 89 77 32 ; 0xf8105 scsi.c:558 + mov bx, 00da0h ; bb a0 0d ; 0xf8109 scsi.c:562 + mov cx, ds ; 8c d9 ; 0xf810c + mov ax, strict word 00004h ; b8 04 00 ; 0xf810e + call 018cch ; e8 b8 97 ; 0xf8111 + push word [bp-02ah] ; ff 76 d6 ; 0xf8114 + push word [bp-018h] ; ff 76 e8 ; 0xf8117 + push word [bp-02eh] ; ff 76 d2 ; 0xf811a + push word [bp-01ah] ; ff 76 e6 ; 0xf811d + push word [bp-01eh] ; ff 76 e2 ; 0xf8120 + push word [bp-01ch] ; ff 76 e4 ; 0xf8123 + push word [bp-020h] ; ff 76 e0 ; 0xf8126 + push si ; 56 ; 0xf8129 + push word [bp-016h] ; ff 76 ea ; 0xf812a + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf812d + xor ah, ah ; 30 e4 ; 0xf8130 + push ax ; 50 ; 0xf8132 + mov ax, 00c18h ; b8 18 0c ; 0xf8133 + push ax ; 50 ; 0xf8136 + mov ax, strict word 00004h ; b8 04 00 ; 0xf8137 + push ax ; 50 ; 0xf813a + call 0190fh ; e8 d1 97 ; 0xf813b + add sp, strict byte 00018h ; 83 c4 18 ; 0xf813e + mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf8141 scsi.c:564 + xor ah, ah ; 30 e4 ; 0xf8144 + mov dx, strict word 0001ch ; ba 1c 00 ; 0xf8146 + imul dx ; f7 ea ; 0xf8149 + mov es, [bp-010h] ; 8e 46 f0 ; 0xf814b + mov bx, di ; 89 fb ; 0xf814e + add bx, ax ; 01 c3 ; 0xf8150 + mov ax, word [bp-02ah] ; 8b 46 d6 ; 0xf8152 + mov word [es:bx+03ch], ax ; 26 89 47 3c ; 0xf8155 + mov ax, word [bp-018h] ; 8b 46 e8 ; 0xf8159 + mov word [es:bx+03ah], ax ; 26 89 47 3a ; 0xf815c + mov ax, word [bp-02eh] ; 8b 46 d2 ; 0xf8160 + mov word [es:bx+038h], ax ; 26 89 47 38 ; 0xf8163 + mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xf8167 + mov word [es:bx+036h], ax ; 26 89 47 36 ; 0xf816a + mov al, byte [es:di+001e2h] ; 26 8a 85 e2 01 ; 0xf816e scsi.c:567 + mov ah, byte [bp-00ch] ; 8a 66 f4 ; 0xf8173 scsi.c:568 + add ah, 008h ; 80 c4 08 ; 0xf8176 + mov bl, al ; 88 c3 ; 0xf8179 + xor bh, bh ; 30 ff ; 0xf817b + add bx, di ; 01 fb ; 0xf817d + mov byte [es:bx+001e3h], ah ; 26 88 a7 e3 01 ; 0xf817f + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf8184 scsi.c:569 + mov byte [es:di+001e2h], al ; 26 88 85 e2 01 ; 0xf8186 scsi.c:570 + mov bx, strict word 00075h ; bb 75 00 ; 0xf818b scsi.c:38 + mov ax, strict word 00040h ; b8 40 00 ; 0xf818e + mov es, ax ; 8e c0 ; 0xf8191 + mov al, byte [es:bx] ; 26 8a 07 ; 0xf8193 + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf8196 scsi.c:574 + mov byte [es:bx], al ; 26 88 07 ; 0xf8198 scsi.c:43 + inc byte [bp-00ch] ; fe 46 f4 ; 0xf819b scsi.c:577 + jmp near 0823dh ; e9 9c 00 ; 0xf819e scsi.c:579 + mov bx, 00da0h ; bb a0 0d ; 0xf81a1 scsi.c:591 + mov cx, ds ; 8c d9 ; 0xf81a4 + mov ax, strict word 00004h ; b8 04 00 ; 0xf81a6 + call 018cch ; e8 20 97 ; 0xf81a9 + push word [bp-016h] ; ff 76 ea ; 0xf81ac + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf81af + xor ah, ah ; 30 e4 ; 0xf81b2 + push ax ; 50 ; 0xf81b4 + mov ax, 00c46h ; b8 46 0c ; 0xf81b5 + push ax ; 50 ; 0xf81b8 + mov ax, strict word 00004h ; b8 04 00 ; 0xf81b9 + push ax ; 50 ; 0xf81bc + call 0190fh ; e8 4f 97 ; 0xf81bd + add sp, strict byte 00008h ; 83 c4 08 ; 0xf81c0 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf81c3 scsi.c:594 + add AL, strict byte 008h ; 04 08 ; 0xf81c6 + mov byte [bp-00eh], al ; 88 46 f2 ; 0xf81c8 + test byte [bp-00247h], 080h ; f6 86 b9 fd 80 ; 0xf81cb scsi.c:596 + je short 081d7h ; 74 05 ; 0xf81d0 + mov cx, strict word 00001h ; b9 01 00 ; 0xf81d2 + jmp short 081d9h ; eb 02 ; 0xf81d5 + xor cx, cx ; 31 c9 ; 0xf81d7 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf81d9 scsi.c:598 + xor ah, ah ; 30 e4 ; 0xf81dc + sal ax, 1 ; d1 e0 ; 0xf81de + sal ax, 1 ; d1 e0 ; 0xf81e0 + mov es, [bp-010h] ; 8e 46 f0 ; 0xf81e2 + mov bx, di ; 89 fb ; 0xf81e5 + add bx, ax ; 01 c3 ; 0xf81e7 + mov ax, word [bp-0024ah] ; 8b 86 b6 fd ; 0xf81e9 + mov word [es:bx+0021ch], ax ; 26 89 87 1c 02 ; 0xf81ed + mov al, byte [bp-016h] ; 8a 46 ea ; 0xf81f2 scsi.c:599 + mov byte [es:bx+0021eh], al ; 26 88 87 1e 02 ; 0xf81f5 + mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf81fa scsi.c:600 + xor ah, ah ; 30 e4 ; 0xf81fd + mov dx, strict word 0001ch ; ba 1c 00 ; 0xf81ff + imul dx ; f7 ea ; 0xf8202 + mov bx, di ; 89 fb ; 0xf8204 + add bx, ax ; 01 c3 ; 0xf8206 + mov word [es:bx+022h], 00504h ; 26 c7 47 22 04 05 ; 0xf8208 + mov byte [es:bx+024h], cl ; 26 88 4f 24 ; 0xf820e scsi.c:602 + mov word [es:bx+028h], 00800h ; 26 c7 47 28 00 08 ; 0xf8212 scsi.c:603 + mov byte [es:bx+027h], 000h ; 26 c6 47 27 00 ; 0xf8218 scsi.c:604 + mov al, byte [es:di+001f3h] ; 26 8a 85 f3 01 ; 0xf821d scsi.c:607 + mov ah, byte [bp-00ch] ; 8a 66 f4 ; 0xf8222 scsi.c:608 + add ah, 008h ; 80 c4 08 ; 0xf8225 + mov bl, al ; 88 c3 ; 0xf8228 + xor bh, bh ; 30 ff ; 0xf822a + add bx, di ; 01 fb ; 0xf822c + mov byte [es:bx+001f4h], ah ; 26 88 a7 f4 01 ; 0xf822e + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf8233 scsi.c:609 + mov byte [es:di+001f3h], al ; 26 88 85 f3 01 ; 0xf8235 scsi.c:610 + inc byte [bp-00ch] ; fe 46 f4 ; 0xf823a scsi.c:612 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf823d scsi.c:617 + mov es, [bp-010h] ; 8e 46 f0 ; 0xf8240 + mov byte [es:di+0022ch], al ; 26 88 85 2c 02 ; 0xf8243 + inc word [bp-016h] ; ff 46 ea ; 0xf8248 scsi.c:618 + cmp word [bp-016h], strict byte 00010h ; 83 7e ea 10 ; 0xf824b + jl short 08254h ; 7c 03 ; 0xf824f + jmp near 082d7h ; e9 83 00 ; 0xf8251 + mov byte [bp-048h], 012h ; c6 46 b8 12 ; 0xf8254 + xor al, al ; 30 c0 ; 0xf8258 + mov byte [bp-047h], al ; 88 46 b9 ; 0xf825a + mov byte [bp-046h], al ; 88 46 ba ; 0xf825d + mov byte [bp-045h], al ; 88 46 bb ; 0xf8260 + mov byte [bp-044h], 005h ; c6 46 bc 05 ; 0xf8263 + mov byte [bp-043h], al ; 88 46 bd ; 0xf8267 + xor ah, ah ; 30 e4 ; 0xf826a + push ax ; 50 ; 0xf826c + mov ax, strict word 00005h ; b8 05 00 ; 0xf826d + push ax ; 50 ; 0xf8270 + lea dx, [bp-00248h] ; 8d 96 b8 fd ; 0xf8271 + push SS ; 16 ; 0xf8275 + push dx ; 52 ; 0xf8276 + mov ax, strict word 00006h ; b8 06 00 ; 0xf8277 + push ax ; 50 ; 0xf827a + mov dl, byte [bp-016h] ; 8a 56 ea ; 0xf827b + xor dh, dh ; 30 f6 ; 0xf827e + mov cx, ss ; 8c d1 ; 0xf8280 + lea bx, [bp-048h] ; 8d 5e b8 ; 0xf8282 + mov ax, word [bp-0024ah] ; 8b 86 b6 fd ; 0xf8285 + call 07925h ; e8 99 f6 ; 0xf8289 + test al, al ; 84 c0 ; 0xf828c + je short 082a2h ; 74 12 ; 0xf828e + mov ax, 00b92h ; b8 92 0b ; 0xf8290 + push ax ; 50 ; 0xf8293 + mov ax, 00bb2h ; b8 b2 0b ; 0xf8294 + push ax ; 50 ; 0xf8297 + mov ax, strict word 00007h ; b8 07 00 ; 0xf8298 + push ax ; 50 ; 0xf829b + call 0190fh ; e8 70 96 ; 0xf829c + add sp, strict byte 00006h ; 83 c4 06 ; 0xf829f + mov es, [bp-010h] ; 8e 46 f0 ; 0xf82a2 + mov al, byte [es:di+0022ch] ; 26 8a 85 2c 02 ; 0xf82a5 + mov byte [bp-00ch], al ; 88 46 f4 ; 0xf82aa + test byte [bp-00248h], 0e0h ; f6 86 b8 fd e0 ; 0xf82ad + jne short 082beh ; 75 0a ; 0xf82b2 + test byte [bp-00248h], 01fh ; f6 86 b8 fd 1f ; 0xf82b4 + jne short 082beh ; 75 03 ; 0xf82b9 + jmp near 07e3bh ; e9 7d fb ; 0xf82bb + test byte [bp-00248h], 0e0h ; f6 86 b8 fd e0 ; 0xf82be + je short 082c8h ; 74 03 ; 0xf82c3 + jmp near 0823dh ; e9 75 ff ; 0xf82c5 + mov al, byte [bp-00248h] ; 8a 86 b8 fd ; 0xf82c8 + and AL, strict byte 01fh ; 24 1f ; 0xf82cc + cmp AL, strict byte 005h ; 3c 05 ; 0xf82ce + jne short 082d5h ; 75 03 ; 0xf82d0 + jmp near 081a1h ; e9 cc fe ; 0xf82d2 + jmp short 082c5h ; eb ee ; 0xf82d5 + lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf82d7 scsi.c:619 + pop di ; 5f ; 0xf82da + pop si ; 5e ; 0xf82db + pop dx ; 5a ; 0xf82dc + pop cx ; 59 ; 0xf82dd + pop bx ; 5b ; 0xf82de + pop bp ; 5d ; 0xf82df + retn ; c3 ; 0xf82e0 + ; disGetNextSymbol 0xf82e1 LB 0x1c67 -> off=0x0 cb=000000000000002b uValue=00000000000f6ce1 'scsi_pci_init' +scsi_pci_init: ; 0xf82e1 LB 0x2b + push bp ; 55 ; 0xf82e1 scsi.c:621 + mov bp, sp ; 89 e5 ; 0xf82e2 + push bx ; 53 ; 0xf82e4 + push cx ; 51 ; 0xf82e5 + push si ; 56 ; 0xf82e6 + call 09a10h ; e8 26 17 ; 0xf82e7 scsi.c:625 + mov dx, ax ; 89 c2 ; 0xf82ea + cmp ax, strict word 0ffffh ; 3d ff ff ; 0xf82ec scsi.c:626 + je short 08304h ; 74 13 ; 0xf82ef + mov al, dl ; 88 d0 ; 0xf82f1 scsi.c:633 + xor ah, ah ; 30 e4 ; 0xf82f3 + mov si, ax ; 89 c6 ; 0xf82f5 + mov al, dh ; 88 f0 ; 0xf82f7 + mov cx, strict word 00007h ; b9 07 00 ; 0xf82f9 + mov bx, strict word 00004h ; bb 04 00 ; 0xf82fc + mov dx, si ; 89 f2 ; 0xf82ff + call 09abeh ; e8 ba 17 ; 0xf8301 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf8304 scsi.c:634 + pop si ; 5e ; 0xf8307 + pop cx ; 59 ; 0xf8308 + pop bx ; 5b ; 0xf8309 + pop bp ; 5d ; 0xf830a + retn ; c3 ; 0xf830b + ; disGetNextSymbol 0xf830c LB 0x1c3c -> off=0x0 cb=0000000000000081 uValue=00000000000f6d0c 'scsi_init' +scsi_init: ; 0xf830c LB 0x81 + push bp ; 55 ; 0xf830c scsi.c:639 + mov bp, sp ; 89 e5 ; 0xf830d + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf830f scsi.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf8312 + mov es, ax ; 8e c0 ; 0xf8315 + mov es, [es:bx] ; 26 8e 07 ; 0xf8317 + mov bx, 00122h ; bb 22 01 ; 0xf831a scsi.c:49 + mov byte [es:bx+0022ch], 000h ; 26 c6 87 2c 02 00 ; 0xf831d scsi.c:646 + mov AL, strict byte 055h ; b0 55 ; 0xf8323 scsi.c:651 + mov dx, 00432h ; ba 32 04 ; 0xf8325 + out DX, AL ; ee ; 0xf8328 + in AL, DX ; ec ; 0xf8329 scsi.c:652 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf832a + cmp AL, strict byte 055h ; 3c 55 ; 0xf832c scsi.c:654 + jne short 08345h ; 75 15 ; 0xf832e + xor al, al ; 30 c0 ; 0xf8330 scsi.c:658 + mov dx, 00433h ; ba 33 04 ; 0xf8332 + out DX, AL ; ee ; 0xf8335 + mov ax, 00430h ; b8 30 04 ; 0xf8336 scsi.c:659 + call 07e15h ; e8 d9 fa ; 0xf8339 + mov dx, 01040h ; ba 40 10 ; 0xf833c scsi.c:660 + mov ax, 0104bh ; b8 4b 10 ; 0xf833f + call 082e1h ; e8 9c ff ; 0xf8342 + mov AL, strict byte 055h ; b0 55 ; 0xf8345 scsi.c:668 + mov dx, 00436h ; ba 36 04 ; 0xf8347 + out DX, AL ; ee ; 0xf834a + in AL, DX ; ec ; 0xf834b scsi.c:669 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf834c + cmp AL, strict byte 055h ; 3c 55 ; 0xf834e scsi.c:671 + jne short 08367h ; 75 15 ; 0xf8350 + xor al, al ; 30 c0 ; 0xf8352 scsi.c:675 + mov dx, 00437h ; ba 37 04 ; 0xf8354 + out DX, AL ; ee ; 0xf8357 + mov ax, 00434h ; b8 34 04 ; 0xf8358 scsi.c:676 + call 07e15h ; e8 b7 fa ; 0xf835b + mov dx, strict word 00030h ; ba 30 00 ; 0xf835e scsi.c:677 + mov ax, 01000h ; b8 00 10 ; 0xf8361 + call 082e1h ; e8 7a ff ; 0xf8364 + mov AL, strict byte 055h ; b0 55 ; 0xf8367 scsi.c:685 + mov dx, 0043ah ; ba 3a 04 ; 0xf8369 + out DX, AL ; ee ; 0xf836c + in AL, DX ; ec ; 0xf836d scsi.c:686 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf836e + cmp AL, strict byte 055h ; 3c 55 ; 0xf8370 scsi.c:688 + jne short 08389h ; 75 15 ; 0xf8372 + xor al, al ; 30 c0 ; 0xf8374 scsi.c:692 + mov dx, 0043bh ; ba 3b 04 ; 0xf8376 + out DX, AL ; ee ; 0xf8379 + mov ax, 00438h ; b8 38 04 ; 0xf837a scsi.c:693 + call 07e15h ; e8 95 fa ; 0xf837d + mov dx, strict word 00054h ; ba 54 00 ; 0xf8380 scsi.c:694 + mov ax, 01000h ; b8 00 10 ; 0xf8383 + call 082e1h ; e8 58 ff ; 0xf8386 + mov sp, bp ; 89 ec ; 0xf8389 scsi.c:700 + pop bp ; 5d ; 0xf838b + retn ; c3 ; 0xf838c + ; disGetNextSymbol 0xf838d LB 0x1bbb -> off=0x0 cb=000000000000001c uValue=00000000000f6d8d 'ahci_ctrl_extract_bits' +ahci_ctrl_extract_bits: ; 0xf838d LB 0x1c + push si ; 56 ; 0xf838d ahci.c:279 + push bp ; 55 ; 0xf838e + mov bp, sp ; 89 e5 ; 0xf838f + mov si, ax ; 89 c6 ; 0xf8391 + and ax, bx ; 21 d8 ; 0xf8393 ahci.c:281 + and dx, cx ; 21 ca ; 0xf8395 + mov cl, byte [bp+006h] ; 8a 4e 06 ; 0xf8397 + xor ch, ch ; 30 ed ; 0xf839a + jcxz 083a4h ; e3 06 ; 0xf839c + shr dx, 1 ; d1 ea ; 0xf839e + rcr ax, 1 ; d1 d8 ; 0xf83a0 + loop 0839eh ; e2 fa ; 0xf83a2 + pop bp ; 5d ; 0xf83a4 ahci.c:282 + pop si ; 5e ; 0xf83a5 + retn 00002h ; c2 02 00 ; 0xf83a6 + ; disGetNextSymbol 0xf83a9 LB 0x1b9f -> off=0x0 cb=000000000000001e uValue=00000000000f6da9 'ahci_addr_to_phys' +ahci_addr_to_phys: ; 0xf83a9 LB 0x1e + push bx ; 53 ; 0xf83a9 ahci.c:287 + push cx ; 51 ; 0xf83aa + push bp ; 55 ; 0xf83ab + mov bp, sp ; 89 e5 ; 0xf83ac + mov bx, ax ; 89 c3 ; 0xf83ae + mov ax, dx ; 89 d0 ; 0xf83b0 + xor dx, dx ; 31 d2 ; 0xf83b2 ahci.c:289 + mov cx, strict word 00004h ; b9 04 00 ; 0xf83b4 + sal ax, 1 ; d1 e0 ; 0xf83b7 + rcl dx, 1 ; d1 d2 ; 0xf83b9 + loop 083b7h ; e2 fa ; 0xf83bb + xor cx, cx ; 31 c9 ; 0xf83bd + add ax, bx ; 01 d8 ; 0xf83bf + adc dx, cx ; 11 ca ; 0xf83c1 + pop bp ; 5d ; 0xf83c3 ahci.c:290 + pop cx ; 59 ; 0xf83c4 + pop bx ; 5b ; 0xf83c5 + retn ; c3 ; 0xf83c6 + ; disGetNextSymbol 0xf83c7 LB 0x1b81 -> off=0x0 cb=0000000000000159 uValue=00000000000f6dc7 'ahci_port_cmd_sync' +ahci_port_cmd_sync: ; 0xf83c7 LB 0x159 + push bp ; 55 ; 0xf83c7 ahci.c:295 + mov bp, sp ; 89 e5 ; 0xf83c8 + push cx ; 51 ; 0xf83ca + push si ; 56 ; 0xf83cb + push di ; 57 ; 0xf83cc + push ax ; 50 ; 0xf83cd + mov si, ax ; 89 c6 ; 0xf83ce + mov cx, dx ; 89 d1 ; 0xf83d0 + mov dl, bl ; 88 da ; 0xf83d2 + mov es, cx ; 8e c1 ; 0xf83d4 ahci.c:300 + mov al, byte [es:si+00262h] ; 26 8a 84 62 02 ; 0xf83d6 + mov byte [bp-008h], al ; 88 46 f8 ; 0xf83db + mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf83de ahci.c:301 + cmp AL, strict byte 0ffh ; 3c ff ; 0xf83e3 ahci.c:303 + jne short 083eah ; 75 03 ; 0xf83e5 + jmp near 08518h ; e9 2e 01 ; 0xf83e7 + mov al, byte [es:si+00263h] ; 26 8a 84 63 02 ; 0xf83ea ahci.c:306 + xor ah, ah ; 30 e4 ; 0xf83ef + xor di, di ; 31 ff ; 0xf83f1 + or di, 00080h ; 81 cf 80 00 ; 0xf83f3 + xor dh, dh ; 30 f6 ; 0xf83f7 + or di, dx ; 09 d7 ; 0xf83f9 + mov word [es:si], di ; 26 89 3c ; 0xf83fb + mov word [es:si+002h], ax ; 26 89 44 02 ; 0xf83fe + mov word [es:si+004h], strict word 00000h ; 26 c7 44 04 00 00 ; 0xf8402 ahci.c:307 + mov word [es:si+006h], strict word 00000h ; 26 c7 44 06 00 00 ; 0xf8408 + lea ax, [si+00080h] ; 8d 84 80 00 ; 0xf840e ahci.c:308 + mov dx, cx ; 89 ca ; 0xf8412 + call 083a9h ; e8 92 ff ; 0xf8414 + mov es, cx ; 8e c1 ; 0xf8417 + mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf8419 + mov word [es:si+00ah], dx ; 26 89 54 0a ; 0xf841d + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf8421 ahci.c:311 + xor ah, ah ; 30 e4 ; 0xf8424 + mov CL, strict byte 007h ; b1 07 ; 0xf8426 + mov di, ax ; 89 c7 ; 0xf8428 + sal di, CL ; d3 e7 ; 0xf842a + lea ax, [di+00118h] ; 8d 85 18 01 ; 0xf842c + xor cx, cx ; 31 c9 ; 0xf8430 ahci.c:252 + mov dx, bx ; 89 da ; 0xf8432 + xchg cx, ax ; 91 ; 0xf8434 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8435 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8439 + out DX, eax ; 66 ef ; 0xf843b + lea si, [bx+004h] ; 8d 77 04 ; 0xf843d ahci.c:253 + mov dx, si ; 89 f2 ; 0xf8440 + in eax, DX ; 66 ed ; 0xf8442 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf8444 + shr eax, 010h ; 66 c1 e8 10 ; 0xf8446 + xchg dx, ax ; 92 ; 0xf844a + or AL, strict byte 011h ; 0c 11 ; 0xf844b + mov cx, dx ; 89 d1 ; 0xf844d + mov dx, si ; 89 f2 ; 0xf844f + xchg cx, ax ; 91 ; 0xf8451 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8452 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8456 + out DX, eax ; 66 ef ; 0xf8458 + lea ax, [di+00138h] ; 8d 85 38 01 ; 0xf845a ahci.c:315 + cwd ; 99 ; 0xf845e + mov cx, dx ; 89 d1 ; 0xf845f + mov dx, bx ; 89 da ; 0xf8461 + xchg cx, ax ; 91 ; 0xf8463 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8464 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8468 + out DX, eax ; 66 ef ; 0xf846a + mov ax, strict word 00001h ; b8 01 00 ; 0xf846c + xor cx, cx ; 31 c9 ; 0xf846f + mov dx, si ; 89 f2 ; 0xf8471 + xchg cx, ax ; 91 ; 0xf8473 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8474 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8478 + out DX, eax ; 66 ef ; 0xf847a + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf847c ahci.c:319 + xor ah, ah ; 30 e4 ; 0xf847f + mov CL, strict byte 007h ; b1 07 ; 0xf8481 + sal ax, CL ; d3 e0 ; 0xf8483 + add ax, 00110h ; 05 10 01 ; 0xf8485 + xor cx, cx ; 31 c9 ; 0xf8488 ahci.c:271 + mov dx, bx ; 89 da ; 0xf848a + xchg cx, ax ; 91 ; 0xf848c + sal eax, 010h ; 66 c1 e0 10 ; 0xf848d + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8491 + out DX, eax ; 66 ef ; 0xf8493 + lea dx, [bx+004h] ; 8d 57 04 ; 0xf8495 ahci.c:272 + in eax, DX ; 66 ed ; 0xf8498 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf849a + shr eax, 010h ; 66 c1 e8 10 ; 0xf849c + xchg dx, ax ; 92 ; 0xf84a0 + test dh, 040h ; f6 c6 40 ; 0xf84a1 + jne short 084aah ; 75 04 ; 0xf84a4 + test AL, strict byte 001h ; a8 01 ; 0xf84a6 + je short 084aeh ; 74 04 ; 0xf84a8 + mov AL, strict byte 001h ; b0 01 ; 0xf84aa + jmp short 084b0h ; eb 02 ; 0xf84ac + xor al, al ; 30 c0 ; 0xf84ae + test al, al ; 84 c0 ; 0xf84b0 ahci.c:273 + je short 0847ch ; 74 c8 ; 0xf84b2 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf84b4 ahci.c:325 + xor ah, ah ; 30 e4 ; 0xf84b7 + mov CL, strict byte 007h ; b1 07 ; 0xf84b9 + mov di, ax ; 89 c7 ; 0xf84bb + sal di, CL ; d3 e7 ; 0xf84bd + lea ax, [di+00110h] ; 8d 85 10 01 ; 0xf84bf + xor cx, cx ; 31 c9 ; 0xf84c3 ahci.c:252 + mov dx, bx ; 89 da ; 0xf84c5 + xchg cx, ax ; 91 ; 0xf84c7 + sal eax, 010h ; 66 c1 e0 10 ; 0xf84c8 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf84cc + out DX, eax ; 66 ef ; 0xf84ce + lea si, [bx+004h] ; 8d 77 04 ; 0xf84d0 ahci.c:253 + mov dx, si ; 89 f2 ; 0xf84d3 + in eax, DX ; 66 ed ; 0xf84d5 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf84d7 + shr eax, 010h ; 66 c1 e8 10 ; 0xf84d9 + xchg dx, ax ; 92 ; 0xf84dd + or AL, strict byte 001h ; 0c 01 ; 0xf84de + mov cx, dx ; 89 d1 ; 0xf84e0 + mov dx, si ; 89 f2 ; 0xf84e2 + xchg cx, ax ; 91 ; 0xf84e4 + sal eax, 010h ; 66 c1 e0 10 ; 0xf84e5 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf84e9 + out DX, eax ; 66 ef ; 0xf84eb + lea ax, [di+00118h] ; 8d 85 18 01 ; 0xf84ed ahci.c:329 + xor cx, cx ; 31 c9 ; 0xf84f1 ahci.c:261 + mov dx, bx ; 89 da ; 0xf84f3 + xchg cx, ax ; 91 ; 0xf84f5 + sal eax, 010h ; 66 c1 e0 10 ; 0xf84f6 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf84fa + out DX, eax ; 66 ef ; 0xf84fc + mov dx, si ; 89 f2 ; 0xf84fe ahci.c:262 + in eax, DX ; 66 ed ; 0xf8500 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf8502 + shr eax, 010h ; 66 c1 e8 10 ; 0xf8504 + xchg dx, ax ; 92 ; 0xf8508 + and AL, strict byte 0feh ; 24 fe ; 0xf8509 + mov cx, dx ; 89 d1 ; 0xf850b + mov dx, si ; 89 f2 ; 0xf850d + xchg cx, ax ; 91 ; 0xf850f + sal eax, 010h ; 66 c1 e0 10 ; 0xf8510 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8514 + out DX, eax ; 66 ef ; 0xf8516 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf8518 ahci.c:335 + pop di ; 5f ; 0xf851b + pop si ; 5e ; 0xf851c + pop cx ; 59 ; 0xf851d + pop bp ; 5d ; 0xf851e + retn ; c3 ; 0xf851f + ; disGetNextSymbol 0xf8520 LB 0x1a28 -> off=0x0 cb=0000000000000262 uValue=00000000000f6f20 'ahci_cmd_data' +ahci_cmd_data: ; 0xf8520 LB 0x262 + push bp ; 55 ; 0xf8520 ahci.c:340 + mov bp, sp ; 89 e5 ; 0xf8521 + push cx ; 51 ; 0xf8523 + push si ; 56 ; 0xf8524 + push di ; 57 ; 0xf8525 + sub sp, strict byte 0000ch ; 83 ec 0c ; 0xf8526 + push ax ; 50 ; 0xf8529 + push dx ; 52 ; 0xf852a + mov byte [bp-008h], bl ; 88 5e f8 ; 0xf852b + xor di, di ; 31 ff ; 0xf852e ahci.c:342 + mov es, dx ; 8e c2 ; 0xf8530 + mov bx, ax ; 89 c3 ; 0xf8532 + mov ax, word [es:bx+00232h] ; 26 8b 87 32 02 ; 0xf8534 + mov word [bp-00ah], ax ; 89 46 f6 ; 0xf8539 + mov word [bp-00eh], di ; 89 7e f2 ; 0xf853c + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf853f + mov ax, word [es:bx+00eh] ; 26 8b 47 0e ; 0xf8542 ahci.c:343 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf8546 + mov ax, word [es:bx+010h] ; 26 8b 47 10 ; 0xf8549 ahci.c:344 + mov word [bp-012h], ax ; 89 46 ee ; 0xf854d + mov cx, strict word 00040h ; b9 40 00 ; 0xf8550 ahci.c:347 + xor bx, bx ; 31 db ; 0xf8553 + mov ax, 00080h ; b8 80 00 ; 0xf8555 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf8558 + call 09c30h ; e8 d2 16 ; 0xf855b + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf855e ahci.c:350 + mov word [es:di+00080h], 08027h ; 26 c7 85 80 00 27 80 ; 0xf8561 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf8568 ahci.c:352 + mov byte [es:di+00082h], al ; 26 88 85 82 00 ; 0xf856b + mov byte [es:di+00083h], 000h ; 26 c6 85 83 00 00 ; 0xf8570 ahci.c:353 + mov es, [bp-016h] ; 8e 46 ea ; 0xf8576 ahci.c:355 + mov bx, word [bp-014h] ; 8b 5e ec ; 0xf8579 + mov ax, word [es:bx] ; 26 8b 07 ; 0xf857c + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf857f + mov byte [es:di+00084h], al ; 26 88 85 84 00 ; 0xf8582 + mov es, [bp-016h] ; 8e 46 ea ; 0xf8587 ahci.c:356 + mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf858a + mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf858e + mov si, word [bp-014h] ; 8b 76 ec ; 0xf8592 + mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf8595 + mov dx, word [es:si] ; 26 8b 14 ; 0xf8599 + mov si, strict word 00008h ; be 08 00 ; 0xf859c + call 09c10h ; e8 6e 16 ; 0xf859f + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf85a2 + mov byte [es:di+00085h], dl ; 26 88 95 85 00 ; 0xf85a5 + mov es, [bp-016h] ; 8e 46 ea ; 0xf85aa ahci.c:357 + mov bx, word [bp-014h] ; 8b 5e ec ; 0xf85ad + mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf85b0 + mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf85b4 + mov si, word [bp-014h] ; 8b 76 ec ; 0xf85b8 + mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf85bb + mov dx, word [es:si] ; 26 8b 14 ; 0xf85bf + mov si, strict word 00010h ; be 10 00 ; 0xf85c2 + call 09c10h ; e8 48 16 ; 0xf85c5 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf85c8 + mov byte [es:di+00086h], dl ; 26 88 95 86 00 ; 0xf85cb + mov byte [es:di+00087h], 040h ; 26 c6 85 87 00 40 ; 0xf85d0 ahci.c:358 + mov es, [bp-016h] ; 8e 46 ea ; 0xf85d6 ahci.c:360 + mov bx, word [bp-014h] ; 8b 5e ec ; 0xf85d9 + mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf85dc + mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf85e0 + mov si, word [bp-014h] ; 8b 76 ec ; 0xf85e4 + mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf85e7 + mov dx, word [es:si] ; 26 8b 14 ; 0xf85eb + mov si, strict word 00018h ; be 18 00 ; 0xf85ee + call 09c10h ; e8 1c 16 ; 0xf85f1 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf85f4 + mov byte [es:di+00088h], dl ; 26 88 95 88 00 ; 0xf85f7 + mov es, [bp-016h] ; 8e 46 ea ; 0xf85fc ahci.c:361 + mov bx, word [bp-014h] ; 8b 5e ec ; 0xf85ff + mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf8602 + mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf8606 + mov si, word [bp-014h] ; 8b 76 ec ; 0xf860a + mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf860d + mov dx, word [es:si] ; 26 8b 14 ; 0xf8611 + mov si, strict word 00020h ; be 20 00 ; 0xf8614 + call 09c10h ; e8 f6 15 ; 0xf8617 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf861a + mov byte [es:di+00089h], dl ; 26 88 95 89 00 ; 0xf861d + mov es, [bp-016h] ; 8e 46 ea ; 0xf8622 ahci.c:362 + mov bx, word [bp-014h] ; 8b 5e ec ; 0xf8625 + mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf8628 + mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf862c + mov si, word [bp-014h] ; 8b 76 ec ; 0xf8630 + mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf8633 + mov dx, word [es:si] ; 26 8b 14 ; 0xf8637 + mov si, strict word 00028h ; be 28 00 ; 0xf863a + call 09c10h ; e8 d0 15 ; 0xf863d + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8640 + mov byte [es:di+0008ah], dl ; 26 88 95 8a 00 ; 0xf8643 + mov byte [es:di+0008bh], 000h ; 26 c6 85 8b 00 00 ; 0xf8648 ahci.c:363 + mov al, byte [bp-010h] ; 8a 46 f0 ; 0xf864e ahci.c:365 + mov byte [es:di+0008ch], al ; 26 88 85 8c 00 ; 0xf8651 + mov al, byte [bp-00fh] ; 8a 46 f1 ; 0xf8656 ahci.c:366 + mov byte [es:di+0008dh], al ; 26 88 85 8d 00 ; 0xf8659 + mov word [es:di+00276h], strict word 00010h ; 26 c7 85 76 02 10 00 ; 0xf865e ahci.c:369 + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf8665 ahci.c:372 + xor dx, dx ; 31 d2 ; 0xf8668 + mov bx, word [bp-012h] ; 8b 5e ee ; 0xf866a + xor cx, cx ; 31 c9 ; 0xf866d + call 09bc0h ; e8 4e 15 ; 0xf866f + push dx ; 52 ; 0xf8672 + push ax ; 50 ; 0xf8673 + mov es, [bp-016h] ; 8e 46 ea ; 0xf8674 + mov bx, word [bp-014h] ; 8b 5e ec ; 0xf8677 + mov bx, word [es:bx+008h] ; 26 8b 5f 08 ; 0xf867a + mov si, word [bp-014h] ; 8b 76 ec ; 0xf867e + mov cx, word [es:si+00ah] ; 26 8b 4c 0a ; 0xf8681 + mov ax, 0026ah ; b8 6a 02 ; 0xf8685 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf8688 + call 09b17h ; e8 89 14 ; 0xf868b + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf868e ahci.c:375 + mov dx, word [es:di+0027eh] ; 26 8b 95 7e 02 ; 0xf8691 + add dx, strict byte 0ffffh ; 83 c2 ff ; 0xf8696 + mov ax, word [es:di+00280h] ; 26 8b 85 80 02 ; 0xf8699 + adc ax, strict word 0ffffh ; 15 ff ff ; 0xf869e + mov bl, byte [es:di+00263h] ; 26 8a 9d 63 02 ; 0xf86a1 + xor bh, bh ; 30 ff ; 0xf86a6 + mov CL, strict byte 004h ; b1 04 ; 0xf86a8 + sal bx, CL ; d3 e3 ; 0xf86aa + mov word [es:bx+0010ch], dx ; 26 89 97 0c 01 ; 0xf86ac + mov word [es:bx+0010eh], ax ; 26 89 87 0e 01 ; 0xf86b1 + mov bl, byte [es:di+00263h] ; 26 8a 9d 63 02 ; 0xf86b6 ahci.c:376 + xor bh, bh ; 30 ff ; 0xf86bb + sal bx, CL ; d3 e3 ; 0xf86bd + mov ax, word [es:di+0027ah] ; 26 8b 85 7a 02 ; 0xf86bf + mov dx, word [es:di+0027ch] ; 26 8b 95 7c 02 ; 0xf86c4 + mov word [es:bx+00100h], ax ; 26 89 87 00 01 ; 0xf86c9 + mov word [es:bx+00102h], dx ; 26 89 97 02 01 ; 0xf86ce + inc byte [es:di+00263h] ; 26 fe 85 63 02 ; 0xf86d3 ahci.c:377 + mov es, [bp-016h] ; 8e 46 ea ; 0xf86d8 ahci.c:379 + mov bx, si ; 89 f3 ; 0xf86db + mov ax, word [es:bx+020h] ; 26 8b 47 20 ; 0xf86dd + test ax, ax ; 85 c0 ; 0xf86e1 + je short 0871eh ; 74 39 ; 0xf86e3 + dec ax ; 48 ; 0xf86e5 ahci.c:380 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf86e6 + mov bl, byte [es:di+00263h] ; 26 8a 9d 63 02 ; 0xf86e9 + xor bh, bh ; 30 ff ; 0xf86ee + sal bx, CL ; d3 e3 ; 0xf86f0 + mov word [es:bx+0010ch], ax ; 26 89 87 0c 01 ; 0xf86f2 + mov word [es:bx+0010eh], di ; 26 89 bf 0e 01 ; 0xf86f7 + mov bl, byte [es:di+00263h] ; 26 8a 9d 63 02 ; 0xf86fc ahci.c:381 + xor bh, bh ; 30 ff ; 0xf8701 + sal bx, CL ; d3 e3 ; 0xf8703 + mov ax, word [es:di+00264h] ; 26 8b 85 64 02 ; 0xf8705 + mov dx, word [es:di+00266h] ; 26 8b 95 66 02 ; 0xf870a + mov word [es:bx+00100h], ax ; 26 89 87 00 01 ; 0xf870f + mov word [es:bx+00102h], dx ; 26 89 97 02 01 ; 0xf8714 + inc byte [es:di+00263h] ; 26 fe 85 63 02 ; 0xf8719 ahci.c:382 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf871e ahci.c:397 + cmp AL, strict byte 035h ; 3c 35 ; 0xf8721 + jne short 0872bh ; 75 06 ; 0xf8723 + mov byte [bp-008h], 040h ; c6 46 f8 40 ; 0xf8725 ahci.c:398 + jmp short 08742h ; eb 17 ; 0xf8729 ahci.c:399 + cmp AL, strict byte 0a0h ; 3c a0 ; 0xf872b + jne short 0873eh ; 75 0f ; 0xf872d + or byte [bp-008h], 020h ; 80 4e f8 20 ; 0xf872f ahci.c:400 + les bx, [bp-00eh] ; c4 5e f2 ; 0xf8733 ahci.c:401 + or byte [es:bx+00083h], 001h ; 26 80 8f 83 00 01 ; 0xf8736 + jmp short 08742h ; eb 04 ; 0xf873c ahci.c:402 + mov byte [bp-008h], 000h ; c6 46 f8 00 ; 0xf873e ahci.c:403 + or byte [bp-008h], 005h ; 80 4e f8 05 ; 0xf8742 ahci.c:405 + mov bl, byte [bp-008h] ; 8a 5e f8 ; 0xf8746 ahci.c:407 + xor bh, bh ; 30 ff ; 0xf8749 + mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf874b + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf874e + call 083c7h ; e8 73 fc ; 0xf8751 + mov cx, word [bp-00ch] ; 8b 4e f4 ; 0xf8754 ahci.c:410 + mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf8757 + add bx, 00240h ; 81 c3 40 02 ; 0xf875a + mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf875e ahci.c:414 + add ax, 0026ah ; 05 6a 02 ; 0xf8761 + mov dx, cx ; 89 ca ; 0xf8764 + call 09b8eh ; e8 25 14 ; 0xf8766 + mov es, cx ; 8e c1 ; 0xf8769 ahci.c:415 + mov al, byte [es:bx+003h] ; 26 8a 47 03 ; 0xf876b + test al, al ; 84 c0 ; 0xf876f + je short 08778h ; 74 05 ; 0xf8771 + mov ax, strict word 00004h ; b8 04 00 ; 0xf8773 + jmp short 0877ah ; eb 02 ; 0xf8776 + xor ah, ah ; 30 e4 ; 0xf8778 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf877a ahci.c:416 + pop di ; 5f ; 0xf877d + pop si ; 5e ; 0xf877e + pop cx ; 59 ; 0xf877f + pop bp ; 5d ; 0xf8780 + retn ; c3 ; 0xf8781 + ; disGetNextSymbol 0xf8782 LB 0x17c6 -> off=0x0 cb=0000000000000183 uValue=00000000000f7182 'ahci_port_deinit_current' +ahci_port_deinit_current: ; 0xf8782 LB 0x183 + push bp ; 55 ; 0xf8782 ahci.c:421 + mov bp, sp ; 89 e5 ; 0xf8783 + push bx ; 53 ; 0xf8785 + push cx ; 51 ; 0xf8786 + push si ; 56 ; 0xf8787 + push di ; 57 ; 0xf8788 + sub sp, strict byte 00006h ; 83 ec 06 ; 0xf8789 + mov di, ax ; 89 c7 ; 0xf878c + mov word [bp-00eh], dx ; 89 56 f2 ; 0xf878e + mov es, dx ; 8e c2 ; 0xf8791 ahci.c:426 + mov si, word [es:di+00260h] ; 26 8b b5 60 02 ; 0xf8793 + mov al, byte [es:di+00262h] ; 26 8a 85 62 02 ; 0xf8798 ahci.c:427 + mov byte [bp-00ah], al ; 88 46 f6 ; 0xf879d + cmp AL, strict byte 0ffh ; 3c ff ; 0xf87a0 ahci.c:429 + je short 08805h ; 74 61 ; 0xf87a2 + xor ah, ah ; 30 e4 ; 0xf87a4 ahci.c:432 + mov CL, strict byte 007h ; b1 07 ; 0xf87a6 + sal ax, CL ; d3 e0 ; 0xf87a8 + add ax, 00118h ; 05 18 01 ; 0xf87aa + xor cx, cx ; 31 c9 ; 0xf87ad ahci.c:261 + mov dx, si ; 89 f2 ; 0xf87af + xchg cx, ax ; 91 ; 0xf87b1 + sal eax, 010h ; 66 c1 e0 10 ; 0xf87b2 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf87b6 + out DX, eax ; 66 ef ; 0xf87b8 + lea bx, [si+004h] ; 8d 5c 04 ; 0xf87ba ahci.c:262 + mov dx, bx ; 89 da ; 0xf87bd + in eax, DX ; 66 ed ; 0xf87bf + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf87c1 + shr eax, 010h ; 66 c1 e8 10 ; 0xf87c3 + xchg dx, ax ; 92 ; 0xf87c7 + and AL, strict byte 0eeh ; 24 ee ; 0xf87c8 + mov cx, dx ; 89 d1 ; 0xf87ca + mov dx, bx ; 89 da ; 0xf87cc + xchg cx, ax ; 91 ; 0xf87ce + sal eax, 010h ; 66 c1 e0 10 ; 0xf87cf + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf87d3 + out DX, eax ; 66 ef ; 0xf87d5 + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf87d7 ahci.c:435 + xor ah, ah ; 30 e4 ; 0xf87da + mov CL, strict byte 007h ; b1 07 ; 0xf87dc + sal ax, CL ; d3 e0 ; 0xf87de + add ax, 00118h ; 05 18 01 ; 0xf87e0 + xor cx, cx ; 31 c9 ; 0xf87e3 ahci.c:271 + mov dx, si ; 89 f2 ; 0xf87e5 + xchg cx, ax ; 91 ; 0xf87e7 + sal eax, 010h ; 66 c1 e0 10 ; 0xf87e8 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf87ec + out DX, eax ; 66 ef ; 0xf87ee + lea dx, [si+004h] ; 8d 54 04 ; 0xf87f0 ahci.c:272 + in eax, DX ; 66 ed ; 0xf87f3 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf87f5 + shr eax, 010h ; 66 c1 e8 10 ; 0xf87f7 + xchg dx, ax ; 92 ; 0xf87fb + test ax, 0c011h ; a9 11 c0 ; 0xf87fc + je short 08808h ; 74 07 ; 0xf87ff + mov AL, strict byte 001h ; b0 01 ; 0xf8801 + jmp short 0880ah ; eb 05 ; 0xf8803 + jmp near 088fch ; e9 f4 00 ; 0xf8805 + xor al, al ; 30 c0 ; 0xf8808 + cmp AL, strict byte 001h ; 3c 01 ; 0xf880a ahci.c:273 + je short 087d7h ; 74 c9 ; 0xf880c + mov cx, strict word 00020h ; b9 20 00 ; 0xf880e ahci.c:446 + xor bx, bx ; 31 db ; 0xf8811 + mov ax, di ; 89 f8 ; 0xf8813 + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf8815 + call 09c30h ; e8 15 14 ; 0xf8818 + lea ax, [di+00080h] ; 8d 85 80 00 ; 0xf881b ahci.c:447 + mov cx, strict word 00040h ; b9 40 00 ; 0xf881f + xor bx, bx ; 31 db ; 0xf8822 + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf8824 + call 09c30h ; e8 06 14 ; 0xf8827 + lea ax, [di+00200h] ; 8d 85 00 02 ; 0xf882a ahci.c:448 + mov cx, strict word 00060h ; b9 60 00 ; 0xf882e + xor bx, bx ; 31 db ; 0xf8831 + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf8833 + call 09c30h ; e8 f7 13 ; 0xf8836 + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf8839 ahci.c:450 + xor ah, ah ; 30 e4 ; 0xf883c + mov CL, strict byte 007h ; b1 07 ; 0xf883e + sal ax, CL ; d3 e0 ; 0xf8840 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf8842 + add ax, 00108h ; 05 08 01 ; 0xf8845 + cwd ; 99 ; 0xf8848 + mov cx, dx ; 89 d1 ; 0xf8849 + mov dx, si ; 89 f2 ; 0xf884b + xchg cx, ax ; 91 ; 0xf884d + sal eax, 010h ; 66 c1 e0 10 ; 0xf884e + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8852 + out DX, eax ; 66 ef ; 0xf8854 + lea bx, [si+004h] ; 8d 5c 04 ; 0xf8856 + xor ax, ax ; 31 c0 ; 0xf8859 + xor cx, cx ; 31 c9 ; 0xf885b + mov dx, bx ; 89 da ; 0xf885d + xchg cx, ax ; 91 ; 0xf885f + sal eax, 010h ; 66 c1 e0 10 ; 0xf8860 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8864 + out DX, eax ; 66 ef ; 0xf8866 + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf8868 ahci.c:451 + add ax, 0010ch ; 05 0c 01 ; 0xf886b + cwd ; 99 ; 0xf886e + mov cx, dx ; 89 d1 ; 0xf886f + mov dx, si ; 89 f2 ; 0xf8871 + xchg cx, ax ; 91 ; 0xf8873 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8874 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8878 + out DX, eax ; 66 ef ; 0xf887a + xor ax, ax ; 31 c0 ; 0xf887c + xor cx, cx ; 31 c9 ; 0xf887e + mov dx, bx ; 89 da ; 0xf8880 + xchg cx, ax ; 91 ; 0xf8882 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8883 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8887 + out DX, eax ; 66 ef ; 0xf8889 + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf888b ahci.c:453 + db 0feh, 0c4h + ; inc ah ; fe c4 ; 0xf888e + cwd ; 99 ; 0xf8890 + mov cx, dx ; 89 d1 ; 0xf8891 + mov dx, si ; 89 f2 ; 0xf8893 + xchg cx, ax ; 91 ; 0xf8895 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8896 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf889a + out DX, eax ; 66 ef ; 0xf889c + xor ax, ax ; 31 c0 ; 0xf889e + xor cx, cx ; 31 c9 ; 0xf88a0 + mov dx, bx ; 89 da ; 0xf88a2 + xchg cx, ax ; 91 ; 0xf88a4 + sal eax, 010h ; 66 c1 e0 10 ; 0xf88a5 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf88a9 + out DX, eax ; 66 ef ; 0xf88ab + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf88ad ahci.c:454 + add ax, 00104h ; 05 04 01 ; 0xf88b0 + cwd ; 99 ; 0xf88b3 + mov cx, dx ; 89 d1 ; 0xf88b4 + mov dx, si ; 89 f2 ; 0xf88b6 + xchg cx, ax ; 91 ; 0xf88b8 + sal eax, 010h ; 66 c1 e0 10 ; 0xf88b9 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf88bd + out DX, eax ; 66 ef ; 0xf88bf + xor ax, ax ; 31 c0 ; 0xf88c1 + xor cx, cx ; 31 c9 ; 0xf88c3 + mov dx, bx ; 89 da ; 0xf88c5 + xchg cx, ax ; 91 ; 0xf88c7 + sal eax, 010h ; 66 c1 e0 10 ; 0xf88c8 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf88cc + out DX, eax ; 66 ef ; 0xf88ce + mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf88d0 ahci.c:457 + add ax, 00114h ; 05 14 01 ; 0xf88d3 + cwd ; 99 ; 0xf88d6 + mov cx, dx ; 89 d1 ; 0xf88d7 + mov dx, si ; 89 f2 ; 0xf88d9 + xchg cx, ax ; 91 ; 0xf88db + sal eax, 010h ; 66 c1 e0 10 ; 0xf88dc + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf88e0 + out DX, eax ; 66 ef ; 0xf88e2 + xor ax, ax ; 31 c0 ; 0xf88e4 + xor cx, cx ; 31 c9 ; 0xf88e6 + mov dx, bx ; 89 da ; 0xf88e8 + xchg cx, ax ; 91 ; 0xf88ea + sal eax, 010h ; 66 c1 e0 10 ; 0xf88eb + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf88ef + out DX, eax ; 66 ef ; 0xf88f1 + mov es, [bp-00eh] ; 8e 46 f2 ; 0xf88f3 ahci.c:459 + mov byte [es:di+00262h], 0ffh ; 26 c6 85 62 02 ff ; 0xf88f6 + lea sp, [bp-008h] ; 8d 66 f8 ; 0xf88fc ahci.c:461 + pop di ; 5f ; 0xf88ff + pop si ; 5e ; 0xf8900 + pop cx ; 59 ; 0xf8901 + pop bx ; 5b ; 0xf8902 + pop bp ; 5d ; 0xf8903 + retn ; c3 ; 0xf8904 + ; disGetNextSymbol 0xf8905 LB 0x1643 -> off=0x0 cb=0000000000000250 uValue=00000000000f7305 'ahci_port_init' +ahci_port_init: ; 0xf8905 LB 0x250 + push bp ; 55 ; 0xf8905 ahci.c:467 + mov bp, sp ; 89 e5 ; 0xf8906 + push cx ; 51 ; 0xf8908 + push si ; 56 ; 0xf8909 + push di ; 57 ; 0xf890a + sub sp, strict byte 00006h ; 83 ec 06 ; 0xf890b + mov si, ax ; 89 c6 ; 0xf890e + mov word [bp-00ah], dx ; 89 56 f6 ; 0xf8910 + mov byte [bp-008h], bl ; 88 5e f8 ; 0xf8913 + call 08782h ; e8 69 fe ; 0xf8916 ahci.c:470 + mov al, bl ; 88 d8 ; 0xf8919 ahci.c:473 + xor ah, ah ; 30 e4 ; 0xf891b + mov CL, strict byte 007h ; b1 07 ; 0xf891d + sal ax, CL ; d3 e0 ; 0xf891f + add ax, 00118h ; 05 18 01 ; 0xf8921 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8924 ahci.c:259 + mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8927 + xor cx, cx ; 31 c9 ; 0xf892c ahci.c:261 + mov dx, bx ; 89 da ; 0xf892e + xchg cx, ax ; 91 ; 0xf8930 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8931 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8935 + out DX, eax ; 66 ef ; 0xf8937 + add bx, strict byte 00004h ; 83 c3 04 ; 0xf8939 ahci.c:262 + mov dx, bx ; 89 da ; 0xf893c + in eax, DX ; 66 ed ; 0xf893e + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf8940 + shr eax, 010h ; 66 c1 e8 10 ; 0xf8942 + xchg dx, ax ; 92 ; 0xf8946 + and AL, strict byte 0eeh ; 24 ee ; 0xf8947 + mov cx, dx ; 89 d1 ; 0xf8949 + mov dx, bx ; 89 da ; 0xf894b + xchg cx, ax ; 91 ; 0xf894d + sal eax, 010h ; 66 c1 e0 10 ; 0xf894e + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8952 + out DX, eax ; 66 ef ; 0xf8954 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf8956 ahci.c:476 + xor ah, ah ; 30 e4 ; 0xf8959 + mov CL, strict byte 007h ; b1 07 ; 0xf895b + sal ax, CL ; d3 e0 ; 0xf895d + add ax, 00118h ; 05 18 01 ; 0xf895f + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8962 ahci.c:269 + mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8965 + xor cx, cx ; 31 c9 ; 0xf896a ahci.c:271 + mov dx, bx ; 89 da ; 0xf896c + xchg cx, ax ; 91 ; 0xf896e + sal eax, 010h ; 66 c1 e0 10 ; 0xf896f + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8973 + out DX, eax ; 66 ef ; 0xf8975 + lea dx, [bx+004h] ; 8d 57 04 ; 0xf8977 ahci.c:272 + in eax, DX ; 66 ed ; 0xf897a + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf897c + shr eax, 010h ; 66 c1 e8 10 ; 0xf897e + xchg dx, ax ; 92 ; 0xf8982 + test ax, 0c011h ; a9 11 c0 ; 0xf8983 + je short 0898ch ; 74 04 ; 0xf8986 + mov AL, strict byte 001h ; b0 01 ; 0xf8988 + jmp short 0898eh ; eb 02 ; 0xf898a + xor al, al ; 30 c0 ; 0xf898c + cmp AL, strict byte 001h ; 3c 01 ; 0xf898e ahci.c:273 + je short 08956h ; 74 c4 ; 0xf8990 + mov cx, strict word 00020h ; b9 20 00 ; 0xf8992 ahci.c:487 + xor bx, bx ; 31 db ; 0xf8995 + mov ax, si ; 89 f0 ; 0xf8997 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf8999 + call 09c30h ; e8 91 12 ; 0xf899c + lea ax, [si+00080h] ; 8d 84 80 00 ; 0xf899f ahci.c:488 + mov cx, strict word 00040h ; b9 40 00 ; 0xf89a3 + xor bx, bx ; 31 db ; 0xf89a6 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf89a8 + call 09c30h ; e8 82 12 ; 0xf89ab + lea di, [si+00200h] ; 8d bc 00 02 ; 0xf89ae ahci.c:489 + mov cx, strict word 00060h ; b9 60 00 ; 0xf89b2 + xor bx, bx ; 31 db ; 0xf89b5 + mov ax, di ; 89 f8 ; 0xf89b7 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf89b9 + call 09c30h ; e8 71 12 ; 0xf89bc + mov bl, byte [bp-008h] ; 8a 5e f8 ; 0xf89bf ahci.c:493 + xor bh, bh ; 30 ff ; 0xf89c2 + mov CL, strict byte 007h ; b1 07 ; 0xf89c4 + sal bx, CL ; d3 e3 ; 0xf89c6 + lea ax, [bx+00108h] ; 8d 87 08 01 ; 0xf89c8 + cwd ; 99 ; 0xf89cc + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf89cd + mov cx, word [es:si+00260h] ; 26 8b 8c 60 02 ; 0xf89d0 + mov word [bp-00ch], cx ; 89 4e f4 ; 0xf89d5 + mov cx, dx ; 89 d1 ; 0xf89d8 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf89da + xchg cx, ax ; 91 ; 0xf89dd + sal eax, 010h ; 66 c1 e0 10 ; 0xf89de + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf89e2 + out DX, eax ; 66 ef ; 0xf89e4 + mov ax, di ; 89 f8 ; 0xf89e6 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf89e8 + call 083a9h ; e8 bb f9 ; 0xf89eb + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf89ee + mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf89f1 + add di, strict byte 00004h ; 83 c7 04 ; 0xf89f6 + mov cx, dx ; 89 d1 ; 0xf89f9 + mov dx, di ; 89 fa ; 0xf89fb + xchg cx, ax ; 91 ; 0xf89fd + sal eax, 010h ; 66 c1 e0 10 ; 0xf89fe + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8a02 + out DX, eax ; 66 ef ; 0xf8a04 + lea ax, [bx+0010ch] ; 8d 87 0c 01 ; 0xf8a06 ahci.c:494 + cwd ; 99 ; 0xf8a0a + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8a0b + mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf8a0e + mov cx, dx ; 89 d1 ; 0xf8a13 + mov dx, di ; 89 fa ; 0xf8a15 + xchg cx, ax ; 91 ; 0xf8a17 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8a18 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8a1c + out DX, eax ; 66 ef ; 0xf8a1e + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8a20 + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8a23 + add dx, strict byte 00004h ; 83 c2 04 ; 0xf8a28 + xor ax, ax ; 31 c0 ; 0xf8a2b + xor cx, cx ; 31 c9 ; 0xf8a2d + xchg cx, ax ; 91 ; 0xf8a2f + sal eax, 010h ; 66 c1 e0 10 ; 0xf8a30 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8a34 + out DX, eax ; 66 ef ; 0xf8a36 + lea ax, [bx+00100h] ; 8d 87 00 01 ; 0xf8a38 ahci.c:497 + cwd ; 99 ; 0xf8a3c + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8a3d + mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf8a40 + mov cx, dx ; 89 d1 ; 0xf8a45 + mov dx, di ; 89 fa ; 0xf8a47 + xchg cx, ax ; 91 ; 0xf8a49 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8a4a + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8a4e + out DX, eax ; 66 ef ; 0xf8a50 + mov ax, si ; 89 f0 ; 0xf8a52 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf8a54 + call 083a9h ; e8 4f f9 ; 0xf8a57 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8a5a + mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf8a5d + add di, strict byte 00004h ; 83 c7 04 ; 0xf8a62 + mov cx, dx ; 89 d1 ; 0xf8a65 + mov dx, di ; 89 fa ; 0xf8a67 + xchg cx, ax ; 91 ; 0xf8a69 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8a6a + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8a6e + out DX, eax ; 66 ef ; 0xf8a70 + lea ax, [bx+00104h] ; 8d 87 04 01 ; 0xf8a72 ahci.c:498 + cwd ; 99 ; 0xf8a76 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8a77 + mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf8a7a + mov cx, dx ; 89 d1 ; 0xf8a7f + mov dx, di ; 89 fa ; 0xf8a81 + xchg cx, ax ; 91 ; 0xf8a83 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8a84 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8a88 + out DX, eax ; 66 ef ; 0xf8a8a + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8a8c + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8a8f + add dx, strict byte 00004h ; 83 c2 04 ; 0xf8a94 + xor ax, ax ; 31 c0 ; 0xf8a97 + xor cx, cx ; 31 c9 ; 0xf8a99 + xchg cx, ax ; 91 ; 0xf8a9b + sal eax, 010h ; 66 c1 e0 10 ; 0xf8a9c + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8aa0 + out DX, eax ; 66 ef ; 0xf8aa2 + lea ax, [bx+00114h] ; 8d 87 14 01 ; 0xf8aa4 ahci.c:501 + cwd ; 99 ; 0xf8aa8 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8aa9 + mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf8aac + mov cx, dx ; 89 d1 ; 0xf8ab1 + mov dx, di ; 89 fa ; 0xf8ab3 + xchg cx, ax ; 91 ; 0xf8ab5 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8ab6 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8aba + out DX, eax ; 66 ef ; 0xf8abc + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8abe + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8ac1 + add dx, strict byte 00004h ; 83 c2 04 ; 0xf8ac6 + xor ax, ax ; 31 c0 ; 0xf8ac9 + xor cx, cx ; 31 c9 ; 0xf8acb + xchg cx, ax ; 91 ; 0xf8acd + sal eax, 010h ; 66 c1 e0 10 ; 0xf8ace + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8ad2 + out DX, eax ; 66 ef ; 0xf8ad4 + lea ax, [bx+00110h] ; 8d 87 10 01 ; 0xf8ad6 ahci.c:502 + cwd ; 99 ; 0xf8ada + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8adb + mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf8ade + mov cx, dx ; 89 d1 ; 0xf8ae3 + mov dx, di ; 89 fa ; 0xf8ae5 + xchg cx, ax ; 91 ; 0xf8ae7 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8ae8 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8aec + out DX, eax ; 66 ef ; 0xf8aee + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8af0 + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8af3 + add dx, strict byte 00004h ; 83 c2 04 ; 0xf8af8 + mov ax, strict word 0ffffh ; b8 ff ff ; 0xf8afb + mov cx, ax ; 89 c1 ; 0xf8afe + xchg cx, ax ; 91 ; 0xf8b00 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8b01 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8b05 + out DX, eax ; 66 ef ; 0xf8b07 + lea ax, [bx+00130h] ; 8d 87 30 01 ; 0xf8b09 ahci.c:504 + cwd ; 99 ; 0xf8b0d + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8b0e + mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8b11 + mov cx, dx ; 89 d1 ; 0xf8b16 + mov dx, bx ; 89 da ; 0xf8b18 + xchg cx, ax ; 91 ; 0xf8b1a + sal eax, 010h ; 66 c1 e0 10 ; 0xf8b1b + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8b1f + out DX, eax ; 66 ef ; 0xf8b21 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8b23 + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8b26 + add dx, strict byte 00004h ; 83 c2 04 ; 0xf8b2b + mov ax, strict word 0ffffh ; b8 ff ff ; 0xf8b2e + mov cx, ax ; 89 c1 ; 0xf8b31 + xchg cx, ax ; 91 ; 0xf8b33 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8b34 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8b38 + out DX, eax ; 66 ef ; 0xf8b3a + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf8b3c ahci.c:506 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8b3f + mov byte [es:si+00262h], al ; 26 88 84 62 02 ; 0xf8b42 + mov byte [es:si+00263h], 000h ; 26 c6 84 63 02 00 ; 0xf8b47 ahci.c:507 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf8b4d ahci.c:508 + pop di ; 5f ; 0xf8b50 + pop si ; 5e ; 0xf8b51 + pop cx ; 59 ; 0xf8b52 + pop bp ; 5d ; 0xf8b53 + retn ; c3 ; 0xf8b54 + ; disGetNextSymbol 0xf8b55 LB 0x13f3 -> off=0x0 cb=00000000000000aa uValue=00000000000f7555 'ahci_read_sectors' +ahci_read_sectors: ; 0xf8b55 LB 0xaa + push bp ; 55 ; 0xf8b55 ahci.c:517 + mov bp, sp ; 89 e5 ; 0xf8b56 + push si ; 56 ; 0xf8b58 + push di ; 57 ; 0xf8b59 + les bx, [bp+004h] ; c4 5e 04 ; 0xf8b5a ahci.c:522 + mov al, byte [es:bx+00ch] ; 26 8a 47 0c ; 0xf8b5d + xor ah, ah ; 30 e4 ; 0xf8b61 + mov di, ax ; 89 c7 ; 0xf8b63 + sub di, strict byte 0000ch ; 83 ef 0c ; 0xf8b65 + cmp di, strict byte 00004h ; 83 ff 04 ; 0xf8b68 ahci.c:523 + jbe short 08b80h ; 76 13 ; 0xf8b6b + push di ; 57 ; 0xf8b6d ahci.c:524 + mov ax, 00c62h ; b8 62 0c ; 0xf8b6e + push ax ; 50 ; 0xf8b71 + mov ax, 00c74h ; b8 74 0c ; 0xf8b72 + push ax ; 50 ; 0xf8b75 + mov ax, strict word 00007h ; b8 07 00 ; 0xf8b76 + push ax ; 50 ; 0xf8b79 + call 0190fh ; e8 92 8d ; 0xf8b7a + add sp, strict byte 00008h ; 83 c4 08 ; 0xf8b7d + xor bx, bx ; 31 db ; 0xf8b80 ahci.c:530 + les si, [bp+004h] ; c4 76 04 ; 0xf8b82 + mov dx, word [es:si+00232h] ; 26 8b 94 32 02 ; 0xf8b85 + shr eax, 010h ; 66 c1 e8 10 ; 0xf8b8a ahci.c:239 + mov es, dx ; 8e c2 ; 0xf8b8e + mov word [es:bx+00268h], ax ; 26 89 87 68 02 ; 0xf8b90 + mov es, [bp+006h] ; 8e 46 06 ; 0xf8b95 ahci.c:531 + add di, si ; 01 f7 ; 0xf8b98 + mov bl, byte [es:di+0022dh] ; 26 8a 9d 2d 02 ; 0xf8b9a + xor bh, bh ; 30 ff ; 0xf8b9f + mov dx, word [es:si+00232h] ; 26 8b 94 32 02 ; 0xf8ba1 + xor ax, ax ; 31 c0 ; 0xf8ba6 + call 08905h ; e8 5a fd ; 0xf8ba8 + mov bx, strict word 00025h ; bb 25 00 ; 0xf8bab ahci.c:532 + mov ax, si ; 89 f0 ; 0xf8bae + mov dx, word [bp+006h] ; 8b 56 06 ; 0xf8bb0 + call 08520h ; e8 6a f9 ; 0xf8bb3 + mov bx, ax ; 89 c3 ; 0xf8bb6 + mov es, [bp+006h] ; 8e 46 06 ; 0xf8bb8 ahci.c:534 + mov ax, word [es:si+00eh] ; 26 8b 44 0e ; 0xf8bbb + mov word [es:si+018h], ax ; 26 89 44 18 ; 0xf8bbf + mov CL, strict byte 009h ; b1 09 ; 0xf8bc3 ahci.c:536 + sal ax, CL ; d3 e0 ; 0xf8bc5 + mov cx, ax ; 89 c1 ; 0xf8bc7 + shr cx, 1 ; d1 e9 ; 0xf8bc9 + mov di, si ; 89 f7 ; 0xf8bcb + mov di, word [es:di+008h] ; 26 8b 7d 08 ; 0xf8bcd + mov ax, word [es:si+00ah] ; 26 8b 44 0a ; 0xf8bd1 + mov si, di ; 89 fe ; 0xf8bd5 + mov dx, ax ; 89 c2 ; 0xf8bd7 + mov es, ax ; 8e c0 ; 0xf8bd9 + push DS ; 1e ; 0xf8bdb + mov ds, dx ; 8e da ; 0xf8bdc + rep movsw ; f3 a5 ; 0xf8bde + pop DS ; 1f ; 0xf8be0 + xor di, di ; 31 ff ; 0xf8be1 ahci.c:538 + les si, [bp+004h] ; c4 76 04 ; 0xf8be3 + mov es, [es:si+00232h] ; 26 8e 84 32 02 ; 0xf8be6 + mov ax, word [es:di+00268h] ; 26 8b 85 68 02 ; 0xf8beb ahci.c:244 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8bf0 + mov ax, bx ; 89 d8 ; 0xf8bf4 ahci.c:540 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf8bf6 + pop di ; 5f ; 0xf8bf9 + pop si ; 5e ; 0xf8bfa + pop bp ; 5d ; 0xf8bfb + retn 00004h ; c2 04 00 ; 0xf8bfc + ; disGetNextSymbol 0xf8bff LB 0x1349 -> off=0x0 cb=0000000000000088 uValue=00000000000f75ff 'ahci_write_sectors' +ahci_write_sectors: ; 0xf8bff LB 0x88 + push bp ; 55 ; 0xf8bff ahci.c:549 + mov bp, sp ; 89 e5 ; 0xf8c00 + push si ; 56 ; 0xf8c02 + push di ; 57 ; 0xf8c03 + mov si, word [bp+004h] ; 8b 76 04 ; 0xf8c04 + mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf8c07 + mov es, cx ; 8e c1 ; 0xf8c0a ahci.c:554 + mov bl, byte [es:si+00ch] ; 26 8a 5c 0c ; 0xf8c0c + xor bh, bh ; 30 ff ; 0xf8c10 + sub bx, strict byte 0000ch ; 83 eb 0c ; 0xf8c12 + cmp bx, strict byte 00004h ; 83 fb 04 ; 0xf8c15 ahci.c:555 + jbe short 08c2dh ; 76 13 ; 0xf8c18 + push bx ; 53 ; 0xf8c1a ahci.c:556 + mov ax, 00c93h ; b8 93 0c ; 0xf8c1b + push ax ; 50 ; 0xf8c1e + mov ax, 00c74h ; b8 74 0c ; 0xf8c1f + push ax ; 50 ; 0xf8c22 + mov ax, strict word 00007h ; b8 07 00 ; 0xf8c23 + push ax ; 50 ; 0xf8c26 + call 0190fh ; e8 e5 8c ; 0xf8c27 + add sp, strict byte 00008h ; 83 c4 08 ; 0xf8c2a + xor di, di ; 31 ff ; 0xf8c2d ahci.c:562 + mov es, cx ; 8e c1 ; 0xf8c2f + mov dx, word [es:si+00232h] ; 26 8b 94 32 02 ; 0xf8c31 + shr eax, 010h ; 66 c1 e8 10 ; 0xf8c36 ahci.c:239 + mov es, dx ; 8e c2 ; 0xf8c3a + mov word [es:di+00268h], ax ; 26 89 85 68 02 ; 0xf8c3c + mov es, cx ; 8e c1 ; 0xf8c41 ahci.c:563 + add bx, si ; 01 f3 ; 0xf8c43 + mov bl, byte [es:bx+0022dh] ; 26 8a 9f 2d 02 ; 0xf8c45 + xor bh, bh ; 30 ff ; 0xf8c4a + mov dx, word [es:si+00232h] ; 26 8b 94 32 02 ; 0xf8c4c + xor ax, ax ; 31 c0 ; 0xf8c51 + call 08905h ; e8 af fc ; 0xf8c53 + mov bx, strict word 00035h ; bb 35 00 ; 0xf8c56 ahci.c:564 + mov ax, si ; 89 f0 ; 0xf8c59 + mov dx, cx ; 89 ca ; 0xf8c5b + call 08520h ; e8 c0 f8 ; 0xf8c5d + mov dx, ax ; 89 c2 ; 0xf8c60 + mov es, cx ; 8e c1 ; 0xf8c62 ahci.c:566 + mov ax, word [es:si+00eh] ; 26 8b 44 0e ; 0xf8c64 + mov word [es:si+018h], ax ; 26 89 44 18 ; 0xf8c68 + xor bx, bx ; 31 db ; 0xf8c6c ahci.c:567 + mov es, [es:si+00232h] ; 26 8e 84 32 02 ; 0xf8c6e + mov ax, word [es:bx+00268h] ; 26 8b 87 68 02 ; 0xf8c73 ahci.c:244 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8c78 + mov ax, dx ; 89 d0 ; 0xf8c7c ahci.c:569 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf8c7e + pop di ; 5f ; 0xf8c81 + pop si ; 5e ; 0xf8c82 + pop bp ; 5d ; 0xf8c83 + retn 00004h ; c2 04 00 ; 0xf8c84 + ; disGetNextSymbol 0xf8c87 LB 0x12c1 -> off=0x0 cb=0000000000000190 uValue=00000000000f7687 'ahci_cmd_packet' +ahci_cmd_packet: ; 0xf8c87 LB 0x190 + push bp ; 55 ; 0xf8c87 ahci.c:576 + mov bp, sp ; 89 e5 ; 0xf8c88 + push si ; 56 ; 0xf8c8a + push di ; 57 ; 0xf8c8b + sub sp, strict byte 0000eh ; 83 ec 0e ; 0xf8c8c + push ax ; 50 ; 0xf8c8f + mov byte [bp-006h], dl ; 88 56 fa ; 0xf8c90 + mov word [bp-012h], bx ; 89 5e ee ; 0xf8c93 + mov word [bp-010h], cx ; 89 4e f0 ; 0xf8c96 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf8c99 ahci.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf8c9c + mov es, ax ; 8e c0 ; 0xf8c9f + mov ax, word [es:bx] ; 26 8b 07 ; 0xf8ca1 + mov si, 00122h ; be 22 01 ; 0xf8ca4 ahci.c:49 + mov word [bp-008h], ax ; 89 46 f8 ; 0xf8ca7 + cmp byte [bp+00ah], 002h ; 80 7e 0a 02 ; 0xf8caa ahci.c:583 + jne short 08cd3h ; 75 23 ; 0xf8cae + mov bx, 00da0h ; bb a0 0d ; 0xf8cb0 ahci.c:584 + mov cx, ds ; 8c d9 ; 0xf8cb3 + mov ax, strict word 00004h ; b8 04 00 ; 0xf8cb5 + call 018cch ; e8 11 8c ; 0xf8cb8 + mov ax, 00ca6h ; b8 a6 0c ; 0xf8cbb + push ax ; 50 ; 0xf8cbe + mov ax, 00cb6h ; b8 b6 0c ; 0xf8cbf + push ax ; 50 ; 0xf8cc2 + mov ax, strict word 00004h ; b8 04 00 ; 0xf8cc3 + push ax ; 50 ; 0xf8cc6 + call 0190fh ; e8 45 8c ; 0xf8cc7 + add sp, strict byte 00006h ; 83 c4 06 ; 0xf8cca + mov ax, strict word 00001h ; b8 01 00 ; 0xf8ccd ahci.c:585 + jmp near 08e0eh ; e9 3b 01 ; 0xf8cd0 + test byte [bp+004h], 001h ; f6 46 04 01 ; 0xf8cd3 ahci.c:589 + jne short 08ccdh ; 75 f4 ; 0xf8cd7 + mov ax, word [bp+006h] ; 8b 46 06 ; 0xf8cd9 ahci.c:603 + mov dx, word [bp+008h] ; 8b 56 08 ; 0xf8cdc + mov cx, strict word 00008h ; b9 08 00 ; 0xf8cdf + sal ax, 1 ; d1 e0 ; 0xf8ce2 + rcl dx, 1 ; d1 d2 ; 0xf8ce4 + loop 08ce2h ; e2 fa ; 0xf8ce6 + mov es, [bp-008h] ; 8e 46 f8 ; 0xf8ce8 + mov word [es:si], ax ; 26 89 04 ; 0xf8ceb + mov word [es:si+002h], dx ; 26 89 54 02 ; 0xf8cee + mov word [es:si+004h], strict word 00000h ; 26 c7 44 04 00 00 ; 0xf8cf2 + mov word [es:si+006h], strict word 00000h ; 26 c7 44 06 00 00 ; 0xf8cf8 + mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf8cfe ahci.c:604 + mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf8d01 + mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf8d05 + mov word [es:si+00ah], ax ; 26 89 44 0a ; 0xf8d08 + mov bx, word [es:si+010h] ; 26 8b 5c 10 ; 0xf8d0c ahci.c:605 + mov ax, word [bp+006h] ; 8b 46 06 ; 0xf8d10 + mov dx, word [bp+008h] ; 8b 56 08 ; 0xf8d13 + xor cx, cx ; 31 c9 ; 0xf8d16 + call 09be0h ; e8 c5 0e ; 0xf8d18 + mov word [es:si+00eh], ax ; 26 89 44 0e ; 0xf8d1b + xor di, di ; 31 ff ; 0xf8d1f ahci.c:608 + mov ax, word [es:si+00232h] ; 26 8b 84 32 02 ; 0xf8d21 + mov word [bp-00ah], ax ; 89 46 f6 ; 0xf8d26 + mov word [bp-00eh], di ; 89 7e f2 ; 0xf8d29 + mov word [bp-00ch], ax ; 89 46 f4 ; 0xf8d2c + sub word [bp-014h], strict byte 0000ch ; 83 6e ec 0c ; 0xf8d2f ahci.c:595 + shr eax, 010h ; 66 c1 e8 10 ; 0xf8d33 ahci.c:239 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8d37 + mov word [es:di+00268h], ax ; 26 89 85 68 02 ; 0xf8d3a + mov es, [bp-008h] ; 8e 46 f8 ; 0xf8d3f ahci.c:611 + mov bx, word [bp-014h] ; 8b 5e ec ; 0xf8d42 + add bx, si ; 01 f3 ; 0xf8d45 + mov al, byte [es:bx+0022dh] ; 26 8a 87 2d 02 ; 0xf8d47 + xor ah, ah ; 30 e4 ; 0xf8d4c + mov dx, word [es:si+00232h] ; 26 8b 94 32 02 ; 0xf8d4e + mov bx, ax ; 89 c3 ; 0xf8d53 + xor al, al ; 30 c0 ; 0xf8d55 + call 08905h ; e8 ab fb ; 0xf8d57 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf8d5a ahci.c:614 + xor ah, ah ; 30 e4 ; 0xf8d5d + push ax ; 50 ; 0xf8d5f + mov bx, word [bp-012h] ; 8b 5e ee ; 0xf8d60 + mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf8d63 + mov ax, 000c0h ; b8 c0 00 ; 0xf8d66 + mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf8d69 + call 09c40h ; e8 d1 0e ; 0xf8d6c + mov es, [bp-008h] ; 8e 46 f8 ; 0xf8d6f ahci.c:618 + mov word [es:si+018h], di ; 26 89 7c 18 ; 0xf8d72 + mov word [es:si+01ah], di ; 26 89 7c 1a ; 0xf8d76 ahci.c:619 + mov word [es:si+01ch], di ; 26 89 7c 1c ; 0xf8d7a + mov ax, word [es:si+01eh] ; 26 8b 44 1e ; 0xf8d7e ahci.c:622 + test ax, ax ; 85 c0 ; 0xf8d82 + je short 08dadh ; 74 27 ; 0xf8d84 + dec ax ; 48 ; 0xf8d86 ahci.c:623 + mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8d87 + mov word [es:di+0010ch], ax ; 26 89 85 0c 01 ; 0xf8d8a + mov word [es:di+0010eh], di ; 26 89 bd 0e 01 ; 0xf8d8f + mov ax, word [es:di+00264h] ; 26 8b 85 64 02 ; 0xf8d94 ahci.c:624 + mov dx, word [es:di+00266h] ; 26 8b 95 66 02 ; 0xf8d99 + mov word [es:di+00100h], ax ; 26 89 85 00 01 ; 0xf8d9e + mov word [es:di+00102h], dx ; 26 89 95 02 01 ; 0xf8da3 + inc byte [es:di+00263h] ; 26 fe 85 63 02 ; 0xf8da8 ahci.c:625 + mov bx, 000a0h ; bb a0 00 ; 0xf8dad ahci.c:628 + mov ax, si ; 89 f0 ; 0xf8db0 + mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf8db2 + call 08520h ; e8 68 f7 ; 0xf8db5 + les bx, [bp-00eh] ; c4 5e f2 ; 0xf8db8 ahci.c:630 + mov ax, word [es:bx+004h] ; 26 8b 47 04 ; 0xf8dbb + mov dx, word [es:bx+006h] ; 26 8b 57 06 ; 0xf8dbf + mov es, [bp-008h] ; 8e 46 f8 ; 0xf8dc3 + mov word [es:si+01ah], ax ; 26 89 44 1a ; 0xf8dc6 + mov word [es:si+01ch], dx ; 26 89 54 1c ; 0xf8dca + mov bx, word [es:si+01ah] ; 26 8b 5c 1a ; 0xf8dce ahci.c:632 + mov cx, dx ; 89 d1 ; 0xf8dd2 + shr cx, 1 ; d1 e9 ; 0xf8dd4 + rcr bx, 1 ; d1 db ; 0xf8dd6 + mov di, word [es:si+008h] ; 26 8b 7c 08 ; 0xf8dd8 + mov ax, word [es:si+00ah] ; 26 8b 44 0a ; 0xf8ddc + mov cx, bx ; 89 d9 ; 0xf8de0 + mov si, di ; 89 fe ; 0xf8de2 + mov dx, ax ; 89 c2 ; 0xf8de4 + mov es, ax ; 8e c0 ; 0xf8de6 + push DS ; 1e ; 0xf8de8 + mov ds, dx ; 8e da ; 0xf8de9 + rep movsw ; f3 a5 ; 0xf8deb + pop DS ; 1f ; 0xf8ded + les bx, [bp-00eh] ; c4 5e f2 ; 0xf8dee ahci.c:244 + mov ax, word [es:bx+00268h] ; 26 8b 87 68 02 ; 0xf8df1 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8df6 + mov es, [bp-00ch] ; 8e 46 f4 ; 0xf8dfa ahci.c:636 + mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf8dfd + or ax, word [es:bx+004h] ; 26 0b 47 04 ; 0xf8e01 + jne short 08e0ch ; 75 05 ; 0xf8e05 + mov ax, strict word 00004h ; b8 04 00 ; 0xf8e07 + jmp short 08e0eh ; eb 02 ; 0xf8e0a + xor ax, ax ; 31 c0 ; 0xf8e0c + lea sp, [bp-004h] ; 8d 66 fc ; 0xf8e0e ahci.c:637 + pop di ; 5f ; 0xf8e11 + pop si ; 5e ; 0xf8e12 + pop bp ; 5d ; 0xf8e13 + retn 0000ch ; c2 0c 00 ; 0xf8e14 + ; disGetNextSymbol 0xf8e17 LB 0x1131 -> off=0x0 cb=0000000000000005 uValue=00000000000f7817 'wait_ticks_device_init' +wait_ticks_device_init: ; 0xf8e17 LB 0x5 + push bp ; 55 ; 0xf8e17 ahci.c:640 + mov bp, sp ; 89 e5 ; 0xf8e18 + pop bp ; 5d ; 0xf8e1a ahci.c:642 + retn ; c3 ; 0xf8e1b + ; disGetNextSymbol 0xf8e1c LB 0x112c -> off=0x0 cb=0000000000000509 uValue=00000000000f781c 'ahci_port_detect_device' +ahci_port_detect_device: ; 0xf8e1c LB 0x509 + push bp ; 55 ; 0xf8e1c ahci.c:644 + mov bp, sp ; 89 e5 ; 0xf8e1d + push cx ; 51 ; 0xf8e1f + push si ; 56 ; 0xf8e20 + push di ; 57 ; 0xf8e21 + sub sp, 0022eh ; 81 ec 2e 02 ; 0xf8e22 + mov si, ax ; 89 c6 ; 0xf8e26 + mov word [bp-018h], dx ; 89 56 e8 ; 0xf8e28 + mov byte [bp-008h], bl ; 88 5e f8 ; 0xf8e2b + mov word [bp-022h], strict word 00000h ; c7 46 de 00 00 ; 0xf8e2e ahci.c:650 + mov al, bl ; 88 d8 ; 0xf8e33 ahci.c:652 + mov byte [bp-02ah], bl ; 88 5e d6 ; 0xf8e35 + xor al, bl ; 30 d8 ; 0xf8e38 + mov byte [bp-029h], al ; 88 46 d7 ; 0xf8e3a + mov bx, word [bp-02ah] ; 8b 5e d6 ; 0xf8e3d + mov ax, si ; 89 f0 ; 0xf8e40 + call 08905h ; e8 c0 fa ; 0xf8e42 + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf8e45 ahci.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf8e48 + mov es, ax ; 8e c0 ; 0xf8e4b + mov ax, word [es:bx] ; 26 8b 07 ; 0xf8e4d + mov word [bp-026h], 00122h ; c7 46 da 22 01 ; 0xf8e50 ahci.c:49 + mov word [bp-016h], ax ; 89 46 ea ; 0xf8e55 + mov CL, strict byte 007h ; b1 07 ; 0xf8e58 ahci.c:657 + mov ax, word [bp-02ah] ; 8b 46 d6 ; 0xf8e5a + sal ax, CL ; d3 e0 ; 0xf8e5d + add ax, 0012ch ; 05 2c 01 ; 0xf8e5f + cwd ; 99 ; 0xf8e62 + mov di, ax ; 89 c7 ; 0xf8e63 + mov bx, dx ; 89 d3 ; 0xf8e65 + mov es, [bp-018h] ; 8e 46 e8 ; 0xf8e67 + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8e6a + mov cx, bx ; 89 d9 ; 0xf8e6f + xchg cx, ax ; 91 ; 0xf8e71 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8e72 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8e76 + out DX, eax ; 66 ef ; 0xf8e78 + mov es, [bp-018h] ; 8e 46 e8 ; 0xf8e7a + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8e7d + add dx, strict byte 00004h ; 83 c2 04 ; 0xf8e82 + mov ax, strict word 00001h ; b8 01 00 ; 0xf8e85 + xor cx, cx ; 31 c9 ; 0xf8e88 + xchg cx, ax ; 91 ; 0xf8e8a + sal eax, 010h ; 66 c1 e0 10 ; 0xf8e8b + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8e8f + out DX, eax ; 66 ef ; 0xf8e91 + mov es, [bp-018h] ; 8e 46 e8 ; 0xf8e93 ahci.c:662 + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8e96 + mov ax, di ; 89 f8 ; 0xf8e9b + mov cx, bx ; 89 d9 ; 0xf8e9d + xchg cx, ax ; 91 ; 0xf8e9f + sal eax, 010h ; 66 c1 e0 10 ; 0xf8ea0 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8ea4 + out DX, eax ; 66 ef ; 0xf8ea6 + mov es, [bp-018h] ; 8e 46 e8 ; 0xf8ea8 + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8eab + add dx, strict byte 00004h ; 83 c2 04 ; 0xf8eb0 + xor ax, ax ; 31 c0 ; 0xf8eb3 + xor cx, cx ; 31 c9 ; 0xf8eb5 + xchg cx, ax ; 91 ; 0xf8eb7 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8eb8 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8ebc + out DX, eax ; 66 ef ; 0xf8ebe + mov di, strict word 0006ch ; bf 6c 00 ; 0xf8ec0 ahci.c:671 + mov ax, strict word 00040h ; b8 40 00 ; 0xf8ec3 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf8ec6 + mov es, ax ; 8e c0 ; 0xf8ec9 ahci.c:672 + mov ax, word [es:di] ; 26 8b 05 ; 0xf8ecb + add ax, strict word 00003h ; 05 03 00 ; 0xf8ece + mov word [bp-01eh], ax ; 89 46 e2 ; 0xf8ed1 + mov ax, word [es:di+002h] ; 26 8b 45 02 ; 0xf8ed4 + adc ax, strict word 00000h ; 15 00 00 ; 0xf8ed8 + mov word [bp-01ch], ax ; 89 46 e4 ; 0xf8edb + mov es, [bp-010h] ; 8e 46 f0 ; 0xf8ede ahci.c:674 + mov ax, word [es:di+002h] ; 26 8b 45 02 ; 0xf8ee1 + cmp ax, word [bp-01ch] ; 3b 46 e4 ; 0xf8ee5 + jc short 08efbh ; 72 11 ; 0xf8ee8 + mov ax, word [es:di+002h] ; 26 8b 45 02 ; 0xf8eea + cmp ax, word [bp-01ch] ; 3b 46 e4 ; 0xf8eee + jne short 08f49h ; 75 56 ; 0xf8ef1 + mov ax, word [es:di] ; 26 8b 05 ; 0xf8ef3 + cmp ax, word [bp-01eh] ; 3b 46 e2 ; 0xf8ef6 + jnc short 08f49h ; 73 4e ; 0xf8ef9 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf8efb ahci.c:677 + xor ah, ah ; 30 e4 ; 0xf8efe + mov CL, strict byte 007h ; b1 07 ; 0xf8f00 + sal ax, CL ; d3 e0 ; 0xf8f02 + add ax, 00128h ; 05 28 01 ; 0xf8f04 + cwd ; 99 ; 0xf8f07 + mov es, [bp-018h] ; 8e 46 e8 ; 0xf8f08 + mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8f0b + mov cx, dx ; 89 d1 ; 0xf8f10 + mov dx, bx ; 89 da ; 0xf8f12 + xchg cx, ax ; 91 ; 0xf8f14 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8f15 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8f19 + out DX, eax ; 66 ef ; 0xf8f1b + mov es, [bp-018h] ; 8e 46 e8 ; 0xf8f1d + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8f20 + add dx, strict byte 00004h ; 83 c2 04 ; 0xf8f25 + in eax, DX ; 66 ed ; 0xf8f28 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf8f2a + shr eax, 010h ; 66 c1 e8 10 ; 0xf8f2c + xchg dx, ax ; 92 ; 0xf8f30 + mov word [bp-024h], ax ; 89 46 dc ; 0xf8f31 + mov word [bp-020h], dx ; 89 56 e0 ; 0xf8f34 + xor bx, bx ; 31 db ; 0xf8f37 ahci.c:678 + push bx ; 53 ; 0xf8f39 + mov bx, strict word 0000fh ; bb 0f 00 ; 0xf8f3a + xor cx, cx ; 31 c9 ; 0xf8f3d + call 0838dh ; e8 4b f4 ; 0xf8f3f + cmp ax, strict word 00003h ; 3d 03 00 ; 0xf8f42 + jne short 08edeh ; 75 97 ; 0xf8f45 + jmp short 08f52h ; eb 09 ; 0xf8f47 ahci.c:680 + cmp word [bp-022h], strict byte 00000h ; 83 7e de 00 ; 0xf8f49 ahci.c:685 + jne short 08f52h ; 75 03 ; 0xf8f4d + jmp near 0931dh ; e9 cb 03 ; 0xf8f4f + xor ax, ax ; 31 c0 ; 0xf8f52 ahci.c:690 + push ax ; 50 ; 0xf8f54 + mov bx, strict word 0000fh ; bb 0f 00 ; 0xf8f55 + xor cx, cx ; 31 c9 ; 0xf8f58 + mov ax, word [bp-024h] ; 8b 46 dc ; 0xf8f5a + mov dx, word [bp-020h] ; 8b 56 e0 ; 0xf8f5d + call 0838dh ; e8 2a f4 ; 0xf8f60 + cmp ax, strict word 00003h ; 3d 03 00 ; 0xf8f63 + jne short 08f4fh ; 75 e7 ; 0xf8f66 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf8f68 ahci.c:698 + xor ah, ah ; 30 e4 ; 0xf8f6b + mov CL, strict byte 007h ; b1 07 ; 0xf8f6d + mov di, ax ; 89 c7 ; 0xf8f6f + sal di, CL ; d3 e7 ; 0xf8f71 + lea ax, [di+00130h] ; 8d 85 30 01 ; 0xf8f73 + cwd ; 99 ; 0xf8f77 + mov es, [bp-018h] ; 8e 46 e8 ; 0xf8f78 + mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8f7b + mov cx, dx ; 89 d1 ; 0xf8f80 + mov dx, bx ; 89 da ; 0xf8f82 + xchg cx, ax ; 91 ; 0xf8f84 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8f85 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8f89 + out DX, eax ; 66 ef ; 0xf8f8b + mov es, [bp-018h] ; 8e 46 e8 ; 0xf8f8d + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8f90 + add dx, strict byte 00004h ; 83 c2 04 ; 0xf8f95 + mov ax, strict word 0ffffh ; b8 ff ff ; 0xf8f98 + mov cx, ax ; 89 c1 ; 0xf8f9b + xchg cx, ax ; 91 ; 0xf8f9d + sal eax, 010h ; 66 c1 e0 10 ; 0xf8f9e + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8fa2 + out DX, eax ; 66 ef ; 0xf8fa4 + mov es, [bp-016h] ; 8e 46 ea ; 0xf8fa6 ahci.c:700 + mov bx, word [bp-026h] ; 8b 5e da ; 0xf8fa9 + mov al, byte [es:bx+00231h] ; 26 8a 87 31 02 ; 0xf8fac + mov byte [bp-00eh], al ; 88 46 f2 ; 0xf8fb1 + cmp AL, strict byte 004h ; 3c 04 ; 0xf8fb4 ahci.c:705 + jnc short 08f4fh ; 73 97 ; 0xf8fb6 + lea ax, [di+00118h] ; 8d 85 18 01 ; 0xf8fb8 ahci.c:708 + mov es, [bp-018h] ; 8e 46 e8 ; 0xf8fbc ahci.c:250 + mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8fbf + xor cx, cx ; 31 c9 ; 0xf8fc4 ahci.c:252 + mov dx, bx ; 89 da ; 0xf8fc6 + xchg cx, ax ; 91 ; 0xf8fc8 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8fc9 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8fcd + out DX, eax ; 66 ef ; 0xf8fcf + add bx, strict byte 00004h ; 83 c3 04 ; 0xf8fd1 ahci.c:253 + mov dx, bx ; 89 da ; 0xf8fd4 + in eax, DX ; 66 ed ; 0xf8fd6 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf8fd8 + shr eax, 010h ; 66 c1 e8 10 ; 0xf8fda + xchg dx, ax ; 92 ; 0xf8fde + or AL, strict byte 010h ; 0c 10 ; 0xf8fdf + mov cx, dx ; 89 d1 ; 0xf8fe1 + mov dx, bx ; 89 da ; 0xf8fe3 + xchg cx, ax ; 91 ; 0xf8fe5 + sal eax, 010h ; 66 c1 e0 10 ; 0xf8fe6 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf8fea + out DX, eax ; 66 ef ; 0xf8fec + lea ax, [di+00124h] ; 8d 85 24 01 ; 0xf8fee ahci.c:712 + cwd ; 99 ; 0xf8ff2 + mov es, [bp-018h] ; 8e 46 e8 ; 0xf8ff3 + mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8ff6 + mov cx, dx ; 89 d1 ; 0xf8ffb + mov dx, bx ; 89 da ; 0xf8ffd + xchg cx, ax ; 91 ; 0xf8fff + sal eax, 010h ; 66 c1 e0 10 ; 0xf9000 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf9004 + out DX, eax ; 66 ef ; 0xf9006 + mov es, [bp-018h] ; 8e 46 e8 ; 0xf9008 + mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf900b + add dx, strict byte 00004h ; 83 c2 04 ; 0xf9010 + in eax, DX ; 66 ed ; 0xf9013 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf9015 + shr eax, 010h ; 66 c1 e8 10 ; 0xf9017 + xchg dx, ax ; 92 ; 0xf901b + mov si, ax ; 89 c6 ; 0xf901c + mov ax, dx ; 89 d0 ; 0xf901e + mov dl, byte [bp-00eh] ; 8a 56 f2 ; 0xf9020 + add dl, 00ch ; 80 c2 0c ; 0xf9023 + mov byte [bp-00ch], dl ; 88 56 f4 ; 0xf9026 + test ax, ax ; 85 c0 ; 0xf9029 ahci.c:713 + jne short 09085h ; 75 58 ; 0xf902b + cmp si, 00101h ; 81 fe 01 01 ; 0xf902d + jne short 09085h ; 75 52 ; 0xf9031 + mov es, [bp-016h] ; 8e 46 ea ; 0xf9033 ahci.c:723 + mov bx, word [bp-026h] ; 8b 5e da ; 0xf9036 + mov word [es:bx+006h], strict word 00000h ; 26 c7 47 06 00 00 ; 0xf9039 + mov word [es:bx+004h], strict word 00000h ; 26 c7 47 04 00 00 ; 0xf903f + mov word [es:bx+002h], strict word 00000h ; 26 c7 47 02 00 00 ; 0xf9045 + mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf904b + lea dx, [bp-00234h] ; 8d 96 cc fd ; 0xf9050 ahci.c:724 + mov word [es:bx+008h], dx ; 26 89 57 08 ; 0xf9054 + mov [es:bx+00ah], ss ; 26 8c 57 0a ; 0xf9058 + mov word [es:bx+00eh], strict word 00001h ; 26 c7 47 0e 01 00 ; 0xf905c ahci.c:725 + mov word [es:bx+010h], 00200h ; 26 c7 47 10 00 02 ; 0xf9062 ahci.c:726 + mov bx, 000ech ; bb ec 00 ; 0xf9068 ahci.c:727 + mov ax, word [bp-026h] ; 8b 46 da ; 0xf906b + mov dx, es ; 8c c2 ; 0xf906e + call 08520h ; e8 ad f4 ; 0xf9070 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf9073 ahci.c:730 + mov byte [bp-00ah], al ; 88 46 f6 ; 0xf9076 + test byte [bp-00234h], 080h ; f6 86 cc fd 80 ; 0xf9079 ahci.c:732 + je short 09088h ; 74 08 ; 0xf907e + mov ax, strict word 00001h ; b8 01 00 ; 0xf9080 + jmp short 0908ah ; eb 05 ; 0xf9083 + jmp near 09251h ; e9 c9 01 ; 0xf9085 + xor ax, ax ; 31 c0 ; 0xf9088 + mov cl, al ; 88 c1 ; 0xf908a + mov ax, word [bp-00232h] ; 8b 86 ce fd ; 0xf908c ahci.c:733 + mov word [bp-01ah], ax ; 89 46 e6 ; 0xf9090 + mov ax, word [bp-0022eh] ; 8b 86 d2 fd ; 0xf9093 ahci.c:734 + mov word [bp-014h], ax ; 89 46 ec ; 0xf9097 + mov ax, word [bp-00228h] ; 8b 86 d8 fd ; 0xf909a ahci.c:735 + mov word [bp-02eh], ax ; 89 46 d2 ; 0xf909e + mov si, word [bp-001bch] ; 8b b6 44 fe ; 0xf90a1 ahci.c:736 + mov di, word [bp-001bah] ; 8b be 46 fe ; 0xf90a5 + xor ax, ax ; 31 c0 ; 0xf90a9 + mov word [bp-028h], ax ; 89 46 d8 ; 0xf90ab + mov word [bp-012h], ax ; 89 46 ee ; 0xf90ae + cmp di, 00fffh ; 81 ff ff 0f ; 0xf90b1 ahci.c:738 + jne short 090d2h ; 75 1b ; 0xf90b5 + cmp si, strict byte 0ffffh ; 83 fe ff ; 0xf90b7 + jne short 090d2h ; 75 16 ; 0xf90ba + mov ax, word [bp-00166h] ; 8b 86 9a fe ; 0xf90bc ahci.c:739 + mov word [bp-012h], ax ; 89 46 ee ; 0xf90c0 + mov ax, word [bp-00168h] ; 8b 86 98 fe ; 0xf90c3 + mov word [bp-028h], ax ; 89 46 d8 ; 0xf90c7 + mov di, word [bp-0016ah] ; 8b be 96 fe ; 0xf90ca + mov si, word [bp-0016ch] ; 8b b6 94 fe ; 0xf90ce + mov bl, byte [bp-00eh] ; 8a 5e f2 ; 0xf90d2 ahci.c:743 + xor bh, bh ; 30 ff ; 0xf90d5 + mov es, [bp-016h] ; 8e 46 ea ; 0xf90d7 + add bx, word [bp-026h] ; 03 5e da ; 0xf90da + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf90dd + mov byte [es:bx+0022dh], al ; 26 88 87 2d 02 ; 0xf90e0 + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf90e5 ahci.c:744 + xor ah, ah ; 30 e4 ; 0xf90e8 + mov dx, strict word 0001ch ; ba 1c 00 ; 0xf90ea + imul dx ; f7 ea ; 0xf90ed + mov bx, word [bp-026h] ; 8b 5e da ; 0xf90ef + add bx, ax ; 01 c3 ; 0xf90f2 + mov word [es:bx+022h], 0ff05h ; 26 c7 47 22 05 ff ; 0xf90f4 + mov byte [es:bx+024h], cl ; 26 88 4f 24 ; 0xf90fa ahci.c:746 + mov byte [es:bx+025h], 000h ; 26 c6 47 25 00 ; 0xf90fe ahci.c:747 + mov word [es:bx+028h], 00200h ; 26 c7 47 28 00 02 ; 0xf9103 ahci.c:748 + mov byte [es:bx+027h], 001h ; 26 c6 47 27 01 ; 0xf9109 ahci.c:749 + mov ax, word [bp-012h] ; 8b 46 ee ; 0xf910e ahci.c:750 + mov word [es:bx+03ch], ax ; 26 89 47 3c ; 0xf9111 + mov ax, word [bp-028h] ; 8b 46 d8 ; 0xf9115 + mov word [es:bx+03ah], ax ; 26 89 47 3a ; 0xf9118 + mov word [es:bx+038h], di ; 26 89 7f 38 ; 0xf911c + mov word [es:bx+036h], si ; 26 89 77 36 ; 0xf9120 + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf9124 ahci.c:752 + mov word [es:bx+030h], ax ; 26 89 47 30 ; 0xf9127 + mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xf912b ahci.c:753 + mov word [es:bx+032h], ax ; 26 89 47 32 ; 0xf912e + mov ax, word [bp-02eh] ; 8b 46 d2 ; 0xf9132 ahci.c:754 + mov word [es:bx+034h], ax ; 26 89 47 34 ; 0xf9135 + mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf9139 ahci.c:757 + cmp AL, strict byte 001h ; 3c 01 ; 0xf913c + jc short 0914ch ; 72 0c ; 0xf913e + jbe short 09154h ; 76 12 ; 0xf9140 + cmp AL, strict byte 003h ; 3c 03 ; 0xf9142 + je short 0915ch ; 74 16 ; 0xf9144 + cmp AL, strict byte 002h ; 3c 02 ; 0xf9146 + je short 09158h ; 74 0e ; 0xf9148 + jmp short 091a6h ; eb 5a ; 0xf914a + test al, al ; 84 c0 ; 0xf914c + jne short 091a6h ; 75 56 ; 0xf914e + mov BL, strict byte 040h ; b3 40 ; 0xf9150 ahci.c:760 + jmp short 0915eh ; eb 0a ; 0xf9152 ahci.c:761 + mov BL, strict byte 048h ; b3 48 ; 0xf9154 ahci.c:763 + jmp short 0915eh ; eb 06 ; 0xf9156 ahci.c:764 + mov BL, strict byte 050h ; b3 50 ; 0xf9158 ahci.c:766 + jmp short 0915eh ; eb 02 ; 0xf915a ahci.c:767 + mov BL, strict byte 058h ; b3 58 ; 0xf915c ahci.c:769 + mov dl, bl ; 88 da ; 0xf915e ahci.c:773 + add dl, 007h ; 80 c2 07 ; 0xf9160 + xor dh, dh ; 30 f6 ; 0xf9163 + mov ax, dx ; 89 d0 ; 0xf9165 + call 01652h ; e8 e8 84 ; 0xf9167 + test al, al ; 84 c0 ; 0xf916a + je short 091a6h ; 74 38 ; 0xf916c + mov al, bl ; 88 d8 ; 0xf916e ahci.c:776 + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf9170 + xor ah, ah ; 30 e4 ; 0xf9172 + call 01652h ; e8 db 84 ; 0xf9174 + mov byte [bp-02bh], al ; 88 46 d5 ; 0xf9177 + mov byte [bp-02ch], dh ; 88 76 d4 ; 0xf917a + mov al, bl ; 88 d8 ; 0xf917d + xor ah, ah ; 30 e4 ; 0xf917f + call 01652h ; e8 ce 84 ; 0xf9181 + xor ah, ah ; 30 e4 ; 0xf9184 + mov cx, word [bp-02ch] ; 8b 4e d4 ; 0xf9186 + add cx, ax ; 01 c1 ; 0xf9189 + mov word [bp-032h], cx ; 89 4e ce ; 0xf918b + mov al, bl ; 88 d8 ; 0xf918e ahci.c:777 + add AL, strict byte 002h ; 04 02 ; 0xf9190 + call 01652h ; e8 bd 84 ; 0xf9192 + xor ah, ah ; 30 e4 ; 0xf9195 + mov word [bp-034h], ax ; 89 46 cc ; 0xf9197 + mov ax, dx ; 89 d0 ; 0xf919a ahci.c:778 + call 01652h ; e8 b3 84 ; 0xf919c + xor ah, ah ; 30 e4 ; 0xf919f + mov word [bp-030h], ax ; 89 46 d0 ; 0xf91a1 + jmp short 091b6h ; eb 10 ; 0xf91a4 ahci.c:780 + push word [bp-012h] ; ff 76 ee ; 0xf91a6 ahci.c:781 + push word [bp-028h] ; ff 76 d8 ; 0xf91a9 + push di ; 57 ; 0xf91ac + push si ; 56 ; 0xf91ad + mov dx, ss ; 8c d2 ; 0xf91ae + lea ax, [bp-034h] ; 8d 46 cc ; 0xf91b0 + call 059dch ; e8 26 c8 ; 0xf91b3 + mov bx, 00da0h ; bb a0 0d ; 0xf91b6 ahci.c:785 + mov cx, ds ; 8c d9 ; 0xf91b9 + mov ax, strict word 00004h ; b8 04 00 ; 0xf91bb + call 018cch ; e8 0b 87 ; 0xf91be + push word [bp-012h] ; ff 76 ee ; 0xf91c1 + push word [bp-028h] ; ff 76 d8 ; 0xf91c4 + push di ; 57 ; 0xf91c7 + push si ; 56 ; 0xf91c8 + mov ax, word [bp-030h] ; 8b 46 d0 ; 0xf91c9 + push ax ; 50 ; 0xf91cc + mov ax, word [bp-034h] ; 8b 46 cc ; 0xf91cd + push ax ; 50 ; 0xf91d0 + mov ax, word [bp-032h] ; 8b 46 ce ; 0xf91d1 + push ax ; 50 ; 0xf91d4 + push word [bp-02eh] ; ff 76 d2 ; 0xf91d5 + push word [bp-014h] ; ff 76 ec ; 0xf91d8 + push word [bp-01ah] ; ff 76 e6 ; 0xf91db + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf91de + xor ah, ah ; 30 e4 ; 0xf91e1 + push ax ; 50 ; 0xf91e3 + mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf91e4 + push ax ; 50 ; 0xf91e7 + mov ax, 00cd6h ; b8 d6 0c ; 0xf91e8 + push ax ; 50 ; 0xf91eb + mov ax, strict word 00004h ; b8 04 00 ; 0xf91ec + push ax ; 50 ; 0xf91ef + call 0190fh ; e8 1c 87 ; 0xf91f0 + add sp, strict byte 0001ch ; 83 c4 1c ; 0xf91f3 + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf91f6 ahci.c:787 + xor ah, ah ; 30 e4 ; 0xf91f9 + mov dx, strict word 0001ch ; ba 1c 00 ; 0xf91fb + imul dx ; f7 ea ; 0xf91fe + mov di, word [bp-026h] ; 8b 7e da ; 0xf9200 + add di, ax ; 01 c7 ; 0xf9203 + mov es, [bp-016h] ; 8e 46 ea ; 0xf9205 + lea di, [di+02ah] ; 8d 7d 2a ; 0xf9208 + push DS ; 1e ; 0xf920b + push SS ; 16 ; 0xf920c + pop DS ; 1f ; 0xf920d + lea si, [bp-034h] ; 8d 76 cc ; 0xf920e + movsw ; a5 ; 0xf9211 + movsw ; a5 ; 0xf9212 + movsw ; a5 ; 0xf9213 + pop DS ; 1f ; 0xf9214 + mov bx, word [bp-026h] ; 8b 5e da ; 0xf9215 ahci.c:790 + mov bl, byte [es:bx+001e2h] ; 26 8a 9f e2 01 ; 0xf9218 + mov dl, byte [bp-00eh] ; 8a 56 f2 ; 0xf921d ahci.c:791 + add dl, 00ch ; 80 c2 0c ; 0xf9220 + mov al, bl ; 88 d8 ; 0xf9223 + xor ah, ah ; 30 e4 ; 0xf9225 + mov si, word [bp-026h] ; 8b 76 da ; 0xf9227 + add si, ax ; 01 c6 ; 0xf922a + mov byte [es:si+001e3h], dl ; 26 88 94 e3 01 ; 0xf922c + db 0feh, 0c3h + ; inc bl ; fe c3 ; 0xf9231 ahci.c:792 + mov si, word [bp-026h] ; 8b 76 da ; 0xf9233 ahci.c:793 + mov byte [es:si+001e2h], bl ; 26 88 9c e2 01 ; 0xf9236 + mov bx, strict word 00075h ; bb 75 00 ; 0xf923b ahci.c:38 + mov ax, strict word 00040h ; b8 40 00 ; 0xf923e + mov es, ax ; 8e c0 ; 0xf9241 + mov bl, byte [es:bx] ; 26 8a 1f ; 0xf9243 + db 0feh, 0c3h + ; inc bl ; fe c3 ; 0xf9246 ahci.c:797 + mov si, strict word 00075h ; be 75 00 ; 0xf9248 ahci.c:43 + mov byte [es:si], bl ; 26 88 1c ; 0xf924b + jmp near 0930ch ; e9 bb 00 ; 0xf924e ahci.c:800 + cmp ax, 0eb14h ; 3d 14 eb ; 0xf9251 + jne short 092aeh ; 75 58 ; 0xf9254 + cmp si, 00101h ; 81 fe 01 01 ; 0xf9256 + jne short 092aeh ; 75 52 ; 0xf925a + mov es, [bp-016h] ; 8e 46 ea ; 0xf925c ahci.c:805 + mov bx, word [bp-026h] ; 8b 5e da ; 0xf925f + mov word [es:bx+006h], strict word 00000h ; 26 c7 47 06 00 00 ; 0xf9262 + mov word [es:bx+004h], strict word 00000h ; 26 c7 47 04 00 00 ; 0xf9268 + mov word [es:bx+002h], strict word 00000h ; 26 c7 47 02 00 00 ; 0xf926e + mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf9274 + lea dx, [bp-00234h] ; 8d 96 cc fd ; 0xf9279 ahci.c:806 + mov word [es:bx+008h], dx ; 26 89 57 08 ; 0xf927d + mov [es:bx+00ah], ss ; 26 8c 57 0a ; 0xf9281 + mov word [es:bx+00eh], strict word 00001h ; 26 c7 47 0e 01 00 ; 0xf9285 ahci.c:807 + mov word [es:bx+010h], 00200h ; 26 c7 47 10 00 02 ; 0xf928b ahci.c:808 + mov bx, 000a1h ; bb a1 00 ; 0xf9291 ahci.c:809 + mov ax, word [bp-026h] ; 8b 46 da ; 0xf9294 + mov dx, es ; 8c c2 ; 0xf9297 + call 08520h ; e8 84 f2 ; 0xf9299 + mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf929c ahci.c:812 + mov byte [bp-00ah], al ; 88 46 f6 ; 0xf929f + test byte [bp-00234h], 080h ; f6 86 cc fd 80 ; 0xf92a2 ahci.c:814 + je short 092b0h ; 74 07 ; 0xf92a7 + mov cx, strict word 00001h ; b9 01 00 ; 0xf92a9 + jmp short 092b2h ; eb 04 ; 0xf92ac + jmp short 0930ch ; eb 5c ; 0xf92ae + xor cx, cx ; 31 c9 ; 0xf92b0 + mov bl, byte [bp-00eh] ; 8a 5e f2 ; 0xf92b2 ahci.c:816 + xor bh, bh ; 30 ff ; 0xf92b5 + mov es, [bp-016h] ; 8e 46 ea ; 0xf92b7 + add bx, word [bp-026h] ; 03 5e da ; 0xf92ba + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf92bd + mov byte [es:bx+0022dh], al ; 26 88 87 2d 02 ; 0xf92c0 + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf92c5 ahci.c:817 + xor ah, ah ; 30 e4 ; 0xf92c8 + mov dx, strict word 0001ch ; ba 1c 00 ; 0xf92ca + imul dx ; f7 ea ; 0xf92cd + mov bx, word [bp-026h] ; 8b 5e da ; 0xf92cf + add bx, ax ; 01 c3 ; 0xf92d2 + mov word [es:bx+022h], 00505h ; 26 c7 47 22 05 05 ; 0xf92d4 + mov byte [es:bx+024h], cl ; 26 88 4f 24 ; 0xf92da ahci.c:819 + mov word [es:bx+028h], 00800h ; 26 c7 47 28 00 08 ; 0xf92de ahci.c:820 + mov byte [es:bx+027h], 000h ; 26 c6 47 27 00 ; 0xf92e4 ahci.c:821 + mov bx, word [bp-026h] ; 8b 5e da ; 0xf92e9 ahci.c:824 + mov dl, byte [es:bx+001f3h] ; 26 8a 97 f3 01 ; 0xf92ec + mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf92f1 ahci.c:825 + add AL, strict byte 00ch ; 04 0c ; 0xf92f4 + mov bl, dl ; 88 d3 ; 0xf92f6 + xor bh, bh ; 30 ff ; 0xf92f8 + add bx, word [bp-026h] ; 03 5e da ; 0xf92fa + mov byte [es:bx+001f4h], al ; 26 88 87 f4 01 ; 0xf92fd + db 0feh, 0c2h + ; inc dl ; fe c2 ; 0xf9302 ahci.c:826 + mov bx, word [bp-026h] ; 8b 5e da ; 0xf9304 ahci.c:827 + mov byte [es:bx+001f3h], dl ; 26 88 97 f3 01 ; 0xf9307 + inc byte [bp-00eh] ; fe 46 f2 ; 0xf930c ahci.c:832 + mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf930f ahci.c:833 + mov es, [bp-016h] ; 8e 46 ea ; 0xf9312 + mov bx, word [bp-026h] ; 8b 5e da ; 0xf9315 + mov byte [es:bx+00231h], al ; 26 88 87 31 02 ; 0xf9318 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf931d ahci.c:838 + pop di ; 5f ; 0xf9320 + pop si ; 5e ; 0xf9321 + pop cx ; 59 ; 0xf9322 + pop bp ; 5d ; 0xf9323 + retn ; c3 ; 0xf9324 + ; disGetNextSymbol 0xf9325 LB 0xc23 -> off=0x0 cb=000000000000003a uValue=00000000000f7d25 'ahci_mem_alloc' +ahci_mem_alloc: ; 0xf9325 LB 0x3a + push bx ; 53 ; 0xf9325 ahci.c:843 + push cx ; 51 ; 0xf9326 + push dx ; 52 ; 0xf9327 + push di ; 57 ; 0xf9328 + push bp ; 55 ; 0xf9329 + mov bp, sp ; 89 e5 ; 0xf932a + mov di, 00413h ; bf 13 04 ; 0xf932c ahci.c:48 + xor ax, ax ; 31 c0 ; 0xf932f + mov es, ax ; 8e c0 ; 0xf9331 + mov ax, word [es:di] ; 26 8b 05 ; 0xf9333 + test ax, ax ; 85 c0 ; 0xf9336 ahci.c:852 + je short 09359h ; 74 1f ; 0xf9338 + dec ax ; 48 ; 0xf933a ahci.c:853 + mov bx, ax ; 89 c3 ; 0xf933b + xor dx, dx ; 31 d2 ; 0xf933d ahci.c:856 + mov cx, strict word 0000ah ; b9 0a 00 ; 0xf933f + sal ax, 1 ; d1 e0 ; 0xf9342 + rcl dx, 1 ; d1 d2 ; 0xf9344 + loop 09342h ; e2 fa ; 0xf9346 + mov di, dx ; 89 d7 ; 0xf9348 + mov cx, strict word 00004h ; b9 04 00 ; 0xf934a + shr di, 1 ; d1 ef ; 0xf934d + rcr ax, 1 ; d1 d8 ; 0xf934f + loop 0934dh ; e2 fa ; 0xf9351 + mov di, 00413h ; bf 13 04 ; 0xf9353 ahci.c:53 + mov word [es:di], bx ; 26 89 1d ; 0xf9356 + pop bp ; 5d ; 0xf9359 ahci.c:861 + pop di ; 5f ; 0xf935a + pop dx ; 5a ; 0xf935b + pop cx ; 59 ; 0xf935c + pop bx ; 5b ; 0xf935d + retn ; c3 ; 0xf935e + ; disGetNextSymbol 0xf935f LB 0xbe9 -> off=0x0 cb=0000000000000157 uValue=00000000000f7d5f 'ahci_hba_init' +ahci_hba_init: ; 0xf935f LB 0x157 + push bp ; 55 ; 0xf935f ahci.c:866 + mov bp, sp ; 89 e5 ; 0xf9360 + push bx ; 53 ; 0xf9362 + push cx ; 51 ; 0xf9363 + push dx ; 52 ; 0xf9364 + push si ; 56 ; 0xf9365 + push di ; 57 ; 0xf9366 + sub sp, strict byte 00006h ; 83 ec 06 ; 0xf9367 + mov si, ax ; 89 c6 ; 0xf936a + mov bx, strict word 0000eh ; bb 0e 00 ; 0xf936c ahci.c:48 + mov ax, strict word 00040h ; b8 40 00 ; 0xf936f + mov es, ax ; 8e c0 ; 0xf9372 + mov di, word [es:bx] ; 26 8b 3f ; 0xf9374 + mov bx, 00122h ; bb 22 01 ; 0xf9377 ahci.c:877 + mov ax, strict word 00010h ; b8 10 00 ; 0xf937a ahci.c:879 + xor cx, cx ; 31 c9 ; 0xf937d + mov dx, si ; 89 f2 ; 0xf937f + xchg cx, ax ; 91 ; 0xf9381 + sal eax, 010h ; 66 c1 e0 10 ; 0xf9382 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf9386 + out DX, eax ; 66 ef ; 0xf9388 + lea dx, [si+004h] ; 8d 54 04 ; 0xf938a + in eax, DX ; 66 ed ; 0xf938d + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf938f + shr eax, 010h ; 66 c1 e8 10 ; 0xf9391 + xchg dx, ax ; 92 ; 0xf9395 + call 09325h ; e8 8c ff ; 0xf9396 ahci.c:885 + mov word [bp-010h], ax ; 89 46 f0 ; 0xf9399 + test ax, ax ; 85 c0 ; 0xf939c ahci.c:886 + jne short 093a3h ; 75 03 ; 0xf939e + jmp near 094ach ; e9 09 01 ; 0xf93a0 + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf93a3 ahci.c:889 + mov es, di ; 8e c7 ; 0xf93a6 + mov word [es:bx+00232h], ax ; 26 89 87 32 02 ; 0xf93a8 + mov byte [es:bx+00231h], 000h ; 26 c6 87 31 02 00 ; 0xf93ad ahci.c:895 + xor bx, bx ; 31 db ; 0xf93b3 ahci.c:897 + mov es, ax ; 8e c0 ; 0xf93b5 + mov byte [es:bx+00262h], 0ffh ; 26 c6 87 62 02 ff ; 0xf93b7 ahci.c:898 + mov word [es:bx+00260h], si ; 26 89 b7 60 02 ; 0xf93bd ahci.c:899 + mov word [es:bx+00264h], 0c000h ; 26 c7 87 64 02 00 c0 ; 0xf93c2 ahci.c:904 + mov word [es:bx+00266h], strict word 0000ch ; 26 c7 87 66 02 0c 00 ; 0xf93c9 + mov ax, strict word 00004h ; b8 04 00 ; 0xf93d0 ahci.c:252 + xor cx, cx ; 31 c9 ; 0xf93d3 + mov dx, si ; 89 f2 ; 0xf93d5 + xchg cx, ax ; 91 ; 0xf93d7 + sal eax, 010h ; 66 c1 e0 10 ; 0xf93d8 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf93dc + out DX, eax ; 66 ef ; 0xf93de + lea bx, [si+004h] ; 8d 5c 04 ; 0xf93e0 ahci.c:253 + mov dx, bx ; 89 da ; 0xf93e3 + in eax, DX ; 66 ed ; 0xf93e5 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf93e7 + shr eax, 010h ; 66 c1 e8 10 ; 0xf93e9 + xchg dx, ax ; 92 ; 0xf93ed + or AL, strict byte 001h ; 0c 01 ; 0xf93ee + mov cx, dx ; 89 d1 ; 0xf93f0 + mov dx, bx ; 89 da ; 0xf93f2 + xchg cx, ax ; 91 ; 0xf93f4 + sal eax, 010h ; 66 c1 e0 10 ; 0xf93f5 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf93f9 + out DX, eax ; 66 ef ; 0xf93fb + mov ax, strict word 00004h ; b8 04 00 ; 0xf93fd ahci.c:910 + xor cx, cx ; 31 c9 ; 0xf9400 + mov dx, si ; 89 f2 ; 0xf9402 + xchg cx, ax ; 91 ; 0xf9404 + sal eax, 010h ; 66 c1 e0 10 ; 0xf9405 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf9409 + out DX, eax ; 66 ef ; 0xf940b + lea bx, [si+004h] ; 8d 5c 04 ; 0xf940d + mov dx, bx ; 89 da ; 0xf9410 + in eax, DX ; 66 ed ; 0xf9412 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf9414 + shr eax, 010h ; 66 c1 e8 10 ; 0xf9416 + xchg dx, ax ; 92 ; 0xf941a + test AL, strict byte 001h ; a8 01 ; 0xf941b ahci.c:911 + jne short 093fdh ; 75 de ; 0xf941d + xor ax, ax ; 31 c0 ; 0xf941f ahci.c:913 + xor cx, cx ; 31 c9 ; 0xf9421 + mov dx, si ; 89 f2 ; 0xf9423 + xchg cx, ax ; 91 ; 0xf9425 + sal eax, 010h ; 66 c1 e0 10 ; 0xf9426 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf942a + out DX, eax ; 66 ef ; 0xf942c + mov dx, bx ; 89 da ; 0xf942e + in eax, DX ; 66 ed ; 0xf9430 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf9432 + shr eax, 010h ; 66 c1 e8 10 ; 0xf9434 + xchg dx, ax ; 92 ; 0xf9438 + xor bx, bx ; 31 db ; 0xf9439 ahci.c:914 + push bx ; 53 ; 0xf943b + mov bx, strict word 0001fh ; bb 1f 00 ; 0xf943c + xor cx, cx ; 31 c9 ; 0xf943f + call 0838dh ; e8 49 ef ; 0xf9441 + db 0feh, 0c0h + ; inc al ; fe c0 ; 0xf9444 + mov byte [bp-00eh], al ; 88 46 f2 ; 0xf9446 + mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf9449 ahci.c:919 + jmp short 09470h ; eb 21 ; 0xf944d ahci.c:920 + xor al, al ; 30 c0 ; 0xf944f ahci.c:272 + test al, al ; 84 c0 ; 0xf9451 ahci.c:273 + je short 09467h ; 74 12 ; 0xf9453 + mov bl, byte [bp-00ch] ; 8a 5e f4 ; 0xf9455 ahci.c:925 + xor bh, bh ; 30 ff ; 0xf9458 + xor ax, ax ; 31 c0 ; 0xf945a + mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf945c + call 08e1ch ; e8 ba f9 ; 0xf945f + dec byte [bp-00eh] ; fe 4e f2 ; 0xf9462 ahci.c:926 + je short 094aah ; 74 43 ; 0xf9465 ahci.c:927 + inc byte [bp-00ch] ; fe 46 f4 ; 0xf9467 ahci.c:930 + cmp byte [bp-00ch], 020h ; 80 7e f4 20 ; 0xf946a ahci.c:931 + jnc short 094aah ; 73 3a ; 0xf946e + mov cl, byte [bp-00ch] ; 8a 4e f4 ; 0xf9470 + xor ch, ch ; 30 ed ; 0xf9473 + mov bx, strict word 00001h ; bb 01 00 ; 0xf9475 + xor di, di ; 31 ff ; 0xf9478 + jcxz 09482h ; e3 06 ; 0xf947a + sal bx, 1 ; d1 e3 ; 0xf947c + rcl di, 1 ; d1 d7 ; 0xf947e + loop 0947ch ; e2 fa ; 0xf9480 + mov ax, strict word 0000ch ; b8 0c 00 ; 0xf9482 + xor cx, cx ; 31 c9 ; 0xf9485 + mov dx, si ; 89 f2 ; 0xf9487 + xchg cx, ax ; 91 ; 0xf9489 + sal eax, 010h ; 66 c1 e0 10 ; 0xf948a + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf948e + out DX, eax ; 66 ef ; 0xf9490 + lea dx, [si+004h] ; 8d 54 04 ; 0xf9492 + in eax, DX ; 66 ed ; 0xf9495 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf9497 + shr eax, 010h ; 66 c1 e8 10 ; 0xf9499 + xchg dx, ax ; 92 ; 0xf949d + test dx, di ; 85 fa ; 0xf949e + jne short 094a6h ; 75 04 ; 0xf94a0 + test ax, bx ; 85 d8 ; 0xf94a2 + je short 0944fh ; 74 a9 ; 0xf94a4 + mov AL, strict byte 001h ; b0 01 ; 0xf94a6 + jmp short 09451h ; eb a7 ; 0xf94a8 + xor ax, ax ; 31 c0 ; 0xf94aa ahci.c:933 + lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf94ac ahci.c:934 + pop di ; 5f ; 0xf94af + pop si ; 5e ; 0xf94b0 + pop dx ; 5a ; 0xf94b1 + pop cx ; 59 ; 0xf94b2 + pop bx ; 5b ; 0xf94b3 + pop bp ; 5d ; 0xf94b4 + retn ; c3 ; 0xf94b5 + ; disGetNextSymbol 0xf94b6 LB 0xa92 -> off=0x17 cb=0000000000000139 uValue=00000000000f7ecd 'ahci_init' + db 00bh, 005h, 004h, 003h, 002h, 001h, 000h, 0b3h, 095h, 091h, 095h, 097h, 095h, 09dh, 095h, 0a3h + db 095h, 0a9h, 095h, 0afh, 095h, 0b3h, 095h +ahci_init: ; 0xf94cd LB 0x139 + push bp ; 55 ; 0xf94cd ahci.c:939 + mov bp, sp ; 89 e5 ; 0xf94ce + push si ; 56 ; 0xf94d0 + push di ; 57 ; 0xf94d1 + sub sp, strict byte 00012h ; 83 ec 12 ; 0xf94d2 + mov ax, 00601h ; b8 01 06 ; 0xf94d5 ahci.c:943 + mov dx, strict word 00001h ; ba 01 00 ; 0xf94d8 + call 09a08h ; e8 2a 05 ; 0xf94db + mov dx, ax ; 89 c2 ; 0xf94de + cmp ax, strict word 0ffffh ; 3d ff ff ; 0xf94e0 ahci.c:944 + je short 0952eh ; 74 49 ; 0xf94e3 + mov al, ah ; 88 e0 ; 0xf94e5 ahci.c:949 + mov byte [bp-008h], ah ; 88 66 f8 ; 0xf94e7 + mov byte [bp-00ah], dl ; 88 56 f6 ; 0xf94ea ahci.c:950 + xor dh, ah ; 30 e6 ; 0xf94ed ahci.c:955 + xor ah, ah ; 30 e4 ; 0xf94ef + mov bx, strict word 00034h ; bb 34 00 ; 0xf94f1 + call 09a33h ; e8 3c 05 ; 0xf94f4 + mov cl, al ; 88 c1 ; 0xf94f7 + test cl, cl ; 84 c9 ; 0xf94f9 ahci.c:957 + je short 09531h ; 74 34 ; 0xf94fb + mov bl, cl ; 88 cb ; 0xf94fd ahci.c:959 + xor bh, bh ; 30 ff ; 0xf94ff + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf9501 + mov byte [bp-00ch], al ; 88 46 f4 ; 0xf9504 + mov byte [bp-00bh], bh ; 88 7e f5 ; 0xf9507 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf950a + mov byte [bp-012h], al ; 88 46 ee ; 0xf950d + mov byte [bp-011h], bh ; 88 7e ef ; 0xf9510 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9513 + mov ax, word [bp-012h] ; 8b 46 ee ; 0xf9516 + call 09a33h ; e8 17 05 ; 0xf9519 + cmp AL, strict byte 012h ; 3c 12 ; 0xf951c ahci.c:963 + je short 09531h ; 74 11 ; 0xf951e + mov bl, cl ; 88 cb ; 0xf9520 ahci.c:967 + db 0feh, 0c3h + ; inc bl ; fe c3 ; 0xf9522 + xor bh, bh ; 30 ff ; 0xf9524 + mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9526 + mov ax, word [bp-012h] ; 8b 46 ee ; 0xf9529 + jmp short 094f4h ; eb c6 ; 0xf952c ahci.c:968 + jmp near 095ffh ; e9 ce 00 ; 0xf952e + test cl, cl ; 84 c9 ; 0xf9531 ahci.c:970 + je short 0952eh ; 74 f9 ; 0xf9533 + add cl, 002h ; 80 c1 02 ; 0xf9535 ahci.c:977 + mov bl, cl ; 88 cb ; 0xf9538 ahci.c:979 + xor bh, bh ; 30 ff ; 0xf953a + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf953c + mov byte [bp-00eh], al ; 88 46 f2 ; 0xf953f + mov byte [bp-00dh], bh ; 88 7e f3 ; 0xf9542 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf9545 + mov byte [bp-014h], al ; 88 46 ec ; 0xf9548 + mov byte [bp-013h], bh ; 88 7e ed ; 0xf954b + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf954e + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf9551 + call 09a33h ; e8 dc 04 ; 0xf9554 + cmp AL, strict byte 010h ; 3c 10 ; 0xf9557 ahci.c:980 + jne short 0952eh ; 75 d3 ; 0xf9559 + mov byte [bp-006h], 000h ; c6 46 fa 00 ; 0xf955b ahci.c:983 + mov bl, cl ; 88 cb ; 0xf955f ahci.c:985 + add bl, 002h ; 80 c3 02 ; 0xf9561 + xor bh, bh ; 30 ff ; 0xf9564 + mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9566 + mov ax, word [bp-014h] ; 8b 46 ec ; 0xf9569 + call 09a5ah ; e8 eb 04 ; 0xf956c + mov dx, ax ; 89 c2 ; 0xf956f + and ax, strict word 0000fh ; 25 0f 00 ; 0xf9571 ahci.c:989 + sub ax, strict word 00004h ; 2d 04 00 ; 0xf9574 + cmp ax, strict word 0000bh ; 3d 0b 00 ; 0xf9577 + jnbe short 095b3h ; 77 37 ; 0xf957a + push CS ; 0e ; 0xf957c + pop ES ; 07 ; 0xf957d + mov cx, strict word 00008h ; b9 08 00 ; 0xf957e + mov di, 094b6h ; bf b6 94 ; 0xf9581 + repne scasb ; f2 ae ; 0xf9584 + sal cx, 1 ; d1 e1 ; 0xf9586 + mov di, cx ; 89 cf ; 0xf9588 + mov ax, word [cs:di-06b43h] ; 2e 8b 85 bd 94 ; 0xf958a + jmp ax ; ff e0 ; 0xf958f + mov byte [bp-006h], 010h ; c6 46 fa 10 ; 0xf9591 ahci.c:992 + jmp short 095b3h ; eb 1c ; 0xf9595 ahci.c:993 + mov byte [bp-006h], 014h ; c6 46 fa 14 ; 0xf9597 ahci.c:995 + jmp short 095b3h ; eb 16 ; 0xf959b ahci.c:996 + mov byte [bp-006h], 018h ; c6 46 fa 18 ; 0xf959d ahci.c:998 + jmp short 095b3h ; eb 10 ; 0xf95a1 ahci.c:999 + mov byte [bp-006h], 01ch ; c6 46 fa 1c ; 0xf95a3 ahci.c:1001 + jmp short 095b3h ; eb 0a ; 0xf95a7 ahci.c:1002 + mov byte [bp-006h], 020h ; c6 46 fa 20 ; 0xf95a9 ahci.c:1004 + jmp short 095b3h ; eb 04 ; 0xf95ad ahci.c:1005 + mov byte [bp-006h], 024h ; c6 46 fa 24 ; 0xf95af ahci.c:1007 + mov CL, strict byte 004h ; b1 04 ; 0xf95b3 ahci.c:1016 + mov si, dx ; 89 d6 ; 0xf95b5 + shr si, CL ; d3 ee ; 0xf95b7 + sal si, 1 ; d1 e6 ; 0xf95b9 + sal si, 1 ; d1 e6 ; 0xf95bb + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf95bd ahci.c:1018 + test al, al ; 84 c0 ; 0xf95c0 + je short 095ffh ; 74 3b ; 0xf95c2 + mov bl, al ; 88 c3 ; 0xf95c4 ahci.c:1020 + xor bh, bh ; 30 ff ; 0xf95c6 + mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf95c8 + mov byte [bp-010h], al ; 88 46 f0 ; 0xf95cb + mov byte [bp-00fh], bh ; 88 7e f1 ; 0xf95ce + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf95d1 + mov byte [bp-016h], al ; 88 46 ea ; 0xf95d4 + mov byte [bp-015h], bh ; 88 7e eb ; 0xf95d7 + mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf95da + mov ax, word [bp-016h] ; 8b 46 ea ; 0xf95dd + call 09a7fh ; e8 9c 04 ; 0xf95e0 + test AL, strict byte 001h ; a8 01 ; 0xf95e3 ahci.c:1024 + je short 095ffh ; 74 18 ; 0xf95e5 + and AL, strict byte 0f0h ; 24 f0 ; 0xf95e7 ahci.c:1027 + add si, ax ; 01 c6 ; 0xf95e9 + mov cx, strict word 00007h ; b9 07 00 ; 0xf95eb ahci.c:1030 + mov bx, strict word 00004h ; bb 04 00 ; 0xf95ee + mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf95f1 + mov ax, word [bp-016h] ; 8b 46 ea ; 0xf95f4 + call 09abeh ; e8 c4 04 ; 0xf95f7 + mov ax, si ; 89 f0 ; 0xf95fa ahci.c:1033 + call 0935fh ; e8 60 fd ; 0xf95fc + lea sp, [bp-004h] ; 8d 66 fc ; 0xf95ff ahci.c:1047 + pop di ; 5f ; 0xf9602 + pop si ; 5e ; 0xf9603 + pop bp ; 5d ; 0xf9604 + retn ; c3 ; 0xf9605 + ; disGetNextSymbol 0xf9606 LB 0x942 -> off=0x0 cb=000000000000001b uValue=00000000000f8006 'apm_out_str' +apm_out_str: ; 0xf9606 LB 0x1b + push bp ; 55 ; 0xf9606 apm.c:146 + mov bp, sp ; 89 e5 ; 0xf9607 + push bx ; 53 ; 0xf9609 + mov bx, ax ; 89 c3 ; 0xf960a + cmp byte [bx], 000h ; 80 3f 00 ; 0xf960c apm.c:148 + je short 0961bh ; 74 0a ; 0xf960f + mov al, byte [bx] ; 8a 07 ; 0xf9611 apm.c:149 + out DX, AL ; ee ; 0xf9613 + inc bx ; 43 ; 0xf9614 + mov al, byte [bx] ; 8a 07 ; 0xf9615 + db 00ah, 0c0h + ; or al, al ; 0a c0 ; 0xf9617 + jne short 09613h ; 75 f8 ; 0xf9619 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf961b apm.c:150 + pop bx ; 5b ; 0xf961e + pop bp ; 5d ; 0xf961f + retn ; c3 ; 0xf9620 + ; disGetNextSymbol 0xf9621 LB 0x927 -> off=0x1d cb=00000000000000da uValue=00000000000f803e 'apm_function' + db 00eh, 00bh, 007h, 006h, 005h, 004h, 002h, 001h, 000h, 0e4h, 096h, 06ch, 096h, 012h, 097h, 07eh + db 096h, 012h, 097h, 099h, 096h, 012h, 097h, 09eh, 096h, 0dfh, 096h, 0d8h, 096h +apm_function: ; 0xf963e LB 0xda + push bp ; 55 ; 0xf963e apm.c:152 + mov bp, sp ; 89 e5 ; 0xf963f + push di ; 57 ; 0xf9641 + and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf9642 apm.c:156 + mov dx, word [bp+012h] ; 8b 56 12 ; 0xf9646 apm.c:157 + xor dh, dh ; 30 f6 ; 0xf9649 + cmp dx, strict byte 0000eh ; 83 fa 0e ; 0xf964b + jnbe short 096bbh ; 77 6b ; 0xf964e + mov al, dl ; 88 d0 ; 0xf9650 + push CS ; 0e ; 0xf9652 + pop ES ; 07 ; 0xf9653 + mov cx, strict word 0000ah ; b9 0a 00 ; 0xf9654 + mov di, 09621h ; bf 21 96 ; 0xf9657 + repne scasb ; f2 ae ; 0xf965a + sal cx, 1 ; d1 e1 ; 0xf965c + mov di, cx ; 89 cf ; 0xf965e + mov bx, word [cs:di-069d6h] ; 2e 8b 9d 2a 96 ; 0xf9660 + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf9665 + or AL, strict byte 001h ; 0c 01 ; 0xf9668 + jmp bx ; ff e3 ; 0xf966a + mov word [bp+012h], 00102h ; c7 46 12 02 01 ; 0xf966c apm.c:159 + mov word [bp+00ch], 0504dh ; c7 46 0c 4d 50 ; 0xf9671 apm.c:160 + mov word [bp+010h], strict word 00003h ; c7 46 10 03 00 ; 0xf9676 apm.c:161 + jmp near 09712h ; e9 94 00 ; 0xf967b apm.c:162 + mov word [bp+012h], 0f000h ; c7 46 12 00 f0 ; 0xf967e apm.c:172 + mov word [bp+00ch], 09cb4h ; c7 46 0c b4 9c ; 0xf9683 apm.c:173 + mov word [bp+010h], 0f000h ; c7 46 10 00 f0 ; 0xf9688 apm.c:174 + mov ax, strict word 0fff0h ; b8 f0 ff ; 0xf968d apm.c:175 + mov word [bp+006h], ax ; 89 46 06 ; 0xf9690 + mov word [bp+004h], ax ; 89 46 04 ; 0xf9693 apm.c:176 + jmp near 09712h ; e9 79 00 ; 0xf9696 apm.c:177 + sti ; fb ; 0xf9699 apm.c:194 + hlt ; f4 ; 0xf969a apm.c:195 + jmp near 09712h ; e9 74 00 ; 0xf969b apm.c:196 + cmp word [bp+010h], strict byte 00003h ; 83 7e 10 03 ; 0xf969e apm.c:200 + je short 096c5h ; 74 21 ; 0xf96a2 + cmp word [bp+010h], strict byte 00002h ; 83 7e 10 02 ; 0xf96a4 + je short 096bdh ; 74 13 ; 0xf96a8 + cmp word [bp+010h], strict byte 00001h ; 83 7e 10 01 ; 0xf96aa + jne short 096cdh ; 75 1d ; 0xf96ae + mov dx, 0040fh ; ba 0f 04 ; 0xf96b0 apm.c:202 + mov ax, 00d10h ; b8 10 0d ; 0xf96b3 + call 09606h ; e8 4d ff ; 0xf96b6 + jmp short 09712h ; eb 57 ; 0xf96b9 apm.c:203 + jmp short 096e4h ; eb 27 ; 0xf96bb + mov dx, 0040fh ; ba 0f 04 ; 0xf96bd apm.c:205 + mov ax, 00d18h ; b8 18 0d ; 0xf96c0 + jmp short 096b6h ; eb f1 ; 0xf96c3 + mov dx, 0040fh ; ba 0f 04 ; 0xf96c5 apm.c:208 + mov ax, 00d20h ; b8 20 0d ; 0xf96c8 + jmp short 096b6h ; eb e9 ; 0xf96cb + or dh, 00ah ; 80 ce 0a ; 0xf96cd apm.c:211 + mov word [bp+012h], dx ; 89 56 12 ; 0xf96d0 + mov word [bp+018h], ax ; 89 46 18 ; 0xf96d3 apm.c:212 + jmp short 09712h ; eb 3a ; 0xf96d6 apm.c:214 + mov word [bp+012h], 00102h ; c7 46 12 02 01 ; 0xf96d8 apm.c:216 + jmp short 09712h ; eb 33 ; 0xf96dd apm.c:217 + or dh, 080h ; 80 ce 80 ; 0xf96df apm.c:224 + jmp short 096d0h ; eb ec ; 0xf96e2 + mov bx, 00da0h ; bb a0 0d ; 0xf96e4 apm.c:228 + mov cx, ds ; 8c d9 ; 0xf96e7 + mov ax, strict word 00004h ; b8 04 00 ; 0xf96e9 + call 018cch ; e8 dd 81 ; 0xf96ec + push word [bp+00ch] ; ff 76 0c ; 0xf96ef + push word [bp+012h] ; ff 76 12 ; 0xf96f2 + mov ax, 00d29h ; b8 29 0d ; 0xf96f5 + push ax ; 50 ; 0xf96f8 + mov ax, strict word 00004h ; b8 04 00 ; 0xf96f9 + push ax ; 50 ; 0xf96fc + call 0190fh ; e8 0f 82 ; 0xf96fd + add sp, strict byte 00008h ; 83 c4 08 ; 0xf9700 + mov ax, word [bp+012h] ; 8b 46 12 ; 0xf9703 apm.c:229 + xor ah, ah ; 30 e4 ; 0xf9706 + or ah, 00ch ; 80 cc 0c ; 0xf9708 + mov word [bp+012h], ax ; 89 46 12 ; 0xf970b + or byte [bp+018h], 001h ; 80 4e 18 01 ; 0xf970e apm.c:230 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf9712 apm.c:232 + pop di ; 5f ; 0xf9715 + pop bp ; 5d ; 0xf9716 + retn ; c3 ; 0xf9717 + ; disGetNextSymbol 0xf9718 LB 0x830 -> off=0x0 cb=0000000000000024 uValue=00000000000f8118 'pci16_select_reg' +pci16_select_reg: ; 0xf9718 LB 0x24 + push bp ; 55 ; 0xf9718 pcibios.c:188 + mov bp, sp ; 89 e5 ; 0xf9719 + push bx ; 53 ; 0xf971b + and dl, 0fch ; 80 e2 fc ; 0xf971c pcibios.c:190 + mov bx, dx ; 89 d3 ; 0xf971f + mov dx, 00cf8h ; ba f8 0c ; 0xf9721 + movzx eax, ax ; 66 0f b7 c0 ; 0xf9724 + sal eax, 008h ; 66 c1 e0 08 ; 0xf9728 + or eax, strict dword 080000000h ; 66 0d 00 00 00 80 ; 0xf972c + db 08ah, 0c3h + ; mov al, bl ; 8a c3 ; 0xf9732 + out DX, eax ; 66 ef ; 0xf9734 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf9736 pcibios.c:191 + pop bx ; 5b ; 0xf9739 + pop bp ; 5d ; 0xf973a + retn ; c3 ; 0xf973b + ; disGetNextSymbol 0xf973c LB 0x80c -> off=0x0 cb=00000000000000eb uValue=00000000000f813c 'pci16_find_device' +pci16_find_device: ; 0xf973c LB 0xeb + push bp ; 55 ; 0xf973c pcibios.c:221 + mov bp, sp ; 89 e5 ; 0xf973d + push si ; 56 ; 0xf973f + push di ; 57 ; 0xf9740 + sub sp, strict byte 0000ch ; 83 ec 0c ; 0xf9741 + push ax ; 50 ; 0xf9744 + push dx ; 52 ; 0xf9745 + mov si, bx ; 89 de ; 0xf9746 + mov di, cx ; 89 cf ; 0xf9748 + test cx, cx ; 85 c9 ; 0xf974a pcibios.c:231 + xor bx, bx ; 31 db ; 0xf974c pcibios.c:238 + mov byte [bp-006h], 000h ; c6 46 fa 00 ; 0xf974e pcibios.c:239 + test bl, 007h ; f6 c3 07 ; 0xf9752 pcibios.c:249 + jne short 09784h ; 75 2d ; 0xf9755 + mov dx, strict word 0000eh ; ba 0e 00 ; 0xf9757 pcibios.c:250 + mov ax, bx ; 89 d8 ; 0xf975a + call 09718h ; e8 b9 ff ; 0xf975c + mov dx, 00cfeh ; ba fe 0c ; 0xf975f pcibios.c:251 + in AL, DX ; ec ; 0xf9762 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf9763 + mov byte [bp-008h], al ; 88 46 f8 ; 0xf9765 + cmp AL, strict byte 0ffh ; 3c ff ; 0xf9768 pcibios.c:252 + jne short 09772h ; 75 06 ; 0xf976a + add bx, strict byte 00008h ; 83 c3 08 ; 0xf976c pcibios.c:253 + jmp near 09804h ; e9 92 00 ; 0xf976f pcibios.c:254 + test byte [bp-008h], 080h ; f6 46 f8 80 ; 0xf9772 pcibios.c:256 + je short 0977fh ; 74 07 ; 0xf9776 + mov word [bp-00eh], strict word 00001h ; c7 46 f2 01 00 ; 0xf9778 pcibios.c:257 + jmp short 09784h ; eb 05 ; 0xf977d pcibios.c:258 + mov word [bp-00eh], strict word 00008h ; c7 46 f2 08 00 ; 0xf977f pcibios.c:259 + mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf9784 pcibios.c:270 + and AL, strict byte 007h ; 24 07 ; 0xf9787 + cmp AL, strict byte 001h ; 3c 01 ; 0xf9789 + jne short 097abh ; 75 1e ; 0xf978b + mov al, bh ; 88 f8 ; 0xf978d + xor ah, ah ; 30 e4 ; 0xf978f + test ax, ax ; 85 c0 ; 0xf9791 + jne short 097abh ; 75 16 ; 0xf9793 + mov dx, strict word 0001ah ; ba 1a 00 ; 0xf9795 pcibios.c:272 + mov ax, bx ; 89 d8 ; 0xf9798 + call 09718h ; e8 7b ff ; 0xf979a + mov dx, 00cfeh ; ba fe 0c ; 0xf979d pcibios.c:273 + in AL, DX ; ec ; 0xf97a0 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf97a1 + cmp al, byte [bp-006h] ; 3a 46 fa ; 0xf97a3 pcibios.c:274 + jbe short 097abh ; 76 03 ; 0xf97a6 + mov byte [bp-006h], al ; 88 46 fa ; 0xf97a8 pcibios.c:275 + test di, di ; 85 ff ; 0xf97ab pcibios.c:279 + je short 097b4h ; 74 05 ; 0xf97ad + mov dx, strict word 00008h ; ba 08 00 ; 0xf97af + jmp short 097b6h ; eb 02 ; 0xf97b2 + xor dx, dx ; 31 d2 ; 0xf97b4 + mov ax, bx ; 89 d8 ; 0xf97b6 + call 09718h ; e8 5d ff ; 0xf97b8 + mov dx, 00cfch ; ba fc 0c ; 0xf97bb pcibios.c:280 + in eax, DX ; 66 ed ; 0xf97be + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf97c0 + shr eax, 010h ; 66 c1 e8 10 ; 0xf97c2 + xchg dx, ax ; 92 ; 0xf97c6 + mov word [bp-00ah], ax ; 89 46 f6 ; 0xf97c7 + mov word [bp-010h], dx ; 89 56 f0 ; 0xf97ca + mov word [bp-00ch], strict word 00000h ; c7 46 f4 00 00 ; 0xf97cd pcibios.c:281 + test di, di ; 85 ff ; 0xf97d2 pcibios.c:284 + je short 097e5h ; 74 0f ; 0xf97d4 + mov cx, strict word 00008h ; b9 08 00 ; 0xf97d6 pcibios.c:285 + shr dx, 1 ; d1 ea ; 0xf97d9 + rcr ax, 1 ; d1 d8 ; 0xf97db + loop 097d9h ; e2 fa ; 0xf97dd + mov word [bp-00ah], ax ; 89 46 f6 ; 0xf97df + mov word [bp-010h], dx ; 89 56 f0 ; 0xf97e2 + mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf97e5 pcibios.c:292 + cmp ax, word [bp-014h] ; 3b 46 ec ; 0xf97e8 + jne short 097f5h ; 75 08 ; 0xf97eb + mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf97ed + cmp ax, word [bp-012h] ; 3b 46 ee ; 0xf97f0 + je short 097fbh ; 74 06 ; 0xf97f3 + cmp word [bp-00ch], strict byte 00000h ; 83 7e f4 00 ; 0xf97f5 pcibios.c:293 + je short 09801h ; 74 06 ; 0xf97f9 + dec si ; 4e ; 0xf97fb + cmp si, strict byte 0ffffh ; 83 fe ff ; 0xf97fc + je short 09814h ; 74 13 ; 0xf97ff + add bx, word [bp-00eh] ; 03 5e f2 ; 0xf9801 pcibios.c:301 + mov al, bh ; 88 f8 ; 0xf9804 pcibios.c:302 + xor ah, ah ; 30 e4 ; 0xf9806 + mov dl, byte [bp-006h] ; 8a 56 fa ; 0xf9808 + xor dh, dh ; 30 f6 ; 0xf980b + cmp ax, dx ; 39 d0 ; 0xf980d + jnbe short 09814h ; 77 03 ; 0xf980f + jmp near 09752h ; e9 3e ff ; 0xf9811 + cmp si, strict byte 0ffffh ; 83 fe ff ; 0xf9814 pcibios.c:304 + jne short 0981dh ; 75 04 ; 0xf9817 pcibios.c:308 + mov ax, bx ; 89 d8 ; 0xf9819 + jmp short 09820h ; eb 03 ; 0xf981b + mov ax, strict word 0ffffh ; b8 ff ff ; 0xf981d + lea sp, [bp-004h] ; 8d 66 fc ; 0xf9820 pcibios.c:309 + pop di ; 5f ; 0xf9823 + pop si ; 5e ; 0xf9824 + pop bp ; 5d ; 0xf9825 + retn ; c3 ; 0xf9826 + ; disGetNextSymbol 0xf9827 LB 0x721 -> off=0xc cb=00000000000001d5 uValue=00000000000f8233 'pci16_function' + db 014h, 099h, 02dh, 099h, 03fh, 099h, 053h, 099h, 065h, 099h, 078h, 099h +pci16_function: ; 0xf9833 LB 0x1d5 + push bp ; 55 ; 0xf9833 pcibios.c:311 + mov bp, sp ; 89 e5 ; 0xf9834 + push si ; 56 ; 0xf9836 + push di ; 57 ; 0xf9837 + push ax ; 50 ; 0xf9838 + push ax ; 50 ; 0xf9839 + and word [bp+020h], 000ffh ; 81 66 20 ff 00 ; 0xf983a pcibios.c:318 + and word [bp+02ch], strict byte 0fffeh ; 83 66 2c fe ; 0xf983f pcibios.c:319 + mov bx, word [bp+020h] ; 8b 5e 20 ; 0xf9843 pcibios.c:321 + xor bh, bh ; 30 ff ; 0xf9846 + mov ax, word [bp+020h] ; 8b 46 20 ; 0xf9848 + xor ah, ah ; 30 e4 ; 0xf984b + cmp bx, strict byte 00003h ; 83 fb 03 ; 0xf984d + jc short 09865h ; 72 13 ; 0xf9850 + jbe short 098b8h ; 76 64 ; 0xf9852 + cmp bx, strict byte 0000eh ; 83 fb 0e ; 0xf9854 + je short 098c0h ; 74 67 ; 0xf9857 + cmp bx, strict byte 00008h ; 83 fb 08 ; 0xf9859 + jc short 0986fh ; 72 11 ; 0xf985c + cmp bx, strict byte 0000dh ; 83 fb 0d ; 0xf985e + jbe short 098c3h ; 76 60 ; 0xf9861 + jmp short 0986fh ; eb 0a ; 0xf9863 + cmp bx, strict byte 00002h ; 83 fb 02 ; 0xf9865 + je short 0988eh ; 74 24 ; 0xf9868 + cmp bx, strict byte 00001h ; 83 fb 01 ; 0xf986a + je short 09872h ; 74 03 ; 0xf986d + jmp near 099d1h ; e9 5f 01 ; 0xf986f + mov word [bp+020h], strict word 00001h ; c7 46 20 01 00 ; 0xf9872 pcibios.c:323 + mov word [bp+014h], 00210h ; c7 46 14 10 02 ; 0xf9877 pcibios.c:324 + mov word [bp+01ch], strict word 00000h ; c7 46 1c 00 00 ; 0xf987c pcibios.c:326 + mov word [bp+018h], 04350h ; c7 46 18 50 43 ; 0xf9881 pcibios.c:327 + mov word [bp+01ah], 02049h ; c7 46 1a 49 20 ; 0xf9886 + jmp near 09a01h ; e9 73 01 ; 0xf988b pcibios.c:328 + cmp word [bp+018h], strict byte 0ffffh ; 83 7e 18 ff ; 0xf988e pcibios.c:333 + jne short 0989ah ; 75 06 ; 0xf9892 + or ah, 083h ; 80 cc 83 ; 0xf9894 pcibios.c:334 + jmp near 099fah ; e9 60 01 ; 0xf9897 pcibios.c:335 + mov bx, word [bp+008h] ; 8b 5e 08 ; 0xf989a pcibios.c:337 + mov dx, word [bp+01ch] ; 8b 56 1c ; 0xf989d + mov ax, word [bp+018h] ; 8b 46 18 ; 0xf98a0 + xor cx, cx ; 31 c9 ; 0xf98a3 + call 0973ch ; e8 94 fe ; 0xf98a5 + cmp ax, strict word 0ffffh ; 3d ff ff ; 0xf98a8 pcibios.c:338 + jne short 098bah ; 75 0d ; 0xf98ab + mov ax, word [bp+020h] ; 8b 46 20 ; 0xf98ad pcibios.c:339 + xor ah, ah ; 30 e4 ; 0xf98b0 + or ah, 086h ; 80 cc 86 ; 0xf98b2 + jmp near 099fah ; e9 42 01 ; 0xf98b5 + jmp short 098c5h ; eb 0b ; 0xf98b8 + mov word [bp+014h], ax ; 89 46 14 ; 0xf98ba pcibios.c:340 + jmp near 09a01h ; e9 41 01 ; 0xf98bd pcibios.c:345 + jmp near 0998ch ; e9 c9 00 ; 0xf98c0 + jmp short 098eah ; eb 25 ; 0xf98c3 + mov bx, word [bp+008h] ; 8b 5e 08 ; 0xf98c5 pcibios.c:347 + mov ax, word [bp+01ch] ; 8b 46 1c ; 0xf98c8 + mov dx, word [bp+01eh] ; 8b 56 1e ; 0xf98cb + mov cx, strict word 00001h ; b9 01 00 ; 0xf98ce + call 0973ch ; e8 68 fe ; 0xf98d1 + cmp ax, strict word 0ffffh ; 3d ff ff ; 0xf98d4 pcibios.c:348 + jne short 098e4h ; 75 0b ; 0xf98d7 + mov ax, word [bp+020h] ; 8b 46 20 ; 0xf98d9 pcibios.c:349 + xor ah, ah ; 30 e4 ; 0xf98dc + or ah, 086h ; 80 cc 86 ; 0xf98de + jmp near 099fah ; e9 16 01 ; 0xf98e1 pcibios.c:350 + mov word [bp+014h], ax ; 89 46 14 ; 0xf98e4 pcibios.c:352 + jmp near 09a01h ; e9 17 01 ; 0xf98e7 pcibios.c:354 + cmp word [bp+004h], 00100h ; 81 7e 04 00 01 ; 0xf98ea pcibios.c:361 + jc short 098f7h ; 72 06 ; 0xf98ef + or ah, 087h ; 80 cc 87 ; 0xf98f1 pcibios.c:362 + jmp near 099fah ; e9 03 01 ; 0xf98f4 pcibios.c:363 + mov dx, word [bp+004h] ; 8b 56 04 ; 0xf98f7 pcibios.c:365 + mov ax, word [bp+014h] ; 8b 46 14 ; 0xf98fa + call 09718h ; e8 18 fe ; 0xf98fd + mov bx, word [bp+020h] ; 8b 5e 20 ; 0xf9900 pcibios.c:366 + xor bh, bh ; 30 ff ; 0xf9903 + sub bx, strict byte 00008h ; 83 eb 08 ; 0xf9905 + cmp bx, strict byte 00005h ; 83 fb 05 ; 0xf9908 + jnbe short 09975h ; 77 68 ; 0xf990b + sal bx, 1 ; d1 e3 ; 0xf990d + jmp word [cs:bx-067d9h] ; 2e ff a7 27 98 ; 0xf990f + mov bx, word [bp+01ch] ; 8b 5e 1c ; 0xf9914 pcibios.c:368 + xor bl, bl ; 30 db ; 0xf9917 + mov dx, word [bp+004h] ; 8b 56 04 ; 0xf9919 + and dx, strict byte 00003h ; 83 e2 03 ; 0xf991c + add dx, 00cfch ; 81 c2 fc 0c ; 0xf991f + in AL, DX ; ec ; 0xf9923 + db 02ah, 0e4h + ; sub ah, ah ; 2a e4 ; 0xf9924 + or bx, ax ; 09 c3 ; 0xf9926 + mov word [bp+01ch], bx ; 89 5e 1c ; 0xf9928 + jmp short 09975h ; eb 48 ; 0xf992b pcibios.c:369 + mov dx, word [bp+004h] ; 8b 56 04 ; 0xf992d pcibios.c:371 + xor dh, dh ; 30 f6 ; 0xf9930 + and dl, 002h ; 80 e2 02 ; 0xf9932 + add dx, 00cfch ; 81 c2 fc 0c ; 0xf9935 + in ax, DX ; ed ; 0xf9939 + mov word [bp+01ch], ax ; 89 46 1c ; 0xf993a + jmp short 09975h ; eb 36 ; 0xf993d pcibios.c:372 + mov dx, 00cfch ; ba fc 0c ; 0xf993f pcibios.c:374 + in eax, DX ; 66 ed ; 0xf9942 + db 08bh, 0d0h + ; mov dx, ax ; 8b d0 ; 0xf9944 + shr eax, 010h ; 66 c1 e8 10 ; 0xf9946 + xchg dx, ax ; 92 ; 0xf994a + mov word [bp+01ch], ax ; 89 46 1c ; 0xf994b + mov word [bp+01eh], dx ; 89 56 1e ; 0xf994e + jmp short 09975h ; eb 22 ; 0xf9951 pcibios.c:375 + mov ax, word [bp+01ch] ; 8b 46 1c ; 0xf9953 pcibios.c:377 + mov dx, word [bp+004h] ; 8b 56 04 ; 0xf9956 + xor dh, dh ; 30 f6 ; 0xf9959 + and dl, 003h ; 80 e2 03 ; 0xf995b + add dx, 00cfch ; 81 c2 fc 0c ; 0xf995e + out DX, AL ; ee ; 0xf9962 + jmp short 09975h ; eb 10 ; 0xf9963 pcibios.c:378 + mov ax, word [bp+01ch] ; 8b 46 1c ; 0xf9965 pcibios.c:380 + mov dx, word [bp+004h] ; 8b 56 04 ; 0xf9968 + xor dh, dh ; 30 f6 ; 0xf996b + and dl, 002h ; 80 e2 02 ; 0xf996d + add dx, 00cfch ; 81 c2 fc 0c ; 0xf9970 + out DX, ax ; ef ; 0xf9974 + jmp near 09a01h ; e9 89 00 ; 0xf9975 pcibios.c:381 + mov ax, word [bp+01ch] ; 8b 46 1c ; 0xf9978 pcibios.c:383 + mov cx, word [bp+01eh] ; 8b 4e 1e ; 0xf997b + mov dx, 00cfch ; ba fc 0c ; 0xf997e + xchg cx, ax ; 91 ; 0xf9981 + sal eax, 010h ; 66 c1 e0 10 ; 0xf9982 + db 08bh, 0c1h + ; mov ax, cx ; 8b c1 ; 0xf9986 + out DX, eax ; 66 ef ; 0xf9988 + jmp short 09a01h ; eb 75 ; 0xf998a pcibios.c:387 + mov bx, word [bp+004h] ; 8b 5e 04 ; 0xf998c pcibios.c:389 + mov es, [bp+026h] ; 8e 46 26 ; 0xf998f + mov word [bp-008h], bx ; 89 5e f8 ; 0xf9992 + mov [bp-006h], es ; 8c 46 fa ; 0xf9995 + mov cx, word [0f380h] ; 8b 0e 80 f3 ; 0xf9998 pcibios.c:393 + cmp cx, word [es:bx] ; 26 3b 0f ; 0xf999c + jbe short 099b2h ; 76 11 ; 0xf999f + mov ax, word [bp+020h] ; 8b 46 20 ; 0xf99a1 pcibios.c:394 + xor ah, ah ; 30 e4 ; 0xf99a4 + or ah, 089h ; 80 cc 89 ; 0xf99a6 + mov word [bp+020h], ax ; 89 46 20 ; 0xf99a9 + or word [bp+02ch], strict byte 00001h ; 83 4e 2c 01 ; 0xf99ac pcibios.c:395 + jmp short 099c6h ; eb 14 ; 0xf99b0 pcibios.c:396 + les di, [es:bx+002h] ; 26 c4 7f 02 ; 0xf99b2 pcibios.c:397 + mov si, 0f1a0h ; be a0 f1 ; 0xf99b6 + mov dx, ds ; 8c da ; 0xf99b9 + push DS ; 1e ; 0xf99bb + mov ds, dx ; 8e da ; 0xf99bc + rep movsb ; f3 a4 ; 0xf99be + pop DS ; 1f ; 0xf99c0 + mov word [bp+014h], 00a00h ; c7 46 14 00 0a ; 0xf99c1 pcibios.c:399 + mov ax, word [0f380h] ; a1 80 f3 ; 0xf99c6 pcibios.c:401 + les bx, [bp-008h] ; c4 5e f8 ; 0xf99c9 + mov word [es:bx], ax ; 26 89 07 ; 0xf99cc + jmp short 09a01h ; eb 30 ; 0xf99cf pcibios.c:402 + mov bx, 00da0h ; bb a0 0d ; 0xf99d1 pcibios.c:404 + mov cx, ds ; 8c d9 ; 0xf99d4 + mov ax, strict word 00004h ; b8 04 00 ; 0xf99d6 + call 018cch ; e8 f0 7e ; 0xf99d9 + mov ax, word [bp+014h] ; 8b 46 14 ; 0xf99dc + push ax ; 50 ; 0xf99df + mov ax, word [bp+020h] ; 8b 46 20 ; 0xf99e0 + push ax ; 50 ; 0xf99e3 + mov ax, 00d5ch ; b8 5c 0d ; 0xf99e4 + push ax ; 50 ; 0xf99e7 + mov ax, strict word 00004h ; b8 04 00 ; 0xf99e8 + push ax ; 50 ; 0xf99eb + call 0190fh ; e8 20 7f ; 0xf99ec + add sp, strict byte 00008h ; 83 c4 08 ; 0xf99ef + mov ax, word [bp+020h] ; 8b 46 20 ; 0xf99f2 pcibios.c:405 + xor ah, ah ; 30 e4 ; 0xf99f5 + or ah, 081h ; 80 cc 81 ; 0xf99f7 + mov word [bp+020h], ax ; 89 46 20 ; 0xf99fa + or word [bp+02ch], strict byte 00001h ; 83 4e 2c 01 ; 0xf99fd pcibios.c:406 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf9a01 pcibios.c:408 + pop di ; 5f ; 0xf9a04 + pop si ; 5e ; 0xf9a05 + pop bp ; 5d ; 0xf9a06 + retn ; c3 ; 0xf9a07 + ; disGetNextSymbol 0xf9a08 LB 0x540 -> off=0x0 cb=0000000000000008 uValue=00000000000f8408 'pci_find_classcode' +pci_find_classcode: ; 0xf9a08 LB 0x8 + push bp ; 55 ; 0xf9a08 pciutil.c:126 + mov bp, sp ; 89 e5 ; 0xf9a09 + mov ax, strict word 0ffffh ; b8 ff ff ; 0xf9a0b pciutil.c:133 + pop bp ; 5d ; 0xf9a0e + retn ; c3 ; 0xf9a0f + ; disGetNextSymbol 0xf9a10 LB 0x538 -> off=0x0 cb=0000000000000023 uValue=00000000000f8410 'pci_find_device' +pci_find_device: ; 0xf9a10 LB 0x23 + push bp ; 55 ; 0xf9a10 pciutil.c:146 + mov bp, sp ; 89 e5 ; 0xf9a11 + push bx ; 53 ; 0xf9a13 + push cx ; 51 ; 0xf9a14 + push si ; 56 ; 0xf9a15 + mov cx, dx ; 89 d1 ; 0xf9a16 + xor si, si ; 31 f6 ; 0xf9a18 pciutil.c:148 + mov dx, ax ; 89 c2 ; 0xf9a1a + mov ax, 0b102h ; b8 02 b1 ; 0xf9a1c + int 01ah ; cd 1a ; 0xf9a1f + cmp ah, 000h ; 80 fc 00 ; 0xf9a21 + je short 09a29h ; 74 03 ; 0xf9a24 + mov bx, strict word 0ffffh ; bb ff ff ; 0xf9a26 + mov ax, bx ; 89 d8 ; 0xf9a29 + lea sp, [bp-006h] ; 8d 66 fa ; 0xf9a2b pciutil.c:149 + pop si ; 5e ; 0xf9a2e + pop cx ; 59 ; 0xf9a2f + pop bx ; 5b ; 0xf9a30 + pop bp ; 5d ; 0xf9a31 + retn ; c3 ; 0xf9a32 + ; disGetNextSymbol 0xf9a33 LB 0x515 -> off=0x0 cb=0000000000000027 uValue=00000000000f8433 'pci_read_config_byte' +pci_read_config_byte: ; 0xf9a33 LB 0x27 + push bp ; 55 ; 0xf9a33 pciutil.c:151 + mov bp, sp ; 89 e5 ; 0xf9a34 + push cx ; 51 ; 0xf9a36 + push di ; 57 ; 0xf9a37 + mov dh, al ; 88 c6 ; 0xf9a38 + mov bh, dl ; 88 d7 ; 0xf9a3a + mov al, bl ; 88 d8 ; 0xf9a3c + xor ah, ah ; 30 e4 ; 0xf9a3e pciutil.c:153 + xor dl, dl ; 30 d2 ; 0xf9a40 + mov bl, bh ; 88 fb ; 0xf9a42 + mov bh, dh ; 88 f7 ; 0xf9a44 + mov di, ax ; 89 c7 ; 0xf9a46 + mov ax, 0b108h ; b8 08 b1 ; 0xf9a48 + int 01ah ; cd 1a ; 0xf9a4b + mov al, cl ; 88 c8 ; 0xf9a4d + xor ah, ah ; 30 e4 ; 0xf9a4f + xor dh, dh ; 30 f6 ; 0xf9a51 pciutil.c:154 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf9a53 + pop di ; 5f ; 0xf9a56 + pop cx ; 59 ; 0xf9a57 + pop bp ; 5d ; 0xf9a58 + retn ; c3 ; 0xf9a59 + ; disGetNextSymbol 0xf9a5a LB 0x4ee -> off=0x0 cb=0000000000000025 uValue=00000000000f845a 'pci_read_config_word' +pci_read_config_word: ; 0xf9a5a LB 0x25 + push bp ; 55 ; 0xf9a5a pciutil.c:156 + mov bp, sp ; 89 e5 ; 0xf9a5b + push cx ; 51 ; 0xf9a5d + push di ; 57 ; 0xf9a5e + mov dh, al ; 88 c6 ; 0xf9a5f + mov cl, dl ; 88 d1 ; 0xf9a61 + mov al, bl ; 88 d8 ; 0xf9a63 + xor ah, ah ; 30 e4 ; 0xf9a65 pciutil.c:158 + mov bh, dh ; 88 f7 ; 0xf9a67 + xor dh, dh ; 30 f6 ; 0xf9a69 + mov bl, dl ; 88 d3 ; 0xf9a6b + mov di, ax ; 89 c7 ; 0xf9a6d + mov ax, 0b109h ; b8 09 b1 ; 0xf9a6f + int 01ah ; cd 1a ; 0xf9a72 + mov ax, cx ; 89 c8 ; 0xf9a74 + xor dl, dl ; 30 d2 ; 0xf9a76 pciutil.c:159 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf9a78 + pop di ; 5f ; 0xf9a7b + pop cx ; 59 ; 0xf9a7c + pop bp ; 5d ; 0xf9a7d + retn ; c3 ; 0xf9a7e + ; disGetNextSymbol 0xf9a7f LB 0x4c9 -> off=0x0 cb=000000000000003f uValue=00000000000f847f 'pci_read_config_dword' +pci_read_config_dword: ; 0xf9a7f LB 0x3f + push bp ; 55 ; 0xf9a7f pciutil.c:161 + mov bp, sp ; 89 e5 ; 0xf9a80 + push cx ; 51 ; 0xf9a82 + push di ; 57 ; 0xf9a83 + push ax ; 50 ; 0xf9a84 + mov dh, al ; 88 c6 ; 0xf9a85 + mov byte [bp-006h], bl ; 88 5e fa ; 0xf9a87 + mov al, bl ; 88 d8 ; 0xf9a8a pciutil.c:166 + xor ah, ah ; 30 e4 ; 0xf9a8c + mov di, ax ; 89 c7 ; 0xf9a8e + mov bx, dx ; 89 d3 ; 0xf9a90 + mov ax, 0b109h ; b8 09 b1 ; 0xf9a92 + int 01ah ; cd 1a ; 0xf9a95 + test cx, cx ; 85 c9 ; 0xf9a97 + jne short 09aafh ; 75 14 ; 0xf9a99 + mov al, byte [bp-006h] ; 8a 46 fa ; 0xf9a9b + xor ah, ah ; 30 e4 ; 0xf9a9e + mov di, ax ; 89 c7 ; 0xf9aa0 + inc di ; 47 ; 0xf9aa2 + inc di ; 47 ; 0xf9aa3 + mov bx, dx ; 89 d3 ; 0xf9aa4 + mov ax, 0b109h ; b8 09 b1 ; 0xf9aa6 + int 01ah ; cd 1a ; 0xf9aa9 + test cx, cx ; 85 c9 ; 0xf9aab + je short 09ab4h ; 74 05 ; 0xf9aad + mov ax, strict word 00001h ; b8 01 00 ; 0xf9aaf + jmp short 09ab6h ; eb 02 ; 0xf9ab2 + xor ax, ax ; 31 c0 ; 0xf9ab4 + cwd ; 99 ; 0xf9ab6 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf9ab7 pciutil.c:169 + pop di ; 5f ; 0xf9aba + pop cx ; 59 ; 0xf9abb + pop bp ; 5d ; 0xf9abc + retn ; c3 ; 0xf9abd + ; disGetNextSymbol 0xf9abe LB 0x48a -> off=0x0 cb=000000000000001e uValue=00000000000f84be 'pci_write_config_word' +pci_write_config_word: ; 0xf9abe LB 0x1e + push bp ; 55 ; 0xf9abe pciutil.c:171 + mov bp, sp ; 89 e5 ; 0xf9abf + push di ; 57 ; 0xf9ac1 + push ax ; 50 ; 0xf9ac2 + mov byte [bp-004h], al ; 88 46 fc ; 0xf9ac3 + mov al, bl ; 88 d8 ; 0xf9ac6 + xor ah, ah ; 30 e4 ; 0xf9ac8 pciutil.c:173 + mov di, ax ; 89 c7 ; 0xf9aca + mov bh, byte [bp-004h] ; 8a 7e fc ; 0xf9acc + mov bl, dl ; 88 d3 ; 0xf9acf + mov ax, 0b10ch ; b8 0c b1 ; 0xf9ad1 + int 01ah ; cd 1a ; 0xf9ad4 + lea sp, [bp-002h] ; 8d 66 fe ; 0xf9ad6 pciutil.c:174 + pop di ; 5f ; 0xf9ad9 + pop bp ; 5d ; 0xf9ada + retn ; c3 ; 0xf9adb + ; disGetNextSymbol 0xf9adc LB 0x46c -> off=0x0 cb=000000000000001d uValue=00000000000f84dc 'vds_is_present' +vds_is_present: ; 0xf9adc LB 0x1d + push bx ; 53 ; 0xf9adc vds.c:32 + push bp ; 55 ; 0xf9add + mov bp, sp ; 89 e5 ; 0xf9ade + mov bx, strict word 0007bh ; bb 7b 00 ; 0xf9ae0 vds.c:36 + mov ax, strict word 00040h ; b8 40 00 ; 0xf9ae3 + mov es, ax ; 8e c0 ; 0xf9ae6 + test byte [es:bx], 020h ; 26 f6 07 20 ; 0xf9ae8 vds.c:37 + je short 09af4h ; 74 06 ; 0xf9aec + mov ax, strict word 00001h ; b8 01 00 ; 0xf9aee + pop bp ; 5d ; 0xf9af1 + pop bx ; 5b ; 0xf9af2 + retn ; c3 ; 0xf9af3 + xor ax, ax ; 31 c0 ; 0xf9af4 + pop bp ; 5d ; 0xf9af6 vds.c:38 + pop bx ; 5b ; 0xf9af7 + retn ; c3 ; 0xf9af8 + ; disGetNextSymbol 0xf9af9 LB 0x44f -> off=0x0 cb=000000000000001e uValue=00000000000f84f9 'vds_real_to_lin' +vds_real_to_lin: ; 0xf9af9 LB 0x1e + push bx ; 53 ; 0xf9af9 vds.c:67 + push cx ; 51 ; 0xf9afa + push bp ; 55 ; 0xf9afb + mov bp, sp ; 89 e5 ; 0xf9afc + mov bx, ax ; 89 c3 ; 0xf9afe + mov ax, dx ; 89 d0 ; 0xf9b00 + xor dx, dx ; 31 d2 ; 0xf9b02 vds.c:69 + mov cx, strict word 00004h ; b9 04 00 ; 0xf9b04 + sal ax, 1 ; d1 e0 ; 0xf9b07 + rcl dx, 1 ; d1 d2 ; 0xf9b09 + loop 09b07h ; e2 fa ; 0xf9b0b + xor cx, cx ; 31 c9 ; 0xf9b0d + add ax, bx ; 01 d8 ; 0xf9b0f + adc dx, cx ; 11 ca ; 0xf9b11 + pop bp ; 5d ; 0xf9b13 vds.c:70 + pop cx ; 59 ; 0xf9b14 + pop bx ; 5b ; 0xf9b15 + retn ; c3 ; 0xf9b16 + ; disGetNextSymbol 0xf9b17 LB 0x431 -> off=0x0 cb=0000000000000077 uValue=00000000000f8517 'vds_build_sg_list' +vds_build_sg_list: ; 0xf9b17 LB 0x77 + push bp ; 55 ; 0xf9b17 vds.c:77 + mov bp, sp ; 89 e5 ; 0xf9b18 + push si ; 56 ; 0xf9b1a + push di ; 57 ; 0xf9b1b + mov di, ax ; 89 c7 ; 0xf9b1c + mov si, dx ; 89 d6 ; 0xf9b1e + mov ax, bx ; 89 d8 ; 0xf9b20 + mov dx, cx ; 89 ca ; 0xf9b22 + mov bx, word [bp+004h] ; 8b 5e 04 ; 0xf9b24 vds.c:82 + mov es, si ; 8e c6 ; 0xf9b27 + mov word [es:di], bx ; 26 89 1d ; 0xf9b29 + mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf9b2c + mov word [es:di+002h], bx ; 26 89 5d 02 ; 0xf9b2f + call 09af9h ; e8 c3 ff ; 0xf9b33 vds.c:83 + mov es, si ; 8e c6 ; 0xf9b36 + mov word [es:di+004h], ax ; 26 89 45 04 ; 0xf9b38 + mov word [es:di+006h], dx ; 26 89 55 06 ; 0xf9b3c + mov word [es:di+008h], strict word 00000h ; 26 c7 45 08 00 00 ; 0xf9b40 vds.c:84 + call 09adch ; e8 93 ff ; 0xf9b46 vds.c:85 + test ax, ax ; 85 c0 ; 0xf9b49 + je short 09b5eh ; 74 11 ; 0xf9b4b + mov es, si ; 8e c6 ; 0xf9b4d vds.c:87 + mov ax, 08105h ; b8 05 81 ; 0xf9b4f + mov dx, strict word 00000h ; ba 00 00 ; 0xf9b52 + int 04bh ; cd 4b ; 0xf9b55 + jc short 09b5bh ; 72 02 ; 0xf9b57 + db 032h, 0c0h + ; xor al, al ; 32 c0 ; 0xf9b59 + cbw ; 98 ; 0xf9b5b + jmp short 09b85h ; eb 27 ; 0xf9b5c vds.c:88 + mov es, si ; 8e c6 ; 0xf9b5e vds.c:90 + mov word [es:di+00eh], strict word 00001h ; 26 c7 45 0e 01 00 ; 0xf9b60 + mov dx, word [es:di+004h] ; 26 8b 55 04 ; 0xf9b66 vds.c:91 + mov ax, word [es:di+006h] ; 26 8b 45 06 ; 0xf9b6a + mov word [es:di+010h], dx ; 26 89 55 10 ; 0xf9b6e + mov word [es:di+012h], ax ; 26 89 45 12 ; 0xf9b72 + mov ax, word [bp+004h] ; 8b 46 04 ; 0xf9b76 vds.c:92 + mov word [es:di+014h], ax ; 26 89 45 14 ; 0xf9b79 + mov ax, bx ; 89 d8 ; 0xf9b7d + mov word [es:di+016h], bx ; 26 89 5d 16 ; 0xf9b7f + xor ax, bx ; 31 d8 ; 0xf9b83 vds.c:93 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf9b85 vds.c:96 + pop di ; 5f ; 0xf9b88 + pop si ; 5e ; 0xf9b89 + pop bp ; 5d ; 0xf9b8a + retn 00004h ; c2 04 00 ; 0xf9b8b + ; disGetNextSymbol 0xf9b8e LB 0x3ba -> off=0x0 cb=000000000000002e uValue=00000000000f858e 'vds_free_sg_list' +vds_free_sg_list: ; 0xf9b8e LB 0x2e + push bp ; 55 ; 0xf9b8e vds.c:102 + mov bp, sp ; 89 e5 ; 0xf9b8f + push bx ; 53 ; 0xf9b91 + push di ; 57 ; 0xf9b92 + mov bx, ax ; 89 c3 ; 0xf9b93 + call 09adch ; e8 44 ff ; 0xf9b95 vds.c:106 + test ax, ax ; 85 c0 ; 0xf9b98 + je short 09badh ; 74 11 ; 0xf9b9a + mov di, bx ; 89 df ; 0xf9b9c vds.c:108 + mov es, dx ; 8e c2 ; 0xf9b9e + mov ax, 08106h ; b8 06 81 ; 0xf9ba0 + mov dx, strict word 00000h ; ba 00 00 ; 0xf9ba3 + int 04bh ; cd 4b ; 0xf9ba6 + jc short 09bach ; 72 02 ; 0xf9ba8 + db 032h, 0c0h + ; xor al, al ; 32 c0 ; 0xf9baa + cbw ; 98 ; 0xf9bac + mov es, dx ; 8e c2 ; 0xf9bad vds.c:116 + mov word [es:bx+00eh], strict word 00000h ; 26 c7 47 0e 00 00 ; 0xf9baf + lea sp, [bp-004h] ; 8d 66 fc ; 0xf9bb5 vds.c:118 + pop di ; 5f ; 0xf9bb8 + pop bx ; 5b ; 0xf9bb9 + pop bp ; 5d ; 0xf9bba + retn ; c3 ; 0xf9bbb + ; disGetNextSymbol 0xf9bbc LB 0x38c -> off=0x4 cb=0000000000000020 uValue=00000000000f85c0 '__U4M' + db 000h, 000h, 000h, 000h +__U4M: ; 0xf9bc0 LB 0x20 + pushfw ; 9c ; 0xf9bc0 __U4M.asm:37 + push si ; 56 ; 0xf9bc1 __U4M.asm:65 + push di ; 57 ; 0xf9bc2 __U4M.asm:66 + push ax ; 50 ; 0xf9bc3 __U4M.asm:79 + db 08bh, 0fah + ; mov di, dx ; 8b fa ; 0xf9bc4 __U4M.asm:80 + mul bx ; f7 e3 ; 0xf9bc6 __U4M.asm:83 + db 08bh, 0f2h + ; mov si, dx ; 8b f2 ; 0xf9bc8 __U4M.asm:84 + xchg di, ax ; 97 ; 0xf9bca __U4M.asm:85 + mul bx ; f7 e3 ; 0xf9bcb __U4M.asm:88 + db 003h, 0f0h + ; add si, ax ; 03 f0 ; 0xf9bcd __U4M.asm:89 + pop ax ; 58 ; 0xf9bcf __U4M.asm:92 + mul cx ; f7 e1 ; 0xf9bd0 __U4M.asm:93 + db 003h, 0f0h + ; add si, ax ; 03 f0 ; 0xf9bd2 __U4M.asm:94 + db 08bh, 0d6h + ; mov dx, si ; 8b d6 ; 0xf9bd4 __U4M.asm:97 + db 08bh, 0c7h + ; mov ax, di ; 8b c7 ; 0xf9bd6 __U4M.asm:98 + pop di ; 5f ; 0xf9bd8 __U4M.asm:100 + pop si ; 5e ; 0xf9bd9 __U4M.asm:101 + popfw ; 9d ; 0xf9bda __U4M.asm:103 + retn ; c3 ; 0xf9bdb __U4M.asm:104 + times 0x4 db 0 + ; disGetNextSymbol 0xf9be0 LB 0x368 -> off=0x0 cb=0000000000000030 uValue=00000000000f85e0 '__U4D' +__U4D: ; 0xf9be0 LB 0x30 + pushfw ; 9c ; 0xf9be0 __U4D.asm:44 + test cx, cx ; 85 c9 ; 0xf9be1 __U4D.asm:77 + jne short 09bedh ; 75 08 ; 0xf9be3 __U4D.asm:78 + div bx ; f7 f3 ; 0xf9be5 __U4D.asm:80 + db 08bh, 0dah + ; mov bx, dx ; 8b da ; 0xf9be7 __U4D.asm:82 + db 033h, 0d2h + ; xor dx, dx ; 33 d2 ; 0xf9be9 __U4D.asm:84 + popfw ; 9d ; 0xf9beb __U4D.asm:86 + retn ; c3 ; 0xf9bec __U4D.asm:87 + push DS ; 1e ; 0xf9bed __U4D.asm:91 + push ES ; 06 ; 0xf9bee __U4D.asm:92 + push bp ; 55 ; 0xf9bef __U4D.asm:99 + sub sp, strict byte 00004h ; 83 ec 04 ; 0xf9bf0 __U4D.asm:100 + db 08bh, 0ech + ; mov bp, sp ; 8b ec ; 0xf9bf3 __U4D.asm:101 + push SS ; 16 ; 0xf9bf5 __U4D.asm:104 + push bp ; 55 ; 0xf9bf6 __U4D.asm:105 + add bp, strict byte 00004h ; 83 c5 04 ; 0xf9bf7 __U4D.asm:106 + push cx ; 51 ; 0xf9bfa __U4D.asm:109 + push bx ; 53 ; 0xf9bfb __U4D.asm:110 + push dx ; 52 ; 0xf9bfc __U4D.asm:113 + push ax ; 50 ; 0xf9bfd __U4D.asm:114 + call 09cc5h ; e8 c4 00 ; 0xf9bfe __U4D.asm:116 + mov cx, word [bp-002h] ; 8b 4e fe ; 0xf9c01 __U4D.asm:119 + mov bx, word [bp-004h] ; 8b 5e fc ; 0xf9c04 __U4D.asm:120 + db 08bh, 0e5h + ; mov sp, bp ; 8b e5 ; 0xf9c07 __U4D.asm:124 + pop bp ; 5d ; 0xf9c09 __U4D.asm:125 + pop ES ; 07 ; 0xf9c0a __U4D.asm:126 + pop DS ; 1f ; 0xf9c0b __U4D.asm:127 + popfw ; 9d ; 0xf9c0c __U4D.asm:129 + retn ; c3 ; 0xf9c0d __U4D.asm:130 + times 0x2 db 0 + ; disGetNextSymbol 0xf9c10 LB 0x338 -> off=0x0 cb=0000000000000010 uValue=00000000000f8610 '__U8RS' +__U8RS: ; 0xf9c10 LB 0x10 + test si, si ; 85 f6 ; 0xf9c10 __U8RS.asm:40 + je short 09c1fh ; 74 0b ; 0xf9c12 __U8RS.asm:41 + shr ax, 1 ; d1 e8 ; 0xf9c14 __U8RS.asm:43 + rcr bx, 1 ; d1 db ; 0xf9c16 __U8RS.asm:44 + rcr cx, 1 ; d1 d9 ; 0xf9c18 __U8RS.asm:45 + rcr dx, 1 ; d1 da ; 0xf9c1a __U8RS.asm:46 + dec si ; 4e ; 0xf9c1c __U8RS.asm:47 + jne short 09c14h ; 75 f5 ; 0xf9c1d __U8RS.asm:48 + retn ; c3 ; 0xf9c1f __U8RS.asm:50 + ; disGetNextSymbol 0xf9c20 LB 0x328 -> off=0x0 cb=0000000000000010 uValue=00000000000f8620 '__U8LS' +__U8LS: ; 0xf9c20 LB 0x10 + test si, si ; 85 f6 ; 0xf9c20 __U8LS.asm:40 + je short 09c2fh ; 74 0b ; 0xf9c22 __U8LS.asm:41 + sal dx, 1 ; d1 e2 ; 0xf9c24 __U8LS.asm:43 + rcl cx, 1 ; d1 d1 ; 0xf9c26 __U8LS.asm:44 + rcl bx, 1 ; d1 d3 ; 0xf9c28 __U8LS.asm:45 + rcl ax, 1 ; d1 d0 ; 0xf9c2a __U8LS.asm:46 + dec si ; 4e ; 0xf9c2c __U8LS.asm:47 + jne short 09c24h ; 75 f5 ; 0xf9c2d __U8LS.asm:48 + retn ; c3 ; 0xf9c2f __U8LS.asm:50 + ; disGetNextSymbol 0xf9c30 LB 0x318 -> off=0x0 cb=0000000000000010 uValue=00000000000f8630 '_fmemset_' +_fmemset_: ; 0xf9c30 LB 0x10 + push di ; 57 ; 0xf9c30 fmemset.asm:42 + mov es, dx ; 8e c2 ; 0xf9c31 fmemset.asm:44 + db 08bh, 0f8h + ; mov di, ax ; 8b f8 ; 0xf9c33 fmemset.asm:45 + xchg al, bl ; 86 d8 ; 0xf9c35 fmemset.asm:46 + rep stosb ; f3 aa ; 0xf9c37 fmemset.asm:47 + xchg al, bl ; 86 d8 ; 0xf9c39 fmemset.asm:48 + pop di ; 5f ; 0xf9c3b fmemset.asm:50 + retn ; c3 ; 0xf9c3c fmemset.asm:51 + times 0x3 db 0 + ; disGetNextSymbol 0xf9c40 LB 0x308 -> off=0x0 cb=000000000000003a uValue=00000000000f8640 '_fmemcpy_' +_fmemcpy_: ; 0xf9c40 LB 0x3a + push bp ; 55 ; 0xf9c40 fmemcpy.asm:42 + db 08bh, 0ech + ; mov bp, sp ; 8b ec ; 0xf9c41 fmemcpy.asm:43 + push di ; 57 ; 0xf9c43 fmemcpy.asm:44 + push DS ; 1e ; 0xf9c44 fmemcpy.asm:45 + push si ; 56 ; 0xf9c45 fmemcpy.asm:46 + mov es, dx ; 8e c2 ; 0xf9c46 fmemcpy.asm:48 + db 08bh, 0f8h + ; mov di, ax ; 8b f8 ; 0xf9c48 fmemcpy.asm:49 + mov ds, cx ; 8e d9 ; 0xf9c4a fmemcpy.asm:50 + db 08bh, 0f3h + ; mov si, bx ; 8b f3 ; 0xf9c4c fmemcpy.asm:51 + mov cx, word [bp+004h] ; 8b 4e 04 ; 0xf9c4e fmemcpy.asm:52 + rep movsb ; f3 a4 ; 0xf9c51 fmemcpy.asm:53 + pop si ; 5e ; 0xf9c53 fmemcpy.asm:55 + pop DS ; 1f ; 0xf9c54 fmemcpy.asm:56 + pop di ; 5f ; 0xf9c55 fmemcpy.asm:57 + db 08bh, 0e5h + ; mov sp, bp ; 8b e5 ; 0xf9c56 fmemcpy.asm:58 + pop bp ; 5d ; 0xf9c58 fmemcpy.asm:59 + retn ; c3 ; 0xf9c59 fmemcpy.asm:60 + add byte [bx+si], al ; 00 00 ; 0xf9c5a + add byte [bx+si], al ; 00 00 ; 0xf9c5c + add byte [bx+si], al ; 00 00 ; 0xf9c5e + nop ; 90 ; 0xf9c60 + pushfw ; 9c ; 0xf9c61 + xchg dx, ax ; 92 ; 0xf9c62 + pushfw ; 9c ; 0xf9c63 + xchg si, ax ; 96 ; 0xf9c64 + pushfw ; 9c ; 0xf9c65 + xchg si, ax ; 96 ; 0xf9c66 + pushfw ; 9c ; 0xf9c67 + xchg si, ax ; 96 ; 0xf9c68 + pushfw ; 9c ; 0xf9c69 + cbw ; 98 ; 0xf9c6a + pushfw ; 9c ; 0xf9c6b + cbw ; 98 ; 0xf9c6c + pushfw ; 9c ; 0xf9c6d + call far 09e9ch:09e9ch ; 9a 9c 9e 9c 9e ; 0xf9c6e + pushfw ; 9c ; 0xf9c73 + mov AL, byte [0a59ch] ; a0 9c a5 ; 0xf9c74 + pushfw ; 9c ; 0xf9c77 + cmpsw ; a7 ; 0xf9c78 + pushfw ; 9c ; 0xf9c79 + ; disGetNextSymbol 0xf9c7a LB 0x2ce -> off=0x0 cb=000000000000003a uValue=000000000000867a 'apm_worker' +apm_worker: ; 0xf9c7a LB 0x3a + sti ; fb ; 0xf9c7a apm_pm.asm:56 + push ax ; 50 ; 0xf9c7b apm_pm.asm:58 + db 032h, 0e4h + ; xor ah, ah ; 32 e4 ; 0xf9c7c apm_pm.asm:59 + sub AL, strict byte 004h ; 2c 04 ; 0xf9c7e apm_pm.asm:60 + db 08bh, 0e8h + ; mov bp, ax ; 8b e8 ; 0xf9c80 apm_pm.asm:61 + sal bp, 1 ; d1 e5 ; 0xf9c82 apm_pm.asm:62 + cmp AL, strict byte 00dh ; 3c 0d ; 0xf9c84 apm_pm.asm:63 + pop ax ; 58 ; 0xf9c86 apm_pm.asm:64 + mov AH, strict byte 053h ; b4 53 ; 0xf9c87 apm_pm.asm:65 + jnc short 09cb0h ; 73 25 ; 0xf9c89 apm_pm.asm:66 + jmp word [cs:bp-063a0h] ; 2e ff a6 60 9c ; 0xf9c8b apm_pm.asm:68 + jmp short 09caeh ; eb 1c ; 0xf9c90 apm_pm.asm:71 + sti ; fb ; 0xf9c92 apm_pm.asm:74 + hlt ; f4 ; 0xf9c93 apm_pm.asm:75 + jmp short 09caeh ; eb 18 ; 0xf9c94 apm_pm.asm:76 + jmp short 09caeh ; eb 16 ; 0xf9c96 apm_pm.asm:85 + jmp short 09cb0h ; eb 16 ; 0xf9c98 apm_pm.asm:91 + mov AH, strict byte 080h ; b4 80 ; 0xf9c9a apm_pm.asm:94 + jmp short 09cb2h ; eb 14 ; 0xf9c9c apm_pm.asm:95 + jmp short 09cb0h ; eb 10 ; 0xf9c9e apm_pm.asm:100 + mov ax, 00102h ; b8 02 01 ; 0xf9ca0 apm_pm.asm:103 + jmp short 09caeh ; eb 09 ; 0xf9ca3 apm_pm.asm:104 + jmp short 09caeh ; eb 07 ; 0xf9ca5 apm_pm.asm:108 + mov BL, strict byte 000h ; b3 00 ; 0xf9ca7 apm_pm.asm:111 + mov cx, strict word 00000h ; b9 00 00 ; 0xf9ca9 apm_pm.asm:112 + jmp short 09caeh ; eb 00 ; 0xf9cac apm_pm.asm:113 + clc ; f8 ; 0xf9cae apm_pm.asm:116 + retn ; c3 ; 0xf9caf apm_pm.asm:117 + mov AH, strict byte 009h ; b4 09 ; 0xf9cb0 apm_pm.asm:120 + stc ; f9 ; 0xf9cb2 apm_pm.asm:123 + retn ; c3 ; 0xf9cb3 apm_pm.asm:124 + ; disGetNextSymbol 0xf9cb4 LB 0x294 -> off=0x0 cb=0000000000000011 uValue=00000000000f86b4 'apm_pm16_entry' +apm_pm16_entry: ; 0xf9cb4 LB 0x11 + mov AH, strict byte 002h ; b4 02 ; 0xf9cb4 apm_pm.asm:136 + push DS ; 1e ; 0xf9cb6 apm_pm.asm:142 + push bp ; 55 ; 0xf9cb7 apm_pm.asm:143 + push CS ; 0e ; 0xf9cb8 apm_pm.asm:145 + pop bp ; 5d ; 0xf9cb9 apm_pm.asm:146 + add bp, strict byte 00008h ; 83 c5 08 ; 0xf9cba apm_pm.asm:147 + mov ds, bp ; 8e dd ; 0xf9cbd apm_pm.asm:148 + call 09c7ah ; e8 b8 ff ; 0xf9cbf apm_pm.asm:150 + pop bp ; 5d ; 0xf9cc2 apm_pm.asm:152 + pop DS ; 1f ; 0xf9cc3 apm_pm.asm:153 + retf ; cb ; 0xf9cc4 apm_pm.asm:155 + ; disGetNextSymbol 0xf9cc5 LB 0x283 -> off=0x0 cb=0000000000000265 uValue=00000000000f86c5 'DoUInt32Div' +DoUInt32Div: ; 0xf9cc5 LB 0x265 + push bp ; 55 ; 0xf9cc5 DoUInt32Div.c:28 + mov bp, sp ; 89 e5 ; 0xf9cc6 + push si ; 56 ; 0xf9cc8 + push di ; 57 ; 0xf9cc9 + sub sp, strict byte 00018h ; 83 ec 18 ; 0xf9cca + lds bx, [bp+00ch] ; c5 5e 0c ; 0xf9ccd + lea si, [bp+004h] ; 8d 76 04 ; 0xf9cd0 DoUInt32Div.c:972 + mov word [bp-010h], si ; 89 76 f0 ; 0xf9cd3 + mov [bp-00eh], ss ; 8c 56 f2 ; 0xf9cd6 + lea di, [bp+008h] ; 8d 7e 08 ; 0xf9cd9 + mov [bp-008h], ss ; 8c 56 f8 ; 0xf9cdc + lea si, [bp-01ch] ; 8d 76 e4 ; 0xf9cdf + mov word [bp-00ch], si ; 89 76 f4 ; 0xf9ce2 + mov [bp-00ah], ss ; 8c 56 f6 ; 0xf9ce5 + mov si, bx ; 89 de ; 0xf9ce8 + mov [bp-006h], ds ; 8c 5e fa ; 0xf9cea + cmp word [bx+002h], strict byte 00000h ; 83 7f 02 00 ; 0xf9ced DoUInt32Div.c:980 + jne short 09d15h ; 75 22 ; 0xf9cf1 + mov ax, word [bx] ; 8b 07 ; 0xf9cf3 DoUInt32Div.c:982 + test ax, ax ; 85 c0 ; 0xf9cf5 + je short 09d12h ; 74 19 ; 0xf9cf7 + cmp ax, strict word 00001h ; 3d 01 00 ; 0xf9cf9 DoUInt32Div.c:985 + jne short 09d15h ; 75 17 ; 0xf9cfc + xor ax, ax ; 31 c0 ; 0xf9cfe DoUInt32Div.c:67 + mov word [bp+00ah], ax ; 89 46 0a ; 0xf9d00 + mov word [bp+008h], ax ; 89 46 08 ; 0xf9d03 DoUInt32Div.c:68 + mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xf9d06 DoUInt32Div.c:988 + mov word [bp+004h], ax ; 89 46 04 ; 0xf9d09 + mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xf9d0c + mov word [bp+006h], ax ; 89 46 06 ; 0xf9d0f + jmp near 09f1dh ; e9 08 02 ; 0xf9d12 + lds bx, [bp-00ch] ; c5 5e f4 ; 0xf9d15 DoUInt32Div.c:726 + mov ax, word [bx+002h] ; 8b 47 02 ; 0xf9d18 + mov ds, [bp-006h] ; 8e 5e fa ; 0xf9d1b + cmp ax, word [si+002h] ; 3b 44 02 ; 0xf9d1e + je short 09d3bh ; 74 18 ; 0xf9d21 + mov ds, [bp-00ah] ; 8e 5e f6 ; 0xf9d23 DoUInt32Div.c:727 + mov ax, word [bx+002h] ; 8b 47 02 ; 0xf9d26 + mov ds, [bp-006h] ; 8e 5e fa ; 0xf9d29 + cmp ax, word [si+002h] ; 3b 44 02 ; 0xf9d2c + jbe short 09d36h ; 76 05 ; 0xf9d2f + mov ax, strict word 00001h ; b8 01 00 ; 0xf9d31 + jmp short 09d5ch ; eb 26 ; 0xf9d34 + mov ax, strict word 0ffffh ; b8 ff ff ; 0xf9d36 + jmp short 09d5ch ; eb 21 ; 0xf9d39 + mov ds, [bp-00ah] ; 8e 5e f6 ; 0xf9d3b DoUInt32Div.c:728 + mov ax, word [bx] ; 8b 07 ; 0xf9d3e + mov ds, [bp-006h] ; 8e 5e fa ; 0xf9d40 + cmp ax, word [si] ; 3b 04 ; 0xf9d43 + je short 09d5ah ; 74 13 ; 0xf9d45 + mov ds, [bp-00ah] ; 8e 5e f6 ; 0xf9d47 DoUInt32Div.c:729 + mov ax, word [bx] ; 8b 07 ; 0xf9d4a + mov ds, [bp-006h] ; 8e 5e fa ; 0xf9d4c + cmp ax, word [si] ; 3b 04 ; 0xf9d4f + jbe short 09d55h ; 76 02 ; 0xf9d51 + jmp short 09d31h ; eb dc ; 0xf9d53 + mov ax, strict word 0ffffh ; b8 ff ff ; 0xf9d55 + jmp short 09d5ch ; eb 02 ; 0xf9d58 + xor ax, ax ; 31 c0 ; 0xf9d5a DoUInt32Div.c:730 + test ax, ax ; 85 c0 ; 0xf9d5c DoUInt32Div.c:996 + jnl short 09d7eh ; 7d 1e ; 0xf9d5e + lds bx, [bp-00ch] ; c5 5e f4 ; 0xf9d60 DoUInt32Div.c:998 + mov ax, word [bx] ; 8b 07 ; 0xf9d63 + mov dx, word [bx+002h] ; 8b 57 02 ; 0xf9d65 + mov ds, [bp-008h] ; 8e 5e f8 ; 0xf9d68 + mov word [di], ax ; 89 05 ; 0xf9d6b + mov word [di+002h], dx ; 89 55 02 ; 0xf9d6d + lds bx, [bp-010h] ; c5 5e f0 ; 0xf9d70 DoUInt32Div.c:67 + mov word [bx+002h], strict word 00000h ; c7 47 02 00 00 ; 0xf9d73 + mov word [bx], strict word 00000h ; c7 07 00 00 ; 0xf9d78 DoUInt32Div.c:68 + jmp short 09d12h ; eb 94 ; 0xf9d7c DoUInt32Div.c:1003 + jne short 09d95h ; 75 15 ; 0xf9d7e + mov ds, [bp-008h] ; 8e 5e f8 ; 0xf9d80 DoUInt32Div.c:67 + mov word [di+002h], ax ; 89 45 02 ; 0xf9d83 + mov word [di], ax ; 89 05 ; 0xf9d86 DoUInt32Div.c:68 + lds bx, [bp-010h] ; c5 5e f0 ; 0xf9d88 DoUInt32Div.c:397 + mov word [bx], strict word 00001h ; c7 07 01 00 ; 0xf9d8b + mov word [bx+002h], ax ; 89 47 02 ; 0xf9d8f DoUInt32Div.c:398 + jmp near 09f1dh ; e9 88 01 ; 0xf9d92 DoUInt32Div.c:1008 + lds bx, [bp-00ch] ; c5 5e f4 ; 0xf9d95 DoUInt32Div.c:954 + mov ax, word [bx+002h] ; 8b 47 02 ; 0xf9d98 + test ax, ax ; 85 c0 ; 0xf9d9b + je short 09db0h ; 74 11 ; 0xf9d9d + push ax ; 50 ; 0xf9d9f DoUInt32Div.c:955 + mov ax, 0f000h ; b8 00 f0 ; 0xf9da0 + mov ds, ax ; 8e d8 ; 0xf9da3 + call 09f30h ; e8 88 01 ; 0xf9da5 + add sp, strict byte 00002h ; 83 c4 02 ; 0xf9da8 + add ax, strict word 00010h ; 05 10 00 ; 0xf9dab + jmp short 09dbdh ; eb 0d ; 0xf9dae DoUInt32Div.c:956 + push word [bx] ; ff 37 ; 0xf9db0 DoUInt32Div.c:957 + mov ax, 0f000h ; b8 00 f0 ; 0xf9db2 + mov ds, ax ; 8e d8 ; 0xf9db5 + call 09f30h ; e8 76 01 ; 0xf9db7 + add sp, strict byte 00002h ; 83 c4 02 ; 0xf9dba + mov word [bp-014h], ax ; 89 46 ec ; 0xf9dbd DoUInt32Div.c:959 + mov ds, [bp-006h] ; 8e 5e fa ; 0xf9dc0 DoUInt32Div.c:954 + mov ax, word [si+002h] ; 8b 44 02 ; 0xf9dc3 + test ax, ax ; 85 c0 ; 0xf9dc6 + je short 09ddbh ; 74 11 ; 0xf9dc8 + push ax ; 50 ; 0xf9dca DoUInt32Div.c:955 + mov ax, 0f000h ; b8 00 f0 ; 0xf9dcb + mov ds, ax ; 8e d8 ; 0xf9dce + call 09f30h ; e8 5d 01 ; 0xf9dd0 + add sp, strict byte 00002h ; 83 c4 02 ; 0xf9dd3 + add ax, strict word 00010h ; 05 10 00 ; 0xf9dd6 + jmp short 09de8h ; eb 0d ; 0xf9dd9 DoUInt32Div.c:956 + push word [si] ; ff 34 ; 0xf9ddb DoUInt32Div.c:957 + mov ax, 0f000h ; b8 00 f0 ; 0xf9ddd + mov ds, ax ; 8e d8 ; 0xf9de0 + call 09f30h ; e8 4b 01 ; 0xf9de2 + add sp, strict byte 00002h ; 83 c4 02 ; 0xf9de5 + mov dx, word [bp-014h] ; 8b 56 ec ; 0xf9de8 DoUInt32Div.c:959 + sub dx, ax ; 29 c2 ; 0xf9deb + mov word [bp-012h], dx ; 89 56 ee ; 0xf9ded + mov ds, [bp-006h] ; 8e 5e fa ; 0xf9df0 DoUInt32Div.c:1014 + mov ax, word [si] ; 8b 04 ; 0xf9df3 + mov word [bp-018h], ax ; 89 46 e8 ; 0xf9df5 + mov ax, word [si+002h] ; 8b 44 02 ; 0xf9df8 + mov word [bp-016h], ax ; 89 46 ea ; 0xf9dfb + test dx, dx ; 85 d2 ; 0xf9dfe DoUInt32Div.c:1015 + je short 09e58h ; 74 56 ; 0xf9e00 + mov cx, dx ; 89 d1 ; 0xf9e02 DoUInt32Div.c:280 + xor ch, dh ; 30 f5 ; 0xf9e04 + and cl, 01fh ; 80 e1 1f ; 0xf9e06 + mov ax, word [si] ; 8b 04 ; 0xf9e09 DoUInt32Div.c:282 + mov dx, word [si+002h] ; 8b 54 02 ; 0xf9e0b + jcxz 09e16h ; e3 06 ; 0xf9e0e + sal ax, 1 ; d1 e0 ; 0xf9e10 + rcl dx, 1 ; d1 d2 ; 0xf9e12 + loop 09e10h ; e2 fa ; 0xf9e14 + mov word [bp-018h], ax ; 89 46 e8 ; 0xf9e16 + mov word [bp-016h], dx ; 89 56 ea ; 0xf9e19 + mov ax, word [bp-016h] ; 8b 46 ea ; 0xf9e1c DoUInt32Div.c:763 + lds bx, [bp-00ch] ; c5 5e f4 ; 0xf9e1f + cmp ax, word [bx+002h] ; 3b 47 02 ; 0xf9e22 + jnbe short 09e36h ; 77 0f ; 0xf9e25 + mov ax, word [bp-016h] ; 8b 46 ea ; 0xf9e27 + cmp ax, word [bx+002h] ; 3b 47 02 ; 0xf9e2a + jne short 09e3ah ; 75 0b ; 0xf9e2d + mov ax, word [bp-018h] ; 8b 46 e8 ; 0xf9e2f + cmp ax, word [bx] ; 3b 07 ; 0xf9e32 + jbe short 09e3ah ; 76 04 ; 0xf9e34 + mov AL, strict byte 001h ; b0 01 ; 0xf9e36 + jmp short 09e3ch ; eb 02 ; 0xf9e38 + xor al, al ; 30 c0 ; 0xf9e3a + test al, al ; 84 c0 ; 0xf9e3c DoUInt32Div.c:769 + je short 09e63h ; 74 23 ; 0xf9e3e + shr word [bp-016h], 1 ; d1 6e ea ; 0xf9e40 DoUInt32Div.c:680 + rcr word [bp-018h], 1 ; d1 5e e8 ; 0xf9e43 + dec word [bp-012h] ; ff 4e ee ; 0xf9e46 + jmp short 09e63h ; eb 18 ; 0xf9e49 + mov cx, strict word 0001fh ; b9 1f 00 ; 0xf9e4b DoUInt32Div.c:632 + sal word [bp-018h], 1 ; d1 66 e8 ; 0xf9e4e + rcl word [bp-016h], 1 ; d1 56 ea ; 0xf9e51 + loop 09e4eh ; e2 f8 ; 0xf9e54 + jmp short 09e46h ; eb ee ; 0xf9e56 DoUInt32Div.c:647 + mov ax, word [si] ; 8b 04 ; 0xf9e58 DoUInt32Div.c:1025 + mov word [bp-018h], ax ; 89 46 e8 ; 0xf9e5a + mov ax, word [si+002h] ; 8b 44 02 ; 0xf9e5d + mov word [bp-016h], ax ; 89 46 ea ; 0xf9e60 + lds bx, [bp-010h] ; c5 5e f0 ; 0xf9e63 DoUInt32Div.c:67 + mov word [bx+002h], strict word 00000h ; c7 47 02 00 00 ; 0xf9e66 + mov word [bx], strict word 00000h ; c7 07 00 00 ; 0xf9e6b DoUInt32Div.c:68 + lds bx, [bp-00ch] ; c5 5e f4 ; 0xf9e6f DoUInt32Div.c:1028 + mov dx, word [bx] ; 8b 17 ; 0xf9e72 + mov ax, word [bx+002h] ; 8b 47 02 ; 0xf9e74 + mov ds, [bp-008h] ; 8e 5e f8 ; 0xf9e77 + mov word [di], dx ; 89 15 ; 0xf9e7a + mov word [di+002h], ax ; 89 45 02 ; 0xf9e7c + mov dx, word [di] ; 8b 15 ; 0xf9e7f DoUInt32Div.c:782 + mov ds, [bp-006h] ; 8e 5e fa ; 0xf9e81 + cmp ax, word [si+002h] ; 3b 44 02 ; 0xf9e84 + jnbe short 09e8fh ; 77 06 ; 0xf9e87 + jne short 09e93h ; 75 08 ; 0xf9e89 + cmp dx, word [si] ; 3b 14 ; 0xf9e8b + jc short 09e93h ; 72 04 ; 0xf9e8d + mov AL, strict byte 001h ; b0 01 ; 0xf9e8f + jmp short 09e95h ; eb 02 ; 0xf9e91 + xor al, al ; 30 c0 ; 0xf9e93 + test al, al ; 84 c0 ; 0xf9e95 DoUInt32Div.c:788 + je short 09efah ; 74 61 ; 0xf9e97 + mov ds, [bp-008h] ; 8e 5e f8 ; 0xf9e99 DoUInt32Div.c:782 + mov ax, word [di+002h] ; 8b 45 02 ; 0xf9e9c + cmp ax, word [bp-016h] ; 3b 46 ea ; 0xf9e9f + jnbe short 09eb0h ; 77 0c ; 0xf9ea2 + cmp ax, word [bp-016h] ; 3b 46 ea ; 0xf9ea4 + jne short 09eb4h ; 75 0b ; 0xf9ea7 + mov ax, word [di] ; 8b 05 ; 0xf9ea9 + cmp ax, word [bp-018h] ; 3b 46 e8 ; 0xf9eab + jc short 09eb4h ; 72 04 ; 0xf9eae + mov AL, strict byte 001h ; b0 01 ; 0xf9eb0 + jmp short 09eb6h ; eb 02 ; 0xf9eb2 + xor al, al ; 30 c0 ; 0xf9eb4 + test al, al ; 84 c0 ; 0xf9eb6 DoUInt32Div.c:788 + je short 09ee0h ; 74 26 ; 0xf9eb8 + mov ax, word [bp-018h] ; 8b 46 e8 ; 0xf9eba DoUInt32Div.c:451 + mov ds, [bp-008h] ; 8e 5e f8 ; 0xf9ebd + sub word [di], ax ; 29 05 ; 0xf9ec0 + mov ax, word [bp-016h] ; 8b 46 ea ; 0xf9ec2 + sbb word [di+002h], ax ; 19 45 02 ; 0xf9ec5 + mov ax, strict word 00001h ; b8 01 00 ; 0xf9ec8 DoUInt32Div.c:586 + xor dx, dx ; 31 d2 ; 0xf9ecb + mov cx, word [bp-012h] ; 8b 4e ee ; 0xf9ecd + jcxz 09ed8h ; e3 06 ; 0xf9ed0 + sal ax, 1 ; d1 e0 ; 0xf9ed2 + rcl dx, 1 ; d1 d2 ; 0xf9ed4 + loop 09ed2h ; e2 fa ; 0xf9ed6 + lds bx, [bp-010h] ; c5 5e f0 ; 0xf9ed8 + or word [bx], ax ; 09 07 ; 0xf9edb + or word [bx+002h], dx ; 09 57 02 ; 0xf9edd + mov ds, [bp-008h] ; 8e 5e f8 ; 0xf9ee0 DoUInt32Div.c:744 + mov dx, word [di] ; 8b 15 ; 0xf9ee3 + mov ax, word [di+002h] ; 8b 45 02 ; 0xf9ee5 + mov ds, [bp-006h] ; 8e 5e fa ; 0xf9ee8 + cmp ax, word [si+002h] ; 3b 44 02 ; 0xf9eeb + jc short 09ef6h ; 72 06 ; 0xf9eee + jne short 09efch ; 75 0a ; 0xf9ef0 + cmp dx, word [si] ; 3b 14 ; 0xf9ef2 + jnc short 09efch ; 73 06 ; 0xf9ef4 + mov AL, strict byte 001h ; b0 01 ; 0xf9ef6 + jmp short 09efeh ; eb 04 ; 0xf9ef8 + jmp short 09f1dh ; eb 21 ; 0xf9efa + xor al, al ; 30 c0 ; 0xf9efc + test al, al ; 84 c0 ; 0xf9efe DoUInt32Div.c:750 + je short 09f11h ; 74 0f ; 0xf9f00 + jmp short 09f1dh ; eb 19 ; 0xf9f02 DoUInt32Div.c:1043 + mov cx, strict word 0001fh ; b9 1f 00 ; 0xf9f04 DoUInt32Div.c:680 + sal word [bp-018h], 1 ; d1 66 e8 ; 0xf9f07 + rcl word [bp-016h], 1 ; d1 56 ea ; 0xf9f0a + loop 09f07h ; e2 f8 ; 0xf9f0d + jmp short 09f17h ; eb 06 ; 0xf9f0f DoUInt32Div.c:647 + shr word [bp-016h], 1 ; d1 6e ea ; 0xf9f11 DoUInt32Div.c:653 + rcr word [bp-018h], 1 ; d1 5e e8 ; 0xf9f14 + dec word [bp-012h] ; ff 4e ee ; 0xf9f17 DoUInt32Div.c:1045 + jmp near 09e99h ; e9 7c ff ; 0xf9f1a DoUInt32Div.c:1046 + mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xf9f1d DoUInt32Div.c:32 + mov dx, word [bp-01ah] ; 8b 56 e6 ; 0xf9f20 + lea sp, [bp-004h] ; 8d 66 fc ; 0xf9f23 DoUInt32Div.c:33 + pop di ; 5f ; 0xf9f26 + pop si ; 5e ; 0xf9f27 + pop bp ; 5d ; 0xf9f28 + retn ; c3 ; 0xf9f29 + ; disGetNextSymbol 0xf9f2a LB 0x1e -> off=0x6 cb=0000000000000018 uValue=00000000000f8930 '_ASMBitLastSetU16' + db 000h, 000h, 000h, 000h, 000h, 000h +_ASMBitLastSetU16: ; 0xf9f30 LB 0x18 + push bp ; 55 ; 0xf9f30 ASMBitLastSetU16.asm:43 + db 08bh, 0ech + ; mov bp, sp ; 8b ec ; 0xf9f31 ASMBitLastSetU16.asm:44 + mov cx, word [bp+004h] ; 8b 4e 04 ; 0xf9f33 ASMBitLastSetU16.asm:46 + test cx, cx ; 85 c9 ; 0xf9f36 ASMBitLastSetU16.asm:47 + je short 09f44h ; 74 0a ; 0xf9f38 ASMBitLastSetU16.asm:48 + mov ax, strict word 00010h ; b8 10 00 ; 0xf9f3a ASMBitLastSetU16.asm:50 + sal cx, 1 ; d1 e1 ; 0xf9f3d ASMBitLastSetU16.asm:52 + jc short 09f46h ; 72 05 ; 0xf9f3f ASMBitLastSetU16.asm:53 + dec ax ; 48 ; 0xf9f41 ASMBitLastSetU16.asm:54 + jmp short 09f3dh ; eb f9 ; 0xf9f42 ASMBitLastSetU16.asm:55 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xf9f44 ASMBitLastSetU16.asm:58 + pop bp ; 5d ; 0xf9f46 ASMBitLastSetU16.asm:60 + retn ; c3 ; 0xf9f47 ASMBitLastSetU16.asm:61 + + ; Padding 0x3ab8 bytes at 0xf9f48 + times 15032 db 0 + +section BIOS32 progbits vstart=0xda00 align=1 ; size=0x39d class=CODE group=AUTO + ; disGetNextSymbol 0xfda00 LB 0x39d -> off=0x0 cb=0000000000000026 uValue=00000000000f0000 'bios32_service' +bios32_service: ; 0xfda00 LB 0x26 + pushfw ; 9c ; 0xfda00 pcibio32.asm:52 + cmp bl, 000h ; 80 fb 00 ; 0xfda01 pcibio32.asm:54 + jne short 0da22h ; 75 1c ; 0xfda04 pcibio32.asm:55 + cmp ax, 05024h ; 3d 24 50 ; 0xfda06 pcibio32.asm:57 + inc bx ; 43 ; 0xfda09 + dec cx ; 49 ; 0xfda0a + mov AL, strict byte 080h ; b0 80 ; 0xfda0b pcibio32.asm:58 + jne short 0da20h ; 75 11 ; 0xfda0d pcibio32.asm:59 + mov bx, strict word 00000h ; bb 00 00 ; 0xfda0f pcibio32.asm:61 + db 00fh + add byte [bx+di-01000h], bh ; 00 b9 00 f0 ; 0xfda13 + add byte [bx+si], al ; 00 00 ; 0xfda17 + mov dx, 0da26h ; ba 26 da ; 0xfda19 pcibio32.asm:63 + add byte [bx+si], al ; 00 00 ; 0xfda1c + db 032h, 0c0h + ; xor al, al ; 32 c0 ; 0xfda1e pcibio32.asm:64 + popfw ; 9d ; 0xfda20 pcibio32.asm:66 + retf ; cb ; 0xfda21 pcibio32.asm:67 + mov AL, strict byte 081h ; b0 81 ; 0xfda22 pcibio32.asm:70 + jmp short 0da20h ; eb fa ; 0xfda24 pcibio32.asm:71 + ; disGetNextSymbol 0xfda26 LB 0x377 -> off=0x0 cb=000000000000000d uValue=00000000000f0026 'pcibios32_entry' +pcibios32_entry: ; 0xfda26 LB 0xd + pushfw ; 9c ; 0xfda26 pcibio32.asm:80 + cld ; fc ; 0xfda27 pcibio32.asm:81 + push ES ; 06 ; 0xfda28 pcibio32.asm:83 + pushaw ; 60 ; 0xfda29 pcibio32.asm:84 + call 0db4ah ; e8 1d 01 ; 0xfda2a pcibio32.asm:85 + add byte [bx+si], al ; 00 00 ; 0xfda2d + popaw ; 61 ; 0xfda2f pcibio32.asm:86 + pop ES ; 07 ; 0xfda30 pcibio32.asm:87 + popfw ; 9d ; 0xfda31 pcibio32.asm:89 + retf ; cb ; 0xfda32 pcibio32.asm:90 + ; disGetNextSymbol 0xfda33 LB 0x36a -> off=0x0 cb=0000000000000022 uValue=00000000000f0033 'pci32_select_reg_' +pci32_select_reg_: ; 0xfda33 LB 0x22 + push bp ; 55 ; 0xfda33 pci32.c:188 + mov bp, sp ; 89 e5 ; 0xfda34 + push bx ; 53 ; 0xfda36 + and dl, 0fch ; 80 e2 fc ; 0xfda37 pci32.c:190 + mov bx, dx ; 89 d3 ; 0xfda3a + mov dx, 00cf8h ; ba f8 0c ; 0xfda3c + add byte [bx+si], al ; 00 00 ; 0xfda3f + db 00fh, 0b7h, 0c0h + ; movzx ax, ax ; 0f b7 c0 ; 0xfda41 + sal ax, 008h ; c1 e0 08 ; 0xfda44 + or ax, strict word 00000h ; 0d 00 00 ; 0xfda47 + add byte [bx+si-03c76h], al ; 00 80 8a c3 ; 0xfda4a + out DX, ax ; ef ; 0xfda4e + lea sp, [di-004h] ; 8d 65 fc ; 0xfda4f pci32.c:191 + pop bx ; 5b ; 0xfda52 + pop bp ; 5d ; 0xfda53 + retn ; c3 ; 0xfda54 + ; disGetNextSymbol 0xfda55 LB 0x348 -> off=0x0 cb=00000000000000f7 uValue=00000000000f0055 'pci32_find_device_' +pci32_find_device_: ; 0xfda55 LB 0xf7 + push bp ; 55 ; 0xfda55 pci32.c:221 + mov bp, sp ; 89 e5 ; 0xfda56 + push cx ; 51 ; 0xfda58 + push si ; 56 ; 0xfda59 + push di ; 57 ; 0xfda5a + sub sp, strict byte 00014h ; 83 ec 14 ; 0xfda5b + push ax ; 50 ; 0xfda5e + mov cx, dx ; 89 d1 ; 0xfda5f + mov si, bx ; 89 de ; 0xfda61 + test bx, bx ; 85 db ; 0xfda63 pci32.c:231 + xor bx, bx ; 31 db ; 0xfda65 pci32.c:238 + mov byte [di-010h], 000h ; c6 45 f0 00 ; 0xfda67 pci32.c:239 + test bl, 007h ; f6 c3 07 ; 0xfda6b pci32.c:249 + jne short 0daa6h ; 75 36 ; 0xfda6e + db 00fh, 0b7h, 0c3h + ; movzx ax, bx ; 0f b7 c3 ; 0xfda70 pci32.c:250 + mov dx, strict word 0000eh ; ba 0e 00 ; 0xfda73 + add byte [bx+si], al ; 00 00 ; 0xfda76 + call 0da31h ; e8 b6 ff ; 0xfda78 + db 0ffh + db 0ffh + mov dx, 00cfeh ; ba fe 0c ; 0xfda7d pci32.c:251 + add byte [bx+si], al ; 00 00 ; 0xfda80 + db 02bh, 0c0h + ; sub ax, ax ; 2b c0 ; 0xfda82 + in AL, DX ; ec ; 0xfda84 + mov byte [di-014h], al ; 88 45 ec ; 0xfda85 + cmp AL, strict byte 0ffh ; 3c ff ; 0xfda88 pci32.c:252 + jne short 0da94h ; 75 08 ; 0xfda8a + add bx, strict byte 00008h ; 83 c3 08 ; 0xfda8c pci32.c:253 + jmp near 0db1ch ; e9 8a 00 ; 0xfda8f pci32.c:254 + add byte [bx+si], al ; 00 00 ; 0xfda92 + test byte [di-014h], 080h ; f6 45 ec 80 ; 0xfda94 pci32.c:256 + je short 0daa1h ; 74 07 ; 0xfda98 + mov di, strict word 00001h ; bf 01 00 ; 0xfda9a pci32.c:257 + add byte [bx+si], al ; 00 00 ; 0xfda9d + jmp short 0daa6h ; eb 05 ; 0xfda9f pci32.c:258 + mov di, strict word 00008h ; bf 08 00 ; 0xfdaa1 pci32.c:259 + add byte [bx+si], al ; 00 00 ; 0xfdaa4 + mov al, byte [di-014h] ; 8a 45 ec ; 0xfdaa6 pci32.c:270 + and AL, strict byte 007h ; 24 07 ; 0xfdaa9 + cmp AL, strict byte 001h ; 3c 01 ; 0xfdaab + jne short 0dad5h ; 75 26 ; 0xfdaad + db 00fh, 0b7h, 0c3h + ; movzx ax, bx ; 0f b7 c3 ; 0xfdaaf + mov dx, ax ; 89 c2 ; 0xfdab2 + sar dx, 008h ; c1 fa 08 ; 0xfdab4 + test dx, dx ; 85 d2 ; 0xfdab7 + jne short 0dad5h ; 75 1a ; 0xfdab9 + mov dx, strict word 0001ah ; ba 1a 00 ; 0xfdabb pci32.c:272 + add byte [bx+si], al ; 00 00 ; 0xfdabe + call 0da31h ; e8 6e ff ; 0xfdac0 + db 0ffh + db 0ffh + mov dx, 00cfeh ; ba fe 0c ; 0xfdac5 pci32.c:273 + add byte [bx+si], al ; 00 00 ; 0xfdac8 + db 02bh, 0c0h + ; sub ax, ax ; 2b c0 ; 0xfdaca + in AL, DX ; ec ; 0xfdacc + cmp al, byte [di-010h] ; 3a 45 f0 ; 0xfdacd pci32.c:274 + jbe short 0dad5h ; 76 03 ; 0xfdad0 + mov byte [di-010h], al ; 88 45 f0 ; 0xfdad2 pci32.c:275 + test si, si ; 85 f6 ; 0xfdad5 pci32.c:279 + je short 0dae0h ; 74 07 ; 0xfdad7 + mov ax, strict word 00008h ; b8 08 00 ; 0xfdad9 + add byte [bx+si], al ; 00 00 ; 0xfdadc + jmp short 0dae2h ; eb 02 ; 0xfdade + xor ax, ax ; 31 c0 ; 0xfdae0 + db 00fh, 0b7h, 0d0h + ; movzx dx, ax ; 0f b7 d0 ; 0xfdae2 + db 00fh, 0b7h, 0c3h + ; movzx ax, bx ; 0f b7 c3 ; 0xfdae5 + call 0da31h ; e8 46 ff ; 0xfdae8 + db 0ffh + db 0ffh + mov dx, 00cfch ; ba fc 0c ; 0xfdaed pci32.c:280 + add byte [bx+si], al ; 00 00 ; 0xfdaf0 + in ax, DX ; ed ; 0xfdaf2 + mov word [di-018h], ax ; 89 45 e8 ; 0xfdaf3 + mov word [di-020h], strict word 00000h ; c7 45 e0 00 00 ; 0xfdaf6 pci32.c:281 + add byte [bx+si], al ; 00 00 ; 0xfdafb + test si, si ; 85 f6 ; 0xfdafd pci32.c:284 + je short 0db07h ; 74 06 ; 0xfdaff + shr ax, 008h ; c1 e8 08 ; 0xfdb01 pci32.c:285 + mov word [di-018h], ax ; 89 45 e8 ; 0xfdb04 + mov ax, word [di-018h] ; 8b 45 e8 ; 0xfdb07 pci32.c:292 + cmp ax, word [di-024h] ; 3b 45 dc ; 0xfdb0a + je short 0db15h ; 74 06 ; 0xfdb0d + cmp word [di-020h], strict byte 00000h ; 83 7d e0 00 ; 0xfdb0f pci32.c:293 + je short 0db1ch ; 74 07 ; 0xfdb13 + dec cx ; 49 ; 0xfdb15 + cmp ecx, strict byte 0ffffffffh ; 66 83 f9 ff ; 0xfdb16 + je short 0db34h ; 74 18 ; 0xfdb1a + add bx, di ; 01 fb ; 0xfdb1c pci32.c:301 + db 00fh, 0b7h, 0c3h + ; movzx ax, bx ; 0f b7 c3 ; 0xfdb1e pci32.c:302 + sar ax, 008h ; c1 f8 08 ; 0xfdb21 + mov word [di-01ch], ax ; 89 45 e4 ; 0xfdb24 + movzx ax, byte [di-010h] ; 0f b6 45 f0 ; 0xfdb27 + cmp ax, word [di-01ch] ; 3b 45 e4 ; 0xfdb2b + jnl near 0da69h ; 0f 8d 37 ff ; 0xfdb2e + db 0ffh + jmp word [bp-07dh] ; ff 66 83 ; 0xfdb33 + stc ; f9 ; 0xfdb36 + push word [di+005h] ; ff 75 05 ; 0xfdb37 + db 00fh, 0b7h, 0c3h + ; movzx ax, bx ; 0f b7 c3 ; 0xfdb3a + jmp short 0db44h ; eb 05 ; 0xfdb3d + mov ax, strict word 0ffffh ; b8 ff ff ; 0xfdb3f + add byte [bx+si], al ; 00 00 ; 0xfdb42 + lea sp, [di-00ch] ; 8d 65 f4 ; 0xfdb44 pci32.c:309 + pop di ; 5f ; 0xfdb47 + pop si ; 5e ; 0xfdb48 + pop cx ; 59 ; 0xfdb49 + pop bp ; 5d ; 0xfdb4a + retn ; c3 ; 0xfdb4b + ; disGetNextSymbol 0xfdb4c LB 0x251 -> off=0x0 cb=0000000000000251 uValue=00000000000f014c '_pci32_function' +_pci32_function: ; 0xfdb4c LB 0x251 + push bp ; 55 ; 0xfdb4c pci32.c:311 + mov bp, sp ; 89 e5 ; 0xfdb4d + push bx ; 53 ; 0xfdb4f + push si ; 56 ; 0xfdb50 + push di ; 57 ; 0xfdb51 + push ax ; 50 ; 0xfdb52 + push ax ; 50 ; 0xfdb53 + and dword [di+024h], strict dword 0658100ffh ; 66 81 65 24 ff 00 81 65 ; 0xfdb54 pci32.c:318 + sub AL, strict byte 0feh ; 2c fe ; 0xfdb5c + inc word [bx+si] ; ff 00 ; 0xfdb5e + add byte [bp+di+02445h], cl ; 00 8b 45 24 ; 0xfdb60 + xor ah, ah ; 30 e4 ; 0xfdb64 + cmp eax, strict dword 029720003h ; 66 3d 03 00 72 29 ; 0xfdb66 + jbe near 0dc09h ; 0f 86 99 00 ; 0xfdb6c + add byte [bx+si], al ; 00 00 ; 0xfdb70 + cmp eax, strict dword 0840f000eh ; 66 3d 0e 00 0f 84 ; 0xfdb72 + test ax, strict word 00001h ; a9 01 00 ; 0xfdb78 + add byte [bp+03dh], ah ; 00 66 3d ; 0xfdb7b + or byte [bx+si], al ; 08 00 ; 0xfdb7e + jc near 0dd83h ; 0f 82 ff 01 ; 0xfdb80 + add byte [bx+si], al ; 00 00 ; 0xfdb84 + cmp eax, strict dword 0860f000dh ; 66 3d 0d 00 0f 86 ; 0xfdb86 + test AL, strict byte 000h ; a8 00 ; 0xfdb8c + add byte [bx+si], al ; 00 00 ; 0xfdb8e + jmp near 0dd83h ; e9 f0 01 ; 0xfdb90 + add byte [bx+si], al ; 00 00 ; 0xfdb93 + cmp eax, strict dword 028740002h ; 66 3d 02 00 74 28 ; 0xfdb95 + cmp eax, strict dword 0850f0001h ; 66 3d 01 00 0f 85 ; 0xfdb9b + loopne 0dba4h ; e0 01 ; 0xfdba1 + add byte [bx+si], al ; 00 00 ; 0xfdba3 + mov dword [di+024h], strict dword 0c7660001h ; 66 c7 45 24 01 00 66 c7 ; 0xfdba5 pci32.c:323 + inc bp ; 45 ; 0xfdbad + sbb byte [bx+si], dl ; 18 10 ; 0xfdbae + add dh, byte [bx+di] ; 02 31 ; 0xfdbb0 + sal byte [bp-077h], 045h ; c0 66 89 45 ; 0xfdbb2 + and bh, al ; 20 c7 ; 0xfdbb6 + inc bp ; 45 ; 0xfdbb8 + sbb AL, strict byte 050h ; 1c 50 ; 0xfdbb9 + inc bx ; 43 ; 0xfdbbb + dec cx ; 49 ; 0xfdbbc + and cl, ch ; 20 e9 ; 0xfdbbd + rol byte [bx+di], CL ; d2 01 ; 0xfdbbf + add byte [bx+si], al ; 00 00 ; 0xfdbc1 + cmp dword [di+01ch], strict byte 0ffffffffh ; 66 83 7d 1c ff ; 0xfdbc3 pci32.c:333 + jne short 0dbd7h ; 75 0d ; 0xfdbc8 + mov ax, word [di+024h] ; 8b 45 24 ; 0xfdbca pci32.c:334 + xor ah, ah ; 30 e4 ; 0xfdbcd + or ah, 083h ; 80 cc 83 ; 0xfdbcf + jmp near 0dd8bh ; e9 b6 01 ; 0xfdbd2 pci32.c:335 + add byte [bx+si], al ; 00 00 ; 0xfdbd5 + xor bx, bx ; 31 db ; 0xfdbd7 pci32.c:337 + db 00fh, 0b7h, 055h, 00ch + ; movzx dx, [di+00ch] ; 0f b7 55 0c ; 0xfdbd9 + db 00fh, 0b7h, 045h, 020h + ; movzx ax, [di+020h] ; 0f b7 45 20 ; 0xfdbdd + sal ax, 010h ; c1 e0 10 ; 0xfdbe1 + db 00fh, 0b7h, 04dh, 01ch + ; movzx cx, [di+01ch] ; 0f b7 4d 1c ; 0xfdbe4 + or ax, cx ; 09 c8 ; 0xfdbe8 + call 0da53h ; e8 66 fe ; 0xfdbea + db 0ffh + jmp word [bp+03dh] ; ff 66 3d ; 0xfdbee + db 0ffh + push word [di+00dh] ; ff 75 0d ; 0xfdbf2 + mov ax, word [di+024h] ; 8b 45 24 ; 0xfdbf5 pci32.c:339 + xor ah, ah ; 30 e4 ; 0xfdbf8 + or ah, 086h ; 80 cc 86 ; 0xfdbfa + jmp near 0dd8bh ; e9 8b 01 ; 0xfdbfd + add byte [bx+si], al ; 00 00 ; 0xfdc00 + mov dword [di+018h], eax ; 66 89 45 18 ; 0xfdc02 pci32.c:340 + jmp near 0dd93h ; e9 8a 01 ; 0xfdc06 pci32.c:345 + add byte [bx+si], al ; 00 00 ; 0xfdc09 + db 00fh, 0b7h, 055h, 00ch + ; movzx dx, [di+00ch] ; 0f b7 55 0c ; 0xfdc0b pci32.c:347 + mov ax, word [di+020h] ; 8b 45 20 ; 0xfdc0f + mov bx, strict word 00001h ; bb 01 00 ; 0xfdc12 + add byte [bx+si], al ; 00 00 ; 0xfdc15 + call 0da53h ; e8 39 fe ; 0xfdc17 + db 0ffh + jmp word [bp+03dh] ; ff 66 3d ; 0xfdc1b + db 0ffh + push word [di+00dh] ; ff 75 0d ; 0xfdc1f + mov ax, word [di+024h] ; 8b 45 24 ; 0xfdc22 pci32.c:349 + xor ah, ah ; 30 e4 ; 0xfdc25 + or ah, 086h ; 80 cc 86 ; 0xfdc27 + jmp near 0dd8bh ; e9 5e 01 ; 0xfdc2a pci32.c:350 + add byte [bx+si], al ; 00 00 ; 0xfdc2d + mov dword [di+018h], eax ; 66 89 45 18 ; 0xfdc2f pci32.c:352 + jmp near 0dd93h ; e9 5d 01 ; 0xfdc33 pci32.c:354 + add byte [bx+si], al ; 00 00 ; 0xfdc36 + cmp dword [di+008h], strict dword 00d720100h ; 66 81 7d 08 00 01 72 0d ; 0xfdc38 pci32.c:361 + mov ax, word [di+024h] ; 8b 45 24 ; 0xfdc40 pci32.c:362 + xor ah, ah ; 30 e4 ; 0xfdc43 + or ah, 087h ; 80 cc 87 ; 0xfdc45 + jmp near 0dd8bh ; e9 40 01 ; 0xfdc48 pci32.c:363 + add byte [bx+si], al ; 00 00 ; 0xfdc4b + db 00fh, 0b7h, 055h, 008h + ; movzx dx, [di+008h] ; 0f b7 55 08 ; 0xfdc4d pci32.c:365 + db 00fh, 0b7h, 045h, 018h + ; movzx ax, [di+018h] ; 0f b7 45 18 ; 0xfdc51 + call 0da31h ; e8 d9 fd ; 0xfdc55 + db 0ffh + dec word [bp+di+02445h] ; ff 8b 45 24 ; 0xfdc59 + xor ah, ah ; 30 e4 ; 0xfdc5d + cmp eax, strict dword 02172000ah ; 66 3d 0a 00 72 21 ; 0xfdc5f + jbe short 0dcd6h ; 76 6f ; 0xfdc65 + cmp eax, strict dword 0840f000dh ; 66 3d 0d 00 0f 84 ; 0xfdc67 + test ax, strict word 00000h ; a9 00 00 ; 0xfdc6d + add byte [bp+03dh], ah ; 00 66 3d ; 0xfdc70 + or AL, strict byte 000h ; 0c 00 ; 0xfdc73 + je near 0dcfch ; 0f 84 83 00 ; 0xfdc75 + add byte [bx+si], al ; 00 00 ; 0xfdc79 + cmp eax, strict dword 06374000bh ; 66 3d 0b 00 74 63 ; 0xfdc7b + jmp near 0dd93h ; e9 0f 01 ; 0xfdc81 + add byte [bx+si], al ; 00 00 ; 0xfdc84 + cmp eax, strict dword 02d740009h ; 66 3d 09 00 74 2d ; 0xfdc86 + cmp eax, strict dword 0850f0008h ; 66 3d 08 00 0f 85 ; 0xfdc8c + inc word [bx+si] ; ff 00 ; 0xfdc92 + add byte [bx+si], al ; 00 00 ; 0xfdc94 + mov bx, word [di+020h] ; 8b 5d 20 ; 0xfdc96 pci32.c:368 + xor bl, bl ; 30 db ; 0xfdc99 + mov ax, word [di+008h] ; 8b 45 08 ; 0xfdc9b + xor ah, ah ; 30 e4 ; 0xfdc9e + and AL, strict byte 003h ; 24 03 ; 0xfdca0 + db 00fh, 0b7h, 0d0h + ; movzx dx, ax ; 0f b7 d0 ; 0xfdca2 + add dx, 00cfch ; 81 c2 fc 0c ; 0xfdca5 + add byte [bx+si], al ; 00 00 ; 0xfdca9 + db 02bh, 0c0h + ; sub ax, ax ; 2b c0 ; 0xfdcab + in AL, DX ; ec ; 0xfdcad + or bx, ax ; 09 c3 ; 0xfdcae + mov dword [di+020h], ebx ; 66 89 5d 20 ; 0xfdcb0 + jmp near 0dd93h ; e9 dc 00 ; 0xfdcb4 pci32.c:369 + add byte [bx+si], al ; 00 00 ; 0xfdcb7 + mov ax, word [di+008h] ; 8b 45 08 ; 0xfdcb9 pci32.c:371 + xor ah, ah ; 30 e4 ; 0xfdcbc + and AL, strict byte 002h ; 24 02 ; 0xfdcbe + db 00fh, 0b7h, 0d0h + ; movzx dx, ax ; 0f b7 d0 ; 0xfdcc0 + add dx, 00cfch ; 81 c2 fc 0c ; 0xfdcc3 + add byte [bx+si], al ; 00 00 ; 0xfdcc7 + db 02bh, 0c0h + ; sub ax, ax ; 2b c0 ; 0xfdcc9 + in eax, DX ; 66 ed ; 0xfdccb + mov dword [di+020h], eax ; 66 89 45 20 ; 0xfdccd + jmp near 0dd93h ; e9 bf 00 ; 0xfdcd1 pci32.c:372 + add byte [bx+si], al ; 00 00 ; 0xfdcd4 + mov dx, 00cfch ; ba fc 0c ; 0xfdcd6 pci32.c:374 + add byte [bx+si], al ; 00 00 ; 0xfdcd9 + in ax, DX ; ed ; 0xfdcdb + mov word [di+020h], ax ; 89 45 20 ; 0xfdcdc + jmp near 0dd93h ; e9 b1 00 ; 0xfdcdf pci32.c:375 + add byte [bx+si], al ; 00 00 ; 0xfdce2 + mov ax, word [di+020h] ; 8b 45 20 ; 0xfdce4 pci32.c:377 + mov dx, word [di+008h] ; 8b 55 08 ; 0xfdce7 + xor dh, dh ; 30 f6 ; 0xfdcea + and dl, 003h ; 80 e2 03 ; 0xfdcec + db 00fh, 0b7h, 0d2h + ; movzx dx, dx ; 0f b7 d2 ; 0xfdcef + add dx, 00cfch ; 81 c2 fc 0c ; 0xfdcf2 + add byte [bx+si], al ; 00 00 ; 0xfdcf6 + out DX, AL ; ee ; 0xfdcf8 + jmp near 0dd93h ; e9 97 00 ; 0xfdcf9 pci32.c:378 + add byte [bx+si], al ; 00 00 ; 0xfdcfc + db 00fh, 0b7h, 045h, 020h + ; movzx ax, [di+020h] ; 0f b7 45 20 ; 0xfdcfe pci32.c:380 + mov dx, word [di+008h] ; 8b 55 08 ; 0xfdd02 + xor dh, dh ; 30 f6 ; 0xfdd05 + and dl, 002h ; 80 e2 02 ; 0xfdd07 + db 00fh, 0b7h, 0d2h + ; movzx dx, dx ; 0f b7 d2 ; 0xfdd0a + add dx, 00cfch ; 81 c2 fc 0c ; 0xfdd0d + add byte [bx+si], al ; 00 00 ; 0xfdd11 + out DX, eax ; 66 ef ; 0xfdd13 + jmp near 0dd93h ; e9 7b 00 ; 0xfdd15 pci32.c:381 + add byte [bx+si], al ; 00 00 ; 0xfdd18 + mov ax, word [di+020h] ; 8b 45 20 ; 0xfdd1a pci32.c:383 + mov dx, 00cfch ; ba fc 0c ; 0xfdd1d + add byte [bx+si], al ; 00 00 ; 0xfdd20 + out DX, ax ; ef ; 0xfdd22 + jmp short 0dd95h ; eb 70 ; 0xfdd23 pci32.c:387 + db 00fh, 0b7h, 045h, 008h + ; movzx ax, [di+008h] ; 0f b7 45 08 ; 0xfdd25 pci32.c:389 + mov es, [di+028h] ; 8e 45 28 ; 0xfdd29 + mov [di-010h], es ; 8c 45 f0 ; 0xfdd2c + mov bx, ax ; 89 c3 ; 0xfdd2f + mov edx, dword [di] ; 66 8b 15 ; 0xfdd31 pci32.c:393 + xor bl, 000h ; 80 f3 00 ; 0xfdd34 + add byte [bp+026h], ah ; 00 66 26 ; 0xfdd37 + cmp dx, word [bx+si] ; 3b 10 ; 0xfdd3a + jbe short 0dd50h ; 76 12 ; 0xfdd3c + mov ax, word [di+024h] ; 8b 45 24 ; 0xfdd3e pci32.c:394 + xor ah, ah ; 30 e4 ; 0xfdd41 + or ah, 089h ; 80 cc 89 ; 0xfdd43 + mov dword [di+024h], eax ; 66 89 45 24 ; 0xfdd46 + or word [di+02ch], strict byte 00001h ; 83 4d 2c 01 ; 0xfdd4a pci32.c:395 + jmp short 0dd76h ; eb 26 ; 0xfdd4e pci32.c:396 + db 00fh, 0b7h, 0cah + ; movzx cx, dx ; 0f b7 ca ; 0xfdd50 pci32.c:397 + db 066h, 026h, 08bh, 050h, 006h + ; mov edx, dword [es:bx+si+006h] ; 66 26 8b 50 06 ; 0xfdd53 + mov word [di-014h], dx ; 89 55 ec ; 0xfdd58 + mov di, word [es:bx+si+002h] ; 26 8b 78 02 ; 0xfdd5b + mov dx, ds ; 8c da ; 0xfdd5f + mov si, 0f1a0h ; be a0 f1 ; 0xfdd61 + add byte [bx+si], al ; 00 00 ; 0xfdd64 + mov es, [di-014h] ; 8e 45 ec ; 0xfdd66 + push DS ; 1e ; 0xfdd69 + db 066h, 08eh, 0dah + ; mov ds, edx ; 66 8e da ; 0xfdd6a + rep movsb ; f3 a4 ; 0xfdd6d + pop DS ; 1f ; 0xfdd6f + mov dword [di+018h], strict dword 0a1660a00h ; 66 c7 45 18 00 0a 66 a1 ; 0xfdd70 pci32.c:399 + xor bl, 000h ; 80 f3 00 ; 0xfdd78 + add byte [bp-00fbbh], cl ; 00 8e 45 f0 ; 0xfdd7b + db 066h, 026h, 089h, 003h + ; mov dword [es:bp+di], eax ; 66 26 89 03 ; 0xfdd7f + jmp short 0dd95h ; eb 10 ; 0xfdd83 pci32.c:402 + mov ax, word [di+024h] ; 8b 45 24 ; 0xfdd85 pci32.c:405 + xor ah, ah ; 30 e4 ; 0xfdd88 + or ah, 081h ; 80 cc 81 ; 0xfdd8a + mov dword [di+024h], eax ; 66 89 45 24 ; 0xfdd8d + or word [di+02ch], strict byte 00001h ; 83 4d 2c 01 ; 0xfdd91 pci32.c:406 + lea sp, [di-00ch] ; 8d 65 f4 ; 0xfdd95 pci32.c:408 + pop di ; 5f ; 0xfdd98 + pop si ; 5e ; 0xfdd99 + pop bx ; 5b ; 0xfdd9a + pop bp ; 5d ; 0xfdd9b + retn ; c3 ; 0xfdd9c + + ; Padding 0x3 bytes at 0xfdd9d + times 3 db 0 + +section BIOS32CONST progbits vstart=0xdda0 align=1 ; size=0x0 class=FAR_DATA group=BIOS32_GROUP + +section BIOS32CONST2 progbits vstart=0xdda0 align=1 ; size=0x0 class=FAR_DATA group=BIOS32_GROUP + +section BIOS32_DATA progbits vstart=0xdda0 align=1 ; size=0x0 class=FAR_DATA group=BIOS32_GROUP + + ; Padding 0x260 bytes at 0xfdda0 + times 608 db 0 + +section BIOSSEG progbits vstart=0xe000 align=1 ; size=0x2000 class=CODE group=AUTO + ; disGetNextSymbol 0xfe000 LB 0x2000 -> off=0x0 cb=0000000000000030 uValue=00000000000f0000 'biosorg_check_before_or_at_0E02Eh' +biosorg_check_before_or_at_0E02Eh: ; 0xfe000 LB 0x30 + times 0x2e db 0 + db 'XM' + ; disGetNextSymbol 0xfe030 LB 0x1fd0 -> off=0x0 cb=0000000000000004 uValue=00000000000f0030 'eoi_both_pics' +eoi_both_pics: ; 0xfe030 LB 0x4 + mov AL, strict byte 020h ; b0 20 ; 0xfe030 orgs.asm:238 + out strict byte 0a0h, AL ; e6 a0 ; 0xfe032 orgs.asm:239 + ; disGetNextSymbol 0xfe034 LB 0x1fcc -> off=0x0 cb=0000000000000005 uValue=00000000000f0034 'eoi_master_pic' +eoi_master_pic: ; 0xfe034 LB 0x5 + mov AL, strict byte 020h ; b0 20 ; 0xfe034 orgs.asm:241 + out strict byte 020h, AL ; e6 20 ; 0xfe036 orgs.asm:242 + retn ; c3 ; 0xfe038 orgs.asm:243 + ; disGetNextSymbol 0xfe039 LB 0x1fc7 -> off=0x0 cb=000000000000000b uValue=0000000000000039 'set_int_vects' +set_int_vects: ; 0xfe039 LB 0xb + mov word [bx], ax ; 89 07 ; 0xfe039 orgs.asm:250 + mov word [bx+002h], dx ; 89 57 02 ; 0xfe03b orgs.asm:251 + add bx, strict byte 00004h ; 83 c3 04 ; 0xfe03e orgs.asm:252 + loop 0e039h ; e2 f6 ; 0xfe041 orgs.asm:253 + retn ; c3 ; 0xfe043 orgs.asm:254 + ; disGetNextSymbol 0xfe044 LB 0x1fbc -> off=0x0 cb=0000000000000006 uValue=00000000000f0044 'eoi_jmp_post' +eoi_jmp_post: ; 0xfe044 LB 0x6 + in AL, strict byte 060h ; e4 60 ; 0xfe044 orgs.asm:262 + mov AL, strict byte 020h ; b0 20 ; 0xfe046 orgs.asm:263 + out strict byte 020h, AL ; e6 20 ; 0xfe048 orgs.asm:264 + ; disGetNextSymbol 0xfe04a LB 0x1fb6 -> off=0x0 cb=0000000000000009 uValue=00000000000f004a 'no_eoi_jmp_post' +no_eoi_jmp_post: ; 0xfe04a LB 0x9 + mov ax, strict word 00040h ; b8 40 00 ; 0xfe04a orgs.asm:267 + mov ds, ax ; 8e d8 ; 0xfe04d orgs.asm:268 + jmp far [word 00067h] ; ff 2e 67 00 ; 0xfe04f orgs.asm:269 + ; disGetNextSymbol 0xfe053 LB 0x1fad -> off=0x0 cb=0000000000000002 uValue=00000000000f0053 'seg_40_value' +seg_40_value: ; 0xfe053 LB 0x2 + inc ax ; 40 ; 0xfe053 + times 0x1 db 0 + ; disGetNextSymbol 0xfe055 LB 0x1fab -> off=0x0 cb=0000000000000006 uValue=00000000000f0055 'biosorg_check_before_or_at_0E059h' +biosorg_check_before_or_at_0E059h: ; 0xfe055 LB 0x6 + add byte [bx+si], al ; 00 00 ; 0xfe055 + add byte [bx+si], al ; 00 00 ; 0xfe057 + pop ax ; 58 ; 0xfe059 + dec bp ; 4d ; 0xfe05a + ; disGetNextSymbol 0xfe05b LB 0x1fa5 -> off=0x0 cb=0000000000000068 uValue=00000000000f005b 'post' +post: ; 0xfe05b LB 0x68 + cli ; fa ; 0xfe05b orgs.asm:278 + jmp short 0e064h ; eb 06 ; 0xfe05c orgs.asm:289 + mov AL, strict byte 001h ; b0 01 ; 0xfe05e orgs.asm:295 + out strict byte 092h, AL ; e6 92 ; 0xfe060 orgs.asm:296 + jmp short 0e062h ; eb fe ; 0xfe062 orgs.asm:297 + mov AL, strict byte 00fh ; b0 0f ; 0xfe064 orgs.asm:302 + out strict byte 070h, AL ; e6 70 ; 0xfe066 orgs.asm:303 + in AL, strict byte 071h ; e4 71 ; 0xfe068 orgs.asm:304 + xchg ah, al ; 86 c4 ; 0xfe06a orgs.asm:307 + in AL, strict byte 064h ; e4 64 ; 0xfe06c orgs.asm:311 + test AL, strict byte 004h ; a8 04 ; 0xfe06e orgs.asm:312 + je short 0e085h ; 74 13 ; 0xfe070 orgs.asm:313 + db 08ah, 0c4h + ; mov al, ah ; 8a c4 ; 0xfe072 orgs.asm:316 + db 00ah, 0c0h + ; or al, al ; 0a c0 ; 0xfe074 orgs.asm:317 + jne short 0e085h ; 75 0d ; 0xfe076 orgs.asm:318 + mov ds, [cs:0e053h] ; 2e 8e 1e 53 e0 ; 0xfe078 orgs.asm:324 + cmp word [word 00072h], 01234h ; 81 3e 72 00 34 12 ; 0xfe07d orgs.asm:325 + jne short 0e05eh ; 75 d9 ; 0xfe083 orgs.asm:326 + mov AL, strict byte 00fh ; b0 0f ; 0xfe085 orgs.asm:330 + out strict byte 070h, AL ; e6 70 ; 0xfe087 orgs.asm:331 + mov AL, strict byte 000h ; b0 00 ; 0xfe089 orgs.asm:332 + out strict byte 071h, AL ; e6 71 ; 0xfe08b orgs.asm:333 + db 08ah, 0c4h + ; mov al, ah ; 8a c4 ; 0xfe08d orgs.asm:337 + cmp AL, strict byte 009h ; 3c 09 ; 0xfe08f orgs.asm:338 + je short 0e0a5h ; 74 12 ; 0xfe091 orgs.asm:339 + cmp AL, strict byte 00ah ; 3c 0a ; 0xfe093 orgs.asm:340 + je short 0e0a5h ; 74 0e ; 0xfe095 orgs.asm:341 + db 032h, 0c0h + ; xor al, al ; 32 c0 ; 0xfe097 orgs.asm:343 + out strict byte 00dh, AL ; e6 0d ; 0xfe099 orgs.asm:346 + out strict byte 0dah, AL ; e6 da ; 0xfe09b orgs.asm:347 + mov AL, strict byte 0c0h ; b0 c0 ; 0xfe09d orgs.asm:350 + out strict byte 0d6h, AL ; e6 d6 ; 0xfe09f orgs.asm:351 + mov AL, strict byte 000h ; b0 00 ; 0xfe0a1 orgs.asm:352 + out strict byte 0d4h, AL ; e6 d4 ; 0xfe0a3 orgs.asm:353 + db 08ah, 0c4h + ; mov al, ah ; 8a c4 ; 0xfe0a5 orgs.asm:357 + cmp AL, strict byte 000h ; 3c 00 ; 0xfe0a7 orgs.asm:358 + je short 0e0c3h ; 74 18 ; 0xfe0a9 orgs.asm:359 + cmp AL, strict byte 00dh ; 3c 0d ; 0xfe0ab orgs.asm:361 + jnc short 0e0c3h ; 73 14 ; 0xfe0ad orgs.asm:362 + cmp AL, strict byte 009h ; 3c 09 ; 0xfe0af orgs.asm:363 + jne short 0e0b6h ; 75 03 ; 0xfe0b1 orgs.asm:364 + jmp near 0e350h ; e9 9a 02 ; 0xfe0b3 orgs.asm:365 + mov sp, 00400h ; bc 00 04 ; 0xfe0b6 orgs.asm:368 + cmp AL, strict byte 005h ; 3c 05 ; 0xfe0b9 orgs.asm:370 + je short 0e044h ; 74 87 ; 0xfe0bb orgs.asm:371 + cmp AL, strict byte 00ah ; 3c 0a ; 0xfe0bd orgs.asm:373 + je short 0e04ah ; 74 89 ; 0xfe0bf orgs.asm:374 + jmp short 0e0c3h ; eb 00 ; 0xfe0c1 orgs.asm:378 + ; disGetNextSymbol 0xfe0c3 LB 0x1f3d -> off=0x0 cb=00000000000001f3 uValue=00000000000f00c3 'normal_post' +normal_post: ; 0xfe0c3 LB 0x1f3 + mov ax, 07800h ; b8 00 78 ; 0xfe0c3 orgs.asm:387 + db 08bh, 0e0h + ; mov sp, ax ; 8b e0 ; 0xfe0c6 orgs.asm:388 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xfe0c8 orgs.asm:389 + mov ds, ax ; 8e d8 ; 0xfe0ca orgs.asm:390 + mov ss, ax ; 8e d0 ; 0xfe0cc orgs.asm:391 + mov es, ax ; 8e c0 ; 0xfe0ce orgs.asm:395 + db 033h, 0ffh + ; xor di, di ; 33 ff ; 0xfe0d0 orgs.asm:396 + cld ; fc ; 0xfe0d2 orgs.asm:397 + mov cx, 00239h ; b9 39 02 ; 0xfe0d3 orgs.asm:398 + rep stosw ; f3 ab ; 0xfe0d6 orgs.asm:399 + inc di ; 47 ; 0xfe0d8 orgs.asm:400 + inc di ; 47 ; 0xfe0d9 orgs.asm:401 + mov cx, 005c6h ; b9 c6 05 ; 0xfe0da orgs.asm:402 + rep stosw ; f3 ab ; 0xfe0dd orgs.asm:403 + db 033h, 0dbh + ; xor bx, bx ; 33 db ; 0xfe0df orgs.asm:407 + add bx, 01000h ; 81 c3 00 10 ; 0xfe0e1 orgs.asm:409 + cmp bx, 09000h ; 81 fb 00 90 ; 0xfe0e5 orgs.asm:410 + jnc short 0e0f6h ; 73 0b ; 0xfe0e9 orgs.asm:411 + mov es, bx ; 8e c3 ; 0xfe0eb orgs.asm:412 + db 033h, 0ffh + ; xor di, di ; 33 ff ; 0xfe0ed orgs.asm:413 + mov cx, 08000h ; b9 00 80 ; 0xfe0ef orgs.asm:414 + rep stosw ; f3 ab ; 0xfe0f2 orgs.asm:415 + jmp short 0e0e1h ; eb eb ; 0xfe0f4 orgs.asm:416 + mov es, bx ; 8e c3 ; 0xfe0f6 orgs.asm:418 + db 033h, 0ffh + ; xor di, di ; 33 ff ; 0xfe0f8 orgs.asm:419 + mov cx, 07ff8h ; b9 f8 7f ; 0xfe0fa orgs.asm:420 + rep stosw ; f3 ab ; 0xfe0fd orgs.asm:421 + db 033h, 0dbh + ; xor bx, bx ; 33 db ; 0xfe0ff orgs.asm:422 + push CS ; 0e ; 0xfe101 orgs.asm:104 + pop DS ; 1f ; 0xfe102 orgs.asm:105 + cld ; fc ; 0xfe103 orgs.asm:106 + call 01715h ; e8 0e 36 ; 0xfe104 orgs.asm:426 + db 033h, 0dbh + ; xor bx, bx ; 33 db ; 0xfe107 orgs.asm:433 + mov ds, bx ; 8e db ; 0xfe109 orgs.asm:434 + mov cx, strict word 00060h ; b9 60 00 ; 0xfe10b orgs.asm:435 + mov ax, 0ff53h ; b8 53 ff ; 0xfe10e orgs.asm:436 + mov dx, 0f000h ; ba 00 f0 ; 0xfe111 orgs.asm:437 + call 0e039h ; e8 22 ff ; 0xfe114 orgs.asm:438 + mov bx, 001a0h ; bb a0 01 ; 0xfe117 orgs.asm:443 + mov cx, strict word 00010h ; b9 10 00 ; 0xfe11a orgs.asm:444 + call 0e039h ; e8 19 ff ; 0xfe11d orgs.asm:445 + mov ax, 0027fh ; b8 7f 02 ; 0xfe120 orgs.asm:448 + mov word [00413h], ax ; a3 13 04 ; 0xfe123 orgs.asm:449 + mov ax, 0e9dah ; b8 da e9 ; 0xfe126 orgs.asm:95 + mov word [00018h], ax ; a3 18 00 ; 0xfe129 orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe12c orgs.asm:97 + mov word [0001ah], ax ; a3 1a 00 ; 0xfe12f orgs.asm:98 + mov ax, 0f84dh ; b8 4d f8 ; 0xfe132 orgs.asm:95 + mov word [00044h], ax ; a3 44 00 ; 0xfe135 orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe138 orgs.asm:97 + mov word [00046h], ax ; a3 46 00 ; 0xfe13b orgs.asm:98 + mov ax, 0f841h ; b8 41 f8 ; 0xfe13e orgs.asm:95 + mov word [00048h], ax ; a3 48 00 ; 0xfe141 orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe144 orgs.asm:97 + mov word [0004ah], ax ; a3 4a 00 ; 0xfe147 orgs.asm:98 + mov ax, 0f859h ; b8 59 f8 ; 0xfe14a orgs.asm:95 + mov word [00054h], ax ; a3 54 00 ; 0xfe14d orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe150 orgs.asm:97 + mov word [00056h], ax ; a3 56 00 ; 0xfe153 orgs.asm:98 + mov ax, 0efd4h ; b8 d4 ef ; 0xfe156 orgs.asm:95 + mov word [0005ch], ax ; a3 5c 00 ; 0xfe159 orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe15c orgs.asm:97 + mov word [0005eh], ax ; a3 5e 00 ; 0xfe15f orgs.asm:98 + mov ax, 0f0a4h ; b8 a4 f0 ; 0xfe162 orgs.asm:95 + mov word [00060h], ax ; a3 60 00 ; 0xfe165 orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe168 orgs.asm:97 + mov word [00062h], ax ; a3 62 00 ; 0xfe16b orgs.asm:98 + mov ax, 0e6f2h ; b8 f2 e6 ; 0xfe16e orgs.asm:95 + mov word [00064h], ax ; a3 64 00 ; 0xfe171 orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe174 orgs.asm:97 + mov word [00066h], ax ; a3 66 00 ; 0xfe177 orgs.asm:98 + mov ax, 0effbh ; b8 fb ef ; 0xfe17a orgs.asm:95 + mov word [00070h], ax ; a3 70 00 ; 0xfe17d orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe180 orgs.asm:97 + mov word [00072h], ax ; a3 72 00 ; 0xfe183 orgs.asm:98 + call 0e794h ; e8 0b 06 ; 0xfe186 orgs.asm:465 + mov ax, 0fe6eh ; b8 6e fe ; 0xfe189 orgs.asm:95 + mov word [00068h], ax ; a3 68 00 ; 0xfe18c orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe18f orgs.asm:97 + mov word [0006ah], ax ; a3 6a 00 ; 0xfe192 orgs.asm:98 + mov ax, 0fea5h ; b8 a5 fe ; 0xfe195 orgs.asm:95 + mov word [00020h], ax ; a3 20 00 ; 0xfe198 orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe19b orgs.asm:97 + mov word [00022h], ax ; a3 22 00 ; 0xfe19e orgs.asm:98 + mov AL, strict byte 034h ; b0 34 ; 0xfe1a1 orgs.asm:476 + out strict byte 043h, AL ; e6 43 ; 0xfe1a3 orgs.asm:477 + mov AL, strict byte 000h ; b0 00 ; 0xfe1a5 orgs.asm:478 + out strict byte 040h, AL ; e6 40 ; 0xfe1a7 orgs.asm:479 + out strict byte 040h, AL ; e6 40 ; 0xfe1a9 orgs.asm:480 + mov ax, 0f065h ; b8 65 f0 ; 0xfe1ab orgs.asm:95 + mov word [00040h], ax ; a3 40 00 ; 0xfe1ae orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe1b1 orgs.asm:97 + mov word [00042h], ax ; a3 42 00 ; 0xfe1b4 orgs.asm:98 + mov ax, 0e987h ; b8 87 e9 ; 0xfe1b7 orgs.asm:95 + mov word [00024h], ax ; a3 24 00 ; 0xfe1ba orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe1bd orgs.asm:97 + mov word [00026h], ax ; a3 26 00 ; 0xfe1c0 orgs.asm:98 + mov ax, 0e82eh ; b8 2e e8 ; 0xfe1c3 orgs.asm:95 + mov word [00058h], ax ; a3 58 00 ; 0xfe1c6 orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe1c9 orgs.asm:97 + mov word [0005ah], ax ; a3 5a 00 ; 0xfe1cc orgs.asm:98 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xfe1cf orgs.asm:489 + mov ds, ax ; 8e d8 ; 0xfe1d1 orgs.asm:490 + mov byte [00417h], AL ; a2 17 04 ; 0xfe1d3 orgs.asm:492 + mov byte [00418h], AL ; a2 18 04 ; 0xfe1d6 orgs.asm:493 + mov byte [00419h], AL ; a2 19 04 ; 0xfe1d9 orgs.asm:494 + mov byte [00471h], AL ; a2 71 04 ; 0xfe1dc orgs.asm:495 + mov byte [00497h], AL ; a2 97 04 ; 0xfe1df orgs.asm:496 + mov AL, strict byte 010h ; b0 10 ; 0xfe1e2 orgs.asm:497 + mov byte [00496h], AL ; a2 96 04 ; 0xfe1e4 orgs.asm:498 + mov bx, strict word 0001eh ; bb 1e 00 ; 0xfe1e7 orgs.asm:500 + mov word [0041ah], bx ; 89 1e 1a 04 ; 0xfe1ea orgs.asm:501 + mov word [0041ch], bx ; 89 1e 1c 04 ; 0xfe1ee orgs.asm:502 + mov word [00480h], bx ; 89 1e 80 04 ; 0xfe1f2 orgs.asm:503 + mov bx, strict word 0003eh ; bb 3e 00 ; 0xfe1f6 orgs.asm:504 + mov word [00482h], bx ; 89 1e 82 04 ; 0xfe1f9 orgs.asm:505 + mov AL, strict byte 014h ; b0 14 ; 0xfe1fd orgs.asm:508 + out strict byte 070h, AL ; e6 70 ; 0xfe1ff orgs.asm:509 + in AL, strict byte 071h ; e4 71 ; 0xfe201 orgs.asm:510 + mov byte [00410h], AL ; a2 10 04 ; 0xfe203 orgs.asm:511 + push DS ; 1e ; 0xfe206 orgs.asm:513 + push CS ; 0e ; 0xfe207 orgs.asm:104 + pop DS ; 1f ; 0xfe208 orgs.asm:105 + cld ; fc ; 0xfe209 orgs.asm:106 + mov ax, 0c000h ; b8 00 c0 ; 0xfe20a orgs.asm:518 + mov dx, 0c800h ; ba 00 c8 ; 0xfe20d orgs.asm:519 + call 01600h ; e8 ed 33 ; 0xfe210 orgs.asm:520 + call 04f76h ; e8 60 6d ; 0xfe213 orgs.asm:523 + pop DS ; 1f ; 0xfe216 orgs.asm:524 + mov ax, 0ff53h ; b8 53 ff ; 0xfe217 orgs.asm:95 + mov word [0003ch], ax ; a3 3c 00 ; 0xfe21a orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe21d orgs.asm:97 + mov word [0003eh], ax ; a3 3e 00 ; 0xfe220 orgs.asm:98 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xfe223 orgs.asm:528 + mov ds, ax ; 8e d8 ; 0xfe225 orgs.asm:529 + db 033h, 0dbh + ; xor bx, bx ; 33 db ; 0xfe227 orgs.asm:530 + mov CL, strict byte 014h ; b1 14 ; 0xfe229 orgs.asm:531 + mov dx, 00378h ; ba 78 03 ; 0xfe22b orgs.asm:532 + call 0ed0ah ; e8 d9 0a ; 0xfe22e orgs.asm:533 + mov dx, 00278h ; ba 78 02 ; 0xfe231 orgs.asm:534 + call 0ed0ah ; e8 d3 0a ; 0xfe234 orgs.asm:535 + push cx ; 51 ; 0xfe237 orgs.asm:203 + mov CL, strict byte 00eh ; b1 0e ; 0xfe238 orgs.asm:204 + sal bx, CL ; d3 e3 ; 0xfe23a orgs.asm:205 + pop cx ; 59 ; 0xfe23c orgs.asm:206 + mov ax, word [00410h] ; a1 10 04 ; 0xfe23d orgs.asm:537 + and ax, 03fffh ; 25 ff 3f ; 0xfe240 orgs.asm:538 + db 00bh, 0c3h + ; or ax, bx ; 0b c3 ; 0xfe243 orgs.asm:539 + mov word [00410h], ax ; a3 10 04 ; 0xfe245 orgs.asm:540 + mov ax, 0e754h ; b8 54 e7 ; 0xfe248 orgs.asm:95 + mov word [0002ch], ax ; a3 2c 00 ; 0xfe24b orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe24e orgs.asm:97 + mov word [0002eh], ax ; a3 2e 00 ; 0xfe251 orgs.asm:98 + mov ax, 0e754h ; b8 54 e7 ; 0xfe254 orgs.asm:95 + mov word [00030h], ax ; a3 30 00 ; 0xfe257 orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe25a orgs.asm:97 + mov word [00032h], ax ; a3 32 00 ; 0xfe25d orgs.asm:98 + mov ax, 0e739h ; b8 39 e7 ; 0xfe260 orgs.asm:95 + mov word [00050h], ax ; a3 50 00 ; 0xfe263 orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe266 orgs.asm:97 + mov word [00052h], ax ; a3 52 00 ; 0xfe269 orgs.asm:98 + db 033h, 0dbh + ; xor bx, bx ; 33 db ; 0xfe26c orgs.asm:546 + mov CL, strict byte 00ah ; b1 0a ; 0xfe26e orgs.asm:547 + mov dx, 003f8h ; ba f8 03 ; 0xfe270 orgs.asm:548 + call 0ed28h ; e8 b2 0a ; 0xfe273 orgs.asm:549 + mov dx, 002f8h ; ba f8 02 ; 0xfe276 orgs.asm:550 + call 0ed28h ; e8 ac 0a ; 0xfe279 orgs.asm:551 + mov dx, 003e8h ; ba e8 03 ; 0xfe27c orgs.asm:552 + call 0ed28h ; e8 a6 0a ; 0xfe27f orgs.asm:553 + mov dx, 002e8h ; ba e8 02 ; 0xfe282 orgs.asm:554 + call 0ed28h ; e8 a0 0a ; 0xfe285 orgs.asm:555 + push cx ; 51 ; 0xfe288 orgs.asm:203 + mov CL, strict byte 009h ; b1 09 ; 0xfe289 orgs.asm:204 + sal bx, CL ; d3 e3 ; 0xfe28b orgs.asm:205 + pop cx ; 59 ; 0xfe28d orgs.asm:206 + mov ax, word [00410h] ; a1 10 04 ; 0xfe28e orgs.asm:557 + and ax, 0f1ffh ; 25 ff f1 ; 0xfe291 orgs.asm:558 + db 00bh, 0c3h + ; or ax, bx ; 0b c3 ; 0xfe294 orgs.asm:559 + mov word [00410h], ax ; a3 10 04 ; 0xfe296 orgs.asm:560 + mov ax, 0ff53h ; b8 53 ff ; 0xfe299 orgs.asm:95 + mov word [00128h], ax ; a3 28 01 ; 0xfe29c orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe29f orgs.asm:97 + mov word [0012ah], ax ; a3 2a 01 ; 0xfe2a2 orgs.asm:98 + mov ax, 0f8f1h ; b8 f1 f8 ; 0xfe2a5 orgs.asm:95 + mov word [001c0h], ax ; a3 c0 01 ; 0xfe2a8 orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe2ab orgs.asm:97 + mov word [001c2h], ax ; a3 c2 01 ; 0xfe2ae orgs.asm:98 + call 0ede3h ; e8 2f 0b ; 0xfe2b1 orgs.asm:566 + jmp short 0e303h ; eb 4d ; 0xfe2b4 orgs.asm:568 + ; disGetNextSymbol 0xfe2b6 LB 0x1d4a -> off=0x0 cb=000000000000000d uValue=00000000000f02b6 'biosorg_check_before_or_at_0E2C1h' +biosorg_check_before_or_at_0E2C1h: ; 0xfe2b6 LB 0xd + times 0xb db 0 + db 'XM' + ; disGetNextSymbol 0xfe2c3 LB 0x1d3d -> off=0x0 cb=0000000000000007 uValue=00000000000f02c3 'nmi' +nmi: ; 0xfe2c3 LB 0x7 + push CS ; 0e ; 0xfe2c3 orgs.asm:104 + pop DS ; 1f ; 0xfe2c4 orgs.asm:105 + cld ; fc ; 0xfe2c5 orgs.asm:106 + call 016ebh ; e8 22 34 ; 0xfe2c6 orgs.asm:577 + iret ; cf ; 0xfe2c9 orgs.asm:578 + ; disGetNextSymbol 0xfe2ca LB 0x1d36 -> off=0x0 cb=0000000000000008 uValue=00000000000f02ca 'int75_handler' +int75_handler: ; 0xfe2ca LB 0x8 + out strict byte 0f0h, AL ; e6 f0 ; 0xfe2ca orgs.asm:581 + call 0e030h ; e8 61 fd ; 0xfe2cc orgs.asm:582 + int 002h ; cd 02 ; 0xfe2cf orgs.asm:583 + iret ; cf ; 0xfe2d1 orgs.asm:584 + ; disGetNextSymbol 0xfe2d2 LB 0x1d2e -> off=0x0 cb=00000000000000a7 uValue=00000000000f02d2 'hard_drive_post' +hard_drive_post: ; 0xfe2d2 LB 0xa7 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xfe2d2 orgs.asm:589 + mov ds, ax ; 8e d8 ; 0xfe2d4 orgs.asm:590 + mov byte [00474h], AL ; a2 74 04 ; 0xfe2d6 orgs.asm:592 + mov byte [00477h], AL ; a2 77 04 ; 0xfe2d9 orgs.asm:593 + mov byte [0048ch], AL ; a2 8c 04 ; 0xfe2dc orgs.asm:594 + mov byte [0048dh], AL ; a2 8d 04 ; 0xfe2df orgs.asm:595 + mov byte [0048eh], AL ; a2 8e 04 ; 0xfe2e2 orgs.asm:596 + mov AL, strict byte 0c0h ; b0 c0 ; 0xfe2e5 orgs.asm:597 + mov byte [00476h], AL ; a2 76 04 ; 0xfe2e7 orgs.asm:598 + mov ax, 0e3feh ; b8 fe e3 ; 0xfe2ea orgs.asm:95 + mov word [0004ch], ax ; a3 4c 00 ; 0xfe2ed orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe2f0 orgs.asm:97 + mov word [0004eh], ax ; a3 4e 00 ; 0xfe2f3 orgs.asm:98 + mov ax, 0f8dfh ; b8 df f8 ; 0xfe2f6 orgs.asm:95 + mov word [001d8h], ax ; a3 d8 01 ; 0xfe2f9 orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe2fc orgs.asm:97 + mov word [001dah], ax ; a3 da 01 ; 0xfe2ff orgs.asm:98 + retn ; c3 ; 0xfe302 orgs.asm:603 + mov ax, 0f8a5h ; b8 a5 f8 ; 0xfe303 orgs.asm:95 + mov word [001d0h], ax ; a3 d0 01 ; 0xfe306 orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe309 orgs.asm:97 + mov word [001d2h], ax ; a3 d2 01 ; 0xfe30c orgs.asm:98 + mov ax, 0e2cah ; b8 ca e2 ; 0xfe30f orgs.asm:95 + mov word [001d4h], ax ; a3 d4 01 ; 0xfe312 orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe315 orgs.asm:97 + mov word [001d6h], ax ; a3 d6 01 ; 0xfe318 orgs.asm:98 + call 0e76fh ; e8 51 04 ; 0xfe31b orgs.asm:615 + push CS ; 0e ; 0xfe31e orgs.asm:104 + pop DS ; 1f ; 0xfe31f orgs.asm:105 + cld ; fc ; 0xfe320 orgs.asm:106 + call 01c5eh ; e8 3a 39 ; 0xfe321 orgs.asm:629 + call 020efh ; e8 c8 3d ; 0xfe324 orgs.asm:630 + sti ; fb ; 0xfe327 orgs.asm:637 + call 094cdh ; e8 a2 b1 ; 0xfe328 orgs.asm:638 + cli ; fa ; 0xfe32b orgs.asm:639 + call 0830ch ; e8 dd 9f ; 0xfe32c orgs.asm:644 + call 0ed4ch ; e8 1a 0a ; 0xfe32f orgs.asm:648 + call 0e2d2h ; e8 9d ff ; 0xfe332 orgs.asm:651 + push CS ; 0e ; 0xfe335 orgs.asm:104 + pop DS ; 1f ; 0xfe336 orgs.asm:105 + cld ; fc ; 0xfe337 orgs.asm:106 + mov ax, 0c800h ; b8 00 c8 ; 0xfe338 orgs.asm:655 + mov dx, 0f000h ; ba 00 f0 ; 0xfe33b orgs.asm:656 + call 01600h ; e8 bf 32 ; 0xfe33e orgs.asm:657 + call 01739h ; e8 f5 33 ; 0xfe341 orgs.asm:671 + call 03be1h ; e8 9a 58 ; 0xfe344 orgs.asm:674 + sti ; fb ; 0xfe347 orgs.asm:677 + int 019h ; cd 19 ; 0xfe348 orgs.asm:678 + sti ; fb ; 0xfe34a orgs.asm:680 + hlt ; f4 ; 0xfe34b orgs.asm:682 + jmp short 0e34bh ; eb fd ; 0xfe34c orgs.asm:683 + cli ; fa ; 0xfe34e orgs.asm:684 + hlt ; f4 ; 0xfe34f orgs.asm:685 + mov ax, strict word 00040h ; b8 40 00 ; 0xfe350 orgs.asm:694 + mov ds, ax ; 8e d8 ; 0xfe353 orgs.asm:695 + mov ss, [word 00069h] ; 8e 16 69 00 ; 0xfe355 orgs.asm:697 + mov sp, word [word 00067h] ; 8b 26 67 00 ; 0xfe359 orgs.asm:698 + in AL, strict byte 092h ; e4 92 ; 0xfe35d orgs.asm:700 + and AL, strict byte 0fdh ; 24 fd ; 0xfe35f orgs.asm:701 + out strict byte 092h, AL ; e6 92 ; 0xfe361 orgs.asm:702 + lidt [cs:0eff5h] ; 2e 0f 01 1e f5 ef ; 0xfe363 orgs.asm:704 + pop DS ; 1f ; 0xfe369 orgs.asm:706 + pop ES ; 07 ; 0xfe36a orgs.asm:707 + db 08bh, 0ech + ; mov bp, sp ; 8b ec ; 0xfe36b orgs.asm:709 + in AL, strict byte 080h ; e4 80 ; 0xfe36d orgs.asm:711 + mov byte [bp+00fh], al ; 88 46 0f ; 0xfe36f orgs.asm:712 + db 03ah, 0e0h + ; cmp ah, al ; 3a e0 ; 0xfe372 orgs.asm:714 + popaw ; 61 ; 0xfe374 orgs.asm:716 + sti ; fb ; 0xfe375 orgs.asm:717 + retf 00002h ; ca 02 00 ; 0xfe376 orgs.asm:718 + ; disGetNextSymbol 0xfe379 LB 0x1c87 -> off=0x0 cb=0000000000000085 uValue=00000000000f0379 'biosorg_check_before_or_at_0E3FCh' +biosorg_check_before_or_at_0E3FCh: ; 0xfe379 LB 0x85 + times 0x83 db 0 + db 'XM' + ; disGetNextSymbol 0xfe3fe LB 0x1c02 -> off=0x0 cb=0000000000000003 uValue=00000000000f03fe 'int13_handler' +int13_handler: ; 0xfe3fe LB 0x3 + jmp near 0ec5bh ; e9 5a 08 ; 0xfe3fe orgs.asm:728 + ; disGetNextSymbol 0xfe401 LB 0x1bff -> off=0x0 cb=00000000000002f1 uValue=00000000000f0401 'rom_fdpt' +rom_fdpt: ; 0xfe401 LB 0x2f1 + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 058h + db 04dh + ; disGetNextSymbol 0xfe6f2 LB 0x190e -> off=0x0 cb=0000000000000003 uValue=00000000000f06f2 'int19_handler' +int19_handler: ; 0xfe6f2 LB 0x3 + jmp near 0f0ach ; e9 b7 09 ; 0xfe6f2 orgs.asm:744 + ; disGetNextSymbol 0xfe6f5 LB 0x190b -> off=0x0 cb=000000000000000a uValue=00000000000f06f5 'biosorg_check_at_0E6F5h' +biosorg_check_at_0E6F5h: ; 0xfe6f5 LB 0xa + or word [bx+si], ax ; 09 00 ; 0xfe6f5 + sti ; fb ; 0xfe6f7 + add byte [bx+di], al ; 00 01 ; 0xfe6f8 + je short 0e73ch ; 74 40 ; 0xfe6fa + times 0x3 db 0 + ; disGetNextSymbol 0xfe6ff LB 0x1901 -> off=0x0 cb=000000000000002a uValue=00000000000f06ff 'biosorg_check_before_or_at_0E727h' +biosorg_check_before_or_at_0E727h: ; 0xfe6ff LB 0x2a + times 0x28 db 0 + db 'XM' + ; disGetNextSymbol 0xfe729 LB 0x18d7 -> off=0x0 cb=0000000000000010 uValue=00000000000f0729 'biosorg_check_at_0E729h' +biosorg_check_at_0E729h: ; 0xfe729 LB 0x10 + times 0xe db 0 + db 'XM' + ; disGetNextSymbol 0xfe739 LB 0x18c7 -> off=0x0 cb=0000000000000036 uValue=00000000000f0739 'biosorg_check_at_0E739h' +biosorg_check_at_0E739h: ; 0xfe739 LB 0x36 + push DS ; 1e ; 0xfe739 orgs.asm:817 + push ES ; 06 ; 0xfe73a orgs.asm:818 + push ax ; 50 ; 0xfe73b orgs.asm:99 + push cx ; 51 ; 0xfe73c orgs.asm:100 + push dx ; 52 ; 0xfe73d orgs.asm:101 + push bx ; 53 ; 0xfe73e orgs.asm:102 + push sp ; 54 ; 0xfe73f orgs.asm:103 + push bp ; 55 ; 0xfe740 orgs.asm:104 + push si ; 56 ; 0xfe741 orgs.asm:105 + push di ; 57 ; 0xfe742 orgs.asm:106 + push CS ; 0e ; 0xfe743 orgs.asm:104 + pop DS ; 1f ; 0xfe744 orgs.asm:105 + cld ; fc ; 0xfe745 orgs.asm:106 + call 064d9h ; e8 90 7d ; 0xfe746 orgs.asm:821 + pop di ; 5f ; 0xfe749 orgs.asm:116 + pop si ; 5e ; 0xfe74a orgs.asm:117 + pop bp ; 5d ; 0xfe74b orgs.asm:118 + pop bx ; 5b ; 0xfe74c orgs.asm:119 + pop bx ; 5b ; 0xfe74d orgs.asm:120 + pop dx ; 5a ; 0xfe74e orgs.asm:121 + pop cx ; 59 ; 0xfe74f orgs.asm:122 + pop ax ; 58 ; 0xfe750 orgs.asm:123 + pop ES ; 07 ; 0xfe751 orgs.asm:823 + pop DS ; 1f ; 0xfe752 orgs.asm:824 + iret ; cf ; 0xfe753 orgs.asm:825 + push DS ; 1e ; 0xfe754 orgs.asm:833 + push ES ; 06 ; 0xfe755 orgs.asm:834 + push ax ; 50 ; 0xfe756 orgs.asm:99 + push cx ; 51 ; 0xfe757 orgs.asm:100 + push dx ; 52 ; 0xfe758 orgs.asm:101 + push bx ; 53 ; 0xfe759 orgs.asm:102 + push sp ; 54 ; 0xfe75a orgs.asm:103 + push bp ; 55 ; 0xfe75b orgs.asm:104 + push si ; 56 ; 0xfe75c orgs.asm:105 + push di ; 57 ; 0xfe75d orgs.asm:106 + push CS ; 0e ; 0xfe75e orgs.asm:104 + pop DS ; 1f ; 0xfe75f orgs.asm:105 + cld ; fc ; 0xfe760 orgs.asm:106 + call 0168ah ; e8 26 2f ; 0xfe761 orgs.asm:837 + pop di ; 5f ; 0xfe764 orgs.asm:116 + pop si ; 5e ; 0xfe765 orgs.asm:117 + pop bp ; 5d ; 0xfe766 orgs.asm:118 + pop bx ; 5b ; 0xfe767 orgs.asm:119 + pop bx ; 5b ; 0xfe768 orgs.asm:120 + pop dx ; 5a ; 0xfe769 orgs.asm:121 + pop cx ; 59 ; 0xfe76a orgs.asm:122 + pop ax ; 58 ; 0xfe76b orgs.asm:123 + pop ES ; 07 ; 0xfe76c orgs.asm:839 + pop DS ; 1f ; 0xfe76d orgs.asm:840 + iret ; cf ; 0xfe76e orgs.asm:841 + ; disGetNextSymbol 0xfe76f LB 0x1891 -> off=0x0 cb=0000000000000025 uValue=00000000000f076f 'init_pic' +init_pic: ; 0xfe76f LB 0x25 + mov AL, strict byte 011h ; b0 11 ; 0xfe76f orgs.asm:846 + out strict byte 020h, AL ; e6 20 ; 0xfe771 orgs.asm:847 + out strict byte 0a0h, AL ; e6 a0 ; 0xfe773 orgs.asm:848 + mov AL, strict byte 008h ; b0 08 ; 0xfe775 orgs.asm:849 + out strict byte 021h, AL ; e6 21 ; 0xfe777 orgs.asm:850 + mov AL, strict byte 070h ; b0 70 ; 0xfe779 orgs.asm:851 + out strict byte 0a1h, AL ; e6 a1 ; 0xfe77b orgs.asm:852 + mov AL, strict byte 004h ; b0 04 ; 0xfe77d orgs.asm:853 + out strict byte 021h, AL ; e6 21 ; 0xfe77f orgs.asm:854 + mov AL, strict byte 002h ; b0 02 ; 0xfe781 orgs.asm:855 + out strict byte 0a1h, AL ; e6 a1 ; 0xfe783 orgs.asm:856 + mov AL, strict byte 001h ; b0 01 ; 0xfe785 orgs.asm:857 + out strict byte 021h, AL ; e6 21 ; 0xfe787 orgs.asm:858 + out strict byte 0a1h, AL ; e6 a1 ; 0xfe789 orgs.asm:859 + mov AL, strict byte 0b8h ; b0 b8 ; 0xfe78b orgs.asm:860 + out strict byte 021h, AL ; e6 21 ; 0xfe78d orgs.asm:861 + mov AL, strict byte 08fh ; b0 8f ; 0xfe78f orgs.asm:862 + out strict byte 0a1h, AL ; e6 a1 ; 0xfe791 orgs.asm:863 + retn ; c3 ; 0xfe793 orgs.asm:864 + ; disGetNextSymbol 0xfe794 LB 0x186c -> off=0x0 cb=0000000000000051 uValue=00000000000f0794 'ebda_post' +ebda_post: ; 0xfe794 LB 0x51 + mov ax, 0e754h ; b8 54 e7 ; 0xfe794 orgs.asm:95 + mov word [00034h], ax ; a3 34 00 ; 0xfe797 orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe79a orgs.asm:97 + mov word [00036h], ax ; a3 36 00 ; 0xfe79d orgs.asm:98 + mov ax, 0e754h ; b8 54 e7 ; 0xfe7a0 orgs.asm:95 + mov word [0003ch], ax ; a3 3c 00 ; 0xfe7a3 orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe7a6 orgs.asm:97 + mov word [0003eh], ax ; a3 3e 00 ; 0xfe7a9 orgs.asm:98 + mov ax, 0e754h ; b8 54 e7 ; 0xfe7ac orgs.asm:95 + mov word [001c8h], ax ; a3 c8 01 ; 0xfe7af orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe7b2 orgs.asm:97 + mov word [001cah], ax ; a3 ca 01 ; 0xfe7b5 orgs.asm:98 + mov ax, 0e754h ; b8 54 e7 ; 0xfe7b8 orgs.asm:95 + mov word [001cch], ax ; a3 cc 01 ; 0xfe7bb orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe7be orgs.asm:97 + mov word [001ceh], ax ; a3 ce 01 ; 0xfe7c1 orgs.asm:98 + mov ax, 0e754h ; b8 54 e7 ; 0xfe7c4 orgs.asm:95 + mov word [001dch], ax ; a3 dc 01 ; 0xfe7c7 orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfe7ca orgs.asm:97 + mov word [001deh], ax ; a3 de 01 ; 0xfe7cd orgs.asm:98 + mov ax, 09fc0h ; b8 c0 9f ; 0xfe7d0 orgs.asm:876 + mov ds, ax ; 8e d8 ; 0xfe7d3 orgs.asm:877 + mov byte [word 00000h], 001h ; c6 06 00 00 01 ; 0xfe7d5 orgs.asm:878 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xfe7da orgs.asm:880 + mov ds, ax ; 8e d8 ; 0xfe7dc orgs.asm:881 + mov word [0040eh], 09fc0h ; c7 06 0e 04 c0 9f ; 0xfe7de orgs.asm:882 + retn ; c3 ; 0xfe7e4 orgs.asm:883 + ; disGetNextSymbol 0xfe7e5 LB 0x181b -> off=0x0 cb=0000000000000049 uValue=00000000000f07e5 'biosorg_check_before_or_at_0E82Ch' +biosorg_check_before_or_at_0E82Ch: ; 0xfe7e5 LB 0x49 + times 0x47 db 0 + db 'XM' + ; disGetNextSymbol 0xfe82e LB 0x17d2 -> off=0x0 cb=0000000000000052 uValue=00000000000f082e 'biosorg_check_at_0E82Eh' +biosorg_check_at_0E82Eh: ; 0xfe82e LB 0x52 + sti ; fb ; 0xfe82e orgs.asm:894 + pushfw ; 9c ; 0xfe82f orgs.asm:897 + push ES ; 06 ; 0xfe830 orgs.asm:898 + push DS ; 1e ; 0xfe831 orgs.asm:899 + push ax ; 50 ; 0xfe832 orgs.asm:99 + push cx ; 51 ; 0xfe833 orgs.asm:100 + push dx ; 52 ; 0xfe834 orgs.asm:101 + push bx ; 53 ; 0xfe835 orgs.asm:102 + push sp ; 54 ; 0xfe836 orgs.asm:103 + push bp ; 55 ; 0xfe837 orgs.asm:104 + push si ; 56 ; 0xfe838 orgs.asm:105 + push di ; 57 ; 0xfe839 orgs.asm:106 + cmp ah, 000h ; 80 fc 00 ; 0xfe83a orgs.asm:902 + je short 0e858h ; 74 19 ; 0xfe83d orgs.asm:903 + cmp ah, 010h ; 80 fc 10 ; 0xfe83f orgs.asm:905 + je short 0e858h ; 74 14 ; 0xfe842 orgs.asm:906 + push CS ; 0e ; 0xfe844 orgs.asm:104 + pop DS ; 1f ; 0xfe845 orgs.asm:105 + cld ; fc ; 0xfe846 orgs.asm:106 + call 056e8h ; e8 9e 6e ; 0xfe847 orgs.asm:909 + pop di ; 5f ; 0xfe84a orgs.asm:116 + pop si ; 5e ; 0xfe84b orgs.asm:117 + pop bp ; 5d ; 0xfe84c orgs.asm:118 + pop bx ; 5b ; 0xfe84d orgs.asm:119 + pop bx ; 5b ; 0xfe84e orgs.asm:120 + pop dx ; 5a ; 0xfe84f orgs.asm:121 + pop cx ; 59 ; 0xfe850 orgs.asm:122 + pop ax ; 58 ; 0xfe851 orgs.asm:123 + pop DS ; 1f ; 0xfe852 orgs.asm:911 + pop ES ; 07 ; 0xfe853 orgs.asm:912 + add sp, strict byte 00002h ; 83 c4 02 ; 0xfe854 orgs.asm:913 + iret ; cf ; 0xfe857 orgs.asm:914 + mov bx, strict word 00040h ; bb 40 00 ; 0xfe858 orgs.asm:917 + mov ds, bx ; 8e db ; 0xfe85b orgs.asm:918 + cli ; fa ; 0xfe85d orgs.asm:920 + mov bx, word [word 0001ah] ; 8b 1e 1a 00 ; 0xfe85e orgs.asm:921 + cmp bx, word [word 0001ch] ; 3b 1e 1c 00 ; 0xfe862 orgs.asm:922 + jne short 0e86ch ; 75 04 ; 0xfe866 orgs.asm:923 + sti ; fb ; 0xfe868 orgs.asm:924 + nop ; 90 ; 0xfe869 orgs.asm:925 + jmp short 0e85dh ; eb f1 ; 0xfe86a orgs.asm:933 + push CS ; 0e ; 0xfe86c orgs.asm:104 + pop DS ; 1f ; 0xfe86d orgs.asm:105 + cld ; fc ; 0xfe86e orgs.asm:106 + call 056e8h ; e8 76 6e ; 0xfe86f orgs.asm:937 + pop di ; 5f ; 0xfe872 orgs.asm:116 + pop si ; 5e ; 0xfe873 orgs.asm:117 + pop bp ; 5d ; 0xfe874 orgs.asm:118 + pop bx ; 5b ; 0xfe875 orgs.asm:119 + pop bx ; 5b ; 0xfe876 orgs.asm:120 + pop dx ; 5a ; 0xfe877 orgs.asm:121 + pop cx ; 59 ; 0xfe878 orgs.asm:122 + pop ax ; 58 ; 0xfe879 orgs.asm:123 + pop DS ; 1f ; 0xfe87a orgs.asm:939 + pop ES ; 07 ; 0xfe87b orgs.asm:940 + add sp, strict byte 00002h ; 83 c4 02 ; 0xfe87c orgs.asm:941 + iret ; cf ; 0xfe87f orgs.asm:949 + ; disGetNextSymbol 0xfe880 LB 0x1780 -> off=0x0 cb=0000000000000107 uValue=00000000000f0880 'biosorg_check_before_or_at_0E985h' +biosorg_check_before_or_at_0E985h: ; 0xfe880 LB 0x107 + times 0x105 db 0 + db 'XM' + ; disGetNextSymbol 0xfe987 LB 0x1679 -> off=0x0 cb=000000000000006e uValue=00000000000f0987 'biosorg_check_at_0E987h' +biosorg_check_at_0E987h: ; 0xfe987 LB 0x6e + cli ; fa ; 0xfe987 orgs.asm:966 + push ax ; 50 ; 0xfe988 orgs.asm:967 + mov AL, strict byte 0adh ; b0 ad ; 0xfe989 orgs.asm:968 + out strict byte 064h, AL ; e6 64 ; 0xfe98b orgs.asm:969 + in AL, strict byte 060h ; e4 60 ; 0xfe98d orgs.asm:971 + push DS ; 1e ; 0xfe98f orgs.asm:972 + push ax ; 50 ; 0xfe990 orgs.asm:99 + push cx ; 51 ; 0xfe991 orgs.asm:100 + push dx ; 52 ; 0xfe992 orgs.asm:101 + push bx ; 53 ; 0xfe993 orgs.asm:102 + push sp ; 54 ; 0xfe994 orgs.asm:103 + push bp ; 55 ; 0xfe995 orgs.asm:104 + push si ; 56 ; 0xfe996 orgs.asm:105 + push di ; 57 ; 0xfe997 orgs.asm:106 + cld ; fc ; 0xfe998 orgs.asm:974 + mov AH, strict byte 04fh ; b4 4f ; 0xfe999 orgs.asm:976 + stc ; f9 ; 0xfe99b orgs.asm:977 + int 015h ; cd 15 ; 0xfe99c orgs.asm:978 + jnc short 0e9c7h ; 73 27 ; 0xfe99e orgs.asm:979 + sti ; fb ; 0xfe9a0 orgs.asm:981 + cmp AL, strict byte 0e0h ; 3c e0 ; 0xfe9a1 orgs.asm:984 + jne short 0e9b0h ; 75 0b ; 0xfe9a3 orgs.asm:985 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xfe9a5 orgs.asm:986 + mov ds, ax ; 8e d8 ; 0xfe9a7 orgs.asm:987 + or byte [00496h], 002h ; 80 0e 96 04 02 ; 0xfe9a9 orgs.asm:988 + jmp short 0e9c7h ; eb 17 ; 0xfe9ae orgs.asm:989 + cmp AL, strict byte 0e1h ; 3c e1 ; 0xfe9b0 orgs.asm:992 + jne short 0e9bfh ; 75 0b ; 0xfe9b2 orgs.asm:993 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xfe9b4 orgs.asm:994 + mov ds, ax ; 8e d8 ; 0xfe9b6 orgs.asm:995 + or byte [00496h], 001h ; 80 0e 96 04 01 ; 0xfe9b8 orgs.asm:996 + jmp short 0e9c7h ; eb 08 ; 0xfe9bd orgs.asm:997 + push ES ; 06 ; 0xfe9bf orgs.asm:1000 + push CS ; 0e ; 0xfe9c0 orgs.asm:104 + pop DS ; 1f ; 0xfe9c1 orgs.asm:105 + cld ; fc ; 0xfe9c2 orgs.asm:106 + call 0525ah ; e8 94 68 ; 0xfe9c3 orgs.asm:1002 + pop ES ; 07 ; 0xfe9c6 orgs.asm:1003 + pop di ; 5f ; 0xfe9c7 orgs.asm:116 + pop si ; 5e ; 0xfe9c8 orgs.asm:117 + pop bp ; 5d ; 0xfe9c9 orgs.asm:118 + pop bx ; 5b ; 0xfe9ca orgs.asm:119 + pop bx ; 5b ; 0xfe9cb orgs.asm:120 + pop dx ; 5a ; 0xfe9cc orgs.asm:121 + pop cx ; 59 ; 0xfe9cd orgs.asm:122 + pop ax ; 58 ; 0xfe9ce orgs.asm:123 + pop DS ; 1f ; 0xfe9cf orgs.asm:1007 + cli ; fa ; 0xfe9d0 orgs.asm:1008 + call 0e034h ; e8 60 f6 ; 0xfe9d1 orgs.asm:1009 + mov AL, strict byte 0aeh ; b0 ae ; 0xfe9d4 orgs.asm:1011 + out strict byte 064h, AL ; e6 64 ; 0xfe9d6 orgs.asm:1012 + pop ax ; 58 ; 0xfe9d8 orgs.asm:1013 + iret ; cf ; 0xfe9d9 orgs.asm:1014 + push ax ; 50 ; 0xfe9da orgs.asm:99 + push cx ; 51 ; 0xfe9db orgs.asm:100 + push dx ; 52 ; 0xfe9dc orgs.asm:101 + push bx ; 53 ; 0xfe9dd orgs.asm:102 + push sp ; 54 ; 0xfe9de orgs.asm:103 + push bp ; 55 ; 0xfe9df orgs.asm:104 + push si ; 56 ; 0xfe9e0 orgs.asm:105 + push di ; 57 ; 0xfe9e1 orgs.asm:106 + push ES ; 06 ; 0xfe9e2 orgs.asm:1023 + push DS ; 1e ; 0xfe9e3 orgs.asm:1024 + push CS ; 0e ; 0xfe9e4 orgs.asm:104 + pop DS ; 1f ; 0xfe9e5 orgs.asm:105 + cld ; fc ; 0xfe9e6 orgs.asm:106 + call 069e7h ; e8 fd 7f ; 0xfe9e7 orgs.asm:1026 + pop DS ; 1f ; 0xfe9ea orgs.asm:1027 + pop ES ; 07 ; 0xfe9eb orgs.asm:1028 + pop di ; 5f ; 0xfe9ec orgs.asm:116 + pop si ; 5e ; 0xfe9ed orgs.asm:117 + pop bp ; 5d ; 0xfe9ee orgs.asm:118 + pop bx ; 5b ; 0xfe9ef orgs.asm:119 + pop bx ; 5b ; 0xfe9f0 orgs.asm:120 + pop dx ; 5a ; 0xfe9f1 orgs.asm:121 + pop cx ; 59 ; 0xfe9f2 orgs.asm:122 + pop ax ; 58 ; 0xfe9f3 orgs.asm:123 + iret ; cf ; 0xfe9f4 orgs.asm:1030 + ; disGetNextSymbol 0xfe9f5 LB 0x160b -> off=0x0 cb=0000000000000264 uValue=00000000000f09f5 'biosorg_check_before_or_at_0EC57h' +biosorg_check_before_or_at_0EC57h: ; 0xfe9f5 LB 0x264 + times 0x262 db 0 + db 'XM' + ; disGetNextSymbol 0xfec59 LB 0x13a7 -> off=0x0 cb=0000000000000002 uValue=00000000000f0c59 'biosorg_check_at_0EC59h' +biosorg_check_at_0EC59h: ; 0xfec59 LB 0x2 + jmp short 0ecc4h ; eb 69 ; 0xfec59 orgs.asm:1037 + ; disGetNextSymbol 0xfec5b LB 0x13a5 -> off=0x0 cb=000000000000001f uValue=00000000000f0c5b 'int13_relocated' +int13_relocated: ; 0xfec5b LB 0x1f + cmp ah, 04ah ; 80 fc 4a ; 0xfec5b orgs.asm:1046 + jc short 0ec7ch ; 72 1c ; 0xfec5e orgs.asm:1047 + cmp ah, 04dh ; 80 fc 4d ; 0xfec60 orgs.asm:1049 + jnbe short 0ec7ch ; 77 17 ; 0xfec63 orgs.asm:1050 + push ax ; 50 ; 0xfec65 orgs.asm:99 + push cx ; 51 ; 0xfec66 orgs.asm:100 + push dx ; 52 ; 0xfec67 orgs.asm:101 + push bx ; 53 ; 0xfec68 orgs.asm:102 + push sp ; 54 ; 0xfec69 orgs.asm:103 + push bp ; 55 ; 0xfec6a orgs.asm:104 + push si ; 56 ; 0xfec6b orgs.asm:105 + push di ; 57 ; 0xfec6c orgs.asm:106 + push ES ; 06 ; 0xfec6d orgs.asm:1053 + push DS ; 1e ; 0xfec6e orgs.asm:1054 + push CS ; 0e ; 0xfec6f orgs.asm:104 + pop DS ; 1f ; 0xfec70 orgs.asm:105 + cld ; fc ; 0xfec71 orgs.asm:106 + push word [cs:0ec7ah] ; 2e ff 36 7a ec ; 0xfec72 orgs.asm:86 + jmp near 03c24h ; e9 aa 4f ; 0xfec77 orgs.asm:87 + ; disGetNextSymbol 0xfec7a LB 0x1386 -> off=0x0 cb=000000000000004a uValue=00000000000f0c7a 'jmp_call_ret_int13_out' +jmp_call_ret_int13_out: ; 0xfec7a LB 0x4a + db 0ffh + in AL, DX ; ec ; 0xfec7b + push ES ; 06 ; 0xfec7c orgs.asm:1062 + push ax ; 50 ; 0xfec7d orgs.asm:1063 + push bx ; 53 ; 0xfec7e orgs.asm:1064 + push cx ; 51 ; 0xfec7f orgs.asm:1065 + push dx ; 52 ; 0xfec80 orgs.asm:1066 + call 03bf8h ; e8 74 4f ; 0xfec81 orgs.asm:1069 + cmp AL, strict byte 000h ; 3c 00 ; 0xfec84 orgs.asm:1070 + je short 0ecbfh ; 74 37 ; 0xfec86 orgs.asm:1071 + call 03c0eh ; e8 83 4f ; 0xfec88 orgs.asm:1074 + pop dx ; 5a ; 0xfec8b orgs.asm:1075 + push dx ; 52 ; 0xfec8c orgs.asm:1076 + db 03ah, 0c2h + ; cmp al, dl ; 3a c2 ; 0xfec8d orgs.asm:1077 + jne short 0ecabh ; 75 1a ; 0xfec8f orgs.asm:1078 + pop dx ; 5a ; 0xfec91 orgs.asm:1080 + pop cx ; 59 ; 0xfec92 orgs.asm:1081 + pop bx ; 5b ; 0xfec93 orgs.asm:1082 + pop ax ; 58 ; 0xfec94 orgs.asm:1083 + pop ES ; 07 ; 0xfec95 orgs.asm:1084 + push ax ; 50 ; 0xfec96 orgs.asm:99 + push cx ; 51 ; 0xfec97 orgs.asm:100 + push dx ; 52 ; 0xfec98 orgs.asm:101 + push bx ; 53 ; 0xfec99 orgs.asm:102 + push sp ; 54 ; 0xfec9a orgs.asm:103 + push bp ; 55 ; 0xfec9b orgs.asm:104 + push si ; 56 ; 0xfec9c orgs.asm:105 + push di ; 57 ; 0xfec9d orgs.asm:106 + push ES ; 06 ; 0xfec9e orgs.asm:1087 + push DS ; 1e ; 0xfec9f orgs.asm:1088 + push CS ; 0e ; 0xfeca0 orgs.asm:104 + pop DS ; 1f ; 0xfeca1 orgs.asm:105 + cld ; fc ; 0xfeca2 orgs.asm:106 + push word [cs:0ec7ah] ; 2e ff 36 7a ec ; 0xfeca3 orgs.asm:86 + jmp near 041fch ; e9 51 55 ; 0xfeca8 orgs.asm:87 + and dl, 0e0h ; 80 e2 e0 ; 0xfecab orgs.asm:1094 + db 03ah, 0c2h + ; cmp al, dl ; 3a c2 ; 0xfecae orgs.asm:1095 + jne short 0ecbfh ; 75 0d ; 0xfecb0 orgs.asm:1096 + pop dx ; 5a ; 0xfecb2 orgs.asm:1098 + pop cx ; 59 ; 0xfecb3 orgs.asm:1099 + pop bx ; 5b ; 0xfecb4 orgs.asm:1100 + pop ax ; 58 ; 0xfecb5 orgs.asm:1101 + pop ES ; 07 ; 0xfecb6 orgs.asm:1102 + push ax ; 50 ; 0xfecb7 orgs.asm:1104 + push cx ; 51 ; 0xfecb8 orgs.asm:1105 + push dx ; 52 ; 0xfecb9 orgs.asm:1106 + push bx ; 53 ; 0xfecba orgs.asm:1107 + db 0feh, 0cah + ; dec dl ; fe ca ; 0xfecbb orgs.asm:1109 + jmp short 0ecc8h ; eb 09 ; 0xfecbd orgs.asm:1110 + pop dx ; 5a ; 0xfecbf orgs.asm:1113 + pop cx ; 59 ; 0xfecc0 orgs.asm:1114 + pop bx ; 5b ; 0xfecc1 orgs.asm:1115 + pop ax ; 58 ; 0xfecc2 orgs.asm:1116 + pop ES ; 07 ; 0xfecc3 orgs.asm:1117 + ; disGetNextSymbol 0xfecc4 LB 0x133c -> off=0x0 cb=0000000000000004 uValue=00000000000f0cc4 'int13_noeltorito' +int13_noeltorito: ; 0xfecc4 LB 0x4 + push ax ; 50 ; 0xfecc4 orgs.asm:1120 + push cx ; 51 ; 0xfecc5 orgs.asm:1121 + push dx ; 52 ; 0xfecc6 orgs.asm:1122 + push bx ; 53 ; 0xfecc7 orgs.asm:1123 + ; disGetNextSymbol 0xfecc8 LB 0x1338 -> off=0x0 cb=0000000000000016 uValue=00000000000f0cc8 'int13_legacy' +int13_legacy: ; 0xfecc8 LB 0x16 + push dx ; 52 ; 0xfecc8 orgs.asm:1125 + push bp ; 55 ; 0xfecc9 orgs.asm:1126 + push si ; 56 ; 0xfecca orgs.asm:1127 + push di ; 57 ; 0xfeccb orgs.asm:1128 + push ES ; 06 ; 0xfeccc orgs.asm:1129 + push DS ; 1e ; 0xfeccd orgs.asm:1130 + push CS ; 0e ; 0xfecce orgs.asm:104 + pop DS ; 1f ; 0xfeccf orgs.asm:105 + cld ; fc ; 0xfecd0 orgs.asm:106 + test dl, 080h ; f6 c2 80 ; 0xfecd1 orgs.asm:1135 + jne short 0ecdeh ; 75 08 ; 0xfecd4 orgs.asm:1136 + push word [cs:0ec7ah] ; 2e ff 36 7a ec ; 0xfecd6 orgs.asm:86 + jmp near 031abh ; e9 cd 44 ; 0xfecdb orgs.asm:87 + ; disGetNextSymbol 0xfecde LB 0x1322 -> off=0x0 cb=0000000000000014 uValue=00000000000f0cde 'int13_notfloppy' +int13_notfloppy: ; 0xfecde LB 0x14 + cmp dl, 0e0h ; 80 fa e0 ; 0xfecde orgs.asm:1141 + jc short 0ecf2h ; 72 0f ; 0xfece1 orgs.asm:1142 + shr ebx, 010h ; 66 c1 eb 10 ; 0xfece3 orgs.asm:1148 + push bx ; 53 ; 0xfece7 orgs.asm:1149 + call 04854h ; e8 69 5b ; 0xfece8 orgs.asm:1150 + pop bx ; 5b ; 0xfeceb orgs.asm:1151 + sal ebx, 010h ; 66 c1 e3 10 ; 0xfecec orgs.asm:1152 + jmp short 0ecffh ; eb 0d ; 0xfecf0 orgs.asm:1154 + ; disGetNextSymbol 0xfecf2 LB 0x130e -> off=0x0 cb=000000000000000d uValue=00000000000f0cf2 'int13_disk' +int13_disk: ; 0xfecf2 LB 0xd + cmp ah, 040h ; 80 fc 40 ; 0xfecf2 orgs.asm:1158 + jnbe short 0ecfch ; 77 05 ; 0xfecf5 orgs.asm:1159 + call 05de5h ; e8 eb 70 ; 0xfecf7 orgs.asm:1160 + jmp short 0ecffh ; eb 03 ; 0xfecfa orgs.asm:1161 + call 06231h ; e8 32 75 ; 0xfecfc orgs.asm:1164 + ; disGetNextSymbol 0xfecff LB 0x1301 -> off=0x0 cb=000000000000000b uValue=00000000000f0cff 'int13_out' +int13_out: ; 0xfecff LB 0xb + pop DS ; 1f ; 0xfecff orgs.asm:1167 + pop ES ; 07 ; 0xfed00 orgs.asm:1168 + pop di ; 5f ; 0xfed01 orgs.asm:116 + pop si ; 5e ; 0xfed02 orgs.asm:117 + pop bp ; 5d ; 0xfed03 orgs.asm:118 + pop bx ; 5b ; 0xfed04 orgs.asm:119 + pop bx ; 5b ; 0xfed05 orgs.asm:120 + pop dx ; 5a ; 0xfed06 orgs.asm:121 + pop cx ; 59 ; 0xfed07 orgs.asm:122 + pop ax ; 58 ; 0xfed08 orgs.asm:123 + iret ; cf ; 0xfed09 orgs.asm:1170 + ; disGetNextSymbol 0xfed0a LB 0x12f6 -> off=0x0 cb=000000000000001e uValue=00000000000f0d0a 'detect_parport' +detect_parport: ; 0xfed0a LB 0x1e + push dx ; 52 ; 0xfed0a orgs.asm:1177 + inc dx ; 42 ; 0xfed0b orgs.asm:1178 + inc dx ; 42 ; 0xfed0c orgs.asm:1179 + in AL, DX ; ec ; 0xfed0d orgs.asm:1180 + and AL, strict byte 0dfh ; 24 df ; 0xfed0e orgs.asm:1181 + out DX, AL ; ee ; 0xfed10 orgs.asm:1182 + pop dx ; 5a ; 0xfed11 orgs.asm:1183 + mov AL, strict byte 0aah ; b0 aa ; 0xfed12 orgs.asm:1184 + out DX, AL ; ee ; 0xfed14 orgs.asm:1185 + in AL, DX ; ec ; 0xfed15 orgs.asm:1186 + cmp AL, strict byte 0aah ; 3c aa ; 0xfed16 orgs.asm:1187 + jne short 0ed27h ; 75 0d ; 0xfed18 orgs.asm:1188 + push bx ; 53 ; 0xfed1a orgs.asm:1190 + sal bx, 1 ; d1 e3 ; 0xfed1b orgs.asm:1191 + mov word [bx+00408h], dx ; 89 97 08 04 ; 0xfed1d orgs.asm:1192 + pop bx ; 5b ; 0xfed21 orgs.asm:1193 + mov byte [bx+00478h], cl ; 88 8f 78 04 ; 0xfed22 orgs.asm:1194 + inc bx ; 43 ; 0xfed26 orgs.asm:1195 + retn ; c3 ; 0xfed27 orgs.asm:1197 + ; disGetNextSymbol 0xfed28 LB 0x12d8 -> off=0x0 cb=0000000000000024 uValue=00000000000f0d28 'detect_serial' +detect_serial: ; 0xfed28 LB 0x24 + push dx ; 52 ; 0xfed28 orgs.asm:1204 + inc dx ; 42 ; 0xfed29 orgs.asm:1205 + mov AL, strict byte 002h ; b0 02 ; 0xfed2a orgs.asm:1206 + out DX, AL ; ee ; 0xfed2c orgs.asm:1207 + in AL, DX ; ec ; 0xfed2d orgs.asm:1208 + cmp AL, strict byte 002h ; 3c 02 ; 0xfed2e orgs.asm:1209 + jne short 0ed4ah ; 75 18 ; 0xfed30 orgs.asm:1210 + inc dx ; 42 ; 0xfed32 orgs.asm:1212 + in AL, DX ; ec ; 0xfed33 orgs.asm:1213 + cmp AL, strict byte 002h ; 3c 02 ; 0xfed34 orgs.asm:1214 + jne short 0ed4ah ; 75 12 ; 0xfed36 orgs.asm:1215 + dec dx ; 4a ; 0xfed38 orgs.asm:1217 + db 032h, 0c0h + ; xor al, al ; 32 c0 ; 0xfed39 orgs.asm:1218 + pop dx ; 5a ; 0xfed3b orgs.asm:1219 + push bx ; 53 ; 0xfed3c orgs.asm:1220 + sal bx, 1 ; d1 e3 ; 0xfed3d orgs.asm:1221 + mov word [bx+00400h], dx ; 89 97 00 04 ; 0xfed3f orgs.asm:1222 + pop bx ; 5b ; 0xfed43 orgs.asm:1223 + mov byte [bx+0047ch], cl ; 88 8f 7c 04 ; 0xfed44 orgs.asm:1224 + inc bx ; 43 ; 0xfed48 orgs.asm:1225 + retn ; c3 ; 0xfed49 orgs.asm:1226 + pop dx ; 5a ; 0xfed4a orgs.asm:1229 + retn ; c3 ; 0xfed4b orgs.asm:1230 + ; disGetNextSymbol 0xfed4c LB 0x12b4 -> off=0x0 cb=000000000000008c uValue=00000000000f0d4c 'floppy_post' +floppy_post: ; 0xfed4c LB 0x8c + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xfed4c orgs.asm:1240 + mov ds, ax ; 8e d8 ; 0xfed4e orgs.asm:1241 + mov AL, strict byte 000h ; b0 00 ; 0xfed50 orgs.asm:1245 + mov byte [0043eh], AL ; a2 3e 04 ; 0xfed52 orgs.asm:1246 + mov byte [0043fh], AL ; a2 3f 04 ; 0xfed55 orgs.asm:1247 + mov byte [00440h], AL ; a2 40 04 ; 0xfed58 orgs.asm:1248 + mov byte [00441h], AL ; a2 41 04 ; 0xfed5b orgs.asm:1249 + mov byte [00442h], AL ; a2 42 04 ; 0xfed5e orgs.asm:1250 + mov byte [00443h], AL ; a2 43 04 ; 0xfed61 orgs.asm:1251 + mov byte [00444h], AL ; a2 44 04 ; 0xfed64 orgs.asm:1252 + mov byte [00445h], AL ; a2 45 04 ; 0xfed67 orgs.asm:1253 + mov byte [00446h], AL ; a2 46 04 ; 0xfed6a orgs.asm:1254 + mov byte [00447h], AL ; a2 47 04 ; 0xfed6d orgs.asm:1255 + mov byte [00448h], AL ; a2 48 04 ; 0xfed70 orgs.asm:1256 + mov byte [0048bh], AL ; a2 8b 04 ; 0xfed73 orgs.asm:1258 + mov AL, strict byte 010h ; b0 10 ; 0xfed76 orgs.asm:1260 + out strict byte 070h, AL ; e6 70 ; 0xfed78 orgs.asm:1261 + in AL, strict byte 071h ; e4 71 ; 0xfed7a orgs.asm:1262 + db 08ah, 0e0h + ; mov ah, al ; 8a e0 ; 0xfed7c orgs.asm:1263 + shr al, 1 ; d0 e8 ; 0xfed7e orgs.asm:181 + shr al, 1 ; d0 e8 ; 0xfed80 orgs.asm:184 + shr al, 1 ; d0 e8 ; 0xfed82 orgs.asm:187 + shr al, 1 ; d0 e8 ; 0xfed84 orgs.asm:190 + je short 0ed8ch ; 74 04 ; 0xfed86 orgs.asm:1268 + mov BL, strict byte 007h ; b3 07 ; 0xfed88 orgs.asm:1269 + jmp short 0ed8eh ; eb 02 ; 0xfed8a orgs.asm:1270 + mov BL, strict byte 000h ; b3 00 ; 0xfed8c orgs.asm:1273 + db 08ah, 0c4h + ; mov al, ah ; 8a c4 ; 0xfed8e orgs.asm:1276 + and AL, strict byte 00fh ; 24 0f ; 0xfed90 orgs.asm:1277 + je short 0ed97h ; 74 03 ; 0xfed92 orgs.asm:1278 + or bl, 070h ; 80 cb 70 ; 0xfed94 orgs.asm:1279 + mov byte [0048fh], bl ; 88 1e 8f 04 ; 0xfed97 orgs.asm:1281 + mov AL, strict byte 000h ; b0 00 ; 0xfed9b orgs.asm:1284 + mov byte [00490h], AL ; a2 90 04 ; 0xfed9d orgs.asm:1285 + mov byte [00491h], AL ; a2 91 04 ; 0xfeda0 orgs.asm:1286 + mov byte [00492h], AL ; a2 92 04 ; 0xfeda3 orgs.asm:1287 + mov byte [00493h], AL ; a2 93 04 ; 0xfeda6 orgs.asm:1288 + mov byte [00494h], AL ; a2 94 04 ; 0xfeda9 orgs.asm:1289 + mov byte [00495h], AL ; a2 95 04 ; 0xfedac orgs.asm:1290 + mov AL, strict byte 002h ; b0 02 ; 0xfedaf orgs.asm:1292 + out strict byte 00ah, AL ; e6 0a ; 0xfedb1 orgs.asm:1293 + mov ax, 0efc7h ; b8 c7 ef ; 0xfedb3 orgs.asm:95 + mov word [00078h], ax ; a3 78 00 ; 0xfedb6 orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfedb9 orgs.asm:97 + mov word [0007ah], ax ; a3 7a 00 ; 0xfedbc orgs.asm:98 + mov ax, 0ec59h ; b8 59 ec ; 0xfedbf orgs.asm:95 + mov word [00100h], ax ; a3 00 01 ; 0xfedc2 orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfedc5 orgs.asm:97 + mov word [00102h], ax ; a3 02 01 ; 0xfedc8 orgs.asm:98 + mov ax, 0ef57h ; b8 57 ef ; 0xfedcb orgs.asm:95 + mov word [00038h], ax ; a3 38 00 ; 0xfedce orgs.asm:96 + mov ax, 0f000h ; b8 00 f0 ; 0xfedd1 orgs.asm:97 + mov word [0003ah], ax ; a3 3a 00 ; 0xfedd4 orgs.asm:98 + retn ; c3 ; 0xfedd7 orgs.asm:1299 + ; disGetNextSymbol 0xfedd8 LB 0x1228 -> off=0x0 cb=000000000000000b uValue=0000000000000dd8 'bcd_to_bin' +bcd_to_bin: ; 0xfedd8 LB 0xb + push cx ; 51 ; 0xfedd8 orgs.asm:1312 + mov CL, strict byte 004h ; b1 04 ; 0xfedd9 orgs.asm:1313 + sal ax, CL ; d3 e0 ; 0xfeddb orgs.asm:1314 + shr al, CL ; d2 e8 ; 0xfeddd orgs.asm:1315 + pop cx ; 59 ; 0xfeddf orgs.asm:1316 + aad 00ah ; d5 0a ; 0xfede0 orgs.asm:1318 + retn ; c3 ; 0xfede2 orgs.asm:1319 + ; disGetNextSymbol 0xfede3 LB 0x121d -> off=0x0 cb=000000000000005a uValue=00000000000f0de3 'rtc_post' +rtc_post: ; 0xfede3 LB 0x5a + mov AL, strict byte 000h ; b0 00 ; 0xfede3 orgs.asm:1327 + out strict byte 070h, AL ; e6 70 ; 0xfede5 orgs.asm:1328 + in AL, strict byte 071h ; e4 71 ; 0xfede7 orgs.asm:1329 + call 0edd8h ; e8 ec ff ; 0xfede9 orgs.asm:1330 + test al, al ; 84 c0 ; 0xfedec orgs.asm:1331 + db 032h, 0e4h + ; xor ah, ah ; 32 e4 ; 0xfedee orgs.asm:1332 + mov dx, 01234h ; ba 34 12 ; 0xfedf0 orgs.asm:1333 + mul dx ; f7 e2 ; 0xfedf3 orgs.asm:1334 + db 08bh, 0c8h + ; mov cx, ax ; 8b c8 ; 0xfedf5 orgs.asm:1335 + mov AL, strict byte 002h ; b0 02 ; 0xfedf7 orgs.asm:1338 + out strict byte 070h, AL ; e6 70 ; 0xfedf9 orgs.asm:1339 + in AL, strict byte 071h ; e4 71 ; 0xfedfb orgs.asm:1340 + call 0edd8h ; e8 d8 ff ; 0xfedfd orgs.asm:1341 + test al, al ; 84 c0 ; 0xfee00 orgs.asm:1342 + je short 0ee0fh ; 74 0b ; 0xfee02 orgs.asm:1343 + add cx, 04463h ; 81 c1 63 44 ; 0xfee04 orgs.asm:1345 + adc dx, strict byte 00004h ; 83 d2 04 ; 0xfee08 orgs.asm:1346 + db 0feh, 0c8h + ; dec al ; fe c8 ; 0xfee0b orgs.asm:1347 + jne short 0ee04h ; 75 f5 ; 0xfee0d orgs.asm:1348 + mov AL, strict byte 004h ; b0 04 ; 0xfee0f orgs.asm:1352 + out strict byte 070h, AL ; e6 70 ; 0xfee11 orgs.asm:1353 + in AL, strict byte 071h ; e4 71 ; 0xfee13 orgs.asm:1354 + call 0edd8h ; e8 c0 ff ; 0xfee15 orgs.asm:1355 + test al, al ; 84 c0 ; 0xfee18 orgs.asm:1356 + je short 0ee28h ; 74 0c ; 0xfee1a orgs.asm:1357 + add cx, 0076ch ; 81 c1 6c 07 ; 0xfee1c orgs.asm:1359 + adc dx, 00100h ; 81 d2 00 01 ; 0xfee20 orgs.asm:1360 + db 0feh, 0c8h + ; dec al ; fe c8 ; 0xfee24 orgs.asm:1361 + jne short 0ee1ch ; 75 f4 ; 0xfee26 orgs.asm:1362 + db 08ah, 0cdh + ; mov cl, ch ; 8a cd ; 0xfee28 orgs.asm:1365 + db 08ah, 0eah + ; mov ch, dl ; 8a ea ; 0xfee2a orgs.asm:1366 + db 08ah, 0d6h + ; mov dl, dh ; 8a d6 ; 0xfee2c orgs.asm:1367 + db 032h, 0f6h + ; xor dh, dh ; 32 f6 ; 0xfee2e orgs.asm:1368 + mov word [0046ch], cx ; 89 0e 6c 04 ; 0xfee30 orgs.asm:1369 + mov word [0046eh], dx ; 89 16 6e 04 ; 0xfee34 orgs.asm:1370 + mov byte [00470h], dh ; 88 36 70 04 ; 0xfee38 orgs.asm:1371 + retn ; c3 ; 0xfee3c orgs.asm:1419 + ; disGetNextSymbol 0xfee3d LB 0x11c3 -> off=0x0 cb=000000000000011a uValue=00000000000f0e3d 'biosorg_check_before_or_at_0EF55h' +biosorg_check_before_or_at_0EF55h: ; 0xfee3d LB 0x11a + times 0x118 db 0 + db 'XM' + ; disGetNextSymbol 0xfef57 LB 0x10a9 -> off=0x0 cb=000000000000003b uValue=00000000000f0f57 'int0e_handler' +int0e_handler: ; 0xfef57 LB 0x3b + push ax ; 50 ; 0xfef57 orgs.asm:1430 + push dx ; 52 ; 0xfef58 orgs.asm:1431 + mov dx, 003f4h ; ba f4 03 ; 0xfef59 orgs.asm:1432 + in AL, DX ; ec ; 0xfef5c orgs.asm:1433 + and AL, strict byte 0c0h ; 24 c0 ; 0xfef5d orgs.asm:1434 + cmp AL, strict byte 0c0h ; 3c c0 ; 0xfef5f orgs.asm:1435 + je short 0ef81h ; 74 1e ; 0xfef61 orgs.asm:1436 + mov dx, 003f5h ; ba f5 03 ; 0xfef63 orgs.asm:1437 + mov AL, strict byte 008h ; b0 08 ; 0xfef66 orgs.asm:1438 + out DX, AL ; ee ; 0xfef68 orgs.asm:1439 + mov dx, 003f4h ; ba f4 03 ; 0xfef69 orgs.asm:1441 + in AL, DX ; ec ; 0xfef6c orgs.asm:1442 + and AL, strict byte 0c0h ; 24 c0 ; 0xfef6d orgs.asm:1443 + cmp AL, strict byte 0c0h ; 3c c0 ; 0xfef6f orgs.asm:1444 + jne short 0ef69h ; 75 f6 ; 0xfef71 orgs.asm:1445 + mov dx, 003f5h ; ba f5 03 ; 0xfef73 orgs.asm:1448 + in AL, DX ; ec ; 0xfef76 orgs.asm:1449 + mov dx, 003f4h ; ba f4 03 ; 0xfef77 orgs.asm:1450 + in AL, DX ; ec ; 0xfef7a orgs.asm:1451 + and AL, strict byte 0c0h ; 24 c0 ; 0xfef7b orgs.asm:1452 + cmp AL, strict byte 0c0h ; 3c c0 ; 0xfef7d orgs.asm:1453 + je short 0ef73h ; 74 f2 ; 0xfef7f orgs.asm:1454 + push DS ; 1e ; 0xfef81 orgs.asm:1457 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xfef82 orgs.asm:1458 + mov ds, ax ; 8e d8 ; 0xfef84 orgs.asm:1459 + call 0e034h ; e8 ab f0 ; 0xfef86 orgs.asm:1460 + or byte [0043eh], 080h ; 80 0e 3e 04 80 ; 0xfef89 orgs.asm:1462 + pop DS ; 1f ; 0xfef8e orgs.asm:1463 + pop dx ; 5a ; 0xfef8f orgs.asm:1464 + pop ax ; 58 ; 0xfef90 orgs.asm:1465 + iret ; cf ; 0xfef91 orgs.asm:1466 + ; disGetNextSymbol 0xfef92 LB 0x106e -> off=0x0 cb=0000000000000035 uValue=00000000000f0f92 'biosorg_check_before_or_at_0EFC5h' +biosorg_check_before_or_at_0EFC5h: ; 0xfef92 LB 0x35 + times 0x33 db 0 + db 'XM' + ; disGetNextSymbol 0xfefc7 LB 0x1039 -> off=0x0 cb=000000000000000b uValue=00000000000f0fc7 '_diskette_param_table' +_diskette_param_table: ; 0xfefc7 LB 0xb + scasw ; af ; 0xfefc7 + add ah, byte [di] ; 02 25 ; 0xfefc8 + add dl, byte [bp+si] ; 02 12 ; 0xfefca + db 01bh, 0ffh + ; sbb di, di ; 1b ff ; 0xfefcc + insb ; 6c ; 0xfefce + db 0f6h + invd ; 0f 08 ; 0xfefd0 + ; disGetNextSymbol 0xfefd2 LB 0x102e -> off=0x0 cb=0000000000000002 uValue=00000000000f0fd2 'biosorg_check_at_0EFD2h' +biosorg_check_at_0EFD2h: ; 0xfefd2 LB 0x2 + jmp short 0efd4h ; eb 00 ; 0xfefd2 orgs.asm:1493 + ; disGetNextSymbol 0xfefd4 LB 0x102c -> off=0x0 cb=000000000000001b uValue=00000000000f0fd4 'int17_handler' +int17_handler: ; 0xfefd4 LB 0x1b + push DS ; 1e ; 0xfefd4 orgs.asm:1496 + push ES ; 06 ; 0xfefd5 orgs.asm:1497 + push ax ; 50 ; 0xfefd6 orgs.asm:99 + push cx ; 51 ; 0xfefd7 orgs.asm:100 + push dx ; 52 ; 0xfefd8 orgs.asm:101 + push bx ; 53 ; 0xfefd9 orgs.asm:102 + push sp ; 54 ; 0xfefda orgs.asm:103 + push bp ; 55 ; 0xfefdb orgs.asm:104 + push si ; 56 ; 0xfefdc orgs.asm:105 + push di ; 57 ; 0xfefdd orgs.asm:106 + push CS ; 0e ; 0xfefde orgs.asm:104 + pop DS ; 1f ; 0xfefdf orgs.asm:105 + cld ; fc ; 0xfefe0 orgs.asm:106 + call 07339h ; e8 55 83 ; 0xfefe1 orgs.asm:1500 + pop di ; 5f ; 0xfefe4 orgs.asm:116 + pop si ; 5e ; 0xfefe5 orgs.asm:117 + pop bp ; 5d ; 0xfefe6 orgs.asm:118 + pop bx ; 5b ; 0xfefe7 orgs.asm:119 + pop bx ; 5b ; 0xfefe8 orgs.asm:120 + pop dx ; 5a ; 0xfefe9 orgs.asm:121 + pop cx ; 59 ; 0xfefea orgs.asm:122 + pop ax ; 58 ; 0xfefeb orgs.asm:123 + pop ES ; 07 ; 0xfefec orgs.asm:1502 + pop DS ; 1f ; 0xfefed orgs.asm:1503 + iret ; cf ; 0xfefee orgs.asm:1504 + ; disGetNextSymbol 0xfefef LB 0x1011 -> off=0x0 cb=0000000000000006 uValue=00000000000f0fef '_pmode_IDT' +_pmode_IDT: ; 0xfefef LB 0x6 + db 000h, 000h, 000h, 000h, 00fh, 000h + ; disGetNextSymbol 0xfeff5 LB 0x100b -> off=0x0 cb=0000000000000006 uValue=00000000000f0ff5 '_rmode_IDT' +_rmode_IDT: ; 0xfeff5 LB 0x6 + db 0ffh, 003h, 000h, 000h, 000h, 000h + ; disGetNextSymbol 0xfeffb LB 0x1005 -> off=0x0 cb=0000000000000001 uValue=00000000000f0ffb 'int1c_handler' +int1c_handler: ; 0xfeffb LB 0x1 + iret ; cf ; 0xfeffb orgs.asm:1539 + ; disGetNextSymbol 0xfeffc LB 0x1004 -> off=0x0 cb=0000000000000049 uValue=00000000000f0ffc 'biosorg_check_before_or_at_0F043h' +biosorg_check_before_or_at_0F043h: ; 0xfeffc LB 0x49 + times 0x47 db 0 + db 'XM' + ; disGetNextSymbol 0xff045 LB 0xfbb -> off=0x0 cb=0000000000000001 uValue=00000000000f1045 'biosorg_check_at_0F045h' +biosorg_check_at_0F045h: ; 0xff045 LB 0x1 + iret ; cf ; 0xff045 orgs.asm:1548 + ; disGetNextSymbol 0xff046 LB 0xfba -> off=0x0 cb=000000000000001f uValue=00000000000f1046 'biosorg_check_before_or_at_0F063h' +biosorg_check_before_or_at_0F063h: ; 0xff046 LB 0x1f + times 0x1d db 0 + db 'XM' + ; disGetNextSymbol 0xff065 LB 0xf9b -> off=0x0 cb=0000000000000001 uValue=00000000000f1065 'int10_handler' +int10_handler: ; 0xff065 LB 0x1 + iret ; cf ; 0xff065 orgs.asm:1557 + ; disGetNextSymbol 0xff066 LB 0xf9a -> off=0x0 cb=000000000000003e uValue=00000000000f1066 'biosorg_check_before_or_at_0F0A2h' +biosorg_check_before_or_at_0F0A2h: ; 0xff066 LB 0x3e + times 0x3c db 0 + db 'XM' + ; disGetNextSymbol 0xff0a4 LB 0xf5c -> off=0x0 cb=0000000000000008 uValue=00000000000f10a4 'biosorg_check_at_0F0A4h' +biosorg_check_at_0F0A4h: ; 0xff0a4 LB 0x8 + push CS ; 0e ; 0xff0a4 orgs.asm:104 + pop DS ; 1f ; 0xff0a5 orgs.asm:105 + cld ; fc ; 0xff0a6 orgs.asm:106 + call 01700h ; e8 56 26 ; 0xff0a7 orgs.asm:1572 + hlt ; f4 ; 0xff0aa orgs.asm:1574 + iret ; cf ; 0xff0ab orgs.asm:1575 + ; disGetNextSymbol 0xff0ac LB 0xf54 -> off=0x0 cb=0000000000000095 uValue=00000000000f10ac 'int19_relocated' +int19_relocated: ; 0xff0ac LB 0x95 + db 08bh, 0ech + ; mov bp, sp ; 8b ec ; 0xff0ac orgs.asm:1586 + mov ax, word [bp+002h] ; 8b 46 02 ; 0xff0ae orgs.asm:1587 + cmp ax, 0f000h ; 3d 00 f0 ; 0xff0b1 orgs.asm:1588 + je short 0f0c3h ; 74 0d ; 0xff0b4 orgs.asm:1589 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xff0b6 orgs.asm:1591 + mov ds, ax ; 8e d8 ; 0xff0b8 orgs.asm:1592 + mov ax, 01234h ; b8 34 12 ; 0xff0ba orgs.asm:1593 + mov word [001d8h], ax ; a3 d8 01 ; 0xff0bd orgs.asm:1594 + jmp near 0e05bh ; e9 98 ef ; 0xff0c0 orgs.asm:1595 + push CS ; 0e ; 0xff0c3 orgs.asm:104 + pop DS ; 1f ; 0xff0c4 orgs.asm:105 + cld ; fc ; 0xff0c5 orgs.asm:106 + push bp ; 55 ; 0xff0c6 orgs.asm:1602 + db 08bh, 0ech + ; mov bp, sp ; 8b ec ; 0xff0c7 orgs.asm:1603 + mov ax, strict word 00001h ; b8 01 00 ; 0xff0c9 orgs.asm:1606 + push ax ; 50 ; 0xff0cc orgs.asm:1607 + call 04cfah ; e8 2a 5c ; 0xff0cd orgs.asm:1608 + inc sp ; 44 ; 0xff0d0 orgs.asm:1609 + inc sp ; 44 ; 0xff0d1 orgs.asm:1610 + test ax, ax ; 85 c0 ; 0xff0d2 orgs.asm:1611 + jne short 0f0fdh ; 75 27 ; 0xff0d4 orgs.asm:1612 + mov ax, strict word 00002h ; b8 02 00 ; 0xff0d6 orgs.asm:1615 + push ax ; 50 ; 0xff0d9 orgs.asm:1616 + call 04cfah ; e8 1d 5c ; 0xff0da orgs.asm:1617 + inc sp ; 44 ; 0xff0dd orgs.asm:1618 + inc sp ; 44 ; 0xff0de orgs.asm:1619 + test ax, ax ; 85 c0 ; 0xff0df orgs.asm:1620 + jne short 0f0fdh ; 75 1a ; 0xff0e1 orgs.asm:1621 + mov ax, strict word 00003h ; b8 03 00 ; 0xff0e3 orgs.asm:1624 + push ax ; 50 ; 0xff0e6 orgs.asm:1625 + call 04cfah ; e8 10 5c ; 0xff0e7 orgs.asm:1626 + inc sp ; 44 ; 0xff0ea orgs.asm:1627 + inc sp ; 44 ; 0xff0eb orgs.asm:1628 + test ax, ax ; 85 c0 ; 0xff0ec orgs.asm:1629 + jne short 0f0fdh ; 75 0d ; 0xff0ee orgs.asm:1630 + mov ax, strict word 00004h ; b8 04 00 ; 0xff0f0 orgs.asm:1633 + push ax ; 50 ; 0xff0f3 orgs.asm:1634 + call 04cfah ; e8 03 5c ; 0xff0f4 orgs.asm:1635 + inc sp ; 44 ; 0xff0f7 orgs.asm:1636 + inc sp ; 44 ; 0xff0f8 orgs.asm:1637 + test ax, ax ; 85 c0 ; 0xff0f9 orgs.asm:1638 + je short 0f0a4h ; 74 a7 ; 0xff0fb orgs.asm:1639 + mov word [byte bp+000h], ax ; 89 46 00 ; 0xff0fd orgs.asm:1645 + sal ax, 1 ; d1 e0 ; 0xff100 orgs.asm:212 + sal ax, 1 ; d1 e0 ; 0xff102 orgs.asm:215 + sal ax, 1 ; d1 e0 ; 0xff104 orgs.asm:218 + sal ax, 1 ; d1 e0 ; 0xff106 orgs.asm:221 + mov word [bp+002h], ax ; 89 46 02 ; 0xff108 orgs.asm:1647 + mov ax, word [byte bp+000h] ; 8b 46 00 ; 0xff10b orgs.asm:1648 + and ax, 0f000h ; 25 00 f0 ; 0xff10e orgs.asm:1657 + mov word [bp+004h], ax ; 89 46 04 ; 0xff111 orgs.asm:1658 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xff114 orgs.asm:1659 + mov ds, ax ; 8e d8 ; 0xff116 orgs.asm:1660 + mov es, ax ; 8e c0 ; 0xff118 orgs.asm:1661 + mov word [byte bp+000h], ax ; 89 46 00 ; 0xff11a orgs.asm:1662 + mov ax, 0aa55h ; b8 55 aa ; 0xff11d orgs.asm:1663 + pop bp ; 5d ; 0xff120 orgs.asm:1665 + iret ; cf ; 0xff121 orgs.asm:1666 + or cx, word [bp+si] ; 0b 0a ; 0xff122 + or word [bp+di], cx ; 09 0b ; 0xff124 + push eax ; 66 50 ; 0xff126 orgs.asm:88 + mov eax, strict dword 000800000h ; 66 b8 00 00 80 00 ; 0xff128 orgs.asm:89 + db 08bh, 0c3h + ; mov ax, bx ; 8b c3 ; 0xff12e orgs.asm:90 + sal eax, 008h ; 66 c1 e0 08 ; 0xff130 orgs.asm:91 + and dl, 0fch ; 80 e2 fc ; 0xff134 orgs.asm:92 + db 00ah, 0c2h + ; or al, dl ; 0a c2 ; 0xff137 orgs.asm:93 + mov dx, 00cf8h ; ba f8 0c ; 0xff139 orgs.asm:94 + out DX, eax ; 66 ef ; 0xff13c orgs.asm:95 + pop eax ; 66 58 ; 0xff13e orgs.asm:96 + retn ; c3 ; 0xff140 orgs.asm:97 + ; disGetNextSymbol 0xff141 LB 0xebf -> off=0x0 cb=0000000000000012 uValue=00000000000f1141 'pcibios_init_iomem_bases' +pcibios_init_iomem_bases: ; 0xff141 LB 0x12 + push bp ; 55 ; 0xff141 orgs.asm:100 + db 08bh, 0ech + ; mov bp, sp ; 8b ec ; 0xff142 orgs.asm:101 + mov eax, strict dword 00124f9fdh ; 66 b8 fd f9 24 01 ; 0xff144 orgs.asm:103 + mov dx, 00410h ; ba 10 04 ; 0xff14a orgs.asm:104 + out DX, eax ; 66 ef ; 0xff14d orgs.asm:105 + db 08bh, 0e5h + ; mov sp, bp ; 8b e5 ; 0xff14f orgs.asm:218 + pop bp ; 5d ; 0xff151 orgs.asm:219 + retn ; c3 ; 0xff152 orgs.asm:220 + ; disGetNextSymbol 0xff153 LB 0xead -> off=0x0 cb=000000000000000c uValue=00000000000f1153 'pcibios_init_set_elcr' +pcibios_init_set_elcr: ; 0xff153 LB 0xc + push ax ; 50 ; 0xff153 orgs.asm:223 + push cx ; 51 ; 0xff154 orgs.asm:224 + mov dx, 004d0h ; ba d0 04 ; 0xff155 orgs.asm:225 + test AL, strict byte 008h ; a8 08 ; 0xff158 orgs.asm:226 + je short 0f15fh ; 74 03 ; 0xff15a orgs.asm:227 + inc dx ; 42 ; 0xff15c orgs.asm:229 + and AL, strict byte 007h ; 24 07 ; 0xff15d orgs.asm:230 + ; disGetNextSymbol 0xff15f LB 0xea1 -> off=0x0 cb=000000000000000d uValue=00000000000f115f 'is_master_pic' +is_master_pic: ; 0xff15f LB 0xd + db 08ah, 0c8h + ; mov cl, al ; 8a c8 ; 0xff15f orgs.asm:232 + mov BL, strict byte 001h ; b3 01 ; 0xff161 orgs.asm:233 + sal bl, CL ; d2 e3 ; 0xff163 orgs.asm:234 + in AL, DX ; ec ; 0xff165 orgs.asm:235 + db 00ah, 0c3h + ; or al, bl ; 0a c3 ; 0xff166 orgs.asm:236 + out DX, AL ; ee ; 0xff168 orgs.asm:237 + pop cx ; 59 ; 0xff169 orgs.asm:238 + pop ax ; 58 ; 0xff16a orgs.asm:239 + retn ; c3 ; 0xff16b orgs.asm:240 + ; disGetNextSymbol 0xff16c LB 0xe94 -> off=0x0 cb=0000000000000034 uValue=00000000000f116c 'pcibios_init_irqs' +pcibios_init_irqs: ; 0xff16c LB 0x34 + push DS ; 1e ; 0xff16c orgs.asm:243 + push bp ; 55 ; 0xff16d orgs.asm:244 + mov ax, 0f000h ; b8 00 f0 ; 0xff16e orgs.asm:245 + mov ds, ax ; 8e d8 ; 0xff171 orgs.asm:246 + pop bp ; 5d ; 0xff173 orgs.asm:353 + pop DS ; 1f ; 0xff174 orgs.asm:354 + retn ; c3 ; 0xff175 orgs.asm:355 + mov ax, ax ; 89 c0 ; 0xff176 + mov ax, ax ; 89 c0 ; 0xff178 + mov ax, ax ; 89 c0 ; 0xff17a + mov ax, ax ; 89 c0 ; 0xff17c + mov ax, ax ; 89 c0 ; 0xff17e + and AL, strict byte 050h ; 24 50 ; 0xff180 + dec cx ; 49 ; 0xff182 + push dx ; 52 ; 0xff183 + add byte [bx+di], al ; 00 01 ; 0xff184 + add byte [bp+si], al ; 00 02 ; 0xff186 + add byte [bx+si], cl ; 00 08 ; 0xff188 + add byte [bx+si], al ; 00 00 ; 0xff18a + xchg byte [bx+si+07000h], al ; 86 80 00 70 ; 0xff18c + times 0xf db 0 + db 031h + ; disGetNextSymbol 0xff1a0 LB 0xe60 -> off=0x0 cb=00000000000001e0 uValue=00000000000f11a0 '_pci_routing_table' +_pci_routing_table: ; 0xff1a0 LB 0x1e0 + db 000h, 008h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 000h, 000h + db 000h, 010h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 001h, 000h + db 000h, 018h, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 002h, 000h + db 000h, 020h, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 003h, 000h + db 000h, 028h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 004h, 000h + db 000h, 030h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 005h, 000h + db 000h, 038h, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 006h, 000h + db 000h, 040h, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 007h, 000h + db 000h, 048h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 008h, 000h + db 000h, 050h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 009h, 000h + db 000h, 058h, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 00ah, 000h + db 000h, 060h, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 00bh, 000h + db 000h, 068h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 00ch, 000h + db 000h, 070h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 00dh, 000h + db 000h, 078h, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 00eh, 000h + db 000h, 080h, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 00fh, 000h + db 000h, 088h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 010h, 000h + db 000h, 090h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 011h, 000h + db 000h, 098h, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 012h, 000h + db 000h, 0a0h, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 013h, 000h + db 000h, 0a8h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 014h, 000h + db 000h, 0b0h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 015h, 000h + db 000h, 0b8h, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 016h, 000h + db 000h, 0c0h, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 017h, 000h + db 000h, 0c8h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 018h, 000h + db 000h, 0d0h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 019h, 000h + db 000h, 0d8h, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 01ah, 000h + db 000h, 0e0h, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 01bh, 000h + db 000h, 0e8h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 01ch, 000h + db 000h, 0f0h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 01dh, 000h + ; disGetNextSymbol 0xff380 LB 0xc80 -> off=0x0 cb=0000000000000002 uValue=00000000000f1380 '_pci_routing_table_size' +_pci_routing_table_size: ; 0xff380 LB 0x2 + loopne 0f383h ; e0 01 ; 0xff380 + ; disGetNextSymbol 0xff382 LB 0xc7e -> off=0x0 cb=00000000000004bf uValue=00000000000f1382 'biosorg_check_before_or_at_0F83Fh' +biosorg_check_before_or_at_0F83Fh: ; 0xff382 LB 0x4bf + times 0x4bd db 0 + db 'XM' + ; disGetNextSymbol 0xff841 LB 0x7bf -> off=0x0 cb=000000000000000c uValue=00000000000f1841 'int12_handler' +int12_handler: ; 0xff841 LB 0xc + sti ; fb ; 0xff841 orgs.asm:1680 + push DS ; 1e ; 0xff842 orgs.asm:1681 + mov ax, strict word 00040h ; b8 40 00 ; 0xff843 orgs.asm:1682 + mov ds, ax ; 8e d8 ; 0xff846 orgs.asm:1683 + mov ax, word [00013h] ; a1 13 00 ; 0xff848 orgs.asm:1684 + pop DS ; 1f ; 0xff84b orgs.asm:1685 + iret ; cf ; 0xff84c orgs.asm:1686 + ; disGetNextSymbol 0xff84d LB 0x7b3 -> off=0x0 cb=000000000000000c uValue=00000000000f184d 'int11_handler' +int11_handler: ; 0xff84d LB 0xc + sti ; fb ; 0xff84d orgs.asm:1695 + push DS ; 1e ; 0xff84e orgs.asm:1696 + mov ax, strict word 00040h ; b8 40 00 ; 0xff84f orgs.asm:1697 + mov ds, ax ; 8e d8 ; 0xff852 orgs.asm:1698 + mov ax, word [00010h] ; a1 10 00 ; 0xff854 orgs.asm:1699 + pop DS ; 1f ; 0xff857 orgs.asm:1700 + iret ; cf ; 0xff858 orgs.asm:1701 + ; disGetNextSymbol 0xff859 LB 0x7a7 -> off=0x0 cb=000000000000002d uValue=00000000000f1859 'int15_handler' +int15_handler: ; 0xff859 LB 0x2d + pushfw ; 9c ; 0xff859 orgs.asm:1730 + push DS ; 1e ; 0xff85a orgs.asm:1731 + push ES ; 06 ; 0xff85b orgs.asm:1732 + push CS ; 0e ; 0xff85c orgs.asm:104 + pop DS ; 1f ; 0xff85d orgs.asm:105 + cld ; fc ; 0xff85e orgs.asm:106 + push ax ; 50 ; 0xff85f orgs.asm:99 + push cx ; 51 ; 0xff860 orgs.asm:100 + push dx ; 52 ; 0xff861 orgs.asm:101 + push bx ; 53 ; 0xff862 orgs.asm:102 + push sp ; 54 ; 0xff863 orgs.asm:103 + push bp ; 55 ; 0xff864 orgs.asm:104 + push si ; 56 ; 0xff865 orgs.asm:105 + push di ; 57 ; 0xff866 orgs.asm:106 + cmp ah, 053h ; 80 fc 53 ; 0xff867 orgs.asm:1743 + je short 0f881h ; 74 15 ; 0xff86a orgs.asm:1744 + cmp ah, 0c2h ; 80 fc c2 ; 0xff86c orgs.asm:1745 + je short 0f886h ; 74 15 ; 0xff86f orgs.asm:1746 + call 066dah ; e8 66 6e ; 0xff871 orgs.asm:1748 + pop di ; 5f ; 0xff874 orgs.asm:116 + pop si ; 5e ; 0xff875 orgs.asm:117 + pop bp ; 5d ; 0xff876 orgs.asm:118 + pop bx ; 5b ; 0xff877 orgs.asm:119 + pop bx ; 5b ; 0xff878 orgs.asm:120 + pop dx ; 5a ; 0xff879 orgs.asm:121 + pop cx ; 59 ; 0xff87a orgs.asm:122 + pop ax ; 58 ; 0xff87b orgs.asm:123 + pop ES ; 07 ; 0xff87c orgs.asm:1754 + pop DS ; 1f ; 0xff87d orgs.asm:1755 + popfw ; 9d ; 0xff87e orgs.asm:1756 + jmp short 0f88bh ; eb 0a ; 0xff87f orgs.asm:1757 + call 0963eh ; e8 ba 9d ; 0xff881 orgs.asm:1760 + jmp short 0f874h ; eb ee ; 0xff884 orgs.asm:1761 + ; disGetNextSymbol 0xff886 LB 0x77a -> off=0x0 cb=0000000000000005 uValue=00000000000f1886 'int15_handler_mouse' +int15_handler_mouse: ; 0xff886 LB 0x5 + call 06fb9h ; e8 30 77 ; 0xff886 orgs.asm:1764 + jmp short 0f874h ; eb e9 ; 0xff889 orgs.asm:1765 + ; disGetNextSymbol 0xff88b LB 0x775 -> off=0x0 cb=000000000000001a uValue=00000000000f188b 'iret_modify_cf' +iret_modify_cf: ; 0xff88b LB 0x1a + jc short 0f89bh ; 72 0e ; 0xff88b orgs.asm:1782 + push bp ; 55 ; 0xff88d orgs.asm:1783 + db 08bh, 0ech + ; mov bp, sp ; 8b ec ; 0xff88e orgs.asm:1784 + and byte [bp+006h], 0feh ; 80 66 06 fe ; 0xff890 orgs.asm:1785 + or word [bp+006h], 00200h ; 81 4e 06 00 02 ; 0xff894 orgs.asm:1786 + pop bp ; 5d ; 0xff899 orgs.asm:1787 + iret ; cf ; 0xff89a orgs.asm:1788 + push bp ; 55 ; 0xff89b orgs.asm:1790 + db 08bh, 0ech + ; mov bp, sp ; 8b ec ; 0xff89c orgs.asm:1791 + or word [bp+006h], 00201h ; 81 4e 06 01 02 ; 0xff89e orgs.asm:1792 + pop bp ; 5d ; 0xff8a3 orgs.asm:1793 + iret ; cf ; 0xff8a4 orgs.asm:1794 + ; disGetNextSymbol 0xff8a5 LB 0x75b -> off=0x0 cb=000000000000003a uValue=00000000000f18a5 'int74_handler' +int74_handler: ; 0xff8a5 LB 0x3a + sti ; fb ; 0xff8a5 orgs.asm:1801 + push ax ; 50 ; 0xff8a6 orgs.asm:99 + push cx ; 51 ; 0xff8a7 orgs.asm:100 + push dx ; 52 ; 0xff8a8 orgs.asm:101 + push bx ; 53 ; 0xff8a9 orgs.asm:102 + push sp ; 54 ; 0xff8aa orgs.asm:103 + push bp ; 55 ; 0xff8ab orgs.asm:104 + push si ; 56 ; 0xff8ac orgs.asm:105 + push di ; 57 ; 0xff8ad orgs.asm:106 + push ES ; 06 ; 0xff8ae orgs.asm:1803 + push DS ; 1e ; 0xff8af orgs.asm:1804 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xff8b0 orgs.asm:1805 + push ax ; 50 ; 0xff8b2 orgs.asm:1806 + push ax ; 50 ; 0xff8b3 orgs.asm:1807 + push ax ; 50 ; 0xff8b4 orgs.asm:1808 + push ax ; 50 ; 0xff8b5 orgs.asm:1809 + push ax ; 50 ; 0xff8b6 orgs.asm:1810 + push CS ; 0e ; 0xff8b7 orgs.asm:104 + pop DS ; 1f ; 0xff8b8 orgs.asm:105 + cld ; fc ; 0xff8b9 orgs.asm:106 + call 06f0bh ; e8 4e 76 ; 0xff8ba orgs.asm:1812 + pop cx ; 59 ; 0xff8bd orgs.asm:1813 + jcxz 0f8cdh ; e3 0d ; 0xff8be orgs.asm:1814 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xff8c0 orgs.asm:1820 + push ax ; 50 ; 0xff8c2 orgs.asm:1821 + pop DS ; 1f ; 0xff8c3 orgs.asm:1823 + push word [0040eh] ; ff 36 0e 04 ; 0xff8c4 orgs.asm:1824 + pop DS ; 1f ; 0xff8c8 orgs.asm:1825 + call far [word 00022h] ; ff 1e 22 00 ; 0xff8c9 orgs.asm:1826 + cli ; fa ; 0xff8cd orgs.asm:1828 + call 0e030h ; e8 5f e7 ; 0xff8ce orgs.asm:1829 + add sp, strict byte 00008h ; 83 c4 08 ; 0xff8d1 orgs.asm:1830 + pop DS ; 1f ; 0xff8d4 orgs.asm:1831 + pop ES ; 07 ; 0xff8d5 orgs.asm:1832 + pop di ; 5f ; 0xff8d6 orgs.asm:116 + pop si ; 5e ; 0xff8d7 orgs.asm:117 + pop bp ; 5d ; 0xff8d8 orgs.asm:118 + pop bx ; 5b ; 0xff8d9 orgs.asm:119 + pop bx ; 5b ; 0xff8da orgs.asm:120 + pop dx ; 5a ; 0xff8db orgs.asm:121 + pop cx ; 59 ; 0xff8dc orgs.asm:122 + pop ax ; 58 ; 0xff8dd orgs.asm:123 + iret ; cf ; 0xff8de orgs.asm:1834 + ; disGetNextSymbol 0xff8df LB 0x721 -> off=0x0 cb=0000000000000012 uValue=00000000000f18df 'int76_handler' +int76_handler: ; 0xff8df LB 0x12 + push ax ; 50 ; 0xff8df orgs.asm:1841 + push DS ; 1e ; 0xff8e0 orgs.asm:1842 + mov ax, strict word 00040h ; b8 40 00 ; 0xff8e1 orgs.asm:1843 + mov ds, ax ; 8e d8 ; 0xff8e4 orgs.asm:1844 + mov byte [0008eh], 0ffh ; c6 06 8e 00 ff ; 0xff8e6 orgs.asm:1845 + call 0e030h ; e8 42 e7 ; 0xff8eb orgs.asm:1846 + pop DS ; 1f ; 0xff8ee orgs.asm:1847 + pop ax ; 58 ; 0xff8ef orgs.asm:1848 + iret ; cf ; 0xff8f0 orgs.asm:1849 + ; disGetNextSymbol 0xff8f1 LB 0x70f -> off=0x0 cb=000000000000002d uValue=00000000000f18f1 'int70_handler' +int70_handler: ; 0xff8f1 LB 0x2d + push ES ; 06 ; 0xff8f1 orgs.asm:1858 + push DS ; 1e ; 0xff8f2 orgs.asm:1859 + push ax ; 50 ; 0xff8f3 orgs.asm:99 + push cx ; 51 ; 0xff8f4 orgs.asm:100 + push dx ; 52 ; 0xff8f5 orgs.asm:101 + push bx ; 53 ; 0xff8f6 orgs.asm:102 + push sp ; 54 ; 0xff8f7 orgs.asm:103 + push bp ; 55 ; 0xff8f8 orgs.asm:104 + push si ; 56 ; 0xff8f9 orgs.asm:105 + push di ; 57 ; 0xff8fa orgs.asm:106 + push CS ; 0e ; 0xff8fb orgs.asm:104 + pop DS ; 1f ; 0xff8fc orgs.asm:105 + cld ; fc ; 0xff8fd orgs.asm:106 + call 06bbfh ; e8 be 72 ; 0xff8fe orgs.asm:1862 + pop di ; 5f ; 0xff901 orgs.asm:116 + pop si ; 5e ; 0xff902 orgs.asm:117 + pop bp ; 5d ; 0xff903 orgs.asm:118 + pop bx ; 5b ; 0xff904 orgs.asm:119 + pop bx ; 5b ; 0xff905 orgs.asm:120 + pop dx ; 5a ; 0xff906 orgs.asm:121 + pop cx ; 59 ; 0xff907 orgs.asm:122 + pop ax ; 58 ; 0xff908 orgs.asm:123 + pop DS ; 1f ; 0xff909 orgs.asm:1864 + pop ES ; 07 ; 0xff90a orgs.asm:1865 + iret ; cf ; 0xff90b orgs.asm:1866 + jnbe short 0f913h ; 77 05 ; 0xff90c orgs.asm:1876 + cmp ax, 000b0h ; 3d b0 00 ; 0xff90e orgs.asm:1877 + jc short 0f91bh ; 72 08 ; 0xff911 orgs.asm:1878 + db 033h, 0d2h + ; xor dx, dx ; 33 d2 ; 0xff913 orgs.asm:1881 + db 033h, 0c0h + ; xor ax, ax ; 33 c0 ; 0xff915 orgs.asm:1882 + inc byte [word 00070h] ; fe 06 70 00 ; 0xff917 orgs.asm:1884 + jmp near 0fec1h ; e9 a3 05 ; 0xff91b orgs.asm:1886 + ; disGetNextSymbol 0xff91e LB 0x6e2 -> off=0x0 cb=0000000000000150 uValue=00000000000f191e 'biosorg_check_before_or_at_0FA6Ch' +biosorg_check_before_or_at_0FA6Ch: ; 0xff91e LB 0x150 + times 0x14e db 0 + db 'XM' + ; disGetNextSymbol 0xffa6e LB 0x592 -> off=0x0 cb=0000000000000400 uValue=00000000000f1a6e 'font8x8' +font8x8: ; 0xffa6e LB 0x400 + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 07eh, 081h, 0a5h, 081h, 0bdh, 099h, 081h, 07eh + db 07eh, 0ffh, 0dbh, 0ffh, 0c3h, 0e7h, 0ffh, 07eh, 06ch, 0feh, 0feh, 0feh, 07ch, 038h, 010h, 000h + db 010h, 038h, 07ch, 0feh, 07ch, 038h, 010h, 000h, 038h, 07ch, 038h, 0feh, 0feh, 07ch, 038h, 07ch + db 010h, 010h, 038h, 07ch, 0feh, 07ch, 038h, 07ch, 000h, 000h, 018h, 03ch, 03ch, 018h, 000h, 000h + db 0ffh, 0ffh, 0e7h, 0c3h, 0c3h, 0e7h, 0ffh, 0ffh, 000h, 03ch, 066h, 042h, 042h, 066h, 03ch, 000h + db 0ffh, 0c3h, 099h, 0bdh, 0bdh, 099h, 0c3h, 0ffh, 00fh, 007h, 00fh, 07dh, 0cch, 0cch, 0cch, 078h + db 03ch, 066h, 066h, 066h, 03ch, 018h, 07eh, 018h, 03fh, 033h, 03fh, 030h, 030h, 070h, 0f0h, 0e0h + db 07fh, 063h, 07fh, 063h, 063h, 067h, 0e6h, 0c0h, 099h, 05ah, 03ch, 0e7h, 0e7h, 03ch, 05ah, 099h + db 080h, 0e0h, 0f8h, 0feh, 0f8h, 0e0h, 080h, 000h, 002h, 00eh, 03eh, 0feh, 03eh, 00eh, 002h, 000h + db 018h, 03ch, 07eh, 018h, 018h, 07eh, 03ch, 018h, 066h, 066h, 066h, 066h, 066h, 000h, 066h, 000h + db 07fh, 0dbh, 0dbh, 07bh, 01bh, 01bh, 01bh, 000h, 03eh, 063h, 038h, 06ch, 06ch, 038h, 0cch, 078h + db 000h, 000h, 000h, 000h, 07eh, 07eh, 07eh, 000h, 018h, 03ch, 07eh, 018h, 07eh, 03ch, 018h, 0ffh + db 018h, 03ch, 07eh, 018h, 018h, 018h, 018h, 000h, 018h, 018h, 018h, 018h, 07eh, 03ch, 018h, 000h + db 000h, 018h, 00ch, 0feh, 00ch, 018h, 000h, 000h, 000h, 030h, 060h, 0feh, 060h, 030h, 000h, 000h + db 000h, 000h, 0c0h, 0c0h, 0c0h, 0feh, 000h, 000h, 000h, 024h, 066h, 0ffh, 066h, 024h, 000h, 000h + db 000h, 018h, 03ch, 07eh, 0ffh, 0ffh, 000h, 000h, 000h, 0ffh, 0ffh, 07eh, 03ch, 018h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 030h, 078h, 078h, 030h, 030h, 000h, 030h, 000h + db 06ch, 06ch, 06ch, 000h, 000h, 000h, 000h, 000h, 06ch, 06ch, 0feh, 06ch, 0feh, 06ch, 06ch, 000h + db 030h, 07ch, 0c0h, 078h, 00ch, 0f8h, 030h, 000h, 000h, 0c6h, 0cch, 018h, 030h, 066h, 0c6h, 000h + db 038h, 06ch, 038h, 076h, 0dch, 0cch, 076h, 000h, 060h, 060h, 0c0h, 000h, 000h, 000h, 000h, 000h + db 018h, 030h, 060h, 060h, 060h, 030h, 018h, 000h, 060h, 030h, 018h, 018h, 018h, 030h, 060h, 000h + db 000h, 066h, 03ch, 0ffh, 03ch, 066h, 000h, 000h, 000h, 030h, 030h, 0fch, 030h, 030h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 030h, 030h, 060h, 000h, 000h, 000h, 0fch, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 030h, 030h, 000h, 006h, 00ch, 018h, 030h, 060h, 0c0h, 080h, 000h + db 07ch, 0c6h, 0ceh, 0deh, 0f6h, 0e6h, 07ch, 000h, 030h, 070h, 030h, 030h, 030h, 030h, 0fch, 000h + db 078h, 0cch, 00ch, 038h, 060h, 0cch, 0fch, 000h, 078h, 0cch, 00ch, 038h, 00ch, 0cch, 078h, 000h + db 01ch, 03ch, 06ch, 0cch, 0feh, 00ch, 01eh, 000h, 0fch, 0c0h, 0f8h, 00ch, 00ch, 0cch, 078h, 000h + db 038h, 060h, 0c0h, 0f8h, 0cch, 0cch, 078h, 000h, 0fch, 0cch, 00ch, 018h, 030h, 030h, 030h, 000h + db 078h, 0cch, 0cch, 078h, 0cch, 0cch, 078h, 000h, 078h, 0cch, 0cch, 07ch, 00ch, 018h, 070h, 000h + db 000h, 030h, 030h, 000h, 000h, 030h, 030h, 000h, 000h, 030h, 030h, 000h, 000h, 030h, 030h, 060h + db 018h, 030h, 060h, 0c0h, 060h, 030h, 018h, 000h, 000h, 000h, 0fch, 000h, 000h, 0fch, 000h, 000h + db 060h, 030h, 018h, 00ch, 018h, 030h, 060h, 000h, 078h, 0cch, 00ch, 018h, 030h, 000h, 030h, 000h + db 07ch, 0c6h, 0deh, 0deh, 0deh, 0c0h, 078h, 000h, 030h, 078h, 0cch, 0cch, 0fch, 0cch, 0cch, 000h + db 0fch, 066h, 066h, 07ch, 066h, 066h, 0fch, 000h, 03ch, 066h, 0c0h, 0c0h, 0c0h, 066h, 03ch, 000h + db 0f8h, 06ch, 066h, 066h, 066h, 06ch, 0f8h, 000h, 0feh, 062h, 068h, 078h, 068h, 062h, 0feh, 000h + db 0feh, 062h, 068h, 078h, 068h, 060h, 0f0h, 000h, 03ch, 066h, 0c0h, 0c0h, 0ceh, 066h, 03eh, 000h + db 0cch, 0cch, 0cch, 0fch, 0cch, 0cch, 0cch, 000h, 078h, 030h, 030h, 030h, 030h, 030h, 078h, 000h + db 01eh, 00ch, 00ch, 00ch, 0cch, 0cch, 078h, 000h, 0e6h, 066h, 06ch, 078h, 06ch, 066h, 0e6h, 000h + db 0f0h, 060h, 060h, 060h, 062h, 066h, 0feh, 000h, 0c6h, 0eeh, 0feh, 0feh, 0d6h, 0c6h, 0c6h, 000h + db 0c6h, 0e6h, 0f6h, 0deh, 0ceh, 0c6h, 0c6h, 000h, 038h, 06ch, 0c6h, 0c6h, 0c6h, 06ch, 038h, 000h + db 0fch, 066h, 066h, 07ch, 060h, 060h, 0f0h, 000h, 078h, 0cch, 0cch, 0cch, 0dch, 078h, 01ch, 000h + db 0fch, 066h, 066h, 07ch, 06ch, 066h, 0e6h, 000h, 078h, 0cch, 0e0h, 070h, 01ch, 0cch, 078h, 000h + db 0fch, 0b4h, 030h, 030h, 030h, 030h, 078h, 000h, 0cch, 0cch, 0cch, 0cch, 0cch, 0cch, 0fch, 000h + db 0cch, 0cch, 0cch, 0cch, 0cch, 078h, 030h, 000h, 0c6h, 0c6h, 0c6h, 0d6h, 0feh, 0eeh, 0c6h, 000h + db 0c6h, 0c6h, 06ch, 038h, 038h, 06ch, 0c6h, 000h, 0cch, 0cch, 0cch, 078h, 030h, 030h, 078h, 000h + db 0feh, 0c6h, 08ch, 018h, 032h, 066h, 0feh, 000h, 078h, 060h, 060h, 060h, 060h, 060h, 078h, 000h + db 0c0h, 060h, 030h, 018h, 00ch, 006h, 002h, 000h, 078h, 018h, 018h, 018h, 018h, 018h, 078h, 000h + db 010h, 038h, 06ch, 0c6h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 0ffh + db 030h, 030h, 018h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 078h, 00ch, 07ch, 0cch, 076h, 000h + db 0e0h, 060h, 060h, 07ch, 066h, 066h, 0dch, 000h, 000h, 000h, 078h, 0cch, 0c0h, 0cch, 078h, 000h + db 01ch, 00ch, 00ch, 07ch, 0cch, 0cch, 076h, 000h, 000h, 000h, 078h, 0cch, 0fch, 0c0h, 078h, 000h + db 038h, 06ch, 060h, 0f0h, 060h, 060h, 0f0h, 000h, 000h, 000h, 076h, 0cch, 0cch, 07ch, 00ch, 0f8h + db 0e0h, 060h, 06ch, 076h, 066h, 066h, 0e6h, 000h, 030h, 000h, 070h, 030h, 030h, 030h, 078h, 000h + db 00ch, 000h, 00ch, 00ch, 00ch, 0cch, 0cch, 078h, 0e0h, 060h, 066h, 06ch, 078h, 06ch, 0e6h, 000h + db 070h, 030h, 030h, 030h, 030h, 030h, 078h, 000h, 000h, 000h, 0cch, 0feh, 0feh, 0d6h, 0c6h, 000h + db 000h, 000h, 0f8h, 0cch, 0cch, 0cch, 0cch, 000h, 000h, 000h, 078h, 0cch, 0cch, 0cch, 078h, 000h + db 000h, 000h, 0dch, 066h, 066h, 07ch, 060h, 0f0h, 000h, 000h, 076h, 0cch, 0cch, 07ch, 00ch, 01eh + db 000h, 000h, 0dch, 076h, 066h, 060h, 0f0h, 000h, 000h, 000h, 07ch, 0c0h, 078h, 00ch, 0f8h, 000h + db 010h, 030h, 07ch, 030h, 030h, 034h, 018h, 000h, 000h, 000h, 0cch, 0cch, 0cch, 0cch, 076h, 000h + db 000h, 000h, 0cch, 0cch, 0cch, 078h, 030h, 000h, 000h, 000h, 0c6h, 0d6h, 0feh, 0feh, 06ch, 000h + db 000h, 000h, 0c6h, 06ch, 038h, 06ch, 0c6h, 000h, 000h, 000h, 0cch, 0cch, 0cch, 07ch, 00ch, 0f8h + db 000h, 000h, 0fch, 098h, 030h, 064h, 0fch, 000h, 01ch, 030h, 030h, 0e0h, 030h, 030h, 01ch, 000h + db 018h, 018h, 018h, 000h, 018h, 018h, 018h, 000h, 0e0h, 030h, 030h, 01ch, 030h, 030h, 0e0h, 000h + db 076h, 0dch, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 010h, 038h, 06ch, 0c6h, 0c6h, 0feh, 000h + ; disGetNextSymbol 0xffe6e LB 0x192 -> off=0x0 cb=000000000000001b uValue=00000000000f1e6e 'biosorg_check_at_0FE6Eh' +biosorg_check_at_0FE6Eh: ; 0xffe6e LB 0x1b + push ES ; 06 ; 0xffe6e orgs.asm:1920 + push DS ; 1e ; 0xffe6f orgs.asm:1921 + push ax ; 50 ; 0xffe70 orgs.asm:99 + push cx ; 51 ; 0xffe71 orgs.asm:100 + push dx ; 52 ; 0xffe72 orgs.asm:101 + push bx ; 53 ; 0xffe73 orgs.asm:102 + push sp ; 54 ; 0xffe74 orgs.asm:103 + push bp ; 55 ; 0xffe75 orgs.asm:104 + push si ; 56 ; 0xffe76 orgs.asm:105 + push di ; 57 ; 0xffe77 orgs.asm:106 + push CS ; 0e ; 0xffe78 orgs.asm:104 + pop DS ; 1f ; 0xffe79 orgs.asm:105 + cld ; fc ; 0xffe7a orgs.asm:106 + call 06c67h ; e8 e9 6d ; 0xffe7b orgs.asm:1925 + pop di ; 5f ; 0xffe7e orgs.asm:116 + pop si ; 5e ; 0xffe7f orgs.asm:117 + pop bp ; 5d ; 0xffe80 orgs.asm:118 + pop bx ; 5b ; 0xffe81 orgs.asm:119 + pop bx ; 5b ; 0xffe82 orgs.asm:120 + pop dx ; 5a ; 0xffe83 orgs.asm:121 + pop cx ; 59 ; 0xffe84 orgs.asm:122 + pop ax ; 58 ; 0xffe85 orgs.asm:123 + pop DS ; 1f ; 0xffe86 orgs.asm:1927 + pop ES ; 07 ; 0xffe87 orgs.asm:1928 + iret ; cf ; 0xffe88 orgs.asm:1929 + ; disGetNextSymbol 0xffe89 LB 0x177 -> off=0x0 cb=000000000000001c uValue=00000000000f1e89 'biosorg_check_before_or_at_0FEA3h' +biosorg_check_before_or_at_0FEA3h: ; 0xffe89 LB 0x1c + times 0x1a db 0 + db 'XM' + ; disGetNextSymbol 0xffea5 LB 0x15b -> off=0x0 cb=0000000000000042 uValue=00000000000f1ea5 'int08_handler' +int08_handler: ; 0xffea5 LB 0x42 + sti ; fb ; 0xffea5 orgs.asm:1942 + push ax ; 50 ; 0xffea6 orgs.asm:1943 + push DS ; 1e ; 0xffea7 orgs.asm:1945 + push dx ; 52 ; 0xffea8 orgs.asm:1946 + mov ax, strict word 00040h ; b8 40 00 ; 0xffea9 orgs.asm:1947 + mov ds, ax ; 8e d8 ; 0xffeac orgs.asm:1948 + mov ax, word [0006ch] ; a1 6c 00 ; 0xffeae orgs.asm:1954 + mov dx, word [word 0006eh] ; 8b 16 6e 00 ; 0xffeb1 orgs.asm:1955 + inc ax ; 40 ; 0xffeb5 orgs.asm:1956 + jne short 0feb9h ; 75 01 ; 0xffeb6 orgs.asm:1957 + inc dx ; 42 ; 0xffeb8 orgs.asm:1958 + cmp dx, strict byte 00018h ; 83 fa 18 ; 0xffeb9 orgs.asm:1967 + jc short 0fec1h ; 72 03 ; 0xffebc orgs.asm:1968 + jmp near 0f90ch ; e9 4b fa ; 0xffebe orgs.asm:1969 + mov word [0006ch], ax ; a3 6c 00 ; 0xffec1 orgs.asm:1981 + mov word [word 0006eh], dx ; 89 16 6e 00 ; 0xffec4 orgs.asm:1982 + mov AL, byte [00040h] ; a0 40 00 ; 0xffec8 orgs.asm:1986 + db 00ah, 0c0h + ; or al, al ; 0a c0 ; 0xffecb orgs.asm:1987 + je short 0feddh ; 74 0e ; 0xffecd orgs.asm:1988 + db 0feh, 0c8h + ; dec al ; fe c8 ; 0xffecf orgs.asm:1989 + mov byte [00040h], AL ; a2 40 00 ; 0xffed1 orgs.asm:1990 + jne short 0feddh ; 75 07 ; 0xffed4 orgs.asm:1991 + mov dx, 003f2h ; ba f2 03 ; 0xffed6 orgs.asm:1993 + in AL, DX ; ec ; 0xffed9 orgs.asm:1994 + and AL, strict byte 0cfh ; 24 cf ; 0xffeda orgs.asm:1995 + out DX, AL ; ee ; 0xffedc orgs.asm:1996 + int 01ch ; cd 1c ; 0xffedd orgs.asm:1999 + cli ; fa ; 0xffedf orgs.asm:2001 + call 0e034h ; e8 51 e1 ; 0xffee0 orgs.asm:2002 + pop dx ; 5a ; 0xffee3 orgs.asm:2003 + pop DS ; 1f ; 0xffee4 orgs.asm:2004 + pop ax ; 58 ; 0xffee5 orgs.asm:2009 + iret ; cf ; 0xffee6 orgs.asm:2011 + ; disGetNextSymbol 0xffee7 LB 0x119 -> off=0x0 cb=000000000000000c uValue=00000000000f1ee7 'biosorg_check_before_or_at_0FEF1h' +biosorg_check_before_or_at_0FEF1h: ; 0xffee7 LB 0xc + times 0xa db 0 + db 'XM' + ; disGetNextSymbol 0xffef3 LB 0x10d -> off=0x0 cb=000000000000000d uValue=00000000000f1ef3 'biosorg_check_at_0FEF3h' +biosorg_check_at_0FEF3h: ; 0xffef3 LB 0xd + times 0xb db 0 + db 'XM' + ; disGetNextSymbol 0xfff00 LB 0x100 -> off=0x0 cb=0000000000000019 uValue=00000000000f1f00 'biosorg_check_at_0FF00h' +biosorg_check_at_0FF00h: ; 0xfff00 LB 0x19 + dec di ; 4f ; 0xfff00 + jc short 0ff64h ; 72 61 ; 0xfff01 + arpl [si+065h], bp ; 63 6c 65 ; 0xfff03 + and byte [bp+04dh], dl ; 20 56 4d ; 0xfff06 + and byte [bp+069h], dl ; 20 56 69 ; 0xfff09 + jc short 0ff82h ; 72 74 ; 0xfff0c + jne short 0ff71h ; 75 61 ; 0xfff0e + insb ; 6c ; 0xfff10 + inc dx ; 42 ; 0xfff11 + outsw ; 6f ; 0xfff12 + js short 0ff35h ; 78 20 ; 0xfff13 + inc dx ; 42 ; 0xfff15 + dec cx ; 49 ; 0xfff16 + dec di ; 4f ; 0xfff17 + push bx ; 53 ; 0xfff18 + ; disGetNextSymbol 0xfff19 LB 0xe7 -> off=0x0 cb=000000000000003a uValue=00000000000f1f19 'biosorg_check_before_or_at_0FF51h' +biosorg_check_before_or_at_0FF51h: ; 0xfff19 LB 0x3a + times 0x38 db 0 + db 'XM' + ; disGetNextSymbol 0xfff53 LB 0xad -> off=0x0 cb=0000000000000001 uValue=00000000000f1f53 'dummy_iret' +dummy_iret: ; 0xfff53 LB 0x1 + iret ; cf ; 0xfff53 orgs.asm:2036 + ; disGetNextSymbol 0xfff54 LB 0xac -> off=0x0 cb=000000000000002c uValue=00000000000f1f54 'biosorg_check_at_0FF54h' +biosorg_check_at_0FF54h: ; 0xfff54 LB 0x2c + iret ; cf ; 0xfff54 orgs.asm:2045 + mov ax, ax ; 89 c0 ; 0xfff55 + mov ax, ax ; 89 c0 ; 0xfff57 + mov ax, ax ; 89 c0 ; 0xfff59 + mov ax, ax ; 89 c0 ; 0xfff5b + mov ax, ax ; 89 c0 ; 0xfff5d + cld ; fc ; 0xfff5f + pop di ; 5f ; 0xfff60 + push bx ; 53 ; 0xfff61 + dec bp ; 4d ; 0xfff62 + pop di ; 5f ; 0xfff63 + jnl short 0ff85h ; 7d 1f ; 0xfff64 + add al, byte [di] ; 02 05 ; 0xfff66 + inc word [bx+si] ; ff 00 ; 0xfff68 + add byte [bx+si], al ; 00 00 ; 0xfff6a + add byte [bx+si], al ; 00 00 ; 0xfff6c + add byte [bx+si], al ; 00 00 ; 0xfff6e + pop di ; 5f ; 0xfff70 + inc sp ; 44 ; 0xfff71 + dec bp ; 4d ; 0xfff72 + dec cx ; 49 ; 0xfff73 + pop di ; 5f ; 0xfff74 + and ax, strict word 00000h ; 25 00 00 ; 0xfff75 + add byte [bx+si], dl ; 00 10 ; 0xfff78 + push CS ; 0e ; 0xfff7a + add byte [bx+si], al ; 00 00 ; 0xfff7b + add byte [di], ah ; 00 25 ; 0xfff7d + times 0x1 db 0 + ; disGetNextSymbol 0xfff80 LB 0x80 -> off=0x0 cb=0000000000000070 uValue=00000000000f1f80 'biosorg_check_before_or_at_0FFEEh' +biosorg_check_before_or_at_0FFEEh: ; 0xfff80 LB 0x70 + times 0x6e db 0 + db 'XM' + ; disGetNextSymbol 0xffff0 LB 0x10 -> off=0x0 cb=0000000000000010 uValue=00000000000f1ff0 'cpu_reset' +cpu_reset: ; 0xffff0 LB 0x10 + jmp far 0f000h:0e05bh ; ea 5b e0 00 f0 ; 0xffff0 orgs.asm:2055 + ; disGetNextSymbol 0xffff5 LB 0xb -> off=0xb cb=0000000000000000 uValue=0000000000100000 '_dummy_addr_0x100000' + db 030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fbh, 0d1h diff --git a/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative8086.md5sum b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative8086.md5sum new file mode 100644 index 00000000..9c061b45 --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative8086.md5sum @@ -0,0 +1 @@ +2a6d3641685368af1d50214fda8e7ba0 *VBoxPcBios8086.rom diff --git a/src/VBox/Devices/PC/BIOS/ahci.c b/src/VBox/Devices/PC/BIOS/ahci.c new file mode 100644 index 00000000..f198e894 --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/ahci.c @@ -0,0 +1,1047 @@ +/* $Id: ahci.c $ */ +/** @file + * AHCI host adapter driver to boot from SATA disks. + */ + +/* + * Copyright (C) 2011-2019 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + */ + +#include <stdint.h> +#include <string.h> +#include "biosint.h" +#include "ebda.h" +#include "inlines.h" +#include "pciutil.h" +#include "vds.h" + +#if DEBUG_AHCI +# define DBG_AHCI(...) BX_INFO(__VA_ARGS__) +#else +# define DBG_AHCI(...) +#endif + +/* Number of S/G table entries in EDDS. */ +#define NUM_EDDS_SG 16 + + +/** + * AHCI PRDT structure. + */ +typedef struct +{ + uint32_t phys_addr; + uint32_t something; + uint32_t reserved; + uint32_t len; +} ahci_prdt; + +/** + * SATA D2H FIS (Device to Host Frame Information Structure). + */ +typedef struct { + uint8_t fis_type; /* 34h */ + uint8_t intr; /* Bit 6 indicates interrupt status. */ + uint8_t status; /* Status register. */ + uint8_t error; /* Error register. */ + uint8_t sec_no; /* Sector number register. */ + uint8_t cyl_lo; /* Cylinder low register. */ + uint8_t cyl_hi; /* Cylinder high register. */ + uint8_t dev_hd; /* Device/head register. */ + uint8_t sec_no_exp; /* Expanded sector number register. */ + uint8_t cyl_lo_exp; /* Expanded cylinder low register. */ + uint8_t cyl_hi_exp; /* Expanded cylinder high register. */ + uint8_t resvd0; + uint8_t sec_cn; /* Sector count register. */ + uint8_t sec_cn_exp; /* Expanded sector count register. */ + uint16_t resvd1; + uint32_t resvd2; +} fis_d2h; + +ct_assert(sizeof(fis_d2h) == 20); + +/** + * AHCI controller data. + */ +typedef struct +{ + /** The AHCI command list as defined by chapter 4.2.2 of the Intel AHCI spec. + * Because the BIOS doesn't support NCQ only the first command header is defined + * to save memory. - Must be aligned on a 1K boundary. + */ + uint32_t aCmdHdr[0x8]; + /** Align the next structure on a 128 byte boundary. */ + uint8_t abAlignment1[0x60]; + /** The command table of one request as defined by chapter 4.2.3 of the Intel AHCI spec. + * Must be aligned on 128 byte boundary. + */ + uint8_t abCmd[0x40]; + /** The ATAPI command region. + * Located 40h bytes after the beginning of the CFIS (Command FIS). + */ + uint8_t abAcmd[0x20]; + /** Align the PRDT structure on a 128 byte boundary. */ + uint8_t abAlignment2[0x20]; + /** Physical Region Descriptor Table (PRDT) array. In other + * words, a scatter/gather descriptor list. + */ + ahci_prdt aPrdt[16]; + /** Memory for the received command FIS area as specified by chapter 4.2.1 + * of the Intel AHCI spec. This area is normally 256 bytes big but to save memory + * only the first 96 bytes are used because it is assumed that the controller + * never writes to the UFIS or reserved area. - Must be aligned on a 256byte boundary. + */ + uint8_t abFisRecv[0x60]; + /** Base I/O port for the index/data register pair. */ + uint16_t iobase; + /** Current port which uses the memory to communicate with the controller. */ + uint8_t cur_port; + /** Current PRD index (for pre/post skip). */ + uint8_t cur_prd; + /** Physical address of the sink buffer (for pre/post skip). */ + uint32_t sink_buf_phys; + /** Saved high bits of EAX. */ + uint16_t saved_eax_hi; + /** VDS EDDS DMA buffer descriptor structure. */ + vds_edds edds; + vds_sg edds_more_sg[NUM_EDDS_SG - 1]; +} ahci_t; + +/* The AHCI specific data must fit into 1KB (statically allocated). */ +ct_assert(sizeof(ahci_t) <= 1024); + +/** PCI configuration fields. */ +#define PCI_CONFIG_CAP 0x34 + +#define PCI_CAP_ID_SATACR 0x12 +#define VBOX_AHCI_NO_DEVICE 0xffff + +#define RT_BIT_32(bit) ((uint32_t)(1L << (bit))) + +/** Global register set. */ +#define AHCI_HBA_SIZE 0x100 + +/// @todo what are the casts good for? +#define AHCI_REG_CAP ((uint32_t)0x00) +#define AHCI_REG_GHC ((uint32_t)0x04) +# define AHCI_GHC_AE RT_BIT_32(31) +# define AHCI_GHC_IR RT_BIT_32(1) +# define AHCI_GHC_HR RT_BIT_32(0) +#define AHCI_REG_IS ((uint32_t)0x08) +#define AHCI_REG_PI ((uint32_t)0x0c) +#define AHCI_REG_VS ((uint32_t)0x10) + +/** Per port register set. */ +#define AHCI_PORT_SIZE 0x80 + +#define AHCI_REG_PORT_CLB 0x00 +#define AHCI_REG_PORT_CLBU 0x04 +#define AHCI_REG_PORT_FB 0x08 +#define AHCI_REG_PORT_FBU 0x0c +#define AHCI_REG_PORT_IS 0x10 +# define AHCI_REG_PORT_IS_DHRS RT_BIT_32(0) +# define AHCI_REG_PORT_IS_TFES RT_BIT_32(30) +#define AHCI_REG_PORT_IE 0x14 +#define AHCI_REG_PORT_CMD 0x18 +# define AHCI_REG_PORT_CMD_ST RT_BIT_32(0) +# define AHCI_REG_PORT_CMD_FRE RT_BIT_32(4) +# define AHCI_REG_PORT_CMD_FR RT_BIT_32(14) +# define AHCI_REG_PORT_CMD_CR RT_BIT_32(15) +#define AHCI_REG_PORT_TFD 0x20 +#define AHCI_REG_PORT_SIG 0x24 +#define AHCI_REG_PORT_SSTS 0x28 +#define AHCI_REG_PORT_SCTL 0x2c +#define AHCI_REG_PORT_SERR 0x30 +#define AHCI_REG_PORT_SACT 0x34 +#define AHCI_REG_PORT_CI 0x38 + +/** Returns the absolute register offset from a given port and port register. */ +#define AHCI_PORT_REG(port, reg) (AHCI_HBA_SIZE + (port) * AHCI_PORT_SIZE + (reg)) + +#define AHCI_REG_IDX 0 +#define AHCI_REG_DATA 4 + +/** Writes the given value to a AHCI register. */ +#define AHCI_WRITE_REG(iobase, reg, val) \ + outpd((iobase) + AHCI_REG_IDX, reg); \ + outpd((iobase) + AHCI_REG_DATA, val) + +/** Reads from a AHCI register. */ +#define AHCI_READ_REG(iobase, reg, val) \ + outpd((iobase) + AHCI_REG_IDX, reg); \ + (val) = inpd((iobase) + AHCI_REG_DATA) + +/** Writes to the given port register. */ +#define VBOXAHCI_PORT_WRITE_REG(iobase, port, reg, val) \ + AHCI_WRITE_REG((iobase), AHCI_PORT_REG((port), (reg)), val) + +/** Reads from the given port register. */ +#define VBOXAHCI_PORT_READ_REG(iobase, port, reg, val) \ + AHCI_READ_REG((iobase), AHCI_PORT_REG((port), (reg)), val) + +#define ATA_CMD_IDENTIFY_DEVICE 0xEC +#define ATA_CMD_IDENTIFY_PACKET 0xA1 +#define ATA_CMD_PACKET 0xA0 +#define AHCI_CMD_READ_DMA_EXT 0x25 +#define AHCI_CMD_WRITE_DMA_EXT 0x35 + + +/* Warning: Destroys high bits of EAX. */ +uint32_t inpd(uint16_t port); +#pragma aux inpd = \ + ".386" \ + "in eax, dx" \ + "mov dx, ax" \ + "shr eax, 16" \ + "xchg ax, dx" \ + parm [dx] value [dx ax] modify nomemory; + +/* Warning: Destroys high bits of EAX. */ +void outpd(uint16_t port, uint32_t val); +#pragma aux outpd = \ + ".386" \ + "xchg ax, cx" \ + "shl eax, 16" \ + "mov ax, cx" \ + "out dx, eax" \ + parm [dx] [cx ax] modify nomemory; + + +/* Machinery to save/restore high bits of EAX. 32-bit port I/O needs to use + * EAX, but saving/restoring EAX around each port access would be inefficient. + * Instead, each externally callable routine must save the high bits before + * modifying them and restore the high bits before exiting. + */ + +/* Note: Reading high EAX bits destroys them - *must* be restored later. */ +uint16_t eax_hi_rd(void); +#pragma aux eax_hi_rd = \ + ".386" \ + "shr eax, 16" \ + value [ax] modify nomemory; + +void eax_hi_wr(uint16_t); +#pragma aux eax_hi_wr = \ + ".386" \ + "shl eax, 16" \ + parm [ax] modify nomemory; + +void inline high_bits_save(ahci_t __far *ahci) +{ + ahci->saved_eax_hi = eax_hi_rd(); +} + +void inline high_bits_restore(ahci_t __far *ahci) +{ + eax_hi_wr(ahci->saved_eax_hi); +} + +/** + * Sets a given set of bits in a register. + */ +static void inline ahci_ctrl_set_bits(uint16_t iobase, uint16_t reg, uint32_t mask) +{ + outpd(iobase + AHCI_REG_IDX, reg); + outpd(iobase + AHCI_REG_DATA, inpd(iobase + AHCI_REG_DATA) | mask); +} + +/** + * Clears a given set of bits in a register. + */ +static void inline ahci_ctrl_clear_bits(uint16_t iobase, uint16_t reg, uint32_t mask) +{ + outpd(iobase + AHCI_REG_IDX, reg); + outpd(iobase + AHCI_REG_DATA, inpd(iobase + AHCI_REG_DATA) & ~mask); +} + +/** + * Returns whether at least one of the bits in the given mask is set + * for a register. + */ +static uint8_t inline ahci_ctrl_is_bit_set(uint16_t iobase, uint16_t reg, uint32_t mask) +{ + outpd(iobase + AHCI_REG_IDX, reg); + return (inpd(iobase + AHCI_REG_DATA) & mask) != 0; +} + +/** + * Extracts a range of bits from a register and shifts them + * to the right. + */ +static uint16_t ahci_ctrl_extract_bits(uint32_t val, uint32_t mask, uint8_t shift) +{ + return (val & mask) >> shift; +} + +/** + * Converts a segment:offset pair into a 32bit physical address. + */ +static uint32_t ahci_addr_to_phys(void __far *ptr) +{ + return ((uint32_t)FP_SEG(ptr) << 4) + FP_OFF(ptr); +} + +/** + * Issues a command to the SATA controller and waits for completion. + */ +static void ahci_port_cmd_sync(ahci_t __far *ahci, uint8_t val) +{ + uint16_t io_base; + uint8_t port; + + port = ahci->cur_port; + io_base = ahci->iobase; + + if (port != 0xff) + { + /* Prepare the command header. */ + ahci->aCmdHdr[0] = ((uint32_t)ahci->cur_prd << 16) | RT_BIT_32(7) | val; + ahci->aCmdHdr[1] = 0; + ahci->aCmdHdr[2] = ahci_addr_to_phys(&ahci->abCmd[0]); + + /* Enable Command and FIS receive engine. */ + ahci_ctrl_set_bits(io_base, AHCI_PORT_REG(port, AHCI_REG_PORT_CMD), + AHCI_REG_PORT_CMD_FRE | AHCI_REG_PORT_CMD_ST); + + /* Queue command. */ + VBOXAHCI_PORT_WRITE_REG(io_base, port, AHCI_REG_PORT_CI, 0x1); + + /* Wait for a D2H FIS. */ + DBG_AHCI("AHCI: Waiting for D2H FIS\n"); + while (ahci_ctrl_is_bit_set(io_base, AHCI_PORT_REG(port, AHCI_REG_PORT_IS), + AHCI_REG_PORT_IS_DHRS | AHCI_REG_PORT_IS_TFES) == 0) + { + // This is where we'd need some kind of a yield functionality... + } + + ahci_ctrl_set_bits(io_base, AHCI_PORT_REG(port, AHCI_REG_PORT_IS), + AHCI_REG_PORT_IS_DHRS); /* Acknowledge received D2H FIS. */ + + /* Disable command engine. */ + ahci_ctrl_clear_bits(io_base, AHCI_PORT_REG(port, AHCI_REG_PORT_CMD), + AHCI_REG_PORT_CMD_ST); + /* Caller must examine status. */ + } + else + DBG_AHCI("AHCI: Invalid port given\n"); +} + +/** + * Issue command to device. + */ +static uint16_t ahci_cmd_data(bio_dsk_t __far *bios_dsk, uint8_t cmd) +{ + ahci_t __far *ahci = bios_dsk->ahci_seg :> 0; + uint16_t n_sect = bios_dsk->drqp.nsect; + uint16_t sectsz = bios_dsk->drqp.sect_sz; + fis_d2h __far *d2h; + + _fmemset(&ahci->abCmd[0], 0, sizeof(ahci->abCmd)); + + /* Prepare the FIS. */ + ahci->abCmd[0] = 0x27; /* FIS type H2D. */ + ahci->abCmd[1] = 1 << 7; /* Command update. */ + ahci->abCmd[2] = cmd; + ahci->abCmd[3] = 0; + + ahci->abCmd[4] = bios_dsk->drqp.lba & 0xff; + ahci->abCmd[5] = (bios_dsk->drqp.lba >> 8) & 0xff; + ahci->abCmd[6] = (bios_dsk->drqp.lba >> 16) & 0xff; + ahci->abCmd[7] = RT_BIT_32(6); /* LBA access. */ + + ahci->abCmd[8] = (bios_dsk->drqp.lba >> 24) & 0xff; + ahci->abCmd[9] = (bios_dsk->drqp.lba >> 32) & 0xff; + ahci->abCmd[10] = (bios_dsk->drqp.lba >> 40) & 0xff; + ahci->abCmd[11] = 0; + + ahci->abCmd[12] = (uint8_t)(n_sect & 0xff); + ahci->abCmd[13] = (uint8_t)((n_sect >> 8) & 0xff); + + /* Lock memory needed for DMA. */ + ahci->edds.num_avail = NUM_EDDS_SG; + DBG_AHCI("AHCI: S/G list for %lu bytes (skip %u)\n", + (uint32_t)n_sect * sectsz, bios_dsk->drqp.skip_a); + vds_build_sg_list(&ahci->edds, bios_dsk->drqp.buffer, (uint32_t)n_sect * sectsz); + + /* Set up the PRDT. */ + ahci->aPrdt[ahci->cur_prd].len = ahci->edds.u.sg[0].size - 1; + ahci->aPrdt[ahci->cur_prd].phys_addr = ahci->edds.u.sg[0].phys_addr; + ++ahci->cur_prd; + + if (bios_dsk->drqp.skip_a) { + ahci->aPrdt[ahci->cur_prd].len = bios_dsk->drqp.skip_a - 1; + ahci->aPrdt[ahci->cur_prd].phys_addr = ahci->sink_buf_phys; + ++ahci->cur_prd; + } + +#if DEBUG_AHCI + { + uint16_t prdt_idx; + + for (prdt_idx = 0; prdt_idx < ahci->cur_prd; ++prdt_idx) { + DBG_AHCI("S/G entry %u: %5lu bytes @ %08lX\n", prdt_idx, + ahci->aPrdt[prdt_idx].len + 1, ahci->aPrdt[prdt_idx].phys_addr); + } + } +#endif + + /* Build variable part of first command DWORD (reuses 'cmd'). */ + if (cmd == AHCI_CMD_WRITE_DMA_EXT) + cmd = RT_BIT_32(6); /* Indicate a write to device. */ + else if (cmd == ATA_CMD_PACKET) { + cmd |= RT_BIT_32(5); /* Indicate ATAPI command. */ + ahci->abCmd[3] |= 1; /* DMA transfers. */ + } else + cmd = 0; + + cmd |= 5; /* Five DWORDs. */ + + ahci_port_cmd_sync(ahci, cmd); + + /* Examine operation status. */ + d2h = (void __far *)&ahci->abFisRecv[0x40]; + DBG_AHCI("AHCI: ERR=%02x, STAT=%02x, SCNT=%02x\n", d2h->error, d2h->status, d2h->sec_cn); + + /* Unlock the buffer again. */ + vds_free_sg_list(&ahci->edds); + return d2h->error ? 4 : 0; +} + +/** + * Deinits the curent active port. + */ +static void ahci_port_deinit_current(ahci_t __far *ahci) +{ + uint16_t io_base; + uint8_t port; + + io_base = ahci->iobase; + port = ahci->cur_port; + + if (port != 0xff) + { + /* Put the port into an idle state. */ + ahci_ctrl_clear_bits(io_base, AHCI_PORT_REG(port, AHCI_REG_PORT_CMD), + AHCI_REG_PORT_CMD_FRE | AHCI_REG_PORT_CMD_ST); + + while (ahci_ctrl_is_bit_set(io_base, AHCI_PORT_REG(port, AHCI_REG_PORT_CMD), + AHCI_REG_PORT_CMD_FRE | AHCI_REG_PORT_CMD_ST | AHCI_REG_PORT_CMD_FR | AHCI_REG_PORT_CMD_CR) == 1) + { + DBG_AHCI("AHCI: Waiting for the port to idle\n"); + } + + /* + * Port idles, set up memory for commands and received FIS and program the + * address registers. + */ + /// @todo merge memsets? + _fmemset(&ahci->aCmdHdr[0], 0, sizeof(ahci->aCmdHdr)); + _fmemset(&ahci->abCmd[0], 0, sizeof(ahci->abCmd)); + _fmemset(&ahci->abFisRecv[0], 0, sizeof(ahci->abFisRecv)); + + VBOXAHCI_PORT_WRITE_REG(io_base, port, AHCI_REG_PORT_FB, 0); + VBOXAHCI_PORT_WRITE_REG(io_base, port, AHCI_REG_PORT_FBU, 0); + + VBOXAHCI_PORT_WRITE_REG(io_base, port, AHCI_REG_PORT_CLB, 0); + VBOXAHCI_PORT_WRITE_REG(io_base, port, AHCI_REG_PORT_CLBU, 0); + + /* Disable all interrupts. */ + VBOXAHCI_PORT_WRITE_REG(io_base, port, AHCI_REG_PORT_IE, 0); + + ahci->cur_port = 0xff; + } +} + +/** + * Brings a port into a minimal state to make device detection possible + * or to queue requests. + */ +static void ahci_port_init(ahci_t __far *ahci, uint8_t u8Port) +{ + /* Deinit any other port first. */ + ahci_port_deinit_current(ahci); + + /* Put the port into an idle state. */ + ahci_ctrl_clear_bits(ahci->iobase, AHCI_PORT_REG(u8Port, AHCI_REG_PORT_CMD), + AHCI_REG_PORT_CMD_FRE | AHCI_REG_PORT_CMD_ST); + + while (ahci_ctrl_is_bit_set(ahci->iobase, AHCI_PORT_REG(u8Port, AHCI_REG_PORT_CMD), + AHCI_REG_PORT_CMD_FRE | AHCI_REG_PORT_CMD_ST | AHCI_REG_PORT_CMD_FR | AHCI_REG_PORT_CMD_CR) == 1) + { + DBG_AHCI("AHCI: Waiting for the port to idle\n"); + } + + /* + * Port idles, set up memory for commands and received FIS and program the + * address registers. + */ + /// @todo just one memset? + _fmemset(&ahci->aCmdHdr[0], 0, sizeof(ahci->aCmdHdr)); + _fmemset(&ahci->abCmd[0], 0, sizeof(ahci->abCmd)); + _fmemset(&ahci->abFisRecv[0], 0, sizeof(ahci->abFisRecv)); + + DBG_AHCI("AHCI: FIS receive area %lx from %x:%x\n", + ahci_addr_to_phys(&ahci->abFisRecv), FP_SEG(ahci->abFisRecv), FP_OFF(ahci->abFisRecv)); + VBOXAHCI_PORT_WRITE_REG(ahci->iobase, u8Port, AHCI_REG_PORT_FB, ahci_addr_to_phys(&ahci->abFisRecv)); + VBOXAHCI_PORT_WRITE_REG(ahci->iobase, u8Port, AHCI_REG_PORT_FBU, 0); + + DBG_AHCI("AHCI: CMD list area %lx\n", ahci_addr_to_phys(&ahci->aCmdHdr)); + VBOXAHCI_PORT_WRITE_REG(ahci->iobase, u8Port, AHCI_REG_PORT_CLB, ahci_addr_to_phys(&ahci->aCmdHdr)); + VBOXAHCI_PORT_WRITE_REG(ahci->iobase, u8Port, AHCI_REG_PORT_CLBU, 0); + + /* Disable all interrupts. */ + VBOXAHCI_PORT_WRITE_REG(ahci->iobase, u8Port, AHCI_REG_PORT_IE, 0); + VBOXAHCI_PORT_WRITE_REG(ahci->iobase, u8Port, AHCI_REG_PORT_IS, 0xffffffff); + /* Clear all errors. */ + VBOXAHCI_PORT_WRITE_REG(ahci->iobase, u8Port, AHCI_REG_PORT_SERR, 0xffffffff); + + ahci->cur_port = u8Port; + ahci->cur_prd = 0; +} + +/** + * Read sectors from an attached AHCI device. + * + * @returns status code. + * @param bios_dsk Pointer to disk request packet (in the + * EBDA). + */ +int ahci_read_sectors(bio_dsk_t __far *bios_dsk) +{ + uint16_t device_id; + uint16_t rc; + + device_id = VBOX_GET_AHCI_DEVICE(bios_dsk->drqp.dev_id); + if (device_id > BX_MAX_AHCI_DEVICES) + BX_PANIC("%s: device_id out of range %d\n", __func__, device_id); + + DBG_AHCI("%s: %u sectors @ LBA 0x%llx, device %d, port %d\n", __func__, + bios_dsk->drqp.nsect, bios_dsk->drqp.lba, + device_id, bios_dsk->ahcidev[device_id].port); + + high_bits_save(bios_dsk->ahci_seg :> 0); + ahci_port_init(bios_dsk->ahci_seg :> 0, bios_dsk->ahcidev[device_id].port); + rc = ahci_cmd_data(bios_dsk, AHCI_CMD_READ_DMA_EXT); + DBG_AHCI("%s: transferred %lu bytes\n", __func__, ((ahci_t __far *)(bios_dsk->ahci_seg :> 0))->aCmdHdr[1]); + bios_dsk->drqp.trsfsectors = bios_dsk->drqp.nsect; +#ifdef DMA_WORKAROUND + rep_movsw(bios_dsk->drqp.buffer, bios_dsk->drqp.buffer, bios_dsk->drqp.nsect * 512 / 2); +#endif + high_bits_restore(bios_dsk->ahci_seg :> 0); + return rc; +} + +/** + * Write sectors to an attached AHCI device. + * + * @returns status code. + * @param bios_dsk Pointer to disk request packet (in the + * EBDA). + */ +int ahci_write_sectors(bio_dsk_t __far *bios_dsk) +{ + uint16_t device_id; + uint16_t rc; + + device_id = VBOX_GET_AHCI_DEVICE(bios_dsk->drqp.dev_id); + if (device_id > BX_MAX_AHCI_DEVICES) + BX_PANIC("%s: device_id out of range %d\n", __func__, device_id); + + DBG_AHCI("%s: %u sectors @ LBA 0x%llx, device %d, port %d\n", __func__, + bios_dsk->drqp.nsect, bios_dsk->drqp.lba, device_id, + bios_dsk->ahcidev[device_id].port); + + high_bits_save(bios_dsk->ahci_seg :> 0); + ahci_port_init(bios_dsk->ahci_seg :> 0, bios_dsk->ahcidev[device_id].port); + rc = ahci_cmd_data(bios_dsk, AHCI_CMD_WRITE_DMA_EXT); + DBG_AHCI("%s: transferred %lu bytes\n", __func__, ((ahci_t __far *)(bios_dsk->ahci_seg :> 0))->aCmdHdr[1]); + bios_dsk->drqp.trsfsectors = bios_dsk->drqp.nsect; + high_bits_restore(bios_dsk->ahci_seg :> 0); + return rc; +} + +/// @todo move +#define ATA_DATA_NO 0x00 +#define ATA_DATA_IN 0x01 +#define ATA_DATA_OUT 0x02 + +uint16_t ahci_cmd_packet(uint16_t device_id, uint8_t cmdlen, char __far *cmdbuf, + uint16_t skip_b, uint32_t length, uint8_t inout, char __far *buffer) +{ + bio_dsk_t __far *bios_dsk = read_word(0x0040, 0x000E) :> &EbdaData->bdisk; + ahci_t __far *ahci; + + /* Data out is currently not supported. */ + if (inout == ATA_DATA_OUT) { + BX_INFO("%s: DATA_OUT not supported yet\n", __func__); + return 1; + } + + /* The skip length must be even. */ + if (skip_b & 1) { + DBG_AHCI("%s: skip must be even (%04x)\n", __func__, skip_b); + return 1; + } + + /* Convert to AHCI specific device number. */ + device_id = VBOX_GET_AHCI_DEVICE(device_id); + + DBG_AHCI("%s: reading %lu bytes, skip %u/%u, device %d, port %d\n", __func__, + length, bios_dsk->drqp.skip_b, bios_dsk->drqp.skip_a, + device_id, bios_dsk->ahcidev[device_id].port); + DBG_AHCI("%s: reading %u %u-byte sectors\n", __func__, + bios_dsk->drqp.nsect, bios_dsk->drqp.sect_sz); + + bios_dsk->drqp.lba = length << 8; /// @todo xfer length limit + bios_dsk->drqp.buffer = buffer; + bios_dsk->drqp.nsect = length / bios_dsk->drqp.sect_sz; +// bios_dsk->drqp.sect_sz = 2048; + + ahci = bios_dsk->ahci_seg :> 0; + high_bits_save(ahci); + + ahci_port_init(bios_dsk->ahci_seg :> 0, bios_dsk->ahcidev[device_id].port); + + /* Copy the ATAPI command where the HBA can fetch it. */ + _fmemcpy(ahci->abAcmd, cmdbuf, cmdlen); + + /* Reset transferred counts. */ + /// @todo clear in calling code? + bios_dsk->drqp.trsfsectors = 0; + bios_dsk->drqp.trsfbytes = 0; + + /* Set up a PRD entry to throw away the beginning of the transfer. */ + if (bios_dsk->drqp.skip_b) { + ahci->aPrdt[0].len = bios_dsk->drqp.skip_b - 1; + ahci->aPrdt[0].phys_addr = ahci->sink_buf_phys; + ahci->cur_prd++; + } + + ahci_cmd_data(bios_dsk, ATA_CMD_PACKET); + DBG_AHCI("%s: transferred %lu bytes\n", __func__, ahci->aCmdHdr[1]); + bios_dsk->drqp.trsfbytes = ahci->aCmdHdr[1]; +#ifdef DMA_WORKAROUND + rep_movsw(bios_dsk->drqp.buffer, bios_dsk->drqp.buffer, bios_dsk->drqp.trsfbytes / 2); +#endif + high_bits_restore(ahci); + + return ahci->aCmdHdr[1] == 0 ? 4 : 0; +} + +/* Wait for the specified number of BIOS timer ticks or data bytes. */ +void wait_ticks_device_init( unsigned wait_ticks, unsigned wait_bytes ) +{ +} + +void ahci_port_detect_device(ahci_t __far *ahci, uint8_t u8Port) +{ + uint32_t val; + bio_dsk_t __far *bios_dsk; + volatile uint32_t __far *ticks; + uint32_t end_tick; + int device_found = 0; + + ahci_port_init(ahci, u8Port); + + bios_dsk = read_word(0x0040, 0x000E) :> &EbdaData->bdisk; + + /* Reset connection. */ + VBOXAHCI_PORT_WRITE_REG(ahci->iobase, u8Port, AHCI_REG_PORT_SCTL, 0x01); + /* + * According to the spec we should wait at least 1msec until the reset + * is cleared but this is a virtual controller so we don't have to. + */ + VBOXAHCI_PORT_WRITE_REG(ahci->iobase, u8Port, AHCI_REG_PORT_SCTL, 0); + + /* + * We do however have to wait for the device to initialize (the port reset + * to complete). That can take up to 10ms according to the SATA spec (device + * must send COMINIT within 10ms of COMRESET). We should be generous with + * the wait because in the typical case there are no ports without a device + * attached. + */ + ticks = MK_FP( 0x40, 0x6C ); + end_tick = *ticks + 3; /* Wait up to five BIOS ticks, something in 150ms range. */ + + while( *ticks < end_tick ) + { + /* If PxSSTS.DET is 3, everything went fine. */ + VBOXAHCI_PORT_READ_REG(ahci->iobase, u8Port, AHCI_REG_PORT_SSTS, val); + if (ahci_ctrl_extract_bits(val, 0xfL, 0) == 3) { + device_found = 1; + break; + } + } + + /* Timed out, no device detected. */ + if (!device_found) { + DBG_AHCI("AHCI: Timed out, no device detected on port %d\n", u8Port); + return; + } + + if (ahci_ctrl_extract_bits(val, 0xfL, 0) == 0x3) + { + uint8_t abBuffer[0x0200]; + uint8_t hdcount, devcount_ahci, hd_index; + uint8_t cdcount; + uint8_t removable; + + /* Clear all errors after the reset. */ + VBOXAHCI_PORT_WRITE_REG(ahci->iobase, u8Port, AHCI_REG_PORT_SERR, 0xffffffff); + + devcount_ahci = bios_dsk->ahci_devcnt; + + DBG_AHCI("AHCI: Device detected on port %d\n", u8Port); + + /// @todo Merge common HD/CDROM detection code + if (devcount_ahci < BX_MAX_AHCI_DEVICES) + { + /* Device detected, enable FIS receive. */ + ahci_ctrl_set_bits(ahci->iobase, AHCI_PORT_REG(u8Port, AHCI_REG_PORT_CMD), + AHCI_REG_PORT_CMD_FRE); + + /* Check signature to determine device type. */ + VBOXAHCI_PORT_READ_REG(ahci->iobase, u8Port, AHCI_REG_PORT_SIG, val); + if (val == 0x101) + { + uint64_t sectors; + uint16_t cylinders, heads, spt; + chs_t lgeo; + uint8_t idxCmosChsBase; + + DBG_AHCI("AHCI: Detected hard disk\n"); + + /* Identify device. */ + bios_dsk->drqp.lba = 0; + bios_dsk->drqp.buffer = &abBuffer; + bios_dsk->drqp.nsect = 1; + bios_dsk->drqp.sect_sz = 512; + ahci_cmd_data(bios_dsk, ATA_CMD_IDENTIFY_DEVICE); + + /* Calculate index into the generic device table. */ + hd_index = devcount_ahci + BX_MAX_ATA_DEVICES + BX_MAX_SCSI_DEVICES; + + removable = *(abBuffer+0) & 0x80 ? 1 : 0; + cylinders = *(uint16_t *)(abBuffer+(1*2)); // word 1 + heads = *(uint16_t *)(abBuffer+(3*2)); // word 3 + spt = *(uint16_t *)(abBuffer+(6*2)); // word 6 + sectors = *(uint32_t *)(abBuffer+(60*2)); // word 60 and word 61 + + if (sectors == 0x0FFFFFFF) /* For disks bigger than ~128GB */ + sectors = *(uint64_t *)(abBuffer+(100*2)); // words 100 to 103 + + DBG_AHCI("AHCI: 0x%llx sectors\n", sectors); + + bios_dsk->ahcidev[devcount_ahci].port = u8Port; + bios_dsk->devices[hd_index].type = DSK_TYPE_AHCI; + bios_dsk->devices[hd_index].device = DSK_DEVICE_HD; + bios_dsk->devices[hd_index].removable = removable; + bios_dsk->devices[hd_index].lock = 0; + bios_dsk->devices[hd_index].blksize = 512; + bios_dsk->devices[hd_index].translation = GEO_TRANSLATION_LBA; + bios_dsk->devices[hd_index].sectors = sectors; + + bios_dsk->devices[hd_index].pchs.heads = heads; + bios_dsk->devices[hd_index].pchs.cylinders = cylinders; + bios_dsk->devices[hd_index].pchs.spt = spt; + + /* Get logical CHS geometry. */ + switch (devcount_ahci) + { + case 0: + idxCmosChsBase = 0x40; + break; + case 1: + idxCmosChsBase = 0x48; + break; + case 2: + idxCmosChsBase = 0x50; + break; + case 3: + idxCmosChsBase = 0x58; + break; + default: + idxCmosChsBase = 0; + } + if (idxCmosChsBase && inb_cmos(idxCmosChsBase+7)) + { + lgeo.cylinders = inb_cmos(idxCmosChsBase + 0) + (inb_cmos(idxCmosChsBase + 1) << 8); + lgeo.heads = inb_cmos(idxCmosChsBase + 2); + lgeo.spt = inb_cmos(idxCmosChsBase + 7); + } + else + set_geom_lba(&lgeo, sectors); /* Default EDD-style translated LBA geometry. */ + + BX_INFO("AHCI %d-P#%d: PCHS=%u/%u/%u LCHS=%u/%u/%u 0x%llx sectors\n", devcount_ahci, + u8Port, cylinders, heads, spt, lgeo.cylinders, lgeo.heads, lgeo.spt, + sectors); + + bios_dsk->devices[hd_index].lchs = lgeo; + + /* Store the ID of the disk in the BIOS hdidmap. */ + hdcount = bios_dsk->hdcount; + bios_dsk->hdidmap[hdcount] = devcount_ahci + BX_MAX_ATA_DEVICES + BX_MAX_SCSI_DEVICES; + hdcount++; + bios_dsk->hdcount = hdcount; + + /* Update hdcount in the BDA. */ + hdcount = read_byte(0x40, 0x75); + hdcount++; + write_byte(0x40, 0x75, hdcount); + } + else if (val == 0xeb140101) + { + DBG_AHCI("AHCI: Detected ATAPI device\n"); + + /* Identify packet device. */ + bios_dsk->drqp.lba = 0; + bios_dsk->drqp.buffer = &abBuffer; + bios_dsk->drqp.nsect = 1; + bios_dsk->drqp.sect_sz = 512; + ahci_cmd_data(bios_dsk, ATA_CMD_IDENTIFY_PACKET); + + /* Calculate index into the generic device table. */ + hd_index = devcount_ahci + BX_MAX_ATA_DEVICES + BX_MAX_SCSI_DEVICES; + + removable = *(abBuffer+0) & 0x80 ? 1 : 0; + + bios_dsk->ahcidev[devcount_ahci].port = u8Port; + bios_dsk->devices[hd_index].type = DSK_TYPE_AHCI; + bios_dsk->devices[hd_index].device = DSK_DEVICE_CDROM; + bios_dsk->devices[hd_index].removable = removable; + bios_dsk->devices[hd_index].blksize = 2048; + bios_dsk->devices[hd_index].translation = GEO_TRANSLATION_NONE; + + /* Store the ID of the device in the BIOS cdidmap. */ + cdcount = bios_dsk->cdcount; + bios_dsk->cdidmap[cdcount] = devcount_ahci + BX_MAX_ATA_DEVICES + BX_MAX_SCSI_DEVICES; + cdcount++; + bios_dsk->cdcount = cdcount; + } + else + DBG_AHCI("AHCI: Ignoring unknown device\n"); + + devcount_ahci++; + bios_dsk->ahci_devcnt = devcount_ahci; + } + else + DBG_AHCI("AHCI: Reached maximum device count, skipping\n"); + } +} + +/** + * Allocates 1K of conventional memory. + */ +static uint16_t ahci_mem_alloc(void) +{ + uint16_t base_mem_kb; + uint16_t ahci_seg; + + base_mem_kb = read_word(0x00, 0x0413); + + DBG_AHCI("AHCI: %dK of base mem\n", base_mem_kb); + + if (base_mem_kb == 0) + return 0; + + base_mem_kb--; /* Allocate one block. */ + ahci_seg = (((uint32_t)base_mem_kb * 1024) >> 4); /* Calculate start segment. */ + + write_word(0x00, 0x0413, base_mem_kb); + + return ahci_seg; +} + +/** + * Initializes the AHCI HBA and detects attached devices. + */ +static int ahci_hba_init(uint16_t io_base) +{ + uint8_t i, cPorts; + uint32_t val; + uint16_t ebda_seg; + uint16_t ahci_seg; + bio_dsk_t __far *bios_dsk; + ahci_t __far *ahci; + + + ebda_seg = read_word(0x0040, 0x000E); + bios_dsk = ebda_seg :> &EbdaData->bdisk; + + AHCI_READ_REG(io_base, AHCI_REG_VS, val); + DBG_AHCI("AHCI: Controller version: 0x%x (major) 0x%x (minor)\n", + ahci_ctrl_extract_bits(val, 0xffff0000, 16), + ahci_ctrl_extract_bits(val, 0x0000ffff, 0)); + + /* Allocate 1K of base memory. */ + ahci_seg = ahci_mem_alloc(); + if (ahci_seg == 0) + { + DBG_AHCI("AHCI: Could not allocate 1K of memory, can't boot from controller\n"); + return 0; + } + DBG_AHCI("AHCI: ahci_seg=%04x, size=%04x, pointer at EBDA:%04x (EBDA size=%04x)\n", + ahci_seg, sizeof(ahci_t), (uint16_t)&EbdaData->bdisk.ahci_seg, sizeof(ebda_data_t)); + + bios_dsk->ahci_seg = ahci_seg; + bios_dsk->ahci_devcnt = 0; + + ahci = ahci_seg :> 0; + ahci->cur_port = 0xff; + ahci->iobase = io_base; + + /* Physical address of memory used for throwing away ATAPI data when reading 512-byte + * blocks from 2048-byte CD sectors. + */ + ahci->sink_buf_phys = 0xCC000; /// @todo find some better place! + + /* Reset the controller. */ + ahci_ctrl_set_bits(io_base, AHCI_REG_GHC, AHCI_GHC_HR); + do + { + AHCI_READ_REG(io_base, AHCI_REG_GHC, val); + } while ((val & AHCI_GHC_HR) != 0); + + AHCI_READ_REG(io_base, AHCI_REG_CAP, val); + cPorts = ahci_ctrl_extract_bits(val, 0x1f, 0) + 1; /* Extract number of ports.*/ + + DBG_AHCI("AHCI: HBA has %u ports\n", cPorts); + + /* Go through the ports. */ + i = 0; + while (i < 32) + { + if (ahci_ctrl_is_bit_set(io_base, AHCI_REG_PI, RT_BIT_32(i)) != 0) + { + DBG_AHCI("AHCI: Port %u is present\n", i); + ahci_port_detect_device(ahci_seg :> 0, i); + cPorts--; + if (cPorts == 0) + break; + } + i++; + } + + return 0; +} + +/** + * Init the AHCI driver and detect attached disks. + */ +void BIOSCALL ahci_init(void) +{ + uint16_t busdevfn; + + busdevfn = pci_find_classcode(0x00010601); + if (busdevfn != VBOX_AHCI_NO_DEVICE) + { + uint8_t u8Bus, u8DevFn; + uint8_t u8PciCapOff; + + u8Bus = (busdevfn & 0xff00) >> 8; + u8DevFn = busdevfn & 0x00ff; + + DBG_AHCI("AHCI HBA at Bus %u DevFn 0x%x (raw 0x%x)\n", u8Bus, u8DevFn, busdevfn); + + /* Examine the capability list and search for the Serial ATA Capability Register. */ + u8PciCapOff = pci_read_config_byte(u8Bus, u8DevFn, PCI_CONFIG_CAP); + + while (u8PciCapOff != 0) + { + uint8_t u8PciCapId = pci_read_config_byte(u8Bus, u8DevFn, u8PciCapOff); + + DBG_AHCI("Capability ID 0x%x at 0x%x\n", u8PciCapId, u8PciCapOff); + + if (u8PciCapId == PCI_CAP_ID_SATACR) + break; + + /* Go on to the next capability. */ + u8PciCapOff = pci_read_config_byte(u8Bus, u8DevFn, u8PciCapOff + 1); + } + + if (u8PciCapOff != 0) + { + uint8_t u8Rev; + + DBG_AHCI("AHCI HBA with SATA Capability register at 0x%x\n", u8PciCapOff); + + /* Advance to the stuff behind the id and next capability pointer. */ + u8PciCapOff += 2; + + u8Rev = pci_read_config_byte(u8Bus, u8DevFn, u8PciCapOff); + if (u8Rev == 0x10) + { + /* Read the SATACR1 register and get the bar and offset of the index/data pair register. */ + uint8_t u8Bar = 0x00; + uint16_t u16Off = 0x00; + uint16_t u16BarOff = pci_read_config_word(u8Bus, u8DevFn, u8PciCapOff + 2); + + DBG_AHCI("SATACR1: 0x%x\n", u16BarOff); + + switch (u16BarOff & 0xf) + { + case 0x04: + u8Bar = 0x10; + break; + case 0x05: + u8Bar = 0x14; + break; + case 0x06: + u8Bar = 0x18; + break; + case 0x07: + u8Bar = 0x1c; + break; + case 0x08: + u8Bar = 0x20; + break; + case 0x09: + u8Bar = 0x24; + break; + case 0x0f: + default: + /* Reserved or unsupported. */ + DBG_AHCI("BAR 0x%x unsupported\n", u16BarOff & 0xf); + } + + /* Get the offset inside the BAR from bits 4:15. */ + u16Off = (u16BarOff >> 4) * 4; + + if (u8Bar != 0x00) + { + uint32_t u32Bar = pci_read_config_dword(u8Bus, u8DevFn, u8Bar); + + DBG_AHCI("BAR at 0x%x : 0x%x\n", u8Bar, u32Bar); + + if ((u32Bar & 0x01) != 0) + { + int rc; + uint16_t u16AhciIoBase = (u32Bar & 0xfff0) + u16Off; + + /* Enable PCI memory, I/O, bus mastering access in command register. */ + pci_write_config_word(u8Bus, u8DevFn, 4, 0x7); + + DBG_AHCI("I/O base: 0x%x\n", u16AhciIoBase); + rc = ahci_hba_init(u16AhciIoBase); + } + else + DBG_AHCI("BAR is MMIO\n"); + } + } + else + DBG_AHCI("Invalid revision 0x%x\n", u8Rev); + } + else + DBG_AHCI("AHCI HBA with no usable Index/Data register pair!\n"); + } + else + DBG_AHCI("No AHCI HBA!\n"); +} diff --git a/src/VBox/Devices/PC/BIOS/apm.c b/src/VBox/Devices/PC/BIOS/apm.c new file mode 100644 index 00000000..c7fbf6ea --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/apm.c @@ -0,0 +1,232 @@ +/* $Id: apm.c $ */ +/** @file + * APM BIOS support. Implements APM version 1.2. + */ + +/* + * Copyright (C) 2004-2019 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + */ + +#include <stdint.h> +#include <string.h> +#include "biosint.h" +#include "inlines.h" +#include "VBox/bios.h" + +#if DEBUG_APM +# define BX_DEBUG_APM(...) BX_DEBUG(__VA_ARGS__) +#else +# define BX_DEBUG_APM(...) +#endif + +/* Implemented in assembly. */ +extern void apm_pm16_entry(void); +#pragma aux apm_pm16_entry "*" + +#if VBOX_BIOS_CPU >= 80386 +extern void apm_pm32_entry(void); +#pragma aux apm_pm32_entry "*" +#endif + +/* APM function codes. */ +enum apm_func { + APM_CHECK = 0x00, /* APM Installation Check */ + APM_RM_CONN = 0x01, /* APM Real Mode Interface Connect */ + APM_PM_CONN = 0x02, /* APM Protected Mode 16-bit Interface Connect */ + APM_32_CONN = 0x03, /* APM Protected Mode 32-bit Interface Connect */ + APM_DISCONN = 0x04, /* APM Interface Disconnect */ + APM_IDLE = 0x05, /* CPU Idle */ + APM_BUSY = 0x06, /* CPU Busy */ + APM_SET_PWR = 0x07, /* Set Power State */ + APM_ENBL_PM = 0x08, /* Enable/Disable Power Management */ + APM_SET_DFL = 0x09, /* Restore APM BIOS Power-On Defaults */ + APM_STATUS = 0x0A, /* Get Power Status */ + APM_GET_EVT = 0x0B, /* Get PM Event */ + APM_GET_PWR = 0x0C, /* Get Power State */ + APM_DEVPM = 0x0D, /* Enable/Disable Device Power Management */ + APM_DRV_VER = 0x0E, /* APM Driver Version */ + APM_ENGAGE = 0x0F, /* Engage/Disengage Power Management */ + APM_GET_CAP = 0x10 /* Get Capabilities */ +}; + +enum apm_error { + APM_ERR_PM_DISABLED = 0x01, /* Power Management functionality disabled */ + APM_ERR_RM_INUSE = 0x02, /* Real mode interface connection already established */ + APM_ERR_NOT_CONN = 0x03, /* Interface not connected */ + APM_ERR_PM_16_INUSE = 0x05, /* 16-bit protected mode interface connection already established */ + APM_ERR_NO_PM_16 = 0x06, /* 16-bit protected mode interface not supported */ + APM_ERR_PM_32_INUSE = 0x07, /* 32-bit protected mode interface connection already established */ + APM_ERR_NO_PM_32 = 0x08, /* 32-bit protected mode interface not supported */ + APM_ERR_BAD_DEV_ID = 0x09, /* Unrecognized device ID */ + APM_ERR_INVAL_PARAM = 0x0A, /* Parameter out of range */ + APM_ERR_NOT_ENGAGED = 0x0B, /* Interface not engaged */ + APM_ERR_UNSUPPORTED = 0x0C, /* Function not supported */ + APM_ERR_NO_RSM_TMR = 0x0D, /* Resume timer disabled */ + APM_ERR_NO_EVENTS = 0x80 /* No power management events pending */ +}; + +enum apm_power_state { + APM_PS_ENABLED = 0x00, /* APM enabled */ + APM_PS_STANDBY = 0x01, /* Standby */ + APM_PS_SUSPEND = 0x02, /* Suspend */ + APM_PS_OFF = 0x03, /* Suspend */ +}; + +/// @todo merge with system.c +#define AX r.gr.u.r16.ax +#define BX r.gr.u.r16.bx +#define CX r.gr.u.r16.cx +#define DX r.gr.u.r16.dx +#define SI r.gr.u.r16.si +#define DI r.gr.u.r16.di +#define BP r.gr.u.r16.bp +#define SP r.gr.u.r16.sp +#define FLAGS r.fl.u.r16.flags +#define EAX r.gr.u.r32.eax +#define EBX r.gr.u.r32.ebx +#define ECX r.gr.u.r32.ecx +#define EDX r.gr.u.r32.edx +#define ES r.es + +#define APM_BIOS_SEG 0xF000 /* Real-mode APM segment. */ +#define APM_BIOS_SEG_LEN 0xFFF0 /* Length of APM segment. */ + +/* The APM BIOS interface uses 32-bit registers *only* in the 32-bit + * protected mode connect call. Rather than saving/restoring 32-bit + * registers all the time, simply set the high words of those registers + * when necessary. + */ +void set_ebx_hi(uint16_t val); +#pragma aux set_ebx_hi = \ + ".386" \ + "shl ebx, 16" \ + parm [bx] modify exact [bx] nomemory; + +void set_esi_hi(uint16_t val); +#pragma aux set_esi_hi = \ + ".386" \ + "shl esi, 16" \ + parm [si] modify exact [si] nomemory; + + +/* The APM handler has unique requirements. It must be callable from real and + * protected mode, both 16-bit and 32-bit. In protected mode, the caller must + * ensures that appropriate selectors are available; these only cover the BIOS + * code and data, hence the BIOS Data Area or EBDA cannot be accessed. CMOS is + * a good place to store information which needs to be accessible from several + * different contexts. + * + * Note that the 32-bit protected-mode handler only needs to thunk down to the + * 16-bit code. There's no need for separate 16-bit and 32-bit implementation. + */ + +/* Output a null-terminated string to a specified port, without the + * terminating null character. + */ +static void apm_out_str_asm(uint16_t port, const char *s); +#pragma aux apm_out_str_asm = \ + "mov al, [bx]" \ + "next:" \ + "out dx, al" \ + "inc bx" \ + "mov al, [bx]" \ + "or al, al" \ + "jnz next" \ + parm [dx] [bx] modify exact [ax bx] nomemory; + +/* Wrapper to avoid unnecessary inlining. */ +void apm_out_str(const char *s, uint16_t port) +{ + if (*s) + apm_out_str_asm(port, s); +} + +void BIOSCALL apm_function(sys_regs_t r) +{ + BX_DEBUG_APM("APM: AX=%04X BX=%04X CX=%04X\n", AX, BX, CX); + + CLEAR_CF(); /* Boldly expect success. */ + switch (GET_AL()) { + case APM_CHECK: + AX = 0x0102; /* Version 1.2 */ + BX = 0x504D; /* 'PM' */ + CX = 3; /* Bits 0/1: 16-bit/32-bit PM interface */ + break; + case APM_RM_CONN: + /// @todo validate device ID + /// @todo validate current connection state + /// @todo change connection state + break; + case APM_PM_CONN: + /// @todo validate device ID + /// @todo validate current connection state + /// @todo change connection state + AX = APM_BIOS_SEG; /* 16-bit PM code segment (RM segment base). */ + BX = (uint16_t)apm_pm16_entry; /* 16-bit PM entry point offset. */ + CX = APM_BIOS_SEG; /* 16-bit data segment. */ + SI = APM_BIOS_SEG_LEN; /* 16-bit PM code segment length. */ + DI = APM_BIOS_SEG_LEN; /* Data segment length. */ + break; +#if VBOX_BIOS_CPU >= 80386 + case APM_32_CONN: + /// @todo validate device ID + /// @todo validate current connection state + /// @todo change connection state + AX = APM_BIOS_SEG; /* 32-bit PM code segment (RM segment base). */ + BX = (uint16_t)apm_pm32_entry; /* 32-bit entry point offset. */ + CX = APM_BIOS_SEG; /* 16-bit code segment. */ + DX = APM_BIOS_SEG; /* 16-bit data segment. */ + SI = APM_BIOS_SEG_LEN; /* 32-bit code segment length. */ + DI = APM_BIOS_SEG_LEN; /* Data segment length. */ + set_ebx_hi(0); + set_esi_hi(APM_BIOS_SEG_LEN); /* 16-bit code segment length. */ + break; +#endif + case APM_IDLE: + int_enable(); /* Simply halt the CPU with interrupts enabled. */ + halt(); + break; + case APM_SET_PWR: + /// @todo validate device ID + /// @todo validate current connection state + switch (CX) { + case APM_PS_STANDBY: + apm_out_str("Standby", VBOX_BIOS_SHUTDOWN_PORT); + break; + case APM_PS_SUSPEND: + apm_out_str("Suspend", VBOX_BIOS_SHUTDOWN_PORT); + break; + case APM_PS_OFF: + apm_out_str("Shutdown", VBOX_BIOS_SHUTDOWN_PORT); /* Should not return. */ + break; + default: + SET_AH(APM_ERR_INVAL_PARAM); + SET_CF(); + } + break; + case APM_DRV_VER: + AX = 0x0102; /// @todo Not right - must take driver version into account! + break; + case APM_DISCONN: + /// @todo actually perform a disconnect... + case APM_BUSY: /* Nothing to do as APM Idle doesn't slow CPU clock. */ + break; + case APM_GET_EVT: + /// @todo error should be different if interface not connected + engaged + SET_AH(APM_ERR_NO_EVENTS); /* PM events don't happen. */ + SET_CF(); + break; + default: + BX_INFO("APM: Unsupported function AX=%04X BX=%04X called\n", AX, BX); + SET_AH(APM_ERR_UNSUPPORTED); + SET_CF(); + } +} diff --git a/src/VBox/Devices/PC/BIOS/apm_pm.asm b/src/VBox/Devices/PC/BIOS/apm_pm.asm new file mode 100644 index 00000000..7e775528 --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/apm_pm.asm @@ -0,0 +1,209 @@ +; $Id: +;; @file +; Protected-mode APM implementation. +; + +; +; Copyright (C) 2006-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; + + +include commondefs.inc + +;; 16-bit protected mode APM entry point + +_TEXT segment public 'CODE' + +extern _apm_function:near ; implemented in C code + + +public apm_pm16_entry + +SET_DEFAULT_CPU_286 + + +; APM function dispatch table +apm_disp: + dw offset apmf_disconnect ; 04h + dw offset apmf_idle ; 05h + dw offset apmf_busy ; 06h + dw offset apmf_set_state ; 07h + dw offset apmf_enable ; 08h + dw offset apmf_restore ; 09h + dw offset apmf_get_status ; 0Ah + dw offset apmf_get_event ; 0Bh + dw offset apmf_pwr_state ; 0Ch + dw offset apmf_dev_pm ; 0Dh + dw offset apmf_version ; 0Eh + dw offset apmf_engage ; 0Fh + dw offset apmf_get_caps ; 10h +apm_disp_end: + +; +; APM worker routine. Function code in AL; it is assumed that AL >= 4. +; Caller must preserve BP. +; +apm_worker proc near + + sti ; TODO ?? necessary ?? + + push ax ; check if function is supported... + xor ah, ah + sub al, 4 + mov bp, ax + shl bp, 1 + cmp al, (apm_disp_end - apm_disp) / 2 + pop ax + mov ah, 53h ; put back APM function + jae apmw_bad_func ; validate function range + + jmp apm_disp[bp] ; and dispatch + +apmf_disconnect: ; function 04h + jmp apmw_success + +apmf_idle: ; function 05h + sti + hlt + jmp apmw_success + +apmf_busy: ; function 06h +; jmp apmw_success + +apmf_set_state: ; function 07h +; jmp apmw_success + +apmf_enable: ; function 08h + jmp apmw_success + +apmf_restore: ; function 09h +; jmp apmw_success + +apmf_get_status: ; function 0Ah + jmp apmw_bad_func + +apmf_get_event: ; function 0Bh + mov ah, 80h + jmp apmw_failure + +apmf_pwr_state: ; function 0Ch + +apmf_dev_pm: ; function 0Dh + jmp apmw_bad_func + +apmf_version: ; function 0Eh + mov ax, 0102h + jmp apmw_success + +apmf_engage: ; function 0Fh + ; TODO do something? + jmp apmw_success + +apmf_get_caps: ; function 10h + mov bl, 0 ; no batteries + mov cx, 0 ; no special caps + jmp apmw_success + +apmw_success: + clc ; successful return + ret + +apmw_bad_func: + mov ah, 09h ; unrecognized device ID - generic + +apmw_failure: + stc ; error for unsupported functions + ret + +apm_worker endp + + +;; 16-bit protected mode APM entry point + +;; According to the APM spec, only CS (16-bit code selector) is defined. +;; The data selector can be derived from it. + +apm_pm16_entry: + + mov ah, 2 ; mark as originating in 16-bit PM + + ; fall through + +apm_pm16_entry_from_32: + + push ds ; save registers + push bp + + push cs + pop bp + add bp, 8 ; calculate data selector + mov ds, bp ; load data segment + + call apm_worker ; call APM handler + + pop bp + pop ds ; restore registers + + retf ; return to caller - 16-bit return + ; even to 32-bit thunk! + +_TEXT ends + + +if VBOX_BIOS_CPU ge 80386 + +.386 + +BIOS32 segment public 'CODE' use32 + +public apm_pm32_entry + +;; 32-bit protected mode APM entry point and thunk + +;; According to the APM spec, only CS (32-bit) is defined. 16-bit code +;; selector and the data selector can be derived from it. + +;; WARNING: To simplify matters, we use 16-bit far return to go from 32-bit +;; code to 16-bit and back. As a consequence, the 32-bit APM code must lie +;; below 64K boundary in the 32-bit APM code segment. + +apm_pm32_entry: + + push ebp ; ebp is not used by APM + + mov bp, cs ; return address for 16-bit code + push bp + mov ebp, apm_pm32_back + push bp ; Note: 16:16 address! + + push cs + pop ebp + add ebp, 8 ; calculate 16-bit code selector + push bp ; push 16-bit code selector + + mov ebp, apm_pm16_entry_from_32 + push bp ; push 16-bit offset + + mov ah, 3 ; mark as originating in 32-bit PM + + db 66h ; force a 16-bit return + retf ; off to 16-bit code... + +apm_pm32_back: ; return here from 16-bit code + + pop ebp ; restore scratch register + retf + +BIOS32 ends + +endif ; 32-bit code + + end diff --git a/src/VBox/Devices/PC/BIOS/ata.c b/src/VBox/Devices/PC/BIOS/ata.c new file mode 100644 index 00000000..53529614 --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/ata.c @@ -0,0 +1,1204 @@ +/* $Id: ata.c $ */ +/** @file + * PC BIOS - ??? + */ + +/* + * Copyright (C) 2006-2019 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * -------------------------------------------------------------------- + * + * This code is based on: + * + * ROM BIOS for use with Bochs/Plex86/QEMU emulation environment + * + * Copyright (C) 2002 MandrakeSoft S.A. + * + * MandrakeSoft S.A. + * 43, rue d'Aboukir + * 75002 Paris - France + * http://www.linux-mandrake.com/ + * http://www.mandrakesoft.com/ + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +/* + * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice + * other than GPL or LGPL is available it will apply instead, Oracle elects to use only + * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where + * a choice of LGPL license versions is made available with the language indicating + * that LGPLv2 or any later version may be used, or where a choice of which version + * of the LGPL is applied is otherwise unspecified. + */ + + +#include <stdint.h> +#include <stdarg.h> +#include "inlines.h" +#include "biosint.h" +#include "ebda.h" +#include "ata.h" + +#if DEBUG_ATA +# define BX_DEBUG_ATA(...) BX_DEBUG(__VA_ARGS__) +#else +# define BX_DEBUG_ATA(...) +#endif + + +// --------------------------------------------------------------------------- +// Start of ATA/ATAPI Driver +// --------------------------------------------------------------------------- + +void insw_discard(unsigned nwords, unsigned port); +#pragma aux insw_discard = \ + ".286" \ + "again:" \ + "in ax,dx" \ + "loop again" \ + parm [cx] [dx] modify exact [cx ax] nomemory; + +void insd_discard(unsigned ndwords, unsigned port); +#if VBOX_BIOS_CPU >= 80386 +# pragma aux insd_discard = \ + ".386" \ + "push eax" \ + "again:" \ + "in eax,dx" \ + "loop again" \ + "pop eax" \ + parm [cx] [dx] modify exact [cx] nomemory; +#endif + +// --------------------------------------------------------------------------- +// ATA/ATAPI driver : initialization +// --------------------------------------------------------------------------- +void BIOSCALL ata_init(void) +{ + uint8_t channel, device; + bio_dsk_t __far *bios_dsk; + + bios_dsk = read_word(0x0040, 0x000E) :> &EbdaData->bdisk; + + // Channels info init. + for (channel=0; channel<BX_MAX_ATA_INTERFACES; channel++) { + bios_dsk->channels[channel].iface = ATA_IFACE_NONE; + bios_dsk->channels[channel].iobase1 = 0x0; + bios_dsk->channels[channel].iobase2 = 0x0; + bios_dsk->channels[channel].irq = 0; + } + + // Devices info init. + for (device=0; device<BX_MAX_ATA_DEVICES; device++) { + bios_dsk->devices[device].type = DSK_TYPE_NONE; + bios_dsk->devices[device].device = DSK_DEVICE_NONE; + bios_dsk->devices[device].removable = 0; + bios_dsk->devices[device].lock = 0; + bios_dsk->devices[device].mode = ATA_MODE_NONE; + bios_dsk->devices[device].blksize = 0x200; + bios_dsk->devices[device].translation = GEO_TRANSLATION_NONE; + bios_dsk->devices[device].lchs.heads = 0; + bios_dsk->devices[device].lchs.cylinders = 0; + bios_dsk->devices[device].lchs.spt = 0; + bios_dsk->devices[device].pchs.heads = 0; + bios_dsk->devices[device].pchs.cylinders = 0; + bios_dsk->devices[device].pchs.spt = 0; + bios_dsk->devices[device].sectors = 0; + } + + // hdidmap and cdidmap init. + for (device=0; device<BX_MAX_STORAGE_DEVICES; device++) { + bios_dsk->hdidmap[device] = BX_MAX_STORAGE_DEVICES; + bios_dsk->cdidmap[device] = BX_MAX_STORAGE_DEVICES; + } + + bios_dsk->hdcount = 0; + bios_dsk->cdcount = 0; +} + +// --------------------------------------------------------------------------- +// ATA/ATAPI driver : software reset +// --------------------------------------------------------------------------- +// ATA-3 +// 8.2.1 Software reset - Device 0 + +void ata_reset(uint16_t device) +{ + uint16_t iobase1, iobase2; + uint8_t channel, slave, sn, sc; + uint16_t max; + uint16_t pdelay; + bio_dsk_t __far *bios_dsk; + + bios_dsk = read_word(0x0040, 0x000E) :> &EbdaData->bdisk; + channel = device / 2; + slave = device % 2; + + iobase1 = bios_dsk->channels[channel].iobase1; + iobase2 = bios_dsk->channels[channel].iobase2; + + // Reset + + // 8.2.1 (a) -- set SRST in DC + outb(iobase2+ATA_CB_DC, ATA_CB_DC_HD15 | ATA_CB_DC_NIEN | ATA_CB_DC_SRST); + + // 8.2.1 (b) -- wait for BSY + max=0xff; + while(--max>0) { + uint8_t status = inb(iobase1+ATA_CB_STAT); + if ((status & ATA_CB_STAT_BSY) != 0) + break; + } + + // 8.2.1 (f) -- clear SRST + outb(iobase2+ATA_CB_DC, ATA_CB_DC_HD15 | ATA_CB_DC_NIEN); + + if (bios_dsk->devices[device].type != DSK_TYPE_NONE) { + // 8.2.1 (g) -- check for sc==sn==0x01 + // select device + outb(iobase1+ATA_CB_DH, slave?ATA_CB_DH_DEV1:ATA_CB_DH_DEV0); + sc = inb(iobase1+ATA_CB_SC); + sn = inb(iobase1+ATA_CB_SN); + + if ( (sc==0x01) && (sn==0x01) ) { + // 8.2.1 (h) -- wait for not BSY + max=0xffff; /* The ATA specification says that the drive may be busy for up to 30 seconds. */ + while(--max>0) { + uint8_t status = inb(iobase1+ATA_CB_STAT); + if ((status & ATA_CB_STAT_BSY) == 0) + break; + pdelay=0xffff; + while (--pdelay>0) { + /* nothing */ + } + } + } + } + + // 8.2.1 (i) -- wait for DRDY + max = 0x10; /* Speed up for virtual drives. Disks are immediately ready, CDs never */ + while(--max>0) { + uint8_t status = inb(iobase1+ATA_CB_STAT); + if ((status & ATA_CB_STAT_RDY) != 0) + break; + } + + // Enable interrupts + outb(iobase2+ATA_CB_DC, ATA_CB_DC_HD15); +} + +// --------------------------------------------------------------------------- +// ATA/ATAPI driver : execute a data-in command +// --------------------------------------------------------------------------- + // returns + // 0 : no error + // 1 : BUSY bit set + // 2 : read error + // 3 : expected DRQ=1 + // 4 : no sectors left to read/verify + // 5 : more sectors to read/verify + // 6 : no sectors left to write + // 7 : more sectors to write +uint16_t ata_cmd_data_in(bio_dsk_t __far *bios_dsk, uint16_t command, uint16_t count) +{ + uint16_t iobase1, iobase2, blksize, mult_blk_cnt; + uint16_t cylinder; + uint8_t head; + uint8_t sector; + uint8_t device; + uint8_t status, mode; + char __far *buffer; + + device = bios_dsk->drqp.dev_id; + + iobase1 = bios_dsk->channels[device / 2].iobase1; + iobase2 = bios_dsk->channels[device / 2].iobase2; + mode = bios_dsk->devices[device].mode; + blksize = bios_dsk->devices[device].blksize; + if (blksize == 0) { /* If transfer size is exactly 64K */ +#if VBOX_BIOS_CPU >= 80386 + if (mode == ATA_MODE_PIO32) + blksize = 0x4000; + else +#endif + blksize = 0x8000; + } else { +#if VBOX_BIOS_CPU >= 80386 + if (mode == ATA_MODE_PIO32) + blksize >>= 2; + else +#endif + blksize >>= 1; + } + + status = inb(iobase1 + ATA_CB_STAT); + if (status & ATA_CB_STAT_BSY) + { + BX_DEBUG_ATA("%s: disk busy\n", __func__); + // Enable interrupts + outb(iobase2+ATA_CB_DC, ATA_CB_DC_HD15); + return 1; + } + + buffer = bios_dsk->drqp.buffer; + sector = bios_dsk->drqp.sector; + cylinder = bios_dsk->drqp.cylinder; + head = bios_dsk->drqp.head; + + // sector will be 0 only on lba access. Convert to lba-chs + if (sector == 0) { + if (bios_dsk->drqp.lba + count >= 268435456) + { + sector = (bios_dsk->drqp.lba >> 24) & 0x00ff; + cylinder = (bios_dsk->drqp.lba >> 32) & 0xffff; + outb(iobase1 + ATA_CB_SC, (count & 0xff00) >> 8); + outb(iobase1 + ATA_CB_SN, sector); + outb(iobase1 + ATA_CB_CL, cylinder & 0x00ff); + outb(iobase1 + ATA_CB_CH, cylinder >> 8); + /* Leave the bottom 24 bits as is, they are treated correctly by the + * LBA28 code path. */ + } + sector = bios_dsk->drqp.lba & 0x000000ffL; + cylinder = (bios_dsk->drqp.lba >> 8) & 0x0000ffffL; + head = ((bios_dsk->drqp.lba >> 24) & 0x0000000fL) | 0x40; + } + + outb(iobase2 + ATA_CB_DC, ATA_CB_DC_HD15 | ATA_CB_DC_NIEN); + outb(iobase1 + ATA_CB_FR, 0x00); + outb(iobase1 + ATA_CB_SC, count); + outb(iobase1 + ATA_CB_SN, sector); + outb(iobase1 + ATA_CB_CL, cylinder & 0x00ff); + outb(iobase1 + ATA_CB_CH, cylinder >> 8); + outb(iobase1 + ATA_CB_DH, ((device & 1) ? ATA_CB_DH_DEV1 : ATA_CB_DH_DEV0) | head ); + outb(iobase1 + ATA_CB_CMD, command); + + if (command == ATA_CMD_READ_MULTIPLE || command == ATA_CMD_READ_MULTIPLE_EXT) { + mult_blk_cnt = count; + count = 1; + } else { + mult_blk_cnt = 1; + } + + while (1) { + status = inb(iobase1 + ATA_CB_STAT); + if ( !(status & ATA_CB_STAT_BSY) ) + break; + } + + if (status & ATA_CB_STAT_ERR) { + BX_DEBUG_ATA("%s: read error\n", __func__); + // Enable interrupts + outb(iobase2+ATA_CB_DC, ATA_CB_DC_HD15); + return 2; + } else if ( !(status & ATA_CB_STAT_DRQ) ) { + BX_DEBUG_ATA("%s: DRQ not set (status %02x)\n", __func__, (unsigned) status); + // Enable interrupts + outb(iobase2+ATA_CB_DC, ATA_CB_DC_HD15); + return 3; + } + + // FIXME : move seg/off translation here + + int_enable(); // enable higher priority interrupts + + while (1) { + + // adjust if there will be an overrun. 2K max sector size + if (FP_OFF(buffer) >= 0xF800) + buffer = MK_FP(FP_SEG(buffer) + 0x80, FP_OFF(buffer) - 0x800); + +#if VBOX_BIOS_CPU >= 80386 + if (mode == ATA_MODE_PIO32) + buffer = rep_insd(buffer, blksize, iobase1); + else +#endif + buffer = rep_insw(buffer, blksize, iobase1); + bios_dsk->drqp.trsfsectors += mult_blk_cnt; + count--; + while (1) { + status = inb(iobase1 + ATA_CB_STAT); + if ( !(status & ATA_CB_STAT_BSY) ) + break; + } + if (count == 0) { + if ( (status & (ATA_CB_STAT_BSY | ATA_CB_STAT_RDY | ATA_CB_STAT_DRQ | ATA_CB_STAT_ERR) ) + != ATA_CB_STAT_RDY ) { + BX_DEBUG_ATA("%s: no sectors left (status %02x)\n", __func__, (unsigned) status); + // Enable interrupts + outb(iobase2+ATA_CB_DC, ATA_CB_DC_HD15); + return 4; + } + break; + } + else { + if ( (status & (ATA_CB_STAT_BSY | ATA_CB_STAT_RDY | ATA_CB_STAT_DRQ | ATA_CB_STAT_ERR) ) + != (ATA_CB_STAT_RDY | ATA_CB_STAT_DRQ) ) { + BX_DEBUG_ATA("%s: more sectors left (status %02x)\n", __func__, (unsigned) status); + // Enable interrupts + outb(iobase2+ATA_CB_DC, ATA_CB_DC_HD15); + return 5; + } + continue; + } + } + // Enable interrupts + outb(iobase2+ATA_CB_DC, ATA_CB_DC_HD15); + return 0; +} + +// --------------------------------------------------------------------------- +// ATA/ATAPI driver : device detection +// --------------------------------------------------------------------------- + +void BIOSCALL ata_detect(void) +{ + uint16_t ebda_seg = read_word(0x0040,0x000E); + uint8_t hdcount, cdcount, device, type; + uint8_t buffer[0x0200]; + bio_dsk_t __far *bios_dsk; + + bios_dsk = ebda_seg :> &EbdaData->bdisk; + +#if BX_MAX_ATA_INTERFACES > 0 + bios_dsk->channels[0].iface = ATA_IFACE_ISA; + bios_dsk->channels[0].iobase1 = 0x1f0; + bios_dsk->channels[0].iobase2 = 0x3f0; + bios_dsk->channels[0].irq = 14; +#endif +#if BX_MAX_ATA_INTERFACES > 1 + bios_dsk->channels[1].iface = ATA_IFACE_ISA; + bios_dsk->channels[1].iobase1 = 0x170; + bios_dsk->channels[1].iobase2 = 0x370; + bios_dsk->channels[1].irq = 15; +#endif +#if 0 /// @todo - temporarily removed to avoid conflict with AHCI +#if BX_MAX_ATA_INTERFACES > 2 + bios_dsk->channels[2].iface = ATA_IFACE_ISA; + bios_dsk->channels[2].iobase1 = 0x1e8; + bios_dsk->channels[2].iobase2 = 0x3e0; + bios_dsk->channels[2].irq = 12; +#endif +#if BX_MAX_ATA_INTERFACES > 3 + bios_dsk->channels[3].iface = ATA_IFACE_ISA; + bios_dsk->channels[3].iobase1 = 0x168; + bios_dsk->channels[3].iobase2 = 0x360; + bios_dsk->channels[3].irq = 11; +#endif +#endif +#if BX_MAX_ATA_INTERFACES > 4 +#error Please fill the ATA interface informations +#endif + + // Device detection + hdcount = cdcount = 0; + + for (device = 0; device < BX_MAX_ATA_DEVICES; device++) { + uint16_t iobase1, iobase2; + uint8_t channel, slave; + uint8_t sc, sn, cl, ch, st; + + channel = device / 2; + slave = device % 2; + + iobase1 = bios_dsk->channels[channel].iobase1; + iobase2 = bios_dsk->channels[channel].iobase2; + + // Disable interrupts + outb(iobase2+ATA_CB_DC, ATA_CB_DC_HD15 | ATA_CB_DC_NIEN); + + // Look for device + outb(iobase1+ATA_CB_DH, slave ? ATA_CB_DH_DEV1 : ATA_CB_DH_DEV0); + outb(iobase1+ATA_CB_SC, 0x55); + outb(iobase1+ATA_CB_SN, 0xaa); + outb(iobase1+ATA_CB_SC, 0xaa); + outb(iobase1+ATA_CB_SN, 0x55); + outb(iobase1+ATA_CB_SC, 0x55); + outb(iobase1+ATA_CB_SN, 0xaa); + + // If we found something + sc = inb(iobase1+ATA_CB_SC); + sn = inb(iobase1+ATA_CB_SN); + + if ( (sc == 0x55) && (sn == 0xaa) ) { + bios_dsk->devices[device].type = DSK_TYPE_UNKNOWN; + + // reset the channel + ata_reset(device); + + // check for ATA or ATAPI + outb(iobase1+ATA_CB_DH, slave ? ATA_CB_DH_DEV1 : ATA_CB_DH_DEV0); + sc = inb(iobase1+ATA_CB_SC); + sn = inb(iobase1+ATA_CB_SN); + if ((sc==0x01) && (sn==0x01)) { + cl = inb(iobase1+ATA_CB_CL); + ch = inb(iobase1+ATA_CB_CH); + st = inb(iobase1+ATA_CB_STAT); + + if ((cl==0x14) && (ch==0xeb)) { + bios_dsk->devices[device].type = DSK_TYPE_ATAPI; + } else if ((cl==0x00) && (ch==0x00) && (st!=0x00)) { + bios_dsk->devices[device].type = DSK_TYPE_ATA; + } else if ((cl==0xff) && (ch==0xff)) { + bios_dsk->devices[device].type = DSK_TYPE_NONE; + } + } + } + + // Enable interrupts + outb(iobase2+ATA_CB_DC, ATA_CB_DC_HD15); + + type = bios_dsk->devices[device].type; + + // Now we send a IDENTIFY command to ATA device + if (type == DSK_TYPE_ATA) { + uint64_t sectors; + uint16_t cylinders, heads, spt, blksize; + chs_t lgeo; + uint8_t chsgeo_base; + uint8_t removable, mode; + + //Temporary values to do the transfer + bios_dsk->devices[device].device = DSK_DEVICE_HD; + bios_dsk->devices[device].mode = ATA_MODE_PIO16; + bios_dsk->drqp.buffer = buffer; + bios_dsk->drqp.dev_id = device; + + if (ata_cmd_data_in(bios_dsk, ATA_CMD_IDENTIFY_DEVICE, 1) !=0 ) + BX_PANIC("ata-detect: Failed to detect ATA device\n"); + + removable = (*(buffer+0) & 0x80) ? 1 : 0; +#if VBOX_BIOS_CPU >= 80386 + mode = *(buffer+96) ? ATA_MODE_PIO32 : ATA_MODE_PIO16; +#else + mode = ATA_MODE_PIO16; +#endif + blksize = 512; /* There is no sector size field any more. */ + + cylinders = *(uint16_t *)(buffer+(1*2)); // word 1 + heads = *(uint16_t *)(buffer+(3*2)); // word 3 + spt = *(uint16_t *)(buffer+(6*2)); // word 6 + + sectors = *(uint32_t *)(buffer+(60*2)); // word 60 and word 61 + if (sectors == 0x0FFFFFFF) /* For disks bigger than ~128GB */ + sectors = *(uint64_t *)(buffer+(100*2)); // words 100 to 103 + switch (device) + { + case 0: + chsgeo_base = 0x1e; + break; + case 1: + chsgeo_base = 0x26; + break; + case 2: + chsgeo_base = 0x67; + break; + case 3: + chsgeo_base = 0x70; + break; + default: + chsgeo_base = 0; + } + if (chsgeo_base) + { + lgeo.cylinders = inb_cmos(chsgeo_base) + (inb_cmos(chsgeo_base + 1) << 8); + lgeo.heads = inb_cmos(chsgeo_base + 2); + lgeo.spt = inb_cmos(chsgeo_base + 7); + } + else + set_geom_lba(&lgeo, sectors); /* Default EDD-style translated LBA geometry. */ + + BX_INFO("ata%d-%d: PCHS=%u/%u/%u LCHS=%u/%u/%u\n", channel, slave, + cylinders, heads, spt, lgeo.cylinders, lgeo.heads, lgeo.spt); + + bios_dsk->devices[device].device = DSK_DEVICE_HD; + bios_dsk->devices[device].removable = removable; + bios_dsk->devices[device].mode = mode; + bios_dsk->devices[device].blksize = blksize; + bios_dsk->devices[device].pchs.heads = heads; + bios_dsk->devices[device].pchs.cylinders = cylinders; + bios_dsk->devices[device].pchs.spt = spt; + bios_dsk->devices[device].sectors = sectors; + bios_dsk->devices[device].lchs = lgeo; + if (device < 2) + { + uint8_t sum, i; + fdpt_t __far *fdpt; + void __far * __far *int_vec; + + if (device == 0) + fdpt = ebda_seg :> &EbdaData->fdpt0; + else + fdpt = ebda_seg :> &EbdaData->fdpt1; + +#if 0 + /* Place the FDPT outside of conventional memory. Needed for + * 286 XENIX 2.1.3/2.2.1 because it completely wipes out + * the EBDA and low memory. Hack! + */ + fdpt = MK_FP(0xE200, 0xf00); + fdpt += device; +#endif + + /* Set the INT 41h or 46h pointer. */ + int_vec = MK_FP(0, (0x41 + device * 5) * sizeof(void __far *)); + *int_vec = fdpt; + + /* Update the DPT for drive 0/1 pointed to by Int41/46. This used + * to be done at POST time with lots of ugly assembler code, which + * isn't worth the effort of converting from AMI to Award CMOS + * format. Just do it here. */ + fdpt->resvd1 = fdpt->resvd2 = 0; + + fdpt->lcyl = lgeo.cylinders; + fdpt->lhead = lgeo.heads; + fdpt->sig = 0xa0; + fdpt->spt = spt; + fdpt->cyl = cylinders; + fdpt->head = heads; + fdpt->lspt = lgeo.spt; + sum = 0; + for (i = 0; i < 0xf; i++) + sum += *((uint8_t __far *)fdpt + i); + sum = -sum; + fdpt->csum = sum; + } + + // fill hdidmap + bios_dsk->hdidmap[hdcount] = device; + hdcount++; + } + + // Now we send an IDENTIFY command to ATAPI device + if (type == DSK_TYPE_ATAPI) { + uint8_t type, removable, mode; + uint16_t blksize; + + // Temporary values to do the transfer + bios_dsk->devices[device].device = DSK_DEVICE_CDROM; + bios_dsk->devices[device].mode = ATA_MODE_PIO16; + bios_dsk->drqp.buffer = buffer; + bios_dsk->drqp.dev_id = device; + + if (ata_cmd_data_in(bios_dsk, ATA_CMD_IDENTIFY_PACKET, 1) != 0) + BX_PANIC("ata-detect: Failed to detect ATAPI device\n"); + + type = *(buffer+1) & 0x1f; + removable = (*(buffer+0) & 0x80) ? 1 : 0; +#if VBOX_BIOS_CPU >= 80386 + mode = *(buffer+96) ? ATA_MODE_PIO32 : ATA_MODE_PIO16; +#else + mode = ATA_MODE_PIO16; +#endif + blksize = 2048; + + bios_dsk->devices[device].device = type; + bios_dsk->devices[device].removable = removable; + bios_dsk->devices[device].mode = mode; + bios_dsk->devices[device].blksize = blksize; + + // fill cdidmap + bios_dsk->cdidmap[cdcount] = device; + cdcount++; + } + + { + uint32_t sizeinmb; + uint16_t ataversion; + uint8_t version, model[41]; + int i; + + switch (type) { + case DSK_TYPE_ATA: + sizeinmb = (bios_dsk->devices[device].sectors >> 11); + case DSK_TYPE_ATAPI: + // Read ATA/ATAPI version + ataversion = ((uint16_t)(*(buffer+161))<<8) | *(buffer+160); + for (version = 15; version > 0; version--) { + if ((ataversion & (1 << version)) !=0 ) + break; + } + + // Read model name + for (i = 0; i < 20; i++ ) { + *(model+(i*2)) = *(buffer+(i*2)+54+1); + *(model+(i*2)+1) = *(buffer+(i*2)+54); + } + + // Reformat + *(model+40) = 0x00; + for ( i = 39; i > 0; i-- ){ + if (*(model+i) == 0x20) + *(model+i) = 0x00; + else + break; + } + break; + } + +#ifdef VBOXz + // we don't want any noisy output for now +#else /* !VBOX */ + switch (type) { + int c; + case DSK_TYPE_ATA: + printf("ata%d %s: ", channel, slave ? " slave" : "master"); + i=0; + while(c=*(model+i++)) + printf("%c", c); + printf(" ATA-%d Hard-Disk (%lu MBytes)\n", version, sizeinmb); + break; + case DSK_TYPE_ATAPI: + printf("ata%d %s: ", channel, slave ? " slave" : "master"); + i=0; + while(c=*(model+i++)) + printf("%c", c); + if (bios_dsk->devices[device].device == DSK_DEVICE_CDROM) + printf(" ATAPI-%d CD-ROM/DVD-ROM\n", version); + else + printf(" ATAPI-%d Device\n", version); + break; + case DSK_TYPE_UNKNOWN: + printf("ata%d %s: Unknown device\n", channel , slave ? " slave" : "master"); + break; + } +#endif /* !VBOX */ + } + } + + // Store the devices counts + bios_dsk->hdcount = hdcount; + bios_dsk->cdcount = cdcount; + write_byte(0x40,0x75, hdcount); + +#ifdef VBOX + // we don't want any noisy output for now +#else /* !VBOX */ + printf("\n"); +#endif /* !VBOX */ + + // FIXME : should use bios=cmos|auto|disable bits + // FIXME : should know about translation bits + // FIXME : move hard_drive_post here + +} + +// --------------------------------------------------------------------------- +// ATA/ATAPI driver : execute a data-out command +// --------------------------------------------------------------------------- + // returns + // 0 : no error + // 1 : BUSY bit set + // 2 : read error + // 3 : expected DRQ=1 + // 4 : no sectors left to read/verify + // 5 : more sectors to read/verify + // 6 : no sectors left to write + // 7 : more sectors to write +uint16_t ata_cmd_data_out(bio_dsk_t __far *bios_dsk, uint16_t command, uint16_t count) +{ + uint64_t lba; + char __far *buffer; + uint16_t iobase1, iobase2, blksize; + uint16_t cylinder; + uint16_t head; + uint16_t sector; + uint16_t device; + uint8_t channel, slave; + uint8_t status, mode; + + device = bios_dsk->drqp.dev_id; + channel = device / 2; + slave = device % 2; + + iobase1 = bios_dsk->channels[channel].iobase1; + iobase2 = bios_dsk->channels[channel].iobase2; + mode = bios_dsk->devices[device].mode; + blksize = 0x200; // was = bios_dsk->devices[device].blksize; +#if VBOX_BIOS_CPU >= 80386 + if (mode == ATA_MODE_PIO32) + blksize >>= 2; + else +#endif + blksize >>= 1; + + status = inb(iobase1 + ATA_CB_STAT); + if (status & ATA_CB_STAT_BSY) + { + // Enable interrupts + outb(iobase2+ATA_CB_DC, ATA_CB_DC_HD15); + return 1; + } + + lba = bios_dsk->drqp.lba; + buffer = bios_dsk->drqp.buffer; + sector = bios_dsk->drqp.sector; + cylinder = bios_dsk->drqp.cylinder; + head = bios_dsk->drqp.head; + + // sector will be 0 only on lba access. Convert to lba-chs + if (sector == 0) { + if (lba + count >= 268435456) + { + sector = (lba >> 24) & 0x00ff; + cylinder = (lba >> 32) & 0xffff; + outb(iobase1 + ATA_CB_SC, (count & 0xff00) >> 8); + outb(iobase1 + ATA_CB_SN, sector); + outb(iobase1 + ATA_CB_CL, cylinder & 0x00ff); + outb(iobase1 + ATA_CB_CH, cylinder >> 8); + /* Leave the bottom 24 bits as is, they are treated correctly by the + * LBA28 code path. */ + lba &= 0xffffff; + } + sector = (uint16_t) (lba & 0x000000ffL); + lba >>= 8; + cylinder = (uint16_t) (lba & 0x0000ffffL); + lba >>= 16; + head = ((uint16_t) (lba & 0x0000000fL)) | 0x40; + } + + outb(iobase2 + ATA_CB_DC, ATA_CB_DC_HD15 | ATA_CB_DC_NIEN); + outb(iobase1 + ATA_CB_FR, 0x00); + outb(iobase1 + ATA_CB_SC, count); + outb(iobase1 + ATA_CB_SN, sector); + outb(iobase1 + ATA_CB_CL, cylinder & 0x00ff); + outb(iobase1 + ATA_CB_CH, cylinder >> 8); + outb(iobase1 + ATA_CB_DH, (slave ? ATA_CB_DH_DEV1 : ATA_CB_DH_DEV0) | (uint8_t) head ); + outb(iobase1 + ATA_CB_CMD, command); + + while (1) { + status = inb(iobase1 + ATA_CB_STAT); + if ( !(status & ATA_CB_STAT_BSY) ) + break; + } + + if (status & ATA_CB_STAT_ERR) { + BX_DEBUG_ATA("%s: write error\n", __func__); + // Enable interrupts + outb(iobase2+ATA_CB_DC, ATA_CB_DC_HD15); + return 2; + } else if ( !(status & ATA_CB_STAT_DRQ) ) { + BX_DEBUG_ATA("%s: DRQ not set (status %02x)\n", __func__, (unsigned) status); + // Enable interrupts + outb(iobase2+ATA_CB_DC, ATA_CB_DC_HD15); + return 3; + } + + // FIXME : move seg/off translation here + + int_enable(); // enable higher priority interrupts + + while (1) { + + // adjust if there will be an overrun. 2K max sector size + if (FP_OFF(buffer) >= 0xF800) + buffer = MK_FP(FP_SEG(buffer) + 0x80, FP_OFF(buffer) - 0x800); + +#if VBOX_BIOS_CPU >= 80386 + if (mode == ATA_MODE_PIO32) + buffer = rep_outsd(buffer, blksize, iobase1); + else +#endif + buffer = rep_outsw(buffer, blksize, iobase1); + + bios_dsk->drqp.trsfsectors++; + count--; + while (1) { + status = inb(iobase1 + ATA_CB_STAT); + if ( !(status & ATA_CB_STAT_BSY) ) + break; + } + if (count == 0) { + if ( (status & (ATA_CB_STAT_BSY | ATA_CB_STAT_RDY | ATA_CB_STAT_DF | ATA_CB_STAT_DRQ | ATA_CB_STAT_ERR) ) + != ATA_CB_STAT_RDY ) { + BX_DEBUG_ATA("%s: no sectors left (status %02x)\n", __func__, (unsigned) status); + // Enable interrupts + outb(iobase2+ATA_CB_DC, ATA_CB_DC_HD15); + return 6; + } + break; + } + else { + if ( (status & (ATA_CB_STAT_BSY | ATA_CB_STAT_RDY | ATA_CB_STAT_DRQ | ATA_CB_STAT_ERR) ) + != (ATA_CB_STAT_RDY | ATA_CB_STAT_DRQ) ) { + BX_DEBUG_ATA("%s: more sectors left (status %02x)\n", __func__, (unsigned) status); + // Enable interrupts + outb(iobase2+ATA_CB_DC, ATA_CB_DC_HD15); + return 7; + } + continue; + } + } + // Enable interrupts + outb(iobase2+ATA_CB_DC, ATA_CB_DC_HD15); + return 0; +} + + +/** + * Read sectors from an attached ATA device. + * + * @returns status code. + * @param bios_dsk Pointer to disk request packet (in the + * EBDA). + */ +int ata_read_sectors(bio_dsk_t __far *bios_dsk) +{ + uint16_t n_sect; + int status; + uint8_t device_id; + + device_id = bios_dsk->drqp.dev_id; + n_sect = bios_dsk->drqp.nsect; + + if (bios_dsk->drqp.sector) { + /* CHS addressing. */ + bios_dsk->devices[device_id].blksize = n_sect * 0x200; + BX_DEBUG_ATA("%s: reading %u sectors (CHS)\n", __func__, n_sect); + status = ata_cmd_data_in(bios_dsk, ATA_CMD_READ_MULTIPLE, n_sect); + bios_dsk->devices[device_id].blksize = 0x200; + } else { + /* LBA addressing. */ + if (bios_dsk->drqp.lba + n_sect >= 268435456) { + BX_DEBUG_ATA("%s: reading %u sector (LBA,EXT)\n", __func__, n_sect); + status = ata_cmd_data_in(bios_dsk, ATA_CMD_READ_SECTORS_EXT, n_sect); + } else { + bios_dsk->devices[device_id].blksize = n_sect * 0x200; + BX_DEBUG_ATA("%s: reading %u sector (LBA,MULT)\n", __func__, n_sect); + status = ata_cmd_data_in(bios_dsk, ATA_CMD_READ_MULTIPLE, n_sect); + bios_dsk->devices[device_id].blksize = 0x200; + } + } + return status; +} + +/** + * Write sectors to an attached ATA device. + * + * @returns status code. + * @param bios_dsk Pointer to disk request packet (in the + * EBDA). + */ +int ata_write_sectors(bio_dsk_t __far *bios_dsk) +{ + uint16_t n_sect; + + n_sect = bios_dsk->drqp.nsect; + + if (bios_dsk->drqp.sector) { + /* CHS addressing. */ + return ata_cmd_data_out(bios_dsk, ATA_CMD_WRITE_SECTORS, n_sect); + } else { + /* LBA addressing. */ + if (bios_dsk->drqp.lba + n_sect >= 268435456) + return ata_cmd_data_out(bios_dsk, ATA_CMD_WRITE_SECTORS_EXT, n_sect); + else + return ata_cmd_data_out(bios_dsk, ATA_CMD_WRITE_SECTORS, n_sect); + } +} + + +// --------------------------------------------------------------------------- +// ATA/ATAPI driver : execute a packet command +// --------------------------------------------------------------------------- + // returns + // 0 : no error + // 1 : error in parameters + // 2 : BUSY bit set + // 3 : error + // 4 : not ready +uint16_t ata_cmd_packet(uint16_t device, uint8_t cmdlen, char __far *cmdbuf, + uint16_t header, uint32_t length, uint8_t inout, char __far *buffer) +{ + uint16_t iobase1, iobase2; + uint16_t lcount, lbefore, lafter, count; + uint8_t channel, slave; + uint8_t status, mode, lmode; + uint32_t transfer; + bio_dsk_t __far *bios_dsk; + + bios_dsk = read_word(0x0040, 0x000E) :> &EbdaData->bdisk; + + channel = device / 2; + slave = device % 2; + + // Data out is not supported yet + if (inout == ATA_DATA_OUT) { + BX_INFO("%s: DATA_OUT not supported yet\n", __func__); + return 1; + } + + // The header length must be even + if (header & 1) { + BX_DEBUG_ATA("%s: header must be even (%04x)\n", __func__, header); + return 1; + } + + iobase1 = bios_dsk->channels[channel].iobase1; + iobase2 = bios_dsk->channels[channel].iobase2; + mode = bios_dsk->devices[device].mode; + transfer = 0L; + + if (cmdlen < 12) + cmdlen = 12; + if (cmdlen > 12) + cmdlen = 16; + cmdlen >>= 1; + + // Reset count of transferred data + /// @todo clear in calling code? + bios_dsk->drqp.trsfsectors = 0; + bios_dsk->drqp.trsfbytes = 0; + + status = inb(iobase1 + ATA_CB_STAT); + if (status & ATA_CB_STAT_BSY) + return 2; + + outb(iobase2 + ATA_CB_DC, ATA_CB_DC_HD15 | ATA_CB_DC_NIEN); + // outb(iobase1 + ATA_CB_FR, 0x00); + // outb(iobase1 + ATA_CB_SC, 0x00); + // outb(iobase1 + ATA_CB_SN, 0x00); + outb(iobase1 + ATA_CB_CL, 0xfff0 & 0x00ff); + outb(iobase1 + ATA_CB_CH, 0xfff0 >> 8); + outb(iobase1 + ATA_CB_DH, slave ? ATA_CB_DH_DEV1 : ATA_CB_DH_DEV0); + outb(iobase1 + ATA_CB_CMD, ATA_CMD_PACKET); + + // Device should ok to receive command + while (1) { + status = inb(iobase1 + ATA_CB_STAT); + if ( !(status & ATA_CB_STAT_BSY) ) break; + } + + if (status & ATA_CB_STAT_CHK) { + BX_DEBUG_ATA("%s: error, status is %02x\n", __func__, status); + // Enable interrupts + outb(iobase2+ATA_CB_DC, ATA_CB_DC_HD15); + return 3; + } else if ( !(status & ATA_CB_STAT_DRQ) ) { + BX_DEBUG_ATA("%s: DRQ not set (status %02x)\n", __func__, (unsigned) status); + // Enable interrupts + outb(iobase2+ATA_CB_DC, ATA_CB_DC_HD15); + return 4; + } + + int_enable(); // enable higher priority interrupts + + // Normalize address + BX_DEBUG_ATA("acp1 buffer ptr: %04x:%04x wlen %04x\n", FP_SEG(cmdbuf), FP_OFF(cmdbuf), cmdlen); + cmdbuf = MK_FP(FP_SEG(cmdbuf) + FP_OFF(cmdbuf) / 16 , FP_OFF(cmdbuf) % 16); + // cmdseg += (cmdoff / 16); + // cmdoff %= 16; + + // Send command to device + rep_outsw(cmdbuf, cmdlen, iobase1); + + if (inout == ATA_DATA_NO) { + status = inb(iobase1 + ATA_CB_STAT); + } + else { + while (1) { + + while (1) { + status = inb(iobase1 + ATA_CB_STAT); + if ( !(status & ATA_CB_STAT_BSY) ) + break; + } + + // Check if command completed + if ( (status & (ATA_CB_STAT_BSY | ATA_CB_STAT_DRQ) ) ==0 ) + break; + + if (status & ATA_CB_STAT_CHK) { + BX_DEBUG_ATA("%s: error (status %02x)\n", __func__, status); + // Enable interrupts + outb(iobase2+ATA_CB_DC, ATA_CB_DC_HD15); + return 3; + } + + // Device must be ready to send data + if ( (status & (ATA_CB_STAT_BSY | ATA_CB_STAT_RDY | ATA_CB_STAT_DRQ | ATA_CB_STAT_CHK) ) + != (ATA_CB_STAT_RDY | ATA_CB_STAT_DRQ) ) { + BX_DEBUG_ATA("%s: not ready (status %02x)\n", __func__, status); + // Enable interrupts + outb(iobase2+ATA_CB_DC, ATA_CB_DC_HD15); + return 4; + } + + // Normalize address + BX_DEBUG_ATA("acp2 buffer ptr: %04x:%04x\n", FP_SEG(buffer), FP_OFF(buffer)); + buffer = MK_FP(FP_SEG(buffer) + FP_OFF(buffer) / 16 , FP_OFF(buffer) % 16); + // bufseg += (bufoff / 16); + // bufoff %= 16; + + // Get the byte count + lcount = ((uint16_t)(inb(iobase1 + ATA_CB_CH))<<8)+inb(iobase1 + ATA_CB_CL); + + // adjust to read what we want + if (header>lcount) { + lbefore = lcount; + header -= lcount; + lcount = 0; + } + else { + lbefore = header; + header = 0; + lcount -= lbefore; + } + + if (lcount>length) { + lafter = lcount - length; + lcount = length; + length = 0; + } + else { + lafter = 0; + length -= lcount; + } + + // Save byte count + count = lcount; + + BX_DEBUG_ATA("Trying to read %04x bytes (%04x %04x %04x) ",lbefore+lcount+lafter,lbefore,lcount,lafter); + BX_DEBUG_ATA("to 0x%04x:0x%04x\n",FP_SEG(buffer),FP_OFF(buffer)); + + // If counts not dividable by 4, use 16bits mode + lmode = mode; + if (lbefore & 0x03) + lmode = ATA_MODE_PIO16; + if (lcount & 0x03) + lmode = ATA_MODE_PIO16; + if (lafter & 0x03) + lmode = ATA_MODE_PIO16; + + // adds an extra byte if count are odd. before is always even + if (lcount & 0x01) { + lcount += 1; + if ((lafter > 0) && (lafter & 0x01)) { + lafter -= 1; + } + } + +#if VBOX_BIOS_CPU >= 80386 + if (lmode == ATA_MODE_PIO32) { + lcount >>= 2; + lbefore >>= 2; + lafter >>= 2; + } else +#endif + { + lcount >>= 1; + lbefore >>= 1; + lafter >>= 1; + } + +#if VBOX_BIOS_CPU >= 80386 + if (lmode == ATA_MODE_PIO32) { + if (lbefore) + insd_discard(lbefore, iobase1); + rep_insd(buffer, lcount, iobase1); + if (lafter) + insd_discard(lafter, iobase1); + } else +#endif + { + if (lbefore) + insw_discard(lbefore, iobase1); + rep_insw(buffer, lcount, iobase1); + if (lafter) + insw_discard(lafter, iobase1); + } + + + // Compute new buffer address + buffer += count; + + // Save transferred bytes count + transfer += count; + bios_dsk->drqp.trsfbytes = transfer; + } + } + + // Final check, device must be ready + if ( (status & (ATA_CB_STAT_BSY | ATA_CB_STAT_RDY | ATA_CB_STAT_DF | ATA_CB_STAT_DRQ | ATA_CB_STAT_CHK) ) + != ATA_CB_STAT_RDY ) { + BX_DEBUG_ATA("%s: not ready (status %02x)\n", __func__, (unsigned) status); + // Enable interrupts + outb(iobase2+ATA_CB_DC, ATA_CB_DC_HD15); + return 4; + } + + // Enable interrupts + outb(iobase2+ATA_CB_DC, ATA_CB_DC_HD15); + return 0; +} + +// --------------------------------------------------------------------------- +// ATA/ATAPI driver : reset device; intended for ATAPI devices +// --------------------------------------------------------------------------- + // returns + // 0 : no error + // 1 : error +uint16_t ata_soft_reset(uint16_t device) +{ + uint16_t iobase1, iobase2; + uint8_t channel, slave; + uint8_t status; + bio_dsk_t __far *bios_dsk; + + bios_dsk = read_word(0x0040, 0x000E) :> &EbdaData->bdisk; + + channel = device / 2; + slave = device % 2; + + iobase1 = bios_dsk->channels[channel].iobase1; + iobase2 = bios_dsk->channels[channel].iobase2; + + /* Send a reset command to the device. */ + outb(iobase2 + ATA_CB_DC, ATA_CB_DC_HD15 | ATA_CB_DC_NIEN); + outb(iobase1 + ATA_CB_DH, slave ? ATA_CB_DH_DEV1 : ATA_CB_DH_DEV0); + outb(iobase1 + ATA_CB_CMD, ATA_CMD_DEVICE_RESET); + + /* Wait for the device to clear BSY. */ + while (1) { + status = inb(iobase1 + ATA_CB_STAT); + if ( !(status & ATA_CB_STAT_BSY) ) break; + } + + /* Final check, device must be ready */ + if ( (status & (ATA_CB_STAT_BSY | ATA_CB_STAT_RDY | ATA_CB_STAT_DF | ATA_CB_STAT_DRQ | ATA_CB_STAT_CHK) ) + != ATA_CB_STAT_RDY ) { + BX_DEBUG_ATA("%s: not ready (status %02x)\n", __func__, (unsigned) status); + /* Enable interrupts */ + outb(iobase2 + ATA_CB_DC, ATA_CB_DC_HD15); + return 1; + } + + /* Enable interrupts */ + outb(iobase2+ATA_CB_DC, ATA_CB_DC_HD15); + return 0; +} + + +// --------------------------------------------------------------------------- +// End of ATA/ATAPI Driver +// --------------------------------------------------------------------------- diff --git a/src/VBox/Devices/PC/BIOS/ata.h b/src/VBox/Devices/PC/BIOS/ata.h new file mode 100644 index 00000000..2af0fe38 --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/ata.h @@ -0,0 +1,190 @@ +/* $Id: ata.h $ */ +/** @file + * PC BIOS - ??? + */ + +/* + * Copyright (C) 2006-2019 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * -------------------------------------------------------------------- + * + * This code is based on: + * + * ROM BIOS for use with Bochs/Plex86/QEMU emulation environment + * + * Copyright (C) 2002 MandrakeSoft S.A. + * + * MandrakeSoft S.A. + * 43, rue d'Aboukir + * 75002 Paris - France + * http://www.linux-mandrake.com/ + * http://www.mandrakesoft.com/ + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +/* + * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice + * other than GPL or LGPL is available it will apply instead, Oracle elects to use only + * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where + * a choice of LGPL license versions is made available with the language indicating + * that LGPLv2 or any later version may be used, or where a choice of which version + * of the LGPL is applied is otherwise unspecified. + */ + +#ifndef VBOX_INCLUDED_SRC_PC_BIOS_ata_h +#define VBOX_INCLUDED_SRC_PC_BIOS_ata_h +#ifndef RT_WITHOUT_PRAGMA_ONCE +# pragma once +#endif + +#define ATA_DATA_NO 0x00 +#define ATA_DATA_IN 0x01 +#define ATA_DATA_OUT 0x02 + +#define ATA_IFACE_NONE 0x00 +#define ATA_IFACE_ISA 0x00 +#define ATA_IFACE_PCI 0x01 + +#define ATA_MODE_NONE 0x00 +#define ATA_MODE_PIO16 0x00 +#if VBOX_BIOS_CPU >= 80386 +# define ATA_MODE_PIO32 0x01 +#endif +#define ATA_MODE_ISADMA 0x02 +#define ATA_MODE_PCIDMA 0x03 +#define ATA_MODE_USEIRQ 0x10 + +// Global defines -- ATA register and register bits. +// command block & control block regs +#define ATA_CB_DATA 0 // data reg in/out pio_base_addr1+0 +#define ATA_CB_ERR 1 // error in pio_base_addr1+1 +#define ATA_CB_FR 1 // feature reg out pio_base_addr1+1 +#define ATA_CB_SC 2 // sector count in/out pio_base_addr1+2 +#define ATA_CB_SN 3 // sector number in/out pio_base_addr1+3 +#define ATA_CB_CL 4 // cylinder low in/out pio_base_addr1+4 +#define ATA_CB_CH 5 // cylinder high in/out pio_base_addr1+5 +#define ATA_CB_DH 6 // device head in/out pio_base_addr1+6 +#define ATA_CB_STAT 7 // primary status in pio_base_addr1+7 +#define ATA_CB_CMD 7 // command out pio_base_addr1+7 +#define ATA_CB_ASTAT 6 // alternate status in pio_base_addr2+6 +#define ATA_CB_DC 6 // device control out pio_base_addr2+6 +#define ATA_CB_DA 7 // device address in pio_base_addr2+7 + +#define ATA_CB_ER_ICRC 0x80 // ATA Ultra DMA bad CRC +#define ATA_CB_ER_BBK 0x80 // ATA bad block +#define ATA_CB_ER_UNC 0x40 // ATA uncorrected error +#define ATA_CB_ER_MC 0x20 // ATA media change +#define ATA_CB_ER_IDNF 0x10 // ATA id not found +#define ATA_CB_ER_MCR 0x08 // ATA media change request +#define ATA_CB_ER_ABRT 0x04 // ATA command aborted +#define ATA_CB_ER_NTK0 0x02 // ATA track 0 not found +#define ATA_CB_ER_NDAM 0x01 // ATA address mark not found + +#define ATA_CB_ER_P_SNSKEY 0xf0 // ATAPI sense key (mask) +#define ATA_CB_ER_P_MCR 0x08 // ATAPI Media Change Request +#define ATA_CB_ER_P_ABRT 0x04 // ATAPI command abort +#define ATA_CB_ER_P_EOM 0x02 // ATAPI End of Media +#define ATA_CB_ER_P_ILI 0x01 // ATAPI Illegal Length Indication + +// ATAPI Interrupt Reason bits in the Sector Count reg (CB_SC) +#define ATA_CB_SC_P_TAG 0xf8 // ATAPI tag (mask) +#define ATA_CB_SC_P_REL 0x04 // ATAPI release +#define ATA_CB_SC_P_IO 0x02 // ATAPI I/O +#define ATA_CB_SC_P_CD 0x01 // ATAPI C/D + +// bits 7-4 of the device/head (CB_DH) reg +#define ATA_CB_DH_DEV0 0xa0 // select device 0 +#define ATA_CB_DH_DEV1 0xb0 // select device 1 + +// status reg (CB_STAT and CB_ASTAT) bits +#define ATA_CB_STAT_BSY 0x80 // busy +#define ATA_CB_STAT_RDY 0x40 // ready +#define ATA_CB_STAT_DF 0x20 // device fault +#define ATA_CB_STAT_WFT 0x20 // write fault (old name) +#define ATA_CB_STAT_SKC 0x10 // seek complete +#define ATA_CB_STAT_SERV 0x10 // service +#define ATA_CB_STAT_DRQ 0x08 // data request +#define ATA_CB_STAT_CORR 0x04 // corrected +#define ATA_CB_STAT_IDX 0x02 // index +#define ATA_CB_STAT_ERR 0x01 // error (ATA) +#define ATA_CB_STAT_CHK 0x01 // check (ATAPI) + +// device control reg (CB_DC) bits +#define ATA_CB_DC_HD15 0x08 // bit should always be set to one +#define ATA_CB_DC_SRST 0x04 // soft reset +#define ATA_CB_DC_NIEN 0x02 // disable interrupts + +// Most mandatory and optional ATA commands (from ATA-3), +#define ATA_CMD_CFA_ERASE_SECTORS 0xC0 +#define ATA_CMD_CFA_REQUEST_EXT_ERR_CODE 0x03 +#define ATA_CMD_CFA_TRANSLATE_SECTOR 0x87 +#define ATA_CMD_CFA_WRITE_MULTIPLE_WO_ERASE 0xCD +#define ATA_CMD_CFA_WRITE_SECTORS_WO_ERASE 0x38 +#define ATA_CMD_CHECK_POWER_MODE1 0xE5 +#define ATA_CMD_CHECK_POWER_MODE2 0x98 +#define ATA_CMD_DEVICE_RESET 0x08 +#define ATA_CMD_EXECUTE_DEVICE_DIAGNOSTIC 0x90 +#define ATA_CMD_FLUSH_CACHE 0xE7 +#define ATA_CMD_FORMAT_TRACK 0x50 +#define ATA_CMD_IDENTIFY_DEVICE 0xEC +#define ATA_CMD_IDENTIFY_PACKET 0xA1 +#define ATA_CMD_IDLE1 0xE3 +#define ATA_CMD_IDLE2 0x97 +#define ATA_CMD_IDLE_IMMEDIATE1 0xE1 +#define ATA_CMD_IDLE_IMMEDIATE2 0x95 +#define ATA_CMD_INITIALIZE_DRIVE_PARAMETERS 0x91 +#define ATA_CMD_INITIALIZE_DEVICE_PARAMETERS 0x91 +#define ATA_CMD_NOP 0x00 +#define ATA_CMD_PACKET 0xA0 +#define ATA_CMD_READ_BUFFER 0xE4 +#define ATA_CMD_READ_DMA 0xC8 +#define ATA_CMD_READ_DMA_QUEUED 0xC7 +#define ATA_CMD_READ_MULTIPLE 0xC4 +#define ATA_CMD_READ_SECTORS 0x20 +#define ATA_CMD_READ_SECTORS_EXT 0x24 +#define ATA_CMD_READ_MULTIPLE_EXT 0x29 +#define ATA_CMD_WRITE_MULTIPLE_EXT 0x39 +#define ATA_CMD_READ_VERIFY_SECTORS 0x40 +#define ATA_CMD_RECALIBRATE 0x10 +#define ATA_CMD_SEEK 0x70 +#define ATA_CMD_SET_FEATURES 0xEF +#define ATA_CMD_SET_MULTIPLE_MODE 0xC6 +#define ATA_CMD_SLEEP1 0xE6 +#define ATA_CMD_SLEEP2 0x99 +#define ATA_CMD_STANDBY1 0xE2 +#define ATA_CMD_STANDBY2 0x96 +#define ATA_CMD_STANDBY_IMMEDIATE1 0xE0 +#define ATA_CMD_STANDBY_IMMEDIATE2 0x94 +#define ATA_CMD_WRITE_BUFFER 0xE8 +#define ATA_CMD_WRITE_DMA 0xCA +#define ATA_CMD_WRITE_DMA_QUEUED 0xCC +#define ATA_CMD_WRITE_MULTIPLE 0xC5 +#define ATA_CMD_WRITE_SECTORS 0x30 +#define ATA_CMD_WRITE_SECTORS_EXT 0x34 +#define ATA_CMD_WRITE_VERIFY 0x3C + +extern void ata_reset(uint16_t device); + +#endif /* !VBOX_INCLUDED_SRC_PC_BIOS_ata_h */ + diff --git a/src/VBox/Devices/PC/BIOS/bios.c b/src/VBox/Devices/PC/BIOS/bios.c new file mode 100644 index 00000000..15481b08 --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/bios.c @@ -0,0 +1,191 @@ +/* $Id: bios.c $ */ +/** @file + * PC BIOS - ??? + */ + +/* + * Copyright (C) 2006-2019 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * -------------------------------------------------------------------- + * + * This code is based on: + * + * ROM BIOS for use with Bochs/Plex86/QEMU emulation environment + * + * Copyright (C) 2002 MandrakeSoft S.A. + * + * MandrakeSoft S.A. + * 43, rue d'Aboukir + * 75002 Paris - France + * http://www.linux-mandrake.com/ + * http://www.mandrakesoft.com/ + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +/* + * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice + * other than GPL or LGPL is available it will apply instead, Oracle elects to use only + * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where + * a choice of LGPL license versions is made available with the language indicating + * that LGPLv2 or any later version may be used, or where a choice of which version + * of the LGPL is applied is otherwise unspecified. + */ + + +#include <stdint.h> +#include "inlines.h" +#include "biosint.h" +#ifndef VBOX_VERSION_STRING +#include <VBox/version.h> +#endif + +static const char bios_cvs_version_string[] = "VirtualBox " VBOX_VERSION_STRING; + +uint8_t inb_cmos(uint8_t cmos_reg) +{ + uint8_t cmos_port = 0x70; + + if (cmos_reg >= 0x80) + cmos_port += 2; + outb(cmos_port, cmos_reg); + return inb(cmos_port + 1); +} + +void outb_cmos(uint8_t cmos_reg, uint8_t val) +{ + uint8_t cmos_port = 0x70; + + if (cmos_reg >= 0x80) + cmos_port += 2; + outb(cmos_port, cmos_reg); + outb(cmos_port + 1, val); +} + +void BIOSCALL dummy_isr_function(pusha_regs_t regs, uint16_t es, + uint16_t ds, iret_addr_t iret_addr) +{ + // Interrupt handler for unexpected hardware interrupts. We have to clear + // the PIC because if we don't, the next EOI will clear the wrong interrupt + // and all hell will break loose! This routine also masks the unexpected + // interrupt so it will generally be called only once for each unexpected + // interrupt level. + uint8_t isrA, isrB, imr, last_int = 0xFF; + + outb(PIC_MASTER, PIC_CMD_RD_ISR); // Read master ISR + isrA = inb(PIC_MASTER); + if (isrA) { + outb(PIC_SLAVE, PIC_CMD_RD_ISR); // Read slave ISR + isrB = inb(PIC_SLAVE); + if (isrB) { + imr = inb(PIC_SLAVE_MASK); + outb(PIC_SLAVE_MASK, imr | isrB ); // Mask this interrupt + outb(PIC_SLAVE, PIC_CMD_EOI); // Send EOI on slave PIC + } else { + imr = inb(PIC_MASTER_MASK); + isrA &= 0xFB; // Never mask the cascade interrupt + outb(PIC_MASTER_MASK, imr | isrA); // Mask this interrupt + } + outb(PIC_MASTER, PIC_CMD_EOI); // Send EOI on master PIC + last_int = isrA; + } + write_byte(0x40, 0x6B, last_int); // Write INTR_FLAG +} + + +void BIOSCALL nmi_handler_msg(void) +{ + BX_PANIC("NMI Handler called\n"); +} + +void BIOSCALL int18_panic_msg(void) +{ + BX_PANIC("INT18: BOOT FAILURE\n"); +} + +void BIOSCALL log_bios_start(void) +{ +#if BX_DEBUG_SERIAL + outb(BX_DEBUG_PORT+UART_LCR, 0x03); /* setup for serial logging: 8N1 */ +#endif + BX_INFO("%s\n", bios_cvs_version_string); +} + +/* Set video mode. */ +void set_mode(uint8_t mode); +#pragma aux set_mode = \ + "mov ah, 0" \ + "int 10h" \ + parm [al] modify [ax]; + +/// @todo restore +//#undef VBOX + +#define BX_PCIBIOS 1 +#define BX_APPNAME "VirtualBox" +#define BIOS_BUILD_DATE __DATE__ +//-------------------------------------------------------------------------- +// print_bios_banner +// displays a the bios version +//-------------------------------------------------------------------------- +void BIOSCALL print_bios_banner(void) +{ +#ifdef VBOX + // Skip the logo if a warm boot is requested. + uint16_t warm_boot = read_word(0x0040,0x0072); + write_word(0x0040,0x0072, 0); + if (warm_boot == 0x1234) + { + /* Only set text mode. */ + set_mode(3); + return; + } + /* show graphical logo */ + show_logo(); +#else /* !VBOX */ + char *bios_conf; + + /* Avoid using preprocessing directives within macro arguments. */ + bios_conf = +#ifdef __WATCOMC__ + "watcom " +#endif +#if BX_APM + "apmbios " +#endif +#if BX_PCIBIOS + "pcibios " +#endif +#if BX_ELTORITO_BOOT + "eltorito " +#endif +#if BX_ROMBIOS32 + "rombios32 " +#endif + "\n\n"; + + printf(BX_APPNAME" BIOS - build: %s\n%s\nOptions: ", + BIOS_BUILD_DATE, bios_cvs_version_string); + printf(bios_conf, 0); +#endif /* VBOX */ +} diff --git a/src/VBox/Devices/PC/BIOS/biosint.h b/src/VBox/Devices/PC/BIOS/biosint.h new file mode 100644 index 00000000..befd794f --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/biosint.h @@ -0,0 +1,311 @@ +/* $Id: biosint.h $ */ +/** @file + * PC BIOS - ??? + */ + +/* + * Copyright (C) 2006-2019 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * -------------------------------------------------------------------- + * + * This code is based on: + * + * ROM BIOS for use with Bochs/Plex86/QEMU emulation environment + * + * Copyright (C) 2002 MandrakeSoft S.A. + * + * MandrakeSoft S.A. + * 43, rue d'Aboukir + * 75002 Paris - France + * http://www.linux-mandrake.com/ + * http://www.mandrakesoft.com/ + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +/* + * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice + * other than GPL or LGPL is available it will apply instead, Oracle elects to use only + * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where + * a choice of LGPL license versions is made available with the language indicating + * that LGPLv2 or any later version may be used, or where a choice of which version + * of the LGPL is applied is otherwise unspecified. + */ + +#ifndef VBOX_INCLUDED_SRC_PC_BIOS_biosint_h +#define VBOX_INCLUDED_SRC_PC_BIOS_biosint_h +#ifndef RT_WITHOUT_PRAGMA_ONCE +# pragma once +#endif + +/* Compile-time assertion macro. */ +#define ct_assert(a) extern int ct_ass_arr[!!(a) == 1]; + +/* For functions called from assembly code. */ +#define BIOSCALL __cdecl + +#define BX_ELTORITO_BOOT 1 +#define BX_PCIBIOS 1 +#define BX_USE_PS2_MOUSE 1 +#define BX_APM 1 + +#ifndef DEBUG_ATA +# define DEBUG_ATA 0 +#endif +#ifdef DEBUG_AHCI +# define DEBUG_AHCI 0 +#endif +#ifndef DEBUG_SCSI +# define DEBUG_SCSI 0 +#endif +#ifndef DEBUG_CD_BOOT +# define DEBUG_CD_BOOT 0 +#endif +#ifndef DEBUG_ELTORITO +# define DEBUG_ELTORITO 0 +#endif +#ifndef DEBUG_INT13_HD +# define DEBUG_INT13_HD 0 +#endif +#ifndef DEBUG_INT13_FL +# define DEBUG_INT13_FL 0 +#endif +#ifndef DEBUG_INT13_CD +# define DEBUG_INT13_CD 0 +#endif +#ifndef DEBUG_INT15 +# define DEBUG_INT15 0 +#endif +#ifndef DEBUG_INT15_MS +# define DEBUG_INT15_MS 0 +#endif +#ifndef DEBUG_INT16 +# define DEBUG_INT16 0 +#endif +#ifndef DEBUG_INT1A +# define DEBUG_INT1A 0 +#endif +#ifndef DEBUG_INT74 +# define DEBUG_INT74 0 +#endif +#ifndef DEBUG_PCI +# define DEBUG_PCI 0 +#endif +#ifndef DEBUG_APM +# define DEBUG_APM 0 +#endif +#ifndef DEBUG_POST +# define DEBUG_POST 0 +#endif + +#define FP_OFF(p) ((unsigned)(p)) +#define FP_SEG(p) ((unsigned)((unsigned long)(void __far*)(p) >> 16)) +#define MK_FP(s,o) (((unsigned short)(s)):>((void __near *)(o))) + +typedef struct { + union { + struct { + uint16_t di, si, bp, sp; + uint16_t bx, dx, cx, ax; + } r16; + struct { + uint16_t filler[4]; + uint8_t bl, bh, dl, dh, cl, ch, al, ah; + } r8; + } u; +} pusha_regs_t; + +typedef struct { + union { + struct { + uint32_t edi, esi, ebp, esp; + uint32_t ebx, edx, ecx, eax; + } r32; + struct { + uint16_t di, filler1, si, filler2, bp, filler3, sp, filler4; + uint16_t bx, filler5, dx, filler6, cx, filler7, ax, filler8; + } r16; + struct { + uint32_t filler[4]; + uint8_t bl, bh; + uint16_t filler1; + uint8_t dl, dh; + uint16_t filler2; + uint8_t cl, ch; + uint16_t filler3; + uint8_t al, ah; + uint16_t filler4; + } r8; + } u; +} pushad_regs_t; + +typedef struct { + union { + struct { + uint16_t flags; + } r16; + struct { + uint8_t flagsl; + uint8_t flagsh; + } r8; + } u; +} flags_t; + +typedef struct { + uint16_t ip; + uint16_t cs; + flags_t flags; +} iret_addr_t; + +typedef struct { + uint16_t ds; + uint16_t es; + pusha_regs_t gr; + iret_addr_t ra; +} disk_regs_t; + +typedef struct { + pusha_regs_t gr; + uint16_t es; + uint16_t ds; + uint16_t ifl; + iret_addr_t ra; +} kbd_regs_t; + +typedef struct { + pusha_regs_t gr; + uint16_t es; + uint16_t ds; + flags_t fl; +} sys_regs_t; + +typedef struct { + pushad_regs_t gr; + uint16_t es; + uint16_t ds; + flags_t fl; +} sys32_regs_t; + +typedef struct { + pusha_regs_t gr; + iret_addr_t ra; +} i1apci_regs_t; + + +#define SetCF(x) x.u.r8.flagsl |= 0x01 +#define SetZF(x) x.u.r8.flagsl |= 0x40 +#define ClearCF(x) x.u.r8.flagsl &= 0xfe +#define ClearZF(x) x.u.r8.flagsl &= 0xbf +#define GetCF(x) (x.u.r8.flagsl & 0x01) + +#define SET_AL(val8) AX = ((AX & 0xff00) | (val8)) +#define SET_BL(val8) BX = ((BX & 0xff00) | (val8)) +#define SET_CL(val8) CX = ((CX & 0xff00) | (val8)) +#define SET_DL(val8) DX = ((DX & 0xff00) | (val8)) +#define SET_AH(val8) AX = ((AX & 0x00ff) | ((val8) << 8)) +#define SET_BH(val8) BX = ((BX & 0x00ff) | ((val8) << 8)) +#define SET_CH(val8) CX = ((CX & 0x00ff) | ((val8) << 8)) +#define SET_DH(val8) DX = ((DX & 0x00ff) | ((val8) << 8)) + +#define GET_AL() ( AX & 0x00ff ) +#define GET_BL() ( BX & 0x00ff ) +#define GET_CL() ( CX & 0x00ff ) +#define GET_DL() ( DX & 0x00ff ) +#define GET_AH() ( AX >> 8 ) +#define GET_BH() ( BX >> 8 ) +#define GET_CH() ( CX >> 8 ) +#define GET_DH() ( DX >> 8 ) + +#define GET_ELDL() ( ELDX & 0x00ff ) +#define GET_ELDH() ( ELDX >> 8 ) + +#define SET_CF() FLAGS |= 0x0001 +#define CLEAR_CF() FLAGS &= 0xfffe +#define GET_CF() (FLAGS & 0x0001) + +#define SET_ZF() FLAGS |= 0x0040 +#define CLEAR_ZF() FLAGS &= 0xffbf +#define GET_ZF() (FLAGS & 0x0040) + +#define SET_IF() FLAGS |= 0x0200 + +typedef unsigned short bx_bool; + +#define BX_VIRTUAL_PORTS 1 /* normal output to Bochs ports */ +#define BX_DEBUG_SERIAL 0 /* output to COM1 */ + +#define BIOS_PRINTF_HALT 1 +#define BIOS_PRINTF_SCREEN 2 +#define BIOS_PRINTF_INFO 4 +#define BIOS_PRINTF_DEBUG 8 +#define BIOS_PRINTF_ALL (BIOS_PRINTF_SCREEN | BIOS_PRINTF_INFO) +#define BIOS_PRINTF_DEBHALT (BIOS_PRINTF_SCREEN | BIOS_PRINTF_INFO | BIOS_PRINTF_HALT) + +extern const char bios_prefix_string[]; +extern void bios_printf(uint16_t action, const char *s, ...); +extern void put_str(uint16_t action, const char __far *s); +extern void put_str_near(uint16_t action, const char __near *s); +extern uint8_t inb_cmos(uint8_t cmos_reg); +extern void outb_cmos(uint8_t cmos_reg, uint8_t val); +extern uint16_t cdrom_boot(void); +extern void show_logo(void); +extern void delay_boot(uint16_t secs); +extern bx_bool set_enable_a20(bx_bool val); + +#define printf(...) bios_printf(BIOS_PRINTF_SCREEN, __VA_ARGS__) + +// Defines the output macros. +// BX_DEBUG goes to INFO port until we can easily choose debug info on a +// per-device basis. Debug info are sent only in debug mode +#define DEBUG_ROMBIOS 1 +#if DEBUG_ROMBIOS +# define BX_DEBUG(...) bios_printf(BIOS_PRINTF_INFO, __VA_ARGS__) +#else +# define BX_DEBUG(...) +#endif +#ifdef VBOX +#define BX_INFO(...) do { put_str(BIOS_PRINTF_INFO, bios_prefix_string); bios_printf(BIOS_PRINTF_INFO, __VA_ARGS__); } while (0) +#else /* !VBOX */ +#define BX_INFO(...) bios_printf(BIOS_PRINTF_INFO, __VA_ARGS__) +#endif /* !VBOX */ +#define BX_PANIC(...) bios_printf(BIOS_PRINTF_DEBHALT, __VA_ARGS__) + +/* Because we don't tell the recompiler when guest physical memory + * is written, it can incorrectly cache guest code overwritten by + * DMA (bus master or not). We just re-write the memory block to flush + * any of its caches. This is not exactly efficient, but works! + */ +#define DMA_WORKAROUND 1 + +/* Random hardware-related definitions. */ + +#define PIC_MASTER 0x20 +#define PIC_MASTER_MASK 0x21 +#define PIC_SLAVE 0xA0 +#define PIC_SLAVE_MASK 0xA1 +#define PIC_CMD_EOI 0x20 +#define PIC_CMD_RD_ISR 0x0B +#define PIC_CMD_INIT 0x11 + +#endif /* !VBOX_INCLUDED_SRC_PC_BIOS_biosint_h */ + diff --git a/src/VBox/Devices/PC/BIOS/boot.c b/src/VBox/Devices/PC/BIOS/boot.c new file mode 100644 index 00000000..b35e4789 --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/boot.c @@ -0,0 +1,354 @@ +/* $Id: boot.c $ */ +/** @file + * PC BIOS - ??? + */ + +/* + * Copyright (C) 2006-2019 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * -------------------------------------------------------------------- + * + * This code is based on: + * + * ROM BIOS for use with Bochs/Plex86/QEMU emulation environment + * + * Copyright (C) 2002 MandrakeSoft S.A. + * + * MandrakeSoft S.A. + * 43, rue d'Aboukir + * 75002 Paris - France + * http://www.linux-mandrake.com/ + * http://www.mandrakesoft.com/ + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +/* + * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice + * other than GPL or LGPL is available it will apply instead, Oracle elects to use only + * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where + * a choice of LGPL license versions is made available with the language indicating + * that LGPLv2 or any later version may be used, or where a choice of which version + * of the LGPL is applied is otherwise unspecified. + */ + + +#include <stdint.h> +#include <string.h> +#include "inlines.h" +#include "biosint.h" +#include "ebda.h" + +/* Sanity check the LAN boot segment definition. */ +#if VBOX_LANBOOT_SEG < 0xA000 +#error VBOX_LANBOOT_SEG incorrect! +#endif + +/* PnP header used with LAN boot ROMs. */ +typedef struct { + uint32_t sig; + uint8_t revision; + uint8_t length; + uint16_t next_s; + uint8_t pad1; + uint8_t checksum; + uint32_t dev_id; + uint16_t mfg_string; + uint16_t prod_string; + uint8_t base_class; + uint8_t subclass; + uint8_t interface; + uint8_t dev_ind; + uint16_t boot_code; + uint16_t dv; + uint16_t bev; + uint16_t pad2; + uint16_t sriv; +} pnp_exp_t; + + +int read_boot_sec(uint8_t bootdrv, uint16_t segment); +#pragma aux read_boot_sec = \ + "mov ax,0201h" \ + "mov dh,0" \ + "mov cx,1" \ + "xor bx,bx" \ + "int 13h" \ + "mov ax,0" \ + "sbb ax,0" \ + parm [dl] [es] modify [ax bx cx dx]; + +//-------------------------------------------------------------------------- +// print_boot_device +// displays the boot device +//-------------------------------------------------------------------------- + +static const char drivetypes[][10]={"Floppy","Hard Disk","CD-ROM","LAN"}; + +/// @todo pass inputs as bit flags rather than bytes? +void print_boot_device(uint8_t cdboot, uint8_t lanboot, uint8_t drive) +{ + int i; + + // cdboot contains 0 if lan/floppy/harddisk, 1 otherwise + // lanboot contains 0 if floppy/harddisk, 1 otherwise + // drive contains real/emulated boot drive + + if(cdboot)i=2; // CD-Rom + else if(lanboot)i=3; // LAN + else if((drive&0x0080)==0x00)i=0; // Floppy + else if((drive&0x0080)==0x80)i=1; // Hard drive + else return; + + BX_INFO("Booting from %s...\n",drivetypes[i]); +} + +//-------------------------------------------------------------------------- +// print_boot_failure +// displays the reason why boot failed +//-------------------------------------------------------------------------- +/// @todo pass inputs as bit flags rather than bytes? +void print_boot_failure(uint8_t cdboot, uint8_t lanboot, uint8_t drive, + uint8_t reason, uint8_t lastdrive) +{ + uint16_t drivenum = drive&0x7f; + + // cdboot: 1 if boot from cd, 0 otherwise + // lanboot: 1 if boot from lan, 0 otherwise + // drive : drive number + // reason: 0 signature check failed, 1 read error + // lastdrive: 1 boot drive is the last one in boot sequence + + if (cdboot) + BX_INFO("Boot from %s failed\n",drivetypes[2]); + else if (lanboot) + BX_INFO("Boot from %s failed\n",drivetypes[3]); + else if (drive & 0x80) + BX_INFO("Boot from %s %d failed\n", drivetypes[1],drivenum); + else + BX_INFO("Boot from %s %d failed\n", drivetypes[0],drivenum); + + if (lastdrive==1) { + if (reason==0) + BX_PANIC("No bootable medium found! System halted.\n"); + else + BX_PANIC("Could not read from the boot medium! System halted.\n"); + } +} + +//-------------------------------------------------------------------------- +// print_cdromboot_failure +// displays the reason why boot failed +//-------------------------------------------------------------------------- +void print_cdromboot_failure(uint16_t code) +{ + BX_INFO("CDROM boot failure code : %04x\n",code); + return; +} + +// returns bootsegment in ax, drive in bl +uint32_t BIOSCALL int19_function(uint8_t bseqnr) +{ + /// @todo common code for getting the EBDA segment + uint16_t ebda_seg=read_word(0x0040,0x000E); + uint16_t bootseq; + uint8_t bootdrv; + uint8_t bootcd; + uint8_t bootlan; + uint8_t bootchk; + uint16_t bootseg; + uint16_t status; + uint8_t lastdrive=0; + + // if BX_ELTORITO_BOOT is not defined, old behavior + // check bit 5 in CMOS reg 0x2d. load either 0x00 or 0x80 into DL + // in preparation for the initial INT 13h (0=floppy A:, 0x80=C:) + // 0: system boot sequence, first drive C: then A: + // 1: system boot sequence, first drive A: then C: + // else BX_ELTORITO_BOOT is defined + // CMOS regs 0x3D and 0x38 contain the boot sequence: + // CMOS reg 0x3D & 0x0f : 1st boot device + // CMOS reg 0x3D & 0xf0 : 2nd boot device + // CMOS reg 0x38 & 0xf0 : 3rd boot device + // CMOS reg 0x3C & 0x0f : 4th boot device + // boot device codes: + // 0x00 : not defined + // 0x01 : first floppy + // 0x02 : first harddrive + // 0x03 : first cdrom + // 0x04 : local area network + // else : boot failure + + // Get the boot sequence +#if BX_ELTORITO_BOOT + bootseq=inb_cmos(0x3d); + bootseq|=((inb_cmos(0x38) & 0xf0) << 4); + bootseq|=((inb_cmos(0x3c) & 0x0f) << 12); + if (read_byte(ebda_seg, (uint16_t)&EbdaData->uForceBootDevice)) + bootseq = read_byte(ebda_seg, (uint16_t)&EbdaData->uForceBootDevice); + /* Boot delay hack. */ + if (bseqnr == 1) + delay_boot((inb_cmos(0x3c) & 0xf0) >> 4); /* Implemented in logo.c */ + + if (bseqnr==2) bootseq >>= 4; + if (bseqnr==3) bootseq >>= 8; + if (bseqnr==4) bootseq >>= 12; + if (bootseq<0x10) lastdrive = 1; + bootdrv=0x00; bootcd=0; + bootlan=0; + BX_INFO("Boot : bseqnr=%d, bootseq=%x\r\n",bseqnr, bootseq); + + switch(bootseq & 0x0f) { + case 0x01: + bootdrv=0x00; + bootcd=0; + break; + case 0x02: + { + // Get the Boot drive. + uint8_t boot_drive = read_byte(ebda_seg, (uint16_t)&EbdaData->uForceBootDrive); + + bootdrv = boot_drive + 0x80; + bootcd=0; + break; + } + case 0x03: + bootdrv=0x00; + bootcd=1; + break; + case 0x04: bootlan=1; break; + default: return 0x00000000; + } +#else + bootseq=inb_cmos(0x2d); + + if (bseqnr==2) { + bootseq ^= 0x20; + lastdrive = 1; + } + bootdrv=0x00; bootcd=0; + if((bootseq&0x20)==0) bootdrv=0x80; +#endif // BX_ELTORITO_BOOT + +#if BX_ELTORITO_BOOT + // We have to boot from cd + if (bootcd != 0) { + status = cdrom_boot(); + + // If failure + if ( (status & 0x00ff) !=0 ) { + print_cdromboot_failure(status); + print_boot_failure(bootcd, bootlan, bootdrv, 1, lastdrive); + return 0x00000000; + } + + bootseg = read_word(ebda_seg,(uint16_t)&EbdaData->cdemu.load_segment); + bootdrv = (uint8_t)(status>>8); + } + +#endif // BX_ELTORITO_BOOT + + // Check for boot from LAN first + if (bootlan == 1) { + uint8_t __far *fplan; + + fplan = MK_FP(VBOX_LANBOOT_SEG, 0); + if (*(uint16_t __far *)fplan == 0xaa55) { + pnp_exp_t __far *pnps; + uint32_t manuf; + void (__far *netboot_entry)(void); + + // This is NOT a generic PnP implementation, but an Etherboot-specific hack. + pnps = (void __far *)(fplan + *(uint16_t __far *)(fplan + 0x1a)); + if (pnps->sig == 0x506e5024/* '$PnP' */) { + // Found PnP signature + manuf = *(uint32_t __far *)(fplan + pnps->mfg_string); + if (manuf == 0x65687445/* 'Ethe' */) { + // Found Etherboot ROM + print_boot_device(bootcd, bootlan, bootdrv); + netboot_entry = (void __far *)(fplan + 6); + netboot_entry(); + } + else + { + //Found Normal Pnp ROM + print_boot_device(bootcd, bootlan, bootdrv); + int_enable(); /* Disabled as we were invoked via INT instruction. */ + netboot_entry = (void __far *)(fplan + pnps->bev); + netboot_entry(); + } + } + } + + // boot from LAN will not return if successful. + print_boot_failure(bootcd, bootlan, bootdrv, 1, lastdrive); + return 0x00000000; + } + + // We have to boot from harddisk or floppy + if (bootcd == 0 && bootlan == 0) { + bootseg=0x07c0; + + status = read_boot_sec(bootdrv,bootseg); + if (status != 0) { + print_boot_failure(bootcd, bootlan, bootdrv, 1, lastdrive); + return 0x00000000; + } + } + + // There is *no* requirement whatsoever for a valid floppy boot sector + // to have a 55AAh signature. UNIX boot floppies typically have no such + // signature. In general, it is impossible to tell a valid bootsector + // from an invalid one. + // NB: It is somewhat common for failed OS installs to have the + // 0x55AA signature and a valid partition table but zeros in the + // rest of the boot sector. We do a quick check by comparing the first + // and third word of boot sector; if identical, the boot sector is + // extremely unlikely to be valid. + if (bootdrv != 0) bootchk = 0; + else bootchk = 1; /* disable 0x55AA signature check on drive A: */ + +#if BX_ELTORITO_BOOT + // if boot from cd, no signature check + if (bootcd != 0) + bootchk = 1; +#endif // BX_ELTORITO_BOOT + + if (read_word(bootseg,0) == read_word(bootseg,4) + || (bootchk == 0 && read_word(bootseg,0x1fe) != 0xaa55)) + { + print_boot_failure(bootcd, bootlan, bootdrv, 0, lastdrive); + return 0x00000000; + } + +#if BX_ELTORITO_BOOT + // Print out the boot string + print_boot_device(bootcd, bootlan, bootdrv); +#else // BX_ELTORITO_BOOT + print_boot_device(0, bootlan, bootdrv); +#endif // BX_ELTORITO_BOOT + + // return the boot segment + return (((uint32_t)bootdrv) << 16) + bootseg; +} + diff --git a/src/VBox/Devices/PC/BIOS/disk.c b/src/VBox/Devices/PC/BIOS/disk.c new file mode 100644 index 00000000..8da813ef --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/disk.c @@ -0,0 +1,640 @@ +/* $Id: disk.c $ */ +/** @file + * PC BIOS - ??? + */ + +/* + * Copyright (C) 2006-2019 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * -------------------------------------------------------------------- + * + * This code is based on: + * + * ROM BIOS for use with Bochs/Plex86/QEMU emulation environment + * + * Copyright (C) 2002 MandrakeSoft S.A. + * + * MandrakeSoft S.A. + * 43, rue d'Aboukir + * 75002 Paris - France + * http://www.linux-mandrake.com/ + * http://www.mandrakesoft.com/ + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +/* + * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice + * other than GPL or LGPL is available it will apply instead, Oracle elects to use only + * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where + * a choice of LGPL license versions is made available with the language indicating + * that LGPLv2 or any later version may be used, or where a choice of which version + * of the LGPL is applied is otherwise unspecified. + */ + + +#include <stdint.h> +#include "biosint.h" +#include "inlines.h" +#include "ebda.h" +#include "ata.h" + + +#if DEBUG_INT13_HD +# define BX_DEBUG_INT13_HD(...) BX_DEBUG(__VA_ARGS__) +#else +# define BX_DEBUG_INT13_HD(...) +#endif + +/* Generic disk read/write routine signature. */ +typedef __fastcall (* dsk_rw_func)(bio_dsk_t __far *bios_dsk); + +/* Controller specific disk access routines. Declared as a union to reduce + * the need for conditionals when choosing between read/write functions. + * Note that we get away with using near pointers, which is nice. + */ +typedef union { + struct { + dsk_rw_func read; + dsk_rw_func write; + } s; + dsk_rw_func a[2]; +} dsk_acc_t; + +/* Pointers to HW specific disk access routines. */ +dsk_acc_t dskacc[DSKTYP_CNT] = { + [DSK_TYPE_ATA] = { ata_read_sectors, ata_write_sectors }, +#ifdef VBOX_WITH_AHCI + [DSK_TYPE_AHCI] = { ahci_read_sectors, ahci_write_sectors }, +#endif +#ifdef VBOX_WITH_SCSI + [DSK_TYPE_SCSI] = { scsi_read_sectors, scsi_write_sectors }, +#endif +}; + + +/// @todo put in a header +#define AX r.gr.u.r16.ax +#define BX r.gr.u.r16.bx +#define CX r.gr.u.r16.cx +#define DX r.gr.u.r16.dx +#define SI r.gr.u.r16.si +#define DI r.gr.u.r16.di +#define BP r.gr.u.r16.bp +#define ELDX r.gr.u.r16.sp +#define DS r.ds +#define ES r.es +#define FLAGS r.ra.flags.u.r16.flags + + +/* + * Build translated CHS geometry given a disk size in sectors. Based on + * Phoenix EDD 3.0. This is used as a fallback to generate sane logical + * geometry in case none was provided in CMOS. + */ +void set_geom_lba(chs_t __far *lgeo, uint64_t nsectors64) +{ + uint32_t limit = 8257536; /* 1024 * 128 * 63 */ + uint32_t nsectors; + unsigned heads = 255; + int i; + + nsectors = (nsectors64 >> 32) ? 0xFFFFFFFFL : (uint32_t)nsectors64; + /* Start with ~4GB limit, go down to 504MB. */ + for (i = 0; i < 4; ++i) { + if (nsectors <= limit) + heads = (heads + 1) / 2; + limit /= 2; + } + + lgeo->cylinders = nsectors / (heads * 63UL); + if (lgeo->cylinders > 1024) + lgeo->cylinders = 1024; + lgeo->heads = heads; + lgeo->spt = 63; /* Always 63 sectors per track, the maximum. */ +} + +int edd_fill_dpt(dpt_t __far *dpt, bio_dsk_t __far *bios_dsk, uint8_t device) +{ + uint16_t ebda_seg = read_word(0x0040,0x000E); + + /* Check if buffer is large enough. */ + if (dpt->size < 0x1a) + return -1; + + /* Fill in EDD 1.x table. */ + if (dpt->size >= 0x1a) { + uint64_t lba; + + dpt->size = 0x1a; + dpt->blksize = bios_dsk->devices[device].blksize; + + if (bios_dsk->devices[device].device == DSK_DEVICE_CDROM) { + dpt->infos = 0x74; /* Removable, media change, lockable, max values */ + dpt->cylinders = 0xffffffff; + dpt->heads = 0xffffffff; + dpt->spt = 0xffffffff; + dpt->sector_count1 = 0xffffffff; + dpt->sector_count2 = 0xffffffff; + } else { + dpt->infos = 0x02; // geometry is valid + dpt->cylinders = bios_dsk->devices[device].pchs.cylinders; + dpt->heads = bios_dsk->devices[device].pchs.heads; + dpt->spt = bios_dsk->devices[device].pchs.spt; + lba = bios_dsk->devices[device].sectors; + dpt->sector_count1 = lba; + dpt->sector_count2 = lba >> 32; + } + } + + /* Fill in EDD 2.x table. */ + if (dpt->size >= 0x1e) { + uint8_t channel, irq, mode, checksum, i, xlation; + uint16_t iobase1, iobase2, options; + + dpt->size = 0x1e; + dpt->dpte_segment = ebda_seg; + dpt->dpte_offset = (uint16_t)&EbdaData->bdisk.dpte; + + // Fill in dpte + channel = device / 2; + iobase1 = bios_dsk->channels[channel].iobase1; + iobase2 = bios_dsk->channels[channel].iobase2; + irq = bios_dsk->channels[channel].irq; + mode = bios_dsk->devices[device].mode; + xlation = bios_dsk->devices[device].translation; + + options = (xlation == GEO_TRANSLATION_NONE ? 0 : 1 << 3); /* CHS translation */ + options |= (1 << 4); /* LBA translation */ + if (bios_dsk->devices[device].device == DSK_DEVICE_CDROM) { + options |= (1 << 5); /* Removable device */ + options |= (1 << 6); /* ATAPI device */ + } +#if VBOX_BIOS_CPU >= 80386 + options |= (mode == ATA_MODE_PIO32 ? 1 : 0 << 7); +#endif + options |= (xlation == GEO_TRANSLATION_LBA ? 1 : 0 << 9); + options |= (xlation == GEO_TRANSLATION_RECHS ? 3 : 0 << 9); + + bios_dsk->dpte.iobase1 = iobase1; + bios_dsk->dpte.iobase2 = iobase2; + bios_dsk->dpte.prefix = (0xe | (device % 2)) << 4; + bios_dsk->dpte.unused = 0xcb; + bios_dsk->dpte.irq = irq; + bios_dsk->dpte.blkcount = 1; + bios_dsk->dpte.dma = 0; + bios_dsk->dpte.pio = 0; + bios_dsk->dpte.options = options; + bios_dsk->dpte.reserved = 0; + bios_dsk->dpte.revision = 0x11; + + checksum = 0; + for (i = 0; i < 15; ++i) + checksum += read_byte(ebda_seg, (uint16_t)&EbdaData->bdisk.dpte + i); + checksum = -checksum; + bios_dsk->dpte.checksum = checksum; + } + + /* Fill in EDD 3.x table. */ + if (dpt->size >= 0x42) { + uint8_t channel, iface, checksum, i; + uint16_t iobase1; + + channel = device / 2; + iface = bios_dsk->channels[channel].iface; + iobase1 = bios_dsk->channels[channel].iobase1; + + dpt->size = 0x42; + dpt->key = 0xbedd; + dpt->dpi_length = 0x24; + dpt->reserved1 = 0; + dpt->reserved2 = 0; + + if (iface == ATA_IFACE_ISA) { + dpt->host_bus[0] = 'I'; + dpt->host_bus[1] = 'S'; + dpt->host_bus[2] = 'A'; + dpt->host_bus[3] = ' '; + } + else { + // FIXME PCI + } + dpt->iface_type[0] = 'A'; + dpt->iface_type[1] = 'T'; + dpt->iface_type[2] = 'A'; + dpt->iface_type[3] = ' '; + dpt->iface_type[4] = ' '; + dpt->iface_type[5] = ' '; + dpt->iface_type[6] = ' '; + dpt->iface_type[7] = ' '; + + if (iface == ATA_IFACE_ISA) { + ((uint16_t __far *)dpt->iface_path)[0] = iobase1; + ((uint16_t __far *)dpt->iface_path)[1] = 0; + ((uint32_t __far *)dpt->iface_path)[1] = 0; + } + else { + // FIXME PCI + } + ((uint16_t __far *)dpt->device_path)[0] = device & 1; // device % 2; @todo: correct? + ((uint16_t __far *)dpt->device_path)[1] = 0; + ((uint32_t __far *)dpt->device_path)[1] = 0; + + checksum = 0; + for (i = 30; i < 64; i++) + checksum += ((uint8_t __far *)dpt)[i]; + checksum = -checksum; + dpt->checksum = checksum; + } + return 0; +} + +void BIOSCALL int13_harddisk(disk_regs_t r) +{ + uint32_t lba; + uint16_t cylinder, head, sector; + uint16_t nlc, nlh, nlspt; + uint16_t count; + uint8_t device, status; + bio_dsk_t __far *bios_dsk; + + BX_DEBUG_INT13_HD("%s: AX=%04x BX=%04x CX=%04x DX=%04x ES=%04x\n", __func__, AX, BX, CX, DX, ES); + + SET_IF(); /* INT 13h always returns with interrupts enabled. */ + + bios_dsk = read_word(0x0040,0x000E) :> &EbdaData->bdisk; + write_byte(0x0040, 0x008e, 0); // clear completion flag + + // basic check : device has to be defined + if ( (GET_ELDL() < 0x80) || (GET_ELDL() >= 0x80 + BX_MAX_STORAGE_DEVICES) ) { + BX_DEBUG("%s: function %02x, ELDL out of range %02x\n", __func__, GET_AH(), GET_ELDL()); + goto int13_fail; + } + + // Get the ata channel + device = bios_dsk->hdidmap[GET_ELDL()-0x80]; + + // basic check : device has to be valid + if (device >= BX_MAX_STORAGE_DEVICES) { + BX_DEBUG("%s: function %02x, unmapped device for ELDL=%02x\n", __func__, GET_AH(), GET_ELDL()); + goto int13_fail; + } + + switch (GET_AH()) { + + case 0x00: /* disk controller reset */ +#ifdef VBOX_WITH_SCSI + /* SCSI controller does not need a reset. */ + if (!VBOX_IS_SCSI_DEVICE(device)) +#endif + ata_reset (device); + goto int13_success; + break; + + case 0x01: /* read disk status */ + status = read_byte(0x0040, 0x0074); + SET_AH(status); + SET_DISK_RET_STATUS(0); + /* set CF if error status read */ + if (status) goto int13_fail_nostatus; + else goto int13_success_noah; + break; + + case 0x02: // read disk sectors + case 0x03: // write disk sectors + case 0x04: // verify disk sectors + + count = GET_AL(); + cylinder = GET_CH(); + cylinder |= ( ((uint16_t) GET_CL()) << 2) & 0x300; + sector = (GET_CL() & 0x3f); + head = GET_DH(); + + /* Segment and offset are in ES:BX. */ + if ( (count > 128) || (count == 0) ) { + BX_INFO("%s: function %02x, count out of range!\n", __func__, GET_AH()); + goto int13_fail; + } + + /* Get the logical CHS geometry. */ + nlc = bios_dsk->devices[device].lchs.cylinders; + nlh = bios_dsk->devices[device].lchs.heads; + nlspt = bios_dsk->devices[device].lchs.spt; + + /* Sanity check the geometry. */ + if( (cylinder >= nlc) || (head >= nlh) || (sector > nlspt )) { + BX_INFO("%s: function %02x, disk %02x, parameters out of range %04x/%04x/%04x!\n", __func__, GET_AH(), GET_DL(), cylinder, head, sector); + goto int13_fail; + } + + // FIXME verify + if ( GET_AH() == 0x04 ) + goto int13_success; + + /* If required, translate LCHS to LBA and execute command. */ + /// @todo The IS_SCSI_DEVICE check should be redundant... + if (( (bios_dsk->devices[device].pchs.heads != nlh) || (bios_dsk->devices[device].pchs.spt != nlspt)) || VBOX_IS_SCSI_DEVICE(device)) { + lba = ((((uint32_t)cylinder * (uint32_t)nlh) + (uint32_t)head) * (uint32_t)nlspt) + (uint32_t)sector - 1; + sector = 0; // this forces the command to be lba + } + + BX_DEBUG_INT13_HD("%s: %d sectors from lba %lu @ %04x:%04x\n", __func__, + count, lba, ES, BX); + + /* Clear the count of transferred sectors/bytes. */ + bios_dsk->drqp.trsfsectors = 0; + bios_dsk->drqp.trsfbytes = 0; + + /* Pass request information to low level disk code. */ + bios_dsk->drqp.lba = lba; + bios_dsk->drqp.buffer = MK_FP(ES, BX); + bios_dsk->drqp.nsect = count; + bios_dsk->drqp.sect_sz = 512; /// @todo device specific? + bios_dsk->drqp.cylinder = cylinder; + bios_dsk->drqp.head = head; + bios_dsk->drqp.sector = sector; + bios_dsk->drqp.dev_id = device; + + status = dskacc[bios_dsk->devices[device].type].a[GET_AH() - 0x02](bios_dsk); + + // Set nb of sector transferred + SET_AL(bios_dsk->drqp.trsfsectors); + + if (status != 0) { + BX_INFO("%s: function %02x, error %02x !\n", __func__, GET_AH(), status); + SET_AH(0x0c); + goto int13_fail_noah; + } + + goto int13_success; + break; + + case 0x05: /* format disk track */ + BX_INFO("format disk track called\n"); + goto int13_success; + break; + + case 0x08: /* read disk drive parameters */ + + /* Get the logical geometry from internal table. */ + nlc = bios_dsk->devices[device].lchs.cylinders; + nlh = bios_dsk->devices[device].lchs.heads; + nlspt = bios_dsk->devices[device].lchs.spt; + + count = bios_dsk->hdcount; + /* Maximum cylinder number is just one less than the number of cylinders. */ + nlc = nlc - 1; /* 0 based , last sector not used */ + SET_AL(0); + SET_CH(nlc & 0xff); + SET_CL(((nlc >> 2) & 0xc0) | (nlspt & 0x3f)); + SET_DH(nlh - 1); + SET_DL(count); /* FIXME returns 0, 1, or n hard drives */ + + // FIXME should set ES & DI + /// @todo Actually, the above comment is nonsense. + + goto int13_success; + break; + + case 0x10: /* check drive ready */ + // should look at 40:8E also??? + + // Read the status from controller + status = inb(bios_dsk->channels[device/2].iobase1 + ATA_CB_STAT); + if ( (status & ( ATA_CB_STAT_BSY | ATA_CB_STAT_RDY )) == ATA_CB_STAT_RDY ) { + goto int13_success; + } else { + SET_AH(0xAA); + goto int13_fail_noah; + } + break; + + case 0x15: /* read disk drive size */ + + /* Get the physical geometry from internal table. */ + cylinder = bios_dsk->devices[device].pchs.cylinders; + head = bios_dsk->devices[device].pchs.heads; + sector = bios_dsk->devices[device].pchs.spt; + + /* Calculate sector count seen by old style INT 13h. */ + lba = (uint32_t)cylinder * head * sector; + CX = lba >> 16; + DX = lba & 0xffff; + + SET_AH(3); // hard disk accessible + goto int13_success_noah; + break; + + case 0x09: /* initialize drive parameters */ + case 0x0c: /* seek to specified cylinder */ + case 0x0d: /* alternate disk reset */ + case 0x11: /* recalibrate */ + case 0x14: /* controller internal diagnostic */ + BX_INFO("%s: function %02xh unimplemented, returns success\n", __func__, GET_AH()); + goto int13_success; + break; + + case 0x0a: /* read disk sectors with ECC */ + case 0x0b: /* write disk sectors with ECC */ + case 0x18: // set media type for format + default: + BX_INFO("%s: function %02xh unsupported, returns fail\n", __func__, GET_AH()); + goto int13_fail; + break; + } + +int13_fail: + SET_AH(0x01); // defaults to invalid function in AH or invalid parameter +int13_fail_noah: + SET_DISK_RET_STATUS(GET_AH()); +int13_fail_nostatus: + SET_CF(); // error occurred + return; + +int13_success: + SET_AH(0x00); // no error +int13_success_noah: + SET_DISK_RET_STATUS(0x00); + CLEAR_CF(); // no error + return; +} + +void BIOSCALL int13_harddisk_ext(disk_regs_t r) +{ + uint64_t lba; + uint16_t segment, offset; + uint8_t device, status; + uint16_t count; + uint8_t type; + bio_dsk_t __far *bios_dsk; + int13ext_t __far *i13_ext; +#if 0 + uint16_t ebda_seg = read_word(0x0040,0x000E); + uint16_t npc, nph, npspt; + uint16_t size; + dpt_t __far *dpt; +#endif + + bios_dsk = read_word(0x0040,0x000E) :> &EbdaData->bdisk; + + BX_DEBUG_INT13_HD("%s: AX=%04x BX=%04x CX=%04x DX=%04x ES=%04x DS=%04x SI=%04x\n", + __func__, AX, BX, CX, DX, ES, DS, SI); + + write_byte(0x0040, 0x008e, 0); // clear completion flag + + // basic check : device has to be defined + if ( (GET_ELDL() < 0x80) || (GET_ELDL() >= 0x80 + BX_MAX_STORAGE_DEVICES) ) { + BX_DEBUG("%s: function %02x, ELDL out of range %02x\n", __func__, GET_AH(), GET_ELDL()); + goto int13x_fail; + } + + // Get the ata channel + device = bios_dsk->hdidmap[GET_ELDL()-0x80]; + + // basic check : device has to be valid + if (device >= BX_MAX_STORAGE_DEVICES) { + BX_DEBUG("%s: function %02x, unmapped device for ELDL=%02x\n", __func__, GET_AH(), GET_ELDL()); + goto int13x_fail; + } + + switch (GET_AH()) { + case 0x41: // IBM/MS installation check + BX=0xaa55; // install check + SET_AH(0x30); // EDD 3.0 + CX=0x0007; // ext disk access and edd, removable supported + goto int13x_success_noah; + break; + + case 0x42: // IBM/MS extended read + case 0x43: // IBM/MS extended write + case 0x44: // IBM/MS verify + case 0x47: // IBM/MS extended seek + + /* Get a pointer to the extended structure. */ + i13_ext = DS :> (int13ext_t *)SI; + + count = i13_ext->count; + segment = i13_ext->segment; + offset = i13_ext->offset; + + // Get 64 bits lba and check + lba = i13_ext->lba2; + lba <<= 32; + lba |= i13_ext->lba1; + + BX_DEBUG_INT13_HD("%s: %d sectors from LBA 0x%llx @ %04x:%04x\n", __func__, + count, lba, segment, offset); + + type = bios_dsk->devices[device].type; + if (lba >= bios_dsk->devices[device].sectors) { + BX_INFO("%s: function %02x. LBA out of range\n", __func__, GET_AH()); + goto int13x_fail; + } + + /* Don't bother with seek or verify. */ + if (( GET_AH() == 0x44 ) || ( GET_AH() == 0x47 )) + goto int13x_success; + + /* Clear the count of transferred sectors/bytes. */ + bios_dsk->drqp.trsfsectors = 0; + bios_dsk->drqp.trsfbytes = 0; + + /* Pass request information to low level disk code. */ + bios_dsk->drqp.lba = lba; + bios_dsk->drqp.buffer = MK_FP(segment, offset); + bios_dsk->drqp.nsect = count; + bios_dsk->drqp.sect_sz = 512; /// @todo device specific? + bios_dsk->drqp.sector = 0; /* Indicate LBA. */ + bios_dsk->drqp.dev_id = device; + + /* Execute the read or write command. */ + status = dskacc[type].a[GET_AH() - 0x42](bios_dsk); + count = bios_dsk->drqp.trsfsectors; + i13_ext->count = count; + + if (status != 0) { + BX_INFO("%s: function %02x, error %02x !\n", __func__, GET_AH(), status); + SET_AH(0x0c); + goto int13x_fail_noah; + } + + goto int13x_success; + break; + + case 0x45: // IBM/MS lock/unlock drive + case 0x49: // IBM/MS extended media change + goto int13x_success; // Always success for HD + break; + + case 0x46: // IBM/MS eject media + SET_AH(0xb2); // Volume Not Removable + goto int13x_fail_noah; // Always fail for HD + break; + + case 0x48: // IBM/MS get drive parameters + if (edd_fill_dpt(DS :> (dpt_t *)SI, bios_dsk, device)) + goto int13x_fail; + else + goto int13x_success; + break; + + case 0x4e: // // IBM/MS set hardware configuration + // DMA, prefetch, PIO maximum not supported + switch (GET_AL()) { + case 0x01: + case 0x03: + case 0x04: + case 0x06: + goto int13x_success; + break; + default : + goto int13x_fail; + } + break; + + case 0x50: // IBM/MS send packet command + default: + BX_INFO("%s: function %02xh unsupported, returns fail\n", __func__, GET_AH()); + goto int13x_fail; + break; + } + +int13x_fail: + SET_AH(0x01); // defaults to invalid function in AH or invalid parameter +int13x_fail_noah: + SET_DISK_RET_STATUS(GET_AH()); + SET_CF(); // error occurred + return; + +int13x_success: + SET_AH(0x00); // no error +int13x_success_noah: + SET_DISK_RET_STATUS(0x00); + CLEAR_CF(); // no error + return; +} + +/* Avoid saving general registers already saved by caller (PUSHA). */ +#pragma aux int13_harddisk modify [di si cx dx bx]; +#pragma aux int13_harddisk_ext modify [di si cx dx bx]; + diff --git a/src/VBox/Devices/PC/BIOS/ebda.h b/src/VBox/Devices/PC/BIOS/ebda.h new file mode 100644 index 00000000..910e7542 --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/ebda.h @@ -0,0 +1,382 @@ +/* $Id: ebda.h $ */ +/** @file + * PC BIOS - ??? + */ + +/* + * Copyright (C) 2006-2019 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * -------------------------------------------------------------------- + * + * This code is based on: + * + * ROM BIOS for use with Bochs/Plex86/QEMU emulation environment + * + * Copyright (C) 2002 MandrakeSoft S.A. + * + * MandrakeSoft S.A. + * 43, rue d'Aboukir + * 75002 Paris - France + * http://www.linux-mandrake.com/ + * http://www.mandrakesoft.com/ + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +/* + * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice + * other than GPL or LGPL is available it will apply instead, Oracle elects to use only + * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where + * a choice of LGPL license versions is made available with the language indicating + * that LGPLv2 or any later version may be used, or where a choice of which version + * of the LGPL is applied is otherwise unspecified. + */ + +#ifndef VBOX_INCLUDED_SRC_PC_BIOS_ebda_h +#define VBOX_INCLUDED_SRC_PC_BIOS_ebda_h +#ifndef RT_WITHOUT_PRAGMA_ONCE +# pragma once +#endif + +#include <stdint.h> + +/* Must be defined here (EBDA structures depend on these). */ +#define BX_MAX_ATA_INTERFACES 4 +#define BX_MAX_ATA_DEVICES (BX_MAX_ATA_INTERFACES*2) + +#define BX_USE_ATADRV 1 +#define BX_ELTORITO_BOOT 1 + +#ifdef VBOX_WITH_SCSI + /* Enough for now */ + #define BX_MAX_SCSI_DEVICES 4 + /* A SCSI device starts always at BX_MAX_ATA_DEVICES. */ + #define VBOX_IS_SCSI_DEVICE(device_id) (device_id >= BX_MAX_ATA_DEVICES) + #define VBOX_GET_SCSI_DEVICE(device_id) (device_id - BX_MAX_ATA_DEVICES) +#else + #define BX_MAX_SCSI_DEVICES 0 +#endif + +#ifdef VBOX_WITH_AHCI + /* Four should be enough for now */ + #define BX_MAX_AHCI_DEVICES 4 + + /* An AHCI device starts always at BX_MAX_ATA_DEVICES + BX_MAX_SCSI_DEVICES. */ + #define VBOX_IS_AHCI_DEVICE(device_id) (device_id >= (BX_MAX_ATA_DEVICES + BX_MAX_SCSI_DEVICES)) + #define VBOX_GET_AHCI_DEVICE(device_id) (device_id - (BX_MAX_ATA_DEVICES + BX_MAX_SCSI_DEVICES)) +#else + #define BX_MAX_AHCI_DEVICES 0 +#endif + +#define BX_MAX_STORAGE_DEVICES (BX_MAX_ATA_DEVICES + BX_MAX_SCSI_DEVICES + BX_MAX_AHCI_DEVICES) + +/* Generic storage device types. These depend on the controller type and + * determine which device access routines should be called. + */ +enum dsk_type_enm { + DSK_TYPE_NONE, /* Unknown device. */ + DSK_TYPE_UNKNOWN, /* Unknown ATA device. */ + DSK_TYPE_ATA, /* ATA disk. */ + DSK_TYPE_ATAPI, /* ATAPI device. */ + DSK_TYPE_SCSI, /* SCSI disk. */ + DSK_TYPE_AHCI, /* SATA disk via AHCI. */ + DSKTYP_CNT /* Number of disk types. */ +}; + +/* Disk device types. */ +//@todo: Do we really need these? +#define DSK_DEVICE_NONE 0x00 /* No device attached. */ +#define DSK_DEVICE_HD 0xFF /* Device is a hard disk. */ +#define DSK_DEVICE_CDROM 0x05 /* Device is a CD-ROM. */ + +/* Geometry translation modes. */ +enum geo_xlat_enm { + GEO_TRANSLATION_NONE, /* No geometry translation. */ + GEO_TRANSLATION_LBA, /* LBA translation. */ + GEO_TRANSLATION_LARGE, /* Large CHS translation. */ + GEO_TRANSLATION_RECHS +}; + +#if 1 //BX_USE_ATADRV + +/* Note: The DPTE and FDPT structures are industry standards and + * may not be modified. The other disk-related structures are + * internal to the BIOS. + */ + +/* Translated DPT (Device Parameter Table). */ +typedef struct { + uint16_t iobase1; + uint16_t iobase2; + uint8_t prefix; + uint8_t unused; + uint8_t irq; + uint8_t blkcount; + uint8_t dma; + uint8_t pio; + uint16_t options; + uint16_t reserved; + uint8_t revision; + uint8_t checksum; +} dpte_t; + +ct_assert(sizeof(dpte_t) == 16); /* Ensure correct size. */ + +#pragma pack(0) + +/* FDPT - Fixed Disk Parameter Table. PC/AT compatible; note + * that this structure is slightly misaligned. + */ +typedef struct { + uint16_t lcyl; + uint8_t lhead; + uint8_t sig; + uint8_t spt; + uint32_t resvd1; + uint16_t cyl; + uint8_t head; + uint16_t resvd2; + uint8_t lspt; + uint8_t csum; +} fdpt_t; + +#pragma pack() + +ct_assert(sizeof(fdpt_t) == 16); /* Ensure correct size. */ + + +/* C/H/S geometry information. */ +typedef struct { + uint16_t heads; /* Number of heads. */ + uint16_t cylinders; /* Number of cylinders. */ + uint16_t spt; /* Number of sectors per track. */ +} chs_t; + +/* IDE/ATA specific device information. */ +typedef struct { + uint8_t iface; /* ISA or PCI. */ + uint8_t irq; /* IRQ (on the PIC). */ + uint16_t iobase1; /* I/O base 1. */ + uint16_t iobase2; /* I/O base 2. */ +} ata_chan_t; + +#ifdef VBOX_WITH_SCSI + +/* SCSI specific device information. */ +typedef struct { + uint16_t io_base; /* Port base for HBA communication. */ + uint8_t target_id; /* Target ID. */ +} scsi_dev_t; + +#endif + +#ifdef VBOX_WITH_AHCI + +/* AHCI specific device information. */ +typedef struct { + uint8_t port; /* SATA port. */ +} ahci_dev_t; + +#endif + +/* Generic disk information. */ +typedef struct { + uint8_t type; /* Device type (ATA/ATAPI/SCSI/none/unknown). */ + uint8_t device; /* Detected type of attached device (HD/CD/none). */ + uint8_t removable; /* Removable device flag. */ + uint8_t lock; /* Lock count for removable devices. */ + //@todo: ATA specific - move? + uint8_t mode; /* Transfer mode: PIO 16/32 bits - IRQ - ISADMA - PCIDMA. */ + uint8_t translation; /* Type of geometry translation. */ + uint16_t blksize; /* Disk block size. */ + chs_t lchs; /* Logical CHS geometry. */ + chs_t pchs; /* Physical CHS geometry. */ + uint64_t sectors; /* Total sector count. */ +} disk_dev_t; + +/* A structure for passing disk request information around. This structure + * is designed for saving stack space. As BIOS requests cannot be overlapped, + * one such structure is sufficient. + */ +typedef struct { + uint64_t lba; /* Starting LBA. */ + void __far *buffer; /* Read/write data buffer pointer. */ + uint8_t dev_id; /* Device ID; index into devices array. */ + uint16_t nsect; /* Number of sectors to be transferred. */ + uint16_t sect_sz; /* Size of a sector in bytes. */ + uint16_t cylinder; /* Starting cylinder (CHS only). */ + uint16_t head; /* Starting head (CHS only). */ + uint16_t sector; /* Starting sector (CHS only). */ + uint16_t trsfsectors; /* Actual sectors transferred. */ + uint32_t trsfbytes; /* Actual bytes transferred. */ + uint16_t skip_b; /* Bytes to skip before transfer. */ + uint16_t skip_a; /* Bytes to skip after transfer. */ +} disk_req_t; + +extern uint16_t ahci_cmd_packet(uint16_t device_id, uint8_t cmdlen, char __far *cmdbuf, + uint16_t header, uint32_t length, uint8_t inout, char __far *buffer); +extern uint16_t scsi_cmd_packet(uint16_t device, uint8_t cmdlen, char __far *cmdbuf, + uint16_t header, uint32_t length, uint8_t inout, char __far *buffer); +extern uint16_t ata_cmd_packet(uint16_t device, uint8_t cmdlen, char __far *cmdbuf, + uint16_t header, uint32_t length, uint8_t inout, char __far *buffer); + +extern uint16_t ata_soft_reset(uint16_t device); + +/* All BIOS disk information. Disk-related code in the BIOS should not need + * anything outside of this structure. + */ +typedef struct { + disk_req_t drqp; /* Disk request packet. */ + + /* Bus-independent disk device information. */ + disk_dev_t devices[BX_MAX_STORAGE_DEVICES]; + + uint8_t hdcount; /* Total number of BIOS disks. */ + /* Map between (BIOS disk ID - 0x80) and ATA/SCSI/AHCI disks. */ + uint8_t hdidmap[BX_MAX_STORAGE_DEVICES]; + + uint8_t cdcount; /* Number of CD-ROMs. */ + /* Map between (BIOS CD-ROM ID - 0xE0) and ATA/SCSI/AHCI devices. */ + uint8_t cdidmap[BX_MAX_STORAGE_DEVICES]; + + /* ATA bus-specific device information. */ + ata_chan_t channels[BX_MAX_ATA_INTERFACES]; + +#ifdef VBOX_WITH_SCSI + /* SCSI bus-specific device information. */ + scsi_dev_t scsidev[BX_MAX_SCSI_DEVICES]; + uint8_t scsi_devcount; /* Number of SCSI devices. */ +#endif + +#ifdef VBOX_WITH_AHCI + /* SATA (AHCI) bus-specific device information. */ + ahci_dev_t ahcidev[BX_MAX_AHCI_DEVICES]; + uint8_t ahci_devcnt; /* Number of SATA devices. */ + uint16_t ahci_seg; /* Segment of AHCI data block. */ +#endif + + dpte_t dpte; /* Buffer for building a DPTE. */ +} bio_dsk_t; + +#if BX_ELTORITO_BOOT +/* El Torito device emulation state. */ +typedef struct { + uint8_t active; + uint8_t media; + uint8_t emulated_drive; + uint8_t controller_index; + uint16_t device_spec; + uint16_t buffer_segment; + uint32_t ilba; + uint16_t load_segment; + uint16_t sector_count; + chs_t vdevice; /* Virtual device geometry. */ +} cdemu_t; +#endif + +// for access to EBDA area +// The EBDA structure should conform to +// http://www.frontiernet.net/~fys/rombios.htm document +// I made the ata and cdemu structs begin at 0x121 in the EBDA seg +/* MS-DOS KEYB.COM may overwrite the word at offset 0x117 in the EBDA + * which contains the keyboard ID for PS/2 BIOSes. + */ +typedef struct { + uint8_t filler1[0x3D]; + + fdpt_t fdpt0; /* FDPTs for the first two ATA disks. */ + fdpt_t fdpt1; + + uint8_t filler2[0xC4]; + + bio_dsk_t bdisk; /* Disk driver data (ATA/SCSI/AHCI). */ + +#if BX_ELTORITO_BOOT + cdemu_t cdemu; /* El Torito floppy/HD emulation data. */ +#endif + + unsigned char uForceBootDrive; + unsigned char uForceBootDevice; +} ebda_data_t; + +ct_assert(sizeof(ebda_data_t) < 0x380); /* Must be under 1K in size. */ + +// the last 16 bytes of the EBDA segment are used for the MPS floating +// pointer structure (though only if an I/O APIC is present) + +#define EbdaData ((ebda_data_t *) 0) + +// for access to the int13ext structure +typedef struct { + uint8_t size; + uint8_t reserved; + uint16_t count; + uint16_t offset; + uint16_t segment; + uint32_t lba1; + uint32_t lba2; +} int13ext_t; + +/* Disk Physical Table structure */ +typedef struct { + uint16_t size; + uint16_t infos; + uint32_t cylinders; + uint32_t heads; + uint32_t spt; + uint32_t sector_count1; + uint32_t sector_count2; + uint16_t blksize; + uint16_t dpte_offset; + uint16_t dpte_segment; + uint16_t key; + uint8_t dpi_length; + uint8_t reserved1; + uint16_t reserved2; + uint8_t host_bus[4]; + uint8_t iface_type[8]; + uint8_t iface_path[8]; + uint8_t device_path[8]; + uint8_t reserved3; + uint8_t checksum; +} dpt_t; + +/* Note: Using fastcall reduces stack usage a little. */ +int __fastcall ata_read_sectors(bio_dsk_t __far *bios_dsk); +int __fastcall ata_write_sectors(bio_dsk_t __far *bios_dsk); + +int __fastcall scsi_read_sectors(bio_dsk_t __far *bios_dsk); +int __fastcall scsi_write_sectors(bio_dsk_t __far *bios_dsk); + +int __fastcall ahci_read_sectors(bio_dsk_t __far *bios_dsk); +int __fastcall ahci_write_sectors(bio_dsk_t __far *bios_dsk); + +extern void set_geom_lba(chs_t __far *lgeo, uint64_t nsectors); +extern int edd_fill_dpt(dpt_t __far *dpt, bio_dsk_t __far *bios_dsk, uint8_t device); + +// @todo: put this elsewhere (and change/eliminate?) +#define SET_DISK_RET_STATUS(status) write_byte(0x0040, 0x0074, status) + +#endif +#endif /* !VBOX_INCLUDED_SRC_PC_BIOS_ebda_h */ + diff --git a/src/VBox/Devices/PC/BIOS/eltorito.c b/src/VBox/Devices/PC/BIOS/eltorito.c new file mode 100644 index 00000000..ff309023 --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/eltorito.c @@ -0,0 +1,1025 @@ +/* $Id: eltorito.c $ */ +/** @file + * PC BIOS - ??? + */ + +/* + * Copyright (C) 2006-2019 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * -------------------------------------------------------------------- + * + * This code is based on: + * + * ROM BIOS for use with Bochs/Plex86/QEMU emulation environment + * + * Copyright (C) 2002 MandrakeSoft S.A. + * + * MandrakeSoft S.A. + * 43, rue d'Aboukir + * 75002 Paris - France + * http://www.linux-mandrake.com/ + * http://www.mandrakesoft.com/ + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +/* + * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice + * other than GPL or LGPL is available it will apply instead, Oracle elects to use only + * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where + * a choice of LGPL license versions is made available with the language indicating + * that LGPLv2 or any later version may be used, or where a choice of which version + * of the LGPL is applied is otherwise unspecified. + */ + + +#include <stdint.h> +#include <string.h> +#include "inlines.h" +#include "biosint.h" +#include "ebda.h" +#include "ata.h" + +#if DEBUG_ELTORITO +# define BX_DEBUG_INT13_ET(...) BX_DEBUG(__VA_ARGS__) +#else +# define BX_DEBUG_INT13_ET(...) +#endif + +#if DEBUG_INT13_CD +# define BX_DEBUG_INT13_CD(...) BX_DEBUG(__VA_ARGS__) +#else +# define BX_DEBUG_INT13_CD(...) +#endif + +#if DEBUG_CD_BOOT +# define BX_DEBUG_ELTORITO(...) BX_DEBUG(__VA_ARGS__) +#else +# define BX_DEBUG_ELTORITO(...) +#endif + + +/// @todo put in a header +#define AX r.gr.u.r16.ax +#define BX r.gr.u.r16.bx +#define CX r.gr.u.r16.cx +#define DX r.gr.u.r16.dx +#define SI r.gr.u.r16.si +#define DI r.gr.u.r16.di +#define BP r.gr.u.r16.bp +#define ELDX r.gr.u.r16.sp +#define DS r.ds +#define ES r.es +#define FLAGS r.ra.flags.u.r16.flags + +#pragma pack(1) + +/* READ_10/WRITE_10 CDB padded to 12 bytes for ATAPI. */ +typedef struct { + uint16_t command; /* Command. */ + uint32_t lba; /* LBA, MSB first! */ + uint8_t pad1; /* Unused. */ + uint16_t nsect; /* Sector count, MSB first! */ + uint8_t pad2[3]; /* Unused. */ +} cdb_atapi; + +#pragma pack() + +ct_assert(sizeof(cdb_atapi) == 12); + +/* Generic ATAPI/SCSI CD-ROM access routine signature. */ +typedef uint16_t (* cd_pkt_func)(uint16_t device_id, uint8_t cmdlen, char __far *cmdbuf, + uint16_t header, uint32_t length, uint8_t inout, char __far *buffer); + +/* Pointers to HW specific CD-ROM access routines. */ +cd_pkt_func pktacc[DSKTYP_CNT] = { + [DSK_TYPE_ATAPI] = { ata_cmd_packet }, +#ifdef VBOX_WITH_AHCI + [DSK_TYPE_AHCI] = { ahci_cmd_packet }, +#endif +#ifdef VBOX_WITH_SCSI + [DSK_TYPE_SCSI] = { scsi_cmd_packet }, +#endif +}; + +#if defined(VBOX_WITH_AHCI) || defined(VBOX_WITH_SCSI) +uint16_t dummy_soft_reset(uint16_t device_id) +{ + return 0; +} +#endif + +/* Generic reset routine signature. */ +typedef uint16_t (* cd_rst_func)(uint16_t device_id); + +/* Pointers to HW specific CD-ROM reset routines. */ +cd_rst_func softrst[DSKTYP_CNT] = { + [DSK_TYPE_ATAPI] = { ata_soft_reset }, +#ifdef VBOX_WITH_AHCI + [DSK_TYPE_AHCI] = { dummy_soft_reset }, +#endif +#ifdef VBOX_WITH_SCSI + [DSK_TYPE_SCSI] = { dummy_soft_reset }, +#endif +}; + + +// --------------------------------------------------------------------------- +// Start of El-Torito boot functions +// --------------------------------------------------------------------------- + +// !! TODO !! convert EBDA accesses to far pointers + +extern int diskette_param_table; + +void BIOSCALL cdemu_init(void) +{ + /// @todo a macro or a function for getting the EBDA segment + uint16_t ebda_seg = read_word(0x0040,0x000E); + + // the only important data is this one for now + write_byte(ebda_seg,(uint16_t)&EbdaData->cdemu.active, 0x00); +} + +uint8_t BIOSCALL cdemu_isactive(void) +{ + /// @todo a macro or a function for getting the EBDA segment + uint16_t ebda_seg = read_word(0x0040,0x000E); + + return read_byte(ebda_seg,(uint16_t)&EbdaData->cdemu.active); +} + +uint8_t BIOSCALL cdemu_emulated_drive(void) +{ + /// @todo a macro or a function for getting the EBDA segment + uint16_t ebda_seg = read_word(0x0040,0x000E); + + return read_byte(ebda_seg,(uint16_t)&EbdaData->cdemu.emulated_drive); +} + +// --------------------------------------------------------------------------- +// Start of int13 for eltorito functions +// --------------------------------------------------------------------------- + +void BIOSCALL int13_eltorito(disk_regs_t r) +{ + /// @todo a macro or a function for getting the EBDA segment + uint16_t ebda_seg=read_word(0x0040,0x000E); + cdemu_t __far *cdemu; + + cdemu = ebda_seg :> &EbdaData->cdemu; + + + BX_DEBUG_INT13_ET("%s: AX=%04x BX=%04x CX=%04x DX=%04x ES=%04x\n", __func__, AX, BX, CX, DX, ES); + // BX_DEBUG_INT13_ET("%s: SS=%04x DS=%04x ES=%04x DI=%04x SI=%04x\n", __func__, get_SS(), DS, ES, DI, SI); + + switch (GET_AH()) { + + // FIXME ElTorito Various. Not implemented in many real BIOSes. + case 0x4a: // ElTorito - Initiate disk emu + case 0x4c: // ElTorito - Initiate disk emu and boot + case 0x4d: // ElTorito - Return Boot catalog + BX_INFO("%s: call with AX=%04x not implemented.\n", __func__, AX); + goto int13_fail; + break; + + case 0x4b: // ElTorito - Terminate disk emu + // FIXME ElTorito Hardcoded + /// @todo maybe our cdemu struct should match El Torito to allow memcpy()? + write_byte(DS,SI+0x00,0x13); + write_byte(DS,SI+0x01,cdemu->media); + write_byte(DS,SI+0x02,cdemu->emulated_drive); + write_byte(DS,SI+0x03,cdemu->controller_index); + write_dword(DS,SI+0x04,cdemu->ilba); + write_word(DS,SI+0x08,cdemu->device_spec); + write_word(DS,SI+0x0a,cdemu->buffer_segment); + write_word(DS,SI+0x0c,cdemu->load_segment); + write_word(DS,SI+0x0e,cdemu->sector_count); + write_byte(DS,SI+0x10,cdemu->vdevice.cylinders); + write_byte(DS,SI+0x11,cdemu->vdevice.spt); + write_byte(DS,SI+0x12,cdemu->vdevice.heads); + + // If we have to terminate emulation + if(GET_AL() == 0x00) { + // FIXME ElTorito Various. Should be handled accordingly to spec + cdemu->active = 0; // bye bye + } + + goto int13_success; + break; + + default: + BX_INFO("%s: unsupported AH=%02x\n", __func__, GET_AH()); + goto int13_fail; + break; + } + +int13_fail: + SET_AH(0x01); // defaults to invalid function in AH or invalid parameter + SET_DISK_RET_STATUS(GET_AH()); + SET_CF(); // error occurred + return; + +int13_success: + SET_AH(0x00); // no error + SET_DISK_RET_STATUS(0x00); + CLEAR_CF(); // no error + return; +} + +// --------------------------------------------------------------------------- +// End of int13 for eltorito functions +// --------------------------------------------------------------------------- + +/* Utility routine to check if a device is a CD-ROM. */ +/// @todo this function is kinda useless as the ATAPI type check is obsolete. +static uint16_t device_is_cdrom(uint8_t device) +{ + bio_dsk_t __far *bios_dsk; + + bios_dsk = read_word(0x0040, 0x000E) :> &EbdaData->bdisk; + + if (device >= BX_MAX_STORAGE_DEVICES) + return 0; + +// if (bios_dsk->devices[device].type != DSK_TYPE_ATAPI) +// return 0; + + if (bios_dsk->devices[device].device != DSK_DEVICE_CDROM) + return 0; + + return 1; +} + +// --------------------------------------------------------------------------- +// End of ATA/ATAPI generic functions +// --------------------------------------------------------------------------- +static const char isotag[]="CD001"; +static const char eltorito[]="EL TORITO SPECIFICATION"; +// +// Returns ah: emulated drive, al: error code +// +uint16_t cdrom_boot(void) +{ + /// @todo a macro or a function for getting the EBDA segment + uint16_t ebda_seg=read_word(0x0040,0x000E); + uint8_t buffer[2048]; + cdb_atapi atapicmd; + uint32_t lba; + uint16_t boot_segment, nbsectors, i, error; + uint8_t device; + uint8_t read_try; + cdemu_t __far *cdemu; + bio_dsk_t __far *bios_dsk; + + cdemu = ebda_seg :> &EbdaData->cdemu; + bios_dsk = ebda_seg :> &EbdaData->bdisk; + + /* Find the first CD-ROM. */ + for (device = 0; device < BX_MAX_STORAGE_DEVICES; ++device) { + if (device_is_cdrom(device)) + break; + } + + /* Fail if not found. */ + if (device >= BX_MAX_STORAGE_DEVICES) + return 2; + + /* Read the Boot Record Volume Descriptor (BRVD). */ + _fmemset(&atapicmd, 0, sizeof(atapicmd)); + atapicmd.command = 0x28; // READ 10 command + atapicmd.lba = swap_32(0x11); + atapicmd.nsect = swap_16(1); + + bios_dsk->drqp.nsect = 1; + bios_dsk->drqp.sect_sz = 2048; + + for (read_try = 0; read_try <= 4; ++read_try) + { + error = pktacc[bios_dsk->devices[device].type](device, 12, (char __far *)&atapicmd, 0, 2048L, ATA_DATA_IN, &buffer); + if (!error) + break; + } + if (error) + return 3; + + /* Check for a valid BRVD. */ + if (buffer[0] != 0) + return 4; + /// @todo what's wrong with memcmp()? + for (i = 0; i < 5; ++i) { + if (buffer[1+i] != isotag[i]) + return 5; + } + for (i = 0; i < 23; ++i) + if (buffer[7+i] != eltorito[i]) + return 6; + + // ok, now we calculate the Boot catalog address + lba = *((uint32_t *)&buffer[0x47]); + BX_DEBUG_ELTORITO("BRVD at LBA %lx\n", lba); + + /* Now we read the Boot Catalog. */ + atapicmd.command = 0x28; // READ 10 command + atapicmd.lba = swap_32(lba); + atapicmd.nsect = swap_16(1); + +#if 0 // Not necessary as long as previous values are reused + bios_dsk->drqp.nsect = 1; + bios_dsk->drqp.sect_sz = 512; +#endif + + error = pktacc[bios_dsk->devices[device].type](device, 12, (char __far *)&atapicmd, 0, 2048L, ATA_DATA_IN, &buffer); + if (error != 0) + return 7; + + /// @todo Define a struct for the Boot Catalog, the hardcoded offsets are so dumb... + + /* Check if the Boot Catalog looks valid. */ + if (buffer[0x00] != 0x01) + return 8; // Header + if (buffer[0x01] != 0x00) + return 9; // Platform + if (buffer[0x1E] != 0x55) + return 10; // key 1 + if (buffer[0x1F] != 0xAA) + return 10; // key 2 + + // Initial/Default Entry + if (buffer[0x20] != 0x88) + return 11; // Bootable + + cdemu->media = buffer[0x21]; + if (buffer[0x21] == 0) { + // FIXME ElTorito Hardcoded. cdrom is hardcoded as device 0xE0. + // Win2000 cd boot needs to know it booted from cd + cdemu->emulated_drive = 0xE0; + } + else if (buffer[0x21] < 4) + cdemu->emulated_drive = 0x00; + else + cdemu->emulated_drive = 0x80; + + cdemu->controller_index = device / 2; + cdemu->device_spec = device % 2; + + boot_segment = *((uint16_t *)&buffer[0x22]); + if (boot_segment == 0) + boot_segment = 0x07C0; + + cdemu->load_segment = boot_segment; + cdemu->buffer_segment = 0x0000; + + nbsectors = ((uint16_t *)buffer)[0x26 / 2]; + cdemu->sector_count = nbsectors; + + /* Sanity check the sector count. In incorrectly mastered CDs, it might + * be zero. If it's more than 512K, reject it as well. + */ + if (nbsectors == 0 || nbsectors > 1024) + return 12; + + lba = *((uint32_t *)&buffer[0x28]); + cdemu->ilba = lba; + + BX_DEBUG_ELTORITO("Emulate drive %02x, type %02x, LBA %lu\n", + cdemu->emulated_drive, cdemu->media, cdemu->ilba); + + /* Read the disk image's boot sector into memory. */ + atapicmd.command = 0x28; // READ 10 command + atapicmd.lba = swap_32(lba); + atapicmd.nsect = swap_16(1 + (nbsectors - 1) / 4); + + bios_dsk->drqp.nsect = 1 + (nbsectors - 1) / 4; + bios_dsk->drqp.sect_sz = 512; + + bios_dsk->drqp.skip_a = (2048 - nbsectors * 512) % 2048; + + error = pktacc[bios_dsk->devices[device].type](device, 12, (char __far *)&atapicmd, 0, nbsectors*512L, ATA_DATA_IN, MK_FP(boot_segment,0)); + + bios_dsk->drqp.skip_a = 0; + + if (error != 0) + return 13; + + BX_DEBUG_ELTORITO("Emulate drive %02x, type %02x, LBA %lu\n", + cdemu->emulated_drive, cdemu->media, cdemu->ilba); + /* Set up emulated drive geometry based on the media type. */ + switch (cdemu->media) { + case 0x01: /* 1.2M floppy */ + cdemu->vdevice.spt = 15; + cdemu->vdevice.cylinders = 80; + cdemu->vdevice.heads = 2; + break; + case 0x02: /* 1.44M floppy */ + cdemu->vdevice.spt = 18; + cdemu->vdevice.cylinders = 80; + cdemu->vdevice.heads = 2; + break; + case 0x03: /* 2.88M floppy */ + cdemu->vdevice.spt = 36; + cdemu->vdevice.cylinders = 80; + cdemu->vdevice.heads = 2; + break; + case 0x04: /* Hard disk */ + cdemu->vdevice.spt = read_byte(boot_segment,446+6)&0x3f; + cdemu->vdevice.cylinders = ((read_byte(boot_segment,446+6)&~0x3f)<<2) + read_byte(boot_segment,446+7) + 1; + cdemu->vdevice.heads = read_byte(boot_segment,446+5) + 1; + break; + } + BX_DEBUG_ELTORITO("VCHS=%u/%u/%u\n", cdemu->vdevice.cylinders, + cdemu->vdevice.heads, cdemu->vdevice.spt); + + if (cdemu->media != 0) { + /* Increase BIOS installed number of drives (floppy or fixed). */ + if (cdemu->emulated_drive == 0x00) + write_byte(0x40,0x10,read_byte(0x40,0x10)|0x41); + else + write_byte(ebda_seg,(uint16_t)&EbdaData->bdisk.hdcount, read_byte(ebda_seg, (uint16_t)&EbdaData->bdisk.hdcount) + 1); + } + + // everything is ok, so from now on, the emulation is active + if (cdemu->media != 0) + cdemu->active = 0x01; + + // return the boot drive + no error + return (cdemu->emulated_drive*0x100)+0; +} + +// --------------------------------------------------------------------------- +// End of El-Torito boot functions +// --------------------------------------------------------------------------- + +// --------------------------------------------------------------------------- +// Start of int13 when emulating a device from the cd +// --------------------------------------------------------------------------- + +void BIOSCALL int13_cdemu(disk_regs_t r) +{ + /// @todo a macro or a function for getting the EBDA segment + uint16_t ebda_seg=read_word(0x0040,0x000E); + uint8_t device, status; + uint16_t vheads, vspt, vcylinders; + uint16_t head, sector, cylinder, nbsectors; + uint32_t vlba, ilba, slba, elba; + uint16_t before, segment, offset; + cdb_atapi atapicmd; + cdemu_t __far *cdemu; + bio_dsk_t __far *bios_dsk; + int13ext_t __far *i13x; + uint32_t lba; + uint16_t count; + + cdemu = ebda_seg :> &EbdaData->cdemu; + bios_dsk = ebda_seg :> &EbdaData->bdisk; + + BX_DEBUG_INT13_ET("%s: AX=%04x BX=%04x CX=%04x DX=%04x ES=%04x\n", __func__, AX, BX, CX, DX, ES); + + /* at this point, we are emulating a floppy/harddisk */ + + // Recompute the device number + device = cdemu->controller_index * 2; + device += cdemu->device_spec; + + SET_DISK_RET_STATUS(0x00); + + /* basic checks : emulation should be active, dl should equal the emulated drive */ + if (!cdemu->active || (cdemu->emulated_drive != GET_DL())) { + BX_INFO("%s: function %02x, emulation not active for DL= %02x\n", __func__, GET_AH(), GET_DL()); + goto int13_fail; + } + + switch (GET_AH()) { + + case 0x00: /* disk controller reset */ + if (pktacc[bios_dsk->devices[device].type]) + { + status = softrst[bios_dsk->devices[device].type](device); + } + goto int13_success; + break; + // all those functions return SUCCESS + case 0x09: /* initialize drive parameters */ + case 0x0c: /* seek to specified cylinder */ + case 0x0d: /* alternate disk reset */ // FIXME ElTorito Various. should really reset ? + case 0x10: /* check drive ready */ // FIXME ElTorito Various. should check if ready ? + case 0x11: /* recalibrate */ + case 0x14: /* controller internal diagnostic */ + case 0x16: /* detect disk change */ + goto int13_success; + break; + + // all those functions return disk write-protected + case 0x03: /* write disk sectors */ + case 0x05: /* format disk track */ + SET_AH(0x03); + goto int13_fail_noah; + break; + + case 0x01: /* read disk status */ + status=read_byte(0x0040, 0x0074); + SET_AH(status); + SET_DISK_RET_STATUS(0); + + /* set CF if error status read */ + if (status) + goto int13_fail_nostatus; + else + goto int13_success_noah; + break; + + case 0x02: // read disk sectors + case 0x04: // verify disk sectors + vspt = cdemu->vdevice.spt; + vcylinders = cdemu->vdevice.cylinders; + vheads = cdemu->vdevice.heads; + ilba = cdemu->ilba; + + sector = GET_CL() & 0x003f; + cylinder = (GET_CL() & 0x00c0) << 2 | GET_CH(); + head = GET_DH(); + nbsectors = GET_AL(); + segment = ES; + offset = BX; + + BX_DEBUG_INT13_ET("%s: read to %04x:%04x @ VCHS %u/%u/%u (%u sectors)\n", __func__, + ES, BX, cylinder, head, sector, nbsectors); + + // no sector to read ? + if(nbsectors==0) + goto int13_success; + + // sanity checks sco openserver needs this! + if ((sector > vspt) + || (cylinder >= vcylinders) + || (head >= vheads)) { + goto int13_fail; + } + + // After validating the input, verify does nothing + if (GET_AH() == 0x04) + goto int13_success; + + segment = ES+(BX / 16); + offset = BX % 16; + + // calculate the virtual lba inside the image + vlba=((((uint32_t)cylinder*(uint32_t)vheads)+(uint32_t)head)*(uint32_t)vspt)+((uint32_t)(sector-1)); + + // In advance so we don't lose the count + SET_AL(nbsectors); + + // start lba on cd + slba = (uint32_t)vlba / 4; + before = (uint32_t)vlba % 4; + + // end lba on cd + elba = (uint32_t)(vlba + nbsectors - 1) / 4; + + _fmemset(&atapicmd, 0, sizeof(atapicmd)); + atapicmd.command = 0x28; // READ 10 command + atapicmd.lba = swap_32(ilba + slba); + atapicmd.nsect = swap_16(elba - slba + 1); + + bios_dsk->drqp.nsect = nbsectors; + bios_dsk->drqp.sect_sz = 512; + + bios_dsk->drqp.skip_b = before * 512; + bios_dsk->drqp.skip_a = ((4 - nbsectors % 4 - before) * 512) % 2048; + + status = pktacc[bios_dsk->devices[device].type](device, 12, (char __far *)&atapicmd, before*512, nbsectors*512L, ATA_DATA_IN, MK_FP(segment,offset)); + + bios_dsk->drqp.skip_b = 0; + bios_dsk->drqp.skip_a = 0; + + if (status != 0) { + BX_INFO("%s: function %02x, error %02x !\n", __func__, GET_AH(), status); + SET_AH(0x02); + SET_AL(0); + goto int13_fail_noah; + } + + goto int13_success; + break; + + case 0x08: /* read disk drive parameters */ + vspt = cdemu->vdevice.spt; + vcylinders = cdemu->vdevice.cylinders - 1; + vheads = cdemu->vdevice.heads - 1; + + SET_AL( 0x00 ); + SET_BL( 0x00 ); + SET_CH( vcylinders & 0xff ); + SET_CL((( vcylinders >> 2) & 0xc0) | ( vspt & 0x3f )); + SET_DH( vheads ); + SET_DL( 0x02 ); // FIXME ElTorito Various. should send the real count of drives 1 or 2 + // FIXME ElTorito Harddisk. should send the HD count + + switch (cdemu->media) { + case 0x01: SET_BL( 0x02 ); break; /* 1.2 MB */ + case 0x02: SET_BL( 0x04 ); break; /* 1.44 MB */ + case 0x03: SET_BL( 0x05 ); break; /* 2.88 MB */ + } + + /* Only set the DPT pointer for emulated floppies. */ + if (cdemu->media < 4) { + DI = (uint16_t)&diskette_param_table; /// @todo should this depend on emulated medium? + ES = 0xF000; /// @todo how to make this relocatable? + } + goto int13_success; + break; + + case 0x15: /* read disk drive size */ + // FIXME ElTorito Harddisk. What geometry to send ? + SET_AH(0x03); + goto int13_success_noah; + break; + + case 0x41: // IBM/MS installation check + BX = 0xaa55; // install check + SET_AH(0x30); // EDD 2.1 + CX = 0x0007; // ext disk access, removable and edd + goto int13_success_noah; + break; + + case 0x42: // IBM/MS extended read + case 0x44: // IBM/MS verify sectors + case 0x47: // IBM/MS extended seek + + /* Load the I13X struct pointer. */ + i13x = MK_FP(DS, SI); + + count = i13x->count; + segment = i13x->segment; + offset = i13x->offset; + + // Can't use 64 bits lba + lba = i13x->lba2; + if (lba != 0L) { + BX_PANIC("%s: function %02x. Can't use 64bits lba\n", __func__, GET_AH()); + goto int13_fail; + } + + // Get 32 bits lba + lba = i13x->lba1; + + // If verify or seek + if (( GET_AH() == 0x44 ) || ( GET_AH() == 0x47 )) + goto int13_success; + + BX_DEBUG_INT13_ET("%s: read %u sectors @ LBA %lu to %04X:%04X\n", + __func__, count, lba, segment, offset); + + nbsectors = count; + vlba = lba; + ilba = cdemu->ilba; + + // start lba on cd + slba = (uint32_t)vlba / 4; + before = (uint32_t)vlba % 4; + + // end lba on cd + elba = (uint32_t)(vlba + nbsectors - 1) / 4; + + _fmemset(&atapicmd, 0, sizeof(atapicmd)); + atapicmd.command = 0x28; // READ 10 command + atapicmd.lba = swap_32(ilba + slba); + atapicmd.nsect = swap_16(elba - slba + 1); + + bios_dsk->drqp.skip_b = before * 512; + bios_dsk->drqp.skip_a = ((4 - nbsectors % 4 - before) * 512) % 2048; + + status = pktacc[bios_dsk->devices[device].type](device, 12, (char __far *)&atapicmd, before*512, nbsectors*512L, ATA_DATA_IN, MK_FP(segment,offset)); + + bios_dsk->drqp.skip_b = 0; + bios_dsk->drqp.skip_a = 0; + + count = (uint16_t)(bios_dsk->drqp.trsfbytes >> 9); + i13x->count = count; + + if (status != 0) { + BX_INFO("%s: function %02x, status %02x !\n", __func__, GET_AH(), status); + SET_AH(0x0c); + goto int13_fail_noah; + } + + goto int13_success; + break; + + case 0x48: // IBM/MS get drive parameters + if (edd_fill_dpt(DS :> (dpt_t *)SI, bios_dsk, device)) + goto int13_fail; + else + goto int13_success; + break; + + // all those functions return unimplemented + case 0x0a: /* read disk sectors with ECC */ + case 0x0b: /* write disk sectors with ECC */ + case 0x18: /* set media type for format */ + case 0x43: // IBM/MS extended write + case 0x45: // IBM/MS lock/unlock drive + case 0x46: // IBM/MS eject media + case 0x49: // IBM/MS extended media change + case 0x4e: // ? - set hardware configuration + case 0x50: // ? - send packet command + default: + BX_INFO("%s: function AH=%02x unsupported, returns fail\n", __func__, GET_AH()); + goto int13_fail; + break; + } + +int13_fail: + SET_AH(0x01); // defaults to invalid function in AH or invalid parameter +int13_fail_noah: + SET_DISK_RET_STATUS(GET_AH()); +int13_fail_nostatus: + SET_CF(); // error occurred + return; + +int13_success: + SET_AH(0x00); // no error +int13_success_noah: + SET_DISK_RET_STATUS(0x00); + CLEAR_CF(); // no error + return; +} + +// --------------------------------------------------------------------------- +// Start of int13 for cdrom +// --------------------------------------------------------------------------- + +void BIOSCALL int13_cdrom(uint16_t EHBX, disk_regs_t r) +{ + uint16_t ebda_seg = read_word(0x0040,0x000E); + uint8_t device, status, locks; + cdb_atapi atapicmd; + uint32_t lba; + uint16_t count, segment, offset; + bio_dsk_t __far *bios_dsk; + int13ext_t __far *i13x; + + bios_dsk = ebda_seg :> &EbdaData->bdisk; + + BX_DEBUG_INT13_CD("%s: AX=%04x BX=%04x CX=%04x DX=%04x ES=%04x\n", __func__, AX, BX, CX, DX, ES); + + SET_DISK_RET_STATUS(0x00); + + /* basic check : device should be 0xE0+ */ + if( (GET_ELDL() < 0xE0) || (GET_ELDL() >= 0xE0 + BX_MAX_STORAGE_DEVICES) ) { + BX_DEBUG("%s: function %02x, ELDL out of range %02x\n", __func__, GET_AH(), GET_ELDL()); + goto int13_fail; + } + + // Get the ata channel + device = bios_dsk->cdidmap[GET_ELDL()-0xE0]; + + /* basic check : device has to be valid */ + if (device >= BX_MAX_STORAGE_DEVICES) { + BX_DEBUG("%s: function %02x, unmapped device for ELDL=%02x\n", __func__, GET_AH(), GET_ELDL()); + goto int13_fail; + } + + switch (GET_AH()) { + + // all those functions return SUCCESS + case 0x00: /* disk controller reset */ + case 0x09: /* initialize drive parameters */ + case 0x0c: /* seek to specified cylinder */ + case 0x0d: /* alternate disk reset */ + case 0x10: /* check drive ready */ + case 0x11: /* recalibrate */ + case 0x14: /* controller internal diagnostic */ + case 0x16: /* detect disk change */ + goto int13_success; + break; + + // all those functions return disk write-protected + case 0x03: /* write disk sectors */ + case 0x05: /* format disk track */ + case 0x43: // IBM/MS extended write + SET_AH(0x03); + goto int13_fail_noah; + break; + + case 0x01: /* read disk status */ + status = read_byte(0x0040, 0x0074); + SET_AH(status); + SET_DISK_RET_STATUS(0); + + /* set CF if error status read */ + if (status) + goto int13_fail_nostatus; + else + goto int13_success_noah; + break; + + case 0x15: /* read disk drive size */ + SET_AH(0x02); + goto int13_fail_noah; + break; + + case 0x41: // IBM/MS installation check + BX = 0xaa55; // install check + SET_AH(0x30); // EDD 2.1 + CX = 0x0007; // ext disk access, removable and edd + goto int13_success_noah; + break; + + case 0x42: // IBM/MS extended read + case 0x44: // IBM/MS verify sectors + case 0x47: // IBM/MS extended seek + + /* Load the I13X struct pointer. */ + i13x = MK_FP(DS, SI); + + count = i13x->count; + segment = i13x->segment; + offset = i13x->offset; + + // Can't use 64 bits lba + lba = i13x->lba2; + if (lba != 0L) { + BX_PANIC("%s: function %02x. Can't use 64bits lba\n", __func__, GET_AH()); + goto int13_fail; + } + + // Get 32 bits lba + lba = i13x->lba1; + + // If verify or seek + if (( GET_AH() == 0x44 ) || ( GET_AH() == 0x47 )) + goto int13_success; + + BX_DEBUG_INT13_CD("%s: read %u sectors @ LBA %lu to %04X:%04X\n", + __func__, count, lba, segment, offset); + + _fmemset(&atapicmd, 0, sizeof(atapicmd)); + atapicmd.command = 0x28; // READ 10 command + atapicmd.lba = swap_32(lba); + atapicmd.nsect = swap_16(count); + + bios_dsk->drqp.nsect = count; + bios_dsk->drqp.sect_sz = 2048; + + status = pktacc[bios_dsk->devices[device].type](device, 12, (char __far *)&atapicmd, 0, count*2048L, ATA_DATA_IN, MK_FP(segment,offset)); + + count = (uint16_t)(bios_dsk->drqp.trsfbytes >> 11); + i13x->count = count; + + if (status != 0) { + BX_INFO("%s: function %02x, status %02x !\n", __func__, GET_AH(), status); + SET_AH(0x0c); + goto int13_fail_noah; + } + + goto int13_success; + break; + + case 0x45: // IBM/MS lock/unlock drive + if (GET_AL() > 2) + goto int13_fail; + + locks = bios_dsk->devices[device].lock; + + switch (GET_AL()) { + case 0 : // lock + if (locks == 0xff) { + SET_AH(0xb4); + SET_AL(1); + goto int13_fail_noah; + } + bios_dsk->devices[device].lock = ++locks; + SET_AL(1); + break; + case 1 : // unlock + if (locks == 0x00) { + SET_AH(0xb0); + SET_AL(0); + goto int13_fail_noah; + } + bios_dsk->devices[device].lock = --locks; + SET_AL(locks==0?0:1); + break; + case 2 : // status + SET_AL(locks==0?0:1); + break; + } + goto int13_success; + break; + + case 0x46: // IBM/MS eject media + locks = bios_dsk->devices[device].lock; + + if (locks != 0) { + SET_AH(0xb1); // media locked + goto int13_fail_noah; + } + // FIXME should handle 0x31 no media in device + // FIXME should handle 0xb5 valid request failed + +#if 0 /// @todo implement! + // Call removable media eject + ASM_START + push bp + mov bp, sp + + mov ah, #0x52 + int #0x15 + mov _int13_cdrom.status + 2[bp], ah + jnc int13_cdrom_rme_end + mov _int13_cdrom.status, #1 +int13_cdrom_rme_end: + pop bp + ASM_END +#endif + + if (status != 0) { + SET_AH(0xb1); // media locked + goto int13_fail_noah; + } + + goto int13_success; + break; + + case 0x48: // IBM/MS get drive parameters + if (edd_fill_dpt(DS :> (dpt_t *)SI, bios_dsk, device)) + goto int13_fail; + else + goto int13_success; + break; + + case 0x49: // IBM/MS extended media change + // always send changed ?? + SET_AH(06); + goto int13_fail_nostatus; + break; + + case 0x4e: // // IBM/MS set hardware configuration + // DMA, prefetch, PIO maximum not supported + switch (GET_AL()) { + case 0x01: + case 0x03: + case 0x04: + case 0x06: + goto int13_success; + break; + default : + goto int13_fail; + } + break; + + // all those functions return unimplemented + case 0x02: /* read sectors */ + case 0x04: /* verify sectors */ + case 0x08: /* read disk drive parameters */ + case 0x0a: /* read disk sectors with ECC */ + case 0x0b: /* write disk sectors with ECC */ + case 0x18: /* set media type for format */ + case 0x50: // ? - send packet command + default: + BX_INFO("%s: unsupported AH=%02x\n", __func__, GET_AH()); + goto int13_fail; + break; + } + +int13_fail: + SET_AH(0x01); // defaults to invalid function in AH or invalid parameter +int13_fail_noah: + SET_DISK_RET_STATUS(GET_AH()); +int13_fail_nostatus: + SET_CF(); // error occurred + return; + +int13_success: + SET_AH(0x00); // no error +int13_success_noah: + SET_DISK_RET_STATUS(0x00); + CLEAR_CF(); // no error + return; +} + +// --------------------------------------------------------------------------- +// End of int13 for cdrom +// --------------------------------------------------------------------------- + diff --git a/src/VBox/Devices/PC/BIOS/floppy.c b/src/VBox/Devices/PC/BIOS/floppy.c new file mode 100644 index 00000000..958db2e5 --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/floppy.c @@ -0,0 +1,1360 @@ +/* $Id: floppy.c $ */ +/** @file + * PC BIOS - ??? + */ + +/* + * Copyright (C) 2006-2019 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * -------------------------------------------------------------------- + * + * This code is based on: + * + * ROM BIOS for use with Bochs/Plex86/QEMU emulation environment + * + * Copyright (C) 2002 MandrakeSoft S.A. + * + * MandrakeSoft S.A. + * 43, rue d'Aboukir + * 75002 Paris - France + * http://www.linux-mandrake.com/ + * http://www.mandrakesoft.com/ + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +/* + * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice + * other than GPL or LGPL is available it will apply instead, Oracle elects to use only + * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where + * a choice of LGPL license versions is made available with the language indicating + * that LGPLv2 or any later version may be used, or where a choice of which version + * of the LGPL is applied is otherwise unspecified. + */ + + +#include <stdint.h> +#include "inlines.h" +#include "biosint.h" + +extern uint16_t get_floppy_dpt(uint8_t drive_type); + +////////////////////// +// FLOPPY functions // +////////////////////// + +inline void set_diskette_ret_status(uint8_t value) +{ + write_byte(0x0040, 0x0041, value); +} + +void set_diskette_current_cyl(uint8_t drive, uint8_t cyl) +{ + if (drive > 1) + BX_PANIC("set_diskette_current_cyl: drive > 1\n"); + write_byte(0x0040, 0x0094+drive, cyl); +} + +#if 1 //BX_SUPPORT_FLOPPY + +#if DEBUG_INT13_FL +# define BX_DEBUG_INT13_FL(...) BX_DEBUG(__VA_ARGS__) +#else +# define BX_DEBUG_INT13_FL(...) +#endif + +#define BX_FLOPPY_ON_CNT 37 /* 2 seconds */ + +extern int diskette_param_table; /* At a fixed location. */ + +#ifndef VBOX_WITH_FLOPPY_IRQ_POLLING + +/** + * Wait for the 7th bit of 0040:003e to be set by int0e_handler. + * @returns first 7 bits of byte 0040:003e, interrupts disabled. + */ +uint8_t floppy_wait_for_interrupt(void) +{ + int_disable(); + for (;;) + { + uint8_t val8 = read_byte(0x0040, 0x003e); + if (val8 & 0x80) + return val8 & ~0x7f; + int_enable_hlt_disable(); + } +} + +/** + * Wait for the 7th bit of 0040:003e to be set by int0e_handler or 0040:0040 to + * be cleared by the timer, clearing the interrupt flag on success. + * + * @returns 0 on timeout with interrupts enabled. + * All 8 bits at 0040:003e on interrupt with interrupts disabled (i.e. + * non-zero), after first clearing the 7th bit at 0040:003e. + */ +uint8_t floppy_wait_for_interrupt_or_timeout(void) +{ + int_disable(); + for (;;) + { + uint8_t val8 = read_byte(0x0040, 0x0040); + if (val8 == 0) { + int_enable(); + return 0; + } + + val8 = read_byte(0x0040, 0x003e); + if (val8 & 0x80) { + write_byte(0x0040, 0x003e, val8 & 0x7f); + return val8; + } + int_enable_hlt_disable(); + } +} + +#endif /* !VBOX_WITH_FLOPPY_IRQ_POLLING */ + +void floppy_reset_controller(uint16_t drive) +{ + uint8_t val8; + + // Reset controller + val8 = inb(0x03f2); + outb(0x03f2, val8 & ~0x04); + outb(0x03f2, val8 | 0x04); + + // Wait for controller to come out of reset + do { + val8 = inb(0x3f4); + } while ( (val8 & 0xc0) != 0x80 ); + + // Mark media in drive as unknown + val8 = read_byte(0x0040, 0x0090 + drive); + val8 &= ~0x10; + write_byte(0x0040, 0x90 + drive, val8); + +} + +void floppy_prepare_controller(uint16_t drive) +{ + uint8_t val8, dor, prev_reset; + + // set 40:3e bit 7 to 0 + val8 = read_byte(0x0040, 0x003e); + val8 &= 0x7f; + write_byte(0x0040, 0x003e, val8); + + // turn on motor of selected drive, DMA & int enabled, normal operation + prev_reset = inb(0x03f2) & 0x04; + if (drive) + dor = 0x20; + else + dor = 0x10; + dor |= 0x0c; + dor |= drive; + outb(0x03f2, dor); + + // reset the disk motor timeout value of INT 08 + write_byte(0x0040,0x0040, BX_FLOPPY_ON_CNT); + + // program data rate + val8 = read_byte(0x0040, 0x008b); + val8 >>= 6; + outb(0x03f7, val8); + + // wait for drive readiness + do { + val8 = inb(0x3f4); + } while ( (val8 & 0xc0) != 0x80 ); + + if (prev_reset == 0) { +#ifdef VBOX_WITH_FLOPPY_IRQ_POLLING + // turn on interrupts + int_enable(); + // wait on 40:3e bit 7 to become 1 + do { + val8 = read_byte(0x0040, 0x003e); + } while ( (val8 & 0x80) == 0 ); + val8 &= 0x7f; + int_disable(); +#else + val8 = floppy_wait_for_interrupt(); /* (7th bit cleared in ret val) */ +#endif + write_byte(0x0040, 0x003e, val8); + } +} + +bx_bool floppy_media_known(uint16_t drive) +{ + uint8_t val8; + uint16_t media_state_offset; + + val8 = read_byte(0x0040, 0x003e); // diskette recal status + if (drive) + val8 >>= 1; + val8 &= 0x01; + if (val8 == 0) + return 0; + + media_state_offset = 0x0090; + if (drive) + media_state_offset += 1; + + val8 = read_byte(0x0040, media_state_offset); + val8 = (val8 >> 4) & 0x01; + if (val8 == 0) + return 0; + + // checks passed, return KNOWN + return 1; +} + +bx_bool floppy_read_id(uint16_t drive) +{ +#ifdef VBOX_WITH_FLOPPY_IRQ_POLLING + uint8_t val8; +#endif + int i; + + floppy_prepare_controller(drive); + + // send Read ID command (2 bytes) to controller + outb(0x03f5, 0x4a); // 4a: Read ID (MFM) + outb(0x03f5, drive); // 0=drive0, 1=drive1, head always 0 + +#ifdef VBOX_WITH_FLOPPY_IRQ_POLLING + // turn on interrupts + int_enable(); + + // wait on 40:3e bit 7 to become 1 + do { + val8 = (read_byte(0x0040, 0x003e) & 0x80); + } while ( val8 == 0 ); + + val8 = 0; // separate asm from while() loop + // turn off interrupts + int_disable(); +#else + floppy_wait_for_interrupt(); +#endif + + // read 7 return status bytes from controller + for (i = 0; i < 7; ++i) + write_byte(0x0040, 0x0042 + i, inb(0x3f5)); + + if ((read_byte(0x0040, 0x0042 + 0) & 0xc0) != 0) + return 0; + else + return 1; +} + +bx_bool floppy_drive_recal(uint16_t drive) +{ + uint8_t val8; + uint16_t curr_cyl_offset; + + floppy_prepare_controller(drive); + + // send Recalibrate command (2 bytes) to controller + outb(0x03f5, 0x07); // 07: Recalibrate + outb(0x03f5, drive); // 0=drive0, 1=drive1 + +#ifdef VBOX_WITH_FLOPPY_IRQ_POLLING + // turn on interrupts + int_enable(); + + // wait on 40:3e bit 7 to become 1 + do { + val8 = (read_byte(0x0040, 0x003e) & 0x80); + } while ( val8 == 0 ); + + val8 = 0; // separate asm from while() loop + // turn off interrupts + int_disable(); + + // set 40:3e bit 7 to 0, and calibrated bit + val8 = read_byte(0x0040, 0x003e); + val8 &= 0x7f; +#else + val8 = floppy_wait_for_interrupt(); /* (7th bit cleared in ret val) */ + + // set 40:3e bit 7 to 0, and calibrated bit +#endif + if (drive) { + val8 |= 0x02; // Drive 1 calibrated + curr_cyl_offset = 0x0095; + } else { + val8 |= 0x01; // Drive 0 calibrated + curr_cyl_offset = 0x0094; + } + write_byte(0x0040, 0x003e, val8); + write_byte(0x0040, curr_cyl_offset, 0); // current cylinder is 0 + + return 1; +} + + +bx_bool floppy_media_sense(uint16_t drive) +{ + bx_bool retval; + uint16_t media_state_offset; + uint8_t drive_type, config_data, media_state; + + if (floppy_drive_recal(drive) == 0) + return 0; + + // Try the diskette data rates in the following order: + // 1 Mbps -> 500 Kbps -> 300 Kbps -> 250 Kbps + // The 1 Mbps rate is only tried for 2.88M drives. + + // ** config_data ** + // Bitfields for diskette media control: + // Bit(s) Description (Table M0028) + // 7-6 last data rate set by controller + // 00=500kbps, 01=300kbps, 10=250kbps, 11=1Mbps + // 5-4 last diskette drive step rate selected + // 00=0Ch, 01=0Dh, 10=0Eh, 11=0Ah + // 3-2 {data rate at start of operation} + // 1-0 reserved + + // ** media_state ** + // Bitfields for diskette drive media state: + // Bit(s) Description (Table M0030) + // 7-6 data rate + // 00=500kbps, 01=300kbps, 10=250kbps, 11=1Mbps + // 5 double stepping required (e.g. 360kB in 1.2MB) + // 4 media type established + // 3 drive capable of supporting 4MB media + // 2-0 on exit from BIOS, contains + // 000 trying 360kB in 360kB + // 001 trying 360kB in 1.2MB + // 010 trying 1.2MB in 1.2MB + // 011 360kB in 360kB established + // 100 360kB in 1.2MB established + // 101 1.2MB in 1.2MB established + // 110 reserved + // 111 all other formats/drives + + /// @todo break out drive type determination + drive_type = inb_cmos(0x10); + if (drive == 0) + drive_type >>= 4; + else + drive_type &= 0x0f; + if ( drive_type == 1 ) { + // 360K 5.25" drive + config_data = 0x00; // 0000 0000 + media_state = 0x15; // 0001 0101 + retval = 1; + } + else if ( drive_type == 2 ) { + // 1.2 MB 5.25" drive + config_data = 0x00; // 0000 0000 + media_state = 0x35; // 0011 0101 // need double stepping??? (bit 5) + retval = 1; + } + else if ( drive_type == 3 ) { + // 720K 3.5" drive + config_data = 0x00; // 0000 0000 ??? + media_state = 0x17; // 0001 0111 + retval = 1; + } + else if ( drive_type == 4 ) { + // 1.44 MB 3.5" drive + config_data = 0x00; // 0000 0000 + media_state = 0x17; // 0001 0111 + retval = 1; + } + else if ( drive_type == 5 ) { + // 2.88 MB 3.5" drive + config_data = 0xCC; // 1100 1100 + media_state = 0xD7; // 1101 0111 + retval = 1; + } + // Extended floppy size uses special cmos setting + else if ( drive_type == 14 || drive_type == 15 ) { + // 15.6 MB 3.5" (fake) || 63.5 MB 3.5" (fake) - report same as 2.88 MB. + config_data = 0xCC; // 1100 1100 + media_state = 0xD7; // 1101 0111 + retval = 1; + } + else { + // not recognized + config_data = 0x00; // 0000 0000 + media_state = 0x00; // 0000 0000 + retval = 0; + } + + write_byte(0x0040, 0x008B, config_data); + while (!floppy_read_id(drive)) { + if ((config_data & 0xC0) == 0x80) { + // If even 250 Kbps failed, we can't do much + break; + } + switch (config_data & 0xC0) { + case 0xC0: // 1 Mbps + config_data = config_data & 0x3F | 0x00; + break; + case 0x00: // 500 Kbps + config_data = config_data & 0x3F | 0x40; + break; + case 0x40: // 300 Kbps + config_data = config_data & 0x3F | 0x80; + break; + } + write_byte(0x0040, 0x008B, config_data); + } + + if (drive == 0) + media_state_offset = 0x0090; + else + media_state_offset = 0x0091; + write_byte(0x0040, 0x008B, config_data); + write_byte(0x0040, media_state_offset, media_state); + + return retval; +} + + +bx_bool floppy_drive_exists(uint16_t drive) +{ + uint8_t drive_type; + + // check CMOS to see if drive exists + /// @todo break out drive type determination + drive_type = inb_cmos(0x10); + if (drive == 0) + drive_type >>= 4; + else + drive_type &= 0x0f; + return drive_type != 0; +} + +/// @todo put in a header +#define AX r.gr.u.r16.ax +#define BX r.gr.u.r16.bx +#define CX r.gr.u.r16.cx +#define DX r.gr.u.r16.dx +#define SI r.gr.u.r16.si // not used +#define DI r.gr.u.r16.di +#define BP r.gr.u.r16.bp // not used +#define ELDX r.gr.u.r16.sp +#define DS r.ds // not used +#define ES r.es +#define FLAGS r.ra.flags.u.r16.flags + +void BIOSCALL int13_diskette_function(disk_regs_t r) +{ + uint8_t drive, num_sectors, track, sector, head; + uint16_t base_address, base_count, base_es; + uint8_t page, mode_register, val8, media_state; + uint8_t drive_type, num_floppies; + uint16_t last_addr; + int i; + + BX_DEBUG_INT13_FL("%s: AX=%04x BX=%04x CX=%04x DX=%04x ES=%04x\n", __func__, AX, BX, CX, DX, ES); + + SET_IF(); /* INT 13h always returns with interrupts enabled. */ + + switch ( GET_AH() ) { + case 0x00: // diskette controller reset + BX_DEBUG_INT13_FL("floppy f00\n"); + drive = GET_ELDL(); + if (drive > 1) { + SET_AH(1); // invalid param + set_diskette_ret_status(1); + SET_CF(); + return; + } + /// @todo break out drive type determination + drive_type = inb_cmos(0x10); + if (drive == 0) + drive_type >>= 4; + else + drive_type &= 0x0f; + if (drive_type == 0) { + SET_AH(0x80); // drive not responding + set_diskette_ret_status(0x80); + SET_CF(); + return; + } + + // force re-calibration etc. + write_byte(0x0040, 0x003e, 0); + + SET_AH(0); + set_diskette_ret_status(0); + CLEAR_CF(); // successful + set_diskette_current_cyl(drive, 0); // current cylinder + return; + + case 0x01: // Read Diskette Status + CLEAR_CF(); + val8 = read_byte(0x0000, 0x0441); + SET_AH(val8); + if (val8) { + SET_CF(); + } + return; + + case 0x02: // Read Diskette Sectors + case 0x03: // Write Diskette Sectors + case 0x04: // Verify Diskette Sectors + num_sectors = GET_AL(); + track = GET_CH(); + sector = GET_CL(); + head = GET_DH(); + drive = GET_ELDL(); + + if ( (drive > 1) || (head > 1) || + (num_sectors == 0) || (num_sectors > 72) ) { + BX_INFO("%s: drive>1 || head>1 ...\n", __func__); + SET_AH(1); + set_diskette_ret_status(1); + SET_AL(0); // no sectors read + SET_CF(); // error occurred + return; + } + + // see if drive exists + if (floppy_drive_exists(drive) == 0) { + BX_DEBUG_INT13_FL("failed (not ready)\n"); + SET_AH(0x80); // not responding + set_diskette_ret_status(0x80); + SET_AL(0); // no sectors read + SET_CF(); // error occurred + return; + } + + // see if media in drive, and type is known + if (floppy_media_known(drive) == 0) { + if (floppy_media_sense(drive) == 0) { + BX_DEBUG_INT13_FL("media not found\n"); + SET_AH(0x0C); // Media type not found + set_diskette_ret_status(0x0C); + SET_AL(0); // no sectors read + SET_CF(); // error occurred + return; + } + } + + if (GET_AH() == 0x02) { + // Read Diskette Sectors + + //----------------------------------- + // set up DMA controller for transfer + //----------------------------------- + + // es:bx = pointer to where to place information from diskette + // port 04: DMA-1 base and current address, channel 2 + // port 05: DMA-1 base and current count, channel 2 + /// @todo merge/factor out pointer normalization + page = (ES >> 12); // upper 4 bits + base_es = (ES << 4); // lower 16bits contributed by ES + base_address = base_es + BX; // lower 16 bits of address + // contributed by ES:BX + if ( base_address < base_es ) { + // in case of carry, adjust page by 1 + page++; + } + base_count = (num_sectors * 512) - 1; + + // check for 64K boundary overrun + last_addr = base_address + base_count; + if (last_addr < base_address) { + SET_AH(0x09); + set_diskette_ret_status(0x09); + SET_AL(0); // no sectors read + SET_CF(); // error occurred + return; + } + + BX_DEBUG_INT13_FL("masking DMA-1 c2\n"); + outb(0x000a, 0x06); + + BX_DEBUG_INT13_FL("clear flip-flop\n"); + outb(0x000c, 0x00); // clear flip-flop + outb(0x0004, base_address); + outb(0x0004, base_address>>8); + BX_DEBUG_INT13_FL("clear flip-flop\n"); + outb(0x000c, 0x00); // clear flip-flop + outb(0x0005, base_count); + outb(0x0005, base_count>>8); + BX_DEBUG_INT13_FL("xfer buf %x bytes at %x:%x\n", + base_count + 1, page, base_address); + + // port 0b: DMA-1 Mode Register + mode_register = 0x46; // single mode, increment, autoinit disable, + // transfer type=write, channel 2 + BX_DEBUG_INT13_FL("setting mode register\n"); + outb(0x000b, mode_register); + + BX_DEBUG_INT13_FL("setting page register\n"); + // port 81: DMA-1 Page Register, channel 2 + outb(0x0081, page); + + BX_DEBUG_INT13_FL("unmasking DMA-1 c2\n"); + outb(0x000a, 0x02); // unmask channel 2 + + //-------------------------------------- + // set up floppy controller for transfer + //-------------------------------------- + floppy_prepare_controller(drive); + + // send read-normal-data command (9 bytes) to controller + outb(0x03f5, 0xe6); // e6: read normal data + outb(0x03f5, (head << 2) | drive); // HD DR1 DR2 + outb(0x03f5, track); + outb(0x03f5, head); + outb(0x03f5, sector); + outb(0x03f5, 2); // 512 byte sector size + outb(0x03f5, sector + num_sectors - 1); // last sector to read on track + outb(0x03f5, 0); // Gap length + outb(0x03f5, 0xff); // Gap length + BX_DEBUG_INT13_FL("read initiated\n"); + +#ifdef VBOX_WITH_FLOPPY_IRQ_POLLING + // turn on interrupts + int_enable(); + + // wait on 40:3e bit 7 to become 1 or timeout (latter isn't armed so it won't happen) + do { + val8 = read_byte(0x0040, 0x0040); + if (val8 == 0) { + BX_DEBUG_INT13_FL("failed (not ready)\n"); + floppy_reset_controller(drive); + SET_AH(0x80); // drive not ready (timeout) + set_diskette_ret_status(0x80); + SET_AL(0); // no sectors read + SET_CF(); // error occurred + return; + } + val8 = (read_byte(0x0040, 0x003e) & 0x80); + } while ( val8 == 0 ); + + val8 = 0; // separate asm from while() loop + // turn off interrupts + int_disable(); + + // set 40:3e bit 7 to 0 + val8 = read_byte(0x0040, 0x003e); + val8 &= 0x7f; + write_byte(0x0040, 0x003e, val8); + +#else + val8 = floppy_wait_for_interrupt_or_timeout(); + if (val8 == 0) { /* Note! Interrupts enabled in this branch. */ + BX_DEBUG_INT13_FL("failed (not ready)\n"); + floppy_reset_controller(drive); + SET_AH(0x80); // drive not ready (timeout) + set_diskette_ret_status(0x80); + SET_AL(0); // no sectors read + SET_CF(); // error occurred + return; + } +#endif + + // check port 3f4 for accessibility to status bytes + val8 = inb(0x3f4); + if ( (val8 & 0xc0) != 0xc0 ) + BX_PANIC("%s: ctrl not ready\n", __func__); + + // read 7 return status bytes from controller and store in BDA + for (i = 0; i < 7; ++i) + write_byte(0x0040, 0x0042 + i, inb(0x3f5)); + + if ((read_byte(0x0040, 0x0042 + 0) & 0xc0) != 0) { + BX_DEBUG_INT13_FL("failed (FDC failure)\n"); + floppy_reset_controller(drive); + SET_AH(0x20); + set_diskette_ret_status(0x20); + SET_AL(0); // no sectors read + SET_CF(); // error occurred + return; + } + +#ifdef DMA_WORKAROUND + rep_movsw(ES :> BX, ES :> BX, num_sectors * 512 / 2); +#endif + BX_DEBUG_INT13_FL("success!\n"); + // ??? should track be new val from return_status[3] ? + set_diskette_current_cyl(drive, track); + // AL = number of sectors read (same value as passed) + SET_AH(0x00); // success + CLEAR_CF(); // success + return; + } else if (GET_AH() == 0x03) { + // Write Diskette Sectors + + //----------------------------------- + // set up DMA controller for transfer + //----------------------------------- + + // es:bx = pointer to where to place information from diskette + // port 04: DMA-1 base and current address, channel 2 + // port 05: DMA-1 base and current count, channel 2 + /// @todo merge/factor out pointer normalization + page = (ES >> 12); // upper 4 bits + base_es = (ES << 4); // lower 16bits contributed by ES + base_address = base_es + BX; // lower 16 bits of address + // contributed by ES:BX + if ( base_address < base_es ) { + // in case of carry, adjust page by 1 + page++; + } + base_count = (num_sectors * 512) - 1; + + // check for 64K boundary overrun + last_addr = base_address + base_count; + if (last_addr < base_address) { + SET_AH(0x09); + set_diskette_ret_status(0x09); + SET_AL(0); // no sectors read + SET_CF(); // error occurred + return; + } + + BX_DEBUG_INT13_FL("masking DMA-1 c2\n"); + outb(0x000a, 0x06); + + outb(0x000c, 0x00); // clear flip-flop + outb(0x0004, base_address); + outb(0x0004, base_address>>8); + outb(0x000c, 0x00); // clear flip-flop + outb(0x0005, base_count); + outb(0x0005, base_count>>8); + BX_DEBUG_INT13_FL("xfer buf %x bytes at %x:%x\n", + base_count, page, base_address); + + // port 0b: DMA-1 Mode Register + mode_register = 0x4a; // single mode, increment, autoinit disable, + // transfer type=read, channel 2 + outb(0x000b, mode_register); + + // port 81: DMA-1 Page Register, channel 2 + outb(0x0081, page); + + BX_DEBUG_INT13_FL("unmasking DMA-1 c2\n"); + outb(0x000a, 0x02); + + //-------------------------------------- + // set up floppy controller for transfer + //-------------------------------------- + floppy_prepare_controller(drive); + + // send write-normal-data command (9 bytes) to controller + outb(0x03f5, 0xc5); // c5: write normal data + outb(0x03f5, (head << 2) | drive); // HD DR1 DR2 + outb(0x03f5, track); + outb(0x03f5, head); + outb(0x03f5, sector); + outb(0x03f5, 2); // 512 byte sector size + outb(0x03f5, sector + num_sectors - 1); // last sector to write on track + outb(0x03f5, 0); // Gap length + outb(0x03f5, 0xff); // Gap length + +#ifdef VBOX_WITH_FLOPPY_IRQ_POLLING + // turn on interrupts + int_enable(); + + // wait on 40:3e bit 7 to become 1 + do { + val8 = read_byte(0x0040, 0x0040); + if (val8 == 0) { + floppy_reset_controller(drive); + SET_AH(0x80); // drive not ready (timeout) + set_diskette_ret_status(0x80); + SET_AL(0); // no sectors written + SET_CF(); // error occurred + return; + } + val8 = (read_byte(0x0040, 0x003e) & 0x80); + } while ( val8 == 0 ); + + val8 = 0; // separate asm from while() loop @todo: why?? + // turn off interrupts + int_disable(); + + // set 40:3e bit 7 to 0 + val8 = read_byte(0x0040, 0x003e); + val8 &= 0x7f; + write_byte(0x0040, 0x003e, val8); +#else + val8 = floppy_wait_for_interrupt_or_timeout(); + if (val8 == 0) { /* Note! Interrupts enabled in this branch. */ + floppy_reset_controller(drive); + SET_AH(0x80); // drive not ready (timeout) + set_diskette_ret_status(0x80); + SET_AL(0); // no sectors written + SET_CF(); // error occurred + return; + } +#endif + + // check port 3f4 for accessibility to status bytes + val8 = inb(0x3f4); + if ( (val8 & 0xc0) != 0xc0 ) + BX_PANIC("%s: ctrl not ready\n", __func__); + + // read 7 return status bytes from controller and store in BDA + for (i = 0; i < 7; ++i) + write_byte(0x0040, 0x0042 + i, inb(0x3f5)); + + if ((read_byte(0x0040, 0x0042 + 0) & 0xc0) != 0) { + if ((read_byte(0x0040, 0x0042 + 1) & 0x02) != 0) { + // diskette not writable. + // AH=status code=0x03 (tried to write on write-protected disk) + // AL=number of sectors written=0 + AX = 0x0300; + } else { + // Some other problem occurred. + AX = 0x0100; + } + SET_CF(); + return; + } + + // ??? should track be new val from return_status[3] ? + set_diskette_current_cyl(drive, track); + // AL = number of sectors read (same value as passed) + SET_AH(0x00); // success + CLEAR_CF(); // success + return; + } else { // if (ah == 0x04) + // Verify Diskette Sectors + + // ??? should track be new val from return_status[3] ? + set_diskette_current_cyl(drive, track); + // AL = number of sectors verified (same value as passed) + CLEAR_CF(); // success + SET_AH(0x00); // success + return; + } + break; + + case 0x05: // format diskette track + BX_DEBUG_INT13_FL("floppy f05\n"); + + num_sectors = GET_AL(); + track = GET_CH(); + head = GET_DH(); + drive = GET_ELDL(); + + if ((drive > 1) || (head > 1) || (track > 79) || + (num_sectors == 0) || (num_sectors > 18)) { + SET_AH(1); + set_diskette_ret_status(1); + SET_CF(); // error occurred + } + + // see if drive exists + if (floppy_drive_exists(drive) == 0) { + SET_AH(0x80); // drive not responding + set_diskette_ret_status(0x80); + SET_CF(); // error occurred + return; + } + + // see if media in drive, and type is known + if (floppy_media_known(drive) == 0) { + if (floppy_media_sense(drive) == 0) { + SET_AH(0x0C); // Media type not found + set_diskette_ret_status(0x0C); + SET_AL(0); // no sectors read + SET_CF(); // error occurred + return; + } + } + + // set up DMA controller for transfer + /// @todo merge/factor out pointer normalization + page = (ES >> 12); // upper 4 bits + base_es = (ES << 4); // lower 16bits contributed by ES + base_address = base_es + BX; // lower 16 bits of address + // contributed by ES:BX + if ( base_address < base_es ) { + // in case of carry, adjust page by 1 + page++; + } + base_count = (num_sectors * 4) - 1; + + // check for 64K boundary overrun + last_addr = base_address + base_count; + if (last_addr < base_address) { + SET_AH(0x09); + set_diskette_ret_status(0x09); + SET_AL(0); // no sectors read + SET_CF(); // error occurred + return; + } + + outb(0x000a, 0x06); + outb(0x000c, 0x00); // clear flip-flop + outb(0x0004, base_address); + outb(0x0004, base_address>>8); + outb(0x000c, 0x00); // clear flip-flop + outb(0x0005, base_count); + outb(0x0005, base_count>>8); + mode_register = 0x4a; // single mode, increment, autoinit disable, + // transfer type=read, channel 2 + outb(0x000b, mode_register); + // port 81: DMA-1 Page Register, channel 2 + outb(0x0081, page); + outb(0x000a, 0x02); + + // set up floppy controller for transfer + floppy_prepare_controller(drive); + + // send seek command to controller + outb(0x03f5, 0x0f); // 0f: seek + outb(0x03f5, (head << 2) | drive); // HD DR1 DR2 + outb(0x03f5, track); + + // send format-track command (6 bytes) to controller + outb(0x03f5, 0x4d); // 4d: format track + outb(0x03f5, (head << 2) | drive); // HD DR1 DR2 + outb(0x03f5, 2); // 512 byte sector size + outb(0x03f5, num_sectors); // number of sectors per track + outb(0x03f5, 0); // Gap length + outb(0x03f5, 0xf6); // Fill byte + +#ifdef VBOX_WITH_FLOPPY_IRQ_POLLING + // turn on interrupts + int_enable(); + + // wait on 40:3e bit 7 to become 1 + do { + val8 = read_byte(0x0040, 0x0040); + if (val8 == 0) { + floppy_reset_controller(drive); + SET_AH(0x80); // drive not ready (timeout) + set_diskette_ret_status(0x80); + SET_CF(); // error occurred + return; + } + val8 = (read_byte(0x0040, 0x003e) & 0x80); + } while ( val8 == 0 ); + + val8 = 0; // separate asm from while() loop + // turn off interrupts + int_disable(); + + // set 40:3e bit 7 to 0 + val8 = read_byte(0x0040, 0x003e); + val8 &= 0x7f; + write_byte(0x0040, 0x003e, val8); +#else + val8 = floppy_wait_for_interrupt_or_timeout(); + if (val8 == 0) { /* Note! Interrupts enabled in this branch. */ + floppy_reset_controller(drive); + SET_AH(0x80); // drive not ready (timeout) + set_diskette_ret_status(0x80); + SET_CF(); // error occurred + return; + } +#endif + + // check port 3f4 for accessibility to status bytes + val8 = inb(0x3f4); + if ( (val8 & 0xc0) != 0xc0 ) + BX_PANIC("%s: ctrl not ready\n", __func__); + + // read 7 return status bytes from controller and store in BDA + for (i = 0; i < 7; ++i) + write_byte(0x0040, 0x0042 + i, inb(0x3f5)); + + if ((read_byte(0x0040, 0x0042 + 0) & 0xc0) != 0) { + if ((read_byte(0x0040, 0x0042 + 1) & 0x02) != 0) { + // diskette not writable. + // AH=status code=0x03 (tried to write on write-protected disk) + // AL=number of sectors written=0 + AX = 0x0300; + SET_CF(); + return; + } else { + BX_PANIC("%s: write error\n", __func__); + } + } + + SET_AH(0); + set_diskette_ret_status(0); + set_diskette_current_cyl(drive, 0); + CLEAR_CF(); // successful + return; + + + case 0x08: // read diskette drive parameters + BX_DEBUG_INT13_FL("floppy f08\n"); + drive = GET_ELDL(); + + if (drive > 1) { + AX = 0; + BX = 0; + CX = 0; + DX = 0; + ES = 0; + DI = 0; + SET_DL(num_floppies); + SET_CF(); + return; + } + + /// @todo break out drive type determination + drive_type = inb_cmos(0x10); + num_floppies = 0; + if (drive_type & 0xf0) + num_floppies++; + if (drive_type & 0x0f) + num_floppies++; + + if (drive == 0) + drive_type >>= 4; + else + drive_type &= 0x0f; + + SET_BH(0); + SET_BL(drive_type); + SET_AH(0); + SET_AL(0); + SET_DL(num_floppies); + SET_DH(1); // max head # + + switch (drive_type) { + case 0: // none + CX = 0; + SET_DH(0); // max head # + break; + + case 1: // 360KB, 5.25" + CX = 0x2709; // 40 tracks, 9 sectors + break; + + case 2: // 1.2MB, 5.25" + CX = 0x4f0f; // 80 tracks, 15 sectors + break; + + case 3: // 720KB, 3.5" + CX = 0x4f09; // 80 tracks, 9 sectors + break; + + case 4: // 1.44MB, 3.5" + CX = 0x4f12; // 80 tracks, 18 sectors + break; + + case 5: // 2.88MB, 3.5" + CX = 0x4f24; // 80 tracks, 36 sectors + break; + + case 14: // 15.6 MB 3.5" (fake) + CX = 0xfe3f; // 255 tracks, 63 sectors + break; + + case 15: // 63.5 MB 3.5" (fake) + CX = 0xfeff; // 255 tracks, 255 sectors - This works because the cylinder + break; // and sectors limits/encoding aren't checked by the BIOS + // due to copy protection schemes and such stuff. + + default: // ? + BX_PANIC("%s: bad floppy type\n", __func__); + } + + /* set es & di to point to 11 byte diskette param table in ROM */ + ES = 0xF000; /// @todo any way to make this relocatable? + DI = get_floppy_dpt(drive_type); + CLEAR_CF(); // success + /* disk status not changed upon success */ + return; + + case 0x15: // read diskette drive type + BX_DEBUG_INT13_FL("floppy f15\n"); + drive = GET_ELDL(); + if (drive > 1) { + SET_AH(0); // only 2 drives supported + // set_diskette_ret_status here ??? + SET_CF(); + return; + } + /// @todo break out drive type determination + drive_type = inb_cmos(0x10); + if (drive == 0) + drive_type >>= 4; + else + drive_type &= 0x0f; + CLEAR_CF(); // successful, not present + if (drive_type==0) { + SET_AH(0); // drive not present + } else if (drive_type > 1) { + SET_AH(2); // drive present, supports change line + } else { + SET_AH(1); // drive present, does not support change line + } + + return; + + case 0x16: // get diskette change line status + BX_DEBUG_INT13_FL("floppy f16\n"); + drive = GET_ELDL(); + if (drive > 1) { + SET_AH(0x01); // invalid drive + set_diskette_ret_status(0x01); + SET_CF(); + return; + } + + SET_AH(0x06); // change line not supported + set_diskette_ret_status(0x06); + SET_CF(); + return; + + case 0x17: // set diskette type for format(old) + BX_DEBUG_INT13_FL("floppy f17\n"); + // NOTE: 1.44M diskette not supported by this function, use INT14h/18h instead. + // Drive number (0 or 1) values allowed + drive = GET_ELDL(); + + // Format type (AL) + // 00 - NOT USED + // 01 - DISKETTE 360K IN 360K DRIVE + // 02 - DISKETTE 360K IN 1.2M DRIVE + // 03 - DISKETTE 1.2M IN 1.2M DRIVE + // 04 - DISKETTE 720K IN 720K DRIVE + val8 = GET_AL(); + + BX_DEBUG_INT13_FL("floppy f17 - drive: %d, format type: %d\n", drive, val8); + + if (drive > 1) { + SET_AH(0x01); // invalid drive + set_diskette_ret_status(0x01); // bad parameter + SET_CF(); + return; + } + + // see if drive exists + if (floppy_drive_exists(drive) == 0) { + SET_AH(0x80); // not responding/time out + set_diskette_ret_status(0x80); + SET_CF(); + return; + } + + // Get current drive state. Set 'base_address' to media status offset address + base_address = (drive) ? 0x0091 : 0x0090; + media_state = read_byte(0x0040, base_address); + + // Mask out (clear) bits 4-7 (4:media type established, 5:double stepping, 6-7:data rate) + media_state &= 0x0f; + + switch (val8) { + case 1: + // 360K media in 360K drive + media_state |= 0x90; // 1001 0000 (media type established, 250 kbps) + break; + case 2: + // 360K media in 1.2M drive + media_state |= 0x70; // 0111 0000 (media type established, double stepping, 300 kbps) + break; + case 3: + // 1.2M media in 1.2M drive + media_state |= 0x10; // 0001 0000 (media type established, 500 kbps) + break; + case 4: + // 720K media in 720K drive + media_state |= 0x90; // 1001 0000 (media type established, 250 kbps) + break; + default: + // bad parameter + SET_AH(0x01); // invalid format mode parameter + set_diskette_ret_status(0x01); + SET_CF(); + return; + } + + // Update media status + write_byte(0x0040, base_address, media_state); + BX_DEBUG_INT13_FL("floppy f17 - media status set to: %02x\n", media_state); + + // return success! + SET_AH(0); + set_diskette_ret_status(0); + CLEAR_CF(); + return; + + case 0x18: // set diskette type for format(new) + BX_DEBUG_INT13_FL("floppy f18\n"); + // Set Media Type for Format. Verifies that the device supports a specific geometry. + // Unlike INT13h/17h, this service supports higher capacity drives (1.44M and 2.88M). + // Drive number (0 or 1) values allowed + drive = GET_ELDL(); + + val8 = GET_CL(); + num_sectors = val8 & 0x3f; // max sector number per cylinder + track = ((val8 >> 6) << 8) + GET_CH(); // max cylinder number (max cylinders - 1) + + BX_DEBUG_INT13_FL("floppy f18 - drive: %d, max cylinder/track number: %d, sectors-per-tracks: %d\n", + drive, track, num_sectors); + + if (drive > 1) { + SET_AH(0x01); // invalid drive + set_diskette_ret_status(0x01); + SET_CF(); + return; + } + + // see if drive exists + if (floppy_drive_exists(drive) == 0) { + SET_AH(0x80); // not responding/time out + set_diskette_ret_status(0x80); + SET_CF(); + return; + } + + // see if media in drive, and media type is known + if (floppy_media_known(drive) == 0) { + if (floppy_media_sense(drive) == 0) { + SET_AH(0x0C); // drive/media type unknown + set_diskette_ret_status(0x0C); + SET_CF(); + return; + } + } + + /// @todo break out drive type determination + drive_type = inb_cmos(0x10); + if (drive == 0) + drive_type >>= 4; + else + drive_type &= 0x0f; + + // Get current drive state. Set 'base_address' to media status offset address + base_address = (drive) ? 0x0091 : 0x0090; + media_state = read_byte(0x0040, base_address); + + // Mask out (clear) bits 4-7 (4:media type established, 5:double stepping, 6-7:data rate) + media_state &= 0x0f; + + switch (drive_type) { + case 1: // 360KB, 5.25" + if (track == 39 && num_sectors == 9) + media_state |= 0x90; // 1001 0000 (media type established, 250 kbps) + + break; + case 2: // 1.2MB, 5.25" + if (track == 39 && num_sectors == 9) { // 360K disk in 1.2M drive + media_state |= 0x70; // 0111 0000 (media type established, double stepping, 300 kbps) + } else if (track == 79 && num_sectors == 15) { // 1.2M disk in 1.2M drive + media_state |= 0x10; // 0001 0000 (media type established, 500 kbps) + } + break; + case 3: // 720KB, 3.5" + if (track == 79 && num_sectors == 9) + media_state |= 0x90; // 1001 0000 (media type established, 250 kbps) + + break; + case 4: // 1.44MB, 3.5" + if (track == 79) { + if (num_sectors == 9) { // 720K disk in 1.44M drive + media_state |= 0x90; // 1001 0000 (media type established, 250 kbps) + } else if (num_sectors == 18) { // 1.44M disk in 1.44M drive + media_state |= 0x10; // 0001 0000 (media type established, 500 kbps) + } + } + break; + case 5: // 2.88MB, 3.5" + if (track == 79) { + if (num_sectors == 9) { // 720K disk in 2.88M drive + media_state |= 0x90; // 1001 0000 (media type established, 250 kbps) + } else if (num_sectors == 18) { // 1.44M disk in 2.88M drive + media_state |= 0x10; // 0001 0000 (media type established, 500 kbps) + } else if (num_sectors == 36) { // 2.88M disk in 2.88M drive + media_state |= 0xD0; // 1101 0000 (media type established, 1 Mbps) + } + } + break; + default: + break; + } + + // Error if bit 4 (media type established) has not just been set above. + if (((media_state >> 4) & 0x01) == 0) { + // Error - assume requested tracks/sectors-per-track not supported + // for current drive type - or drive type is unknown! + SET_AH(0x0C); + set_diskette_ret_status(0x0C); + SET_CF(); + return; + } + + // Update media status + write_byte(0x0040, base_address, media_state); + + // set es & di to point to 11 byte diskette param table in ROM + ES = 0xF000; /// @todo any way to make this relocatable? + DI = get_floppy_dpt(drive_type); + + // return success! + SET_AH(0); + set_diskette_ret_status(0); + CLEAR_CF(); + return; + + default: + BX_INFO("%s: unsupported AH=%02x\n", __func__, GET_AH()); + + // if ( (ah==0x20) || ((ah>=0x41) && (ah<=0x49)) || (ah==0x4e) ) { + SET_AH(0x01); // ??? + set_diskette_ret_status(1); + SET_CF(); + return; + // } + } +} + +#else // #if BX_SUPPORT_FLOPPY + +void BIOSCALL int13_diskette_function(disk_regs_t r) +{ + uint8_t val8; + + switch ( GET_AH() ) { + + case 0x01: // Read Diskette Status + CLEAR_CF(); + val8 = read_byte(0x0000, 0x0441); + SET_AH(val8); + if (val8) { + SET_CF(); + } + return; + + default: + SET_CF(); + write_byte(0x0000, 0x0441, 0x01); + SET_AH(0x01); + } +} + +#endif // #if BX_SUPPORT_FLOPPY + +/* Avoid saving general registers already saved by caller (PUSHA). */ +#pragma aux int13_diskette_function modify [di si cx dx bx]; diff --git a/src/VBox/Devices/PC/BIOS/floppyt.c b/src/VBox/Devices/PC/BIOS/floppyt.c new file mode 100644 index 00000000..4b9a2792 --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/floppyt.c @@ -0,0 +1,104 @@ +/* $Id: floppyt.c $ */ +/** @file + * Floppy drive tables. + */ + +/* + * Copyright (C) 2011-2019 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + */ + +#include <stdint.h> +#include <string.h> +#include "biosint.h" +#include "inlines.h" + +/** + * Extended DPT (Disk Parameter Table) structure. + */ +typedef struct +{ + uint8_t spec1; /* First SPECIFY byte. */ + uint8_t spec2; /* Second SPECIFY byte. */ + uint8_t mot_wait; /* Motor wait time after operation. */ + uint8_t ss_code; /* Sector size code. */ + uint8_t eot; /* End of Track (ID of last sector). */ + uint8_t gap; /* Gap length. */ + uint8_t dtl; /* Data length. */ + uint8_t fmt_gap; /* Gap length for format. */ + uint8_t fmt_fill; /* Format fill byte. */ + uint8_t hd_settle; /* Head settle time (msec). */ + uint8_t mot_start; /* Motor start time (1/8 sec units). */ + uint8_t max_trk; /* Maximum track number. */ + uint8_t rate; /* Data transfer rate code. */ +} dpt_ext; + +ct_assert(sizeof(dpt_ext) == 13); + +/* Motor spin-up wait time in BIOS ticks (~2 seconds). */ +#define MOTOR_WAIT 0x25 + +/* Data rates as stored in the DPT */ +#define RATE_250K 0x80 +#define RATE_300K 0x40 +#define RATE_500K 0x00 +#define RATE_1M 0xC0 + +/* In the 13-entry DPT, 7 entries are constant. Use a macro to set those. */ +#define MAKE_DPT_ENTRY(sp1, eot, gap, fgp, mxt, dtr) \ + { sp1, 2, MOTOR_WAIT, 2, eot, gap, 0xFF, fgp, 0xF6, 15, 8, mxt, dtr } + +dpt_ext fd_parm[] = { + MAKE_DPT_ENTRY(0xDF, 9, 0x2A, 0x50, 39, RATE_250K), /* 360K disk/360K drive */ + MAKE_DPT_ENTRY(0xDF, 9, 0x2A, 0x50, 39, RATE_300K), /* 360K disk/1.2M drive */ + MAKE_DPT_ENTRY(0xDF, 15, 0x1B, 0x54, 79, RATE_500K), /* 1.2M disk */ + MAKE_DPT_ENTRY(0xDF, 9, 0x2A, 0x50, 79, RATE_250K), /* 720K disk */ + MAKE_DPT_ENTRY(0xAF, 18, 0x1B, 0x6C, 79, RATE_500K), /* 1.44M disk */ + MAKE_DPT_ENTRY(0xAF, 36, 0x1B, 0x54, 79, RATE_1M), /* 2.88M disk */ + MAKE_DPT_ENTRY(0xAF, 255, 0x1B, 0x54, 255, RATE_500K) /* Fake mega-disk */ +}; + +typedef struct { + uint8_t type; /* Drive type. */ + uint8_t dpt_entry; /* Index of entry in fd_parm. */ +} fd_map_entry; + +/* Drive types as stored in the CMOS. Must match DevPCBios! */ +#define FDRV_360K 1 +#define FDRV_1_2M 2 +#define FDRV_720K 3 +#define FDRV_1_44M 4 +#define FDRV_2_88M 5 +#define FDRV_15M 14 +#define FDRV_63M 15 + +/* A table mapping (CMOS) drive types to DPT entries. */ +fd_map_entry fd_map[] = { + { FDRV_360K, 0 }, + { FDRV_1_2M, 2 }, + { FDRV_720K, 3 }, + { FDRV_1_44M, 4 }, + { FDRV_2_88M, 5 }, + { FDRV_15M, 6 }, + { FDRV_63M, 6 } +}; + +/* Find a DPT corresponding to the given drive type. */ +dpt_ext *get_floppy_dpt(uint8_t drv_typ) +{ + int i; + + for (i = 0; i < sizeof(fd_map) / sizeof(fd_map[0]); ++i) + if (fd_map[i].type == drv_typ) + return &fd_parm[fd_map[i].dpt_entry]; + + /* As a fallback, return the 1.44M DPT. */ + return &fd_parm[5]; +} diff --git a/src/VBox/Devices/PC/BIOS/font8x8.inc b/src/VBox/Devices/PC/BIOS/font8x8.inc new file mode 100644 index 00000000..8fee2937 --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/font8x8.inc @@ -0,0 +1,133 @@ +; This font comes from the fntcol16.zip package (c) by Joseph Gil +; found at ftp://ftp.simtel.net/pub/simtelnet/msdos/screen/fntcol16.zip +; This font is in the public domain + +font8x8: + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 07eh, 081h, 0a5h, 081h, 0bdh, 099h, 081h, 07eh + db 07eh, 0ffh, 0dbh, 0ffh, 0c3h, 0e7h, 0ffh, 07eh + db 06ch, 0feh, 0feh, 0feh, 07ch, 038h, 010h, 000h + db 010h, 038h, 07ch, 0feh, 07ch, 038h, 010h, 000h + db 038h, 07ch, 038h, 0feh, 0feh, 07ch, 038h, 07ch + db 010h, 010h, 038h, 07ch, 0feh, 07ch, 038h, 07ch + db 000h, 000h, 018h, 03ch, 03ch, 018h, 000h, 000h + db 0ffh, 0ffh, 0e7h, 0c3h, 0c3h, 0e7h, 0ffh, 0ffh + db 000h, 03ch, 066h, 042h, 042h, 066h, 03ch, 000h + db 0ffh, 0c3h, 099h, 0bdh, 0bdh, 099h, 0c3h, 0ffh + db 00fh, 007h, 00fh, 07dh, 0cch, 0cch, 0cch, 078h + db 03ch, 066h, 066h, 066h, 03ch, 018h, 07eh, 018h + db 03fh, 033h, 03fh, 030h, 030h, 070h, 0f0h, 0e0h + db 07fh, 063h, 07fh, 063h, 063h, 067h, 0e6h, 0c0h + db 099h, 05ah, 03ch, 0e7h, 0e7h, 03ch, 05ah, 099h + db 080h, 0e0h, 0f8h, 0feh, 0f8h, 0e0h, 080h, 000h + db 002h, 00eh, 03eh, 0feh, 03eh, 00eh, 002h, 000h + db 018h, 03ch, 07eh, 018h, 018h, 07eh, 03ch, 018h + db 066h, 066h, 066h, 066h, 066h, 000h, 066h, 000h + db 07fh, 0dbh, 0dbh, 07bh, 01bh, 01bh, 01bh, 000h + db 03eh, 063h, 038h, 06ch, 06ch, 038h, 0cch, 078h + db 000h, 000h, 000h, 000h, 07eh, 07eh, 07eh, 000h + db 018h, 03ch, 07eh, 018h, 07eh, 03ch, 018h, 0ffh + db 018h, 03ch, 07eh, 018h, 018h, 018h, 018h, 000h + db 018h, 018h, 018h, 018h, 07eh, 03ch, 018h, 000h + db 000h, 018h, 00ch, 0feh, 00ch, 018h, 000h, 000h + db 000h, 030h, 060h, 0feh, 060h, 030h, 000h, 000h + db 000h, 000h, 0c0h, 0c0h, 0c0h, 0feh, 000h, 000h + db 000h, 024h, 066h, 0ffh, 066h, 024h, 000h, 000h + db 000h, 018h, 03ch, 07eh, 0ffh, 0ffh, 000h, 000h + db 000h, 0ffh, 0ffh, 07eh, 03ch, 018h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h + db 030h, 078h, 078h, 030h, 030h, 000h, 030h, 000h + db 06ch, 06ch, 06ch, 000h, 000h, 000h, 000h, 000h + db 06ch, 06ch, 0feh, 06ch, 0feh, 06ch, 06ch, 000h + db 030h, 07ch, 0c0h, 078h, 00ch, 0f8h, 030h, 000h + db 000h, 0c6h, 0cch, 018h, 030h, 066h, 0c6h, 000h + db 038h, 06ch, 038h, 076h, 0dch, 0cch, 076h, 000h + db 060h, 060h, 0c0h, 000h, 000h, 000h, 000h, 000h + db 018h, 030h, 060h, 060h, 060h, 030h, 018h, 000h + db 060h, 030h, 018h, 018h, 018h, 030h, 060h, 000h + db 000h, 066h, 03ch, 0ffh, 03ch, 066h, 000h, 000h + db 000h, 030h, 030h, 0fch, 030h, 030h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 030h, 030h, 060h + db 000h, 000h, 000h, 0fch, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 030h, 030h, 000h + db 006h, 00ch, 018h, 030h, 060h, 0c0h, 080h, 000h + db 07ch, 0c6h, 0ceh, 0deh, 0f6h, 0e6h, 07ch, 000h + db 030h, 070h, 030h, 030h, 030h, 030h, 0fch, 000h + db 078h, 0cch, 00ch, 038h, 060h, 0cch, 0fch, 000h + db 078h, 0cch, 00ch, 038h, 00ch, 0cch, 078h, 000h + db 01ch, 03ch, 06ch, 0cch, 0feh, 00ch, 01eh, 000h + db 0fch, 0c0h, 0f8h, 00ch, 00ch, 0cch, 078h, 000h + db 038h, 060h, 0c0h, 0f8h, 0cch, 0cch, 078h, 000h + db 0fch, 0cch, 00ch, 018h, 030h, 030h, 030h, 000h + db 078h, 0cch, 0cch, 078h, 0cch, 0cch, 078h, 000h + db 078h, 0cch, 0cch, 07ch, 00ch, 018h, 070h, 000h + db 000h, 030h, 030h, 000h, 000h, 030h, 030h, 000h + db 000h, 030h, 030h, 000h, 000h, 030h, 030h, 060h + db 018h, 030h, 060h, 0c0h, 060h, 030h, 018h, 000h + db 000h, 000h, 0fch, 000h, 000h, 0fch, 000h, 000h + db 060h, 030h, 018h, 00ch, 018h, 030h, 060h, 000h + db 078h, 0cch, 00ch, 018h, 030h, 000h, 030h, 000h + db 07ch, 0c6h, 0deh, 0deh, 0deh, 0c0h, 078h, 000h + db 030h, 078h, 0cch, 0cch, 0fch, 0cch, 0cch, 000h + db 0fch, 066h, 066h, 07ch, 066h, 066h, 0fch, 000h + db 03ch, 066h, 0c0h, 0c0h, 0c0h, 066h, 03ch, 000h + db 0f8h, 06ch, 066h, 066h, 066h, 06ch, 0f8h, 000h + db 0feh, 062h, 068h, 078h, 068h, 062h, 0feh, 000h + db 0feh, 062h, 068h, 078h, 068h, 060h, 0f0h, 000h + db 03ch, 066h, 0c0h, 0c0h, 0ceh, 066h, 03eh, 000h + db 0cch, 0cch, 0cch, 0fch, 0cch, 0cch, 0cch, 000h + db 078h, 030h, 030h, 030h, 030h, 030h, 078h, 000h + db 01eh, 00ch, 00ch, 00ch, 0cch, 0cch, 078h, 000h + db 0e6h, 066h, 06ch, 078h, 06ch, 066h, 0e6h, 000h + db 0f0h, 060h, 060h, 060h, 062h, 066h, 0feh, 000h + db 0c6h, 0eeh, 0feh, 0feh, 0d6h, 0c6h, 0c6h, 000h + db 0c6h, 0e6h, 0f6h, 0deh, 0ceh, 0c6h, 0c6h, 000h + db 038h, 06ch, 0c6h, 0c6h, 0c6h, 06ch, 038h, 000h + db 0fch, 066h, 066h, 07ch, 060h, 060h, 0f0h, 000h + db 078h, 0cch, 0cch, 0cch, 0dch, 078h, 01ch, 000h + db 0fch, 066h, 066h, 07ch, 06ch, 066h, 0e6h, 000h + db 078h, 0cch, 0e0h, 070h, 01ch, 0cch, 078h, 000h + db 0fch, 0b4h, 030h, 030h, 030h, 030h, 078h, 000h + db 0cch, 0cch, 0cch, 0cch, 0cch, 0cch, 0fch, 000h + db 0cch, 0cch, 0cch, 0cch, 0cch, 078h, 030h, 000h + db 0c6h, 0c6h, 0c6h, 0d6h, 0feh, 0eeh, 0c6h, 000h + db 0c6h, 0c6h, 06ch, 038h, 038h, 06ch, 0c6h, 000h + db 0cch, 0cch, 0cch, 078h, 030h, 030h, 078h, 000h + db 0feh, 0c6h, 08ch, 018h, 032h, 066h, 0feh, 000h + db 078h, 060h, 060h, 060h, 060h, 060h, 078h, 000h + db 0c0h, 060h, 030h, 018h, 00ch, 006h, 002h, 000h + db 078h, 018h, 018h, 018h, 018h, 018h, 078h, 000h + db 010h, 038h, 06ch, 0c6h, 000h, 000h, 000h, 000h + db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 0ffh + db 030h, 030h, 018h, 000h, 000h, 000h, 000h, 000h + db 000h, 000h, 078h, 00ch, 07ch, 0cch, 076h, 000h + db 0e0h, 060h, 060h, 07ch, 066h, 066h, 0dch, 000h + db 000h, 000h, 078h, 0cch, 0c0h, 0cch, 078h, 000h + db 01ch, 00ch, 00ch, 07ch, 0cch, 0cch, 076h, 000h + db 000h, 000h, 078h, 0cch, 0fch, 0c0h, 078h, 000h + db 038h, 06ch, 060h, 0f0h, 060h, 060h, 0f0h, 000h + db 000h, 000h, 076h, 0cch, 0cch, 07ch, 00ch, 0f8h + db 0e0h, 060h, 06ch, 076h, 066h, 066h, 0e6h, 000h + db 030h, 000h, 070h, 030h, 030h, 030h, 078h, 000h + db 00ch, 000h, 00ch, 00ch, 00ch, 0cch, 0cch, 078h + db 0e0h, 060h, 066h, 06ch, 078h, 06ch, 0e6h, 000h + db 070h, 030h, 030h, 030h, 030h, 030h, 078h, 000h + db 000h, 000h, 0cch, 0feh, 0feh, 0d6h, 0c6h, 000h + db 000h, 000h, 0f8h, 0cch, 0cch, 0cch, 0cch, 000h + db 000h, 000h, 078h, 0cch, 0cch, 0cch, 078h, 000h + db 000h, 000h, 0dch, 066h, 066h, 07ch, 060h, 0f0h + db 000h, 000h, 076h, 0cch, 0cch, 07ch, 00ch, 01eh + db 000h, 000h, 0dch, 076h, 066h, 060h, 0f0h, 000h + db 000h, 000h, 07ch, 0c0h, 078h, 00ch, 0f8h, 000h + db 010h, 030h, 07ch, 030h, 030h, 034h, 018h, 000h + db 000h, 000h, 0cch, 0cch, 0cch, 0cch, 076h, 000h + db 000h, 000h, 0cch, 0cch, 0cch, 078h, 030h, 000h + db 000h, 000h, 0c6h, 0d6h, 0feh, 0feh, 06ch, 000h + db 000h, 000h, 0c6h, 06ch, 038h, 06ch, 0c6h, 000h + db 000h, 000h, 0cch, 0cch, 0cch, 07ch, 00ch, 0f8h + db 000h, 000h, 0fch, 098h, 030h, 064h, 0fch, 000h + db 01ch, 030h, 030h, 0e0h, 030h, 030h, 01ch, 000h + db 018h, 018h, 018h, 000h, 018h, 018h, 018h, 000h + db 0e0h, 030h, 030h, 01ch, 030h, 030h, 0e0h, 000h + db 076h, 0dch, 000h, 000h, 000h, 000h, 000h, 000h + db 000h, 010h, 038h, 06ch, 0c6h, 0c6h, 0feh, 000h diff --git a/src/VBox/Devices/PC/BIOS/inlines.h b/src/VBox/Devices/PC/BIOS/inlines.h new file mode 100644 index 00000000..19983373 --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/inlines.h @@ -0,0 +1,247 @@ +/* $Id: inlines.h $ */ +/** @file + * Inline routines for Watcom C. + */ + +/* + * Copyright (C) 2010-2019 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + */ + +#ifndef VBOX_INCLUDED_SRC_PC_BIOS_inlines_h +#define VBOX_INCLUDED_SRC_PC_BIOS_inlines_h +#ifndef RT_WITHOUT_PRAGMA_ONCE +# pragma once +#endif + +extern unsigned inp(unsigned port); +extern unsigned outp(unsigned port, unsigned value); +extern unsigned inpw(unsigned port); +extern unsigned outpw(unsigned port, unsigned value); +#pragma intrinsic(inp,outp,inpw,outpw) +#define inb(p) inp(p) +#define outb(p, v) outp(p, v) +#define inw(p) inpw(p) +#define outw(p, v) outpw(p, v) + +/* Far byte/word/dword access routines. */ + +inline uint8_t read_byte(uint16_t seg, uint16_t offset) +{ + return( *(seg:>(uint8_t *)offset) ); +} + +inline void write_byte(uint16_t seg, uint16_t offset, uint8_t data) +{ + *(seg:>(uint8_t *)offset) = data; +} + +inline uint16_t read_word(uint16_t seg, uint16_t offset) +{ + return( *(seg:>(uint16_t *)offset) ); +} + +inline void write_word(uint16_t seg, uint16_t offset, uint16_t data) +{ + *(seg:>(uint16_t *)offset) = data; +} + +inline uint32_t read_dword(uint16_t seg, uint16_t offset) +{ + return( *(seg:>(uint32_t *)offset) ); +} + +inline void write_dword(uint16_t seg, uint16_t offset, uint32_t data) +{ + *(seg:>(uint32_t *)offset) = data; +} + + +void int_enable(void); +#pragma aux int_enable = "sti" modify exact [] nomemory; + +void int_disable(void); +#pragma aux int_disable = "cli" modify exact [] nomemory; + +void int_enable_hlt_disable(void); +#pragma aux int_enable_hlt_disable = \ + "sti" \ + "hlt" \ + "cli" \ + modify exact [] nomemory; + +uint16_t int_query(void); +#pragma aux int_query = \ + "pushf" \ + "pop ax" \ + value [ax] modify exact [ax] nomemory; + +void int_restore(uint16_t old_flags); +#pragma aux int_restore = \ + "push ax" \ + "popf" \ + parm [ax] modify exact [] nomemory; + +void halt(void); +#pragma aux halt = "hlt" modify exact [] nomemory; + +void halt_forever(void); +#pragma aux halt_forever = \ + "forever:" \ + "hlt" \ + "jmp forever" \ + modify exact [] nomemory aborts; + +#ifdef __386__ + +void rep_movsb(void __far *d, void __far *s, int nbytes); +#pragma aux rep_movsb = \ + "push ds" \ + "mov ds, dx" \ + "rep movsb" \ + "pop ds" \ + parm [es edi] [dx esi] [ecx]; + +#else + +void rep_movsb(void __far *d, void __far *s, int nbytes); +#pragma aux rep_movsb = \ + "push ds" \ + "mov ds, dx" \ + "rep movsb" \ + "pop ds" \ + parm [es di] [dx si] [cx]; + +#endif + +void rep_movsw(void __far *d, void __far *s, int nwords); +#pragma aux rep_movsw = \ + "push ds" \ + "mov ds, dx" \ + "rep movsw" \ + "pop ds" \ + parm [es di] [dx si] [cx]; + +#ifndef __386__ + +char __far *rep_insb(char __far *buffer, unsigned nbytes, unsigned port); +#pragma aux rep_insb = ".286" "rep insb" parm [es di] [cx] [dx] value [es di] modify exact [cx di]; + +char __far *rep_insw(char __far *buffer, unsigned nwords, unsigned port); +#pragma aux rep_insw = ".286" "rep insw" parm [es di] [cx] [dx] value [es di] modify exact [cx di]; + +# if VBOX_BIOS_CPU >= 80386 +char __far *rep_insd(char __far *buffer, unsigned ndwords, unsigned port); +# pragma aux rep_insd = ".386" "rep insd" parm [es di] [cx] [dx] value [es di] modify exact [cx di]; +# endif + +char __far *rep_outsb(char __far *buffer, unsigned nbytes, unsigned port); +#pragma aux rep_outsb = ".286" "rep outs dx,byte ptr es:[si]" parm [es si] [cx] [dx] value [es si] modify exact [cx si]; + +char __far *rep_outsw(char __far *buffer, unsigned nwords, unsigned port); +#pragma aux rep_outsw = ".286" "rep outs dx,word ptr es:[si]" parm [es si] [cx] [dx] value [es si] modify exact [cx si]; + +# if VBOX_BIOS_CPU >= 80386 +char __far *rep_outsd(char __far *buffer, unsigned ndwords, unsigned port); +# pragma aux rep_outsd = ".386" "rep outs dx,dword ptr es:[si]" parm [es si] [cx] [dx] value [es si] modify exact [cx si]; +# endif + +uint16_t swap_16(uint16_t val); +#pragma aux swap_16 = "xchg ah,al" parm [ax] value [ax] modify exact [ax] nomemory; + +uint32_t swap_32(uint32_t val); +#pragma aux swap_32 = \ + "xchg ah, al" \ + "xchg dh, dl" \ + "xchg ax, dx" \ + parm [dx ax] value [dx ax] modify exact [dx ax] nomemory; + +uint64_t swap_64(uint64_t val); +#pragma aux swap_64 = \ + "xchg ah, al" \ + "xchg bh, bl" \ + "xchg ch, cl" \ + "xchg dh, dl" \ + "xchg ax, dx" \ + "xchg bx, cx" \ + parm [ax bx cx dx] value [ax bx cx dx] modify exact [ax bx cx dx] nomemory; + +#endif + +#if VBOX_BIOS_CPU >= 80386 + +/* Warning: msr_read/msr_write destroy high bits of 32-bit registers (EAX, ECX, EDX). */ + +uint64_t msr_read(uint32_t msr); +#pragma aux msr_read = \ + ".586" \ + "shl ecx, 16" \ + "mov cx, ax" \ + "rdmsr" \ + "xchg eax, edx" \ + "mov bx, ax" \ + "shr eax, 16" \ + "mov cx, dx" \ + "shr edx, 16" \ + "xchg dx, cx" \ + parm [cx ax] value [ax bx cx dx] modify [] nomemory; + +void msr_write(uint64_t val, uint32_t msr); +#pragma aux msr_write = \ + ".586" \ + "shl eax, 16" \ + "mov ax, bx" \ + "xchg dx, cx" \ + "shl edx, 16" \ + "mov dx, cx" \ + "xchg eax, edx" \ + "mov cx, di" \ + "shl ecx, 16" \ + "mov cx, si" \ + "wrmsr" \ + parm [ax bx cx dx] [di si] modify [] nomemory; + +/* Warning: eflags_read/eflags_write destroy high bits of 32-bit registers (EDX). */ +uint32_t eflags_read( void ); +#pragma aux eflags_read = \ + ".386" \ + "pushfd" \ + "pop edx" \ + "mov ax, dx" \ + "shr edx, 16" \ + value [dx ax] modify [dx ax]; + +uint32_t eflags_write( uint32_t e_flags ); +#pragma aux eflags_write = \ + ".386" \ + "shl edx, 16" \ + "mov dx, ax" \ + "push edx" \ + "popfd" \ + parm [dx ax] modify [dx ax]; + +/* Warning cpuid destroys high bits of 32-bit registers (EAX, EBX, ECX, EDX). */ +void cpuid( uint32_t __far cpu_id[4], uint32_t leaf ); +#pragma aux cpuid = \ + ".586" \ + "shl edx, 16" \ + "mov dx, ax" \ + "mov eax, edx" \ + "cpuid" \ + "mov es:[di+0], eax" \ + "mov es:[di+4], ebx" \ + "mov es:[di+8], ecx" \ + "mov es:[di+12], edx" \ + parm [es di] [dx ax] modify [bx cx dx] + +#endif + +#endif /* !VBOX_INCLUDED_SRC_PC_BIOS_inlines_h */ + diff --git a/src/VBox/Devices/PC/BIOS/invop.c b/src/VBox/Devices/PC/BIOS/invop.c new file mode 100644 index 00000000..cee14a27 --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/invop.c @@ -0,0 +1,350 @@ +/* $Id: invop.c $ */ +/** @file + * Real mode invalid opcode handler. + */ + +/* + * Copyright (C) 2013-2019 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + */ + +#include <stdint.h> +#include <string.h> +#include "biosint.h" +#include "inlines.h" + +//#define EMU_386_LOADALL + +/* The layout of 286 LOADALL descriptors. */ +typedef struct tag_ldall_desc { + uint16_t base_lo; /* Bits 0-15 of segment base. */ + uint8_t base_hi; /* Bits 16-13 of segment base. */ + uint8_t attr; /* Segment attributes. */ + uint16_t limit; /* Segment limit. */ +} ldall_desc; + +/* The 286 LOADALL memory buffer at physical address 800h. From + * The Undocumented PC. + */ +typedef struct tag_ldall_286 { + uint16_t unused1[3]; + uint16_t msw; /* 806h */ + uint16_t unused2[7]; + uint16_t tr; /* 816h */ + uint16_t flags; /* 818h */ + uint16_t ip; /* 81Ah */ + uint16_t ldt; /* 81Ch */ + uint16_t ds; /* 81Eh */ + uint16_t ss; /* 820h */ + uint16_t cs; /* 822h */ + uint16_t es; /* 824h */ + uint16_t di; /* 826h */ + uint16_t si; /* 828h */ + uint16_t bp; /* 82Ah */ + uint16_t sp; /* 82Ch */ + uint16_t bx; /* 82Eh */ + uint16_t dx; /* 830h */ + uint16_t cx; /* 832h */ + uint16_t ax; /* 834h */ + ldall_desc es_desc; /* 836h */ + ldall_desc cs_desc; /* 83Ch */ + ldall_desc ss_desc; /* 842h */ + ldall_desc ds_desc; /* 848h */ + ldall_desc gdt_desc; /* 84Eh */ + ldall_desc ldt_desc; /* 854h */ + ldall_desc idt_desc; /* 85Ah */ + ldall_desc tss_desc; /* 860h */ +} ldall_286_s; +ct_assert(sizeof(ldall_286_s) == 0x66); + +#ifdef EMU_386_LOADALL + +/* The layout of 386 LOADALL descriptors. */ +typedef struct tag_ldal3_desc { + uint32_t attr; /* Segment attributes. */ + uint32_t base; /* Expanded segment base. */ + uint32_t limit; /* Expanded segment limit. */ +} ldal3_desc; + +/* The 386 LOADALL memory buffer pointed to by ES:EDI. + */ +typedef struct tag_ldall_386 { + uint32_t cr0; /* 00h */ + uint32_t eflags; /* 04h */ + uint32_t eip; /* 08h */ + uint32_t edi; /* 0Ch */ + uint32_t esi; /* 10h */ + uint32_t ebp; /* 14h */ + uint32_t esp; /* 18h */ + uint32_t ebx; /* 1Ch */ + uint32_t edx; /* 20h */ + uint32_t ecx; /* 24h */ + uint32_t eax; /* 28h */ + uint32_t dr6; /* 2Ch */ + uint32_t dr7; /* 30h */ + uint32_t tr; /* 34h */ + uint32_t ldt; /* 38h */ + uint32_t gs; /* 3Ch */ + uint32_t fs; /* 40h */ + uint32_t ds; /* 44h */ + uint32_t ss; /* 4Ch */ + uint32_t cs; /* 48h */ + uint32_t es; /* 50h */ + ldal3_desc tss_desc; /* 54h */ + ldal3_desc idt_desc; /* 60h */ + ldal3_desc gdt_desc; /* 6Ch */ + ldal3_desc ldt_desc; /* 78h */ + ldal3_desc gs_desc; /* 84h */ + ldal3_desc fs_desc; /* 90h */ + ldal3_desc ds_desc; /* 9Ch */ + ldal3_desc ss_desc; /* A8h */ + ldal3_desc cs_desc; /* B4h */ + ldal3_desc es_desc; /* C0h */ +} ldall_386_s; +ct_assert(sizeof(ldall_386_s) == 0xCC); + +#endif + +/* + * LOADALL emulation assumptions: + * - MSW indicates real mode + * - Standard real mode CS and SS is to be used + * - Segment values of non-RM segments (if any) do not matter + * - Standard segment attributes are used + */ + +/* A wrapper for LIDT. */ +void load_idtr(uint32_t base, uint16_t limit); +#pragma aux load_idtr = \ + ".286p" \ + "mov bx, sp" \ + "lidt fword ptr ss:[bx]"\ + parm caller reverse [] modify [bx] exact; + +/* A wrapper for LGDT. */ +void load_gdtr(uint32_t base, uint16_t limit); +#pragma aux load_gdtr = \ + ".286p" \ + "mov bx, sp" \ + "lgdt fword ptr ss:[bx]"\ + parm caller reverse [] modify [bx] exact; + +/* Load DS/ES as real-mode segments. May be overwritten later. + * NB: Loads SS with 80h to address the LOADALL buffer. Must + * not touch CX! + */ +void load_rm_segs(int seg_flags); +#pragma aux load_rm_segs = \ + "mov ax, 80h" \ + "mov ss, ax" \ + "mov ax, ss:[1Eh]" \ + "mov ds, ax" \ + "mov ax, ss:[24h]" \ + "mov es, ax" \ + parm [cx] nomemory modify nomemory; + +/* Briefly switch to protected mode and load ES and/or DS if necessary. + * NB: Trashes high bits of EAX, but that should be safe. Expects flags + * in CX. + */ +void load_pm_segs(void); +#pragma aux load_pm_segs = \ + ".386p" \ + "smsw ax" \ + "inc ax" \ + "lmsw ax" \ + "mov ax, 8" \ + "test cx, 1" \ + "jz skip_es" \ + "mov es, ax" \ + "skip_es:" \ + "test cx, 2" \ + "jz skip_ds" \ + "mov bx,ss:[00h]" \ + "mov ss:[08h], bx" \ + "mov bx,ss:[02h]" \ + "mov ss:[0Ah], bx" \ + "mov bx,ss:[04h]" \ + "mov ss:[0Ch], bx" \ + "mov ds, ax" \ + "skip_ds:" \ + "mov eax, cr0" \ + "dec ax" \ + "mov cr0, eax" \ + parm nomemory modify nomemory; + +/* Complete LOADALL emulation: Restore general-purpose registers, stack + * pointer, and CS:IP. NB: The LOADALL instruction stores registers in + * the same order as PUSHA. Surprise, surprise! + */ +void ldall_finish(void); +#pragma aux ldall_finish = \ + ".286" \ + "mov sp, 26h" \ + "popa" \ + "mov sp, ss:[2Ch]" \ + "sub sp, 6" \ + "mov ss, ss:[20h]" \ + "iret" \ + parm nomemory modify nomemory aborts; + +#ifdef EMU_386_LOADALL + +/* 386 version of the above. */ +void ldal3_finish(void); +#pragma aux ldal3_finish = \ + ".386" \ + "mov sp, 28h" \ + "popad" \ + "mov sp, ss:[18h]" \ + "sub sp, 6" \ + "mov ss, ss:[48h]" \ + "iret" \ + parm nomemory modify nomemory aborts; + +/* 386 version of load_rm_segs. + * NB: Must not touch CX! + */ +void load_rm_seg3(int seg_flags, uint16_t ss_base); +#pragma aux load_rm_seg3 = \ + "mov ss, ax" \ + "mov ax, ss:[44h]" \ + "mov ds, ax" \ + "mov ax, ss:[50h]" \ + "mov es, ax" \ + parm [ax] [cx] nomemory modify nomemory; + +#endif + +#define LOAD_ES 0x01 /* ES needs to be loaded in protected mode. */ +#define LOAD_DS 0x02 /* DS needs to be loaded in protected mode. */ + +/* + * The invalid opcode handler exists to work around fishy application + * code and paper over CPU generation differences: + * + * - Skip redundant LOCK prefixes (allowed on 8086, #UD on 286+). + * - Emulate just enough of 286 LOADALL. + * + */ +void BIOSCALL inv_op_handler(uint16_t ds, uint16_t es, pusha_regs_t gr, volatile iret_addr_t ra) +{ + void __far *ins = ra.cs :> ra.ip; + + if (*(uint8_t __far *)ins == 0xF0) { + /* LOCK prefix - skip over it and try again. */ + ++ra.ip; + } else if (*(uint16_t __far *)ins == 0x050F) { + /* 286 LOADALL. NB: Same opcode as SYSCALL. */ + ldall_286_s __far *ldbuf = 0 :> 0x800; + iret_addr_t __far *ret_addr; + uint32_t seg_base; + int seg_flags = 0; + + /* One of the challenges is that we must restore SS:SP as well + * as CS:IP and FLAGS from the LOADALL buffer. We copy CS/IP/FLAGS + * from the buffer just below the SS:SP values from the buffer so + * that we can eventually IRET to the desired CS/IP/FLAGS/SS/SP + * values in one go. + */ + ret_addr = ldbuf->ss :> (ldbuf->sp - sizeof(iret_addr_t)); + ret_addr->ip = ldbuf->ip; + ret_addr->cs = ldbuf->cs; + ret_addr->flags.u.r16.flags = ldbuf->flags; + + /* Examine ES/DS. */ + seg_base = ldbuf->es_desc.base_lo | (uint32_t)ldbuf->es_desc.base_hi << 16; + if (seg_base != (uint32_t)ldbuf->es << 4) + seg_flags |= LOAD_ES; + seg_base = ldbuf->ds_desc.base_lo | (uint32_t)ldbuf->ds_desc.base_hi << 16; + if (seg_base != (uint32_t)ldbuf->ds << 4) + seg_flags |= LOAD_DS; + + /* The LOADALL buffer doubles as a tiny GDT. */ + load_gdtr(0x800, 4 * 8 - 1); + + /* Store the ES base/limit/attributes in the unused words (GDT selector 8). */ + ldbuf->unused2[0] = ldbuf->es_desc.limit; + ldbuf->unused2[1] = ldbuf->es_desc.base_lo; + ldbuf->unused2[2] = (ldbuf->es_desc.attr << 8) | ldbuf->es_desc.base_hi; + ldbuf->unused2[3] = 0; + + /* Store the DS base/limit/attributes in other unused words. */ + ldbuf->unused1[0] = ldbuf->ds_desc.limit; + ldbuf->unused1[1] = ldbuf->ds_desc.base_lo; + ldbuf->unused1[2] = (ldbuf->ds_desc.attr << 8) | ldbuf->ds_desc.base_hi; + + /* Load the IDTR as specified. */ + seg_base = ldbuf->idt_desc.base_lo | (uint32_t)ldbuf->idt_desc.base_hi << 16; + load_idtr(seg_base, ldbuf->idt_desc.limit); + + /* Do the tricky bits now. */ + load_rm_segs(seg_flags); + load_pm_segs(); + ldall_finish(); +#ifdef EMU_386_LOADALL + } else if (*(uint16_t __far *)ins == 0x070F) { + /* 386 LOADALL. NB: Same opcode as SYSRET. */ + ldall_386_s __far *ldbuf = (void __far *)es :> gr.u.r16.di; /* Assume 16-bit value in EDI. */ + ldall_286_s __far *ldbuf2 = 0 :> 0x800; + iret_addr_t __far *ret_addr; + uint32_t seg_base; + int seg_flags = 0; + + /* NB: BIG FAT ASSUMPTION! Users of 386 LOADALL are assumed to also + * have a 286 LOADALL buffer at physical address 800h. We use unused fields + * in that buffer for temporary storage. + */ + + /* Set up return stack. */ + ret_addr = ldbuf->ss :> (ldbuf->esp - sizeof(iret_addr_t)); + ret_addr->ip = ldbuf->eip; + ret_addr->cs = ldbuf->cs; + ret_addr->flags.u.r16.flags = ldbuf->eflags; + + /* Examine ES/DS. */ + seg_base = ldbuf->es_desc.base; + if (seg_base != (uint32_t)ldbuf->es << 4) + seg_flags |= LOAD_ES; + seg_base = ldbuf->ds_desc.base; + if (seg_base != (uint32_t)ldbuf->ds << 4) + seg_flags |= LOAD_DS; + + /* The LOADALL buffer doubles as a tiny GDT. */ + load_gdtr(0x800, 4 * 8 - 1); + + /* Store the ES base/limit/attributes in the unused words (GDT selector 8). */ + ldbuf2->unused2[0] = ldbuf->es_desc.limit; + ldbuf2->unused2[1] = (uint16_t)ldbuf->es_desc.base; + ldbuf2->unused2[2] = (ldbuf->es_desc.attr & 0xFF00) | (ldbuf->es_desc.base >> 16); + ldbuf2->unused2[3] = 0; + + /* Store the DS base/limit/attributes in other unused words. */ + ldbuf2->unused1[0] = ldbuf->ds_desc.limit; + ldbuf2->unused1[1] = (uint16_t)ldbuf->ds_desc.base; + ldbuf2->unused1[2] = (ldbuf->ds_desc.attr & 0xFF00) | (ldbuf->ds_desc.base >> 16); + + /* Load the IDTR as specified. */ + seg_base = ldbuf->idt_desc.base; + load_idtr(seg_base, ldbuf->idt_desc.limit); + + /* Do the tricky bits now. */ + load_rm_seg3(es, seg_flags); + load_pm_segs(); + ldal3_finish(); +#endif + } else { + /* There isn't much point in executing the invalid opcode handler + * in an endless loop, so halt right here. + */ + int_enable(); + halt_forever(); + } +} diff --git a/src/VBox/Devices/PC/BIOS/keyboard.c b/src/VBox/Devices/PC/BIOS/keyboard.c new file mode 100644 index 00000000..e141b743 --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/keyboard.c @@ -0,0 +1,822 @@ +/* $Id: keyboard.c $ */ +/** @file + * PC BIOS - ??? + */ + +/* + * Copyright (C) 2006-2019 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * -------------------------------------------------------------------- + * + * This code is based on: + * + * ROM BIOS for use with Bochs/Plex86/QEMU emulation environment + * + * Copyright (C) 2002 MandrakeSoft S.A. + * + * MandrakeSoft S.A. + * 43, rue d'Aboukir + * 75002 Paris - France + * http://www.linux-mandrake.com/ + * http://www.mandrakesoft.com/ + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +/* + * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice + * other than GPL or LGPL is available it will apply instead, Oracle elects to use only + * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where + * a choice of LGPL license versions is made available with the language indicating + * that LGPLv2 or any later version may be used, or where a choice of which version + * of the LGPL is applied is otherwise unspecified. + */ + + +#include <stdint.h> +#include "inlines.h" +#include "biosint.h" + +#if DEBUG_INT16 +# define BX_DEBUG_INT16(...) BX_DEBUG(__VA_ARGS__) +#else +# define BX_DEBUG_INT16(...) +#endif + +extern void post(void); +#pragma aux post "*"; + +void jmp_post(void); +#pragma aux jmp_post = "jmp far ptr post" aborts; + +extern void eoi_master_pic(void); /* in assembly code */ +#pragma aux eoi_master_pic "*"; + +/* Manually save/restore BP around invoking user Ctrl-Break handler. + * The handler could conceivably clobber BP and the compiler does not + * believe us when we say 'modify [bp]' (BP is considered unalterable). + */ +void int_1b(void); +#pragma aux int_1b = \ + "push bp" \ + "int 1Bh" \ + "pop bp" \ + value [bp] modify [bp]; + + +#define none 0 +#define MAX_SCAN_CODE 0x58 + +struct { + uint16_t normal; + uint16_t shift; + uint16_t control; + uint16_t alt; + uint8_t lock_flags; +} static const scan_to_scanascii[MAX_SCAN_CODE + 1] = { + { none, none, none, none, none }, + { 0x011b, 0x011b, 0x011b, 0x0100, none }, /* escape */ + { 0x0231, 0x0221, none, 0x7800, none }, /* 1! */ + { 0x0332, 0x0340, 0x0300, 0x7900, none }, /* 2@ */ + { 0x0433, 0x0423, none, 0x7a00, none }, /* 3# */ + { 0x0534, 0x0524, none, 0x7b00, none }, /* 4$ */ + { 0x0635, 0x0625, none, 0x7c00, none }, /* 5% */ + { 0x0736, 0x075e, 0x071e, 0x7d00, none }, /* 6^ */ + { 0x0837, 0x0826, none, 0x7e00, none }, /* 7& */ + { 0x0938, 0x092a, none, 0x7f00, none }, /* 8* */ + { 0x0a39, 0x0a28, none, 0x8000, none }, /* 9( */ + { 0x0b30, 0x0b29, none, 0x8100, none }, /* 0) */ + { 0x0c2d, 0x0c5f, 0x0c1f, 0x8200, none }, /* -_ */ + { 0x0d3d, 0x0d2b, none, 0x8300, none }, /* =+ */ + { 0x0e08, 0x0e08, 0x0e7f, none, none }, /* backspace */ + { 0x0f09, 0x0f00, none, none, none }, /* tab */ + { 0x1071, 0x1051, 0x1011, 0x1000, 0x40 }, /* Q */ + { 0x1177, 0x1157, 0x1117, 0x1100, 0x40 }, /* W */ + { 0x1265, 0x1245, 0x1205, 0x1200, 0x40 }, /* E */ + { 0x1372, 0x1352, 0x1312, 0x1300, 0x40 }, /* R */ + { 0x1474, 0x1454, 0x1414, 0x1400, 0x40 }, /* T */ + { 0x1579, 0x1559, 0x1519, 0x1500, 0x40 }, /* Y */ + { 0x1675, 0x1655, 0x1615, 0x1600, 0x40 }, /* U */ + { 0x1769, 0x1749, 0x1709, 0x1700, 0x40 }, /* I */ + { 0x186f, 0x184f, 0x180f, 0x1800, 0x40 }, /* O */ + { 0x1970, 0x1950, 0x1910, 0x1900, 0x40 }, /* P */ + { 0x1a5b, 0x1a7b, 0x1a1b, none, none }, /* [{ */ + { 0x1b5d, 0x1b7d, 0x1b1d, none, none }, /* ]} */ + { 0x1c0d, 0x1c0d, 0x1c0a, none, none }, /* Enter */ + { none, none, none, none, none }, /* L Ctrl */ + { 0x1e61, 0x1e41, 0x1e01, 0x1e00, 0x40 }, /* A */ + { 0x1f73, 0x1f53, 0x1f13, 0x1f00, 0x40 }, /* S */ + { 0x2064, 0x2044, 0x2004, 0x2000, 0x40 }, /* D */ + { 0x2166, 0x2146, 0x2106, 0x2100, 0x40 }, /* F */ + { 0x2267, 0x2247, 0x2207, 0x2200, 0x40 }, /* G */ + { 0x2368, 0x2348, 0x2308, 0x2300, 0x40 }, /* H */ + { 0x246a, 0x244a, 0x240a, 0x2400, 0x40 }, /* J */ + { 0x256b, 0x254b, 0x250b, 0x2500, 0x40 }, /* K */ + { 0x266c, 0x264c, 0x260c, 0x2600, 0x40 }, /* L */ + { 0x273b, 0x273a, none, none, none }, /* ;: */ + { 0x2827, 0x2822, none, none, none }, /* '" */ + { 0x2960, 0x297e, none, none, none }, /* `~ */ + { none, none, none, none, none }, /* L shift */ + { 0x2b5c, 0x2b7c, 0x2b1c, none, none }, /* |\ */ + { 0x2c7a, 0x2c5a, 0x2c1a, 0x2c00, 0x40 }, /* Z */ + { 0x2d78, 0x2d58, 0x2d18, 0x2d00, 0x40 }, /* X */ + { 0x2e63, 0x2e43, 0x2e03, 0x2e00, 0x40 }, /* C */ + { 0x2f76, 0x2f56, 0x2f16, 0x2f00, 0x40 }, /* V */ + { 0x3062, 0x3042, 0x3002, 0x3000, 0x40 }, /* B */ + { 0x316e, 0x314e, 0x310e, 0x3100, 0x40 }, /* N */ + { 0x326d, 0x324d, 0x320d, 0x3200, 0x40 }, /* M */ + { 0x332c, 0x333c, none, none, none }, /* ,< */ + { 0x342e, 0x343e, none, none, none }, /* .> */ + { 0x352f, 0x353f, none, none, none }, /* /? */ + { none, none, none, none, none }, /* R Shift */ + { 0x372a, 0x372a, none, none, none }, /* * */ + { none, none, none, none, none }, /* L Alt */ + { 0x3920, 0x3920, 0x3920, 0x3920, none }, /* space */ + { none, none, none, none, none }, /* caps lock */ + { 0x3b00, 0x5400, 0x5e00, 0x6800, none }, /* F1 */ + { 0x3c00, 0x5500, 0x5f00, 0x6900, none }, /* F2 */ + { 0x3d00, 0x5600, 0x6000, 0x6a00, none }, /* F3 */ + { 0x3e00, 0x5700, 0x6100, 0x6b00, none }, /* F4 */ + { 0x3f00, 0x5800, 0x6200, 0x6c00, none }, /* F5 */ + { 0x4000, 0x5900, 0x6300, 0x6d00, none }, /* F6 */ + { 0x4100, 0x5a00, 0x6400, 0x6e00, none }, /* F7 */ + { 0x4200, 0x5b00, 0x6500, 0x6f00, none }, /* F8 */ + { 0x4300, 0x5c00, 0x6600, 0x7000, none }, /* F9 */ + { 0x4400, 0x5d00, 0x6700, 0x7100, none }, /* F10 */ + { none, none, none, none, none }, /* Num Lock */ + { none, none, none, none, none }, /* Scroll Lock */ + { 0x4700, 0x4737, 0x7700, none, 0x20 }, /* 7 Home */ + { 0x4800, 0x4838, none, none, 0x20 }, /* 8 UP */ + { 0x4900, 0x4939, 0x8400, none, 0x20 }, /* 9 PgUp */ + { 0x4a2d, 0x4a2d, none, none, none }, /* - */ + { 0x4b00, 0x4b34, 0x7300, none, 0x20 }, /* 4 Left */ + { 0x4c00, 0x4c35, none, none, 0x20 }, /* 5 */ + { 0x4d00, 0x4d36, 0x7400, none, 0x20 }, /* 6 Right */ + { 0x4e2b, 0x4e2b, none, none, none }, /* + */ + { 0x4f00, 0x4f31, 0x7500, none, 0x20 }, /* 1 End */ + { 0x5000, 0x5032, none, none, 0x20 }, /* 2 Down */ + { 0x5100, 0x5133, 0x7600, none, 0x20 }, /* 3 PgDn */ + { 0x5200, 0x5230, none, none, 0x20 }, /* 0 Ins */ + { 0x5300, 0x532e, none, none, 0x20 }, /* Del */ + { none, none, none, none, none }, + { none, none, none, none, none }, + { 0x565c, 0x567c, none, none, none }, /* \| */ + { 0x8500, 0x8700, 0x8900, 0x8b00, none }, /* F11 */ + { 0x8600, 0x8800, 0x8a00, 0x8c00, none } /* F12 */ +}; + + +/* Keyboard initialization. */ + +//-------------------------------------------------------------------------- +// keyboard_panic +//-------------------------------------------------------------------------- +void keyboard_panic(uint16_t status) +{ + // If you're getting a 993 keyboard panic here, + // please see the comment in keyboard_init + + BX_PANIC("Keyboard error:%u\n",status); +} + + +//-------------------------------------------------------------------------- +// keyboard_init +//-------------------------------------------------------------------------- +// this file is based on LinuxBIOS implementation of keyboard.c +// could convert to #asm to gain space +void BIOSCALL keyboard_init(void) +{ + uint16_t max; + + /* ------------------- controller side ----------------------*/ + /* send cmd = 0xAA, self test 8042 */ + outb(0x64, 0xaa); + + /* Wait until buffer is empty */ + max=0xffff; + while ( (inb(0x64) & 0x02) && (--max>0)) outb(0x80, 0x00); + if (max==0x0) keyboard_panic(00); + + /* Wait for data */ + max=0xffff; + while ( ((inb(0x64) & 0x01) == 0) && (--max>0) ) outb(0x80, 0x01); + if (max==0x0) keyboard_panic(01); + + /* read self-test result, 0x55 should be returned from 0x60 */ + if ((inb(0x60) != 0x55)){ + keyboard_panic(991); + } + + /* send cmd = 0xAB, keyboard interface test */ + outb(0x64,0xab); + + /* Wait until buffer is empty */ + max=0xffff; + while ((inb(0x64) & 0x02) && (--max>0)) outb(0x80, 0x10); + if (max==0x0) keyboard_panic(10); + + /* Wait for data */ + max=0xffff; + while ( ((inb(0x64) & 0x01) == 0) && (--max>0) ) outb(0x80, 0x11); + if (max==0x0) keyboard_panic(11); + + /* read keyboard interface test result, */ + /* 0x00 should be returned form 0x60 */ + if ((inb(0x60) != 0x00)) { + keyboard_panic(992); + } + + /* ------------------- keyboard side ------------------------*/ + /* reset keyboard and self test (keyboard side) */ + /* also enables the keyboard interface */ + outb(0x60, 0xff); + + /* Wait until buffer is empty */ + max=0xffff; + while ((inb(0x64) & 0x02) && (--max>0)) outb(0x80, 0x20); + if (max==0x0) keyboard_panic(20); + + /* Wait for data */ + max=0xffff; + while ( ((inb(0x64) & 0x01) == 0) && (--max>0) ) outb(0x80, 0x21); + if (max==0x0) keyboard_panic(21); + + /* keyboard should return ACK */ + if ((inb(0x60) != 0xfa)) { + keyboard_panic(993); + } + + /* Wait for reset to complete */ + while ( (inb(0x64) & 0x01) == 0 ) outb(0x80, 0x31); + + if ((inb(0x60) != 0xaa && inb(0x60) != 0xaa)) { + keyboard_panic(994); + } + + /* Disable keyboard */ + outb(0x60, 0xf5); + + /* Wait until buffer is empty */ + max=0xffff; + while ((inb(0x64) & 0x02) && (--max>0)) outb(0x80, 0x40); + if (max==0x0) keyboard_panic(40); + + /* Wait for data */ + max=0xffff; + while ( ((inb(0x64) & 0x01) == 0) && (--max>0) ) outb(0x80, 0x41); + if (max==0x0) keyboard_panic(41); + + /* keyboard should return ACK */ + if ((inb(0x60) != 0xfa)) { + keyboard_panic(995); + } + + /* Write Keyboard Mode */ + outb(0x64, 0x60); + + /* Wait until buffer is empty */ + max=0xffff; + while ((inb(0x64) & 0x02) && (--max>0)) outb(0x80, 0x50); + if (max==0x0) keyboard_panic(50); + + /* send cmd: scan code convert, disable mouse, enable IRQ 1 */ + outb(0x60, 0x65); + + /* Wait until buffer is empty */ + max=0xffff; + while ((inb(0x64) & 0x02) && (--max>0)) outb(0x80, 0x60); + if (max==0x0) keyboard_panic(60); + + /* Enable keyboard */ + outb(0x60, 0xf4); + + /* Wait until buffer is empty */ + max=0xffff; + while ((inb(0x64) & 0x02) && (--max>0)) outb(0x80, 0x70); + if (max==0x0) keyboard_panic(70); + + /* Wait for data */ + max=0xffff; + while ( ((inb(0x64) & 0x01) == 0) && (--max>0) ) outb(0x80, 0x71); + if (max==0x0) keyboard_panic(70); + + /* keyboard should return ACK */ + if ((inb(0x60) != 0xfa)) { + keyboard_panic(996); + } + + /* Enable aux interface */ + outb(0x64,0xa8); + + /* While we're here, disable the A20 gate. Required for + * compatibility with the IBM PC and DOS. + */ + set_enable_a20(0); +} + + +unsigned int enqueue_key(uint8_t scan_code, uint8_t ascii_code) +{ + uint16_t buffer_start, buffer_end, buffer_head, buffer_tail, temp_tail; + +#if VBOX_BIOS_CPU >= 80286 + buffer_start = read_word(0x0040, 0x0080); + buffer_end = read_word(0x0040, 0x0082); +#else + buffer_start = 0x001E; + buffer_end = 0x003E; +#endif + + buffer_head = read_word(0x0040, 0x001A); + buffer_tail = read_word(0x0040, 0x001C); + + temp_tail = buffer_tail; + buffer_tail += 2; + if (buffer_tail >= buffer_end) + buffer_tail = buffer_start; + + if (buffer_tail == buffer_head) + return(0); + + write_byte(0x0040, temp_tail, ascii_code); + write_byte(0x0040, temp_tail+1, scan_code); + write_word(0x0040, 0x001C, buffer_tail); + return(1); +} + + +/* Keyboard hardware interrupt handler. */ +/// @todo should this be declared as taking arguments at all? +void BIOSCALL int09_function(uint16_t ES, uint16_t DI, uint16_t SI, uint16_t BP, uint16_t SP, + uint16_t BX, uint16_t DX, uint16_t CX, uint16_t AX) +{ + uint8_t scancode, asciicode, shift_flags; + uint8_t mf2_flags, mf2_state, flag; + + // + // DS has been set to F000 before call + // + + + scancode = GET_AL(); + + if (scancode == 0) { + BX_INFO("KBD: int09 handler: AL=0\n"); + return; + } + + mf2_flags = read_byte(0x0040, 0x18); + mf2_state = read_byte(0x0040, 0x96); + shift_flags = read_byte(0x0040, 0x17); + asciicode = 0; + + switch (scancode) { + case 0x3a: /* Caps Lock press */ + shift_flags ^= 0x40; + write_byte(0x0040, 0x17, shift_flags); + mf2_flags |= 0x40; + write_byte(0x0040, 0x18, mf2_flags); + break; + case 0xba: /* Caps Lock release */ + mf2_flags &= ~0x40; + write_byte(0x0040, 0x18, mf2_flags); + break; + + case 0x2a: /* L Shift press */ + case 0xaa: /* L Shift release */ + case 0x36: /* R Shift press */ + case 0xb6: /* R Shift release */ + /* If this was an extended (i.e. faked) key, leave flags alone. */ + if (!(mf2_state & 0x02)) { + flag = (scancode & 0x7f) == 0x2a ? 0x02 : 0x01; + if (scancode & 0x80) + shift_flags &= ~flag; + else + shift_flags |= flag; + write_byte(0x0040, 0x17, shift_flags); + } + break; + + case 0x1d: /* Ctrl press */ + if ((mf2_state & 0x01) == 0) { + shift_flags |= 0x04; + write_byte(0x0040, 0x17, shift_flags); + if (mf2_state & 0x02) { + mf2_state |= 0x04; + write_byte(0x0040, 0x96, mf2_state); + } else { + mf2_flags |= 0x01; + write_byte(0x0040, 0x18, mf2_flags); + } + } + break; + case 0x9d: /* Ctrl release */ + if ((mf2_state & 0x01) == 0) { + shift_flags &= ~0x04; + write_byte(0x0040, 0x17, shift_flags); + if (mf2_state & 0x02) { + mf2_state &= ~0x04; + write_byte(0x0040, 0x96, mf2_state); + } else { + mf2_flags &= ~0x01; + write_byte(0x0040, 0x18, mf2_flags); + } + } + break; + + case 0x38: /* Alt press */ + shift_flags |= 0x08; + write_byte(0x0040, 0x17, shift_flags); + if (mf2_state & 0x02) { + mf2_state |= 0x08; + write_byte(0x0040, 0x96, mf2_state); + } else { + mf2_flags |= 0x02; + write_byte(0x0040, 0x18, mf2_flags); + } + break; + case 0xb8: /* Alt release */ + shift_flags &= ~0x08; + write_byte(0x0040, 0x17, shift_flags); + if (mf2_state & 0x02) { + mf2_state &= ~0x08; + write_byte(0x0040, 0x96, mf2_state); + } else { + mf2_flags &= ~0x02; + write_byte(0x0040, 0x18, mf2_flags); + } + break; + + case 0x45: /* Num Lock/Pause press */ + if ((mf2_state & 0x03) == 0) { + /* Num Lock */ + mf2_flags |= 0x20; + write_byte(0x0040, 0x18, mf2_flags); + shift_flags ^= 0x20; + write_byte(0x0040, 0x17, shift_flags); + } else { + /* Pause */ + mf2_flags |= 0x08; /* Set the suspend flag */ + write_byte(0x0040, 0x18, mf2_flags); + + /* Enable keyboard and send EOI. */ + outp(0x64, 0xae); + eoi_master_pic(); + + while (read_byte(0x0040, 0x18) & 0x08) + ; /* Hold on and wait... */ + + /// @todo We will send EOI again (and enable keyboard) on the way out; we shouldn't + } + break; + case 0xc5: /* Num Lock/Pause release */ + if ((mf2_state & 0x03) == 0) { + mf2_flags &= ~0x20; + write_byte(0x0040, 0x18, mf2_flags); + } + break; + + case 0x46: /* Scroll Lock/Break press */ + if (mf2_state & 0x02) { /* E0 prefix? */ + /* Zap the keyboard buffer. */ + write_word(0x0040, 0x001c, read_word(0x0040, 0x001a)); + + write_byte(0x0040, 0x71, 0x80); /* Set break flag */ + outp(0x64, 0xae); /* Enable keyboard */ + int_1b(); /* Invoke user handler */ + enqueue_key(0, 0); /* Dummy key press*/ + } else { + mf2_flags |= 0x10; + write_byte(0x0040, 0x18, mf2_flags); + shift_flags ^= 0x10; + write_byte(0x0040, 0x17, shift_flags); + } + break; + + case 0xc6: /* Scroll Lock/Break release */ + if (!(mf2_state & 0x02)) { /* Only if no E0 prefix */ + mf2_flags &= ~0x10; + write_byte(0x0040, 0x18, mf2_flags); + } + break; + + case 0x54: /* SysRq press */ + if (!(mf2_flags & 0x04)) { /* If not already down */ + mf2_flags |= 0x04; + write_byte(0x0040, 0x18, mf2_flags); + /// @todo EOI/enable kbd/enable interrupts/call INT 15h/8500h + } + break; + + case 0xd4: /* SysRq release */ + mf2_flags &= ~0x04; + write_byte(0x0040, 0x18, mf2_flags); + /// @todo EOI/enable kbd/enable interrupts/call INT 15h/8501h + break; + + case 0x53: /* Del press */ + if ((shift_flags & 0x0c) == 0x0c) { + /* Indicate a warm boot. */ + write_word(0x0040,0x0072, 0x1234); + jmp_post(); + } + /* fall through */ + + default: + /* Check if suspend flag set. */ + if (mf2_flags & 0x08) { + /* Pause had been pressed. Clear suspend flag and do nothing. */ + mf2_flags &= ~0x08; + write_byte(0x0040, 0x18, mf2_flags); + return; + } + + if (scancode & 0x80) { + /* Set ack/resend flags if appropriate. */ + if (scancode == 0xFA) { + flag = read_byte(0x0040, 0x97) | 0x10; + write_byte(0x0040, 0x97, flag); + } else if (scancode == 0xFE) { + flag = read_byte(0x0040, 0x97) | 0x20; + write_byte(0x0040, 0x97, flag); + } + break; /* toss key releases ... */ + } + if (scancode > MAX_SCAN_CODE) { + BX_INFO("KBD: int09h_handler(): unknown scancode read: 0x%02x!\n", scancode); + return; + } + if (shift_flags & 0x08) { /* ALT */ + asciicode = scan_to_scanascii[scancode].alt; + scancode = scan_to_scanascii[scancode].alt >> 8; + } else if (shift_flags & 0x04) { /* CONTROL */ + asciicode = scan_to_scanascii[scancode].control; + scancode = scan_to_scanascii[scancode].control >> 8; + } else if (((mf2_state & 0x02) > 0) && ((scancode >= 0x47) && (scancode <= 0x53))) { + /* extended keys handling */ + asciicode = 0xe0; + scancode = scan_to_scanascii[scancode].normal >> 8; + } else if (shift_flags & 0x03) { /* LSHIFT + RSHIFT */ + /* check if lock state should be ignored + * because a SHIFT key are pressed */ + + if (shift_flags & scan_to_scanascii[scancode].lock_flags) { + asciicode = scan_to_scanascii[scancode].normal; + scancode = scan_to_scanascii[scancode].normal >> 8; + } else { + asciicode = scan_to_scanascii[scancode].shift; + scancode = scan_to_scanascii[scancode].shift >> 8; + } + } else { + /* check if lock is on */ + if (shift_flags & scan_to_scanascii[scancode].lock_flags) { + asciicode = scan_to_scanascii[scancode].shift; + scancode = scan_to_scanascii[scancode].shift >> 8; + } else { + asciicode = scan_to_scanascii[scancode].normal; + scancode = scan_to_scanascii[scancode].normal >> 8; + } + } + if (scancode==0 && asciicode==0) { + BX_INFO("KBD: int09h_handler(): scancode & asciicode are zero?\n"); + } + enqueue_key(scancode, asciicode); + break; + } + if ((scancode & 0x7f) != 0x1d) { + mf2_state &= ~0x01; + } + mf2_state &= ~0x02; + write_byte(0x0040, 0x96, mf2_state); +} + +unsigned int dequeue_key(uint8_t __far *scan_code, uint8_t __far *ascii_code, unsigned incr) +{ + uint16_t buffer_start, buffer_end, buffer_head, buffer_tail; + uint8_t acode, scode; + +#if VBOX_BIOS_CPU >= 80286 + buffer_start = read_word(0x0040, 0x0080); + buffer_end = read_word(0x0040, 0x0082); +#else + buffer_start = 0x001E; + buffer_end = 0x003E; +#endif + + buffer_head = read_word(0x0040, 0x001a); + buffer_tail = read_word(0x0040, 0x001c); + + if (buffer_head != buffer_tail) { + acode = read_byte(0x0040, buffer_head); + scode = read_byte(0x0040, buffer_head+1); + *ascii_code = acode; + *scan_code = scode; + BX_DEBUG_INT16("dequeue_key: ascii=%02x scan=%02x \n", acode, scode); + + if (incr) { + buffer_head += 2; + if (buffer_head >= buffer_end) + buffer_head = buffer_start; + write_word(0x0040, 0x001a, buffer_head); + } + return(1); + } + else { + return(0); + } +} + + +/// @todo move somewhere else? +#define AX r.gr.u.r16.ax +#define BX r.gr.u.r16.bx +#define CX r.gr.u.r16.cx +#define DX r.gr.u.r16.dx +#define SI r.gr.u.r16.si +#define DI r.gr.u.r16.di +#define BP r.gr.u.r16.bp +#define SP r.gr.u.r16.sp +#define FLAGS r.ra.flags.u.r16.flags +#define IFLGS r.ifl + +/* Interrupt 16h service implementation. */ + +void BIOSCALL int16_function(volatile kbd_regs_t r) +{ + uint8_t scan_code, ascii_code, shift_flags, led_flags, count; + uint16_t kbd_code, max; + + BX_DEBUG_INT16("int16: AX=%04x BX=%04x CX=%04x DX=%04x \n", AX, BX, CX, DX); + + shift_flags = read_byte(0x0040, 0x17); + led_flags = read_byte(0x0040, 0x97); + if ((((shift_flags >> 4) & 0x07) ^ (led_flags & 0x07)) != 0) { + int_disable(); /// @todo interrupts should be disabled already?? + outb(0x60, 0xed); + while ((inb(0x64) & 0x01) == 0) outb(0x80, 0x21); + if ((inb(0x60) == 0xfa)) { + led_flags &= 0xc8; + led_flags |= ((shift_flags >> 4) & 0x07); + outb(0x60, led_flags & 0x07); + while ((inb(0x64) & 0x01) == 0) + outb(0x80, 0x21); + inb(0x60); + write_byte(0x0040, 0x97, led_flags); + } + int_enable(); + } + + switch (GET_AH()) { + case 0x00: /* read keyboard input */ + if ( !dequeue_key(&scan_code, &ascii_code, 1) ) { + BX_PANIC("KBD: int16h: out of keyboard input\n"); + } + if (scan_code !=0 && ascii_code == 0xF0) + ascii_code = 0; + else if (ascii_code == 0xE0) + ascii_code = 0; + AX = (scan_code << 8) | ascii_code; + break; + + case 0x01: /* check keyboard status */ + /* Enable interrupts, preserve most flags. Some callers depend on that! */ + FLAGS = IFLGS; + if ( !dequeue_key(&scan_code, &ascii_code, 0) ) { + SET_ZF(); + return; + } + if (scan_code !=0 && ascii_code == 0xF0) + ascii_code = 0; + else if (ascii_code == 0xE0) + ascii_code = 0; + AX = (scan_code << 8) | ascii_code; + CLEAR_ZF(); + break; + + case 0x02: /* get shift flag status */ + shift_flags = read_byte(0x0040, 0x17); + SET_AL(shift_flags); + break; + + case 0x05: /* store key-stroke into buffer */ + if ( !enqueue_key(GET_CH(), GET_CL()) ) { + SET_AL(1); + } + else { + SET_AL(0); + } + break; + + case 0x09: /* GET KEYBOARD FUNCTIONALITY */ + // bit Bochs Description + // 7 0 reserved + // 6 0 INT 16/AH=20h-22h supported (122-key keyboard support) + // 5 1 INT 16/AH=10h-12h supported (enhanced keyboard support) + // 4 1 INT 16/AH=0Ah supported + // 3 0 INT 16/AX=0306h supported + // 2 0 INT 16/AX=0305h supported + // 1 0 INT 16/AX=0304h supported + // 0 0 INT 16/AX=0300h supported + // + SET_AL(0x30); + break; + + case 0x0A: /* GET KEYBOARD ID */ + count = 2; + kbd_code = 0x0; + /// @todo Might be better to just mask the KB interrupt + int_disable(); + outb(0x60, 0xf2); + /* Wait for data */ + max=0xffff; + while ( ((inb(0x64) & 0x01) == 0) && (--max>0) ) + inb(0x80); + if (max>0x0) { + if ((inb(0x60) == 0xfa)) { + do { + max=0xffff; + while ( ((inb(0x64) & 0x01) == 0) && (--max>0) ) + inb(0x80); + if (max>0x0) { + kbd_code >>= 8; + kbd_code |= (inb(0x60) << 8); + } + } while (--count>0); + } + } + BX=kbd_code; + break; + + case 0x10: /* read MF-II keyboard input */ + if ( !dequeue_key(&scan_code, &ascii_code, 1) ) { + BX_PANIC("KBD: int16h: out of keyboard input\n"); + } + if (scan_code !=0 && ascii_code == 0xF0) + ascii_code = 0; + AX = (scan_code << 8) | ascii_code; + break; + + case 0x11: /* check MF-II keyboard status */ + /* Enable interrupts, preserve most flags. Some callers depend on that! */ + FLAGS = IFLGS; + if ( !dequeue_key(&scan_code, &ascii_code, 0) ) { + SET_ZF(); + return; + } + if (scan_code !=0 && ascii_code == 0xF0) + ascii_code = 0; + AX = (scan_code << 8) | ascii_code; + CLEAR_ZF(); + break; + + case 0x12: /* get extended keyboard status */ + shift_flags = read_byte(0x0040, 0x17); + SET_AL(shift_flags); + shift_flags = read_byte(0x0040, 0x18) & 0x73; + shift_flags |= read_byte(0x0040, 0x96) & 0x0c; + SET_AH(shift_flags); + BX_DEBUG_INT16("int16: func 12 sending %04x\n",AX); + break; + + case 0x92: /* keyboard capability check called by DOS 5.0+ keyb */ + SET_AH(0x80); // function int16 ah=0x10-0x12 supported + break; + + case 0xA2: /* 122 keys capability check called by DOS 5.0+ keyb */ + // don't change AH : function int16 ah=0x20-0x22 NOT supported + break; + + /// @todo what's the point of handling this?? +#if 0 + case 0x6F: + if (GET_AL() == 0x08) + SET_AH(0x02); // unsupported, aka normal keyboard +#endif + + default: + BX_INFO("KBD: unsupported int 16h function %02x\n", GET_AH()); + BX_INFO("AX=%04x BX=%04x CX=%04x DX=%04x \n", AX, BX, CX, DX); + } + BX_DEBUG_INT16("int16ex: AX=%04x BX=%04x CX=%04x DX=%04x \n", AX, BX, CX, DX); +} diff --git a/src/VBox/Devices/PC/BIOS/logo.c b/src/VBox/Devices/PC/BIOS/logo.c new file mode 100644 index 00000000..9a82ef11 --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/logo.c @@ -0,0 +1,558 @@ +/* $Id: logo.c $ */ +/** @file + * Stuff for drawing the BIOS logo. + */ + +/* + * Copyright (C) 2004-2019 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + */ + +#include <stdint.h> +#include "biosint.h" +#include "inlines.h" +#include "ebda.h" + +#define WAIT_HZ 64 +#define WAIT_MS 16 + +#define F12_SCAN_CODE 0x86 +#define F12_WAIT_TIME (3 * WAIT_HZ) /* 3 seconds. Used only if logo disabled. */ + +#include <VBox/bioslogo.h> + +/** + * Set video mode (VGA). + * @param mode New video mode. + */ +void set_mode(uint8_t mode); +#pragma aux set_mode = \ + "mov ah, 0" \ + "int 10h" \ + parm [al] modify [ax] nomemory; + + +/** + * Set VESA video mode. + * @param mode New video mode. + */ +uint16_t vesa_set_mode(uint16_t mode); +#pragma aux vesa_set_mode = \ + "mov ax, 4F02h" \ + "int 10h" \ + parm [bx] modify [ax] nomemory; + +/** + * Get current VESA video mode. + * @param mode New video mode. + */ +uint16_t vesa_get_mode(uint16_t __far *mode); +#pragma aux vesa_get_mode = \ + "mov ax, 4F03h" \ + "int 10h" \ + "mov es:[di], bx" \ + parm [es di] modify [ax bx] nomemory; + + +/** + * Set custom video mode. + * @param xres Requested width + * @param yres Requested height + * @param bpp Requested bits per pixel + */ +uint16_t custom_set_mode(uint16_t xres, uint16_t yres, uint8_t bpp); +#pragma aux custom_set_mode = \ + "mov ax, 5642h" \ + "mov bl, 0" \ + "int 10h" \ + parm [cx] [dx] [bh] modify [ax] nomemory; + +/** + * Check for keystroke. + * @returns True if keystroke available, False if not. + */ +/// @todo INT 16h should already be returning the right value in al; could also use setz +uint8_t check_for_keystroke(void); +#pragma aux check_for_keystroke = \ + "mov ax, 100h" \ + "int 16h" \ + "jz no_key" \ + "mov al, 1" \ + "jmp done" \ + "no_key:" \ + "xor al, al" \ + "done:" \ + modify [ax] nomemory; + + +/** + * Get keystroke. + * @returns BIOS scan code. + */ +uint8_t get_keystroke(void); +#pragma aux get_keystroke = \ + "xor ax, ax" \ + "int 16h" \ + "xchg ah, al" \ + modify [ax] nomemory; + + +/// @todo This whole business with reprogramming the PIT is rather suspect. +// The BIOS already has waiting facilities in INT 15h (fn 83h, 86h) which +// should be utilized instead. + +// Set the timer to 16ms ticks (64K / (Hz / (PIT_HZ / 64K)) = count). +void wait_init(void); +#pragma aux wait_init = \ + "mov al, 34h" \ + "out 43h, al" \ + "mov al, 0D3h" \ + "out 40h, al" \ + "mov al, 048h" \ + "out 40h, al" \ + modify [ax] nomemory; + +/// @todo using this private interface is not great +extern void rtc_post(void); +#pragma aux rtc_post "*"; + +/* Restore the timer to the default 18.2Hz. Reinitialize the tick + * and rollover counts since we've screwed them up by running the + * timer at WAIT_HZ for a while. + */ +void wait_uninit(void); +#if VBOX_BIOS_CPU >= 80386 +# pragma aux wait_uninit = \ + ".386" \ + "mov al, 34h" \ + "out 43h, al" \ + "xor ax, ax" \ + "out 40h, al" \ + "out 40h, al" \ + "pushad" \ + "push ds" \ + "mov ds, ax" \ + "call rtc_post" \ + "pop ds" \ + "popad" \ + modify [ax] nomemory; +#else +# pragma aux wait_uninit = \ + "mov al, 34h" \ + "out 43h, al" \ + "xor ax, ax" \ + "out 40h, al" \ + "out 40h, al" \ + "push bp" \ + "push ds" \ + "mov ds, ax" \ + "call rtc_post" \ + "pop ds" \ + "pop bp" \ + modify [ax bx cx dx si di]; +#endif + + +/** + * Waits (sleeps) for the given number of ticks. + * Checks for keystroke. + * + * @returns BIOS scan code if available, 0 if not. + * @param ticks Number of ticks to sleep. + * @param stop_on_key Whether to stop immediately upon keypress. + */ +uint8_t wait(uint16_t ticks, uint8_t stop_on_key) +{ + long ticks_to_wait, delta; + uint16_t old_flags; + uint32_t prev_ticks, t; + uint8_t scan_code = 0; + + /* + * We may or may not be called with interrupts disabled. For the duration + * of this function, interrupts must be enabled. + */ + old_flags = int_query(); + int_enable(); + + /* + * The 0:046c wraps around at 'midnight' according to a 18.2Hz clock. + * We also have to be careful about interrupt storms. + */ + ticks_to_wait = ticks; + prev_ticks = read_dword(0x0, 0x46c); + do + { + halt(); + t = read_dword(0x0, 0x46c); + if (t > prev_ticks) + { + delta = t - prev_ticks; /* The temp var is required or bcc screws up. */ + ticks_to_wait -= delta; + } + else if (t < prev_ticks) + ticks_to_wait -= t; /* wrapped */ + prev_ticks = t; + + if (check_for_keystroke()) + { + scan_code = get_keystroke(); + bios_printf(BIOS_PRINTF_INFO, "Key pressed: %x\n", scan_code); + if (stop_on_key) + return scan_code; + } + } while (ticks_to_wait > 0); + int_restore(old_flags); + return scan_code; +} + +uint8_t read_logo_byte(uint8_t offset) +{ + outw(LOGO_IO_PORT, LOGO_CMD_SET_OFFSET | offset); + return inb(LOGO_IO_PORT); +} + +uint16_t read_logo_word(uint8_t offset) +{ + outw(LOGO_IO_PORT, LOGO_CMD_SET_OFFSET | offset); + return inw(LOGO_IO_PORT); +} + +// Hide cursor, clear screen and move cursor to starting position +void clear_screen(void); +#pragma aux clear_screen = \ + "mov ax, 100h" \ + "mov cx, 1000h" \ + "int 10h" \ + "mov ax, 700h" \ + "mov bh, 7" \ + "xor cx, cx" \ + "mov dx, 184Fh" \ + "int 10h" \ + "mov ax, 200h" \ + "xor bx, bx" \ + "xor dx, dx" \ + "int 10h" \ + modify [ax bx cx dx] nomemory; + +void print_detected_harddisks(void) +{ + uint16_t ebda_seg=read_word(0x0040,0x000E); + uint8_t hd_count; + uint8_t hd_curr = 0; + uint8_t ide_ctrl_printed = 0; + uint8_t sata_ctrl_printed = 0; + uint8_t scsi_ctrl_printed = 0; + uint8_t device; + + hd_count = read_byte(ebda_seg, (uint16_t)&EbdaData->bdisk.hdcount); + + for (hd_curr = 0; hd_curr < hd_count; hd_curr++) + { + device = read_byte(ebda_seg, (uint16_t)&EbdaData->bdisk.hdidmap[hd_curr]); + +#ifdef VBOX_WITH_AHCI + if (VBOX_IS_AHCI_DEVICE(device)) + { + if (sata_ctrl_printed == 0) + { + printf("\n\n AHCI controller:"); + sata_ctrl_printed = 1; + } + + printf("\n %d) Hard disk", hd_curr+1); + + } + else +#endif +#ifdef VBOX_WITH_SCSI + if (VBOX_IS_SCSI_DEVICE(device)) + { + if (scsi_ctrl_printed == 0) + { + printf("\n\n SCSI controller:"); + scsi_ctrl_printed = 1; + } + + printf("\n %d) Hard disk", hd_curr+1); + + } + else +#endif + { + + if ((device < 4) && (ide_ctrl_printed == 0)) + { + printf(" IDE controller:"); + ide_ctrl_printed = 1; + } + else if ((device >= 4) && (sata_ctrl_printed == 0)) + { + printf("\n\nAHCI controller:\n"); + sata_ctrl_printed = 1; + } + + printf("\n %d) ", hd_curr+1); + + /* + * If actual_device is bigger than or equal 4 + * this is the next controller and + * the positions start at the beginning. + */ + if (device >= 4) + device -= 4; + + if (device / 2) + printf("Secondary "); + else + printf("Primary "); + + if (device % 2) + printf("Slave"); + else + printf("Master"); + } + } + + if ( (ide_ctrl_printed == 0) + && (sata_ctrl_printed == 0) + && (scsi_ctrl_printed == 0)) + printf("No hard disks found"); + + printf("\n"); +} + +uint8_t get_boot_drive(uint8_t scode) +{ + uint16_t ebda_seg=read_word(0x0040,0x000E); + + /* Check that the scan code is in the range of detected hard disks. */ + uint8_t hd_count = read_byte(ebda_seg, (uint16_t)&EbdaData->bdisk.hdcount); + + /* The key '1' has scancode 0x02 which represents the first disk */ + scode -= 2; + + if (scode < hd_count) + return scode; + + /* Scancode is higher than number of available devices */ + return 0xff; +} + +void show_logo(void) +{ + uint16_t ebda_seg = read_word(0x0040,0x000E); + uint8_t f12_pressed = 0; + uint8_t scode; + uint16_t tmp, i; + + LOGOHDR *logo_hdr = 0; + uint8_t is_fade_in, is_fade_out, uBootMenu; + uint16_t logo_time; + uint16_t old_mode; + + + // Set PIT to 64hz. + wait_init(); + + // Get main signature + tmp = read_logo_word((uint8_t)&logo_hdr->u16Signature); + if (tmp != 0x66BB) + goto done; + + // If there is no VBE, just skip this + if (vesa_get_mode(&old_mode) != 0x004f ) + goto done; + + // Get options + is_fade_in = read_logo_byte((uint8_t)&logo_hdr->fu8FadeIn); + is_fade_out = read_logo_byte((uint8_t)&logo_hdr->fu8FadeOut); + logo_time = read_logo_word((uint8_t)&logo_hdr->u16LogoMillies); + uBootMenu = read_logo_byte((uint8_t)&logo_hdr->fu8ShowBootMenu); + + // Is Logo disabled? + if (!is_fade_in && !is_fade_out && !logo_time) + goto done; + + /* Set video mode using private video BIOS interface. */ + tmp = custom_set_mode(640, 480, 32); + /* If custom mode set failed, fall back to VBE. */ + if (tmp != 0x4F) + vesa_set_mode(0x142); + + if (is_fade_in) + { + for (i = 0; i <= LOGO_SHOW_STEPS; i++) + { + outw(LOGO_IO_PORT, LOGO_CMD_SHOW_BMP | i); + scode = wait(16 / WAIT_MS, 0); + if (scode == F12_SCAN_CODE) + { + f12_pressed = 1; + break; + } + } + } + else + outw(LOGO_IO_PORT, LOGO_CMD_SHOW_BMP | LOGO_SHOW_STEPS); + + // Wait (interval in milliseconds) + if (!f12_pressed) + { + scode = wait(logo_time / WAIT_MS, 1); + if (scode == F12_SCAN_CODE) + f12_pressed = 1; + } + + // Fade out (only if F12 was not pressed) + if (is_fade_out && !f12_pressed) + { + for (i = LOGO_SHOW_STEPS; i > 0 ; i--) + { + outw(LOGO_IO_PORT, LOGO_CMD_SHOW_BMP | i); + scode = wait(16 / WAIT_MS, 0); + if (scode == F12_SCAN_CODE) + { + f12_pressed = 1; + break; + } + } + } + else if (!f12_pressed) + outw(LOGO_IO_PORT, LOGO_CMD_SHOW_BMP | 0); + +done: + // Clear forced boot drive setting. + write_byte(ebda_seg, (uint16_t)&EbdaData->uForceBootDevice, 0); + + // Don't restore previous video mode + // The default text mode should be set up. (defect @bugref{1235}) + set_mode(0x0003); + + // If Setup menu enabled + if (uBootMenu) + { + // If the graphics logo disabled + if (!is_fade_in && !is_fade_out && !logo_time) + { + if (uBootMenu == 2) + printf("Press F12 to select boot device.\n"); + + // if the user has pressed F12 don't wait here + if (!f12_pressed) + { + // Wait for timeout or keystroke + scode = wait(F12_WAIT_TIME, 1); + if (scode == F12_SCAN_CODE) + f12_pressed = 1; + } + } + + // If F12 pressed, show boot menu + if (f12_pressed) + { + uint8_t boot_device = 0; + uint8_t boot_drive = 0; + + clear_screen(); + + // Show menu. Note that some versions of bcc freak out if we split these strings. + printf("\nVirtualBox temporary boot device selection\n\nDetected Hard disks:\n\n"); + print_detected_harddisks(); + printf("\nOther boot devices:\n f) Floppy\n c) CD-ROM\n l) LAN\n\n b) Continue booting\n"); + + + + // Wait for keystroke + for (;;) + { + do + { + scode = wait(WAIT_HZ, 1); + } while (scode == 0); + + if (scode == 0x30) + { + // 'b' ... continue + break; + } + + // Check if hard disk was selected + if ((scode >= 0x02) && (scode <= 0x09)) + { + boot_drive = get_boot_drive(scode); + + /* + * 0xff indicates that there is no mapping + * from the scan code to a hard drive. + * Wait for next keystroke. + */ + if (boot_drive == 0xff) + continue; + + write_byte(ebda_seg, (uint16_t)&EbdaData->uForceBootDrive, boot_drive); + boot_device = 0x02; + break; + } + + switch (scode) + { + case 0x21: + // Floppy + boot_device = 0x01; + break; + case 0x2e: + // CD-ROM + boot_device = 0x03; + break; + case 0x26: + // LAN + boot_device = 0x04; + break; + } + + if (boot_device != 0) + break; + } + + write_byte(ebda_seg, (uint16_t)&EbdaData->uForceBootDevice, boot_device); + + // Switch to text mode. Clears screen and enables cursor again. + set_mode(0x0003); + } + } + + // Restore PIT ticks + wait_uninit(); + + return; +} + + +void delay_boot(uint16_t secs) +{ + uint16_t i; + + if (!secs) + return; + + // Set PIT to 1ms ticks + wait_init(); + + printf("Delaying boot for %d seconds:", secs); + for (i = secs; i > 0; i--) + { + printf(" %d", i); + wait(WAIT_HZ, 0); + } + printf("\n"); + // Restore PIT ticks + wait_uninit(); +} diff --git a/src/VBox/Devices/PC/BIOS/makefile b/src/VBox/Devices/PC/BIOS/makefile new file mode 100644 index 00000000..40d0f4ad --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/makefile @@ -0,0 +1,72 @@ +# Compiler flags: +# -q no banner +# -wx max warnings +# -0 generate 8086 code +# -ms force small model (default) +# -s remove runtime stack checks (required) +# -os optimize for size +# -zu assume that SS != DS (required) +# -ecc default to __cdecl calling convention (bad idea) +# +!ifdef __UNIX__ +Q=\" +!else +Q=" +!endif + +CPU = 386 + +CFLAGS = -q -0 -wx -zu -s -oas -d1+ -ms +CFLAGS32 = -q -wx -zu -s -oas -d1+ -ms -nt=BIOS32 -nd=BIOS32 +# -oat seems to prevent ENTER/LEAVE generation +#CFLAGS32 = -q -wx -zu -s -oat -d1+ -ms -nt=BIOS32 -nd=BIOS32 + +DEFS = -DVBOX -DVBOX_LANBOOT_SEG=0xE200 -DVBOX_VERSION_STRING=$(Q)0.9$(Q) & + -DVBOX_WITH_SCSI -DVBOX_BIOS_CPU=80386 + +AFLAGS = -q -0 -wx + +INCLS = -I$(Q)../../../../../include$(Q) -I$(Q) ../../BiosCommonCode$(Q) + +OBJS = bios.obj post.obj ata.obj floppy.obj floppyt.obj eltorito.obj & + boot.obj keyboard.obj disk.obj serial.obj system.obj invop.obj & + timepci.obj logo.obj ps2mouse.obj parallel.obj scsi.obj & + apm.obj apm_pm.obj pcibios.obj pciutil.obj vds.obj & + print.obj pcibio32.obj pci32.obj orgs.obj + +!if $(CPU) > 286 +OBJS += ahci.obj +DEFS += -DVBOX_WITH_AHCI +!endif + +.c.obj : .autodepend + wcc -fo=.obj $(CFLAGS) $(DEFS) $(INCLS) $< + +.asm.obj : .autodepend + wasm -fo=.obj $(AFLAGS) $(DEFS) $(INCLS) $< + +vbxbios.rom : vbxbios.bin + biossums $< $@ + +vbxbios.bin : $(OBJS) $(__MAKEFILES__) + wlink name $@ system dos debug all option quiet & + option nofarcalls, map, verbose, statics, symfile & + output raw offset=0xF0000 order & + clname DATA segaddr=0xF000 segment _DATA & + clname CODE & + segment _TEXT segaddr=0xF000 offset=0x1C00 & + segment BIOS32 segaddr=0xF000 offset=0xDB00 & + segment BIOSSEG segaddr=0xF000 offset=0xE000 & + file { $(OBJS) } & + library clibs.lib & + disable 1014, 1023, 2120 + +logo.obj : logo.c .autodepend + wcc -fo=.obj $(INCLS) $(CFLAGS) $(DEFS) -DVBOX_PC_BIOS $< + +pci32.obj : pci32.c .autodepend + wcc386 -fo=.obj $(INCLS) $(DEFS) $(CFLAGS32) $< + +clean : .symbolic + @rm -f *.obj *.err + @rm -f vbxbios.bin vbxbios.rom vbxbios.map vbxbios.sym diff --git a/src/VBox/Devices/PC/BIOS/notes.txt b/src/VBox/Devices/PC/BIOS/notes.txt new file mode 100644 index 00000000..2861cb8b --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/notes.txt @@ -0,0 +1,195 @@ + + Notes on BIOS usage + ------------------- + +- DOS (including 6.22/7.1) does not need INT 15h or INT 1Ah. Most other + operating systems require INT 15h to detect installed memory. + +- OS/2 (WSeB/MCP/ACP) and Windows 98 SE are some of the very few operating + systems which use the El Torito floppy emulation. + +- NetWare 5.1 is one of the *extremely* few users of El Torito hard disk + emulation. + +- Keystroke check (INT 16h, fn 01h/11h) always enables interrupts on return. + DOS POWER.EXE depends on that in some situations. + +- IBM DOS J5.00/V is even worse and does a far jump into INT 16h/11h after + pushing garbage on the stack. Using IRET directly may change IOPL, set + TF, change direction flag, etc. We have to use or simulate RETF 2 instead. + +- MS-DOS 5.0/V setup assumes that INT 13h always returns with interrupts + enabled. + +- INT 15h also always returns with interrupts enabled (even for unsupported + functions). + +- MS-DOS 6.2/V is a rare user of the INT 15h keyboard intercept routines. + +- Some software uses the model byte at F000:FFFE to determine the system + type (PC-DOS 3.0, Norton Utilities 8). Other software first tries INT 15h, + fn C0h instead (PC-DOS 3.1, MSD). + +- DOS 4.01 (both IBM and Microsoft) calls INT 13h to read from disk with less + than 100 bytes of stack space early in the boot sequence. This tends to be + a problem especially for the SATA and SCSI code paths. + +- Very few guests use the 32-bit PCI BIOS interface. One is OS/2 (but falls + back), another is Etherboot. + +- OS/2 is the only known guest which can run the 16-bit PCI BIOS in protected + mode (but only if the 32-bit PCI BIOS is unavailable). + +- NetWare 6.x is the only known guest which uses the PCI BIOS service to read + the IRQ routing table. + +- Any disk reads which use bus-master DMA (AHCI, IDE BM) must use VDS + (Virtual DMA Services) when present. Otherwise any reads/writes when the + real mode addresses don't map directly to physical addresses will fail + horribly. DOS 6.x with EMM386 is a good testcase (esp. loading drivers + into UMBs). + +- Many older OSes (especially UNIX based) require the FDPT to contain + physical ATA disk geometry; for that reason, disks smaller than ~500MB are + easiest to use. Otherwise a "large" BIOS disk option would be required. + +- Some really old OSes (Xenix circa 1986-7) do not understand the EBDA idea + and clear the memory. For those, the FDPT must be in the BIOS ROM area, or + the OS will destroy it (even when it's at 0:300 in the IVT). + +- NetWare 2.15 has a similar restriction, the FDPT must explicitly point above + segment address C800 or the NetWare AT disk driver abends. + +- Windows NT (including XP) uses INT 13h/08h to obtain the DPT for each floppy + drive. NT assumes a 13-byte DPT which includes the number of tracks. NT will + refuse to read more tracks than the DPT specifies and formats as many tracks + as the DPT specifies. + +- Windows 98 SE boot CD uses 32-bit registers in real mode and will fail in + mysterious ways if BIOS trashes high bits of EAX (and likely others). + +- PC DOS 6.x/7.x QCONFIG is a rare user of INT 16h fn 0Ah (read keyboard ID). + +- DOS POWER.EXE uses the real mode APM interface, OS/2 APM.SYS uses the 16-bit + protected mode APM interface, and Windows 9x uses the 32-bit protected mode + APM interface. + +- Windows 98 is one of the few APM 1.2 users; Windows 95 uses APM 1.1, while + newer systems prefer ACPI. + +- QNX4 calls 16-bit protected-mode PCI BIOS in an environment where ESP is + 16-bit but SS is a 32-bit stack segment. In such environments, using the + ENTER/LEAVE sequence is fatal if the high word of EBP is non-zero (which + it will be with QNX 4.25). LEAVE propagates the high word of EBP into ESP + with fatal consequences. + +- Plan 9 also runs 16-bit code with a 32-bit stack segment, except Plan 9 + thinks it counts as real mode. Same ENTER/LEAVE problem as above. + +- AIX 1.3 is a rare user of INT 15h/89h (switch to protected mode) service. + +- IBM OS/2 1.0/1.1 (but not other versions!) attempt to execute a 286 LOADALL + instruction. LOADALL must be emulated for OS/2 to work properly. HIMEM.SYS + version 2.03 and later also contains 286 LOADALL code but this will not be + executed on 386+ processors. + +- IBM and Microsoft OS/2 1.0 use CMOS shutdown status 9 to get back from + protected mode without having called INT 15h/87h at all. That makes the + status 9 handling a public interface (just like codes 5 and 0Ah) which + has to be compatible with other BIOS implementations. + +- Windows NT 3.5 and 3.51 with MPS HAL requires that INT 15h/E820h return the + I/O APIC range as reserved, or not return any ranges at all just below 4GB. + Otherwise the NT kernel will crash early during init due to confusion about + the top of memory. + +- Darwin x86 6.0.2 ISO (darwinx86-602.iso) has a bizarre boot sector (using + El Torito hard disk emulation) with the first five bytes being zero. It + appears to be valid despite the oddity. + +- Darwin 6.0.2 also uses an El Torito emulated hard disk. In addition, if + INT 13h/41h succeeds, Darwin uses INT13X to read from the emulated drive. + +- Symantec Ghost 11.5 bootable CD also uses El Torito hard disk emulation, + uses INT13X without checking for support, and crashes if INT13X is not + supported on the emulated drive. + + + 286 BIOS + -------- + + For testing purposes, it's quite useful to have a BIOS that can run in a +classic PC/AT environment with a 286 CPU. This forces various changes, not +always obvious: + + - C code can be easily compiled to produce 286-compatible object code + + - 32-bit BIOS services such as APM or PCI BIOS are irrelevant + + - PCI cannot be supported because it requires 32-bit port I/O + + - AHCI cannot be supported because it requires 32-bit port I/O and PCI + + - Switching to protected mode must be done using LMSW instead of CR0 + + - Switching back to real mode must reset the CPU (currently triple fault) + and regain control by setting up the CMOS shutdown status byte + + + + Notes on BIOS implementation + ---------------------------- + +- To return values from functions not declared as __interrupt, the arguments + may need to be declared volatile (not ideal, but does the job). + +- The way the POST code selectively clears or doesn't clear memory + is extremely suspect and will need reworking. + +- Need to review string routines wrt direction flag (should be OK now). + +- Need to review CMOS access wrt interrupts (possible index reg change by + an interrupt handler). + +- The POST code zeroes the entire BDA, and then various bits zero specific + parts of the BDA again. That's a waste of time. + +- After a reset, all interrupts are unmasked. Not sure if that's OK. + +- BCC mishandles the following (where buf is an uint8_t array): + lba=buf[0x2B]*0x1000000+buf[0x2A]*0x10000+buf[0x29]*0x100+buf[0x28]; + The buf[x]*100 expression should end up being of type signed int, which + causes the sign to be incorrectly propagated. BCC incorrectly keeps + the type unsigned. + +- The PCI BIOS services are implemented in C, compiled twice as 16-bit and + 32-bit code. This reduces the development effort and significantly lowers + the risk of discrepancies between 16-bit and 32-bit implementation. Care + must be taken because the 16-bit implementation can be executed in both + real and protected mode. + +- APM can be in theory implemented only once for real, 16-bit protected and + 32-bit protected mode. Unfortunately this is very inconvenient in C since + the default stack size changes between 16-bit and 32-bit callers. Therefore + real mode APM (which supports most functions) is implemented in C and + protected-mode APM is written in assembler for both 16-bit and 32-bit calls, + with a small 32->16 thunk. + +- The -of switch can be used to avoid generating ENTER/LEAVE instructions. + This appears to be an undocumented and perhaps unintentional side effect. + + + Code size notes (code as of 7/6/2011): + + The following values are the size of the _TEXT segment, i.e. only C code; +data defined in C is not included, neither are assembly modules. + + Options: Size (hex): + -------- ----------- + -0 -zu -s -oas -ecc 631A + -3 -zu -s -oas -ecc 5C1E + -0 -zu -s -oas 578A + -3 -zu -s -oas 5452 + + Both generating 386 code and using register-based calling convention for +internal functions brings significant size savings (15% when combined). diff --git a/src/VBox/Devices/PC/BIOS/orgs.asm b/src/VBox/Devices/PC/BIOS/orgs.asm new file mode 100644 index 00000000..1706b71d --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/orgs.asm @@ -0,0 +1,2069 @@ +; $Id: orgs.asm $ +;; @file +; ??? +; + +; +; Copyright (C) 2006-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; -------------------------------------------------------------------- +; +; This code is based on: +; +; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment +; +; Copyright (C) 2002 MandrakeSoft S.A. +; +; MandrakeSoft S.A. +; 43, rue d'Aboukir +; 75002 Paris - France +; http://www.linux-mandrake.com/ +; http://www.mandrakesoft.com/ +; +; This library is free software; you can redistribute it and/or +; modify it under the terms of the GNU Lesser General Public +; License as published by the Free Software Foundation; either +; version 2 of the License, or (at your option) any later version. +; +; This library is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +; Lesser General Public License for more details. +; +; You should have received a copy of the GNU Lesser General Public +; License along with this library; if not, write to the Free Software +; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +; + +; Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice +; other than GPL or LGPL is available it will apply instead, Oracle elects to use only +; the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where +; a choice of LGPL license versions is made available with the language indicating +; that LGPLv2 or any later version may be used, or where a choice of which version +; of the LGPL is applied is otherwise unspecified. + + +include commondefs.inc + +EBDA_SEG equ 09FC0h ; starts at 639K +EBDA_SIZE equ 1 ; 1K +BASE_MEM_IN_K equ (640 - EBDA_SIZE) + +CMOS_ADDR equ 070h +CMOS_DATA equ 071h + + +PIC_CMD_EOI equ 020h +PIC_MASTER equ 020h +PIC_SLAVE equ 0A0h + +BIOS_FIX_BASE equ 0E000h + +if VBOX_BIOS_CPU ge 80286 +SYS_MODEL_ID equ 0FCh ; PC/AT +else +SYS_MODEL_ID equ 0FBh ; PC/XT +endif +SYS_SUBMODEL_ID equ 0 +BIOS_REVISION equ 1 + +BIOS_BUILD_DATE equ '06/23/99' +BIOS_COPYRIGHT equ 'Oracle VM VirtualBox BIOS' + +BX_ROMBIOS32 equ 0 +BX_CALL_INT15_4F equ 1 + +;; Set a fixed BIOS location, with a marker for verification +BIOSORG macro addr, addr_minus_two +.errnz (addr - 2 - addr_minus_two) ;; Couldn't convince wasm to accept $ here. Would've save us a lot of bother and ugly SED. + BIOSORG_CHECK_BEFORE addr_minus_two + org addr - BIOS_FIX_BASE - 2 + db 'XM' + BIOSORG_CHECK addr + endm + +;; Set an interrupt vector (not very efficient if multiple vectors are +;; programmed in one go) +SET_INT_VECTOR macro vec, segm, offs + mov ax, offs + mov ds:[vec*4], ax + mov ax, segm + mov ds:[vec*4+2], ax +endm + +; Set up an environment C code expects. DS must point to the BIOS segment +; and the direction flag must be cleared(!) +C_SETUP macro + push cs + pop ds + cld +endm + + +;; External function in separate modules +extrn _dummy_isr_function:near +extrn _log_bios_start:near +extrn _nmi_handler_msg:near +extrn _int18_panic_msg:near +extrn _int09_function:near +extrn _int13_diskette_function:near +extrn _int13_eltorito:near +extrn _int13_cdemu:near +extrn _int13_cdrom:near +extrn _cdemu_isactive:near +extrn _cdemu_emulated_drive:near +extrn _int13_harddisk:near +extrn _int13_harddisk_ext:near +extrn _int14_function:near +extrn _int15_function:near +extrn _int15_function_mouse:near +extrn _int16_function:near +extrn _int17_function:near +extrn _int19_function:near +extrn _int1a_function:near +extrn _pci16_function:near +extrn _int70_function:near +extrn _int74_function:near +extrn _apm_function:near +extrn _ata_init:near +extrn _scsi_init:near +extrn _ata_detect:near +extrn _cdemu_init:near +extrn _keyboard_init:near +extrn _print_bios_banner:near +extrn _inv_op_handler:near +extrn rom_scan_:near +ifdef VBOX_WITH_AHCI +extrn _ahci_init:near +endif +if VBOX_BIOS_CPU ge 80286 +extrn _int15_blkmove:near +endif +if VBOX_BIOS_CPU ge 80386 +extrn _int15_function32:near +extrn _apic_setup:near +endif + + +;; Symbols referenced from C code +public _diskette_param_table +public _pmode_IDT +public _rmode_IDT +public post +public eoi_both_pics +public rtc_post + +;; Additional publics for easier disassembly and debugging +ifndef DEBUG + DEBUG equ 1 +endif +ifdef DEBUG + +public int08_handler +public int0e_handler +public int11_handler +public int12_handler +public int13_handler +public int13_relocated +if VBOX_BIOS_CPU eq 8086 +public jmp_call_ret_int13_out +endif +public int15_handler +public int17_handler +public int19_handler +public int19_relocated +public dummy_iret +public nmi +public rom_fdpt +public cpu_reset +public normal_post +public eoi_jmp_post +public no_eoi_jmp_post +public eoi_master_pic +public ebda_post +public seg_40_value +public hard_drive_post +public int13_legacy +public int70_handler +public int75_handler +public int15_handler32 +public int15_handler_mouse +public iret_modify_cf +public init_pic +public floppy_post +public int13_out +public int13_disk +public int13_notfloppy +public int13_legacy +public int13_noeltorito +public int1c_handler +public int10_handler +public int74_handler +public int76_handler +public detect_parport +public detect_serial +public font8x8 + +endif + +;; Keyboard related constants +KBDC_DISABLE EQU 0ADh +KBDC_ENABLE EQU 0AEh +KBC_CMD EQU 64h +KBC_DATA EQU 60h + + +;; NOTE: The last 8K of the ROM BIOS are peppered with fixed locations which +;; must be retained for compatibility. As a consequence, some of the space is +;; going to be wasted, but the gaps should be filled with miscellaneous code +;; and data when possible. + +SET_DEFAULT_CPU_286 + +BIOSSEG segment 'CODE' + assume cs:BIOSSEG + +;; +;; Start of fixed code - eoi_jmp_post is kept near here to allow short jumps. +;; + BIOSORG 0E030h, 0E02Eh +eoi_both_pics: + mov al, PIC_CMD_EOI + out PIC_SLAVE, al +eoi_master_pic: + mov al, PIC_CMD_EOI + out PIC_MASTER, al + ret + + ;; routine to write the pointer in DX:AX to memory starting + ;; at DS:BX (repeat CX times) + ;; - modifies BX, CX +set_int_vects proc near + + mov [bx], ax + mov [bx+2], dx + add bx, 4 + loop set_int_vects + ret + +set_int_vects endp + +eoi_jmp_post: +;; Calling eoi_both_pics can't be done because it writes to stack, potentially +;; corrupting memory. AT BIOS also only clears the master PIC, not both. + ;; clear keyboard buffer (and possible interrupt) + in al, KBC_DATA + mov al, PIC_CMD_EOI + out PIC_MASTER, al + +no_eoi_jmp_post: + mov ax, 40h + mov ds, ax + jmp dword ptr ds:[67h] + +seg_40_value: dw 40h ;; Replaces a push 40; pop ds. + +;; -------------------------------------------------------- +;; POST entry point +;; -------------------------------------------------------- + BIOSORG 0E05Bh, 0E059h +post: + cli + +if VBOX_BIOS_CPU ge 80286 + ;; Check if in protected (V86) mode. If so, the CPU needs + ;; to be reset. + .286p + smsw ax + test ax, 1 + jz in_real_mode + SET_DEFAULT_CPU_286 +else + jmp in_real_mode +endif + + ;; Reset processor to get out of protected mode. Use system + ;; port instead of KBC. +reset_sys: + mov al, 1 + out 92h, al + jmp $ ; not strictly necessary in a VM + + +in_real_mode: + ;; read the CMOS shutdown status + mov al, 0Fh + out CMOS_ADDR, al + in al, CMOS_DATA + + ;; save status + xchg ah, al + + ;; Check KBC self-test/shutdown flag. If it is set, we need + ;; to check for a reboot attempt. + in al, 64h + test al, 4 ; clear flag indicates cold boot + jz cont_post + + ;; Warm boot, check the shutdown byte. + mov al, ah + or al, al + jnz cont_post + + ;; Warm boot but shutdown byte is zero. This is either a warm + ;; boot request or an attempt to reset the system via triple + ;; faulting the CPU or similar. Check reboot flag. + ;; NB: At this point, registers need not be preserved. + mov ds, cs:[seg_40_value] + cmp word ptr ds:[72h], 1234h + jnz reset_sys ; trigger system reset + +cont_post: + ;; reset the shutdown status in CMOS + mov al, 0Fh + out CMOS_ADDR, al + mov al, 0 + out CMOS_DATA, al + + ;; pre-check the shutdown status - shutdown codes 9/A leave + ;; the hardware alone + mov al, ah + cmp al, 09h + jz check_shutdown + cmp al, 0Ah + jz check_shutdown + + xor al, al + + ;; reset the DMA controllers + out 00Dh, al + out 0DAh, al + + ;; then initialize the DMA controllers + mov al, 0C0h + out 0D6h, al ; enable channel 4 cascade + mov al, 0 + out 0D4h, al ; unmask channel 4 + +check_shutdown: + ;; examine the shutdown status code + mov al, ah + cmp al, 0 + jz normal_post + + cmp al, 0Dh + jae normal_post + cmp al, 9 + jne check_next_std + jmp return_blkmove +check_next_std: + + mov sp, 400h + ;; 05h = EOI + jump through 40:67 + cmp al, 5 + je eoi_jmp_post + ;; 0ah = jump through 40:67 (no EOI) ;ba x 1 %fe05b ; ba x 1 %18b81 + cmp al, 0ah + je no_eoi_jmp_post + + ;; any other shutdown status values are ignored + ;; OpenSolaris sets the status to 0Ah in some cases? + jmp normal_post + +normal_post: + ;; shutdown code 0: normal startup + + ;; Set up the stack top at 0:7800h. The stack should not be + ;; located above 0:7C00h; that conflicts with PXE, which + ;; considers anything above that address to be fair game. + ;; The traditional locations are 30:100 (PC) or 0:400 (PC/AT). + mov ax, 7800h + mov sp, ax + xor ax, ax + mov ds, ax + mov ss, ax + + ;; clear the bottom of memory except for the word at 40:72 + ;; TODO: Why not clear all of it? What's the point? + mov es, ax + xor di, di + cld + mov cx, 0472h / 2 + rep stosw + inc di + inc di + mov cx, (1000h - 0472h - 2) / 2 + rep stosw + + ;; clear the remaining base memory except for the top + ;; of the EBDA (the MP table is planted there) + xor bx, bx +memory_zero_loop: + add bx, 1000h + cmp bx, 9000h + jae memory_cleared + mov es, bx + xor di, di + mov cx, 8000h ; 32K words + rep stosw + jmp memory_zero_loop +memory_cleared: + mov es, bx + xor di, di + mov cx, 7FF8h ; all but the last 16 bytes + rep stosw + xor bx, bx + + + C_SETUP + call _log_bios_start + +if VBOX_BIOS_CPU ge 80386 + call pmode_setup +endif + + ;; set all interrupts in 00h-5Fh range to default handler + xor bx, bx + mov ds, bx + mov cx, 60h ; leave the rest as zeros + mov ax, dummy_iret + mov dx, BIOSSEG + call set_int_vects + + ;; also set 68h-77h to default handler; note that the + ;; 60h-67h range must contain zeros for certain programs + ;; to function correctly + mov bx, 68h * 4 + mov cx, 10h + call set_int_vects + + ;; base memory in K to 40:13 + mov ax, BASE_MEM_IN_K + mov ds:[413h], ax + + ;; manufacturing test at 40:12 + ;; zeroed out above + + ;; set up various service vectors + ;; TODO: This should use the table at FEF3h instead + SET_INT_VECTOR 06h, BIOSSEG, int06_handler + SET_INT_VECTOR 11h, BIOSSEG, int11_handler + SET_INT_VECTOR 12h, BIOSSEG, int12_handler + SET_INT_VECTOR 15h, BIOSSEG, int15_handler + SET_INT_VECTOR 17h, BIOSSEG, int17_handler + SET_INT_VECTOR 18h, BIOSSEG, int18_handler + SET_INT_VECTOR 19h, BIOSSEG, int19_handler + SET_INT_VECTOR 1Ch, BIOSSEG, int1c_handler + + call ebda_post + + ;; Initialize PCI devices. This can and should be done early. +if VBOX_BIOS_CPU ge 80386 ; (Impossible to do on 16-bit CPUs.) + call pcibios_init_iomem_bases + call pcibios_init_irqs +endif + SET_INT_VECTOR 1Ah, BIOSSEG, int1a_handler + + ;; PIT setup + SET_INT_VECTOR 08h, BIOSSEG, int08_handler + mov al, 34h ; timer 0, binary, 16-bit, mode 2 + out 43h, al + mov al, 0 ; max count -> ~18.2 Hz + out 40h, al + out 40h, al + + ;; video setup - must be done before POSTing VGA ROM + SET_INT_VECTOR 10h, BIOSSEG, int10_handler + + ;; keyboard setup + SET_INT_VECTOR 09h, BIOSSEG, int09_handler + SET_INT_VECTOR 16h, BIOSSEG, int16_handler + + xor ax, ax + mov ds, ax + ;; TODO: What's the point? The BDA is zeroed already?! + mov ds:[417h], al ; keyboard shift flags, set 1 + mov ds:[418h], al ; keyboard shift flags, set 2 + mov ds:[419h], al ; keyboard Alt-numpad work area + mov ds:[471h], al ; keyboard Ctrl-Break flag + mov ds:[497h], al ; keyboard status flags 4 + mov al, 10h + mov ds:[496h], al ; keyboard status flags 3 + + mov bx, 1Eh + mov ds:[41Ah], bx ; keyboard buffer head + mov ds:[41Ch], bx ; keyboard buffer tail + mov ds:[480h], bx ; keyboard buffer start + mov bx, 3Eh + mov ds:[482h], bx ; keyboard buffer end + + ;; store CMOS equipment byte in BDA + mov al, 14h + out CMOS_ADDR, al + in al, CMOS_DATA + mov ds:[410h], al + + push ds + C_SETUP + + ;; Scan for video ROMs in the C000-C800 range. This is done + ;; early so that errors are displayed on the screen. + mov ax, 0C000h + mov dx, 0C800h + call rom_scan_ + + ;; Initialize the keyboard + call _keyboard_init + pop ds + + ;; parallel setup + SET_INT_VECTOR 0Fh, BIOSSEG, dummy_iret + xor ax, ax + mov ds, ax + xor bx, bx + mov cl, 14h ; timeout value + mov dx, 378h ; parallel port 1 + call detect_parport + mov dx, 278h ; parallel port 2 + call detect_parport + DO_shl bx, 0Eh + mov ax, ds:[410h] ; equipment word + and ax, 3FFFh + or ax, bx ; set number of parallel ports + mov ds:[410h], ax ; store in BDA + + ;; Serial setup + SET_INT_VECTOR 0Bh, BIOSSEG, dummy_isr ; IRQ 3 + SET_INT_VECTOR 0Ch, BIOSSEG, dummy_isr ; IRQ 4 + SET_INT_VECTOR 14h, BIOSSEG, int14_handler + xor bx, bx + mov cl, 0Ah ; timeout value + mov dx, 3F8h ; first serial address + call detect_serial + mov dx, 2F8h ; second serial address + call detect_serial + mov dx, 3E8h ; third serial address + call detect_serial + mov dx, 2E8h ; fourth serial address + call detect_serial + DO_shl bx, 9 + mov ax, ds:[410h] ; equipment word + and ax, 0F1FFh ; bits 9-11 determine serial ports + or ax, bx + mov ds:[410h], ax + + ;; CMOS RTC + SET_INT_VECTOR 4Ah, BIOSSEG, dummy_iret ; TODO: redundant? + SET_INT_VECTOR 70h, BIOSSEG, int70_handler + ;; BIOS DATA AREA 4CEh ??? + call rtc_post + + jmp norm_post_cont + + +;; -------------------------------------------------------- +;; NMI handler +;; -------------------------------------------------------- + BIOSORG 0E2C3h, 0E2C1h +nmi: + C_SETUP + call _nmi_handler_msg + iret + +int75_handler: + out 0F0h, al ; clear IRQ13 + call eoi_both_pics + int 2 ; emulate legacy NMI + iret + + +hard_drive_post proc near + + xor ax, ax + mov ds, ax + ;; TODO: Didn't we just clear the entire EBDA? + mov ds:[474h], al ; last HD operation status + mov ds:[477h], al ; HD port offset (XT only???) + mov ds:[48Ch], al ; HD status register + mov ds:[48Dh], al ; HD error register + mov ds:[48Eh], al ; HD task complete flag + mov al, 0C0h + mov ds:[476h], al ; HD control byte + ;; set up hard disk interrupt vectors + SET_INT_VECTOR 13h, BIOSSEG, int13_handler + SET_INT_VECTOR 76h, BIOSSEG, int76_handler + ;; The ATA init code sets up INT 41h/46h FDPT pointers + ret + +hard_drive_post endp + + +norm_post_cont: + ;; PS/2 mouse setup + SET_INT_VECTOR 74h, BIOSSEG, int74_handler + + ;; IRQ 13h (FPU exception) setup + SET_INT_VECTOR 75h, BIOSSEG, int75_handler + + call init_pic + + C_SETUP + +if VBOX_BIOS_CPU ge 80386 + ;; Set up local APIC + .386 + pushad + call _apic_setup + popad + SET_DEFAULT_CPU_286 +endif + + ;; ATA/ATAPI driver setup + call _ata_init + call _ata_detect + +ifdef VBOX_WITH_AHCI + ; AHCI driver setup + ;; TODO: AHCI initialization needs timer, but enabling + ;; interrupts elsewhere may be risky. Just do it around + ;; the AHCI init. + sti + call _ahci_init + cli +endif + +ifdef VBOX_WITH_SCSI + ; SCSI driver setup + call _scsi_init +endif + + ;; floppy setup + call floppy_post + + ;; hard drive setup + call hard_drive_post + + C_SETUP ; in case assembly code changed things + ;; Scan for additional ROMs in the C800-EFFF range + mov ax, 0C800h + mov dx, 0F000h + call rom_scan_ + +if VBOX_BIOS_CPU ge 80386 + ;; The POST code does not bother preserving high bits of the + ;; 32-bit registers. Now is a good time to clear them so that + ;; there's no garbage left in high bits. + .386 + xor eax, eax + xor ebx, ebx + xor ecx, ecx + xor edx, edx + .286 +endif + + call _print_bios_banner + + ;; El Torito floppy/hard disk emulation + call _cdemu_init + + ; TODO: what's the point of enabling interrupts here?? + sti ; enable interrupts + int 19h + ;; does not return here + sti +wait_forever: + hlt + jmp wait_forever + cli + hlt + + +;; +;; Return from block move (shutdown code 09h). Care must be taken to disturb +;; register and memory state as little as possible. +;; +return_blkmove: + .286p + mov ax, 40h + mov ds, ax + ;; restore user stack + mov ss, ds:[69h] + mov sp, ds:[67h] + ;; reset A20 gate + in al, 92h + and al, 0FDh + out 92h, al + ;; ensure proper real mode IDT + lidt fword ptr cs:_rmode_IDT + ;; restore user segments + pop ds + pop es + ;; set up BP + mov bp, sp + ;; restore status code + in al, 80h + mov [bp+15], al + ;; set ZF/CF + cmp ah,al ; AH is zero here! + ;; restore registers and return + popa + sti + retf 2 + SET_DEFAULT_CPU_286 + + +;; -------------------------------------------------------- +;; INT 13h handler - Disk services +;; -------------------------------------------------------- + BIOSORG 0E3FEh, 0E3FCh + +int13_handler: + jmp int13_relocated + + +;; -------------------------------------------------------- +;; Fixed Disk Parameter Table +;; -------------------------------------------------------- + BIOSORG_CHECK 0E401h ; fixed wrt preceding + +rom_fdpt: + +;; -------------------------------------------------------- +;; INT 19h handler - Boot load service +;; -------------------------------------------------------- + BIOSORG 0E6F2h, 0E6F0h + +int19_handler: + jmp int19_relocated + + + +;; -------------------------------------------------------- +;; System BIOS Configuration Table +;; -------------------------------------------------------- + BIOSORG_CHECK 0E6F5h ; fixed wrt preceding +; must match BIOS_CONFIG_TABLE +bios_cfg_table: + dw 9 ; table size in bytes + db SYS_MODEL_ID + db SYS_SUBMODEL_ID + db BIOS_REVISION + ; Feature byte 1 + ; b7: 1=DMA channel 3 used by hard disk + ; b6: 1=2 interrupt controllers present + ; b5: 1=RTC present + ; b4: 1=BIOS calls int 15h/4Fh for every key + ; b3: 1=wait for extern event supported (Int 15h/41h) + ; b2: 1=extended BIOS data area used + ; b1: 0=AT or ESDI bus, 1=MicroChannel + ; b0: 1=Dual bus (MicroChannel + ISA) +ifdef BX_CALL_INT15_4F + db 74h; or USE_EBDA +else + db 64h; or USE_EBDA +endif + ; Feature byte 2 + ; b7: 1=32-bit DMA supported + ; b6: 1=int16h, function 9 supported + ; b5: 1=int15h/C6h (get POS data) supported + ; b4: 1=int15h/C7h (get mem map info) supported + ; b3: 1=int15h/C8h (en/dis CPU) supported + ; b2: 1=non-8042 kb controller + ; b1: 1=data streaming supported + ; b0: reserved + db 40h + ; Feature byte 3 + ; b7: not used + ; b6: reserved + ; b5: reserved + ; b4: POST supports ROM-to-RAM enable/disable + ; b3: SCSI on system board + ; b2: info panel installed + ; b1: Initial Machine Load (IML) system - BIOS on disk + ; b0: SCSI supported in IML + db 0 + ; Feature byte 4 + ; b7: IBM private + ; b6: EEPROM present + ; b5-3: ABIOS presence (011 = not supported) + ; b2: private + ; b1: memory split above 16Mb supported + ; b0: POSTEXT directly supported by POST + db 0 + ; Feature byte 5 (IBM) + ; b1: enhanced mouse + ; b0: flash EPROM + db 0 + + +;; -------------------------------------------------------- +;; Baud Rate Generator Table +;; -------------------------------------------------------- + BIOSORG 0E729h, 0E727h + + +;; -------------------------------------------------------- +;; INT 14h handler - Serial Communication Service +;; -------------------------------------------------------- + BIOSORG 0E739h, 0E737h +int14_handler: + push ds + push es + DO_pusha + C_SETUP + call _int14_function + DO_popa + pop es + pop ds + iret + + + +;; +;; Handler for unexpected hardware interrupts +;; +dummy_isr: + push ds + push es + DO_pusha + C_SETUP + call _dummy_isr_function + DO_popa + pop es + pop ds + iret + + +init_pic proc near + + mov al, 11h ; send init commands + out PIC_MASTER, al + out PIC_SLAVE, al + mov al, 08h ; base 08h + out PIC_MASTER+1, al + mov al, 70h ; base 70h + out PIC_SLAVE+1, al + mov al, 04h ; master PIC + out PIC_MASTER+1, al + mov al, 02h ; slave PIC + out PIC_SLAVE+1, al + mov al, 01h + out PIC_MASTER+1, al + out PIC_SLAVE+1, al + mov al, 0B8h ; unmask IRQs 0/1/2/6 + out PIC_MASTER+1, al + mov al, 08Fh + out PIC_SLAVE+1, al ; unmask IRQs 12/13/14 + ret + +init_pic endp + +ebda_post proc near + + SET_INT_VECTOR 0Dh, BIOSSEG, dummy_isr ; IRQ 5 + SET_INT_VECTOR 0Fh, BIOSSEG, dummy_isr ; IRQ 7 + SET_INT_VECTOR 72h, BIOSSEG, dummy_isr ; IRQ 10 + SET_INT_VECTOR 73h, BIOSSEG, dummy_isr ; IRQ 11 + SET_INT_VECTOR 77h, BIOSSEG, dummy_isr ; IRQ 15 + + mov ax, EBDA_SEG + mov ds, ax + mov byte ptr ds:[0], EBDA_SIZE + ;; store EBDA seg in 40:0E + xor ax, ax + mov ds, ax + mov word ptr ds:[40Eh], EBDA_SEG + ret + +ebda_post endp + + + +;; -------------------------------------------------------- +;; INT 16h handler - Keyboard service +;; -------------------------------------------------------- + BIOSORG 0E82Eh, 0E82Ch +int16_handler: + sti + ;; Flags are saved *after* enabling interrupts, and with + ;; implicitly cleared TF. Software may depend on that. + pushf + push es + push ds + DO_pusha + + cmp ah, 0 + je int16_F00 + + cmp ah, 10h + je int16_F00 + + C_SETUP + call _int16_function + DO_popa + pop ds + pop es + add sp, 2 ; Skip saved flags + iret + +int16_F00: + mov bx, 40h ; TODO: why 40h here and 0 elsewhere? + mov ds, bx +int16_wait_for_key: + cli + mov bx, ds:[1Ah] + cmp bx, ds:[1Ch] + jne int16_key_found + sti + nop +; TODO: review/enable? +if 0 + push ax + mov ax, 9002h + int 15h + pop ax +endif + jmp int16_wait_for_key + +int16_key_found: + C_SETUP + call _int16_function + DO_popa + pop ds + pop es + add sp, 2 ; Skip saved flags +; TODO: review/enable? If so, flags should be restored here? +if 0 + push ax + mov ax, 9202h + int 15h + pop ax +endif + iret + + +if VBOX_BIOS_CPU ge 80386 +;; Quick and dirty protected mode entry/exit routines +include pmode.inc + +;; Initialization code which needs to run in protected mode (LAPIC etc.) +include pmsetup.inc +endif + + +;; -------------------------------------------------------- +;; INT 09h handler - Keyboard ISR (IRQ 1) +;; -------------------------------------------------------- + BIOSORG 0E987h, 0E985h +int09_handler: + cli ; TODO: why? they're off already! + push ax + mov al, KBDC_DISABLE + out KBC_CMD, al + + in al, KBC_DATA + push ds + DO_pusha + cld ; Before INT 15h (and any C code) +ifdef BX_CALL_INT15_4F + mov ah, 4Fh + stc + int 15h ; keyboard intercept + jnc int09_done +endif + sti ; Only after calling INT 15h + + ;; check for extended key + cmp al, 0E0h + jne int09_check_pause + xor ax, ax + mov ds, ax + or byte ptr ds:[496h], 2 ; mf2_state |= 0x02 + jmp int09_done + +int09_check_pause: + cmp al, 0E1h ; pause key? + jne int09_process_key + xor ax, ax + mov ds, ax + or byte ptr ds:[496h], 1 ; mf2_state | 0x01 + jmp int09_done + +int09_process_key: + push es + C_SETUP + call _int09_function + pop es + +int09_done: + DO_popa + pop ds + cli + call eoi_master_pic + + mov al, KBDC_ENABLE + out KBC_CMD, al + pop ax + iret + + +;; -------------------------------------------------------- +;; INT 06h handler - Invalid Opcode Exception +;; -------------------------------------------------------- + +int06_handler: + DO_pusha + push es + push ds + C_SETUP + call _inv_op_handler + pop ds + pop es + DO_popa + iret + +;; -------------------------------------------------------- +;; INT 13h handler - Diskette service +;; -------------------------------------------------------- + BIOSORG 0EC59h, 0EC57h +int13_diskette: + jmp int13_noeltorito + + + +;; -------------------------------------------------------- +;; INT 13h handler - Disk service +;; -------------------------------------------------------- +int13_relocated: + ;; check for an El-Torito function + cmp ah, 4Ah + jb int13_not_eltorito + + cmp ah, 4Dh + ja int13_not_eltorito + + DO_pusha + push es + push ds + C_SETUP ; TODO: setup C envrionment only once? + DO_JMP_CALL_EX _int13_eltorito, int13_out, jmp_call_ret_int13_out ; ELDX not used +if VBOX_BIOS_CPU eq 8086 +jmp_call_ret_int13_out: dw offset int13_out +endif + +int13_not_eltorito: + push es + push ax ; TODO: better register save/restore + push bx + push cx + push dx + + ;; check if emulation is active + call _cdemu_isactive + cmp al, 0 + je int13_cdemu_inactive + + ;; check if access to the emulated drive + call _cdemu_emulated_drive + pop dx ; recover dx (destroyed by C code) + push dx + cmp al, dl ; INT 13h on emulated drive + jne int13_nocdemu + + pop dx + pop cx + pop bx + pop ax + pop es + + DO_pusha + push es + push ds + C_SETUP ; TODO: setup environment only once? + + DO_JMP_CALL_EX _int13_cdemu, int13_out, jmp_call_ret_int13_out ; ELDX not used + +int13_nocdemu: + and dl, 0E0h ; mask to get device class + cmp al, dl + jne int13_cdemu_inactive + + pop dx + pop cx + pop bx + pop ax + pop es + + push ax + push cx + push dx + push bx + + dec dl ; real drive is dl - 1 + jmp int13_legacy + +int13_cdemu_inactive: + pop dx + pop cx + pop bx + pop ax + pop es + +int13_noeltorito: + push ax + push cx + push dx + push bx +int13_legacy: + push dx ; push eltorito dx in place of sp + push bp + push si + push di + push es + push ds + C_SETUP ; TODO: setup environment only once? + + ;; now the registers can be restored with + ;; pop ds; pop es; DO_popa; iret + test dl, 80h ; non-removable? + jnz int13_notfloppy + + DO_JMP_CALL_EX _int13_diskette_function, int13_out, jmp_call_ret_int13_out + +int13_notfloppy: + cmp dl, 0E0h + jb int13_notcdrom + + ;; ebx may be modified, save here + ;; TODO: check/review 32-bit register use + ;; @todo figure if 80286/8086 variant is applicable. + .386 + shr ebx, 16 + push bx + call _int13_cdrom + pop bx + shl ebx, 16 + SET_DEFAULT_CPU_286 + jmp int13_out + +int13_notcdrom: +int13_disk: + cmp ah,40h + ja int13x + call _int13_harddisk + jmp int13_out + +int13x: + call _int13_harddisk_ext + +int13_out: + pop ds + pop es + DO_popa + iret + + + +; parallel port detection: port in dx, index in bx, timeout in cl +detect_parport proc near + + push dx + inc dx + inc dx + in al, dx + and al, 0DFh ; clear input mode + out dx, al + pop dx + mov al, 0AAh + out dx, al + in al, dx + cmp al, 0AAh + jne no_parport + + push bx + shl bx, 1 + mov [bx+408h], dx ; parallel I/O address + pop bx + mov [bx+478h], cl ; parallel printer timeout + inc bx +no_parport: + ret + +detect_parport endp + +; setial port detection: port in dx, index in bx, timeout in cl +detect_serial proc near + + push dx + inc dx + mov al, 2 + out dx, al + in al, dx + cmp al, 2 + jne no_serial + + inc dx + in al, dx + cmp al, 2 + jne no_serial + + dec dx + xor al, al + pop dx + push bx + shl bx, 1 + mov [bx+400h], dx ; serial I/O address + pop bx + mov [bx+47Ch], cl ; serial timeout + inc bx + ret + +no_serial: + pop dx + ret + +detect_serial endp + + +;; +;; POST: Floppy drive +;; +floppy_post proc near + + xor ax, ax + mov ds, ax + + ;; TODO: This code is really stupid. Zeroing the BDA byte + ;; by byte is dumb, and it's been already zeroed elsewhere! + mov al, 0 + mov ds:[43Eh], al ; drive 0/1 uncalibrated, no IRQ + mov ds:[43Fh], al ; motor status + mov ds:[440h], al ; motor timeout counter + mov ds:[441h], al ; controller status return code + mov ds:[442h], al ; hd/floppy ctlr status register + mov ds:[443h], al ; controller status register 1 + mov ds:[444h], al ; controller status register 2 + mov ds:[445h], al ; cylinder number + mov ds:[446h], al ; head number + mov ds:[447h], al ; sector number + mov ds:[448h], al ; bytes written + + mov ds:[48Bh], al ; configuration data + + mov al, 10h ; floppy drive type + out CMOS_ADDR, al + in al, CMOS_DATA + mov ah, al ; save drive type byte + +look_drive0: + ; TODO: pre-init bl to reduce jumps + DO_shr al, 4 ; drive 0 in high nibble + jz f0_missing ; jump if no drive + mov bl, 7 ; drv0 determined, multi-rate, chgline + jmp look_drive1 + +f0_missing: + mov bl, 0 ; no drive 0 + +look_drive1: + mov al, ah ; restore CMOS data + and al, 0Fh ; drive 1 in low nibble + jz f1_missing + or bl, 70h ; drv1 determined, multi-rate, chgline +f1_missing: + mov ds:[48Fh], bl ; store in BDA + + ;; TODO: See above. Dumb *and* redundant! + mov al, 0 + mov ds:[490h], al ; drv0 media state + mov ds:[491h], al ; drv1 media state + mov ds:[492h], al ; drv0 operational state + mov ds:[493h], al ; drv1 operational state + mov ds:[494h], al ; drv0 current cylinder + mov ds:[495h], al ; drv1 current cylinder + + mov al, 2 + out 0Ah, al ; unmask DMA channel 2 + + SET_INT_VECTOR 1Eh, BIOSSEG, _diskette_param_table + SET_INT_VECTOR 40h, BIOSSEG, int13_diskette + SET_INT_VECTOR 0Eh, BIOSSEG, int0e_handler ; IRQ 6 + + ret + +floppy_post endp + + +bcd_to_bin proc near + + ;; in : AL in packed BCD format + ;; out: AL in binary, AH always 0 +if VBOX_BIOS_CPU ge 80186 + shl ax, 4 + shr al, 4 +else + push cx + mov cl, 4 + shl ax, cl + shr al, cl + pop cx +endif + aad + ret + +bcd_to_bin endp + +rtc_post proc near + +if VBOX_BIOS_CPU lt 80386 ;; @todo fix loopy code below + ;; get RTC seconds + mov al, 0 + out CMOS_ADDR, al + in al, CMOS_DATA ; RTC seconds, in BCD + call bcd_to_bin ; ax now has seconds in binary + test al, al + xor ah, ah + mov dx, 0x1234 ; 18206507*0x100/1000000 = 0x1234 (4660.865792) + mul dx + mov cx, ax ; tick count in dx:cx + + ;; get RTC minutes + mov al, 2 + out CMOS_ADDR, al + in al, CMOS_DATA ; RTC minutes, in BCD + call bcd_to_bin ; eax now has minutes in binary + test al, al + jz rtc_post_hours +rtc_pos_min_loop: ; 18206507*60*0x100/1000000 = 0x44463 (279651.94752) + add cx, 0x4463 + adc dx, 0x0004 + dec al + jnz rtc_pos_min_loop + + ;; get RTC hours +rtc_post_hours: + mov al, 4 + out CMOS_ADDR, al + in al, CMOS_DATA ; RTC hours, in BCD + call bcd_to_bin ; eax now has hours in binary + test al, al + jz rtc_pos_shift +rtc_pos_hour_loop: ; 18206507*3600*0x100/1000000 = 0x100076C (16779116.8512) + add cx, 0x076C + adc dx, 0x0100 + dec al + jnz rtc_pos_hour_loop + +rtc_pos_shift: + mov cl, ch + mov ch, dl + mov dl, dh + xor dh, dh + mov ds:[46Ch], cx ; timer tick count + mov ds:[46Ch+2], dx ; timer tick count + mov ds:[470h], dh ; rollover flag + +else + .386 + ;; get RTC seconds + xor eax, eax + mov al, 0 + out CMOS_ADDR, al + in al, CMOS_DATA ; RTC seconds, in BCD + call bcd_to_bin ; eax now has seconds in binary + mov edx, 18206507 + mul edx + mov ebx, 1000000 + xor edx, edx + div ebx + mov ecx, eax ; total ticks in ecx + + ;; get RTC minutes + xor eax, eax + mov al, 2 + out CMOS_ADDR, al + in al, CMOS_DATA ; RTC minutes, in BCD + call bcd_to_bin ; eax now has minutes in binary + mov edx, 10923904 + mul edx + mov ebx, 10000 + xor edx, edx + div ebx + add ecx, eax ; add to total ticks + + ;; get RTC hours + xor eax, eax + mov al, 4 + out CMOS_ADDR, al + in al, CMOS_DATA ; RTC hours, in BCD + call bcd_to_bin ; eax now has hours in binary + mov edx, 65543427 + mul edx + mov ebx, 1000 + xor edx, edx + div ebx + add ecx, eax ; add to total ticks + + mov ds:[46Ch], ecx ; timer tick count + xor al, al ; TODO: redundant? + mov ds:[470h], al ; rollover flag + .286 +endif + ret + +rtc_post endp + + + +;; -------------------------------------------------------- +;; INT 0Eh handler - Diskette IRQ 6 ISR +;; -------------------------------------------------------- + BIOSORG 0EF57h, 0EF55h +int0e_handler: + push ax + push dx + mov dx, 3F4h + in al, dx + and al, 0C0h + cmp al, 0C0h + je int0e_normal + mov dx, 3F5h + mov al, 08h ; sense interrupt + out dx, al +int0e_loop1: + mov dx, 3F4h ; TODO: move out of the loop? + in al, dx + and al, 0C0h + cmp al, 0C0h + jne int0e_loop1 + +int0e_loop2: + mov dx, 3F5h ; TODO: inc/dec dx instead + in al, dx + mov dx, 3F4h + in al, dx + and al, 0C0h + cmp al, 0C0h + je int0e_loop2 + +int0e_normal: + push ds + xor ax, ax + mov ds, ax + call eoi_master_pic + ; indicate that an interrupt occurred + or byte ptr ds:[43Eh], 80h + pop ds + pop dx + pop ax + iret + + +;; -------------------------------------------------------- +;; Diskette Parameter Table +;; -------------------------------------------------------- + BIOSORG 0EFC7h, 0EFC5h +_diskette_param_table: + db 0AFh + db 2 ; HLT=1, DMA mode + db 025h + db 2 + db 18 ; SPT (good for 1.44MB media) + db 01Bh + db 0FFh + db 06Ch + db 0F6h ; format filler + db 15 + db 8 + + + +;; -------------------------------------------------------- +;; INT 17h handler - Printer service +;; -------------------------------------------------------- + BIOSORG_CHECK 0EFD2h ; fixed WRT preceding code + + jmp int17_handler ; NT floppy boot workaround + ; see @bugref{6481} +int17_handler: + push ds + push es + DO_pusha + C_SETUP + call _int17_function + DO_popa + pop es + pop ds + iret + + + +;; Protected mode IDT descriptor +;; +;; The limit is 0 to cause a shutdown if an exception occurs +;; in protected mode. TODO: Is that what we really want? +;; +;; Set base to F0000 to correspond to beginning of BIOS, +;; in case an IDT is defined later. + +_pmode_IDT: + dw 0 ; limit 15:0 + dw 0 ; base 15:0 + dw 0Fh ; base 23:16 + + +;; Real mode IDT descriptor +;; +;; Set to typical real-mode values. +;; base = 000000 +;; limit = 03ff + +_rmode_IDT: + dw 3FFh ; limit 15:00 + dw 0 ; base 15:00 + dw 0 ; base 23:16 + + +;; +;; INT 1Ch +;; +;; TODO: Why does this need a special handler? +int1c_handler: ;; user timer tick + iret + + + +;; -------------------------------------------------------- +;; INT 10h functions 0-Fh entry point +;; -------------------------------------------------------- + BIOSORG 0F045h, 0F043h +i10f0f_entry: + iret + + +;; -------------------------------------------------------- +;; INT 10h handler - MDA/CGA video +;; -------------------------------------------------------- + BIOSORG 0F065h, 0F063h +int10_handler: + ;; do nothing - assumes VGA + iret + + +;; -------------------------------------------------------- +;; MDA/CGA Video Parameter Table (INT 1Dh) +;; -------------------------------------------------------- + BIOSORG 0F0A4h, 0F0A2h +mdacga_vpt: + + +;; +;; INT 18h - boot failure +;; +int18_handler: + C_SETUP + call _int18_panic_msg + ;; TODO: handle failure better? + hlt + iret + +;; +;; INT 19h - boot service - relocated +;; +int19_relocated: +; If an already booted OS calls int 0x19 to reboot, it is not sufficient +; just to try booting from the configured drives. All BIOS variables and +; interrupt vectors need to be reset, otherwise strange things may happen. +; The approach used is faking a warm reboot (which just skips showing the +; logo), which is a bit more than what we need, but hey, it's fast. + mov bp, sp + mov ax, [bp+2] ; TODO: redundant? address via sp? + cmp ax, BIOSSEG ; check caller's segment + jz bios_initiated_boot + + xor ax, ax + mov ds, ax + mov ax, 1234h + mov ds:[472], ax + jmp post + +bios_initiated_boot: + ;; The C worker function returns the boot drive in bl and + ;; the boot segment in ax. In case of failure, the boot + ;; segment will be zero. + C_SETUP ; TODO: Here? Now? + push bp + mov bp, sp + + ;; 1st boot device + mov ax, 1 + push ax + call _int19_function + inc sp + inc sp + test ax, ax ; if 0, try next device + jnz boot_setup + + ;; 2nd boot device + mov ax, 2 + push ax + call _int19_function + inc sp + inc sp + test ax, ax ; if 0, try next device + jnz boot_setup + + ; 3rd boot device + mov ax, 3 + push ax + call _int19_function + inc sp + inc sp + test ax, ax ; if 0, try next device + jnz boot_setup + + ; 4th boot device + mov ax, 4 + push ax + call _int19_function + inc sp + inc sp + test ax, ax ; if 0, invoke INT 18h + jz int18_handler + +boot_setup: +; TODO: the drive should be in dl already?? +;; mov dl, bl ; tell guest OS what boot drive is +if VBOX_BIOS_CPU lt 80386 + mov [bp], ax + DO_shl ax, 4 + mov [bp+2], ax ; set ip + mov ax, [bp] +else + .386 ; NB: We're getting garbage into high eax bits + shl eax, 4 ; convert seg to ip + mov [bp+2], ax ; set ip + + shr eax, 4 ; get cs back + .286 +endif + and ax, BIOSSEG ; remove what went in ip + mov [bp+4], ax ; set cs + xor ax, ax + mov ds, ax + mov es, ax + mov [bp], ax ; TODO: what's this?! + mov ax, 0AA55h ; set ok flag ; TODO: and this? + + pop bp ; TODO: why'd we just zero it?? + iret ; beam me up scotty + +;; PCI BIOS + +include pcibios.inc +include pirq.inc + + +;; -------------------------------------------------------- +;; INT 12h handler - Memory size +;; -------------------------------------------------------- + BIOSORG 0F841h, 0F83Fh +int12_handler: + ;; Don't touch - fixed size! + sti + push ds + mov ax, 40h + mov ds, ax + mov ax, ds:[13h] + pop ds + iret + + +;; -------------------------------------------------------- +;; INT 11h handler - Equipment list service +;; -------------------------------------------------------- + BIOSORG_CHECK 0F84Dh ; fixed wrt preceding code +int11_handler: + ;; Don't touch - fixed size! + sti + push ds + mov ax, 40h + mov ds, ax + mov ax, ds:[10h] + pop ds + iret + + +;; -------------------------------------------------------- +;; INT 15h handler - System services +;; -------------------------------------------------------- + BIOSORG_CHECK 0F859h ; fixed wrt preceding code +int15_handler: + +if VBOX_BIOS_CPU ge 80286 + cmp ah, 87h + jne not_blkmove + + ;; INT 15h/87h has semi-public interface because software + ;; may use CMOS shutdown status code 9 for its own purposes. + ;; The stack layout has to match. + pusha + push es + push ds + C_SETUP + call _int15_blkmove + pop ds + pop es + popa + iret +not_blkmove: + +endif + + pushf + push ds + push es + C_SETUP +if VBOX_BIOS_CPU ge 80386 + ;; int15_function32 exists in 386+ BIOS only, but INT 15h is + ;; not 386-specific + cmp ah, 0E8h + je int15_handler32 + cmp ah, 0d0h + je int15_handler32 +endif + DO_pusha + cmp ah, 53h ; APM function? + je apm_call + cmp ah, 0C2h ; PS/2 mouse function? + je int15_handler_mouse + + call _int15_function +int15_handler_popa_ret: + DO_popa +if VBOX_BIOS_CPU ge 80386 +int15_handler32_ret: +endif + pop es + pop ds + popf + jmp iret_modify_cf + +apm_call: + call _apm_function + jmp int15_handler_popa_ret + +int15_handler_mouse: + call _int15_function_mouse + jmp int15_handler_popa_ret + +if VBOX_BIOS_CPU ge 80386 +int15_handler32: + ;; need to save/restore 32-bit registers + .386 + pushad + call _int15_function32 + popad + .286 + jmp int15_handler32_ret +endif + +;; +;; Perform an IRET but retain the current carry flag value +;; +iret_modify_cf: + jc carry_set + push bp + mov bp, sp + and byte ptr [bp + 6], 0FEh + or word ptr [bp + 6], 0200h + pop bp + iret +carry_set: + push bp + mov bp, sp + or word ptr [bp + 6], 0201h + pop bp + iret + +;; +;; INT 74h handler - PS/2 mouse (IRQ 12) +;; +int74_handler proc + + sti + DO_pusha + push es + push ds + xor ax, ax + push ax ; placeholder for status + push ax ; placeholder for X + push ax ; placeholder for Y + push ax ; placeholder for Z + push ax ; placeholder for make_far_call bool + C_SETUP + call _int74_function + pop cx ; pop make_far_call flag + jcxz int74_done + + ;; make far call to EBDA:0022 +if VBOX_BIOS_CPU ge 80186 + push 0 +else + xor ax, ax + push ax +endif + pop ds + push ds:[40Eh] + pop ds + call far ptr ds:[22h] +int74_done: + cli + call eoi_both_pics + add sp, 8 ; remove status, X, Y, Z + pop ds + pop es + DO_popa + iret + +int74_handler endp + +int76_handler proc + + ;; record completion in BIOS task complete flag + push ax + push ds + mov ax, 40h + mov ds, ax + mov byte ptr ds:[8Eh], 0FFh + call eoi_both_pics + pop ds + pop ax + iret + +int76_handler endp + + +;; +;; IRQ 8 handler (RTC) +;; +int70_handler: + push es + push ds + DO_pusha + C_SETUP + call _int70_function + DO_popa + pop ds + pop es + iret + + + +if VBOX_BIOS_CPU lt 80386 +; +; We're tight on space down below in the int08_handler, so put +; the 16-bit rollover code here. +; +int08_maybe_rollover: + ja int08_rollover + cmp ax, 00B0h + jb int08_rollover_store + ;; there has been a midnight rollover +int08_rollover: + xor dx, dx + xor ax, ax + + inc byte ptr ds:[70h] ; increment rollover flag +int08_rollover_store: + jmp int08_store_ticks +endif + + +;; -------------------------------------------------------- +;; 8x8 font (first 128 characters) +;; -------------------------------------------------------- + BIOSORG 0FA6Eh, 0FA6Ch +include font8x8.inc + + +;; -------------------------------------------------------- +;; INT 1Ah handler - Time of the day + PCI BIOS +;; -------------------------------------------------------- + BIOSORG_CHECK 0FE6Eh ; fixed wrt preceding table +int1a_handler: +if VBOX_BIOS_CPU ge 80386 + cmp ah, 0B1h + jne int1a_normal + + push es + push ds + C_SETUP + .386 + pushad + call _pci16_function + popad + .286 + pop ds + pop es + iret +endif + +int1a_normal: + push es + push ds + DO_pusha + C_SETUP +int1a_callfunction: + call _int1a_function + DO_popa + pop ds + pop es + iret + + +;; -------------------------------------------------------- +;; Timer tick - IRQ 0 handler +;; -------------------------------------------------------- + BIOSORG 0FEA5h, 0FEA3h +int08_handler: +if VBOX_BIOS_CPU ge 80386 + .386 + sti + push eax +else + sti + push ax +endif + push ds + push dx + mov ax, 40h + mov ds, ax + +if VBOX_BIOS_CPU ge 80386 + mov eax, ds:[6Ch] ; get ticks dword + inc eax +else + mov ax, ds:[6Ch] ; get ticks dword + mov dx, ds:[6Ch+2] + inc ax ; inc+jz+inc saves two bytes over add+adc. + jnz int08_compare + inc dx +int08_compare: +endif + + ;; compare eax to one day's worth of ticks (at 18.2 Hz) +if VBOX_BIOS_CPU ge 80386 + cmp eax, 1800B0h + jb int08_store_ticks +else + cmp dx, 18h + jb int08_store_ticks + jmp int08_maybe_rollover +endif + +if VBOX_BIOS_CPU ge 80386 + ;; there has been a midnight rollover + xor eax, eax + inc byte ptr ds:[70h] ; increment rollover flag + +int08_store_ticks: + mov ds:[6Ch], eax +else +int08_store_ticks: + mov ds:[6Ch], ax + mov ds:[6Ch+2], dx +endif + + ;; time to turn off floppy drive motor(s)? + mov al, ds:[40h] + or al, al + jz int08_floppy_off + dec al + mov ds:[40h], al + jnz int08_floppy_off + ;; turn motor(s) off + mov dx, 03F2h + in al, dx + and al, 0CFh + out dx, al +int08_floppy_off: + + int 1Ch ; call the user timer handler + + cli + call eoi_master_pic + pop dx + pop ds +if VBOX_BIOS_CPU ge 80386 + pop eax + .286 +else + pop ax +endif + iret + + +;; -------------------------------------------------------- +;; Initial interrupt vector offsets for POST +;; -------------------------------------------------------- + BIOSORG 0FEF3h, 0FEF1h +vector_table: + + + +;; -------------------------------------------------------- +;; BIOS copyright string +;; -------------------------------------------------------- + BIOSORG 0FF00h, 0FEFEh +bios_string: + db BIOS_COPYRIGHT + + +;; -------------------------------------------------------- +;; IRET - default interrupt handler +;; -------------------------------------------------------- + BIOSORG 0FF53h, 0FF51h + +dummy_iret: + iret + + +;; -------------------------------------------------------- +;; INT 05h - Print Screen service +;; -------------------------------------------------------- + BIOSORG_CHECK 0FF54h ; fixed wrt preceding +int05_handler: + ;; Not implemented + iret + +include smidmi.inc + +;; -------------------------------------------------------- +;; Processor reset entry point +;; -------------------------------------------------------- + BIOSORG 0FFF0h, 0FFEEh +cpu_reset: + ;; This is where the CPU starts executing after a reset + jmp far ptr post + + ;; BIOS build date + db BIOS_BUILD_DATE + db 0 ; padding + ;; System model ID + db SYS_MODEL_ID + ;; Checksum byte + db 0FFh + + +BIOSSEG ends + + end + diff --git a/src/VBox/Devices/PC/BIOS/parallel.c b/src/VBox/Devices/PC/BIOS/parallel.c new file mode 100644 index 00000000..9dfd289f --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/parallel.c @@ -0,0 +1,91 @@ +/* $Id: parallel.c $ */ +/** @file + * PC BIOS - ??? + */ + +/* + * Copyright (C) 2006-2019 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * -------------------------------------------------------------------- + * + * This code is based on: + * + * ROM BIOS for use with Bochs/Plex86/QEMU emulation environment + * + * Copyright (C) 2002 MandrakeSoft S.A. + * + * MandrakeSoft S.A. + * 43, rue d'Aboukir + * 75002 Paris - France + * http://www.linux-mandrake.com/ + * http://www.mandrakesoft.com/ + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +/* + * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice + * other than GPL or LGPL is available it will apply instead, Oracle elects to use only + * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where + * a choice of LGPL license versions is made available with the language indicating + * that LGPLv2 or any later version may be used, or where a choice of which version + * of the LGPL is applied is otherwise unspecified. + */ + + +#include <stdint.h> +#include "biosint.h" +#include "inlines.h" + +void BIOSCALL int17_function(pusha_regs_t regs, uint16_t es, uint16_t ds, volatile iret_addr_t iret_addr) +{ + uint16_t addr,timeout; + uint8_t val8; + + int_enable(); + + addr = read_word(0x0040, (regs.u.r16.dx << 1) + 8); + if ((regs.u.r8.ah < 3) && (regs.u.r16.dx < 3) && (addr > 0)) { + timeout = read_byte(0x0040, 0x0078 + regs.u.r16.dx) << 8; + if (regs.u.r8.ah == 0) { + outb(addr, regs.u.r8.al); + val8 = inb(addr+2); + outb(addr+2, val8 | 0x01); // send strobe + outb(addr+2, val8 & ~0x01); + while (((inb(addr+1) & 0x40) == 0x40) && (timeout)) { + timeout--; + } + } + if (regs.u.r8.ah == 1) { + val8 = inb(addr+2); + outb(addr+2, val8 & ~0x04); // send init + outb(addr+2, val8 | 0x04); + } + val8 = inb(addr+1); + regs.u.r8.ah = (val8 ^ 0x48); + if (!timeout) regs.u.r8.ah |= 0x01; + ClearCF(iret_addr.flags); + } else { + SetCF(iret_addr.flags); // Unsupported + } +} diff --git a/src/VBox/Devices/PC/BIOS/pci32.c b/src/VBox/Devices/PC/BIOS/pci32.c new file mode 100644 index 00000000..eb05df64 --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/pci32.c @@ -0,0 +1,22 @@ +/* $Id: pci32.c $ */ +/** @file + * 32-bit PCI BIOS wrapper. + */ + +/* + * Copyright (C) 2004-2019 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + */ + +#ifndef __386__ +#error This file must be compiled as 32-bit! +#endif + +#include "pcibios.c" diff --git a/src/VBox/Devices/PC/BIOS/pcibio32.asm b/src/VBox/Devices/PC/BIOS/pcibio32.asm new file mode 100644 index 00000000..b423c588 --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/pcibio32.asm @@ -0,0 +1,98 @@ +; $Id: pcibio32.asm $ +;; @file +; BIOS32 service directory and 32-bit PCI BIOS entry point +; + +; +; Copyright (C) 2006-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; -------------------------------------------------------------------- + + +; Public symbols for debugging only +public pcibios32_entry +public bios32_service + +; The BIOS32 service directory header must be located in the E0000h-FFFF0h +; range on a paragraph boundary. Note that the actual 32-bit code need not +; be located below 1MB at all. + +_DATA segment public 'DATA' + +align 16 +bios32_directory: + db '_32_' ; ASCII signature + dw bios32_service ; Entry point address... + dw 000Fh ; ...hardcoded to F000 segment + db 0 ; Revision + db 1 ; Length in paras - must be 1 + db 0 ; Checksum calculated later + db 5 dup(0) ; Unused, must be zero + +_DATA ends + +.386 + +extrn _pci32_function:near + +BIOS32 segment public 'CODE' use32 + +; +; The BIOS32 Service Directory - must be less than 4K in size (easy!). +; +bios32_service proc far + + pushfd + + cmp bl, 0 ; Only function 0 supported + jnz b32_bad_func + + cmp eax, 'ICP$' ; "$PCI" + mov al, 80h ; Unknown service + jnz b32_done + + mov ebx, 000f0000h ; Base address (linear) + mov ecx, 0f000h ; Length of service + mov edx, pcibios32_entry ; Entry point offset from base + xor al, al ; Indicate success +b32_done: + popfd + retf + +b32_bad_func: + mov al, 81h ; Unsupported function + jmp b32_done + +bios32_service endp + +; +; The 32-bit PCI BIOS entry point - simply calls into C code. +; +pcibios32_entry proc far + + pushfd ; Preserve flags + cld ; Just in case... + + push es ; Call into C implementation + pushad + call _pci32_function + popad + pop es + + popfd ; Restore flags and return + retf + +pcibios32_entry endp + + +BIOS32 ends + + end + diff --git a/src/VBox/Devices/PC/BIOS/pcibios.c b/src/VBox/Devices/PC/BIOS/pcibios.c new file mode 100644 index 00000000..7c33da8e --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/pcibios.c @@ -0,0 +1,408 @@ +/* $Id: pcibios.c $ */ +/** @file + * PCI BIOS support. + */ + +/* + * Copyright (C) 2004-2019 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + */ + +#include <stdint.h> +#include <string.h> +#include "biosint.h" +#include "inlines.h" + +#if DEBUG_PCI +# define BX_DEBUG_PCI(...) BX_DEBUG(__VA_ARGS__) +#else +# define BX_DEBUG_PCI(...) +#endif + +/* PCI function codes. */ +enum pci_func { + PCI_BIOS_PRESENT = 0x01, /* PCI BIOS presence check. */ + FIND_PCI_DEVICE = 0x02, /* Find PCI device by ID. */ + FIND_PCI_CLASS_CODE = 0x03, /* Find PCI device by class. */ + GEN_SPECIAL_CYCLE = 0x06, /* Generate special cycle. */ + READ_CONFIG_BYTE = 0x08, /* Read a byte from PCI config space. */ + READ_CONFIG_WORD = 0x09, /* Read a word from PCI config space. */ + READ_CONFIG_DWORD = 0x0A, /* Read a dword from PCI config space. */ + WRITE_CONFIG_BYTE = 0x0B, /* Write a byte to PCI config space. */ + WRITE_CONFIG_WORD = 0x0C, /* Write a word to PCI config space. */ + WRITE_CONFIG_DWORD = 0x0D, /* Write a dword to PCI config space. */ + GET_IRQ_ROUTING = 0x0E, /* Get IRQ routing table. */ + SET_PCI_HW_INT = 0x0F, /* Set PCI hardware interrupt. */ +}; + +enum pci_error { + SUCCESSFUL = 0x00, /* Success. */ + FUNC_NOT_SUPPORTED = 0x81, /* Unsupported function. */ + BAD_VENDOR_ID = 0x83, /* Bad vendor ID (all bits set) passed. */ + DEVICE_NOT_FOUND = 0x86, /* No matching device found. */ + BAD_REGISTER_NUMBER = 0x87, /* Register number out of range. */ + SET_FAILED = 0x88, /* Failed to set PCI interrupt. */ + BUFFER_TOO_SMALL = 0x89 /* Routing table buffer insufficient. */ +}; + +/// @todo merge with system.c +#define AX r.gr.u.r16.ax +#define BX r.gr.u.r16.bx +#define CX r.gr.u.r16.cx +#define DX r.gr.u.r16.dx +#define SI r.gr.u.r16.si +#define DI r.gr.u.r16.di +#define BP r.gr.u.r16.bp +#define SP r.gr.u.r16.sp +#define EAX r.gr.u.r32.eax +#define EBX r.gr.u.r32.ebx +#define ECX r.gr.u.r32.ecx +#define EDX r.gr.u.r32.edx +#define ES r.es + +/* The 16-bit PCI BIOS service must be callable from both real and protected + * mode. In protected mode, the caller must set the CS selector base to F0000h + * (but the CS selector value is not specified!). The caller does not always + * provide a DS which covers the BIOS segment. + * + * Unlike APM, there are no provisions for the 32-bit PCI BIOS interface + * calling the 16-bit implementation. + * + * The PCI Firmware Specification requires that the PCI BIOS service is called + * with at least 1,024 bytes of stack space available, that interrupts are not + * enabled during execution, and that the routines are re-entrant. + * + * Implementation notes: + * - The PCI BIOS interface already uses certain 32-bit registers even in + * 16-bit mode. To simplify matters, all 32-bit GPRs are saved/restored and + * may be used by helper routines (notably for 32-bit port I/O). + */ + +#define PCI_CFG_ADDR 0xCF8 +#define PCI_CFG_DATA 0xCFC + +#ifdef __386__ + +#define PCIxx(x) pci32_##x + +/* The stack layout is different in 32-bit mode. */ +typedef struct { + pushad_regs_t gr; + uint32_t es; + uint32_t flags; +} pci_regs_t; + +#define FLAGS r.flags + +/* In 32-bit mode, don't do any output; not technically impossible but needs + * a lot of extra code. + */ +#undef BX_INFO +#define BX_INFO(...) +#undef BX_DEBUG_PCI +#define BX_DEBUG_PCI(...) + +#else + +#define PCIxx(x) pci16_##x + +typedef struct { + pushad_regs_t gr; + uint16_t ds; + uint16_t es; + iret_addr_t ra; +} pci_regs_t; + +#define FLAGS r.ra.flags.u.r16.flags + +#endif + +#ifdef __386__ + +/* 32-bit code can just use the compiler intrinsics. */ +extern unsigned inpd(unsigned port); +extern unsigned outpd(unsigned port, unsigned value); +#pragma intrinsic(inpd,outpd) + +#else + +/// @todo merge with AHCI code + +/* Warning: Destroys high bits of EAX. */ +uint32_t inpd(uint16_t port); +#pragma aux inpd = \ + ".386" \ + "in eax, dx" \ + "mov dx, ax" \ + "shr eax, 16" \ + "xchg ax, dx" \ + parm [dx] value [dx ax] modify nomemory; + +/* Warning: Destroys high bits of EAX. */ +void outpd(uint16_t port, uint32_t val); +#pragma aux outpd = \ + ".386" \ + "xchg ax, cx" \ + "shl eax, 16" \ + "mov ax, cx" \ + "out dx, eax" \ + parm [dx] [cx ax] modify nomemory; + +#endif + +/* PCI IRQ routing expansion buffer descriptor. */ +typedef struct { + uint16_t buf_size; + uint8_t __far *buf_ptr; +} pci_route_buf; + +/* Defined in assembler module .*/ +extern char pci_routing_table[]; +extern uint16_t pci_routing_table_size; + +/* Write the CONFIG_ADDRESS register to prepare for data access. Requires + * the register offset to be DWORD aligned (low two bits clear). Warning: + * destroys high bits of EAX. + */ +void pci16_w_addr(uint16_t bus_dev_fn, uint16_t ofs, uint16_t cfg_addr); +#pragma aux pci16_w_addr = \ + ".386" \ + "movzx eax, ax" \ + "shl eax, 8" \ + "or eax, 80000000h" \ + "mov al, bl" \ + "out dx, eax" \ + parm [ax] [bx] [dx] modify exact [ax] nomemory; + + +/* Select a PCI configuration register given its offset and bus/dev/fn. + * This is largely a wrapper to avoid excessive inlining. + */ +void PCIxx(select_reg)(uint16_t bus_dev_fn, uint16_t ofs) +{ + pci16_w_addr(bus_dev_fn, ofs & ~3, PCI_CFG_ADDR); +} + +/* Selected configuration space offsets. */ +#define PCI_VEN_ID 0x00 +#define PCI_DEV_ID 0x02 +#define PCI_REV_ID 0x08 +#define PCI_CLASS_CODE 0x09 +#define PCI_HEADER_TYPE 0x0E +#define PCI_BRIDGE_SUBORD 0x1A + +/* To avoid problems with 16-bit code, we reserve the last possible + * bus/dev/fn combination (65,535). Upon reaching this location, the + * probing will end. + */ +#define BUSDEVFN_NOT_FOUND 0xFFFF + +/* In the search algorithm, we decrement the device index every time + * a matching device is found. If the requested device is indeed found, + * the index will have decremented down to -1/0xFFFF. + */ +#define INDEX_DEV_FOUND 0xFFFF + +/* Find a specified PCI device, either by vendor+device ID or class. + * If index is non-zero, the n-th device will be located. + * + * Note: This function is somewhat performance critical; since it may + * generate a high number of port I/O accesses, it can take a significant + * amount of time in cases where the caller is looking for a number of + * non-present devices. + */ +uint16_t PCIxx(find_device)(uint32_t search_item, uint16_t index, int search_class) +{ + uint32_t data; + uint16_t bus_dev_fn; + uint8_t max_bus; + uint8_t hdr_type; + uint8_t subordinate; + int step; + int found; + + if (search_class) { + BX_DEBUG_PCI("PCI: Find class %08lX index %u\n", + search_item, index); + } else + BX_DEBUG_PCI("PCI: Find device %04X:%04X index %u\n", + (uint16_t)search_item, (uint16_t)(search_item >> 16), index); + + bus_dev_fn = 0; /* Start at the beginning. */ + max_bus = 0; /* Initially assume primary bus only. */ + + do { + /* For the first function of a device, read the device's header type. + * If the header type has all bits set, there's no device. A PCI + * multi-function device must implement function 0 and the header type + * will be something other than 0xFF. If the header type has the high + * bit clear, there is a device but it's not multi-function, so we can + * skip probing the next 7 sub-functions. + */ + if ((bus_dev_fn & 7) == 0) { + PCIxx(select_reg)(bus_dev_fn, PCI_HEADER_TYPE); + hdr_type = inp(PCI_CFG_DATA + (PCI_HEADER_TYPE & 3)); + if (hdr_type == 0xFF) { + bus_dev_fn += 8; /* Skip to next device. */ + continue; + } + if (hdr_type & 0x80) + step = 1; /* MFD - try every sub-function. */ + else + step = 8; /* No MFD, go to next device after probing. */ + } + + /* If the header type indicates a bus, we're interested. The secondary + * and subordinate bus numbers will indicate which buses are present; + * thus we can determine the highest bus number. In the common case, + * there will be only the primary bus (i.e. bus 0) and we can avoid + * looking at the remaining 255 theoretically present buses. This check + * only needs to be done on the primary bus, since bridges must report + * all bridges potentially behind them. + */ + if ((hdr_type & 7) == 1 && (bus_dev_fn >> 8) == 0) { + /* Read the subordinate (last) bridge number. */ + PCIxx(select_reg)(bus_dev_fn, PCI_BRIDGE_SUBORD); + subordinate = inp(PCI_CFG_DATA + (PCI_BRIDGE_SUBORD & 3)); + if (subordinate > max_bus) + max_bus = subordinate; + } + + /* Select the appropriate register. */ + PCIxx(select_reg)(bus_dev_fn, search_class ? PCI_REV_ID : PCI_VEN_ID); + data = inpd(PCI_CFG_DATA); + found = 0; + + /* Only 3 bytes are compared for class searches. */ + if (search_class) + data >>= 8; + +#if 0 + BX_DEBUG_PCI("PCI: Data is %08lX @ %02X:%%02X:%01X\n", data, + bus_dev_fn >> 8, bus_dev_fn >> 3 & 31, bus_dev_fn & 7); +#endif + + if (data == search_item) + found = 1; + + /* If device was found but index is non-zero, decrement index and + * continue looking. If requested device was found, index will be -1! + */ + if (found && !index--) + break; + + bus_dev_fn += step; + } while ((bus_dev_fn >> 8) <= max_bus); + + if (index == INDEX_DEV_FOUND) + BX_DEBUG_PCI("PCI: Device found (%02X:%%02X:%01X)\n", bus_dev_fn >> 8, + bus_dev_fn >> 3 & 31, bus_dev_fn & 7); + + return index == INDEX_DEV_FOUND ? bus_dev_fn : BUSDEVFN_NOT_FOUND; +} + +void BIOSCALL PCIxx(function)(volatile pci_regs_t r) +{ + pci_route_buf __far *route_buf; + uint16_t device; + + BX_DEBUG_PCI("PCI: AX=%04X BX=%04X CX=%04X DI=%04X\n", AX, BX, CX, DI); + + SET_AH(SUCCESSFUL); /* Assume success. */ + CLEAR_CF(); + + switch (GET_AL()) { + case PCI_BIOS_PRESENT: + AX = 0x0001; /* Configuration mechanism #1 supported. */ + BX = 0x0210; /* Version 2.1. */ + /// @todo return true max bus # in CL + CX = 0; /* Maximum bus number. */ + EDX = 'P' | ('C' << 8) | ((uint32_t)'I' << 16) | ((uint32_t)' ' << 24); + break; + case FIND_PCI_DEVICE: + /* Vendor ID FFFFh is reserved so that non-present devices can + * be easily detected. + */ + if (DX == 0xFFFF) { + SET_AH(BAD_VENDOR_ID); + SET_CF(); + } else { + device = PCIxx(find_device)(DX | (uint32_t)CX << 16, SI, 0); + if (device == BUSDEVFN_NOT_FOUND) { + SET_AH(DEVICE_NOT_FOUND); + SET_CF(); + } else { + BX = device; + } + } + break; + case FIND_PCI_CLASS_CODE: + device = PCIxx(find_device)(ECX, SI, 1); + if (device == BUSDEVFN_NOT_FOUND) { + SET_AH(DEVICE_NOT_FOUND); + SET_CF(); + } else { + BX = device; + } + break; + case READ_CONFIG_BYTE: + case READ_CONFIG_WORD: + case READ_CONFIG_DWORD: + case WRITE_CONFIG_BYTE: + case WRITE_CONFIG_WORD: + case WRITE_CONFIG_DWORD: + if (DI >= 256) { + SET_AH(BAD_REGISTER_NUMBER); + SET_CF(); + } else { + PCIxx(select_reg)(BX, DI); + switch (GET_AL()) { + case READ_CONFIG_BYTE: + SET_CL(inp(PCI_CFG_DATA + (DI & 3))); + break; + case READ_CONFIG_WORD: + CX = inpw(PCI_CFG_DATA + (DI & 2)); + break; + case READ_CONFIG_DWORD: + ECX = inpd(PCI_CFG_DATA); + break; + case WRITE_CONFIG_BYTE: + outp(PCI_CFG_DATA + (DI & 3), GET_CL()); + break; + case WRITE_CONFIG_WORD: + outpw(PCI_CFG_DATA + (DI & 2), CX); + break; + case WRITE_CONFIG_DWORD: + outpd(PCI_CFG_DATA, ECX); + break; + } + } + break; + case GET_IRQ_ROUTING: + route_buf = ES :> (void *)DI; + BX_DEBUG_PCI("PCI: Route Buf %04X:%04X size %04X, need %04X (at %04X:%04X)\n", + FP_SEG(route_buf->buf_ptr), FP_OFF(route_buf->buf_ptr), + route_buf->buf_size, pci_routing_table_size, ES, DI); + if (pci_routing_table_size > route_buf->buf_size) { + SET_AH(BUFFER_TOO_SMALL); + SET_CF(); + } else { + rep_movsb(route_buf->buf_ptr, pci_routing_table, pci_routing_table_size); + /* IRQs 9 and 11 are PCI only. */ + BX = (1 << 9) | (1 << 11); + } + route_buf->buf_size = pci_routing_table_size; + break; + default: + BX_INFO("PCI: Unsupported function AX=%04X BX=%04X called\n", AX, BX); + SET_AH(FUNC_NOT_SUPPORTED); + SET_CF(); + } +} diff --git a/src/VBox/Devices/PC/BIOS/pcibios.inc b/src/VBox/Devices/PC/BIOS/pcibios.inc new file mode 100644 index 00000000..a3a2e6a9 --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/pcibios.inc @@ -0,0 +1,362 @@ +; $Id: pcibios.inc $ +;; @file +; ??? +; + +; +; Copyright (C) 2006-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; -------------------------------------------------------------------- +; +; This code is based on: +; +; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment +; +; Copyright (C) 2002 MandrakeSoft S.A. +; +; MandrakeSoft S.A. +; 43, rue d'Aboukir +; 75002 Paris - France +; http://www.linux-mandrake.com/ +; http://www.mandrakesoft.com/ +; +; This library is free software; you can redistribute it and/or +; modify it under the terms of the GNU Lesser General Public +; License as published by the Free Software Foundation; either +; version 2 of the License, or (at your option) any later version. +; +; This library is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +; Lesser General Public License for more details. +; +; You should have received a copy of the GNU Lesser General Public +; License along with this library; if not, write to the Free Software +; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +; + +; Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice +; other than GPL or LGPL is available it will apply instead, Oracle elects to use only +; the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where +; a choice of LGPL license versions is made available with the language indicating +; that LGPLv2 or any later version may be used, or where a choice of which version +; of the LGPL is applied is otherwise unspecified. + + +include pcicfg.inc + +if BX_PCIBIOS + +ifdef DEBUG + +; Publics for easier debugging and disassembly + +public pcibios_init_iomem_bases +public pci_init_io_loop1 +public pci_init_io_loop2 +public init_io_base +public next_pci_base +public enable_iomem_space +public next_pci_dev +public pcibios_init_set_elcr +public is_master_pic +public pcibios_init_irqs +public pci_init_irq_loop1 +public pci_init_irq_loop2 +public pci_test_int_pin +public pirq_found +public next_pci_func +public next_pir_entry +public pci_init_end + +endif + +.386 + +if not BX_ROMBIOS32 +pci_irq_list: + db 11, 10, 9, 11 + +pcibios_init_sel_reg: + push eax + mov eax, 800000h + mov ax, bx + shl eax, 8 + and dl, 0FCh + or al, dl + mov dx, PCI_CFG1 + out dx, eax + pop eax + ret + +pcibios_init_iomem_bases: + push bp + mov bp, sp +ifdef VBOX + mov eax,19200509 + mov dx,410h + out dx, eax +else +; This incomplete PCI resource setup code is less functional than the PCI +; resource assignment created by the fake PCI BIOS and is therefore disabled. +; Blindly enabling everything on the root bus (including bus mastering!) can +; only be called buggy. It causes the trouble with AMD PCNet which it then +; tries to work around, but that still contains a race. + mov eax, 0E0000000h ; base for memory init + push eax + mov ax, 0D000h ; base for i/o init + push ax + mov ax, 010h ; start at base address #0 + push ax + mov bx, 8 +pci_init_io_loop1: + mov dl, 0 + call pcibios_init_sel_reg + mov dx, PCI_CFG2 + in ax, dx + cmp ax, 0FFFFh + jz next_pci_dev + +ifndef VBOX ; This currently breaks restoring a previously saved state. + mov dl, 4 ; disable i/o and memory space access + call pcibios_init_sel_reg + mov dx, PCI_CFG2 + in al, dx + and al, 0FCh + out dx, al +pci_init_io_loop2: + mov dl, [bp-8] + call pcibios_init_sel_reg + mov dx, PCI_CFG2 + in eax, dx + test al, 1 + jnz init_io_base + + mov ecx, eax + mov eax, 0FFFFFFFFh + out dx, eax + in eax, dx + cmp eax, ecx + je next_pci_base + xor eax, 0FFFFFFFFh + mov ecx, eax + mov eax, [bp-4] + out dx, eax + add eax, ecx ; calculate next free mem base + add eax, 01000000h + and eax, 0FF000000h + mov [bp-4], eax + jmp next_pci_base + +init_io_base: + mov cx, ax + mov ax, 0FFFFh + out dx, eax + in eax, dx + cmp ax, cx + je next_pci_base + + xor ax, 0FFFEh + mov cx, ax + mov ax, [bp-6] + out dx, eax + add ax, cx ; calculate next free i/o base + add ax, 00100h + and ax, 0FF00h + mov [bp-6], ax +next_pci_base: + mov al, [bp-8] + add al, 4 + cmp al, 28h + je enable_iomem_space + + mov byte ptr[bp-8], al + jmp pci_init_io_loop2 +endif ; !VBOX + +enable_iomem_space: + mov dl, 4 ;; enable i/o and memory space access if available + call pcibios_init_sel_reg + mov dx, PCI_CFG2 + in al, dx + or al, 7 + out dx, al +ifdef VBOX + mov dl, 0 ; check if PCI device is AMD PCNet + call pcibios_init_sel_reg + mov dx, PCI_CFG2 + in eax, dx + cmp eax, 020001022h + jne next_pci_dev + + mov dl, 10h ; get I/O address + call pcibios_init_sel_reg + mov dx, PCI_CFG2 + in ax, dx + and ax, 0FFFCh + mov cx, ax + mov dx, cx + add dx, 14h ; reset register if PCNet is in word I/O mode + in ax, dx ; reset is performed by reading the reset register + mov dx, cx + add dx, 18h ; reset register if PCNet is in word I/O mode + in eax, dx ; reset is performed by reading the reset register +endif ; VBOX +next_pci_dev: + mov byte ptr[bp-8], 10h + inc bx + cmp bx, 0100h + jne pci_init_io_loop1 +endif ; !VBOX + mov sp, bp + pop bp + ret + +pcibios_init_set_elcr: + push ax + push cx + mov dx, 04D0h + test al, 8 + jz is_master_pic + + inc dx + and al, 7 +is_master_pic: + mov cl, al + mov bl, 1 + shl bl, cl + in al, dx + or al, bl + out dx, al + pop cx + pop ax + ret + +pcibios_init_irqs: + push ds + push bp + mov ax, 0F000h + mov ds, ax +ifndef VBOX +; this code works OK, but it's unnecessary effort since the fake PCI BIOS +; already configured the IRQ lines and the ELCR correctly + mov dx, 04D0h ;; reset ELCR1 + ELCR2 + mov al, 0 + out dx, al + inc dx + out dx, al + mov si, pci_routing_table_structure + mov bh, [si+8] + mov bl, [si+9] + mov dl, 0 + call pcibios_init_sel_reg + mov dx, PCI_CFG2 + in eax, dx + cmp eax, [si+12] ;; check irq router + jne pci_init_end + + mov dl, [si+34] + call pcibios_init_sel_reg + push bx ;; save irq router bus + devfunc + mov dx, PCI_CFG2 + mov ax, 8080h + out dx, ax ;; reset PIRQ route control + add dx, 2 + out dx, ax + mov ax, [si+6] + sub ax, 20h + shr ax, 4 + mov cx, ax + add si, 20h ;; set pointer to 1st entry + mov bp, sp + mov ax, pci_irq_list + push ax + xor ax, ax + push ax +pci_init_irq_loop1: + mov bh, [si] + mov bl, [si+1] +pci_init_irq_loop2: + mov dl, 0 + call pcibios_init_sel_reg + mov dx, PCI_CFG2 + in ax, dx + cmp ax, 0FFFFh + jnz pci_test_int_pin + + test bl, 7 + jz next_pir_entry + + jmp next_pci_func + +pci_test_int_pin: + mov dl, 3Ch + call pcibios_init_sel_reg + mov dx, PCI_CFG2 + 1 ; access config space at 3Dh + in al, dx + and al, 7 + jz next_pci_func + + dec al ;; determine pirq reg + mov dl, 3 + mul dl + add al, 2 + xor ah, ah + mov bx, ax + mov al, [si+bx] + mov dl, al + mov bx, [bp] + call pcibios_init_sel_reg + mov dx, PCI_CFG2 + and al, 3 + add dl, al + in al, dx + cmp al, 80h + jb pirq_found + + mov bx, [bp-2] ;; pci irq list pointer + mov al, [bx] + out dx, al + inc bx + mov [bp-2], bx + call pcibios_init_set_elcr +pirq_found: + mov bh, [si] + mov bl, [si+1] + add bl, [bp-3] ;; pci function number + mov dl, 3Ch + call pcibios_init_sel_reg + mov dx, PCI_CFG2 + out dx, al +next_pci_func: + inc byte ptr[bp-3] + inc bl + test bl, 7 + jnz pci_init_irq_loop2 + +next_pir_entry: + add si, 10h + mov byte ptr[bp-3], 0 + loop pci_init_irq_loop1 + + mov sp, bp + pop bx +pci_init_end: +endif + pop bp + pop ds + ret + +endif ; !BX_ROMBIOS32 + +endif ; BX_PCIBIOS + +SET_DEFAULT_CPU_286 + diff --git a/src/VBox/Devices/PC/BIOS/pcicfg.inc b/src/VBox/Devices/PC/BIOS/pcicfg.inc new file mode 100644 index 00000000..83e2c2d5 --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/pcicfg.inc @@ -0,0 +1,6 @@ + +BX_PCIBIOS equ 1 ; Enable PCI BIOS + +PCI_CFG1 equ 0CF8h +PCI_CFG2 equ 0CFCh + diff --git a/src/VBox/Devices/PC/BIOS/pciutil.c b/src/VBox/Devices/PC/BIOS/pciutil.c new file mode 100644 index 00000000..49ff0877 --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/pciutil.c @@ -0,0 +1,186 @@ +/* $Id: pciutil.c $ */ +/** @file + * Utility routines for calling the PCI BIOS. + */ + +/* + * Copyright (C) 2011-2019 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + */ + +#include <stdint.h> +#include <string.h> +#include "biosint.h" +#include "inlines.h" + +/** PCI BIOS functions. */ +#define PCIBIOS_ID 0xb1 +#define PCIBIOS_PCI_BIOS_PRESENT 0x01 +#define PCIBIOS_FIND_PCI_DEVICE 0x02 +#define PCIBIOS_FIND_CLASS_CODE 0x03 +#define PCIBIOS_GENERATE_SPECIAL_CYCLE 0x06 +#define PCIBIOS_READ_CONFIG_BYTE 0x08 +#define PCIBIOS_READ_CONFIG_WORD 0x09 +#define PCIBIOS_READ_CONFIG_DWORD 0x0a +#define PCIBIOS_WRITE_CONFIG_BYTE 0x0b +#define PCIBIOS_WRITE_CONFIG_WORD 0x0c +#define PCIBIOS_WRITE_CONFIG_DWORD 0x0d +#define PCIBIOS_GET_IRQ_ROUTING_OPTIONS 0x0e +#define PCIBIOS_SET_PCI_IRQ 0x0f + +/** Status codes. */ +#define SUCCESSFUL 0x00 +#define FUNC_NOT_SUPPORTED 0x81 +#define BAD_VENDOR_ID 0x83 +#define DEVICE_NOT_FOUND 0x86 +#define BAD_REGISTER_NUMBER 0x87 +#define SET_FAILED 0x88 +#define BUFFER_TOO_SMALL 0x89 + + +#if VBOX_BIOS_CPU >= 80386 +/* Warning: Destroys high bits of ECX. */ +uint16_t pci_find_class(uint16_t op, uint32_t dev_class, uint16_t index); +# pragma aux pci_find_class = \ + ".386" \ + "shl ecx, 16" \ + "mov cx, dx" \ + "int 0x1a" \ + "cmp ah, 0" \ + "je found" \ + "mov bx, 0xffff" \ + "found:" \ + parm [ax] [cx dx] [si] value [bx]; +#endif + +uint16_t pci_find_dev(uint16_t op, uint16_t dev_id, uint16_t ven_id, uint16_t index); +#pragma aux pci_find_dev = \ + "int 0x1a" \ + "cmp ah, 0" \ + "je found" \ + "mov bx, 0xffff" \ + "found:" \ + parm [ax] [cx] [dx] [si] value [bx]; + +uint8_t pci_read_cfgb(uint16_t op, uint16_t bus_dev_fn, uint16_t reg); +#pragma aux pci_read_cfgb = \ + "int 0x1a" \ + parm [ax] [bx] [di] value [cl]; + +uint16_t pci_read_cfgw(uint16_t op, uint16_t bus_dev_fn, uint16_t reg); +#pragma aux pci_read_cfgw = \ + "int 0x1a" \ + parm [ax] [bx] [di] value [cx]; + +#if VBOX_BIOS_CPU >= 80386 +/* Warning: Destroys high bits of ECX. */ +uint32_t pci_read_cfgd(uint16_t op, uint16_t bus_dev_fn, uint16_t reg); +# pragma aux pci_read_cfgd = \ + ".386" \ + "int 0x1a" \ + "mov ax, cx" \ + "shr ecx, 16" \ + parm [ax] [bx] [di] value [cx ax]; +#endif + +uint8_t pci_write_cfgb(uint16_t op, uint16_t bus_dev_fn, uint16_t reg, uint8_t val); +#pragma aux pci_write_cfgb = \ + "int 0x1a" \ + parm [ax] [bx] [di] [cl]; + +uint8_t pci_write_cfgw(uint16_t op, uint16_t bus_dev_fn, uint16_t reg, uint16_t val); +#pragma aux pci_write_cfgw = \ + "int 0x1a" \ + parm [ax] [bx] [di] [cx]; + +#if VBOX_BIOS_CPU >= 80386 +/* Warning: Destroys high bits of ECX. */ +uint8_t pci_write_cfgd(uint16_t op, uint16_t bus_dev_fn, uint16_t reg, uint32_t val); +# pragma aux pci_write_cfgd = \ + ".386" \ + "xchg cx, dx" \ + "shl ecx, 16" \ + "mov cx, dx" \ + "int 0x1a" \ + parm [ax] [bx] [di] [dx cx]; +#endif + + +/** + * Returns the bus/device/function of a PCI device with + * the given class code. + * + * @returns bus/device/fn in a 16-bit integer where + * where the upper byte contains the bus number + * and lower one the device and function number. + * 0xffff if no device was found. + * @param dev_class The PCI class code to search for. + */ +uint16_t pci_find_classcode(uint32_t dev_class) +{ +#if VBOX_BIOS_CPU >= 80386 + return pci_find_class((PCIBIOS_ID << 8) | PCIBIOS_FIND_CLASS_CODE, dev_class, 0); +#else + return UINT16_C(0xffff); +#endif +} + +/** + * Returns the bus/device/function of a PCI device with + * the given vendor and device id. + * + * @returns bus/device/fn in one 16bit integer where + * where the upper byte contains the bus number + * and lower one the device and function number. + * 0xffff if no device was found. + * @param v_id The vendor ID. + * @param d_id The device ID. + */ +uint16_t pci_find_device(uint16_t v_id, uint16_t d_id) +{ + return pci_find_dev((PCIBIOS_ID << 8) | PCIBIOS_FIND_PCI_DEVICE, d_id, v_id, 0); +} + +uint32_t pci_read_config_byte(uint8_t bus, uint8_t dev_fn, uint8_t reg) +{ + return pci_read_cfgb((PCIBIOS_ID << 8) | PCIBIOS_READ_CONFIG_BYTE, (bus << 8) | dev_fn, reg); +} + +uint32_t pci_read_config_word(uint8_t bus, uint8_t dev_fn, uint8_t reg) +{ + return pci_read_cfgw((PCIBIOS_ID << 8) | PCIBIOS_READ_CONFIG_WORD, (bus << 8) | dev_fn, reg); +} + +uint32_t pci_read_config_dword(uint8_t bus, uint8_t dev_fn, uint8_t reg) +{ +#if VBOX_BIOS_CPU >= 80386 + return pci_read_cfgd((PCIBIOS_ID << 8) | PCIBIOS_READ_CONFIG_DWORD, (bus << 8) | dev_fn, reg); +#else + return pci_read_cfgw((PCIBIOS_ID << 8) | PCIBIOS_READ_CONFIG_WORD, (bus << 8) | dev_fn, reg) + || ((uint32_t)pci_read_cfgw((PCIBIOS_ID << 8) | PCIBIOS_READ_CONFIG_WORD, (bus << 8) | dev_fn, reg + 2) << 16); +#endif +} + +void pci_write_config_word(uint8_t bus, uint8_t dev_fn, uint8_t reg, uint16_t val) +{ + pci_write_cfgw((PCIBIOS_ID << 8) | PCIBIOS_WRITE_CONFIG_WORD, (bus << 8) | dev_fn, reg, val); +} + +#if 0 /* Disabled to save space because they are not needed. Might become useful in the future. */ +void pci_write_config_byte(uint8_t bus, uint8_t dev_fn, uint8_t reg, uint8_t val) +{ + pci_write_cfgb((PCIBIOS_ID << 8) | PCIBIOS_WRITE_CONFIG_BYTE, (bus << 8) | dev_fn, reg, val); +} + +void pci_write_config_dword(uint8_t bus, uint8_t dev_fn, uint8_t reg, uint32_t val) +{ + pci_write_cfgd((PCIBIOS_ID << 8) | PCIBIOS_WRITE_CONFIG_DWORD, (bus << 8) | dev_fn, reg, val); +} +#endif /* 0 */ diff --git a/src/VBox/Devices/PC/BIOS/pciutil.h b/src/VBox/Devices/PC/BIOS/pciutil.h new file mode 100644 index 00000000..ad50ed82 --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/pciutil.h @@ -0,0 +1,37 @@ +/* $Id: pciutil.h $ */ +/** @file + * Utility routines for calling the PCI BIOS. + */ + +/* + * Copyright (C) 2011-2019 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + */ + +#ifndef VBOX_INCLUDED_SRC_PC_BIOS_pciutil_h +#define VBOX_INCLUDED_SRC_PC_BIOS_pciutil_h +#ifndef RT_WITHOUT_PRAGMA_ONCE +# pragma once +#endif + +extern uint16_t pci_find_device(uint16_t v_id, uint16_t d_id); +/* Warning: pci_find_classcode destroys the high bits of ECX. */ +extern uint16_t pci_find_classcode(uint32_t dev_class); +extern uint32_t pci_read_config_byte(uint8_t bus, uint8_t dev_fn, uint8_t reg); +extern uint32_t pci_read_config_word(uint8_t bus, uint8_t dev_fn, uint8_t reg); +/* Warning: pci_read_config_dword destroys the high bits of ECX. */ +extern uint32_t pci_read_config_dword(uint8_t bus, uint8_t dev_fn, uint8_t reg); +extern void pci_write_config_byte(uint8_t bus, uint8_t dev_fn, uint8_t reg, uint8_t val); +extern void pci_write_config_word(uint8_t bus, uint8_t dev_fn, uint8_t reg, uint16_t val); +/* Warning: pci_write_config_dword destroys the high bits of ECX. */ +extern void pci_write_config_dword(uint8_t bus, uint8_t dev_fn, uint8_t reg, uint32_t val); + +#endif /* !VBOX_INCLUDED_SRC_PC_BIOS_pciutil_h */ + diff --git a/src/VBox/Devices/PC/BIOS/pirq.inc b/src/VBox/Devices/PC/BIOS/pirq.inc new file mode 100644 index 00000000..7dd4040f --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/pirq.inc @@ -0,0 +1,477 @@ +; $Id: pirq.inc $ +;; @file +; ??? +; + +; +; Copyright (C) 2006-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; -------------------------------------------------------------------- +; +; This code is based on: +; +; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment +; +; Copyright (C) 2002 MandrakeSoft S.A. +; +; MandrakeSoft S.A. +; 43, rue d'Aboukir +; 75002 Paris - France +; http://www.linux-mandrake.com/ +; http://www.mandrakesoft.com/ +; +; This library is free software; you can redistribute it and/or +; modify it under the terms of the GNU Lesser General Public +; License as published by the Free Software Foundation; either +; version 2 of the License, or (at your option) any later version. +; +; This library is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +; Lesser General Public License for more details. +; +; You should have received a copy of the GNU Lesser General Public +; License along with this library; if not, write to the Free Software +; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +; +; + +; Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice +; other than GPL or LGPL is available it will apply instead, Oracle elects to use only +; the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where +; a choice of LGPL license versions is made available with the language indicating +; that LGPLv2 or any later version may be used, or where a choice of which version +; of the LGPL is applied is otherwise unspecified. + + +if BX_PCIBIOS +public _pci_routing_table +public _pci_routing_table_size + +align 16 +pci_routing_table_structure: + db '$PIR' ;; "$PIR" signature + db 0, 1 ;; version +ifdef VBOX + dw 32 + (30 * 16) ;; table size +else ; !VBOX + dw 32 + (6 * 16) ;; table size +endif ; !VBOX + db 0 ;; PCI interrupt router bus + db 8 ;; PCI interrupt router DevFunc + dw 0000h ;; PCI exclusive IRQs + dw 8086h ;; compatible PCI interrupt router vendor ID + dw 7000h ;; compatible PCI interrupt router device ID + dw 0,0 ;; Miniport data + db 0,0,0,0,0,0,0,0,0,0,0 ;; reserved +ifdef VBOX + db 0 ;; checksum (set by biossums) +else ; !VBOX + db 7 ;; checksum +endif ; !VBOX +_pci_routing_table: +pci_routing_table: + ;; first slot entry PCI-to-ISA (embedded) + db 0 ;; pci bus number + db 008h ;; pci device number (bit 7-3) + db 60h ;; link value INTA#: pointer into PCI2ISA config space + dw 0DEF8h ;; IRQ bitmap INTA# + db 61h ;; link value INTB# + dw 0DEF8h ;; IRQ bitmap INTB# + db 62h ;; link value INTC# + dw 0DEF8h ;; IRQ bitmap INTC# + db 63h ;; link value INTD# + dw 0DEF8h ;; IRQ bitmap INTD# + db 0 ;; physical slot (0 = embedded) + db 0 ;; reserved + ;; second slot entry: 1st PCI slot + db 0 ;; pci bus number + db 010h ;; pci device number (bit 7-3) + db 61h ;; link value INTA# + dw 0DEF8h ;; IRQ bitmap INTA# + db 62h ;; link value INTB# + dw 0DEF8h ;; IRQ bitmap INTB# + db 63h ;; link value INTC# + dw 0DEF8h ;; IRQ bitmap INTC# + db 60h ;; link value INTD# + dw 0DEF8h ;; IRQ bitmap INTD# + db 1 ;; physical slot (0 = embedded) + db 0 ;; reserved + ;; third slot entry: 2nd PCI slot + db 0 ;; pci bus number + db 018h ;; pci device number (bit 7-3) + db 62h ;; link value INTA# + dw 0DEF8h ;; IRQ bitmap INTA# + db 63h ;; link value INTB# + dw 0DEF8h ;; IRQ bitmap INTB# + db 60h ;; link value INTC# + dw 0DEF8h ;; IRQ bitmap INTC# + db 61h ;; link value INTD# + dw 0DEF8h ;; IRQ bitmap INTD# + db 2 ;; physical slot (0 = embedded) + db 0 ;; reserved + ;; 4th slot entry: 3rd PCI slot + db 0 ;; pci bus number + db 020h ;; pci device number (bit 7-3) + db 63h ;; link value INTA# + dw 0DEF8h ;; IRQ bitmap INTA# + db 60h ;; link value INTB# + dw 0DEF8h ;; IRQ bitmap INTB# + db 61h ;; link value INTC# + dw 0DEF8h ;; IRQ bitmap INTC# + db 62h ;; link value INTD# + dw 0DEF8h ;; IRQ bitmap INTD# + db 3 ;; physical slot (0 = embedded) + db 0 ;; reserved + ;; 5th slot entry: 4th PCI slot + db 0 ;; pci bus number + db 028h ;; pci device number (bit 7-3) + db 60h ;; link value INTA# + dw 0DEF8h ;; IRQ bitmap INTA# + db 61h ;; link value INTB# + dw 0DEF8h ;; IRQ bitmap INTB# + db 62h ;; link value INTC# + dw 0DEF8h ;; IRQ bitmap INTC# + db 63h ;; link value INTD# + dw 0DEF8h ;; IRQ bitmap INTD# + db 4 ;; physical slot (0 = embedded) + db 0 ;; reserved + ;; 6th slot entry: 5th PCI slot + db 0 ;; pci bus number + db 030h ;; pci device number (bit 7-3) + db 61h ;; link value INTA# + dw 0DEF8h ;; IRQ bitmap INTA# + db 62h ;; link value INTB# + dw 0DEF8h ;; IRQ bitmap INTB# + db 63h ;; link value INTC# + dw 0DEF8h ;; IRQ bitmap INTC# + db 60h ;; link value INTD# + dw 0DEF8h ;; IRQ bitmap INTD# + db 5 ;; physical slot (0 = embedded) + db 0 ;; reserved +ifdef VBOX + ;; 7th slot entry: 6th PCI slot + db 0 ;; pci bus number + db 038h ;; pci device number (bit 7-3) + db 62h ;; link value INTA# + dw 0DEF8h ;; IRQ bitmap INTA# + db 63h ;; link value INTB# + dw 0DEF8h ;; IRQ bitmap INTB# + db 60h ;; link value INTC# + dw 0DEF8h ;; IRQ bitmap INTC# + db 61h ;; link value INTD# + dw 0DEF8h ;; IRQ bitmap INTD# + db 6 ;; physical slot (0 = embedded) + db 0 ;; reserved + ;; 8th slot entry: 7th PCI slot + db 0 ;; pci bus number + db 040h ;; pci device number (bit 7-3) + db 63h ;; link value INTA# + dw 0DEF8h ;; IRQ bitmap INTA# + db 60h ;; link value INTB# + dw 0DEF8h ;; IRQ bitmap INTB# + db 61h ;; link value INTC# + dw 0DEF8h ;; IRQ bitmap INTC# + db 62h ;; link value INTD# + dw 0DEF8h ;; IRQ bitmap INTD# + db 7 ;; physical slot (0 = embedded) + db 0 ;; reserved + ;; 9th slot entry: 8th PCI slot + db 0 ;; pci bus number + db 048h ;; pci device number (bit 7-3) + db 60h ;; link value INTA# + dw 0DEF8h ;; IRQ bitmap INTA# + db 61h ;; link value INTB# + dw 0DEF8h ;; IRQ bitmap INTB# + db 62h ;; link value INTC# + dw 0DEF8h ;; IRQ bitmap INTC# + db 63h ;; link value INTD# + dw 0DEF8h ;; IRQ bitmap INTD# + db 8 ;; physical slot (0 = embedded) + db 0 ;; reserved + ;; 10th slot entry: 9th PCI slot + db 0 ;; pci bus number + db 050h ;; pci device number (bit 7-3) + db 61h ;; link value INTA# + dw 0DEF8h ;; IRQ bitmap INTA# + db 62h ;; link value INTB# + dw 0DEF8h ;; IRQ bitmap INTB# + db 63h ;; link value INTC# + dw 0DEF8h ;; IRQ bitmap INTC# + db 60h ;; link value INTD# + dw 0DEF8h ;; IRQ bitmap INTD# + db 9 ;; physical slot (0 = embedded) + db 0 ;; reserved + ;; 11th slot entry: 10th PCI slot + db 0 ;; pci bus number + db 058h ;; pci device number (bit 7-3) + db 62h ;; link value INTA# + dw 0DEF8h ;; IRQ bitmap INTA# + db 63h ;; link value INTB# + dw 0DEF8h ;; IRQ bitmap INTB# + db 60h ;; link value INTC# + dw 0DEF8h ;; IRQ bitmap INTC# + db 61h ;; link value INTD# + dw 0DEF8h ;; IRQ bitmap INTD# + db 10 ;; physical slot (0 = embedded) + db 0 ;; reserved + ;; 12th slot entry: 11th PCI slot + db 0 ;; pci bus number + db 60h ;; pci device number (bit 7-3) + db 63h ;; link value INTA# + dw 0DEF8h ;; IRQ bitmap INTA# + db 60h ;; link value INTB# + dw 0DEF8h ;; IRQ bitmap INTB# + db 61h ;; link value INTC# + dw 0DEF8h ;; IRQ bitmap INTC# + db 62h ;; link value INTD# + dw 0DEF8h ;; IRQ bitmap INTD# + db 11 ;; physical slot (0 = embedded) + db 0 ;; reserved + ;; 13th slot entry: 12th PCI slot + db 0 ;; pci bus number + db 068h ;; pci device number (bit 7-3) + db 60h ;; link value INTA# + dw 0DEF8h ;; IRQ bitmap INTA# + db 61h ;; link value INTB# + dw 0DEF8h ;; IRQ bitmap INTB# + db 62h ;; link value INTC# + dw 0DEF8h ;; IRQ bitmap INTC# + db 63h ;; link value INTD# + dw 0DEF8h ;; IRQ bitmap INTD# + db 12 ;; physical slot (0 = embedded) + db 0 ;; reserved + ;; 14th slot entry: 13th PCI slot + db 0 ;; pci bus number + db 070h ;; pci device number (bit 7-3) + db 61h ;; link value INTA# + dw 0DEF8h ;; IRQ bitmap INTA# + db 62h ;; link value INTB# + dw 0DEF8h ;; IRQ bitmap INTB# + db 63h ;; link value INTC# + dw 0DEF8h ;; IRQ bitmap INTC# + db 60h ;; link value INTD# + dw 0DEF8h ;; IRQ bitmap INTD# + db 13 ;; physical slot (0 = embedded) + db 0 ;; reserved + ;; 15th slot entry: 14th PCI slot + db 0 ;; pci bus number + db 078h ;; pci device number (bit 7-3) + db 62h ;; link value INTA# + dw 0DEF8h ;; IRQ bitmap INTA# + db 63h ;; link value INTB# + dw 0DEF8h ;; IRQ bitmap INTB# + db 60h ;; link value INTC# + dw 0DEF8h ;; IRQ bitmap INTC# + db 61h ;; link value INTD# + dw 0DEF8h ;; IRQ bitmap INTD# + db 14 ;; physical slot (0 = embedded) + db 0 ;; reserved + ;; 16th slot entry: 15th PCI slot + db 0 ;; pci bus number + db 080h ;; pci device number (bit 7-3) + db 63h ;; link value INTA# + dw 0DEF8h ;; IRQ bitmap INTA# + db 60h ;; link value INTB# + dw 0DEF8h ;; IRQ bitmap INTB# + db 61h ;; link value INTC# + dw 0DEF8h ;; IRQ bitmap INTC# + db 62h ;; link value INTD# + dw 0DEF8h ;; IRQ bitmap INTD# + db 15 ;; physical slot (0 = embedded) + db 0 ;; reserved + ;; 17th slot entry: 16th PCI slot + db 0 ;; pci bus number + db 088h ;; pci device number (bit 7-3) + db 60h ;; link value INTA# + dw 0DEF8h ;; IRQ bitmap INTA# + db 61h ;; link value INTB# + dw 0DEF8h ;; IRQ bitmap INTB# + db 62h ;; link value INTC# + dw 0DEF8h ;; IRQ bitmap INTC# + db 63h ;; link value INTD# + dw 0DEF8h ;; IRQ bitmap INTD# + db 16 ;; physical slot (0 = embedded) + db 0 ;; reserved + ;; 18th slot entry: 17th PCI slot + db 0 ;; pci bus number + db 090h ;; pci device number (bit 7-3) + db 61h ;; link value INTA# + dw 0DEF8h ;; IRQ bitmap INTA# + db 62h ;; link value INTB# + dw 0DEF8h ;; IRQ bitmap INTB# + db 63h ;; link value INTC# + dw 0DEF8h ;; IRQ bitmap INTC# + db 60h ;; link value INTD# + dw 0DEF8h ;; IRQ bitmap INTD# + db 17 ;; physical slot (0 = embedded) + db 0 ;; reserved + ;; 19th slot entry: 18th PCI slot + db 0 ;; pci bus number + db 098h ;; pci device number (bit 7-3) + db 62h ;; link value INTA# + dw 0DEF8h ;; IRQ bitmap INTA# + db 63h ;; link value INTB# + dw 0DEF8h ;; IRQ bitmap INTB# + db 60h ;; link value INTC# + dw 0DEF8h ;; IRQ bitmap INTC# + db 61h ;; link value INTD# + dw 0DEF8h ;; IRQ bitmap INTD# + db 18 ;; physical slot (0 = embedded) + db 0 ;; reserved + ;; 20th slot entry: 19th PCI slot + db 0 ;; pci bus number + db 0A0h ;; pci device number (bit 7-3) + db 63h ;; link value INTA# + dw 0DEF8h ;; IRQ bitmap INTA# + db 60h ;; link value INTB# + dw 0DEF8h ;; IRQ bitmap INTB# + db 61h ;; link value INTC# + dw 0DEF8h ;; IRQ bitmap INTC# + db 62h ;; link value INTD# + dw 0DEF8h ;; IRQ bitmap INTD# + db 19 ;; physical slot (0 = embedded) + db 0 ;; reserved + ;; 21st slot entry: 20th PCI slot + db 0 ;; pci bus number + db 0A8h ;; pci device number (bit 7-3) + db 60h ;; link value INTA# + dw 0DEF8h ;; IRQ bitmap INTA# + db 61h ;; link value INTB# + dw 0DEF8h ;; IRQ bitmap INTB# + db 62h ;; link value INTC# + dw 0DEF8h ;; IRQ bitmap INTC# + db 63h ;; link value INTD# + dw 0DEF8h ;; IRQ bitmap INTD# + db 20 ;; physical slot (0 = embedded) + db 0 ;; reserved + ;; 22nd slot entry: 21st PCI slot + db 0 ;; pci bus number + db 0B0h ;; pci device number (bit 7-3) + db 61h ;; link value INTA# + dw 0DEF8h ;; IRQ bitmap INTA# + db 62h ;; link value INTB# + dw 0DEF8h ;; IRQ bitmap INTB# + db 63h ;; link value INTC# + dw 0DEF8h ;; IRQ bitmap INTC# + db 60h ;; link value INTD# + dw 0DEF8h ;; IRQ bitmap INTD# + db 21 ;; physical slot (0 = embedded) + db 0 ;; reserved + ;; 23rd slot entry: 22nd PCI slot + db 0 ;; pci bus number + db 0B8h ;; pci device number (bit 7-3) + db 62h ;; link value INTA# + dw 0DEF8h ;; IRQ bitmap INTA# + db 63h ;; link value INTB# + dw 0DEF8h ;; IRQ bitmap INTB# + db 60h ;; link value INTC# + dw 0DEF8h ;; IRQ bitmap INTC# + db 61h ;; link value INTD# + dw 0DEF8h ;; IRQ bitmap INTD# + db 22 ;; physical slot (0 = embedded) + db 0 ;; reserved + ;; 24th slot entry: 23rd PCI slot + db 0 ;; pci bus number + db 0C0h ;; pci device number (bit 7-3) + db 63h ;; link value INTA# + dw 0DEF8h ;; IRQ bitmap INTA# + db 60h ;; link value INTB# + dw 0DEF8h ;; IRQ bitmap INTB# + db 61h ;; link value INTC# + dw 0DEF8h ;; IRQ bitmap INTC# + db 62h ;; link value INTD# + dw 0DEF8h ;; IRQ bitmap INTD# + db 23 ;; physical slot (0 = embedded) + db 0 ;; reserved + ;; 25th slot entry: 24th PCI slot + db 0 ;; pci bus number + db 0C8h ;; pci device number (bit 7-3) + db 60h ;; link value INTA# + dw 0DEF8h ;; IRQ bitmap INTA# + db 61h ;; link value INTB# + dw 0DEF8h ;; IRQ bitmap INTB# + db 62h ;; link value INTC# + dw 0DEF8h ;; IRQ bitmap INTC# + db 63h ;; link value INTD# + dw 0DEF8h ;; IRQ bitmap INTD# + db 24 ;; physical slot (0 = embedded) + db 0 ;; reserved + ;; 26th slot entry: 25th PCI slot + db 0 ;; pci bus number + db 0D0h ;; pci device number (bit 7-3) + db 61h ;; link value INTA# + dw 0DEF8h ;; IRQ bitmap INTA# + db 62h ;; link value INTB# + dw 0DEF8h ;; IRQ bitmap INTB# + db 63h ;; link value INTC# + dw 0DEF8h ;; IRQ bitmap INTC# + db 60h ;; link value INTD# + dw 0DEF8h ;; IRQ bitmap INTD# + db 25 ;; physical slot (0 = embedded) + db 0 ;; reserved + ;; 27th slot entry: 26th PCI slot + db 0 ;; pci bus number + db 0D8h ;; pci device number (bit 7-3) + db 62h ;; link value INTA# + dw 0DEF8h ;; IRQ bitmap INTA# + db 63h ;; link value INTB# + dw 0DEF8h ;; IRQ bitmap INTB# + db 60h ;; link value INTC# + dw 0DEF8h ;; IRQ bitmap INTC# + db 61h ;; link value INTD# + dw 0DEF8h ;; IRQ bitmap INTD# + db 26 ;; physical slot (0 = embedded) + db 0 ;; reserved + ;; 28th slot entry: 27th PCI slot + db 0 ;; pci bus number + db 0E0h ;; pci device number (bit 7-3) + db 63h ;; link value INTA# + dw 0DEF8h ;; IRQ bitmap INTA# + db 60h ;; link value INTB# + dw 0DEF8h ;; IRQ bitmap INTB# + db 61h ;; link value INTC# + dw 0DEF8h ;; IRQ bitmap INTC# + db 62h ;; link value INTD# + dw 0DEF8h ;; IRQ bitmap INTD# + db 27 ;; physical slot (0 = embedded) + db 0 ;; reserved + ;; 29th slot entry: 28th PCI slot + db 0 ;; pci bus number + db 0E8h ;; pci device number (bit 7-3) + db 60h ;; link value INTA# + dw 0DEF8h ;; IRQ bitmap INTA# + db 61h ;; link value INTB# + dw 0DEF8h ;; IRQ bitmap INTB# + db 62h ;; link value INTC# + dw 0DEF8h ;; IRQ bitmap INTC# + db 63h ;; link value INTD# + dw 0DEF8h ;; IRQ bitmap INTD# + db 28 ;; physical slot (0 = embedded) + db 0 ;; reserved + ;; 30th slot entry: 29th PCI slot + db 0 ;; pci bus number + db 0F0h ;; pci device number (bit 7-3) + db 61h ;; link value INTA# + dw 0DEF8h ;; IRQ bitmap INTA# + db 62h ;; link value INTB# + dw 0DEF8h ;; IRQ bitmap INTB# + db 63h ;; link value INTC# + dw 0DEF8h ;; IRQ bitmap INTC# + db 60h ;; link value INTD# + dw 0DEF8h ;; IRQ bitmap INTD# + db 29 ;; physical slot (0 = embedded) + db 0 ;; reserved +endif ; VBOX +pci_routing_table_end: +;; Size of the table +_pci_routing_table_size dw pci_routing_table_end - pci_routing_table + +endif ; BX_PCIBIOS diff --git a/src/VBox/Devices/PC/BIOS/pmode.inc b/src/VBox/Devices/PC/BIOS/pmode.inc new file mode 100644 index 00000000..fba20b8d --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/pmode.inc @@ -0,0 +1,81 @@ +; $Id: pmode.inc $ +;; @file +; Enter and exit a minimal protected-mode environment. +; + +; +; Copyright (C) 2004-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; + +;; Caveats: May only be called from the F000 segment (16-bit). Does not +;; switch stacks. Must be run with disabled interrupts(!), any exceptions +;; will cause a crash. On return from pmode_enter, DS contains a selector +;; which can address the entire 4GB address space. + +public pmode_enter +public pmode_exit +public pmbios_gdt_desc +public pmbios_gdt + +pmode_enter proc near + + push cs + pop ds + .386p + lgdt fword ptr [pmbios_gdt_desc] + mov eax, cr0 + or al, 1 + mov cr0, eax +; jmp far ptr 20h:really_enter_pm + db 0EAh + dw really_enter_pm + dw 20h +really_enter_pm: + mov ax, 18h + mov ds, ax + ret + +pmode_enter endp + + +pmode_exit proc near + + mov ax, 40h ; Ensure RM limit/attributes + mov ds, ax ; (where base = selector << 4) + + mov eax, cr0 + and al, 0FEh + mov cr0, eax + SET_DEFAULT_CPU_286 + jmp far ptr really_exit_pm +really_exit_pm: + ret + +pmode_exit endp + + + +pmbios_gdt_desc: + dw 40h + 7 ; last selector plus 8 - 1 + dw pmbios_gdt + dw 000Fh + +pmbios_gdt: + dw 0, 0, 0, 0 + dw 0, 0, 0, 0 + dw 0ffffh, 0, 9b00h, 00cfh ; 32-bit code (0x10) + dw 0ffffh, 0, 9300h, 00cfh ; 32-bit data (0x18) + dw 0ffffh, 0, 9b0fh, 0000h ; 16-bit code, base=0xf0000 + dw 0ffffh, 0, 9300h, 0000h ; 16-bit data, base=0x0 + dw 0, 0, 0, 0 + dw 0, 0, 0, 0 + dw 0ffffh, 400h, 9300h, 0000h ; 16-bit data, base=0x40 + diff --git a/src/VBox/Devices/PC/BIOS/pmsetup.inc b/src/VBox/Devices/PC/BIOS/pmsetup.inc new file mode 100644 index 00000000..383b0709 --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/pmsetup.inc @@ -0,0 +1,65 @@ +; $Id: pmsetup.inc $ +;; @file +; Initial system setup which needs to run in protected mode. +; + +; +; Copyright (C) 2004-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; + +SVR equ 0FEE000F0h +LVT_LINT0 equ 0FEE00350h +LVT_LINT1 equ 0FEE00360h + +public pmode_setup + +;; Enable the local APIC and program LINT0/LINT1 entries. Without that, +;; virtual wire interrupts could not be delivered. Note that the APIC must +;; be enabled first because when disabled, all LVTs are forced masked. + +pmode_setup proc near + + .386 + push eax + push esi + pushf + cli ; Interrupts would kill us! + call pmode_enter + + mov eax, cr0 ; Clear CR0.CD and CR0.NW + and eax, 09FFFFFFFh + mov cr0, eax + + mov esi, SVR ; Program the SVR -- enable the APIC, + mov eax, 010Fh ; set spurious interrupt vector to 15 + mov [esi], eax + + mov esi, LVT_LINT0 ; Program LINT0 to ExtINT and unmask + mov eax, [esi] + and eax, 0FFFE00FFh + or ah, 7 + mov [esi], eax + + mov esi, LVT_LINT1 ; Program LINT1 to NMI and unmask + mov eax, [esi] + and eax, 0FFFE00FFh + or ah, 4 + mov [esi], eax + + call pmode_exit + popf + pop esi + pop eax + SET_DEFAULT_CPU_286 + ret + +pmode_setup endp + diff --git a/src/VBox/Devices/PC/BIOS/post.c b/src/VBox/Devices/PC/BIOS/post.c new file mode 100644 index 00000000..f7834d2c --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/post.c @@ -0,0 +1,183 @@ +/* $Id: post.c $ */ +/** @file + * BIOS POST routines. Used only during initialization. + */ + +/* + * Copyright (C) 2004-2019 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + */ + +#include <stdint.h> +#include <string.h> +#include "biosint.h" +#include "inlines.h" + +#if DEBUG_POST +# define DPRINT(...) BX_DEBUG(__VA_ARGS__) +#else +# define DPRINT(...) +#endif + +/* In general, checksumming ROMs in a VM just wastes time. */ +//#define CHECKSUM_ROMS + +/* The format of a ROM is as follows: + * + * ------------------------------ + * 0 | AA55h signature (word) | + * ------------------------------ + * 2 | Size in 512B blocks (byte) | + * ------------------------------ + * 3 | Start of executable code | + * | ....... | + * end | | + * ------------------------------ + */ + +typedef struct rom_hdr_tag { + uint16_t signature; + uint8_t num_blks; + uint8_t code; +} rom_hdr; + + +/* Calculate the checksum of a ROM. Note that the ROM might be + * larger than 64K. + */ +static inline uint8_t rom_checksum(uint8_t __far *rom, uint8_t blocks) +{ + uint8_t sum = 0; + +#ifdef CHECKSUM_ROMS + while (blocks--) { + int i; + + for (i = 0; i < 512; ++i) + sum += rom[i]; + /* Add 512 bytes (32 paragraphs) to segment. */ + rom = MK_FP(FP_SEG(rom) + (512 >> 4), 0); + } +#endif + return sum; +} + +/* Scan for ROMs in the given range and execute their POST code. */ +void rom_scan(uint16_t start_seg, uint16_t end_seg) +{ + rom_hdr __far *rom; + uint8_t rom_blks; + + DPRINT("Scanning for ROMs in %04X-%04X range\n", start_seg, end_seg); + + while (start_seg < end_seg) { + rom = MK_FP(start_seg, 0); + /* Check for the ROM signature. */ + if (rom->signature == 0xAA55) { + DPRINT("Found ROM at segment %04X\n", start_seg); + if (!rom_checksum((void __far *)rom, rom->num_blks)) { + void (__far * rom_init)(void); + + /* Checksum good, initialize ROM. */ + rom_init = (void __far *)&rom->code; + rom_init(); + int_disable(); + DPRINT("ROM initialized\n"); + + /* Continue scanning past the end of this ROM. */ + rom_blks = (rom->num_blks + 3) & ~3; /* 4 blocks = 2K */ + start_seg += rom_blks / 4; + } + } else { + /* Scanning is done in 2K steps. */ + start_seg += 2048 >> 4; + } + } +} + +#if VBOX_BIOS_CPU >= 80386 + +/* NB: The CPUID detection is generic but currently not used elsewhere. */ + +/* Check CPUID availability. */ +int is_cpuid_supported( void ) +{ + uint32_t old_flags, new_flags; + + old_flags = eflags_read(); + new_flags = old_flags ^ (1L << 21); /* Toggle CPUID bit. */ + eflags_write( new_flags ); + new_flags = eflags_read(); + return( old_flags != new_flags ); /* Supported if bit changed. */ +} + +#define APICMODE_DISABLED 0 +#define APICMODE_APIC 1 +#define APICMODE_X2APIC 2 + +#define APIC_BASE_MSR 0x1B +#define APICBASE_X2APIC 0x400 /* bit 10 */ +#define APICBASE_ENABLE 0x800 /* bit 11 */ + +/* + * Set up APIC/x2APIC. See also DevPcBios.cpp. + * + * NB: Virtual wire compatibility is set up earlier in 32-bit protected + * mode assembler (because it needs to access MMIO just under 4GB). + * Switching to x2APIC mode or disabling the APIC is done through an MSR + * and needs no 32-bit addressing. Going to x2APIC mode does not lose the + * existing virtual wire setup. + * + * NB: This code does not assume that there is a local APIC. It is necessary + * to check CPUID whether APIC is present; the CPUID instruction might not be + * available either. + * + * NB: Destroys high bits of 32-bit registers. + */ +void BIOSCALL apic_setup(void) +{ + uint64_t base_msr; + uint16_t mask_set; + uint16_t mask_clr; + uint8_t apic_mode; + uint32_t cpu_id[4]; + + /* If there's no CPUID, there's certainly no APIC. */ + if (!is_cpuid_supported()) { + return; + } + + /* Check EDX bit 9 */ + cpuid(&cpu_id, 1); + BX_DEBUG("CPUID EDX: 0x%lx\n", cpu_id[3]); + if ((cpu_id[3] & (1 << 9)) == 0) { + return; /* No local APIC, nothing to do. */ + } + + /* APIC mode at offset 78h in CMOS NVRAM. */ + apic_mode = inb_cmos(0x78); + + mask_set = mask_clr = 0; + if (apic_mode == APICMODE_X2APIC) + mask_set = APICBASE_X2APIC; + else if (apic_mode == APICMODE_DISABLED) + mask_clr = APICBASE_ENABLE; + else + ; /* Any other setting leaves things alone. */ + + if (mask_set || mask_clr) { + base_msr = msr_read(APIC_BASE_MSR); + base_msr &= ~(uint64_t)mask_clr; + base_msr |= mask_set; + msr_write(base_msr, APIC_BASE_MSR); + } +} + +#endif diff --git a/src/VBox/Devices/PC/BIOS/print.c b/src/VBox/Devices/PC/BIOS/print.c new file mode 100644 index 00000000..f8eb32c7 --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/print.c @@ -0,0 +1,296 @@ +/* $Id: print.c $ */ +/** @file + * PC BIOS - ??? + */ + +/* + * Copyright (C) 2006-2019 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * -------------------------------------------------------------------- + * + * This code is based on: + * + * ROM BIOS for use with Bochs/Plex86/QEMU emulation environment + * + * Copyright (C) 2002 MandrakeSoft S.A. + * + * MandrakeSoft S.A. + * 43, rue d'Aboukir + * 75002 Paris - France + * http://www.linux-mandrake.com/ + * http://www.mandrakesoft.com/ + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +/* + * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice + * other than GPL or LGPL is available it will apply instead, Oracle elects to use only + * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where + * a choice of LGPL license versions is made available with the language indicating + * that LGPLv2 or any later version may be used, or where a choice of which version + * of the LGPL is applied is otherwise unspecified. + */ + + +#include <stdint.h> +#include <stdarg.h> +#include "inlines.h" +#include "biosint.h" + +// Debug printf support + +/* Redirect INFO output to backdoor logging port. */ +#define INFO_PORT 0x504 +#define DEBUG_PORT 0x403 + +const char bios_prefix_string[] = "BIOS: "; + +void wrch(uint8_t c); +#pragma aux wrch = "mov ah, 0eh" "int 10h" parm [al] modify exact [ax bx]; + +void send(uint16_t action, uint8_t c) +{ +#if BX_DEBUG_SERIAL + if (c == '\n') + uart_tx_byte(BX_DEBUG_PORT, '\r'); + uart_tx_byte(BX_DEBUG_PORT, c); +#endif +#if BX_VIRTUAL_PORTS + if (action & BIOS_PRINTF_DEBUG) + outb(DEBUG_PORT, c); + if (action & BIOS_PRINTF_INFO) + outb(INFO_PORT, c); +#endif + if (action & BIOS_PRINTF_SCREEN) { + if (c == '\n') + wrch('\r'); + wrch(c); + } +} + +void put_int(uint16_t action, short val, short width, bx_bool neg) +{ + short nval = val / 10; + if (nval) + put_int(action, nval, width - 1, neg); + else { + while (--width > 0) + send(action, ' '); + if (neg) + send(action, '-'); + } + send(action, val - (nval * 10) + '0'); +} + +void put_uint(uint16_t action, unsigned short val, short width, bx_bool neg) +{ + unsigned short nval = val / 10; + if (nval) + put_uint(action, nval, width - 1, neg); + else { + while (--width > 0) + send(action, ' '); + if (neg) + send(action, '-'); + } + send(action, val - (nval * 10) + '0'); +} + +void put_luint(uint16_t action, unsigned long val, short width, bx_bool neg) +{ + unsigned long nval = val / 10; + if (nval) + put_luint(action, nval, width - 1, neg); + else { + while (--width > 0) + send(action, ' '); + if (neg) + send(action, '-'); + } + send(action, val - (nval * 10) + '0'); +} + +void put_str(uint16_t action, const char __far *s) +{ + uint8_t c; + + while (c = *s) { + send(action, c); + s++; + } +} + +void put_str_near(uint16_t action, const char __near *s) +{ + uint8_t c; + + while (c = *s) { + send(action, c); + s++; + } +} + + +//-------------------------------------------------------------------------- +// bios_printf() +// A compact variable argument printf function. +// +// Supports %[format_width][length]format +// where format can be x,X,u,d,s,S,c +// and the optional length modifier is l (ell, long 32-bit) or ll +// (long long, 64-bit). +// Only x,X work with ll +//-------------------------------------------------------------------------- +void bios_printf(uint16_t action, const char *s, ...) +{ + uint8_t c; + bx_bool in_format; + int i; + uint16_t arg, nibble, hibyte, format_width, hexadd; + va_list args; + + va_start( args, s ); + + in_format = 0; + format_width = 0; + + if ((action & BIOS_PRINTF_DEBHALT) == BIOS_PRINTF_DEBHALT) { + bios_printf (BIOS_PRINTF_SCREEN, "FATAL: "); + } + + while (c = *s) { + if ( c == '%' ) { + in_format = 1; + format_width = 0; + } + else if (in_format) { + if ( (c>='0') && (c<='9') ) { + format_width = (format_width * 10) + (c - '0'); + } + else { + arg = va_arg( args, uint16_t ); + if (c == 'x' || c == 'X') { + if (format_width == 0) + format_width = 4; + if (c == 'x') + hexadd = 'a'; + else + hexadd = 'A'; + for (i=format_width-1; i>=0; i--) { + nibble = (arg >> (4 * i)) & 0x000f; + send (action, (nibble<=9)? (nibble+'0') : (nibble-10+hexadd)); + } + } + else if (c == 'u') { + put_uint(action, arg, format_width, 0); + } + else if (c == 'l' && s[1] == 'l') { + uint64_t llval; + uint16_t __far *cp16; + + s += 2; + c = *s; + cp16 = (uint16_t __far *)&llval; + cp16[0] = arg; + cp16[1] = va_arg( args, uint16_t ); + cp16[2] = va_arg( args, uint16_t ); + cp16[3] = va_arg( args, uint16_t ); + if (c == 'x' || c == 'X') { + if (format_width == 0) + format_width = 16; + if (c == 'x') + hexadd = 'a'; + else + hexadd = 'A'; + for (i=format_width-1; i>=0; i--) { + nibble = (llval >> (i * 4)) & 0x000f; + send (action, (nibble<=9)? (nibble+'0') : (nibble-10+hexadd)); + } + } else { + BX_PANIC("bios_printf: unknown %ll format\n"); + } + } + else if (c == 'l') { + s++; + c = *s; /* is it ld,lx,lu? */ + hibyte = va_arg( args, uint16_t ); + if (c == 'd') { + if (hibyte & 0x8000) + put_luint(action, 0L-(((uint32_t) hibyte << 16) | arg), format_width-1, 1); + else + put_luint(action, ((uint32_t) hibyte << 16) | arg, format_width, 0); + } + else if (c == 'u') { + put_luint(action, ((uint32_t) hibyte << 16) | arg, format_width, 0); + } + else if (c == 'x' || c == 'X') + { + if (format_width == 0) + format_width = 8; + if (c == 'x') + hexadd = 'a'; + else + hexadd = 'A'; + for (i=format_width-1; i>=0; i--) { + nibble = ((((uint32_t)hibyte << 16) | arg) >> (4 * i)) & 0x000f; + send (action, (nibble<=9)? (nibble+'0') : (nibble-10+hexadd)); + } + } + } + else if (c == 'd') { + if (arg & 0x8000) + put_int(action, -arg, format_width - 1, 1); + else + put_int(action, arg, format_width, 0); + } + else if (c == 's') { + put_str(action, (char *)arg); + } + else if (c == 'S') { + hibyte = arg; + arg = va_arg( args, uint16_t ); + put_str(action, hibyte :> (char *)arg); + } + else if (c == 'c') { + send(action, arg); + } + else + BX_PANIC("bios_printf: unknown format\n"); + in_format = 0; + } + } + else { + send(action, c); + } + ++s; + } + va_end( args ); + if (action & BIOS_PRINTF_HALT) { + // freeze in a busy loop. + int_disable(); + halt_forever(); + } +} + +// End of printf support diff --git a/src/VBox/Devices/PC/BIOS/ps2mouse.c b/src/VBox/Devices/PC/BIOS/ps2mouse.c new file mode 100644 index 00000000..6b485f68 --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/ps2mouse.c @@ -0,0 +1,452 @@ +/* $Id: ps2mouse.c $ */ +/** @file + * PC BIOS - ??? + */ + +/* + * Copyright (C) 2006-2019 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * -------------------------------------------------------------------- + * + * This code is based on: + * + * ROM BIOS for use with Bochs/Plex86/QEMU emulation environment + * + * Copyright (C) 2002 MandrakeSoft S.A. + * + * MandrakeSoft S.A. + * 43, rue d'Aboukir + * 75002 Paris - France + * http://www.linux-mandrake.com/ + * http://www.mandrakesoft.com/ + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +/* + * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice + * other than GPL or LGPL is available it will apply instead, Oracle elects to use only + * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where + * a choice of LGPL license versions is made available with the language indicating + * that LGPLv2 or any later version may be used, or where a choice of which version + * of the LGPL is applied is otherwise unspecified. + */ + + +#include <stdint.h> +#include "biosint.h" +#include "inlines.h" + + +#if DEBUG_INT15_MS +# define BX_DEBUG_INT15_MS(...) BX_DEBUG(__VA_ARGS__) +#else +# define BX_DEBUG_INT15_MS(...) +#endif + +#if DEBUG_INT74 +# define BX_DEBUG_INT74(...) BX_DEBUG(__VA_ARGS__) +#else +# define BX_DEBUG_INT74(...) +#endif + +#if BX_USE_PS2_MOUSE + +static const char panic_msg_keyb_buffer_full[] = "%s: keyboard input buffer full\n"; + +uint8_t send_to_mouse_ctrl(uint8_t sendbyte) +{ + BX_DEBUG_INT15_MS("send %02x to mouse:\n", sendbyte); + // wait for chance to write to ctrl + if (inb(0x64) & 0x02) + BX_PANIC(panic_msg_keyb_buffer_full,"sendmouse"); + outb(0x64, 0xD4); + outb(0x60, sendbyte); + return(0); +} + + +uint8_t get_mouse_data(uint8_t __far *data) +{ + int retries = 10000; /* ~150ms timeout */ + uint8_t response; + + while ((inb(0x64) & 0x21) != 0x21 && retries) + { + /* Wait until the 15us refresh counter toggles. */ + response = inb(0x61) & 0x10; + while((inb(0x61) & 0x10) == response) + ; + --retries; + } + + if (!retries) + return(1); + + response = inb(0x60); + *data = response; + return(0); +} + +void set_kbd_command_byte(uint8_t command_byte) +{ + if (inb(0x64) & 0x02) + BX_PANIC(panic_msg_keyb_buffer_full,"setkbdcomm"); + + outb(0x64, 0x60); // write command byte + outb(0x60, command_byte); +} + + +void BIOSCALL int74_function(volatile uint16_t make_farcall, volatile uint16_t Z, + volatile uint16_t Y, volatile uint16_t X, volatile uint16_t status) +{ + uint16_t ebda_seg=read_word(0x0040,0x000E); + uint8_t in_byte, index, package_count; + uint8_t mouse_flags_1, mouse_flags_2; + + BX_DEBUG_INT74("entering int74_function\n"); + make_farcall = 0; + + in_byte = inb(0x64); + if ( (in_byte & 0x21) != 0x21 ) { + return; + } + in_byte = inb(0x60); + BX_DEBUG_INT74("int74: read byte %02x\n", in_byte); + + mouse_flags_1 = read_byte(ebda_seg, 0x0026); + mouse_flags_2 = read_byte(ebda_seg, 0x0027); + + if ( (mouse_flags_2 & 0x80) != 0x80 ) { + return; + } + + package_count = mouse_flags_2 & 0x07; + index = mouse_flags_1 & 0x07; + write_byte(ebda_seg, 0x28 + index, in_byte); + + if ( index >= package_count ) { + BX_DEBUG_INT74("int74_function: make_farcall=1\n"); + status = read_byte(ebda_seg, 0x0028 + 0); + X = read_byte(ebda_seg, 0x0028 + 1); + Y = read_byte(ebda_seg, 0x0028 + 2); + Z = 0; + mouse_flags_1 = 0; + // check if far call handler installed + if (mouse_flags_2 & 0x80) + make_farcall = 1; + } + else { + mouse_flags_1++; + } + write_byte(ebda_seg, 0x0026, mouse_flags_1); +} + +void BIOSCALL int15_function_mouse(pusha_regs_t regs, uint16_t ES, uint16_t DS, volatile uint16_t FLAGS) +{ + uint16_t ebda_seg=read_word(0x0040,0x000E); + uint8_t mouse_flags_1, mouse_flags_2; + uint16_t mouse_driver_seg; + uint16_t mouse_driver_offset; + uint8_t mouse_cmd; + uint8_t ret, mouse_data1, mouse_data2, mouse_data3; + + BX_DEBUG_INT15_MS("int15 AX=%04x\n",regs.u.r16.ax); + + // Return Codes status in AH + // ========================= + // 00: success + // 01: invalid subfunction (AL > 7) + // 02: invalid input value (out of allowable range) + // 03: interface error + // 04: resend command received from mouse controller, + // device driver should attempt command again + // 05: cannot enable mouse, since no far call has been installed + // 80/86: mouse service not implemented + + if (regs.u.r8.al > 7) { + BX_DEBUG_INT15_MS("unsupported subfn\n"); + // invalid function + SET_CF(); + regs.u.r8.ah = 1; + return; + } + + // Valid subfn; disable AUX input and IRQ12, assume no error + set_kbd_command_byte(0x65); + CLEAR_CF(); + regs.u.r8.ah = 0; + + switch (regs.u.r8.al) { + case 0: // Disable/Enable Mouse + BX_DEBUG_INT15_MS("case 0: "); + if (regs.u.r8.bh > 1) { + BX_DEBUG_INT15_MS("INT 15h C2 AL=0, BH=%02x\n", (unsigned) regs.u.r8.bh); + // invalid subfunction + SET_CF(); + regs.u.r8.ah = 1; + break; + } + mouse_flags_2 = read_byte(ebda_seg, 0x0027); + if ( (mouse_flags_2 & 0x80) == 0 ) { + BX_DEBUG_INT15_MS("INT 15h C2 Enable/Disable Mouse, no far call handler\n"); + SET_CF(); + regs.u.r8.ah = 5; // no far call installed + break; + } + if (regs.u.r8.bh == 0) { + BX_DEBUG_INT15_MS("Disable Mouse\n"); + mouse_cmd = 0xF5; // disable mouse command + } else { + BX_DEBUG_INT15_MS("Enable Mouse\n"); + mouse_cmd = 0xF4; // enable mouse command + } + + ret = send_to_mouse_ctrl(mouse_cmd); // disable mouse command + if (ret == 0) { + ret = get_mouse_data(&mouse_data1); + if ( (ret == 0) || (mouse_data1 == 0xFA) ) { + // success + break; + } + } + + // interface error + SET_CF(); + regs.u.r8.ah = 3; + break; + + case 5: // Initialize Mouse + // Valid package sizes are 1 to 8 + if ( (regs.u.r8.bh < 1) || (regs.u.r8.bh > 8) ) { + SET_CF(); + regs.u.r8.ah = 2; // invalid input + break; + } + mouse_flags_2 = read_byte(ebda_seg, 0x0027); + mouse_flags_2 = (mouse_flags_2 & 0xf8) | (regs.u.r8.bh - 1); + write_byte(ebda_seg, 0x0027, mouse_flags_2); + // fall through! + + case 1: // Reset Mouse + BX_DEBUG_INT15_MS("case 1 or 5:\n"); + // clear current package byte index + mouse_flags_1 = read_byte(ebda_seg, 0x0026); + mouse_flags_1 = mouse_flags_1 & 0xf8; + write_byte(ebda_seg, 0x0026, mouse_flags_1); + ret = send_to_mouse_ctrl(0xFF); // reset mouse command + if (ret == 0) { + ret = get_mouse_data(&mouse_data3); + // if no mouse attached, it will return RESEND + if (mouse_data3 == 0xfe) { + SET_CF(); + regs.u.r8.ah = 4; // resend + break; + } + if (mouse_data3 != 0xfa) + BX_PANIC("Mouse reset returned %02x (should be ack)\n", (unsigned)mouse_data3); + if ( ret == 0 ) { + ret = get_mouse_data(&mouse_data1); + if ( ret == 0 ) { + ret = get_mouse_data(&mouse_data2); + if ( ret == 0 ) { + // success + regs.u.r8.bl = mouse_data1; + regs.u.r8.bh = mouse_data2; + break; + } + } + } + } + + // interface error + SET_CF(); + regs.u.r8.ah = 3; + break; + + case 2: // Set Sample Rate + BX_DEBUG_INT15_MS("case 2:\n"); + switch (regs.u.r8.bh) { + case 0: mouse_data1 = 10; break; // 10 reports/sec + case 1: mouse_data1 = 20; break; // 20 reports/sec + case 2: mouse_data1 = 40; break; // 40 reports/sec + case 3: mouse_data1 = 60; break; // 60 reports/sec + case 4: mouse_data1 = 80; break; // 80 reports/sec + case 5: mouse_data1 = 100; break; // 100 reports/sec (default) + case 6: mouse_data1 = 200; break; // 200 reports/sec + default: mouse_data1 = 0; + } + if (mouse_data1 > 0) { + ret = send_to_mouse_ctrl(0xF3); // set sample rate command + if (ret == 0) { + ret = get_mouse_data(&mouse_data2); + ret = send_to_mouse_ctrl(mouse_data1); + ret = get_mouse_data(&mouse_data2); + // success + } else { + // interface error + SET_CF(); + regs.u.r8.ah = 3; + } + } else { + // invalid input + SET_CF(); + regs.u.r8.ah = 2; + } + break; + + case 3: // Set Resolution + BX_DEBUG_INT15_MS("case 3:\n"); + // BX: + // 0 = 25 dpi, 1 count per millimeter + // 1 = 50 dpi, 2 counts per millimeter + // 2 = 100 dpi, 4 counts per millimeter + // 3 = 200 dpi, 8 counts per millimeter + if (regs.u.r8.bh < 4) { + ret = send_to_mouse_ctrl(0xE8); // set resolution command + if (ret == 0) { + ret = get_mouse_data(&mouse_data1); + if (mouse_data1 != 0xfa) + BX_PANIC("Mouse status returned %02x (should be ack)\n", (unsigned)mouse_data1); + ret = send_to_mouse_ctrl(regs.u.r8.bh); + ret = get_mouse_data(&mouse_data1); + if (mouse_data1 != 0xfa) + BX_PANIC("Mouse status returned %02x (should be ack)\n", (unsigned)mouse_data1); + // success + } else { + // interface error + SET_CF(); + regs.u.r8.ah = 3; + } + } else { + // invalid input + SET_CF(); + regs.u.r8.ah = 2; + } + break; + + case 4: // Get Device ID + BX_DEBUG_INT15_MS("case 4:\n"); + ret = send_to_mouse_ctrl(0xF2); // get mouse ID command + if (ret == 0) { + ret = get_mouse_data(&mouse_data1); + ret = get_mouse_data(&mouse_data2); + regs.u.r8.bh = mouse_data2; + // success + } else { + // interface error + SET_CF(); + regs.u.r8.ah = 3; + } + break; + + case 6: // Return Status & Set Scaling Factor... + BX_DEBUG_INT15_MS("case 6:\n"); + switch (regs.u.r8.bh) { + case 0: // Return Status + ret = send_to_mouse_ctrl(0xE9); // get mouse info command + if (ret == 0) { + ret = get_mouse_data(&mouse_data1); + if (mouse_data1 != 0xfa) + BX_PANIC("Mouse status returned %02x (should be ack)\n", (unsigned)mouse_data1); + if (ret == 0) { + ret = get_mouse_data(&mouse_data1); + if ( ret == 0 ) { + ret = get_mouse_data(&mouse_data2); + if ( ret == 0 ) { + ret = get_mouse_data(&mouse_data3); + if ( ret == 0 ) { + regs.u.r8.bl = mouse_data1; + regs.u.r8.cl = mouse_data2; + regs.u.r8.dl = mouse_data3; + // success + break; + } + } + } + } + } + + // interface error + SET_CF(); + regs.u.r8.ah = 3; + break; + + case 1: // Set Scaling Factor to 1:1 + case 2: // Set Scaling Factor to 2:1 + if (regs.u.r8.bh == 1) { + ret = send_to_mouse_ctrl(0xE6); + } else { + ret = send_to_mouse_ctrl(0xE7); + } + if (ret == 0) { + get_mouse_data(&mouse_data1); + ret = (mouse_data1 != 0xFA); + } + if (ret != 0) { + // interface error + SET_CF(); + regs.u.r8.ah = 3; + } + break; + + default: + BX_PANIC("INT 15h C2 AL=6, BH=%02x\n", (unsigned) regs.u.r8.bh); + // invalid subfunction + SET_CF(); + regs.u.r8.ah = 1; + } + break; + + case 7: // Set Mouse Handler Address + BX_DEBUG_INT15_MS("case 7:\n"); + mouse_driver_seg = ES; + mouse_driver_offset = regs.u.r16.bx; + write_word(ebda_seg, 0x0022, mouse_driver_offset); + write_word(ebda_seg, 0x0024, mouse_driver_seg); + mouse_flags_2 = read_byte(ebda_seg, 0x0027); + if (mouse_driver_offset == 0 && mouse_driver_seg == 0) { + /* remove handler */ + if ( (mouse_flags_2 & 0x80) != 0 ) { + mouse_flags_2 &= ~0x80; + } + } + else { + /* install handler */ + mouse_flags_2 |= 0x80; + } + write_byte(ebda_seg, 0x0027, mouse_flags_2); + break; + + default: + BX_PANIC("INT 15h C2 default case entered\n"); + // invalid subfunction + SET_CF(); + regs.u.r8.ah = 1; + } + BX_DEBUG_INT15_MS("returning cf = %u, ah = %02x\n", (unsigned)GET_CF(), (unsigned)regs.u.r8.ah); + // Re-enable AUX input and IRQ12 + set_kbd_command_byte(0x47); +} +#endif // BX_USE_PS2_MOUSE diff --git a/src/VBox/Devices/PC/BIOS/scsi.c b/src/VBox/Devices/PC/BIOS/scsi.c new file mode 100644 index 00000000..74d2b043 --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/scsi.c @@ -0,0 +1,700 @@ +/* $Id: scsi.c $ */ +/** @file + * SCSI host adapter driver to boot from SCSI disks + */ + +/* + * Copyright (C) 2004-2019 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + */ + +#include <stdint.h> +#include <string.h> +#include "biosint.h" +#include "inlines.h" +#include "pciutil.h" +#include "ebda.h" + + +#if DEBUG_SCSI +# define DBG_SCSI(...) BX_INFO(__VA_ARGS__) +#else +# define DBG_SCSI(...) +#endif + +#define VBSCSI_BUSY (1 << 0) +#define VBSCSI_ERROR (1 << 1) + +/* The I/O port of the BusLogic SCSI adapter. */ +#define BUSLOGIC_BIOS_IO_PORT 0x430 +/* The I/O port of the LsiLogic SCSI adapter. */ +#define LSILOGIC_BIOS_IO_PORT 0x434 +/* The I/O port of the LsiLogic SAS adapter. */ +#define LSILOGIC_SAS_BIOS_IO_PORT 0x438 + +#define VBSCSI_REGISTER_STATUS 0 +#define VBSCSI_REGISTER_COMMAND 0 +#define VBSCSI_REGISTER_DATA_IN 1 +#define VBSCSI_REGISTER_IDENTIFY 2 +#define VBSCSI_REGISTER_RESET 3 +#define VBSCSI_REGISTER_DEVSTAT 3 + +#define VBSCSI_MAX_DEVICES 16 /* Maximum number of devices a SCSI device can have. */ + +/* Command opcodes. */ +#define SCSI_SERVICE_ACT 0x9e +#define SCSI_INQUIRY 0x12 +#define SCSI_READ_CAP_10 0x25 +#define SCSI_READ_10 0x28 +#define SCSI_WRITE_10 0x2a +#define SCSI_READ_CAP_16 0x10 /* Not an opcode by itself, sub-action for the "Service Action" */ +#define SCSI_READ_16 0x88 +#define SCSI_WRITE_16 0x8a + +/* Data transfer direction. */ +#define SCSI_TXDIR_FROM_DEVICE 0 +#define SCSI_TXDIR_TO_DEVICE 1 + +#pragma pack(1) + +/* READ_10/WRITE_10 CDB layout. */ +typedef struct { + uint16_t command; /* Command. */ + uint32_t lba; /* LBA, MSB first! */ + uint8_t pad1; /* Unused. */ + uint16_t nsect; /* Sector count, MSB first! */ + uint8_t pad2; /* Unused. */ +} cdb_rw10; + +/* READ_16/WRITE_16 CDB layout. */ +typedef struct { + uint16_t command; /* Command. */ + uint64_t lba; /* LBA, MSB first! */ + uint32_t nsect32; /* Sector count, MSB first! */ + uint8_t pad1; /* Unused. */ + uint8_t pad2; /* Unused. */ +} cdb_rw16; + +#pragma pack() + +ct_assert(sizeof(cdb_rw10) == 10); +ct_assert(sizeof(cdb_rw16) == 16); + +void insb_discard(unsigned nbytes, unsigned port); +#pragma aux insb_discard = \ + ".286" \ + "again:" \ + "in al,dx" \ + "loop again" \ + parm [cx] [dx] modify exact [cx ax] nomemory; + + +int scsi_cmd_data_in(uint16_t io_base, uint8_t target_id, uint8_t __far *aCDB, + uint8_t cbCDB, uint8_t __far *buffer, uint32_t length) +{ + /* Check that the adapter is ready. */ + uint8_t status, sizes; + uint16_t i; + + do + status = inb(io_base + VBSCSI_REGISTER_STATUS); + while (status & VBSCSI_BUSY); + + sizes = ((length >> 12) & 0xF0) | ((cbCDB == 16) ? 0 : cbCDB); + outb(io_base + VBSCSI_REGISTER_COMMAND, target_id); /* Write the target ID. */ + outb(io_base + VBSCSI_REGISTER_COMMAND, SCSI_TXDIR_FROM_DEVICE); /* Write the transfer direction. */ + outb(io_base + VBSCSI_REGISTER_COMMAND, sizes); /* Write CDB size and top bufsize bits. */ + outb(io_base + VBSCSI_REGISTER_COMMAND, length); /* Write the buffer size. */ + outb(io_base + VBSCSI_REGISTER_COMMAND, (length >> 8)); + for (i = 0; i < cbCDB; i++) /* Write the CDB. */ + outb(io_base + VBSCSI_REGISTER_COMMAND, aCDB[i]); + + /* Now wait for the command to complete. */ + do + status = inb(io_base + VBSCSI_REGISTER_STATUS); + while (status & VBSCSI_BUSY); + + /* If any error occurred, inform the caller and don't bother reading the data. */ + if (status & VBSCSI_ERROR) { + outb(io_base + VBSCSI_REGISTER_RESET, 0); + + status = inb(io_base + VBSCSI_REGISTER_DEVSTAT); + DBG_SCSI("%s: read failed, device status %02X\n", __func__, status); + return 4; /* Sector not found */ + } + + /* Read in the data. The transfer length may be exactly 64K or more, + * which needs a bit of care when we're using 16-bit 'rep ins'. + */ + while (length > 32768) { + DBG_SCSI("%s: reading 32K to %X:%X\n", __func__, FP_SEG(buffer), FP_OFF(buffer)); + rep_insb(buffer, 32768, io_base + VBSCSI_REGISTER_DATA_IN); + length -= 32768; + buffer = (FP_SEG(buffer) + (32768 >> 4)) :> FP_OFF(buffer); + } + + DBG_SCSI("%s: reading %ld bytes to %X:%X\n", __func__, length, FP_SEG(buffer), FP_OFF(buffer)); + rep_insb(buffer, length, io_base + VBSCSI_REGISTER_DATA_IN); + + return 0; +} + +int scsi_cmd_data_out(uint16_t io_base, uint8_t target_id, uint8_t __far *aCDB, + uint8_t cbCDB, uint8_t __far *buffer, uint32_t length) +{ + /* Check that the adapter is ready. */ + uint8_t status, sizes; + uint16_t i; + + do + status = inb(io_base + VBSCSI_REGISTER_STATUS); + while (status & VBSCSI_BUSY); + + + sizes = ((length >> 12) & 0xF0) | ((cbCDB == 16) ? 0 : cbCDB); + outb(io_base + VBSCSI_REGISTER_COMMAND, target_id); /* Write the target ID. */ + outb(io_base + VBSCSI_REGISTER_COMMAND, SCSI_TXDIR_TO_DEVICE); /* Write the transfer direction. */ + outb(io_base + VBSCSI_REGISTER_COMMAND, sizes); /* Write CDB size and top bufsize bits. */ + outb(io_base + VBSCSI_REGISTER_COMMAND, length); /* Write the buffer size. */ + outb(io_base + VBSCSI_REGISTER_COMMAND, (length >> 8)); + for (i = 0; i < cbCDB; i++) /* Write the CDB. */ + outb(io_base + VBSCSI_REGISTER_COMMAND, aCDB[i]); + + /* Write out the data. The transfer length may be exactly 64K or more, + * which needs a bit of care when we're using 16-bit 'rep outs'. + */ + while (length > 32768) { + DBG_SCSI("%s: writing 32K from %X:%X\n", __func__, FP_SEG(buffer), FP_OFF(buffer)); + rep_outsb(buffer, 32768, io_base + VBSCSI_REGISTER_DATA_IN); + length -= 32768; + buffer = (FP_SEG(buffer) + (32768 >> 4)) :> FP_OFF(buffer); + } + + DBG_SCSI("%s: writing %ld bytes from %X:%X\n", __func__, length, FP_SEG(buffer), FP_OFF(buffer)); + rep_outsb(buffer, length, io_base + VBSCSI_REGISTER_DATA_IN); + + /* Now wait for the command to complete. */ + do + status = inb(io_base + VBSCSI_REGISTER_STATUS); + while (status & VBSCSI_BUSY); + + /* If any error occurred, inform the caller. */ + if (status & VBSCSI_ERROR) { + outb(io_base + VBSCSI_REGISTER_RESET, 0); + + status = inb(io_base + VBSCSI_REGISTER_DEVSTAT); + DBG_SCSI("%s: write failed, device status %02X\n", __func__, status); + return 4; /* Sector not found */ + } + + return 0; +} + +/** + * Read sectors from an attached SCSI device. + * + * @returns status code. + * @param bios_dsk Pointer to disk request packet (in the + * EBDA). + */ +int scsi_read_sectors(bio_dsk_t __far *bios_dsk) +{ + uint8_t rc; + cdb_rw16 cdb; + uint32_t count; + uint16_t io_base; + uint8_t target_id; + uint8_t device_id; + + device_id = VBOX_GET_SCSI_DEVICE(bios_dsk->drqp.dev_id); + if (device_id > BX_MAX_SCSI_DEVICES) + BX_PANIC("%s: device_id out of range %d\n", __func__, device_id); + + count = bios_dsk->drqp.nsect; + + /* Prepare a CDB. */ + cdb.command = SCSI_READ_16; + cdb.lba = swap_64(bios_dsk->drqp.lba); + cdb.pad1 = 0; + cdb.nsect32 = swap_32(count); + cdb.pad2 = 0; + + + io_base = bios_dsk->scsidev[device_id].io_base; + target_id = bios_dsk->scsidev[device_id].target_id; + + DBG_SCSI("%s: reading %u sectors, device %d, target %d\n", __func__, + count, device_id, bios_dsk->scsidev[device_id].target_id); + + rc = scsi_cmd_data_in(io_base, target_id, (void __far *)&cdb, 16, + bios_dsk->drqp.buffer, (count * 512L)); + + if (!rc) + { + bios_dsk->drqp.trsfsectors = count; + bios_dsk->drqp.trsfbytes = count * 512L; + } + DBG_SCSI("%s: transferred %u sectors\n", __func__, bios_dsk->drqp.nsect); + + return rc; +} + +/** + * Write sectors to an attached SCSI device. + * + * @returns status code. + * @param bios_dsk Pointer to disk request packet (in the + * EBDA). + */ +int scsi_write_sectors(bio_dsk_t __far *bios_dsk) +{ + uint8_t rc; + cdb_rw16 cdb; + uint32_t count; + uint16_t io_base; + uint8_t target_id; + uint8_t device_id; + + device_id = VBOX_GET_SCSI_DEVICE(bios_dsk->drqp.dev_id); + if (device_id > BX_MAX_SCSI_DEVICES) + BX_PANIC("%s: device_id out of range %d\n", __func__, device_id); + + count = bios_dsk->drqp.nsect; + + /* Prepare a CDB. */ + cdb.command = SCSI_WRITE_16; + cdb.lba = swap_64(bios_dsk->drqp.lba); + cdb.pad1 = 0; + cdb.nsect32 = swap_32(count); + cdb.pad2 = 0; + + io_base = bios_dsk->scsidev[device_id].io_base; + target_id = bios_dsk->scsidev[device_id].target_id; + + DBG_SCSI("%s: writing %u sectors, device %d, target %d\n", __func__, + count, device_id, bios_dsk->scsidev[device_id].target_id); + + rc = scsi_cmd_data_out(io_base, target_id, (void __far *)&cdb, 16, + bios_dsk->drqp.buffer, (count * 512L)); + + if (!rc) + { + bios_dsk->drqp.trsfsectors = count; + bios_dsk->drqp.trsfbytes = (count * 512L); + } + DBG_SCSI("%s: transferred %u sectors\n", __func__, bios_dsk->drqp.nsect); + + return rc; +} + + +/// @todo move +#define ATA_DATA_NO 0x00 +#define ATA_DATA_IN 0x01 +#define ATA_DATA_OUT 0x02 + +/** + * Perform a "packet style" read with supplied CDB. + * + * @returns status code. + * @param device_id ID of the device to access. + * @param cmdlen Length of the CDB. + * @param cmdbuf The CDB buffer. + * @param before How much to skip before reading into the provided data buffer. + * @param length How much to transfer. + * @param inout Read/Write direction indicator. + * @param buffer Data buffer to store the data from the device in. + */ +uint16_t scsi_cmd_packet(uint16_t device_id, uint8_t cmdlen, char __far *cmdbuf, + uint16_t before, uint32_t length, uint8_t inout, char __far *buffer) +{ + bio_dsk_t __far *bios_dsk = read_word(0x0040, 0x000E) :> &EbdaData->bdisk; + uint32_t read_len; + uint8_t status, sizes; + uint16_t i; + uint16_t io_base; + uint8_t target_id; + + /* Data out is currently not supported. */ + if (inout == ATA_DATA_OUT) { + BX_INFO("%s: DATA_OUT not supported yet\n", __func__); + return 1; + } + + /* Convert to SCSI specific device number. */ + device_id = VBOX_GET_SCSI_DEVICE(device_id); + + DBG_SCSI("%s: reading %lu bytes, skip %u/%u, device %d, target %d\n", __func__, + length, bios_dsk->drqp.skip_b, bios_dsk->drqp.skip_a, + device_id, bios_dsk->scsidev[device_id].target_id); + DBG_SCSI("%s: reading %u %u-byte sectors\n", __func__, + bios_dsk->drqp.nsect, bios_dsk->drqp.sect_sz); + + cmdlen -= 2; /* ATAPI uses 12-byte command packets for a READ 10. */ + + io_base = bios_dsk->scsidev[device_id].io_base; + target_id = bios_dsk->scsidev[device_id].target_id; + + /* Wait until the adapter is ready. */ + do + status = inb(io_base + VBSCSI_REGISTER_STATUS); + while (status & VBSCSI_BUSY); + + /* On the SCSI level, we have to transfer whole sectors. */ + /* NB: With proper residual length support, this should not be necessary; we should + * be able to avoid transferring the 'after' part of the sector. + */ + read_len = length + before + bios_dsk->drqp.skip_a; + + sizes = (((read_len) >> 12) & 0xF0) | cmdlen; + outb(io_base + VBSCSI_REGISTER_COMMAND, target_id); /* Write the target ID. */ + outb(io_base + VBSCSI_REGISTER_COMMAND, SCSI_TXDIR_FROM_DEVICE); /* Write the transfer direction. */ + outb(io_base + VBSCSI_REGISTER_COMMAND, sizes); /* Write the CDB size. */ + outb(io_base + VBSCSI_REGISTER_COMMAND, read_len); /* Write the buffer size. */ + outb(io_base + VBSCSI_REGISTER_COMMAND, (read_len) >> 8); + for (i = 0; i < cmdlen; i++) /* Write the CDB. */ + outb(io_base + VBSCSI_REGISTER_COMMAND, cmdbuf[i]); + + /* Now wait for the command to complete. */ + do + status = inb(io_base + VBSCSI_REGISTER_STATUS); + while (status & VBSCSI_BUSY); + + /* If any error occurred, inform the caller and don't bother reading the data. */ + if (status & VBSCSI_ERROR) { + outb(io_base + VBSCSI_REGISTER_RESET, 0); + + status = inb(io_base + VBSCSI_REGISTER_DEVSTAT); + DBG_SCSI("%s: read failed, device status %02X\n", __func__, status); + return 3; + } + + /* Transfer the data read from the device. */ + + if (before) /* If necessary, throw away data which needs to be skipped. */ + insb_discard(before, io_base + VBSCSI_REGISTER_DATA_IN); + + bios_dsk->drqp.trsfbytes = length; + + /* The requested length may be exactly 64K or more, which needs + * a bit of care when we're using 16-bit 'rep ins'. + */ + while (length > 32768) { + DBG_SCSI("%s: reading 32K to %X:%X\n", __func__, FP_SEG(buffer), FP_OFF(buffer)); + rep_insb(buffer, 32768, io_base + VBSCSI_REGISTER_DATA_IN); + length -= 32768; + buffer = (FP_SEG(buffer) + (32768 >> 4)) :> FP_OFF(buffer); + } + + DBG_SCSI("%s: reading %ld bytes to %X:%X\n", __func__, length, FP_SEG(buffer), FP_OFF(buffer)); + rep_insb(buffer, length, io_base + VBSCSI_REGISTER_DATA_IN); + + if (bios_dsk->drqp.skip_a) /* If necessary, throw away more data. */ + insb_discard(bios_dsk->drqp.skip_a, io_base + VBSCSI_REGISTER_DATA_IN); + + return 0; +} + +/** + * Enumerate attached devices. + * + * @returns nothing. + * @param io_base The I/O base port of the controller. + */ +void scsi_enumerate_attached_devices(uint16_t io_base) +{ + int i; + uint8_t buffer[0x0200]; + bio_dsk_t __far *bios_dsk; + + bios_dsk = read_word(0x0040, 0x000E) :> &EbdaData->bdisk; + + /* Go through target devices. */ + for (i = 0; i < VBSCSI_MAX_DEVICES; i++) + { + uint8_t rc; + uint8_t aCDB[16]; + uint8_t hd_index, devcount_scsi; + + aCDB[0] = SCSI_INQUIRY; + aCDB[1] = 0; + aCDB[2] = 0; + aCDB[3] = 0; + aCDB[4] = 5; /* Allocation length. */ + aCDB[5] = 0; + + rc = scsi_cmd_data_in(io_base, i, aCDB, 6, buffer, 5); + if (rc != 0) + BX_PANIC("%s: SCSI_INQUIRY failed\n", __func__); + + devcount_scsi = bios_dsk->scsi_devcount; + + /* Check the attached device. */ + if ( ((buffer[0] & 0xe0) == 0) + && ((buffer[0] & 0x1f) == 0x00)) + { + DBG_SCSI("%s: Disk detected at %d\n", __func__, i); + + /* We add the disk only if the maximum is not reached yet. */ + if (devcount_scsi < BX_MAX_SCSI_DEVICES) + { + uint64_t sectors, t; + uint32_t sector_size, cylinders; + uint16_t heads, sectors_per_track; + uint8_t hdcount; + uint8_t cmos_base; + + /* Issue a read capacity command now. */ + _fmemset(aCDB, 0, sizeof(aCDB)); + aCDB[0] = SCSI_SERVICE_ACT; + aCDB[1] = SCSI_READ_CAP_16; + aCDB[13] = 32; /* Allocation length. */ + + rc = scsi_cmd_data_in(io_base, i, aCDB, 16, buffer, 32); + if (rc != 0) + BX_PANIC("%s: SCSI_READ_CAPACITY failed\n", __func__); + + /* The value returned is the last addressable LBA, not + * the size, which what "+ 1" is for. + */ + sectors = swap_64(*(uint64_t *)buffer) + 1; + + sector_size = ((uint32_t)buffer[8] << 24) + | ((uint32_t)buffer[9] << 16) + | ((uint32_t)buffer[10] << 8) + | ((uint32_t)buffer[11]); + + /* We only support the disk if sector size is 512 bytes. */ + if (sector_size != 512) + { + /* Leave a log entry. */ + BX_INFO("Disk %d has an unsupported sector size of %u\n", i, sector_size); + continue; + } + + /* Get logical CHS geometry. */ + switch (devcount_scsi) + { + case 0: + cmos_base = 0x90; + break; + case 1: + cmos_base = 0x98; + break; + case 2: + cmos_base = 0xA0; + break; + case 3: + cmos_base = 0xA8; + break; + default: + cmos_base = 0; + } + + if (cmos_base && inb_cmos(cmos_base + 7)) + { + /* If provided, grab the logical geometry from CMOS. */ + cylinders = inb_cmos(cmos_base + 0) + (inb_cmos(cmos_base + 1) << 8); + heads = inb_cmos(cmos_base + 2); + sectors_per_track = inb_cmos(cmos_base + 7); + } + else + { + /* Calculate default logical geometry. NB: Very different + * from default ATA/SATA logical geometry! + */ + if (sectors >= (uint32_t)4 * 1024 * 1024) + { + heads = 255; + sectors_per_track = 63; + /* Approximate x / (255 * 63) using shifts */ + t = (sectors >> 6) + (sectors >> 12); + cylinders = (t >> 8) + (t >> 16); + } + else if (sectors >= (uint32_t)2 * 1024 * 1024) + { + heads = 128; + sectors_per_track = 32; + cylinders = sectors >> 12; + } + else + { + heads = 64; + sectors_per_track = 32; + cylinders = sectors >> 11; + } + } + + /* Calculate index into the generic disk table. */ + hd_index = devcount_scsi + BX_MAX_ATA_DEVICES; + + bios_dsk->scsidev[devcount_scsi].io_base = io_base; + bios_dsk->scsidev[devcount_scsi].target_id = i; + bios_dsk->devices[hd_index].type = DSK_TYPE_SCSI; + bios_dsk->devices[hd_index].device = DSK_DEVICE_HD; + bios_dsk->devices[hd_index].removable = 0; + bios_dsk->devices[hd_index].lock = 0; + bios_dsk->devices[hd_index].blksize = sector_size; + bios_dsk->devices[hd_index].translation = GEO_TRANSLATION_LBA; + + /* Write LCHS/PCHS values. */ + bios_dsk->devices[hd_index].lchs.heads = heads; + bios_dsk->devices[hd_index].lchs.spt = sectors_per_track; + bios_dsk->devices[hd_index].pchs.heads = heads; + bios_dsk->devices[hd_index].pchs.spt = sectors_per_track; + + if (cylinders > 1024) { + bios_dsk->devices[hd_index].lchs.cylinders = 1024; + bios_dsk->devices[hd_index].pchs.cylinders = 1024; + } else { + bios_dsk->devices[hd_index].lchs.cylinders = (uint16_t)cylinders; + bios_dsk->devices[hd_index].pchs.cylinders = (uint16_t)cylinders; + } + + BX_INFO("SCSI %d-ID#%d: LCHS=%lu/%u/%u 0x%llx sectors\n", devcount_scsi, + i, (uint32_t)cylinders, heads, sectors_per_track, sectors); + + bios_dsk->devices[hd_index].sectors = sectors; + + /* Store the id of the disk in the ata hdidmap. */ + hdcount = bios_dsk->hdcount; + bios_dsk->hdidmap[hdcount] = devcount_scsi + BX_MAX_ATA_DEVICES; + hdcount++; + bios_dsk->hdcount = hdcount; + + /* Update hdcount in the BDA. */ + hdcount = read_byte(0x40, 0x75); + hdcount++; + write_byte(0x40, 0x75, hdcount); + + devcount_scsi++; + } + else + { + /* We reached the maximum of SCSI disks we can boot from. We can quit detecting. */ + break; + } + } + else if ( ((buffer[0] & 0xe0) == 0) + && ((buffer[0] & 0x1f) == 0x05)) + { + uint8_t cdcount; + uint8_t removable; + + BX_INFO("SCSI %d-ID#%d: CD/DVD-ROM\n", devcount_scsi, i); + + /* Calculate index into the generic device table. */ + hd_index = devcount_scsi + BX_MAX_ATA_DEVICES; + + removable = buffer[1] & 0x80 ? 1 : 0; + + bios_dsk->scsidev[devcount_scsi].io_base = io_base; + bios_dsk->scsidev[devcount_scsi].target_id = i; + bios_dsk->devices[hd_index].type = DSK_TYPE_SCSI; + bios_dsk->devices[hd_index].device = DSK_DEVICE_CDROM; + bios_dsk->devices[hd_index].removable = removable; + bios_dsk->devices[hd_index].blksize = 2048; + bios_dsk->devices[hd_index].translation = GEO_TRANSLATION_NONE; + + /* Store the ID of the device in the BIOS cdidmap. */ + cdcount = bios_dsk->cdcount; + bios_dsk->cdidmap[cdcount] = devcount_scsi + BX_MAX_ATA_DEVICES; + cdcount++; + bios_dsk->cdcount = cdcount; + + devcount_scsi++; + } + else + DBG_SCSI("%s: No supported device detected at %d\n", __func__, i); + + bios_dsk->scsi_devcount = devcount_scsi; + } +} + +void scsi_pci_init(uint16_t vendor_id, uint16_t device_id) +{ + uint16_t bus_dev_fn; + + bus_dev_fn = pci_find_device(vendor_id, device_id); + if (bus_dev_fn == -1) { + DBG_SCSI("%s: Adapter %x:%x not found, how come?!\n", __func__, vendor_id, device_id); + return; + } + + DBG_SCSI("%s: Adapter %x:%x found at %x, enabling BM\n", __func__, vendor_id, device_id, bus_dev_fn); + /* Enable PCI memory, I/O, bus mastering access in command register. */ + pci_write_config_word(bus_dev_fn >> 8, (uint8_t)bus_dev_fn, 4, 0x7); +} + +/** + * Init the SCSI driver and detect attached disks. + */ +void BIOSCALL scsi_init(void) +{ + uint8_t identifier; + bio_dsk_t __far *bios_dsk; + + bios_dsk = read_word(0x0040, 0x000E) :> &EbdaData->bdisk; + + bios_dsk->scsi_devcount = 0; + + identifier = 0; + + /* Detect the BusLogic adapter. */ + outb(BUSLOGIC_BIOS_IO_PORT+VBSCSI_REGISTER_IDENTIFY, 0x55); + identifier = inb(BUSLOGIC_BIOS_IO_PORT+VBSCSI_REGISTER_IDENTIFY); + + if (identifier == 0x55) + { + /* Detected - Enumerate attached devices. */ + DBG_SCSI("%s: BusLogic SCSI adapter detected\n", __func__); + outb(BUSLOGIC_BIOS_IO_PORT+VBSCSI_REGISTER_RESET, 0); + scsi_enumerate_attached_devices(BUSLOGIC_BIOS_IO_PORT); + scsi_pci_init(0x104B, 0x1040); + } + else + { + DBG_SCSI("%s: BusLogic SCSI adapter not detected\n", __func__); + } + + /* Detect the LSI Logic parallel SCSI adapter. */ + outb(LSILOGIC_BIOS_IO_PORT+VBSCSI_REGISTER_IDENTIFY, 0x55); + identifier = inb(LSILOGIC_BIOS_IO_PORT+VBSCSI_REGISTER_IDENTIFY); + + if (identifier == 0x55) + { + /* Detected - Enumerate attached devices. */ + DBG_SCSI("%s: LSI Logic SCSI adapter detected\n", __func__); + outb(LSILOGIC_BIOS_IO_PORT+VBSCSI_REGISTER_RESET, 0); + scsi_enumerate_attached_devices(LSILOGIC_BIOS_IO_PORT); + scsi_pci_init(0x1000, 0x0030); + } + else + { + DBG_SCSI("%s: LSI Logic SCSI adapter not detected\n", __func__); + } + + /* Detect the LSI Logic SAS adapter. */ + outb(LSILOGIC_SAS_BIOS_IO_PORT+VBSCSI_REGISTER_IDENTIFY, 0x55); + identifier = inb(LSILOGIC_SAS_BIOS_IO_PORT+VBSCSI_REGISTER_IDENTIFY); + + if (identifier == 0x55) + { + /* Detected - Enumerate attached devices. */ + DBG_SCSI("%s: LSI Logic SAS adapter detected\n", __func__); + outb(LSILOGIC_SAS_BIOS_IO_PORT+VBSCSI_REGISTER_RESET, 0); + scsi_enumerate_attached_devices(LSILOGIC_SAS_BIOS_IO_PORT); + scsi_pci_init(0x1000, 0x0054); + } + else + { + DBG_SCSI("%s: LSI Logic SAS adapter not detected\n", __func__); + } +} diff --git a/src/VBox/Devices/PC/BIOS/serial.c b/src/VBox/Devices/PC/BIOS/serial.c new file mode 100644 index 00000000..b240a897 --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/serial.c @@ -0,0 +1,128 @@ +/* $Id: serial.c $ */ +/** @file + * PC BIOS - ??? + */ + +/* + * Copyright (C) 2006-2019 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * -------------------------------------------------------------------- + * + * This code is based on: + * + * ROM BIOS for use with Bochs/Plex86/QEMU emulation environment + * + * Copyright (C) 2002 MandrakeSoft S.A. + * + * MandrakeSoft S.A. + * 43, rue d'Aboukir + * 75002 Paris - France + * http://www.linux-mandrake.com/ + * http://www.mandrakesoft.com/ + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +/* + * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice + * other than GPL or LGPL is available it will apply instead, Oracle elects to use only + * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where + * a choice of LGPL license versions is made available with the language indicating + * that LGPLv2 or any later version may be used, or where a choice of which version + * of the LGPL is applied is otherwise unspecified. + */ + + +#include <stdint.h> +#include "inlines.h" +#include "biosint.h" + +void BIOSCALL int14_function(pusha_regs_t regs, uint16_t es, uint16_t ds, volatile iret_addr_t iret_addr) +{ + uint16_t addr, timer, val16; + uint8_t timeout; + + int_enable(); + + addr = read_word(0x0040, (regs.u.r16.dx << 1)); + timeout = read_byte(0x0040, 0x007C + regs.u.r16.dx); + if ((regs.u.r16.dx < 4) && (addr > 0)) { + switch (regs.u.r8.ah) { + case 0: + outb(addr+3, inb(addr+3) | 0x80); + if ((regs.u.r8.al & 0xE0) == 0) { + outb(addr, 0x17); + outb(addr+1, 0x04); + } else { + val16 = 0x600 >> ((regs.u.r8.al & 0xE0) >> 5); + outb(addr, val16 & 0xFF); + outb(addr+1, val16 >> 8); + } + outb(addr+3, regs.u.r8.al & 0x1F); + regs.u.r8.ah = inb(addr+5); + regs.u.r8.al = inb(addr+6); + ClearCF(iret_addr.flags); + break; + case 1: + timer = read_word(0x0040, 0x006C); + while (((inb(addr+5) & 0x60) != 0x60) && (timeout)) { + val16 = read_word(0x0040, 0x006C); + if (val16 != timer) { + timer = val16; + timeout--; + } + } + if (timeout) outb(addr, regs.u.r8.al); + regs.u.r8.ah = inb(addr+5); + if (!timeout) regs.u.r8.ah |= 0x80; + ClearCF(iret_addr.flags); + break; + case 2: + timer = read_word(0x0040, 0x006C); + while (((inb(addr+5) & 0x01) == 0) && (timeout)) { + val16 = read_word(0x0040, 0x006C); + if (val16 != timer) { + timer = val16; + timeout--; + } + } + if (timeout) { + regs.u.r8.ah = 0; + regs.u.r8.al = inb(addr); + } else { + regs.u.r8.ah = inb(addr+5); + } + ClearCF(iret_addr.flags); + break; + case 3: + regs.u.r8.ah = inb(addr+5); + regs.u.r8.al = inb(addr+6); + ClearCF(iret_addr.flags); + break; + default: + SetCF(iret_addr.flags); // Unsupported + } + } else { + SetCF(iret_addr.flags); // Unsupported + } +} diff --git a/src/VBox/Devices/PC/BIOS/smidmi.inc b/src/VBox/Devices/PC/BIOS/smidmi.inc new file mode 100644 index 00000000..5ad67c67 --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/smidmi.inc @@ -0,0 +1,70 @@ +; +; Copyright (C) 2006-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; -------------------------------------------------------------------- +; +; This code is based on: +; +; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment +; +; Copyright (C) 2002 MandrakeSoft S.A. +; +; MandrakeSoft S.A. +; 43, rue d'Aboukir +; 75002 Paris - France +; http://www.linux-mandrake.com/ +; http://www.mandrakesoft.com/ +; +; This library is free software; you can redistribute it and/or +; modify it under the terms of the GNU Lesser General Public +; License as published by the Free Software Foundation; either +; version 2 of the License, or (at your option) any later version. +; +; This library is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +; Lesser General Public License for more details. +; +; You should have received a copy of the GNU Lesser General Public +; License along with this library; if not, write to the Free Software +; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +; +; + +; Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice +; other than GPL or LGPL is available it will apply instead, Oracle elects to use only +; the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where +; a choice of LGPL license versions is made available with the language indicating +; that LGPLv2 or any later version may be used, or where a choice of which version +; of the LGPL is applied is otherwise unspecified. + +include vbdmismi.inc + +; org 0xff30 +align 16 + ;; The SMBIOS header + db '_SM_' ; signature + db 0 ; checksum (set by biossums) + db 01Fh ; EPS length, defined by standard + db VBOX_SMBIOS_MAJOR_VER ; SMBIOS major version + db VBOX_SMBIOS_MINOR_VER ; SMBIOS minor version + dw VBOX_SMBIOS_MAXSS ; Maximum structure size + db 0 ; Entry point revision + db 0, 0, 0, 0, 0 ; 16 bytes total + + ;; The DMI header + db '_DMI_' ; signature + db 0 ; checksum (set by biossums) + dw 0 ; DMI tables length (set by DevPcBios) + dd VBOX_DMI_TABLE_BASE ; DMI tables base + dw 0 ; DMI tables entries (set by DevPcBios) + db VBOX_DMI_TABLE_VER ; DMI version + db 0 ; Just for alignment (16 bytes total) + diff --git a/src/VBox/Devices/PC/BIOS/system.c b/src/VBox/Devices/PC/BIOS/system.c new file mode 100644 index 00000000..d1cb66af --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/system.c @@ -0,0 +1,941 @@ +/* $Id: system.c $ */ +/** @file + * PC BIOS - ??? + */ + +/* + * Copyright (C) 2006-2019 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * -------------------------------------------------------------------- + * + * This code is based on: + * + * ROM BIOS for use with Bochs/Plex86/QEMU emulation environment + * + * Copyright (C) 2002 MandrakeSoft S.A. + * + * MandrakeSoft S.A. + * 43, rue d'Aboukir + * 75002 Paris - France + * http://www.linux-mandrake.com/ + * http://www.mandrakesoft.com/ + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +/* + * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice + * other than GPL or LGPL is available it will apply instead, Oracle elects to use only + * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where + * a choice of LGPL license versions is made available with the language indicating + * that LGPLv2 or any later version may be used, or where a choice of which version + * of the LGPL is applied is otherwise unspecified. + */ + + +#include <stdint.h> +#include "biosint.h" +#include "inlines.h" + +#if DEBUG_INT15 +# define BX_DEBUG_INT15(...) BX_DEBUG(__VA_ARGS__) +#else +# define BX_DEBUG_INT15(...) +#endif + + +#define UNSUPPORTED_FUNCTION 0x86 /* Specific to INT 15h. */ + +#define BIOS_CONFIG_TABLE 0xe6f5 /** @todo configurable? put elsewhere? */ + +#define ACPI_DATA_SIZE 0x00010000L /** @todo configurable? put elsewhere? */ + +extern int pmode_IDT; +extern int rmode_IDT; + +uint16_t read_ss(void); +#pragma aux read_ss = "mov ax, ss" modify exact [ax] nomemory; + +#if VBOX_BIOS_CPU >= 80386 + +/* The 386+ code uses CR0 to switch to/from protected mode. + * Quite straightforward. + */ + +void pm_stack_save(uint16_t cx, uint16_t es, uint16_t si); +#pragma aux pm_stack_save = \ + ".386" \ + "push ds" \ + "push eax" \ + "xor ax, ax" \ + "mov ds, ax" \ + "mov ds:[467h], sp" \ + "mov ds:[469h], ss" \ + parm [cx] [es] [si] modify nomemory; + +/* Uses position independent code to build a far return... because it was + * too hard to figure out how to code the far call in inline assembler. + * + * NB: It would be lovely to do 'add [sp],N' instead of 'pop ax; add ax,M; + * push ax'. Unfortunately the former cannot be encoded, though 'add [esp],N' + * can be on 386 and later -- but it may be unwise to assume that the high + * bits of ESP are all zero. + */ +void pm_enter(void); +#pragma aux pm_enter = \ + ".386p" \ + "lgdt fword ptr es:[si+8]" \ + "lidt fword ptr cs:pmode_IDT" \ + "push 20h" \ + "call pentry" \ + "pentry:" \ + "pop ax" \ + "add ax, 0Eh" \ + "push ax" \ + "mov eax, cr0" \ + "or al, 1" \ + "mov cr0, eax" \ + "retf" \ + "pm_pm:" \ + "mov ax, 10h" \ + "mov ds, ax" \ + "add al, 08h" \ + "mov es, ax" \ + "add al, 10h" \ + "mov ss, ax" \ + modify nomemory; + +/* Restore segment limits to real mode compatible values and + * return to real mode. + */ +void pm_exit(void); +#pragma aux pm_exit = \ + ".386p" \ + "mov ax, 28h" \ + "mov ds, ax" \ + "mov es, ax" \ + "push 0F000h" \ + "call pexit" \ + "pexit:" \ + "pop ax" \ + "add ax, 0Eh" \ + "push ax" \ + "mov eax, cr0" \ + "and al, 0FEh" \ + "mov cr0, eax" \ + "retf" \ + "real_mode:" \ + "lidt fword ptr cs:rmode_IDT" \ + modify nomemory; + +/* Restore stack and reload segment registers in real mode to ensure + * real mode compatible selector+base. + */ +void pm_stack_restore(void); +#pragma aux pm_stack_restore = \ + ".386" \ + "xor ax, ax" \ + "mov ds, ax" \ + "mov es, ax" \ + "lss sp, ds:[467h]" \ + "pop eax" \ + "pop ds" \ + modify nomemory; + +#elif VBOX_BIOS_CPU >= 80286 + +/* The 286 code uses LMSW to switch to protected mode but it has to reset + * the CPU to get back to real mode. Ugly! See return_blkmove in orgs.asm + * for the other matching half. + */ +void pm_stack_save(uint16_t cx, uint16_t es, uint16_t si, uint16_t frame); +#pragma aux pm_stack_save = \ + "xor ax, ax" \ + "mov ds, ax" \ + "mov ds:[467h], bx" \ + "mov ds:[469h], ss" \ + parm [cx] [es] [si] [bx] modify nomemory; + +/* Uses position independent code... because it was too hard to figure + * out how to code the far call in inline assembler. + */ +void pm_enter(void); +#pragma aux pm_enter = \ + ".286p" \ + "lgdt fword ptr es:[si+8]" \ + "lidt fword ptr cs:pmode_IDT" \ + "push 20h" \ + "call pentry" \ + "pentry:" \ + "pop ax" \ + "add ax, 0Eh" \ + "push ax" \ + "smsw ax" \ + "or al, 1" \ + "lmsw ax" \ + "retf" \ + "pm_pm:" \ + "mov ax, 10h" \ + "mov ds, ax" \ + "add al, 08h" \ + "mov es, ax" \ + "add al, 10h" \ + "mov ss, ax" \ + modify nomemory; + +/* Set up shutdown status and reset the CPU. The POST code + * will regain control. Port 80h is written with status. + * Code 9 is written to CMOS shutdown status byte (0Fh). + * CPU is triple faulted. . + */ +void pm_exit(void); +#pragma aux pm_exit = \ + "xor ax, ax" \ + "out 80h, al" \ + "mov al, 0Fh" \ + "out 70h, al" \ + "mov al, 09h" \ + "out 71h, al" \ + ".286p" \ + "lidt fword ptr cs:pmode_IDT" \ + "int 3" \ + modify nomemory; + +/* Dummy. Actually done in return_blkmove. */ +void pm_stack_restore(void); +#pragma aux pm_stack_restore = \ + "rm_return:" \ + modify nomemory; + +#endif + +/* NB: CX is set earlier in pm_stack_save */ +void pm_copy(void); +#pragma aux pm_copy = \ + "xor si, si" \ + "xor di, di" \ + "cld" \ + "rep movsw" \ + modify [si di cx] nomemory; + +/* The pm_switch has a few crucial differences from pm_enter, hence + * it is replicated here. Uses LMSW to avoid trashing high word of eax. + */ +void pm_switch(uint16_t reg_si); +#pragma aux pm_switch = \ + ".286p" \ + "lgdt fword ptr es:[si+08h]" \ + "lidt fword ptr es:[si+10h]" \ + "push 38h" \ + "call pentry" \ + "pentry:" \ + "pop ax" \ + "add ax, 0Eh" \ + "push ax" \ + "smsw ax" \ + "or al, 1" \ + "lmsw ax" \ + "retf" \ + "pm_pm:" \ + "mov ax, 18h" \ + "mov ds, ax" \ + "add al, 08h" \ + "mov es, ax" \ + "add al, 08h" \ + "mov ss, ax" \ + parm [si] modify nomemory; + +/* Return to caller - we do not use IRET because we should not enable + * interrupts. Note that AH must be zero on exit. + * WARNING: Needs to be adapted if calling sequence is modified! + */ +void pm_unwind(uint16_t args); +#pragma aux pm_unwind = \ + ".286" \ + "mov sp, ax" \ + "popa" \ + "add sp, 6" \ + "pop cx" \ + "pop ax" \ + "pop ax" \ + "mov ax, 30h" \ + "push ax" \ + "push cx" \ + "retf" \ + parm [ax] modify nomemory aborts; + +/// @todo This method is silly. The RTC should be programmed to fire an interrupt +// instead of hogging the CPU with inaccurate code. +void timer_wait(uint32_t usec_wait) +{ + uint32_t cycles; + uint8_t old_val; + uint8_t cur_val; + + /* We wait in 15 usec increments. */ + cycles = usec_wait / 15; + + old_val = inp(0x61) & 0x10; + while (cycles--) { + /* Wait 15us. */ + do { + cur_val = inp(0x61) & 0x10; + } while (cur_val != old_val); + old_val = cur_val; + } +} + +bx_bool set_enable_a20(bx_bool val) +{ + uint8_t oldval; + + // Use PS/2 System Control port A to set A20 enable + + // get current setting first + oldval = inb(0x92); + + // change A20 status + if (val) + outb(0x92, oldval | 0x02); + else + outb(0x92, oldval & 0xfd); + + return((oldval & 0x02) != 0); +} + +/// @todo move elsewhere? +#define AX r.gr.u.r16.ax +#define BX r.gr.u.r16.bx +#define CX r.gr.u.r16.cx +#define DX r.gr.u.r16.dx +#define SI r.gr.u.r16.si +#define DI r.gr.u.r16.di +#define BP r.gr.u.r16.bp +#define SP r.gr.u.r16.sp +#define FLAGS r.fl.u.r16.flags +#define EAX r.gr.u.r32.eax +#define EBX r.gr.u.r32.ebx +#define ECX r.gr.u.r32.ecx +#define EDX r.gr.u.r32.edx +#define ESI r.gr.u.r32.esi +#define EDI r.gr.u.r32.edi +#define ES r.es + + +void BIOSCALL int15_function(sys_regs_t r) +{ + uint16_t bRegister; + uint8_t irqDisable; + + BX_DEBUG_INT15("int15 AX=%04x\n",AX); + + switch (GET_AH()) { + case 0x00: /* assorted functions */ + if (GET_AL() != 0xc0) + goto undecoded; + /* GRUB calls int15 with ax=0x00c0 to get the ROM configuration table, + * which we don't support, but logging that event is annoying. In fact + * it is likely that they just misread some specs, because there is a + * int15 BIOS function AH=0xc0 which sounds quite similar to what GRUB + * wants to achieve. */ + SET_CF(); + SET_AH(UNSUPPORTED_FUNCTION); + break; + case 0x24: /* A20 Control */ + switch (GET_AL()) { + case 0x00: + set_enable_a20(0); + CLEAR_CF(); + SET_AH(0); + break; + case 0x01: + set_enable_a20(1); + CLEAR_CF(); + SET_AH(0); + break; + case 0x02: + SET_AL( (inb(0x92) >> 1) & 0x01 ); + CLEAR_CF(); + SET_AH(0); + break; + case 0x03: + CLEAR_CF(); + SET_AH(0); + BX = 3; + break; + default: + BX_INFO("int15: Func 24h, subfunc %02xh, A20 gate control not supported\n", (unsigned) GET_AL()); + SET_CF(); + SET_AH(UNSUPPORTED_FUNCTION); + } + break; + + /* These are here just to avoid warnings being logged. */ + case 0x22: /* Locate ROM BASIC (tough when we don't have any.) */ + case 0x41: /* PC Convertible, wait for external events. */ + case 0xC7: /* PS/2, get memory map. */ + SET_CF(); + SET_AH(UNSUPPORTED_FUNCTION); + break; + + /// @todo Why does this need special handling? All we need is to set CF + // but not handle this as an unknown function (regardless of CPU type). + case 0x4f: + /* keyboard intercept */ +#if VBOX_BIOS_CPU >= 80286 + // nop +#else + SET_AH(UNSUPPORTED_FUNCTION); +#endif + SET_CF(); + break; + + case 0x52: // removable media eject + CLEAR_CF(); + SET_AH(0); // "ok ejection may proceed" + break; + + case 0x83: { + if( GET_AL() == 0 ) { + // Set Interval requested. + if( ( read_byte( 0x40, 0xA0 ) & 1 ) == 0 ) { + // Interval not already set. + write_byte( 0x40, 0xA0, 1 ); // Set status byte. + write_word( 0x40, 0x98, ES ); // Byte location, segment + write_word( 0x40, 0x9A, BX ); // Byte location, offset + write_word( 0x40, 0x9C, DX ); // Low word, delay + write_word( 0x40, 0x9E, CX ); // High word, delay. + CLEAR_CF( ); + irqDisable = inb( 0xA1 ); + outb( 0xA1, irqDisable & 0xFE ); + bRegister = inb_cmos( 0xB ); // Unmask IRQ8 so INT70 will get through. + outb_cmos( 0xB, bRegister | 0x40 ); // Turn on the Periodic Interrupt timer + } else { + // Interval already set. + BX_DEBUG_INT15("int15: Func 83h, failed, already waiting.\n" ); + SET_CF(); + SET_AH(UNSUPPORTED_FUNCTION); + } + } else if( GET_AL() == 1 ) { + // Clear Interval requested + write_byte( 0x40, 0xA0, 0 ); // Clear status byte + CLEAR_CF( ); + bRegister = inb_cmos( 0xB ); + outb_cmos( 0xB, bRegister & ~0x40 ); // Turn off the Periodic Interrupt timer + } else { + BX_DEBUG_INT15("int15: Func 83h, failed.\n" ); + SET_CF(); + SET_AH(UNSUPPORTED_FUNCTION); + SET_AL(GET_AL() - 1); + } + + break; + } + + case 0x86: + // Wait for CX:DX microseconds. currently using the + // refresh request port 0x61 bit4, toggling every 15usec + int_enable(); + timer_wait(((uint32_t)CX << 16) | DX); + break; + + case 0x88: + // Get the amount of extended memory (above 1M) +#if VBOX_BIOS_CPU >= 80286 + AX = (inb_cmos(0x31) << 8) | inb_cmos(0x30); + +#if VBOX_BIOS_CPU >= 80386 + // According to Ralf Brown's interrupt the limit should be 15M, + // but real machines mostly return max. 63M. + if(AX > 0xffc0) + AX = 0xffc0; +#else + // An AT compatible cannot have more than 15M extended memory. + // If more is reported, some software (e.g. Windows 3.1) gets + // quite upset. + if(AX > 0x3c00) + AX = 0x3c00; +#endif + + CLEAR_CF(); +#else + SET_AH(UNSUPPORTED_FUNCTION); + SET_CF(); +#endif + break; + + case 0x89: + // Switch to Protected Mode. + // ES:DI points to user-supplied GDT + // BH/BL contains starting interrupt numbers for PIC0/PIC1 + // This subfunction does not return! + + // turn off interrupts + int_disable(); /// @todo aren't they off already? + + set_enable_a20(1); // enable A20 line; we're supposed to fail if that fails + + // Initialize CS descriptor for BIOS + write_word(ES, SI+0x38+0, 0xffff);// limit 15:00 = normal 64K limit + write_word(ES, SI+0x38+2, 0x0000);// base 15:00 + write_byte(ES, SI+0x38+4, 0x000f);// base 23:16 (hardcoded to f000:0000) + write_byte(ES, SI+0x38+5, 0x9b); // access + write_word(ES, SI+0x38+6, 0x0000);// base 31:24/reserved/limit 19:16 + + /* Reprogram the PICs. */ + outb(PIC_MASTER, PIC_CMD_INIT); + outb(PIC_SLAVE, PIC_CMD_INIT); + outb(PIC_MASTER + 1, GET_BH()); + outb(PIC_SLAVE + 1, GET_BL()); + outb(PIC_MASTER + 1, 4); + outb(PIC_SLAVE + 1, 2); + outb(PIC_MASTER + 1, 1); + outb(PIC_SLAVE + 1, 1); + /* Mask all IRQs, user must re-enable. */ + outb(PIC_MASTER_MASK, 0xff); + outb(PIC_SLAVE_MASK, 0xff); + + pm_switch(SI); + pm_unwind((uint16_t)&r); + + break; + + case 0x90: + /* Device busy interrupt. Called by Int 16h when no key available */ + break; + + case 0x91: + /* Interrupt complete. Called by Int 16h when key becomes available */ + break; + + case 0xbf: + BX_INFO("*** int 15h function AH=bf not yet supported!\n"); + SET_CF(); + SET_AH(UNSUPPORTED_FUNCTION); + break; + + case 0xC0: + CLEAR_CF(); + SET_AH(0); + BX = BIOS_CONFIG_TABLE; + ES = 0xF000; + break; + + case 0xc1: + ES = read_word(0x0040, 0x000E); + CLEAR_CF(); + break; + + case 0xd8: + bios_printf(BIOS_PRINTF_DEBUG, "EISA BIOS not present\n"); + SET_CF(); + SET_AH(UNSUPPORTED_FUNCTION); + break; + + /* Make the BIOS warning for pretty much every Linux kernel start + * disappear - it calls with ax=0xe980 to figure out SMI info. */ + case 0xe9: /* SMI functions (SpeedStep and similar things) */ + SET_CF(); + SET_AH(UNSUPPORTED_FUNCTION); + break; + case 0xec: /* AMD64 target operating mode callback */ + if (GET_AL() != 0) + goto undecoded; + SET_AH(0); + if (GET_BL() >= 1 && GET_BL() <= 3) + CLEAR_CF(); /* Accepted value. */ + else + SET_CF(); /* Reserved, error. */ + break; +undecoded: + default: + BX_INFO("*** int 15h function AX=%04x, BX=%04x not yet supported!\n", + (unsigned) AX, (unsigned) BX); + SET_CF(); + SET_AH(UNSUPPORTED_FUNCTION); + break; + } +} + +#if VBOX_BIOS_CPU >= 80386 + +typedef struct { + uint32_t start; + uint32_t xstart; + uint32_t len; + uint32_t xlen; + uint32_t type; +} mem_range_t; + +void set_e820_range(uint16_t reg_ES, uint16_t reg_DI, uint32_t start, uint32_t end, + uint8_t extra_start, uint8_t extra_end, uint16_t type) +{ + mem_range_t __far *range; + + range = reg_ES :> (mem_range_t *)reg_DI; + range->start = start; + range->xstart = extra_start; + end -= start; + extra_end -= extra_start; + range->len = end; + range->xlen = extra_end; + range->type = type; +} + +void BIOSCALL int15_function32(sys32_regs_t r) +{ + uint32_t extended_memory_size=0; // 64bits long + uint32_t extra_lowbits_memory_size=0; + uint8_t extra_highbits_memory_size=0; + uint32_t mcfgStart, mcfgSize; + + BX_DEBUG_INT15("int15 AX=%04x\n",AX); + + switch (GET_AH()) { + case 0xd0: + if (GET_AL() != 0x4f) + goto int15_unimplemented; + if (EBX == 0x50524f43 && ECX == 0x4d4f4445 && ESI == 0 && EDI == 0) + { + CLEAR_CF(); + ESI = EBX; + EDI = ECX; + EAX = 0x49413332; + } + else + goto int15_unimplemented; + break; + + case 0xe8: + switch(GET_AL()) { + case 0x20: // coded by osmaker aka K.J. + if(EDX == 0x534D4150) { + extended_memory_size = inb_cmos(0x35); + extended_memory_size <<= 8; + extended_memory_size |= inb_cmos(0x34); + extended_memory_size *= 64; +#ifndef VBOX /* The following excludes 0xf0000000 thru 0xffffffff. Trust DevPcBios.cpp to get this right. */ + // greater than EFF00000??? + if(extended_memory_size > 0x3bc000) { + extended_memory_size = 0x3bc000; // everything after this is reserved memory until we get to 0x100000000 + } +#endif /* !VBOX */ + extended_memory_size *= 1024; + extended_memory_size += (16L * 1024 * 1024); + + if(extended_memory_size <= (16L * 1024 * 1024)) { + extended_memory_size = inb_cmos(0x31); + extended_memory_size <<= 8; + extended_memory_size |= inb_cmos(0x30); + extended_memory_size *= 1024; + extended_memory_size += (1L * 1024 * 1024); + } + +#ifdef VBOX /* We've already used the CMOS entries for SATA. + BTW. This is the amount of memory above 4GB measured in 64KB units. */ + extra_lowbits_memory_size = inb_cmos(0x62); + extra_lowbits_memory_size <<= 8; + extra_lowbits_memory_size |= inb_cmos(0x61); + extra_lowbits_memory_size <<= 16; + extra_highbits_memory_size = inb_cmos(0x63); + /* 0x64 and 0x65 can be used if we need to dig 1 TB or more at a later point. */ +#else + extra_lowbits_memory_size = inb_cmos(0x5c); + extra_lowbits_memory_size <<= 8; + extra_lowbits_memory_size |= inb_cmos(0x5b); + extra_lowbits_memory_size *= 64; + extra_lowbits_memory_size *= 1024; + extra_highbits_memory_size = inb_cmos(0x5d); +#endif /* !VBOX */ + + mcfgStart = 0; + mcfgSize = 0; + + switch(BX) + { + case 0: + set_e820_range(ES, DI, +#ifndef VBOX /** @todo Upstream suggests the following, needs checking. (see next as well) */ + 0x0000000L, 0x0009f000L, 0, 0, 1); +#else + 0x0000000L, 0x0009fc00L, 0, 0, 1); +#endif + EBX = 1; + break; + case 1: + set_e820_range(ES, DI, +#ifndef VBOX /** @todo Upstream suggests the following, needs checking. (see next as well) */ + 0x0009f000L, 0x000a0000L, 0, 0, 2); +#else + 0x0009fc00L, 0x000a0000L, 0, 0, 2); +#endif + EBX = 2; + break; + case 2: +#ifdef VBOX + /* Mark the BIOS as reserved. VBox doesn't currently + * use the 0xe0000-0xeffff area. It does use the + * 0xd0000-0xdffff area for the BIOS logo, but it's + * not worth marking it as reserved. (this is not + * true anymore because the VGA adapter handles the logo stuff) + * The whole 0xe0000-0xfffff can be used for the BIOS. + * Note that various + * Windows versions don't accept (read: in debug builds + * they trigger the "Too many similar traps" assertion) + * a single reserved range from 0xd0000 to 0xffffff. + * A 128K area starting from 0xd0000 works. */ + set_e820_range(ES, DI, + 0x000f0000L, 0x00100000L, 0, 0, 2); +#else /* !VBOX */ + set_e820_range(ES, DI, + 0x000e8000L, 0x00100000L, 0, 0, 2); +#endif /* !VBOX */ + EBX = 3; + break; + case 3: +#if BX_ROMBIOS32 || defined(VBOX) + set_e820_range(ES, DI, + 0x00100000L, + extended_memory_size - ACPI_DATA_SIZE, 0, 0, 1); + EBX = 4; +#else + set_e820_range(ES, DI, + 0x00100000L, + extended_memory_size, 1); + EBX = 5; +#endif + break; + case 4: + set_e820_range(ES, DI, + extended_memory_size - ACPI_DATA_SIZE, + extended_memory_size, 0, 0, 3); // ACPI RAM + EBX = 5; + break; + case 5: + set_e820_range(ES, DI, + 0xfec00000, + 0xfec00000 + 0x1000, 0, 0, 2); // I/O APIC + EBX = 6; + break; + case 6: + set_e820_range(ES, DI, + 0xfee00000, + 0xfee00000 + 0x1000, 0, 0, 2); // Local APIC + EBX = 7; + break; + case 7: + /* 256KB BIOS area at the end of 4 GB */ +#ifdef VBOX + /* We don't set the end to 1GB here and rely on the 32-bit + unsigned wrap around effect (0-0xfffc0000L). */ +#endif + set_e820_range(ES, DI, + 0xfffc0000L, 0x00000000L, 0, 0, 2); + if (mcfgStart != 0) + EBX = 8; + else + { + if (extra_highbits_memory_size || extra_lowbits_memory_size) + EBX = 9; + else + EBX = 0; + } + break; + case 8: + /* PCI MMIO config space (MCFG) */ + set_e820_range(ES, DI, + mcfgStart, mcfgStart + mcfgSize, 0, 0, 2); + + if (extra_highbits_memory_size || extra_lowbits_memory_size) + EBX = 9; + else + EBX = 0; + break; + case 9: +#ifdef VBOX /* Don't succeeded if no memory above 4 GB. */ + /* Mapping of memory above 4 GB if present. + Note1: set_e820_range needs do no borrowing in the + subtraction because of the nice numbers. + Note2* works only up to 1TB because of uint8_t for + the upper bits!*/ + if (extra_highbits_memory_size || extra_lowbits_memory_size) + { + set_e820_range(ES, DI, + 0x00000000L, extra_lowbits_memory_size, + 1 /*x4GB*/, extra_highbits_memory_size + 1 /*x4GB*/, 1); + EBX = 0; + } + break; + /* fall thru */ +#else /* !VBOX */ + /* Mapping of memory above 4 GB */ + set_e820_range(ES, DI, 0x00000000L, + extra_lowbits_memory_size, 1, extra_highbits_memory_size + + 1, 1); + EBX = 0; + break; +#endif /* !VBOX */ + default: /* AX=E820, DX=534D4150, BX unrecognized */ + goto int15_unimplemented; + break; + } + EAX = 0x534D4150; + ECX = 0x14; + CLEAR_CF(); + } else { + // if DX != 0x534D4150) + goto int15_unimplemented; + } + break; + + case 0x01: + // do we have any reason to fail here ? + CLEAR_CF(); + + // my real system sets ax and bx to 0 + // this is confirmed by Ralph Brown list + // but syslinux v1.48 is known to behave + // strangely if ax is set to 0 + // regs.u.r16.ax = 0; + // regs.u.r16.bx = 0; + + // Get the amount of extended memory (above 1M) + CX = (inb_cmos(0x31) << 8) | inb_cmos(0x30); + + // limit to 15M + if(CX > 0x3c00) + CX = 0x3c00; + + // Get the amount of extended memory above 16M in 64k blocks + DX = (inb_cmos(0x35) << 8) | inb_cmos(0x34); + + // Set configured memory equal to extended memory + AX = CX; + BX = DX; + break; + default: /* AH=0xE8?? but not implemented */ + goto int15_unimplemented; + } + break; + int15_unimplemented: + // fall into the default case + default: + BX_INFO("*** int 15h function AX=%04x, BX=%04x not yet supported!\n", + (unsigned) AX, (unsigned) BX); + SET_CF(); + SET_AL(UNSUPPORTED_FUNCTION); + break; + } +} +#endif /* VBOX_BIOS_CPU >= 80386 */ + +#if VBOX_BIOS_CPU >= 80286 + +#undef FLAGS +#define FLAGS r.ra.flags.u.r16.flags + +/* Function 0x87 handled separately due to specific stack layout requirements. */ +void BIOSCALL int15_blkmove(disk_regs_t r) +{ + uint16_t base15_00; + uint8_t base23_16; + uint16_t ss; + + // +++ should probably have descriptor checks + // +++ should have exception handlers + + // turn off interrupts + int_disable(); /// @todo aren't they disabled already? + + set_enable_a20(1); // enable A20 line + + // 128K max of transfer on 386+ ??? + // source == destination ??? + + // ES:SI points to descriptor table + // offset use initially comments + // ============================================== + // 00..07 Unused zeros Null descriptor + // 08..0f scratch zeros work area used by BIOS + // 10..17 source ssssssss source of data + // 18..1f dest dddddddd destination of data + // 20..27 CS zeros filled in by BIOS + // 28..2f SS zeros filled in by BIOS + + //es:si + //eeee0 + //0ssss + //----- + + // check for access rights of source & dest here + + // Initialize GDT descriptor + base15_00 = (ES << 4) + SI; + base23_16 = ES >> 12; + if (base15_00 < (ES<<4)) + base23_16++; + write_word(ES, SI+0x08+0, 47); // limit 15:00 = 6 * 8bytes/descriptor + write_word(ES, SI+0x08+2, base15_00);// base 15:00 + write_byte(ES, SI+0x08+4, base23_16);// base 23:16 + write_byte(ES, SI+0x08+5, 0x93); // access + write_word(ES, SI+0x08+6, 0x0000); // base 31:24/reserved/limit 19:16 + + // Initialize CS descriptor + write_word(ES, SI+0x20+0, 0xffff);// limit 15:00 = normal 64K limit + write_word(ES, SI+0x20+2, 0x0000);// base 15:00 + write_byte(ES, SI+0x20+4, 0x000f);// base 23:16 + write_byte(ES, SI+0x20+5, 0x9b); // access + write_word(ES, SI+0x20+6, 0x0000);// base 31:24/reserved/limit 19:16 + + // Initialize SS descriptor + ss = read_ss(); + base15_00 = ss << 4; + base23_16 = ss >> 12; + write_word(ES, SI+0x28+0, 0xffff); // limit 15:00 = normal 64K limit + write_word(ES, SI+0x28+2, base15_00);// base 15:00 + write_byte(ES, SI+0x28+4, base23_16);// base 23:16 + write_byte(ES, SI+0x28+5, 0x93); // access + write_word(ES, SI+0x28+6, 0x0000); // base 31:24/reserved/limit 19:16 + +#if VBOX_BIOS_CPU >= 80386 + /* Not taking the address of the parameter allows the code generator + * produce slightly better code for some unknown reason. + */ + pm_stack_save(CX, ES, SI); +#else + pm_stack_save(CX, ES, SI, FP_OFF(&r)); +#endif + pm_enter(); + pm_copy(); + pm_exit(); + pm_stack_restore(); + + set_enable_a20(0); // unconditionally disable A20 line + + // turn interrupts back on + int_enable(); + + SET_AH(0); + CLEAR_CF(); +} +#endif /* VBOX_BIOS_CPU >= 80286 */ diff --git a/src/VBox/Devices/PC/BIOS/timepci.c b/src/VBox/Devices/PC/BIOS/timepci.c new file mode 100644 index 00000000..f6b75645 --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/timepci.c @@ -0,0 +1,324 @@ +/* + * Copyright (C) 2006-2019 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * -------------------------------------------------------------------- + * + * This code is based on: + * + * ROM BIOS for use with Bochs/Plex86/QEMU emulation environment + * + * Copyright (C) 2002 MandrakeSoft S.A. + * + * MandrakeSoft S.A. + * 43, rue d'Aboukir + * 75002 Paris - France + * http://www.linux-mandrake.com/ + * http://www.mandrakesoft.com/ + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +/* + * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice + * other than GPL or LGPL is available it will apply instead, Oracle elects to use only + * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where + * a choice of LGPL license versions is made available with the language indicating + * that LGPLv2 or any later version may be used, or where a choice of which version + * of the LGPL is applied is otherwise unspecified. + */ + + +#include <stdint.h> +#include "biosint.h" +#include "inlines.h" + +#if DEBUG_INT1A +# define BX_DEBUG_INT1A(...) BX_DEBUG(__VA_ARGS__) +#else +# define BX_DEBUG_INT1A(...) +#endif + +// for access to RAM area which is used by interrupt vectors +// and BIOS Data Area + +typedef struct { + uint8_t filler1[0x400]; + uint8_t filler2[0x6c]; + uint16_t ticks_low; + uint16_t ticks_high; + uint8_t midnight_flag; +} bios_data_t; + +#define BiosData ((bios_data_t __far *) 0) + +void init_rtc(void) +{ + outb_cmos(0x0a, 0x26); + outb_cmos(0x0b, 0x02); + inb_cmos(0x0c); + inb_cmos(0x0d); +} + +bx_bool rtc_updating(void) +{ + // This function checks to see if the update-in-progress bit + // is set in CMOS Status Register A. If not, it returns 0. + // If it is set, it tries to wait until there is a transition + // to 0, and will return 0 if such a transition occurs. A 1 + // is returned only after timing out. The maximum period + // that this bit should be set is constrained to 244useconds. + // The count I use below guarantees coverage or more than + // this time, with any reasonable IPS setting. + + uint16_t iter; + + iter = 25000; + while (--iter != 0) { + if ( (inb_cmos(0x0a) & 0x80) == 0 ) + return 0; + } + return 1; // update-in-progress never transitioned to 0 +} + + +extern void eoi_both_pics(void); /* in assembly code */ +#pragma aux eoi_both_pics "*"; + +void call_int_4a(void); +#pragma aux call_int_4a = "int 4Ah"; + +void BIOSCALL int70_function(pusha_regs_t regs, uint16_t ds, uint16_t es, iret_addr_t iret_addr) +{ + // INT 70h: IRQ 8 - CMOS RTC interrupt from periodic or alarm modes + uint8_t registerB = 0, registerC = 0; + + // Check which modes are enabled and have occurred. + registerB = inb_cmos( 0xB ); + registerC = inb_cmos( 0xC ); + + if( ( registerB & 0x60 ) != 0 ) { + if( ( registerC & 0x20 ) != 0 ) { + // Handle Alarm Interrupt. + int_enable(); + call_int_4a(); + int_disable(); + } + if( ( registerC & 0x40 ) != 0 ) { + // Handle Periodic Interrupt. + + if( read_byte( 0x40, 0xA0 ) != 0 ) { + // Wait Interval (Int 15, AH=83) active. + uint32_t time; + + time = read_dword( 0x40, 0x9C ); // Time left in microseconds. + if( time < 0x3D1 ) { + // Done waiting. + uint16_t segment, offset; + + segment = read_word( 0x40, 0x98 ); + offset = read_word( 0x40, 0x9A ); + write_byte( 0x40, 0xA0, 0 ); // Turn of status byte. + outb_cmos( 0xB, registerB & 0x37 ); // Clear the Periodic Interrupt. + write_byte( segment, offset, read_byte(segment, offset) | 0x80 ); // Write to specified flag byte. + } else { + // Continue waiting. + time -= 0x3D1; + write_dword( 0x40, 0x9C, time ); + } + } + } + } + eoi_both_pics(); +} + +/// @todo the coding style WRT register access is totally inconsistent +// in the following routines + +void BIOSCALL int1a_function(pusha_regs_t regs, uint16_t ds, uint16_t es, iret_addr_t iret_addr) +{ + uint8_t val8; + + BX_DEBUG_INT1A("int1a: AX=%04x BX=%04x CX=%04x DX=%04x DS=%04x\n", + regs.u.r16.ax, regs.u.r16.bx, regs.u.r16.cx, regs.u.r16.dx, ds); + int_enable(); + + switch (regs.u.r8.ah) { + case 0: // get current clock count + int_disable(); + regs.u.r16.cx = BiosData->ticks_high; + regs.u.r16.dx = BiosData->ticks_low; + regs.u.r8.al = BiosData->midnight_flag; + BiosData->midnight_flag = 0; // reset flag + int_enable(); + // AH already 0 + ClearCF(iret_addr.flags); // OK + break; + + case 1: // Set Current Clock Count + int_disable(); + BiosData->ticks_high = regs.u.r16.cx; + BiosData->ticks_low = regs.u.r16.dx; + BiosData->midnight_flag = 0; // reset flag + int_enable(); + regs.u.r8.ah = 0; + ClearCF(iret_addr.flags); // OK + break; + + case 2: // Read CMOS Time + if (rtc_updating()) { + SetCF(iret_addr.flags); + break; + } + + regs.u.r8.dh = inb_cmos(0x00); // Seconds + regs.u.r8.cl = inb_cmos(0x02); // Minutes + regs.u.r8.ch = inb_cmos(0x04); // Hours + regs.u.r8.dl = inb_cmos(0x0b) & 0x01; // Stat Reg B + regs.u.r8.ah = 0; + regs.u.r8.al = regs.u.r8.ch; + ClearCF(iret_addr.flags); // OK + break; + + case 3: // Set CMOS Time + // Using a debugger, I notice the following masking/setting + // of bits in Status Register B, by setting Reg B to + // a few values and getting its value after INT 1A was called. + // + // try#1 try#2 try#3 + // before 1111 1101 0111 1101 0000 0000 + // after 0110 0010 0110 0010 0000 0010 + // + // Bit4 in try#1 flipped in hardware (forced low) due to bit7=1 + // My assumption: RegB = ((RegB & 01100000b) | 00000010b) + if (rtc_updating()) { + init_rtc(); + // fall through as if an update were not in progress + } + outb_cmos(0x00, regs.u.r8.dh); // Seconds + outb_cmos(0x02, regs.u.r8.cl); // Minutes + outb_cmos(0x04, regs.u.r8.ch); // Hours + // Set Daylight Savings time enabled bit to requested value + val8 = (inb_cmos(0x0b) & 0x60) | 0x02 | (regs.u.r8.dl & 0x01); + // (reg B already selected) + outb_cmos(0x0b, val8); + regs.u.r8.ah = 0; + regs.u.r8.al = val8; // val last written to Reg B + ClearCF(iret_addr.flags); // OK + break; + + case 4: // Read CMOS Date + regs.u.r8.ah = 0; + if (rtc_updating()) { + SetCF(iret_addr.flags); + break; + } + regs.u.r8.cl = inb_cmos(0x09); // Year + regs.u.r8.dh = inb_cmos(0x08); // Month + regs.u.r8.dl = inb_cmos(0x07); // Day of Month + regs.u.r8.ch = inb_cmos(0x32); // Century + regs.u.r8.al = regs.u.r8.ch; + ClearCF(iret_addr.flags); // OK + break; + + case 5: // Set CMOS Date + // Using a debugger, I notice the following masking/setting + // of bits in Status Register B, by setting Reg B to + // a few values and getting its value after INT 1A was called. + // + // try#1 try#2 try#3 try#4 + // before 1111 1101 0111 1101 0000 0010 0000 0000 + // after 0110 1101 0111 1101 0000 0010 0000 0000 + // + // Bit4 in try#1 flipped in hardware (forced low) due to bit7=1 + // My assumption: RegB = (RegB & 01111111b) + if (rtc_updating()) { + init_rtc(); + SetCF(iret_addr.flags); + break; + } + outb_cmos(0x09, regs.u.r8.cl); // Year + outb_cmos(0x08, regs.u.r8.dh); // Month + outb_cmos(0x07, regs.u.r8.dl); // Day of Month + outb_cmos(0x32, regs.u.r8.ch); // Century + val8 = inb_cmos(0x0b) & 0x7f; // clear halt-clock bit + outb_cmos(0x0b, val8); + regs.u.r8.ah = 0; + regs.u.r8.al = val8; // AL = val last written to Reg B + ClearCF(iret_addr.flags); // OK + break; + + case 6: // Set Alarm Time in CMOS + // Using a debugger, I notice the following masking/setting + // of bits in Status Register B, by setting Reg B to + // a few values and getting its value after INT 1A was called. + // + // try#1 try#2 try#3 + // before 1101 1111 0101 1111 0000 0000 + // after 0110 1111 0111 1111 0010 0000 + // + // Bit4 in try#1 flipped in hardware (forced low) due to bit7=1 + // My assumption: RegB = ((RegB & 01111111b) | 00100000b) + val8 = inb_cmos(0x0b); // Get Status Reg B + regs.u.r16.ax = 0; + if (val8 & 0x20) { + // Alarm interrupt enabled already + SetCF(iret_addr.flags); // Error: alarm in use + break; + } + if (rtc_updating()) { + init_rtc(); + // fall through as if an update were not in progress + } + outb_cmos(0x01, regs.u.r8.dh); // Seconds alarm + outb_cmos(0x03, regs.u.r8.cl); // Minutes alarm + outb_cmos(0x05, regs.u.r8.ch); // Hours alarm + outb(0xa1, inb(0xa1) & 0xfe); // enable IRQ 8 + // enable Status Reg B alarm bit, clear halt clock bit + outb_cmos(0x0b, (val8 & 0x7f) | 0x20); + ClearCF(iret_addr.flags); // OK + break; + + case 7: // Turn off Alarm + // Using a debugger, I notice the following masking/setting + // of bits in Status Register B, by setting Reg B to + // a few values and getting its value after INT 1A was called. + // + // try#1 try#2 try#3 try#4 + // before 1111 1101 0111 1101 0010 0000 0010 0010 + // after 0100 0101 0101 0101 0000 0000 0000 0010 + // + // Bit4 in try#1 flipped in hardware (forced low) due to bit7=1 + // My assumption: RegB = (RegB & 01010111b) + val8 = inb_cmos(0x0b); // Get Status Reg B + // clear clock-halt bit, disable alarm bit + outb_cmos(0x0b, val8 & 0x57); // disable alarm bit + regs.u.r8.ah = 0; + regs.u.r8.al = val8; // val last written to Reg B + ClearCF(iret_addr.flags); // OK + break; + + default: + BX_DEBUG_INT1A("int1a: AX=%04x unsupported\n", regs.u.r16.ax); + SetCF(iret_addr.flags); // Unsupported + } +} diff --git a/src/VBox/Devices/PC/BIOS/vbdmismi.inc b/src/VBox/Devices/PC/BIOS/vbdmismi.inc new file mode 100644 index 00000000..67e22f19 --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/vbdmismi.inc @@ -0,0 +1,27 @@ +; $Id: vbdmismi.inc $ +;; @file +; DMI and SMBIOS definitions for VBox. +; + +; +; Copyright (C) 2006-2019 Oracle Corporation +; +; This file is part of VirtualBox Open Source Edition (OSE), as +; available from http://www.virtualbox.org. This file is free software; +; you can redistribute it and/or modify it under the terms of the GNU +; General Public License (GPL) as published by the Free Software +; Foundation, in version 2 as it comes in the "COPYING" file of the +; VirtualBox OSE distribution. VirtualBox OSE is distributed in the +; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +; + +;; TODO: make dynamic + +VBOX_DMI_TABLE_BASE equ 0E1000h +VBOX_DMI_TABLE_VER equ 25h +VBOX_DMI_TABLE_SIZE equ 352 + +VBOX_SMBIOS_MAJOR_VER equ 2 +VBOX_SMBIOS_MINOR_VER equ 5 +VBOX_SMBIOS_MAXSS equ 0FFh + diff --git a/src/VBox/Devices/PC/BIOS/vds.c b/src/VBox/Devices/PC/BIOS/vds.c new file mode 100644 index 00000000..e4dab0d3 --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/vds.c @@ -0,0 +1,118 @@ +/* $Id: vds.c $ */ +/** @file + * Utility routines for calling the Virtual DMA Services. + */ + +/* + * Copyright (C) 2011-2019 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + */ + + +#include <stdint.h> +#include "biosint.h" +#include "vds.h" + +typedef struct { + uint8_t major; /* VDS spec major version number. */ + uint8_t minor; /* VDS spec minor version number. */ + uint16_t flags; /* Capabilities/status flags. */ + uint16_t prod_no; /* Product number. */ + uint16_t prod_rev; /* Product revision number. */ + uint32_t max_buf; /* Maximum buffer size supported. */ +} vds_ver; + +int vds_is_present( void ) +{ + uint8_t __far *vds_flags; + + vds_flags = MK_FP( 0x40, VDS_FLAGS_OFS ); + return( !!(*vds_flags & VDS_PRESENT) ); +} + +int vds_lock_sg( vds_edds __far *edds ); +#pragma aux vds_lock_sg = \ + "mov ax, 8105h" \ + "mov dx, 0" \ + "int 4Bh" \ + "jc error" \ + "xor al, al" \ + "error:" \ + "cbw" \ + parm [es di] value [ax]; + +int vds_unlock_sg( vds_edds __far *edds ); +#pragma aux vds_unlock_sg = \ + "mov ax, 8106h" \ + "mov dx, 0" \ + "int 4Bh" \ + "jc error" \ + "xor al, al" \ + "error:" \ + "cbw" \ + parm [es di] value [ax]; + + +/* + * Convert a real mode 16:16 segmented address to a simple 32-bit + * linear address. + */ +uint32_t vds_real_to_lin( void __far *ptr ) +{ + return( ((uint32_t)FP_SEG( ptr ) << 4) + FP_OFF( ptr ) ); +} + +/* + * Build a VDS-style scatter/gather list, regardless of whether VDS is + * present or not. This routine either calls VDS to do the work or + * trivially creates the list if no remapping is needed. + */ +int vds_build_sg_list( vds_edds __far *edds, void __far *buf, uint32_t len ) +{ + int rc; + + /* NB: The num_avail field in the EDDS must be set correctly! */ + edds->region_size = len; + edds->offset = vds_real_to_lin( buf ); + edds->seg_sel = 0; /* Indicates a linear address. */ + if( vds_is_present() ) { + /* VDS is present, use it. */ + rc = vds_lock_sg( edds ); + } else { + /* No VDS, do it ourselves with one S/G entry. */ + edds->num_used = 1; + edds->u.sg[0].phys_addr = edds->offset; + edds->u.sg[0].size = len; + rc = VDS_SUCCESS; + } + return( rc ); +} + +/* + * Free a VDS-style scatter/gather list, regardless of whether VDS + * is present or not. + */ +int vds_free_sg_list( vds_edds __far *edds ) +{ + int rc; + + if( vds_is_present() ) { + /* VDS is present, use it. */ + rc = vds_unlock_sg( edds ); + } else { + /* No VDS, not much to do. */ + /* We could check here if the EDDS had in fact been built by us. + * But if VDS really went away, what can we do about it anyway? + */ + rc = VDS_SUCCESS; + } + edds->num_used = 0; + return( rc ); +} diff --git a/src/VBox/Devices/PC/BIOS/vds.h b/src/VBox/Devices/PC/BIOS/vds.h new file mode 100644 index 00000000..e003448c --- /dev/null +++ b/src/VBox/Devices/PC/BIOS/vds.h @@ -0,0 +1,122 @@ +/* $Id: vds.h $ */ +/** @file + * Utility routines for calling the Virtual DMA Services. + */ + +/* + * Copyright (C) 2006-2019 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + */ + +#ifndef VBOX_INCLUDED_SRC_PC_BIOS_vds_h +#define VBOX_INCLUDED_SRC_PC_BIOS_vds_h +#ifndef RT_WITHOUT_PRAGMA_ONCE +# pragma once +#endif + +/* Virtual DMA Services (VDS) */ + +#define VDS_FLAGS_OFS 0x7B /* Offset of VDS flag byte in BDA. */ +#define VDS_PRESENT 0x20 /* The VDS present bit. */ + +/** The DMA descriptor data structure. */ +typedef struct +{ + uint32_t region_size; /* Region size in bytes. */ + uint32_t offset; /* Offset. */ + uint16_t seg_sel; /* Segment selector. */ + uint16_t buf_id; /* Buffer ID. */ + uint32_t phys_addr; /* Physical address. */ +} vds_dds; + + +/** Scatter/gather descriptor entry. */ +typedef struct +{ + uint32_t phys_addr; /* Physical address. */ + uint32_t size; /* Entry size. */ +} vds_sg; + +/** The extended DDS for scatter/gather. + * Note that the EDDS contains either S/G descriptors or x86-style PTEs. + */ +typedef struct +{ + uint32_t region_size; /* Region size in bytes. */ + uint32_t offset; /* Offset. */ + uint16_t seg_sel; /* Segment or selector. */ + uint16_t resvd; /* Reserved. */ + uint16_t num_avail; /* Number of entries available. */ + uint16_t num_used; /* Number of entries used. */ + union + { + vds_sg sg[1]; /* S/G entry array. */ + uint32_t pte[1]; /* Page table entry array. */ + } u; +} vds_edds; + + +/* VDS services */ + +#define VDS_SERVICE 0x81 + +#define VDS_GET_VERSION 0x02 /* Get version */ +#define VDS_LOCK_BUFFER 0x03 /* Lock DMA buffer region */ +#define VDS_UNLOCK_BUFFER 0x04 /* Unlock DMA buffer region */ +#define VDS_SG_LOCK 0x05 /* Scatter/gather lock region */ +#define VDS_SG_UNLOCK 0x06 /* Scatter/gather unlock region */ +#define VDS_REQUEST_BUFFER 0x07 /* Request DMA buffer */ +#define VDS_RELEASE_BUFFER 0x08 /* Release DMA buffer */ +#define VDS_BUFFER_COPYIN 0x09 /* Copy into DMA buffer */ +#define VDS_BUFFER_COPYOUT 0x0A /* Copy out of DMA buffer */ +#define VDS_DISABLE_DMA_XLAT 0x0B /* Disable DMA translation */ +#define VDS_ENABLE_DMA_XLAT 0x0C /* Enable DMA translation */ + +/* VDS error codes */ + +#define VDS_SUCCESS 0x00 /* No error */ +#define VDS_ERR_NOT_CONTIG 0x01 /* Region not contiguous */ +#define VDS_ERR_BOUNDRY_CROSS 0x02 /* Rgn crossed phys align boundary */ +#define VDS_ERR_CANT_LOCK 0x03 /* Unable to lock pages */ +#define VDS_ERR_NO_BUF 0x04 /* No buffer available */ +#define VDS_ERR_RGN_TOO_BIG 0x05 /* Region too large for buffer */ +#define VDS_ERR_BUF_IN_USE 0x06 /* Buffer currently in use */ +#define VDS_ERR_RGN_INVALID 0x07 /* Invalid memory region */ +#define VDS_ERR_RGN_NOT_LOCKED 0x08 /* Region was not locked */ +#define VDS_ERR_TOO_MANY_PAGES 0x09 /* Num pages greater than table len */ +#define VDS_ERR_INVALID_ID 0x0A /* Invalid buffer ID */ +#define VDS_ERR_BNDRY_VIOL 0x0B /* Buffer boundary violated */ +#define VDS_ERR_INVAL_DMACHN 0x0C /* Invalid DMA channel number */ +#define VDS_ERR_COUNT_OVRFLO 0x0D /* Disable count overflow */ +#define VDS_ERR_COUNT_UNDRFLO 0x0E /* Disable count underflow */ +#define VDS_ERR_UNSUPP_FUNC 0x0F /* Function not supported */ +#define VDS_ERR_BAD_FLAG 0x10 /* Reserved flag bits set in DX */ + +/* VDS option flags */ + +#define VDSF_AUTOCOPY 0x02 /* Automatic copy to/from buffer */ +#define VDSF_NOALLOC 0x04 /* Disable auto buffer allocation */ +#define VDSF_NOREMAP 0x08 /* Disable auto remap feature */ +#define VDSF_NO64K 0x10 /* Region can't cross 64K boundary */ +#define VDSF_NO128K 0x20 /* Region can't cross 128K boundary */ +#define VDSF_COPYTBL 0x40 /* Copy page table for S/G remap */ +#define VDSF_NPOK 0x80 /* Allow non-present pages for S/G */ + +/* Higher level routines for utilizing VDS. */ + +int vds_build_sg_list( vds_edds __far *edds, void __far *buf, uint32_t len ); +int vds_free_sg_list( vds_edds __far *edds ); + +/* Helper for translating 16:16 real mode addresses to 32-bit linear. */ + +uint32_t vds_real_to_lin( void __far *ptr ); + +#endif /* !VBOX_INCLUDED_SRC_PC_BIOS_vds_h */ + |